summaryrefslogtreecommitdiff
path: root/i18nlangtag
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2013-08-28 17:25:33 +0200
committerEike Rathke <erack@redhat.com>2013-08-28 17:58:14 +0200
commita95a980e1e338b238f70f010057b017e08b47d79 (patch)
tree821cdef85da346b61f8f610b08ca0a15b5ec3d71 /i18nlangtag
parent450e9e3e5efca351d593792580d6b81a2e5fde9c (diff)
reorder fall back strings for language with variant
Change-Id: I0e67eec9efa32c1d3d3f8d3ad3845368822bb0ee
Diffstat (limited to 'i18nlangtag')
-rw-r--r--i18nlangtag/source/languagetag/languagetag.cxx18
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])