summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Antonio Osorio <juan.osorio.robles@ericsson.com>2014-06-06 17:28:52 +0300
committerJuan Antonio Osorio <juan.osorio.robles@ericsson.com>2014-06-11 09:17:51 +0300
commita92f897ebc92efaad79eb1fddadaeb366aae2160 (patch)
tree3d38e23392228d1397b63cd969bf651e6d02c97d
parent3779302aa1a0ebb0e6ad68852281fd9f2fba975c (diff)
downloadoslo-i18n-a92f897ebc92efaad79eb1fddadaeb366aae2160.tar.gz
Trivial refactors for gettextutils
* Favor one-line conditional assignments instead of more verbose assignments inside if...else clauses * Favor the usage of generators instead of explicit for loops for perfomance Change-Id: Idfbbec7cd2efa1ebbf5111abb24cb147edb176ee
-rw-r--r--oslo/i18n/_factory.py13
-rw-r--r--oslo/i18n/_message.py18
-rw-r--r--oslo/i18n/_translate.py6
-rw-r--r--oslo/i18n/gettextutils.py19
4 files changed, 23 insertions, 33 deletions
diff --git a/oslo/i18n/_factory.py b/oslo/i18n/_factory.py
index acd0367..df00aaa 100644
--- a/oslo/i18n/_factory.py
+++ b/oslo/i18n/_factory.py
@@ -41,9 +41,8 @@ class TranslatorFactory(object):
"""
self.domain = domain
if localedir is None:
- localedir = os.environ.get(_locale.get_locale_dir_variable_name(
- domain
- ))
+ variable_name = _locale.get_locale_dir_variable_name(domain)
+ localedir = os.environ.get(variable_name)
self.localedir = localedir
def _make_translation_func(self, domain=None):
@@ -64,11 +63,9 @@ class TranslatorFactory(object):
"""
if domain is None:
domain = self.domain
- t = gettext.translation(
- domain,
- localedir=self.localedir,
- fallback=True,
- )
+ t = gettext.translation(domain,
+ localedir=self.localedir,
+ fallback=True)
# Use the appropriate method of the translation object based
# on the python version.
m = t.gettext if six.PY3 else t.ugettext
diff --git a/oslo/i18n/_message.py b/oslo/i18n/_message.py
index 73cb7bf..93374a4 100644
--- a/oslo/i18n/_message.py
+++ b/oslo/i18n/_message.py
@@ -89,20 +89,14 @@ class Message(six.text_type):
if not desired_locale:
system_locale = locale.getdefaultlocale()
# If the system locale is not available to the runtime use English
- if not system_locale[0]:
- desired_locale = 'en_US'
- else:
- desired_locale = system_locale[0]
+ desired_locale = system_locale[0] or 'en_US'
locale_dir = os.environ.get(domain.upper() + '_LOCALEDIR')
lang = gettext.translation(domain,
localedir=locale_dir,
languages=[desired_locale],
fallback=True)
- if six.PY3:
- translator = lang.gettext
- else:
- translator = lang.ugettext
+ translator = lang.gettext if six.PY3 else lang.ugettext
translated_message = translator(msgid)
return translated_message
@@ -135,10 +129,10 @@ class Message(six.text_type):
# Copy each item in case one does not support deep copy.
params = {}
if isinstance(self.params, dict):
- for key, val in self.params.items():
- params[key] = self._copy_param(val)
- for key, val in other.items():
- params[key] = self._copy_param(val)
+ params.update((key, self._copy_param(val))
+ for key, val in self.params.items())
+ params.update((key, self._copy_param(val))
+ for key, val in other.items())
else:
params = self._copy_param(other)
return params
diff --git a/oslo/i18n/_translate.py b/oslo/i18n/_translate.py
index bd81b85..037651a 100644
--- a/oslo/i18n/_translate.py
+++ b/oslo/i18n/_translate.py
@@ -63,9 +63,7 @@ def translate_args(args, desired_locale=None):
if isinstance(args, tuple):
return tuple(translate(v, desired_locale) for v in args)
if isinstance(args, dict):
- translated_dict = {}
- for (k, v) in six.iteritems(args):
- translated_v = translate(v, desired_locale)
- translated_dict[k] = translated_v
+ translated_dict = dict((key, translate(value, desired_locale))
+ for key, value in six.iteritems(args))
return translated_dict
return translate(args, desired_locale)
diff --git a/oslo/i18n/gettextutils.py b/oslo/i18n/gettextutils.py
index a7285f5..38f78eb 100644
--- a/oslo/i18n/gettextutils.py
+++ b/oslo/i18n/gettextutils.py
@@ -61,13 +61,14 @@ def get_available_languages(domain):
:param domain: the domain to get languages for
"""
+ def find(language, domain, localedir):
+ return gettext.find(domain, localedir=os.environ.get(localedir),
+ languages=[language])
+
if domain in _AVAILABLE_LANGUAGES:
return copy.copy(_AVAILABLE_LANGUAGES[domain])
localedir = '%s_LOCALEDIR' % domain.upper()
- find = lambda x: gettext.find(domain,
- localedir=os.environ.get(localedir),
- languages=[x])
# NOTE(mrodden): en_US should always be available (and first in case
# order matters) since our in-line message strings are en_US
@@ -80,9 +81,8 @@ def get_available_languages(domain):
getattr(localedata, 'locale_identifiers'))
locale_identifiers = list_identifiers()
- for i in locale_identifiers:
- if find(i) is not None:
- language_list.append(i)
+ language_list.extend(language for language in locale_identifiers
+ if find(language, domain, localedir))
# NOTE(luisg): Babel>=1.0,<1.3 has a bug where some OpenStack supported
# locales (e.g. 'zh_CN', and 'zh_TW') aren't supported even though they
@@ -96,9 +96,10 @@ def get_available_languages(domain):
'zh_Hant_HK': 'zh_HK',
'zh_Hant': 'zh_TW',
'fil': 'tl_PH'}
- for (locale, alias) in six.iteritems(aliases):
- if locale in language_list and alias not in language_list:
- language_list.append(alias)
+
+ language_list.extend(alias for locale, alias in six.iteritems(aliases)
+ if (locale in language_list and
+ alias not in language_list))
_AVAILABLE_LANGUAGES[domain] = language_list
return copy.copy(language_list)