-
Android 国际化:
- internationalization (国际化)简称 i18n,因为在i和n之间还有18个字符,localization(本地化 ),简称L10n。
- 实现国际化的原理:将UI和字符资源进行分离:
- 把UI中的字符串存储在外部文件,通过代码提取,这是一种很好的做法。
- Android可以通过工程中的资源目录轻松实现这一功能。
- 比如:(TextView)findViewById(R.id.helloworld).setText(getRes);
-
实现方式
为支持多国语言,在res/中创建一个额外的values,目录以连字符和ISO国家代码结尾命名,比如values-es/是为语言代码为"es"的区域设置的简单的资源文件的目录。Android会在运行时根据设备的区域设置,加载相应的资源。
具体步骤
1.创建values-xx的文件夹,比如values-zh-rCN,values-fr.
2.在各个values对应的文件夹下新建一个strings.xml的source文件,以key-values的方式存入自己业务需求的字符串。注意:各个strings下的key值是相同的。如下图:
3.字符资源的使用:分为两种:1.在布局文件中使用,2.在代码中调用,使用方法如下图
-
常见的语言缩写
最佳实践:
我在项目开发中,使用资源国际化,然后在res/文件夹下添加了一个values-zh-cn的文件夹,并添加了string.xml的资源文件,但是运行项目出现了如下错误:values-zh-cn是一个无效的文件夹。
解决办法:
将文件夹名称改为values-zh-rCN,编译运行没有什么问题:
一键化国际化
上面使用的是手动的资源国际化,对于中英文转换等少数语言的国际化比较方便,但是当需要国际化的语言很多时就会很麻烦,这里我们使用一个AndroidStudio的插件:AndroidLocalizationer实现资源一键国际化。
使用方法:
- 下载AndroidLocalizationer
- 添加本地磁盘上的插件
- 重启Android studio
- 在strings.xml文件中右键
参考文档
依赖包