Hallo
ich versuche seit einigen Monaten(!) eine E-Mail in verschiedenen Sprachen abzuschicken in einer for Schleife. Dabei soll er stets andere Sprachen nutzen! Bezwecken möchte ich hier, das ich die Ordermail einmal in jeder Sprache bekomme…
Es handelt sich um die funktion oxemail -> sendOrderEmailToUser( )
Ich bekomme es jedoch nicht hin… Ich habe schon vieles versucht:
- Ich hab in der Schleife den Cache geleert.
- Ich hab in der Schleife das ‘oxorderlang’ Feld geändert vor dem abschicken der Mail.
- Ich hab natürlich Base und Tpl Sprache per Funktion geändert…
- Ich hab die oxShop -> setLanguage() funktion aufgerufen…
Aber nichts passiert. Kann mir jemand helfen? Ich weiß hier keine Lösung mehr.
Das ganze wird für ein UnitTest gebraucht.
$sOxOrderId = 'meineOrderId';
for ($iLangId = 0; $iLangId < 7; $iLangId++) {
// Delete Cache:
myHelper::deleteCache();
// Setze Sprachen auf alle erdenklichen Möglichkeiten...
oxLang::getInstance()->setBaseLanguage($iLangId);
oxLang::getInstance()->setTplLanguage($iLangId);
oxConfig::getInstance()->getActiveShop()->setLanguage($iLangId);
// Lade Order:
$oOrder = oxnew('oxorder');
$oOrder->load($sOxOrderId);
// Ändere auch die Order Sprache...
$oOrder->oxorder__oxlang = new oxField( $iLangId );
// Sende eMail
$oEmail = oxnew('oxemail');
$oEmail->sendOrderEmailToUser($oOrder);
}
Das E-Mail Template sieht so aus:
[{ oxcontent ident="ordermail" }]
Und hier schafft smarty oder oxid nicht mehr den content in die stets aktuelle Sprache auszugeben! Er nutzt immer nur die Sprache die zum ersten mal verwendet wurde… Beginne ich mit FR sind alle Mails in Französisch, beginne ich mit EN sind alle Mails in Englisch …
Jemand eine Idee? Danke!