diff options
-rw-r--r-- | editeng/source/misc/acorrcfg.cxx | 16 | ||||
-rw-r--r-- | i18nlangtag/qa/cppunit/test_languagetag.cxx | 2 | ||||
-rw-r--r-- | i18nlangtag/source/isolang/isolang.cxx | 2 | ||||
-rw-r--r-- | i18nlangtag/source/isolang/mslangid.cxx | 6 | ||||
-rw-r--r-- | i18nlangtag/source/languagetag/languagetag.cxx | 6 | ||||
-rw-r--r-- | include/i18nlangtag/mslangid.hxx | 5 |
6 files changed, 21 insertions, 16 deletions
diff --git a/editeng/source/misc/acorrcfg.cxx b/editeng/source/misc/acorrcfg.cxx index 5806179bc5f0..53a43cff3f22 100644 --- a/editeng/source/misc/acorrcfg.cxx +++ b/editeng/source/misc/acorrcfg.cxx @@ -75,20 +75,20 @@ static void scanAutoCorrectDirForLanguageTags( const OUString& rURL ) if (SvtLanguageTable::HasLanguageType( aLanguageTag.getLanguageType())) continue; - // Insert language-only tags only if there is no known - // matching fallback locale, otherwise we'd end up with - // unwanted entries where a language autocorrection - // file covers several locales. We do know a few - // art-x-... though so exclude those and any other - // private-use tag (which should not fallback, but - // avoid). + // Insert language(-script)-only tags only if there is + // no known matching fallback locale, otherwise we'd + // end up with unwanted entries where a language + // autocorrection file covers several locales. We do + // know a few art-x-... though so exclude those and any + // other private-use tag (which should not fallback, + // but avoid). if (aLanguageTag.getCountry().isEmpty() && LanguageTag::isValidBcp47( aCanonicalized, nullptr, LanguageTag::PrivateUse::DISALLOW)) { LanguageTag aFallback( aLanguageTag); aFallback.makeFallback(); - if (aFallback.getLanguage() == aLanguageTag.getLanguage()) + if (aFallback.getLanguageAndScript() == aLanguageTag.getLanguageAndScript()) continue; } diff --git a/i18nlangtag/qa/cppunit/test_languagetag.cxx b/i18nlangtag/qa/cppunit/test_languagetag.cxx index 4a211012e80d..f7864d6104fd 100644 --- a/i18nlangtag/qa/cppunit/test_languagetag.cxx +++ b/i18nlangtag/qa/cppunit/test_languagetag.cxx @@ -753,6 +753,8 @@ bool checkMapping( std::u16string_view rStr1, std::u16string_view rStr2 ) if (rStr1 == u"kw-UK" ) return rStr2 == u"kw-GB"; if (rStr1 == u"oc-FR" ) return rStr2 == u"oc-FR-lengadoc"; if (rStr1 == u"oc-ES" ) return rStr2 == u"oc-ES-aranes"; + if (rStr1 == u"zh-Hans-CN" ) return rStr2 == u"zh-CN"; + if (rStr1 == u"zh-Hant-TW" ) return rStr2 == u"zh-TW"; return rStr1 == rStr2; } diff --git a/i18nlangtag/source/isolang/isolang.cxx b/i18nlangtag/source/isolang/isolang.cxx index d20014e67f4b..4287fe247cb4 100644 --- a/i18nlangtag/source/isolang/isolang.cxx +++ b/i18nlangtag/source/isolang/isolang.cxx @@ -754,6 +754,8 @@ IsoLanguageScriptCountryEntry const aImplIsoLangScriptEntries[] = { LANGUAGE_BOSNIAN_LATIN_BOSNIA_HERZEGOVINA, "bs-Latn", "BA", kSAME }, // MS, though Latn is suppress-script { LANGUAGE_BOSNIAN_LATIN_LSO, "bs-Latn", "" , LANGUAGE_BOSNIAN_LSO }, // MS, though Latn is suppress-script { LANGUAGE_CHINESE_TRADITIONAL_LSO, "zh-Hant", "" , k0 }, + { LANGUAGE_CHINESE_SIMPLIFIED, "zh-Hans", "CN", kSAME }, // canonical, but prefer legacy zh-CN + { LANGUAGE_CHINESE_TRADITIONAL, "zh-Hant", "TW", kSAME }, // canonical, but prefer legacy zh-TW { LANGUAGE_USER_MANINKAKAN_EASTERN_LATIN, "emk-Latn", "GN", k0 }, { LANGUAGE_USER_CREE_PLAINS_LATIN, "crk-Latn", "CA", k0 }, { LANGUAGE_USER_CREE_PLAINS_SYLLABICS, "crk-Cans", "CA", k0 }, diff --git a/i18nlangtag/source/isolang/mslangid.cxx b/i18nlangtag/source/isolang/mslangid.cxx index 34c55b66e261..419e28445774 100644 --- a/i18nlangtag/source/isolang/mslangid.cxx +++ b/i18nlangtag/source/isolang/mslangid.cxx @@ -191,14 +191,14 @@ bool MsLangId::usesHyphenation(LanguageType nLang) // static css::lang::Locale MsLangId::Conversion::convertLanguageToLocale( - LanguageType nLang ) + LanguageType nLang, bool bIgnoreOverride ) { css::lang::Locale aLocale; // Still resolve LANGUAGE_DONTKNOW if resolving is not requested, // but not LANGUAGE_SYSTEM or others. LanguageType nOrigLang = nLang; nLang = MsLangId::getRealLanguage(nLang); - convertLanguageToLocaleImpl( nLang, aLocale, true ); + convertLanguageToLocaleImpl( nLang, aLocale, bIgnoreOverride ); if (aLocale.Language.isEmpty() && simplifySystemLanguages(nOrigLang) == LANGUAGE_SYSTEM) { // None found but resolve requested, last resort is "en-US". @@ -228,7 +228,7 @@ css::lang::Locale MsLangId::getFallbackLocale( { // empty language => LANGUAGE_SYSTEM if (rLocale.Language.isEmpty()) - return Conversion::lookupFallbackLocale( Conversion::convertLanguageToLocale( LANGUAGE_SYSTEM )); + return Conversion::lookupFallbackLocale( Conversion::convertLanguageToLocale( LANGUAGE_SYSTEM, false)); else return Conversion::lookupFallbackLocale( rLocale); } diff --git a/i18nlangtag/source/languagetag/languagetag.cxx b/i18nlangtag/source/languagetag/languagetag.cxx index 239215a187c1..7071f2dcb116 100644 --- a/i18nlangtag/source/languagetag/languagetag.cxx +++ b/i18nlangtag/source/languagetag/languagetag.cxx @@ -961,7 +961,7 @@ LanguageTag::ImplPtr LanguageTag::registerImpl() const // May have involved canonicalize(), so compare with // pImpl->maBcp47 instead of maBcp47! aBcp47 = LanguageTagImpl::convertToBcp47( - MsLangId::Conversion::convertLanguageToLocale( pImpl->mnLangID )); + MsLangId::Conversion::convertLanguageToLocale( pImpl->mnLangID, true)); bInsert = (aBcp47 == pImpl->maBcp47); } } @@ -1352,7 +1352,7 @@ void LanguageTagImpl::convertLocaleToBcp47() // locale via LanguageTag::convertToBcp47(LanguageType) and // LanguageTag::convertToLocale(LanguageType) would instantiate another // LanguageTag. - maLocale = MsLangId::Conversion::convertLanguageToLocale( LANGUAGE_SYSTEM ); + maLocale = MsLangId::Conversion::convertLanguageToLocale( LANGUAGE_SYSTEM, false); } if (maLocale.Language.isEmpty()) { @@ -1496,7 +1496,7 @@ void LanguageTagImpl::convertLangToLocale() mbInitializedLangID = true; } // Resolve system here! The original is remembered as mbSystemLocale. - maLocale = MsLangId::Conversion::convertLanguageToLocale( mnLangID ); + maLocale = MsLangId::Conversion::convertLanguageToLocale( mnLangID, false); mbInitializedLocale = true; } diff --git a/include/i18nlangtag/mslangid.hxx b/include/i18nlangtag/mslangid.hxx index 1d2f5cc8c651..f59e2d683def 100644 --- a/include/i18nlangtag/mslangid.hxx +++ b/include/i18nlangtag/mslangid.hxx @@ -292,11 +292,12 @@ public: /** Convert a LanguageType to a Locale. */ I18NLANGTAG_DLLPRIVATE static css::lang::Locale convertLanguageToLocale( - LanguageType nLang ); + LanguageType nLang, bool bIgnoreOverride ); /** Used by convertLanguageToLocale(LanguageType,bool) and getLocale(IsoLanguageCountryEntry*) and - getLocale(IsoLanguageScriptCountryEntry) + getLocale(IsoLanguageScriptCountryEntry*) and + getLocale(Bcp47CountryEntry*) @param bIgnoreOverride If bIgnoreOverride==true, a matching entry is used even if |