[Moscow.pm] Как делать сайт на нескольких языках с template toolkit

Dmitry E. Oboukhov unera на debian.org
Пн Ноя 16 01:53:08 PST 2009


ИБ> Пока сильно хороших идей не появилось, поэтому хочу с вами
ИБ> посоветоваться. Однозначно, что это задача часто встречается и
ИБ> наверняка существует множество хороших решений.

ИБ> Пока я думаю в такую сторону. Сейчас есть главная страница index.tt,
ИБ> вместо нее я хочу сделать index.ru.tt и index.en.tt. В записимосит от
ИБ> того, какой язык выбрал пользователь ему будет отображаться либо один
ИБ> шаблон, либо другой. Это все просто реализовать, но не супер
ИБ> элементарно будет поддерживать (нужно будет не забывать что-то менять
ИБ> в обоих шаблонах). С другой стороны у меня еще есть javascript,
ИБ> который тоже что-то рисует на страницах. Для js я сейчас планирую
ИБ> сделать массив myText, где у меня будет хранится все строки на нужном
ИБ> мне языке, которые js у меня будет выводить.

ИБ> Вообще, хотелось бы, чтобы и js и perl использовал одну и ту же базу
ИБ> строк (следить за одной системой всегда проще чем за нескольким), но
ИБ> при этом хочется, чтобы наличие этой базы не сильно усложняло систему
ИБ> и не сильно замедляло ее работу.

у меня тоже пара маленьких проектов таких есть (даж один на 10 языков уже
перевели), небольшой опыт в этом вопросе

так вот очень хорошо если переводы пойдут через какую-то стандартную
систему. например po-файлы от gettext. но тут возникает одна небольшая
трабла: не для всех форматов файлов есть экстракторы строк. то есть
какой-либо XML или C запросто, а с html+TT я что-то искал искал и не
нашел ничего приличного. в итоге пришел к такой структуре:

в корне проекта Makefile
в каталоге tt/ лежит шаблон шаблонов (один или несколько)
далее по команде make
самописный скрипт извлекает из указанных источников все помеченное
тегами <gt>...</gt> и кладет в .po
далее работа с этими po стандартными gettext'овыми утилитами (клеим их
в один большой .po и кладем в какое-то место где переводчик может
найти, ну а make далее ищет po-шки вида LANG.po и из них из шаблона
шаблонов собирает
index.ru.tt, index.cs.tt и даже blah.cs.cgi

недостатков два:
 - велосипед на экстракт/сборку таргета
 - после каждой правки главного шаблона надо звать make

однако плюсы по моему важнее:
 - с форматом .po переводчики хорошо умеют работать, если проект
   интересный скоро очень появится множество языков



-- 
... mpd is off

. ''`.                               Dmitry E. Oboukhov
: :’  :   email: unera на debian.org jabber://UNera@uvw.ru
`. `~’              GPGKey: 1024D / F8E26537 2006-11-21
  `- 1B23 D4F8 8EC0 D902 0555  E438 AB8C 00CF F8E2 6537
----------- следущая часть -----------
A non-text attachment was scrubbed...
Name: отсутствует
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20091116/72e3c4de/attachment-0001.bin>


Подробная информация о списке рассылки Moscow-pm