Správný a přesto efektivní překlad textových řetězců

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

Zdravím,

chtěl jsem se zeptat, jak se má správně používat translator v Latte šablonách?
Podle ITranslator má být druhý parametr Integer určující pluralitu.

To znamená, že když budu chtít text, kde se bude dosazovat nějaká hodnota (např: Currently logged: %d users), tak buď budu muset text roztrhnout na dílčí části, nebo dělat nějakou strašidelnou konstrukci typu {var $message = vsprintf($presenter->translator->translate('Currently logged: %d users'),$loggedUsers)}

Schmutzkuv translator dělá trochu hack tohoto rozhraní, a ačkoliv jeho phpDoc tvrdí že přijímá integer, vnitřně kontroluje, zda-li se nejdná o pole etc. a případně to prožene přes vsprintf, což je sice mazané a pohodlné na použití, ale je to hack.

Napadlo mě, že by mohlo existovat latte makro něco jako {vsprintf ‚Replace %s by text‘, ‚placeholder‘} a jeho příslušná obdoba pro translator {_vsprinf ‚Currently logged: %d users‘, $loggedUsers}, která by řetězec nejprve poslala k překladu.

Jak tedy? ;)