[XLIFF 2.0] added support for target attributes.

This commit is contained in:
Abdellatif Ait boudad 2015-09-07 19:51:24 +00:00
parent ace6042d89
commit 7af4fc7ef8
3 changed files with 20 additions and 7 deletions

View File

@ -103,7 +103,10 @@ class XliffFileLoader implements LoaderInterface
$metadata['notes'] = $notes;
}
if (isset($translation->target) && $translation->target->attributes()) {
$metadata['target-attributes'] = $translation->target->attributes();
$metadata['target-attributes'] = array();
foreach ($translation->target->attributes() as $key => $value) {
$metadata['target-attributes'][$key] = (string) $value;
}
}
$catalogue->setMetadata((string) $source, $metadata, $domain);
@ -127,9 +130,19 @@ class XliffFileLoader implements LoaderInterface
// If the xlf file has another encoding specified, try to convert it because
// simple_xml will always return utf-8 encoded values
$target = $this->utf8ToCharset((string) (isset($translation->target) ? $translation->target : $source), $encoding);
$target = $this->utf8ToCharset((string) (isset($segment->target) ? $segment->target : $source), $encoding);
$catalogue->set((string) $source, $target, $domain);
$metadata = array();
if (isset($segment->target) && $segment->target->attributes()) {
$metadata['target-attributes'] = array();
foreach ($segment->target->attributes() as $key => $value) {
$metadata['target-attributes'][$key] = (string) $value;
}
}
$catalogue->setMetadata((string) $source, $metadata, $domain);
}
}

View File

@ -164,7 +164,7 @@ class XliffFileLoaderTest extends \PHPUnit_Framework_TestCase
$this->assertCount(3, $domains['domain1']);
$this->assertContainsOnly('string', $catalogue->all('domain1'));
// Notes aren't assigned to specific segments, but to whole units, so there's no way to do a mapping
$this->assertEmpty($catalogue->getMetadata());
// target attributes
$this->assertEquals(array('target-attributes' => array('order' => 1)), $catalogue->getMetadata('bar', 'domain1'));
}
}

View File

@ -10,14 +10,14 @@
<group id="1">
<unit id="2">
<segment>
<source>An application to manipulate and process XLIFF documents</source>
<source>foo</source>
<target>XLIFF 文書を編集、または処理 するアプリケーションです。</target>
</segment>
</unit>
<unit id="3">
<segment>
<source>XLIFF Data Manager</source>
<target>XLIFF データ・マネージャ</target>
<source>bar</source>
<target order="1">XLIFF データ・マネージャ</target>
</segment>
</unit>
</group>