Jump to content
Sign in to follow this  
dvigok

Как добавить перевод стран и городов в форме заказа

Recommended Posts

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

Установил три локализации Рус, Испанский, Английский (скачал этот архив и с него взял папку - language с нужными языками - база была с русского opencart) (http://www.opencart...._download_id=23)

- все переводится кроме стран и городов при заказе товара. Что нужно изменить (в каком файле) или что добавить.

Сайт: http://worldmapmarin...ap-of-logistics

Версия Op[enCart 1.5.1.3

Share this post


Link to post
Share on other sites

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

ну а делать что, перевести названия городов

(195, 'Испания', 'ES', 'ESP', '', 0, 1),

вот для записей с признаком 195, переводишь все города, на префикс городов внимания не обращай.

(2971, 195, 'AL', 'Álava', 1),
(2972, 195, 'AB', 'Albacete', 1),
(2973, 195, 'AC', 'Alicante', 1),
(2974, 195, 'AM', 'Almeria', 1),
(2975, 195, 'AS', 'Asturias', 1),
(2976, 195, 'AV', 'Ávila', 1),
(2977, 195, 'BJ', 'Badajoz', 1),
(2978, 195, 'IB', 'Baleares', 1),
(2979, 195, 'BA', 'Barcelona', 1),
(2980, 195, 'BU', 'Burgos', 1),
(2981, 195, 'CC', 'Cáceres', 1),
(2982, 195, 'CZ', 'Cádiz', 1),
(2983, 195, 'CT', 'Cantabria', 1),
(2984, 195, 'CL', 'Castellón', 1),
(2985, 195, 'CE', 'Ceuta', 1),
(2986, 195, 'CR', 'Ciudad Real', 1),
(2987, 195, 'CD', 'Córdoba', 1),
(2988, 195, 'CU', 'Cuenca', 1),
(2989, 195, 'GI', 'Girona', 1),
(2990, 195, 'GD', 'Granada', 1),
(2991, 195, 'GJ', 'Guadalajara', 1),
(2992, 195, 'GP', 'Guipúzcoa', 1),
(2993, 195, 'HL', 'Huelva', 1),
(2994, 195, 'HS', 'Huesca', 1),
(2995, 195, 'JN', 'Jaén', 1),
(2996, 195, 'RJ', 'La Rioja', 1),
(2997, 195, 'PM', 'Las Palmas', 1),
(2998, 195, 'LE', 'Leon', 1),
(2999, 195, 'LL', 'Lleida', 1),
(3000, 195, 'LG', 'Lugo', 1),
(3001, 195, 'MD', 'Madrid', 1),
(3002, 195, 'MA', 'Malaga', 1),
(3003, 195, 'ML', 'Melilla', 1),
(3004, 195, 'MU', 'Murcia', 1),
(3005, 195, 'NV', 'Navarra', 1),
(3006, 195, 'OU', 'Ourense', 1),
(3007, 195, 'PL', 'Palencia', 1),
(3008, 195, 'PO', 'Pontevedra', 1),
(3009, 195, 'SL', 'Salamanca', 1),
(3010, 195, 'SC', 'Santa Cruz de Tenerife', 1),
(3011, 195, 'SG', 'Segovia', 1),
(3012, 195, 'SV', 'Sevilla', 1),
(3013, 195, 'SO', 'Soria', 1),
(3014, 195, 'TA', 'Tarragona', 1),
(3015, 195, 'TE', 'Teruel', 1),
(3016, 195, 'TO', 'Toledo', 1),
(3017, 195, 'VC', 'Valencia', 1),
(3018, 195, 'VD', 'Valladolid', 1),
(3019, 195, 'VZ', 'Vizcaya', 1),
(3020, 195, 'ZM', 'Zamora', 1),
(3021, 195, 'ZR', 'Zaragoza', 1),
  • +1 1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

список есть, по всем странам, парсера не видел

http://www.tury.ru/resort/list.php?cn=22

 

а вот тут есть базы, посмотри

https://github.com/x88/i18nGeoNamesDB

Edited by Zeppelin
  • +1 1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Вместе с этим форумом я выдавил вот такое решение

  • Для каждого языка добавил таблички country и zone с нужным переводом в базу данных
  • Подкорректировал запрос к БД в файликах \model\localisation\country.php, zone.php 
    SELECT * FROM " . DB_PREFIX . "country_" . $this->session->data['language'] . " WHERE status = '1' ORDER BY name ASC"
    

Только пришлось убрать проверку на наличие списка в кеше.

public function getZonesByCountryId($country_id) {
/* 		$zone_data = $this->cache->get('zone.' . (int)$country_id);
		if (!$zone_data) { */
			$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone_" . $this->session->data['language'] . " WHERE country_id = '" . (int)$country_id . "' AND status = '1' ORDER BY name");
			$zone_data = $query->rows;
			$this->cache->set('zone.' . (int)$country_id, $zone_data);
/* 		} */
		return $zone_data;

Share this post


Link to post
Share on other sites

 

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

Вместе с этим форумом я выдавил вот такое решение

  • Для каждого языка добавил таблички country и zone с нужным переводом в базу данных
  • Подкорректировал запрос к БД в файликах \model\localisation\country.php, zone.php 
    SELECT * FROM " . DB_PREFIX . "country_" . $this->session->data['language'] . " WHERE status = '1' ORDER BY name ASC"
    

Только пришлось убрать проверку на наличие списка в кеше.

public function getZonesByCountryId($country_id) {
/* 		$zone_data = $this->cache->get('zone.' . (int)$country_id);
		if (!$zone_data) { */
			$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone_" . $this->session->data['language'] . " WHERE country_id = '" . (int)$country_id . "' AND status = '1' ORDER BY name");
			$zone_data = $query->rows;
			$this->cache->set('zone.' . (int)$country_id, $zone_data);
/* 		} */
		return $zone_data;

а вы не могли бы более подробно расписать шаги, очень надо ! все сделал а вот этот пункт портит все  :( помогите пожалуйста

Share this post


Link to post
Share on other sites

а вы не могли бы более подробно расписать шаги, очень надо ! все сделал а вот этот пункт портит все  :( помогите пожалуйста

А что конкретно Вам не ясно?

Таблицы со странами и регионами брал с разных локализаций Опенкарта. Назвал country_ru, country_en, zone_ru, zone_en.

Найдите в файлах \model\localisation\country.php и zone.php  строку 

SELECT * FROM " . DB_PREFIX . "country"  WHERE status = '1' ORDER BY name ASC"

 и замените на 

SELECT * FROM " . DB_PREFIX . "country_" . $this->session->data['language'] . " WHERE status = '1' ORDER BY name ASC"

во втором файле, вместо country - zone

$this->session->data['language'] эта переменная хранит код используемого языка. То есть теперь данные будут браться из таблички country_ru или country_en в зависимости от выбранного языка 

Или Вам объяснить как работать в phpmyadmin? Простите, но я не понял что Вы не поняли)

Share this post


Link to post
Share on other sites

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

Установил три локализации Рус, Испанский, Английский (скачал этот архив и с него взял папку - language с нужными языками - база была с русского opencart) (http://www.opencart...._download_id=23)

- все переводится кроме стран и городов при заказе товара. Что нужно изменить (в каком файле) или что добавить.

Сайт: http://worldmapmarin...ap-of-logistics

Версия Op[enCart 1.5.1.3

 

новое решение Countries & Zones PRO (Страны и Зоны PRO) 3.14

Share this post


Link to post
Share on other sites

А что конкретно Вам не ясно?

Таблицы со странами и регионами брал с разных локализаций Опенкарта. Назвал country_ru, country_en, zone_ru, zone_en.

Найдите в файлах \model\localisation\country.php и zone.php  строку 

SELECT * FROM " . DB_PREFIX . "country"  WHERE status = '1' ORDER BY name ASC"

 и замените на 

SELECT * FROM " . DB_PREFIX . "country_" . $this->session->data['language'] . " WHERE status = '1' ORDER BY name ASC"

во втором файле, вместо country - zone

$this->session->data['language'] эта переменная хранит код используемого языка. То есть теперь данные будут браться из таблички country_ru или country_en в зависимости от выбранного языка 

Или Вам объяснить как работать в phpmyadmin? Простите, но я не понял что Вы не поняли)

 

Сделал все по Вашему описанию, но вылезло 2 косяка:

1) При создании отдельных таблиц в БД для разных языков все равно на странице оформления заказа выдает ошибку, что не может найти в данной бд таблицу с предыдущем именем (оригинальную таблицу), не могу понять откуда еще не нее ссылается opencart.

2) При выборе любой страны регионы стали подгружаться в полном объеме, все что есть.

Подскажите в чем может быть дело?

Share this post


Link to post
Share on other sites

Если еще актуально... Был оффлайн)

Прикрепил два изменённых файлика и четыре таблицы в формате sql. Если в вашей БД есть таблице с такими именами, удалите их, потом импортируйте мои.

Сделайте копии своих файлов и БД сначала

 

Все изменения делаете на свой страх и риск.

zone.php

country.php

4_tables_in_db.zip

Share this post


Link to post
Share on other sites

Господа, некоторые базы регионов и городов являются некачественными, так как их досконально не анализировали на ошибки и не корректировали. Те, что выложены в этой и смежной теме тоже такие или исправлены?

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

ee85a8add2266c485bcfc196a227f19d.jpg

Список районов на самом деле

Share this post


Link to post
Share on other sites

Думаю, для таких ситуаций возможен вариант, когда снизу или сверху выпадающего списка регионов есть дополнительное поле с надписью сверху него: "Если вашей области (региона) нету в выпадающем списке, введите
название здесь:".
Если пытаться добавлять недостающие области вручную, то думаю, что всё равно нужен такой вариант, потому что сложно может быть разобраться, какое территориальное деление существует в настоящее время и какие правильные названия.

Share this post


Link to post
Share on other sites

Opencart 1.5.6.4  

 

1. Скачиваем архив,

2. разархивируем.

3. Увидим  store (4).sql

4. Идем в свою базу данных - делаем её бекап

5. Удаляем Ваши английские  oc_coutry, oc_zone таблицы из базы данных

6. Заливаем эти

Радуемся потому что у нас все на русском.

 

store (4).zip

 

Удачи всем.  Я так долго мучался и решение нашлось

Edited by ERserver
  • +1 1

Share this post


Link to post
Share on other sites

Opencart 1.5.6.4  

 

1. Скачиваем архив,

2. разархивируем.

3. Увидим  store (4).sql

4. Идем в свою базу данных - делаем её бекап

5. Удаляем Ваши английские  oc_coutry, oc_zone таблицы из базы данных

6. Заливаем эти

Радуемся потому что у нас все на русском.

 

attachicon.gifstore (4).zip

 

Удачи всем.  Я так долго мучался и решение нашлось

 

матюкается на ошибки, но основной костяк СНГ-стран перевелся полностью. Большое спасибо! 

 

НО! Крым и его города по-прежнему приписываются к Украине. 

Share this post


Link to post
Share on other sites

матюкается на ошибки, но основной костяк СНГ-стран перевелся полностью. Большое спасибо! 

 

НО! Крым и его города по-прежнему приписываются к Украине. 

 

У меня ошибок не было - странно

Брал перевод с чистого opencart 1.5.6.4

Share this post


Link to post
Share on other sites

есть у кого-нибудь база германии и зоны? очень надо

Edited by rodigy

Share this post


Link to post
Share on other sites

Крым и его города по-прежнему приписываются к Украине.

Все верно.
  • +1 2

Share this post


Link to post
Share on other sites

Если еще актуально... Был оффлайн)

Прикрепил два изменённых файлика и четыре таблицы в формате sql. Если в вашей БД есть таблице с такими именами, удалите их, потом импортируйте мои.

Сделайте копии своих файлов и БД сначала

 

Все изменения делаете на свой страх и риск.

У меня ваша ру база импортировалась с ? вместо символов, как правильно ее импортировать, какой кодировкой?

 

p.s.решил проблему другим способом : просто скопировал старую country и zone в country_ru и zone_ru

Edited by rodigy

Share this post


Link to post
Share on other sites

А есть у кого-нибудь страны и зоны на украинском языке? 

Или же, может кто-то знает, как из exel сделать импорт в таблицу mysql? 

Share this post


Link to post
Share on other sites

Если на новом магазине - то проблема решается редактированием файла установщика. 

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.