是否可以在Android应用程序中以编程方式将应用程序中的Locale更改为Serbian Latin? 据我所知,我可以这样做:
Locale locale = new Locale.Builder().setLanguage("sr").setRegion("RS").setScript("Latn").build();
但它仅在21 API中可用。但我有minsdk = 16
答案 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
}