본문 바로가기

나는개발자다/GWT

GWT 상수 or 메세지 or 국제화 정의하기 ( i18n ).

간단하다.
첨부파일 : eclipse, GWT 버전 2.40 i18nProject.zip

1. 상수 or 메세지 생성하기. 

1. 상수 or 메세지를 정의할 파일을 생성한다.  
   ex) kr.or.jhpark.client.MessageConst.properties  ( package 위치 )
 

2. MessageConst.properties와 연동할 java 파일 생성한다.
   ex) kr.or.jhpark.client.MessageConst.java

3. 상수(Constants) 나 메시지(Messages)를 사용하기 위해서는 국제화 (i18n)을 inherits 해야한다.
   ex)Project.gwt.xml 파일에 i18n를 inherits한다.
        <inherits name="com.google.gwt.i18n.I18N"/>

4.GWT.create를 이용해서 메세지와 연동한 java interface를 생성한다.
    ex) MessageConst mc = GWT.create(MessageConst.class);
  window.alert(mc.name()); 



code로 작성하게되면
1. 번
   MessageConst.properites를 생성하고 내용을 입력한다.
   name=jhpark 
            2. 번
               public interface MessageConst extends com.google.gwt.i18n.client.Messages{
String name();
   }

3.번 ,4.번은 이미 위에서 정의됨.

2. 국제화 
이미 상수 or 메세지 정의를 통해 각각의 메세지를 정의하였다. 
그럼 국가 설정 및 각각의 언어에 맞게 메세지를 정의하면 되는것이다.

MessageConst.properties를 국가별로 확장하면 되는것이다.

한국 : MessageConst_ko_KR.properties
미국 : MessageConst_en_US.properties 
영어 : 
MessageConst_en.properties  
( package : kr.or.jhpark.clinet 에 위치한다) 

ko는 ISO언어코드 , KR은 ISO국가코드이다.
위와 같이 properites가 4개로 존재하게 되면 
 MessageConst_ko_KR ( or  MessageConst_en_US) MessageConst_en.properties, MessageConst.properties 순서로 우선순위를 갖는다.

 각각 설정된 언어코드가 어떤 종류가 있는지 GWT에 알려줄 필요가 있다. 그러기 위해서는 모듈에 추가해야한다.
 project.gwt.xml의 module 사이에 추가하면 되면
 
<extend-property name="locale" values="ko_KR" />
 <extend-property name="locale" values="en" />

 
그럼 어떻게 웹브라우저에서 적절한 국가코드를 설정할 것인가? 이에대해서는 HTML문서에 설정해야 한다. 2가지 방법이 있다.
1. HTML 문서에 <head> 태그 사이에 추가한다.
  <meta name="gwt:property" content="locale=ko_KR">

2. http:// ~~~ / index.html?locale=ko_KR


그다지 복잡하지 않다.

여기서 한가지.. 그럼 어떻게 국가코드를 알수 있을까?? 
출처: 
http://www.roseindia.net/tutorials/I18N/locales-list.shtml 
LocalesList.java
  
import java.text.SimpleDateFormat;
import java.util.*;

public class LocalesList {

