Estoy generando un pequeño proyecto en cakephp, que más tarde soltaré
al mundo, y mi pretensión es hacerlo multi-idiomas, he leido muchos
tutoriales, documentación y post de distintos blogs sobre este tema,
pero sigo teniendo el mismo problema, os cuento los pasos que seguí:
1. Adapte todos los textos de las vistas a la función __(). colocando
dentro de esta el identificador correspondiente al mensaje, que
aparecerá (una vez lo cree) en el archivo default.po, un ejemplo
sería:
__('Save') ----> "Guardar".
2. Una vez finalizado todo el proceso de las vistas tomé la consola de
cake y ejecute la instrucción "./cake i18n", donde elijí que me creara
el archivo .pot de mi directorio de aplicación (/app).
3. Ahora utilizo el editor "poedit" con el archivo .pot que me generó
la consola, y este genera a su vez el archivo "default.po" que coloco
en ---> 'app/locale/es/LC_MESSAGES/default.po'
4. En mi archivo 'app/config/core.php' tengo asignado por defecto el
idioma español ----> "Configure::write('Config.language', 'es');"
5. En este punto, según tengo entendido, todos los textos que tengo
relacionados en el archivo default.po de las vistas deberían aparecer
traducidos, pero no es así, en las vistas siguen apareciendo los
identificadores de los mensajes, en lugar del texto.
Así que mi pregunta es: ¿Qué me pasá?, ¿qué he hecho mal?, ¿Me he
saltado algún paso?. Gracias
Creo que el error está en el paso 2. Si tu aplicación no necesita
traducir textos dinámicos no debes ejecutar cake i18n, puesto eso se
hace para implementar el behavior Translate de Cake. Debes crear el
archivo pot/po en la carpeta locale eng, y no es, como lo tienes
ahora.
http://book.cakephp.org/es/view/162/Internationalizing-Your-Application
http://book.cakephp.org/es/view/92/Translate
Saludos!
DOCUMENTACION CAKEPHP
"Con el código listo para ser multi-idioma ---> __() [...] Para
generar archivos pot(s) todo lo que necesita es ejecutar la tarea i18n
en la consola [...] Los archivos pot(s) en si mismos no son utilizados
por CakePHP, son las plantillas utilizadas para crear o actualizar los
archivos po, que contienen las traducciones"
Todo lo he realizado según la documentación indicia, aunque mirando
más detenidamente el documento enlaza a --->
http://www.loc.gov/standards/iso639-2/php/code_list.php , donde me
observo que la carpeta de español tal vez no es "es", sino mas bien
"spa", quedando el resultado así /app/locale/spa/LC_MESSAGES/
default.po (Español), en un primer cambio no ha funcionado pero
seguire probando, gracias de todos modos. ¿Alguien tiene alguna idea
de por qué no me funciona?
Despues de quitar la cache (jodia) y haber sustituido "es" por
"spa" (tanto en el nombre de la carpeta como en el archivo core.php )
como bien indicaba en el archivo de codificaciones que enlaza el
manual de cakephp todo funciona como debería ser, gracias a todos y
espero que esto sirva para algún despistado como yo. Un saludo.