0

例: 私は多言語アプリを持っていて、ランダムな言語から文字列を取得したいので、ユーザーはそれがどの言語であるかを推測する必要があります。他の言語から単一の文字列を取得するには?

4

3 に答える 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 に答える