2017-06-27 15 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(); 

+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が設定されるべき流体

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

ヘルプ私にしてください)から、ごく一部です:だ は、レンダリングのメールテンプレートは、私のコントローラ内のコードです、f:translateが動作します。

+0

ありがとう!それはうまくいっています – Mikael

1

Iビューに任意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アレイでありますEメールの流体テンプレートのキーと値のペアが必要でした。もちろん、コードがこれまでに、必要な場所に適応する必要がある

...(テンプレートのパスなど)

+0

テンプレートに拡張子名をつけるのは面倒です。それはセッターが本当に役に立つ場所です。 –

関連する問題