사용 언어를 인식해서 리다이렉트

국내에 웹 사이트들이 웹 표준을 지키고 OS나 브라우저와 관계 없이 접근성을 향상 시키기 위한 사이트 버그 신고 및 문제 해결을 위한 게시판입니다.
Post Reply
Wannabana
Posts: 14
Joined: 2004 10 21 17:59 24
Location: 대전
Contact:

사용 언어를 인식해서 리다이렉트

Post by Wannabana »

제가 종종 가는 http://www.kjclub.com 이라는 사이트에 대한 내용입니다.

한국어와 일본어를 지원하는 사이트라서 위의 주소만을 입력하면 알아서 한국어 또는 일본어 페이지로 들어가게 되는데요

IE의 경우 알아서 http://www.kjclub.com/kr/ 로 잘 이동 되지만
FF로 접속하면 http://www.kjclub.com/jp/ 부터 접속하게 되네요.

index.html 파일을 받아서 내용을 보아도 전혀 모르는 내용이라서요.

어떻게 하면 파이어폭스에서도 잘 동작하고 표준에 맞는 내용이 될 수 있을 지
조언해 주시면 관리자에게 수정을 부탁드리고 싶습니다.

Mozilla/5.0 (Windows; U; Windows NT 5.1; ko-KR; rv:1.7.5) Gecko/20041111

Code: Select all

<html>
<head>
     <title>KJCLUB</title>
</head>
<script language="javascript" src="/kr/js/syscheck.js"></script>

<SCRIPT LANGUAGE="javascript">
<!--
	location.replace('/jp/');//location.replace(file_path+'/'+gen+'/'); 
//-->
</SCRIPT>
<body bgcolor=#3C45C6 leftmargin=0 topmargin=0 marginwidth=0 marginheight=0>

<table border=0 cellpadding=0 cellspacing=0 width=100% height=100%>
<tr>
   <td>

<table border=0 cellpadding=0 cellspacing=0 bgcolor=#2B35B2 width=100%>
<tr>
   <td bgcolor=#000000>&nbsp;</td>
</tr>
<tr>
   <td align=center bgcolor=#030841>

<table border=0 cellpadding=0 cellspacing=0 bgcolor=#ffffff>
<tr>
   <td><img src="/image/main01.jpg" border=0 width=351 height=154></td>
   <td><img src="/image/main02.jpg" border=0 width=345 height=154></td>
</tr>
<tr>
   <td><img src="/image/main03.jpg" border=0 width=351 height=185></td>
   <td><img src="/image/main04.jpg" border=0 width=345 height=185 usemap="#map"></td>
</tr>
</table>

   </td>
<tr>
   <td bgcolor=#000000>&nbsp;</td>
</tr>
</table>

<br><br>

   </td>
</tr>
</table>

</body>
 <MAP NAME="map">
<AREA SHAPE=RECT COORDS="140,111,222,126" HREF="/kr/index.html" ALT="Korean">
<AREA SHAPE=RECT COORDS="239,111,332,126" HREF="/jp/index.html" ALT="Japanese">
</MAP>
</html>
User avatar
하늘다람쥐
도우미
도우미
Posts: 287
Joined: 2004 08 25 13:02 50
Location: 푸른 하늘
Contact:

Post by 하늘다람쥐 »

Code: Select all

languagesq = new Object;
languagesq["un"] = "jp"; //알려지지 않은 언어 
languagesq["ja"] = "jp"; //일본어
languagesq["jp"] = "jp"; //일본어
languagesq["ko"] = "kr"; //한국어 
languagesq["ja-jp"] = "jp"; //일본어 

lang = "un"; 
Component = "Unknown browser"; 
platform = "Unknown platform"; 
OS = "";
version = parseFloat(navigator.appVersion); 
UA = navigator.userAgent; 
ua = navigator.userAgent.toLowerCase(); 

if (((start = ua.indexOf("[")) > 0) && ((end = ua.indexOf("]")) == (ua.indexOf("[") + 3))) { 
	language = ua.substring(start+1, end); 
	} else if (navigator.language) { 
		language = navigator.language.toLowerCase(); 
		} else if (navigator.userLanguage) { 
			language = navigator.userLanguage.toLowerCase(); 
		} 
		if (languagesq[language]) { 
	lang = language; 
} 
var file_path = ''; // 페이지 디렉토리 - 같은 디렉토리엔 .(dot)만 찍어둘것
var format_type = ''; //페이지 포맷형식
var gen=languagesq[lang]; 
"/kr/js/syscheck.js" 소스를 살펴보니 위와 같던데,
불여우의 경우는 navigator.language값으로 ko-kr을 반환하는데 맞는 값이 없네요.

Code: Select all

languagesq["ko-kr"] = "kr"; //한국어
한 줄만 추가하면 일단 무리는 없을 듯 싶습니다.
tenshi
Posts: 40
Joined: 2004 11 30 15:19 45
Contact:

Post by tenshi »

Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20050110 Firefox/1.0 (Debian package 1.0+dfsg.1-2)
저도 가끔 찾는 사이트인데 (일본인 친구를 만들기도 했고.. ^^),
저 같은 경우엔.. 정상적으로 이동하는군요.

아무래도 소스가 박혀 있는걸로 봐서는 javascript가 아니고 server-side script - ASP를 쓰는군요.. - 에서 사용언어를 인지하는 것 같습니다.

