2

私は現在、カスタムi18nシステムからgettextにウェブプロジェクトを移動しようとしていますが、 i18nのテンプレートも準備する必要があります。私のテンプレートは別々のファイルに保存されているので、Perlの文字列補間は使用できません。またテンプレートにgettext-typical _()の構文を使用したいと思います。gettextを使ってHTML :: Template [:: Compiled]でI18Nを実行するにはどうしたらいいですか?

これを正しく実装する方法はありますか?

答えて

1

あなたは、このいずれかを試すことができます:私はそれのうちCPANモジュールを作りたい http://perlboard.svn.sourceforge.net/viewvc/perlboard/battie/lib/HTML/Template/Compiled/Plugin/Translate.pm?view=markup

。うまくいけば、すぐに=ここ) は一例であり、モジュール内のコメントが古くなっている:

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; 

テンプレートの構文は、あなたが望んでいたほど短くはない、と私はgettextを使用しませんが、多分あなたは好きまたはこの例から独自のプラグインを構築することができます。

について、 tina

関連する問題