El libro de Django 1.0

18.5. La vista de redirección set_language

Por conveniencia, Django incluye una vista django.views.i18n.set_language, que fija la preferencia de idioma de un usuario y redirecciona de vuelta a la página previa.

Activa esta vista agregando la siguiente línea a tu URLconf:

(r'^i18n/', include('django.conf.urls.i18n')),

(Nota que este ejemplo publica la vista en /i18n/setlang/).

La vista espera ser llamada vía el método GET, con un parámetro language incluido en la cadena de consulta. Si el soporte para sesiones está activo, la vista guarda la opción de idioma en la sesión del usuario. Caso contrario, guarda el idioma en una cookie django_language.

Después de haber fijado la opción de idioma Django redirecciona al usuario, para eso sigue el siguiente algoritmo:

  • Django busca un parámetro next en la cadena de consulta.
  • Si el mismo no existe o está vació, Django intenta la URL contenida en la cabecera Referer.
  • Si la misma está vacía — por ejemplo, si el navegador de un usuario suprime dicha cabecera — entonces el usuario será redireccionado a / (la raíz del sitio) como un último recurso.

Este es un fragmento de código de plantilla HTML de ejemplo:

<form action="/i18n/setlang/" method="get">
  <input name="next" type="hidden" value="/next/page/" />

  <select name="language">
  {% for lang in LANGUAGES %}
    <option value="{{ lang.0 }}">{{ lang.1 }}</option>
  {% endfor %}
  </select>

  <input type="submit" value="Go" />
</form>