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

时间:2014-04-10 09:52:53

标签: php symfony twig translation

我有一个像这样的翻译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>

所以这就是问题所在。 select中的项目呈现为&#34; tag.myfirsttag&#34; ,未翻译。如果我用"tag." ~ tag之类的硬编码字符串替换"tag.myfirsttag",则效果很好。所以很明显它与串联有关,但官方文档并没有说出任何关于它的内容。

更清晰简单

我可以翻译

{{ "hello.world" | trans(domain='mydomain') }}

但无法翻译

{{ "hello." ~ "world" | trans(domain='mydomain') }}

3 个答案:

答案 0 :(得分:35)

解决方案是将字符串放入括号中,如here所述:

<强>如下:

{{ 'hello.world' | trans }}

不起作用:

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

<强>如下:

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

答案 1 :(得分:2)

翻译你必须做的事情的联系人字符串:

  

{{(“some string”~entity.type~“another string”)| trans}}

但是尝试编写字符串来翻译像params: 例如:

  

some.funny.string

答案 2 :(得分:0)

它是一个关联数组,对吧?然后你应该循环key =&gt;值对

<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>