我正在尝试翻译一些Sonata Admin - 列表页面 - 使用我的包中的.xliff
文件的字符串。那些字符串属于我的包而不属于Sonata所以这就是我遵循的步骤:
在.xliff
下创建一个src/Clanmovil/PlatformBundle/Resources/translations/PlatformBundle.es.xliff
文件,如下所示:
<?xml version="1.0"?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file source-language="en" datatype="plaintext" original="PlatformBundle.en.xliff" >
<body>
<trans-unit id="name">
<source>name</source>
<target>Nombre</target>
</trans-unit>
<trans-unit id="description">
<source>description</source>
<target>Descripción</target>
</trans-unit>
<trans-unit id="active">
<source>active</source>
<target>Activo?</target>
</trans-unit>
</body>
</file>
</xliff>
在label
下设置src/Clanmovil/PlatformBundle/Controller/Admin/CategoryAdmin.php
属性,如下所示:
class CategoryAdmin extends Admin
{
...
// Fields to be shown on lists
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->add('name', null, array(
'label' => 'name'
))
->add('active', null, array(
'label' => 'active'
));
...
}
...
}
设置app/config/config.yml
如下:
parameters:
locale: es
framework:
#esi: ~
translator: { fallbacks: ["%locale%"] }
default_locale: "%locale%"
....
并且无法正常工作我仍在列表页面上看到name
和active
字符串,而我不知道自己错过了什么。我已阅读了几篇帖子this,this等等。可以给我一些建议吗?
由于前一个问题已经修复了所提供的答案,但这几乎是一样的我决定编辑OP而不是创建一个新的,所以我们走了。请查看SonataAdmin的以下设置:
sonata_admin:
dashboard:
groups:
configuration:
icon: <i class="fa fa-lg fa-fw fa fa-folder"></i>
label: configuration
items:
- sonata.admin.category
- sonata.admin.command
- sonata.admin.alias
这是Clanmovil/PlatformBundle/Resources/config/services.yml
的服务定义:
services:
sonata.admin.alias:
class: Clanmovil\PlatformBundle\Controller\Admin\AliasAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: "Configuration", label: "alias" }
arguments:
- ~
- Clanmovil\PlatformBundle\Entity\Alias
- ~
sonata.admin.category:
class: Clanmovil\PlatformBundle\Controller\Admin\CategoryAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: "Configuration", label: "category" }
arguments:
- ~
- Clanmovil\PlatformBundle\Entity\Category
- ~
sonata.admin.command:
class: Clanmovil\PlatformBundle\Controller\Admin\CommandAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: "Configuration", label: "command" }
arguments:
- ~
- Clanmovil\PlatformBundle\Entity\Command
- ~
但字符串configuration
,command
和category
(目前尚未翻译),请参见下图:
为什么呢?这些翻译与alias
翻译在同一个文件中。这可能会发生什么?
答案 0 :(得分:2)
如果您创建的翻译文件不同于messages
,则必须明确指定翻译域。 messages
是默认的翻译域。您有两种选择,将PlatformBundle.es.xliff
重命名为messages.es.xliff
或指定翻译域。例如:
在表单类型中:
...
$builder->add('name', 'text', ['translation_domain' => 'PlatformBundle']);
...
在twig trmplates中:
{{ 'name'|trans({}, 'PlatformBundle') }}
我不知道ListMapper
类是什么,但也应该支持(我猜)翻译域。