phpmyadmin/scripts/advisor2po
Maurício Meneghini Fauth cc50cf178e Merge branch 'QA_4_9' into QA_5_0
Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
2019-10-11 12:51:03 -03:00

79 lines
2.1 KiB
PHP

<?php
/* vim: set expandtab sw=4 ts=4 sts=4 ft=php: */
/**
* Script to parse advisor rules and output them as Gettext POT formatted
* strings for translation.
*/
declare(strict_types=1);
if (! defined('ROOT_PATH')) {
define('ROOT_PATH', dirname(__DIR__) . DIRECTORY_SEPARATOR);
}
use PhpMyAdmin\Advisor;
$messages = array();
$locations = array();
/**
* Processes single advisor message and stores data in global array.
*/
function add_message($file, $rules, $idx, $type) {
global $messages, $locations;
// Get message text
if ($type == 'justification') {
$msgs = Advisor::splitJustification($rules['rules'][$idx]);
$msg = $msgs[0];
} else {
$msg = $rules['rules'][$idx][$type];
}
$line = $file . ':' . $rules['lines'][$idx][$type];
// Avoid duplicate mesages
$pos = array_search($msg, $messages);
if ($pos === false) {
$messages[] = $msg;
$locations[] = array($line);
} else {
$locations[$pos][] = $line;
}
}
/**
* Prints message at given location as Gettext string for translation.
*/
function print_message($idx) {
global $messages, $locations;
echo "\n";
echo '#: ' . implode(' ', $locations[$idx]);
echo "\n";
if (strstr($messages[$idx], '%') !== false) {
echo '#, php-format';
echo "\n";
}
echo 'msgid "' . addcslashes(Advisor::escapePercent($messages[$idx]), '"\\') . '"';
echo "\n";
echo 'msgstr ""';
echo "\n";
}
define('PHPMYADMIN', 1);
require_once 'libraries/vendor_config.php';
require_once AUTOLOAD_FILE;
$ruleFiles = [];
$ruleFiles[Advisor::GENERIC_RULES_FILE] = Advisor::parseRulesFile(Advisor::GENERIC_RULES_FILE);
$ruleFiles[Advisor::BEFORE_MYSQL80003_RULES_FILE] = Advisor::parseRulesFile(Advisor::BEFORE_MYSQL80003_RULES_FILE);
foreach ($ruleFiles as $file => $rules) {
foreach ($rules['rules'] as $idx => $rule) {
add_message($file, $rules, $idx, 'name');
add_message($file, $rules, $idx, 'issue');
add_message($file, $rules, $idx, 'recommendation');
add_message($file, $rules, $idx, 'justification');
}
}
foreach($messages as $idx => $rule) {
print_message($idx);
}