在Symfony翻译中Transchoice

时间:2014-05-21 01:28:13

标签: php symfony

我在我的语言文件中有这些PHP翻译字符串:

'string.month'                         => '1 month',
'string.months'                        => '%month% months',

我在我的Twig文件中使用它:

{% transchoice data.frequencyInMonths() with {'%month%': data.frequencyInMonths()} from "strings" %}
{0,[2,Inf]} string.months|trans({'%month%' : data.frequencyInMonths()})|{1} string.month|raw
{% endtranschoice %}

显然这不起作用。我只想让string.month使用data.frequencyInMonths() == 1string.months使用其他所有内容注入的数字(即0和2到无穷大)。

我该怎么做?

由于

1 个答案:

答案 0 :(得分:1)

最简单的方法来解决您的问题:

翻译文件代码:

'string.months':       'one month|%count% months'

twig文件代码:

{% set count = data.frequencyInMonths() %}
{{ "string.months"|transchoice(count) }}

复杂方式,如果您需要特殊的0月消息(无月):

翻译文件代码:

'string.months': '{0} none months|{1} one month|]1,Inf] %count% months'

twig文件代码与上次相同:

{% set count = data.frequencyInMonths() %}
{{ "string.months"|transchoice(count) }}

<强>注: 你没有使用&#39;字符在翻译的第一个值,所以你可以随时使用:

string.month: 'something about month'

如果你的翻译(第二个值)是简单的字符串。所以,如果&#34;关于月份&#34; string isn不包含任何特殊字符,您可以使用:

string.month: something about month