Traducción de textos más largos (plantillas de vista y correo electrónico) con gettext

9

Estoy desarrollando una aplicación web PHP multilingüe, y tengo textos largos (-ish) que necesito traducir con gettext. Estas son plantillas de correo electrónico (generalmente cortas, pero aún varias líneas) y plantillas de partes de vista (bloques de texto descriptivos más largos). Estos textos incluirían HTML simple (cosas como negrita / cursiva para enfatizar, probablemente un enlace aquí o allá). Las plantillas son scripts PHP cuya salida se captura.

El problema es que gettext parece muy torpe para manejar textos más largos. Los textos más largos generalmente tendrán más cambios a lo largo del tiempo que los textos cortos: puedo cambiar el msgid y asegurarme de actualizarlo en todas las traducciones (podría ser mucho trabajo y muy propenso a errores cuando el msgid es largo), o puedo mantenerlo msgstr sin cambios y modifica solo las traducciones (lo que dejaría textos obsoletos engañosos en las plantillas). Además, he visto consejos contra la inclusión de HTML en las cadenas gettext, pero evitarlo rompería un solo fragmento de texto natural en muchos fragmentos, lo que será una pesadilla aún mayor para traducir y volver a armar, y también he visto consejos contra msgstr por separado, división innecesaria de las cadenas gettext.

El otro enfoque que veo es ignorar gettext por completo para estos textos más largos, y separar esos bloques en sub-plantillas externas para cada configuración regional, y solo incluir el de la configuración regional actual. La desventaja es que estoy separando el esfuerzo de traducción entre archivos gettext .po y plantillas separadas ubicadas en una ubicación completamente diferente.

Dado que esta aplicación se utilizará como punto de partida para otras aplicaciones en el futuro, estoy tratando de encontrar el mejor enfoque a largo plazo. Necesito algunos consejos para las mejores prácticas en tales escenarios. ¿Cómo ha implementado casos similares? ¿Qué resultó para trabajar y qué resultó ser una mala idea?

lanzz
fuente

Respuestas:

3

Me encontré con un problema similar no hace mucho tiempo (consulte /programming/8288050/can-i-automatically-update-msgids-in-gettexts-po-files-for-trivial-text-change ).

Básicamente, hay dos opciones:

  1. Hágalo de la manera en que se debe usar gettext: use los textos originales como msgid, HTML y todo. Luego, cada cambio en el texto original invalidará todas las traducciones. msgmergeSin embargo, la coincidencia difusa generalmente coincidirá con el texto original correcto con la traducción anterior, por lo que la traducción antigua estará disponible para el traductor.
  2. En lugar de usar el texto original como msgstr, use algún identificador sintético (como EMAIL_TEMPLATE_NEWSLETTER_START). De esa manera, las identificaciones nunca cambian. Los textos originales (probablemente en inglés) simplemente serán otra traducción a gettext. Principales desventajas: 1) Debe realizar un seguimiento por separado de las traducciones que están actualizadas; 2) Algunas herramientas de gettext pueden no manejar esto bien (los traductores pueden necesitar herramientas especiales).
sleske
fuente
1

cambie el msgid y asegúrese de actualizarlo en todas las traducciones (podría ser mucho trabajo y muy propenso a errores cuando el msgid es largo)

Eso es algo que podría automatizar fácilmente, lo que lo hace menos propenso a errores y también menos trabajo.

Dario Hamidi
fuente