Php ZF2中带字符串替换的复数翻译
考虑以下字符串: 我有一个苹果 我有四个苹果 如何让ZF2产生第二个结果?我正在使用Php ZF2中带字符串替换的复数翻译,php,zend-framework2,Php,Zend Framework2,考虑以下字符串: 我有一个苹果 我有四个苹果 如何让ZF2产生第二个结果?我正在使用translatePlural,并尝试了多种不同的方法: $translator->translatePlural('I have an apple', 'I have %d apples', 4); $translator->translatePlural('I have an apple', 'I have %s apples', 4); $translator->translatePlur
translatePlural
,并尝试了多种不同的方法:
$translator->translatePlural('I have an apple', 'I have %d apples', 4);
$translator->translatePlural('I have an apple', 'I have %s apples', 4);
$translator->translatePlural('I have an apple', 'I have %$1 apples', 4);
$translator->translatePlural('I have an apple', 'I have %%s apples', 4);
Zend文档(,)中似乎没有任何东西解释如何做到这一点。因此,我不确定这是否可能。ZF2转换器不再执行任何字符串格式设置。ZF1就是这种情况,但在ZF2中已经过时。建议的方法是明确自己的观点:
$num=4;
$t=$translator;
sprintf($t->translatePlural('I have apple','I have%d apples',$num),
$num);
(我只是格式很差)
实际上,这会给出
sprintf('I have apple',$num)
作为结果,或者sprintf('I have%d apple',$num)
作为结果。在第一种情况下,由于缺少%d
,将不会发生任何事情。ZF2转换器不再执行任何字符串格式设置。ZF1就是这种情况,但在ZF2中已经过时。建议的方法是明确自己的观点:
$num=4;
$t=$translator;
sprintf($t->translatePlural('I have apple','I have%d apples',$num),
$num);
(我只是格式很差)
实际上,这会给出
sprintf('I have apple',$num)
作为结果,或者sprintf('I have%d apple',$num)
作为结果。在第一种情况下,由于缺少%d
,将不会发生任何事情。ZF2转换器不再执行任何字符串格式设置。ZF1就是这种情况,但在ZF2中已经过时。建议的方法是明确自己的观点:
$num=4;
$t=$translator;
sprintf($t->translatePlural('I have apple','I have%d apples',$num),
$num);
(我只是格式很差)
实际上,这会给出
sprintf('I have apple',$num)
作为结果,或者sprintf('I have%d apple',$num)
作为结果。在第一种情况下,由于缺少%d
,将不会发生任何事情。ZF2转换器不再执行任何字符串格式设置。ZF1就是这种情况,但在ZF2中已经过时。建议的方法是明确自己的观点:
$num=4;
$t=$translator;
sprintf($t->translatePlural('I have apple','I have%d apples',$num),
$num);
(我只是格式很差)
实际上,这会给出sprintf('I have apple',$num)
作为结果,或者sprintf('I have%d apple',$num)
作为结果。在第一种情况下,由于缺少%d
,将不会发生任何事情