如何在Yii 2中自动将新翻译插入数据库

时间:2014-11-26 17:41:25

标签: php internationalization yii2

我刚刚开始使用Yii 2并且已经遇到了一些我无法弄明白的问题。

我设置了翻译器,使用我的数据库而不是像这样的文件(以及两个表messagesource_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'

这不会返回任何内容,因为不存在任何翻译。现在,我无法弄清楚,如何使系统自动创建一个新的翻译,为缺少的翻译。

是否内置了这样的功能,或者我是否需要创建自己的功能?因为我在互联网上找不到任何内容。

而且,如果没有,这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

我发现Aleksandr Zelenin的这个脚本完全符合我的要求:https://github.com/zelenin/yii2-i18n-module

组件使用 yii \ i18n \ MissingTranslationEvent 自动添加缺少的翻译到数据库