Magento, отображающий соответствующую локализацию в зависимости от местоположения


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

Например:

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

Возможно ли это? Если да, то как?

Author: temper, 2013-01-22

5 answers

Просмотры GeoIP и хранилища помогут вам решить эту проблему.

ГЕОИП Вы можете использовать поставщика, такого как MaxMind для вашей базы данных GeoIP (или загрузить ее в качестве модуля веб-сервера, который добавляет страну в заголовок).

На основе IP-адреса вы можете перенаправить клиента в соответствующий вид магазина (проверьте ссылку, созданную переключателем просмотра магазина.

Просмотры в магазине

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

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

 14
Author: FlorinelChis, 2013-01-22 22:05:42

Существует расширение GeoIP Magento (написанное мной), которое загружает последний файл данных MaxMind и периодически обновляет его.

Я предлагаю подключиться к событию controller_front_init_before. Вы можете использовать следующий код для проверки получения кода ISO 3166-1 страны посетителя, а затем перенаправить его на просмотр магазина с ответчиком, если он у вас есть:

$geoIP = Mage::getSingleton('geoip/country');
$code = $geoIP->getCountry();

/*
 * Check if store view for this country/language exists and it is not a current store view. 
 * If so do a redirect.
 * You can also take a language from user agent into consideration.
 */

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

 9
Author: user487772, 2013-01-22 23:30:35

Взгляните на http://www.thefutureoftheweb.com/blog/use-accept-language-header если вы умеете программировать. Вы можете переключиться в index.php, загрузив представление хранилища, соответствующее языку.

 5
Author: Sander Mangel, 2016-03-24 15:00:24

Еще одна вещь, на которую стоит обратить внимание, - это ГЕОГРАФИЧЕСКИЙ IP.

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

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

 5
Author: Jamie Teuma, 2016-03-24 15:00:51

Другой вариант - использовать конфигурацию PHP auto_prepend. Это приведет к тому, что все сценарии, обрабатываемые PHP, будут запускать скрипт до фактического запуска запрошенного сценария, но после .htaccess (если вы используете это).

Этот подход в сочетании с некоторыми другими предложениями (например, использование MaxMind для данных о географическом местоположении и представлений хранилища для конкретных регионов) может привести к довольно чистому подходу.

Если вы используете версию Magento>=1.4, код хранилища по умолчанию можно настроить, установив значение $_SERVER['MAGE_RUN_CODE'].

Либо в файле .htaccess, либо в конфигурации apache добавьте следующее:

php_value auto_prepend_file /var/www/mystore/path/to/script.php

В вашем script.php выполните любую необходимую бизнес-логику и установите соответствующий код магазина:

<?php
if (get_ip_location($_SERVER['REMOTE_ADDR']) == 'uk') {
    $_SERVER['MAGE_RUN_CODE'] = 'store_code_uk';
} else {
    $_SERVER['MAGE_RUN_CODE'] = 'store_code_us';
}

Следует отметить, что это будет применяться для всех запрошенных PHP-файлов, поэтому вам нужно иметь это в виду.

 4
Author: beeplogic, 2013-01-23 07:38:37