Если интересно, то вот мультиязычный сайт о вейк парке в Турции:
http://www.goldcablepark.com/ Использован модуль Mojolicious::Plugin::I18N; Куски кода оттуда. 1) Определение языка в зависимости от типа браузера пользователя. (Определяем язык браузера). И перенаправляем на нужную страничку: sub welcome { my $self = shift; my $lang = $self->languages; $self->redirect_to("/$lang/index.html")->res->code(301); } 2) Вот так выглядит хэш для каждого языка: package Goldcable::I18N::ru; use base 'Goldcable::I18N'; use utf8; our %Lexicon = ( 'Home' => 'Главная', 'Photos' => 'Фото', 'Videos' => 'Видео', 'Services' => 'Услуги', 'Address' => 'Адрес', 'Info' => 'Инфо', # И т.д. ); 3) Вот так выглядит темплейт: ... <li><a href="/"><%=l 'Home' %></a></li> 4) Большие куски текстов загружаются просто в зависимости от типа языка. Тоже код из темплейта: %== &Goldcable::get_html( languages ); P.S. Вообще изначально думал сделать это на perl Dancer. Нашел модуль Dancer::Plugin::I18N Но не получилось. Приятель даже написал sh скрипт для теста: http://pastebin.com/XqQ90cLa Переписывался с создателем модуля, но он что-то проигнорировал. 13 декабря 2012 г., 12:48 пользователь iSage <[email protected]> написал: > ** > > То есть как это "не понимает"? xgettext всеравно откуда доставать строки. > > Я вот таким скриптом из ТТ доставал: http://pastie.org/5519469 > > А в ТТ использовал синтаксис l("some text") > > > > On 2012-12-13 12:28, Иван Бессарабов wrote: > > Совсем-совсем самопильными или ты что-то взял за основу с cpan? > Со станартным экстрактором xgettext есть проблема -- он не понимает > template toolkit. > > > 13 декабря 2012 г., 12:14 пользователь Alexander Q <[email protected]>написал: > >> Лично я в момент раздумий, как бы прикрутить стандартные утилиты gettext >> к этой задаче, вспомнил, на каком языке пишу, и делаю всё это средствами >> перла, самописным скриптом. >> >> >> 2012/12/13 Иван Бессарабов <[email protected]> >> >>> А как ты экстрактишь вот эти pgettext строки из template toolkit >>> шаблонов? >>> >>> >>> 12 декабря 2012 г., 23:07 пользователь Alexander Q >>> <[email protected]>написал: >>> >>> >>> Я использую Locale::TextDomain, который поддерживает контексты. >>>> __p('new user form button', 'New'); >>>> __p('show only new books link', 'new'); >>>> >>>> Вторую проблему я не понял. >>>> >>>> >>>> 2012/12/12 Ruslan Zakirov <[email protected]> >>>> >>>>> 2012/12/12 Ruslan Zakirov <[email protected]>: >>>>> >> В мире Rails принято хранить i18n в config/locales/$LANGCODE.yml >>>>> >> >>>>> >> В шаблонах и в коде используются хэлперы типа >>>>> >> t(ключ_локализации_иерархия_черезз_точку, параметры). >>>>> >> >>>>> >> ru: >>>>> >> page: >>>>> >> title: Привет, %1 >>>>> >> >>>>> >> Использование >>>>> >> >>>>> >> [%= t('page.title', customer_title) %] >>>>> >> >>>>> >> В принипе, у меня есть заготовка модуля для CPAN, могу выложить. >>>>> >> >>>>> >> По своей практике скажу, что поддерживать такой код удобно. >>>>> >> >>>>> >>>>> Хоть такой код и кособоко выглядит, но из простых альтернатив gettext, >>>>> который тоже имеет свои проблемы. Из самых назойливых: >>>>> 1) короткие термины с многими значениями, типа new. Они могут >>>>> переводится по разному в зависимости от контекста. Контексты в >>>>> перловых модулях не поддерживаются. Можно обойти вводом контекста >>>>> прямо в текст и созданием перевода и для основного языка. >>>>> 2) loc("Created $type"). По другому нельзя, а список возможных типов >>>>> может быть большим. >>>>> >>>>> И так далее и тому подобное. >>>>> >>>>> -- >>>>> Best regards, Ruslan. >>>>> -- >>>>> Moscow.pm mailing list >>>>> [email protected] | http://moscow.pm.org >>>>> >>>> >>>> >>>> >>>> -- >>>> With best regards, >>>> Alexander Q mailto:[email protected] >>>> >>>> -- >>>> Moscow.pm mailing list >>>> [email protected] | http://moscow.pm.org >>>> >>>> >>> -- >>> Moscow.pm mailing list >>> [email protected] | http://moscow.pm.org >>> >>> >> >> >> -- >> With best regards, >> Alexander Q mailto:[email protected] >> >> -- >> Moscow.pm mailing list >> [email protected] | http://moscow.pm.org >> >> > > > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > >
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