어떻게 된 로직일까요? :?
Wannabana
Posts: 14
Joined: 2004 10 21 17:59 24
Location: 대전
Contact:

Post by Wannabana »

두분의 답글 감사드립니다. :D

tenshi님이 글을 다시기 전에 메일을 보내버렸네요

저는 파이어폭스에서는 무조건 잘못 가는 줄 알았는데 -ㅇ-

같은 버전의 리눅스판 파이어폭스에서도 일본어 페이지로 이동이 되어서요..
(Mozilla/5.0 (X11; U; Linux i686; ko-KR; rv:1.7.5) Gecko/20041111 Firefox/1.0)

tenshi님과는 다른 버전일까요 -ㅇ-

아 그리고 IE의 경우에는 ko 라고 보내나 본데 이런 것은 왜 차이가 생긴것일까요?
빛알갱이
해커
해커
Posts: 1146
Joined: 2004 01 15 20:06 36

Post by 빛알갱이 »

상당히 짜증나는 사이트로군요. google도 마찬가지고 (google의 표준 위반 정도도 상당히 심각한 수준이지요) 도대체 왜 표준을 안 지키고 이상한 방법을 써서 언어 선택을 하는지 모르겠군요.

HTTP 표준을 따르자면 client에서 보내는 HTTP 헤더의 Accept-Language를 보고 여러 언어 버전 중에 하나를 골라서 보여 주어야 합니다. google은 아직도 Accept-Language를 무시하고, 여기서 문제가 된 사이트도 그것을 무시하고 'navigator.language'를 쓰고 있군요.


또, 언어와 지역/영토를 혼동해서 ja이면 jp로 ko이면 kr로 옮겨 가는 것도 문제고요. (실제 문제가 있지는 않지만, 그 프로그램을 한 사람이 개념적으로 둘을 헛갈리고 있다는 증거입니다.)

Apache 써버라면 쓸데 없이 각 HTML 파일 혹은 PHP script 등에서 위와 같은 쓰잘데기 없는 엉터리 설정을 하지 않아도 써버 설정만 제대로 해 놓으면 Accept-Language의 값에 따라 해당 언어 버전으로 찾아 갑니다.


물론, 모든 경우에 HTTP Accept-Language를 쓰는 것이 최선의 방법은 아닙니다. 하지만, 다른 방법을 fallback으로 쓰더라도 우선 HTTP 표준 방법을 지원하고 나서 그 다음에 fallback을 써야 합니다.

http://www.w3.org/International/questio ... n-lang-neg
http://www.w3.org/International/questio ... e-lang-neg
http://www.w3.org/International/tutoria ... egotiating
User avatar
하늘다람쥐
도우미
도우미
Posts: 287
Joined: 2004 08 25 13:02 50
Location: 푸른 하늘
Contact:

Post by 하늘다람쥐 »

자바스크립트 부분을 주석처리했군요.
서버단에서 처리하는게 맞는 것 같습니다.
User avatar
XviD
해커
해커
Posts: 664
Joined: 2004 11 14 14:55 45
Location: 사막의 오아시스
Contact:

Re: 사용 언어를 인식해서 리다이렉트

Post by XviD »

이 사이트도 문제 많군요.
테마 게시판쪽의 링크는 깨져있고..
회원가입 이메일 인증에서 오류나오고..
상단 양옆 디자인도 깨져보이고.. 기타등등..
파란사오정

임시방편으로 ie처럼...

Post by 파란사오정 »

firefox도 IE처럼 Accept-Language 값을 전송하면
한국어사이트로 접속을 할 수 있습니다.

물론 이는 임시방편입니다.
바른 방식은 빛알갱이님이 언급하였지만, 서버측에서
Accept-Language의 값을 제대로 분석하여
해당 페이지로 연결해주는 것입니다.


firefox의 환경설정 창에서 [일반] - [언어] - [언어 및 문자인코딩] 창에서

[설정에 따른 언어:] 목록에서

"한국어 [ko]" 항목만 남겨두고 나머지 항목은 제거를 하세요...


그리고 나서 위 사이트를 접속...

:roll:
빛알갱이
해커
해커
Posts: 1146
Joined: 2004 01 15 20:06 36

Post by 빛알갱이 »

푸른 사오정님 말대로 하니까 되네요. 즉, 서버에서 HTTP Accept-Language를 참조해서 두 버전 중의 하나로 보내는군요. 그런데, 문제는 A-L 값을 분석하지 않고, 단순 비교만 해서 (즉, 전체 문자열이 'ko'인지 'ja'인지) 처리하기 때문에 이런 문제가 생기는 듯 합니다.

언어 선호도 설정을 '한국어(대한민국), 한국어, 영어, 프랑스어' 순으로 해 놓으면 모질라는 다음과 같은 A-L 헤더를 보냅니다.

Accept-Language: ko-kr,ko;q=0.8,en;q=0.5,fr;q=0.3

써버 쪽에서는 이것을 단순히 문자열 비교를 할 것이 아니라 파싱해서 처리해야지요. (쉽표로 나뉘어 있고, q 값은 반쌍점 뒤에 옵니다.)

참, A-L 값에는 전적으로 의존하는 것이 좋은 생각은 아닐 것입니다. 명시적으로 사용자가 선택한 경우에는 그 선택을 따라야겠지요. (위에 제가 쓴 말은 지나치게 강하게 A-L을 써야 한다고 한 것 같군요.)
Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests