Как правильно переводить строки в SonataAdminBundle

1

Я пытаюсь перевести некоторые страницы списка администраторов 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 (пока) не переведены, см. Рис. Ниже:

Изображение 174551

Зачем? Эти переводы находятся в том же файле, что и alias. Что может быть здесь?

Теги:
sonata
sonata-admin

1 ответ

2
Лучший ответ

Вы должны указать домен перевода явно, если вы создаете ваши файлы переводов, отличные от messages. messages - это домен перевода по умолчанию. У вас есть два варианта, переименовать PlatformBundle.es.xliff в messages.es.xliff или указать домен tranlation. пример:

В типах форм:

...
$builder->add('name', 'text', ['translation_domain' => 'PlatformBundle']);
...

в прутьях:

{{ 'name'|trans({}, 'PlatformBundle') }}

Я не знаю, что ListMapper класс ListMapper, но также должна быть поддержка (я думаю) для доменов трансляции.

  • 0
    Можете ли вы взглянуть на OP снова под горизонтальным правилом? Я сделал правку, потому что у меня не работает
  • 0
    @ReynierPM Вы читали эту страницу документа ?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню