2012-04-06 18 views
5

Io uso <?php echo __("this is my string"); ?> nelle mie visualizzazioni per visualizzare il testo in più lingue. Ho creato una directory .po file per il tedesco:CakePHP 2.1 .po file/traduzione non funzionante

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

msgstr "questo è il mio stringa"

msgstr "Dies ist meine zeichenkette"

Quando aggiungo Configure::write('Config.language','ger'); alla mia AppController.php beforeFilter funzionano il testo rimane ancora 'questo è il mio stringa'. Anche se creo un file .po per l'inglese con un msgstr diverso, il testo rimane lo stesso.

Devo modificare un'impostazione specifica per attivare la traduzione?


ho un follow-up problema: ho aggiunto Configure::write('Config.language','eng'); a core.php per impostare la mia lingua predefinita, ma ora non posso cambiare il valore, anche se cerco di ignorare in AppController.php beforeFilter con:

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

Se cambio il valore in core.php funziona perfettamente bene, ma una volta messo in core.php non posso cambiarlo.

risolto: ah, ho dimenticato di aggiungere parent::beforeFilter(); all'interno della funzione beforeFilter di tutti i controller.


Ulteriori informazioni:

  • Se si desidera definire una lingua predefinita (e di solito si), aggiungere Configure::write('Config.language', 'eng'); al core.php

risposta

8

Potete guardare il file lib/Pasticceria/I18n/L10n.php, per sapere come chiamare ogni lingua.

impostazioni per il tedesco:

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

=> app/Locale/deu/LC_MESSAGES/default.po

+0

Grazie per il suggerimento con il file L10n.php, lo farò usalo per riferimenti futuri. –

+0

grazie, guarda il cuore di cakePhp, mi aiuta a capire. –

6

la sua " deu "not" ger

CakePHP utilizza il funzionario (T) c odi da http://www.loc.gov/standards/iso639-2/php/code_list.php, per CakePHP 1.3 si è documentata sotto Internationalizing Your Application:

I codici locali tre caratteri sono conformi allo standard ISO 639-2, anche se si crea locali regionali (en_US, it_IT, ecc) Torta li userete se adeguata.

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, ora funziona.Non era ovvio per me che dovevo usare il valore "T" del file, peccato che questo non fosse menzionato nella documentazione poiché penso che molti altri utenti di CakePHP potrebbero non saperlo. –

+0

Grazie per la tua risposta! Posso solo contrassegnare uno come risposta corretta, ho preso quello di del_dan a causa del riferimento al file L10n. –

+1

nessun problema. per quanto riguarda la documentazione: puoi partecipare spingendo al rappresentante github: https://github.com/cakephp/docs - in modo da poter inserire le informazioni mancanti in. – mark