You are here

public function MoFileDumper::format 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::format()

Transforms a domain of a message catalogue to its string representation.

Parameters

MessageCatalogue $messages:

string $domain:

Return value

string representation

Overrides FileDumper::format

File

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

Class

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

Namespace

Symfony\Component\Translation\Dumper

Code

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;
}