当前位置: 首页>后端>正文

Android 设定系统多语言

由于搞设备的时候,有个需求就是设置多语言键盘,因为当时设备出厂的时候就是只有一个英语语言,当时是想着底层帮我这边搞好,殊不知底层这边没有办法弄,后面自己是通过反射机制来写入; 添加以后,键盘就可以通过长按空格来切换语言了

//添加系统语言

List<String> list = new ArrayList<>();

list.add("en") //英语

list.add("de") //德语

... 以此类推 可以参考LangKey? 的值来,然后再调用

getAddLocale(list)? //就可以了

public static void getAddLocale(List list) {

List listLocale =new ArrayList<>();

? ? for (int i =0; i < list.size(); i++) {

Locale locale =getLocale(list.get(i));

? ? ? ? if (locale!=null){

listLocale.add(locale);

? ? ? ? }

}

Locale[] localesList = listLocale.toArray(new Locale[listLocale.size() ]);

? ? LocaleList ll =new LocaleList(localesList);

? ? try {

Class localPicker = Class.forName("com.android.internal.app.LocalePicker");

? ? ? ? Method updateLocale = localPicker.getDeclaredMethod("updateLocales",

? ? ? ? ? ? ? ? LocaleList.class);

? ? ? ? updateLocale.invoke(null, ll);

? ? }catch (ClassNotFoundException | NoSuchMethodException | InvocationTargetException

| IllegalAccessException e) {

e.printStackTrace();

? ? }

}

//获取 Locale 对象

private static LocalegetLocale(String lankey) {

if (LangKey.ZH_CN.equals(lankey)) {

return Locale.CHINA;

? ? }else if (LangKey.EN_US.equals(lankey)) {

return Locale.ENGLISH;

? ? }else if (LangKey.JA_JP.equals(lankey)) {

return Locale.JAPAN;

? ? }else if (LangKey.KO_KR.equals(lankey)) {

return Locale.KOREA;

? ? }else if (LangKey.DE_DE.equals(lankey)){

return? Locale.GERMAN;

? ? }else if (LangKey.LO_LA.equals(lankey)) {

return new Locale("lo", "la");

? ? }else if (LangKey.KM_KH.equals(lankey)) {

return new Locale("km", "kh");

? ? }else if (LangKey.TL_PH.equals(lankey)) {

return new Locale("tl", "ph");

? ? }else if (LangKey.MY_MM.equals(lankey)) {

return new Locale("my", "mm");

? ? }else if (LangKey.RU_RU.equals(lankey)) {

return new Locale("ru", "ru");

? ? }else if (LangKey.CS_CZ.equals(lankey)) {

return new Locale("cs", "cz");

? ? }else if (LangKey.PL_PL.equals(lankey)) {

return new Locale("pl", "pl");

? ? }else if (LangKey.FR_FR.equals(lankey)){

return new Locale("fr", "fr");

? ? }else if (LangKey.NL_NL.equals(lankey)){

return new Locale("nl", "nl");

? ? }else if (LangKey.PT_PT.equals(lankey)){

return new Locale("pt", "pt");

? ? }else if (LangKey.ES_ES.equals(lankey)){

return new Locale("es", "es");

? ? }else if (LangKey.IT_IT.equals(lankey)){

return new Locale("it", "it");

? ? }else if (LangKey.GR_GR.equals(lankey)){

//特殊处理由于语言配置是配置gr,但系统前缀是el

? ? ? ? return new Locale("el", "gr");

? ? }else if (LangKey.RO_RO.equals(lankey)){

return new Locale("ro", "ro");

? ? }else if (LangKey.FI_FI.equals(lankey)){

return new Locale("fi", "fi");

? ? }else if (LangKey.NO_NO.equals(lankey)){

return new Locale("no", "no");

? ? }else if (LangKey.SE_SE.equals(lankey)){

//特殊处理由于语言配置是配置se,但系统前缀是sv

? ? ? ? return new Locale("sv", "se");

? ? }else if (LangKey.DK_DK.equals(lankey)){

//特殊处理由于语言配置是配置dk,但系统前缀是da

? ? ? ? return new Locale("da", "dk");

? ? }else if (LangKey.CZ_CZ.equals(lankey)){

//特殊处理由于语言配置是配置cz,但系统前缀是cs

? ? ? ? return new Locale("cs", "cz");

? ? }else if (LangKey.EE_EE.equals(lankey)){

//特殊处理由于语言配置是配置ee,但系统前缀是et

? ? ? ? return new Locale("et", "ee");

? ? }else if (LangKey.SK_SK.equals(lankey)){

return new Locale("sk", "sk");

? ? }else if (LangKey.UK_UK.equals(lankey)){

return new Locale("uk", "ua");

? ? }else if (LangKey.AR_AR.equals(lankey)){

return new Locale("ar", "ae");

? ? }else if (LangKey.LT_LT.equals(lankey)){

return new Locale("lt", "lt");

? ? }else if (LangKey.IR_IR.equals(lankey)){

return new Locale("ir", "ir");

? ? }else if (LangKey.KZ_KZ.equals(lankey)){

//特殊处理由于语言配置是配置se,但系统前缀是sv

? ? ? ? return new Locale("kz", "kz");

? ? }else {

return null;

? ? }

}

