Как включить i18n в yii2 с помощью advanced template?
в сети я наткнулся на этот учебник https://stackoverflow.com/questions/32831288/yii2-translation-does-not-work, я следовал за ним, но во время запуска извлечения сообщений на шаге 5 я получаю эту ошибку в консоли
и если это функциональный проект, в котором установлено несколько расширений, это настройка yii для выполнения из партии
2 answers
Чтобы включить перевод и сделать его доступным для бэкэнда, а также для внешнего интерфейса, вы должны создать папку внутри папки common с именем messages, она должна выглядеть так:
common
|
+---> messages
Внутри папки messages вы создаете папку, которая будет содержать перевод, который вы хотите, в случае перевода на английский язык эта папка может называться 'in', до сих пор структура папок
common
|
+---> messages
|
+---->es
Уже имея эту структуру, вы должны создать файл с именем конвенция "app.php", этот файл будет содержать заданную траудцию языка следующим образом:
<?php
return [
'Hola' => 'Hello',
'Mundo => 'World'
];
До сих пор у нас есть наши настройки, чтобы включить его в Yii, вы должны включить компонент i18n в файле common/config/main-local.php
'components' => [
....
'i18n' => [
'translations' => [
'app*' => [
'class' => 'yii\i18n\PhpMessageSource',
# El archivo de traducciones se encuentra en:
# folder/to/project/common/messages
'basePath' => '@common/messages',
# Para el componente la variable sourceLanguage
# siempre debe estar por defecto 'en-US'
'sourceLanguage' => 'en-US',
'fileMap' => [
'app' => 'app.php',
'app/error' => 'error.php',
],
],
],
],
....
]
При этом у нас уже включен перевод, чтобы установить, какой перевод приложение по умолчанию будет стабильным в mail-local.php
<?php
return [
....
'language' => 'en' # El proyecto se inicializa con la traducción en inglés
....
components => [
....
],
....
]
Уже для того, чтобы иметь переводимые тексты, в представления вы должны использовать только собственную функцию Yii:
<div>
<label> <?= Yii::t('app', 'Hola') ?> </label>
<label> <?= Yii::t('app', 'Mundo') ?> </label>
</div>
Вы можете продолжать добавлять больше поддержки для большего количества языков, создавая больше папок в common / messages с подпапками и архивами перевода, которые вы хотите поддерживать для приложения.
Компонент user
в Yii2 по умолчанию имеет класс yii\web\User
, который используется для получения информации о пользователе при входе в Yii2 из веб-браузера.
В консоли этот класс недоступен по умолчанию, и его необходимо зарегистрировать или использовать другой эквивалентный класс для консоли (либо разработанный вами, либо 3-й).
Рекомендую добавить:
'class' => 'yii\web\User',
К вашему компоненту user
в конфигурации консоли или избегайте его использования, потому что он сказал компонент не предназначен для использования в консоли, по той причине, что в консоли нет аутентификации пользователей, как в интернете, или получения параметров через form, для этого есть классы, которые вы можете найти на Страница официальной документации, набрав в поисковой системе: Yii \ console.
Перечисленные в нем классы имеют свойства и методы, которые могут использоваться для создания компонентов, взаимодействующих с помощью консоль.
Более официальная информация (на английском языке) о:
- User: yii\web\User-Yii Framework 2.0 API Documentation
- IdentityInterface: yii\web\IdentityInterface-Yii Framework 2.0 API Documentation
Приветствия.