APP支持不同的设备 之 支持不同的语言

本文详细介绍了如何在Android应用中实现多语言支持,包括创建语言目录、字符串资源文件以及如何在代码和XML文件中使用这些资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现让你的APP支持多语言,通常最好的做法是把你的APP里面的字符串单独的提取存放到一个外部文件里面。android开发实现这个就很简单,每个项目里面都有这么一个资源目录。

如果你利用android sdk tools创建一个项目,那么在项目的根目录下会自动创建一个/res目录,这个目录下面的子目录存放着不同类型的数据资源。有一些默认创建的文件,比方说/res/values/string.xml文件,这个文件里面存放你的APP的字符串资源。

创建语言目录和字符串文件

可以在/res目录下创建其他的value目录,来支持多语言,目录的名称是在values名称的后面用一个连字符“-”加上ISO国家代码。比方说:/res/values-es,里面包含着当系统的语言环境为es时候的,程序对应的资源。系统会在运行时,根据系统语言的设定,来载入对应的目录的下的资源。

当你决定了你要支持的语言,那么要创建对应的资源子目录,在它的下面创建字符串资源文件,如下:

MyProject/
    res/
       values/
           strings.xml
       values-es/
           strings.xml
       values-fr/
           strings.xml

把不同语言环境的字符串填入对应的字符串资源文件

在运行的时候,系统会根据系统当前语言环境的设置,使用对应的字符串资源文件里面的字符串值。

下面的例子就针对不同语言的字符串资源文件里面的内容:

English(默认的语言环境),/values/strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">My Application</string>
    <string name="hello_world">Hello World!</string>
</resources>

Spanish,/values-es/strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Mon Application</string>
    <string name="hello_world">Bonjour le monde !</string>
</resources>
注意:你可以对任何的资源使用区域修饰符(或者是任何指定的修饰符),比方说你想在不同的使用区域下使用不同版本的bitmap资源图片。更多的信息请查看 Localization.

使用字符串资源

你可以在你的代码或者是xml文件里面用你的字符串资源文件,使用的时候可以根据定义的时候用到的<string>标记里面的name属性来识别。

在代码中是有的时候,可以按照这个语法标准来调用:R.string.<stringname>. 很多的方法都可以用这种调用方式来获取字符串的值。

例如:

// Get a string resource from your app's Resources
String hello = getResources().getString(R.string.hello_world);

// Or supply a string resource to a method that requires a string
TextView textView = new TextView(this);
textView.setText(R.string.hello_world);

在其他的xml文件里面,在使用需要使用字符串值的时候,可以用这种语法方式:@string/<stringname>来获取到对应的字符串值。

例如:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值