首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用本地语言和本地语言选择Django语言

用本地语言和本地语言选择Django语言
EN

Stack Overflow用户
提问于 2012-07-18 18:48:43
回答 2查看 5.7K关注 0票数 5

我有一个django网站,我正在添加翻译与语言选择器,列出可用的语言在用户的语言。我想让下拉列表也包括本地拼写。

目前的情况如下:

英语

荷兰语

简体中文

当我转到中文的时候,它看起来像是:

英语

荷兰语

简体中文

我想让它看起来像:

英文/英文

荷兰/荷兰

简体中文/简体中文

settings.py包括:

代码语言:javascript
复制
ugettext = lambda s: s  
LANGUAGES = (
    ('en', ugettext('English')),
    ('nl', ugettext('Dutch')),
    ('zh-cn', ugettext('Simplified Chinese')),
)

base.html:

代码语言:javascript
复制
    {% load i18n %}
    {% get_available_languages as LANGUAGES %}
    <form action="/i18n/setlang/" method="post">{% csrf_token %}
      <input name="next" type="hidden" value="/" />
        {% csrf_token %}
        <select name="language">
          {% for lang in LANGUAGES %}
            <option value="{{ lang.0 }}">{{ lang.1 }}</option>
          {% endfor %}
        </select>
      <input type="submit" value="Go" />
    </form>

我的想法是在母语的语言中添加另一项内容,例如:

代码语言:javascript
复制
LANGUAGES = (
    ('en', ugettext('English'), 'English'),
    ('nl', ugettext('Dutch'), 'Nederlands'),
    ('zh-ch', ugettext('Simplified Chinese'), '简体中文'),)

但是Django似乎期望语言有一个2项元组。还有其他想法吗?

编辑根据亚历山大的评论:我认为这可能是一个更简单的解决方案,但是在修改代码之后:

代码语言:javascript
复制
        <form action="/i18n/setlang/" method="post">{% csrf_token %}
        <input name="next" type="hidden" value="/" />
        <select name="language">
            <option value="en">English</option>
            <option value="nl">Dutch\Nederlands</option>
            <option value="ru">Russian\Русский</option>
            <option value="zh-cn">Simplified Chinese-简体中文</option>
        </select>
        <input type="submit" value="Go" />
    </form>  

俄文和中文剧本都以问号的形式出现??俄文?中文?

我有<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />中的html,其他俄文和中文文本(除本表格外)似乎很好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-19 02:20:25

试试这个:

代码语言:javascript
复制
LANGUAGES = (
    ('en',    '{}/{}'.format(ugettext('English'), 'English')),
    ('nl',    '{}/{}'.format(ugettext('Dutch'), 'Nederlands')),
    ('zh-cn', '{}/{}'.format(ugettext('Simplified Chinese'), '简体中文')),
)

然后,您可以在模板中使用以下内容:

代码语言:javascript
复制
{% for lang in LANGUAGES %}
    <option value="{{ lang.0 }}">{{ lang.1 }}</option>
{% endfor %}
票数 6
EN

Stack Overflow用户

发布于 2012-07-19 21:07:58

根据Alexander的建议,我能够使上述编辑中的代码正常工作。我在“头”区域内没有<meta http-equiv="content-type" content="text/html;charset=UTF-8" />线,这是必需的,这给了我?汉字应该在哪里。

在看到它的实际行动后,我可能有两个语言选择器,一个被翻译成当前语言,另一个带有英语/土著字符,如果不太忙的话。

我还将把语言列表放在一个模块中,并将其传递给模板,类似于获取语言。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11548292

复制
相关文章

相似问题

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