Magento Відображення відповідної локалізації на основі розташування


17

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

Наприклад:

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

Чи можливо це? Якщо так, як?

Відповіді:


14

GeoIP і Перегляд магазинів допоможуть вирішити цю проблему.

GeoIP Ви можете використовувати провайдера на зразок MaxMind для вашої бази даних GeoIP (або завантажити його як модуль веб-сервера, який додає країну до заголовка).

На підставі IP-адреси ви можете перенаправити клієнта до належного перегляду магазину (перевірте посилання, створене перемикачем перегляду магазину.

Зберігати перегляди

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

Після перенаправлення ви можете встановити файл cookie для асоціації клієнта з представленням магазину.


Ми також використовували GeoIP для переключення декількох блоків на сайті, щоб змінити такі речі, як наше повідомлення про безкоштовну доставку
Адам Юстин

1
На цю тему слід звернути увагу на 3 речі: (1) Якщо відвідувач використовує проксі в іншій країні або IP-адреса не відповідає, він може захотіти сам перейти на інший веб-сайт. Зробити це можливо. (2) Розрізняти локалізацію та переклад. Наприклад, використовуйте GeoIP для локалізації та заголовків прийому мови для перекладів (російський веб-сайт з російською / англійською мовою, веб-сайт Швейцарії з німецькою / італійською / французькою мовою). Дивіться відповідь нижче . (3) Якщо у вас різні ціни (або інша базова валюта) для Росії, створіть для неї спеціальний веб-сайт.
Маттіас Зейс

9

Існує розширення Magento GeoIP (написане мною), яке завантажує останній файл даних 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.
 */

Детальну статтю про використання цього розширення можна знайти тут .


5

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


Мова так, але питання полягає не лише в мові, а й в географічному розташуванні.
Карлсон

Ви можете використовувати API Maxmind geo або будь-який інший безкоштовний гео-сервіс для переключення. Я використовую maxmind через їх високу точність ( maxmind.com/en/geolocation_landing )
Sander Mangel

Що ви хочете зробити, якщо користувач наразі перебуває в Росії, але його мова є англо-американською? Місце розташування часто менш інформативне (і точне), ніж мова прийняття.
kojiro

@kojiro Я б спершу пішов на мову прийняття http. Ви маєте рацію, місце розташування мало говорить про деякі мови
Sander Mangel

1
Будьте уважні, самотня посилання вважається поганою відповіддю, оскільки вона сама по собі безглузда, і цільовий ресурс не гарантовано буде живим у майбутньому . Тут було б краще включити істотні частини відповіді та надати посилання для довідки.
j0k

5

Ще одна річ, на яку слід звернути увагу - GEO IP.

Пару рядків коду надасть вам код країни-користувача, який ви можете перемикати на основі цього.

Але зауважте, що у вас виникнуть проблеми з використанням будь-якого коду на основі перенаправлення, якщо ви використовуєте той самий магазин із Enterprise Edition та кеш повним сторінками, як кешування першої сторінки .


Хороший момент щодо кешування. Вам доведеться розібратися, як Vary: Accept-Languageв заголовку і для браузера, і для FPC.
kojiro

Хочете додати детальну інформацію про останню примітку щодо FPC? Мене, найменше, заінтригувало.
nevvermind

У мене виникла проблема з використанням модуля, який використовує GEO IP і перенаправляє користувача до правильного магазину на основі коду країни. Це не вдалося, і після налагодження спостерігача ніколи не викликали, коли сторінку кешували за допомогою FPC, після факту викликався лише один спостерігач, як FPC кешував повний скрипт без коду magento.
Джеймі Теума

Я знаю, що інший розробник будував сценарій у index.php як обробку, але не впевнений, успішно це чи ні, тому не можу коментувати все-таки !!
Джеймі Теума

4

Іншим варіантом є використання конфігурації автоматичної подачі PHP . Це змусить всі скрипти , оброблювані 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-файлів, тому вам потрібно мати це на увазі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.