2014년 8월 13일 수요일

[심심풀이]국제화 및 message/text의 한글화[자바개발자교육/자바교육/자바강좌/자바,Spring교육잘하는곳/자바,spring교육추천/자바실무교육/JAVA/JAVA교육/JAVA스프링학원/JAVA실무교육]

국제화 및 VIEW의 message/text의 한글화 

국제화란 다양한 언어 및 지역을 지원하는 것을 말합니다. 즉 언어가 바뀌더라도 코드의 수정 없이 언어에 대한 것이 지원 되어야 하며 텍스트 요소, 메시지, 이미지 등을 소스 외부에 두어 다양한 환경 변화에 능동적으로 대처가 가능 해야 합니다. 

자바 언어의 java.util.ResourceBundle은 주어진 지역에 다라 리소스를 따로 그룹핑 할 수 있는 기능을 제공 합니다. 이러한 리소스는 필드명, 버튼의 레이블, 상태를 나타내는 메시지등 인데 이미지 이름이나 에러 메시지 같은 것들도 해당 됩니다. 

스트럿츠에서는 자바에서 제공 하는 리소스 번들을 사용하지 않는 대신 비슷한 기능을 하는 org.apache.struts.util.MessageResources와 이를 실제 구현한 하위 클래스인 org.apache.struts.util.PropertyMessageResources를 사용 합니다. 

이전 강좌인 로그인 예제의 로그인 화면(login.jsp)의 경우 텍스트 글씨를 application.properties 에서 읽어 화면에 뿌려 주었던 것을 기억 하실 겁니다. 아마 이 파일 안에 메시지를 한글로 넣으신 분들은 한글이 깨지는 것을 보셨을 거구요… 

이번에는 한글도 안 깨어지면서 다양한 언어에 따라 지원 할 수 있는 국제화에 대해 알아 보기로 하겠습니다. 

주의) 리소스 번들 파일의 확장자는 .properties 이며, WEB-INF/classes 아래에 package 형태로 위치해 있어야 합니다. 

web.xml에서 다음과 같이 선언 되었다면…. 

<!-- 아래는 스트러츠 Application에서 사용할 Message Resource들을 설정 --> 
<!-- 확장자가 properties인 application.properties를 만들어 넣으면 된다 --> 
<message-resources parameter="resources.application"/> 

WEB-INF/classes/resources 아래 application.properties 파일이 존재하고 있어야 합니다. 

application.properties 파일이 다음과 같다고 했을 때… 
----------------------------------------- 
login.title = Login 
login.login = Login 
login.reset = Cancel 

prompt.id = 사용자아이디  : 
prompt.password= 비밀번호 : 

main.title=Main 


###############################################3 
error.id.required=<li>ID REQUIRED.</li> 
error.pwd.required=<li>PASSWORD REQUIRED</li> 
error.login.invalid=<li>ID/PASSWORD NOT CORRECT</li> 

errors.header=<h3><font color="red">ERROR!</font></h3> 
                  You must correct the following error(s) before proceeding:<UL> 
errors.footer=</ul><hr> 


아마도 아래처럼  login.jsp가 구성 되어 있다면 텍스트의 한글이 깨질것입니다. 

나머지 부분은 생략 했습니다. 

                <tr> 
                        <!-- Submit 버튼과 Reset 버튼을 생성 --> 
                        <!-- 버튼의 라벨은 application.properties에서 내용을 가져 옵니다 --> 
                        <th></th> 
                        <td> 
                            <html:submit> 
                                <bean:message key="login.login" /> 
                                  </html:submit> 
                        
                            <html:reset> 
                                <bean:message key="login.reset" /> 
                                  </html:reset> 
                        </td> 
                </tr>                                
------------------------------------------- 

[실행 화면] 

  


이번에는 한글 문제도 해결 하고 국제화 부분도 처리하도록 하겠습니다. 


/WEB-INF/classes/resources 에 application_en.properties를 다음과 같이 만듭니다. 


login.title = Login 
login.login = Login 
login.reset = Cancel 

prompt.id = User ID  : 
prompt.password= Password : 

main.title=Main 


###############################################3 
error.id.required=<li>ID REQUIRED.</li> 
error.pwd.required=<li>PASSWORD REQUIRED</li> 
error.login.invalid=<li>ID/PASSWORD NOT CORRECT</li> 

errors.header=<h3><font color="red">ERROR!</font></h3> 
                  You must correct the following error(s) before proceeding:<UL> 
errors.footer=</ul><hr> 


이번에는 application.properties 를 만듭니다. 


login.title = Login 
login.login = Login 
login.reset = Cancel 

prompt.id = 사용자아이디  : 
prompt.password= 비밀번호 : 

main.title=Main 


###############################################3 
error.id.required=<li>ID REQUIRED.</li> 
error.pwd.required=<li>PASSWORD REQUIRED</li> 
error.login.invalid=<li>ID/PASSWORD NOT CORRECT</li> 

errors.header=<h3><font color="red">ERROR!</font></h3> 
                  You must correct the following error(s) before proceeding:<UL> 
