]> git.joonet.de Git - adminer.git/commitdiff
Move $LANG and get_lang() to LANG
authorJakub Vrana <jakub@vrana.cz>
Fri, 28 Mar 2025 17:11:26 +0000 (18:11 +0100)
committerJakub Vrana <jakub@vrana.cz>
Fri, 28 Mar 2025 17:39:30 +0000 (18:39 +0100)
adminer/include/bootstrap.inc.php
adminer/include/design.inc.php
adminer/include/lang.inc.php
compile.php
phpstan.neon

index f77d246104b6598c717913088d7a556807d35aa6..cf1ae9f499f0ffa5469dfb9a3cd31f871bc467ca 100644 (file)
@@ -39,7 +39,7 @@ if ($_GET["script"] == "version") {
        exit;
 }
 
-global $adminer, $connection, $driver, $drivers, $error, $HTTPS, $LANG, $langs, $permanent, $has_token, $token, $translations; // allows including Adminer inside a function
+global $adminer, $connection, $driver, $drivers, $error, $HTTPS, $langs, $permanent, $has_token, $token, $translations; // allows including Adminer inside a function
 
 if (!$_SERVER["REQUEST_URI"]) { // IIS 5 compatibility
        $_SERVER["REQUEST_URI"] = $_SERVER["ORIG_PATH_INFO"];
@@ -69,7 +69,7 @@ if (function_exists("get_magic_quotes_runtime") && get_magic_quotes_runtime()) {
 @ini_set("precision", '15'); // @ - can be disabled, 15 - internal PHP precision
 
 include "../adminer/include/lang.inc.php";
-include "../adminer/lang/$LANG.inc.php";
+include "../adminer/lang/" . LANG . ".inc.php";
 include "../adminer/include/db.inc.php";
 include "../adminer/include/pdo.inc.php";
 include "../adminer/include/driver.inc.php";
index 2c20b48c843b04e7a2795ae4e5eca689f30d3bf4..916a9861a2e9f00c910a0dff75656ad8e8ccba96 100644 (file)
@@ -7,7 +7,7 @@ namespace Adminer;
 * @param string $title2 used after colon in title and heading, should be HTML escaped
 */
 function page_header(string $title, string $error = "", $breadcrumb = array(), string $title2 = ""): void {
-       global $LANG, $adminer, $drivers;
+       global $adminer, $drivers;
        page_headers();
        if (is_ajax() && $error) {
                page_messages($error);
@@ -21,7 +21,7 @@ function page_header(string $title, string $error = "", $breadcrumb = array(), s
        // initial-scale=1 is the default but Chrome 134 on iOS is not able to zoom out without it
        ?>
 <!DOCTYPE html>
-<html lang="<?php echo $LANG; ?>" dir="<?php echo lang('ltr'); ?>">
+<html lang="<?php echo LANG; ?>" dir="<?php echo lang('ltr'); ?>">
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <meta name="robots" content="noindex">
 <meta name="viewport" content="width=device-width,initial-scale=1">
index 5ef1e9eedd0e5326a7ad66b61920bc1536ca7922..40a3da5c18cbc447c8e94103c53293433412cea7 100644 (file)
@@ -51,30 +51,24 @@ $langs = array(
        'zh-tw' => '繁體中文', // http://tzangms.com
 );
 
-/** Get current language */
-function get_lang(): string {
-       global $LANG;
-       return $LANG;
-}
-
 /** Translate string
 * @param literal-string $idf
 * @param float|string $number
 */
 function lang(string $idf, $number = null): string {
        // this is matched by compile.php
-       global $LANG, $translations;
+       global $translations;
        $translation = ($translations[$idf] ?: $idf);
        if (is_array($translation)) {
                // this is matched by compile.php
                $pos = ($number == 1 ? 0
-                       : ($LANG == 'cs' || $LANG == 'sk' ? ($number && $number < 5 ? 1 : 2) // different forms for 1, 2-4, other
-                       : ($LANG == 'fr' ? (!$number ? 0 : 1) // different forms for 0-1, other
-                       : ($LANG == 'pl' ? ($number % 10 > 1 && $number % 10 < 5 && $number / 10 % 10 != 1 ? 1 : 2) // different forms for 1, 2-4 except 12-14, other
-                       : ($LANG == 'sl' ? ($number % 100 == 1 ? 0 : ($number % 100 == 2 ? 1 : ($number % 100 == 3 || $number % 100 == 4 ? 2 : 3))) // different forms for 1, 2, 3-4, other
-                       : ($LANG == 'lt' ? ($number % 10 == 1 && $number % 100 != 11 ? 0 : ($number % 10 > 1 && $number / 10 % 10 != 1 ? 1 : 2)) // different forms for 1, 12-19, other
-                       : ($LANG == 'lv' ? ($number % 10 == 1 && $number % 100 != 11 ? 0 : ($number ? 1 : 2)) // different forms for 1 except 11, other, 0
-                       : (in_array($LANG, array('bs', 'ru', 'sr', 'uk')) ? ($number % 10 == 1 && $number % 100 != 11 ? 0 : ($number % 10 > 1 && $number % 10 < 5 && $number / 10 % 10 != 1 ? 1 : 2)) // different forms for 1 except 11, 2-4 except 12-14, other
+                       : (LANG == 'cs' || LANG == 'sk' ? ($number && $number < 5 ? 1 : 2) // different forms for 1, 2-4, other
+                       : (LANG == 'fr' ? (!$number ? 0 : 1) // different forms for 0-1, other
+                       : (LANG == 'pl' ? ($number % 10 > 1 && $number % 10 < 5 && $number / 10 % 10 != 1 ? 1 : 2) // different forms for 1, 2-4 except 12-14, other
+                       : (LANG == 'sl' ? ($number % 100 == 1 ? 0 : ($number % 100 == 2 ? 1 : ($number % 100 == 3 || $number % 100 == 4 ? 2 : 3))) // different forms for 1, 2, 3-4, other
+                       : (LANG == 'lt' ? ($number % 10 == 1 && $number % 100 != 11 ? 0 : ($number % 10 > 1 && $number / 10 % 10 != 1 ? 1 : 2)) // different forms for 1, 12-19, other
+                       : (LANG == 'lv' ? ($number % 10 == 1 && $number % 100 != 11 ? 0 : ($number ? 1 : 2)) // different forms for 1 except 11, other, 0
+                       : (in_array(LANG, array('bs', 'ru', 'sr', 'uk')) ? ($number % 10 == 1 && $number % 100 != 11 ? 0 : ($number % 10 > 1 && $number % 10 < 5 && $number / 10 % 10 != 1 ? 1 : 2)) // different forms for 1 except 11, 2-4 except 12-14, other
                        : 1)))))))) // different forms for 1, other
                ; // http://www.gnu.org/software/gettext/manual/html_node/Plural-forms.html
                $translation = $translation[$pos];
@@ -90,9 +84,9 @@ function lang(string $idf, $number = null): string {
 }
 
 function switch_lang(): void {
-       global $LANG, $langs;
+       global $langs;
        echo "<form action='' method='post'>\n<div id='lang'>";
-       echo lang('Language') . ": " . html_select("lang", $langs, $LANG, "this.form.submit();");
+       echo lang('Language') . ": " . html_select("lang", $langs, LANG, "this.form.submit();");
        echo " <input type='submit' value='" . lang('Use') . "' class='hidden'>\n";
        echo input_token(get_token()); // $token may be empty in auth.inc.php
        echo "</div>\n</form>\n";
@@ -130,3 +124,5 @@ if (isset($langs[$_COOKIE["adminer_lang"]])) {
                }
        }
 }
+
+define('Adminer\LANG', $LANG);
index 107ec169d38db48fc16f1296939c607a99404870..c9e8274aab105158162185cb81a72eae585b2fa5 100755 (executable)
@@ -38,7 +38,7 @@ function lang_ids($match) {
 
 function put_file($match) {
        global $project, $vendor;
-       if (basename($match[2]) == '$LANG.inc.php') {
+       if (preg_match('~LANG~', $match[2])) {
                return $match[0]; // processed later
        }
        $return = file_get_contents(__DIR__ . "/$project/$match[2]");
@@ -195,7 +195,7 @@ function get_translations($lang) {
 }
 
 if (!$translations) {
-       $translations = get_translations($LANG);
+       $translations = get_translations(LANG);
        $_SESSION["translations"] = $translations;
 }
 ';
@@ -342,13 +342,13 @@ if ($project == "editor") {
        $file = preg_replace('~compile_file\(\'\.\./(externals/jush/modules/jush\.js)[^)]+\)~', "''", $file);
 }
 $file = preg_replace_callback("~lang\\('((?:[^\\\\']+|\\\\.)*)'([,)])~s", 'lang_ids', $file);
-$file = preg_replace_callback('~\b(include|require) "([^"]*\$LANG.inc.php)";~', 'put_file_lang', $file);
+$file = preg_replace_callback('~\b(include|require) "([^"]*" . LANG . ".inc.php)";~', 'put_file_lang', $file);
 $file = str_replace("\r", "", $file);
 if ($_SESSION["lang"]) {
        // single language version
        $file = preg_replace_callback("~(<\\?php\\s*echo )?lang\\('((?:[^\\\\']+|\\\\.)*)'([,)])(;\\s*\\?>)?~s", 'remove_lang', $file);
        $file = str_replace("switch_lang();", "", $file);
-       $file = str_replace('<?php echo $LANG; ?>', $_SESSION["lang"], $file);
+       $file = str_replace('<?php echo LANG; ?>', $_SESSION["lang"], $file);
 }
 $file = str_replace('echo script_src("static/editing.js");' . "\n", "", $file); // merged into functions.js
 $file = preg_replace('~\s+echo script_src\("\.\./externals/jush/modules/jush-(textarea|txt|js|" \. JUSH \. ")\.js"\);~', '', $file); // merged into jush.js
index 60a2766423cbf4b593dcb27a286bce3391be9e2d..0e1c05a2f63423b169e5af4c9802013d7900808b 100644 (file)
@@ -12,7 +12,7 @@ parameters:
                - identifier: includeOnce.fileNotFound # ./adminer-plugins.php
                - "~^Function (set_magic_quotes_runtime|mysql_)~" # PHP < 7 functions
                - "~an unknown class OCI-?Lob~" # this looks like PHPStan bug
-               - "~^Variable \\$(adminer|connection|driver|drivers|error|HTTPS|LANG|langs|permanent|has_token|token|translations) might not be defined~" # declared in bootstrap.inc.php
+               - "~^Variable \\$(adminer|connection|driver|drivers|error|HTTPS|langs|permanent|has_token|token|translations) might not be defined~" # declared in bootstrap.inc.php
                - "~expects int, float given~" # this will work
                - "~expects bool~" # truthy values
                - "~fread expects int<1, max>, 100000~" # 1e6