diff options
author | Eike Rathke <erack@redhat.com> | 2013-03-28 14:51:21 +0100 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2013-03-28 14:59:45 +0100 |
commit | 33f26ca42f37a9336c9bf2982fc1c9ef0d0f27d5 (patch) | |
tree | 06375a5d2eb888bca8af2ab304e0f67db84fbdcd /i18npool | |
parent | a93f651c345d3646c8720ac5b03346812f91aa9e (diff) |
added LanguageTag::getGlibcLocaleString()
Change-Id: I5e77026f5c016d912fa342a5e1bca08eb445b15c
Diffstat (limited to 'i18npool')
-rw-r--r-- | i18npool/inc/i18npool/languagetag.hxx | 13 | ||||
-rw-r--r-- | i18npool/source/languagetag/languagetag.cxx | 23 |
2 files changed, 36 insertions, 0 deletions
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) |