我想做一个小应用程序,只需一次或两次点击,就可以在两种、三种或更多首选语言之间切换系统语言,这些语言是事先从“官方”语言列表中选择的,即出现在快速设置>设置>语言和输入>语言中的语言。
如何以编程方式获取此列表?这是可从Locale.getAvailableLocales()获得的区域设置列表吗?我应该从语言环境中获取语言吗?谢谢!

编辑-这是我到目前为止所做的:
private List<Model> getModel() {
Locale[] locales = Locale.getAvailableLocales();
List<Model> list = new ArrayList<Model>();
for (int i=0; i<locales.length; i++) {
list.add(get(locales[i].getDisplayLanguage()));
}
return list;
}
private Model get(String s) {
return new Model(s);
}我现在正在寻找这些选项:
Locale.getDefault().getLanguage() ---> en
Locale.getDefault().getISO3Language() ---> eng
Locale.getDefault().getCountry() ---> US
Locale.getDefault().getISO3Country() ---> USA
Locale.getDefault().toString() ---> en_US
Locale.getDefault().getDisplayLanguage() ---> English
Locale.getDefault().getDisplayCountry() ---> United States
Locale.getDefault().getDisplayName() ---> English (United States)来自here。
编辑2-2多张图片,显示语言列表的末尾,其中包含中文选项。

这是系统中的列表。

这个列表是用以下代码完成的:
Locale[] locales = Locale.getAvailableLocales();
List<Model> list = new ArrayList<Model>();
for (int i=0; i<locales.length; i++) {
list.add(get(locales[i].getDisplayLanguage()+"|"+
locales[i].toString()+"|"+
locales[i].getDisplayName()
));
}
return list;现在必须有一种方法从第二个列表到达第一个列表,也许可以访问一些系统隐藏文件?
编辑3-我添加了以下代码,它显示了中文、葡萄牙语和西班牙语的特殊字符(UTF-8),没有问题:
list.add(get("Português (Brasil)"));
list.add(get("English (US)"));
list.add(get("中国(简体)"));
list.add(get("Español (Venezuela)"));现在,我如何从这里开始实际更改系统语言(而不像下面这样打开意图/活动?
Intent intent = new Intent(Settings.ACTION_LOCALE_SETTINGS);
startActivity(intent);发布于 2014-12-24 11:06:37
以下是获取设备所有可用区域设置的API。
public static Locale[] getAvailableLocales ()如需更多信息,请访问以下公共链接:http://developer.android.com/reference/java/util/Locale.html#getAvailableLocales()
发布于 2014-12-24 11:19:49
如果您计划支持所有可能的语言组合,那么Locale.getAvailableLocales()可能适合您。
如果不是,那么您需要在Android应用程序中专门提供一个语言列表。例如,如果您的应用程序支持加泰罗尼亚语、捷克语、丹麦语和德语(或多种德语口语),最好使用静态字符串列表填充您的ListView:
public static final String[] LANGS = new String[] {"English (Australia)", "Català (Espanya)","Čeština (Česká Republika)","Dansk (Danmark)","Deutsch (Österreich)","Deutsch (Belgien)","Deutsch (Schweiz)","Deutsch (Deutschland)","Deutsch (Liechtenstein)","Deutsch (Luxemburg)"};
public static final String[] LANG_CODES = new String[] {"en_au", "ca_ES","cs_CZ","da_DK","de_AT","de_BE","de_CH","de_DE","de_LI","de_LU"};而且,在你的Android项目中,你会有以下的values目录来支持上述语言:
/res/values (English)
/res/values-ca (Catalan)
/res/values-cs (Czech)
/res/values-da (Danish)
/res/values-de (German)https://stackoverflow.com/questions/27630817
复制相似问题