summaryrefslogtreecommitdiff
path: root/i18npool
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2013-03-28 14:51:21 +0100
committerEike Rathke <erack@redhat.com>2013-03-28 14:59:45 +0100
commit33f26ca42f37a9336c9bf2982fc1c9ef0d0f27d5 (patch)
tree06375a5d2eb888bca8af2ab304e0f67db84fbdcd /i18npool
parenta93f651c345d3646c8720ac5b03346812f91aa9e (diff)
added LanguageTag::getGlibcLocaleString()
Change-Id: I5e77026f5c016d912fa342a5e1bca08eb445b15c
Diffstat (limited to 'i18npool')
-rw-r--r--i18npool/inc/i18npool/languagetag.hxx13
-rw-r--r--i18npool/source/languagetag/languagetag.cxx23
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)