在ZF2中使用字符串替换的多个翻译

时间:2014-06-30 14:41:55

标签: php zend-framework2

考虑以下字符串:

  
    

我有一个苹果。

         我有4个苹果。

  

如何让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->translatePlural('I have an apple', 'I have %$1 apples', 4);
$translator->translatePlural('I have an apple', 'I have %%s apples', 4);

Zend文档中似乎没有任何内容(12)来解释如何执行此操作。因此,我不确定它是否可能。

1 个答案:

答案 0 :(得分:3)

ZF2转换器不再执行任何字符串格式化。这是ZF1的情况,但这在ZF2中已经过时了。建议的方法是明确自己:

$num = 4;
$t   = $translator;
sprintf($t->translatePlural('I have an apple', 'I have %d apples', $num),
        $num);

(我在格式化方面非常糟糕)

实际上,这会产生sprintf('I have an apple', $num)作为结果或sprintf('I have %d apples', $num)作为结果。在第一种情况下,由于缺少%d,任何事情都不会发生。