Yii2国际化翻译不适用于模型验证

时间:2015-04-24 13:26:17

标签: php yii2

我已经设置了i18n,除了核心验证器和模型属性标签之外,它还能完美地运行。任何想法如何解决?

common\models\Student.php中,我设置了验证规则,以便密码输入的最小长度为5个字符,并且手机是必需的:

['password', 'string', 'length' => [5]],
['phone', 'required'],

我还设置了属性标签:

public function attributeLabels() {
    return [
        'password' => Yii::t('app', 'Password'),
        'phone' => Yii::t('app', 'Phone Number'),
    ];
}

我还在消息文件中设置了各自的翻译(除了验证之外的所有内容都适用)

现在,当我用英语验证模型时,我得到以下内容:

  

密码至少应包含5个字符。

     

电话号码不能为空。

这显示英语完美运作。但是,当我尝试阿拉伯语时,我得到以下内容:

  

{attribute}يجبأنيحتويعلىأكثرمن{min,number} {min,plural,one {حرف}很少{حروف}很多{حرف}}。

     

电话号码لايمكنتركهفارغا。

从Yii2框架文件加载阿拉伯语翻译: https://github.com/yiisoft/yii2-framework/blob/master/messages/ar/yii.php

2 个答案:

答案 0 :(得分:0)

你可以这样做:

['password', 'string', 'length' => [5], 'message' => Yii::t('app', 'Password must be over 5 characters long')],
['phone', 'required', 'message' => Yii::t('app', 'phone is required')],

答案 1 :(得分:0)

问题解决了 https://github.com/yiisoft/yii2/issues/8173

需要覆盖预定义的类别和阿拉伯语的问题