[Moscow.pm] Mojo: перевод статических страниц
Sergey Malochinskiy
sergey.malochinskiy на gmail.com
Пт Июл 20 23:52:40 PDT 2012
Я делаю это так.
Есть контроллер объявленный как route
# Route for static pages such as help, faq... etc
$r->route('/:page', page => [$self->staticpages])->via('GET')
->to('static#pages')->name('static_pages');
$self->staticpages возвращает список доступных страниц, быстро
заменяется например на qw/help about/
Сама функция проще некуда:
sub pages {
my $self = shift;
my $lang = $self->languages; # язык пользователя плагин i18n
my $pagetext = $self->staticpage_get($self->param('page')); # helper
возвращающий html код страницы из БД по параметру в GET
return $self->render(
pagetext => $pagetext # передача текста страницы в шаблон
);
}
Сам шаблон выглядит так:
% layout 'default';
<%= Mojo::ByteStream->new($pagetext) %>
Для формирования URL для статической страницы использую конструкцию:
<a href="<%= url_for 'static_pages', page => 'help' %>"><%= l 'url_help' %></a>
20 июля 2012 г., 15:27 пользователь Grigory Batalov <grisxa на gmail.com> написал:
> В Fri, 20 Jul 2012 13:36:22 +0400
> Sergey Malochinskiy <sergey.malochinskiy на gmail.com> пишет:
>
>> Сделать один шаблон. Наполнение на разных языках хранить в БД или
>> файлах. В контроллере вытягивать из БД или файла и через stash
>> передавать в шаблон.
>
> Например, так?
>
> page.help:
>
> use utf8;
> {
> ru => {
> page1 => 'help1',
> page2 => 'help2',
> },
> en => {
> page1 => 'help3',
> page2 => 'help4',
> },
> }
>
> контроллер:
>
> my $help = do $self->config->{'mojo'}->{'page_help'};
>
> $self->stash( help => $help->{ $self->stash->{'i18n'}->{'language'} }->{ $page } );
>
>> > Мне нужно вставить в проект статические страницы с описанием
>> > ("справку") на разных языках. С организационной точки зрения было
>> > бы удобно разложить каждую справку в отдельный файл и отдать
>> > документаторам:
>> >
>> > help/en/page1.html.ep
>> > help/en/page2.html.ep
>> > help/ru/page1.html.ep
>> > help/ru/page2.html.ep
>> > ...
>> >
>> > Но как их потом включать в шаблон страниц?
>> > Я пока что выкрутился так: в page1.html.ep вставляю директиву
>> >
>> > %= include 'help/' . $self->stash->{'i18n'}->{'language'} . '/page1'
>> >
>> > Может быть, есть способ красивее, удобнее и т.д.?
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
--
Best regards,
Sergey Malochinskiy
Подробная информация о списке рассылки Moscow-pm