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)"