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

Mons Anderson inthrax на gmail.com
Пн Ноя 16 02:00:26 PST 2009


On Monday 16 November 2009 12:53:08 Dmitry E. Oboukhov wrote:
> ИБ> Пока сильно хороших идей не появилось, поэтому хочу с вами
> ИБ> посоветоваться. Однозначно, что это задача часто встречается и
> ИБ> наверняка существует множество хороших решений.
>
> ИБ> Пока я думаю в такую сторону. Сейчас есть главная страница 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 переводчики хорошо умеют работать, если проект
>    интересный скоро очень появится множество языков

А можно примерчик мейкфайла?

Я честно говоря попробовал с геттекстом поработать, и во первых меня удручил 
набор модулей (все какие-то кривоватые), во вторых отсутствие внятной 
документации как это курить.

-- 
Vladimir Perepelitsa aka Mons Anderson
<inthrax на gmail.com> / #99779956


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