Ми розробляємо модулі для OpenCart 4.0 і помітили, що релізи OpenCart 4.0.1.1, 4.0.2.0, 4.0.2.1 мають багато недоліків, один із яких - проблема із перемиканням мови. Ця проблема не виявляється, якщо на сайті лише одна мова, але якщо мов декілька, то можна помітити, що змінити мову адмінки неможливо або що стандартні фрази модулів не перекладаються на сайті при зміні мови, вони завжди відображаються англійською. Звісно, це серйозний баг OpenCart, який, втім, його автор не поспішає вирішувати попри численні скарги з боку користувачів і контрибуторів системи. Надіємося, що проблема буде остаточно вирішена у наступних релізах OpenCart, а поки пропонуємо вирішення проблеми шляхом правок у файлах системи.
Не змінюється мова адмінки OpenCart 4.0.1.1 - 4.0.2.1
В шапці адмінпанелі є перемикач мови, який відображає всі доступні локалізації. Але при спробі зміни мови в адмінці нічого не відбувається. Точніше, сторінка перезавантажується, але мова залишається англійською. Проблема відома і вирішується заміною блока коду в одному файлі.
Відкрийте файл admin/controller/startup/language.php та знайдіть там наступний блок коду (якщо ви змінили назву папки admin - шукайте файл у папці з вашою новою назвою):
// Language
if ($language_info['extension']) {
self::$extension = $language_info['extension'];
$this->language->addPath('extension/' . $language_info['extension'], DIR_EXTENSION . $language_info['extension'] . '/admin/language/');
}
Замініть вищезгаданий блок коду на наступний код:
$this->language = new \Opencart\System\Library\Language($code);
// Language
if ($language_info['extension']) {
self::$extension = $language_info['extension'];
$this->language->addPath(DIR_EXTENSION . $language_info['extension'] . '/admin/language/');
} else {
$this->language->addPath(DIR_LANGUAGE);
}
Не перекладаються заголовки і фрази модулів на сайті OpenCart 4.0.1.1 - 4.0.2.1
При зміні мови на сайті деякі фрази можуть не перекладатися через відсутність перекладу конкретних фраз, але також є проблема із перекладом стандартних модулів, наприклад таких як Аккаунт чи Рекомендовані товари. Можна побачити, що заголовки та фрази цих модулів не мають перекладу і завжди відображаються англійською мовою. Це проблема конкретних версій OpenCart, а не встановлених локалізацій. І вирішується ця проблема також шляхом заміни блока коду в одному із файлів системи. Але при цьому мають бути присутні папки і файли локалізації у відповідних каталогах модулів всереднині каталога /extension/. Тому уважно читайте інструкцію по встановленні локалізації, яку ви збираєтесь додати на свій сайт. Адже деякі модулі локалізації автоматично копіюють файли перекладів у папки інших модулів, а деякі просять скопіювати файли вручну у визначені папки.
Відкрийте файл catalog/controller/startup/language.php та знайдіть наступний блок коду:
// Language
if ($language_info['extension']) {
self::$extension = $language_info['extension'];
$this->language->addPath('extension/' . $language_info['extension'], DIR_EXTENSION . $language_info['extension'] . '/catalog/language/');
}
Замініть його на наступний код:
$this->language = new \Opencart\System\Library\Language($code);
// Language
if ($language_info['extension']) {
self::$extension = $language_info['extension'];
$this->language->addPath(DIR_EXTENSION . $language_info['extension'] . '/catalog/language/');
} else {
$this->language->addPath(DIR_LANGUAGE);
}
Звісно, в початкових релізах OpenCart 4.0.x.x є ще багато недоліків, але ж немає нічого ідеального, ми повинні самі створювати ідеальне для себе. Попри все, очікуємо на нові стабільні релізи Opencart 4 і рухаємось вперед.