2016-03-07 3 views
1

Я не могу использовать переводы с переменными в Sonata, как и в обычных контроллерах Symfony.Соната: переводы с параметрами

В мой контроллер:

$this->setSonataFlashSuccess(
    $this->get('translator')->trans('flash_create_success', [ 
     '%link%' => 'abcd', 
     '%id%' => '1234' 
    ]) 
); 

Мой шаблон:

{{ message|trans|raw }} 

Мои переводы файл 'SonataAdminBundle.yml':

flash_create_success: Created with success: <a href="%link%">#%id%</a> 

Визуализированное HTML:

Created with success: <a href="%link%">#%id%</a> 

Таким образом, перевод работал, но не заменил выражения Link и Id. Есть ли что-то особенное в переводах в Сонате? Все работает отлично в остальной части приложения.

ответ

0

Когда вы пишете файл переводов, вы должны называть его иначе, чем оригинал (например, admin_messages.[langage].yml), в противном случае будет использоваться оригинал SonataAdminBundle.[locale].yml.

Таким образом, вы должны создать файл в связке, как:

# YourBundle/Resources/translations/admin_messages.en.yml` 
flash_create_success: Created with success: <a href="%link%">#%id%</a> 

и указать его в контроллере:

$this->get('translator')->trans(
    'flash_create_success', 
    array(
     '%link%' => 'abcd', 
     '%id%' => '1234' 
    ), 
    'admin_messages', // By default looks for a "messages.[_locale].yml" 
); 

Обратите внимание, что вам не нужно, чтобы перевести сообщение еще один время в вашем шаблоне, так как оно уже переведено в ваш контроллер.