아키텍쳐관점에서 필요기술을 접목하여 구현가능한 방법을 제시하고자 한다.
자료출처는 인터넷환경에 존재하는 검색엔진( 구글 : 80%, 네이버 : 20% )의 도움을 받았다.
시스템아키텍쳐 구성은 아래와 같다.
클라이언트 단은 웹브라우저를 사용하고, 프리젠테이션 단은 JSF를 사용하여 간단하게 구현하고자 한다.
WAS는 Tomcat을 사용하고, 개발툴은 Eclipse를 이용하였다.
프로그램언어는 자바언어이고, 다국어지원을 위해 I18N과 L10N에서 지원하는 패키지를 사용한다.
Encoding CharacterSet은 UTF-8을 사용한다.
ResourceBundle에서 가져올 Message는 한국어, 영어 , 일어, 중국어로 구성된 파일을 만든다.
ReourceBundle을 막상 작성할려고 하면 번거로운데... 플러그인이 존재한다.
사용법 : 자바 ResourceBundle사용하기 http://decoder.tistory.com/48
플러그인 사이트 : ResourceBundle Editorhttp://www.resourcebundleeditor.com/wiki/ResourceBundleEditor
금방 플러그인설치하고 사용해봤는데 예상외로 기능이 탁월한 것으로 보입니다.
스트럿츠 프레임워크에서의 메시지 처리
스트럿츠를 사용하면서 메시지 파일을 매번 native2ascii로 컴파일하기 짜증나고 귀찮으셨죠?
build.xml에 걸어놔도 결국 똑같은 파일이 2개씩 유지되는게 왠지 찜찜하지 않으신가요?
이것은 스트럿츠에서 메시지 파일을 읽어올때 사용하는 Java의 Properties 클래스가 ISO 8859-1만 지원해서 생기는 문제로, 스트럿츠의 MessageResourcesFactory를 상속받아 메시지 파일을 UTF-8로 읽도록 구현하면 해결할 수 있습니다. UTF-8은 단일 문자셋으로 여러 언어를 지원하므로 한국어 뿐만 아니라 다른 언어를 사용할때도 번거롭게 native2ascii를 사용할 필요가 없게 됩니다.
Ant에서 native2ascii 사용하기
<target name="native2ascii" depends="javadoc">
<native2ascii encoding="UTF-8" src="${src.dir}" dest="${class.dir}" includes="**/*.properties">
</native2ascii>
</target>
사용결과물은 test.txt파일에 金起燮! 내용을 저장하고, result.txt로 변환하면 결과는 아래와 같다.
\ufffd\ufffd\ufffd\ufffd\ufffd!
결론적으로 위의 플러그인은 native2ascii 을 편하게 사용하기 위해서 만든것으로 보인다.
생각에 대한 결론
1. 웹화면에서 Request로 웹서버에 요청할때 파라미터 값은 필터링에서 적용한 Encoding Type에 따라변환될 것이다.
2. 웹서버에서 Response되어서 웹화면에 나타날때는 Page 태그에 적용된 Encoding Type에 따라 변환될것이다.
3. 자원(Resource)파일들은 저장시에 native2ascii를 사용하여 웹화면에서 사용하는 Page 태그에 해당하는 Encoding Type
으로 변환하여 저장할 필요가 있다. 화면에서 문자가 깨지지 않는다. 다국어인 경우에는 UTF-8 이 해답일 것이다.