ロケールを他の言語に変更しても、GWTDatepickerが「en」ロケールで表示されます。* .gwt.xmlファイルで指定したくありません。必要なのは、ブラウザーのロケールから取得することです。これに対する回避策??????
3 に答える
GWTは、デフォルトではブラウザロケールを使用しません。あなたはそうするようにそれを言わなければなりません。
<set-configuration-property name="locale.useragent"
value="Y" />
<set-configuration-property name="locale.searchorder"
value="queryparam,cookie,useragent,meta" />
これはすべてのブラウザで機能するとは限らないことに注意してください。それがデフォルトでアクティブ化されていない理由だと思います。これまでのところ、IEは私が知っている唯一の例外です。
動的I18Nと呼ばれるのは、変換された定数を提供することだけです。その他すべて(数値の書式設定、日付の書式設定、複数形の規則など)については、アプリ内でサポートされているロケールをコンパイルする必要があります(<extend-property name="locale" values="…" />
)。
別の方法として、コンパイルされたデータからではなく(または同等の)から情報を取得する独自の実装(の場合は、を使用<replace-with>
)を(ルールを使用して)オーバーライドすることもできます。ただし、これらのAPIはGWTのバージョン間で変更される可能性があります( GWT 2.6で変更されることはすでにお伝えできます)。DatePicker
DateTimeFormatInfoImpl
Dictionary
結局、新しいロケールのサポートを追加するときは、上記の道を進むよりも、GWTアプリを再コンパイルする方がおそらく簡単です。
ブラウザのロケール(通常はかなり制限され、すべての場合に利用できるわけではないなど)を使用する場合は、Thomasの回答(具体的には、アプリが拡張プロパティタグでサポートする必要のあるすべてのロケールを指定する)の組み合わせが必要です。 )およびlocale.useragentプロパティを設定します(順序を変更したり、一部のプロバイダーを無効にしたりする場合を除いて、locale.searchorderを設定する必要はありません)。
具体的には、アプリのgwt.xmlファイルに次を追加します。
<inherits name="com.google.gwt.i18n.I18N"/>
<extend-property name="locale" values="en"/>
<extend-property name="locale" values="fr"/>
... etc ...
<set-configuration-property name="locale.useragent" value="Y"/>
置換ルールは必要ありません。GWTi18nドキュメントを参照してください