Django 1.6(1.7もOKかも?)
テンプレートでは
<form action="{% url 'set_language' %}" method="post"> {% csrf_token %} <input name="nexta" 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>
と記載。 redirect_toはそのままでOK。
urls.pyの
urlpatterns = patterns('',
内にこれを追加
(r'^i18n/', include('django.conf.urls.i18n')),
settings.pyのMIDDLEWARE_CLASSESに注意 順番が重要!順番が重要!
MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', # これ! 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware',
http://d.hatena.ne.jp/nullpobug/20131208/1386494359 ここにも記載されている。