You are here

class TranslationDataCollector in Zircon Profile 8.0

Same name and namespace in other branches
  1. 8 vendor/symfony/translation/DataCollector/TranslationDataCollector.php \Symfony\Component\Translation\DataCollector\TranslationDataCollector

@author Abdellatif Ait boudad <a.aitboudad@gmail.com>

Hierarchy

Expanded class hierarchy of TranslationDataCollector

1 file declares its use of TranslationDataCollector
TranslationDataCollectorTest.php in vendor/symfony/translation/Tests/DataCollector/TranslationDataCollectorTest.php

File

vendor/symfony/translation/DataCollector/TranslationDataCollector.php, line 23

Namespace

Symfony\Component\Translation\DataCollector
View source
class TranslationDataCollector extends DataCollector implements LateDataCollectorInterface {

  /**
   * @var DataCollectorTranslator
   */
  private $translator;

  /**
   * @param DataCollectorTranslator $translator
   */
  public function __construct(DataCollectorTranslator $translator) {
    $this->translator = $translator;
  }

  /**
   * {@inheritdoc}
   */
  public function lateCollect() {
    $messages = $this
      ->sanitizeCollectedMessages($this->translator
      ->getCollectedMessages());
    $this->data = $this
      ->computeCount($messages);
    $this->data['messages'] = $messages;
  }

  /**
   * {@inheritdoc}
   */
  public function collect(Request $request, Response $response, \Exception $exception = null) {
  }

  /**
   * @return array
   */
  public function getMessages() {
    return isset($this->data['messages']) ? $this->data['messages'] : array();
  }

  /**
   * @return int
   */
  public function getCountMissings() {
    return isset($this->data[DataCollectorTranslator::MESSAGE_MISSING]) ? $this->data[DataCollectorTranslator::MESSAGE_MISSING] : 0;
  }

  /**
   * @return int
   */
  public function getCountFallbacks() {
    return isset($this->data[DataCollectorTranslator::MESSAGE_EQUALS_FALLBACK]) ? $this->data[DataCollectorTranslator::MESSAGE_EQUALS_FALLBACK] : 0;
  }

  /**
   * @return int
   */
  public function getCountDefines() {
    return isset($this->data[DataCollectorTranslator::MESSAGE_DEFINED]) ? $this->data[DataCollectorTranslator::MESSAGE_DEFINED] : 0;
  }

  /**
   * {@inheritdoc}
   */
  public function getName() {
    return 'translation';
  }
  private function sanitizeCollectedMessages($messages) {
    $result = array();
    foreach ($messages as $key => $message) {
      $messageId = $message['locale'] . $message['domain'] . $message['id'];
      if (!isset($result[$messageId])) {
        $message['count'] = 1;
        $messages[$key]['translation'] = $this
          ->sanitizeString($message['translation']);
        $result[$messageId] = $message;
      }
      else {
        ++$result[$messageId]['count'];
      }
      unset($messages[$key]);
    }
    return $result;
  }
  private function computeCount($messages) {
    $count = array(
      DataCollectorTranslator::MESSAGE_DEFINED => 0,
      DataCollectorTranslator::MESSAGE_MISSING => 0,
      DataCollectorTranslator::MESSAGE_EQUALS_FALLBACK => 0,
    );
    foreach ($messages as $message) {
      ++$count[$message['state']];
    }
    return $count;
  }
  private function sanitizeString($string, $length = 80) {
    $string = trim(preg_replace('/\\s+/', ' ', $string));
    if (function_exists('mb_strlen') && false !== ($encoding = mb_detect_encoding($string))) {
      if (mb_strlen($string, $encoding) > $length) {
        return mb_substr($string, 0, $length - 3, $encoding) . '...';
      }
    }
    elseif (strlen($string) > $length) {
      return substr($string, 0, $length - 3) . '...';
    }
    return $string;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DataCollector::$data protected property
DataCollector::$valueExporter private property
DataCollector::serialize public function 1
DataCollector::unserialize public function 1
DataCollector::varToString protected function Converts a PHP variable to a string.
TranslationDataCollector::$translator private property
TranslationDataCollector::collect public function Collects data for the given Request and Response. Overrides DataCollectorInterface::collect
TranslationDataCollector::computeCount private function
TranslationDataCollector::getCountDefines public function
TranslationDataCollector::getCountFallbacks public function
TranslationDataCollector::getCountMissings public function
TranslationDataCollector::getMessages public function
TranslationDataCollector::getName public function Returns the name of the collector. Overrides DataCollectorInterface::getName
TranslationDataCollector::lateCollect public function Collects data as late as possible. Overrides LateDataCollectorInterface::lateCollect
TranslationDataCollector::sanitizeCollectedMessages private function
TranslationDataCollector::sanitizeString private function
TranslationDataCollector::__construct public function