Yii2. Интернационализация
07.03.2019
Теги: PHP • Web-разработка • Yii2 • Теория • Фреймворк
Интернационализация (i18n) является частью процесса разработки приложения, которое может быть адаптировано для нескольких языков без изменения программной логики. Это особенно важно для веб-приложений, так как потенциальные пользователи могут приходить из разных стран.
В Yii приложении определены два языка: исходный язык и язык перевода. На исходном языке написаны сообщения в коде приложения. Если исходным языком задан английский, то в коде можно использовать конструкцию:
echo \Yii::t('app', 'I am a message!');
Язык перевода определяет, в каком виде будет отображаться текущая страница, т.е. на какой язык будут переведены оригинальные сообщения. Этот параметр может быть задан в конфигурации приложения:
<?php /* * Файл config/web.php */ $config = [ /* ... */ 'language' => 'ru-RU', // язык перевода — русский /* ... */ ];
Кроме того, значение языка перевода можно установить в самом приложении:
\Yii::$app->language = 'ru-RU';
Перевод сообщений
<?php /* * Файл config/web.php */ $config = [ 'id' => 'basic', 'basePath' => dirname(__DIR__), // язык перевода — русский 'language' => 'ru-RU', 'components' => [ /* ... */ 'i18n' => [ 'translations' => [ 'app*' => [ 'class' => 'yii\i18n\PhpMessageSource', // все переводы будут в файле messages/ru_RU/app.php 'fileMap' => [ 'app' => 'app.php', ], ], ], ], ], /* ... */ ];
<?php /* * Файл messages/ru_RU/app.php */ return [ 'Create' => 'Добавить', 'Update' => 'Обновить', 'Delete' => 'Удалить', 'Submit' => 'Отправить', ];
Кроме хранения переводов в php-файлах (используя PhpMessageSource
), Yii2 предоставляет ещё два класса:
yii\i18n\GettextMessageSource
, использующий GNU Gettext для MO или PO файлов.yii\i18n\DbMessageSource
, использующий базу данных.
Дополнительно
Поиск: PHP • Web-разработка • Yii2 • Фреймворк • Интернационализация • i18n • ru-RU