Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何列出/选择Android上安装的语言?_Android_Eclipse_Locale_Language Switching - Fatal编程技术网

如何列出/选择Android上安装的语言?

如何列出/选择Android上安装的语言?,android,eclipse,locale,language-switching,Android,Eclipse,Locale,Language Switching,我想制作一个小应用程序,只需单击一次或两次,即可在两种、三种或更多首选语言之间切换系统语言,这些语言是从“官方”语言列表中事先选择的,即出现在“快速设置>设置>语言和输入>语言”中的语言 如何通过编程方式获取此列表?这是可从locale.getAvailableLocales()获得的区域设置列表吗?我应该从语言环境中学习语言吗?谢谢大家! 编辑-这是我到目前为止所做的: private List<Model> getModel() { Locale[] locales

我想制作一个小应用程序,只需单击一次或两次,即可在两种、三种或更多首选语言之间切换系统语言,这些语言是从“官方”语言列表中事先选择的,即出现在“快速设置>设置>语言和输入>语言”中的语言

如何通过编程方式获取此列表?这是可从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);
  }

编辑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;
现在,我如何从这里开始实际更改系统语言(而不打开下面的意图/活动)

Intent intent = new Intent(Settings.ACTION_LOCALE_SETTINGS);
startActivity(intent);

下面是获取设备所有可用区域设置的API

public static Locale[] getAvailableLocales ()

有关更多信息,请查看此公共链接:

如果您计划支持所有可能的语言组合,则
Locale.getAvailableCales()
可能适合您

如果不支持,则您需要在Android应用程序中专门提供语言列表。例如,如果您的应用程序支持加泰罗尼亚语、捷克语、丹麦语和德语(或多种德语口语),您最好使用静态字符串列表填充
列表视图

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项目中,您将拥有以下
目录以支持上述语言:

/res/values (English)
/res/values-ca (Catalan)
/res/values-cs (Czech)
/res/values-da (Danish)
/res/values-de (German)

你想做什么?你打算更改应用程序中的语言吗?是的。我想减少必要的单击次数。单击不会成为问题。但是,问题是你的应用程序将支持哪些语言。请记住,如果你有一个语言列表,用户可以从中选择,你还必须创建necAndroid项目中的essary
values
目录,该目录保存您想要支持的语言的翻译文本。从
Locale.getAvailableCales()获取语言
如果您的Android应用程序中没有翻译或缺少特定语言,则会导致错误。因此,请编辑您的帖子,并概述您想要的内容。好的,谢谢。我添加了第一段。因为这是供个人使用的,我现在对葡萄牙语、英语、西班牙语和中文感兴趣。我不清楚您最近的文章编辑您的用户/业务需求,而不是您的技术需求,即我知道您可以从
Locale.getAvailableCales()获得什么
method,但我不知道您想从用户/业务的角度做什么。无论如何,我在下面的回答中提供了一个示例。希望它能帮助解释您的实际用户/业务需求。我不想要静态列表。我想通过编程获得与图像上显示的语言名称完全相同的语言名称,即访问快速设置>设置>语言&输入>语言。因此,用户将选择要在列表中切换的语言。正如我之前所说,您是否支持所有可能的口语组合(有260多种语言)?如果不支持,则使用
Locale.getAvailableCales()
方法,相当于从“快速设置”>“设置”>“语言和输入”>“语言”获取语言对您没有帮助。当用户选择您没有相应翻译文件(
strings.xml
)的语言时,您的应用程序将崩溃在你的Android项目中。我的Sony Xperia菜单中有大约60种语言,我可以选择它们中的任何一种,系统语言也会改变。这就是我想要做的。语言列表来自手机内的某个文件。它不是开源的吗?我怎么找不到并复制列表?我会接受展示XXXX或uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu有合适的文件。但是“英语(美国)”、“印度尼西亚语”?我想我可以显示这些。两个列表看起来非常不同。Locale.getAvailableCales()给了我更多的选项。系统国际化文件,ROM(即安卓固件)自定义和提取超出了本文的范围。我不建议新的Android开发者走这条路,因为这个过程相当复杂。试着实现我对你想要支持的语言的回答,看看你是怎么做的。这是理解Android国际化如何工作的一种方法。
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"};
/res/values (English)
/res/values-ca (Catalan)
/res/values-cs (Czech)
/res/values-da (Danish)
/res/values-de (German)