Magento Hiển thị nội địa hóa phù hợp dựa trên Vị trí


17

Tôi muốn định cấu hình trang web Magento để có thể nhận ra ngôn ngữ và vị trí mặc định của người dùng và hiển thị trang web bằng ngôn ngữ đó và với bản địa hóa phù hợp.

Ví dụ:

Một người dùng từ Nga với ngôn ngữ tiếng Nga là mặc định sẽ truy cập trực tiếp vào trang web Ngôn ngữ Nga với Rúp làm tiền tệ và giá mặc định.

Điều này có thể không? Nếu vậy thì thế nào?

Câu trả lời:


14

GeoIP và Store Views sẽ giúp bạn giải quyết vấn đề này.

GeoIP Bạn có thể sử dụng nhà cung cấp như MaxMind cho cơ sở dữ liệu GeoIP của mình (hoặc tải nó dưới dạng mô-đun máy chủ web thêm quốc gia trong tiêu đề).

Dựa trên địa chỉ IP, bạn có thể chuyển hướng khách hàng đến Chế độ xem cửa hàng thích hợp (kiểm tra liên kết được tạo bởi trình chuyển đổi chế độ xem cửa hàng.

Lượt xem cửa hàng

Tiếng Nga nên là một Cửa hàng xem. Kiểm tra trình chuyển đổi chế độ xem cửa hàng để xem liên kết bạn cần sử dụng cho khách hàng là gì.

Sau khi chuyển hướng, bạn có thể đặt cookie để liên kết khách hàng với chế độ xem cửa hàng.


Chúng tôi cũng đã sử dụng GeoIP để chuyển đổi một số khối trên trang web để thay đổi những thứ như tin nhắn Giao hàng miễn phí của chúng tôi
Adam Justice

1
3 điều cần chú ý về chủ đề này: (1) Nếu khách truy cập sử dụng proxy ở một quốc gia khác hoặc IP không khớp, anh ta có thể muốn tự chuyển sang một trang web khác. Làm cho điều đó có thể. (2) Phân biệt giữa bản địa hóa và dịch thuật. Ví dụ: sử dụng GeoIP để bản địa hóa và tiêu đề chấp nhận ngôn ngữ cho bản dịch (trang web tiếng Nga có tiếng Nga / tiếng Anh, Trang web Thụy Sĩ với ngôn ngữ Đức / Ý / Pháp). Xem câu trả lời dưới đây . (3) Nếu bạn có các mức giá khác nhau (hoặc một loại tiền cơ bản khác nhau) cho Nga, hãy tạo một trang web dành riêng cho nó.
Matthias Zeis

9

Có một tiện ích mở rộng Magento GeoIP (do tôi viết) tải xuống tệp dữ liệu MaxMind mới nhất và định kỳ cập nhật nó.

Tôi đề nghị móc vào controller_front_init_beforesự kiện. Bạn có thể sử dụng mã sau đây để kiểm tra lấy mã ISO 3166-1 của quốc gia của khách truy cập và sau đó chuyển hướng anh ta đến chế độ xem cửa hàng corespondent nếu bạn có:

$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.
 */

Bài viết chi tiết về việc sử dụng phần mở rộng này có thể được tìm thấy ở đây .


5

hãy xem http://www.thefutureoftheweb.com/blog/use-accept-lingu-header nếu bạn có thể lập trình. Bạn có thể thực hiện chuyển đổi trong việc index.phptải các kho lưu trữ phù hợp với ngôn ngữ.


Ngôn ngữ có, nhưng vấn đề không chỉ là ngôn ngữ mà còn là vị trí địa lý.
Karlson

Bạn có thể sử dụng API địa lý Maxmind hoặc bất kỳ dịch vụ địa lý miễn phí nào khác để thực hiện chuyển đổi. Tôi sử dụng maxmind vì độ chính xác cao của chúng ( maxmind.com/en/geolocation_landing )
Sander Mangel

Bạn muốn làm gì nếu người dùng hiện đang ở Nga, nhưng ngôn ngữ của anh ấy là en-US? Vị trí thường ít thông tin (và chính xác) hơn Ngôn ngữ chấp nhận.
kojiro

@kojiro Tôi muốn sử dụng ngôn ngữ chấp nhận http trước. bạn nói đúng, địa điểm nói rất ít về một số ngôn ngữ
Sander Mangel

1
Hãy cẩn thận, liên kết đơn độc được coi là một câu trả lời kém vì bản thân nó là vô nghĩa và tài nguyên mục tiêu không được đảm bảo để tồn tại trong tương lai . Tốt hơn là nên bao gồm các phần thiết yếu của câu trả lời ở đây, và cung cấp liên kết để tham khảo.
j0k

5

Một điều khác để xem xét là GEO IP.

Một vài dòng mã sẽ cung cấp cho bạn mã quốc gia của người dùng mà bạn có thể chuyển đổi dựa trên đó.

Nhưng lưu ý rằng bạn sẽ gặp vấn đề khi sử dụng bất kỳ mã dựa trên chuyển hướng nào nếu bạn đang sử dụng cùng một cửa hàng với Enterprise Edition và Full Page Cache khi lần truy cập trang đầu tiên được lưu vào bộ đệm .


Điểm tốt về bộ nhớ đệm. Bạn phải tìm ra cách Vary: Accept-Languagetrong tiêu đề cho cả trình duyệt và FPC.
kojiro

Muốn thêm một số chi tiết về ghi chú cuối cùng của bạn về FPC? Tôi đang tò mò, để nói rằng ít nhất.
nevvermind

Tôi gặp vấn đề với việc sử dụng mô-đun sử dụng IP GEO và chuyển hướng người dùng đến đúng cửa hàng dựa trên mã quốc gia. Điều này không thành công và sau khi gỡ lỗi, người quan sát không bao giờ được gọi khi trang được lưu vào bộ đệm bằng FPC, chỉ có một người quan sát được gọi, vì FPC lưu trữ toàn bộ tập lệnh không chạy mã magento.
Jamie Teuma

Tôi biết một nhà phát triển khác đang xây dựng một tập lệnh trong tệp index.php như một công việc xung quanh, nhưng không chắc liệu điều này có thành công hay không, vì vậy không thể nhận xét YET !!
Jamie Teuma

4

Một tùy chọn khác là sử dụng cấu hình auto_prepend của PHP . Điều này sẽ khiến tất cả các tập lệnh được xử lý bởi PHP chạy tập lệnh trước khi tập lệnh được yêu cầu thực tế chạy, nhưng sau .htaccess (nếu bạn đang sử dụng tập lệnh đó).

Cách tiếp cận này kết hợp với một số đề xuất khác (ví dụ: sử dụng MaxMind cho dữ liệu vị trí địa lý và chế độ xem cửa hàng cho các vùng cụ thể) có thể dẫn đến một cách tiếp cận khá rõ ràng.

Nếu bạn đang chạy phiên bản Magento> = 1.4, mã cửa hàng mặc định có thể được định cấu hình bằng cách đặt giá trị $ _SERVER ['MAGE_RUN_CODE'].

Trong tệp .htaccess hoặc cấu hình của apache, hãy thêm vào như sau:

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

Trong script.phpthực hiện của bạn bất kỳ logic kinh doanh cần thiết và đặt mã cửa hàng thích hợp:

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

Một điều cần lưu ý là điều này sẽ áp dụng cho tất cả các tệp PHP được yêu cầu, vì vậy bạn sẽ cần ghi nhớ điều đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.