Catalyst::Plugin::Activator::Dictionary - Catalyst::Plugin::Activator::Dictionary documentation


Activator documentation Contained in the Activator distribution.

Index


Code Index:

NAME

Top

Catalyst::Plugin::Activator::Dictionary : Provide a Catalyst context Activator::Dictionary lookup() function, and template lookup magic.

SYNOPSIS

Top

  # 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>




DESCRIPTION

Top

This Catalyst plugin provides a lookup subroutine and a template shortcut syntax for Activator::Dictionary.

lookup

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');

Automated lookups from templates

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>

SEE ALSO

Top

Activator::Dictionary, Catalyst, Catalyst::Manual::Plugins

AUTHOR

Top

Karim A. Nassar

COPYRIGHT

Top


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;