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

}
  • 17
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值