- - PR -
Strutsの多国語対応に関して
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-07-11 17:50
struts1.1を使用して開発しております。
プロパティファイルとして、デフォルト(内容は英語です)、英語、日本語用のファイルを用意しております。 ブラウザ(IE6)の言語設定が日本語、英語の場合は、適切な言語のプロパティファイルから メッセージを取得するのですが、それ以外の言語設定を優先させると、デフォルトのプロパティファイルの英語ではなく、日本語用のプロパティファイルから取得した日本語のメッセージが表示されてしまいます。 Actionなどで、セッションコンテキストへのロケールの登録は、特別しておりません。 ブラウザ(IE6)の言語設定が日本語、英語以外の場合は、デフォルトのプロパティファイルから メッセージを取得するのではないのでしょうか。 ちなみにサーバの環境変数Langは、ja_JP.eucJPです。 |
|
投稿日時: 2006-07-11 20:23
ロケールが不明の場合、Locale#getLocale()が使用されています。
日本語の環境であれば、通常ja_JPが返ります。 Locale#setLocale(new Locale("")); で、サフィックスなしのリソースが利用されると思いますが、 影響範囲を考えると、お勧めはしません。 |
|
投稿日時: 2006-07-11 21:26
ご回答ありがとうございます。
ブラウザ(IE6)の言語設定が日本語、英語以外の場合、 例えば、ドイツ語の場合、Strutsがセッションコンテキストに ドイツ語のロケールを設定していることは、ログより確認しております。 それでも、デフォルトのプロパティファイルではなく、日本語のメッセージを 表示します。 これは、どこか設定がおかしいのでしょうか。 |
|
投稿日時: 2006-07-11 23:06
リクエストのロケールが取得できても、
該当するリソースがなければ、デフォルトのロケールを使用しています。 org.apache.struts.util.PropertyMessageResourcesのコードを参照されてみてはいかがでしょうか。 |
|
投稿日時: 2006-07-12 01:27
送信されたリクエストのロケールに該当するリソースが無い場合、サーバのロケールを使うようです。
サーバのロケールに対するリソースも無い場合、サフィックス無しリソースを使うようです。 対応リソースが無い場合にデフォルトのリソースを使うのであれば
単に英語のリソースを使うのであれば
で実現できそうですがどうでしょうか(試してません)。 |
|
投稿日時: 2006-07-12 22:10
デフォルトのロケールを設定して済む話であれば
VMの起動オプションでシステムプロパティuser.languageを 変更してやればよいのではないでしょうかね? |
1