[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