View Helpers

TranslatePlural

The TranslatePlural view helper can be used to translate words which take into account numeric meanings. English, for example, has a singular definition of "car", for one car, and the plural definition, "cars", meaning zero "cars" or more than one car. Other languages like Russian or Polish have more plurals with different rules.

The helper acts as a wrapper for the Laminas\I18n\Translator\Translator class.

Setup

Before using the TranslatePlural view helper, you must have first created a Translator object and have attached it to the view helper. If you use the Laminas\View\HelperPluginManager to invoke the view helper, this will be done automatically for you.

Basic Usage

To use this view helper, you must define the following parameters:

  • $singular: The message to use for singular values.
  • $plural: The message to use for plural values.
  • $number: The number to evaluate in order to determine which number to use.
echo $this->translatePlural('car', 'cars', 1); // 'Auto'
echo $this->translatePlural('car', 'cars', 4); // 'Autos'

(The above example assumes that the environment locale is set to de_DE.)

Using Text Domain

The text domain defines the domain of the translation.

echo $this->translatePlural('monitor', 'monitors', 1, 'customDomain'); // 'Bildschirm'
$this->plugin('currencyFormat')->setTranslatorTextDomain('customDomain');

echo $this->translatePlural('monitor', 'monitors', 1); // 'Bildschirm'

(The above example assumes that the environment locale is set to de_DE.)

Get current Value

To get the current value of this option, use the getTranslatorTextDomain() method.

$this->plugin('translatePlural')->setTranslatorTextDomain('customDomain');

echo $this->plugin('translatePlural')->getTranslatorTextDomain(); // 'customDomain'

Default Value

The default value of this option is default like defined in Laminas\I18n\Translator\TranslatorInterface.

Using Locale

The locale to which the message should be translated.

echo $this->translatePlural('car', 'cars', 1, 'default', 'de_DE'); // 'Auto'
echo $this->translatePlural('car', 'cars', 4, 'default', 'de_DE'); // 'Autos'

Default Value

By default, if no locale is provided, TranslatePlural will use the system locale provided by PHP's Locale::getDefault().