How can I change Django admin language? How can I change Django admin language? python python

How can I change Django admin language?


In your settings.py just add 'django.middleware.locale.LocaleMiddleware' to your MIDDLEWARE_CLASSES setting, making sure it appears after 'django.contrib.sessions.middleware.SessionMiddleware'.


You can create /en/admin, /fr/admin/ and so on using i18n_patterns:

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

(For Django <= 1.7, you must specify a prefix, use i18n_patterns('', ... ))


Here is a slightly modified version of a code snippet from the Django docs for admin/base.html that adds a language selection dropdown:

{% 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 %}

For this to work you also need to add the following to your urlpatterns:

path('i18n/', include('django.conf.urls.i18n')),