LocaleInfoクラスとメソッドgetCurrentLocale()を使用して、クライアントの現在のロケールを取得しようとしました。ただし、クライアントマシンでの地域およびロケールの設定に関係なく、常にデフォルトのロケールの値が返されます。
DateクラスのtoLocaleString()メソッドはロケール固有の文字列を返しますが、LocaleInfoはシステムのロケールを取得できないようです。
GWT アプリでロケールを自動検出するには、ベースとなる index.html ファイル (「nocache.js」スクリプトを含むファイル) の名前を index.jsp に変更し、セクションに次の行を追加します。
<meta name="gwt:property" content="locale=<%=request.getLocale()%>">
GWTのロケールは、システム/ブラウザー設定から自動的に取得されません。GETロケールのドキュメントに従って、実行時に使用するロケールは、次の2つの方法のいずれかで設定できます。
locale
アプリケーションのURLでリクエストパラメータを指定する。つまりhttp://www.myapplication.com/?locale=es
gwt:property
ホストページにメタタグを含めると、次のようになります。
<meta name="gwt:property" content="locale=es" />
これは、実稼働アプリケーションに推奨される方法です。Accept-Language
ホストページは、ユーザーがローカルを構成できるようにする、またはリクエストヘッダーに基づいて優先ロケールを検出するなど、さまざまな方法でユーザーのロケールを決定できます。
JavaScriptでユーザーのロケールを正確に取得することはほとんど不可能であるため、GWT は試しません [1]。アプリでコンパイルし
LocaleInfo
たロケールの中から選択したロケールに関する情報を返します。つまり、 で使用して追加したロケールの 1 つです。<extend-property name="locale" ... />
*.gwt.xml
https://developers.google.com/web-toolkit/doc/latest/DevGuideI18nLocaleを参照してください
[1] 最近のバージョンでは (ブラウザのコンパイル時のロケールを使用して) 試みますが、コンパイルされたロケールの 1 つを選択するだけなので、 の動作は何も変わりませんLocaleInfo
。