Move the script sync-locales.php to cli command

This commit is contained in:
Frederic Guillot 2015-06-21 12:35:01 -04:00
parent d7a8160c2b
commit ff7189971e
5 changed files with 62 additions and 47 deletions

View File

@ -0,0 +1,57 @@
<?php
namespace Console;
use DirectoryIterator;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class LocaleSync extends Base
{
const REF_LOCALE = 'fr_FR';
protected function configure()
{
$this
->setName('locale:sync')
->setDescription('Synchronize all translations based on the '.self::REF_LOCALE.' locale');
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$reference_file = 'app/Locale/'.self::REF_LOCALE.'/translations.php';
$reference = include $reference_file;
foreach (new DirectoryIterator('app/Locale') as $fileInfo) {
if (! $fileInfo->isDot() && $fileInfo->isDir() && $fileInfo->getFilename() !== self::REF_LOCALE) {
$filename = 'app/Locale/'.$fileInfo->getFilename().'/translations.php';
echo $fileInfo->getFilename().' ('.$filename.')'.PHP_EOL;
file_put_contents($filename, $this->updateFile($reference, $filename));
}
}
}
public function updateFile(array $reference, $outdated_file)
{
$outdated = include $outdated_file;
$output = '<?php'.PHP_EOL.PHP_EOL;
$output .= 'return array('.PHP_EOL;
foreach ($reference as $key => $value) {
if (! empty($outdated[$key])) {
$output .= " '".str_replace("'", "\'", $key)."' => '".str_replace("'", "\'", $outdated[$key])."',\n";
}
else {
$output .= " // '".str_replace("'", "\'", $key)."' => '',\n";
}
}
$output .= ");\n";
return $output;
}
}

View File

@ -787,7 +787,7 @@ return array(
'Custom Stylesheet' => 'Niestandardowy arkusz stylów',
'download' => 'pobierz',
'Do you really want to remove this budget line?' => 'Czy chcesz usunąć tą linię budżetową?',
//'EUR - Euro' => '',
// 'EUR - Euro' => '',
'Expenses' => 'Wydatki',
'GBP - British Pound' => 'GBP - Funt brytyjski',
'INR - Indian Rupee' => 'INR - Rupia indyjska',
@ -797,7 +797,7 @@ return array(
'Remove a budget line' => 'Usuń linię budżetową',
'Remove budget line' => 'Usuń linię budżetową',
'RSD - Serbian dinar' => 'RSD - Dinar serbski',
'The budget line have been created successfully.' => '',
// 'The budget line have been created successfully.' => '',
'Unable to create the budget line.' => 'Nie można utworzyć linii budżetowej',
'Unable to remove this budget line.' => 'Nie można usunąć tej linii budżetowej',
'USD - US Dollar' => 'USD - Dolar amerykański',

View File

@ -72,7 +72,7 @@ How to synchronize translation files?
From a Unix shell run this command:
```bash
./scripts/sync-locales.php
./kanboard locale:sync
```
The french translation is used a reference for other locales.
The French translation is used a reference for other locales.

View File

@ -15,4 +15,5 @@ $application->add(new Console\TaskExport($container));
$application->add(new Console\ProjectDailySummaryCalculation($container));
$application->add(new Console\ProjectDailySummaryExport($container));
$application->add(new Console\TransitionExport($container));
$application->add(new Console\LocaleSync($container));
$application->run();

View File

@ -1,43 +0,0 @@
#!/usr/bin/env php
<?php
$reference_lang = 'fr_FR';
$reference_file = 'app/Locale/'.$reference_lang.'/translations.php';
$reference = include $reference_file;
function update_missing_locales(array $reference, $outdated_file)
{
$outdated = include $outdated_file;
$output = '<?php'.PHP_EOL.PHP_EOL;
$output .= 'return array('.PHP_EOL;
foreach ($reference as $key => $value) {
if (! empty($outdated[$key])) {
//$output .= " '".str_replace("'", "\'", $key)."' => '".str_replace("'", "\'", $value)."',\n";
$output .= " '".str_replace("'", "\'", $key)."' => '".str_replace("'", "\'", $outdated[$key])."',\n";
}
else {
//$output .= " // '".str_replace("'", "\'", $key)."' => '".str_replace("'", "\'", $value)."',\n";
$output .= " // '".str_replace("'", "\'", $key)."' => '',\n";
}
}
$output .= ");\n";
return $output;
}
foreach (new DirectoryIterator('app/Locale') as $fileInfo) {
if (! $fileInfo->isDot() && $fileInfo->isDir() && $fileInfo->getFilename() !== $reference_lang) {
$filename = 'app/Locale/'.$fileInfo->getFilename().'/translations.php';
echo $fileInfo->getFilename().' ('.$filename.')'.PHP_EOL;
file_put_contents($filename, update_missing_locales($reference, $filename));
}
}