我的表单类型如下:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', null, [
'translation_domain' => 'Admin.Global',
])
->add('isoCode', null, [
'translation_domain' => 'Admin.Global',
])
->add('languageCode')
->add('flag_image', FileType::class, [
'mapped' => false,
'label' => 'flag',
'constraints' => [
new Image([
'maxSize' => '1024K'
])
],
'required' => false,
'translation_domain' => 'Admin.Global',
])
->add('active', CheckboxType::class, [
'label_attr' => [
'class' => 'switch-custom'
]
])
->add('isDefault', CheckboxType::class, [
'label_attr' => [
'class' => 'switch-custom'
]
]);
}在我运行命令之后:
php bin/console translation:update --force en(or zh_CN)在Admin.Global+intl-icu.en(或zh_CN).xlf文件中只有'name‘标签
为什么在xlf文件中不包含isocode和flag?我是否要在每个表单类型中添加'translation_domain‘=> 'Admin.Global’?
发布于 2021-03-12 13:43:59
问题是,根据docs,translation:update命令仅从两个位置提取要转换的字符串:
注入或自动装配转换器服务并调用
您的表单类型类不是这两个类中的任何一个,因此它不会被处理。
您提到名称标签会进入xlf文件,而其他标签则不会。显然,name是从其他地方(例如从模板)获取的,而不是从form类获取的。
要处理表单类型类,可以安装JMSTranslationBundle。它提供了一个不同的命令translation:extract,该命令支持从(引用自docs)提取消息:
对定义为FormBuilder的->add()方法的选项的所有表单标签执行
https://stackoverflow.com/questions/66379830
复制相似问题