summaryrefslogtreecommitdiff
path: root/i18nlangtag/source/languagetag/languagetag.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'i18nlangtag/source/languagetag/languagetag.cxx')
-rw-r--r--i18nlangtag/source/languagetag/languagetag.cxx22
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;
}