2012-04-06 17 views
5

Uso <?php echo __("this is my string"); ?> dentro de mis vistas para mostrar texto en varios idiomas. He creado un directorio .po-archivo para alemán:CakePHP 2.1 archivos .po/traducción no funciona

=> app/locale/GER/LC_MESSAGES/default.po

msgstr "este es mi cadena"

msgstr "dies ist meine zeichenkette"

Cuando agrego a mi Configure::write('Config.language','ger'); AppController.php beforeFilter funcionar el texto sigue siendo 'este es mi cadena'. Incluso si creo un .po para inglés con un msgstr diferente, el texto sigue siendo el mismo.

¿Debo cambiar una configuración específica para activar la traducción?


Tengo un seguimiento problema: He añadido a Configure::write('Config.language','eng');core.php para establecer mi idioma por defecto, pero ahora no puedo cambiar el valor, incluso si trato de anularlo en AppController.php beforeFilter con:

Configure::write('Config.language', 'deu'); //'de' also doesn't work 
CakeSession::write('Config.language', 'deu'); //'de' also doesn't work 

Si cambio en el valor core.php funciona perfectamente bien, pero una vez puesta en core.php no puedo cambiarlo.

resuelto: ah, me olvidé de agregar parent::beforeFilter(); dentro de la función beforeFilter de todos los controladores.


Información adicional:

  • Si desea definir un idioma por defecto (y por lo general se), añadir a la Configure::write('Config.language', 'eng');core.php

Respuesta

8

Usted puede mirar en el archivo lib/torta/i18n/L10n.php, para saber cómo llamar a cada idioma.

ajustes para alemán:

Configure::write('Config.language','de'); 

=> app/locale/DEU/LC_MESSAGES/default.po

+0

Gracias por la pista con el archivo L10n.php, lo haré usar eso para referencias futuras. –

+0

gracias, mira el núcleo de cakePhp, me ayuda a entender. –

6

su " deu "not" ger "

CakePHP utiliza el oficial (T) c odas de http://www.loc.gov/standards/iso639-2/php/code_list.php, para CakePHP 1.3 está documentado bajo Internationalizing Your Application:

Los códigos de configuración regional de tres caracteres se ajustan al estándar ISO 639-2, aunque si crea locales regionales (en_US, es_ES, etc.) pastel de las utilizará si apropiado.

ISO 639-2 | ISO 639-1 | English name | French name | German name | 
Code  | Code  | of Language | of Language | of Language | 
------------------------------------------------------------------- 
ger (B) |   |    |    |    | 
deu (T) | de  | German  | allemand | Deutsch  | 
+1

Ah, ahora funciona.No fue obvio para mí que tengo que usar el valor "T" del archivo, lástima que esto no se mencione en la documentación, ya que creo que muchos otros usuarios de CakePHP podrían no saberlo. –

+0

¡Gracias por su respuesta! Solo puedo marcar una como la respuesta correcta, tomé la de del_dan por la referencia al archivo L10n. –

+1

no hay problema. en cuanto a la documentación: puede participar presionando al representante de github: https://github.com/cakephp/docs - para que pueda poner la información que falta. – mark

Cuestiones relacionadas