Estoy tratando de usar la extensión PHP gettext para traducir algunas cadenas. Todas las funciones parecen devolver los valores correctos, pero al llamar al gettext()
/_()
solo se devuelve la cadena original. Los archivos PO/MO parecen correctos y creo que configuré los directorios correctamente. Estoy ejecutando WAMP Server con PHP 5.3.10 en Windows (también intenté ejecutar 5.3.4 y 5.3.8 porque tengo las instalaciones).PHP Gettext - Sin traducción
En primer lugar, ver /new2/www/index.php
:
$locale = 'esn'; # returns Spanish_Spain.1252 in var dump
putenv("LC_ALL={$locale}"); // Returns TRUE
setlocale(LC_ALL, $locale); // Returns 'Spanish_Spain.1252'
$domain = 'messages';
bindtextdomain($domain, './locale'); // Returns C:\wamp\www\new2\www\locale
bind_textdomain_codeset($domain, 'UTF-8'); // Returns UTF-8
textdomain($domain); // Returns'messages'
print gettext("In the dashboard"); // Prints the original text, not the translation.
exit;
He creado la siguiente estructura de archivos:
www/new2/www/locale/Spanish_Spain.1252/LC_MESSAGES/messages.mo
también he intentado reemplazar Spanish_Spain.1252
con: es_ES
, esn
, esp
, Spanish
, y Spanish_Spain
.
El archivo PO usado para generar el Mo es igual que (sólo la entrada pertinente dado):
#: C:\wamp\www\new2/www/index.php:76
msgid "In the dashboard"
msgstr "TRANSLATED es_ES DASHBOARD"
Este se generó usando PoEdit. He reiniciado Apache después de agregar cualquier archivo .MO nuevo. También tenga en cuenta que antes estaba usando Zend_Translate con Gettext y que se está traduciendo correctamente. Sin embargo, deseo confiar en la extensión nativa de gettext, en parte porque estoy intentando crear un framework liviano.
Cualquier ayuda sería apreciada.
Editar: Estructura de directorios modificada. Nota: podrá probar las respuestas recientes dentro de las 24 horas.
¿No debería su ubicación y directorio ser 'es_ES.UTF-8'? – mario
@mario He intentado con esa locale y el directorio pero 'setlocale()' luego devuelve falso. – Pete171