bcmcfc
bcmcfc

Reputation: 26785

Plural translations with string replacements in ZF2

Consider the following strings:

I have an apple.

I have 4 apples.

How do I get ZF2 to produce the second outcome? I am using translatePlural and have tried a number of variations on this:

$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);

There doesn't seem to be anything in the Zend documentation (1, 2) to explain how to do this. As such I'm not sure if it's even possible.

Upvotes: 0

Views: 257

Answers (1)

Jurian Sluiman
Jurian Sluiman

Reputation: 13558

The ZF2 translator does not perform any string formatting anymore. This was the case for ZF1, but this has become obsolete in ZF2. The recommended way is to be explicit yourself about this:

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

(I am just very bad at formatting)

Effectively this gives either sprintf('I have an apple', $num) as result or sprintf('I have %d apples', $num) as result. In the first case, because of the missing %d nothing will happen.

Upvotes: 3

Related Questions