如何在Sonata管理包中翻译标签


How to translate labels in Sonata Admin Bundle

我正在使用带有Sonata管理包的Symfony 2.3。我知道我可以用这种方式翻译标签:

->add('shortDescription', null, array('label'=>'shortDescriptionTranslated'))

但这只能通过"configureFormFields"方法实现,而不能用于dataGrid和listFields。

你能给我提供一个完整的例子,用全局的方式翻译标签吗?我看了这里(Sonata管理包中的标签),但我不知道在xliff文件中写什么。

谢谢!

您是否查看了索纳塔项目网站上的翻译文档:http://www.sonata-project.org/bundles/admin/master/doc/reference/translation.html?

您可以为每个管理员设置一个全局目录,默认目录为"消息"。根据翻译策略的不同,源密钥会有所不同,一旦获得密钥,您就可以使用xliff或yaml文件将相关标签翻译为Symfony Framework中的任何其他翻译。

它以相同的方式工作:

protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
    $datagridMapper
        ->add('id', null, array('label' => 'ID'))
        ->add('username', null, array('label' => 'Логин'))
    ;
}
protected function configureListFields(ListMapper $listMapper)
{
    $listMapper
        ->addIdentifier('id', null, array('label' => 'ID'))
        ->addIdentifier('username', null, array('label' => 'Логин'))
    ;
}

您可以在此处看到结果:http://joxi.ru/V57lUdg5CbCqHxR9UwY

通过重写xliff文件,可以转换标准的UI元素,而不是实体标签。