@santaTihonov

Как хранится язык при мультиязычности в Yii2?

Пытаюсь реализовать мультиязычность на сайте (на фреймворке Yii2). Прочитал кучу документации, как примеры:
это, это, это, это и много чего другого.
Что-то из этого даже реализовал. Оно даже работает =) Но если было бы все хорошо, я бы к вам не обращался =))

Ссылки мультиязычности выглядят так:
https://site.com/contact
https://site.com/en/contact
https://site.com/uk/contact

Сейчас в проекте я не использую хелперы и генерирую ссылку примерно так:
<a class="nav-link" href="/cat/<?=$item->adjusted_name?>"><?=$item->name?></a>


Соответственно при переходе по ссылки у меня "слетает" выбранный язык. С использованием хелпера
Html::a .....

Ничего не меняется. Собственно сам вопрос: Как правильно генерировать URL для перехода по ссылкам с сохранением выбранного языка?

В frontend/config/main.php у меня подключается модуль и пр. настройки:
'modules' => [
        'languages' => [
            'class' => 'common\modules\languages\Module',
            //Языки используемые в приложении
            'languages' => [
                'English' => 'en',
                'Русский' => 'ru',
                'Українська' => 'uk',
                'Қазақ' => 'kz',
            ],
            'default_language' => 'ru', //основной язык (по-умолчанию)
            'show_default' => false, //true - показывать в URL основной язык, false - нет
        ],
    ],
......
        'i18n' => [
            'translations' => [
                'app' => [
                    'class' => 'yii\i18n\PhpMessageSource',
                    //'forceTranslation' => true,
                    'basePath' => '@common/messages',
                ],
            ],
        ],
......
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'class' => 'common\components\UrlManager',
            'rules' => [
                'languages' => 'languages/default/index', //для модуля мультиязычности
......
  • Вопрос задан
  • 96 просмотров
Решения вопроса 1
Kewa2008
@Kewa2008
Программист
Если перефразировать Дмитрия, он предлагает доработать вывод ссылки при помощи хелпера, примерно так:
<?= Html::a(
  Yii::t('app',$item->name),
  ['/cat/' . $item->adjusted_name]
) ?>

Но думаю это не решит вопрос с "переписыванием" ссылок, которые оформлялись без хелперов. Возможно Дмитрий меня поправит =)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Armrisch
@Armrisch
Full Stack Developer
Введи в ютюбе PHP-UP Yii2 интернационализация
посмотри урок думаю поможет))
P.S можно вообще не использовать get параметр в ссылке, просто использовать ajax и data атрибуты типа
<button type='button' data-lang ='en' >English</button>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы