2011-08-17 16 views
6

Yii's I18n topic non è abbastanza per me.Nozioni di base di I18n per Yii Framework

La mia fonte Lang è turco, bersaglio Lang è l'inglese (per esempio)

azione index del mio controller di test:

public function actionIndex() 
    { 
     Yii::app()->language='en'; 
     $this->render("index"); 
    } 

Questo è il contenuto del mio file di visualizzazione:

echo Yii::t('test', 'Deneme'); 

E infine, questo è il mio protetto/messages/it/test.php contenuto del file:

Tutto OK, restituisce Esempio. Ma come puoi vedere, sto impostando manualmente la lingua sull'azione indice . Come posso farlo automaticamente? Devo aggiungere Yii :: app() -> language = 'en'; a tutte le azioni? Come stai usando l18n sui tuoi progetti?

Nota: I'm Yii e l18n noob, quindi descrivi passo dopo passo.

Grazie.

risposta

5

È necessario impostare la lingua di destinazione in CWebApplication:beginRequest()

in protected/config/main.php, aggiungere:

'onBeginRequest' => array('MyApp', 'beginRequest') 

In protette/componenti, creare un file MyApp.php, e aggiungere questa classe:

class MyApp { 
    public static function beginRequest(CEvent $event) { 
    //set your language, theme, etc here 
    } 
} 

Ricordati di dichiarare beginRequest() come static, o incontrerai errori come questo:
https://github.com/yiisoft/yii/issues/794

3

è abbastanza semplice. Tu fai tutte le traduzioni in lingua come hai detto. Quindi, nel controller principale, nel metodo init, è possibile verificare la lingua desiderata e impostare la lingua corrente. In questo modo, non devi farlo in ogni azione, solo una volta.