2017-06-27 3 views
0

Hallo allerseits) Ich habe TYPO3 Version 7.6.18, und in meinem flüssigen Mail-Vorlagen Übersetzungen funktioniert nicht. Das ist ist Code in meinem Controller, die Rendering-Mail-Vorlage:TYPO3 fluid Übersetzungen funktioniert nicht auf Mail-Vorlagen

$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(); 

, die aus Flüssigkeit

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

Helfen Sie mir bitte)

+0

Können Sie auch schreiben (zumindest einen Teil) der Vorlage, wo Sie eine Übersetzung zu erwarten? –

+0

Ich habe meinen Beitrag aktualisiert) hilfe bitte) – Mikael

+0

Bitte fügen Sie auch hinzu, WO Ihr Code stattfindet. Ist es ein Frontend-Plugin, ein Backend-Modul oder eine Task/Command-Line? –

Antwort

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(...) 

Mindestens die ControllerExtensionName eingestellt werden sollte, ist kleiner Teil ist , dann funktioniert das f: translate.

+0

danke! das funktioniert – Mikael

1

I, keine Controller zur Ansicht passiere aber

/** 
    * @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(); 
    } 

und in dem entsprechenden Fluid-Template

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

$variables im Controller verwenden ist ein PHP-Array mit benötigte Schlüssel-Wert-Paare für das Fluid-Template der E-Mail.

Natürlich hat der Code angepasst werden, wo immer nötig ... (Template-Pfad usw.)

+0

es ist nur ziemlich umständlich, den Namen der Erweiterung in der Vorlage die ganze Zeit zu setzen. Das ist, wo die Setter wirklich hilfreich sind. –

Verwandte Themen