Я знаю, что это старо, но я нашел этот вопрос, когда искал ответ. Я также нашел хорошее руководство, ссылка ниже.
Один из способов сделать это, чтобы создать компонент и загрузить его, например:
Создайте файл, скажем, в common/components/LanguageSelector.php
<?php
namespace common\components;
use yii\base\BootstrapInterface;
class LanguageSelector implements \yii\base\BootstrapInterface
{
public $supportedLanguages = [];
public function bootstrap($app)
{
$preferredLanguage = $app->request->getPreferredLanguage($this->supportedLanguages);
$app->language = $preferredLanguage;
}
}
Я использую расширенный шаблон приложения, вы можете настроить расположение файла и пространство имен по мере необходимости.
Затем в вашем файле конфигурации вам нужно добавить этот компонент, точно так же, как вы добавляете другой компонент, такой как компоненты отладки или журналирования, например:
'components' => [
'languageSelector' => [
'class' => 'common\components\LanguageSelector',
'supportedLanguages' => ['en-US', 'tr-TR'],
],
],
Кроме того, вам необходимо добавить этот компонент к загружаемым компонентам в вашем файле конфигурации:
'bootstrap' => ['languageSelector', ...]
Однако этот подход не зависит от файлов cookie, он зависит от языка браузера клиента. На странице ниже вы также можете найти пример того, как добиться выбора языка на основе предпочтений. Но в основном вам нужно в вашем компоненте languageSelector получить значение из файла cookie и соответствующим образом изменить язык. Если в браузере пользователя нет файла cookie, вы можете вернуться к языку браузера.
https://github.com/samdark/yii2-cookbook/blob/master/book/i18n-selecting-application-language.md
person
SercioSoydanov
schedule
02.02.2016