难题求解:中英文对译问题
VB6 app
假设页面上有2个文本框A、B和一个按钮button
在一个文本框A内输入中文(很简单的一个单词),在button-click事件激发以后,译出来,让另一个文本框B的内容等于翻译好的英文。
我以前见到过一段代码,可以提交一个URL到Google online free translators,然后翻译出来。
谁有这段代码能贴一下么?感激不尽!
[解决办法]
测试了下:
Dim oHTTP As XMLHTTP
Dim oXmlDoc As DOMDocument
Dim strWebserviceURL As String, strRequest As String
Dim s As String
strWebserviceURL = "http://www.webxml.com.cn/WebServices/TranslatorWebService.asmx/getEnCnTwoWayTranslator "
strRequest = "Word=china " '翻译的单词
Set oHTTP = New XMLHTTP
oHTTP.Open "POST ", strWebserviceURL, False
oHTTP.setRequestHeader "Content-Type ", "application/x-www-form-urlencoded "
oHTTP.send (strRequest)
Set oXmlDoc = New DOMDocument
oXmlDoc.Load oHTTP.responseXML
Debug.Print oXmlDoc.Text
结果:China: [ 'tʃainə ] n. 中国,瓷器 |
更好的结果,就分析返回的xml文件吧
[解决办法]
我没有说web
我都已经把思路告诉你了,汗。难道你一点都不知道怎么用VB去访问web
给你看怎么把英文变成中文。不过这是最基本的代码,需要进行修改。
'from code
'*************************************************************************
'**模 块 名:frmMain
'**说 明:版权所有2007 - 2008(C)
'**创 建 人:daisy li
'**日 期:2007-09-10 23:50:37
'**描 述:借助Google 英翻中
'*************************************************************************
Option Explicit
Dim strEn As String '翻译的英文
Private Sub cmdTranslate_Click()
strEn = Trim(txtEn.Text)
If strEn = " " Then Exit Sub
With Me.Winsock1
.RemoteHost = "www.google.com "
.RemotePort = 80
.Connect
End With
End Sub
Private Sub Command1_Click()
Winsock1.Close
End Sub
Private Sub Form_Load()
txtEn.Text = " "
txtCN.Text = " "
End Sub
Private Sub Form_Unload(Cancel As Integer)
Winsock1.Close
End Sub
Private Sub Winsock1_Connect()
Dim strSend As String '定义发送HTTP头
strSend = "POST /translate_t?langpair=en|zh-CN HTTP/1.1 " & vbCrLf
strSend = strSend & "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) " & vbCrLf
strSend = strSend & "Host: www.google.com " & vbCrLf
strSend = strSend & "Content-Length: 47 " & vbCrLf
strSend = strSend & vbCrLf & "hl=zh-CN&ie=UTF8&text= " & strEn & "& " & "langpair=en%7Czh-CN " & vbCrLf
Winsock1.SendData strSend & vbCrLf
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim strData() As Byte
Dim strRst As String
Me.Winsock1.GetData strData()
strRst = strRst & UTF8_Decode(strData())
If txtCN.Text <> " " Then
Winsock1.Close
Exit Sub '判断已经取到结果了
End If
txtCN.Text = GetCN(strRst)
End Sub
Private Function GetCN(strMsg As String) As String
Dim i As Integer
Dim m As Integer
Dim n As Integer
i = InStrRev(strMsg, "result_box ", -1)
If i = 0 Then Exit Function
strMsg = Mid(strMsg, i, 500)
m = InStr(strMsg, " </div> ")
n = InStr(strMsg, "> ")
GetCN = Mid(strMsg, n + 1, m - n - 1)
End Function