我有一个 i18n 工作的 django 1.6 站点。我可以使用模板顶部的选择框更改前端语言,但我不知道是否有 django 应用程序或技巧来更改管理语言,因为它似乎存储在会话变量中的某个位置,并且它保持我在前端使用的第一种语言。
问问题
18062 次
3 回答
27
在您的 settings.py 中,只需添加'django.middleware.locale.LocaleMiddleware'
到您的MIDDLEWARE_CLASSES
设置中,确保它出现在'django.contrib.sessions.middleware.SessionMiddleware'
.
于 2015-09-30T17:34:58.170 回答
16
您可以创建/en/admin
,/fr/admin/
等等使用i18n_patterns
:
urlpatterns += i18n_patterns(
url(r'^admin/', include(admin.site.urls)),
)
(对于 Django <= 1.7,您必须指定前缀,使用i18n_patterns('', ... )
)
于 2014-01-30T23:53:41.390 回答
12
这是 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 %}
为此,您还需要将以下内容添加到您的urlpatterns
:
path('i18n/', include('django.conf.urls.i18n')),
于 2019-10-30T21:58:34.693 回答