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

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

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)

xrep
Člen | 51
+
0
-

@CZechBoY
toto funguje akurat

$template->setTranslator( $this->translator );

Vdaka!