Správný a přesto efektivní překlad textových řetězců
- 2bfree
- Člen | 248
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? ;)