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