我已经设置了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
答案 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
需要覆盖预定义的类别和阿拉伯语的问题