contributte/translation – překlad názvů položek z DB

motorcb
Člen | 551
+
0
-

Zdravím,

dělám multijazyčný web, kde mám v DB uložené menu. OK, z DB si vytáhnu názvy položek v menu a pošlu je do šablony, kde je chci přeložit přes contributte/translation (již ho mám zprovozněný a funguje).

Pro zjednodušení ukázky definuji položky menu hned do kódu:

$this->template->menus = ["{_menu.home}", "{_menu.news}", "{_menu.contact}"];

V šabloně pak zobrazím:

{foreach $menus as $menu}
	<li>{$menu}</li>
{/foreach}

V šabloně se položky z menus nepřeloží ale zobrazí se tak jak jsou definované: {_menu.home}, {_menu.news}, {_menu.contact}

Jak donutit šablonu aby text z proměnné ({_menu.home}) přeložila?
Pokud dám {_menu.home} do šablony na tvrdo (není to z proměnné), přeloží se

Díky. Za tipy

Marek Bartoš
Nette Blogger | 1165
+
+1
-

Píšeš latte syntaxi do stringu, takže se při výpisu bere jako string. Můžeš sice jednotlivé stringy renderovat jako latte (https://latte.nette.org/en/guide#…), ale jednodušší budeš mít makro pro překlad volat až v šabloně.

motorcb
Člen | 551
+
0
-

@Mabar díky za nasměrování:

Jak tam dodám translator?

<?php
$latte = new Latte\Engine();
$latte->setLoader( new Latte\Loaders\StringLoader );
$content = $latte->renderToString( "{_front.profil}");
$this->template->menu = $latte->renderToString( "{_menu.home}");
?>

Vrací chybu: Filter ‚translate‘ is not defined, did you mean ‚truncate‘?

David Matějka
Moderator | 6445
+
0
-

překládej to až v šabloně a nekomplikuj si život (nebo si to přelož pomocí ITranslator služby)

motorcb
Člen | 551
+
0
-

@David Matějka díky, jen tomu moc nerozumím. Dokázal bys prosím naznačit nějakou ukázku? Něvo nějakou další nápovědu čeho se chytit? Diky :-)

David Matějka
Moderator | 6445
+
0
-

priklady, jak pouzivat translator v presenteru, modelu nebo v latte (vcetne dynamicke promenne) najdes v dokumentaci contributte/translation

Marek Bartoš
Nette Blogger | 1165
+
+1
-

Třeba takto

$this->template->menus = ["menu.home", "menu.news", "menu.contact"];
{foreach $menus as $menu}
	<li>{_ $menu}</li>
{/foreach}

Editoval Mabar (24. 3. 2020 18:06)

motorcb
Člen | 551
+
0
-

@Mabar super! Už chápu. Diky moc