Internationalization 如何从yii2中的核心消息覆盖所需消息

Internationalization 如何从yii2中的核心消息覆盖所需消息,internationalization,yii2,translation,Internationalization,Yii2,Translation,在yii2中,我想覆盖一些核心消息转换,例如: 在@yii/messages/vi/yii.php中,has key=>翻译的消息: 'Update' => 'Sửa' 但在我的应用程序中,我想将其更改为: 'Update' => 'Cập nhật' 我已经创建了文件:@app/messages/vi/yii.php,其中只有一个需要覆盖的消息: return [ 'Update' => 'Cập nhật' ]; 在main.php配置中,我向组件添加了以下内

在yii2中,我想覆盖一些核心消息转换,例如: 在@yii/messages/vi/yii.php中,has key=>翻译的消息:

'Update' => 'Sửa'
但在我的应用程序中,我想将其更改为:

'Update' => 'Cập nhật'
我已经创建了文件:@app/messages/vi/yii.php,其中只有一个需要覆盖的消息:

return [
    'Update' => 'Cập nhật'
];
在main.php配置中,我向组件添加了以下内容:

'i18n' => [
      'translations' => [
            'yii' => [
                'class' => 'yii\i18n\PhpMessageSource',
                'basePath' => '@app/messages'
           ],
      ],
],

它可以工作,但仅适用于覆盖消息,核心的其他消息不起作用。

尝试类似的操作

'i18n'=>[

                    'yii'=>[
                        'class' => 'yii\i18n\PhpMessageSource',
                        'basePath' => "@vendor/yiisoft/yii2/messages",
                        'sourceLanguage' => 'en_US', // put your language here
                        'fileMap' => [
                            'yii'=>'yii.php',
                        ]
                    ]
                ]
            ],

我认为您应该将yii.php从core复制到
@common/messages//yii.php
并对其进行编辑。它应该工作稳定。

感谢您的快速解决方案,但是如果核心消息将被更新,那么我们将丢失它们。我认为我们应该只覆盖所需的消息,而不是从core.core更新复制所有消息,然后是当前消息不更新。这不会影响您当前的项目。所以它工作稳定。您的解决方案对我没有帮助,文件映射只是用于将类别映射到物理文件。