diff options
Diffstat (limited to 'cli/manipulate.translation.php')
| -rwxr-xr-x | cli/manipulate.translation.php | 106 |
1 files changed, 65 insertions, 41 deletions
diff --git a/cli/manipulate.translation.php b/cli/manipulate.translation.php index 611cdb0d5..358a3ec33 100755 --- a/cli/manipulate.translation.php +++ b/cli/manipulate.translation.php @@ -1,53 +1,75 @@ #!/usr/bin/env php <?php declare(strict_types=1); +require_once __DIR__ . '/_cli.php'; require_once __DIR__ . '/i18n/I18nData.php'; require_once __DIR__ . '/i18n/I18nFile.php'; require_once __DIR__ . '/../constants.php'; -/** @var array<string,string>|false $options */ -$options = getopt('a:hk:l:o:rv:'); - -if (!is_array($options) || array_key_exists('h', $options)) { +$parameters = [ + 'long' => [ + 'action' => ':', + 'help' => '', + 'key' => ':', + 'language' => ':', + 'origin-language' => ':', + 'revert' => '', + 'value' => ':', + ], + 'short' => [ + 'action' => 'a', + 'help' => 'h', + 'key' => 'k', + 'language' => 'l', + 'origin-language' => 'o', + 'revert' => 'r', + 'value' => 'v', + ], + 'deprecated' => [], +]; + +$options = parseCliParams($parameters); + +if (!empty($options['invalid']) || array_key_exists('help', $options['valid'])) { manipulateHelp(); exit(); } -if (!array_key_exists('a', $options)) { +if (!array_key_exists('action', $options['valid'])) { error('You need to specify the action to perform.'); } $data = new I18nFile(); $i18nData = new I18nData($data->load()); -switch ($options['a']) { +switch ($options['valid']['action']) { 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)) { + if (array_key_exists('key', $options['valid']) && array_key_exists('value', $options['valid']) && array_key_exists('language', $options['valid'])) { + $i18nData->addValue($options['valid']['key'], $options['valid']['value'], $options['valid']['language']); + } elseif (array_key_exists('key', $options['valid']) && array_key_exists('value', $options['valid'])) { + $i18nData->addKey($options['valid']['key'], $options['valid']['value']); + } elseif (array_key_exists('language', $options['valid'])) { $reference = null; - if (array_key_exists('o', $options)) { - $reference = $options['o']; + if (array_key_exists('origin-language', $options['valid'])) { + $reference = $options['valid']['origin-language']; } - $i18nData->addLanguage($options['l'], $reference); + $i18nData->addLanguage($options['valid']['language'], $reference); } else { error('You need to specify a valid set of options.'); exit; } break; case 'delete' : - if (array_key_exists('k', $options)) { - $i18nData->removeKey($options['k']); + if (array_key_exists('key', $options['valid'])) { + $i18nData->removeKey($options['valid']['key']); } else { error('You need to specify the key to delete.'); exit; } break; case 'exist': - if (array_key_exists('k', $options)) { - $key = $options['k']; + if (array_key_exists('key', $options['valid'])) { + $key = $options['valid']['key']; if ($i18nData->isKnown($key)) { echo "The '{$key}' key is known.\n\n"; } else { @@ -61,16 +83,16 @@ switch ($options['a']) { case 'format' : 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)); + if (array_key_exists('language', $options['valid']) && array_key_exists('key', $options['valid'])) { + $i18nData->ignore($options['valid']['key'], $options['valid']['language'], array_key_exists('revert', $options['valid'])); } else { error('You need to specify a valid set of options.'); exit; } break; case 'ignore_unmodified' : - if (array_key_exists('l', $options)) { - $i18nData->ignore_unmodified($options['l'], array_key_exists('r', $options)); + if (array_key_exists('language', $options['valid'])) { + $i18nData->ignore_unmodified($options['valid']['language'], array_key_exists('revert', $options['valid'])); } else { error('You need to specify a valid set of options.'); exit; @@ -110,46 +132,48 @@ SYNOPSIS DESCRIPTION Manipulate translation files. - -a=ACTION - select the action to perform. Available actions are add, delete, - exist, format, ignore, and ignore_unmodified. 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. - -r revert the action (only for ignore action) - -o=LANG select the origin language (only for add language action) + -a, --action=ACTION + select the action to perform. Available actions are add, delete, + exist, format, ignore, and ignore_unmodified. This option is mandatory. + -k, --key=KEY select the key to work on. + -v, --value=VAL select the value to set. + -l, --language=LANG select the language to work on. + -h, --help display this help and exit. + -r, --revert revert the action (only for ignore action) + -o, origin-language=LANG + select the origin language (only for add language action) EXAMPLES -Example 1: add a language. It adds a new language by duplicating the referential. +Example 1: add a language. It adds a new language by duplicating the referential. php $file -a add -l my_lang php $file -a add -l my_lang -o ref_lang -Example 2: add a new key. It adds the key for all supported languages. +Example 2: add a new key. It adds the key for all supported languages. php $file -a add -k my_key -v my_value -Example 3: add a new value. It adds a new value for the selected key in the selected language. +Example 3: add a new value. It adds a new value for the selected key in the selected language. php $file -a add -k my_key -v my_value -l my_lang -Example 4: delete a key. It deletes the selected key from all supported languages. +Example 4: delete a key. It deletes the selected key from all supported languages. php $file -a delete -k my_key -Example 5: format i18n files. +Example 5: format i18n files. php $file -a format -Example 6: ignore a key. It adds the key in the ignore file to mark it as translated. +Example 6: ignore a key. Adds IGNORE comment to the key in the selected language, marking it as translated. php $file -a ignore -k my_key -l my_lang -Example 7: revert ignore a key. It removes the key from the ignore file. +Example 7: revert ignore a key. Removes IGNORE comment from the key in the selected language. php $file -a ignore -r -k my_key -l my_lang -Example 8: ignore all unmodified keys. It adds all modified keys in the ignore file to mark it as translated. +Example 8: ignore all unmodified keys. Adds IGNORE comments to all unmodified keys in the selected language, marking them as translated. php $file -a ignore_unmodified -l my_lang -Example 9: revert ignore of all unmodified keys. It removes the unmodified keys from the ignore file. Warning, this will also revert keys added individually. +Example 9: revert ignore on all unmodified keys. Removes IGNORE comments from all unmodified keys in the selected language. + Warning: will also revert individually added unmodified keys. php $file -a ignore_unmodified -r -l my_lang -Example 10: check if a key exist. +Example 10: check if a key exist. php $file -a exist -k my_key\n\n HELP; |
