2012-04-11 13 views
4

LocaleInfoクラスとgetCurrentLocale()メソッドを使用して、現在のロケールをクライアントで取得しようとしました。しかし、クライアントマシン上でどのような地域設定とロケール設定をしても、常にデフォルトロケールの値が返されます。LocaleInfoを使用してGWTで現在のロケールを取得する方法

DateクラスのtoLocaleString()メソッドはロケール固有の文字列を返しますが、LocaleInfoはシステムLocaleを取得できないようです。

+0

実際に、可能なロケールの一覧を入手できる場所はありますか? [CldrLocales](http://code.google.com/p/google-web-toolkit/source/browse/releases/2.0/user/src/com/google/gwt/i18n/CldrLocales.gwt.xml)作業? – snowstreams

答えて

3

GWTのロケールは、システム/ブラウザ設定から自動的に取得されません。 the GET locale documentationあたりなどのロケールが実行時に使用するためには、次のいずれかの方法で設定することができます。

  1. アプリケーションのURLでlocaleリクエストパラメータを指定します。私。ホストページでgwt:propertyメタタグを含むことでhttp://www.myapplication.com/?locale=es
  2. <meta name="gwt:property" content="locale=es" />

    これは、本番アプリケーションのための好ましい方法です。ホストページでは、ユーザーがローカルを設定できるようにする方法や、Accept-Language request headerに基づいて優先ロケールを検出する方法など、さまざまな方法でユーザーのロケールを判断できます。

2

GWTでもしようとしないので、それは正確にJavaScriptでユーザーのロケールを取得することはほとんど不可能です[1]。
LocaleInfoアプリにコンパイルされたロケールの情報を返します。つまり、*.gwt.xml<extend-property name="locale" ... />を使用して追加したロケールの1つです。

ことがないように、[1]だけでなく、最近のバージョンでは、それは(ブラウザのコンパイル時ロケールを使用して)しようとしないが、唯一のコンパイルされたロケールのいずれかを選択するようにhttps://developers.google.com/web-toolkit/doc/latest/DevGuideI18nLocale

を参照してください。 LocaleInfoの動作に何か変更してください。

+0

私はロケールに日付と時刻のフォーマットを設定したいだけなので、JavascriptのtoLocaleは信頼できると思いました。私はサポートされているロケールのリストをモジュールファイルに追加し、コンパイル時にブラウザが正しいロケールを選択することを願っています。 私は、アプリケーションを実行するたびにロケール自体を選択するようにユーザーを想像することはできませんでした。 – snowstreams

6

GWTアプリでロケールを自動検出するには、ベースのindex.htmlファイル(「nocache.js」スクリプトを含むファイル)の名前をindex.jspに変更し、セクションに次の行を追加します。

<meta name="gwt:property" content="locale=<%=request.getLocale()%>"> 
関連する問題