summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--i18nlangtag/source/isolang/isolang.cxx8
1 files changed, 5 insertions, 3 deletions
diff --git a/i18nlangtag/source/isolang/isolang.cxx b/i18nlangtag/source/isolang/isolang.cxx
index bf8c5d4b5d34..36b69f0fe6a6 100644
--- a/i18nlangtag/source/isolang/isolang.cxx
+++ b/i18nlangtag/source/isolang/isolang.cxx
@@ -1408,10 +1408,12 @@ LanguageType MsLangId::Conversion::convertIsoNamesToLanguage( std::string_view r
// actually call into LanguageTag to create an on-the-fly mapping.
if (nLang == LANGUAGE_DONTKNOW)
{
- nLang = LanguageTag( aLang + "-" + aCountry).getLanguageType(false);
+ OUString aTag( aCountry.isEmpty() ? aLang : aLang + "-" + aCountry );
+ nLang = LanguageTag( aTag).getLanguageType(false);
SAL_WARN("i18nlangtag", "convertIsoNamesToLanguage(string_view): on-the-fly for {"
- << aLang << "-" << aCountry << "} " << nLang);
- if (nLang == LANGUAGE_DONTKNOW)
+ << aTag << "} " << nLang);
+ // Do not leave empty as SYSTEM unresolved.
+ if (nLang == LANGUAGE_DONTKNOW || nLang == LANGUAGE_SYSTEM)
{
SAL_WARN("i18nlangtag", "convertIsoNamesToLanguage(string_view): on-the-fly bad, using {en-US}");
nLang = LANGUAGE_ENGLISH_US;