繁体   English   中英

如何使用gettext在HTML :: Template [:: Compiled]中进行I18N?

[英]How can I do I18N in HTML::Template[::Compiled] with gettext?

我目前正在尝试将Web项目从定制的i18n系统移至gettext ,但是我也需要为i18n准备HTML :: Template :: Compiled模板,尚不知道该怎么做。 我的模板存储在单独的文件中,因此我不能使用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,但是也许您喜欢它,或者可以从此示例构建自己的插件。

问候,蒂娜

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM