万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

Djangoの言語切り換えボタン

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 ここにも記載されている。