2012-01-24 5 views
8

При использовании @Assert\NotBlank ограничения и данное поле пусто, то вы получите сообщение об ошибке:Как настроить/локализовать сообщения Assert в Symfony2?

This value should not be blank

Я хотел бы изменить это сообщение приложения в ширине, без изменения исходного кода Symfony2. Как это сделать?

ответ

20

Сообщения об ошибках обрезания сообщений довольно просты, но сначала могут показаться сложными.

региональные настройки по умолчанию

Прежде всего, вы должны изменить региональные настройки по умолчанию приложения. В версиях 2.0.x правильное значение для изменения - framework.session.default_locale. Для справок в будущем, начиная с 2.1.0, это будет framework.default_locale. Обратитесь к the docs за правильным синтаксисом.

Языковой стандарт должен состоять из вашего языка и региона и определяется как language_REGION (list of languages, list of countries). Например, язык, используемый в Германии для немецкого языка, будет de_DE.

Validation сообщение

Validation сообщение жестко закодированы в соответствующих constraint classes.

Транслирующих сообщения проверки

Symfony использует Twig для отображения всех сообщений о проверке. Сам процесс является сложным и выходит за рамки этого вопроса, но важная часть заключается в том, что каждое сообщение ограничения отправляется через фильтр перевода, который в зависимости от локали пользователя (default_locale по умолчанию) переводит сообщения на правильный язык.

Чтобы изменить любой из переводов, просто скопируйте файл перевода с проверки с vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/translations/validators.{lang}.xlf по номеру app/Resources/translations/validators.{lang}.xlf где {lang} является языковой частью вашего стандарта по умолчанию.

Сделав первый, просто измените сообщения по умолчанию на то, что когда-либо вы увидите более подходящим. Если язык, на котором вам нужна поддержка, не существует, скопируйте любой файл перевода в тот же каталог и измените этот файл.

Чтобы узнать больше о том, как работает перевод в Symfony2, посетите официальную документацию по адресу translation.

+7

с Symphony 2.1 файлы теперь находятся в 'vendor/symfony/src/Symfony/Component/Validator/Resources/translations/validators. {Lang} .xlf' –

+3

Просто обновить этот ответ на поведение в новых версиях Symfony : in ** symfony 2.5 **, мне не нужно было копировать файлы, чтобы включить перевод для формы и сообщений обратной связи для проверки. Я просто должен был ... a) установить желаемый стандартный язык в параметрах.yml ('locale: xy') b) включить службу переводчика в config.yml (прокомментирован по умолчанию и будет обновлен с вашим желаемым резервным языком - в моем случае «ru») 'framework: translator: {fallback:" en "}' c) убедитесь, что по умолчанию locale в config.yml является set to defined locale from parameters.yml: 'framework: default_locale:"% locale% "' – Skug

3

Дополнительно к инструкциям по gilden вы должны убедиться, что блок framework.translator в config/config.yml раскоментирован (по умолчанию он комментируется). Если вы этого не сделаете, вы все равно получите оригинальные английские сообщения.

+0

Большое вам спасибо! –

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