0

例如:我有一个多语言应用程序,我想从随机语言中获取一些字符串,用户必须猜测它是什么语言。如何从其他语言获取单个字符串?

4

3 回答 3

1

应用程序使用的特定语言字符串取决于在 android 系统 ( Link )中设置的系统本地。因此,Android 会自动获取正确的值。您不能硬编码要使用的特定(或随机)值。

完成工作的一种方法是以编程方式更改 android 的本地设置:

    Locale locale = new Locale("fr");
    Configuration config = new Configuration();
    config.locale = locale;
    getResources().updateConfiguration(config, null);
    getResources().getString(R.string.local_string);

在这种情况下,唯一要做的就是洗牌本地标识符。当然,您应该在更改本地实例之前对其进行保护,以便您可以将其重置为原始状态。祝你好运 ;)

编辑:
这是我写的一些脏代码来验证:

    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);

然后为支持所有类型的语言使用 Unicode 字体,例如--“ARIALUNI.TTF”Arial Unicode 字体(复制到资产文件夹)

Typeface font= Typeface.createFromAsset(getAssets(), "ARIALUNI.TTF");  TextView tv1.setTypeface(font);
tv1.setText(R.string.txt);

*从 values-en-for 英语和 values-kn 文件夹中获取 R.string.text 值用于卡纳达语 *

于 2013-09-19T09:57:35.827 回答
0

令人惊讶的是,我们只能通过更改配置来启用我们想要的语言。视需要而定

Locale locale;
                  locale = new Locale("fr","FR");


        Locale.setDefault(locale);
        Configuration config = new Configuration();
        config.locale = locale;
        this.getActivity().getResources().updateConfiguration(config, this.getActivity().getResources().getDisplayMetrics());
于 2015-12-11T09:45:58.293 回答