Django 2版本的德语

时间:2018-01-12 08:27:06

标签: django

我正在开发2个德语版本的网站(默认和奥地利)。

我的问题是模板没有区别,所以在select 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>

代码来自文档。

奥地利语的翻译不起作用,因为select中的django将奥地利定义为默认的Deutsch选择它并且不翻译。

那么,有没有办法在模板中显示子语言,如(Deutsch(de-at))或者只是(奥地利语而不是Deutsch),还是有其他方法可以解决它?

尝试更改设置中的所有语言:

('en-us', _('English')),
('de-de', _('German')),
('de-at', _('Austrian'))

然后为他们创建了.po和.mo文件。但仍然模板将它们定义为相同的语言。我还考虑过在模板中更改语言名称,但据我所知,我不能这样做。

1 个答案:

答案 0 :(得分:0)

我已经解决了我的问题,但仍然不明白其中的原因是什么...... 我从文档中复制的Django前端表单并不能正常工作。

表单,我在前面使用的工作仅适用于基础语言和子语言(全部)崩溃。现在我重写了这个表格:

<form action="/i18n/setlang/" method="post">
    {% csrf_token %}
        <select style="border:1px solid black" name="language">
            {% for lang in LANGUAGES %}
                <option value="{{ lang.0 }}"
                    {% ifequal lang.0 request.LANGUAGE_CODE %}
                        selected="yes"
                    {% endifequal %}
                >{{ lang.1 }}</option>
            {% endfor %}
        </select>
        <input type="submit" value="{% trans 'Change' %}" />
    </form>

现在它工作正常......