我正在尝试使用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";
。
答案 0 :(得分:1)
从源头来看,帮助者不尊重翻译,只是抓住验证规则中定义的原始值,参见JqueryValidationHelper::meta()。
我建议创建一个问题单并请求添加适当的翻译支持,如CakeValidationSet::_processValidationResponse()中所示。或者只是自己添加......