i18nlangtag/source/isolang/isolang.cxx | 54 ++++++++++++++++++++++++++++---- i18nlangtag/source/isolang/mslangid.cxx | 7 ---- include/i18nlangtag/mslangid.hxx | 6 ++- 3 files changed, 54 insertions(+), 13 deletions(-)
New commits: commit 434f3c8e7fac0644cfe1d7a15f97f0c267bac048 Author: Eike Rathke <[email protected]> Date: Tue Aug 27 18:08:08 2013 +0200 use ...IgnoreAsciiCase() Change-Id: I4de5201d6352ef1b7fc0dafcac9f8439dd943b60 diff --git a/i18nlangtag/source/isolang/isolang.cxx b/i18nlangtag/source/isolang/isolang.cxx index 58ef58e..41d8411 100644 --- a/i18nlangtag/source/isolang/isolang.cxx +++ b/i18nlangtag/source/isolang/isolang.cxx @@ -773,9 +773,9 @@ void MsLangId::Conversion::convertLanguageToLocaleImpl( LanguageType nLang, for (const IsoLanguageScriptCountryEntry* pScriptEntry = aImplIsoLangScriptEntries; pScriptEntry->mnLang != LANGUAGE_DONTKNOW; ++pScriptEntry) { - if (rLocale.Variant.startsWith( pScriptEntry->maLanguageScript)) + if (rLocale.Variant.startsWithIgnoreAsciiCase( pScriptEntry->maLanguageScript)) { - if (pScriptEntry->getTagString() == rLocale.Variant) + if (rLocale.Variant.equalsIgnoreAsciiCase( pScriptEntry->getTagString())) return pScriptEntry->getLocale(); if (!pFirstScript) pFirstScript = pScriptEntry; @@ -792,8 +792,8 @@ void MsLangId::Conversion::convertLanguageToLocaleImpl( LanguageType nLang, for (const IsoLanguageScriptCountryEntry* pScriptEntry = pFirstScript; pScriptEntry->mnLang != LANGUAGE_DONTKNOW; ++pScriptEntry) { - if (rLocale.Variant.startsWith( pScriptEntry->maLanguageScript) && - pScriptEntry->maCountry == rLocale.Country) + if (rLocale.Variant.startsWithIgnoreAsciiCase( pScriptEntry->maLanguageScript) && + rLocale.Country.equalsIgnoreAsciiCaseAscii( pScriptEntry->maCountry)) return pScriptEntry->getLocale(); } } @@ -888,9 +888,9 @@ LanguageType MsLangId::Conversion::convertLocaleToLanguageImpl( for (const IsoLanguageScriptCountryEntry* pScriptEntry = aImplIsoLangScriptEntries; pScriptEntry->mnLang != LANGUAGE_DONTKNOW; ++pScriptEntry) { - if (rLocale.Variant.startsWith( pScriptEntry->maLanguageScript)) + if (rLocale.Variant.startsWithIgnoreAsciiCase( pScriptEntry->maLanguageScript)) { - if (pScriptEntry->getTagString() == rLocale.Variant) + if (rLocale.Variant.equalsIgnoreAsciiCase( pScriptEntry->getTagString())) return pScriptEntry->mnLang; } } commit fbf0a3ee5fec87bff4fd5c373509b287d88a0a31 Author: Eike Rathke <[email protected]> Date: Tue Aug 27 17:54:28 2013 +0200 in convertLocaleToLanguageImpl() don't use the implied fall back ... and through of dreaded convertIsoNamesToLanguage() Change-Id: Ifb86974f9398094ed1a513a060ff61d63f798ea3 diff --git a/i18nlangtag/source/isolang/isolang.cxx b/i18nlangtag/source/isolang/isolang.cxx index 9722700..58ef58e 100644 --- a/i18nlangtag/source/isolang/isolang.cxx +++ b/i18nlangtag/source/isolang/isolang.cxx @@ -878,13 +878,39 @@ LanguageType MsLangId::Conversion::convertPrivateUseToLanguage( const OUString& LanguageType MsLangId::Conversion::convertLocaleToLanguageImpl( const ::com::sun::star::lang::Locale& rLocale ) { - /* FIXME: this x-... is temporary until conversion will be moved up to - * LanguageTag. Also handle the nasty "*" joker as privateuse. */ - LanguageType nRet = ((!rLocale.Variant.isEmpty() && - (rLocale.Variant.startsWithIgnoreAsciiCase( "x-") || (rLocale.Variant == "*"))) ? - convertPrivateUseToLanguage( rLocale.Variant) : - convertIsoNamesToLanguage( rLocale.Language, rLocale.Country)); - return nRet; + if (rLocale.Language == I18NLANGTAG_QLT) + { + // "x-..." private use and the nasty "*" joker + if (rLocale.Variant.startsWithIgnoreAsciiCase( "x-") || (rLocale.Variant == "*")) + return convertPrivateUseToLanguage( rLocale.Variant); + + // Search in ISO lll-Ssss-CC + for (const IsoLanguageScriptCountryEntry* pScriptEntry = aImplIsoLangScriptEntries; + pScriptEntry->mnLang != LANGUAGE_DONTKNOW; ++pScriptEntry) + { + if (rLocale.Variant.startsWith( pScriptEntry->maLanguageScript)) + { + if (pScriptEntry->getTagString() == rLocale.Variant) + return pScriptEntry->mnLang; + } + } + } + else + { + // language is lower case in table + OUString aLowerLang = rLocale.Language.toAsciiLowerCase(); + // country is upper case in table + OUString aUpperCountry = rLocale.Country.toAsciiUpperCase(); + + // Search in ISO lll-CC + for (const IsoLanguageCountryEntry* pEntry = aImplIsoLangEntries; + pEntry->mnLang != LANGUAGE_DONTKNOW; ++pEntry) + { + if (aLowerLang.equalsAscii( pEntry->maLanguage) && aUpperCountry.equalsAscii( pEntry->maCountry)) + return pEntry->mnLang; + } + } + return LANGUAGE_DONTKNOW; } commit a18c90dfe5f07227dea5c8e7cc21167ee90e446a Author: Eike Rathke <[email protected]> Date: Tue Aug 27 17:29:58 2013 +0200 split off convertLocaleToLanguageImpl() Change-Id: Ief7402a1067598fe9635ac23dedcaf8faf8de2be diff --git a/i18nlangtag/source/isolang/isolang.cxx b/i18nlangtag/source/isolang/isolang.cxx index 3eb2d25..9722700 100644 --- a/i18nlangtag/source/isolang/isolang.cxx +++ b/i18nlangtag/source/isolang/isolang.cxx @@ -875,6 +875,20 @@ LanguageType MsLangId::Conversion::convertPrivateUseToLanguage( const OUString& // static +LanguageType MsLangId::Conversion::convertLocaleToLanguageImpl( + const ::com::sun::star::lang::Locale& rLocale ) +{ + /* FIXME: this x-... is temporary until conversion will be moved up to + * LanguageTag. Also handle the nasty "*" joker as privateuse. */ + LanguageType nRet = ((!rLocale.Variant.isEmpty() && + (rLocale.Variant.startsWithIgnoreAsciiCase( "x-") || (rLocale.Variant == "*"))) ? + convertPrivateUseToLanguage( rLocale.Variant) : + convertIsoNamesToLanguage( rLocale.Language, rLocale.Country)); + return nRet; +} + + +// static LanguageType MsLangId::Conversion::convertIsoNamesToLanguage( const OUString& rLang, const OUString& rCountry ) { diff --git a/i18nlangtag/source/isolang/mslangid.cxx b/i18nlangtag/source/isolang/mslangid.cxx index a4daef86..6e816ee 100644 --- a/i18nlangtag/source/isolang/mslangid.cxx +++ b/i18nlangtag/source/isolang/mslangid.cxx @@ -169,12 +169,7 @@ LanguageType MsLangId::Conversion::convertLocaleToLanguage( if (rLocale.Language.isEmpty()) return LANGUAGE_SYSTEM; - /* FIXME: this x-... is temporary until conversion will be moved up to - * LanguageTag. Also handle the nasty "*" joker as privateuse. */ - LanguageType nRet = ((!rLocale.Variant.isEmpty() && - (rLocale.Variant.startsWithIgnoreAsciiCase( "x-") || (rLocale.Variant == "*"))) ? - convertPrivateUseToLanguage( rLocale.Variant) : - convertIsoNamesToLanguage( rLocale.Language, rLocale.Country)); + LanguageType nRet = convertLocaleToLanguageImpl( rLocale); if (nRet == LANGUAGE_DONTKNOW) nRet = LANGUAGE_SYSTEM; diff --git a/include/i18nlangtag/mslangid.hxx b/include/i18nlangtag/mslangid.hxx index 14386ec..6be7e66 100644 --- a/include/i18nlangtag/mslangid.hxx +++ b/include/i18nlangtag/mslangid.hxx @@ -212,7 +212,11 @@ public: I18NLANGTAG_DLLPRIVATE static LanguageType convertLocaleToLanguage( const ::com::sun::star::lang::Locale & rLocale ); - /** Convert x-... privateuse, used by convertLocaleToLanguage(Locale) */ + /** Used by convertLocaleToLanguage(Locale) */ + I18NLANGTAG_DLLPRIVATE static LanguageType convertLocaleToLanguageImpl( + const ::com::sun::star::lang::Locale & rLocale ); + + /** Convert x-... privateuse, used by convertLocaleToLanguageImpl(Locale) */ I18NLANGTAG_DLLPRIVATE static LanguageType convertPrivateUseToLanguage( const OUString& rPriv ); commit d9eaef1fafe5fa3037d02962bfe334f50132803e Author: Eike Rathke <[email protected]> Date: Tue Aug 27 17:08:38 2013 +0200 better check for 'qlt' instead of assuming Variant follows convention Change-Id: I0915e5cd657633533a7374d533ec12c2bdaa3b8b diff --git a/i18nlangtag/source/isolang/isolang.cxx b/i18nlangtag/source/isolang/isolang.cxx index 9c2ae71..3eb2d25 100644 --- a/i18nlangtag/source/isolang/isolang.cxx +++ b/i18nlangtag/source/isolang/isolang.cxx @@ -766,7 +766,7 @@ void MsLangId::Conversion::convertLanguageToLocaleImpl( LanguageType nLang, OUString aUpperCountry = rLocale.Country.toAsciiUpperCase(); sal_Int32 nCountryLen = aUpperCountry.getLength(); - if (!rLocale.Variant.isEmpty()) + if (rLocale.Language == I18NLANGTAG_QLT) { // Search in ISO lll-Ssss-CC const IsoLanguageScriptCountryEntry* pFirstScript = NULL; commit 29c61173d66864dde5ca18d6c21dca22ab4e018c Author: Eike Rathke <[email protected]> Date: Tue Aug 27 16:53:58 2013 +0200 avoid creation of a temporary Locale instance Change-Id: I973c196d7f19725ccbbd6d24707fc30e5fe78eef diff --git a/i18nlangtag/source/isolang/isolang.cxx b/i18nlangtag/source/isolang/isolang.cxx index db13298..9c2ae71 100644 --- a/i18nlangtag/source/isolang/isolang.cxx +++ b/i18nlangtag/source/isolang/isolang.cxx @@ -718,7 +718,9 @@ void MsLangId::Conversion::convertLanguageToLocaleImpl( LanguageType nLang, { if ( pScriptEntry->mnLang == nLang ) { - rLocale = pScriptEntry->getLocale(); + rLocale.Language = I18NLANGTAG_QLT; + rLocale.Country = OUString::createFromAscii( pScriptEntry->maCountry); + rLocale.Variant = pScriptEntry->getTagString(); return; } } _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
