Twig“trans with”不起作用

时间:2017-04-08 20:30:31

标签: php twig translation

我在模板中使用了twig trans标记,我想像这样传递变量:

{% trans with {
   '%link_start%': '<a href="http://www.google.nl/">',
   '%link_end%': '</a>'
} %}
    This %link_start%disclaimer%link_end% applies to all of our messages.
{% endtrans %}

但这给了我以下异常,它指向{% trans with行的树枝模板:

  

PHP致命错误:未捕获异常'Twig_Error_Syntax',消息'意外令牌'标点符号“值”{“(”预期语句块结束“)。在[twig-template:line]

即使我复制&amp;粘贴Symfony documentation中的示例我得到了相同的异常。所以我不知所措,我在这里做错了什么?

仅供参考:我正在使用Twig 1.33且启用了i18n扩展(我没有使用Symfony框架)

2 个答案:

答案 0 :(得分:2)

Twig不支持trans with开箱即用。它是Symfony翻译扩展的一部分。这就解释了为什么即使官方的Symfony文档也不起作用 - 你没有使用Symfony。

请参阅此问题:https://github.com/twigphp/Twig-extensions/issues/74。 <{3}}支持trans with,但尚未合并。

您可能希望在应用程序中使用pull request。即使不使用完整的Symfony(Framework)堆栈,也可以在应用程序中使用Symfony组件。

我没有尝试过,但您可以尝试使用Symfony Translation Component

答案 1 :(得分:0)

作为一种解决方法,您可以将filter tagreplace一起使用。

{% filter replace({'%foo%': 'blue', '%bar%': 'red'}) %}
  {% trans %}
    I like %foo% and %bar% messages.
  {% endtrans %}
{% endfilter %}