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

Я пытаюсь перевести некоторые строки Sonata Admin - list page - строки, используя .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. Что здесь могло происходить?


person ReynierPM    schedule 12.12.2015    source источник


Ответы (1)


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

По типам форм:

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

в шаблонах веточки:

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

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

person xurshid29    schedule 12.12.2015
comment
Можете ли вы еще раз взглянуть на ОП по горизонтальной линейке? Я внес правку, потому что не работает для меня - person ReynierPM; 28.12.2015
comment
@ReynierPM Вы читали эту страницу документации? - person xurshid29; 28.12.2015
comment
да, я сделал, но что мне здесь не хватает? Мне нужно что-то еще настроить? Я не совсем понимаю, можете ли вы указать мне правильное направление? - person ReynierPM; 28.12.2015
comment
@ReynierPM Я сейчас на работе. Я посмотрю на твои проблемы позже, дома. - person xurshid29; 28.12.2015
comment
не спешите, просто посмотрите, когда вы сможете это сделать, и спасибо за вашу помощь - person ReynierPM; 28.12.2015