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

Сообщения из админки на разных языках


stebgo

Recommended Posts

Здравствуйте.

Пользуюсь OcStore 2.1.0.2 

В магазине установлено три языка, (причем, русский язык используется только для удобства пользования админкой.)

Все фалы локализации переведены.

 

Столкнулся со следующей проблемой.

При заказе, регистрации и любых других письмах которые отправляются автоматически при определенных действиях пользователя полностью на языке пользователя.

При отправке писем из админки (изменение статуса заказа, начисление бонусных баллов ) письма отправляются на языке администратора, а не на языке пользователя.

 

Как можно решить эту проблему?

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


язык стал записываться в настройки пользователя с версии 2.3
посмотрите как реализовано это в ней или вам в раздел платных услуг

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


хотя странно.
я посмотрел обе версии движка. И там, и там язык покупателя сохраняется в заказ
Каким образом у вас создается заказ? Через админку, сторонним модулем или стандартный заказ?

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


заказ и регистрация проходит через модуль  simple checkout

 

Спасибо за наводку!

 

только что проверил, в базе поле языка есть, но везде значение 0, 

попробовал у тестового пользователя сменить id языка в базе и письма стали приходить на нужном языке.

 

Я так понимаю что мне теперь модуль simple checkout ковырять надо....

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


по заказам пишите автору. Но не исключено, что не сохраняется по причине каких-либо доработок/правок

 

В письмах с начислением бонусов нет проверки языка
посмотреть можно тут, метод addReward
admin\model\customer\customer.php

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


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

написал 

Quote

Подставляет сам опенкарт в

 

/catalog/model/account/customer.php

 

language_id = '" . (int)$this->config->get('config_language_id')

 

в этом файле у меня нет ни одного намека на запись в бд language_id

 

пробовал в этот код  

$this->db->query("INSERT INTO " . DB_PREFIX . "customer SET customer_group_id = '" . (int)$customer_group_id . "', store_id = '" . (int)$this->config->get('config_store_id') . "', firstname = '" . $this->db->escape($data['firstname']) . "', lastname = '" . $this->db->escape($data['lastname']) . "', email = '" . $this->db->escape($data['email']) . "', telephone = '" . $this->db->escape($data['telephone']) . "', fax = '" . $this->db->escape($data['fax']) . "', custom_field = '" . $this->db->escape(isset($data['custom_field']['account']) ? json_encode($data['custom_field']['account']) : '') . "', salt = '" . $this->db->escape($salt = token(9)) . "', password = '" . $this->db->escape(sha1($salt . sha1($salt . sha1($data['password'])))) . "', newsletter = '" . (isset($data['newsletter']) ? (int)$data['newsletter'] : 0) . "', ip = '" . $this->db->escape($this->request->server['REMOTE_ADDR']) . "', status = '1', approved = '" . (int)!$customer_group_info['approval'] . "', date_added = NOW()");

добавить это

language_id = '" . (int)$this->config->get('config_language_id'). "'

что бы получилось 

$this->db->query("INSERT INTO " . DB_PREFIX . "customer SET customer_group_id = '" . (int)$customer_group_id . "', store_id = '" . (int)$this->config->get('config_store_id') . "', language_id = '" . (int)$this->config->get('config_language_id'). "', firstname = '" . $this->db->escape($data['firstname']) . "', lastname = '" . $this->db->escape($data['lastname']) . "', email = '" . $this->db->escape($data['email']) . "', telephone = '" . $this->db->escape($data['telephone']) . "', fax = '" . $this->db->escape($data['fax']) . "', custom_field = '" . $this->db->escape(isset($data['custom_field']['account']) ? json_encode($data['custom_field']['account']) : '') . "', salt = '" . $this->db->escape($salt = token(9)) . "', password = '" . $this->db->escape(sha1($salt . sha1($salt . sha1($data['password'])))) . "', newsletter = '" . (isset($data['newsletter']) ? (int)$data['newsletter'] : 0) . "', ip = '" . $this->db->escape($this->request->server['REMOTE_ADDR']) . "', status = '1', approved = '" . (int)!$customer_group_info['approval'] . "', date_added = NOW()");

 

несколько раз пробовал, то ошибка 500 то регистрировать не хочет, но в итоге когда писал пост, решил проверить в последний раз и 

все заработало

 

Для баллов я использую как стандартное так и стороннее дополнение. Стандартное приложение стало отправлять вместо русского на английском, и это хорошо. 

Стороннее дополнение начало вести себя адекватно и посылать письма на нужном языке . 

 

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


43 минуты назад, stebgo сказал:

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

вопрос про заказы. Язык для заказов хранится в таблице oc_order
Вы же в ней смотрели, что language_id равен 0?
 

 

46 минут назад, stebgo сказал:

все заработало

интересно... в вашей версии у таблицы oc_customer вообще нет поля language_id и 500 ответ сервера об этом говорит

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


нет, меня больше регистрация интересовала, смотрел в таблицу oc_customer 

Посмотрел в oc_order - там все правильно записывало. 

 

500 ответ наверное был от того что я правку в код неправильную внес. так как до правок я таблицу проверял и там это поле уже было. 

В общем не знаю как но оно работает,и это меня радует. 

 

Есть только одна проблема - при печати инвойса заголовки и названия столбцов на языке администратора. Это можно как то вылечить? может модуль какой есть 

Хотел сделать несколько кнопок печати(сколько сколько языков столько и кнопок ) поковырял контроллер, но знаний маловато.

может можно малыми усилиями сделать что бы инвойс использовал язык заказа?

 

 

 

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


20 минут назад, stebgo сказал:

Есть только одна проблема - при печати инвойса заголовки и названия столбцов на языке администратора

можно в методе invoice admin\controller\sale\order.php добавить проверку языка заказа
по аналогии как это сделано при добавлении истории заказа метод addOrderHistory catalog\model\checkout\order.php

Только все языковые переменные поместить в цикл, чтобы для каждого заказа подгружался свой язык. Т.е. после строки
 

if ($order_info) {

 

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


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

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

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

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

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

Вхід

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

Вхід зараз

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

Important Information

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