latte makro pro preklad textu a sprintf-like zapis

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

Jde nejak elegantneji v latte vyresit situaci, kdyz chci mit prelozeny text ktery obsahuje placeholdre pro promenne (ve stylu sprintf) ? v cistem PHP by to vypadalo nejak takhle :

$text = "Jmenuji se %s a je mi %d let.";
echo sprintf(_($text), $var1, $var2, ...);

pomoci latte to ted mam tak, ze se mi to rozpada na vice textu abych udrzel stav, ze data do textu nelezou, ale rozhodne bych mel radeji klic stejny jako v $text…

{_'Jmenuji se '}{$var1}{_' a je mi '}{$var2}{_' let.'}

nejaky rozsireny zapis makra „_“ s polem nebo vice prvkami jako druhym argumentem nahodou neexistuje? :)

dekuju za reakce

voda
Člen | 561
+
0
-

Použij helper:

{_"Jmenuji se %s a je mi %d let."|printf: $var1, $var2}
mentor
Člen | 7
+
0
-

diky, nakopnul si me spravnym smerem, sice takovy helper defaultne nemam, ale vytvoreni nebolelo:

$template->registerHelper('printf', function ($format) {
	$args = func_get_args();
	array_shift($args);
	return vsprintf($format, $args);
});
voda
Člen | 561
+
0
-

Moc složité:

$this->template->registerHelper('printf', 'sprintf');
Patrik Votoček
Člen | 2221
+
0
-
{_"Jmenuji se %s a je mi %d let.", $var1, $var2}

Ale musí to podporovat tvůj translator