Commit 002b3d87 authored by Tomáš Ehrlich's avatar Tomáš Ehrlich Committed by Tim Graham
Browse files

Fixed #24230 -- Added translated language name for i18n template tag/filter.

parent 9ca0961b
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -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 %}
@@ -253,6 +255,12 @@ def language_name(lang_code):
    return translation.get_language_info(lang_code)['name']


@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']
+8 −3
Original line number Diff line number Diff line
@@ -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*')


+4 −0
Original line number Diff line number Diff line
@@ -187,6 +187,10 @@ Internationalization
  for languages which can be written in different scripts, for example Latin
  and Cyrillic (e.g. ``be@latin``).

* Added the ``name_translated`` attribute to the object returned by the
  :ttag:`get_language_info` template tag. Also added a corresponding template
  filter: :tfilter:`language_name_translated`.

Management Commands
^^^^^^^^^^^^^^^^^^^

+1 −0
Original line number Diff line number Diff line
@@ -515,6 +515,7 @@ naturalday
naturaltime
nd
needsinfo
německy
nestable
neuroscientist
newforms
+11 −0
Original line number Diff line number Diff line
@@ -870,6 +870,11 @@ You can then access the information::
    Name of language: {{ lang.name_local }}<br />
    Name in English: {{ lang.name }}<br />
    Bi-directional: {{ lang.bidi }}
    Name in the active language: {{ lang.name_translated }}

.. versionadded:: 1.9

   The ``name_translated`` attribute was added.

.. templatetag:: get_language_info_list

@@ -899,6 +904,7 @@ you can iterate over those languages in the template::
.. templatefilter:: language_name
.. templatefilter:: language_name_local
.. templatefilter:: language_bidi
.. templatefilter:: language_name_translated

Template filters
~~~~~~~~~~~~~~~~
@@ -908,6 +914,11 @@ There are also simple filters available for convenience:
* ``{{ LANGUAGE_CODE|language_name }}`` ("German")
* ``{{ LANGUAGE_CODE|language_name_local }}`` ("Deutsch")
* ``{{ LANGUAGE_CODE|language_bidi }}`` (False)
* ``{{ LANGUAGE_CODE|language_name_translated }}`` ("německy", when active language is Czech)

.. versionadded:: 1.9

   The ``language_name_translated`` filter was added.

.. _Django templates: ../templates_python/

Loading