From 33f26ca42f37a9336c9bf2982fc1c9ef0d0f27d5 Mon Sep 17 00:00:00 2001 From: Eike Rathke Date: Thu, 28 Mar 2013 14:51:21 +0100 Subject: added LanguageTag::getGlibcLocaleString() Change-Id: I5e77026f5c016d912fa342a5e1bca08eb445b15c --- i18npool/inc/i18npool/languagetag.hxx | 13 +++++++++++++ i18npool/source/languagetag/languagetag.cxx | 23 +++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/i18npool/inc/i18npool/languagetag.hxx b/i18npool/inc/i18npool/languagetag.hxx index eb1a51862a93..0bba7a1afbe3 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 961c8d5f80e7..99b12cfe63a3 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) -- cgit