3

JDK 7 を使用した JSF 2.1 アプリケーションで、ユーザーが好みの言語を保存できるようにするソリューションを探しました。そのため、次回のログイン時にデータベースから言語を受け取り、デフォルト (ブラウザ) の言語に置き換える必要があります。私の唯一の問題は、データベースに java.util.Locale を保存する方法ですか? 何時間ものグーグル検索の後、「forLanguageTag Factory Method」であるJDK 7内の新しい機能を見つけました。このメソッドはロケールを返し、そのために必要なのは IETF BCP 47 標準文字列だけです。

これは本当にシンプルで、私にとっては素晴らしいことのように思えます。しかし、この「IETF BCP 47 標準」文字列を既存のロケールから取得するにはどうすればよいですか? API を調べましたが、「IETF BCP 47 標準」に相当するものは見つかりませんでした。

4

2 に答える 2

7

Locale.toLanguageTagを検討してください:

[a] ロケールを表す整形式のIETF BCP 47言語タグを返します。

使用例:

String expectedTag = "en-US";
Locale locale = Locale.forLanguageTag( expectedTag );
String actualTag = locale.toLanguageTag();
Assert.assertEquals( expectedTag, actualTag );

注: javadocに記載されているように、いくつかの制限があります。

于 2012-10-08T22:01:57.257 に答える
4

言語に興味があるだけなら、を使用Locale.getLanguage()してロケールを文字列new Locale(String language)に変換し、文字列をロケールに変換します。

Locale 全体を保存する場合は、 と、文字列を Locale の 3 つの部分に変換するためにLocale.toString()分割するカスタム メソッドを使用します。_

于 2012-10-08T20:51:53.197 に答える