10

アプリケーションに 2 つのロケールがあります。現在のロケールを変更せずに、異なるロケールの文字列配列などのリソースにアクセスできますか? つまり、コーディングでは、設定で変更したくありません。

4

4 に答える 4

9

cMK が現在のロケールの文字列配列で、cEN が異なるロケールの文字列配列である場合に機能するコードは次のとおりです。

 cMK = getResources().getStringArray(R.array.cities);

         Configuration confTmp =new Configuration( getResources().getConfiguration());

         confTmp.locale = new Locale("en");

         DisplayMetrics metrics = new DisplayMetrics();

         getWindowManager().getDefaultDisplay().getMetrics(metrics);

         Resources resources = new Resources(getAssets(), metrics, confTmp);

         /* get localized string */
         cENG = getResources().getStringArray(R.array.cities);

現在のロケールは変更されていません。それがポイントでした。

于 2012-06-04T09:35:33.847 に答える
2

はい、できます。Resources意図を指定して新しいオブジェクトを作成する必要がありますConfiguration

参照: http://developer.android.com/reference/android/content/res/Resources.html#Resources%28android.content.res.AssetManager,%20android.util.DisplayMetrics,%20android.content.res.Configuration% 29

于 2012-06-03T22:54:52.677 に答える
0

Java 7 (Android ではない) では、ロケールをフォーマット リソースと表示で異なるように設定できます。

Locale.setDefault(DISPLAY, Locale.PL);
Locale.setDefault(FORMAT, Locale.US);

同様のスレッド:アプリ内でロケールを変更する.

于 2013-01-30T10:32:45.527 に答える