Организация мультиязычности
Результаты переработки статьи с хабра https://habrahabr.ru/post/226931/, (*1)
Решен вопрос дубляжа url. Т.е., (*2)
mysite.ru
mysite.ru/ru
mysite.ru/en
отрабатывают корректно, при доступе на mysite.ru
открывается сайт по дефолтному языку,
mysite.ru/ru
дает ошибку 404 (т.к. ru
по умолчанию), mysite.ru/en
открывает английскую версию сайта, (*3)
Установка
Выполните, (*4)
composer require --prefer-dist alpiiscky/yii2-multilang "*"
или добавьте, (*5)
"alpiiscky/yii2-multilang": "*"
в раздел require вашего composer.json
файла., (*6)
Использование
Отредактировать web.php
согласно следующим пунктам:, (*7)
- добавить в разделе
components
:
'request' => [
'class' => 'alpiiscky\multilang\components\LangRequest',
'cookieValidationKey' => '<your code>',
],
- В
urlManager
надо добавить:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'class'=>'alpiiscky\multilang\components\LangUrlManager',
'rules' => [
'/' => 'site/index',
'<controller:\w+>/<action:\w+>/*'=>'<controller>/<action>',
]
Миграции
php yii migrate --migrationPath=vendor/alpiiscky/yii2-multilang/migrations/
Виджет выбора языка
<?= \alpiiscky\multilang\widgets\LanguageWidget::widget([]); ?>
Создание url
= Url::toLang('/book', ['lang_id' => $current_lang->id]) ?>