diff --git a/adminer/include/bootstrap.inc.php b/adminer/include/bootstrap.inc.php index fbea99b8..fbd21d41 100644 --- a/adminer/include/bootstrap.inc.php +++ b/adminer/include/bootstrap.inc.php @@ -39,7 +39,7 @@ if ($_GET["script"] == "version") { exit; } -global $translations; // allows including Adminer inside a function +// Adminer doesn't use any global variables; they used to be declared here if (!$_SERVER["REQUEST_URI"]) { // IIS 5 compatibility $_SERVER["REQUEST_URI"] = $_SERVER["ORIG_PATH_INFO"]; diff --git a/adminer/include/lang.inc.php b/adminer/include/lang.inc.php index cf98bb34..71b81713 100644 --- a/adminer/include/lang.inc.php +++ b/adminer/include/lang.inc.php @@ -62,8 +62,7 @@ function langs(): array { */ function lang(string $idf, $number = null): string { // this is matched by compile.php - global $translations; - $translation = ($translations[$idf] ?: $idf); + $translation = (Lang::$translations[$idf] ?: $idf); if (is_array($translation)) { // this is matched by compile.php $pos = ($number == 1 ? 0 @@ -99,7 +98,6 @@ function switch_lang(): void { if (isset($_POST["lang"]) && verify_token()) { // $error not yet available cookie("adminer_lang", $_POST["lang"]); $_SESSION["lang"] = $_POST["lang"]; // cookies may be disabled - $_SESSION["translations"] = array(); // used in compiled version redirect(remove_from_uri()); } @@ -130,3 +128,7 @@ if (idx(langs(), $_COOKIE["adminer_lang"])) { } define('Adminer\LANG', $LANG); + +class Lang { + /** @var array> */ static array $translations; +} diff --git a/adminer/lang/ar.inc.php b/adminer/lang/ar.inc.php index 005b70ba..5c640223 100644 --- a/adminer/lang/ar.inc.php +++ b/adminer/lang/ar.inc.php @@ -1,7 +1,7 @@ 'تسجيل الدخول', 'Logout successful.' => 'تم تسجيل الخروج بنجاح.', 'Invalid credentials.' => 'بيانات الدخول غير صالحة.', diff --git a/adminer/lang/bg.inc.php b/adminer/lang/bg.inc.php index 1a79d7d6..37c5443f 100644 --- a/adminer/lang/bg.inc.php +++ b/adminer/lang/bg.inc.php @@ -1,7 +1,7 @@ 'Система', 'Server' => 'Сървър', diff --git a/adminer/lang/bn.inc.php b/adminer/lang/bn.inc.php index 57051600..452d9b5c 100644 --- a/adminer/lang/bn.inc.php +++ b/adminer/lang/bn.inc.php @@ -1,7 +1,7 @@ 'লগইন', 'Logout successful.' => 'সফলভাবে লগআউট হয়েছে।', 'Invalid credentials.' => 'ভুল পাসওয়ার্ড।', diff --git a/adminer/lang/bs.inc.php b/adminer/lang/bs.inc.php index 47075135..c1f7e587 100644 --- a/adminer/lang/bs.inc.php +++ b/adminer/lang/bs.inc.php @@ -1,7 +1,7 @@ 'Sistem', 'Server' => 'Server', diff --git a/adminer/lang/ca.inc.php b/adminer/lang/ca.inc.php index b7daeaed..f64607bf 100644 --- a/adminer/lang/ca.inc.php +++ b/adminer/lang/ca.inc.php @@ -1,7 +1,7 @@ 'Inicia la sessió', 'Logout successful.' => 'Desconnexió correcta.', 'Invalid credentials.' => 'Credencials invàlides.', diff --git a/adminer/lang/cs.inc.php b/adminer/lang/cs.inc.php index 341be5c5..0973e419 100644 --- a/adminer/lang/cs.inc.php +++ b/adminer/lang/cs.inc.php @@ -1,7 +1,7 @@ 'Systém', 'Server' => 'Server', diff --git a/adminer/lang/da.inc.php b/adminer/lang/da.inc.php index 51c1b5e2..2543febe 100644 --- a/adminer/lang/da.inc.php +++ b/adminer/lang/da.inc.php @@ -1,7 +1,7 @@ 'System', 'Server' => 'Server', 'Username' => 'Brugernavn', diff --git a/adminer/lang/de.inc.php b/adminer/lang/de.inc.php index e0dd2f4a..7fa03b8f 100644 --- a/adminer/lang/de.inc.php +++ b/adminer/lang/de.inc.php @@ -1,7 +1,7 @@ 'Login', 'Logout successful.' => 'Abmeldung erfolgreich.', 'Thanks for using Adminer, consider donating.' => 'Danke, dass Sie Adminer genutzt haben. Spenden willkommen!.', diff --git a/adminer/lang/el.inc.php b/adminer/lang/el.inc.php index cf6c45b5..98cefc1d 100644 --- a/adminer/lang/el.inc.php +++ b/adminer/lang/el.inc.php @@ -1,7 +1,7 @@ 'Σύστημα', 'Server' => 'Διακομιστής', diff --git a/adminer/lang/en.inc.php b/adminer/lang/en.inc.php index db318b33..3dcd6355 100644 --- a/adminer/lang/en.inc.php +++ b/adminer/lang/en.inc.php @@ -1,7 +1,7 @@ array('Too many unsuccessful logins, try again in %d minute.', 'Too many unsuccessful logins, try again in %d minutes.'), 'Query executed OK, %d row(s) affected.' => array('Query executed OK, %d row affected.', 'Query executed OK, %d rows affected.'), '%d byte(s)' => array('%d byte', '%d bytes'), diff --git a/adminer/lang/es.inc.php b/adminer/lang/es.inc.php index 793ecf82..7491c005 100644 --- a/adminer/lang/es.inc.php +++ b/adminer/lang/es.inc.php @@ -1,7 +1,7 @@ 'Login', 'Logout successful.' => 'Sesión finalizada con éxito.', 'Invalid credentials.' => 'Usuario y/o clave de acceso incorrecta.', diff --git a/adminer/lang/et.inc.php b/adminer/lang/et.inc.php index 020c8af7..099194c0 100644 --- a/adminer/lang/et.inc.php +++ b/adminer/lang/et.inc.php @@ -1,7 +1,7 @@ 'Logi sisse', 'Logout successful.' => 'Väljalogimine õnnestus.', 'Invalid credentials.' => 'Ebakorrektsed andmed.', diff --git a/adminer/lang/fa.inc.php b/adminer/lang/fa.inc.php index 5dc1c9b2..13586eb7 100644 --- a/adminer/lang/fa.inc.php +++ b/adminer/lang/fa.inc.php @@ -1,7 +1,7 @@ 'سیستم', 'Server' => 'سرور', diff --git a/adminer/lang/fi.inc.php b/adminer/lang/fi.inc.php index 6499bcc6..bd11f9ce 100644 --- a/adminer/lang/fi.inc.php +++ b/adminer/lang/fi.inc.php @@ -1,7 +1,7 @@ 'Järjestelmä', 'Server' => 'Palvelin', diff --git a/adminer/lang/fr.inc.php b/adminer/lang/fr.inc.php index 06e8d594..5f84a065 100644 --- a/adminer/lang/fr.inc.php +++ b/adminer/lang/fr.inc.php @@ -1,7 +1,7 @@ 'Authentification', 'Logout successful.' => 'Au revoir !', 'Invalid credentials.' => 'Authentification échouée.', diff --git a/adminer/lang/gl.inc.php b/adminer/lang/gl.inc.php index 14a5964f..726eea77 100644 --- a/adminer/lang/gl.inc.php +++ b/adminer/lang/gl.inc.php @@ -1,7 +1,7 @@ 'Conectar', 'Logout successful.' => 'Pechouse a sesión con éxito.', 'Invalid credentials.' => 'Credenciais (usuario e/ou contrasinal) inválidos.', diff --git a/adminer/lang/he.inc.php b/adminer/lang/he.inc.php index fb493745..97489126 100644 --- a/adminer/lang/he.inc.php +++ b/adminer/lang/he.inc.php @@ -1,7 +1,7 @@ 'התחברות', 'Logout successful.' => 'ההתחברות הצליחה', 'Invalid credentials.' => 'פרטי התחברות שגויים', diff --git a/adminer/lang/hu.inc.php b/adminer/lang/hu.inc.php index 94f0bc75..881a4961 100644 --- a/adminer/lang/hu.inc.php +++ b/adminer/lang/hu.inc.php @@ -1,7 +1,7 @@ 'Belépés', 'Logout successful.' => 'Sikeres kilépés.', 'Invalid credentials.' => 'Érvénytelen adatok.', diff --git a/adminer/lang/id.inc.php b/adminer/lang/id.inc.php index 378a19db..5537b6f6 100644 --- a/adminer/lang/id.inc.php +++ b/adminer/lang/id.inc.php @@ -1,7 +1,7 @@ 'Sistem', 'Server' => 'Server', diff --git a/adminer/lang/it.inc.php b/adminer/lang/it.inc.php index e0bc8ae8..81287e21 100644 --- a/adminer/lang/it.inc.php +++ b/adminer/lang/it.inc.php @@ -1,7 +1,7 @@ 'Autenticazione', 'Logout successful.' => 'Uscita effettuata con successo.', 'Invalid credentials.' => 'Credenziali non valide.', diff --git a/adminer/lang/ja.inc.php b/adminer/lang/ja.inc.php index 2fef6e10..9cbbab2f 100644 --- a/adminer/lang/ja.inc.php +++ b/adminer/lang/ja.inc.php @@ -1,7 +1,7 @@ 'ログイン', 'Logout successful.' => 'ログアウトしました。', 'Invalid credentials.' => '不正なログインです。', diff --git a/adminer/lang/ka.inc.php b/adminer/lang/ka.inc.php index 146d3163..97cc9666 100644 --- a/adminer/lang/ka.inc.php +++ b/adminer/lang/ka.inc.php @@ -1,7 +1,7 @@ 'შესვლა', 'Logout successful.' => 'გამოხვედით სისტემიდან.', 'Invalid credentials.' => 'არასწორი მომხმარებელი ან პაროლი.', diff --git a/adminer/lang/ko.inc.php b/adminer/lang/ko.inc.php index 3e5bfab2..28e20738 100644 --- a/adminer/lang/ko.inc.php +++ b/adminer/lang/ko.inc.php @@ -1,7 +1,7 @@ '$1-$3-$5', '%.3f s' => '%.3f 초', '%d byte(s)' => '%d 바이트', diff --git a/adminer/lang/lt.inc.php b/adminer/lang/lt.inc.php index f1d211ce..e37b2e3b 100644 --- a/adminer/lang/lt.inc.php +++ b/adminer/lang/lt.inc.php @@ -1,7 +1,7 @@ 'Sistema', 'Server' => 'Serveris', diff --git a/adminer/lang/lv.inc.php b/adminer/lang/lv.inc.php index 4ef05001..72591236 100644 --- a/adminer/lang/lv.inc.php +++ b/adminer/lang/lv.inc.php @@ -1,7 +1,7 @@ 'Ieiet', 'Logout successful.' => 'Jūs veiksmīgi izgājāt no sistēmas.', 'Invalid credentials.' => 'Nepareizs lietotāja vārds vai parole.', diff --git a/adminer/lang/ms.inc.php b/adminer/lang/ms.inc.php index 7ea30df0..245d8dfd 100644 --- a/adminer/lang/ms.inc.php +++ b/adminer/lang/ms.inc.php @@ -1,7 +1,7 @@ 'Sistem', 'Server' => 'Pelayan', diff --git a/adminer/lang/nl.inc.php b/adminer/lang/nl.inc.php index 03580026..44428d77 100644 --- a/adminer/lang/nl.inc.php +++ b/adminer/lang/nl.inc.php @@ -1,7 +1,7 @@ 'Aanmelden', 'Logout successful.' => 'Successvol afgemeld.', 'Invalid credentials.' => 'Ongeldige gebruikersgegevens.', diff --git a/adminer/lang/no.inc.php b/adminer/lang/no.inc.php index 7fa87ecc..6996a250 100644 --- a/adminer/lang/no.inc.php +++ b/adminer/lang/no.inc.php @@ -1,7 +1,7 @@ 'System', 'Server' => 'Server', 'Username' => 'Brukernavn', diff --git a/adminer/lang/pl.inc.php b/adminer/lang/pl.inc.php index 80230290..b32b2c29 100644 --- a/adminer/lang/pl.inc.php +++ b/adminer/lang/pl.inc.php @@ -1,7 +1,7 @@ 'Rodzaj bazy', 'Server' => 'Serwer', diff --git a/adminer/lang/pt-br.inc.php b/adminer/lang/pt-br.inc.php index 2214393b..536315f9 100644 --- a/adminer/lang/pt-br.inc.php +++ b/adminer/lang/pt-br.inc.php @@ -1,7 +1,7 @@ 'Entrar', 'Logout successful.' => 'Saída bem sucedida.', 'Invalid credentials.' => 'Identificação inválida.', diff --git a/adminer/lang/pt.inc.php b/adminer/lang/pt.inc.php index de3e6a4f..dd40fc76 100644 --- a/adminer/lang/pt.inc.php +++ b/adminer/lang/pt.inc.php @@ -1,7 +1,7 @@ 'Entrar', 'Logout successful.' => 'Sessão terminada com sucesso.', 'Invalid credentials.' => 'Identificação inválida.', diff --git a/adminer/lang/ro.inc.php b/adminer/lang/ro.inc.php index ef9f819b..36f75212 100644 --- a/adminer/lang/ro.inc.php +++ b/adminer/lang/ro.inc.php @@ -1,7 +1,7 @@ 'Intră', 'Logout successful.' => 'Ați ieșit cu succes.', 'Invalid credentials.' => 'Numele de utilizator sau parola este greșită.', diff --git a/adminer/lang/ru.inc.php b/adminer/lang/ru.inc.php index 7a1a419f..c29ab837 100644 --- a/adminer/lang/ru.inc.php +++ b/adminer/lang/ru.inc.php @@ -1,7 +1,7 @@ 'Войти', 'Logout successful.' => 'Вы успешно покинули систему.', 'Invalid credentials.' => 'Неправильное имя пользователя или пароль.', diff --git a/adminer/lang/sk.inc.php b/adminer/lang/sk.inc.php index ec84040f..3cea57cc 100644 --- a/adminer/lang/sk.inc.php +++ b/adminer/lang/sk.inc.php @@ -1,7 +1,7 @@ 'Prihlásiť sa', 'Logout successful.' => 'Odhlásenie prebehlo v poriadku.', 'Invalid credentials.' => 'Neplatné prihlasovacie údaje.', @@ -281,7 +281,7 @@ $translations = array( 'Warnings' => 'Varovania', '%d / ' => '%d / ', 'Limit rows' => 'Limit riadkov', - 'Adminer does not support accessing a database without a password, more information.' => 'Adminer nepodporuje prístup k databáze bez hesla, viac informácií.', + 'Adminer does not support accessing a database without a password, more information.' => 'Adminer nepodporuje prístup k databáze bez hesla, viac informácií.', 'Default value' => 'Predvolená hodnota', 'Full table scan' => 'Prechod celej tabuľky', 'Too many unsuccessful logins, try again in %d minute(s).' => array('Príliš veľa pokusov o prihlásenie, skúste to znova za %d minutu.', 'Príliš veľa pokusov o prihlásenie, skúste to znova za %d minuty.', 'Príliš veľa pokusov o prihlásenie, skúste to znova za %d minút.'), diff --git a/adminer/lang/sl.inc.php b/adminer/lang/sl.inc.php index d18717ec..4b20bef8 100644 --- a/adminer/lang/sl.inc.php +++ b/adminer/lang/sl.inc.php @@ -1,7 +1,7 @@ 'Sistem', 'Server' => 'Strežnik', diff --git a/adminer/lang/sr.inc.php b/adminer/lang/sr.inc.php index 7b070742..db98d24e 100644 --- a/adminer/lang/sr.inc.php +++ b/adminer/lang/sr.inc.php @@ -1,7 +1,7 @@ 'Систем', 'Server' => 'Сервер', diff --git a/adminer/lang/sv.inc.php b/adminer/lang/sv.inc.php index 37752218..e96943dc 100644 --- a/adminer/lang/sv.inc.php +++ b/adminer/lang/sv.inc.php @@ -1,7 +1,7 @@ 'System', 'Server' => 'Server', diff --git a/adminer/lang/ta.inc.php b/adminer/lang/ta.inc.php index 43a26359..87cfc54b 100644 --- a/adminer/lang/ta.inc.php +++ b/adminer/lang/ta.inc.php @@ -1,7 +1,7 @@ 'நுழை', 'Logout successful.' => 'வெற்றிக‌ர‌மாய் வெளியேறியாயிற்று.', 'Invalid credentials.' => 'ச‌ரியான‌ விப‌ர‌ங்க‌ள் இல்லை.', diff --git a/adminer/lang/th.inc.php b/adminer/lang/th.inc.php index 322250c9..f278ce8f 100644 --- a/adminer/lang/th.inc.php +++ b/adminer/lang/th.inc.php @@ -1,7 +1,7 @@ 'เข้าสู่ระบบ', 'Logout successful.' => 'ออกจากระบบเรียบร้อยแล้ว.', 'Invalid credentials.' => 'ข้อมูลไม่ถูกต้อง.', diff --git a/adminer/lang/tr.inc.php b/adminer/lang/tr.inc.php index 2166249e..54ec5645 100644 --- a/adminer/lang/tr.inc.php +++ b/adminer/lang/tr.inc.php @@ -1,7 +1,7 @@ 'Sistem', 'Server' => 'Sunucu', diff --git a/adminer/lang/uk.inc.php b/adminer/lang/uk.inc.php index 6f4eba18..456ad04f 100644 --- a/adminer/lang/uk.inc.php +++ b/adminer/lang/uk.inc.php @@ -1,7 +1,7 @@ 'Система Бази Даних', 'Server' => 'Сервер', diff --git a/adminer/lang/uz.inc.php b/adminer/lang/uz.inc.php index ab429c82..b87b42e5 100644 --- a/adminer/lang/uz.inc.php +++ b/adminer/lang/uz.inc.php @@ -1,7 +1,7 @@ 'Tizim', 'Server' => 'Server', diff --git a/adminer/lang/vi.inc.php b/adminer/lang/vi.inc.php index 78d87388..2302f379 100644 --- a/adminer/lang/vi.inc.php +++ b/adminer/lang/vi.inc.php @@ -1,7 +1,7 @@ 'Hệ thống', 'Server' => 'Máy chủ', diff --git a/adminer/lang/xx.inc.php b/adminer/lang/xx.inc.php index 66b623c2..fcd6e31c 100644 --- a/adminer/lang/xx.inc.php +++ b/adminer/lang/xx.inc.php @@ -1,7 +1,7 @@ 'Xx', 'Server' => 'Xx', diff --git a/adminer/lang/zh-tw.inc.php b/adminer/lang/zh-tw.inc.php index 5f72e846..1bf1d2e6 100644 --- a/adminer/lang/zh-tw.inc.php +++ b/adminer/lang/zh-tw.inc.php @@ -1,7 +1,7 @@ '資料庫系統', 'Server' => '伺服器', diff --git a/adminer/lang/zh.inc.php b/adminer/lang/zh.inc.php index bcc4cfd4..81fcfc13 100644 --- a/adminer/lang/zh.inc.php +++ b/adminer/lang/zh.inc.php @@ -1,7 +1,7 @@ '系统', 'Server' => '服务器', diff --git a/compile.php b/compile.php index 60d0056d..8948c247 100755 --- a/compile.php +++ b/compile.php @@ -18,9 +18,8 @@ function add_quo_slashes($s) { } function remove_lang($match) { - global $translations; $idf = strtr($match[2], array("\\'" => "'", "\\\\" => "\\")); - $s = ($translations[$idf] ?: $idf); + $s = (Adminer\Lang::$translations[$idf] ?: $idf); if ($match[3] == ",") { // lang() has parameters return $match[1] . (is_array($s) ? "lang(array('" . implode("', '", array_map('add_apo_slashes', $s)) . "')," : "sprintf('" . add_apo_slashes($s) . "',"); } @@ -167,9 +166,9 @@ function put_file_lang($match) { } $return = ""; foreach (Adminer\langs() as $lang => $val) { - include __DIR__ . "/adminer/lang/$lang.inc.php"; // assign $translations + include __DIR__ . "/adminer/lang/$lang.inc.php"; $translation_ids = array_flip($lang_ids); // default translation - foreach ($translations as $key => $val) { + foreach (Adminer\Lang::$translations as $key => $val) { if ($val !== null) { $translation_ids[$lang_ids[$key]] = implode("\t", (array) $val); } @@ -178,10 +177,14 @@ function put_file_lang($match) { case "' . $lang . '": $compressed = "' . add_quo_slashes(lzw_compress(implode("\n", $translation_ids))) . '"; break;'; } $translations_version = crc32($return); - return '$translations = $_SESSION["translations"]; -if ($_SESSION["translations_version"] != ' . $translations_version . ') { - $translations = array(); - $_SESSION["translations_version"] = ' . $translations_version . '; + return 'Lang::$translations = $_SESSION["translations"]; +if ($_SESSION["translations_version"] != LANG . ' . $translations_version . ') { + Lang::$translations = array(); + $_SESSION["translations_version"] = LANG . ' . $translations_version . '; +} +if (!Lang::$translations) { + Lang::$translations = get_translations(LANG); + $_SESSION["translations"] = Lang::$translations; } function get_translations($lang) { @@ -193,11 +196,6 @@ function get_translations($lang) { } return $translations; } - -if (!$translations) { - $translations = get_translations(LANG); - $_SESSION["translations"] = $translations; -} '; } diff --git a/externals/PhpShrink b/externals/PhpShrink index 0245ae4e..9ff1f4be 160000 --- a/externals/PhpShrink +++ b/externals/PhpShrink @@ -1 +1 @@ -Subproject commit 0245ae4ea92f7de28c0b5633fc8ed691dbb25992 +Subproject commit 9ff1f4be6800a72e6cc866104b38a61d706b0417 diff --git a/lang.php b/lang.php index 72b35802..b9874721 100755 --- a/lang.php +++ b/lang.php @@ -5,8 +5,7 @@ include __DIR__ . "/adminer/include/errors.inc.php"; unset($_COOKIE["adminer_lang"]); $_SESSION["lang"] = $_SERVER["argv"][1]; // Adminer functions read language from session if (isset($_SESSION["lang"])) { - include __DIR__ . "/adminer/include/lang.inc.php"; - if (isset($_SERVER["argv"][2]) || (!idx(Adminer\langs(), $_SESSION["lang"]) && $_SESSION["lang"] != "xx")) { + if (isset($_SERVER["argv"][2]) || !file_exists($filename)) { echo "Usage: php lang.php [lang]\nPurpose: Update adminer/lang/*.inc.php from source code messages.\n"; exit(1); } @@ -20,9 +19,9 @@ foreach ( glob(__DIR__ . "/adminer/drivers/*.php"), glob(__DIR__ . "/editor/*.php"), glob(__DIR__ . "/editor/include/*.php") - ) as $filename + ) as $include ) { - $file = file_get_contents($filename); + $file = file_get_contents($include); if (preg_match_all("~lang\\(('(?:[^\\\\']+|\\\\.)*')([),])~", $file, $matches)) { // lang() always uses apostrophes $messages_all += array_combine($matches[1], $matches[2]); } @@ -70,7 +69,7 @@ foreach (glob(__DIR__ . "/adminer/lang/" . ($_SESSION["lang"] ?: "*") . ".inc.ph } } } - $s = "