如何在Twig模板中使用Symfony2翻译器翻译连接字符串

11

我有一个这样的翻译yml文件:

tag:
  myfirsttag: Tag number one
  secondtag: Tag number two
  ....

并且像Twig模板一样

    <select name="tag" required="required">
        {% for tag in tag_list %}
            <option value="{{ tag }}">{{ "tag." ~ tag | trans(domain='mydomain') }}</option>
        {% endfor %}
    </select>
所以问题在于,选择项目的呈现方式类似于“tag.myfirsttag”,没有被翻译。如果我用硬编码字符串像"tag.myfirsttag"替换"tag." ~ tag,它可以正常工作。很明显这与连接有关,但官方文档没有提到这一点。
更清晰简单一些来说,
我能进行翻译。
{{ "hello.world" | trans(domain='mydomain') }}

但无法翻译

{{ "hello." ~ "world" | trans(domain='mydomain') }}
3个回答

38

解决方法是将字符串放入括号中,如这里所述:

有效:

{{ 'hello.world' | trans }}

不能工作:

{{ 'hello.' ~ 'world' | trans }}

作品:

{{ ('hello.' ~ 'world') | trans }}

正是我所需要的。谢谢! - Andrew

2

要翻译联系字符串,您需要执行以下操作:

{{ ("一些字符串 " ~ entity.type ~ " 另一个字符串")|trans }}

但是请尝试像参数一样编写要翻译的字符串:

some.funny.string


你的答案是正确的,但我必须使用动态字符串,因为在写作时无法预测哪个字符串将被翻译。请检查我的问题的第一部分。 - Andrew

0

这是一个关联数组,对吧?那么你应该循环遍历键=>值对。

<select name="tag" required="required">
    {% for key,tag in tag_list %}
      <option value="{{ key }}">{{ tag | trans(domain='mydomain') }}</option>
    {% endfor %}
</select>

或者你的数组更深层次:

<select name="tag" required="required">
    {% for tag in tag_list %}
      {% for key,value in tag %}
        <option value="{{ key }}">{{ value | trans(domain='mydomain') }}</option>
      {% endfor %}
    {% endfor %}
</select>

不,这不是我真正寻找的。我的数组键或值没有任何问题。问题在于使用带有“trans”过滤器的连接字符串。 - Andrew
我已经更新了我的答案,请看看是否适用。看起来这里是一个 XY 问题。 - Damien Pirsy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接