[Moscow.pm] Mojo: перевод статических страниц

Sergey Malochinskiy sergey.malochinskiy на gmail.com
Пт Июл 20 23:54:47 PDT 2012


Исправление.

строку:
  my $pagetext = $self->staticpage_get($self->param('page')); # helper
возвращающий html код страницы из БД по параметру в GET

читать как:
 my $pagetext = $self->staticpage_get($self->param('page'), $lang); #
helper возвращающий html код страницы из БД по параметру в GET на
языке пользователя

21 июля 2012 г., 10:52 пользователь Sergey Malochinskiy
<sergey.malochinskiy на gmail.com> написал:
> Я делаю это так.
>
> Есть контроллер объявленный как 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



-- 
Best regards,
Sergey Malochinskiy


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