Android多语言切换

最近项目中有一个多语言切换的功能,做完跟大家分享一下,尽量让大家少走弯路!

首先给大家一个自动翻译插件:https://github.com/westlinkin/AndroidLocalizationer

去git地址下载后安装此插件

Android多语言切换_第1张图片

安装成功后选中strings.xml,点击鼠标右键,如下图:

Android多语言切换_第2张图片

点击选中的选项,也就是切换其他语言,如下图:

Android多语言切换_第3张图片

这么多种语言,应该可以满足你的需求了吧。选择你需要的语言,点击ok

Android多语言切换_第4张图片

可以看到中国国旗和日本的国旗,就是中文和日文了,因需求只有中日语,这里就只给大家展示这两种语言了,可根据自己的需求选择想要的语言。


还有一个资料我想大家也需要,这里给大家贴出,后面切换会用到(各国语言切换时的字母)

通过程序获取JAVA所有支持的语言和国家的

程序代码如下:

import java.util.Locale;
public class Test {
 public static void main(String[] args) {
  //调用Locale类的getAvailableLocales方法获取,该方法返回一个数组,其中包含JAVA支持的语言和国家
  Locale[] localeList = Locale.getAvailableLocales();
  //依次获取所支持的国家和语言
  for (int i = 0; i < localeList.length; i++) {
   System.out.println(localeList[i].getDisplayCountry() + "="
     + localeList[i].getCountry() + ""
     + localeList[i].getDisplayLanguage() + "="
     + localeList[i].getLanguage());
  }
 }
}

输出结果如下(有些国家可能会使用多种语言):

马来西亚=MY马来文=ms
卡塔尔=QA阿拉伯文=ar
冰岛=IS冰岛文=is
芬兰=FI芬兰文=fi
=波兰文=pl
马耳他=MT英文=en
瑞士=CH意大利文=it
比利时=BE荷兰文=nl
沙特阿拉伯=SA阿拉伯文=ar
伊拉克=IQ阿拉伯文=ar
波多黎哥=PR西班牙文=es
智利=CL西班牙文=es
=芬兰文=fi
奥地利=AT德文=de
=丹麦文=da
英国=GB英文=en
巴拿马=PA西班牙文=es
=塞尔维亚文=sr
也门=YE阿拉伯文=ar
马其顿王国=MK马其顿文=mk
=马其顿文=mk
加拿大=CA英文=en
越南=VN越南文=vi
荷兰=NL荷兰文=nl
美国=US西班牙文=es
中国=CN中文=zh
洪都拉斯=HN西班牙文=es
美国=US英文=en
=法文=fr
=泰文=th
=阿拉伯文=ar
摩洛哥=MA阿拉伯文=ar
=拉托维亚文(列托)=lv
=德文=de
印度尼西亚=ID印度尼西亚文=in
=克罗地亚文=hr
南非=ZA英文=en
韩国=KR朝鲜文=ko
突尼斯=TN阿拉伯文=ar
=印度尼西亚文=in
=日文=ja
塞尔维亚=RS塞尔维亚文=sr
白俄罗斯=BY白俄罗斯文=be
台湾地区=TW中文=zh
苏丹=SD阿拉伯文=ar
=葡萄牙文=pt
=冰岛文=is
日本=JP日文=ja
玻利维亚=BO西班牙文=es
阿尔及利亚=DZ阿拉伯文=ar
=马来文=ms
阿根廷=AR西班牙文=es
阿拉伯联合酋长国=AE阿拉伯文=ar
加拿大=CA法文=fr
=斯洛文尼亚文=sl
=西班牙文=es
立陶宛=LT立陶宛文=lt
黑山=ME塞尔维亚文=sr
叙利亚=SY阿拉伯文=ar
俄罗斯=RU俄文=ru
比利时=BE法文=fr
西班牙=ES西班牙文=es
=保加利亚文=bg
以色列=IL希伯来文=iw
=瑞典文=sv
=英文=en
=希伯来文=iw
丹麦=DK丹麦文=da
哥斯达黎加=CR西班牙文=es
香港=HK中文=zh
=中文=zh
西班牙=ES加泰罗尼亚文=ca
泰国=TH泰文=th
乌克兰=UA乌克兰文=uk
多米尼加共和国=DO西班牙文=es
委内瑞拉=VE西班牙文=es
波兰=PL波兰文=pl
利比亚=LY阿拉伯文=ar
约旦=JO阿拉伯文=ar
=意大利文=it
=乌克兰文=uk
匈牙利=HU匈牙利文=hu
=爱尔兰文=ga
危地马拉=GT西班牙文=es
巴拉圭=PY西班牙文=es
保加利亚=BG保加利亚文=bg
克罗地亚=HR克罗地亚文=hr
波斯尼亚和黑山共和国=BA塞尔维亚文=sr
罗马尼亚=RO罗马尼亚文=ro
卢森堡=LU法文=fr
=挪威文=no
=立陶宛文=lt
新加坡=SG英文=en
厄瓜多尔=EC西班牙文=es
波斯尼亚和黑山共和国=BA塞尔维亚文=sr
尼加拉瓜=NI西班牙文=es
=斯洛伐克文=sk
=俄文=ru
=马耳他文=mt
萨尔瓦多=SV西班牙文=es
=荷兰文=nl
印度=IN印地文=hi
=爱沙尼亚文=et
希腊=GR希腊文=el
斯洛文尼亚=SI斯洛文尼亚文=sl
意大利=IT意大利文=it
日本=JP日文=ja
卢森堡=LU德文=de
瑞士=CH法文=fr
马耳他=MT马耳他文=mt
巴林=BH阿拉伯文=ar
=阿尔巴尼亚文=sq
=越南文=vi
黑山=ME塞尔维亚文=sr
巴西=BR葡萄牙文=pt
挪威=NO挪威文=no
=希腊文=el
瑞士=CH德文=de
新加坡=SG中文=zh
科威特=KW阿拉伯文=ar
埃及=EG阿拉伯文=ar
爱尔兰=IE爱尔兰文=ga
秘鲁=PE西班牙文=es
捷克共和国=CZ捷克文=cs
土耳其=TR土耳其文=tr
=捷克文=cs
乌拉圭=UY西班牙文=es
爱尔兰=IE英文=en
印度=IN英文=en
阿曼=OM阿拉伯文=ar
塞尔维亚及黑山=CS塞尔维亚文=sr
=加泰罗尼亚文=ca
=白俄罗斯文=be
=塞尔维亚文=sr
=朝鲜文=ko
阿尔巴尼亚=AL阿尔巴尼亚文=sq
葡萄牙=PT葡萄牙文=pt
拉脱维亚=LV拉托维亚文(列托)=lv
塞尔维亚=RS塞尔维亚文=sr
斯洛伐克=SK斯洛伐克文=sk
墨西哥=MX西班牙文=es
澳大利亚=AU英文=en
挪威=NO挪威文=no
新西兰=NZ英文=en
瑞典=SE瑞典文=sv
=罗马尼亚文=ro
黎巴嫩=LB阿拉伯文=ar
德国=DE德文=de
泰国=TH泰文=th
=土耳其文=tr
哥伦比亚=CO西班牙文=es
菲律宾=PH英文=en
爱沙尼亚=EE爱沙尼亚文=et
塞浦路斯=CY希腊文=el
=匈牙利文=hu
法国=FR法文=fr

