2012-01-09 4 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'), возвращающим нуль. Кажется, я не могу найти конфигурацию. –

ответ

1

После некоторого исследования я узнал, что, хотя фильтр компиляции перевода был добавлен несколько месяцев назад в 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'}) 

 Смежные вопросы

  • Нет связанных вопросов^_^