translator a vlastní slovník komponenty

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

Zdravím,

používám Marten-cz Translator a narazil jsem na problém, kdy bych chtěl, aby komponenta měla svůj vlastní slovník.

v definici komponenty mám

<?php

	public function __construct(\Nette\Localization\ITranslator $translator) {
		parent::__construct();
		$this->translator = $translator;
		$this->translator->addFile(realpath(dirname(__FILE__).DIRECTORY_SEPARATOR.'lang'),'AuthenticationComponent');
	}

?>

Problém je, že komponenta se zpracuje „až když je potřeba“ a to narazí na to, že se slovník přidává do translatoru až po prvním zavolání funkce translate.

Chápu to dobře, že mi nezbývá než přepsat funkci \NetteTranslator\Gettext->addFile() tak, aby kontrolovala, že když se přidává slovník a $this->loaded == TRUE, tak se musí zpracovat expost?

Nebo je nějaká možnost, jak v komponentě přidat slovník ještě před jejím vyrenderováním?

Ot@s
Backer | 476
+
0
-

Monitorování změn v komponentě

// v one komponente, kde chces menit slovnik
protected function attached($obj)
{
        parent::attached($obj);
	if ($obj instanceof Nette\Application\UI\Presenter) {
		NetteTranslator\Gettext->addFile();
	}
}
2bfree
Člen | 248
+
0
-

To mi nefunguje. IMHO to bude způsobem, jakým je navržený ->addFile() který neřeší, že slovník už je načtený a tedy už se nový file do slovníku nepřidá.