Android适配之适配不同语言,即国际化

Android适配之适配不同语言,即国际化

概述

国际化,能够让我们的app被使用不同国家地域使用,感觉是件很酷的事情。但是,市场上大部分app都没有做国际化方面的工作,因为没有必要,大点的app,如微信,微博等也只是多适配了英语。

在开发过程中,我们在布局文件中为textview,指定android:text=”“属性时会看到类似下面的警告信息:

[I18N] Hardcoded string “admin”, should use @string resource

Google推荐我们将字符串写在strings.xml文件中,其实一方面是为了方便管理和重用,另一方面,就是为了国际化。

如何国际化?

1.创建区域设置目录和字符串文件

为了支持多国语言,在res/中创建一个额外的values目录以连字符和ISO国家代码结尾命名,比如values-es/ 是为语言代码为”es”的区域放置简单的资源文件的目录。Android会在运行时根据设备的区域设置,加载相应的资源。

若你决定支持某种语言,则需要创建资源子目录和字符串资源文件,例如:
这里写图片描述

添加不同区域语言的字符串值到相应的文件。我们还能在ADT中,看到所选的strings.xml的国旗。
点击了values-en/strings.xml文件:
这里写图片描述

点击了values-fr/strings.xml文件:
这里写图片描述

在运行时,Android系统会根据用户设备当前的区域设置,使用相应的字符串资源。如若,根据系统设置的语言找不到相关加载资源文件,则默认使用values/strings.xml文件。

例如 ,下面列举了几个不同语言对应不同的字符串资源文件。

英语,values-en/strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">AnimatorTest</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>

</resources>

法语,values-fr/strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">AnimatorTest</string>
    <string name="action_settings">Mon Application</string>
    <string name="hello_world">Bonjour le monde !</string>

</resources>

使用字符资源

你可以在你的源代码和其他XML文件中,通过元素的name属性来引用你的字符串资源。

在你的源代码中你可以通过R.string.语法来引用一个字符串资源,很多方法都可以通过这种方式来接受字符串。

例如:

// 第一种方式
String hello = getResources().getString(R.string.hello_world);

// 第二种方式
TextView textView = new TextView(this);
textView.setText(R.string.hello_world);

在其他XML文件中,每当XML属性要接受一个字符串值时,你都可以通过@string/语法来引用字符串资源。

例如:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world" />
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值