2008-08-19 7 views
9

GWT에서 내 응용 프로그램에서 지원되는 로캘을 지정해야합니다. 이 코드는 여러 파일 (각 버전 별)마다 컴파일되지만 클라이언트에게 URL 하나만 제공해야합니다. 이 URL은 브라우저가 선호하는 로케일에 따라 표시되어야하는 페이지입니다. 브라우저에서 선호하는 로케일을 필요로하므로 로켈 용 HTTP 매개 변수를 갖고 싶지 않습니다. 어떻게 이것을 GWT로 코딩 할 수 있습니까?GWT 응용 프로그램에서 로캘 정보를 얻는 방법

아파치 재 작성 규칙을 사용하여이 문제를 해결해야합니까? 나는 그것을 thie했지만 재 작성 규칙에서 easely 같은 매개 변수에 액세스 할 수 없다고 생각합니다.

고마워, 주세페

답변

3

내가 설명서를 읽고있다하지 않는 한이 잘못 난 당신이 아무것도 할 필요가 있다고 생각하지 않습니다. 클라이언트 속성을 로케일 만듦으로써

GWT and Locale

이 gwt.js의 표준 시작 프로세스가 사용 편의성 (그것이 들리는 것보다 쉽다!)를 제공하는 응용 프로그램의 적절한 지역화 된 버전을 선택, 최적화 성능 및 최소 스크립트 크기가 포함됩니다.

내가 읽는 방식대로 모듈에서 모든 로케일 선택 사항을 추가하면 자동으로 실행해야합니다.

+1

그 문서 회담. 이 "수동"추가는 브라우저가 원하는 로케일 목록을 이미 보내므로 좋지 않습니다. –

5

GWT는 국제화를 잘 지원합니다. 이 link을 참조하십시오. i18nCreator 명령을 사용하면 projectCreator 및 applicationCreator가 GWT 응용 프로그램을 설정하는 것과 비슷한 방식으로 국제화 인프라를 설정할 수 있습니다.

국제화해야하는 정적 문자열 (즉, 잘못된 항목!)이있는 경우 i18nCreator 명령에 추가 플래그가 없어도 속성 파일 및 인프라를 만들 수 있습니다.

매개 변수를 허용해야하는 문자열 (예 : Hello {0})이있는 경우 속성 파일 및 인프라를 생성하려면 i18nCreator 명령에 -createMessages 플래그를 전달해야합니다.

<inherits name="com.google.gwt.i18n.I18N"/> 

상수 또는 메시지를 확장 및 방법 (이름을 정의하여 속성 파일과 같은 패키지에 자바 인터페이스를 정의

지금 당신의 모듈은 MyApplication.gwt.xml의 국제화 모듈을 포함 할 필요가 모든 문자열을 반환하는 속성 항목과 일치합니다.

MyConstants.properties에는 다음이 포함

errorMessage=Invalid Entry! 

MyConstants.java에는 다음이 포함

이제
import com.google.gwt.i18n.client.Constants; 

public interface myConstants extends Constants { 
    String errorMessage(); 
} 

하면 응용 프로그램에서 이러한 국제화 된 문자열에 액세스 할 수는 :

public class MyApplication implements EntryPoint { 
    private static final MyConstants constants = (MyConstants)GWT.create(MyConstants.class); 

    public void onModuleLoad() { 
     final Label errorMessage = new Label(constants.errorMessage); 
    } 
} 

GWT가에 대한 인터페이스를 구현 너 자동적으로.

비슷한 방법으로 메시지를 가져올 수 있습니다.

이렇게하면 시작하는 데 도움이되기를 바랍니다.

13

나는 당신과 같은 문제가 있었지만 현재 로케일을 알고 싶습니다. (나는 지역화 할 수있는 데이터를 얻기 위해 두 번째 서버를 요청했습니다.)이 클래스를 발견했습니다 : com.google.gwt.i18n.client.LocaleInfo#getCurrentLocale(). GWT가 현재 사용하는 것을 제공합니다.

+0

eppesuig 나는 이미 답을 알고 있지만 해결책을 찾을 때이 페이지에서 느낀 것처럼 나는 다른 사람들도 아마 여기에 빠질 것이라고 말했다. BR –

3

확인이 com.google.gwt.i18n.client.LocaleInfo.getCurrentLocale() 각 URL에 = foo는? 추가 로케일에 대한

2
<inherits name="com.google.gwt.i18n.I18N"/> 

<!-- Use browser-specified locale for i18n --> 
<set-configuration-property name="locale.useragent" value="Y"/> 

<!-- Specify locales your application support --> 
<extend-property name="locale" values="en"/> 
<extend-property name="locale" values="de_DE"/> 
<extend-property name="locale" values="ru_RU"/> 
관련 문제