如何使用messions.en.yml翻译symfony2形式的标签?

2022-08-30 16:02:16

我正在尝试使表单域的翻译正常工作。我在 Bundle 的 Ressource 文件夹中有。messages.en.yml

test: it works
form:
    description: Add a description.

我想在一个表单中构建一个表单,该表单可以相应地转换表单字段的标签。EntityType

$builder->add(
    'description',
    null,
    array('label' => 'form.description', 'required' => false)
);

然而,只显示字面字符串,而不是预期的翻译'form.description'Add a description.

翻译服务和 正确加载,因为我可以调用messages.en.yml

var_dump($this->get('translator')->trans('test'));

在控制器中,并获取转换后的结果。

当我想将字符串视为应该翻译的内容时,我错过了什么?'form.description'

我想我无论如何都必须在它们上调用trans函数,但是我怎么能自动地一次性使用它呢?


答案 1

我必须显式设置翻译域

例如

->add('description','hidden',
 array(
   "label"=>"form.description",
   "required"=>true,
   'translation_domain' => 'fooo'
 )
);

在以下情况下

fooo.de.xlf

答案 2

在 symfony 3.1 中,您不需要将转换器传递给表单类型构造函数。它将按表单字段名称自动翻译,如下所示:

控制器操作:

$form = $this->createForm(LoginType::class);

表单类型类:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('username',
            TextType::class, ['label_format' => '%name%',]
        );
}

以及您的翻译文件 (yml):

username: Your translation for username field

希望它能帮助别人:)


推荐