2008-08-19 15 views
9

GWTでは、アプリケーションでサポートされているロケールを指定する必要があります。コードは、ロケールごと(他のバージョンの横に)に1つずつ、さまざまなファイルにコンパイルされますが、私はクライアントにURLを1つだけ与えなければなりません。このURLは、ブラウザが推奨するロケールに従って表示する必要があるページとします。 ブラウザで優先されるロケールを作成したいので、ロケールにHTTPパラメータを設定したくありません。 これはGWTでどのようにコード化できますか?GWTアプリケーションでのロケール情報の取得方法

私はApacheの書き換えルールを使用してこれにする必要がありますか?私はそれを打ち明けましたが、私は書き換えルールでこのようなパラメータにeaselyアクセスすることはできないと思います。

どうもありがとう、 ジュゼッペ

答えて

3

私は間違ってドキュメントを読んでいない限り、私はあなたが何もする必要はありだと思いません。クライアントのプロパティをロケールにすることにより

GWT and Locale

、gwt.jsにおける標準の起動プロセスを最適化し、(それが聞こえるかもしれないよりも簡単です!)使いやすさを提供し、アプリケーションの適切なローカライズされたバージョンを選択しますパフォーマンス、および最小スクリプトサイズ。

あなたのモジュールがすべてのロケールの選択肢を追加している限り、それは自動であるべきですか?

+1

その文書会談。この「手動」の追加は、ブラウザが既に必要なロケールのリストを送信するので、悪いことです。 –

5

GWTは国際化をサポートしています。このlinkを参照してください。 i18nCreatorコマンドを使用すると、projectCreatorとapplicationCreatorがGWTアプリケーションを設定する方法と同様に、国際化インフラストラクチャを設定するのに役立ちます。

国際化する必要がある静的な文字列(つまり無効なエントリ)がある場合、プロパティファイルとインフラストラクチャを作成するために、i18nCreatorコマンドに追加のフラグは必要ありません。

パラメータを受け入れる必要がある文字列(Hello {0})がある場合、プロパティファイルとインフラストラクチャを作成するには、-createMessagesフラグをi18nCreatorコマンドに渡す必要があります。

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

定数やメッセージを拡張し、メソッド(名前を定義し、あなたのプロパティファイルと同じパッケージ内のJavaインタフェースを定義します。

は今、あなたのモジュールは、あなたの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

私はあなたと同じ問題を抱えていましたが、現在のロケールを知る必要があります(私はローカライズしたいデータのための第2のサーバを要求しています)。 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"/> 
関連する問題