Zeppelin

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

Рекомендуемые сообщения

Zeppelin    82

[Преамбула]

Думаю ни для кого не секрет, что второй язык (английский) в магазине, это зло. И связано это с тем, что при добавлении товара, приходится заполнять обязательные поля для Английского языка. Поэтому все удаляют английский язык и наступают на грабли при обновлении ОРИГИНАЛЬНОЙ версии 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 в браузере и вот вам счастье, ошибок нет, русский есть :)

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
freelancer    1 418

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Zeppelin    82

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

(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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ipooo    1

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
freelancer    1 418

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ipooo    1

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ipooo    1

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу