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

Recommended Posts

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

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

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

 

Link to comment
Share on other sites


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

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites


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

 

Link to comment
Share on other sites

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

 

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

 

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

 

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

 

Link to comment
Share on other sites

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 и индексируются все языки - нет

Link to comment
Share on other sites


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

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

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

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

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

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

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

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.