我刚刚开始使用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'
这不会返回任何内容,因为不存在任何翻译。现在,我无法弄清楚,如何使系统自动创建一个新的翻译,为缺少的翻译。
是否内置了这样的功能,或者我是否需要创建自己的功能?因为我在互联网上找不到任何内容。
而且,如果没有,这样做的正确方法是什么?
答案 0 :(得分:1)
我发现Aleksandr Zelenin的这个脚本完全符合我的要求:https://github.com/zelenin/yii2-i18n-module
组件使用 yii \ i18n \ MissingTranslationEvent 自动添加缺少的翻译到数据库