diff options
author | Eike Rathke <erack@redhat.com> | 2013-12-18 18:08:09 +0100 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2013-12-18 18:15:24 +0100 |
commit | 72c08bbb00ac9c10b9e41a693728be9814b64a83 (patch) | |
tree | 6f3ef4a0b163ddd7856ab0c0442120a6c65d2011 /i18nlangtag | |
parent | d9168242f5f8800f88d4947bd1fbfc30a969429c (diff) |
resolved fdo#72778 keep setting system locale and LanguageTag in sync
Change-Id: I3547786bf77b8f611bc08d0e52c66ac00e199f13
(cherry picked from commit cc54c08a66046c00af3713fbe5e69995ccb7f73b)
Diffstat (limited to 'i18nlangtag')
-rw-r--r-- | i18nlangtag/source/isolang/mslangid.cxx | 2 | ||||
-rw-r--r-- | i18nlangtag/source/languagetag/languagetag.cxx | 19 |
2 files changed, 19 insertions, 2 deletions
diff --git a/i18nlangtag/source/isolang/mslangid.cxx b/i18nlangtag/source/isolang/mslangid.cxx index 772822ea9652..0f7cfaa685a0 100644 --- a/i18nlangtag/source/isolang/mslangid.cxx +++ b/i18nlangtag/source/isolang/mslangid.cxx @@ -37,7 +37,7 @@ LanguageType MsLangId::nConfiguredAsianFallback = LANGUAGE_SYSTEM; LanguageType MsLangId::nConfiguredComplexFallback = LANGUAGE_SYSTEM; // static -void MsLangId::setConfiguredSystemLanguage( LanguageType nLang ) +void MsLangId::LanguageTagAccess::setConfiguredSystemLanguage( LanguageType nLang ) { nConfiguredSystemLanguage = nLang; } diff --git a/i18nlangtag/source/languagetag/languagetag.cxx b/i18nlangtag/source/languagetag/languagetag.cxx index 68ee64c6208e..695343e5824c 100644 --- a/i18nlangtag/source/languagetag/languagetag.cxx +++ b/i18nlangtag/source/languagetag/languagetag.cxx @@ -364,7 +364,6 @@ private: /** Convert Locale to BCP 47 string without resolving system and creating temporary LanguageTag instances. */ static OUString convertToBcp47( const com::sun::star::lang::Locale& rLocale ); - }; @@ -713,6 +712,24 @@ LanguageTag::ImplPtr LanguageTagImpl::registerOnTheFly( LanguageType nRegisterID return pImpl; } +// static +void LanguageTag::setConfiguredSystemLanguage( LanguageType nLang ) +{ + if (nLang == LANGUAGE_DONTKNOW || nLang == LANGUAGE_SYSTEM) + { + SAL_WARN( "i18nlangtag", + "LanguageTag::setConfiguredSystemLanguage: refusing to set unresolved system locale 0x" << + ::std::hex << nLang); + return; + } + SAL_INFO( "i18nlangtag", "LanguageTag::setConfiguredSystemLanguage: setting to 0x" << ::std::hex << nLang); + MsLangId::LanguageTagAccess::setConfiguredSystemLanguage( nLang); + // Resest system locale to none and let registerImpl() do the rest to + // initialize a new one. + theSystemLocale::get().reset(); + LanguageTag aLanguageTag( LANGUAGE_SYSTEM); + aLanguageTag.registerImpl(); +} static bool lcl_isKnownOnTheFlyID( LanguageType nLang ) { |