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

Sergey Malochinskiy sergey.malochinskiy на gmail.com
Вс Июл 22 00:07:12 PDT 2012


В админке предусмотрен редактор для всех страниц на всех языках.
Статическая страница в моем случае это законченная сущность.


21 июля 2012 г., 23:57 пользователь Alexandr Alexeev
<afiskon на gmail.com> написал:
> Ваш способ вроде ничего. Но для пущей общности я бы ввел в вашем движке
> понятие "статической страницы", код которой хранится в базе и может
> редактироваться/переводиться через веб-интерфейс. Это, конечно, уже будет не
> статика, но с нормальном кэшированием должно быть ОК.
>
> 21 июля 2012 г., 10:54 пользователь Sergey Malochinskiy
> <sergey.malochinskiy на gmail.com> написал:
>
>> Исправление.
>>
>> строку:
>>   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 mailing list
>> moscow-pm на pm.org | http://moscow.pm.org
>
>
>
>
> --
> С уважением, Александр
> Личный блог: http://eax.me/
> Мой форум: http://it-talk.org/
> Мой Twitter: http://twitter.com/afiskon
>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>



-- 
Best regards,
Sergey Malochinskiy


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