2017-06-27 35 views
0

大家好)我有TYPO3 7.6.18版本,并在我的流体邮件模板翻译不起作用。 这是在我的控制器代码渲染邮件模板:TYPO3液体翻译不适用于邮件模板

$emailView = $this->objectManager->get('TYPO3\\CMS\\Fluid\\View\\StandaloneView'); 

     $ext_path = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath("feusersplus"); 
     $templatePathAndFilename = $ext_path.'Resources/Private/Mail/Admin/updateInfo.html'; 
     $emailView->setTemplatePathAndFilename($templatePathAndFilename); 
     $emailView->assignMultiple(
      array(
       'hash' => $hash, 
       'userDetailPid' => $userDetailPid, 
       'userUid' => $user->getUid(), 
       'username' => $user->getUsername(), 
       'image' => $userValues['image'], 
       'aboutmyself' => $userValues['aboutmyself'], 
       'aboutmypartner' => $userValues['aboutmypartner'], 
       'aboutmyselfSeconduser' => $this->pluginVariables['aboutmyselfSeconduser'], 
       'aboutmypartnerSeconduser' => $this->pluginVariables['aboutmypartnerSeconduser'], 
       'imprint' => $this->extConf['address'], 
       'backgroundimage' => $up->getBackgroundimage(), 
       'uploadFolder' => FileUtility::getUploadFolderFromTca() 
      ) 
     ); 
     $emailBody = $emailView->render(); 

     $message = $this->objectManager->get('TYPO3\\CMS\\Core\\Mail\\MailMessage'); 
     $message->setTo($adminemail) 
      ->setFrom(array($adminemail => $this->extConf['mailtitle'])) 
      ->setSubject(\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('request_to_update_profile', 'feusersplus')); 
     $message->setBody($emailBody, 'text/html'); 
     $message->send(); 

这是小部分来自流体

<table class="twelve columns"> 
         <tr> 
          <td><h1><f:translate key='want_to_update_profile_information'/></h1></td> 
         </tr> 
         <tr> 
          <td><p><f:translate key='user'/> {username} <f:translate key='want_to_update_profile_information'/><br> 
           <f:translate key='image'/>: {image} <br> 
           <img src="http://abenteuertreff.ihr-layout.eu/fileadmin/files/Avatars/{image}" width="30%" height="auto"/><br> 
           <f:translate key='backgroundimage'/>: <br> 
           <f:image image="{backgroundimage}" absolute="true"/><br> 

    <br> 
          </p> 
          <p>&nbsp;</p> 
          <p><f:translate key='about_myself'/>: {aboutmyself} <br> 
           <f:translate key='about_my_partner'/>: {aboutmypartner} <br> 
           <f:translate key='about_myself'/> (<f:translate key='second_user'/>): {aboutmyselfSeconduser} <br> 
           <f:translate key='about_my_partner'/> (<f:translate key='second_user'/>): {aboutmypartnerSeconduser}</p> 
          <p>&nbsp;</p> 
          <f:link.action pageUid="{userDetailPid}" absolute="true" arguments="{showUid: userUid}" additionalParams="{updateHash: hash}" extensionName="feuserfriends" pluginName="userlist" controller="Friend"> 
           <f:translate key='accept'/> accept 
</f:link.action> 
<br /> 
<br /> 
<hr /> 
</td> 
         </tr> 
         </table> 

请帮我)

+0

你能不能也发表您的模板(至少一部分),您期望的翻译? –

+0

我更新了我的帖子)请帮助) – Mikael

+0

请同时添加您的代码发生的地方。它是前端插件,后端模块还是调度程序任务/命令行? –

回答

2
$emailView->getRequest()->setPluginName($requestPluginName); 
$emailView->getRequest()->setControllerExtensionName($requestControllerExtensionName); 
$emailView->getRequest()->setControllerName($requestControllerName); 
$emailView->getRequest()->setControllerActionName($requestControllerActionName); 

// if you have an extbase controller context you can set it too 
$emailView->setControllerContext(...) 

至少ControllerExtensionName应设置,那么f:translate的作品。

+0

谢谢!这是工作 – Mikael

1

我不传递任何ControllerContext到视图,但使用

/** 
    * @param array $recipient recipient of the email in the format array('[email protected]' => 'Recipient Name') 
    * @param array $sender sender of the email in the format array('[email protected]' => 'Sender Name') 
    * @param string $subject subject of the email 
    * @param string $templateName template name (UpperCamelCase) 
    * @param array $variables variables to be passed to the Fluid view 
    */ 
    protected function sendTemplateEmail(array $recipient, array $sender, $subject, $templateName, array $variables = array()) { 
     /** @var \TYPO3\CMS\Fluid\View\StandaloneView $emailView */ 
     $emailView = $this->objectManager->get('TYPO3\\CMS\\Fluid\\View\\StandaloneView'); 

     $extbaseFrameworkConfiguration = $this->configurationManager->getConfiguration(\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK); 
     $emailRootPath = \TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName($extbaseFrameworkConfiguration['view']['templateRootPaths'][1]); 

     $templatePathAndFilename = $emailRootPath . 'Emails/' . $templateName . '.html'; 

     $emailView->setTemplatePathAndFilename($templatePathAndFilename); 
     $emailView->assignMultiple($variables); 
     $emailBody = $emailView->render(); 

     /** @var $message \TYPO3\CMS\Core\Mail\MailMessage */ 
     $message = $this->objectManager->get('TYPO3\\CMS\\Core\\Mail\\MailMessage'); 
     $message->setTo($recipient) 
      ->setFrom($sender) 
      ->setSubject($subject); 

     // Plain text example 
     // $message->setBody($emailBody, 'text/plain'); 

     // HTML Email 
     $message->setBody($emailBody, 'text/html'); 

     $message->send(); 
     return $message->isSent(); 
    } 

和在控制器相应的流体模板

{f:translate(key: "want_to_update_profile_information", extensionName: "EXTENSIONKEY")}

$variables是PHP-阵列电子邮件的模板需要key-valu-pairs。

当然的代码必须适应那里曾经需要...(模板路径等)

+0

它只是相当繁琐的将扩展名称放在模板中。这是制定者真正有用的地方。 –