我最近接到了写一段 FoxPro 来与谷歌翻译交互的任务,这样我们就可以将我们软件中的文本翻译成当前用户/机器的语言。
我找到/修改/编写的代码非常适合基于拉丁语的字符集,但如果你尝试像中文这样的代码,它会返回所有问号。
我已经尝试将 VFP 函数 STRCONV() 与每个可能的选项组合一起使用,但没有成功。我还尝试在以任何方式操作文本之前设置 LocaleID - 仍然没有运气。
在这一点上,我没有想法。作为一个老 DOS 程序员,我几乎没有处理 unicode 的经验。
我没有包含任何代码,因为正如我所说,除非您尝试将其与中文(或日语)一起使用,否则该代码可以正常工作。
请帮忙!
编辑:这是与谷歌通信的功能。还有其他支持功能,但它们与编码无关。
* MODIFIED BY: MICHAEL COOLEY - 11/19/2012
* PURPOSE: TRANSLATE TEXT FROM ONE LANGUAGE TO ANOTHER
* EXPECTS: STRING (SOURCE LANGUAGE CODE)
* STRING (DESTINATION LANGUAGE CODE)
* STRING (THE TEXT TO TRANSLATE)
* RETURNS:
FUNCTION Translate(lcFrom,lcTo,lcText)
LOCAL lcHttp AS MSXML2.XMLHTTP
LOCAL lcRequest AS String
lcRequest = "http://translate.google.com/translate_a/t?client=j" + ;
"&"+"text="+this.EncodeURL(lcText)+"&"+"hl="+lcTo+"&"+"sl="+lcFrom+"&"+"tl="+lcTo
lcHttp = CREATEOBJECT("MSXML2.XMLHTTP")
lcHttp.open("GET",lcRequest,.f.)
IF lcHttp.status == 200
lcText = this.GetTranslationString("trans", lcHttp.responseText) + CHR(10)
ELSE
lcText = ""
ENDIF
RETURN lcText
ENDFUNC