Fix a possible php7.4 error / failing tests
[phpmyadmin.git] / scripts / advisor2po
blob2a7190616b87f40360ba173f10bfa2c158a09f90
1 <?php
2 /* vim: set expandtab sw=4 ts=4 sts=4 ft=php: */
3 /**
4  * Script to parse advisor rules and output them as Gettext POT formatted
5  * strings for translation.
6  */
8 use PhpMyAdmin\Advisor;
10 $messages = array();
11 $locations = array();
13 /**
14  * Processes single advisor message and stores data in global array.
15  */
16 function add_message($file, $rules, $idx, $type) {
17     global $messages, $locations;
18     // Get message text
19     if ($type == 'justification') {
20         $msgs = Advisor::splitJustification($rules['rules'][$idx]);
21         $msg = $msgs[0];
22     } else {
23         $msg = $rules['rules'][$idx][$type];
24     }
25     $line = $file . ':' . $rules['lines'][$idx][$type];
26     // Avoid duplicate mesages
27     $pos = array_search($msg, $messages);
28     if ($pos === false) {
29         $messages[] = $msg;
30         $locations[] = array($line);
31     } else {
32         $locations[$pos][] = $line;
33     }
36 /**
37  * Prints message at given location as Gettext string for translation.
38  */
39 function print_message($idx) {
40     global $messages, $locations;
41     echo "\n";
42     echo '#: ' . implode(' ', $locations[$idx]);
43     echo "\n";
44     if (strstr($messages[$idx], '%') !== false) {
45         echo '#, php-format';
46         echo "\n";
47     }
48     echo 'msgid "' . addcslashes(Advisor::escapePercent($messages[$idx]), '"\\') . '"';
49     echo "\n";
50     echo 'msgstr ""';
51     echo "\n";
54 define('PHPMYADMIN', 1);
55 require_once 'libraries/vendor_config.php';
56 require_once AUTOLOAD_FILE;
58 $ruleFiles = [];
59 $ruleFiles[Advisor::GENERIC_RULES_FILE] = Advisor::parseRulesFile(Advisor::GENERIC_RULES_FILE);
60 $ruleFiles[Advisor::BEFORE_MYSQL80003_RULES_FILE] = Advisor::parseRulesFile(Advisor::BEFORE_MYSQL80003_RULES_FILE);
62 foreach ($ruleFiles as $file => $rules) {
63     foreach ($rules['rules'] as $idx => $rule) {
64         add_message($file, $rules, $idx, 'name');
65         add_message($file, $rules, $idx, 'issue');
66         add_message($file, $rules, $idx, 'recommendation');
67         add_message($file, $rules, $idx, 'justification');
68     }
71 foreach($messages as $idx => $rule) {
72     print_message($idx);