티스토리 뷰

반응형
요즘 글로벌 홈페이지들을 살펴보면 Korean / English와 같이 언어별로 구분되어 선택할 수 있도록 되어 있습니다. 
오늘은 이와 같이 접속자에 따른 홈페이지의 언어별 분류를 어떻게 하는지 정리해 보도록 하겠습니다. 

가장 확실한 방법은 역시 쿠키를 활용하는 것입니다.
사용자가 선택한 언어를 쿠키에 저장해 두고 홈페이지가 열릴 때마다 보여주는 방법이죠..
한번 설정한 언어 정보를 기반으로 계속 보여주기 때문에 지속적으로 방문하는 사용자를 위해 일반적으로 많이 사용되는 방법입니다. 

그러나 사용자가 선택하기전에 어떤 언어를 먼저 보여줘야 할지를 결정하는 부분이 이슈가 됩니다. 
이때 사용하는 것이 접속자의 IP를 기반으로 국가를 파악하고 언어를 설정하는 방식을 사용합니다. 

그렇다면 IP를 기반으로 국가 정보를 가져오는 문제를 해결해야 하는데요.
이와 관련해서 MaxMind(http://www.maxmind.com/)에서 API 형태로 서비스를 제공하고 있습니다. 



관련 API 중 "GeoIP City"와 "GeoLite City"가 있는데요.
이 중 "GeoIP City" 서비스는 유료로 제공되고 있으며, 사용 형태에 따라서 $20, $50, $370로 구성되어 있네요. 


"GeoLite"는 "GeoIP"와 비교해서 정확도 측면에서 약간 떨어지고 업데이트 주기가 월 단위로 이루어진다고되어 있습니다만
제가 테스트 해보니 활용하는데 있어서 큰 문제는 없을 것 같았습니다.

 
그러면 GeoIP API(http://www.maxmind.com/app/support)를 통해서 IP를 가지고 국가를 가져오는 것을 테스트 해보도록 하겠습니다. 
여러 언어를 지원하고 있는데요. 저는 PHP를 가지고 해보도록 하겠습니다. 
PHP 관련 파일들을 받으려면 http://www.maxmind.com/app/php로 가서 Pure PHP Module의 download를 누르면 됩니다. 

상당히 많은 소스가 있는데요. 저는 먼저 sample.php를 받아봤습니다. 
sample.php의 내용은 다음과 같습니다. 



소스를 살펴보면 일단 6번째 줄에 "geoip.inc" 파일이 include 한 것을 알 수 있습니다. 위 링크에서 해당 파일을 다운로드 합니다. 

그리고 11번째 줄을 보면 GeoIP.dat 파일을 open하는 부분이 있습니다. 
이 파일이 매월 업데이트되는 IP와 국가를 매핑한 파일인 것 같습니다. 해당 파일은 다음 경로에서 받을 수 있습니다. 
http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
압축을 풀고 서버에 넣은 다음 해당 경로를 11번째 줄에 변경해서 보여주면 됩니다. 

위 예제에서는 국가 코드와 국가 명을 보여주고 있습니다. 
실질적으로 우리가 필요한 것은 국가 코드만 있으면 되므로 geoip_country_code_by_addr() 메소드만 사용하면 될 것 같습니다. 

그럼 위 예제를 수정해서 IP에 따라 언어별 페이지를 보여주는 PHP 소스를 작성해 보겠습니다. 

위 소스를 보시면 금방 이해가 될 겁니다. 
PHP의 "REMOTE_ADDR"변수를 활용해서 사용자 IP를 가져오고
GeoIP API를 통해 국가 코드를 확인한 다음 header()를 활용해서 리다이렉트하도록 구성했습니다.

최초 IP 접속시에는 이렇게 해서 언어를 확인하고 이후부터는 쿠키를 활용하면 되겠죠..
 

반응형
댓글
댓글쓰기 폼