[Moscow.pm] Catalyst - организация переключения языка сайта

Walery Studennikov despairr на gmail.com
Ср Фев 25 21:41:49 PST 2009


25 февраля 2009 г. 23:16 пользователь Андрей П. Ковбович
<akovbovich на gmail.com> написал:
> Всем привет!
>
> Подскажите, как лучше всего организовать многоязычность сайта на Каталисте?
>
> Например, здесь
> http://lists.scsys.co.uk/pipermail/catalyst/2009-February/021072.html
> предлагается довольно странное для меня решение в котором используется
> модификация URI и затем редиспатчинг на новый URL с учетом языковых
> предпочтений пользователя.
>
> Мне кажется существует более элегантное решение, которое позволяет
> строить урлы наподобие: http://www.example.com/ru/ru/foo/bar/ ,
> http://www.example.com/en/us/foo/bar/.
>
> Т.е. контроллеры и экшены в принципе должны быть одними и теми же,
> меняются только html-шаблоны в зависимости от параметра в URI:
> http://www.example.com/$LANG/$COUNTRY/foo/bar/...

Вот как делаем мы:

# Подготовка path -- поддержка языков
sub prepare_path {
   my $c = shift;

   $c->NEXT::prepare_path(@_);

   my $path = $c->req->path;

   # Определяем язык

   my $lang = ($path =~ s|^/(..)||x) || 'ru';

   if (!$path || $path =~ m|/$|x) {
       $path .= 'index';
   }

   $c->req->path($path);

   $c->stash->{lang} = $lang;
}

-- 
Walery Studennikov
http://www.reg.ru/


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