首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VB 6源码,语音文本是法语想要翻译成英语

VB 6源码,语音文本是法语想要翻译成英语
EN

Stack Overflow用户
提问于 2011-06-06 07:07:36
回答 5查看 2K关注 0票数 0

我有一个可能对我有用的程序,但文档和所有工具提示都是用我看不懂的语言编写的。源代码是可用的,整个过程大约有84,000行代码。我的问题是,是否有一种方法可以导出或抓取,例如工具提示文本、按钮文本,以及作为任何可读消息的一部分显示给最终用户的内容,以便轻松翻译文本?

EN

回答 5

Stack Overflow用户

发布于 2011-06-06 09:49:35

一种可能的方法是使用知道如何转换VB6程序的东西。它需要解析VB6,提取所有文字文本字符串,将它们提供给您进行翻译,并用您的替换内容替换原始字符串。实际上,您需要两个过程,第一个过程生成允许您翻译感兴趣的集合,第二个过程替换您指定的翻译。您可能有一些调试工作要做,因为通常会有一些东西取决于字符串的大小。

如何将字符串从一种语言转换为另一种语言取决于您。正如其他帖子所建议的那样,你可以使用在线翻译器,获得你想要的东西。我希望你能做得更好,如果你让一个人来做的话。他们通常只需要关注字符串的含义,因为它们是从代码中提取出来的,但您也会发现转换取决于代码所做的事情,因此需要程序员参与。

我们的DMS Software Reengineering Toolkit及其Visual Basic Front End可以很容易地配置来实现这一点。DMS提供通用的解析和转换机制;VB前端提供有关Visual Basic 6的详细信息(在您的例子中)。

这种想法的一种变体是用对包含原始(法语)或新(英语)的"resources“(相当于由字符串号索引的查找表)的引用来替换翻译后的文字字符串。这个解决方案产生了一些接近国际化的人们想要做的事情。(这并不关心日期和货币格式;它们需要数据流分析来确定日期或货币操作的计算结果。虽然文字字符串转换不需要DMS,但它提供了流分析,因此也可以将其配置为执行此操作。)

如果您有关于字符串在文本中位置的精确信息(例如,开始行/列、结束行/列),则可以通过另一种方式执行此操作:使用该精确信息提取字符串,然后使用该精确信息重新插入翻译。为了避免损坏字符串定位符,您应该首先替换从每个文件末尾开始的字符串,并向后遍历整个文件。这应该是在文本缓冲区上直接完成的。

我们的Source Code Search Engine (SCSE)可以用来简单地找到这样的字符串及其位置。SCSE根据其词法结构对源代码进行索引(因此可以准确地看到字符串文字),然后all允许跨源代码查询任意序列的标记。它使用DMS的语言前端(出于您的目的,使用VB6前端)来准确地识别词位。

您可以使用如下查询来寻找将大于10 (使用范围约束)的常量赋给名称包含X(使用通配符)的变量的语句:

代码语言:javascript
复制
 I=*x* '=' N>10

SCSE将查找所有匹配项,向您显示命中结果,并且只需再单击一次,即可在源代码中查看命中结果。

要查找文字字符串的查询非常简单:

代码语言:javascript
复制
 S=*

意思是“查找所有字符串而不考虑内容”。您可以打开SCSE日志记录,它会将所有命中的列表以及精确的位置写入日志文件。A这一点,你有了所有精确的字符串信息。(SCSE不能进行流分析,因此它不能像DMS那样帮助国际化日期,但它可以找到

代码语言:javascript
复制
 N 'mod' 4 '==' 0 

模式,这往往是闰年调整)。

票数 1
EN

Stack Overflow用户

发布于 2011-06-06 07:21:27

我没有完美的建议,但这可能是你最好的选择:使用文档翻译器,让自己离得更近。然后编译新的源代码,看看有什么问题。它很可能会忽略不恰当的单词(如btnOK等)。

有很多使用Google Translator的网站。下面是我随机选择的一个:

http://www.onlinedoctranslator.com/

如果你想构建你自己的翻译器,你可以看看这篇CodeProject文章:

http://www.codeproject.com/KB/IP/GoogleTranslator.aspx

我知道这不在你最初问题的范围内,但既然使用翻译器可能是你最好的选择,也许你可以构建一些东西让它更好地工作。

票数 0
EN

Stack Overflow用户

发布于 2011-06-06 18:36:20

一种选择是

  • 将程序升级到VB.Net ( may not be easy,但可以延长程序的生命周期)
  • 然后使用VB.Net的built-in localization features,这应该会使生活更轻松。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6246522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档