Symfony 3中是否有任何复制字符串的方法?例如:我有"对象"我想得到" Objects"。
答案 0 :(得分:0)
多元化是一个非常复杂的主题,Symfony将其作为Translation Component的一部分:
消息多元化是一个棘手的话题,因为规则可能非常复杂。
因此,您基本上需要激活系统的翻译,并使用翻译服务的transChoice()
方法或树枝模板中的“transchoice”标记/过滤器翻译所需的字符串。
要处理此问题,请在模板中使用transChoice()方法或transchoice标记/过滤器。
使用翻译服务
// the %count% placeholder is assigned to the second argument...
$translator->transChoice(
'There is one apple|There are %count% apples',
10
);
// ...but you can define more placeholders if needed
$translator->transChoice(
'Hurry up %name%! There is one apple left.|There are %count% apples left.',
10,
// no need to include %count% here; Symfony does that for you
array('%name%' => $user->getName())
);
树枝标签
{% trans %}Hello %name%{% endtrans %}
{% transchoice count %}
{0} There are no apples|{1} There is one apple|]1,Inf[ There are %count% apples
{% endtranschoice %}
<强>更新强>
如果你事先不知道字符串,你可以使用内部Inflector Component,但要注意免责声明以及这只适用于英文字符串的事实:
此组件目前标记为内部。不要在自己的代码中使用它。可能会在Symfony的下一个次要版本中引入重大更改,或者甚至可以完全删除组件本身。
另一种方法是创建自己的变形器类,例如something like this并从中创建服务。