【问题标题】:Django 2 versions of germanDjango 2 版本的德语
【发布时间】: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


【解决方案1】:

我的问题已经解决了,还是不明白是什么原因... 我从文档中复制的 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>

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多