【发布时间】:2013-03-01 14:59:56
【问题描述】:
我在Dancer 环境中使用Locale::TextDomain 和Template-Toolkit。
是的,我知道Dancer-Plugin-I18N 并尝试过,但我不想不使用它!
我阅读了Defining_Custom_Virtual_Methods 并根据我的需要对其进行了调整。
# load Template::Stash to make method tables visible
use Template::Stash;
$Template::Stash::ROOT_OPS->{ 'localize' } = sub {
return __(shift);
};
在视图中
[% localize("Hello") %]
效果很好。
但我想将所有Locale::TextDomain functions 包装起来:
$Template::Stash::ROOT_OPS->{__} = sub { return __x(shift) };
$Template::Stash::ROOT_OPS->{__x} = sub { return __x(shift, @_) };
$Template::Stash::ROOT_OPS->{__n} = sub { return __n(shift, shift, shift) };
$Template::Stash::ROOT_OPS->{__nx} = sub { return __nx(shift, shift, shift, @_) };
$Template::Stash::ROOT_OPS->{__xn} = sub { return __xn(shift, shift, shift, @_) };
$Template::Stash::ROOT_OPS->{__p} = sub { return __p(shift, shift) };
$Template::Stash::ROOT_OPS->{__px} = sub { return __px(shift, shift, @_) };
$Template::Stash::ROOT_OPS->{__np} = sub { return __np(shift, shift, shift, shift) };
$Template::Stash::ROOT_OPS->{__npx} = sub { return __npx(shift, shift, shift, shift, @_) };
但不幸的是,不能使用 '__' 或 '__x' 作为令牌。
所以我的问题是:如何在 Template-Toolkit 中创建“__”(和朋友)根操作?
【问题讨论】:
标签: perl internationalization locale template-toolkit dancer