我有一个django网站,我正在添加翻译,该网站使用语言选择器列出用户语言中的可用语言。我希望下拉列表中也包含母语拼写。
目前情况如下:
英语
荷兰语
简体中文
当我切换到中文时,它看起来像:
英语
荷兰语
简体中文
我正在努力让它看起来像:
英语/英语
荷兰/荷兰
简体中文/简体中文
settings.py包括:
ugettext = lambda s: s
LANGUAGES = (
('en', ugettext('English')),
('nl', ugettext('Dutch')),
('zh-cn', ugettext('Simplified Chinese')),
)
base.html:
{% 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>
我的想法是在LANGUAGES中添加另一项,即母语,如:
LANGUAGES = (
('en', ugettext('English'), 'English'),
('nl', ugettext('Dutch'), 'Nederlands'),
('zh-ch', ugettext('Simplified Chinese'), '简体中文'),)
但是Django似乎期望LANGUAGES有一个2项元组。还有其他想法吗?
根据Alexander的评论编辑:我认为这可能是一个更简单的解决方案,但在更改代码后:
<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">DutchNederlands</option>
<option value="ru">RussianРусский</option>
<option value="zh-cn">Simplified Chinese-简体中文</option>
</select>
<input type="submit" value="Go" />
</form>
俄罗斯和中国的剧本以问号的形式出现——俄语???????,中国人????
我在html中有<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
,其他俄语和中文文本(此表单之外)看起来不错。
试试这个:
LANGUAGES = (
('en', '{}/{}'.format(ugettext('English'), 'English')),
('nl', '{}/{}'.format(ugettext('Dutch'), 'Nederlands')),
('zh-cn', '{}/{}'.format(ugettext('Simplified Chinese'), '简体中文')),
)
然后你可以在你的模板中使用这个:
{% for lang in LANGUAGES %}
<option value="{{ lang.0 }}">{{ lang.1 }}</option>
{% endfor %}
根据Alexander的建议,我能够使上面编辑中的代码正常工作。我在"头部"区域内没有<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
行,这是必需的,这给了我????汉字应该在哪里。
在看到它的实际操作后,我可能有两个语言选择器,一个可以翻译成当前语言,如果不太忙的话,另一个可以用英语/原住民字符。
我还将把语言列表放在一个模块中,并将其传递给模板,类似于获取LANGUAGES。