2015-11-05 54 views
2

Symfony2项目。我正在使用JMSTranslationsBundle。如何在控制器内部生成symfony2翻译?

下面是从功能内部控制片段:

if ($user->isAccountConfirmed()) { 
      $this->toolbar->addInfo('user.account.confirmed'); 
     } 

如何生成翻译为.xliff文件 'user.account.confirmed'?我的意思是,我应该添加哪些代码以便能够翻译此功能?

回答

2

看着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。此服务的调用应该再次对提取器可见。例如:

/** @var $translator \Symfony\Component\Translation\TranslatorInterface */ 
$translator = $this->get('translator'); 

if ($user->isAccountConfirmed()) { 
    $this->toolbar->addInfo(
     $translator->trans('user.account.confirmed') 
    ); 
} 
+0

感谢您的回答。那很棒。但我想以另一种方式来做(也许不是那么棒)。我的问题是如何正确添加'trans'到这一行。我的意思是我不能像这样使用它:$ this-> toolbar-> addInfo('user.account.confirmed') - > trans('user.account.confirmed'); :D什么样的方式? – Safas

+0

@Safas看看更新。 – Yoshi

+0

我会检查它。谢谢。 – Safas