Основы I18n For Yii Framework - PullRequest
       12

Основы I18n For Yii Framework

6 голосов
/ 18 августа 2011

Тема Yii I18n мне не достаточно.

Мой исходный язык - турецкий, целевой язык - английский (например)

Индексное действие моего тестового контроллера:

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

Это содержимое моего файла просмотра:

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

И, наконец, это мой protected / messages / en / test.php файл:

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

Все в порядке, возвращается Пример . Но, как вы видите, я устанавливаю язык вручную в своем индексном действии . Как я могу сделать это автоматически? Должен ли я добавить Yii :: app () -> language = 'en'; ко всем действиям? Как вы используете l18n в своих проектах?

Примечание: я Yii и loon noob, поэтому опишите, пожалуйста, шаг за шагом.

Спасибо.

Ответы [ 3 ]

5 голосов
/ 18 августа 2011

Вы должны установить целевой язык в CWebApplication:beginRequest()

в protected/config/main.php, добавить:

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

В защищенных компонентах создайте файл MyApp.php и добавьте этот класс:

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

Не забудьте объявить beginRequest() как static, иначе вы столкнетесь с такими ошибками:
https://github.com/yiisoft/yii/issues/794

3 голосов
/ 18 августа 2011

это довольно просто.Вы делаете все языковые переводы, как вы сказали.Затем в родительском контроллере в методе init вы можете проверить нужный язык и установить текущий язык.Таким образом, вам не нужно делать это в каждом действии, только один раз.

1 голос
/ 14 марта 2013

в уроках Yii есть статья, которая объясняет это очень хорошо. таким образом, у вас есть 3 файла: один, ваш селектор языка, один, виджет селектора языка, и один - поведение для обработки вашего файла селектора языка. читай здесь и пользуйся ... Управление (целевым) языком в многоязычных приложениях + виджет выбора языка (i18n)

...