tutorial multi language_code idioma español python django internationalization

python - multi - django tutorial



¿Cómo consigo el idioma actual en django? (6)

¿Cómo puedo obtener el idioma actual en el hilo actual en un modelo o en el administrador?


O también puede obtener esto en sus puntos de vista

request.LANGUAGE_CODE


Puede leer la locale del sistema para obtener información sobre el idioma.


Solo para agregar que si usa django.utils.translation.get_language() , debe tener en cuenta que si esa sección de código se llamará de forma asíncrona (por ejemplo, como una tarea de apio), este enfoque no funcionará debido a esto. corriendo en un hilo diferente.


puedes usar esto

from django.utils import translation translation.get_language()


Tenga cuidado con el método que utiliza para obtener el idioma . Dependiendo de qué método, Django utilizará diferentes formas e información para determinar el idioma correcto para usar.

Cuando se utiliza la función django.utils.translation.get_language() , se vincula al lenguaje del hilo . Antes de Django 1.8, siempre devolvía settings.LANGUAGE_CODE cuando las traducciones estaban deshabilitadas. Si desea anular manualmente el lenguaje de subprocesos, puede usar las funciones de override() o activate() , que no tienen un nombre muy explícito, pero bueno, sigue siendo útil:

from django.utils import translation with translation.override(''fr''): print(_("Hello")) # <= will be translated inside the with block translation.activate(''fr'') # <= will change the language for the whole thread. # You then have to manually "restore" the language with another activate() translation.activate(''en'') # <= change languages manually

Si desea que django verifique la ruta y / o la solicitud (cookie de idioma, ...) , que es mucho más común, por ejemplo, www.example.com/en/<somepath> vs www.example.com/fr/<somepath> , use django.utils.translation.get_language_from_request(request, check_path=False) . Además, siempre devolverá un idioma válido establecido en la settings.LANGUAGES

No fue muy fácil encontrar estas diferencias a través de Google sobre este tema, de modo que aquí encontrará una referencia adicional.


Las funciones de particular interés son django.utils.translation.get_language() que devuelve el idioma utilizado en el hilo actual. Ver documentation .