Kdyby\Translation a Email sablona kompilovana v Nette
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- xrep
- Člen | 51
Ahoj,
mam klasicku Latte sablonu, teda subor s priponou .latte, kde obsahom moze byt napriklad ->
{_messages.emails.thisIsLink}: <a href='#'> Link</a>
Vtip je v tom ze sa mi to nedari prelozit. Normalne mame nastaveny a plne funkcny Kdyby\Translation ktory funguje fajn na presenteroch ale v mailoch mi toto nefunguje. Nefunguje znamena ze dostavam Notice o tom ze nemam definovany Tranaslator. Tak som ho definoval nejako takto:
$latte = new \Latte\Engine;
$latte->setTempDirectory( getcwd() . '/../temp/cache' );
$myTemplate = new Nette\Bridges\ApplicationLatte\Template( $latte );
$myTemplate->setTranslator( $this->translator );
$myTemplate->setParameters( $params );
$myTemplate->setFile( $templateFile );
//$html = $latte->renderToString( $templateFile, $params );
$html = (string) $myTemplate;
$values[ 'body' ] = $html;
lenze $values[‚body‘], teraz na miestach kde maju byt prelozene stringy obsahuje identifikator bez bodiek. Teda tam kde bolo {_messages.emails.thisIsLink} je teraz „messagesemailsthisIsLink“.
Pomoc prosim?
- CZechBoY
- Člen | 3608
Udělej ten template z nějaký továrny než takhle ručně…
class Abc
{
private $templateFactory;
private $translator;
public function __construct(Nette\Application\UI\ITemplateFactory $templateFactory, ITranslator $translator)
{
$this->templateFactory = $templateFactory;
$this->translator = $translator;
}
private function getHtmlForEmail()
{
$template = $this->templateFactory->createTemplate();
if ($template instanceof Nette\Bridges\ApplicationLatte\Template) {
$template->setTranslator($this->translator);
}
...
return (string)$template;
}
}
edit: upraveno translator se bere z $this->translator :-)
Editoval CZechBoY (12. 9. 2016 23:34)