Как было предложено, я хочу показать префикс языка в URL-адресе и позволить посетителю моего сайта изменить язык с помощью формы в шаблоне. Я использовал разделы на Префикс URL и set_language перенаправить просмотр со страницы "Перевод" Django docs в качестве руководства на данный момент. Мой код в значительной степени скопирован из этого источника.
Проблема
Без использования «i18n_pattern» (имея оба вызова «url» в «шаблоне») в моем URLconf, мне удается выбрать язык на странице index.html, и Django перенаправляет меня на ту же страницу с новым языком, который я выбрал. Однако префикс URL-адреса языка, конечно же, не отображается.
Когда я использую «i18n_pattern», префикс языка появляется в URL-адресе, но, похоже, нарушает возможность изменения языка из формы index.html. Например, если я установил английский язык и изменил форму с «English (en)» на «Türkçe (tr)», страница по существу обновится без перехода на турецкий (английский все равно отображается). Однако я могу изменить язык, изменив префикс языка URL-адреса с «/en/» на «/tr/».
страницы/шаблоны/страницы/index.html:
{% load i18n %}
<html>
<head>
...
</head>
<body>
<form action="{% url 'set_language' %}" method="post">
{% csrf_token %}
<input name="next" type="hidden" value="{{ redirect_to }}" />
<select name="language">
{% 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 }} ({{ language.code }})
</option>
{% endfor %}
</select>
<input type="submit" value="Go" />
</form>
...
</body>
</html>
[имя_проекта]/urls.py:
from django.conf.urls import patterns, include, url
from django.conf.urls.i18n import i18n_patterns
urlpatterns = patterns('',
url(r'^i18n/', include('django.conf.urls.i18n')),
)
urlpatterns += i18n_patterns('',
url(r'', include('pages.urls', namespace='pages')),
)
Примечание. Шаблоны, которые я использую, находятся в приложении под названием «страницы».
Будем признательны за любую помощь в их совместной работе! Я до сих пор не смог найти что-либо в stackoverflow, касающееся этой проблемы. Если нужна дополнительная информация, спрашивайте!