我有一个包含类别的表,而不是每种语言都有名称列,我存储翻译所以它看起来像这样:
1 2 category.macbook_12.name img-12 category.macbook_12.title category.macbook_12.title macbook-12.jpg 0
2 category.macbook.name macbook category.macbook.title category.macbook.description macbook.jpg 0
3 2 category.macbook_air.name macbook-air category.macbook_air.title category.macbook_air.description macbook-air.jpg 0
4 3 category.macbook_air_11.name macbook-air-11 category.macbook_air_11.title category.macbook_air_11.description macbook-air-11.jpg 0
5 3 category.macbook_air_13.name macbook-air-13 category.macbook_air_13.title category.macbook_air_13.description macbook-air-13.jpg 0
6 2 category.macbook_pro.name macbook-pro category.macbook_pro.title category.macbook_pro.description macbook-pro.jpg 0
7 6 category.macbook_pro_13.name macbook-pro-13 category.macbook_pro_13.title category.macbook_pro_13.description macbook-pro-13.jpg 0
....
我尝试使用实体字段创建表单。像这样:
->add('categories', EntityType::class, [
'class' => Category::class,
'choice_label' => 'name',
'placeholder' => 'form.product.category.placeholder'
])
它没有翻译名称类别,但没有翻译它们。
我认为,我应该自定义entity_widget并添加| trans,但我找不到原始的,所以我可以编辑它,因为我不知道如何从实体中获取数据。
我在哪里可以找到原始的entity_widget? 或者还有另一种强制翻译的方法吗?
由于
答案 0 :(得分:1)
如果您想翻译表单中的选项,可以设置
choice_translation_domain => 'messages'
。
您的翻译必须在目录
中
app/Resources/translations
目录;app/Resources/<bundle_name>/translations
目录;- 任何捆绑包内的
Resources/translations/
目录。
并存储在文件messages.{NEEDED_LANGUAGE}.yml
中,如@DOZ所说。
NEEDED_LANGUAGE可以是短(en,de,ru,pl)或长(en_US,en_AU,en_GB)。
您也可以根据需要为翻译命名,但使用NEEDED_LANGUAGE表示法。因此,您的category.yml文件必须命名为category.en.yml,并且必须存储在翻译目录中。
要使用自定义文件中的翻译,您必须在每个字段或全局的twig文件中手动设置translation_domain和choice_translation_domain。
# src/{BUNDLE_NAME}/Resources/translations/messages.en.yml (based on symfony version)
category:
macbook_12.name: "Macbook 12"
macbook_12.title: "Macbook 12` laptop"
macbook.name: "Macbook"
macbook.title: "Macbook laptop"
form.product.category.placeholder: "Awesome macbooks here!"
# ... and yet