Magento 위치에 따라 적절한 현지화 표시


17

사용자의 기본 언어 및 위치를 인식하고 해당 언어로 사이트를 표시하고 현지화 할 수 있도록 Magento 사이트를 구성하고 싶습니다.

예를 들면 다음과 같습니다.

러시아어를 기본으로 사용하는 러시아 사용자는 루블을 기본 통화 및 가격으로 사용하여 러시아어 웹 사이트로 직접 이동합니다.

이것이 가능한가? 그렇다면 어떻게?

답변:


14

GeoIP 및 스토어 뷰는이 문제를 해결하는 데 도움이됩니다.

GeoIP GeoIP 데이터베이스에 MaxMind 와 같은 공급자를 사용 하거나 헤더에 국가를 추가하는 웹 서버 모듈로로드 할 수 있습니다.

IP 주소를 기반으로 고객을 적절한 상점보기로 재 지정할 수 있습니다 (상점보기 스위처가 생성 한 링크를 확인하십시오).

매장 뷰

러시아어는 상점보기 여야합니다. 상점보기 스위처를 확인하여 고객에게 필요한 링크가 무엇인지 확인하십시오.

경로 재 지정 후 고객을 상점보기와 연관 시키도록 쿠키를 설정할 수 있습니다.


또한 무료 배송 메시지와 같은 항목을 변경하기 위해 GeoIP를 사용하여 사이트의 일부 블록을 전환했습니다
Adam Justice

1
이 주제에서 3 가지주의 사항 : (1) 방문자가 다른 국가에서 프록시를 사용하거나 IP가 일치하지 않으면 다른 웹 사이트로 전환 할 수 있습니다. 가능하게하십시오. (2) 현지화와 번역을 차별화합니다. 예를 들어 현지화에 GeoIP를 사용하고 번역을위한 언어 승인 헤더 (러시아어 / 영어가 포함 된 러시아어 웹 사이트, 독일어 / 이탈리아어 / 프랑스어가 포함 된 스위스 웹 사이트)를 사용하십시오. 아래 답변을 참조하십시오 . (3) 러시아에 대해 다른 가격 (또는 다른 기본 통화)이있는 경우 전용 웹 사이트를 만드십시오.
Matthias Zeis

9

최신 MaxMind 데이터 파일을 다운로드하고 주기적으로 업데이트하는 Magento GeoIP 확장 (내가 작성)이 있습니다.

나는 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상점보기로드에서 언어에 적합한 전환을 수행 할 수 있습니다.


언어는 그렇습니다. 그러나 문제는 언어뿐만 아니라 지리적 위치이기도합니다.
Karlson

Maxmind geo API 또는 다른 무료 지리 서비스를 사용하여 전환 할 수 있습니다. 정확도가 높기 때문에 maxmind를 사용합니다 ( maxmind.com/en/geolocation_landing )
Sander Mangel

사용자가 현재 러시아에 있지만 언어가 en-US 인 경우 어떻게 하시겠습니까? 위치는 종종 Accept-Language보다 정보가 적고 정확하지 않습니다.
kojiro

@ kojiro 먼저 http accept language로 이동합니다. 당신의 위치는 어떤 사람의 언어에 대해 조금 말한다 맞아
샌더 사료 사탕

1
고독한 링크는 그 자체로는 의미가 없으며 미래에 대상 리소스가 살아 있다고 보장 할 수 없기 때문에 잘못된 답변으로 간주됩니다 . 하는 것이 바람직 할 것이다 여기에 대한 대답의 본질적인 부분을 포함하고 참조 할 수 있도록 링크를 제공합니다.
j0k

5

살펴볼 또 다른 것은 GEO IP입니다.

몇 줄의 코드는 사용자 국가 코드를 제공하며이를 기반으로 전환 할 수 있습니다.

그러나 Enterprise Edition 및 Full Page Cache와 동일한 상점을 첫 페이지 적중이 캐시되는 경우 리디렉션 기반 코드를 사용하면 문제가 발생 합니다.


캐싱에 대한 좋은 지적. Vary: Accept-Language브라우저와 FPC의 헤더에있는 방법을 알아 내야합니다 .
kojiro

FPC에 관한 마지막 메모에 대한 세부 정보를 추가 하시겠습니까? 나는 가장 적게 말하면 흥미 롭습니다.
nevvermind

GEO IP를 사용하고 국가 코드를 기반으로 올바른 상점으로 사용자를 리디렉션하는 모듈을 사용하는 데 문제가있었습니다. 이것은 실패했고 디버깅 후 FPC를 사용하여 페이지를 캐시 할 때 관찰자가 호출되지 않았습니다. 실제로 FPC는 magento 코드없이 실행되는 전체 스크립트를 캐시했기 때문에 관찰자는 한 명만 호출되었습니다.
Jamie Teuma

다른 개발자가 index.php 내에 스크립트를 작성하여 해결 방법으로 알고 있지만 이것이 성공했는지 확실하지 않으므로 YET에 댓글을 달 수 없습니다!
Jamie Teuma

4

또 다른 옵션은 PHP의 auto_prepend 구성 을 사용하는 것 입니다. 이로 인해 실제 요청 된 스크립트가 실행 되기 전에 .htaccess 이후 ( PHP를 사용하는 경우)에 의해 PHP가 처리하는 모든 스크립트가 스크립트를 실행하게됩니다 .

이 접근 방식은 다른 제안 (예 : 지리적 위치 데이터 및 특정 지역의 매장보기에 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 파일에 적용 되므로이를 명심해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.