我有包含类别的表,而不是为每种语言都有name列,而是存储翻译,如下所示:
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?或者还有其他的方法来强迫翻译?
谢谢
发布于 2017-11-12 19:21:47
如果要翻译表单中的选择,可以设置
choice_translation_domain => 'messages'。
您的翻译必须在目录中。
app/Resources/translations目录;app/Resources/<bundle_name>/translations目录;Resources/translations/目录。通过Docs
并存储在文件messages.{NEEDED_LANGUAGE}.yml中,如@DOZ所说。
NEEDED_LANGUAGE可以是短的(en,de,ru,pl)或长(en_US,en_AU,en_GB)。
此外,您还可以根据需要命名您的翻译,但可以使用NEEDED_LANGUAGE符号。因此,您的category.yml文件必须命名为category.en.yml,并且必须存储在翻译目录中。
为了使用来自自定义文件的翻译,您必须在每个字段上或在小枝文件中全局手动设置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 yethttps://stackoverflow.com/questions/47216287
复制相似问题