You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Twig框架中如何直接翻译字符串与变量的拼接内容?

直接翻译拼接内容的Twig解决方案

嘿,这个问题其实是Twig的运算符优先级在搞鬼!你之前的写法{{ 'string' ~ variable|trans }}里,过滤器|的优先级比字符串拼接~高,所以Twig会先把variable单独翻译,再和原字符串'string'拼在一起,自然只有变量部分被翻译了。

无需中间变量的直接写法

解决方法很简单,把整个拼接表达式用括号括起来,让trans过滤器作用在完整的拼接结果上就行:

{{ ('string' ~ variable)|trans }}

这样Twig会先完成字符串与变量的拼接,再对整个结果应用翻译过滤器,就能得到你想要的完整翻译内容了。

关于{% trans %}块的正确打开方式

你之前用{% trans %} {{'string' ~ variable }} {% endtrans %}无效,是因为在trans块内部,Twig对表达式的解析规则不一样——直接写'string' ~ variable会被当作普通文本处理,而不是计算表达式。其实更推荐用trans块的占位符语法,这也是国际化的最佳实践:

{% trans %}
    string {{ variable }}
{% endtrans %}

这种写法不仅不用手动拼接,还能让翻译文件里的条目更清晰(比如对应翻译键可以用%variable%作为占位符),后续维护起来也更方便。

额外小技巧

如果你的拼接逻辑更复杂(比如涉及多个变量或条件判断),除了括号包裹的方式,也可以结合format过滤器来实现:

{{ ('string %s'|format(variable))|trans }}

不过这种写法和括号拼接的效果类似,选哪种全看你觉得哪种代码更易读~

内容的提问来源于stack exchange,提问作者Ricard Espinàs Llovet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:38:30