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
– 필요한 지역 코드 리스트입니다. 한국과 일본 정보만 필요하고, 나머지 지역은 기본 영문 사이트로 리다이렉트 합니다.4
–in_array($lang, $acceptLang)
- 배열에 찾고자 하는 값이 있는지 확인해서 true/false로 반환하는 함수입니다.
5~6
KR
또는JP
라면 소문자로 변환한 뒤header
에Location: **URL**
을 주입해 리다이렉트를 실행합니다.
7
- 그 외의 경우라면
else
문으로 이동해서 명령을 실행합니다.
- 그 외의 경우라면
0개의 댓글