塞尔维亚语有拉丁字母和西里尔字母。在Android的日期和时间选择小部件中,塞尔维亚地区显示的字母表似乎是西里尔字母,如图所示。
我想改变地区,以便android小部件使用拉丁语塞尔维亚字母。
当前的语言/国家代码(生成西里尔语)分别是sr
和RS
。因此,我的setLocale函数被调用为
setLocale("sr", "RS");
这是我不确定的部分--根据localeplanet.com的说法,拉丁语塞尔维亚语的本地代码是sr_Latn_RS
。不过,我都试过了
setLocale("sr_Latn", "RS");
//and
setLocale("sr_Latn_RS", "RS");
两者都不起作用(不发生任何更改,默认为英文)。根据安卓的文档,看起来setLocale需要两个字母代码。
语言代码是由ISO 639-1定义的两个字母小写的ISO语言代码(如"en")。国家代码是由ISO 3166-1定义的两个字母大写的ISO国家代码(如"US")。变体码未指定。
那么,如何指定拉丁语塞尔维亚地区代码呢?或者它不存在?
发布于 2017-12-05 23:54:26
如果您只支持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;
}
发布于 2019-01-31 08:51:57
为了获得拉丁语言环境,我首先使用了下面的代码。
new Locale.Builder().setLanguage("sr").setRegion("RS").setScript("Latn").build();
但是这个解决方案在我的Android5.1.1设备上不起作用(它还在西里尔语中)。所以我去掉了这样的区域设置:
new Locale.Builder().setLanguage("sr").setScript("Latn").build();
您必须将塞尔维亚资源的字符串放在b+sr+Latn文件夹中。
发布于 2016-03-17 19:58:58
在发布问题之前,请搜索您的查询。它可能会以其他相关的形式得到答复。
Locale newLocale = new Locale("sr","RS");
Configuration config = new Configuration();
config.setLocale(newLocale);
// using this to reference my Activity
this.getBaseContext().getResources().updateConfiguration(config, this.getBaseContext().getResources().getDisplayMetrics());
我发现这两个答案适合您的查询android自定义日期选择器和从英语到法语的地区。
编辑
Locale[] locales = Locale.getAvailableLocales();
for(Locale locale : locales){
if(locale.getCountry().equalsIgnoreCase("RS")
&& locale.getScript().equalsIgnoreCase("Latn"))
{
Configuration config = new Configuration();
config.setLocale(locale);
// using this to reference my Activity
this.getBaseContext().getResources().updateConfiguration(config, this.getBaseContext().getResources().getDisplayMetrics());
break;
}
}
我知道会有一种有效的方法来做到这一点,但是您可能会得到您需要的方向,以获得可用区域设置的列表,并获得您想要的区域设置。希望它能帮上忙
编辑-2(最终)
您可以使用以下方法构造区域设置:
Locale locale = new Locale.Builder().setLanguage("sr").setRegion("RS").setScript("Latn").build();
setLocale(locale);
https://stackoverflow.com/questions/35877037
复制相似问题