qdo*_*dot 5 django localization internationalization django-cms
来自多语言Django-CMS框架的典型language_chooser,显示如下语言:
<a href="{% page_language_url language.0 %}">{% trans language.1 %}</a>
English German Dutch
Run Code Online (Sandbox Code Playgroud)
如何更改此片段,将每种语言翻译成自己的原生形式,以便输出
English Deutsch Nederlands
Run Code Online (Sandbox Code Playgroud)
让人们更容易在页面上找到?
mko*_*nen 10
虽然@ mongoose_za的答案是彻底和有用的,但它回答了一个不同的问题而不是提出的问题.
真正的答案只是更改您的设置中的语言列表,以包括这些本机表单:
LANGUAGES = (
('de', u'Deutsch'),
('en', u'English'),
('nl', u'Nederlands'),
('es', u'Español'),
('fr', u'français'),
('jp', u'???'),
)
Run Code Online (Sandbox Code Playgroud)
我添加了一对,以使我们正在做的更明显.
由于您希望始终以原生方式显示语言,因此无需翻译它们,因此,不需要ugettext()包装器.您想确保设置文件中的第一行是:
# -*- coding: utf-8 -*-
Run Code Online (Sandbox Code Playgroud)
确保Python正确解释所有内容.
这个练习的一个很好的来源是:http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
我认为这只是需要翻译的语言列表.然后您的上述代码段应该没问题.在列出语言的设置中,它应如下所示:
ugettext = lambda s: s
LANGUAGES = (
('de', ugettext('German')),
('en', ugettext('English')),
('nl', ugettext('Dutch')),
)
Run Code Online (Sandbox Code Playgroud)
因为那时你会在你的locales文件中设置翻译的字符串,这些文件应该用你拥有的代码在模板上翻译.
我的更改语言如下所示:
{% load i18n %}
{% trans 'Change language' %}
<form action="/i18n/setlang/" method="post" style="display: inline;">{% csrf_token %}
<div style="display: inline;">
<select name="language" onchange="javascript:form.submit()">
{% for lang in LANGUAGES %}
<option value="{{ lang.0 }}"{% ifequal LANGUAGE_CODE lang.0 %} selected="selected"{% endifequal %}>{{ lang.1 }}</option>
{% endfor %}
</select>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2891 次 |
| 最近记录: |