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