我正在尝试使用“en_us”,“en_gb”等区域获取当前设备区域设置。
我正在调用Locale.getDefault().getLanguage()
,它只返回两个字母代码en
。
答案 0 :(得分:16)
“en_us”或“en_gb”等格式包含“语言代码”_“国家/地区代码”
Locale对象包含国家/地区代码和语言代码。
因此,您可以使用以下代码段格式化您自己的代码..
String cCode = Locale.getDefault().getCountry();
String lCode = Locale.getDefault().getLanguage();
String code = lCode+"_"+cCode;
或
您可以在Locale对象上使用toString()
方法来获取数据
String code = Locale.getDefault().toString();
答案 1 :(得分:1)
默认Locale
是在运行时为系统属性设置中的应用程序进程静态构建的,因此它将代表在应用程序启动时在该设备上选择的Locale
。通常,这很好,但它确实意味着如果用户在应用程序进程运行后更改其Locale
设置,则getDefaultLocale()
的值可能不会立即更新。
如果您需要在应用程序中出于某种原因捕获此类事件,您可以尝试从资源Locale
对象获取Configuration
,即
Locale current = getResources().getConfiguration().locale;
如果您的应用程序需要更改设置,您可能会发现更快地更新此值。
我测试了这个:)
我来自this因为链接可能会被删除所以答案被复制了:)
答案 2 :(得分:-2)
使用
Locale.getDisplayName();
这是
的简写Locale.getDisplayName(Locale.getDefault());
文档位于此处:http://developer.android.com/reference/java/util/Locale.html