7

私はここで一種の問題に直面しています。

私はフランス語で、英語版のWindowsXPに取り組んでいます。したがって、地域のオプションをフランス語に設定しましたが、英語のUIはまだあります。

私は小さなJavaSEアプリケーションに取り組んでおり、リソースバンドルを使用してそれを国際化することにしました。

適切な言語を表示するために、次の関数を使用してバンドルを作成します。

private static ResourceBundle bundle = ResourceBundle
          .getBundle("locale.Strings", Locale.getDefault());

ただし、Locale.getDefault()関数は、システムUI言語ではなく、地域の設定(つまり、フランス語)を返します。その結果、私のUIは、英語環境ではデフォルトでフランス語になります。そして、まあ、それは本当に私が期待したものではありません...

システムUI言語を回復するためのプラットフォームに依存しない方法を知っている人はいますか?前もって感謝します !

編集:ロケールをロケールに修正しました、ありがとう。

4

3 に答える 3

7

これはWindowsの設定ミスです。は、日付/時刻のLocale#getDefault()フォーマット領域や場所ではなく、システムロケールを返します。

以下のWindowsXP固有のスクリーンショットでは、地域のオプション言語をフランス語または好きなように設定できます。[詳細設定]メニューのドロップダウンは実際にシステムロケールを設定し、この場合は英語に設定する必要があります。

ここに画像の説明を入力してください

確かに、これはWindows XPでは十分に説明されていませんが、Windows7の方が多少優れています。

ここに画像の説明を入力してください

于 2012-06-02T13:41:38.907 に答える
3

私はそれを試す手段がありません(私はマイクロソフトによって作られたものを避ける傾向があるので)が、これらを見てください:

必要なJava7:

Locale uiLocale = Locale.getDefault(Locale.Category.DISPLAY);

とにかく、それが(Java 7以降の)翻訳を取得するために使用されるべきものです。

これがあまり役に立たなかった場合は、次のことを試してみます。

System.out.println(System.getenv("LC_MESSAGES"));       
System.out.println(System.getenv("LANG"));
System.out.println(System.getenv("LANGUAGE"));

ただし、この場合、デフォルトのロケールといくつかの類似点があると思います...

于 2012-06-02T20:19:51.757 に答える
0

私はあなたの提案のおかげでいくつかのことを試みました、そしてここに私の観察があります:

  • Java7ではなくJava6を使用している場合は、問題が発生します。
  • Java 7を使用している場合は、BalusCの指示に従って実行する必要があります。[地域と言語の設定]で設定を変更します。その後、Locale.getDefault()はデフォルトで表示言語を返します。これは、英語に設定すると英語を意味します。これを確認するには、Locale.getDefault(Locale.Category.DISPLAY)を呼び出してロケールを作成できます。
于 2012-06-03T08:54:16.760 に答える