Перевести шаблоны в Django
У меня есть проект в Django 1.8. Я хочу иметь сайт с 3 языками, но когда я выбираю язык, ничего не происходит:
Код в моем шаблоне:
{% load i18n %}
...
<form action="{% url 'set_language' %}" method="post">
{% csrf_token %}
{% get_available_languages as LANGUAGES %}
{% get_language_info_list for LANGUAGES as languages %}
{% for language in languages %}
<a href="{% url 'set_language' %}">{{ language.code }}</a>
{% endfor %}
<span class="glyphicon glyphicon-globe"></span>
</form>
Мои URL:
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'website.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^i18n/', include('django.conf.urls.i18n')),
url(r'', include("www.urls", namespace="www")),
url(r'^blog/', include("blog.urls", namespace="blog")),
url(r'^admin/', include(admin.site.urls)),
url(r'^ckeditor/', include('ckeditor.urls')),
)
Мои настройки (локаль) - я использую здесь django-rosetta:
LANGUAGE_CODE = 'en-us'
LANGUAGES = (
('pl', u'Poland'),
('en', u'US'),
('ru', u'Russia'),
)
LOCALE_PATHS = [
os.path.join(BASE_DIR, 'locale'),
]
1 ответ
Вы написали код, который ничего не делает.
Встроенное представление django set_language принимает запросы POST с language
код в качестве участника Нажав на a
тег даже в представлении формы делает запрос GET.
Измените свой шаблон на следующий
<form action="{% url 'set_language' %}" method="post">{% csrf_token %}
<select name="language">
{% 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 }} ({{ language.code }})
</option>
{% endfor %}
</select>
<input type="submit" value="Go" />
</form>
https://docs.djangoproject.com/en/1.8/topics/i18n/translation/