国際化に問題があります。GWTアプリケーションで2つの言語のサポートを実装しようとしています。残念ながら、UiBinderを使用してそれを行う方法の完全な例を見つけることはできませんでした。それが私がしたことです:
私のモジュールI18nexample.gwt.xml:
<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='i18nexample'>
<inherits name="com.google.gwt.user.User" />
<inherits name='com.google.gwt.user.theme.clean.Clean' />
<inherits name="com.google.gwt.i18n.I18N" />
<inherits name="com.google.gwt.i18n.CldrLocales" />
<entry-point class='com.myexample.i18nexample.client.ExampleI18N' />
<servlet path="/start" class="com.myexample.i18nexample.server.StartServiceImpl" />
<extend-property name="locale" values="en, fr" />
<set-property-fallback name="locale" value="en" />
</module>
私のインターフェースMessage.java:
package com.myexample.i18nexample.client;
import com.google.gwt.i18n.client.Constants;
public interface Message extends Constants {
String greeting();
}
同じパッケージcom.myexample.i18nexample.client
に3つのプロパティファイルがあります。
Message.properties:
greeting = hello
Message_en.properties:
greeting = hello
Message_fr.properties:
greeting = bonjour
私のUiBinderファイルGreeting.ui.xml:
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder
xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui"
ui:generateFormat="com.google.gwt.i18n.rebind.format.PropertiesFormat"
ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator"
ui:generateLocales="default" >
<ui:with type="com.myexample.i18nexample.client.Message" field="string" />
<g:HTMLPanel>
<ui:msg key="greeting" description="greeting">Default greeting</ui:msg>
</g:HTMLPanel>
</ui:UiBinder>
アプリケーションが起動すると、常にブラウザに出力が表示されます。
Default greeting
なんで?私は何が間違っているのですか?
別のURLからアプリケーションを実行しようとしました:
http://127.0.0.1:8888/i18nexample.html?gwt.codesvr=127.0.0.1:9997
http://127.0.0.1:8888/i18nexample.html?locale=en&gwt.codesvr=127.0.0.1:9997
http://127.0.0.1:8888/i18nexample.html?locale=fr&gwt.codesvr=127.0.0.1:9997
結果は変わりません。私は最後のケースでメッセージを期待していましたがbonjour
。
たとえばg:Buttton
、メッセージの代わりに使用する場合ui:msg
:
<g:HTMLPanel>
<g:Button text="{string.greeting}" />
</g:HTMLPanel>
次に、テキスト付きのボタンの結果として取得します"hello"
そして、URLを入力すると:
http://127.0.0.1:8888/i18nexample.html?locale=fr&gwt.codesvr=127.0.0.1:9997
ボタンのテキストがに変わります"bonjour"
。ここでは、すべてが期待どおりに機能します。しかし、なぜ私の最初のケースでは国際化が機能していないのですか?
そして、次の間に違いがあるかどうか:
<ui:msg description="greeting">Default greeting</ui:msg>
<ui:msg description="greeting">hello</ui:msg>
<ui:msg description="greeting"></ui:msg>
これらの場合、異なる結果が必要ですか?正しく書く方法は?
GWTの国際化の原則と、私の例が機能しない理由を説明してください。任意の提案をいただければ幸いです。