Symfony2项目。我使用的是JMSTranslationsBundle。
以下是来自控制器内部功能的片段:
if ($user->isAccountConfirmed()) {
$this->toolbar->addInfo('user.account.confirmed');
}
如何为' user.account.confirmed'生成翻译?在.xliff文件中?我的意思是,我应该为此函数添加哪些代码才能翻译它?
答案 0 :(得分:4)
查看available extraction methods,它解释了您的案例没有自动提取。
您需要在模板或控制器中使用trans
(或任何其他解释的方法)。如果没有此提示,提取器将无法找到您的消息。就个人而言,我在一个项目中使用了TranslationContainerInterface。
这样你只需在你的控制器中定义一个新方法,它返回“待翻译”字符串:
<?php
// ...
use JMS\TranslationBundle\Translation\TranslationContainerInterface;
use JMS\TranslationBundle\Model\Message;
class AcmeController extends Controller implements TranslationContainerInterface
{
/**
* {@inheritdoc}
*/
static function getTranslationMessages()
{
return [
Message::create('user.account.confirmed')
];
}
}
另一种解决方案是直接使用translater service。然后,提取器应再次看到对此服务的调用。 E.g:
/** @var $translator \Symfony\Component\Translation\TranslatorInterface */
$translator = $this->get('translator');
if ($user->isAccountConfirmed()) {
$this->toolbar->addInfo(
$translator->trans('user.account.confirmed')
);
}