PHP에서 브라우저 사용(선호) 언어 구하는 방법

먼저 다음 코드를 입력해서 브라우저 선호 언어 스트링을 받아옵니다.

echo $_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

맨 윗줄은 그대로 출력된 원문이고 아랫 부분은 읽기 쉽게 쉼표마다 엔터를 친 형태입니다.

  • 현재 사용 언어는 ko-KR이며
  • 선호도는 ko가 90%
  • 그 다음 en-US가 80% 등등

이라는 뜻 입니다.

언어 코드는 ISO Language Code Table 사이트 등을 참고하면 됩니다.

 

참고: 언어 태그의 정식 명칭은 IETF 언어 태그이며, 하이픈(-)을 기준으로 왼쪽은 언어(language; ISO 639), 오른쪽은 영토(region; ISO 3166)을 나타냅니다.

 

여기서 필요한 정보를 subtr으로 자릅니다. 0은 시작 위치이며 0부터 시작합니다(zero-based). 다음 파라미터는 몇 글자를 자를건지 지정하며 2글자를 자릅니다.

$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);

한국어를 사용하는 브라우저에서 실행하면 $lang 변수에는 ko 라는 값이 담기게 됩니다.

 

예제: 지역(region) 코드에 따라 해당 지역 웹페이지로 리다이렉트하는 IF문 설정하기

참고에서 언급했듯이, 언어(language)와 지역(region)은 다르기 때문에 구분해서 사용합니다. 예제는 지역 구분에 따라 리다이렉트를 하는 예제인데, 해당 사이트 주소에 언어 대신 지역을 사용하므로 지역을 통해 구분하도록 하겠습니다.

<?php
    $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 3, 2);
    $acceptLang = ['KR', 'JP'];
    if(in_array($lang, $acceptLang)) {
        $lang = strtolower($lang);
        header("Location: "."https://apps.apple.com/{$lang}/developer/id1578285460");
    } else {
        header("Location: "."https://apps.apple.com/developer/id1578285460");
    }
?>
  • 2 – 선호 언어를 불러와서 3번째 위치(0부터 시작; zero-based) 에서 시작하는 글자 2개를 읽어 옵니다.
    • ko-KR,ko;(...) 에서 3번째 위치는 K이며, 시작 위치에서 2개는 KR 입니다.
  • 3 – 필요한 지역 코드 리스트입니다. 한국과 일본 정보만 필요하고, 나머지 지역은 기본 영문 사이트로 리다이렉트 합니다.
  • 4in_array($lang, $acceptLang)
    • 배열에 찾고자 하는 값이 있는지 확인해서 true/false로 반환하는 함수입니다.
  • 5~6
    • KR 또는 JP라면 소문자로 변환한 뒤  headerLocation: **URL**을 주입해 리다이렉트를 실행합니다.
  • 7
    • 그 외의 경우라면 else문으로 이동해서 명령을 실행합니다.

 

 

문의 | 코멘트 또는 yoonbumtae@gmail.com


카테고리: PHP


0개의 댓글

답글 남기기

Avatar placeholder

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다