CatalystX-I18N

 view release on metacpan or  search on metacpan

lib/CatalystX/I18N/Model/Maketext.pm  view on Meta::CPAN

     my $model = $c->model('Maketext');
     $c->stash->{title} = $model->maketext('Hello world');
     # See CatalystX::I18N::Role::Maketext for a convinient wrapper
 }

=head1 DESCRIPTION

This model glues a L<Locale::Maketext> class
(eg. L<CatalystX::I18N::Maketext>) into you Catalyst application.

The method C<fail_with> will be called for each missing msgid if present
in your model class.

 package MyApp::Model::Maketext;
 use parent qw/CatalystX::I18N::Model::Maketext/;
 
 sub fail_with {
     my ($self,$c,$language_handle,$msgid,$params) = @_;
     # Do somenthing clever
     return $string;
 }

See L<Catalyst::Helper::Model::Maketext> for gerating an Maketext model from
the command-line.

=head1 CONFIGURATION

=head3 class

lib/CatalystX/I18N/Role/DataLocalize.pm  view on Meta::CPAN

# ============================================================================
package CatalystX::I18N::Role::DataLocalize;
# ============================================================================

use namespace::autoclean;
use Moose::Role;

sub localize {
    my ($c,$msgid,@args) = @_;

    my @args_expand;
    foreach my $arg (@args) {
        push @args_expand,
            (ref $arg eq 'ARRAY') ? @$arg : $arg;
    }

    # TODO: Check if DataLocalize model is available
    my $loc = $c->model('DataLocalize');
    my $msgstr = $loc->localize( $msgid, @args_expand );

    return $msgstr;
}

no Moose::Role;
1;

=encoding utf8

=head1 NAME

lib/CatalystX/I18N/Role/DataLocalize.pm  view on Meta::CPAN

In order to work properly this role needs a model called C<DataLocalize>. A
call to C<$c-E<gt>model('DataLocalize')> should return a L<Data::Localize>
object. You can either write your own Model and use L<Data::Localize> directly
or use L<CatalystX::I18N::Model::DataLocalize> togheter with
L<CatalystX::I18N::DataLocalize>.

=head1 METHODS

=head3 localize

 my $translated_string = $c->localize($msgid,@params);
 OR
 my $translated_string = $c->localize($msgid,\@params);

Translates a string via L<Data::Localize>.

=head1 SEE ALSO

L<Data::Localize>, L<CatalystX::I18N::Model::DataLocalize>
and L<CatalystX::I18N::DataLocalize>

=head1 AUTHOR

lib/CatalystX/I18N/Role/Maketext.pm  view on Meta::CPAN

# ============================================================================
package CatalystX::I18N::Role::Maketext;
# ============================================================================

use namespace::autoclean;
use Moose::Role;

sub maketext {
    my ($c,$msgid,@args) = @_;

    my @args_expand;
    foreach my $arg (@args) {
        push @args_expand,
            (ref $arg eq 'ARRAY') ? @$arg : $arg;
    }

    # TODO: Check if Maketext model is available
    my $handle = $c->model('Maketext');
    my $msgstr = $handle->maketext( $msgid, @args_expand );

    return $msgstr
        if defined $msgstr;

    # Method expansion
    my $replacesub = sub {
        my $method = shift;
        my @params = split(/,/,shift);
        if ($handle->can($method)) {
            return $handle->$method(@params);
        }
        return $method;
    };

    # TODO: use gettext/maketext style
    $msgstr = $msgid;
    $msgstr =~s{%(\d+)}{ $args[$1-1] || 'missing value %'.$1 }eg;
    $msgstr =~s/%(\w+)\(([^)]+)\)/$replacesub->($1,$2)/eg;

    return $msgstr;
}

no Moose::Role;
1;

=encoding utf8

lib/CatalystX/I18N/Role/Maketext.pm  view on Meta::CPAN

In order to work properly this role needs a model called C<Maketext>. A call
to C<$c-E<gt>model('Maketext')> should return a handle for a Maketext /
L<Locale::Maketext> class. You can either write your own Model and Maketext
class or use L<CatalystX::I18N::Model::Maketext> and
L<CatalystX::I18N::Maketext>.

