예전에 MaxMind의 GeoIP를 이용하여 IP를 기반으로 국가별 분기를 하는 내용을 정리하였는데요.
2012/03/07 - [프로그래밍/Web] - 웹페이지 접속자에 따른 국문, 영문 페이지의 구분을 위한 국가를 확인 방법에 대한 정리
HTTP의 헤더 정보를 사용하여 보다 쉽게 국가별 분기를 하는 방법이 있더군요.
바로 HTTP_ACCEPT_LANGUAGE 정보를 확인하는 것입니다.
해당 정보를 보내주지 않는 브라우저가 있으면 문제가 될 수 있을 듯하여 살펴봤는데
대부분의 브라우저에서 잘 지원하는 것 같습니다.
각 프로그래밍 언어별 HTTP_ACCEPT_LANGUAGE 정보를 가져오는 것은 다음과 같습니다.
PHP: $_SERVER['HTTP_ACCEPT_LANGUAGE']
ASP: Request.ServerVariables("HTTP_ACCEPT_LANGUAGE")
JSP: request.getHeader("accept_language");
그런데 한가지 주의할 사항은 브라우저에 따라 HTTP_ACCEPT_LANGUAGE 값이 여러개 설정될 수 있다는 것입니다.
만약 "es-mx,fr,de-ch,en-us" 이렇게 설정되어 있다면
스페인어(멕시코), 프랑스어(프랑스), 독일어(스위스), 영어(미국) 순으로 기본 설정에 따라 사용된다는 것이죠.
그러므로 단순히 각 언어를 비교하는 형태는 문제가 될 수 있습니다.
그래서 Java로 한국어 - 중국어 - 영어 순으로 표시하고자 할 경우, 다음과 같이 작성하는 것이 보다 나은 해결책이 될 것 같습니다.
마지막으로 국가별 코드를 정리하니 참고하시기 바랍니다. (출처: http://www.mcanerin.com/en/articles/meta-language.asp)
ISO 639: Two-letter Language Codes |
|---|
Sorted by Language | | Sorted by Language Code |
|---|
| Abkhazian | AB | | AA | Afar | | Afar | AA | | AB | Abkhazian | | Afrikaans | AF | | AF | Afrikaans | | Albanian | SQ | | AM | Amharic | | Amharic | AM | | AR | Arabic | | Arabic | AR | | AS | Assamese | | Armenian | HY | | AY | Aymara | | Assamese | AS | | AZ | Azerbaijani | | Aymara | AY | | BA | Bashkir | | Azerbaijani | AZ | | BE | Byelorussian | | Bashkir | BA | | BG | Bulgarian | | Basque | EU | | BH | Bihari | | Bengali, Bangla | BN | | BI | Bislama | | Bhutani | DZ | | BN | Bengali, Bangla | | Bihari | BH | | BO | Tibetan | | Bislama | BI | | BR | Breton | | Breton | BR | | CA | Catalan | | Bulgarian | BG | | CO | Corsican | | Burmese | MY | | CS | Czech | | Byelorussian | BE | | CY | Welsh | | Cambodian | KM | | DA | Danish | | Catalan | CA | | DE | German | | Chinese | ZH | | DZ | Bhutani | | Corsican | CO | | EL | Greek | | Croatian | HR | | EN | English, American | | Czech | CS | | EO | Esperanto | | Danish | DA | | ES | Spanish | | Dutch | NL | | ET | Estonian | | English, American | EN | | EU | Basque | | Esperanto | EO | | FA | Persian | | Estonian | ET | | FI | Finnish | | Faeroese | FO | | FJ | Fiji | | Fiji | FJ | | FO | Faeroese | | Finnish | FI | | FR | French | | French | FR | | FY | Frisian | | Frisian | FY | | GA | Irish | | Gaelic (Scots Gaelic) | GD | | GD | Gaelic ("Scots Gaelic") | | Galician | GL | | GL | Galician | | Georgian | KA | | GN | Guarani | | German | DE | | GU | Gujarati | | Greek | EL | | HA | Hausa | | Greenlandic | KL | | HI | Hindi | | Guarani | GN | | HR | Croatian | | Gujarati | GU | | HU | Hungarian | | Hausa | HA | | HY | Armenian | | Hebrew | IW | | IA | Interlingua | | Hindi | HI | | IE | Interlingue | | Hungarian | HU | | IK | Inupiak | | Icelandic | IS | | IN | Indonesian | | Indonesian | IN | | IS | Icelandic | | Interlingua | IA | | IT | Italian | | Interlingue | IE | | IW | Hebrew | | Inupiak | IK | | JA | Japanese | | Irish | GA | | JI | Yiddish | | Italian | IT | | JW | Javanese | | Japanese | JA | | KA | Georgian | | Javanese | JW | | KK | Kazakh | | Kannada | KN | | KL | Greenlandic | | Kashmiri | KS | | KM | Cambodian | | Kazakh | KK | | KN | Kannada | | Kinyarwanda | RW | | KO | Korean | | Kirghiz | KY | | KS | Kashmiri | | Kirundi | RN | | KU | Kurdish | | Korean | KO | | KY | Kirghiz | | Kurdish | KU | | LA | Latin | | Laothian | LO | | LN | Lingala | | Latin | LA | | LO | Laothian | | Latvian, Lettish | LV | | LT | Lithuanian | | Lingala | LN | | LV | Latvian, Lettish | | Lithuanian | LT | | MG | Malagasy | | Macedonian | MK | | MI | Maori | | Malagasy | MG | | MK | Macedonian | | Malay | MS | | ML | Malayalam | | Malayalam | ML | | MN | Mongolian | | Maltese | MT | | MO | Moldavian | | Maori | MI | | MR | Marathi | | Marathi | MR | | MS | Malay | | Moldavian | MO | | MT | Maltese | | Mongolian | MN | | MY | Burmese | | Nauru | NA | | NA | Nauru | | Nepali | NE | | NE | Nepali | | Norwegian | NO | | NL | Dutch | | Occitan | OC | | NO | Norwegian | | Oriya | OR | | OC | Occitan | | Oromo, Afan | OM | | OM | Oromo, Afan | | Pashto, Pushto | PS | | OR | Oriya | | Persian | FA | | PA | Punjabi | | Polish | PL | | PL | Polish | | Portuguese | PT | | PS | Pashto, Pushto | | Punjabi | PA | | PT | Portuguese | | Quechua | QU | | QU | Quechua | | Rhaeto-Romance | RM | | RM | Rhaeto-Romance | | Romanian | RO | | RN | Kirundi | | Russian | RU | | RO | Romanian | | Samoan | SM | | RU | Russian | | Sangro | SG | | RW | Kinyarwanda | | Sanskrit | SA | | SA | Sanskrit | | Serbian | SR | | SD | Sindhi | | Serbo-Croatian | SH | | SG | Sangro | | Sesotho | ST | | SH | Serbo-Croatian | | Setswana | TN | | SI | Singhalese | | Shona | SN | | SK | Slovak | | Sindhi | SD | | SL | Slovenian | | Singhalese | SI | | SM | Samoan | | Siswati | SS | | SN | Shona | | Slovak | SK | | SO | Somali | | Slovenian | SL | | SQ | Albanian | | Somali | SO | | SR | Serbian | | Spanish | ES | | SS | Siswati | | Sudanese | SU | | ST | Sesotho | | Swahili | SW | | SU | Sudanese | | Swedish | SV | | SV | Swedish | | Tagalog | TL | | SW | Swahili | | Tajik | TG | | TA | Tamil | | Tamil | TA | | TE | Tegulu | | Tatar | TT | | TG | Tajik | | Tegulu | TE | | TH | Thai | | Thai | TH | | TI | Tigrinya | | Tibetan | BO | | TK | Turkmen | | Tigrinya | TI | | TL | Tagalog | | Tonga | TO | | TN | Setswana | | Tsonga | TS | | TO | Tonga | | Turkish | TR | | TR | Turkish | | Turkmen | TK | | TS | Tsonga | | Twi | TW | | TT | Tatar | | Ukrainian | UK | | TW | Twi | | Urdu | UR | | UK | Ukrainian | | Uzbek | UZ | | UR | Urdu | | Vietnamese | VI | | UZ | Uzbek | | Volapuk | VO | | VI | Vietnamese | | Welsh | CY | | VO | Volapuk | | Wolof | WO | | WO | Wolof | | Xhosa | XH | | XH | Xhosa | | Yiddish | JI | | YO | Yoruba | | Yoruba | YO | | ZH | Chinese | | Zulu | ZU | | ZU | Zulu
|
|
|