Twigjs и динамические переводы - PullRequest
4 голосов
/ 10 января 2012

Я столкнулся с проблемой, я использую в Symfony2 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 Ответ

1 голос
/ 09 марта 2012

После еще одного исследования я обнаружил, что хотя фильтр компиляции перевода был добавлен несколько месяцев назад в JMSTwigJsBundle, необходимые функции были добавлены в Assetic только недавно.Использование выпущенных версий библиотек не будет работать.На данный момент должен использоваться мастер из git.

Использование файла 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'})
...