CakePHP将自动假设$validate数组中的所有模型验证错误消息都是本地化的。但是,我不想翻译模型验证消息。如何实现这一点,有什么建议吗?
最简单、最简单的方法就是不翻译这些字符串。所以,如果在你的.po文件
Mistake here -> Error aqui //don't do that
Mistake here -> Mistake here
并且您的验证错误会被"翻译"为相同的语言。
如果您只是不想自己筛选哪些字符串来自验证,哪些是"正常"字符串,请更改模型的验证域(在AppModel中进行,这样您只需要进行一次)。
class User extends AppModel {
public $validationDomain = 'validation_errors';
}
现在,您的验证消息将在新的验证域中,而不是在default.pot中,所以您不能翻译整个"validation_errors.pot"文件,这样就可以了。
此部分仅对cake 2.5有效,我不能确定它是否适用于其他版本
现在,如果你想要真正"困难"的方式,并从地球上删除该功能,你必须覆盖Cake lib中的一些功能。我不建议直接在lib文件夹中更改代码,只建议扩展类并替换app/lib中的代码,否则升级版本会很痛苦
您必须修改的类和函数应该是lib/Cake/Model/Validator
中的CakeValidationSet
,函数是_processValidationResponse
所有具有类似的部件
__d($this->_validationDomain, $result, $args);
应该替换为vsprintf($result, $args)
或类似的(取决于参数的名称。该__d
函数在该函数内被调用4次,因此替换所有参数。
就我个人而言,我只会更改验证域,不翻译文件,然后就完成了。搜索翻译这些消息的代码真的不值得付出努力(除了,你知道,只是为了知道它是如何完成的)。