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


当前回答

如果你想为居住在印度说印地语的用户做特定的任务,那么使用下面的If条件

if(Locale.getDefault().getDisplayName().equals("हिन्दी (भारत)")){
 //Block executed only for the users resides in India who speaks Hindi 
}

其他回答

对我有用的是:

Resources.getSystem().getConfiguration().locale;

Resources. getsystem()返回一个全局共享资源对象,该对象仅提供对系统资源(不包括应用程序资源)的访问,并且没有为当前屏幕配置(不能使用维度单位,不会根据方向改变等等)。

因为getConfiguration。locale现在已经被弃用,在Android牛轧糖中获取主locale的首选方法是:

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

为了保证与之前的Android版本的兼容性,可能的解决方案是一个简单的检查:

Locale locale;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    locale = Resources.getSystem().getConfiguration().getLocales().get(0);
} else {
    //noinspection deprecation
    locale = Resources.getSystem().getConfiguration().locale;
}

更新

从支持库26.1.0开始,你不需要检查Android版本,因为它提供了一个方便的向后兼容getLocales()方法。

简单地调用:

ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration());

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。

下面是获取设备国家的代码。兼容所有版本的android甚至奥利奥。

解决方案:如果用户没有sim卡,那么在手机设置或当前语言选择时获取他所使用的国家。

public static String getDeviceCountry(Context context) {
    String deviceCountryCode = null;

    final TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

        if(tm != null) {
            deviceCountryCode = tm.getNetworkCountryIso();
        }

    if (deviceCountryCode != null && deviceCountryCode.length() <=3) {
        deviceCountryCode = deviceCountryCode.toUpperCase();
    }
    else {
        deviceCountryCode = ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration()).get(0).getCountry().toUpperCase();
    }

  //  Log.d("countryCode","  : " + deviceCountryCode );
    return deviceCountryCode;
}

如果你想要获得你的设备所选择的语言,这可能会帮助你:

Locale.getDefault().getDisplayLanguage();

你可以使用Locale.getDefault().getLanguage();要获得常用的语言代码(例如:“德”、“en”)

你可以使用 .getLanguage .setLanguage (Locale.forLanguageTag (Locale.getDefault () ())); 这很好