Rename CLI classes
This commit is contained in:
81
app/Console/LocaleComparatorCommand.php
Normal file
81
app/Console/LocaleComparatorCommand.php
Normal file
@@ -0,0 +1,81 @@
|
||||
<?php
|
||||
|
||||
namespace Kanboard\Console;
|
||||
|
||||
use RecursiveIteratorIterator;
|
||||
use RecursiveDirectoryIterator;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
|
||||
class LocaleComparatorCommand extends BaseCommand
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user