塞尔维亚语有拉丁字母和西里尔字母。在 Android 的日期和时间选择器小部件中,显示的塞尔维亚语言区域字母似乎是西里尔字母,如此处所示。
我想更改区域设置,以便 Android 小部件使用拉丁塞尔维亚字母。
当前的语言/国家代码(产生西里尔字母)是sr
and RS
分别。因此,我的 setLocale 函数被称为
setLocale("sr", "RS");
这是我不确定的部分 - 根据localeplanet.com http://www.localeplanet.com/icu/sr-Latn-RS/,拉丁塞尔维亚语的本地代码是sr_Latn_RS
。不过,我都尝试过
setLocale("sr_Latn", "RS");
//and
setLocale("sr_Latn_RS", "RS");
两者都不起作用(没有变化,默认为英语)。根据 Android 文档,setLocale 似乎需要两个字母代码。
语言代码是两个字母的小写 ISO 语言代码(例如
为“en”),如 ISO 639-1 所定义。国家/地区代码是两个字母
ISO 3166-1 定义的大写 ISO 国家/地区代码(例如“US”)。
变体代码未指定。
那么如何指定拉丁塞尔维亚语区域设置代码?或者它不存在?
如果您只支持 Lollipop 或更高版本,则前面的答案很有效。但是,如果您使用塞尔维亚语进行编码,那么您的很多用户群可能不会使用它。这是适用于旧版本和新版本的解决方案。
private static Locale serbianLatinLocale(){
Locale locale = null;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
for (Locale checkLocale : Locale.getAvailableLocales()) {
if (checkLocale.getISO3Language().equals("srp") && checkLocale.getCountry().equals("LATN") && checkLocale.getVariant().equals("")) {
locale = checkLocale;
}
}
} else {
locale = new Locale.Builder().setLanguage("sr").setRegion("RS").setScript("Latn").build();
}
return locale;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)