mirror of
https://gitlab.easter-eggs.com/ee/ldapsaisie.git
synced 2024-11-18 00:09:06 +01:00
generate_lang_file CLI command: add Q choice in interactive mode to quit
This commit is contained in:
parent
b3210c0108
commit
02ad9ded1e
1 changed files with 64 additions and 24 deletions
|
@ -237,7 +237,7 @@ if (php_sapi_name() != "cli") return true;
|
||||||
function cli_generate_lang_file($command_args) {
|
function cli_generate_lang_file($command_args) {
|
||||||
// Use global variables to share it with sub-functions
|
// Use global variables to share it with sub-functions
|
||||||
global $LSlang_cli_logger, $available_onlys, $available_withouts, $data, $translations, $interactive,
|
global $LSlang_cli_logger, $available_onlys, $available_withouts, $data, $translations, $interactive,
|
||||||
$copyoriginalvalue, $format, $curdir, $additionalfileformat, $copyoriginalvalue, $lang;
|
$interactive_exit, $copyoriginalvalue, $format, $curdir, $additionalfileformat, $copyoriginalvalue, $lang;
|
||||||
|
|
||||||
// Initialize logger (if not already initialized by another CLI command)
|
// Initialize logger (if not already initialized by another CLI command)
|
||||||
if (!isset($LSlang_cli_logger))
|
if (!isset($LSlang_cli_logger))
|
||||||
|
@ -253,6 +253,7 @@ function cli_generate_lang_file($command_args) {
|
||||||
$withouts = array();
|
$withouts = array();
|
||||||
$copyoriginalvalue = False;
|
$copyoriginalvalue = False;
|
||||||
$interactive = False;
|
$interactive = False;
|
||||||
|
$interactive_exit = False; // Exit flag set when user type 'q'
|
||||||
$output = False;
|
$output = False;
|
||||||
$additionalfileformat = False;
|
$additionalfileformat = False;
|
||||||
$lang = null;
|
$lang = null;
|
||||||
|
@ -364,8 +365,66 @@ function cli_generate_lang_file($command_args) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function interactive_ask($context, $msg) {
|
||||||
|
global $copyoriginalvalue, $interactive_exit;
|
||||||
|
|
||||||
|
if ($interactive_exit) {
|
||||||
|
if ($copyoriginalvalue)
|
||||||
|
return $msg;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Format question
|
||||||
|
$empty_action = ($copyoriginalvalue?'copy original message':'pass');
|
||||||
|
$question ="\"$msg\"\n\n => Please enter translated string";
|
||||||
|
$question .= " (i";
|
||||||
|
if (!$copyoriginalvalue)
|
||||||
|
$question .= "/c";
|
||||||
|
$question .= "/q/? or leave empty to $empty_action): ";
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
if ($context)
|
||||||
|
fwrite(STDERR, "\n# $context\n");
|
||||||
|
fwrite(STDERR, $question);
|
||||||
|
$in = trim(fgets(STDIN));
|
||||||
|
switch($in) {
|
||||||
|
case 'q': // Exit interactive mode
|
||||||
|
case 'Q':
|
||||||
|
$interactive_exit = true;
|
||||||
|
return True;
|
||||||
|
case 'i': // Ignore
|
||||||
|
case 'I':
|
||||||
|
return True;
|
||||||
|
case 'c':
|
||||||
|
case 'C': // Copy
|
||||||
|
if (!$copyoriginalvalue)
|
||||||
|
return $msg;
|
||||||
|
case '?': // Help message
|
||||||
|
fwrite(STDERR, "Available choices:\n");
|
||||||
|
fwrite(STDERR, " - i: ignore this message\n");
|
||||||
|
if (!$copyoriginalvalue)
|
||||||
|
fwrite(STDERR, " - c: copy original message\n");
|
||||||
|
fwrite(STDERR, " - q: quit interactive mode and ignore all following untranslated messages\n");
|
||||||
|
fwrite(STDERR, " - ?: Show this message\n");
|
||||||
|
fwrite(STDERR, "Or leave empty to $empty_action.\n");
|
||||||
|
continue;
|
||||||
|
case "": // Empty
|
||||||
|
// On copy orignal value mode, return $msg
|
||||||
|
if ($copyoriginalvalue)
|
||||||
|
return $msg;
|
||||||
|
// Otherwise, leave translation empty
|
||||||
|
return "";
|
||||||
|
default:
|
||||||
|
// Return user input
|
||||||
|
return $in;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Supposed to never happen
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
function add($msg, $context=null) {
|
function add($msg, $context=null) {
|
||||||
global $LSlang_cli_logger, $lang, $data, $translations, $interactive, $copyoriginalvalue, $format;
|
global $LSlang_cli_logger, $lang, $data, $translations, $interactive, $interactive_exit, $copyoriginalvalue, $format;
|
||||||
$LSlang_cli_logger -> debug("add($msg, $context)");
|
$LSlang_cli_logger -> debug("add($msg, $context)");
|
||||||
if ($msg == '')
|
if ($msg == '')
|
||||||
return;
|
return;
|
||||||
|
@ -388,28 +447,9 @@ function cli_generate_lang_file($command_args) {
|
||||||
$translation = _($msg);
|
$translation = _($msg);
|
||||||
}
|
}
|
||||||
elseif ($interactive && $format != 'pot') {
|
elseif ($interactive && $format != 'pot') {
|
||||||
if ($context)
|
$translation = interactive_ask($context, $msg);
|
||||||
fwrite(STDERR, "\n# $context\n");
|
if (!is_string($translation))
|
||||||
if ($copyoriginalvalue) {
|
return true;
|
||||||
fwrite(STDERR, "\"$msg\"\n\n => Please enter translated string (or leave empty to copy original string) : ");
|
|
||||||
$in = trim(fgets(STDIN));
|
|
||||||
if ($in)
|
|
||||||
$translation = $in;
|
|
||||||
else
|
|
||||||
$translation = $msg;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
fwrite(STDERR, "\"$msg\"\n\n => Please enter translated string (or 'c' to copy original message, 'i' to ignore this message, leave empty to pass) : ");
|
|
||||||
$in = trim(fgets(STDIN));
|
|
||||||
if ($in) {
|
|
||||||
if ($in=="i")
|
|
||||||
return True;
|
|
||||||
if ($in=="c")
|
|
||||||
$translation = $msg;
|
|
||||||
else
|
|
||||||
$translation = $in;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
$data[$msg] = array (
|
$data[$msg] = array (
|
||||||
'translation' => $translation,
|
'translation' => $translation,
|
||||||
|
|
Loading…
Reference in a new issue