다국어, 국제화 웹 사이트 개발시 고려사항

ETC... 2011. 3. 5. 20:02
즉, Global환경에서 서비스될 웹사이트를 구축시 고려사항을 정리해 본다.
많은 요소들을 고려해야 하지만 굵직한 것만 정리해봄.

1. 인코딩
 - 국내(한글) 사이트 용으로 개발 되더라도 요즘은 왠만하면 UTF-8 인코딩을 사용하여 개발한다.
   Global한 서비스에선 무조건 UTF-8 !

2. 다국어 지원
 
- 사용자의 입력Locale또는 서비스에서 제공되는 언어선택을 기반으로 화면에 표시되는 모든 텍스트가 해당언어로 나타나도록 해야함. 이런 경우 텍스트가 포함된 이미지를 가능한 사용하지 않는 디자인 템플릿이 필요하다.
직접 다국어 지원을 개발하는건 성능 및 신뢰도에 문제가 있을 수 있고, 웹 Framework의 사실상 표준이 되어버린 spring MVC에선 아주 간단하게 다국어지원을 구현할 수 있다.

3. DBMS Charset
- DBMS인스톨시 사용할 charset을 지정하게 되어 있다. 이 경우도 반드시 UTF-8로 설정하여 인스톨.
기 인스톨 되어 있는 DBMS 의 charset을 변경할 수 있으나, 이 경우 기 저장된 data에 영향을 줄 수 있으므로 신중하게 고려.
기 저장된 데이타가 없다면 해당 DBMS의 튜토리얼을 읽어보며 charset변경 방법이 있음으로 참조.

4. 저장시간
 - Database에 특정 정보를 insert시 insert되는 시점을 특정 컬럼에 기록하게 된다. 본인의 경우 Date타입보단 varchar2를 선호하는 편이다. (이유는 여기서 거론안함.) 오라클을 예로 든다면 TO_CHAR(sysdate, 'yyyyMMddHH24miss') 형태로 저장한다.
무슨 문제가 있겠는가? 아니다 Global서비스에선 심각한 문제를 안고 있다.

이 경우 sysdate는 DBMS가 인스톨된 서버의 time을 기준으로한 날짜가 입력된다.
만약 2011년 3월 5일 오후 6시 30분에 등록된 글이라고 가정한다면 db에 저장된 정보는 20110305183000 가 될것이다.
이 글을 다수의 국가에서 본다면? 저장된 시간은 대한민국의 시간을 기준으로 저장된것이기에 대한민국과 다른 Time zone의 사용자들은 완전 엉뚱한 날짜정보를 보게 될것이다.
대한민국이 오후8시 30분이라면 동시간대에 호주 시드니는 오후10시 30분이 되고 환상의 섬 피지사람들은 오후 11시 30분이라는것이다.
본인의 경우 db에 저장시간을 java의 System.currentTimeMillis(); long값을 저장을 저장하고.
(System.currentTimeMillis() 값은 1970년 1월 1일부터 계산된 1/1000초 단위의 값으로, 세계어느곳이나 동일하다.)

이 시간을 화면에 표시할때 사용자의 Timezone값을 기준으로 출력하면된다.
이렇게 처리하면 저장된 시간을 각각의 Timezone의 시간에 맞게 표현하므로, 어느 국가에서든 올바른 저장시간을 확인하게 할 수 있다.

설정

트랙백

댓글