새로운 강의는 이제 https://memi.dev 에서 진행합니다.
memi가 Vue & Firebase로 직접 만든 새로운 사이트를 소개합니다.

바로가기


npm geoip

최대 1 분 소요

현재 웹사이트를 미국에서도 쓰고.. 프랑스에서도 쓰고 독일에서도 쓸 때 개발자라면 어떻해야할까?

우선 인터내셔널 버튼을 만들어서 선택하게 해야겠지 플래그를 그리고 쿠키에 저장하고 다음에 켜지면 그 쿠키의 플래그의 언어를 사용하면되고..

거기까진 좋다..

하지만 최소한 기본페이지는 영어로했을 때 이야기다..

한국인이 접속해야할 사이트를 만들다 고민에 빠졌다..

접속해야할 대상자들이 5,60대의 컴퓨터에 무지하신 분들 상당수인데..

영어가 바글바글 있는 사이트에서 인터내셔널 버튼하나 누르기가 힘들 수 있기 때문이다..

그래서 고민 후 생각한 것이 아이피 대역으로 속한 나라를 판단하여 html 페이지를 그 나라언어로 렌더링하는 것이다..

이미 글로벌 대기업들은 그렇게 하고있다.. 상용디비로..

물론 아이피로는 어찌되었든 부정확하지만..

오늘 설치해본 패키지는 geoip-lite

https://www.npmjs.com/package/geoip-lite

사용

사용법은 간단하다. 위의 링크 예제를 하나 node에 적어서 실행해보면 바로 나온다..

var geoip = require('geoip-lite');
 
var ip = "207.97.227.239";
var geo = geoip.lookup(ip);
 
console.log(geo);
{ range: [ 3479297920, 3479301339 ],
  country: 'US',
  region: 'TX',
  city: 'San Antonio',
  ll: [ 29.4889, -98.3987 ],
  metro: 641,
  zip: 78218 }

geo.country 가지고 렌더링을 하면되는 것이다..

res.render('signin',{geo:geo});

//signin.pug에서는
doctype html
html(lang=geo.country)
    head        
        meta(charset='utf-8')
        title  
            if(geo.country === 'KR')
                | 한글타이틀
            else
                | ENGLISH title

pug 사이트의 condition에 예제가 잘 나와있다.

결론

npm에는 보물이 너무 많다.. 콜백으로 리턴을 안받아서 행복하다.

태그: , ,

카테고리:

업데이트:

댓글남기기