diff options
Diffstat (limited to 'sugar_network/toolkit/__init__.py')
-rw-r--r-- | sugar_network/toolkit/__init__.py | 43 |
1 files changed, 22 insertions, 21 deletions
diff --git a/sugar_network/toolkit/__init__.py b/sugar_network/toolkit/__init__.py index fee7897..d56ec59 100644 --- a/sugar_network/toolkit/__init__.py +++ b/sugar_network/toolkit/__init__.py @@ -117,41 +117,42 @@ def default_lang(): """Default language to fallback for localized strings. :returns: - string in format of HTTP's Accept-Language, e.g., `en-gb`. + string in format of HTTP's Accept-Language """ - global _default_lang - - if _default_lang is None: - import locale - lang = locale.getdefaultlocale()[0] - if not lang or lang == 'C': - _default_lang = 'en' - else: - lang, region = lang.lower().split('_') - if lang == region: - _default_lang = lang - else: - _default_lang = '-'.join([lang, region]) - - return _default_lang + return default_langs()[0] def default_langs(): """Default languages list, i.e., including all secondory languages. :returns: - list of strings in format of HTTP's Accept-Language, e.g., `ru,en-gb`. + list of strings in format of HTTP's Accept-Language """ global _default_langs if _default_langs is None: - langs = os.environ.get('LANGUAGE') - if langs: - _default_langs = langs.split(':') + locales = os.environ.get('LANGUAGE') + if locales: + locales = [i for i in locales.split(':') if i.strip()] + else: + from locale import getdefaultlocale + locales = [getdefaultlocale()[0]] + if not locales: + _default_langs = ['en'] else: - _default_langs = [default_lang()] + _default_langs = [] + for locale in locales: + lang = locale.strip().split('.')[0].lower() + if lang == 'c': + lang = 'en' + elif '_' in lang: + lang, region = lang.split('_') + if lang != region: + lang = '-'.join([lang, region]) + _default_langs.append(lang) + _logger.info('Default languages are %r', _default_langs) return _default_langs |