You are here

class MoFileDumper in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/symfony/translation/Dumper/MoFileDumper.php \Symfony\Component\Translation\Dumper\MoFileDumper

MoFileDumper generates a gettext formatted string representation of a message catalogue.

@author Stealth35

Hierarchy

Expanded class hierarchy of MoFileDumper

1 file declares its use of MoFileDumper
MoFileDumperTest.php in vendor/symfony/translation/Tests/Dumper/MoFileDumperTest.php

File

vendor/symfony/translation/Dumper/MoFileDumper.php, line 22

Namespace

Symfony\Component\Translation\Dumper
View source
class MoFileDumper extends FileDumper {

  /**
   * {@inheritdoc}
   */
  public function format(MessageCatalogue $messages, $domain = 'messages') {
    $output = $sources = $targets = $sourceOffsets = $targetOffsets = '';
    $offsets = array();
    $size = 0;
    foreach ($messages
      ->all($domain) as $source => $target) {
      $offsets[] = array_map('strlen', array(
        $sources,
        $source,
        $targets,
        $target,
      ));
      $sources .= "\0" . $source;
      $targets .= "\0" . $target;
      ++$size;
    }
    $header = array(
      'magicNumber' => MoFileLoader::MO_LITTLE_ENDIAN_MAGIC,
      'formatRevision' => 0,
      'count' => $size,
      'offsetId' => MoFileLoader::MO_HEADER_SIZE,
      'offsetTranslated' => MoFileLoader::MO_HEADER_SIZE + 8 * $size,
      'sizeHashes' => 0,
      'offsetHashes' => MoFileLoader::MO_HEADER_SIZE + 16 * $size,
    );
    $sourcesSize = strlen($sources);
    $sourcesStart = $header['offsetHashes'] + 1;
    foreach ($offsets as $offset) {
      $sourceOffsets .= $this
        ->writeLong($offset[1]) . $this
        ->writeLong($offset[0] + $sourcesStart);
      $targetOffsets .= $this
        ->writeLong($offset[3]) . $this
        ->writeLong($offset[2] + $sourcesStart + $sourcesSize);
    }
    $output = implode(array_map(array(
      $this,
      'writeLong',
    ), $header)) . $sourceOffsets . $targetOffsets . $sources . $targets;
    return $output;
  }

  /**
   * {@inheritdoc}
   */
  protected function getExtension() {
    return 'mo';
  }
  private function writeLong($str) {
    return pack('V*', $str);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
FileDumper::$backup private property Make file backup before the dump.
FileDumper::$relativePathTemplate protected property A template for the relative paths to files. 1
FileDumper::dump public function Dumps the message catalogue. Overrides DumperInterface::dump 1
FileDumper::getRelativePath private function Gets the relative file path using the template.
FileDumper::setBackup public function Sets backup flag.
FileDumper::setRelativePathTemplate public function Sets the template for the relative paths to files.
MoFileDumper::format public function Transforms a domain of a message catalogue to its string representation. Overrides FileDumper::format
MoFileDumper::getExtension protected function Gets the file extension of the dumper. Overrides FileDumper::getExtension
MoFileDumper::writeLong private function