Fix Ukrainian language resolution and fallback

This commit is contained in:
nertyog 2026-08-01 05:41:36 +03:00
parent c764f4a26e
commit 8b1d657fa6
3 changed files with 60 additions and 12 deletions

View File

@ -2130,16 +2130,38 @@ class ControllerModuleImgOpti extends Controller {
if (!$lang) {
$lang = 'en-gb';
}
if ($lang && $lang !== 'en-gb' && $lang !== 'english') {
$lang_lower = strtolower((string)$lang);
if ($lang_lower && $lang_lower !== 'en-gb' && $lang_lower !== 'english') {
$paths = array(
DIR_LANGUAGE . $lang . '/module/img_opti.php'
DIR_LANGUAGE . $lang . '/module/img_opti.php',
DIR_LANGUAGE . $lang_lower . '/module/img_opti.php'
);
if (strpos($lang, 'ru') === 0) {
if (isset($this->db)) {
try {
$escaped_lang = $this->db->escape($lang);
$query_lang = $this->db->query("SELECT directory FROM `" . DB_PREFIX . "language` WHERE code = '" . $escaped_lang . "' OR directory = '" . $escaped_lang . "' LIMIT 1");
if ($query_lang && $query_lang->num_rows && !empty($query_lang->row['directory'])) {
$db_dir = $query_lang->row['directory'];
$paths[] = DIR_LANGUAGE . $db_dir . '/module/img_opti.php';
$paths[] = DIR_LANGUAGE . strtolower($db_dir) . '/module/img_opti.php';
}
} catch (Exception $e) {}
}
if (strpos($lang_lower, 'ru') !== false || strpos($lang_lower, 'rus') !== false) {
$paths[] = DIR_LANGUAGE . 'ru-ru/module/img_opti.php';
$paths[] = DIR_LANGUAGE . 'russian/module/img_opti.php';
} elseif (strpos($lang, 'uk') === 0 || strpos($lang, 'ua') === 0) {
$paths[] = DIR_LANGUAGE . 'ru-RU/module/img_opti.php';
$paths[] = DIR_LANGUAGE . 'ru/module/img_opti.php';
} elseif (strpos($lang_lower, 'uk') !== false || strpos($lang_lower, 'ua') !== false || strpos($lang_lower, 'ukr') !== false) {
$paths[] = DIR_LANGUAGE . 'uk-ua/module/img_opti.php';
$paths[] = DIR_LANGUAGE . 'ukrainian/module/img_opti.php';
$paths[] = DIR_LANGUAGE . 'uk-UA/module/img_opti.php';
$paths[] = DIR_LANGUAGE . 'uk/module/img_opti.php';
$paths[] = DIR_LANGUAGE . 'ua/module/img_opti.php';
$paths[] = DIR_LANGUAGE . 'uk_ua/module/img_opti.php';
$paths[] = DIR_LANGUAGE . 'uk_UA/module/img_opti.php';
}
foreach ($paths as $path) {
if (is_file($path)) {

View File

@ -3232,6 +3232,8 @@ private function roundCornersGD($im, $radius) {
private function loadLanguageSafe() {
$data = array();
$en_paths = array(
DIR_LANGUAGE . 'en-gb/module/img_opti.php',
DIR_LANGUAGE . 'english/module/img_opti.php',
DIR_LANGUAGE . 'en-gb/extension/module/img_opti.php',
DIR_LANGUAGE . 'english/extension/module/img_opti.php'
);
@ -3253,16 +3255,40 @@ private function roundCornersGD($im, $radius) {
if (!$lang) {
$lang = 'en-gb';
}
if ($lang && $lang !== 'en-gb' && $lang !== 'english') {
$lang_lower = strtolower((string)$lang);
if ($lang_lower && $lang_lower !== 'en-gb' && $lang_lower !== 'english') {
$paths = array(
DIR_LANGUAGE . $lang . '/extension/module/img_opti.php'
DIR_LANGUAGE . $lang . '/module/img_opti.php',
DIR_LANGUAGE . $lang_lower . '/module/img_opti.php',
DIR_LANGUAGE . $lang . '/extension/module/img_opti.php',
DIR_LANGUAGE . $lang_lower . '/extension/module/img_opti.php'
);
if (strpos($lang, 'ru') === 0) {
$paths[] = DIR_LANGUAGE . 'ru-ru/extension/module/img_opti.php';
$paths[] = DIR_LANGUAGE . 'russian/extension/module/img_opti.php';
} elseif (strpos($lang, 'uk') === 0 || strpos($lang, 'ua') === 0) {
$paths[] = DIR_LANGUAGE . 'uk-ua/extension/module/img_opti.php';
$paths[] = DIR_LANGUAGE . 'ukrainian/extension/module/img_opti.php';
if (isset($this->db)) {
try {
$escaped_lang = $this->db->escape($lang);
$query_lang = $this->db->query("SELECT directory FROM `" . DB_PREFIX . "language` WHERE code = '" . $escaped_lang . "' OR directory = '" . $escaped_lang . "' LIMIT 1");
if ($query_lang && $query_lang->num_rows && !empty($query_lang->row['directory'])) {
$db_dir = $query_lang->row['directory'];
$paths[] = DIR_LANGUAGE . $db_dir . '/module/img_opti.php';
$paths[] = DIR_LANGUAGE . strtolower($db_dir) . '/module/img_opti.php';
}
} catch (Exception $e) {}
}
if (strpos($lang_lower, 'ru') !== false || strpos($lang_lower, 'rus') !== false) {
$paths[] = DIR_LANGUAGE . 'ru-ru/module/img_opti.php';
$paths[] = DIR_LANGUAGE . 'russian/module/img_opti.php';
$paths[] = DIR_LANGUAGE . 'ru-RU/module/img_opti.php';
$paths[] = DIR_LANGUAGE . 'ru/module/img_opti.php';
} elseif (strpos($lang_lower, 'uk') !== false || strpos($lang_lower, 'ua') !== false || strpos($lang_lower, 'ukr') !== false) {
$paths[] = DIR_LANGUAGE . 'uk-ua/module/img_opti.php';
$paths[] = DIR_LANGUAGE . 'ukrainian/module/img_opti.php';
$paths[] = DIR_LANGUAGE . 'uk-UA/module/img_opti.php';
$paths[] = DIR_LANGUAGE . 'uk/module/img_opti.php';
$paths[] = DIR_LANGUAGE . 'ua/module/img_opti.php';
$paths[] = DIR_LANGUAGE . 'uk_ua/module/img_opti.php';
$paths[] = DIR_LANGUAGE . 'uk_UA/module/img_opti.php';
}
foreach ($paths as $path) {
if (is_file($path)) {