修改 Yii2 自带的语言包

技巧库 · echo · 于 4年前 发布 · 4976 次阅读

需求

Yii 自带的表单字段唯一验证,返回的错误信息是:{attribute}的值"{value}"已经被占用了。产品经理觉得不好听,于是需求来了, 就是要换话术,虽然我知道可以在 Model 里面指定返回的错误信息,但是我不想一个一个的改,我想统一修改这个话术。

实现

思路来自@HarryZheng0907 :

设置i18n,把basePath指到你自己的语言包的目录,这样就可以用自己的语言包了,然后在自己的语言包里,用merge合并官方的语言包和自己想要改的字段

实现这个我们需要两步

修改配置文件,添加 i18n 配置

'components' => [
    // ...
    'i18n' => [
        'translations' => [
            'app*' => [
                'class' => 'yii\i18n\PhpMessageSource',
                'basePath' => '@app/messages',
                //'sourceLanguage' => 'en-US',
                'fileMap' => [
                    'app' => 'app.php',
                ],
            ],
        ],
    ],
],

添加文件

新建文件 app/messages/zh-CN/app.php, 代码如下:

<?php
return \yii\helpers\ArrayHelper::merge(
    require(Yii::getAlias('@yii') . '/messages/zh-CN/yii.php'),
    [
        '{attribute} "{value}" has already been taken.' => '{attribute}的值"{value}"已存在。',
    ]
);

然后就可以用了。

共收到 0 条回复 i18N 语言包 Yii2配置
没有找到数据。
添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册