  static public void main(String[] args) {

  Locale list[] = SimpleDateFormat.getAvailableLocales();
   Set set = new TreeSet();
  for (int i = 0; i < list.length; i++) {
  set.add(list[i].getDisplayName() 
  +"\t\t\t:\t"+ list[i].toString());
  }
  Iterator it = set.iterator();
  while (it.hasNext()) {
  System.out.println(it.next() );
  }
  }
}
결과 : 
Albanian (Albania) :   sq_AL
Albanian : sq
Arabic (Algeria) :   ar_DZ
Arabic (Bahrain) :   ar_BH
Arabic (Egypt) :   ar_EG
Arabic (Iraq) :   ar_IQ
Arabic (Jordan) :   ar_JO
Arabic (Kuwait) :   ar_KW
Arabic (Lebanon) :   ar_LB
Arabic (Libya) :   ar_LY
Arabic (Morocco) :   ar_MA
Arabic (Oman) :   ar_OM
Arabic (Qatar) :   ar_QA
Arabic (Saudi Arabia) :   ar_SA
Arabic (Sudan) :   ar_SD
Arabic (Syria) :   ar_SY
Arabic (Tunisia) :   ar_TN
Arabic (United Arab Emirates) :   ar_AE
Arabic (Yemen) :   ar_YE
Arabic :   ar
Belarusian (Belarus) :   be_BY
Belarusian :   be
Bulgarian (Bulgaria) :   bg_BG
Bulgarian :   bg
Catalan (Spain) :   ca_ES
Catalan :   ca
Chinese (China) :   zh_CN
Chinese (Hong Kong) :   zh_HK
Chinese (Singapore) :   zh_SG
Chinese (Taiwan) :   zh_TW
Chinese :   zh
Croatian (Croatia) :   hr_HR
Croatian :   hr
Czech (Czech Republic) :   cs_CZ
Czech :   cs
Danish (Denmark) :   da_DK
Danish :   da
Dutch (Belgium) :   nl_BE
Dutch (Netherlands) :   nl_NL
Dutch :   nl
English (Australia) :   en_AU
English (Canada) :   en_CA
English (India) :   en_IN
English (Ireland) :   en_IE
English (Malta) :   en_MT
English (New Zealand) :   en_NZ
English (Philippines) :   en_PH
English (Singapore) :   en_SG
English (South Africa) :   en_ZA
English (United Kingdom) :   en_GB
English (United States) :   en_US
English :   en
Estonian (Estonia) :   et_EE
Estonian :   et
Finnish (Finland) :   fi_FI
Finnish :   fi
French (Belgium) :   fr_BE
French (Canada) :   fr_CA
French (France) :   fr_FR
French (Luxembourg) :   fr_LU
French (Switzerland) :   fr_CH
French :   fr
German (Austria) :   de_AT
German (Germany) :   de_DE
German (Luxembourg) :   de_LU
German (Switzerland) :   de_CH
German :   de
Greek (Cyprus) :   el_CY
Greek (Greece) :   el_GR
Greek :   el
Hebrew (Israel) :   iw_IL
Hebrew :   iw
Hindi (India) :   hi_IN
Hungarian (Hungary) :   hu_HU
Hungarian :   hu
Icelandic (Iceland) :   is_IS
Icelandic :   is
Indonesian (Indonesia) :   in_ID
Indonesian :   in
Irish (Ireland) :   ga_IE
Irish :   ga
Italian (Italy) :   it_IT
Italian (Switzerland) :   it_CH
Italian :   it
Japanese (Japan) :   ja_JP
Japanese (Japan,JP) :   ja_JP_JP
Japanese :   ja
Korean (South Korea) :   ko_KR
Korean :   ko
Latvian (Latvia) :   lv_LV
Latvian :   lv
Lithuanian (Lithuania) :   lt_LT
Lithuanian :   lt
Macedonian (Macedonia) :   mk_MK
Macedonian :   mk
Malay (Malaysia) :   ms_MY
Malay :   ms
Maltese (Malta) :   mt_MT
Maltese :   mt
Norwegian (Norway) :   no_NO
Norwegian (Norway,Nynorsk) :   no_NO_NY
Norwegian :   no
Polish (Poland) :   pl_PL
Polish :   pl
Portuguese (Brazil) :   pt_BR
Portuguese (Portugal) :   pt_PT
Portuguese :   pt
Romanian (Romania) :   ro_RO
Romanian :   ro
Russian (Russia) :   ru_RU
Russian :   ru
Serbian (Bosnia and Herzegovina) :   sr_BA
Serbian (Montenegro) :   sr_ME
Serbian (Serbia and Montenegro) :   sr_CS
Serbian (Serbia) :   sr_RS
Serbian :   sr
Slovak (Slovakia) :   sk_SK
Slovak :   sk
Slovenian (Slovenia) :   sl_SI
Slovenian :   sl
Spanish (Argentina) :   es_AR
Spanish (Bolivia) :   es_BO
Spanish (Chile) :   es_CL
Spanish (Colombia) :   es_CO
Spanish (Costa Rica) :   es_CR
Spanish (Dominican Republic) :   es_DO
Spanish (Ecuador) :   es_EC
Spanish (El Salvador) :   es_SV
Spanish (Guatemala) :   es_GT
Spanish (Honduras) :   es_HN
Spanish (Mexico) :   es_MX
Spanish (Nicaragua) :   es_NI
Spanish (Panama) :   es_PA
Spanish (Paraguay) :   es_PY
Spanish (Peru) :   es_PE
Spanish (Puerto Rico) :   es_PR
Spanish (Spain) :   es_ES
Spanish (United States) :   es_US
Spanish (Uruguay) :   es_UY
Spanish (Venezuela) :   es_VE
Spanish :   es
Swedish (Sweden) :   sv_SE
Swedish :   sv
Thai (Thailand) :   th_TH
Thai (Thailand,TH) :   th_TH_TH
Thai :   th
Turkish (Turkey) :   tr_TR
Turkish :   tr
Ukrainian (Ukraine) :   uk_UA
Ukrainian :   uk
Vietnamese (Vietnam) :   vi_VN
Vietnamese :   vi