Cómo hacer la localización en Django basado en UserProfile

Quiero hacer la localización en Django en función del código de país/configuración regional establecido en UserProfile de los usuarios en lugar de utilizar lo que el navegador/sesión/servidor web crea que es la configuración regional.

¿Hay alguna manera de hacer esto en las plantillas django?

por ejemplo, cómo cambiar el comportamiento de

{% load l10n %}
{{ value|time|localize }}

para que formatee la fecha en función de lo que está almacenado en el perfil, no en función de un contexto de solicitud?

0

1 Respuestas

Django proporciona LocaleMiddleware que hace la mayor parte de lo que lo que buscas es:

Habilita la selección del idioma según los datos de la solicitud. Eso   personaliza el contenido para cada usuario. Ver la internacionalización   documentación.

El método que utiliza para adivinar el idioma es el mismo que usa la maquinaria de traducción; es decir, busca una variable django_language en la sesión, si eso existe y es un lenguaje válido, establecerá ese idioma para la solicitud. Consulte cómo django descubre las preferencias de idioma .

Una vez que habilite LocaleMiddleware y configure django_language desde el perfil del usuario en su vista de inicio de sesión, todo debería funcionar.

2
agregado
¿Cómo ejecuto el código después de iniciar sesión si uso contrib.auth.views.login ?
agregado el autor Kimvais, fuente
No está realmente relacionado con esta pregunta, pero debe escuchar user_logged_in señal (solo en django 1.3+)
agregado el autor Burhan Khalid, fuente