mirror of
https://github.com/FreshRSS/FreshRSS.git
synced 2026-01-18 02:07:53 -05:00
* Update i18n cli tools Few things were bugging me when using the cli tool for i18n. So I've modified the tools to be easier to use. First, the tool automatically adds missing keys to all languages. This way, we always have all keys in all languages. Second, the tool detects all untranslated keys and adds automatically the todo comment after the value. Third, when adding a new key, the key is pushed to all languages at once. There is no need to duplicate it manually. Thus making the duplication process obsolete. Fourth, translation and ignore keys are manipulated at the same time. Thus we don't have obsolete ignored strings anymore. * Add i18n rules I find that having the common rules in the Makefile is easier to use, as long as you know they are here. As it is self documented, people will see the new rules when using make. * Use long parameters in Makefile I find that using long parameters in scripts makes it easier to understand what's going on. So I've switched all short parameters to long one. * Format all i18n files I've used the updated version of the cli tools to have some output that can be consistently formated. This commit is a huge formating commit. Nothing was added but some comments were removed in the process.
120 lines
3.0 KiB
PHP
120 lines
3.0 KiB
PHP
<?php
|
|
|
|
require_once __DIR__ . '/i18n/I18nData.php';
|
|
require_once __DIR__ . '/i18n/I18nFile.php';
|
|
require_once __DIR__ . '/i18n/I18nIgnoreFile.php';
|
|
|
|
$options = getopt("a:hk:l:rv:");
|
|
|
|
if (array_key_exists('h', $options)) {
|
|
help();
|
|
}
|
|
|
|
if (!array_key_exists('a', $options)) {
|
|
error('You need to specify the action to perform.');
|
|
}
|
|
|
|
$data = new I18nFile();
|
|
$ignore = new I18nIgnoreFile();
|
|
$i18nData = new I18nData($data->load(), $ignore->load());
|
|
|
|
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.');
|
|
exit;
|
|
}
|
|
break;
|
|
case 'delete' :
|
|
if (array_key_exists('k', $options)) {
|
|
$i18nData->removeKey($options['k']);
|
|
} else {
|
|
error('You need to specify the key to delete.');
|
|
exit;
|
|
}
|
|
break;
|
|
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));
|
|
} else {
|
|
error('You need to specify a valid set of options.');
|
|
exit;
|
|
}
|
|
break;
|
|
default :
|
|
help();
|
|
exit;
|
|
}
|
|
|
|
$data->dump($i18nData->getData());
|
|
$ignore->dump($i18nData->getIgnore());
|
|
|
|
/**
|
|
* 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
|
|
%1\$s
|
|
|
|
SYNOPSIS
|
|
php %1\$s [OPTIONS]
|
|
|
|
DESCRIPTION
|
|
Manipulate translation files.
|
|
|
|
-a=ACTION
|
|
select the action to perform. Available actions are add, delete,
|
|
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.
|
|
|
|
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 for all supported languages.
|
|
php %1\$s -a add -k my_key -v my_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
|
|
|
|
Exemple 4: delete a key. It deletes the selected key from all supported languages.
|
|
php %1\$s -a delete -k my_key
|
|
|
|
Exemple 5: format i18n files.
|
|
php %1\$s -a format
|
|
|
|
Exemple 6: 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 7: 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);
|
|
exit;
|
|
}
|