Skip to content

Instantly share code, notes, and snippets.

@eSlider
Created May 24, 2016 15:02
Show Gist options
  • Save eSlider/4a9d330779ed02fbb8fdba000a4bbbc4 to your computer and use it in GitHub Desktop.
Save eSlider/4a9d330779ed02fbb8fdba000a4bbbc4 to your computer and use it in GitHub Desktop.
Converts XML translations to YAML
<?php
require "../vendor/autoload.php";
use Symfony\Component\Finder\Finder;
use Symfony\Component\Finder\SplFileInfo;
use Symfony\Component\Yaml\Yaml;
use Wheregroup\XML\Util\Parser as XMLParser;
$finder = new Finder();
$finder->files()->in("../mapbender/src/Mapbender/ManagerBundle/Resources/translations");
/** @var SplFileInfo $file */
foreach ($finder as $file) {
if ($file->getExtension() != "xlf") {
continue;
}
$translations = array();
$xml = XMLParser::convertXmlToSimpleArray(file_get_contents($file->getRealpath()));
$transUnits = $xml['file']['body']['trans-unit'];
foreach ($transUnits as $transUnit) {
$key = $transUnit["source"];
$value = $transUnit["target"];
$arr = &$translations;
$keys = explode('.', $key);
foreach ($keys as $domainName) {
if (!isset($arr[ $domainName ])) {
$arr[ $domainName ] = array();
} else {
if (is_string($arr[ $domainName ])) {
echo "$key\n";
$arr[ $domainName ] = array('_text' => $arr[ $domainName ]);
}
}
$arr = &$arr[ $domainName ];
}
$arr = $value;
//$translations[ $transUnit["source"] ] = $transUnit["target"];
}
$yaml = Yaml::dump($translations, 100, 2);
$pathInfo = pathinfo($file->getBasename());
$yamlPath = $file->getPath() . "/" . $pathInfo['filename'] . ".yml";
//file_put_contents($yamlPath, "\n" . $yaml, FILE_APPEND);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment