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?
Respuestas:
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:
msgmerge
Sin 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.fuente
Eso es algo que podría automatizar fácilmente, lo que lo hace menos propenso a errores y también menos trabajo.
fuente