Php 表单是否自动使用Symfony 4中的翻译?

Php 表单是否自动使用Symfony 4中的翻译?,php,symfony,internationalization,symfony-forms,symfony4,Php,Symfony,Internationalization,Symfony Forms,Symfony4,我正在将一个应用程序从Symfony 3升级到Symfony 4 我注意到新版本中的探查器在我的一条具有表单的路由上出现了一些错误。错误出现在翻译->翻译消息->缺少: 这些消息对于给定的区域设置不可用,并且在回退区域设置中找不到。将它们添加到翻译目录中,以避免Symfony输出未翻译的内容 每个表单字段都列在“缺少的消息”下 在旧版本中我没有做过任何翻译,所以我想知道为什么新版本需要翻译。这是现在自动与表单关联的东西吗?如果是的话,有没有办法关掉它?此应用程序确实不需要它。您应该禁用表单中的翻

我正在将一个应用程序从Symfony 3升级到Symfony 4

我注意到新版本中的探查器在我的一条具有表单的路由上出现了一些错误。错误出现在翻译->翻译消息->缺少:

这些消息对于给定的区域设置不可用,并且在回退区域设置中找不到。将它们添加到翻译目录中,以避免Symfony输出未翻译的内容

每个表单字段都列在“缺少的消息”下


在旧版本中我没有做过任何翻译,所以我想知道为什么新版本需要翻译。这是现在自动与表单关联的东西吗?如果是的话,有没有办法关掉它?此应用程序确实不需要它。

您应该
禁用
表单中的翻译,如下所示:

$builder
    ......
    ......
    ->add('budget', MoneyType::class, array(
          'label_attr' => array('class' => 'control-label'),
          'attr' => array('class' => 'span11'),
          ...
          'translation_domain' => false
    ))
    ......
    ......
    ;

您应该禁用
表单中的
翻译,如下所示:

$builder
    ......
    ......
    ->add('budget', MoneyType::class, array(
          'label_attr' => array('class' => 'control-label'),
          'attr' => array('class' => 'span11'),
          ...
          'translation_domain' => false
    ))
    ......
    ......
    ;

当您在框架包中启用翻译时,表单将尝试通过自动注册的
TranslationExtension
使用它们。如果您不需要任何翻译,可以禁用它们。请注意,表单上的验证错误将作为其翻译键而不是消息返回

在Symfony 3中,设置应位于
app/config/config.yml
中,在Symfony 4目录结构中,它们应位于
config/packages/framework.yaml
config/packages/translation.yaml
下:

framework:
    translator: ~ # just set this to false if you don't want any translations to be used
您的另一个选项是防止注册
TranslationExtension
,或者设置

另一种选择是忽略缺少翻译的通知。由于翻译是缓存的,并且总是返回到键(在您的情况下是实际的标签),因此不会对性能产生任何影响或其他负面影响


编辑:关于你的最后一个问题,我认为从Symfony 3到Symfony 4,这种行为没有多大变化,你以前应该见过类似的行为。我猜你之前没有注意到这个警告,但它就在那里。不过这只是猜测。

当您在框架包中启用翻译时,表单将尝试通过自动注册的
TranslationExtension
使用它们。如果您不需要任何翻译,可以禁用它们。请注意,表单上的验证错误将作为其翻译键而不是消息返回

在Symfony 3中,设置应位于
app/config/config.yml
中,在Symfony 4目录结构中,它们应位于
config/packages/framework.yaml
config/packages/translation.yaml
下:

framework:
    translator: ~ # just set this to false if you don't want any translations to be used
您的另一个选项是防止注册
TranslationExtension
,或者设置

另一种选择是忽略缺少翻译的通知。由于翻译是缓存的,并且总是返回到键(在您的情况下是实际的标签),因此不会对性能产生任何影响或其他负面影响


编辑:关于你的最后一个问题,我认为从Symfony 3到Symfony 4,这种行为没有多大变化,你以前应该见过类似的行为。我猜你之前没有注意到这个警告,但它就在那里。不过这只是一个猜测。

您使用的是哪个版本的Symfony 3?@FabienPapet 3.2.9您使用的是哪个版本的Symfony 3?@FabienPapet 3.2.9您是对的,不同版本之间没有更改。我以前从未看到过警告,因为翻译程序在我的config.yml中被注释掉了,当我启用它时,当然我也在旧版本中得到了警告。谢谢你的解释,这很有帮助。你是对的,这在不同版本之间没有改变。我以前从未看到过警告,因为翻译程序在我的config.yml中被注释掉了,当我启用它时,当然我也在旧版本中得到了警告。谢谢你的解释,这很有帮助。