[Catalyst] Catalyst::Plugin::PageCache with I18N
Fayland Lam
fayland at gmail.com
Mon May 7 12:22:27 GMT 2007
hey, it seems that Catalyst::Plugin::PageCache can NOT get along well
with the I18N.
to let the PageCache get along with languages, I patched the PageCache
for a bit.
sub _get_page_cache_key {
my ($c) = @_;
my $key = $c->next::method(@_);
my $langs = $c->languages();
$key .= '#' . join( '-', @$langs ) if ($langs);
return $key;
}
I have something like as follows in Root.pm sub auto
# internationalization
$c->stash->{lang} = $c->req->cookie('pref_lang')->value if
($c->req->cookie('pref_lang'));
$c->stash->{lang} ||= $c->user->lang if ($c->user_exists);
$c->stash->{lang} ||= $c->config->{default_pref_lang};
if (my $lang = $c->req->param('set_lang')) {
$lang =~ s/\W+//isg;
if (length($lang) == 2) {
$c->res->cookies->{pref_lang} = { value => $lang };
$c->stash->{lang} = $lang;
}
}
$c->languages( [ $c->stash->{lang} ] );
but it seems that sub dispatch { in PageCache.pm is called before
Root.pm sub auto.
so the $key = $c->_get_page_cache_key; in sub dispatch is different from
the $key in sub finalize.
any hints for suggestion are welcome. Thanks a lot.
--
Fayland Lam // http://www.fayland.org/
More information about the Catalyst
mailing list