Kdyby/translation nejde rozjet
- Lazius
- Člen | 9
Zdravím,
zdědil jsem jeden webový projekt a potřebuji na něm rozjet kdyby/translation. Z toho co jsem vyčetl tady na fóru a různě na netu i v dokumentaci jsem udělal toto.
- pomocí composeru jsem nainstaloval verzi kdyby/translation 0.10.4 jelikož používám verzi nette 2.0
- v config.neon to mám takto
nette:
extensions:
translation: Kdyby\Translation\DI\TranslationExtensiontranslation:
default: cs
fallback: [cs_CZ, cs]
3. v BasePresenter.php jsem přidal toto
<?php
/** @persistent */
public $locale;
/** @var \Kdyby\Translation\Translator @inject */
public $translator;
?>
4. v presenteru kde chci použít překlad volám toto $this->translator->translate($message);, kde místo $message použiji přímo nějaký název ze souboru ms.cs_CZ.neon, v tom jsem se ale ještě nepitval, jelikož si myslím, že se to ani správně neimplmenetuje
No a teď ten problém. Hlásí mi to tuto chybu. A hlásí to u každé funkce, kterou volam pomocí $this->translator
Call to a member function translate() on null
Upozorňuji, že nette používám chvíli, tak je možné, že jsem udělal i základní chybu.
Předem děkuji za všechny rady.
- David Matějka
- Moderator | 6445
@inject
anotace jsou podporovane myslim az od 2.1, ve starsi
verzi pouzij inject metodu
- Lazius
- Člen | 9
Zkusil jsem tedy
/** @var translator */
public $translator;
public function injectTranslator(\Kdyby\Translation\Translator $service)
{
$this->translator = $service;
}
a pro změnu
Service of type Kdyby\Translation\Translator needed by Method BasePresenter::injectTranslator() not found. Did you register it in configuration file?
- jiri.pudil
- Nette Blogger | 1032
V Nette 2.0 není ještě ani konfigurační sekce extensions, takže musíš to rozšíření zaregistrovat v bootstrapu (před vytvořením containeru):
Kdyby\Translation\DI\TranslationExtension::register($configurator);