Kdyby/Translation nefunguje v presenteru, v šabloně ano

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
ojas273
Člen | 5
+
0
-

Ahoj,

prosím o radu. Mám implementován Kdyby/Translation a nepřekládá mi fráze v presenteru ani formuláři. V šabloně ovšem po zavolání např. {_ ui.home} funguje.

V BasePresenteru mám injektovaný Translation

/** @persistent */
public $locale;

/** @var \Kdyby\Translation\Translator @inject */
public $translator;

Když si potom v některém z rozšířených presenterů zavolám

echo $this->translator->translate("Hello world");

Tak mi to vrátí tuto frázi a ne přeloženou.

Neon soubor vypadá následovně:

"Hello world" : Ahoj světe!

home: Úvod

Neřešil to už někdy někdo? Nevím si s tím už rady.

Díky moc!

Barvoj
Člen | 60
+
+2
-

Proč v šabloně používáš jako klíč ui.home což je nějaká konstanta a v presenteru Hello world což je normální text?

S kdyby\translation nemám moc zkušeností, ale když jsem naposledy jako klíče používal běžný text, tak jsem přišel na to, že se soubor s překlady MUSÍ jmenovat messages.

Kdyby\translation totiž ten překladový klíč rozdělí podle teček a to první bere jako jméno souboru.. takže ui.home si vyloží jako soubor ui.cs.neon (pro češtinu) a v něm hledá klíč home

Hello world ale žádnou tečku neobsahuje, takže z toho nelze jméno souboru zjistit, tak se použije defaultní messages.cs.neon a tam se hledá klíč Hello world.

Předpokládám že tvůj soubor s překlady se jmenuje ui.<jazyk>.neon? Přejmenuj ho tedy na messages.<jazyk>.neon a mělo by to fungovat.

Editoval Barvoj (24. 8. 2016 11:01)

ojas273
Člen | 5
+
0
-

Díky to bylo ono! :)