i18n con gettext pero sin la molestia local?
-
06-07-2019 - |
Pregunta
Estoy buscando una forma compatible con los estándares para almacenar contenido en varios idiomas para una aplicación web. Hasta ahora, he empleado mi propio " translate () " Funciones que leen datos de un archivo o una tabla de diccionario en una base de datos. Sin embargo, mantener los diccionarios actualizados en una tabla de base de datos es muy engorroso si trabaja con diferentes copias de la aplicación web.
Me gusta gettext porque hay una multitud de herramientas disponibles para ello. Sin embargo, desarrollo aplicaciones para diferentes plataformas. No estoy absolutamente dispuesto a lidiar con las malas formas de setlocale () y consortes, a saber, las docenas de diferentes variaciones de cadenas de locale que difieren de un sistema a otro que debe proporcionar para que funcione. Nunca jamás. Tengo un conjunto de idiomas, digamos de, en y es, y quiero cargar el diccionario apropiado y trabajar con _ () sin tocar setlocale () o bindtexdomain () una vez.
¿Es esto posible de alguna manera usando gettext? ¿O alguien sabe otra solución simple, pequeña, rápida (!) I18n para PHP que pueda funcionar con archivos .po / .mo, preferiblemente sin requerir una extensión de PHP?
Solución
Zend_Translate trabaja con él
Otros consejos
Este método debería funcionar incluso con configuraciones regionales no estándar:
$locale = 'someWeirdLocale';
putenv('LC_MESSAGES=' . $locale);
bindtextdomain('domain', './locale');
textdomain('domain');
¡Disfruta!