1

SmartGWT を使用してプロジェクトを開発していて、それを国際化したいと考えていますが、EntryPoint (onModuleLoad) でブラウザーの言語を知るにはどうすればよいですか? サーバー側でSpringを使用しており、onModuleLoadで、プロパティファイルからデータを収集しているサービスにRPC呼び出しを送信し、国際化のためのすべてのキー値を含むMapで応答するため、IUウィジェットの作成中に私はこのLables.get( "myLabel")のように私のマップを使用しています。everytings が正常に動作するようになったので、ブラウザーの言語を検出し、それを使用して適切なプロパティを照会したいと考えています。私の英語がとても悪い場合は申し訳ありません

4

3 に答える 3

1

それから私は汚い解決策で終わりました.Lt_Shadeが私に言ったようにjavascript関数を作成しました。 EntryPoint は HTML ページの前に実行されるため、Javascript 関数の前に navigator.language が見つからないため、EntryPoint 内で JavaScript オブジェクトを呼び出す JSNI 関数を作成しました (Java:gwt コードから Javascript 関数を呼び出す)。私は呼び出しを強調して主張し、navigator.language がロードされていることを確認し、それを取得できるようにします。

私のHTMLページで

....
<script language="javascript">
    function loadLocaleLanguage(){
        document.getElementById("localeLanguage").setAttribute("value",(navigator.language).substring(0,2); // I don't need Country code
    }
</script>
...
<input type="hidden" id="localeLanguage" value="" />
....

私のエントリポイントで

public static native void getLocaleLanguage() /*-{
      $wnd.loadLocaleLanguage();
}-*/;

public void onModuleLoad(){
    // I call my javascript function to ensure that the input have my localeLanguage
    getLocaleLanguage();
    // now I'm retreiving it using DOM thanks to Document object
    String localeLanguage = Document.get().getElementById("localeLanguage").getAttribute("value");
    ....
}

それは最善の解決策ではないと確信していますが、誰かが EntryPoint 内の httpRequest にアクセスする方法 (accept-language を含んでいます) を見つける方法、または EntryPoint の navigator.language に直接アクセスする方法を誰かが見つけるのを手伝ってくれれば、少なくとも機能します。良くなるでしょう。みんなありがとう

于 2013-08-24T13:01:08.710 に答える
0

これが役立つかどうかはわかりませんが、Java サーブレットで言語を取得するための Java コードを含むこのような質問があります。

Java サーブレットでユーザーの国と言語を自動的に選択する

次のような JavaScript 関数を EntryPoint に追加することもできます。

var userLang = (navigator.language) ? navigator.language : navigator.userLanguage; 
alert ("The language is: " + userLang);
于 2013-08-23T11:18:10.623 に答える