在学说配置中配置Symfony表单标签



我目前正在一个项目中,我有很多具有很多字段的实体(客户,电话,电话,年龄,公司编号...),我正在这样做对于法国客户。所以我用英语编码:

class Client
{
    /**
     * @var integer
     */
    private $id;
    /**
     * @var string
     */
    private $firstName;
}

我有这样的配置:

AppBundleEntityClient:
type: entity
table: null
id:
    id:
        type: integer
        id: true
        generator:
            strategy: AUTO
fields:
    firstName:
        type: string
        length: 255
        options:
            label: Prénom

所以选项。法列贝尔似乎不起作用,我想知道我可以在哪里进行这些翻译,因为它会涉及很多字段,而且当我使用Sonata Admin时,我不想被义务将它们放入ClientAdmin类:

/**
 * @param FormMapper $formMapper
 */
protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
        ->add('firstName')
        ->add('lastName')
        ->add('birthDate', 'birthday')
    ;
}
/**
 * @param ShowMapper $showMapper
 */
protected function configureShowFields(ShowMapper $showMapper)
{
    $showMapper
        ->add('id')
        ->add('firstName')
        ->add('lastName')
        ->add('birthDate')
    ;
}

因为我必须至少翻译两次(形式,显示...),所以我很乐意在所有应用中处理一个翻译。

有什么想法吗?我研究了Gedmo Translotable Extension,但它与我想要的内容不符:我只是想翻译表单的标签,整个应用程序将以独特的语言:法语。

Symfony 2.6学说2.2至2.5

对于那些不知道的人,事实证明自动标签已经是翻译键,您只需要在您的表单中指定translation_domain,所以我现在有一个 messages.fr.yml

First Name: Prénom

就足够了!无需生成/指定翻译标签。另外,它可以在具有相似字段的形式之间重复使用!这在我们之外的奏鸣曲admin的关注点中起作用。

您应该看看这个。它将帮助您自动化翻译过程。http://jmsyst.com/bundles/jmstranslationbundle您只需要使用键而不是真实标签(尽管在您的情况下是可选的),例如:

$formMapper
        ->add('firstName',null, array('label'=>'sonata.user.firstName')

然后您只运行一个命令,它将在不错的Web GUI中提取所有键,并且您可以用任何想要的语言从那里翻译它们。

尝试以下:

 /**
 * @param OptionsResolverInterface $resolver
 */
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'AppBundleEntityClient',
        'label' => 'Prénom'
    ));
}

最新更新