diff options
author | Eike Rathke <erack@redhat.com> | 2013-03-27 18:05:17 +0100 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2013-03-27 20:38:18 +0100 |
commit | 6558e62d58d0daf1d4a2562ca4618eb1083f30d4 (patch) | |
tree | 3b1ce5765f6fafb8aa096e2580eabe7c62fecdb2 /i18npool | |
parent | 222414f92e0ec478e4dcdd30fadf3ba7a4dcda2b (diff) |
defined some x-... privateuse language tags
Change-Id: I1a4e00c677f7e5012831c0b36290c8585e45e474
Diffstat (limited to 'i18npool')
-rw-r--r-- | i18npool/inc/i18npool/lang.h | 4 | ||||
-rw-r--r-- | i18npool/source/isolang/isolang.cxx | 34 |
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 |