diff options
author | Ivan Alejandro <ivanalejandro0@yahoo.com.ar> | 2013-06-27 15:33:57 -0300 |
---|---|---|
committer | Ivan Alejandro <ivanalejandro0@yahoo.com.ar> | 2013-06-27 16:08:33 -0300 |
commit | 3a4906638909729236b693fb21a4b1b7194344b5 (patch) | |
tree | 25f0fbc3742384f046e90969392e1dba05a66d26 | |
parent | fbd0a8d86232e0e6d717d8c3fc5ace88e167eb74 (diff) |
Bugfix: use the provider's default language as default string
Also take care (and note) a possible case with a problematic provider
misconfiguration.
-rw-r--r-- | changes/bug-3029_default-localization-language | 2 | ||||
-rw-r--r-- | src/leap/common/config/baseconfig.py | 23 |
2 files changed, 20 insertions, 5 deletions
diff --git a/changes/bug-3029_default-localization-language b/changes/bug-3029_default-localization-language new file mode 100644 index 0000000..1fbb464 --- /dev/null +++ b/changes/bug-3029_default-localization-language @@ -0,0 +1,2 @@ + o Bugfix: use the provider's default language as default string. Also take care (and note) a possible case with a problematic provider +misconfiguration. Closes #3029. diff --git a/src/leap/common/config/baseconfig.py b/src/leap/common/config/baseconfig.py index e6bd9c4..699d734 100644 --- a/src/leap/common/config/baseconfig.py +++ b/src/leap/common/config/baseconfig.py @@ -155,26 +155,39 @@ class LocalizedKey(object): def __init__(self, func, **kwargs): self._func = func - def __call__(self, instance, lang="en"): + def __call__(self, instance, lang=None): """ Tries to return the string for the specified language, otherwise - informs the problem and returns an empty string. + returns the default language string. :param lang: language code :type lang: str :return: localized value from the possible values returned by self._func + It returns None in case that the provider does not provides + a matching pair of default_language and string for + that language. + e.g.: + 'default_language': 'es', + 'description': {'en': 'test description'} + Note that the json schema can't check that. """ descriptions = self._func(instance) - description_lang = "" - config_lang = "en" + config_lang = instance.get_default_language() + if lang is None: + lang = config_lang + for key in descriptions.keys(): if lang.startswith(key): config_lang = key break - description_lang = descriptions[config_lang] + description_lang = descriptions.get(config_lang) + if description_lang is None: + logger.error("There is a misconfiguration in the " + "provider's language strings.") + return description_lang def __get__(self, instance, instancetype): |