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

Recommended Posts

Добрый день
Есть необходимость для Украины автоматом показывать языковую версию сайта в зависимости от города (области), без подтверждений со стороны пользователя. Тоесть, если человек заходит из Киева на сайт, ему сразу показывается русская версия сайта (даже если из поиска он заходит по url на украинском), а если из Львова - на украинском.
Определение местоположения пользователя - на основании IP или языка браузера (не принципиально)

Например, пользователь в Киеве осуществляет переход на по url - https://site.ua/, а его перекидывает на https://site.ua/ru. В то же время пользователь может переключить язык вручную и пользоваться украинской версией сайта.

Скажите, есть какое-то готовое решение в виде модуля? Модуль Geo IP из коробки такого делать, как оказалось, не умеет (по словам автора модуля)

 

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


Версия опенкарта какая у вас? Готовых решений думаю нету. Могу рализовать. Пишите в личку. Сам с Киева.

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

6 минут назад, Serg9988 сказал:

Версия опенкарта какая у вас? Готовых решений думаю нету. Могу рализовать. Пишите в личку. Сам с Киева.

ocStore 2.3.0.2.3
Спасибо, пока ищу что-то готовое или с минимальным "допилом" существующего модуля. 

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


1 час назад, LionHunter сказал:


Определение местоположения пользователя - на основании IP или языка браузера (не принципиально)
 

 

определение языка на основании языка браузера есть в Opencart 2

 

в файле catalog/controller/startup/startup.php  этот код отвечает за определение языка. если язык браузера иной, чем дефолтный, и он есть в языках магазина, то сайт откроется именно на языке браузера

// Language Detection
		if (!empty($this->request->server['HTTP_ACCEPT_LANGUAGE']) && !array_key_exists($code, $languages)) {
			$detect = '';
			
			$browser_languages = explode(',', $this->request->server['HTTP_ACCEPT_LANGUAGE']);
			
			// Try using local to detect the language
			foreach ($browser_languages as $browser_language) {
				foreach ($languages as $key => $value) {
					if ($value['status']) {
						$locale = explode(',', $value['locale']);
						
						if (in_array($browser_language, $locale)) {
							$detect = $key;
							break 2;
						}
					}
				}	
			}			
			
			if (!$detect) { 
				// Try using language folder to detect the language
				foreach ($browser_languages as $browser_language) {
					if (array_key_exists(strtolower($browser_language), $languages)) {
						$detect = strtolower($browser_language);
						
						break;
					}
				}
			}
			
			$code = $detect ? $detect : '';
		}

вот тут обсуждалось https://opencartforum.com/topic/78152-yazyk-po-umolchaniyu-opencart-2302

 

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

2 минуты назад, Xelen сказал:

 

определение языка на основании браузера есть в Opencart 2

 

в файле catalog/controller/startup/startup.php  этот код отвечает за определение языка. если язык браузера иной, чем дефолтный, и он есть в языках магазина, то сайт откроется именно на языке браузера

 

Только это ошибка opencart
Другие языки в opencart 1.5.x и 2.x не индексируются ПС
Решает этот вопрос

 

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

8 часов назад, Xelen сказал:

 

определение языка на основании языка браузера есть в Opencart 2

 

в файле catalog/controller/startup/startup.php  этот код отвечает за определение языка. если язык браузера иной, чем дефолтный, и он есть в языках магазина, то сайт откроется именно на языке браузера


// Language Detection
		if (!empty($this->request->server['HTTP_ACCEPT_LANGUAGE']) && !array_key_exists($code, $languages)) {
			$detect = '';
			
			$browser_languages = explode(',', $this->request->server['HTTP_ACCEPT_LANGUAGE']);
			
			// Try using local to detect the language
			foreach ($browser_languages as $browser_language) {
				foreach ($languages as $key => $value) {
					if ($value['status']) {
						$locale = explode(',', $value['locale']);
						
						if (in_array($browser_language, $locale)) {
							$detect = $key;
							break 2;
						}
					}
				}	
			}			
			
			if (!$detect) { 
				// Try using language folder to detect the language
				foreach ($browser_languages as $browser_language) {
					if (array_key_exists(strtolower($browser_language), $languages)) {
						$detect = strtolower($browser_language);
						
						break;
					}
				}
			}
			
			$code = $detect ? $detect : '';
		}

вот тут обсуждалось https://opencartforum.com/topic/78152-yazyk-po-umolchaniyu-opencart-2302

 

Спасибо. Но это работает только если индексируется 1 язык. А если установлен модуль @markimax и индексируются все языки - нет

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


13 минут назад, LionHunter сказал:

Спасибо. Но это работает только если индексируется 1 язык. А если установлен модуль @markimax и индексируются все языки - нет

Ну "правильно"

Определение языка браузера в opencart - это ошибка
Переключателем должен быть префикс в URL

Ситуация, к примеру

У бота ПС "язык браузера" english и тогда при такой самодеятельности этой ошибки opencart - ПС никогда не увидит другие языки и не проиндексирует.

Вторая ситуация
Человек ищет что то на украинском а браузер у него на русском
Он идет по ссылке с ПС с украинским префиксом, а попадает на русскую страницу (к тому же попадет на главную в таком случае). Т е  не то что искал
Это самодеятельность в чистом виде
Поэтому это ошибка
А SEO мультиязык 2 как раз её (и другие связанные с языком) исправляет
 

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

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

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

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

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

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

Вхід

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

Вхід зараз

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

Important Information

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