2

Ich versuche derzeit, ein Webprojekt von einem benutzerdefinierten i18n-System zu zu verschieben, aber ich muss HTML::Template::Compiled Vorlagen für i18n auch vorbereiten und weiß noch nicht, wie es geht. Meine Vorlagen sind in separaten Dateien gespeichert, daher kann ich die String-Interpolation von Perl nicht verwenden und auch die gettext-typische _() Syntax in den Vorlagen verwenden.Wie kann ich I18N in HTML :: Template [:: Compiled] mit gettext?

Haben Sie eine Idee, wie Sie das richtig implementieren?

Antwort

1

können Sie dieses versuchen: http://perlboard.svn.sourceforge.net/viewvc/perlboard/battie/lib/HTML/Template/Compiled/Plugin/Translate.pm?view=markup

ich ein CPAN-Modul aus ihm machen wollen. Hoffentlich bald =) Hier ist ein Beispiel, die Kommentare in dem Modul sind veraltet:

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; 

Die Vorlage Syntax nicht so kurz ist, wie man wollte, und ich weiß nicht verwenden gettext, aber vielleicht Sie Sie können aus diesem Beispiel ein eigenes Plugin erstellen.

grüße, tina

Verwandte Themen