塞尔维亚语有拉丁字母和西里尔字母。在 Android 的日期和时间选择器小部件中,塞尔维亚语语言环境的显示字母似乎是西里尔字母,如下所示。

android - 如何更改语言环境以使用拉丁语塞尔维亚语(而不是西里尔语塞尔维亚语)-LMLPHP

我想更改语言环境,以便 android 小部件使用拉丁塞尔维亚字母表。

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

setLocale("sr", "RS");

这是我不确定的部分 - 根据 localeplanet.com ,拉丁语塞尔维亚语的本地代码是 sr_Latn_RS 。但是,我尝试了两者
setLocale("sr_Latn", "RS");
//and
setLocale("sr_Latn_RS", "RS");

两者都不起作用(没有变化,默认为英语)。根据 Android 文档,看起来 setLocale 需要两个字母代码。



那么如何指定拉丁语塞尔维亚语区域设置代码?或者它不存在?

最佳答案

如果您仅支持 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;
}

关于android - 如何更改语言环境以使用拉丁语塞尔维亚语(而不是西里尔语塞尔维亚语),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35877037/

10-11 21:33