summaryrefslogtreecommitdiff
path: root/sfx2/source/view/viewsh.cxx
diff options
context:
space:
mode:
authorTor Lillqvist <tml@collabora.com>2018-11-16 00:46:51 +0200
committerTor Lillqvist <tml@collabora.com>2018-12-13 16:19:53 +0100
commite07f85a68cedde82a32a2b1f9bde75f25d7dc640 (patch)
treea9adc3e365c67c02400a321cdc0526ad47ad8023 /sfx2/source/view/viewsh.cxx
parentb75ee1b35c72214d7c0dea98eda87ec9531cb768 (diff)
Be less eager to use a fallback in SfxViewShell::SetLOKLanguageTag()
If the fallback language tag based on available localisations would have the same language as the original Bcp47 tag string, use a tag based on the original. For example, if the user locale is 'de-CH', the localisation for plain 'de' will be used automatically anyway, without making the LOK language tag 'de' which would actually end up being stored as 'de-DE' and thus be misleading. We will need to know that it's the 'de-CH' locale we are actually working with when handling Swiss German translations by replacing 'ß' characters in a generic German translation with 'ss'. Do it only when comphelper::LibreOfficeKit::isActive() to avoid modifying behaviour in the "normal" cases. Change-Id: Ib5bdfe07fd53251b42122389cb81782ef87b65c5 Reviewed-on: https://gerrit.libreoffice.org/63446 Tested-by: Jenkins Reviewed-by: Tor Lillqvist <tml@collabora.com>
Diffstat (limited to 'sfx2/source/view/viewsh.cxx')
-rw-r--r--sfx2/source/view/viewsh.cxx13
1 files changed, 11 insertions, 2 deletions
diff --git a/sfx2/source/view/viewsh.cxx b/sfx2/source/view/viewsh.cxx
index 683d6a45f288..246d5ea0c1ab 100644
--- a/sfx2/source/view/viewsh.cxx
+++ b/sfx2/source/view/viewsh.cxx
@@ -1,4 +1,4 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
/*
* This file is part of the LibreOffice project.
*
@@ -1495,8 +1495,17 @@ vcl::Window* SfxViewShell::GetEditWindowForActiveOLEObj() const
void SfxViewShell::SetLOKLanguageTag(const OUString& rBcp47LanguageTag)
{
+ LanguageTag aTag = LanguageTag(rBcp47LanguageTag, true);
+
css::uno::Sequence<OUString> inst(officecfg::Setup::Office::InstalledLocales::get()->getElementNames());
- maLOKLanguageTag = LanguageTag(getInstalledLocaleForSystemUILanguage(inst, /* bRequestInstallIfMissing */ false, rBcp47LanguageTag), true).makeFallback();
+ LanguageTag aFallbackTag = LanguageTag(getInstalledLocaleForSystemUILanguage(inst, /* bRequestInstallIfMissing */ false, rBcp47LanguageTag), true).makeFallback();
+
+ // If we want de-CH, and the de localisation is available, we don't want to use de-DE as then
+ // the magic in Translate::get() won't turn ess-zet into double s. Possibly other similar cases?
+ if (comphelper::LibreOfficeKit::isActive() && aTag.getLanguage() == aFallbackTag.getLanguage())
+ maLOKLanguageTag = aTag;
+ else
+ maLOKLanguageTag = aFallbackTag;
}
void SfxViewShell::NotifyCursor(SfxViewShell* /*pViewShell*/) const