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
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
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();
}
}