Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Совет. Как избежать ошибки "Notice: Undefined index: ru in" при обновлении OC.


Recommended Posts

[Преамбула]

Думаю ни для кого не секрет, что второй язык (английский) в магазине, это зло. И связано это с тем, что при добавлении товара, приходится заполнять обязательные поля для Английского языка. Поэтому все удаляют английский язык и наступают на грабли при обновлении ОРИГИНАЛЬНОЙ версии Opencart.

[/Преамбула]

Все нижеописанное касается только процесса обновления ОРИГИНАЛЬНОЙ версии Opencart.

Итак:

- движок - OpenCart

- режим - обновление

- количество языков в системе - Один (Русский)

- язык админки - Русский

Провели обновление, зашли в Админку. И видим вместо Русского языка Английский. Выбираем из списка Русский и... после перерисовки экрана видим вот такое сообщение об ошибке:

PHP Notice:  Undefined index:  ru in ../admin/index.php on line 120
PHP Notice:  Undefined index:  ru in ../admin/index.php on line 123
PHP Notice:  Undefined index:  ru in ../admin/index.php on line 124
PHP Notice:  Error: Could not load language ! in ../system/library/language.php on line 39

это сообщение говорит о том, что в базе данных в таблице "language" ("oc_language") нет записи для русского языка. Там только одна запись и она содержит данные для Английского языка. Убивается русский язык вот такой нехитрой конструкцией ;)

--
-- Table structure for table `oc_language`
--

DROP TABLE IF EXISTS `oc_language`;

Лечение: на примере OpenCart 1.5.5.1 ( префикс для таблиц " oc_ ")

1. перед проведением обновления вносим изменения в файл \upload\install\opencart.sql

- вместо

--
-- Table structure for table `oc_language`
--

DROP TABLE IF EXISTS `oc_language`;
CREATE TABLE `oc_language` (
 `language_id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(32) NOT NULL,
 `code` varchar(5) NOT NULL,
 `locale` varchar(255) NOT NULL,
 `image` varchar(64) NOT NULL,
 `directory` varchar(32) NOT NULL,
 `filename` varchar(64) NOT NULL,
 `sort_order` int(3) NOT NULL DEFAULT '0',
 `status` tinyint(1) NOT NULL,
 PRIMARY KEY (`language_id`),
 KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

--
-- Dumping data for table `oc_language`
--

INSERT INTO `oc_language` (`language_id`, `name`, `code`, `locale`, `image`, `directory`, `filename`, `sort_order`, `status`) VALUES
(1, 'English', 'en', 'en_US.UTF-8,en_US,en-gb,english', 'gb.png', 'english', 'english', 1, 1);

- вносим

--
-- Table structure for table `oc_language`
--

DROP TABLE IF EXISTS `oc_language`;
CREATE TABLE `oc_language` (
 `language_id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(32) NOT NULL,
 `code` varchar(5) NOT NULL,
 `locale` varchar(255) NOT NULL,
 `image` varchar(64) NOT NULL,
 `directory` varchar(32) NOT NULL,
 `filename` varchar(64) NOT NULL,
 `sort_order` int(3) NOT NULL DEFAULT '0',
 `status` tinyint(1) NOT NULL,
 PRIMARY KEY (`language_id`),
 KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

--
-- Dumping data for table `oc_language`
--

INSERT INTO `oc_language` (`language_id`, `name`, `code`, `locale`, `image`, `directory`, `filename`, `sort_order`, `status`) VALUES
(1, 'Russian', 'ru', 'ru_RU.UTF-8,ru_RU,russian', 'ru.png', 'russian', 'russian', 1, 1),
(2, 'English', 'en', 'en_US.UTF-8,en_US,en-gb,english', 'gb.png', 'english', 'english', 2, 1);

В итоге в таблицу `oc_language` будут внесены два языка:

(1, 'Russian', 'ru', 'ru_RU.UTF-8,ru_RU,russian', 'ru.png', 'russian', 'russian', 1, 1),

(2, 'English', 'en', 'en_US.UTF-8,en_US,en-gb,english', 'gb.png', 'english', 'english', 2, 1);

2. можно поступить иначе. После обновления выполнить вот такой скрипт (скрипт избыточный, просто копи/паст но так проще :) )

--
-- Table structure for table `oc_language`
--

