1

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 で '__' (およびその仲間) ルート操作を作成するにはどうすればよいですか?

4

2 に答える 2

0

レクサーはそれらを識別子として認識しません。リーディングを受け入れるようにモジュールを変更することは_、簡単なことではないようです。

于 2013-03-01T16:09:16.223 に答える