加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

django-translation:如何翻译语言

发布时间:2020-12-20 13:23:25 所属栏目:Python 来源:网络整理
导读:官方 django doc建议在settings.py中写下以下内容 ugettext = lambda s: sLANGUAGES = ( ('de',ugettext('German')),('en',ugettext('English')),) 通过这种安排,django-admin.py makemessages仍会找到并标记这些字符串以进行翻译,但翻译不会在运行时发生 –
官方 django doc建议在settings.py中写下以下内容

ugettext = lambda s: s

LANGUAGES = (
    ('de',ugettext('German')),('en',ugettext('English')),)

通过这种安排,django-admin.py makemessages仍会找到并标记这些字符串以进行翻译,但翻译不会在运行时发生 – 所以你必须记住将语言包装在真实的ugettext()中在运行时使用LANGUAGES的代码.

但是,我无法理解在哪里用真正的翻译标签包装代码?

例如我在模板中的代码是

<form id="locale_switcher" method="POST" action="{% url localeurl_change_locale %}">
      <label><b>{% trans "Language" %}:</b></label>
      <select name="locale" onchange="$('#locale_switcher').submit()">
            {% for lang in LANGUAGES %}
            <option value="{{ lang.0 }}" {% ifequal lang.0 LANGUAGE_CODE %}selected="selected"{% endifequal %}>
          {{ lang.1 }}</option>
            {% endfor %}
  </select>
  <noscript>
        <input type="submit" value="Set" />
  </noscript>
</form>

这里提出的解决方案:Using settings.LANGUAGES with properly translated names using gettext()

显示空选择框,任何语言都没有文字

解决方法

以下代码适用于我:

// settings.py
ugettext = lambda s:s
LANGUAGES = (
    ('de',)

// template
{% load i18n %}
{% get_available_languages as LANGUAGES %}

{% for LANGUAGE in LANGUAGES %}
    <p>{{ LANGUAGE.0 }} - {{ LANGUAGE.1 }}</p>
{% endfor %}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读