示例#1
0
 /**
  * Translate a plural message.
  *
  * @param  string  $singular
  * @param  string  $plural
  * @param  integer $number
  * @param  string  $textDomain
  * @param  string  $locale
  * @return string
  * @throws Exception\RuntimeException
  */
 public function __invoke($singular, $plural, $number, $textDomain = 'default', $locale = null)
 {
     if ($this->translator === null) {
         throw new Exception\RuntimeException('Translator has not been set');
     }
     return $this->translator->translatePlural($singular, $plural, $number, $textDomain, $locale);
 }
 public function testTranslatePlural()
 {
     $singular = 'foo bar';
     $plural = 'bar foo';
     $number = 1;
     $this->assertEquals($this->translator->translatePlural($singular, $plural, $number), $this->extension->translatePlural($singular, $plural, $number));
 }
示例#3
0
 public function translatePlural($singular, $plural, $number, $textDomain, $locale)
 {
     if ($this->translator === null) {
         $this->translator = $this->getApplicationServiceLocator()->get('translator');
     }
     return $this->translator->translatePlural($singular, $plural, $number, $textDomain, $locale);
 }
示例#4
0
 public function testTranslatePlurals()
 {
     $this->translator->setLocale('en_EN');
     $this->translator->addTranslationFile('phparray', $this->testFilesDir . '/translation_en.php', 'default', 'en_EN');
     $pl0 = $this->translator->translatePlural('Message 5', 'Message 5 Plural', 1);
     $pl1 = $this->translator->translatePlural('Message 5', 'Message 5 Plural', 2);
     $pl2 = $this->translator->translatePlural('Message 5', 'Message 5 Plural', 10);
     $this->assertEquals('Message 5 (en) Plural 0', $pl0);
     $this->assertEquals('Message 5 (en) Plural 1', $pl1);
     $this->assertEquals('Message 5 (en) Plural 2', $pl2);
 }
示例#5
0
 /**
  * {@inheritDoc}
  */
 public function translatePlural($singular, $plural, $number, $textDomain = null, $locale = null)
 {
     if (!$textDomain) {
         $textDomain = $this->getTextDomain();
     }
     return parent::translatePlural($singular, $plural, $number, $textDomain, $locale);
 }
示例#6
0
 /**
  * Translate a plural message.
  *
  * @param   string      $singular
  * @param   string      $plural
  * @param   int         $number
  * @param   string      $textDomain
  * @param   string|null $locale
  * @return  string
  * @throws  Exception\OutOfBoundsException
  */
 public function translatePlural($singular, $plural, $number, $textDomain = 'default', $locale = null)
 {
     $locale = (string) $locale ?: $this->getLocale();
     $textDomain = strstr($singular, '.', true) ?: strstr($plural, '.', true) ?: $textDomain;
     $translation = $this->getTranslatedMessage($singular, $locale, $textDomain);
     if (is_array($translation) || $translation instanceof ArrayAccess) {
         if (isset($this->messages[$textDomain][$locale])) {
             return parent::translatePlural($singular, $plural, $number, $textDomain, $locale);
         }
         $index = $this->myMessages[$textDomain][$locale]->getPluralRule()->evaluate($number);
         if (!isset($translation[$index])) {
             throw new Exception\OutOfBoundsException(sprintf('Provided index %d does not exist in plural array', $index));
         }
         return $translation[$index];
     }
     return parent::translate(1 == $number ? $singular : $plural, $textDomain, $locale);
 }