2

現在、Webプロジェクトをカスタムi18nシステムからに移動しようとしていますが、i18n用のHTML :: Template ::コンパイル済みgettextテンプレートも準備する必要があり、その方法がまだわかりません。私のテンプレートは別々のファイルに保存されているため、Perlの文字列補間を使用できません。また、テンプレートでgettext-typical構文を使用したいと思います。_()

これを適切に実装する方法はありますか?

4

1 に答える 1

1

これを試すことができます: http://perlboard.svn.sourceforge.net/viewvc/perlboard/battie/lib/HTML/Template/Compiled/Plugin/Translate.pm?view=markup

それからCPANモジュールを作りたいです。できればすぐに =) 以下に例を示します。モジュール内のコメントは古くなっています。

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 を使用していませんが、おそらくあなたはそれを気に入るか、この例から独自のプラグインを構築することができます.

よろしく、ティナ

于 2009-04-21T12:29:43.637 に答える