0

ユーザーが英語とスウェーデン語の両方で利用できるはずのサイトがあります。私の質問は、ユーザーに表示する言語(つまり、どの数値形式など)をどのように決定するかです。

インターフェイスjavax.servlet.ServletRequestはメソッドを定義し、HTTPリクエストgetLocale()のヘッダーに基づいてロケールを返すように指示します。Accept-languageただし、これは、ドイツ語のブラウザを使用している人が私のサイトにアクセスした場合、Localeオブジェクトはドイツ語のものになることを意味します。また、私のサイトはドイツ語をサポートしていないため、リクエストのロケールは私の言語ファイルのいずれとも一致しません。

getLocale()これを構成する方法はありますか、またはこれを行うためにメソッドの機能をオーバーライドする必要がありますか?

getLocale()ユーザーに表示する言語を決定するために使用する正しい方法ですか、それとも他の目的で使用されることになっている方法ですか?

そして明確にするために、私が欲しいのは次のとおりです。ブラウザによって提供されるロケールが私のサイトでサポートされている場合は、それを使用します。それ以外の場合は、私のサイトのデフォルトのものを使用してください(英語)。

4

1 に答える 1

1

このgetLocale()方法は正しい方法ですが、拡張する必要はありません。Javaの通常の国際化サポートは、はるかに簡単でクリーンな方法で、必要な動作をすでに提供しています。

たとえば、次の言語ファイルを提供するとします。

  • MyStrings.properties
  • MyStrings_sv_SE.properties

最初のファイルには英語のテキストが含まれ、2番目のファイルにはスウェーデン語のテキストが含まれています。ロケールがスウェーデンの場合、スウェーデン語ファイルが使用されます。それ以外の場合は、言語拡張子のないファイルが使用されます。

テキストを取得するには、次のようにします。

ResourceBundle strings = ResourceBundle.getBundle("MyStrings");
String hello = strings.getString("HELLO_USER");
于 2012-05-24T20:24:46.550 に答える