gpt4 book ai didi

symfony - 如何在Symfony2中自定义/本地化Assert消息?

转载 作者:行者123 更新时间:2023-12-04 04:57:45 25 4
gpt4 key购买 nike

当您使用@Assert\NotBlank约束并且给定字段为空时,则会出现错误:

This value should not be blank



我想在整个应用程序范围内更改此消息,而不更改Symfony2源代码。如何做到这一点?

最佳答案

定制验证错误消息非常简单,但乍一看似乎很棘手。

默认语言环境

首先,您应该更改应用程序的默认语言环境。在2.0.x版本中,要更改的正确值为framework.session.default_locale。供将来引用,从2.1.0开始,它将是framework.default_locale。有关正确的语法,请查询the docs

语言环境应由您的语言和地区组成,并且应定义为language_REGION(list of languageslist 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上的官方文档。

关于symfony - 如何在Symfony2中自定义/本地化Assert消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8988133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com