我目前正在使用yii2构建第二个系统。它将使用Yii1数据库中的一些表进行翻译。 Yii1项目最初是使用文件翻译的,但现在已经移到了db。 Yii1系统的所有翻译都使用三个类别app
,flash
,email
中的一个,绝大多数使用app
。
在Yii2项目中,我在web.php配置文件中有以下内容。
'i18n' => [
'translations' => [
'*' => [
'class' => 'yii\i18n\DbMessageSource',
'db' => 'cdb',
'sourceMessageTable' => 'translation_source',
'messageTable' => 'translation',
'forceTranslation'=>true,
],
],
],
系统上使用app
的所有翻译均未翻译,但所有其他类别均为。如果我将上面的代码更改为
'i18n' => [
'translations' => [
'app*' => [
然后我收到其他类别的错误,但没有app
,app
字符串按预期翻译。我得到的错误是
无法找到“flash”类别的消息来源。
但是,如果我将配置更改为以下内容,则适用于所有翻译。
'i18n' => [
'translations' => [
'*' => [
'class' => 'yii\i18n\DbMessageSource',
'db' => 'cdb',
'sourceMessageTable' => 'translation_source',
'messageTable' => 'translation',
'forceTranslation' => true,
],
'app*' => [
'class' => 'yii\i18n\DbMessageSource',
'db' => 'cdb',
'sourceMessageTable'=>'translation_source',
'messageTable' => 'translation',
'forceTranslation' => true,
],
],
],
我必须两次有效地包含相同的代码块,这似乎很奇怪。任何人都可以告诉我如何在一个数组中实现这一点,或者这是预期的行为?
**更新**
中看到了这一点