I am building a multilingual application in PHP + CodeIgniter. I have settled upon using gettext for UI text translation, and so far it has proven efficient and easy to work with.
But now I am facing something really annoying: the gettext()
function only accepts one parametre, while I'd like a printf-like behaviour that I get from Zend Framework's gettext adapter, where I can use %1$s
, %2$s
etc. as placeholders and then specify the replacement strings as additional parametres to Zend view's translate()
function.
I do not wish to ditch gettext due to the easy translation management with .po files and poEdit (I can get it updated with a single click, after all). What are my options?
I have already tried writing a helper to interact with gettext: run the first argument through gettext and then run strtr on the resulting string. Are there any other/better approaches you would recommend?
.mo
files. I'm not sure how those differ from.po
files, thus the reason why I'm posting this as a comment instead of an answer. The manual does say that "POEdit" works with that format. – Charles.mo
is what.po
becomes after it's compiled. Gettext reads.mo
, but.po
is human-readable and that's what you edit :). Yes, using Zend_Translate is definitely an option to consider. – mingos