Jump to content
Sign in to follow this  
stebgo

Отключить автоматический выбор языка

Recommended Posts

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

У меня следующая проблема - на сайте установлены три языка, и сделано три магазина стандартным способом. в каждом магазине установлен свой язык по умолчанию. Только сейчас обнаружил что ocStore 1.5.4.1  выдает в любом из трех магазинов не по умолчанию, а в зависимости от кода страны откуда пришел покупатель, языка браузера или еще как то .

 

Вот собственно хотелось бы убрать эту его функцию + убрать запоминание выбора языка(при переходе между магазинами).

 

в место переключения языка сделаю потом ссылки на другие магазины.

Share this post


Link to post
Share on other sites

удалил

<?php echo $currency; ?>

вроде получше стало, но все равно автоматом определяет язык.

 

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

Share this post


Link to post
Share on other sites

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

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

/catalog/model/localisation/language.php - вывод всех языков но это не то.

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

Share this post


Link to post
Share on other sites

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

С этим проблем вообще не должно быть. 

У страницы должен быть свой адрес на каждом из языков.

Например: article.html, article-ru.html, article-kh.html - тогда поисковик отлично проиндексирует все языки

Share this post


Link to post
Share on other sites

вот нашел кусок кода в index.php

// Language Detection
$languages = array();

$query = $db->query("SELECT * FROM " . DB_PREFIX . "language WHERE status = '1'"); 

foreach ($query->rows as $result) {
	$languages[$result['code']] = $result;
}

$detect = '';



if (isset($request->server['HTTP_ACCEPT_LANGUAGE']) && ($request->server['HTTP_ACCEPT_LANGUAGE'])) { 
	$browser_languages = explode(',', $request->server['HTTP_ACCEPT_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;
				}
			}
		}
	}
}



if (isset($session->data['language']) && array_key_exists($session->data['language'], $languages) && $languages[$session->data['language']]['status']) {
	$code = $session->data['language'];
} elseif (isset($request->cookie['language']) && array_key_exists($request->cookie['language'], $languages) && $languages[$request->cookie['language']]['status']) {
	$code = $request->cookie['language'];
} elseif ($detect) {
	$code = $detect;
} else {
	$code = $config->get('config_language');
}

if (!isset($session->data['language']) || $session->data['language'] != $code) {
	$session->data['language'] = $code;
}

if (!isset($request->cookie['language']) || $request->cookie['language'] != $code) {	  
	setcookie('language', $code, time() + 60 * 60 * 24 * 30, '/', $request->server['HTTP_HOST']);
}			

$config->set('config_language_id', $languages[$code]['language_id']);
$config->set('config_language', $languages[$code]['code']);



// Language	
$language = new Language($languages[$code]['directory']);
$language->load($languages[$code]['filename']);	
$registry->set('language', $language); 

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

 

 

ЗЫ

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

Share this post


Link to post
Share on other sites

вроде работает

 

оставил только

// Language Detection


$languages = array();

$query = $db->query("SELECT * FROM " . DB_PREFIX . "language WHERE status = '1'"); 

foreach ($query->rows as $result) {
	$languages[$result['code']] = $result;
}

$code = $config->get('config_language');

$config->set('config_language_id', $languages[$code]['language_id']);
$config->set('config_language', $languages[$code]['code']);

// Language

$language = new Language($languages[$code]['directory']);
$language->load($languages[$code]['filename']);	
$registry->set('language', $language); 

Посмотрите, может это как то плохо я сделал :)

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.