웹마스터 팁

팁 내용:
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 을 이용한 우선순위 같은 설정이 있으므로, 주의하셔야 할 부분입니다.
제목 글쓴이 날짜
1900년부터 2043년까지 음력을 양력으로..... [3] pupstar 2001.08.14
양력을 음력으로... [7] pupstar 2001.08.14
mysql_fetch_row함수와 mysql_fetch_array함수의 차이점. [4] webzzang 2001.08.22
php 로 swf 맹글기 [3] 리산 2001.08.30
남은 계정 용량 확인하는 PHP [17] 겜올드™ 2001.09.09
Imagechar() 함수에서 한문자씩쓰는거 여러글짜이어쓰는함수 김승태 2001.10.20
자동차세 연체가산금 계산기 secret 2001.04.02
[GD] 이미지 회전 함수 공개합니다. [7] 노경민 2001.11.05
알렉사 순위 가져오는 스크립트;; [30] file zero 2001.11.06
게시판 만들 때 스팸메일을 막을 수 있는 방법중 한개. [11] WOWpc 2001.11.09
[추천 소스] 특정일로부터 몇일 지났나 또는 몇일 남았나 알아보는 소스 ㅡ.ㅡ; [1] 타스케 2001.11.15
컴에 phpMyAdmin 깔고 원격 Mysql 관리.(이것도 팁이 되려나?) [1] 최형삼 2001.11.17
phpMyAdmin에서 dump 안 되시는 분들 보세요 [5] 똥가리 2001.11.18
MySQL에서 한글 정렬 문제 [2] 손정호 2001.11.21
[추천 소스] phpMyAdmin 다중사용자용... [5] WOWpc 2001.11.29
[추천 팁] 디망쉬식 스킨 시스템 [4] 디망쉬 2001.12.11
파일시스템(배열)에서의 검색기능 [5] 두기두바 2002.01.09
파일시스템에서 비밀번호 생성/수정/인증 [7] 두기두바 2002.01.10
cron을 이용해 윈앰프 방송정보를 빠르게 분석. [9] Romeo 2002.01.15
[PHP]모르는 분이 있는듯 해서...변수관련 [2] TheMics 2002.01.24