乐于分享
好东西不私藏

用AI工具处理国际化

用AI工具处理国际化

对已有代码补充国际化是一件不太好评估的事情,因为已有的代码量比较大,很多需要国际化的地方都是散落在代码的各个角落里,不太容易找出来。而且很多地方可能是直接用这些需要国际化的字符串来做逻辑的,这些做逻辑的地方整改起来,工作量可大可小,有多大量也不好提前统计出来。所以评估时间很大程度上是找一个维度来大概统计一下,比如统计一个代码量,大概估计一下平均一千行代码处理要多长时间,然后和代码量的量级相乘,大概就能够得到一个工作量。

如果要列具体的工作,那最明显的一件事情,就是要把代码里面中文硬编码的字符串进行国际化。这件事情虽然说起来明显,也没有什么技术含量,但处理起来则非常耗费时间。如果用人工来处理的话,就需要一个一个文件的去查找到硬编码的字符串,把它们拷贝出来,原来的位置换成一个用于国际化的 Key,再把这个 Key 和拷贝出来的中文字符串转移到中文国际化资源文件上,再把中文翻译成英文,把 Key 和英文放到英文国际化资源文件上。这个过程纯人工处理是比较枯燥的,还容易出错,可以想办法用正则表达式去把中文硬编码匹配出来,这样找起来容易一些,漏的地方也少一些。但整体来说,还是非常耗时的。用 AI 工具的话,就可以对代码按语义分析,把里面用中文硬编码的地方都找出来,换成国际化 Key,提取中文和 Key 的关系,把中文翻译成英文,这些 AI 工具可以一次性自动完成。这里最大的区别是,AI 工具就好像一个人一样,能够从语义上看懂代码,把原来需要人工的操作像人一样操作了。如果说这件事情人工处理需要三个月,AI工具可能半天就处理好了。

做完这一步之后,后面如何处理可能就有点犯难了。剩下中文硬编码的地方多多少少都是跟代码逻辑有点关系的,这一点直接难以判断。如果人工来操作的话,就需要把这段代码附近的代码都看懂,可能还需要追溯一下上下调用链,看看最终这个字符串用在哪里了,影响是什么,然后再来判断应该如何进行国际化。这类硬编码的字符串可以分成两类,第一类是硬编码的字符串最终还是用来做显示的,没有用来做相关的逻辑,这样的话也是可以直接进行国际化的。第二类则是最终用来做逻辑的,那么就不能直接国际化,需要把它按照逻辑的要求进行整改,然后再来进行国际化。这两种不好说清楚规则是什么,就不太好给 AI 工具提要求。犯难也就是犯难在这一点上。

但细想一下,如果人工处理的话,就是上面说的通过查看硬编码字符串附近代码的调用链,看看字符串最终的用途,如果直接作为一个显示字符串,那么就没有做逻辑,如果是拿来做比较之类的,那就是做逻辑了。完全可以向 AI 工具提这样的要求,让它来分析代码的调用链,根据调用链的关系来判断这个硬编码的字符串是否最终用来做逻辑了。如果没有做逻辑,那么就直接进行国际化。但如果做逻辑了,还可以让 AI 工具来制定相关的整改方案。人工对这些整改方案进行确认,再用 AI 工具对代码进行整改,整改之后再进行国际化。这个方法可行,主要是 AI 工具看代码的速度比人工快多了,看得比人工还要透彻。

这样的话,整个工作都可以用 AI 工具来完成了。原来想着工作量非常大的国际化整改,突然变得没那么复杂了。如果人工来操作,那可能至少需要 3 ~ 5 个月。用了 AI 工具之后,可能在一个月内就可以搞定了。而且在这一个月内,大部分的时间都是在摸索怎么用 AI 工具来解决这个问题。当摸索清楚之后,AI 工具真正操作的时间可能就两三天,这个速度是非常惊人的。突然意识到,AI 工具的真正能力自己还是了解太少,还需要多挖掘一下。