i18npool/inc/i18npool/languagetag.hxx | 13 +++++++++++++ i18npool/source/languagetag/languagetag.cxx | 23 +++++++++++++++++++++++ vcl/unx/gtk/fpicker/SalGtkPicker.cxx | 13 +++---------- 3 files changed, 39 insertions(+), 10 deletions(-)
New commits: commit 0b0f22311b0cf24e795d3f8eb12f19c357485fed Author: Eike Rathke <er...@redhat.com> Date: Thu Mar 28 14:58:49 2013 +0100 use LanguageTag::getGlibcLocaleString() Change-Id: I86a5aad4c1a024861c82d44a3f67a2cbe00e7c2f diff --git a/vcl/unx/gtk/fpicker/SalGtkPicker.cxx b/vcl/unx/gtk/fpicker/SalGtkPicker.cxx index b4c08b5..db74fc7 100644 --- a/vcl/unx/gtk/fpicker/SalGtkPicker.cxx +++ b/vcl/unx/gtk/fpicker/SalGtkPicker.cxx @@ -179,18 +179,11 @@ void SalGtkPicker::setGtkLanguage() if (bSet) return; - /* FIXME-BCP47: let LanguageTag create glibc locale string! */ - ::com::sun::star::lang::Locale aLocale = Application::GetSettings().GetUILanguageTag().getLocale(); - rtl::OUStringBuffer aBuffer; - aBuffer.append( aLocale.Language ); - aBuffer.appendAscii( "_" ); - aBuffer.append( aLocale.Country ); - aBuffer.appendAscii( ".UTF-8" ); - - if (aBuffer.getLength() > 8) + OUString aLocaleString( Application::GetSettings().GetUILanguageTag().getGlibcLocaleString( ".UTF-8")); + if (!aLocaleString.isEmpty()) { rtl::OUString envVar( "LANGUAGE" ); - osl_setEnvironment( envVar.pData, aBuffer.makeStringAndClear().pData ); + osl_setEnvironment( envVar.pData, aLocaleString.pData ); } bSet = true; } commit 33f26ca42f37a9336c9bf2982fc1c9ef0d0f27d5 Author: Eike Rathke <er...@redhat.com> Date: Thu Mar 28 14:51:21 2013 +0100 added LanguageTag::getGlibcLocaleString() Change-Id: I5e77026f5c016d912fa342a5e1bca08eb445b15c diff --git a/i18npool/inc/i18npool/languagetag.hxx b/i18npool/inc/i18npool/languagetag.hxx index eb1a518..0bba7a1 100644 --- a/i18npool/inc/i18npool/languagetag.hxx +++ b/i18npool/inc/i18npool/languagetag.hxx @@ -158,6 +158,19 @@ public: */ OUString getRegion() const; + /** Get a GLIBC locale string. + + Always resolves an empty tag to the system locale. + + @param rEncoding + An encoding to be appended to language_country, for example + ".UTF-8" including the dot. + + @return The resulting GLIBC locale string if it could be constructed, + if not an empty string is returned. + */ + OUString getGlibcLocaleString( const OUString & rEncoding ) const; + /** If language tag has a non-default script specified. */ bool hasScript() const; diff --git a/i18npool/source/languagetag/languagetag.cxx b/i18npool/source/languagetag/languagetag.cxx index 961c8d5..99b12cf 100644 --- a/i18npool/source/languagetag/languagetag.cxx +++ b/i18npool/source/languagetag/languagetag.cxx @@ -950,6 +950,29 @@ OUString LanguageTag::getRegion() const } +OUString LanguageTag::getGlibcLocaleString( const OUString & rEncoding ) const +{ + OUString aRet; + if (isIsoLocale()) + { + OUString aCountry( getCountry()); + if (aCountry.isEmpty()) + aRet = getLanguage() + rEncoding; + else + aRet = getLanguage() + "_" + aCountry + rEncoding; + } + else + { + /* FIXME: use the aImplIsoLangGLIBCModifiersEntries table from + * i18npool/source/isolang/isolang.cxx or let liblangtag handle it. So + * far no code was prepared for anything else than a simple + * language_country locale so we don't loose anything here right now. + * */ + } + return aRet; +} + + bool LanguageTag::hasScript() const { if (!mbCachedScript) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits