В предлагаемом материале рассказывается об основах создания многоязычных приложений с помощью класса Zend_Translate.
Многоязычные приложения
Класс
Zend_Translate предоставляет решение для разработки многоязычных приложений.
В многоязычных приложениях содержание должно быть переведено на несколько языков и отображаться в зависимости от языка пользователя. PHP предлагает несколько способов решения этой проблемы, но они обладают рядом недостатков, которых лишен Zend_Translate. В то же время, этот класс обладает рядом достоинств.
Недостатки PHP
Несовместимый программный интерфейс. Отсутствует единый API для различных типов исходных данных. В частности, использование gettext является достаточно сложным.
PHP поддерживает только массивы и gettext. Все другие форматы требуют ручного кодирования.
Нет простого механизма определения
языка по умолчанию. Для определения языка пользователя необходимо знать и учитывать особенности различных броузеров.
Поддержка gettext не обеспечивает поточной безопасности.
Преимущества Zend_Translate
Поддерка различных форматов исходных данных.
Поточная безопасность gettext.
Легкий и обобщенный
программный интерфейс.
Определение предпочитаемого языка пользователя.
Использование Zend_Translate позволяет избежать разработки отдельного вида для каждого поддерживаемого языка. Все, что необходимо сделать, сводится к следующим четырем шагам.
Процедура 18.1. Разработка многоязычного приложения с помощью класса Zend_Translate
Класс
Zend_Translate поддерживает несколько адаптеров для различных форматов исходных данных. Каждый из них имеет свои преимущества и недостатки.
Адаптер Array. Использует массивы PHP. Пригоден для небольших страниц и сайтов, прост в использовании (для программистов).
Адаптер Csv. Использует разделенные запятой данные из .csv/.txt
файлов. Простой формат, очень высокая скорость, но возможны проблемы с поддержкой символов Unicode. Может быть использован конечным пользователем.
Адаптер Gettext. Использует двоичные файлы .mo. Очень быстрый, но требует отдельных инструментов для редактирования. Безопасен при использовании в многопоточных приложениях.
Адаптер TMX. Использует .tmx/.xml файлы. Формат, читабельный для человека.
Адаптер XLIFF. Использует .xliff/.xml файлы. Упрощенный TMX.
Поддержка других форматов (.sql, .tbx, .qt) возможна в будущем.
Пример
использования
Рассмотрим пример использования класса Zend_Translate с адаптером Csv.
Начнем с разработки оригинального кода (пока без поддержки многоязычности).