Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

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


stebgo
 Share

Recommended Posts

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

Пользуюсь OcStore 2.1.0.2 

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

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

 

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

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

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

 

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

Link to comment
Share on other sites


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

Edited by thentru
Link to comment
Share on other sites


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

  • +1 1
Link to comment
Share on other sites


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

 

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

 

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

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

 

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

Edited by stebgo
Link to comment
Share on other sites


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

 

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

Link to comment
Share on other sites


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

написал 

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 то регистрировать не хочет, но в итоге когда писал пост, решил проверить в последний раз и 

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

 

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

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

 

Link to comment
Share on other sites


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

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

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

 

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

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

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

Link to comment
Share on other sites


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

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

 

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

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

 

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

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

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

 

 

 

Edited by stebgo
Link to comment
Share on other sites


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

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

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

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

if ($order_info) {

 

Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

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.