【问题标题】:How to translate concatenated string in twig template using Symfony2 translator如何使用 Symfony2 翻译器翻译树枝模板中的连接字符串
【发布时间】:2014-05-23 22:53:07
【问题描述】:

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

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

和树枝模板一样

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

所以这就是问题所在。 select 中的项目以 "tag.myfirsttag" 的形式呈现,而不是翻译。如果我将"tag." ~ tag 替换为"tag.myfirsttag" 之类的硬编码字符串,则效果很好。所以很明显它与连接有关,但官方文档并没有说什么。

为了更清晰和简单

我会翻译

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

但不能翻译

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

【问题讨论】:

    标签: php symfony twig translation


    【解决方案1】:

    解决方法是按照here的描述将字符串放入括号中:

    作品:

    {{ 'hello.world' | trans }}
    

    不起作用:

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

    作品:

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

    【讨论】:

    • 正是我想要的。谢谢!
    【解决方案2】:

    要翻译联系字符串,你必须做这个:

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

    但尝试编写字符串来翻译,如参数: 例如:

    some.funny.string

    【讨论】:

    • 您的答案是正确的,但我不得不使用动态字符串,因为在撰写本文时我无法预测哪些字符串会被翻译。检查我的问题的第一部分。
    【解决方案3】:

    它是一个关联数组,对吗?那么你应该循环遍历 key=>value 对

    <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 过滤器的串联字符串会出现问题。
    • 我已经更新了我的答案,看看是不是这样。这里看起来像一个 XY 问题
    猜你喜欢
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 2019-05-07
    • 2015-03-08
    • 2015-09-04
    • 1970-01-01
    • 2016-01-17
    • 1970-01-01
    相关资源
    最近更新 更多