forms - symfony 表单类型 translation_domain 不起作用?
问题描述
我的表单类型如下:
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 文件中只有“名称”标签
为什么 isocode 和 flag 不在 xlf 文件上?我是否将“translation_domain”=>“Admin.Global”添加到每个表单类型?
解决方案
问题在于translation:update
,根据文档,该命令仅从 2 个位置提取要翻译的字符串:
- 模板
- 任何注入或自动连接翻译服务并调用 trans() 方法的 PHP 文件/类。
您的表单类型类不是这两个,所以它没有被处理。
您提到名称标签进入 xlf 文件,而其他标签则没有。显然,名称来自其他地方(例如,来自模板),而不是来自表单类。
要处理表单类型类,您可以安装JMSTranslationBundle。它提供了一个不同的命令,translation:extract
其中包括支持从(来自docs的引用)中提取消息:
定义为 FormBuilder 的 ->add() 方法的选项的所有表单标签
推荐阅读
- sql-server - T-SQL 查询过滤导致无限执行
- java - Attribute returns Null Pointer Exception
- html - Visual Studio Code 二 html元素编辑问题
- javascript - Convert JSON to ViewModel and pass with token to Controller
- postgresql - How to execute an (expression involving columns of the same table) stored in another column of the table?
- java - 删除项目后 Recyclerview 未更新
- vue.js - Using multiple v-if inside v-for
- c# - Fill List