Как я могу изменить язык администратора Django?

У меня есть сайт django 1.6 с работающим i18n. Я могу изменить язык внешнего интерфейса с помощью поля выбора в верхней части шаблона, но я не знаю, есть ли приложение django или трюк для изменения языка администратора, потому что он, кажется, хранится где-то в переменной сеанса и сохраняет первый язык, который я использовал в интерфейсе.

4 ответа

Решение

Вы можете создать /en/admin, /fr/admin/ и так далее, используя i18n_patterns:

urlpatterns += i18n_patterns(
    url(r'^admin/', include(admin.site.urls)),
)

(Для Django <= 1.7 необходимо указать префикс, используйте i18n_patterns('', ... ))

В вашем settings.py просто добавьте 'django.middleware.locale.LocaleMiddleware' на ваш MIDDLEWARE_CLASSES настройки, убедившись, что он появляется после 'django.contrib.sessions.middleware.SessionMiddleware',

Вот немного измененная версия фрагмента кода из документации Django дляadmin/base.html который добавляет раскрывающийся список выбора языка:

{% 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')),

Измените язык браузера по умолчанию.

Вместо того, чтобы портить код. Например,
Chrome -> Настройки -> Язык -> Предпочитаемые языки: переместите вверх нужный вам язык.

Обновите браузер, и в админ-панели изменится язык отображения.

Другие вопросы по тегам