summaryrefslogtreecommitdiff
path: root/i18nlangtag
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2013-11-21 15:57:53 +0100
committerEike Rathke <erack@redhat.com>2013-11-22 17:21:39 +0100
commitfb0a970e82d5cee736ee1f50d186c648e1890116 (patch)
tree9af0fed89e3d557031d6e76e334bba2be6e98ed4 /i18nlangtag
parent7257023e6e831f2ad5d4b56a73c84652b2c6cd9c (diff)
handleVendorVariant() strip in case some was injected
Change-Id: I73c42a99671524e9fb186257a9bc943d514958c2 (cherry picked from commit 017a2a368cee1f6f5e7c6e18e65cbbc1a54efe47)
Diffstat (limited to 'i18nlangtag')
-rw-r--r--i18nlangtag/source/languagetag/languagetag.cxx13
1 files changed, 13 insertions, 0 deletions
diff --git a/i18nlangtag/source/languagetag/languagetag.cxx b/i18nlangtag/source/languagetag/languagetag.cxx
index 60e8c1280f55..3a15ecc1aaad 100644
--- a/i18nlangtag/source/languagetag/languagetag.cxx
+++ b/i18nlangtag/source/languagetag/languagetag.cxx
@@ -230,6 +230,17 @@ void LiblantagDataRef::setupDataPath()
}
+/* TODO: we could transform known vendor and browser-specific variants to known
+ * BCP 47 if available. For now just remove them to not confuse any later
+ * treatments that check for empty variants. This vendor stuff was never
+ * supported anyway. */
+static void handleVendorVariant( com::sun::star::lang::Locale & rLocale )
+{
+ if (!rLocale.Variant.isEmpty() && rLocale.Language != I18NLANGTAG_QLT)
+ rLocale.Variant = OUString();
+}
+
+
class LanguageTagImpl
{
public:
@@ -483,6 +494,7 @@ LanguageTag::LanguageTag( const com::sun::star::lang::Locale & rLocale )
mbInitializedLangID( false),
mbIsFallback( false)
{
+ handleVendorVariant( maLocale);
}
@@ -1025,6 +1037,7 @@ LanguageTag & LanguageTag::reset( const com::sun::star::lang::Locale & rLocale )
maLocale = rLocale;
mbSystemLocale = rLocale.Language.isEmpty();
mbInitializedLocale = !mbSystemLocale;
+ handleVendorVariant( maLocale);
return *this;
}