塞尔维亚拉丁语和塞尔维亚语西里尔语在android中

时间:2017-08-16 15:18:51

标签: android localization localizable.strings

是否可以在Android应用程序中以编程方式将应用程序中的Locale更改为Serbian Latin? 据我所知,我可以这样做:

Locale locale = new Locale.Builder().setLanguage("sr").setRegion("RS").setScript("Latn").build();

但它仅在21 API中可用。但我有minsdk = 16

3 个答案:

答案 0 :(得分:0)

您可以使用Locale local=new Locale("sr","RS");,其中第一个参数是语言,第二个参数是区域/国家/地区。关于脚本我知道如何设置脚本。

答案 1 :(得分:0)

以下是这个问题的答案。适用于较新版本操作系统的各种表单。

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;
}

答案 2 :(得分:0)

希望我还不算太晚:)
这是我解决的方法,您需要制作一个带有相应values的不同strings.xml文件夹,请记住我要默认为拉丁语,因此我使用en(仅是纯值文件夹),并用西里尔字母作为选择,因此它在ca(values-ca文件夹)中,依此类推...

public static void language(String s) {
        switch (s) {
            case "Srpski":
                setLocale("en");
                break;
            case "Српски":
                setLocale("ca");
                break;
            case "Hrvatski":
                setLocale("hr");
                break;
            case "Македонски":
                setLocale("mk");
                break;
            case "Slovenski":
                setLocale("sl");
                break;
        }
    }

    public static void setLocale(String lang) {
        // ctx is my Context
        if (ctx == null) {
            ctx = MainActivity.getContext();
        }
        Locale mLocale = new Locale(lang);
        Locale.setDefault(mLocale);
        Configuration mConfiguration = new Configuration();
        mConfiguration.locale = mLocale;    //DEPRECATED .locale
        ctx.getResources().updateConfiguration(mConfiguration, ctx.getResources().getDisplayMetrics());     //DEPRECATED updateConfiguration
    }