예전에 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
|
|
|