Почему встроенное представление set_language в Django не устанавливает пользовательский язык? - PullRequest
0 голосов
/ 14 декабря 2018

После добавления нового языка на мой сайт.Я пытаюсь изменить язык сайта, но он не работает.

from django.conf import locale
LANGUAGES = (
    ('en', _('English')),
    ('fr', _('French')),
    ('zz', _('Zulu Pic')),
)

EXTRA_LANG_INFO = {
     'ht': {
         'bidi': False, # right-to-left
         'code': 'zz',
         'name': 'Zulu Pic',
         'name_local': u'Zulu Pic', #unicode codepoints here
     },
}
locale.LANG_INFO = dict(locale.LANG_INFO,**EXTRA_LANG_INFO)

LANGUAGE_CODE = 'en'

Я установил URL-адрес в своем корневом проекте:

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

И в моем HTML:

<form action="{% url 'set_language' %}" method="post" class="">
        <input name="next" type="hidden" value="{{ request.path }}">
        {% csrf_token %}
        <select name="language" class="form-control form-control-sm">
        {% 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="selected"{% endif %}>
            {{ language.name_local|title }} ({{ language.code|upper }})
        </option>
        {% endfor %}
        </select>
    </form>

Отправьте форму с помощью js

$("select[name=language]").change(function(){
    $(this).closest("form").submit();
});

Каждый раз, когда я выбираю zz в качестве языка, он не выбирается.На сайте отображается значение по умолчанию: «EN».

«FR» работает правильно.

...