2010-12-29 23 views
6

Estoy buscando una manera de traducir mi proyecto Django. El mecanismo integrado provisto con Django es genial, pero tiene varios puntos débiles que me hicieron buscar una alternativa.Django i18n: ¿hay una alternativa gettext?

El propietario del proyecto debe poder editar todas las traducciones, incluido el inglés (traducción original). Con gettext es posible editar traducciones con herramientas como Pootle, pero las cadenas originales permanecen codificadas dentro de fuentes o plantillas de archivos. No hay forma de que el dueño del producto pueda cambiarlos.

Posible solución es hacer gettext traducir algunos identificadores únicos, y acaba de traducirlos a todos los idiomas, incluyendo Inglés, así:

_('form_sumbit_button') 

Pero esto hace que las herramientas como pootle casi imposible de usar para los traductores.

Pregunta: ¿hay alguna herramienta para la traducción del proyecto Django que pueda satisfacer mis necesidades?

Respuesta

1

Puede usar Pootle con el enfoque _ ("message_id"), dependiendo de qué tan fácil sea personalizar Pootle (no conozco las partes internas, así que no puedo decirlo, pero IIUC usa Django donde los cambios en la plantilla generalmente son simples).

Por ejemplo, las pantallas de traducción de Pootle tienen secciones "Original" y "Traducción"; quizás podría adaptar las plantillas para mostrar, en la sección "Original", una sección "Referencia" que muestra alguna traducción canónica utilizando un idioma de referencia específico (por ejemplo, inglés).

O puede utilizar la funcionalidad alternative source language de Pootle, sin necesidad de personalizar Pootle. Puede almacenar las versiones canónicas de las traducciones utilizando un código de idioma no utilizado (o uno inventado).

2

Si usa algunos ID de mensaje, serían incomprensibles ("mensaje_2215") o se vería obligado a sincronizar los ID de mensaje con los mensajes reales ("Presione cualquier tecla" = "please_press_any_key" => " Cualquier tecla para continuar "=" any_key_to_continue "). De cualquier forma, las cadenas de caracteres reales son mejores para los programadores y para las herramientas.

Sin embargo, si usted emplea un corrector de pruebas independiente para sus cadenas, puede hacer lo siguiente:

  1. Crear un archivo de Inglés "traducción" (sí, esto funciona)
  2. Deje que su prueba- lector "traducir" de inglés a inglés con Pootle o cualquier otra herramienta
  3. Asegúrate de que tus programadores no traduzcan ese archivo de traducción actualizando las cadenas en el código.
  4. (opcional) Crea una forma de implementar traducciones independientemente de tu código principal para que puedas corregir un error tipográfico rápidamente.
0

El uso de identificadores es definitivamente posible con Gettext y hay herramientas que lo respaldan. Sin embargo, puede ser inusual para algunos traductores, ya que están acostumbrados a descargar solo el archivo .po para la traducción sin conexión, lo que no funciona con las traducciones monolingües.

Por ejemplo Weblate es compatible con archivos muy bien monolingüe Gettext (soy autor de esta herramienta): https://docs.weblate.org/en/latest/formats.html#monolingual-gettext