i18nlangtag/qa/cppunit/test_languagetag.cxx | 16 ++++++++++++++++ i18nlangtag/source/isolang/isolang.cxx | 1 + i18nlangtag/source/languagetag/languagetag.cxx | 18 ++++++++++++++++++ include/i18nlangtag/lang.h | 1 + svtools/source/misc/langtab.src | 1 + 5 files changed, 37 insertions(+)
New commits: commit 1ecd1985b1415ed95c472a45c010f8d1a9a99837 Author: Eike Rathke <er...@redhat.com> Date: Fri Sep 13 21:45:59 2013 +0200 added 'en-GB-oed' for "English, OED spelling (UK)" Change-Id: Ia51a8503213997ea589f2df79552ef765ecfc748 diff --git a/i18nlangtag/qa/cppunit/test_languagetag.cxx b/i18nlangtag/qa/cppunit/test_languagetag.cxx index 5f5f4b5..9f7c797 100644 --- a/i18nlangtag/qa/cppunit/test_languagetag.cxx +++ b/i18nlangtag/qa/cppunit/test_languagetag.cxx @@ -318,6 +318,22 @@ void TestLanguageTag::testAllTags() CPPUNIT_ASSERT( de_DE.getLanguageType() == LANGUAGE_GERMAN ); } + // 'en-GB-oed' is known grandfathered for English, Oxford English + // Dictionary spelling + { + OUString s_en_GB_oed( "en-GB-oed" ); + LanguageTag en_GB_oed( s_en_GB_oed ); + lang::Locale aLocale = en_GB_oed.getLocale(); + CPPUNIT_ASSERT( en_GB_oed.getBcp47() == s_en_GB_oed ); + CPPUNIT_ASSERT( aLocale.Language == "qlt" ); + CPPUNIT_ASSERT( aLocale.Country == "GB" ); // only 'GB' because we handle it, liblangtag would not fill this + CPPUNIT_ASSERT( aLocale.Variant == "en-GB-oed" ); + CPPUNIT_ASSERT( en_GB_oed.getLanguageType() == LANGUAGE_USER_ENGLISH_UK_OED ); + CPPUNIT_ASSERT( en_GB_oed.isValidBcp47() == true ); + CPPUNIT_ASSERT( en_GB_oed.isIsoLocale() == false ); + CPPUNIT_ASSERT( en_GB_oed.isIsoODF() == false ); + } + // 'qtz' is a local use known pseudolocale for key ID resource { OUString s_qtz( "qtz" ); diff --git a/i18nlangtag/source/isolang/isolang.cxx b/i18nlangtag/source/isolang/isolang.cxx index fc412e4..6561bcc 100644 --- a/i18nlangtag/source/isolang/isolang.cxx +++ b/i18nlangtag/source/isolang/isolang.cxx @@ -590,6 +590,7 @@ static Bcp47CountryEntry const aImplBcp47CountryEntries[] = // MS-LangID full BCP47, ISO3166, ISO639-Variant or other fallback { LANGUAGE_CATALAN_VALENCIAN, "ca-ES-valencia", "ES", "ca-valencia" }, { LANGUAGE_OBSOLETE_USER_CATALAN_VALENCIAN, "ca-ES-valencia", "ES", "" }, // In case MS format files using the old value escaped into the wild, map them back. + { LANGUAGE_USER_ENGLISH_UK_OED, "en-GB-oed", "GB", "" }, // grandfathered { LANGUAGE_DONTKNOW, "", "", "" } // marks end of table }; diff --git a/i18nlangtag/source/languagetag/languagetag.cxx b/i18nlangtag/source/languagetag/languagetag.cxx index 3b94021..cfbb6ec 100644 --- a/i18nlangtag/source/languagetag/languagetag.cxx +++ b/i18nlangtag/source/languagetag/languagetag.cxx @@ -1519,6 +1519,20 @@ LanguageTag::Extraction LanguageTag::simpleExtract( const OUString& rBcp47, rVariants = rBcp47.copy( nHyph1 + 1); eRet = EXTRACTED_LV; } + else + { + // Known and handled grandfathered; ugly but effective ... + // Note that nLen must have matched above. + // Strictly not a variant, but so far we treat it as such. + if (rBcp47.equalsIgnoreAsciiCaseAscii( "en-GB-oed")) + { + rLanguage = "en"; + rScript = OUString(); + rCountry = "GB"; + rVariants = "oed"; + eRet = EXTRACTED_LV; + } + } } if (eRet == EXTRACTED_NONE) rLanguage = rScript = rCountry = rVariants = OUString(); diff --git a/include/i18nlangtag/lang.h b/include/i18nlangtag/lang.h index 5a968c2..9399850 100644 --- a/include/i18nlangtag/lang.h +++ b/include/i18nlangtag/lang.h @@ -558,6 +558,7 @@ typedef unsigned short LanguageType; #define LANGUAGE_USER_CORNISH 0x0688 #define LANGUAGE_USER_SAMI_PITE_SWEDEN 0x843B /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_SAMI_NORTHERN_NORWAY)) */ #define LANGUAGE_USER_NGAEBERE 0x0689 +#define LANGUAGE_USER_ENGLISH_UK_OED 0x8C09 /* makeLangID( 0x23, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */ #define LANGUAGE_USER_PRIV_JOKER 0xFFEB /* privateuse "*" (sic! bad! nasty!), primary 0x3eb, sub 0x3f */ #define LANGUAGE_USER_PRIV_COMMENT 0xFFEC /* privateuse "x-comment", primary 0x3ec, sub 0x3f */ diff --git a/svtools/source/misc/langtab.src b/svtools/source/misc/langtab.src index b54e3c1..ddc190c 100644 --- a/svtools/source/misc/langtab.src +++ b/svtools/source/misc/langtab.src @@ -84,6 +84,7 @@ StringArray STR_ARR_SVT_LANGUAGE_TABLE < "Dutch (Belgium)" ; LANGUAGE_DUTCH_BELGIAN ; > ; < "English (USA)" ; LANGUAGE_ENGLISH_US ; > ; < "English (UK)" ; LANGUAGE_ENGLISH_UK ; > ; + < "English, OED spelling (UK)" ; LANGUAGE_USER_ENGLISH_UK_OED ; > ; < "English (Australia)" ; LANGUAGE_ENGLISH_AUS ; > ; < "English (Canada)" ; LANGUAGE_ENGLISH_CAN ; > ; < "English (New Zealand)" ; LANGUAGE_ENGLISH_NZ ; > ; commit 4fb405a4f5132ebfd2d72fe4fcd266608307d7de Author: Eike Rathke <er...@redhat.com> Date: Fri Sep 13 21:31:45 2013 +0200 copy and reset maCachedVariants Change-Id: I898ecf7d3122b5cdbdc9d0df5aa4ac88faa423f1 diff --git a/i18nlangtag/source/languagetag/languagetag.cxx b/i18nlangtag/source/languagetag/languagetag.cxx index e2f714c..3b94021 100644 --- a/i18nlangtag/source/languagetag/languagetag.cxx +++ b/i18nlangtag/source/languagetag/languagetag.cxx @@ -307,6 +307,7 @@ LanguageTag::LanguageTag( const LanguageTag & rLanguageTag ) maCachedLanguage( rLanguageTag.maCachedLanguage), maCachedScript( rLanguageTag.maCachedScript), maCachedCountry( rLanguageTag.maCachedCountry), + maCachedVariants( rLanguageTag.maCachedVariants), mpImplLangtag( rLanguageTag.mpImplLangtag ? lt_tag_copy( LANGTAGCAST( rLanguageTag.mpImplLangtag)) : NULL), mnLangID( rLanguageTag.mnLangID), @@ -336,6 +337,7 @@ LanguageTag& LanguageTag::operator=( const LanguageTag & rLanguageTag ) maCachedLanguage = rLanguageTag.maCachedLanguage; maCachedScript = rLanguageTag.maCachedScript; maCachedCountry = rLanguageTag.maCachedCountry; + maCachedVariants = rLanguageTag.maCachedVariants; mpImplLangtag = rLanguageTag.mpImplLangtag; mpImplLangtag = rLanguageTag.mpImplLangtag ? lt_tag_copy( LANGTAGCAST( rLanguageTag.mpImplLangtag)) : NULL; @@ -387,6 +389,8 @@ void LanguageTag::resetVars() maCachedScript = OUString(); if (!maCachedCountry.isEmpty()) maCachedCountry = OUString(); + if (!maCachedVariants.isEmpty()) + maCachedVariants = OUString(); mnLangID = LANGUAGE_DONTKNOW; meIsValid = DECISION_DONTKNOW; meIsIsoLocale = DECISION_DONTKNOW; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits