首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django翻译:如何翻译语言

django翻译:如何翻译语言
EN

Stack Overflow用户
提问于 2011-05-20 15:41:25
回答 1查看 3.3K关注 0票数 4

官方的django文档建议在settings.py中编写以下内容

代码语言:javascript
复制
ugettext = lambda s: s

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

在这种安排下,django-admin.py makemessages仍然会查找并标记这些字符串进行翻译,但翻译不会在运行时发生--因此您必须记住在运行时使用语言的任何代码中将语言包装在真正的ugettext()中。

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

例如,我在模板中的代码是

代码语言:javascript
复制
<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()

显示任何语言上没有任何文本的空选择框

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-20 16:31:46

以下代码适用于我:

代码语言:javascript
复制
// settings.py
ugettext = lambda s:s
LANGUAGES = (
    ('de', ugettext('German')),
    ('en', ugettext('English')),
)

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

{% for LANGUAGE in LANGUAGES %}
    <p>{{ LANGUAGE.0 }} - {{ LANGUAGE.1 }}</p>
{% endfor %}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6068898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档