summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2020-05-27 14:45:02 +0000
committerGerrit Code Review <review@openstack.org>2020-05-27 14:45:03 +0000
commit433a2ceace2fa57522475e7a5321c255c7f256fe (patch)
tree312de3e01ea5a2dce5beab2338add8fcbfc5d56e
parent863e0979637f822d09e875fa1fd5a1693857da68 (diff)
parent09012839233f0e6b57cd590251797b71b3127f26 (diff)
downloadoslo-i18n-433a2ceace2fa57522475e7a5321c255c7f256fe.tar.gz
Merge "Add Babel aliases to get_available_languages"
-rw-r--r--oslo_i18n/_gettextutils.py16
-rw-r--r--oslo_i18n/tests/test_gettextutils.py11
2 files changed, 23 insertions, 4 deletions
diff --git a/oslo_i18n/_gettextutils.py b/oslo_i18n/_gettextutils.py
index bc6946f..9872a9c 100644
--- a/oslo_i18n/_gettextutils.py
+++ b/oslo_i18n/_gettextutils.py
@@ -50,6 +50,19 @@ def install(domain):
_AVAILABLE_LANGUAGES = {}
+# Copied from Babel so anyone using aliases that were previously provided by
+# the Babel implementation of get_available_languages continues to work. These
+# are not recommended for use in new code.
+_BABEL_ALIASES = {
+ 'ar': 'ar_SY', 'bg': 'bg_BG', 'bs': 'bs_BA', 'ca': 'ca_ES', 'cs': 'cs_CZ',
+ 'da': 'da_DK', 'de': 'de_DE', 'el': 'el_GR', 'en': 'en_US', 'es': 'es_ES',
+ 'et': 'et_EE', 'fa': 'fa_IR', 'fi': 'fi_FI', 'fr': 'fr_FR', 'gl': 'gl_ES',
+ 'he': 'he_IL', 'hu': 'hu_HU', 'id': 'id_ID', 'is': 'is_IS', 'it': 'it_IT',
+ 'ja': 'ja_JP', 'km': 'km_KH', 'ko': 'ko_KR', 'lt': 'lt_LT', 'lv': 'lv_LV',
+ 'mk': 'mk_MK', 'nl': 'nl_NL', 'nn': 'nn_NO', 'no': 'nb_NO', 'pl': 'pl_PL',
+ 'pt': 'pt_PT', 'ro': 'ro_RO', 'ru': 'ru_RU', 'sk': 'sk_SK', 'sl': 'sl_SI',
+ 'sv': 'sv_SE', 'th': 'th_TH', 'tr': 'tr_TR', 'uk': 'uk_UA'
+}
def get_available_languages(domain):
@@ -72,6 +85,9 @@ def get_available_languages(domain):
language_list.extend(
language for language in locale_identifiers if find(language)
)
+ language_list.extend(
+ alias for alias, _ in _BABEL_ALIASES.items() if find(alias)
+ )
_AVAILABLE_LANGUAGES[domain] = language_list
return copy.copy(language_list)
diff --git a/oslo_i18n/tests/test_gettextutils.py b/oslo_i18n/tests/test_gettextutils.py
index 49f95e1..4e0999b 100644
--- a/oslo_i18n/tests/test_gettextutils.py
+++ b/oslo_i18n/tests/test_gettextutils.py
@@ -78,7 +78,8 @@ class GettextTest(test_base.BaseTestCase):
def _mock_gettext_find(domain, localedir=None, languages=None, all=0):
languages = languages or []
if domain == 'domain_1':
- if any(x in ['en_GB', 'es_ES', 'fil_PH'] for x in languages):
+ if any(x in ['en_GB', 'es_ES', 'fil_PH', 'it']
+ for x in languages):
return 'translation-file'
elif domain == 'domain_2':
if any(x in ['fr_FR', 'zh_HK'] for x in languages):
@@ -101,12 +102,14 @@ class GettextTest(test_base.BaseTestCase):
self.assertEqual('en_US', domain_1_languages[0])
self.assertEqual('en_US', domain_2_languages[0])
- self.assertEqual(4, len(domain_1_languages), domain_1_languages)
+ self.assertEqual(5, len(domain_1_languages), domain_1_languages)
self.assertEqual(
- {'en_US', 'fil_PH', 'en_GB', 'es_ES'}, set(domain_1_languages),
+ {'en_US', 'fil_PH', 'en_GB', 'es_ES', 'it'},
+ set(domain_1_languages),
)
self.assertEqual(3, len(domain_2_languages), domain_2_languages)
- self.assertEqual({'en_US', 'fr_FR', 'zh_HK'}, set(domain_2_languages))
+ self.assertEqual({'en_US', 'fr_FR', 'zh_HK'},
+ set(domain_2_languages))
self.assertEqual(2, len(_gettextutils._AVAILABLE_LANGUAGES))
# Now test an unknown domain, only en_US should be included