Jump to content
Sign in to follow this  
Zeppelin

Совет. Как избежать ошибки "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 в браузере и вот вам счастье, ошибок нет, русский есть :)

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

Share this post


Link to post
Share on other sites

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

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);

Share this post


Link to post
Share on other sites

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

(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

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

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

Edited by Zeppelin

Share this post


Link to post
Share on other sites

Господа, подскажите, как решить такую же проблему, но с 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

Share this post


Link to post
Share on other sites

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

 

(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'шники это системная информация, нефиг на них смотреть.

Share this post


Link to post
Share on other sites

Подскажите как быть в моём случае? (см. выше) Ошибка вылезла в админке после установки шаблона.

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.