Template-Toolkitを使用して、Dancer環境でLocale::TextDomainを使用しています。
はい、私は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 関数を次のようにラップしたいと思います。
$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 で '__' (およびその仲間) ルート操作を作成するにはどうすればよいですか?