Globální nastavení translátoru

+
0
-

Dobré ráno!

Mám další hloupý dotaz – je možné nějak nastavit translátor globálně
tak, aby byl přístupný ze všech šablon? Dle popisu na

https://doc.nette.org/…on/templates#…

je možné poslat translátor do konkrétní šablony, v mém případě ho
ale potřebuji dostat do šablony, která je součástí externí knihovny
a ze strany PHP k ní kvůli zapouzdření není přístup. Nějaká rada
pro úplného začátečníka? Děkuji!

CZechBoY
Člen | 3608
+
+6
-

Můžeš si udělat vlastní ITemplateFactory (nebo podědit od té vestavěné) a přidat překladač do šablony.

např. takto

services:
	oldTemplateFactory:
		create: Nette\Bridges\ApplicationLatte\TemplateFactory
		autowired: false
	latte.templateFactory: TemplateWithTranslatorFactory(@oldTemplateFactory)
class TemplateWithTranslatorFactory implements ITemplateFactory
{
	private $templateFactory;
	private $translator;

	public function __construct(ITemplateFactory $templateFactory, ITranslator $translator)
	{
		$this->templateFactory = $templateFactory;
		$this->translator = $translator;
	}

	public function createTemplate(Control $control = null)
	{
		$template = $this->templateFactory->create($control);
		$template->setTranslator($translator);

		return $template;
	}
}

nebo přes dědičnost…

+
0
-

Geniální, pane kolego :-). Přesně tohle řešení jsem potřeboval. Vřelé díky!