/**
  * @param string|null $locale
  * @param string|null $domain
  * @param string      $id
  * @param string      $translation
  * @param array|null  $parameters
  * @param int|null    $number
  */
 private function collectMessage($locale, $domain, $id, $translation, $parameters = array(), $number = null)
 {
     if (null === $domain) {
         $domain = 'messages';
     }
     $id = (string) $id;
     $catalogue = $this->translator->getCatalogue($locale);
     $locale = $catalogue->getLocale();
     if ($catalogue->defines($id, $domain)) {
         $state = self::MESSAGE_DEFINED;
     } elseif ($catalogue->has($id, $domain)) {
         $state = self::MESSAGE_EQUALS_FALLBACK;
         $fallbackCatalogue = $catalogue->getFallbackCatalogue();
         while ($fallbackCatalogue) {
             if ($fallbackCatalogue->defines($id, $domain)) {
                 $locale = $fallbackCatalogue->getLocale();
                 break;
             }
             $fallbackCatalogue = $fallbackCatalogue->getFallbackCatalogue();
         }
     } else {
         $state = self::MESSAGE_MISSING;
     }
     $this->messages[] = array('locale' => $locale, 'domain' => $domain, 'id' => $id, 'translation' => $translation, 'parameters' => $parameters, 'transChoiceNumber' => $number, 'state' => $state);
 }
 /**
  * {@inheritdoc}
  */
 public function getCatalogue($locale = null)
 {
     return $this->translator->getCatalogue($locale);
 }