これは本当に単純な質問で、私には理解できません。
ローカリゼーションには、(Eclipse によって生成された)messages.properties
ファイルとクラスを使用します。Messages
私はこのコードを持っています:
public class LocaleTest {
public static void main(String[] args) {
System.out.println(Messages.getString("LocaleTest.LocaleTestMessage")); //$NON-NLS-1$
}
}
および 2 つのプロパティ ファイル:
メッセージのプロパティ
LocaleTest.LocaleTestMessage=これはロケール テストです。
messages_es.properties
LocaleTest.LocaleTestMessage=Esta es la prueba de locales.
messages.properties
およびファイルは、Messages.java
Eclipse の「Externalize Strings」機能 ( Source → Externalize Strings... ) によって作成されます。
Ctrlこれをスペイン語システムの Eclipse で (標準+経由でF11) 実行すると、期待どおりに「Esta es la prueba de locales」が表示されます。しかし、デフォルト オプションを使用して .jar にエクスポートし、コマンド ラインから実行すると、「This is the locale test.」と出力されます。
GUI アプリケーションでは、アプリケーション全体が常にメイン言語 ( の文字列messages.properties
) になります。
メッセージクラスの先頭に次を追加すると機能するため、ファイルが正しくエクスポートされていることがわかります。
static {
Locale.setDefault(new Locale("es"));
}
ここで説明されているように、「非 Unicode プログラムの既定の言語」を「スペイン語」に設定しました。
では、なぜこれが発生し、どうすれば修正できますか?
編集:コマンドラインから印刷Locale.getDefault().getLanguage()
すると「英語」が得られます。Eclipse からは、「español」と出力されます。