Al final del día, un traductor debe poder sentarse y cambiar los textos para cada idioma (para que coincida con el significado) sin tener que involucrar al programador que ya hizo su trabajo.
Esto me hace sentir que la respuesta correcta es utilizar una versión modificada del gettext
donde pones cuerdas como este contexto
_(id, backup_text, context)
_('ABOUT_ME', 'About Me', 'HOMEPAGE')
siendo opcional
por qué así? porque necesita identificar el texto en el sistema usando ID únicos que no sean textos en inglés que podrían repetirse en otros lugares.
También debe mantener la copia de seguridad, la identificación y el contexto en el mismo lugar en su código para reducir las discrepancias.
Los identificadores también tienen que ser legible, lo que trae en el problema de los sinónimos y duplicar el uso (incluso como IDS), podríamos prefijar los identificadores como este "HOMEPAGE_ABOUT_ME" o "MAIL_LETTER", pero
- la gente se olvida de hacer esto al principio y cambiarlo más adelante es un problema
- su más flexible para que el sistema sea capaz de grupo, tanto por id y el contexto
por lo que también he añadido la variable de contexto en el final
el texto de copia de seguridad puede ser casi cualquier cosa, incluso podría ser "[ABOUT_ME @ PÁGINA DE INICIO texto no se pudo cargar, por favor, póngase en contacto con [email protected]]"
No funcionará con los programas de edición de gettext actuales como "poedit", pero creo que puede definir nombres de variables personalizados para traducciones como simplemente "t()" sin el subrayado al inicio.
Sé que gettext también tiene soporte para contextos, pero no está muy bien documentado o es ampliamente utilizado.
P.S. No estoy seguro sobre el mejor orden variable para aplicar un código bueno y extensible, por lo que las sugerencias son bienvenidas.
su respuesta aceptada es mi humilde opinión no es una solución muy buena! – markus
Hay una pregunta similar: http://stackoverflow.com/questions/4232922/why-do-people-use-plain-english-as-translation-placeholders – sleske