我目前正在尝试将 Web 项目从自定义 i18n 系统移动到gettext
,但是我还需要为 i18n 准备HTML::Template::Compiled模板,但还不知道该怎么做。我的模板存储在单独的文件中,因此我不能使用 Perl 的字符串插值,我也想_()
在模板中使用 gettext-typical 语法。
知道如何正确实施吗?
我目前正在尝试将 Web 项目从自定义 i18n 系统移动到gettext
,但是我还需要为 i18n 准备HTML::Template::Compiled模板,但还不知道该怎么做。我的模板存储在单独的文件中,因此我不能使用 Perl 的字符串插值,我也想_()
在模板中使用 gettext-typical 语法。
知道如何正确实施吗?
我想用它制作一个 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,但也许你喜欢它或者可以从这个例子中构建你自己的插件。
问候,蒂娜