close

如何實現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,英文譯中文拼音
**張宏201036
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

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 hsiung03 的頭像
    hsiung03

    hsiung.博格 ERP軟體

    hsiung03 發表在 痞客邦 留言(0) 人氣()