如何仅在cakePHP中禁用模型验证消息的转换?

时间:2014-09-11 07:17:19

标签: php cakephp

CakePHP将自动假设$ validate数组中的所有模型验证错误消息都要进行本地化。但是,我不想翻译模型验证消息。如何实现这一点,任何建议?

1 个答案:

答案 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次,因此替换所有函数。

就个人而言,我只是更改验证域,不会翻译文件,并完成它。搜索翻译此消息的代码实际上是不值得的(除了,知道它只是为了知道它是如何完成的)。