2012-01-09 68 views
4

我正面临一个问题,我在Symfony2中使用twigjs和assetic来动态地呈现我的一些模板。Twigjs和动态翻译

我已阅读文档,源代码和测试。

TransFilterCompilerTest.php/testCompileDynamicTranslations似乎在我的树枝模板

{{ 'foo' | trans }}

将在twigjs模板,通过

'this.env_.filter("trans",'...我twigjs一个

在我的编译取代js我只有sb.append(twig.filter.escape(this.env_, "posted", "html", null, true));

你知道为什么吗?

谢谢!

+1

该问题似乎与TwigJs \ JsCompiler :: getDefine('locale')返回null有关。我似乎无法找到它的配置。 – 2012-03-08 19:22:35

回答

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'})