De Django Documentación:Uso settings.LANGUAGES con nombres correctamente traducidos utilizando gettext()
Si define una costumbre
LANGUAGES
ajuste, que está bien para marcar los idiomas como cadenas de traducción (como en el defecto valor mostrado arriba) - pero utiliza una función "ficticia"gettext()
, no la dedjango.utils.translation
. Nunca se debe importardjango.utils.translation
desde dentro su archivo de configuración, ya que el módulo en sí mismo depende de los ajustes , y que podría causar una importación circular . La solución es utilizar una función "ficticia"gettext()
. Aquí hay un archivo de configuración de muestra:
gettext = lambda s: s LANGUAGES = (
('de', gettext('German')),
('en', gettext('English')),
)
Con esta disposición,
django-admin.py makemessages
seguirá siendo encontrar y marcar estas cadenas para la traducción, pero la traducción no sucederá en tiempo de ejecución - - Así que tendrá que recordar para envolver los idiomas en elgettext()
real en cualquier código que useLANGUAGES
en tiempo de ejecución.
¿Qué significa exactamente para ajustar los idiomas en real gettext()
? ¿Cómo debería llamarse en el código?
Este método es bastante stright adelante y comprensible. Pero en este caso, ¿de qué sirve usar un envoltorio ficticio en la configuración.LANGUAGES? Como de todos modos debe envolver cada línea en el código, cuál es el punto de la función de envoltura que sugiere el tutorial. –
Porque cuando ejecuta la herramienta de línea de comandos gettext sobre su árbol de código fuente (probablemente a través de ./manage.py makemessages), quiere que reconozca esas cadenas como "que necesitan traducción" para que las agreguen a su archivo PO. –