=head1 METHODS

=head3 maketext

 my $translated_string = $c->maketext($msgid,@params);
 OR
 my $translated_string = $c->maketext($msgid,\@params);

Translates a string via L<Locale::Maketext>.

=head1 SEE ALSO

L<Locale::Maketext>, L<CatalystX::I18N::Model::Maketext>
and L<CatalystX::I18N::Maketext>

=head1 AUTHOR

lib/CatalystX/I18N/TraitFor/ViewTT.pm  view on Meta::CPAN


sub _i18n_factory_helper {
    my ( $method, $context, @params ) = @_;

    my $stash = $context->stash;
    my $catalyst_var = $context->{CONFIG}{CATALYST_VAR};
    my $c = $stash->{$catalyst_var};
    weaken $c;

    return sub {
        my ($msgid) = @_;
        if (scalar @params == 1
            && ref($params[0]) eq 'ARRAY') {
            @params = @{$params[0]};
        }

        return $c->$method($msgid,@params);
    }
}

no Moose::Role;
1;

=encoding utf8

=head1 NAME

t/testapp/lib/TestApp/DataLocalize/de.po  view on Meta::CPAN

msgid ""
msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: plurals=2; plural=n != 1\n;"

msgid "string1"
msgstr "string1 de"

msgid "string2"
msgstr "string2 de"

msgid "string4"
msgstr "string4 de %quant(%1,hase,hasen)"

msgid "string5"
msgstr "string5 de"

t/testapp/lib/TestApp/DataLocalize/de_AT.po  view on Meta::CPAN

msgid ""
msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: plurals=2; plural=n != 1\n;"

msgid "string1"
msgstr "string1 de_AT"

msgid "string2"
msgstr "string2 de_AT"

msgid "string3"
msgstr "string3 de_AT"

msgid "string4"
msgstr "string4 de_AT %quant(%1,hase,hasen)"

t/testapp/lib/TestApp/DataLocalize/de_DE.po  view on Meta::CPAN

msgid ""
msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: plurals=2; plural=n != 1\n;"

msgid "string1"
msgstr "string1 de_DE"

msgid "string2"
msgstr "string2 de_DE"

msgid "string3"
msgstr "string3 de_DE"

msgid "string4"
msgstr "string4 de_DE %quant(%1,hase,hasen)"

t/testapp/lib/TestApp/DataLocalize/fr_CH.po  view on Meta::CPAN

msgid ""
msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: plurals=2; plural=n != 1\n;"

msgid "string1"
msgstr "string1 fr_CH"

msgid "string2"
msgstr "string2 fr_CH"

msgid "string4"
msgstr "string4 fr_CH %quant(%1,lapin,lapins)"

msgid "string3"
msgstr "string3 fr_CH"

t/testapp/lib/TestApp/Maketext/de.po  view on Meta::CPAN

msgid ""
msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: plurals=2; plural=n != 1\n;"

msgid "string1"
msgstr "string1 de"

msgid "string2"
msgstr "string2 de"

msgid "string4"
msgstr "string4 de %quant(%1,hase,hasen)"

msgid "string5"
msgstr "string5 de"

t/testapp/lib/TestApp/Maketext/de_AT.po  view on Meta::CPAN

msgid ""
msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: plurals=2; plural=n != 1\n;"

msgid "string1"
msgstr "string1 de_AT"

msgid "string2"
msgstr "string2 de_AT"

msgid "string3"
msgstr "string3 de_AT"

msgid "string4"
msgstr "string4 de_AT %quant(%1,hase,hasen)"

t/testapp/lib/TestApp/Maketext/de_DE.po  view on Meta::CPAN

msgid ""
msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: plurals=2; plural=n != 1\n;"

msgid "string1"
msgstr "string1 de_DE"

msgid "string2"
msgstr "string2 de_DE"

msgid "string3"
msgstr "string3 de_DE"

msgid "string4"
msgstr "string4 de_DE %quant(%1,hase,hasen)"



( run in 5.022 seconds using v1.01-cache-2.11-cpan-97f6503c9c8 )