웹마스터 팁

팁 내용:
PHP의 변수를 이용 웹 브라우저가 어느 나라 언어로 인코딩(encoding)이 설정되어 있는지 알아보기

팁 배경:
이번에 브라우저로 노는 웹 게임을 한글화/개발하면서, 영어 한국어 사용자 모두 놀 수 있도록 다국어 지원을 넣었습니다. (게임 소스 보고 싶으신 분은 오픈 소스이니 http://digirave.net 에서 다운 받을 수 있습니다)

팁 내용:
브라우저가 기본 encoding type을 서버에게 보내줍니다. 이것은 $HTTP_ACCEPT_LANGUAGE 라는 전역 변수를 통해 볼 수 있습니다.

한국어의 경우 $HTTP_ACCEPT_LANGUAGE 변수는 "ko" 입니다. 영어인 경우는 "en" 입니다. 자세한 모든 나라는 밑에 실제 제 홈페이지 http://digirave.net 의 index.php 파일과 함께 첨가합니다.

팁 실제 예(http://digirave.net 의 index file):
예제 내용: 브라우저의 인코딩으로 쿠키 설정을 함으로써 영문 방문자와 한글 방문자에게 알맞은 페이지를 보여줍니다. 나중에 영문인지 한글인지 인식이 쉽도록 lang 으로 쿠키를 하나 설정합니다
  $gamedomain = ".digirave.net";
  $gamepath = "/";

  $host = getenv("HTTP_HOST");  
  if (preg_match("/www.digirave.net/", $host) || preg_match("/gagaspace/", $host))  {
  Header("Location: http://digirave.net");
  exit;
  }
//이 부분을 보세요..................... 한글 방문자의 경우 kr_frame으로 가게 되고
if(preg_match('/ko/', $HTTP_ACCEPT_LANGUAGE)) {
  if((!preg_match('/korean/', $GLOBALS[lang])) && (!preg_match('/english/', $GLOBALS[lang])))  {
    $lang = 'korean';
    SetCookie("lang",$lang,time()+(3600*24)*365,"/");
    }
  header("Location: http://digirave.net/digibbs/php/kr_frame.php");
  exit;
  }
//이 부분을 보세요............... 영문 방문자의 경우 en_frame으로 가게 됩니다.
else  {
  if((!preg_match('/korean/', $GLOBALS[lang])) && (!preg_match('/english/', $GLOBALS[lang])))  {
    $lang = 'english';
    SetCookie("lang",$lang,time()+(3600*24)*365,"/");
    }
  header("Location: http://digirave.net/digibbs/php/en_frame.php");
  exit;
  }
?>

팁 참고 자료:
설명: $HTTP_ACCEPT_LANGUAGE의 모든 언어 설정입니다

Afrikaans (af)
Albanian (sq)
Basque (eu)
Bulgarian (bg)
Byelorussian (be)
Catalan (ca)
Chinese (zh)
Chinese/China (zh-cn)
Chinese/Taiwan (zh-tw)
Chinese/Hong Kong (zh-hk)
Chinese/singapore (zh-sg)
Croatian (hr)
Czech (cs)
Danish (da)
Dutch (nl)
Dutch/Belgium (nl-be)
English (en)
English/United Kingdom (en-gb)
English/United Satates (en-us)
English/Australian (en-au)
English/Canada (en-ca)
English/New Zealand (en-nz)
English/Ireland (en-ie)
English/South Africa (en-za)
English/Jamaica (en-jm)
English/Belize (en-bz)
English/Trinidad (en-tt)
Estonian (et)
Faeroese (fo)
Farsi (fa)
Finnish (fi)
French (fr)
French/Belgium (fr-be)
French/France (fr-fr)
French/Switzerland (fr-ch)
French/Canada (fr-ca)
French/Luxembourg (fr-lu)
Gaelic (gd)
Galician (gl)
German (de)
German/Austria (de-at)
German/Germany (de-de)
German/Switzerland (de-ch)
German/Luxembourg (de-lu)
German/Liechtenstein (de-li)
Greek (el)
Hindi (hi)
Hungarian (hu)
Icelandic (is)
Indonesian (id or in)
Irish (ga)
Italian (it)
Italian/ Switzerland (it-ch)
Japanese (ja)
Korean (ko)
Latvian (lv)
Lithuanian (lt)
Macedonian (mk)
Malaysian (ms)
Maltese (mt)
Norwegian (no)
Polish (pl)
Portuguese (pt)
Portuguese/Brazil (pt-br)
Rhaeto-Romanic (rm)
Romanian (ro)
Romanian/Moldavia (ro-mo)
Russian (ru)
Russian /Moldavia (ru-mo)
Scots Gaelic (gd)
Serbian (sr)
Slovack (sk)
Slovenian (sl)
Sorbian (sb)
Spanish (es or es-do)
Spanish/Argentina (es-ar)
Spanish/Colombia (es-co)
Spanish/Mexico (es-mx)
Spanish/Spain (es-es)
Spanish/Guatemala (es-gt)
Spanish/Costa Rica (es-cr)
Spanish/Panama (es-pa)
Spanish/Venezuela (es-ve)
Spanish/Peru (es-pe)
Spanish/Ecuador (es-ec)
Spanish/Chile (es-cl)
Spanish/Uruguay (es-uy)
Spanish/Paraguay (es-py)
Spanish/Bolivia (es-bo)
Spanish/El salvador (es-sv)
Spanish/Honduras (es-hn)
Spanish/Nicaragua (es-ni)
Spanish/Puerto Rico (es-pr)
Sutu (sx)
Swedish (sv)
Swedish/Findland (sv-fi)
Thai (ts)
Tswana (tn)
Turkish (tr)
Ukrainian (uk)
Urdu (ur)
Vietnamese (vi)
Xshosa (xh)
Yiddish (ji)
Zulu (zu)

팁 코멘트:

if(preg_match('/ko/', $HTTP_ACCEPT_LANGUAGE)) {
로 하고
if($HTTP_ACCEPT_LANGUAGE == "ko")  {
로 안 했냐구요?

phpschool의 L.S 님의 지적:
HTTP_ACCEPT_LANGUAGE 값은 단순히 "ko" 하나만 넘어오지 않는 경우도 있습니다. 브라우저에서 추가하면 여러개가 동시에 넘어오는 경우도 있지요.(지금 집이 아니라 확인을 못하겠는데, 제 컴퓨터의 경우는 ko와 ja가 함께 넘어값니다) HTTP 규격을 확인하면 자세한 사항이 나와있지요. q=xx 을 이용한 우선순위 같은 설정이 있으므로, 주의하셔야 할 부분입니다.
제목 글쓴이 날짜
간단한 퀴즈? 프로그램을 짜보자구요~^^ [4] teenteenv 2002.05.15
echo도 많이 유용하게 사용할수있습니다..^^ [14] ZipShin 2002.05.19
MYSQL에 접속하기..^^ [9] ZipShin 2002.05.20
제로카운터 한 계정에서 여러개 사용하기 [7] 영혼 2002.06.01
총페이지의 값을 구하고 출력하기 불티나 2002.06.05
리스트뷰를 흉내낸 클래스 입니다.^^;; [2] 용가리 2002.06.22
트리뷰를 흉내낸 클래스 입니다.^^;; 용가리 2002.06.24
[PHP]간단한 로그인페이지 만들기 [15] ZipShin 2002.07.09
[추천 팁] 웹 브라우저가 한글인지 영문인지(다른 언어인지) 자동 인식하기... [1] 박용구 2002.07.10
PHP 와 Flash 를 이용해 즉석복권을 만들어 보자. [2] 다솜아빠 2002.07.10
(삽질완료) 다중도메인, 접속도메인따라 경로결정 [1] nrhythm 2002.07.25
[초보자] 자기 계정에 APM,Perl,PHP이 지원하는지 알아보기. [5] ZipShin 2002.08.01
[Header 이용하기 #3] 페이지 이동 [2] )OsE= 2002.08.01
TheMics의 예제와 함께하는 PHP기초(中) [1] TheMics 2002.08.05
누구나 만들수있는 게시판 [schema, write, write_ok] [10] Mr. JH 2002.08.21
누구나 만들수있는 게시판 [글목록 list.php 부분] [6] Mr. JH 2002.08.21
테이블 생성시 데이터베이스의 타입설정 [2] Mr. JH 2002.08.22
PHP에서 사용하는 간단하지만 중요한 MySQL함수들 [3] Mr. JH 2002.08.22
PHP 시간관련 함수 [3] Mr. JH 2002.08.22
PHP의 제어구조 [2] Mr. JH 2002.08.22