php - traductor - Hacer traducciones en múltiples idiomas
traductor el mundo (3)
Supongo que una respuesta obvia es rodar tu propia función global:
function getLocalText($string, $lang)
{
putenv("LC_ALL=$lang");
setlocale(LC_ALL, $lang);
bindtextdomain("myPHPApp", "./locale");
textdomain("myPHPApp");
return gettext($string);
}
$word_fi = getLocalText($word, ''fi_FI'');
Tengo mi php gettext predeterminado en inglés, digamos
Me gustaría en uno de mis controladores, traducir algunas palabras en otros 2 idiomas y ponerlas en una matriz.
idealmente podría hacer
$word_sv = gettext($word, ''sv_SV'');
$word_fi = gettext($word, ''fi_FI'');
pero no existe.
¿Es la única manera de cambiar la configuración general de gettext cada vez?
function setLang($lang){
putenv("LC_ALL=$lang");
setlocale(LC_ALL, $lang);
bindtextdomain("myPHPApp", "./locale");
textdomain("myPHPApp");
}
setLang(''sv_SV'');
$word_sv = gettext($word);
setLang(''fi_FI'');
$word_fi = gettext($word);
related: lo vi en Google después de: i18n con gettext pero sin la molestia de la configuración regional?
Editar
aquí están las soluciones respondidas propuestas:
- https://github.com/Philipp15b/php-i18n (parece la mejor solución)
- http://glotpress.trac.wordpress.org/browser/trunk/pomo (podría usarlo si encuentro un buen documento o tuto;))
- cambiar de lugar sobre la marcha, probablemente no sea bueno
Sé lo difícil que es usar gettext, pero su rendimiento es lo que me mantiene con eso.
En su caso, es posible que desee ver este pequeño proyecto? ¡estoy bastante seguro de que esto podría ayudarte!
esto simplemente usa archivos .ini con traducciones, puede cambiar libremente entre los archivos y repetir los diferentes idiomas para la misma palabra.
Si está obligado a obtener el texto aquí, deje que la computadora haga el trabajo por usted.
O bien tiene una lista de palabras que luego desea consultar en todos los idiomas, primero haga la lista de palabras para cada idioma. Eso le setlanguage
poco de sobrecarga para llamar a la función de setlanguage
entre cada palabra e idioma.
Si quiere ir a cada idioma, cada palabra, escriba las funciones de esa manera:
function gettext_by_lang($lang, $word) {
putenv("LC_ALL=$lang");
setlocale(LC_ALL, $lang);
bindtextdomain("myPHPApp", "./locale");
textdomain("myPHPApp");
return gettext($word);
}
$word_sv = gettext_by_lang(''sv_SV'', $word);
$word_fi = gettext_by_lang(''fi_FI'', $word);
Esto al menos haría que tu código sea más compacto. Otra idea que me viene a la mente es usar un analizador para archivos PO y MO para que pueda verificar los datos.
En PHP uno de ellos es el envío con Wordpress / Glotpress:
Tal vez esto ayude. Esa biblioteca se mantiene.