- PR -

Strutsの多国語対応に関して

1
投稿者投稿内容
yabu
会議室デビュー日: 2006/07/11
投稿数: 2
投稿日時: 2006-07-11 17:50
struts1.1を使用して開発しております。

プロパティファイルとして、デフォルト(内容は英語です)、英語、日本語用のファイルを用意しております。
ブラウザ(IE6)の言語設定が日本語、英語の場合は、適切な言語のプロパティファイルから
メッセージを取得するのですが、それ以外の言語設定を優先させると、デフォルトのプロパティファイルの英語ではなく、日本語用のプロパティファイルから取得した日本語のメッセージが表示されてしまいます。

Actionなどで、セッションコンテキストへのロケールの登録は、特別しておりません。

ブラウザ(IE6)の言語設定が日本語、英語以外の場合は、デフォルトのプロパティファイルから
メッセージを取得するのではないのでしょうか。
ちなみにサーバの環境変数Langは、ja_JP.eucJPです。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2006-07-11 20:23
ロケールが不明の場合、Locale#getLocale()が使用されています。
日本語の環境であれば、通常ja_JPが返ります。

Locale#setLocale(new Locale(""));
で、サフィックスなしのリソースが利用されると思いますが、
影響範囲を考えると、お勧めはしません。
yabu
会議室デビュー日: 2006/07/11
投稿数: 2
投稿日時: 2006-07-11 21:26
ご回答ありがとうございます。

ブラウザ(IE6)の言語設定が日本語、英語以外の場合、
例えば、ドイツ語の場合、Strutsがセッションコンテキストに
ドイツ語のロケールを設定していることは、ログより確認しております。

それでも、デフォルトのプロパティファイルではなく、日本語のメッセージを
表示します。

これは、どこか設定がおかしいのでしょうか。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2006-07-11 23:06
リクエストのロケールが取得できても、
該当するリソースがなければ、デフォルトのロケールを使用しています。

org.apache.struts.util.PropertyMessageResourcesのコードを参照されてみてはいかがでしょうか。
cmnd.opt.esc
会議室デビュー日: 2005/06/16
投稿数: 1
投稿日時: 2006-07-12 01:27
送信されたリクエストのロケールに該当するリソースが無い場合、サーバのロケールを使うようです。
サーバのロケールに対するリソースも無い場合、サフィックス無しリソースを使うようです。

対応リソースが無い場合にデフォルトのリソースを使うのであれば

  • MessageResourcesのサブクラスを自前で用意する
  • サーバの環境を、英語でも日本語でもない言語に設定する


単に英語のリソースを使うのであれば

  • サーバの環境を英語に変更する


で実現できそうですがどうでしょうか(試してません)。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2006-07-12 22:10
デフォルトのロケールを設定して済む話であれば
VMの起動オプションでシステムプロパティuser.languageを
変更してやればよいのではないでしょうかね?
1

スキルアップ/キャリアアップ(JOB@IT)