diff options
author | Eike Rathke <erack@redhat.com> | 2013-08-28 17:25:33 +0200 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2013-08-28 17:58:14 +0200 |
commit | a95a980e1e338b238f70f010057b017e08b47d79 (patch) | |
tree | 821cdef85da346b61f8f610b08ca0a15b5ec3d71 /i18nlangtag | |
parent | 450e9e3e5efca351d593792580d6b81a2e5fde9c (diff) |
reorder fall back strings for language with variant
Change-Id: I0e67eec9efa32c1d3d3f8d3ad3845368822bb0ee
Diffstat (limited to 'i18nlangtag')
-rw-r--r-- | i18nlangtag/source/languagetag/languagetag.cxx | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/i18nlangtag/source/languagetag/languagetag.cxx b/i18nlangtag/source/languagetag/languagetag.cxx index baec2295bb3a..e4341d87d010 100644 --- a/i18nlangtag/source/languagetag/languagetag.cxx +++ b/i18nlangtag/source/languagetag/languagetag.cxx @@ -1184,6 +1184,7 @@ LanguageTag & LanguageTag::makeFallback() if (hasScript()) { OUString aScript( getScript()); + bool bHaveLanguageScriptVariant = false; if (!aCountry.isEmpty()) { if (!aVariants.isEmpty()) @@ -1191,12 +1192,18 @@ LanguageTag & LanguageTag::makeFallback() aTmp = aLanguage + "-" + aScript + "-" + aCountry + "-" + aVariants; if (aTmp != aVec[0]) aVec.push_back( aTmp); + // Language with variant but without country before language + // without variant but with country. + aTmp = aLanguage + "-" + aScript + "-" + aVariants; + if (aTmp != aVec[0]) + aVec.push_back( aTmp); + bHaveLanguageScriptVariant = true; } aTmp = aLanguage + "-" + aScript + "-" + aCountry; if (aTmp != aVec[0]) aVec.push_back( aTmp); } - if (!aVariants.isEmpty()) + if (!aVariants.isEmpty() && !bHaveLanguageScriptVariant) { aTmp = aLanguage + "-" + aScript + "-" + aVariants; if (aTmp != aVec[0]) @@ -1206,6 +1213,7 @@ LanguageTag & LanguageTag::makeFallback() if (aTmp != aVec[0]) aVec.push_back( aTmp); } + bool bHaveLanguageVariant = false; if (!aCountry.isEmpty()) { if (!aVariants.isEmpty()) @@ -1213,12 +1221,18 @@ LanguageTag & LanguageTag::makeFallback() aTmp = aLanguage + "-" + aCountry + "-" + aVariants; if (aTmp != aVec[0]) aVec.push_back( aTmp); + // Language with variant but without country before language + // without variant but with country. + aTmp = aLanguage + "-" + aVariants; + if (aTmp != aVec[0]) + aVec.push_back( aTmp); + bHaveLanguageVariant = true; } aTmp = aLanguage + "-" + aCountry; if (aTmp != aVec[0]) aVec.push_back( aTmp); } - if (!aVariants.isEmpty()) + if (!aVariants.isEmpty() && !bHaveLanguageVariant) { aTmp = aLanguage + "-" + aVariants; if (aTmp != aVec[0]) |