Zkušenosti s Kdyby\Translation

Dnes jsem poprvé použil nástroj Kdyby\Translation, neboť Gettexttranslator záhadně přestal existovat. Nerad se pouštím do práce s novými nástroji, jsem v tomto dost konzervativní. Člověk nakonec může skončit po pár hodinách pokusů a nikam se nedobrat.

Tohle ovšem není případ Kdyby\Translation, s ním to šlo jako po másle. Postupoval jsem podle detailní dokumentace, jen s drobnými úpravami:

Instalace bez Composeru

Stačilo stáhnout závislosti (Symfony\Translation a Symfony\Config) a umístit do složky libs.

Jde to i bez persistentního $locale

Nástroj záhadným způsobem detekuje jazyk pomocí $_GET proměnné locale. Já jsem ho implementoval do rozdělaného projektu a nechtělo se mi kvůli tomu přejmenovávat svoje proměnné. Naštěstí to není potřeba. Stačilo do BasePresenteru přidat na vhodné místo tento řádek:

$this->translator->setLocale($this->lang->shortcut);

Když nenačítá soubor s překlady / načítá jen messages.en_US.neon

S tímhle problémem jsem se potýkal asi nejvíc. Když nenajde soubor s překlady, poznáte to podle toho, že v panelu hlásí chybu a na místech překladů zobrazí názvy proměnných (např. homepage.sidebar.kontakt). Zkoušel jsem soubory různě přejmenovávat, až se nakonec chytil na verzi en_US – akorátže locale bylo nastaveno na německou verzi.

Důvod je prostý, aktuálně chybí v návodu informace o nové funkci – whitelistingu. Do config.neon je třeba přidat řádku s povolenými jazyky:

translation:
whitelist: [ ‚cs‘, ‚en‘, ‚de‘ ]

Nepřišel jsem na způsob, jak whitelistovat dynamicky (seznam jazyků mám uložen v databázi a může se v administraci měnit).

One thought on “Zkušenosti s Kdyby\Translation”

  1. Ahoj, pokud chceš whitelistovat „dynamicky“, doporučoval bych generovat nějaký app/config/translator.neon a přepisovat jej když se nastavení změní. Mohl bys v něm mít ty jazyky vypsané.

    Co se týče problému s načítáním překladů, je v nejnovější translatoru vylepšený panel, který ukazuje jaké slovníky jsou načtené a pomáhá tedy debugnout chybějící slovníky 🙂

Komentáře nejsou povoleny.