1

システムの現在の言語を取得して、それをResourceBundleに使用するにはどうすればよいですか?

クライアントのマシンが日本語で実行されているとしましょう。アプリケーションを日本語に切り替えたいと思います。その言語ファイルが利用できない場合は、フォールバックソリューションが必要です。

ResourceBundleを使用できることはわかっていますが、上記の設定をどのように実行しますか?

ResourceBundle bundle = ResourceBundle.getBundle("lang", new Locale("jp", "JP"));
4

2 に答える 2

1

リソースバンドルは、システムの現在の言語を自動的に試行し、それが存在しない場合はデフォルトにフォールバックします(ResourceBundle.getBundle("lang")システム言語がjp_JPlang_jp_JP.properties-> land_jp.properties->であると想定して、次の順序で検索しますlang.properties)。ResourceBundleが名前を解決するために使用するプロセスをここで見ることができます

于 2012-07-02T19:31:04.823 に答える
0

http://java.sun.com/developer/technicalArticles/Intl/ResourceBundles/から

製品の言語翻訳ごとに、初期リソースバンドルの新しいバージョンを作成します。たとえば、すべての英語のテキストを保存するためにMyResourceを作成する場合、フランス語のテキストを保存するために同様の名前のファイルを作成します。リソースバンドルは、本質的に同じバンドルの潜在的に多数のバージョンを区別する命名規則を使用します。各バンドル名は、ベース名とオプションのロケール識別子で構成されます。一緒に、これらの2つの部分は、パッケージ内のバンドルを一意に識別します。

上記の例を使用すると、フランス語バージョンのリソースにはMyResource_fr_FRという名前を付ける必要があります。カナダフランス語バージョンはMyResource_fr_CAである必要があります。

ロケール名をバンドルのベース名に追加すると、バンドルの使用法が特定のロケールに効果的にリンクされます。ResourceBundle.getBundle( "MyResource")を使用してバンドルを要求すると、getBundleメソッドはデフォルトのロケール識別子をベース名に追加し、適切なバンドルをロードします。ロケールがfr_CAの場合、ResourceBundle.getBundle( "MyResource")を呼び出すと、MyResource_fr_CAバンドルがロードされます。

于 2012-07-02T19:30:42.060 に答える