public static class LangKey {

//---------------语言名字key---------------

? ? //中文简体

? ? public static final StringZH_CN ="zh";

? ? //英语

? ? public static final StringEN_US ="en";

? ? //日语

? ? public static final StringJA_JP ="ja";

? ? //韩语

? ? public static final StringKO_KR ="ko";

? ? //柬埔寨语

? ? public static final StringKM_KH ="km";

? ? //泰国

? ? public static final StringTH_TH ="th";

? ? //法语

? ? public static final StringFR_FR ="fr";

? ? //越南语

? ? public static final StringVI_VN ="vi";

? ? //菲律宾语

? ? public static final StringTL_PH ="tl";

? ? //马来西亚语

? ? public static final StringMS_MY ="ms";

? ? //缅甸语

? ? public static final StringMY_MM ="my";

? ? //捷克语

? ? public static final StringCS_CZ ="cs";

? ? //印度尼西亚语

? ? public static final StringIN_ID ="in";

? ? //老挝语

? ? public static final StringLO_LA ="lo";

? ? //俄语

? ? public static final StringRU_RU ="ru";

? ? //印度

? ? public static final StringHI_IN ="hi";

? ? //波兰语

? ? public static final StringPL_PL ="pl";

? ? //德语

? ? public static final StringDE_DE ="de";

? ? //荷兰语

? ? public static final StringNL_NL ="nl";

? ? //葡萄牙

? ? public static final StringPT_PT ="pt";

? ? //葡萄牙

? ? public static final StringES_ES ="es";

? ? //意大利

? ? public static final StringIT_IT ="it";

? ? //希腊

? ? public static final StringGR_GR ="gr";

? ? //罗马尼亚语

? ? public static final StringRO_RO ="ro";

? ? //芬兰语

? ? public static final StringFI_FI ="fi";

? ? //挪威语

? ? public static final StringNO_NO ="no";

? ? //瑞典语

? ? public static final StringSE_SE ="se";

? ? //丹麦语

? ? public static final StringDK_DK ="dk";

? ? //捷克语

? ? public static final StringCZ_CZ ="cz";

? ? //爱沙尼亚语

? ? public static final StringEE_EE ="ee";

? ? //斯洛伐克语

? ? public static final StringSK_SK ="sk";

? ? //乌克兰语

? ? public static final StringUK_UK ="uk";

? ? //阿拉伯语

? ? public static final StringAR_AR ="ar";

? ? //立陶宛语

? ? public static final StringLT_LT ="lt";

? ? //波斯语

? ? public static final StringIR_IR ="ir";

? ? //哈萨克语

? ? public static final StringKZ_KZ ="kz";

}


https://www.xamrdz.com/backend/3rd1936965.html

相关文章: