Я создаю многоязычное приложение на PHP + CodeIgniter. Я решил использовать gettext для перевода текста пользовательского интерфейса, и до сих пор он оказался эффективным и простым в работе.
Но теперь я столкнулся с чем-то действительно раздражающим: функция gettext()
принимает только один параметр, в то время как я хотел бы поведение, подобное printf, которое я получаю от адаптера gettext Zend Framework, где я могу использовать %1$s
, %2$s
и т. Д. В качестве заполнителей, а затем указать заменяющие строки в качестве дополнительных параметров функции translate()
Zend view.
Я не хочу отказываться от gettext из-за простого управления переводами с помощью файлов .po и poEdit (в конце концов, я могу обновить его одним щелчком мыши). Какие у меня варианты?
Я уже пробовал написать помощника для взаимодействия с gettext: запустить первый аргумент через gettext, а затем запустить strtr для полученной строки. Вы бы порекомендовали какие-либо другие / лучшие подходы?
.mo
файлы. Я не уверен, чем они отличаются от файлов.po
, поэтому я публикую это как комментарий, а не как ответ. В руководстве действительно сказано, что POEdit работает с этим форматом. - person Charles   schedule 27.03.2011.mo
- это то, чем становится.po
после компиляции. Gettext читает.mo
, но.po
читается человеком, и это то, что вы редактируете :). Да, использование Zend_Translate определенно стоит рассмотреть. - person mingos   schedule 27.03.2011