Php 细枝:如何连接和翻译字符串?
我试过了,但不起作用。这很奇怪,我无法复制这种行为:Php 细枝:如何连接和翻译字符串?,php,string,symfony,twig,yaml,Php,String,Symfony,Twig,Yaml,我试过了,但不起作用。这很奇怪,我无法复制这种行为: 我清除了缓存 Concat工作(它的输出是正确的字符串) 作为变量的特定字符串不可翻译 粘贴为字符串的特定字符串是可翻译的 Edit:obj2arr将对象强制转换为数组,以使其可编辑prepareForTwig正在使用trim()等-字符串输出正确 编辑2:{%set transVar=(键| prepareForTwig)%}(不带前缀)也不起作用 yml: # Resources/translations/messages.en.ym
- 我清除了缓存
- Concat工作(它的输出是正确的字符串)
- 作为变量的特定字符串不可翻译
- 粘贴为字符串的特定字符串是可翻译的
- Edit:
将对象强制转换为数组,以使其可编辑obj2arr
正在使用prepareForTwig
等-字符串输出正确李>trim()
- 编辑2:
(不带前缀)也不起作用{%set transVar=(键| prepareForTwig)%}
# Resources/translations/messages.en.yml
my:
keywords:
keyword1: K1
keyword2: K2
# ...
{# my.twig.html #}
{% for key, value in data|obj2arr %}
{% set transVar = 'my.keywords.' ~ (key|prepareForTwig)) %}
{{ transVar }}<br/> {# output, e.g.: my.keywords.keyword1 #}
{{ transVar|trans}}<br/> {# output, e.g.: my.keywords.keyword1 #}
{{ 'my.keywords.keyword1'|trans }} {# output: K1 #}
{% endfor %}
小枝:
# Resources/translations/messages.en.yml
my:
keywords:
keyword1: K1
keyword2: K2
# ...
{# my.twig.html #}
{% for key, value in data|obj2arr %}
{% set transVar = 'my.keywords.' ~ (key|prepareForTwig)) %}
{{ transVar }}<br/> {# output, e.g.: my.keywords.keyword1 #}
{{ transVar|trans}}<br/> {# output, e.g.: my.keywords.keyword1 #}
{{ 'my.keywords.keyword1'|trans }} {# output: K1 #}
{% endfor %}
提前谢谢 输出浓缩翻译字符串的每个答案都是正确的,例如:
{% 'my.prefix.' ~ extendByKeyword | trans }}
问题是一个奇怪的生成空间:
添加了(数组)$obj
(星号后有两个空格)作为*
-变量的前缀键
- 我使用
来去掉substr()
(星号+1空格),但没有注意到/预期到第二个空格*
- 将字符串与strlen()比较后,我找到了原因
感谢@Artamiel和@CarlosGranados的帮助 其他示例在我的案例中似乎不起作用,这就是我最终使用的:
{{ "my.prefix.#{ myVariable }.my.postfix" | trans }}
翻译字符串必须在双引号之间。您是否尝试使用parentesis,如
{{(transVar)|trans}}
?请务必检查两次。我自己现在用{('hello.world.~myVar)|trans}}
尝试了它,其中myVar
被设置为'message'
,并且它被正确地翻译了。问题的出现是因为您试图让细枝计算变量,然后将其用作细枝构造。这通常是不可用的,但您可以使用Twig的template_from_string函数使其工作:如果您这样尝试会发生什么情况-{%set transVar=key | prepareForTwig%}
然后像{my.keywords.~transVar | trans}
使用{{{include(template_from_string({{'''.~transVar~“'''''''.}}})一样输出它)请注意,开头的括号应该是{{
而不是{%