[Moscow.pm] Как делать сайт на нескольких языках с template toolkit
Dmitry E. Oboukhov
unera на debian.org
Чт Ноя 19 03:56:24 PST 2009
>> но тут возникает одна небольшая
>> трабла: не для всех форматов файлов есть экстракторы строк. то есть
>> какой-либо XML или C запросто, а с html+TT я что-то искал искал и не
>> нашел ничего приличного.
ИБ> Я наткнулся на Locale::Maketext::Extract
ИБ> http://search.cpan.org/~drtech/Locale-Maketext-Lexicon-0.77/lib/Locale/Maketext/Extract.pm
ИБ> он умеет вытаскивать строки из template toolkit и из самого перла. В
ИБ> tt он вытаскивает из tt строки, которые типа в таком формате:
ИБ> {{{
ИБ> [% | l(arg1,argn) %]string[% END %]
ИБ> [% 'string' | l(arg1,argn) %]
ИБ> [% l('string',arg1,argn) %]
ИБ> }}}
ИБ> Я поигрался, действительно вытаскивает (только пока не понятно, как
ИБ> написать фильтр l).
ИБ> Не эксперементировал с этим модулем?
Я думаю что идея вытаскивать строки на автоопределении - заведомо
порочная по своей сути.
строки надо маркировать для перевода. потому что далеко не все строки
нужно переводить.
>> в итоге пришел к такой структуре:
>>
>> в корне проекта Makefile
>> в каталоге tt/ лежит шаблон шаблонов (один или несколько)
>> далее по команде make
>> самописный скрипт извлекает из указанных источников все помеченное
>> тегами <gt>...</gt> и кладет в .po
ИБ> У тебя только в шаблоне есть вещи которые нужно перевеодить?
так в том и фишка что не только в шаблоне, потому я их маркирую везде.
потому и утилиту написал :)
>> далее работа с этими po стандартными gettext'овыми утилитами (клеим их
>> в один большой .po
ИБ> А как ты объединяешь несколько po файлов в один?
msgmerge (я ссылку на реальный makefile приводил)
>> и кладем в какое-то место где переводчик может
>> найти, ну а make далее ищет po-шки вида LANG.po и из них из шаблона
>> шаблонов собирает
>> index.ru.tt, index.cs.tt и даже blah.cs.cgi
ИБ> Я правильно тебя понимаю, что сначала ты запускаешь что-то вроде "make
ИБ> extract", а после перевода дешаешь типа "make create" чтобы у тебя все
ИБ> шаблоны собрались?
ИБ> Расскажи, пожалуйста, немного поподробнее как у тебя собираются
ИБ> шаблоны. Меня очень заинтерсовало, что ты создаешь еще и перл скрипт.
ИБ> Мне кажется, что с этим как-то очень неудобно работать - поправил
ИБ> скрипт и не можешь сразу его запустить для дебага, нужно програть
ИБ> через "make create" и только потом запускать (хотя, конечно, это
ИБ> автоматизируется). В перл коде ты так же размечаешь текст для перевода
<gt>> ...</gt> ?
перл-скрипт тут как экстрактор и строитель. просто готовых
инструментов не оказалось. надо бы отдокументировать и довести до
уровня "обычная утилита".
в перл-коде можно размечать как-то по другому, для перла-то есть
экстракторы готовые (например ~~). речь шла о html, JS, TT и даже
просто txt
>> недостатков два:
>> - велосипед на экстракт/сборку таргета
>> - после каждой правки главного шаблона надо звать make
ИБ> Если я правильно понял, как все работает, то тогда еще один недостаток
ИБ> можно записать - без make проект будет выводить кучу ненужных тегов
"<gt>> ", плюс нативного gettext-а (в сях во всяком случае) то что если
ИБ> нет перевода, то выводится нормальный английский текст.
для вывода я не использую шаблон с <gt>. а всегда сгенеренный шаблон.
для английского получается что не нужен переводчик а напрямую просто
как бы удаляются теги
ИБ> Вот, еще вопрос осознал: из-за всей этой кантители с po файлами проект
ИБ> сначала нужно делать на английском языке, я правильно понимаю?
да, именно. причем в любом случае с интернационализацией главный язык
должен быть английский.
потому что перевести с русского ты не найдешь желающих
>> однако плюсы по моему важнее:
>> - с форматом .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/20091119/d2bc4bc1/attachment.bin>
Подробная информация о списке рассылки Moscow-pm