Я только начал использовать Yii 2 и уже столкнулся с некоторыми проблемами, которые я не могу понять сам.
Я установил переводчик, чтобы использовать мою БД вместо таких файлов (и две таблицы message
а также source_message
):
'i18n' => [
'translations' => [
'app*' => [
'class' => 'yii\i18n\DbMessageSource',
//'basePath' => '@app/messages',
//'sourceLanguage' => 'en',
],
],
],
Я даже установил параметр переводчика в true
:
public $forceTranslation = true;
Теперь я создаю текст для перевода следующим образом:
<?=Yii::t('app', 'Congratulations!');?>
Когда я проверяю отладочную информацию, я вижу, что был только один запрос:
SELECT
"t1"."message" AS "message",
"t2"."translation" AS "translation"FROM
"source_message" "t1",
"message" "t2"WHERE
t1.id = t2.id AND
t1.category = 'app' AND
t2.language = 'en'
Это ничего не возвращает, так как нет переводов. Теперь, что я не могу понять, как делать система автоматически создает новый перевод, для отсутствующих переводов.
Такая функция уже встроена или мне нужно создать ее самостоятельно? Потому что я ничего не мог найти в интернете.
И, если нет, какой правильный способ сделать это?
Я нашел этот скрипт Александр Зеленин что сделал именно то, что мне было нужно: https://github.com/zelenin/yii2-i18n-module
Компонент использует юй \ i18n \ MissingTranslationEvent для автоматического добавления отсутствующих переводов в базу данных
Других решений пока нет …