2

例如,我有一个多语言 Web 应用程序,它从单个对象获取所有翻译,lang.getTranslation("Login")并且该对象负责在用户语言的 xml 文件中查找翻译。

我想做的是一个脚本/自定义静态分析,它输出所有丢失的翻译和应用程序中不再使用的翻译。我相信我应该首先以编程方式查找对 getTranslation 方法和字符串参数的每个调用,将数据存储在特殊结构中并将其与所有翻译文件进行比较。

有没有图书馆可以让我轻松做到这一点?我已经找到了Javassist,但我不能用它来读取参数值。我也尝试过grepping,但我不确定这是否是一个可靠的解决方案(以防调用另一个具有 getTranslation 方法的类)。我知道 Qt 有一种类似的机制来在代码中查找可翻译的字符串,但这是一种完全不同的技术。

我问这个是因为我很确定有一个很好的现有解决方案,我不想重新发明轮子。

4

1 回答 1

2

好的,这就是我的做法。不是最佳解决方案,但对我有用。我在 Java 中创建了一个实用程序来查找所有方法调用并将参数与现有翻译进行比较。

  1. 使用Reflections库在我的项目的根包中查找所有类
  2. 使用Javassist库在类中查找getTranslation正确类的所有方法调用并创建它们的列表(包含:包、类、行号)
  3. 从给定行中读取项目目录中相应的 .java 文件,直到 ';' 特点
  4. 提取参数值并将其添加到列表中
  5. 找到缺失的翻译并输出
  6. 找到多余的翻译并输出它们

我花了一些时间来做这件事,但至少我现在有一个可重用的实用程序来保持翻译文件是最新的。

于 2013-08-02T18:59:54.620 回答