티스토리 뷰
발생일: 2009.03.28
문제:
국가별로 다른 페이지를 보여주려고 한다.
현재로선 국내에서 접속할 경우 한국어 페이지를,
그 외에서 접속할 경우 영어로 된 페이지를 제공하고 싶다.
요청 IP 를 분석해서 언어를 설정할 수 있을까?
해결책:
국가별 IP 정보를 받아서 자동으로 언어를 설정할 수 있는 방법이 있긴 하지만,
간단하게 구현하고자 하기에는 좀 버거운 방법이다. (국가별 IP 정보를 제공하는 사이트가 있다)
현재 구현하고자 하는 것은 request의 Accept-Language 헤더 값을 이용하는 것으로 충분할 것으로 보인다.
(이에 대한 좋은 토론이 있다.)
주의할 것은, 브라우저마다 Accept-Language 의 리턴값이 다르다는 것이다.
한국어로 설정되어 있을 때
IE의 경우: ko
FF의 경우: ko-kr,ko;q=0.8,en-us;q=0.5,en;q=0.3
와 같은 식으로 표시된다.
lang 이라는 이름의 parameter로 명시적으로 언어를 설정하고,
parameter가 없을 경우, Accept-Language 값을 받아 언어를 설정하는 간단한 메서드를 아래와 같이 만들었다.
한국어 / 영어만 구분한다.
/**
* request로부터 페이지의 language를 설정한다.<br/>
* lang 이름으로 paramemter 가 있고, 그 값이 en 또는 ko 일 경우 그 값을 설정한다.<br/>
* 만약 parameter가 없거나 올바르지 않을 경우 request의 Accept-Language 값을 가져와,<br/>
* 한국어일 경우 ko 로 표기, 아닐 경우 en으로 표기한다.
*
* @param request
* @return en 또는 ko 값의 language
*/
public static String getLanguage(HttpServletRequest request) {
String paramLang = request.getParameter("lang");
if ("en".equals(paramLang) || "ko".equals(paramLang)) {
return paramLang;
}
// request header 로 부터 Accept-Language 를 가져온다
// 한국어일 경우, 브라우저 별로 아래와 같은 형태로 가져온다
// FF: ko-kr,ko;q=0.8,en-us;q=0.5,en;q=0.3
// IE: ko
String acceptLang = request.getHeader("Accept-Language");
String firstLang = acceptLang.split(",")[0];
if (firstLang.indexOf("ko") > -1) {
return "ko";
}
return "en";
}
문제:
국가별로 다른 페이지를 보여주려고 한다.
현재로선 국내에서 접속할 경우 한국어 페이지를,
그 외에서 접속할 경우 영어로 된 페이지를 제공하고 싶다.
요청 IP 를 분석해서 언어를 설정할 수 있을까?
해결책:
국가별 IP 정보를 받아서 자동으로 언어를 설정할 수 있는 방법이 있긴 하지만,
간단하게 구현하고자 하기에는 좀 버거운 방법이다. (국가별 IP 정보를 제공하는 사이트가 있다)
현재 구현하고자 하는 것은 request의 Accept-Language 헤더 값을 이용하는 것으로 충분할 것으로 보인다.
(이에 대한 좋은 토론이 있다.)
주의할 것은, 브라우저마다 Accept-Language 의 리턴값이 다르다는 것이다.
한국어로 설정되어 있을 때
IE의 경우: ko
FF의 경우: ko-kr,ko;q=0.8,en-us;q=0.5,en;q=0.3
와 같은 식으로 표시된다.
lang 이라는 이름의 parameter로 명시적으로 언어를 설정하고,
parameter가 없을 경우, Accept-Language 값을 받아 언어를 설정하는 간단한 메서드를 아래와 같이 만들었다.
한국어 / 영어만 구분한다.
/**
* request로부터 페이지의 language를 설정한다.<br/>
* lang 이름으로 paramemter 가 있고, 그 값이 en 또는 ko 일 경우 그 값을 설정한다.<br/>
* 만약 parameter가 없거나 올바르지 않을 경우 request의 Accept-Language 값을 가져와,<br/>
* 한국어일 경우 ko 로 표기, 아닐 경우 en으로 표기한다.
*
* @param request
* @return en 또는 ko 값의 language
*/
public static String getLanguage(HttpServletRequest request) {
String paramLang = request.getParameter("lang");
if ("en".equals(paramLang) || "ko".equals(paramLang)) {
return paramLang;
}
// request header 로 부터 Accept-Language 를 가져온다
// 한국어일 경우, 브라우저 별로 아래와 같은 형태로 가져온다
// FF: ko-kr,ko;q=0.8,en-us;q=0.5,en;q=0.3
// IE: ko
String acceptLang = request.getHeader("Accept-Language");
String firstLang = acceptLang.split(",")[0];
if (firstLang.indexOf("ko") > -1) {
return "ko";
}
return "en";
}
반응형
댓글
공지사항