如何在Twig文件中使用变量处理翻译?

46

我有一个twig文件和一个yml文件,我在其中定义了翻译变量。

例如:

YML文件 -
variable.for.translation: 可用的, 为你准备

Twig文件内容 -

<h2>"Hola, Follow {{ variableName }} en Twitter</h2>  

我想为一个变量命名

Hola, Follow {{ variableName }} en Twitter

在翻译文件(即我的yml文件)中, 目前我是这样做的: 在YML中 -
follow.us.twitter: Hola, Follow 

follow.us.twitter1: en Twitter 

在Twig中 -
<h2>{{ "follow.us.twitter"|trans([], "workend") }} {{ variableName }} {{ "follow.us.twitter1"|trans([], "workend") }}</h2> 

它的工作正常,但问题是我现在在twig中有3个变量,这太多了:

 1. follow.us.twitter
 2. follow.us.twitter1
 3. {{ variableName }}

我尝试使用单个变量来实现它,就像这样:
follow.us.in.twitter : Hola, Follow {{ variableName }} en Twitter 
and  
<h2>{{ "follow.us.in.twitter"|trans([], "workend") }}</h2>

但是它没有起作用。问题在于我使用的变量,即{{ variableName }}。

有没有办法处理预定义变量并在翻译文件中定义它?

1个回答

92
你已经朝着正确的方向前进了,你所错过的是在Twig文件中将someVariable作为参数传递给trans()函数:
<h2>{{ "follow.us.in.twitter"|trans({'%someVariable%': someVariable}, "workend") }}</h2>

现在你的 Yml 文件 中的消息应该如下:

follow.us.in.twitter: Hola, Follow %someVariable% en Twitter

这应该可以运行。 如需更多细节和清晰度,您可以参考以下链接: Symfony Book

祝你好运。


1
如果我将许多参数传递给Twig,那么Twig不能在不定义它们的情况下使用整个数组吗?所以,如果我有: {{ reminder.Email|trans({'%firstName%' : firstName, '%lastName%' : lastName, '%siteUrl%' : siteUrl}) }}为什么不能只映射一个整个数组,用于替换%var%与var? - rolandow
最好将这个替换为这个.. {'%variableName%': variableName} ===> {'%variableName%': variableValue} - Nandakumar

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