summaryrefslogtreecommitdiff
path: root/i18npool
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2013-03-27 18:05:17 +0100
committerEike Rathke <erack@redhat.com>2013-03-27 20:38:18 +0100
commit6558e62d58d0daf1d4a2562ca4618eb1083f30d4 (patch)
tree3b1ce5765f6fafb8aa096e2580eabe7c62fecdb2 /i18npool
parent222414f92e0ec478e4dcdd30fadf3ba7a4dcda2b (diff)
defined some x-... privateuse language tags
Change-Id: I1a4e00c677f7e5012831c0b36290c8585e45e474
Diffstat (limited to 'i18npool')
-rw-r--r--i18npool/inc/i18npool/lang.h4
-rw-r--r--i18npool/source/isolang/isolang.cxx34
2 files changed, 38 insertions, 0 deletions
diff --git a/i18npool/inc/i18npool/lang.h b/i18npool/inc/i18npool/lang.h
index dc55f3f4a980..b761fff8aed3 100644
--- a/i18npool/inc/i18npool/lang.h
+++ b/i18npool/inc/i18npool/lang.h
@@ -566,6 +566,10 @@ typedef unsigned short LanguageType;
#define LANGUAGE_USER_YOMBE 0x0684
#define LANGUAGE_USER_YOMBE_CONGO 0x8284 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_YOMBE)) */
#define LANGUAGE_USER_SIDAMA 0x0685
+
+#define LANGUAGE_USER_PRIV_COMMENT 0xFFEC /* privateuse "x-comment", primary 0x3ec, sub 0x3f */
+#define LANGUAGE_USER_PRIV_DEFAULT 0xFFED /* privateuse "x-default", primary 0x3ed, sub 0x3f */
+#define LANGUAGE_USER_PRIV_NOTRANSLATE 0xFFEE /* privateuse "x-no-translate" (sic!), primary 0x3ee, sub 0x3f */
#define LANGUAGE_MULTIPLE 0xFFEF /* multiple languages, primary 0x3ef, sub 0x3f */
#define LANGUAGE_UNDETERMINED 0xFFF0 /* undetermined language, primary 0x3f0, sub 0x3f */
#define LANGUAGE_USER_SYSTEM_CONFIG 0xFFFE /* not a locale, to be used only in configuration context to obtain system default, primary 0x3fe, sub 0x3f */
diff --git a/i18npool/source/isolang/isolang.cxx b/i18npool/source/isolang/isolang.cxx
index 1ae850dde06c..ba3b4e59fb6c 100644
--- a/i18npool/source/isolang/isolang.cxx
+++ b/i18npool/source/isolang/isolang.cxx
@@ -628,6 +628,16 @@ static IsoLangOtherEntry const aImplOtherEntries[] =
{ LANGUAGE_DONTKNOW, NULL } // marks end of table
};
+
+// in this table are only privateuse names
+static IsoLangOtherEntry const aImplPrivateUseEntries[] =
+{
+ { LANGUAGE_USER_PRIV_NOTRANSLATE, "x-no-translate" }, //! not BCP47 but legacy in .xcu configmgr
+ { LANGUAGE_USER_PRIV_DEFAULT, "x-default" },
+ { LANGUAGE_USER_PRIV_COMMENT, "x-comment" },
+ { LANGUAGE_DONTKNOW, NULL } // marks end of table
+};
+
// =======================================================================
// static
@@ -667,6 +677,20 @@ void MsLangId::Conversion::convertLanguageToIsoNames( LanguageType nLang,
}
while ( pNoneStdEntry->mnLang != LANGUAGE_DONTKNOW );
+ // Look for privateuse definitions.
+ const IsoLangOtherEntry* pPrivateEntry = aImplPrivateUseEntries;
+ do
+ {
+ if ( pPrivateEntry->mnLang == nLang )
+ {
+ rLangStr = rtl::OUString::createFromAscii( pPrivateEntry->mpLangStr );
+ rCountry = OUString();
+ return;
+ }
+ ++pPrivateEntry;
+ }
+ while ( pPrivateEntry->mnLang != LANGUAGE_DONTKNOW );
+
// not found
rLangStr = rtl::OUString();
rCountry = rtl::OUString();
@@ -910,6 +934,16 @@ LanguageType MsLangId::Conversion::convertIsoNamesToLanguage( const rtl::OUStrin
aLowerLang = aUpperCountry.toAsciiLowerCase();
}
+ // Look for privateuse definitions.
+ const IsoLangOtherEntry* pPrivateEntry = aImplPrivateUseEntries;
+ do
+ {
+ if ( aLowerLang.equalsAscii( pPrivateEntry->mpLangStr ) )
+ return pPrivateEntry->mnLang;
+ ++pPrivateEntry;
+ }
+ while ( pPrivateEntry->mnLang != LANGUAGE_DONTKNOW );
+
// Now look for all other definitions, which are not standard
const IsoLangOtherEntry* pOtherEntry = aImplOtherEntries;
do