summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorTomáš Ehrlich <tomas.ehrlich@gmail.com>2015-05-31 15:20:19 +0100
committerTim Graham <timograham@gmail.com>2015-06-02 16:04:01 -0400
commit002b3d87b5f1e35edcb6e14ce2e2827fc6c032a1 (patch)
tree58d975b726bff0d3564bf5338e9fc1cbf30633d6 /django
parent9ca0961b8a4a6a5ff3ee903f71fd22e1936d004f (diff)
Fixed #24230 -- Added translated language name for i18n template tag/filter.
Diffstat (limited to 'django')
-rw-r--r--django/templatetags/i18n.py8
-rw-r--r--django/utils/translation/__init__.py11
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*')