[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