例如:我有一个多语言应用程序,我想从随机语言中获取一些字符串,用户必须猜测它是什么语言。如何从其他语言获取单个字符串?
问问题
2976 次
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 回答