diff options
| author | Tomáš Ehrlich <tomas.ehrlich@gmail.com> | 2015-05-31 15:20:19 +0100 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2015-06-02 16:04:01 -0400 |
| commit | 002b3d87b5f1e35edcb6e14ce2e2827fc6c032a1 (patch) | |
| tree | 58d975b726bff0d3564bf5338e9fc1cbf30633d6 /django | |
| parent | 9ca0961b8a4a6a5ff3ee903f71fd22e1936d004f (diff) | |
Fixed #24230 -- Added translated language name for i18n template tag/filter.
Diffstat (limited to 'django')
| -rw-r--r-- | django/templatetags/i18n.py | 8 | ||||
| -rw-r--r-- | django/utils/translation/__init__.py | 11 |
2 files changed, 16 insertions, 3 deletions
diff --git a/django/templatetags/i18n.py b/django/templatetags/i18n.py index c72e85d979..ace6504ffe 100644 --- a/django/templatetags/i18n.py +++ b/django/templatetags/i18n.py @@ -215,6 +215,7 @@ def do_get_language_info(parser, token): {% get_language_info for LANGUAGE_CODE as l %} {{ l.code }} {{ l.name }} + {{ l.name_translated }} {{ l.name_local }} {{ l.bidi|yesno:"bi-directional,uni-directional" }} """ @@ -238,6 +239,7 @@ def do_get_language_info_list(parser, token): {% for l in langs %} {{ l.code }} {{ l.name }} + {{ l.name_translated }} {{ l.name_local }} {{ l.bidi|yesno:"bi-directional,uni-directional" }} {% endfor %} @@ -254,6 +256,12 @@ def language_name(lang_code): @register.filter +def language_name_translated(lang_code): + english_name = translation.get_language_info(lang_code)['name'] + return translation.ugettext(english_name) + + +@register.filter def language_name_local(lang_code): return translation.get_language_info(lang_code)['name_local'] diff --git a/django/utils/translation/__init__.py b/django/utils/translation/__init__.py index 505d753268..506fcce7dd 100644 --- a/django/utils/translation/__init__.py +++ b/django/utils/translation/__init__.py @@ -215,17 +215,22 @@ def get_language_info(lang_code): try: lang_info = LANG_INFO[lang_code] if 'fallback' in lang_info and 'name' not in lang_info: - return get_language_info(lang_info['fallback'][0]) - return lang_info + info = get_language_info(lang_info['fallback'][0]) + else: + info = lang_info except KeyError: if '-' not in lang_code: raise KeyError("Unknown language code %s." % lang_code) generic_lang_code = lang_code.split('-')[0] try: - return LANG_INFO[generic_lang_code] + info = LANG_INFO[generic_lang_code] except KeyError: raise KeyError("Unknown language code %s and %s." % (lang_code, generic_lang_code)) + if info: + info['name_translated'] = ugettext_lazy(info['name']) + return info + trim_whitespace_re = re.compile('\s*\n\s*') |
