Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nelze volat DI Translator #4

Closed
krizdavid opened this issue May 14, 2019 · 4 comments
Closed

Nelze volat DI Translator #4

krizdavid opened this issue May 14, 2019 · 4 comments

Comments

@krizdavid
Copy link

Chtěl bych se zeptat, proč nejde volat třída Translator globálně stejně jako u Kdyby viz chyba ?

Service of type Contributte\Translation\Translator needed by $translator in __construct() not found. Did you register it in configuration file?

Neměla by být dostupná po zavolání rozšíření v config.neon ?

Druhá věc je, že tu vůbec není v dokumentaci vysvětleno, jak si třeba udělat rozšíření přímo na DB nikoliv podle souboru, což díky Translatoru v Kdyby bylo možné.

Díky

@krizdavid krizdavid changed the title Nelze volat Translator globálně Nelze volat DI Translator May 14, 2019
@aleswita
Copy link
Member

aleswita commented May 15, 2019

  1. Musis injectovat/predavat v konstruktoru Nette\Localization\ITranslator
  2. Pokud chces slozitejsi DB drivery (treba aby se invalidovala cache pri zmene), musis si napsat vlastni implementaci ConfigCacheFactory. Ale pokud mas nejaky interface, kde si zapisujes/upravujes preklady, staci pri ulozeni dat preulozit zaroven soubor s nastavenim a cache se invaliduje

@krizdavid
Copy link
Author

To sice ano, ale kde máš funkci, která např. odchytne všechny ty stávající překlady ?
V ITranslator máš jen funkci translate, ale třeba getCatalogue na získání překladů ne, takže tím bych obešel zbytečeně tvůj Translator ne ?

@aleswita
Copy link
Member

aleswita commented May 16, 2019

trida Contribute\Translation\Translator je v DI nastavena jako Nette\Localization\ITranslator, tzn ze pokud budes injectovat Nette\Localization\ITranslator, DI ti vlozi Contribute\Translation\Translator

@mabar
Copy link

mabar commented May 16, 2019

Jde o to, aby se využíval obecný interface namísto konkrétní implementace -> služby jsou vyměnitelné. Kdybys chtěl někde jiný translator, nedědící z Contributte/Translation, tak ti bude stačit změnit konfiguraci, ne kód.
Nově se zkrátka zakazuje, aby šlo automaticky injectovat konkrétní implementaci. Namísto toho má konkrétní implementace povolený auto-inject na základě rozhraní.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

3 participants