Я пытаюсь перевести некоторые страницы списка администраторов Sonata - строки, используя файл .xliff
внутри моего пакета. Эти строки принадлежат моему набору, а не Сонате, так что это следующие шаги:
Создайте файл .xliff
по .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
строки на странице списка, и я не знаю, чего мне не хватает. Я прочитал несколько сообщений, как это, это и многое другое. Может ли кто-нибудь дать мне совет?
Поскольку предыдущий вопрос был исправлен с предоставленным ответом, но это почти то же самое, я решил отредактировать 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
или указать домен tranlation. пример:
В типах форм:
...
$builder->add('name', 'text', ['translation_domain' => 'PlatformBundle']);
...
в прутьях:
{{ 'name'|trans({}, 'PlatformBundle') }}
Я не знаю, что ListMapper
класс ListMapper
, но также должна быть поддержка (я думаю) для доменов трансляции.