AS下 Android代码资源的国际化

  • 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.
    国际化.png

    2.在各个values对应的文件夹下新建一个strings.xml的source文件,以key-values的方式存入自己业务需求的字符串。注意:各个strings下的key值是相同的。如下图:
Paste_Image.png

3.字符资源的使用:分为两种:1.在布局文件中使用,2.在代码中调用,使用方法如下图


Paste_Image.png
  • 常见的语言缩写


    常见语言缩写.png

最佳实践:

我在项目开发中,使用资源国际化,然后在res/文件夹下添加了一个values-zh-cn的文件夹,并添加了string.xml的资源文件,但是运行项目出现了如下错误:values-zh-cn是一个无效的文件夹。

error.png

解决办法:
将文件夹名称改为values-zh-rCN,编译运行没有什么问题:

Paste_Image.png

一键化国际化

上面使用的是手动的资源国际化,对于中英文转换等少数语言的国际化比较方便,但是当需要国际化的语言很多时就会很麻烦,这里我们使用一个AndroidStudio的插件:AndroidLocalizationer实现资源一键国际化。
使用方法:

  • 下载AndroidLocalizationer
  • 添加本地磁盘上的插件
  • 重启Android studio
  • 在strings.xml文件中右键
一键国际化.png

参考文档


依赖包

推荐阅读更多精彩内容