File: //var/www/apklausos/application/commands/XmlTranslationCommand.php
<?php
/**
* To execute this command :
* php application/commands/console.php XmlTranslation index
* php application/commands/console.php XmlTranslation generateTranslationFiles
*/
class XmlTranslationCommand extends CConsoleCommand
{
public function actionIndex()
{
echo "This command will take all config.xml files \n";
echo "in the followin directories:\n \n";
echo " * " . realpath(dirname(__FILE__) . "/../views/survey/questions/answer") . "\n";
echo " * " . realpath(dirname(__FILE__) . '/../../themes/question') . "\n \n";
echo "And it will generate php files with the strings to be translated \n";
echo "in " . realpath(dirname(__FILE__) . "/../../tmp") . "\n";
}
public function actionGenerateTranslationFiles()
{
//Create view files
$this->generateFiles(dirname(__FILE__) . '/../views/survey/questions/answer', 'view');
//Create theme files
$oThemesDir = new DirectoryIterator(dirname(__FILE__) . '/../../themes/question');
foreach ($oThemesDir as $dirInfo) {
if ($dirInfo->isDot() || $dirInfo->isFile()) {
continue;
}
$sDirPath = $dirInfo->getRealPath();
$this->generateFiles($sDirPath . '/survey/questions/answer', 'theme');
}
}
private function generateFiles($sViewsDir, $sFilePrefix)
{
$oViewsDir = new DirectoryIterator($sViewsDir);
foreach ($oViewsDir as $fileInfo) {
if ($fileInfo->isDot() || $fileInfo->isFile()) {
continue;
}
$sFilePath = $fileInfo->getRealPath() . '/config.xml';
if (! is_file($sFilePath)) {
continue;
}
$xmlContents = file_get_contents($sFilePath);
$config = new SimpleXMLElement($xmlContents);
$attributes = $config->attributes;
$fileName = $fileInfo->getFileName();
$tmpPath = dirname(__FILE__) . '/../../tmp';
$fileHandler = fopen($tmpPath . '/' . $fileName . '-' . $sFilePrefix . '-config-xml.php', 'w');
$date = date('F d, Y');
fwrite($fileHandler, '<?php' . PHP_EOL);
fwrite($fileHandler, '//Entries from file ' . $sFilePath . PHP_EOL);
fwrite($fileHandler, '//File generated on ' . $date . PHP_EOL);
fwrite($fileHandler, PHP_EOL);
$currentAttributeCategory = '';
foreach ($attributes->attribute as $attribute) {
if ($currentAttributeCategory != (string)$attribute->category) {
$currentAttributeCategory = (string)$attribute->category;
fwrite($fileHandler, PHP_EOL . '//' . $currentAttributeCategory . ' attributes.' . PHP_EOL);
}
if (! empty($attribute->help)) {
fwrite($fileHandler, 'gT("' . $attribute->help . '");' . PHP_EOL);
}
if (! empty($attribute->caption)) {
fwrite($fileHandler, 'gT("' . $attribute->caption . '");' . PHP_EOL);
}
if (! empty($attribute->options)) {
foreach ($attribute->options->children() as $option) {
if (! empty($option->text)) {
fwrite($fileHandler, 'gT("' . $option->text . '");' . PHP_EOL);
} else {
fwrite($fileHandler, 'gT("' . $option . '");' . PHP_EOL);
}
}
}
}
fclose($fileHandler);
}
}
}