Kaydet (Commit) 46f47a6e authored tarafından Eike Rathke's avatar Eike Rathke

handle x-... privateuse conversion

Change-Id: I293ba38f02a93d161fd05beba02f2dcd974c63d3
üst a0edc3fc
...@@ -215,6 +215,10 @@ public: ...@@ -215,6 +215,10 @@ public:
I18NISOLANG_DLLPRIVATE static LanguageType convertLocaleToLanguage( I18NISOLANG_DLLPRIVATE static LanguageType convertLocaleToLanguage(
const ::com::sun::star::lang::Locale & rLocale ); const ::com::sun::star::lang::Locale & rLocale );
/** Convert x-... privateuse, used by convertLocaleToLanguage(Locale) */
I18NISOLANG_DLLPRIVATE static LanguageType convertPrivateUseToLanguage(
const rtl::OUString& rPriv );
/** Used by convertLocaleToLanguage(Locale) */ /** Used by convertLocaleToLanguage(Locale) */
I18NISOLANG_DLLPRIVATE static LanguageType convertIsoNamesToLanguage( I18NISOLANG_DLLPRIVATE static LanguageType convertIsoNamesToLanguage(
const rtl::OUString& rLang, const rtl::OUString& rCountry ); const rtl::OUString& rLang, const rtl::OUString& rCountry );
......
...@@ -847,6 +847,20 @@ static const MsLangId::IsoLangEntry & lcl_lookupFallbackEntry( ...@@ -847,6 +847,20 @@ static const MsLangId::IsoLangEntry & lcl_lookupFallbackEntry(
// ======================================================================= // =======================================================================
// static
LanguageType MsLangId::Conversion::convertPrivateUseToLanguage( const rtl::OUString& rPriv )
{
const IsoLangOtherEntry* pPrivateEntry = aImplPrivateUseEntries;
do
{
if ( rPriv.equalsIgnoreAsciiCaseAscii( pPrivateEntry->mpLangStr ) )
return pPrivateEntry->mnLang;
++pPrivateEntry;
} while ( pPrivateEntry->mnLang != LANGUAGE_DONTKNOW );
return LANGUAGE_DONTKNOW;
}
// static // static
LanguageType MsLangId::Conversion::convertIsoNamesToLanguage( const rtl::OUString& rLang, LanguageType MsLangId::Conversion::convertIsoNamesToLanguage( const rtl::OUString& rLang,
const rtl::OUString& rCountry ) const rtl::OUString& rCountry )
...@@ -935,14 +949,9 @@ LanguageType MsLangId::Conversion::convertIsoNamesToLanguage( const rtl::OUStrin ...@@ -935,14 +949,9 @@ LanguageType MsLangId::Conversion::convertIsoNamesToLanguage( const rtl::OUStrin
} }
// Look for privateuse definitions. // Look for privateuse definitions.
const IsoLangOtherEntry* pPrivateEntry = aImplPrivateUseEntries; LanguageType nLang = convertPrivateUseToLanguage( aLowerLang);
do if (nLang != LANGUAGE_DONTKNOW)
{ return nLang;
if ( aLowerLang.equalsAscii( pPrivateEntry->mpLangStr ) )
return pPrivateEntry->mnLang;
++pPrivateEntry;
}
while ( pPrivateEntry->mnLang != LANGUAGE_DONTKNOW );
// Now look for all other definitions, which are not standard // Now look for all other definitions, which are not standard
const IsoLangOtherEntry* pOtherEntry = aImplOtherEntries; const IsoLangOtherEntry* pOtherEntry = aImplOtherEntries;
......
...@@ -148,6 +148,13 @@ void MsLangId::Conversion::convertLanguageToLocale( LanguageType nLang, ...@@ -148,6 +148,13 @@ void MsLangId::Conversion::convertLanguageToLocale( LanguageType nLang,
if (!rLocale.Variant.isEmpty()) if (!rLocale.Variant.isEmpty())
rLocale.Variant = rtl::OUString(); rLocale.Variant = rtl::OUString();
convertLanguageToIsoNames( nLang, rLocale.Language, rLocale.Country); convertLanguageToIsoNames( nLang, rLocale.Language, rLocale.Country);
/* FIXME: this x-... is temporary until conversion will be moved up to
* LanguageTag */
if (rLocale.Language.startsWith( "x-"))
{
rLocale.Variant = rLocale.Language;
rLocale.Language = "qlt";
}
} }
...@@ -178,8 +185,11 @@ LanguageType MsLangId::Conversion::convertLocaleToLanguage( ...@@ -178,8 +185,11 @@ LanguageType MsLangId::Conversion::convertLocaleToLanguage(
if (rLocale.Language.isEmpty()) if (rLocale.Language.isEmpty())
return LANGUAGE_SYSTEM; return LANGUAGE_SYSTEM;
LanguageType nRet = convertIsoNamesToLanguage( rLocale.Language, /* FIXME: this x-... is temporary until conversion will be moved up to
rLocale.Country); * LanguageTag */
LanguageType nRet = ((!rLocale.Variant.isEmpty() && rLocale.Variant.startsWithIgnoreAsciiCase( "x-")) ?
convertPrivateUseToLanguage( rLocale.Variant) :
convertIsoNamesToLanguage( rLocale.Language, rLocale.Country));
if (nRet == LANGUAGE_DONTKNOW) if (nRet == LANGUAGE_DONTKNOW)
nRet = LANGUAGE_SYSTEM; nRet = LANGUAGE_SYSTEM;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment