我似乎无法像在普通的symfony控制器中一样使用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>
所以翻译工作但不是替换表达式Link和Id。索纳塔的翻译有什么特别之处吗?在应用程序的其余部分,一切正常。
答案 0 :(得分: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"
);
请注意,您不需要在模板中再次翻译该消息,因为它已在您的控制器中翻译过。