首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将地区更改为使用拉丁语塞尔维亚语(而不是西里尔语塞尔维亚语)

如何将地区更改为使用拉丁语塞尔维亚语(而不是西里尔语塞尔维亚语)
EN

Stack Overflow用户
提问于 2016-03-08 20:06:57
回答 4查看 7.7K关注 0票数 5

塞尔维亚语有拉丁字母和西里尔字母。在Android的日期和时间选择小部件中,塞尔维亚地区显示的字母表似乎是西里尔字母,如图所示。

我想改变地区,以便android小部件使用拉丁语塞尔维亚字母。

当前的语言/国家代码(生成西里尔语)分别是srRS。因此,我的setLocale函数被调用为

代码语言:javascript
运行
复制
setLocale("sr", "RS");

这是我不确定的部分--根据localeplanet.com的说法,拉丁语塞尔维亚语的本地代码是sr_Latn_RS。不过,我都试过了

代码语言:javascript
运行
复制
setLocale("sr_Latn", "RS");
//and
setLocale("sr_Latn_RS", "RS");

两者都不起作用(不发生任何更改,默认为英文)。根据安卓的文档,看起来setLocale需要两个字母代码。

语言代码是由ISO 639-1定义的两个字母小写的ISO语言代码(如"en")。国家代码是由ISO 3166-1定义的两个字母大写的ISO国家代码(如"US")。变体码未指定。

那么,如何指定拉丁语塞尔维亚地区代码呢?或者它不存在?

EN

回答 4

Stack Overflow用户

发布于 2017-12-05 23:54:26

如果您只支持Lollipop或更高版本,前面的答案就会很好地工作。但是,如果你是用塞尔维亚语编码的话,你的很多用户可能就不会有它了。这是一个适用于新旧版本的解决方案。

代码语言:javascript
运行
复制
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;
}
票数 4
EN

Stack Overflow用户

发布于 2019-01-31 08:51:57

为了获得拉丁语言环境,我首先使用了下面的代码。

代码语言:javascript
运行
复制
new Locale.Builder().setLanguage("sr").setRegion("RS").setScript("Latn").build();

但是这个解决方案在我的Android5.1.1设备上不起作用(它还在西里尔语中)。所以我去掉了这样的区域设置:

代码语言:javascript
运行
复制
new Locale.Builder().setLanguage("sr").setScript("Latn").build();

您必须将塞尔维亚资源的字符串放在b+sr+Latn文件夹中。

票数 3
EN

Stack Overflow用户

发布于 2016-03-17 19:58:58

在发布问题之前,请搜索您的查询。它可能会以其他相关的形式得到答复。

代码语言:javascript
运行
复制
    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自定义日期选择器从英语到法语的地区

编辑

代码语言:javascript
运行
复制
    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(最终)

您可以使用以下方法构造区域设置:

代码语言:javascript
运行
复制
Locale locale = new Locale.Builder().setLanguage("sr").setRegion("RS").setScript("Latn").build();
setLocale(locale);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35877037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档