diff options
author | Juan Antonio Osorio <juan.osorio.robles@ericsson.com> | 2014-06-06 17:28:52 +0300 |
---|---|---|
committer | Juan Antonio Osorio <juan.osorio.robles@ericsson.com> | 2014-06-11 09:17:51 +0300 |
commit | a92f897ebc92efaad79eb1fddadaeb366aae2160 (patch) | |
tree | 3d38e23392228d1397b63cd969bf651e6d02c97d | |
parent | 3779302aa1a0ebb0e6ad68852281fd9f2fba975c (diff) | |
download | oslo-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.py | 13 | ||||
-rw-r--r-- | oslo/i18n/_message.py | 18 | ||||
-rw-r--r-- | oslo/i18n/_translate.py | 6 | ||||
-rw-r--r-- | oslo/i18n/gettextutils.py | 19 |
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) |