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 .