3

次の問題があります。

アプリの言語をプログラムで変更したいと考えています。

そこで、共有設定を使用してロケールを変更しました。

        Locale locale2 = new Locale("b0"); 
        Locale.setDefault(locale2);
        Configuration config2 = new Configuration();
        config2.locale = locale2;
        getBaseContext().getResources().updateConfiguration(config2, getBaseContext().getResources().getDisplayMetrics());

b0 は保存されたローカルです。

b0 は、ドイツ語のロケール de と英語のロケール en では問題なく動作しますが、米国のロケール en_US では問題なく動作します。

もちろん、新しいフォルダーを追加しました:

res/values-en-rUS

アメリカの文字列 xml を使用します。

電話の言語を英語 (米国) に変更すると、アプリはアメリカ英語で始まります。

行を次のように編集しました。

            Locale locale2 = new Locale("en_US"); 

まだ動作していません。

「en_US」に何か問題がありますか?

http://developer.android.com/reference/java/util/Locale.html

どんなヘルプでも大歓迎です。

4

1 に答える 1

2

答えが見つかりました(javadocを参照)。

あなたの場合、次のように書く必要があります。

Locale locale2 = new Locale("en","US"); 

一般的な関数は、scala ベースの言語では次のようになります。

val locale = if(name contains '_') {
  val splitted = sign.split("_")
  new Locale(splitted(0),splitted(1))
} else {
  new Locale(name); 
}

そうでなければ、あなたが望むものではない新しい言語コードを定義しen_usます。

于 2014-04-11T21:49:32.620 に答える