Как автоматически вставить новый перевод в базу данных в Yii 2

Я только начал использовать 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'

Это ничего не возвращает, так как нет переводов. Теперь, что я не могу понять, как заставить систему автоматически создавать новый перевод для отсутствующих переводов.

Эта функция уже встроена или мне нужно создать ее самостоятельно? Потому что я ничего не нашел в Интернете.

А если нет, как правильно это сделать?


person Peon    schedule 26.11.2014    source источник


Ответы (1)


Я нашел этот скрипт от Александра Зеленина, который сделал именно то, что мне было нужно: https://github.com/zelenin/yii2-i18n-module

Компонент использует yii\i18n\MissingTranslationEvent для автоматического добавления отсутствующих переводов в базу данных

person Peon    schedule 28.11.2014