Метка перевода для поля выбора не работает в фильтре Sonata Admin Datagrid

Я использую Sonata Admin Bundle с Sonata User Bundle в своем приложении Symfony 2.7. У меня есть страница администратора собственности. Вот его конфигурация в моем services.yml:

// ...
mybundle.admin.property:
    class: MyBundle\Admin\PropertyAdmin
    tags:
        - { name: sonata.admin, manager_type: orm, group: Property, label: Properties }
    arguments:
        - ~
        - MyBundle\Entity\Property
        - 'MyBundle:PropertyAdmin'

Я добавил две настраиваемые кнопки действий в список администратора свойства. Мне пришлось добавить две строки перевода action_rooms и action_stations для тех двух кнопок в app/Resource/SonataAdminBundle/translations/SonataAdminBundle.en.xliff, которые я скопировал из vendor/sonata-project/admin-bundle/Sonata/AdminBundle/Resources/translations/SonataAdminBundle.en.xliff. Они работают нормально.

Проблема в том, что перевод для label_type_yes и label_type_no в фильтре datagrid не работает, хотя они определены в SonataAdminBundle.en.xliff. Вот скриншот списка свойств.

введите здесь описание изображения

Я создал app/Resources/translations/MyBundle.en.xliff с содержимым SonataAdminBundle.en.xliff и добавил setTranslationDomain в services.yml для mybundle.admin.property, но безуспешно.

    calls:
        - [setTranslationDomain, ['MyBundle']]

Они также не работают в списке пользователей /admin/sonata/user/user/list, созданном Sonata User Bundle. Я заметил, что он не работал до того, как я создал app/Resource/SonataAdminBundle/translations/SonataAdminBundle.en.xliff.

введите здесь описание изображения

У меня включен переводчик в config.yml и parameters.yml.

// config.yml
framework:
    translator:      { fallbacks: ["%locale%"] }

// parameters.yml
parameters:
    // ..
    locale: en

person Sithu    schedule 21.06.2015    source источник


Ответы (3)


Я решил это, добавив /app/Resources/translations/messages.en.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="file.ext">
        <body>
            <trans-unit id="filter.label_enabled">
                <source>filter.label_enabled</source>
                <target>Enabled</target>
            </trans-unit>
            <trans-unit id="label_type_yes">
                <source>label_type_yes</source>
                <target>Yes</target>
            </trans-unit>
            <trans-unit id="label_type_no">
                <source>label_type_no</source>
                <target>No</target>
            </trans-unit>
        </body>
    </file>
</xliff>

Кажется, что это переопределяет app/Resource/SonataAdminBundle/translations/SonataAdminBundle.en.xliff в отличие от того, что сказано в документация Symfony.

person Sithu    schedule 23.06.2015
comment
Я использовал этот обходной путь некоторое время, и это было здорово. Потом я что-то обновил (пока не разобрался в чем причина) и теперь у меня вместо Да и Нет показывается 1 и 2, и фильтрация не работает. Это кому-нибудь звонит в колокола? - person jrg; 06.07.2016
comment
@jrg это решение вашей проблемы, stackoverflow.com/a/37864256/5763965 я ищу глобальный вместо этого скопируйте весь код в каждый класс администратора. - person jjgarcía; 01.02.2017

Прежде всего проверьте, что говорит профилировщик, в версии 2.7 у вас есть возможность проверять отсутствующие переводы. Просто проверьте, какого перевода не хватает, и поместите его в app/Resources/translations/MyBundle.en.xliff.

person kamwoz    schedule 21.06.2015

Кажется, это ошибка в последней версии Sonata, потому что label_type_yes/label_type_no использует домен «messages» вместо SonataAdminBundle/SonataCoreBundle.

person Pavel Sokolov    schedule 16.07.2015