diff options
Diffstat (limited to 'i18nlangtag/source/languagetag/languagetag.cxx')
-rw-r--r-- | i18nlangtag/source/languagetag/languagetag.cxx | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/i18nlangtag/source/languagetag/languagetag.cxx b/i18nlangtag/source/languagetag/languagetag.cxx index 3e1b33191086..7e3a7d7d12e7 100644 --- a/i18nlangtag/source/languagetag/languagetag.cxx +++ b/i18nlangtag/source/languagetag/languagetag.cxx @@ -1239,17 +1239,31 @@ LanguageTag & LanguageTag::makeFallback() aVec.push_back( aLanguage + "-CN"); aVec.push_back( aLanguage); } + else if (aLanguage == "sh") + { + ::std::vector< OUString > aRep( LanguageTag( "sr-Latn-" + aCountry).getFallbackStrings( true)); + aVec.insert( aVec.end(), aRep.begin(), aRep.end()); + aVec.push_back( aLanguage); // 'sh' after all 'sr...'? + } else if (aLanguage == "ca" && aCountry == "XV") { - ::std::vector< OUString > aCav( LanguageTag( "ca-ES-valencia").getFallbackStrings( true)); - aVec.insert( aVec.end(), aCav.begin(), aCav.end()); + ::std::vector< OUString > aRep( LanguageTag( "ca-ES-valencia").getFallbackStrings( true)); + aVec.insert( aVec.end(), aRep.begin(), aRep.end()); // Already includes 'ca' language fallback. } else aVec.push_back( aLanguage); } - else if (bIncludeFullBcp47) - aVec.push_back( aLanguage); + else + { + if (bIncludeFullBcp47) + aVec.push_back( aLanguage); + if (aLanguage == "sh") + { + ::std::vector< OUString > aRep( LanguageTag( "sr-Latn").getFallbackStrings( true)); + aVec.insert( aVec.end(), aRep.begin(), aRep.end()); + } + } return aVec; } |