Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsgiehl <stefan@piwik.org>2014-04-22 01:54:44 +0400
committersgiehl <stefan@piwik.org>2014-04-22 01:54:44 +0400
commita24594f869cdfb7f74b68fe747ff5d9c244ded84 (patch)
tree6d2b3c25b159bcc511837fecd595956829b4ac68 /plugins/LanguagesManager/Commands
parentcff9fdf22cba8d5ffadb29d97e376f53aa83cd76 (diff)
added console command to compare keys defined on oTrance with those available in local translation files
Diffstat (limited to 'plugins/LanguagesManager/Commands')
-rw-r--r--plugins/LanguagesManager/Commands/CompareKeys.php111
-rw-r--r--plugins/LanguagesManager/Commands/FetchFromOTrance.php7
2 files changed, 116 insertions, 2 deletions
diff --git a/plugins/LanguagesManager/Commands/CompareKeys.php b/plugins/LanguagesManager/Commands/CompareKeys.php
new file mode 100644
index 0000000000..a26f9bd7b1
--- /dev/null
+++ b/plugins/LanguagesManager/Commands/CompareKeys.php
@@ -0,0 +1,111 @@
+<?php
+/**
+ * Piwik - Open source web analytics
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+
+namespace Piwik\Plugins\LanguagesManager\Commands;
+
+use Piwik\Plugin\ConsoleCommand;
+use Piwik\Translate;
+use Symfony\Component\Console\Input\ArrayInput;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Output\OutputInterface;
+
+/**
+ */
+class CompareKeys extends ConsoleCommand
+{
+ protected function configure()
+ {
+ $this->setName('translations:compare')
+ ->setDescription('Updates translation files')
+ ->addOption('username', 'u', InputOption::VALUE_OPTIONAL, 'oTrance username')
+ ->addOption('password', 'p', InputOption::VALUE_OPTIONAL, 'oTrance password');
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output)
+ {
+ $dialog = $this->getHelperSet()->get('dialog');
+
+ $command = $this->getApplication()->find('translations:fetch');
+ $arguments = array(
+ 'command' => 'translations:fetch',
+ '--username' => $input->getOption('username'),
+ '--password' => $input->getOption('password'),
+ '--keep-english' => true,
+ );
+ $inputObject = new ArrayInput($arguments);
+ $inputObject->setInteractive($input->isInteractive());
+ $command->run($inputObject, $output);
+
+ $englishFromOTrance = FetchFromOTrance::getDownloadPath() . DIRECTORY_SEPARATOR . 'en.json';
+
+ if (!file_exists($englishFromOTrance)) {
+ $output->writeln("English file from oTrance missing. Aborting");
+ return;
+ }
+
+ $englishFromOTrance = json_decode(file_get_contents($englishFromOTrance), true);
+
+ Translate::reloadLanguage('en');
+ $availableTranslations = $GLOBALS['Piwik_translations'];
+
+ $categories = array_unique(array_merge(array_keys($englishFromOTrance), array_keys($availableTranslations)));
+ sort($categories);
+
+ $unnecessary = $outdated = $missing = array();
+
+ foreach ($categories AS $category)
+ {
+ if (!empty($englishFromOTrance[$category])) {
+ foreach ($englishFromOTrance[$category] AS $key => $value) {
+ if(!array_key_exists($category, $availableTranslations) || !array_key_exists($key, $availableTranslations[$category])) {
+ $unnecessary[] = sprintf('%s_%s', $category, $key);
+ continue;
+ } else if (html_entity_decode($availableTranslations[$category][$key]) != html_entity_decode($englishFromOTrance[$category][$key])) {
+ $outdated[] = sprintf('%s_%s', $category, $key);
+ continue;
+ }
+ }
+ }
+ if (!empty($availableTranslations[$category])) {
+ foreach ($availableTranslations[$category] AS $key => $value) {
+ if(!array_key_exists($category, $englishFromOTrance) || !array_key_exists($key, $englishFromOTrance[$category])) {
+ $missing[] = sprintf('%s_%s', $category, $key);
+ continue;
+ }
+ }
+ }
+ }
+
+ $output->writeln("");
+
+ if (!empty($missing)) {
+ $output->writeln("<bg=yellow;options=bold>-- Following keys are missing on oTrance --</bg=yellow;options=bold>");
+ $output->writeln(implode("\n", $missing));
+
+ $output->writeln("");
+ }
+
+ if (!empty($unnecessary)) {
+ $output->writeln("<bg=yellow;options=bold>-- Following keys might be unnecessary on oTrance --</bg=yellow;options=bold>");
+ $output->writeln(implode("\n", $unnecessary));
+
+ $output->writeln("");
+ }
+
+ if (!empty($outdated)) {
+ $output->writeln("<bg=yellow;options=bold>-- Following keys are outdated on oTrance --</bg=yellow;options=bold>");
+ $output->writeln(implode("\n", $outdated));
+
+ $output->writeln("");
+ }
+
+ $output->writeln("Finished.");
+ }
+}
diff --git a/plugins/LanguagesManager/Commands/FetchFromOTrance.php b/plugins/LanguagesManager/Commands/FetchFromOTrance.php
index fc4704026b..c6bee90cc3 100644
--- a/plugins/LanguagesManager/Commands/FetchFromOTrance.php
+++ b/plugins/LanguagesManager/Commands/FetchFromOTrance.php
@@ -26,7 +26,8 @@ class FetchFromOTrance extends ConsoleCommand
$this->setName('translations:fetch')
->setDescription('Fetches translations files from oTrance to '.self::DOWNLOADPATH)
->addOption('username', 'u', InputOption::VALUE_OPTIONAL, 'oTrance username')
- ->addOption('password', 'p', InputOption::VALUE_OPTIONAL, 'oTrance password');
+ ->addOption('password', 'p', InputOption::VALUE_OPTIONAL, 'oTrance password')
+ ->addOption('keep-english', 'k', InputOption::VALUE_NONE, 'keep english file');
}
protected function execute(InputInterface $input, OutputInterface $output)
@@ -126,7 +127,9 @@ class FetchFromOTrance extends ConsoleCommand
$unzipper = Unzip::factory('tar.gz', self::getDownloadPath() . DIRECTORY_SEPARATOR . 'language_pack.tar.gz');
$unzipper->extract(self::getDownloadPath());
- @unlink(self::getDownloadPath() . DIRECTORY_SEPARATOR . 'en.php');
+ if (!$input->hasOption('keep-english')) {
+ @unlink(self::getDownloadPath() . DIRECTORY_SEPARATOR . 'en.php');
+ }
@unlink(self::getDownloadPath() . DIRECTORY_SEPARATOR . 'language_pack.tar.gz');
$filesToConvert = _glob(self::getDownloadPath() . DIRECTORY_SEPARATOR . '*.php');