Javaのi18n機能をテストしていますが、問題があります。クラスルートにない場合、言語ファイルを読み込めません。現在、私のファイルは/lang
ディレクトリにあります。
ここでいくつかの回答をSOで調べ、それをclasses
サブディレクトリに配置し、lang.Messages
のようにロードし、完全なロケーションルーティング/Test/lang/Message
(テストはプロジェクト名)を使用し、/lang/Message
それでも私は:を取得しています
Java.util.MissingResourceException: Can't find bundle for base name
エラー。
他に試すことはありますか?
私のファイル構造は次のとおりです。
Test/lang/Messages_es.properties
Test/src/test/Main.Java
import Java.util.Locale;
import Java.util.ResourceBundle;
import javax.swing.JFrame;
public class Main {
public static void main(String[] args) {
Locale currentLocale;
ResourceBundle messages;
currentLocale = new Locale("es");
messages = ResourceBundle.getBundle("Messages", currentLocale);
System.out.println(messages.getString("Messagesgreetings"));
System.out.println(messages.getString("Messagesinquiry"));
System.out.println(messages.getString("Messagesfarewell"));
}
}
プロパティファイル名にロケール名を含める必要があります。
プロパティファイルの名前をMessages_es.properties
に変更します
パッケージを宣言していないため、コンパイルされたクラスファイルとプロパティファイルの両方を同じルートディレクトリに置くことができます。
コメントに応じて編集:
このプロジェクト構造があるとしましょう:
test\src\foo\Main.Java
(foo
はパッケージ名です)
test\bin\foo\Main.class
test\bin\resources\Messages_es.properties
(プロパティファイルはクラスパスのresources
フォルダーにあります)
これは次のコマンドで実行できます。
c:\test>Java -classpath .\bin foo.Main
更新されたソースコード:
package foo;
import Java.util.Locale;
import Java.util.ResourceBundle;
import javax.swing.JFrame;
public class Main {
public static void main(String[] args) {
Locale currentLocale;
ResourceBundle messages;
currentLocale = new Locale("es");
messages = ResourceBundle.getBundle("resources.Messages", currentLocale);
System.out.println(messages.getString("Messagesgreetings"));
System.out.println(messages.getString("Messagesinquiry"));
System.out.println(messages.getString("Messagesfarewell"));
}
}
ご覧のとおり、「resources.Messages」という名前のプロパティファイルを読み込んでいます。
お役に立てれば。