1.资源文件创建
app增加国际化的资源文件其实就是增加多语言的资源文件夹,比如values-zh-rCN,values-ur-rPK等.
下面是创建values-ur-rPK文件夹的截图:
2.支持 RTL 布局和文本
1>. RTL(自右到左)和LTR(自左到右)代表的是两种文字阅读的方向,比如,阿拉伯语,希伯来语或波斯语就是RTL。
2>. 如果您要发布应用的国家/地区使用从右到左 (RTL) 的文字阅读方向,则您应该考虑尽可能地支持 RTL 布局以及相应的文本显示和编辑。
3>. Android 4.1 引入了对双向文本的有限支持,支持应用以从左到右 (LTR) 和从右到左 (RTL) 的方向显示和编辑文本。 Android 4.2 添加了对 RTL 布局的完整原生支持(包括布局镜像),因此您可以为所有用户提供一致的优质体验。Android 4.2 用户至少可以轻松添加基本的 RTL 布局镜像,这对满足 RTL 用户需求大有帮助。
比如下面的两张图:
![]()
3.加入RTL Layout
1.在manifest 文件<application>下申明android:supportsRtl="true"
2.如果app运行版本在 Android 4.2以上(即
targetSdkVersion
| minSdkVersion
>=17),则“start|end”代替替“left|right”,比如:android:paddingLeft
--> android:paddingStart
.
3.如果app运行版本在 Android 4.2以下(即
targetSdkVersion
| minSdkVersion
<=16),则“start|end”和“left|right”需要同时申明,
比如:
android:paddingLeft
和
android:paddingStart同时存在
.
Android 4.2以上版本还增加以下方法帮助管理View组件:
- android:layoutDirection - 用于设置组件布局方向的属性。
- android:textDirection - 用于设置组件文本方向的属性。
- android:textAlignment - 用于设置组件文本对齐的属性。
- getLayoutDirectionFromLocale() - 获取区域设置指定方向的方法
同时可以使用资源限定符“ldrtl”和“ldltr”,来限定layout布局的方向(使用前提是:targetSdkVersion
| minSdkVersion
>=17)。
详细用法自行查看文档:
官方文档--应用资源
4.针对日期、时间、数字和货币采用系统提供的格式,并且根据不同的区域设置Local,格式化时才能得到自己想要的内容
Android 提供了多种实用工具,用于在不同的语言区域中设置格式和进行转换:
例如适用于日期的 DateUtils 和 DateFormat;
适用于数字和货币的 String.format() 或 DecimalFormat;
适用于电话号码的 PhoneNumberUtils 等
这些方法都可以传入不同的区域Local。
5.阿拉伯语等RTL语言,在资源文件中需要格式化或者样式设置需要进行特殊处理
比如:\u200f的作用是让文本从右往左显示。
<xliff:g>是不翻译包裹的内容。
<string name="send_msg_to">send استورد</string>
<string name="send_msg_to">\u200fsend استورد\u200f</string>
<string name="send_msg_to">\u200fsend <xliff:g id="number">\u200f%1$d</xliff:g>استورد</string>
\u202d和\u202c是让数字不颠倒。
<string name="send_msg_to">استورد\u202d%s\u202cتور</string>
关于阿拉伯语在java代码中的拼接,下面是一种方法,判断当前的语言时RTL还是LTR,然后根据不同的情况进行拼接。
java.text.Bidi bidi = new java.text.Bidi(getString(R.string.app_name),
Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
boolean isBidi = false;
if (bidi != null && (bidi.isRightToLeft() || bidi.isMixed())) {
isBidi = true;
} else {
isBidi = false;
}