본문 바로가기
PHP

브라우저의 선호 언어 구하는 방법

by 똑똑한 영장류 2019. 5. 13.

브라우저의 선호 언어 구하는 방법은 $_SERVER 변수의 HTTP_ACCEPT_LANGUAGE 값을 이용해서 구할 수 있습니다.

 

PHP 에서 $_SERVER 변수를 찍어보면, 아래처럼 보입니다.

 

[HTTP_ACCEPT_LANGUAGE] => ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7,ja;q=0.6

 

각 항목은 , 콤마로 구분할 수 있습니다.

ko-KR,

ko;q=0.9,

en-US;q=0.8,

en;q=0.7,

ja;q=0.6

 

언어코드 뒤에 ; 세미콜론 찍고, q 값을 보여주고 있는데, 이 q 값은 선호정도로 이해하면 되겠습니다.

가장 처음에 나오는 ko-KR 은 q 값이 없는데, 이 경우에는 1 을 의미합니다.

q 값에 따라 위 내용을 다음처럼 이해할 수 있습니다.

 

난 ko-KR 이 제일 좋아, 그 다음은 ko, 그 다음은 미국식 영어(en-US), 아니면 그냥 영어(en)도 괜찮지.

정 안 되면 일본어(ja)...

 

이런 식으로 브라우저는 서버에 정보를 줍니다.

 

서버측에서는 이 정보를 이용해서 클라이언트 브라우저로 적합한 언어로 웹 페이지를 만들어서 보내줄 수 있습니다.

 

php 로 함수를 만들어보면, 아래처럼 작성해 볼 수 있겠습니다.(버그 있을지도...)

 

function getBrowserPreferredLanguage()
{
	$top_language = "";
	$top_weight = 0;
	$langs = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
	foreach($langs as $lang)
	{
		list($lang_code, $weight) = explode(";", $lang);
    
		if($weight == NULL) {
      $weight = 1.0;
    }
    else {
      $weight = substr($weight, 2);
    }
    echo $lang_code.' : '.$weight.'<br/>';
    if($weight > $top_weight) {
        $top_weight = $weight;
        $top_language = $lang_code;
    }
	}
	return $top_language;
}

하지만!!!

구글링을 하다보니, HTTP_ACCEPT_LANGUAGE 값을 이용해서 브라우저의 언어를 구하는 방법은 부정확할 수 있다는 말들이 있더군요. 더 깊이 알아보지는 않았습니다. 그냥 HTTP_ACCEPT_LANGUAGE 공부한 셈치고..이만...

 

 

'PHP' 카테고리의 다른 글

session_save_path() 설정되지 않을 때  (1) 2013.06.13
[PHP] trim  (0) 2013.02.14
php.ini 설정 항목들의 의미 - (추가중)  (0) 2013.02.13
[설정] date.timezone  (0) 2013.02.05
[PHP] array_push(), array_pop()  (0) 2013.01.23

댓글