use proper language tag fallback for language guesser result
Change-Id: Icd912361ebca0e618bc76fa7017039cc116bef40
This commit is contained in:
@@ -87,24 +87,22 @@ static LanguageType lcl_CheckLanguage(
|
|||||||
if (!xLangGuess.is())
|
if (!xLangGuess.is())
|
||||||
return nLang;
|
return nLang;
|
||||||
|
|
||||||
lang::Locale aLocale( xLangGuess->guessPrimaryLanguage( rText, 0, rText.getLength()) );
|
LanguageTag aGuessTag( xLangGuess->guessPrimaryLanguage( rText, 0, rText.getLength()) );
|
||||||
|
|
||||||
// get language as from "Tools/Options - Language Settings - Languages: Locale setting"
|
// If the result from language guessing does not provide a 'Country'
|
||||||
LanguageType nTmpLang = Application::GetSettings().GetLanguageTag().getLanguageType();
|
// part, try to get it by looking up the locale setting of the office,
|
||||||
|
// "Tools/Options - Language Settings - Languages: Locale setting", if
|
||||||
// if the result from language guessing does not provide a 'Country' part
|
// the language matches.
|
||||||
// try to get it by looking up the locale setting of the office.
|
if ( aGuessTag.getCountry().isEmpty() )
|
||||||
/* FIXME-BCP47: handle language tags */
|
|
||||||
if ( aLocale.Country.isEmpty( ) )
|
|
||||||
{
|
{
|
||||||
lang::Locale aTmpLocale = LanguageTag( nTmpLang ).getLocale();
|
const LanguageTag& rAppLocaleTag = Application::GetSettings().GetLanguageTag();
|
||||||
if (aTmpLocale.Language == aLocale.Language)
|
if (rAppLocaleTag.getLanguage() == aGuessTag.getLanguage())
|
||||||
nLang = nTmpLang;
|
nLang = rAppLocaleTag.getLanguageType();
|
||||||
}
|
}
|
||||||
if (nLang == LANGUAGE_NONE) // language not found by looking up the sytem language...
|
if (nLang == LANGUAGE_NONE) // language not found by looking up the sytem language...
|
||||||
nLang = LanguageTag( aLocale ).makeFallback().getLanguageType();
|
nLang = aGuessTag.makeFallback().getLanguageType(); // best known locale match
|
||||||
if (nLang == LANGUAGE_SYSTEM)
|
if (nLang == LANGUAGE_SYSTEM)
|
||||||
nLang = nTmpLang;
|
nLang = Application::GetSettings().GetLanguageTag().getLanguageType();
|
||||||
if (nLang == LANGUAGE_DONTKNOW)
|
if (nLang == LANGUAGE_DONTKNOW)
|
||||||
nLang = LANGUAGE_NONE;
|
nLang = LANGUAGE_NONE;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user