如何在Android设备中选择当前语言?


当前回答

这个解决方案对我很有效。这将返回android设备的语言(不是应用程序的本地语言)

String locale = getApplicationContext().getResources().getConfiguration().locale.getLanguage();

这将返回"en"或"de"或"fr"或任何你的设备语言设置。

其他回答

其他人对设备语言给出了很好的答案,

如果您希望使用应用程序语言,最简单的方法是在strings.xml文件中添加一个app_lang键,并为每个语言指定lang。

这样,如果你的应用程序的默认语言与设备语言不同,你可以选择将其作为服务的参数发送。

获取设备语言的正确方法如下:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    return context.getResources().getConfiguration().getLocales().get(0);
} else {
    return context.getResources().getConfiguration().locale;
}

希望能有所帮助。

Locale.getDefault().getLanguage()是虚拟机语言

Locale.getDefault().getLanguage()

它是当前运行应用程序的虚拟机实例的语言。它由java类(如DateFormat等)使用。如果您使用某些java类,则在更改应用程序区域设置时可能需要修改此选项。如果你在改变你的App语言环境时修改了这个,它与android的语言是不一样的。

context.getConfiguration().locale.getLanguage()是活动语言

context.getConfiguration().locale.getLanguage()

这是您活动中设置的语言。 在最新的SDK版本中,以下是可取的

context.getConfiguration().getLocales().get(0).getLanguage()

Resources.getSystem().getConfiguration().getLocales()给出用户在系统级添加的所有地区

这将为您提供用户在系统级别设置的第一个区域设置。

Resources.getSystem().getConfiguration().getLocales().get(0).getLanguage()

大量的用户是多语言的,所以你可能想要循环使用locale。

您可以使用此代码找出键盘电流

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
InputMethodSubtype ims = imm.getCurrentInputMethodSubtype();
String locale = ims.getLocale();

这个解决方案对我很有效。这将返回android设备的语言(不是应用程序的本地语言)

String locale = getApplicationContext().getResources().getConfiguration().locale.getLanguage();

这将返回"en"或"de"或"fr"或任何你的设备语言设置。