Estoy haciendo pruebas en Django para trabajar con modelos multilenguaje en mi proyecto, pero como siempre hay algo que no me funciona :(
He empezado por crear un combo donde el usuario pueda escoger el idioma de preferencia, y después se actualice la variable LANGUAGE_CODE
Para esto utilicé la función set_language del módulo 'django.core.context_processors.i18n' siguiendo la documentación de Django, pero al enviar el formulario, el valor de LANGUAGE_CODE sigue siendo el que está establecido por mí en "settings.py"
Este es el código que utilizo:
"settings.py":
Código Python:
Ver original
LANGUAGE_CODE = 'es-ES' LANGUAGES = ( ('es', 'Spanish'), ('en', 'English'), )
"urls.py":
Código Python:
Ver original
url(r'^i18n/', include('django.conf.urls.i18n')),
"template.html":
Código HTML:
Ver original
{% load i18n %} <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="Enviar" /> </form>
Cuando muestro {{ LANGUAGE_CODE }} en el template, el valor no cambia
Según la documentación de Django, la variable TEMPLATE_CONTEXT_PROCESSORS contiene el módulo 'django.core.context_processors.i18n' por defecto, por lo que no me he parado a redefinirla en "settings.py"
Saludos!