Překlad templatů továrniček (VP)

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
maarlin
Člen | 207
+
0
-

Jak překládáte továrničky, které jsou mimo presentery a ve vlastním templatu mají věci, které je potřeba přeložit? – např. VisualPaginator?

JajazXbm
Člen | 29
+
0
-

nevím jestli je to přesně co ses ptal, ale používám BaseControl, který má tuhle metodu:

<?php
	public function createTemplate()
	{
		$template = parent::createTemplate();
		$template->setTranslator(new \Translator);
		return $template;
	}
?>
maarlin
Člen | 207
+
0
-

Ano, to je přesně ono, taky mě to napadlo, jsem rád, že jsi mě v tomto řešení utvrdil, ale kde v tomto BaseControlu, který předpokládám dědí od (N)Control vezmu aktuální hodnotu jazyka z URL, kterou jinak v BasePresenteru získávám přes $this->getParam('lang'); ?

V tu chvíli se totiž evidentně ještě neřeší routy, ani nic takového, čili ani přes NEnvironment::getHttpRequest(); se k tomu nedostanu… :(

Editoval maarlin (17. 2. 2010 13:57)

maarlin
Člen | 207
+
0
-

Už jsem na to přišel… chvíli jsem procházel dokumentaci k továrničkám/komponentám a dozveděl se, že je vždy po připojení komponenty volána metoda attached. Čili řešení je následující:

class BaseControl extends NControl {
public function attached($instance)
	{
		parent::attached($instance);
		$this->lang = $instance->getParam('lang');
	}

Editoval maarlin (17. 2. 2010 14:57)

Ondřej Mirtes
Člen | 1536
+
0
-

Jazyk bych si ukládal do globálně přístupné proměnné Environment::setVariable('lang', 'cs') `(Environment::getVariable(‚lang‘)`) co nejdřív v životním cyklu Presenteru, nejlíp v startup().