Отправляет email-рассылки с помощью сервиса Sendsay

PHP 5: Новые возможности.

  Все выпуски  

ZEND FRAMEWORK: Класс Zend_Translate


PHP 5: Новые возможности.

Класс Zend_Translate предоставляет решение для разработки многоязычных приложений.

В многоязычных приложениях содержание должно быть переведено на несколько языков и отображаться в зависимости от языка пользователя. PHP предлагает несколько способов решения этой проблемы, но они обладают рядом недостатков, которых лишен Zend_Translate. В то же время, этот класс обладает рядом достоинств.

Недостатки PHP

Использование Zend_Translate позволяет избежать разработки отдельного вида для каждого поддерживаемого языка. Все, что необходимо сделать, сводится к следующим четырем шагам.

Процедура 18.1. Разработка многоязычного приложения с помощью класса Zend_Translate

  1. Принятие решения об используемом адаптере (см. «Поддерживаемые адаптеры»).

  2. Создание вида и интеграция Zend_Translate в код.

  3. Создание исходного файла из кода.

  4. Перевод исходного файла на различные языки.

Класс Zend_Translate поддерживает несколько адаптеров для различных форматов исходных данных. Каждый из них имеет свои преимущества и недостатки.

Адаптер Array. Использует массивы PHP. Пригоден для небольших страниц и сайтов, прост в использовании (для программистов).

Адаптер Csv. Использует разделенные запятой данные из .csv/.txt файлов. Простой формат, очень высокая скорость, но возможны проблемы с поддержкой символов Unicode. Может быть использован конечным пользователем.

Адаптер Gettext. Использует двоичные файлы .mo. Очень быстрый, но требует отдельных инструментов для редактирования. Безопасен при использовании в многопоточных приложениях.

Адаптер TMX. Использует .tmx/.xml файлы. Формат, читабельный для человека.

Адаптер XLIFF. Использует .xliff/.xml файлы. Упрощенный TMX.

Поддержка других форматов (.sql, .tbx, .qt) возможна в будущем.

Рассмотрим пример использования класса Zend_Translate с адаптером Csv.

Начнем с разработки оригинального кода (пока без поддержки многоязычности).

<?php

print 'Blah blah blah';
        

Далее внедрим в код Zend_Translate.

<?php

$translate = new Zend_Translate('csv', '/path/to/en.csv', 'en');
$translate->addTranslation('/path/to/ru.csv', 'ru');

$translate->setLocale(new Zend_Locale);
print $translate->_('Blah blah blah');
        

Наконец, создадим файлы переводов на все поддерживаемые языки.

# en.csv
Blah blah blah;Blah Blah Blah
        
# ru.csv
Blah blah blah;Бла-бла-бла
        

Если предпочитаемым языком пользователя в броузере установлен русский язык, то будет выведено следующее сообщение.

Бла-бла-бла

Created with DocBook


В избранное