49 $mangler = $this->group->getMangler();
51 $reader =
new SimpleXMLElement( $data );
52 $reader->registerXPathNamespace(
54 'urn:oasis:names:tc:xliff:document:1.2'
58 $reader->xpath(
'//trans-unit' ),
59 $reader->xpath(
'//xliff:trans-unit' )
62 foreach ( $items as $item ) {
64 $source = $item->$element;
70 $key = (string)$item[
'id'];
74 $dom =
new DOMDocument(
'1.0' );
75 $dom->loadXML( $source->asXML() );
82 if ( (
string)$source[
'state'] ===
'needs-l10n' ) {
83 $value = TRANSLATE_FUZZY . $value;
87 $value = preg_replace(
'/<!\[CDATA\[(.*?)\]\]>/s',
'\1', $value );
89 $messages[$key] = $value;
93 'MESSAGES' => $mangler->mangleArray( $messages ),
134 $mangler = $this->group->getMangler();
136 $template =
new DomDocument(
'1.0' );
137 $template->preserveWhiteSpace =
false;
138 $template->formatOutput =
true;
141 $sourceLanguage = $this->group->getSourceLanguage();
142 $sourceFile = $this->group->getSourceFilePath( $sourceLanguage );
143 if ( file_exists( $sourceFile ) ) {
144 $template->load( $sourceFile );
147 $template->load( __DIR__ .
'/../data/xliff-template.xml' );
150 $list = Zest::getElementsByTagName( $template,
'body' )[0];
151 $list->nodeValue =
null;
154 foreach ( $collection as $key => $m ) {
155 $key = $mangler->unmangle( $key );
157 $value = $m->translation();
158 $value = str_replace( TRANSLATE_FUZZY,
'', $value );
161 $source = $template->createDocumentFragment();
162 $source->appendXML( htmlspecialchars( $m->definition() ) );
164 $target = $template->createDocumentFragment();
165 $target->appendXML( htmlspecialchars( $value ) );
167 $sourceElement = $template->createElement(
'source' );
168 $sourceElement->appendChild( $source );
170 $targetElement = $template->createElement(
'target' );
171 $targetElement->appendChild( $target );
172 if ( $m->getProperty(
'status' ) ===
'fuzzy' ) {
173 $targetElement->setAttribute(
'state',
'needs-l10n' );
175 if ( $m->getProperty(
'status' ) ===
'proofread' ) {
176 $targetElement->setAttribute(
'state',
'signed-off' );
179 $transUnit = $template->createElement(
'trans-unit' );
180 $transUnit->setAttribute(
'id', $key );
181 $transUnit->appendChild( $sourceElement );
182 $transUnit->appendChild( $targetElement );
184 $list->appendChild( $transUnit );
187 $template->encoding =
'UTF-8';
189 return $template->saveXML();