aboutsummaryrefslogtreecommitdiff
path: root/cli/manipulate.translation.php
diff options
context:
space:
mode:
Diffstat (limited to 'cli/manipulate.translation.php')
-rw-r--r--cli/manipulate.translation.php124
1 files changed, 79 insertions, 45 deletions
diff --git a/cli/manipulate.translation.php b/cli/manipulate.translation.php
index 0e06993ef..35405bb89 100644
--- a/cli/manipulate.translation.php
+++ b/cli/manipulate.translation.php
@@ -1,45 +1,60 @@
<?php
-$options = getopt("h");
+$options = getopt("a:hk:l:rv:");
if (array_key_exists('h', $options)) {
help();
}
-if (1 === $argc || 5 < $argc) {
- help();
+if (!array_key_exists('a', $options)) {
+ error('You need to specify the action to perform.');
}
-require_once __DIR__ . '/i18n/I18nFile.php';
-
-$i18nFile = new I18nFile();
+if ('ignore' === $options['a']) {
+ require_once __DIR__ . '/i18n/I18nIgnoreFile.php';
+ $i18nFile = new I18nIgnoreFile();
+} else {
+ require_once __DIR__ . '/i18n/I18nFile.php';
+ $i18nFile = new I18nFile();
+}
$i18nData = $i18nFile->load();
-switch ($argv[1]) {
- case 'add_language' :
- $i18nData->addLanguage($argv[2]);
- break;
- case 'add_key' :
- if (3 === $argc) {
- help();
+switch ($options['a']) {
+ case 'add' :
+ if (array_key_exists('k', $options) && array_key_exists('v', $options) && array_key_exists('l', $options)) {
+ $i18nData->addValue($options['k'], $options['v'], $options['l']);
+ } elseif (array_key_exists('k', $options) && array_key_exists('v', $options)) {
+ $i18nData->addKey($options['k'], $options['v']);
+ } elseif (array_key_exists('l', $options)) {
+ $i18nData->addLanguage($options['l']);
+ } else {
+ error('You need to specify a valid set of options.');
}
- $i18nData->addKey($argv[2], $argv[3]);
break;
- case 'add_value':
- if (4 === $argc) {
- help();
+ case 'delete' :
+ if (array_key_exists('k', $options)) {
+ $i18nData->removeKey($options['k']);
+ } else {
+ error('You need to specify the key to delete.');
}
- $i18nData->addValue($argv[2], $argv[3], $argv[4]);
break;
- case 'duplicate_key' :
- $i18nData->duplicateKey($argv[2]);
- break;
- case 'delete_key' :
- $i18nData->removeKey($argv[2]);
+ case 'duplicate' :
+ if (array_key_exists('k', $options)) {
+ $i18nData->duplicateKey($options['k']);
+ } else {
+ error('You need to specify the key to duplicate');
+ }
break;
case 'format' :
$i18nFile->dump($i18nData);
break;
+ case 'ignore' :
+ if (array_key_exists('l', $options) && array_key_exists('k', $options)) {
+ $i18nData->ignore($options['k'], $options['l'], array_key_exists('r', $options));
+ } else {
+ error('You need to specify a valid set of options.');
+ }
+ break;
default :
help();
}
@@ -49,46 +64,65 @@ if ($i18nData->hasChanged()) {
}
/**
+ * Output error message.
+ */
+function error($message) {
+ $error = <<<ERROR
+WARNING
+ %s\n\n
+ERROR;
+ echo sprintf($error, $message);
+ help();
+}
+
+/**
* Output help message.
*/
function help() {
$help = <<<HELP
NAME
- %s
+ %1\$s
SYNOPSIS
- php %s [OPTION] [OPERATION] [KEY] [VALUE] [LANGUAGE]
+ php %1\$s [OPTIONS]
DESCRIPTION
- Manipulate translation files. Available operations are
- Check if translation files have missing keys or missing translations.
-
+ Manipulate translation files.
+
+ -a=ACTION
+ select the action to perform. Available actions are add, delete,
+ duplicate, format, and ignore. This option is mandatory.
+ -k=KEY select the key to work on.
+ -v=VAL select the value to set.
+ -l=LANG select the language to work on.
-h display this help and exit.
-OPERATION
- add_language
- add a new language by duplicating the referential. This operation
- needs only a KEY.
+EXEMPLE
+Exemple 1: add a language. It adds a new language by duplicating the referential.
+ php %1\$s -a add -l my_lang
+
+Exemple 2: add a new key. It adds the key in the referential.
+ php %1\$s -a add -k my_key -v my_value
- add_key add a new key in the referential. This operation needs a KEY and
- a VALUE.
+Exemple 3: add a new value. It adds a new value for the selected key in the selected language.
+ php %1\$s -a add -k my_key -v my_value -l my_lang
- add_value
- add a value in the referential. This operation needs a KEY, a
- VALUE, and a LANGUAGE.
+Exemple 4: delete a key. It deletes the selected key in every languages.
+ php %1\$s -a delete -k my_key
- duplicate_key
- duplicate a referential key in other languages. This operation
- needs only a KEY.
+Exemple 5: duplicate a key. It duplicates the key from the referential in every languages.
+ php %1\$s -a duplicate -k my_key
- delete_key
- delete a referential key from all languages. This operation needs
- only a KEY.
+Exemple 6: format i18n files.
+ php %1\$s -a format
- format format i18n files.
+Exemple 7: ignore a key. It adds the key in the ignore file to mark it as translated.
+ php %1\$s -a ignore -k my_key -l my_lang
+Exemple 8: revert ignore a key. It removes the key from the ignore file.
+ php %1\$s -a ignore -r -k my_key -l my_lang\n\n
HELP;
$file = str_replace(__DIR__ . '/', '', __FILE__);
- echo sprintf($help, $file, $file);
+ echo sprintf($help, $file);
exit;
}