如何正确翻译 SonataAdminBundle 中的字符串
How to properly translate strings in SonataAdminBundle
我正在尝试使用我的捆绑包中的 .xliff
文件翻译一些 Sonata Admin - 列表页面 - 字符串。这些琴弦属于我的包而不属于奏鸣曲所以这是我遵循的步骤:
在 src/Clanmovil/PlatformBundle/Resources/translations/PlatformBundle.es.xliff
下创建一个 .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>
在src/Clanmovil/PlatformBundle/Controller/Admin/CategoryAdmin.php
下设置label
属性如下:
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
位于同一个文件中。这里会发生什么?
如果您创建不同于 messages
的翻译文件,则必须明确指定翻译域。 messages
是默认的翻译域。您有两个选择,将 PlatformBundle.es.xliff
重命名为 messages.es.xliff
或指定翻译域。示例:
表单类型:
...
$builder->add('name', 'text', ['translation_domain' => 'PlatformBundle']);
...
在树枝模板中:
{{ 'name'|trans({}, 'PlatformBundle') }}
我不知道什么是 ListMapper
class,但应该也支持(我猜)翻译域。
我正在尝试使用我的捆绑包中的 .xliff
文件翻译一些 Sonata Admin - 列表页面 - 字符串。这些琴弦属于我的包而不属于奏鸣曲所以这是我遵循的步骤:
在
src/Clanmovil/PlatformBundle/Resources/translations/PlatformBundle.es.xliff
下创建一个.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>
在
src/Clanmovil/PlatformBundle/Controller/Admin/CategoryAdmin.php
下设置label
属性如下: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
位于同一个文件中。这里会发生什么?
如果您创建不同于 messages
的翻译文件,则必须明确指定翻译域。 messages
是默认的翻译域。您有两个选择,将 PlatformBundle.es.xliff
重命名为 messages.es.xliff
或指定翻译域。示例:
表单类型:
...
$builder->add('name', 'text', ['translation_domain' => 'PlatformBundle']);
...
在树枝模板中:
{{ 'name'|trans({}, 'PlatformBundle') }}
我不知道什么是 ListMapper
class,但应该也支持(我猜)翻译域。