当您使用@Assert\NotBlank
约束并且给定字段为空时,您会收到错误:
此值不应为空
我想在应用程序范围内更改此消息,而不更改Symfony2源代码。怎么做到这一点?
答案 0 :(得分:20)
Cutomizing验证错误消息非常简单,但最初看起来很棘手。
默认区域设置
首先,您应该更改应用程序的默认语言环境。在版本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
。
验证消息
验证邮件在各自的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上的官方文档。
答案 1 :(得分:3)
除了gilden的说明之外,您还必须确保framework.translator
中的config/config.yml
块已取消注释(现在默认情况下会对其进行注释)。如果你不这样做,你仍然会得到原始的英文信息。
答案 2 :(得分:0)
如果有人在 2021 年有疑问,我只需将“错误”(eng) 约束消息切换为“Erreur”(fr):
注意: