現在、Webプロジェクトをカスタムi18nシステムからに移動しようとしていますが、i18n用のHTML :: Template ::コンパイル済みgettext
テンプレートも準備する必要があり、その方法がまだわかりません。私のテンプレートは別々のファイルに保存されているため、Perlの文字列補間を使用できません。また、テンプレートでgettext-typical構文を使用したいと思います。_()
これを適切に実装する方法はありますか?
現在、Webプロジェクトをカスタムi18nシステムからに移動しようとしていますが、i18n用のHTML :: Template ::コンパイル済みgettext
テンプレートも準備する必要があり、その方法がまだわかりません。私のテンプレートは別々のファイルに保存されているため、Perlの文字列補間を使用できません。また、テンプレートでgettext-typical構文を使用したいと思います。_()
これを適切に実装する方法はありますか?
これを試すことができます: 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 を使用していませんが、おそらくあなたはそれを気に入るか、この例から独自のプラグインを構築することができます.
よろしく、ティナ