errors.footer=</ul><hr> 


명령프롬프트를 실행 하여 다음처럼 하세요… 
(native2ascii는 안에 있는 내용을 \uXXXX 형식인 유니코드로 바꾸어 자바 프로그램에서 한글로 읽어 낼 수가 있도록 해 줍니다. 혹시 궁금하신 분은 Java 강좌의 “Properties 파일에서 한글 읽기”를 참고하시기 바랍니다.) 

D:\Tomcat-Project\Login\WEB-INF\classes\resources>native2ascii application.properties application_kr.properties 

이 명령을 실행 하면 application_kr.properties 파일이 만들어 질겁니다. 그럼 application_kr.properties 파일을 열어 전체 내용을 복사하여 application.properties에 전체 붙여 넣습니다. 

여기까지 수행 하면 파일은 총3개가 만들어 졌습니다. 

Default인 application.properties 
브라우저의 언어가 한국어일 때 저절로 호출되는 application_kr.properties 
브라우저의 언어가 영어권일 때 저절로 호출되는 application_en.properties 

브라우저의 언어 설정이 한국어나 영어권이 아니면 default가 호출되며 한국어 이면 저절로 application_kr.properties 파일이 호출되며 영어권이면 application_en.properties 파일이 참조 됩니다. 그런데 _kr이 붙은 것과 default는 같은 내용으로 native2ascii 한 내용 입니다.(즉 한글을 디폴트로 했습니다.) 이 내용은 유니코드로 변환 한 것이기 때문에 한글이 깨지지 않고 나타납니다. 

참고로 application_ke.properties 및 application.properties 의 내용은 아래와 같습니다. 


login.title = Login 
login.login = Login 
login.reset = Cancel 

prompt.id = \uc0ac\uc6a9\uc790\uc544\uc774\ub514  : 
prompt.password= \ube44\ubc00\ubc88\ud638 : 

main.title=Main 


###############################################3 
error.id.required=<li>ID REQUIRED.</li> 
error.pwd.required=<li>PASSWORD REQUIRED</li> 
error.login.invalid=<li>ID/PASSWORD NOT CORRECT</li> 

errors.header=<h3><font color="red">ERROR!</font></h3> 
                  You must correct the following error(s) before proceeding:<UL> 
errors.footer=</ul><hr> 


Tomcat을 종료 후 다시 시작 후 login.jsp를 실행 하시면 다음과 같은 결과를 얻을 수 있습니다. (사용자아이디 :, 비밀번호: 라고 한글이 잘 나타납니다.) 

[결과] 
  

혹시 한글이 아닌 영어가 나타나시는 분은 브라우저의 언어 설정이 영어로 되어 있어서 그러하니 도구  인터넷옵션  언어를 한글로 바꾸시기 바랍니다. 

그럼 이번에는 브라우저의 언어 설정을 영어로 바꾸어 볼까요? 

도구  인터넷옵션  언어를 클릭하시면 다이얼로그 창이 나타납니다. 

여가서 영어가 없으신 분은 “추가”를 하셔서 영어를 추가 하시구요… 

그런 다음 영어를 맨 위로 올리세요…(맨 위에 오는 언어가 기본이거든요)  

이젠 영어가 기본 언어로 설정 된 것입니다. 

그런 다음 다시 login.jsp를 실행 하면(브라우저에서 reload 하세요) 

아래와 같은 결과가 나타납니다. (이번엔 라벨이 User ID, Password 와 같이 영어로 나타 납니다.) 

[결과] 
  


이상 입니다. Native2ascii 명령 기억하시구여,,, 브라우저의 언어 설정에 따라 화면의 텍스트가 한글 또는 영어로 되는 것을 잊지 마세요… 

그럼… 



평일주간[100%환급과정]
(8/18)Spring,MyBatis,Hibernate실무과정
(8/18)자바기초JDBC,Servlet/JSP까지
(8/18)PL/SQL,ORACLE HINT,TUNING
(8/25)C#4.0,WinForm,ADO.NET
(8/25)안드로이드개발자과정
(8/25)SQL기초에서 Schema Object까지
(8/25)오라클자바채용확정교육
평일야간[개인80%환급]
(8/21)Spring, MyBatis, Hibernate
(8/21)HTML5,CSS3,Ajax,jQuery마스터
(8/21)C#,Network,ADO.NET,ASP.NET
(8/26)SQL기초에서실무까지
(8/26)안드로이드개발자과정
(8/28)자바JSP,jQuery,Spring,MyBatis
주말주간[개인80%환급]
(8/16)C#,ASP.NET마스터(8/16)웹퍼블리싱 마스터
(8/16)Spring, MyBatis, Hibernate
(8/16)자바웹&스프링,마이바티스
(8/23)SQL기초에서실무까지
(8/23)자바,네트워크,웹&스프링
(8/30)안드로이드개발자과정
주말야간[개인80%환급]
(8/23)SQL기초에서실무까지
(8/23)자바,네트워크,웹&스프링

댓글 없음:

댓글 쓰기