| Activator documentation | Contained in the Activator distribution. |
Catalyst::Plugin::Activator::Dictionary : Provide a Catalyst context
Activator::Dictionary lookup() function, and template lookup magic.
# in MyApp.pm
use Catalyst qw/ Activator::Dictionary /;
# Configure Activator::Dictionary
# Later, in some controller:
my $msg = $c->lookup( 'look_me_up' );
# Even later, in some template:
<p>%{look_me_up_too}</p>
This Catalyst plugin provides a lookup subroutine and a template shortcut syntax for Activator::Dictionary.
Gets the value for a key (using Activator::Dictionary lookup() sub)
wherever you have access to the catalyst context object $c.
Since Activator::Dictionary provides different realms, we default this plugin to the web realm:
# uses web realm
$c->lookup('dict_key');
However, we can use any other realm we desire:
$c->lookup('dict_key', 'error');
$c->lookup('dict_key', 'other_realm');
When using this plugin from templates, we provide a special syntax for automated lookups.
During the finalize stage of the Catalyst execution stack, this plugin
does a regular expression replacement of %{} formatted keys into
dictionary lookups from the web realm.
Example:
In /path/to/dictionary/en/web.dict:
nice_para This is a nice paragraph.
In a template:
<p>%{nice_para}</p>
Resulting HTML:
<p>This is a nice paragraph.</p>
Activator::Dictionary, Catalyst, Catalyst::Manual::Plugins
Karim A. Nassar
Copyright (c) 2007 Karim A. Nassar <karim.nassar@acm.org>
You may distribute under the terms of either the GNU General Public License, or the Artistic License as specified in the Perl README file.
| Activator documentation | Contained in the Activator distribution. |
package Catalyst::Plugin::Activator::Dictionary; use strict; use warnings; use Activator::Dictionary;
sub lookup { my ( $c, $key, $realm ) = @_; $realm ||= 'web'; my $dict = Activator::Dictionary->get_dict( $c->stash->{dict_lang} ); return $dict->lookup( $key, $realm ); };
sub finalize { my ($c) = @_; ## we have html output if( $c->res->status == 200 && $c->res->content_type =~ 'text/html' ) { my $dict = Activator::Dictionary->get_dict( $c->stash->{dict_lang} ); my $body = $c->res->body(); $body =~ s/\%\{([^\}]+)\}/$dict->lookup( $1, 'web' )/egi; $c->res->body( $body ); } return $c->NEXT::finalize(@_); }
1;