例: 私は多言語アプリを持っていて、ランダムな言語から文字列を取得したいので、ユーザーはそれがどの言語であるかを推測する必要があります。他の言語から単一の文字列を取得するには?
質問する
2976 次
3 に答える
1
アプリが使用する言語固有の文字列は、Android システム ( Link )で設定されているシステム ローカルに依存します。そのため、Android は自動的に正しい値を取得します。使用する特定の (またはランダムな) 値をハードコードすることはできません。
物事を成し遂げる 1 つの方法は、Android のローカル設定をプログラムで変更することです。
Locale locale = new Locale("fr");
Configuration config = new Configuration();
config.locale = locale;
getResources().updateConfiguration(config, null);
getResources().getString(R.string.local_string);
この場合、ローカル識別子をシャッフルするだけです。もちろん、元の状態にリセットできるように、変更する前に local のインスタンスを保護する必要があります。幸運を ;)
編集:
これは私が検証するために書いた汚いコードです:
Locale orgLocal = getResources().getConfiguration().locale;
String[] availLocales = { "fr", "de", "en" };
Locale tempLocale = new Locale(availLocales[new Random().nextInt(availLocales.length)]);
Configuration config = new Configuration();
config.locale = tempLocale;
getResources().updateConfiguration(config, null);
String randLangString = getResources().getString(R.string.local_string);
config.locale = orgLocal;
getResources().updateConfiguration(config, null);
Toast.makeText(this, randLangString, Toast.LENGTH_LONG).show();
于 2012-09-19T13:24:19.407 に答える
0
最初にこのコードを使用して言語設定を変更します
Locale locale = new Locale("kn");
Configuration config = new Configuration();
config.locale = locale;
getResources().updateConfiguration(config, null);
getResources().getString(R.string.local_string);
次に、すべてのタイプの言語をサポートするために、 「ARIALUNI.TTF」Arial Unicode Font(アセットフォルダーにコピー)のようなUnicodeフォントを使用します
Typeface font= Typeface.createFromAsset(getAssets(), "ARIALUNI.TTF"); TextView tv1.setTypeface(font);
tv1.setText(R.string.txt);
*英語の場合は values-en- フォルダ、カンナダ語の場合は values-kn フォルダから R.string.text 値を取得します *
于 2013-09-19T09:57:35.827 に答える