Я использую Locale::TextDomain в среде Dancer с Template-Toolkit.Как создать специальный ROOT_OPS в 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") %]
Это работает очень хорошо.
Но я хотел бы wrapp все 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?
Отлично. Теперь я прочитал об этом в http://www.template-toolkit.org/docs/manual/Variables.html. Должно быть, это пропустило. Благодарю. – smartmeta