DROP TABLE IF EXISTS `oc_language`;
CREATE TABLE `oc_language` (
 `language_id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(32) NOT NULL,
 `code` varchar(5) NOT NULL,
 `locale` varchar(255) NOT NULL,
 `image` varchar(64) NOT NULL,
 `directory` varchar(32) NOT NULL,
 `filename` varchar(64) NOT NULL,
 `sort_order` int(3) NOT NULL DEFAULT '0',
 `status` tinyint(1) NOT NULL,
 PRIMARY KEY (`language_id`),
 KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

--
-- Dumping data for table `oc_language`
--

INSERT INTO `oc_language` (`language_id`, `name`, `code`, `locale`, `image`, `directory`, `filename`, `sort_order`, `status`) VALUES
(1, 'Russian', 'ru', 'ru_RU.UTF-8,ru_RU,russian', 'ru.png', 'russian', 'russian', 1, 1),
(2, 'English', 'en', 'en_US.UTF-8,en_US,en-gb,english', 'gb.png', 'english', 'english', 2, 1);

3. Можно совсем радикально. Перед проведением обновления вносим изменения в файл \upload\install\opencart.sql

тупо удаляем вот этот фрагмент из скрипта. Нам он по сути нафиг не нужен. В системе уже все есть!

--
-- Table structure for table `oc_language`
--

DROP TABLE IF EXISTS `oc_language`;
CREATE TABLE `oc_language` (
 `language_id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(32) NOT NULL,
 `code` varchar(5) NOT NULL,
 `locale` varchar(255) NOT NULL,
 `image` varchar(64) NOT NULL,
 `directory` varchar(32) NOT NULL,
 `filename` varchar(64) NOT NULL,
 `sort_order` int(3) NOT NULL DEFAULT '0',
 `status` tinyint(1) NOT NULL,
 PRIMARY KEY (`language_id`),
 KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

--
-- Dumping data for table `oc_language`
--

INSERT INTO `oc_language` (`language_id`, `name`, `code`, `locale`, `image`, `directory`, `filename`, `sort_order`, `status`) VALUES
(1, 'Russian', 'ru', 'ru_RU.UTF-8,ru_RU,russian', 'ru.png', 'russian', 'russian', 1, 1),
(2, 'English', 'en', 'en_US.UTF-8,en_US,en-gb,english', 'gb.png', 'english', 'english', 2, 1);

- после подобных шаманских действий Ctrl+F5 в браузере и вот вам счастье, ошибок нет, русский есть :)

если окажется полезным, можно внести в ФАК :)

Надіслати
Поділитися на інших сайтах


целый пост раздули из-за одного запроса

INSERT INTO `oc_language` (`language_id`, `name`, `code`, `locale`, `image`, `directory`, `filename`, `sort_order`, `status`) VALUES
(null, 'Russian', 'ru', 'ru_RU.UTF-8,ru_RU,russian', 'ru.png', 'russian', 'russian', 1, 1);

Надіслати
Поділитися на інших сайтах

проверил вывод скрипта

(1, 'English', 'en', 'en_US.UTF-8,en_US,en-gb,english', 'gb.png', 'english', 'english', 1, 1),
(2, 'Russian', 'ru', 'ru_RU.UTF-8,ru_RU,russian', 'ru.png', 'russian', 'russian', 1, 1);

мне, не нравится:

- порядок не тот - 2, 'Russian'

- 'english', 1, 1

- 'russian', 1, 1

может, я капризничаю, но мне не нравится

я рассматривал в том числе вариант с апдейтом, без лазания в базу данных.

Змінено користувачем Zeppelin
Надіслати
Поділитися на інших сайтах


  • 4 months later...

Господа, подскажите, как решить такую же проблему, но с EN:

Notice: Undefined index: en in ...docs/admin/index.php on line 124Notice: Undefined index: en in ...docs/admin/index.php on line 127Notice: Undefined index: en in ...docs/admin/index.php on line 128

Надіслати
Поділитися на інших сайтах


проверил вывод скрипта

 

(1, 'English', 'en', 'en_US.UTF-8,en_US,en-gb,english', 'gb.png', 'english', 'english', 1, 1),
(2, 'Russian', 'ru', 'ru_RU.UTF-8,ru_RU,russian', 'ru.png', 'russian', 'russian', 1, 1);
мне, не нравится:

- порядок не тот - 2, 'Russian'

- 'english', 1, 1

- 'russian', 1, 1

может, я капризничаю, но мне не нравится

я рассматривал в том числе вариант с апдейтом, без лазания в базу данных.

 

ну и что теперь таблицу дропать? если не нравится порядок его можно изменить UPDATE запросом, да и вообще id'шники это системная информация, нефиг на них смотреть.

Надіслати
Поділитися на інших сайтах

Ребят, ну подскажите, кто-то ж должен знать направление копания..

Вышеописанное решение мне не подходит, т.к. ошибка вылезла после установки шаблона и у меня нет папки install(

Похожая ошибка при загрузке страниц самого сайта - "Undefined index: USD"

Надіслати
Поділитися на інших сайтах


  • 3 years later...

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.