2011-08-17 18 views
6

Yii's I18n topic no es suficiente para mí.Conceptos básicos de I18n Para Yii Framework

Mi fuente lang es el turco, el objetivo lang es Inglés (por ejemplo)

acción index de mi controlador de prueba:

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

Este es el contenido de mi punto de vista de archivo:

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

Y por último, este es mi protegido/messages/en/test.php contenido del archivo:

return array(
    'Deneme' => 'Example', 
); 

Todo bien, está volviendo Ejemplo. Pero como puede ver, estoy configurando el idioma manualmente en mi acción de índice . ¿Cómo puedo hacerlo automáticamente? Debo agregar Yii :: app() -> language = 'en'; a todas las acciones? ¿Cómo está usando l18n en sus proyectos?

Nota: Soy Yii y l18n novato, así que por favor describa paso a paso.

Gracias.

Respuesta

5

Debe establecer el idioma de destino en CWebApplication:beginRequest()

en protected/config/main.php, añadir:

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

En protegidas/componentes, crear un archivo MyApp.php, y añadir esta clase:

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

Recuerde declarar beginRequest() como static, o encontrará errores como este:
https://github.com/yiisoft/yii/issues/794

3

es bastante simple. Haces todas las traducciones de idiomas como dijiste. Luego, en el controlador principal, en el método init, puede verificar el idioma deseado y establecer el idioma actual. De esta forma, no tienes que hacer eso en cada acción, solo una vez.

Cuestiones relacionadas