Ahoj.

Mám nějaké latte makro, kreré provádí nějaké textové transformace. Toto makro také využívá translatoru samozřejmě z Kdyby.

Problém je následující: makro vyžaduje text v určitém tvaru a pokud text v tom tvaru není, má vyhodit výjimku. To je všechno vpořádku. Problém nastává, když makro dostane stringKey, který nemá zatím definovaný překlad.

V takovém případě nechci kontrolovat formát toho, co jsem z translatoru získal, ale vypsat původní stringKey bez transformací.

Ano, ale jak to, že se string nepřeložil, zjistit?

Můžu samozřejmě kontrolovat, co mi translator vrátil a porovnávat to s tím, co jsem mu dal v argumentu, ale to je nespolehlivé. Potřeboval bych něco jako funkci “hasTranslation”, které bych předal stringKey a ta by mi vrátila true nebo false podle toho, zda překlad existuje, nebo ne.

Nic takového neexistuje, že? Bylo by možné to do translatoru přidalt? Pokud ne, jak byste řešili tuto situaci?

Díky za odpověď.

Ahoj,

Můžeš si vytvořit objekt \Kdyby\Translation\MessageCatalogue, nasypat do něj překlady podle aktuálního locale ($messageCatalogue->add($translations) ty $translations ti vrátí $this->translator->getCatalogue('cs_CZ')->all()) a pak můžeš používat krásně $messagecatalogue->has('neco.k.prelozeni'). Z hlavy nevím, jestli ti přímo translator umí vrátit MessageCatalogue, ale já to použil takhle a funguje mi to v cajku.

Používám to takhle při fixování překladů, viz http://sneberger.cz/…e-dark-magic

// EDIT: Teďka koukám, že rovnou $this->translator->getCatalogue('cs_CZ') ti vrátí onen katalog :-)

  • Comments:

  • Supr, díky! Vyzkouším :-)

    by EdaCZ at 23.5.2015 2:29

You must first log in to participate in this discussion