2014-09-11 3 views
1

CakePHP автоматически предполагает, что все сообщения об ошибках проверки модели в вашем массиве $ validate предназначены для локализации. Но я не хочу переводить сообщения проверки модели. Как добиться этого, любое предложение?Как отключить перевод сообщений проверки модели только в cakePHP?

+1

Всегда указывайте свою точную версию CakePHP и соответствующим образом помечайте свой вопрос! – ndm

ответ

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, просто расширяя классы и заменяя их в приложении/lib, иначе обновление версий будет больно.

Класс и функции, которые вы должны будете модифицировать должны быть CakeValidationSet в lib/Cake/Model/Validator и функция _processValidationResponse

Все части, которые имеют что-то вроде этого

__d($this->_validationDomain, $result, $args); 

следует заменить с vsprintf($result, $args) или аналогично (в зависимости от названия параметров). Эта функция __d называется 4 раза внутри этой функции, поэтому замените их все.

Лично я бы просто изменил домен проверки, не переведет файл и не буду с ним работать. Поиск кода, который переводил эти сообщения, действительно не стоил усилий (за исключением, вы знаете, просто знать, как это делается).

+0

Hi @Nunser, спасибо за ответ, ваше решение хорошо, но оно работает только в том случае, если я поддерживаю отдельные файлы для сообщений об ошибках проверки модели и обычных сообщений. Это их другое решение, так что им не нужно управлять двумя отдельными файлами? – Vikramraj

+0

Привет. Да, третий вариант, где вам нужно изменить код lib (на самом деле, продлить класс и изменить его), и заменить код, описанный в ответе, позволит вам иметь только один файл и сказать торт не переводить * любое * подтверждение. – Nunser

Смежные вопросы