Статьи
Портфолио
Друзья
Контакты

Последние статьи

06.07.2010 Memcache и Zend: у Вас "падает" Memcache? 4 коммент.

06.07.2010 Collabtive - web-based project management software 2 коммент.

03.06.2010 Ускоряем ZF-проекты: автолоад и сборка в один файл 2 коммент.

Все

Категории

PHP 2 стат.

Zend Framework 25 стат.

Javascript 3 стат.

Другое 12 стат.

Книги 1 стат.

Украина 1 стат.

Все

RSS

Статьи

Комментарии

Портфолио

Облако тегов

программирование  Программы  портфолио  php  zend framework  Zend_Db  Smarty  Zend_Form  паттерны  javascript  niceforms  jQuery  Zend_Mail  веб  Google  Zend_Rest  Zend_View_Helper  zend casts  Zend_View  Zend_Layout  speedUp  интернет  Загрузчик фотографий  Flash  ВКонтакте  zend  localization  zend_translate  gettext  антон шевчук  подарки  Я читаю  Книги  sphinx  релизы 

Все

Реклама



Статистика



Rambler's Top100

Главная > Статьи > Zend Framework > Zend Framework. Локализация проектов. Часть первая
21.06.09 Zend Framework. Локализация проектов. Часть первая

Multilanguage supportНачинаю писать цикл статей, освещающих проблему локализации программных продуктов построенных на Zend Framework.

 

Данная тема очень актуальна и востребована, многие программисты ищут ее решения, которое можно было бы быстро интегрировать в готовый проект, дать удобные инструменты переводчикам для выполнения их работы. При этом большинство хочет достичь высокой производительности продукта.

 

Я проведу Вас сквозь все аспекты реализации локализации: от выбора способа хранения переводов и до программной реализации.

 

На что обратить внимание?


 

Каждый адаптер Zend_Translate имеет свои «плюсы» и «минусы». Рассмотрим подробнее в таблице.

Адаптеры Zend_Tranlslate

Лично у меня нет доверия к решениям на основе XML, ведь их парсинг довольно ресурсоемкая задача. Конечно, кеширование никто не отменял, но все же. Текстовые форматы довольно быстрые, но для них нет удобных тулзов для переводов, поэтому разработчик сам должен будет вносить переводы, что неудобно при реализации крупных портальных систем.

 


Исходя из выше сказанного, я решил остановить свой выбор на адаптере GetText. Он довольно быстрый, подходит для больших объемов переводов и имеет ряд freeware программ, которые очень помогают при переводе. При этом это общедоступная технология, которая распространяется по лицензии GNU. При использовании GetText, Вы, как разработчик, можете не задумываться над переводами, а писать программный код и все строки передавать в функцию Zend_Translate. Потом Вы откроете специальную программу, о которой я расскажу Вам позже, нажмете кнопку «обновить» и все, можете легко и просто все переводить!

 


Данный формат нечитаемый для человека, поскольку он хранится в бинарном виде. Корректно поддерживает очень много разнообразных кодировок, позволяет использовать plural forms (напр. 10 комментариев, 1 комментарий), что позволит Вам не задумываться об этом в программном коде, а просто подставлять нужное число в перевод. Есть расширение для PHP, но Zend Framework его не использует, т.е. Вам не нужно будет инсталлировать расширение для PHP, что является немаловажным фактором.

 


На данный момент много разработчиков использует именно этот формат, что делает реализацию профессиональных переводов очень простой задачей, хоть без специальных программ данный формат нечитаемый для человека.

 


Zend_Translate предоставляет очень удобные средства для кеширования переводов, так что будьте уверены – нагрузка на проект из-за мультиязычного интерфейса возрастет минимально. Также Zend Framework позволяет контролировать полноту переводов, предоставляя функционал для логгинга строк, которые не были найдены, поэтому Вы всегда будете в курсе всех непереведенных строк.

 


Gettext – шустрое и качественное решение, предоставляющее профессиональный подход к разработке мультиязычных программных продуктов, на основе общедоступных и простых технологий. Разнообразные тулзы помогут Вам сканировать Ваш код на наличие переводов и быстро формировать пакеты локализации. Итак, думаю, выбор очевиден.


Что далее?


В следующей части я покажу Вам простой пример локализации веб-сайта с помощью gettext на практике. В третьей части статьи мы рассмотрим программное обеспечение для формирования *.mo файлов, изучим азы их использования. В последней части я подведу итоги проделанной работы.

Теги:  zend framework, localization, zend_translate

Другие категории:

■ PHP ■ Zend Framework ■ Javascript ■ Другое ■ Книги ■ Украина
Комментарии к статье
  Максим

23.06.09 07:52:35

Привет. Хорошая статья! Очень жду продолжения. Все время хожу вокруг этого геттекста.

Интерисует вопрос, а есть ли тулзы которые сравнивают переводы и показывает какая переменная или отсутсвует или еще не переведена. Например:

Переводим pageTitle, в русской эту переменную указали, указали к ней перевод, а вот в анг версии просто забыли, могу ли я потом найти разницу?

  illusive

23.06.09 11:12:58

Здравствуйте, Максим. Спасибо за отзыв. Про непереведенные строки я написал в статье, вот цитата:

Также Zend Framework позволяет контролировать полноту переводов, предоставляя функционал для логгинга строк, которые не были найдены, поэтому Вы всегда будете в курсе всех непереведенных строк.

Т.е. все непереведенные строки будут записываться логгером.....

А насчет "забыли указать переменную" - этого никогда не случится, поскольку инструмент, о котором я напишу в третьей части этого никак не позволит.

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

вместо:

писать:

Это поможет избежать неточностей в переводах, если Вы будете менять текст в коде - сразу увидите изменения в переводах. Т.е так будет поддерживаться актуальность переводов и Вы сможете избежать двусмысленности некоторых фраз - ведь gettext не позволяет дублировать строки. Вообще с ключами возникает куча нюансов, а с готовыми строчками все просто и понятно.

Оставить свой комментарий

 
Статьи | Портфолио | Друзья | Контакты
Идея и мозги: Васильев Андрей © 2008-2010 Web-Blog Кисточка и фантазия: Зелинский Богдан