2015-06-21 4 views
1

Я использую пакет администрирования Sonata с пакетом User Sonata в приложении Symfony 2.7. У меня есть страница «Администратор свойств». Вот его конфигурация в моих services.yml:Ярлык перевода для поля Choice не работает в Sonata Admin Datagrid filter

// ... 
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. Вот скриншот списка свойств.

enter image description here

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.

enter image description here

У меня есть переводчик с поддержкой в ​​config.yml и parameters.yml.

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

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

ответ

1

Я решил эту проблему, добавив /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.xliffunlike what is said in the symfony documentation.

+0

Я использовал это обходное решение какое-то время, и это было здорово. Затем я кое-что обновил (пока не выяснил, в чем причина), и теперь у меня есть «1» и «2» вместо «Да» и «Нет», и фильтрация не работает. Это звонит с колокольчиками с кем-нибудь? – jrg

+0

@jrg это решение вашей проблемы, http://stackoverflow.com/a/37864256/5763965 Я ищу «глобальное» решение, вместо этого скопируйте весь код в каждый класс администратора. –

0

Прежде всего, проверьте, что говорит профайлер, в версии 2.7 вы можете проверить отсутствующие переводы. Просто проверьте, что перевод отсутствует и поместить его в приложение/Ресурсы/переводы/MyBundle.en.xliff

0

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