protected function XliffFileDumper::format in Plug 7
Transforms a domain of a message catalogue to its string representation.
Parameters
MessageCatalogue $messages:
string $domain:
Return value
string representation
Overrides FileDumper::format
File
- lib/
Symfony/ translation/ Dumper/ XliffFileDumper.php, line 45
Class
- XliffFileDumper
- XliffFileDumper generates xliff files from a message catalogue.
Namespace
Symfony\Component\Translation\DumperCode
protected function format(MessageCatalogue $messages, $domain) {
$dom = new \DOMDocument('1.0', 'utf-8');
$dom->formatOutput = true;
$xliff = $dom
->appendChild($dom
->createElement('xliff'));
$xliff
->setAttribute('version', '1.2');
$xliff
->setAttribute('xmlns', 'urn:oasis:names:tc:xliff:document:1.2');
$xliffFile = $xliff
->appendChild($dom
->createElement('file'));
$xliffFile
->setAttribute('source-language', str_replace('_', '-', $this->defaultLocale));
$xliffFile
->setAttribute('target-language', str_replace('_', '-', $messages
->getLocale()));
$xliffFile
->setAttribute('datatype', 'plaintext');
$xliffFile
->setAttribute('original', 'file.ext');
$xliffBody = $xliffFile
->appendChild($dom
->createElement('body'));
foreach ($messages
->all($domain) as $source => $target) {
$translation = $dom
->createElement('trans-unit');
$translation
->setAttribute('id', md5($source));
$translation
->setAttribute('resname', $source);
$s = $translation
->appendChild($dom
->createElement('source'));
$s
->appendChild($dom
->createTextNode($source));
// Does the target contain characters requiring a CDATA section?
$text = 1 === preg_match('/[&<>]/', $target) ? $dom
->createCDATASection($target) : $dom
->createTextNode($target);
$t = $translation
->appendChild($dom
->createElement('target'));
$t
->appendChild($text);
$metadata = $messages
->getMetadata($source, $domain);
if (null !== $metadata && array_key_exists('notes', $metadata) && is_array($metadata['notes'])) {
foreach ($metadata['notes'] as $note) {
if (!isset($note['content'])) {
continue;
}
$n = $translation
->appendChild($dom
->createElement('note'));
$n
->appendChild($dom
->createTextNode($note['content']));
if (isset($note['priority'])) {
$n
->setAttribute('priority', $note['priority']);
}
if (isset($note['from'])) {
$n
->setAttribute('from', $note['from']);
}
}
}
$xliffBody
->appendChild($translation);
}
return $dom
->saveXML();
}