웹마스터 팁

팁 내용:
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 을 이용한 우선순위 같은 설정이 있으므로, 주의하셔야 할 부분입니다.
제목 글쓴이 날짜
echo를 처음사용하시는 초보들에게... [10] ZipShin 2002.07.06
배경그림과 글자색상,배경색상을 지정해주는 php스크립트 [2] ZipShin 2002.07.07
php소스를 윈도우 실행파일로 만드는 컴파일러 있나요? [2] 소우리 2002.07.08
[PHP]간단한 로그인페이지 만들기 [15] ZipShin 2002.07.09
[추천 팁] 웹 브라우저가 한글인지 영문인지(다른 언어인지) 자동 인식하기... [1] 박용구 2002.07.10
PHP 와 Flash 를 이용해 즉석복권을 만들어 보자. [2] 다솜아빠 2002.07.10
[추천 팁] 파일의 최종접근시간과 파일의 수정시간을 알려주는 함수 [2] ssukai 2002.07.10
[추천 팁] 폴더내의 파일중에서 특정정보만 뽑아오기. [2] M2Vis 2002.07.12
PHP를 리눅스 셸 프로그래밍할때 PHP파일 의 경로.. [2] 실버 2002.07.18
원격침입과 도스공격이 가능한 PHP 취약점 [11] JunYa™ 2002.07.24
(삽질완료) 다중도메인, 접속도메인따라 경로결정 [1] nrhythm 2002.07.25
[초보자] 자기 계정에 APM,Perl,PHP이 지원하는지 알아보기. [5] ZipShin 2002.08.01
[Header 이용하기 #1] No-cache [1] )OsE= 2002.08.01
[Header 이용하기 #2] 파일 다운로드 )OsE= 2002.08.01
[Header 이용하기 #3] 페이지 이동 [2] )OsE= 2002.08.01
[초간단 팁] 프로그래밍 스타일, 절대 경로 [8] )OsE= 2002.08.02
Apache나 IIS등 웹서버 설치 않하고도 PHP 실행해보는 방법 [9] 차카게살자 2002.08.02
TheMics의 예제와 함께하는 PHP기초(中) [1] TheMics 2002.08.05
[클래스] 클래스 #1 [8] file )OsE= 2002.08.07
쓸모있는 PHP Tip (다 알구 있을런지 모르겠네여..^^) [1] 이삐아이(체리) 2002.08.09