Respuesta

11

1) utilizar _() (o gettext()) en el código y plantillas. Las cadenas traducidas establecidas en el módulo global o las definiciones de clase deberían usar alguna forma de gettext(), porque i18n no estará disponible cuando se importen los módulos.

2) Extraiga todas las traducciones utilizando pybabel. Aquí pasamos dos directorios para escanear: el directorio de plantillas y el directorio de la aplicación. Esto creará un archivo de mensaje.pot en el directorio/locale con todas las cadenas encontradas en estos directorios. babel.cfg es la configuración de extracción que varía en función del motor de la plantilla que utilice:

$ pybabel extract -F ./babel.cfg -o ./locale/messages.pot ./templates/ ./app/ 

3) Inicializar un directorio para cada idioma. Esto se hace solo una vez. Aquí inicializamos tres traducciones, en_US, es_ES y es_ES, y utilizar el archivo messages.pot creado en el paso 2:

$ pybabel init -l en_US -d ./locale -i ./locale/messages.pot 
$ pybabel init -l es_ES -d ./locale -i ./locale/messages.pot 
$ pybabel init -l pt_BR -d ./locale -i ./locale/messages.pot 

traducir los mensajes. Estarán en archivos .mo en cada directorio de traducción. Después de todas las configuraciones regionales se traducen, compilarlas:

$ pybabel compile -f -d ./locale 

Más adelante, si se añaden nuevas traducciones, repita el paso 2 y actualizarlos utilizando el nuevo archivo .pot:

$ pybabel update -l pt_BR -d ./locale/ -i ./locale/messages.pot 

luego traducir las nuevas cadenas y compilar las traducciones nuevamente.

4) La estrategia aquí puede variar. Para cada solicitud, debe establecer las traducciones correctas que se utilizarán, y probablemente desee almacenar traducciones cargadas en caché para reutilizarlas en solicitudes posteriores.

+1

Gracias moraes, paso 4 todavía me elude. Espero que algunos publiquen una buena solución para ello. – fccoelho

+1

¿Alguien tiene una sugerencia simple para el elemento 4 de esta respuesta? – fccoelho

+0

número 4 es un enlace roto ..:/ – Lipis

Cuestiones relacionadas