一个app能够多语言适配,学名国际化,这样就会显得非常高大上。
于是我也试着高大上一点。
------------------------------------------------------------------------------------------------------------
跟随系统的语言环境的变化而变化
首先可以试着看看每个语言的一些标识
private boolean isZh() {
Locale locale = getResources().getConfiguration().locale;
String language = locale.getLanguage();
if (language.endsWith("zh"))
return true;
else
return false;
}
其中languag为语言码:
zh:汉语
en:英语
来源于:
http://blog.sina.com.cn/s/blog_7bac470701014ja9.html
可以修改上例,直接输出language,以测试所有语言的标识。
在工程的res目录下,新建一些文件夹,取名为values-xxx
例如中文的,values-zh,英文的,values-en
在这些文件夹中都建一个strings.xml(可在系统创建的xml处直接复制并粘贴到对应处)
之后在写布局xml文件的时候,类似text,hint的属性,一律使用@string/xxxx,
若在java代码中用于提示等需要多语言化的文字使用getString(R.string.xxxx);
例如:Toast.makeText(getActivity(),getString(R.string.xxx), Toast.LENGTH_SHORT).show();
基本上这样就可以做一个简单的程序多语言适配了
当系统的语言被更换了之后,系统会找到与当前语言所匹配的values文件,
例如当语言切换到中文了之后,系统会匹配values-zh里面的string,
若找到了,则会正常显示
若没找到系统会自动匹配它默认的那个valus目录,也就是创建项目时,自动创建的那个values目录里面的string