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ěď.
This question was answered by Marek Šneberger, you can jump directly to the answer
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 :-)
Supr, díky! Vyzkouším :-)