mirror of
https://github.com/YunoHost-Apps/kanboard_ynh.git
synced 2024-09-03 19:36:17 +02:00
82 lines
2.3 KiB
PHP
82 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace Console;
|
|
|
|
use RecursiveIteratorIterator;
|
|
use RecursiveDirectoryIterator;
|
|
use Symfony\Component\Console\Input\InputInterface;
|
|
use Symfony\Component\Console\Output\OutputInterface;
|
|
|
|
class LocaleComparator extends Base
|
|
{
|
|
const REF_LOCALE = 'fr_FR';
|
|
|
|
protected function configure()
|
|
{
|
|
$this
|
|
->setName('locale:compare')
|
|
->setDescription('Compare application translations with the '.self::REF_LOCALE.' locale');
|
|
}
|
|
|
|
protected function execute(InputInterface $input, OutputInterface $output)
|
|
{
|
|
$strings = array();
|
|
$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('app'));
|
|
$it->rewind();
|
|
|
|
while ($it->valid()) {
|
|
|
|
if (! $it->isDot() && substr($it->key(), -4) === '.php') {
|
|
$strings = array_merge($strings, $this->search($it->key()));
|
|
}
|
|
|
|
$it->next();
|
|
}
|
|
|
|
$this->compare(array_unique($strings));
|
|
}
|
|
|
|
public function show(array $strings)
|
|
{
|
|
foreach ($strings as $string) {
|
|
echo " '".str_replace("'", "\'", $string)."' => '',".PHP_EOL;
|
|
}
|
|
}
|
|
|
|
public function compare(array $strings)
|
|
{
|
|
$reference_file = 'app/Locale/'.self::REF_LOCALE.'/translations.php';
|
|
$reference = include $reference_file;
|
|
|
|
echo str_repeat('#', 70).PHP_EOL;
|
|
echo 'MISSING STRINGS'.PHP_EOL;
|
|
echo str_repeat('#', 70).PHP_EOL;
|
|
$this->show(array_diff($strings, array_keys($reference)));
|
|
|
|
echo str_repeat('#', 70).PHP_EOL;
|
|
echo 'USELESS STRINGS'.PHP_EOL;
|
|
echo str_repeat('#', 70).PHP_EOL;
|
|
$this->show(array_diff(array_keys($reference), $strings));
|
|
}
|
|
|
|
public function search($filename)
|
|
{
|
|
$content = file_get_contents($filename);
|
|
$strings = array();
|
|
|
|
if (preg_match_all('/\b[et]\((\'\K.*?\') *[\)\,]/', $content, $matches) && isset($matches[1])) {
|
|
$strings = $matches[1];
|
|
}
|
|
|
|
if (preg_match_all('/\bdt\((\'\K.*?\') *[\)\,]/', $content, $matches) && isset($matches[1])) {
|
|
$strings = array_merge($strings, $matches[1]);
|
|
}
|
|
|
|
array_walk($strings, function(&$value) {
|
|
$value = trim($value, "'");
|
|
$value = str_replace("\'", "'", $value);
|
|
});
|
|
|
|
return $strings;
|
|
}
|
|
}
|