验证消息显示cakephp的翻译问题

时间:2014-01-27 11:48:46

标签: php validation cakephp

我正在尝试使用cakephp验证消息将我的项目国际化。文件生成.pot和更高版本.po似乎是正确的,问题是当在视图中显示验证错误时,始终显示默认消息(写在模型上),不要获取消息语言文件。

我尝试了两种方法来提取消息:

cake i18n extract
OR
cake i18n extract --validation-domain validation

在我的AppController中,我有:

public function beforeFilter() {
    $this->Session->write('Config.language', 'spa');
}

在我的Locale目录中,我有:

Locale / spa / LC_MESSAGES / default.po
                             validation.po

在我的PostModel中我有:

class Post extends AppModel {

 public $validationDomain = "validation";

  public $validate = array(
    'text' => array(
        'required' => array(
            'rule' => array('notEmpty'),
            'message' => '* Aquest camp és obligatori' //* This field is required -> in spanish -> Este campo es obligatorio            
        )
    )
  ); 
}

我正在使用JqueryValidationHelper.php,我创建了这样的输入:

<?php echo $this->jQueryValidation->input('text', array('required'));?>

我错过了什么?我必须告诉cakephp我的验证消息在哪里? default.po中的所有消息都正确显示,我不知道验证消息会发生什么......

由于


我编辑文件JqueryValidationHelper中的行和方法meta()

if (!empty($validateParams['message'])) {
    $msg = $validateParams['message'];
}

 if (!empty($validateParams['message'])) {
        $msg = __d('validation',$validateParams['message']);
 }

请谨慎使用__d()__(),具体取决于您如何在cake i18n extract(默认.po)中提取邮件,或者在模型中定义public $validationDomain = "validation";

1 个答案:

答案 0 :(得分:1)

从源头来看,帮助者不尊重翻译,只是抓住验证规则中定义的原始值,参见JqueryValidationHelper::meta()

我建议创建一个问题单并请求添加适当的翻译支持,如CakeValidationSet::_processValidationResponse()中所示。或者只是自己添加......