La extensión gettext tiene algunas peculiaridades.
- Mantiene cadenas de traducción en la memoria, y por lo tanto puede requerir un reinicio (en el tiempo de ejecución de mod_php) cuando se actualizan los catálogos.
- La API gettext no fue diseñada para aplicaciones web. (Busca las variables de entorno y la configuración del sistema. Debe alimentar con cuchara el encabezado Aceptar idioma.)
- Muchas personas tienen problemas para configurarlo.
- Por otro lado, hay más soporte de herramientas para gettext.
Casi siempre tendrá menos problemas con una solución artesanal. Pero dicho esto, el gettext API es inmejorable en concisión. _("orig text")
es más o menos la interfaz óptima para traducir texto.
Si quiere codificar algo usted mismo, le recomiendo que se concentre en eso.
- usar un simple nombre de la función. En lugar de
_()
, algunas aplicaciones php usan el doble guión bajo __()
. No adopte ninguna biblioteca que dificulte el uso de cadenas traducidas. (Por ejemplo, si utiliza Zend Framework, siempre escriba una función de envoltura).
- Acepte el texto en inglés como entrada. Evite las claves de traducción mnemónicas (por ejemplo,
BTN_SUBMT
)
- No utilice en ningún caso la base de datos para catálogos de traducción. Esos textos son datos de tiempo de ejecución, no datos de aplicaciones. (Para ver un mal ejemplo osCommerce.)
A menudo puede salirse con guiones matriz PHP lang/nl.php
contiene nada más que $text["orig english"] = "dutch here";
, que son fáciles de utilizar de cualquier método de acceso que utilice.
También evite presionar todo en ese sistema. A veces es inevitable adoptar un segundo mecanismo para textos más largos. Yo por ejemplo usé template/mail.EN.txt
para manchas más grandes.
dices caché, donde ... archivo plano tal vez. – RobertPitt
Haha, touché. Pero me refería a tener mi catálogo en archivos planos. –