summaryrefslogtreecommitdiff
path: root/i18nlangtag
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2013-09-10 20:15:44 +0200
committerEike Rathke <erack@redhat.com>2013-09-10 23:04:37 +0200
commite4c204bdbf5d67be2242301ae380789097cfc7f6 (patch)
tree8183df259665ab61f9f2a8c642eb46e7f63136b3 /i18nlangtag
parentc9489f68e8d805376cfbfb67b84ccbc250788773 (diff)
added ca-ES-valencia fallback to ca-XV fallback strings
Change-Id: Iedc5924cf5100a2e7d014be68dc4897d3c0e76a0
Diffstat (limited to 'i18nlangtag')
-rw-r--r--i18nlangtag/qa/cppunit/test_languagetag.cxx7
-rw-r--r--i18nlangtag/source/languagetag/languagetag.cxx10
2 files changed, 14 insertions, 3 deletions
diff --git a/i18nlangtag/qa/cppunit/test_languagetag.cxx b/i18nlangtag/qa/cppunit/test_languagetag.cxx
index f3cea3a4ccfd..aace20a3d8ff 100644
--- a/i18nlangtag/qa/cppunit/test_languagetag.cxx
+++ b/i18nlangtag/qa/cppunit/test_languagetag.cxx
@@ -210,9 +210,12 @@ void TestLanguageTag::testAllTags()
CPPUNIT_ASSERT( ca_XV.getScript() == "" );
CPPUNIT_ASSERT( ca_XV.getLanguageAndScript() == "ca" );
::std::vector< OUString > ca_XV_Fallbacks( ca_XV.getFallbackStrings( true));
- CPPUNIT_ASSERT( ca_XV_Fallbacks.size() == 2);
+ CPPUNIT_ASSERT( ca_XV_Fallbacks.size() == 5);
CPPUNIT_ASSERT( ca_XV_Fallbacks[0] == "ca-XV");
- CPPUNIT_ASSERT( ca_XV_Fallbacks[1] == "ca");
+ CPPUNIT_ASSERT( ca_XV_Fallbacks[1] == "ca-ES-valencia");
+ CPPUNIT_ASSERT( ca_XV_Fallbacks[2] == "ca-valencia");
+ CPPUNIT_ASSERT( ca_XV_Fallbacks[3] == "ca-ES");
+ CPPUNIT_ASSERT( ca_XV_Fallbacks[4] == "ca");
CPPUNIT_ASSERT( ca_XV.makeFallback().getBcp47() == "ca-ES-valencia");
}
diff --git a/i18nlangtag/source/languagetag/languagetag.cxx b/i18nlangtag/source/languagetag/languagetag.cxx
index b35683315640..3e1b33191086 100644
--- a/i18nlangtag/source/languagetag/languagetag.cxx
+++ b/i18nlangtag/source/languagetag/languagetag.cxx
@@ -1237,8 +1237,16 @@ LanguageTag & LanguageTag::makeFallback()
aVec.push_back( aLanguage + "-TW");
else if (aCountry != "CN")
aVec.push_back( aLanguage + "-CN");
+ aVec.push_back( aLanguage);
}
- aVec.push_back( aLanguage);
+ else if (aLanguage == "ca" && aCountry == "XV")
+ {
+ ::std::vector< OUString > aCav( LanguageTag( "ca-ES-valencia").getFallbackStrings( true));
+ aVec.insert( aVec.end(), aCav.begin(), aCav.end());
+ // Already includes 'ca' language fallback.
+ }
+ else
+ aVec.push_back( aLanguage);
}
else if (bIncludeFullBcp47)
aVec.push_back( aLanguage);