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

发布于 2024-07-17 16:53:39 字数 304 浏览 6 评论 0原文

我目前正在尝试将 Web 项目从自定义 i18n 系统移动到 gettext,但是我需要准备 HTML::Template::Compiled i18n 模板,但还不知道该怎么做。 我的模板存储在单独的文件中,因此我无法使用 Perl 的字符串插值,并且我还想在模板中使用 gettext 典型的 _() 语法。

知道如何正确实施吗?

I'm currently trying to move a web project from a custom i18n system to gettext, however I'll need to prepare HTML::Template::Compiled templates for i18n too and don't know yet how to do it. My templates are stored in separate files, therefore I can't use Perl's string interpolation and I also would like to use gettext-typical _() syntax in the templates.

Any idea how to implement this properly?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

雪若未夕 2024-07-24 16:53:39

你可以试试这个:
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,但也许您喜欢它或者可以从这个示例构建您自己的插件。

问候,
蒂娜

you can try this one:
http://perlboard.svn.sourceforge.net/viewvc/perlboard/battie/lib/HTML/Template/Compiled/Plugin/Translate.pm?view=markup

I want to make a CPAN module out of it. Hopefully soon =)
Here is an example, the comments in the module are out of date:

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;

The template syntax is not as short as you wanted, and I don't use gettext, but maybe you like it or can build your own plugin from this example.

regards,
tina

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文