2016-03-07 60 views
1

我似乎無法像在正常的symfony控制器中一樣在Sonata中使用帶有變量的翻譯。Sonata:帶參數的翻譯

在我的控制器:

$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> 

所以翻譯工作,但不是表達式鏈接和Id的替換。在Sonata中翻譯有什麼特別之處?一切工作正常在應用程序的其餘部分。

回答

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" 
); 

請注意,您不需要翻譯的消息多了一個因爲它已經在您的控制器中進行了翻譯。