Начинаю писать цикл статей, освещающих проблему локализации программных продуктов построенных на Zend Framework.
Данная тема очень актуальна и востребована, многие программисты ищут ее решения, которое можно было бы быстро интегрировать в готовый проект, дать удобные инструменты переводчикам для выполнения их работы. При этом большинство хочет достичь высокой производительности продукта.
Я проведу Вас сквозь все аспекты реализации локализации: от выбора способа хранения переводов и до программной реализации.
На что обратить внимание?
Каждый адаптер Zend_Translate имеет свои «плюсы» и «минусы». Рассмотрим подробнее в таблице.

Лично у меня нет доверия к решениям на основе XML, ведь их парсинг довольно ресурсоемкая задача. Конечно, кеширование никто не отменял, но все же. Текстовые форматы довольно быстрые, но для них нет удобных тулзов для переводов, поэтому разработчик сам должен будет вносить переводы, что неудобно при реализации крупных портальных систем.
Исходя из выше сказанного, я решил остановить свой выбор на адаптере GetText. Он довольно быстрый, подходит для больших объемов переводов и имеет ряд freeware программ, которые очень помогают при переводе. При этом это общедоступная технология, которая распространяется по лицензии GNU. При использовании GetText, Вы, как разработчик, можете не задумываться над переводами, а писать программный код и все строки передавать в функцию Zend_Translate. Потом Вы откроете специальную программу, о которой я расскажу Вам позже, нажмете кнопку «обновить» и все, можете легко и просто все переводить!
Данный формат нечитаемый для человека, поскольку он хранится в бинарном виде. Корректно поддерживает очень много разнообразных кодировок, позволяет использовать plural forms (напр. 10 комментариев, 1 комментарий), что позволит Вам не задумываться об этом в программном коде, а просто подставлять нужное число в перевод. Есть расширение для PHP, но Zend Framework его не использует, т.е. Вам не нужно будет инсталлировать расширение для PHP, что является немаловажным фактором.
На данный момент много разработчиков использует именно этот формат, что делает реализацию профессиональных переводов очень простой задачей, хоть без специальных программ данный формат нечитаемый для человека.
Zend_Translate предоставляет очень удобные средства для кеширования переводов, так что будьте уверены – нагрузка на проект из-за мультиязычного интерфейса возрастет минимально. Также Zend Framework позволяет контролировать полноту переводов, предоставляя функционал для логгинга строк, которые не были найдены, поэтому Вы всегда будете в курсе всех непереведенных строк.
Gettext – шустрое и качественное решение, предоставляющее профессиональный подход к разработке мультиязычных программных продуктов, на основе общедоступных и простых технологий. Разнообразные тулзы помогут Вам сканировать Ваш код на наличие переводов и быстро формировать пакеты локализации. Итак, думаю, выбор очевиден.
Что далее?
В следующей части я покажу Вам простой пример локализации веб-сайта с помощью gettext на практике. В третьей части статьи мы рассмотрим программное обеспечение для формирования *.mo файлов, изучим азы их использования. В последней части я подведу итоги проделанной работы.
