Android脚本插件系列(一):安卓国际化多语自动合入脚本

本文介绍了一个Android脚本插件,用于自动化处理国际化多语合入,包括自动合入、单双引号检测纠正和%检测纠正。脚本解决了手动合入效率低、转义字符错误等问题,提高了多语言版本的构建效率和准确性。
摘要由CSDN通过智能技术生成

Android脚本插件系列(一):安卓国际化多语自动合入脚本

android-scripts 把平时碰到和Android有关的手动操作、人工检查等写成脚本或插件,提高效率和准确度。
Android脚本插件系列(一):安卓国际化多语自动合入脚本
Android脚本插件系列(二):自动打包安装并语音提示脚本


背景

如今越来越多的IT公司都在走国际化,相应的APP也支持国际化。应用国际化首先就是多语言的支持,Android开发支持多语操作比较简洁,在AndroidStudio中分别为不同语言建立相应的values文件夹即可并在其中创建strings.xml(如values、values-ar、values-zh-rCN)。

在这里强调一下values、values-ar这两个文件夹。其中values里的strings.xml是默认使用的文案,在当前手机语言的strings.xml找不到的时候会使用values里的文案,所以一定别忘在values里添加默认的文案,一般添加英文的。values-ar为阿拉伯语言,是一种RTL语言(从右向左)。

一般合入多语的流程是这样的,首先先整理出一份英文的所有的文案,并将该文案写入values文件夹下的strings.xml。然后将该文案交给翻译公司翻译,待翻译的多语返回之后手动把文案写入相应的strings.xml。

碰到的问题

  1. 每次发版都要手动合入22种语言的文案,操作僵硬,效率低下。

  2. 不同语言返回的文案很有可能出现未转义的特殊字符(例如法语的j'aime),导致编译失败,从而要手动一个一个去加转义符。

  3. 对于%在某些情况下会出现不易察觉的问题,如之前向翻译公司提了一条文案为Save %s%%,是”节省百分之几的意思”(Save 50%Save 66%等等)。%s是占位符,%是特殊字符且用反斜杠转义无效,要用%来转义。然而翻译公司在返回多语时,将%%都返回为%(如英文的Save %s%、中文的节省%s%、阿拉伯语的حفظ %s%)。

    手动合入多语之后编译是可以通过的,如果合入者不仔细看的话会忽略该问题,当代码运行到使用该多语的对方会Crash抛出UnknownFromatConversionException异常。合入者没有转义%的情况还是较容易发现的,因为在不同语言下只要代码运行相应对方必现Crash。

    下面详细分析一下合入者在转义了该%从而产生的问题,之前的合入者合入多语后,在lint的帮助下发现了返回的文案中%没有转义。于是手动添加%进行转义,大功告成提交代码,手动测试没有Crash,之后上线进行灰度。一灰的时候发现线上有一个Crash特别高,一看是UnknownFromatConversionException而且报的就是Save %s%%这个文案的地方,emmmm这个文案之前合入的时候已经手动把%转义了,不应该抛这个异常的。

    看来是合入者在转义的时候转错了,排查的时候发现出现Crash的语言都是ar。ar中的文案为حفظ %s%%乍一看好像没什么问题,按照从左往右看是没什么毛病的。不过别忘阿拉伯语是从右往左的,现在在来看看右边两个%%转义之后就是%,占位符的%就没了所以阿拉伯语中使用该文案会crash,正确的转义写法是حفظ %%s%

脚本能做的事

针对以上问题编写了一个脚本,主要功能如下

  1. 自动合入多语,提高效率
  2. 对返回的文案进行单双引号正确性检测,并自动纠正
  3. 对返回的文案进行%正确性检测,发现隐患并自动纠正

效果

因为要输入项目地址、多语返回地址等,所以采用界面化的形式。
选择完项目地址、多语返回地址,输入本次合入注释之后,点击开始合入。

这里写图片描述

这里写图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值