Amon2-Plugin-L10N

 view release on metacpan or  search on metacpan

README  view on Meta::CPAN

NAME
    Amon2::Plugin::L10N - L10N support for Amon2

DESCRIPTION
    Amon2::Plugin::L10N is L10N support plugin for Amon2.

Implementation L10N for your App
  in YourProj.pm
      __PACKAGE__->load_plugins('L10N' => {
          default_lang => 'en',                                  # default is en
          accept_langs => [qw/ en ja zh-tw zh-cn fr /],          # default is ['en']
          po_dir       => 'po',                                  # default is po
      });

  in your YourProj::Web::ViewFunction
      use Text::Xslate ();
      sub l {
          my $string = shift;
          my @args = map { Text::Xslate::html_escape($_) } @_; # escape arguments
          Text::Xslate::mark_raw( YourProj->context->loc($string, @args) );
      }

  in your tmpl/foo.tt
      [% l('Hello! %1', 'username') %]

  in your some class
      package YourProj::M::Foo;
  
      sub bar {
          YourProj->context->loc('hello! %1', $username);
      }

  hook of before language detection
      __PACKAGE__->load_plugins('L10N' => {
          accept_langs          => [qw/ en ja zh-tw zh-cn fr /],
          before_detection_hook => sub {
              my $c = shift;
              return unless ref($c);
  
              my $accept_re = qr/\A(?:en|ja|zh-tw)\z/;
              my $lang = $c->req->param('lang');
              if ($lang && $lang =~ $accept_re) {
                  $c->session->set( lang => $lang );
                  return $lang;
              } elsif (! defined $lang) {
                  $lang = $c->session->get('lang');
                  if ($lang && $lang =~ $accept_re) {
                      return $lang;
                  }
              }
              $c->session->set( lang => '' );
              return; # through
          },
      });

  hook of after language detection
      __PACKAGE__->load_plugins('L10N' => {
          accept_langs         => [qw/ en ja zh zh-tw zh-cn fr /],
          after_detection_hook => sub {
              my($c, $lang) = shift;
              return 'zh' if $lang =~ /\Azh(?:-.+)\z/;
              return $lang;
          },
      });

  you can customize the po files name
      __PACKAGE__->load_plugins('L10N' => {
          accept_langs         => [qw/ zh-tw zh-cn zh /],
          po_file_langs        => [qw/ zh-tw zh-cn /],    # zh.po is not exists file
          after_detection_hook => sub {
              my($c, $lang) = shift;
              return 'zh-cn' if $lang eq 'zh'; # use zh-cn.po file
              return $lang;
          },
      });

  for your CLI
      __PACKAGE__->load_plugins('L10N' => {
          default_lang          => 'ja',



( run in 0.480 second using v1.01-cache-2.11-cpan-5b529ec07f3 )