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

В Yii2 существует несколько способов работы с мультиязычностью. Один из самых распространенных способов - это использование компонента i18n (internationalization).

Когда дело доходит до хранения языка в Yii2, i18n компонент использует так называемые "языковые файлы" для перевода текстов на разные языки. Языковые файлы содержат переводы для каждого отображаемого текста в вашем приложении, например, надписи на кнопках, заголовки страниц, сообщения об ошибках и т. д.

Каждый языковой файл представляет собой PHP-массив, в котором ключами являются оригинальные тексты на языке приложения, а значениями - их переводы на разные языки. Например:

<?php
return [
    'Welcome' => 'Добро пожаловать',
    'User' => 'Пользователь',
    'Error' => 'Ошибка',
];

Когда пользователь выбирает язык, Yii2 загружает соответствующий языковой файл и использует его для перевода текстов на выбранный язык. Для определения текущего языка Yii2 использует обычно cookie или параметр языка в URL.

Следует отметить, что в Yii2 также существует возможность использования динамического перевода текстов с помощью метода Yii::t(). Этот метод позволяет переводить тексты на лету на основе текущего языка приложения. Например:

echo Yii::t('app', 'Welcome');

В этом примере Yii2 найдет перевод для текста Welcome в соответствующем языковом файле (в данном случае 'app' - это идентификатор приложения, по которому Yii2 ищет нужный языковой файл).

В целом, механизм хранения языка в Yii2 построен на использовании языковых файлов, которые содержат переводы для различных текстов. Это позволяет разработчикам легко поддерживать смену языка в приложении и предоставлять пользователю интерфейс на его предпочитаемом языке.