@ -1,13 +1,13 @@
<?php
$options = getopt("h");
$options = getopt("a: hk:l:v: ");
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';
@ -15,27 +15,31 @@ 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);
@ -48,47 +52,61 @@ if ($i18nData->hasChanged()) {
$i18nFile->dump($i18nData);
}
/**
* 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, and format. 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
add_key add a new key in the referential. This operation needs a KEY and
a VALUE.
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_value
add a value in the referential. This operation needs a KEY, a
VALUE, and a LANGUAGE.
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
duplicate_key
duplicate a referential key in other languages. This operation
needs only a KEY.
Exemple 4: delete a key. It deletes the selected key in every languages.
php %1\$s -a delete -k my_key
delete_key
delete a referential key from all 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
format format i18n files.
Exemple 6: format i18n files.
php %1\$s -a format
HELP;
$file = str_replace(__DIR__ . '/', '', __FILE__);
echo sprintf($help, $file, $file );
echo sprintf($help, $file);
exit;
}