[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