如何更改Django管理语言?

mai*_*pac 10 python django django-i18n

我有一个运行i18n的django 1.6网站.我可以使用模板顶部的选择框更改前端语言,但我不知道是否有django应用程序或技巧来更改管理语言,因为它似乎存储在会话变量的某个地方,并且它保持我在前端使用的第一种语言.

小智 15

在您的settings.py中添加'django.middleware.locale.LocaleMiddleware'到您的MIDDLEWARE_CLASSES设置,确保它在之后显示'django.contrib.sessions.middleware.SessionMiddleware'.


Udi*_*Udi 12

您可以使用以下方式创建/en/admin,/fr/admin/等等i18n_patterns:

urlpatterns += i18n_patterns(
    url(r'^admin/', include(admin.site.urls)),
)
Run Code Online (Sandbox Code Playgroud)

(对于Django <= 1.7,你必须指定一个前缀,使用i18n_patterns('', ... ))


Eer*_*ist 11

这是 Django文档中代码片段的略微修改版本,用于admin/base.html添加语言选择下拉列表:

{% extends "admin/base.html" %}
{% load i18n %}
{% block userlinks %}
{{ block.super }}
/ <form action="{% url 'set_language' %}" method="post" style="display:inline">{% csrf_token %}
    <input name="next" type="hidden" value="{{ redirect_to }}">
    <select name="language" onchange="this.form.submit()">
        {% 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{% endif %}>
                {{ language.name_local }} ({{ language.code }})
            </option>
        {% endfor %}
    </select>
</form>
{% endblock %}

Run Code Online (Sandbox Code Playgroud)

为此,您还需要将以下内容添加到您的urlpatterns:

path('i18n/', include('django.conf.urls.i18n')),
Run Code Online (Sandbox Code Playgroud)