Twigjs 和动态翻译

发布于 2024-12-25 13:23:00 字数 484 浏览 0 评论 0原文

我面临一个问题,我在 Symfony2 twigjs 和 assetic 中使用来动态渲染我的一些模板。

我已经阅读了文档、源代码和测试。

TransFilterCompilerTest.php/testCompileDynamicTranslations 中,似乎

{{ 'foo' |我的 twig 模板中的 trans }}

将在 twigjs 模板中替换为 twigjs 中的

'this.env_.filter("trans",'...

但是< /strong> 在我编译的 js 中我只有 sb.append(twig.filter.escape(this.env_, "posted", "html", null, true));

你知道吗为什么?

谢谢!

I'm facing a problem, I use in Symfony2 twigjs and assetic to render some of my templates dynamically.

I've read the doc, the source, and the tests.

In TransFilterCompilerTest.php/testCompileDynamicTranslations it seems that a

{{ 'foo' | trans }} in my twig template

would be replaced in the twigjs template by

'this.env_.filter("trans",'... in my twigjs one

but in my compiled js I only have sb.append(twig.filter.escape(this.env_, "posted", "html", null, true));

Do you have any idea why?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

九命猫 2025-01-01 13:23:00

经过更多调查后,我发现虽然翻译编译过滤器是几个月前在 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'})

After some more investigation, I found out that while the translation compile filter was added several months ago in JMSTwigJsBundle, the required features were only added recently to Assetic. Using the released versions of the libraries will not work. For now, master from git must be used.

Using the deps file...

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

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

The languages supported by the site must be specified as a parameter. I added it to my config.yml file.

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

Finally, the file set must indicate that it varies based on the locale.

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

Here is a sample template for completeness:

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

The twig.js bootstrap file must also be loaded prior to the template definitions. Calling a template is as expected:

Twig.render(some_template, {name: 'CoBaLt2760'})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文