2012-07-26 6 views
0

설명한대로 i18n을 수행하는 Uibinder 방식이 있습니다. here
그리고 나서 GWT i18n에 대한 제안은 this입니다.uibinder에 대한 대안 I18n

첫 번째 해결 방법에 몇 가지 문제가 있으므로 대안을 고려하고 있습니다. 두 방법의 장점과 단점을 알고 싶습니다. 그래서 무엇을 선택해야할지 압니다.
알려주세요.

답변

4

첫 번째 해결 방법은 매우 자세한 정보이므로 특정 폴더에 현지화 파일을 넣어야하며 a kind of a nightmare으로 설명되어 있지만 런타임 변수가있는 텍스트는 지원됩니다. 두 번째 솔루션은 메시지의 변수를 지원하지 않지만 훨씬 쉽게 사용할 수 있습니다.

두 번째 솔루션은 2 개의 사용 사례를 지원합니다. 그들은 모두 솔루션을 찾는 방법이다 :

일반 텍스트 :

해결 방법 1 :

<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' 
    ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat' 
    ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator" 
    ui:generateLocales="default"> 
    <div><ui:msg key="helloWorld" description="Greeting">Hello, world.</ui:msg></div> 
</ui:UiBinder> 

해결책 2 : 솔루션 1 태그 안의 텍스트에서

<ui:with field='i18n' type='x.y.client.i18n.MyMessages' /> 
.... 
<div><ui:text from="{i18n.helloWorld}" /></div> 

것 기본 텍스트가되고 description은 description 속성에 있습니다. 두 번째 솔루션에서는 Messages을 확장하는 인터페이스 클래스 MyMessages에 추가 할 것입니다.

static 메소드 인수 :

해결 방법 1 :

<th title="Gross receipts"> 
    <ui:attribute ui:name='title' ui:description='Tooltip text for gross column'/> 
    ... 
</th> 

해결 방법 2 : 인수를 전달과 같은 메시지

<th title="{i18n.grossReceiptsTitle}">...</th> 

모든 고급 사용이 솔루션이 불가능하지만, initWidget 호출 후에 항상 생성자에 다시 추가 할 수 있습니다.

+1

UiBinder I18N은 메시지 안에 위젯이있을 때 정말 빛납니다. '으로 되도록 이라고 밝혔다. 그리고'ui : baseMessagesInterface'는 소위 "솔루션 2"와 거의 비슷한 악몽에 지나지 않습니다. –