sonataadmin参考指南-翻译(Translation)

在admin类里有两个主要目录名称

  • SonataAdminBundle:这个目录可以在不同的admin下共享翻译信息。
  • messages:这个目录是在当前的admin下使用翻译信息。

在理想状态下,改变messages这个目录,不会影响其他的admin类。

在admin类中的这个目录下,你有两个选项要配置:

-复写$translationDomain属性

-注入这个值到容器

一个admin实例化就能够得到translator实例,所以他能够在configureFields方法或者模板中实时翻译信息。

最后的解决方案是最灵活的,因为没有目录参数,所以推荐使用。

 

2.1  翻译字段标签(labels)

这个Admin bundle有一个定制的表单字段模板。最大的改变就是,原来提供的翻译域,是通过admin实例化或者字段描述去翻译标签。

 

2.1.1 覆写这个翻译域

这个翻译域(message 目录)能够覆盖 form group或者个体字段。

如果一个翻译域是设置再group层面,那么他就会级联group下的所有字段。

特定的使用扩展(Extensions)来覆写翻译域,这里的扩展和翻译将定义在一个bundle中,但是会实现在不同的admin实例中。

在一个字段中设置翻译域:

在下面的例子里form group设置了默认翻译域,并可以在form group的字段里也设置一个翻译域:

 

 2.1.2 设置lable名称

默认,这个label是一个没加工的字段名称。可以从add方法的第三个参数中定义label。

 

2.1.3 标签(label)策略

这是另一种玩法能够快速进行原型设计,或者说他能避免花费太多的时间去配置所有字段的label键:签(label)策略。

在默认情况下生成的标签使用一个简单的规则:

isValid => Is Valid

这个AdminBundle附带不同的label键生成策略:

  • sonata.admin.label.strategy.native: 默认 – 做可读的字符串 isValid => Is Valid
  • sonata.admin.label.strategy.form_component:从表单组件默认行为isValid => Isvalid
  • sonata.admin.label.strategy.underscore: 在前加上“form.label”字段名称的下划线的版本,更名为更加适合翻译令牌 isValid =>form.label_is_valid
  • sonata.admin.label.strategy.noop: 不改变字符串 isValid => isValid

sonata.admin.label.strategy.underscore会为成为更好的国际化的应用程序sonata.admin.label.strategy.native将是基于字段名原生(单)语言的应用程序更好。一开始你可以使用native策略最为合适,然后,当应用需要使用到通用的键进行翻译是,配置可以切换到underscore 。

当这个类被注册到容器是这个策略能够迅速配置:

注意:当前情况下这个label使用Translator。这个策略仅仅以一个快速的方法生成翻译键。这一切都将取决于对项目的要求。

注意:当策略方法被调用,context (breadcrumb, datagrid, filter, form, list, show等) and type (usually link or label) 参数传入。例如,你调用起来可能想这样getLabel($label_key, ‘breadcrumb’, ‘link’)

发表评论