2

J'essaie actuellement de déplacer un projet Web d'un système i18n personnalisé à gettext, mais je vais devoir préparer des modèles HTML::Template::Compiled pour i18n aussi et je ne sais pas encore comment le faire. Mes modèles sont stockés dans des fichiers séparés, donc je ne peux pas utiliser l'interpolation de chaîne de Perl et je voudrais également utiliser la syntaxe _() gettext-typique dans les modèles.Comment puis-je faire I18N en HTML :: Template [:: Compiled] avec gettext?

Une idée de comment l'implémenter correctement?

Répondre

1

vous pouvez essayer celui-ci: http://perlboard.svn.sourceforge.net/viewvc/perlboard/battie/lib/HTML/Template/Compiled/Plugin/Translate.pm?view=markup

Je veux faire un module CPAN hors de celui-ci. Si tout va bien bientôt =) Voici un exemple, les commentaires du module sont démodés:

use HTML::Template::Compiled; 
use HTML::Template::Compiled::Plugin::Translate; 
my $t = <<"EOM"; 
<%translate id="search %1:s found %2:d videos" count=".items#" args=".search,.items#" %> 
EOM 

my $map = { 
    "search %1:s found %2:d videos" => [ 
     q/Suche nach "%1:s" hat %2:020d Video gefunden/, 
     q/Suche nach "%1:s" hat %2:d Videos gefunden/, 
    ], 
}; 
my $plug = HTML::Template::Compiled::Plugin::Translate->new({ 
    lang => "de", 
    map => $map, 
}); 

my $htc = HTML::Template::Compiled->new(
    scalarref => \$t, 
    plugin => [$plug], 
); 
$htc->param(
    search => "search term", 
    items => [qw/ result1 result2 /], 
); 
print $htc->output; 

La syntaxe du modèle n'est pas aussi court que vous vouliez, et je ne pas utiliser gettext, mais peut-être que vous aimez ou peut construire votre propre plugin à partir de cet exemple.

salutations, tina

Questions connexes