【发布时间】:2018-01-12 08:27:06
【问题描述】:
我正在开发具有 2 个德语版本(默认和奥地利语)的网站。
我的问题是模板没有区别它们,所以在选择 django 中将它们都显示为 Deutsch(de)。
settings.py 中的语言:
('en', _('English')),
('de', _('German')),
('de-at', _('Austrian'))
模板代码:
<form action="{% url 'set_language' %}" method="post">
{% csrf_token %}
<input name="next" type="hidden" value="{{ redirect_to }}" />
<select style="border:1px dotted black" name="language">
{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as LANGUAGES %}
{% get_language_info_list for LANGUAGES as languages %}
{% for language in languages %}
<option value="{{ language.code }}"{% if language.code == LANGUAGE_CODE %} selected="selected"{% endif %}>
{{ language.name_local }} ({{ language.code }})
</option>
{% endfor %}
</select>
<input class="btn-primary" type="submit" value="{% trans 'Change' %}" />
</form>
代码来自文档。
奥地利语翻译不起作用,因为 django 在 select 中将奥地利语定义为默认德语选择它并且不翻译。
那么,有没有什么方法可以在模板中显示子语言,比如 (Deutsch(de-at)) 或者只是(Austrian 而不是 Deutsch),或者还有其他方法可以解决吗?
尝试更改设置中的所有语言:
('en-us', _('English')),
('de-de', _('German')),
('de-at', _('Austrian'))
然后为他们创建 .po 和 .mo 文件。但是模板仍然将它们定义为相同的语言。我也想过在模板中更改语言名称,但据我了解我做不到。
【问题讨论】:
-
您确实在 de-at po 中提供了翻译,对吗?是
USE_I18N=True?如果您将LANGUAGE_CODE='de-de'更改为LANGUAGE_CODE='de-at',会发生什么情况。你看到你的翻译了吗? -
对不起,我之前没有回答:)。在 settings.py 中一切正常:i18n - true、localemiddleware 和上下文处理器。我不能从 de-de 更改为 de-at,因为 django 将这两种语言定义为相等,所以当我从英语更改为德语时,它总是定义 de-at,如果我尝试更改为 de-de,它会再次更改de-at,但翻译为 de-de。
标签: django