【问题标题】:Serbian latin and Serbian Cyrillic in androidandroid 中的塞尔维亚拉丁语和塞尔维亚西里尔语
【发布时间】:2017-08-16 15:18:51
【问题描述】:

是否可以在 Android 应用中以编程方式将应用中的区域设置更改为塞尔维亚拉丁语? 据我了解,我可以这样做:

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

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

【问题讨论】:

  • 你好。让我们看看你能不能帮助我。我正在将我的 android 应用程序翻译成塞尔维亚语,但它没有以塞尔维亚语显示,它仍然以英语显示。我在文件夹“values-sr”中有 strings.xml 文件,并且 android 设备设置为语言“Srpski (latinica, Srbija)”。你能告诉我我做错了什么吗?谢谢

标签: android localization localizable.strings


【解决方案1】:

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

【讨论】:

  • 是的,我知道,谢谢。但拉丁语 - 不是一个国家/地区
  • 这是脚本,有方法getDefaultScript(),但我找不到如何设置它。
【解决方案2】:

这是这个问题的答案。为较新版本的操作系统提供各种形式。

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

【讨论】:

    【解决方案3】:

    希望我还不算太晚 :)
    这就是我解决它的方法,您需要创建不同的 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
        }
    

    【讨论】:

      猜你喜欢
      • 2016-06-22
      • 2018-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多