翻译LOC

57hvy0tb  于 2021-06-30  发布在  Java
关注(0)|答案(3)|浏览(320)

有没有人遇到过这样一种情况:用java编写、由法语程序员编写的现有代码库必须转换成英语程序员能够理解的代码?这里的问题是,变量/方法/类名、注解等都将使用该特定语言。
是否已经有任何自动化解决方案可用?
(我在标题中使用了translate这个词,但显然我的意思不是将代码移植到任何其他编程语言,也不是i18n)
当做,

hwazgwia

hwazgwia1#

好吧,这当然是一个不平凡的任务。
我的第一个想法是
找一些工具(解析器)把源代码解析成xml文件(或ast)
在中间格式上进行翻译,例如可以在xml文件中使用xpath来查找注解、变量名等。
当然,该工具必须支持将xml文件重新转换为Java源代码
问题:
糟糕的翻译(翻译程序没有领域知识,翻译程序几乎肯定不能正确翻译计算机/编程术语、缩写词、键入错误的单词、camelcase方法名称等)
你不能盲目地翻译,你需要重构。否则,您可能会得到不再有效的源代码,因为(a:翻译将多个单词匹配到一个翻译,这可能会导致类/变量/方法具有相同的等。
如何确定不翻译的内容(例如java标准库类名等)

qco9c6ql

qco9c6ql2#

请记住,类路径名在java(和其他一些语言)中非常敏感,执行全局“查找和替换”(这听起来很像),很可能会破坏软件的重要方面。
例如,我在一个产品上工作了很多年,它仍然剔除了stacktraces,其中包括公司名称以前的迭代中的java类路径名称(该公司已经被收购和/或至少剥离了4x),因此看到一个包含“iconclude”的错误表明代码的一部分可以追溯到它的第一个名称迭代(尽管不保证代码是“旧的”)。同样地,看到包含“opsware”的错误时,表示代码的某些部分是在第一次采集之后出现的(或者,至少是在以前的命名方案下添加的代码)。

jljoyd4f

jljoyd4f3#

我不认为你可以简单地通过某种“翻译”软件来运行它,以基于字典的方式替换变量名和注解。恐怕你要么需要一个翻译软件,它能将java解析到可以将注解、变量名、类名和潜在的消息分离出来的程度,然后才应用基于字典的翻译。即使在这种情况下,我怀疑结果是否会非常有吸引力,因为所说的软件很可能缺乏领域知识,你需要习惯性地翻译这些术语。
恐怕要产生有用的东西,唯一的解决办法就是让一个精通两种自然语言并熟悉问题领域的程序员重写软件。其他一切都可能造成一场大混乱。

相关问题