重点!!

好了!基本工作就做完了,接下来是我们的实现思路以及方式


一:我们要将所有本地需要变换的字段全部引用strings;

    我们先来看下效果,中日文对比

Android多语言切换_第5张图片Android多语言切换_第6张图片


二:在选择语言页面代码进行切换

    String city = "";//定义一个切换语言的标记
  当切换日文时 city = "ja";
  当切换中文时  city = "zh";
(不同的国家语言字母不同,在上面有给大家贴出)   
Resources  resources = getResources();
DisplayMetrics  dm = resources.getDisplayMetrics();
Configuration  config = resources.getConfiguration();
 //确认切换时执行以下代码
Locale jaLocale = new Locale(city);
config.locale = jaLocale;
resources.updateConfiguration(config, dm);
CacheUtils.put(Constants.COUNTRY, city);//将选择的语言记录下来,方便下次进入App选中语言,可用Sharedpreferences代替;
recrete();//重启App

  public void recrete() {
        removeAllActivitys();
        Intent intent = new Intent(this, MainActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        startActivity(intent);
    }
三:再次启动App的时候需要对选中的语言进行切换
String location = CacheUtils.get(Constants.COUNTRY);//(可用Sharedpreferences代替,获取选中的语言种类)
if (!TextUtils.isEmpty(location)) {
    Resources resources = getResources();
    DisplayMetrics dm = resources.getDisplayMetrics();
    Configuration config = resources.getConfiguration();
    Locale myLocale = new Locale(location);
    config.locale = myLocale;
    resources.updateConfiguration(config, dm);
}

好了这样就可以切换了!效果不方便贴出,请谅解。

有疑问欢迎评论,一起探讨!

转载请注明出处:https://blog.csdn.net/android_yyf


你可能感兴趣的:(Android多语言切换)