How can I change Django admin language?

后端 未结 3 1354
面向向阳花
面向向阳花 2021-02-13 00:31

I have a django 1.6 site with i18n working. I can change the frontend language with a select box in the top of the template, but I don\'t know if there is a django app or trick

相关标签:
3条回答
  • 2021-02-13 01:13

    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('', ... ))

    0 讨论(0)
  • 2021-02-13 01:14

    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'.

    0 讨论(0)
  • 2021-02-13 01:23

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

    {% 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')),
    
    0 讨论(0)
提交回复
热议问题