4

私は問題に直面しています.Symfony2のtwigjsとasseticを使用して、テンプレートの一部を動的にレンダリングしています。

ドキュメント、ソース、およびテストを読みました。

そのTransFilterCompilerTest.php/testCompileDynamicTranslations中で

{{ 'foo' | trans }}私の小枝テンプレートで

twigjs テンプレートで置き換えられます

'this.env_.filter("trans",'...私のtwigjsで

しかし、コンパイルされたjsにはsb.append(twig.filter.escape(this.env_, "posted", "html", null, true));

理由はわかりますか?

ありがとう!

4

1 に答える 1

1

さらに調査した結果、翻訳コンパイル フィルタは数か月前に JMSTwigJsBundle に追加されましたが、必要な機能は最近 Assetic に追加されたばかりであることがわかりました。ライブラリのリリース済みバージョンを使用しても機能しません。今のところ、git の master を使用する必要があります。

depsファイルを使用して...

[assetic]
    git=http://github.com/kriswallsmith/assetic.git

[AsseticBundle]
    git=http://github.com/symfony/AsseticBundle.git
    target=/bundles/Symfony/Bundle/AsseticBundle

サイトでサポートされている言語をパラメーターとして指定する必要があります。config.yml ファイルに追加しました。

parameters:
    assetic.variables:
        locale: ['en', 'fr']

最後に、ファイル セットは、ロケールによって異なることを示す必要があります。

{% javascripts vars=["locale"]
    '@AcmeBundle/Resources/views/Default/some_template.html.twig'
    filter="twig_js"
%}  

完全を期すためのサンプル テンプレートを次に示します。

{% twig_js name="some_template" %}
<b>{{'test.say.hello' | trans({"%name%": name|default("World")})}}</b>

テンプレート定義の前に、twig.js ブートストラップ ファイルもロードする必要があります。テンプレートの呼び出しは期待どおりです。

Twig.render(some_template, {name: 'CoBaLt2760'})
于 2012-03-08T20:27:38.233 に答える