如何實現Google中譯英?
英譯中關鍵語句為:
STRTRAN(Gethttp('http://translate.google.cn/translate_a/t?client=t&text='+trans_str+'&sl=auto&tl=zh-CN&pc=0'),CHR(0)," ")
按道理中譯英關鍵語句為:
STRTRAN(Gethttp('http://translate.google.cn/translate_a/t?client=t&text='+trans_str+'&sl=zh-CN&tl=en&pc=0'),CHR(0)," ")
中譯英好像有亂碼,可參考下面英文翻譯為中文的代碼:大家討論討論:如何實現Google中譯英?
**第二個參數為1時,英文譯中文,第二個參數為2時,英文譯中文拼音
**張宏2010年3月6日
clear
? transentoch("Can you tell me who are you?",1)
? transentoch("My name is zhanghong.",1)
? transentoch("how old are you?",1)
PROCEDURE transentoch
parameters trans_str,type
IF VARTYPE(trans_str)<>"C"
RETURN ""
ELSE
PRIVATE paratemp
paratemp=CHRTRANC(trans_str,"abcdefghijklmnopqrstuvwxyz"+UPPER("abcdefghijklmnopqrstuvwxyz")+" ,./?<>:;'!@#$%^&*()_-+=|\1234567890"+'"',"")
trans_str=CHRTRANC(trans_str,paratemp,"")
trans_str=ALLTRIM(trans_str)
IF EMPTY(trans_str)
RETURN ""
ENDIF
ENDIF
private lcgettempstr
lcgettempstr = STRTRAN(Gethttp('http://translate.google.cn/translate_a/t?client=t&text='+trans_str+'&sl=auto&tl=zh-CN&pc=0'),CHR(0)," ")
IF VARTYPE(type)<>"N"
type=1
ELSE
IF !INLIST(type,1,2)
type=1
endif
ENDIF
PRIVATE temp_ret_str
IF type=1
temp_ret_str=SUBSTR(lcgettempstr,AT('“”',lcgettempstr,1)+4, AT('“”',lcgettempstr,2) -AT('“”',lcgettempstr,1)-4)
IF EMPTY(temp_ret_str)
temp_ret_str=SUBSTR(lcgettempstr,AT('"trans":"',lcgettempstr,1)+9, AT('","orig"',lcgettempstr,1) -AT('"trans":"',lcgettempstr,1)-9)
endif
ELSE
temp_ret_str=SUBSTR(lcgettempstr,AT('“”',lcgettempstr,3)+4, AT('“”',lcgettempstr,4) -AT('“”',lcgettempstr,3)-4)
IF EMPTY(temp_ret_str)
temp_ret_str=SUBSTR(lcgettempstr,AT('"translit":"',lcgettempstr,1)+12, AT('"}]',lcgettempstr,1) -AT('"translit":"',lcgettempstr,1)-12)
endif
ENDIF
RETURN temp_ret_str
endproc
procedure Gethttp
parameters lcurl
declare integer InternetOpen in wininet string, integer, string, string, string
declare integer InternetCloseHandle in wininet integer
declare integer InternetOpenUrl in wininet integer, string, string, integer, integer, integer
declare integer InternetReadFile in wininet integer, string @, integer, integer @
private hopen,lcgestr
lcgestr = ""
hopen = internetopen("vfp 6.0",1,0,0,0)
if hopen = 0
messagebox("本機 Dll 函數庫無效!",16,"資訊提示")
else
private hfile
hfile = InternetOpenUrl(hopen,lcurl,"",0,16,0)
if hfile <> 0
private lntotalbytesread,lnbytesread,lcbuffer
lntotalbytesread = 0
do while .t.
lcbuffer = replicate(CHR(0),4096)
lnbytesread = 0
if InternetReadFile(hfile,@lcbuffer,4096,@lnbytesread) = 1
lcgestr = lcgestr+lcbuffer
if lnbytesread = 0
exit
endif
lntotalbytesread = lntotalbytesread+lnbytesread
else
exit
endif
enddo
= InternetCloseHandle(hfile)
else
messagebox("獲取網路資訊失敗!",48,"資訊提示")
endif
= InternetCloseHandle(hopen)
endif
clear dlls
return lcgestr
- Oct 31 Wed 2012 16:56
vfp 如何實現Google中譯英?
close
全站熱搜
留言列表
禁止留言