<?PHP
// src/Command/GenerateTraductionCommand.php
namespace App\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
class AddDoliTermeCommand extends ContainerAwareCommand
{
protected function configure(){
$this
->setName('app:add-doli-termes')
->setDescription('Récupère les nouveaux termes générés avec la commande symfony')
->setHelp('Pour générer ce fichier symfony il faut lancer la commande : php bin/console translation:update --dump-messages --force fr');
}
protected function execute(InputInterface $input, OutputInterface $output)
{
// Init
exec('php bin/console cache:clear');
exec('php bin/console translation:update --force walkinn');
exec('php bin/console cache:clear --no-debug');
// Service (old style)
$traductionService = $this->getContainer()->get('app.service.traduction');
// On récupère le fichier généré par symfony
$fichierTrad = simplexml_load_file("translations/walkinn+intl-icu.walkinn.xlf");
$arrTrad = array();
foreach ($fichierTrad->file->body->{'trans-unit'} as $item) {
$itemJson = json_encode($item);
$arrItem = json_decode($itemJson, TRUE);
array_push($arrTrad,$arrItem);
}
$fichierTrad = simplexml_load_file("translations/messages+intl-icu.walkinn.xlf");
foreach ($fichierTrad->file->body->{'trans-unit'} as $item) {
$itemJson = json_encode($item);
$arrItem = json_decode($itemJson, TRUE);
array_push($arrTrad,$arrItem);
}
$output->writeln('Liste des termes (système):');
$arrNewTermes = $traductionService->saveDoliTradFromSymfonyFile($arrTrad);
foreach($arrNewTermes as $terme)
{
$output->writeln($terme);
}
$output->writeln('Liste des termes (micro-data):');
$arrNewTermes = $traductionService->saveDoliTradFromSymfonyData();
foreach($arrNewTermes as $terme)
{
$output->writeln($terme);
}
$arrUpdateTermes = $traductionService->updateSymfonyFileFromDoliTrad();
if(count($arrNewTermes) > 0)
{
$output->writeln('Termes ajoutés avec succès!');
} else
{
$output->writeln("Aucun nouveau terme n'a été détecté");
}
return 1;
}
}