关于谷歌翻译接口调用php方法

这两天在整数据库,发现里面好多数据翻译不准确,那么问题来了,从哪去找接口来翻译数据,请不起人,只有靠网上的翻译了,开始的时候发现谷歌以前的api翻译接口貌似收费了。。。我是个穷人,用不起,后来发现百度的可以用,就用了一下:

下面是代码:

$url = "http://openapi.baidu.com/public/2.0/bmt/translate?client_id=YourApiKey&q=today&from=auto&to=auto";

ob_start();

readfile($url);

$result = ob_get_contents();

ob_end_clean();

后来又发现百度翻译。。真的不准。。。又想用谷歌,所以在网上找了很多资料,发现还是有办法用的:

代码如下:

function getname($name) {

$urlqueue = "";

$contents = "";

$titles = "";

$str = "http://translate.google.cn/translate_a/t?client=t&text=".$name."&hl=zh-CN&sl=en&tl=zh-CN&ie=UTF-8&oe=UTF-8&multires=1&otf=1&pc=1&it=srcd_gms.1378&ssel=4&tsel=6&sc=1";

ob_start();

readfile($str);

$result = ob_get_contents();

ob_end_clean();

preg_match_all(‘/\[\[\[\"([\s\S]*?)\"/‘,$result,$match);

//$arr=json_decode($result,true);

$namenew = $match[1][0];

return $namenew;

}

在线面试我借鉴的资料大家可以看看。。。。

今日,在想要在C#中,利用google翻译,实现把中文翻译为英文。

然后就去找,对应翻译的url和参数是如何使用的。

参考之前自己的的BlogsToWordpress中的Python版本的crifanLibcrifanLib.py中的translateString,然后去写代码,结果竟然发现,无法成功获得对应的返回的html,因此也就无法找到翻译后的结果了。

所以,就打算手动自己去找当前可用的google翻译。



1.找到网页版的google翻译,首地址是:

http://translate.google.cn/

然后使用之前在:

【总结】浏览器中的开发人员工具(IE9的F12和Chrome的Ctrl+Shift+I)-网页分析的利器

中所介绍的IE9的F12,去调试。

然后设置好

源语言:中文(简体)

目标语言:英文

然后再随便输入一串汉字,比如:

他们是这样说的

然后可以看到结果为:

其中,此处是自动实时翻译,所以没有点击翻译按钮,就可以看到翻译的结果:

They say

了。

2. 然后接下来去找,到底此翻译的请求,是哪个地址。

而对于IE9的F12中,抓到很多url,内容繁多,也不容易找到到底哪个是我们想要的。

但是我们现在已经知道了翻译结果为:

They say

所以,就可以通过F12自带的搜索功能,去找到对应的url了:

如上,再点击Back to summary view,就可以看到是这个地址了:

对应的地址,在Detail view中,拷贝出来就是:

http://translate.google.cn/translate_a/t?client=t&text=%E4%BB%96%E4%BB%AC%E6%98%AF%E8%BF%99%E6%A0%B7%E8%AF%B4%E7%9A%84&hl=zh-CN&sl=zh-CN&tl=en&ie=UTF-8&oe=UTF-8&multires=1&otf=1&pc=1&it=srcd_gms.1378&ssel=4&tsel=6&sc=1

然后将其分解为:

http://translate.google.cn/translate_a/t?

client=t&

text=%E4%BB%96%E4%BB%AC%E6%98%AF%E8%BF%99%E6%A0%B7%E8%AF%B4%E7%9A%84&

hl=zh-CN&

sl=zh-CN&

tl=en&

ie=UTF-8&

oe=UTF-8&

multires=1&

otf=1&

pc=1&

it=srcd_gms.1378&

ssel=4&

tsel=6&

sc=1

3. 由此信息,便可以去写代码了。

经过一番代码调试,最后搞定:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

//-----------------------------------------------------------------------------

//translate
strToTranslate from fromLanguage to toLanguage

//return
the translated string

//return
empty string if error

//some
frequently used language abbrv:

//Chinese
Simplified:   zh-CN

//Chinese
Traditional:  zh-TW

//English:             
en

//German:              
de

//Japanese:            
ja

//Korean:              
ko

//French:              
fr   

//more
can be found at:

//http://code.google.com/intl/ru/apis/language/translate/v2/using_rest.html#language-params

public string translateString(string strToTranslate, string fromLanguage, stringtoLanguage)

{

    string translatedStr
"";

    string transRetHtml
"";

  

    ////following
refer: http://python.u85.us/viewnews-335.html

    //string
googleTranslateUrl = "http://translate.google.cn/translate_t";

    //Dictionary<string,
string> postDict = new Dictionary<string, string>();

    //postDict.Add("hl",
"zh-CN");

    //postDict.Add("ie",
"UTF-8");

    //postDict.Add("text",
strToTranslate);

    //postDict.Add("langpair",
fromLanguage + "|" + toLanguage);

    //const
string googleTransHtmlCharset = "UTF-8";

    //string
transRetHtml = getUrlRespHtml(googleTranslateUrl, null,googleTransHtmlCharset, postDict);

  

  

    ////http://translate.google.cn/#zh-CN/en/%E4%BB%96%E4%BB%AC%E6%98%AF%E8%BF%99%E6%A0%B7%E8%AF%B4%E7%9A%84

    //string
googleTransBaseUrl = "http://translate.google.cn/#";

    //strToTranslate
= "他们是这样说的";

    //string
encodedStr = HttpUtility.UrlEncode(strToTranslate);

    //string
googleTransUrl = googleTransBaseUrl + fromLanguage + "/" + toLanguage + "/" + encodedStr;

    //string
transRetHtml = getUrlRespHtml(googleTransUrl);

  

  

    //http://translate.google.cn/translate_a/t?client=t&text=%E4%BB%96%E4%BB%AC%E6%98%AF%E8%BF%99%E6%A0%B7%E8%AF%B4%E7%9A%84&hl=zh-CN&sl=zh-CN&tl=en&ie=UTF-8&oe=UTF-8&multires=1&ssel=0&tsel=0&sc=1

    //strToTranslate
= "他们是这样说的";

    string encodedStr
= HttpUtility.UrlEncode(strToTranslate);

    string googleTransBaseUrl
"http://translate.google.cn/translate_a/t?";

    string googleTransUrl
= googleTransBaseUrl;

    googleTransUrl 
+= 
"&client=" "t";

    googleTransUrl
+= 
"&text=" +
encodedStr;

    googleTransUrl
+= 
"&hl=" "zh-CN";

    googleTransUrl
+= 
"&sl=" +
fromLanguage;
//
source   language

    googleTransUrl
+= 
"&tl=" +
toLanguage;  
//
to       language

    googleTransUrl
+= 
"&ie=" "UTF-8";     //
input    encode

    googleTransUrl
+= 
"&oe=" "UTF-8";     //
output   encode

  

    try

    {

        transRetHtml
= getUrlRespHtml(googleTransUrl);

        //[[["They
say","他们是这样说的","","Tāmen shì zhèyàng shuō de"]],,"zh-CN",,[["They",[5],0,0,1000,0,1,0],["say",[6],1,0,1000,1,2,0]],[["他们 是",5,[["They",1000,0,0],["they are",0,0,0],["they were",0,0,0],["that they are",0,0,0],["they are the",0,0,0]],[[0,3]],"他们是这样说的"],["这样
说",6,[["say",1000,1,0],["said",0,1,0],["say so",0,1,0],["says",0,1,0],["say this",0,1,0]],[[3,6]],""]],,,[["zh-CN"]],1]

          

        if (extractSingleStr(@"\[\[\[""(.+?)"","".+?"",",
transRetHtml, 
outtranslatedStr))

        {

            //extrac
out:They say

        }

    }

    catch

    {

        //
if pass some special string, such as "彭德怀", then will occur 500 error

        //
here tmp not process the error, just omit it here

    }

      

    return translatedStr;

}

  

public string transZhcnToEn(string strToTranslate)

{

    return translateString(strToTranslate, "zh-CN""en");

}

【总结】

此处通过自己调试,找到的google翻译的api为:

基地址:

http://translate.google.cn/translate_a/t?

一些固定参数:

client=t

hl=zh-CN:表示本地语言是zh-CN

需要自己设置的参数:

text=%E4%BB%96%E4%BB%AC%E6%98%AF%E8%BF%99%E6%A0%B7%E8%AF%B4%E7%9A%84:
需要翻译的文字,被encode后的值,%E4%BB%96%E4%BB%AC%E6%98%AF%E8%BF%99%E6%A0%B7%E8%AF%B4%E7%9A%84对应的原文字是:他们是这样说的。

sl=zh-CN:source
language为zh-CN,即需要翻译的文字是中文简体

tl=en:to
language,目标语言为en,即要翻译为英语

ie=UTF-8:input
encoding,输入的文字的编码为UTF-8

oe=UTF-8:output
encoding,输出,翻译后,的文字的编码为UTF-8

其他可有可无的参数:

multires=1

otf=1

pc=1

it=srcd_gms.1378

ssel=4

tsel=6

sc=1

其中,最最核心的很明显是sl和tl,相对次要的是ie和oe。

自己根据自己的需要,设置text,sl,tl,(和ie和oe),提交对应的请求,即可获得如下的返回内容:

[[["They say","他们是这样说的","","Tāmen shì zhèyàng shuō de"]],,"zh-CN",,[["They",[5],0,0,1000,0,1,0],["say",[6],1,0,1000,1,2,0]],[["他们 是",5,[["They",1000,0,0],["they are",0,0,0],["they were",0,0,0],["that they are",0,0,0],["they are the",0,0,0]],[[0,3]],"他们是这样说的"],["这样
说",6,[["say",1000,1,0],["said",0,1,0],["say so",0,1,0],["says",0,1,0],["say this",0,1,0]],[[3,6]],""]],,,[["zh-CN"]],1]

提取其中的最开始的They say,即可实现翻译的目的了。



【后记 2014-05-19】

1.后来遇到别人问我要相关的完整源码,所以在此一并回答:

直接去:

https://code.google.com/p/crifanlib/

->

https://code.google.com/p/crifanlib/source/checkout

->

浏览Browser

或者下载checkout

对应的:

crifanLib.cs

https://code.google.com/p/crifanlib/source/browse/trunk/csharp/crifanLib.cs

其中就有你要的translateString的源码

注:

(1)

关于我的库函数代码如何使用,可以去看我的配套教程:

9.9.
(谷歌)翻译一段话:translateString
9.10.
将中文翻译为英文:transzhcntoen

(2)

https://code.google.com/p/crifanlib/source/browse/#svn%2Ftrunk%2Fcsharp

中,还有其他更多相关的,比如:

crifanLibGoogle.cs

https://code.google.com/p/crifanlib/source/browse/trunk/csharp/crifanLibGoogle.cs

感兴趣的话,你也可以看看。

时间: 2024-09-30 18:39:06

关于谷歌翻译接口调用php方法的相关文章

python网络爬虫入门(二)——用python简单实现调用谷歌翻译

最近在看国外的文档,有些生词不认识.就用谷歌翻译来理解,用着用着闲来无事就按F12查看了下页面的源代码.发现可以用python简单的实现下谷歌翻译的页面功能.于是先上网搜下有没有类似的文章博客,发现几篇不错的,于是参考其他代码与自己的思路,简单的实现了下翻译的功能,代码如下: import re import urllib,urllib2 #----------模拟浏览器的行为,向谷歌翻译发送数据,然后抓取翻译结果,这就是大概的思路------- def Gtranslate(text): #t

云极知客开放平台接口调用方法(C#)

云极知客为企业提供基于SAAS的智能问答服务.支持企业个性化知识库的快速导入,借助语义模型的理解和分析,使企业客户立即就拥有本行业的24小时客服小专家.其SAAS模式实现零成本投入下的实时客服数据的可视化,优化企业业务流程,指导企业决策. 说白了,其实就是一个智能客服机器人,你可以和他聊天,也可以和他扯淡,但重要的是,你可以用他为客服,教他东西,解放自己.OK,广告到此,下面看看接口相关的东西. 云极知客的接口文档请点击这里. 以下使用C#.NET介绍两个接口的调用方法,平台接口均设置为POST

C#调用谷歌翻译API

原资料为网上找到的原稿为:http://www.cnblogs.com/marso/p/google_translate_api.html(此处只做个人笔记参考) 主要分两块:通过WebRequest的方式请求内容:获取Get方式的请求参数(难点在于tk的获取). 以下是TK的JS代码,把以下代码保存存到程序目录下 gettk.js var b = function (a, b) { for (var d = 0; d < b.length - 2; d += 3) { var c = b.ch

RequestDispatcher接口的include()方法与forward()方法的区别

RequestDispatcher接口所定义的forward()方法可以将HTTP请求转送给其他Web资源(例如Servlet.JSP或HTML)进行处理,并产生HTTP回应.RequestDispatcher接口的include()方法与forward()方法非常类似,惟一的不同在于:利用include()方法将HTTP请求转送给其他Servlet后,被调用的Servlet虽然可以处理这个HTTP请求,但是最后的主导权仍然是在原来的Servlet.RequestDispatcher是一个Web

【课程分享】深入浅出微信公众平台实战开发(微网站、LBS云、Api接口调用、服务号高级接口)

深入浅出微信公众平台实战开发(微网站.LBS云.Api接口调用.服务号高级接口) 课程下载地址:链接:http://pan.baidu.com/share/link?shareid=2214724072&uk=3611155194 密码:glvc 一.本课程是怎么样的一门课程(全面介绍) 1.1.课程的背景 微信公众平台的火热程度已经不用多言,无论是个人还是企业,政府还是商家,都已经开始搭建微信公众平台,微信的作用已经被各界人士认可.微信公众平台的技术需求市场缺口巨大. 1.2.课程内容简介 本

Google Map Api 谷歌地图接口整理

一:基本知识: 1. 使用谷歌地图 API 的第一步就是要注册一个 API 密钥,需要注重一下两点: 1.假如使用 API 的页面还没有发布,只是在本地调试,可以不用密钥,随便用个字符串代替就可以了. 2.API 密钥只对网站目录或者域有效.对不同域的网页,需要用这些域分别注册不同的密钥 2.页面引用javascript文件<script src="http://ditu.google.com/maps?file=api&hl=zh-CN&v=2&key=abcde

利用浏览器事件免费谷歌翻译(Google Translate)

本文将介绍利用浏览器特性在谷歌翻译页面获取译文, 免爬虫免安装环境, 高效无限翻译, 只需一个主流浏览器便可. 1. 打开google翻译页面 https://translate.google.cn, 然后在文本框内输入任意一个值(例如: 1), 避免出错. 2. 打开浏览器控制台 F12或者鼠标右键 -> 检查 (以chrome浏览器为例), 随后点击 console(控制台) 3. 将代码复制到控制台并回传确定 // 调用该方法并传入key/value启动翻译 function start

【SpingBoot guides系列翻译】调用RESTfulWebService

原文 参考链接 CommandLineRunner Bean 翻译如何调用RESTful WebService 这节将演示如何在SpringBoot里面调用RESTful的WebService. 构建的内容 使用Spring的RestTemplate来获取https://gturnquist-quoters.cfapps.io/api/random里面返回的json数据中的quotation字段的内容. 你需要的 大约15min 喜欢的编辑器或IDE jdk1.8+ Gradle4+ 或 Mav

ThinkPHP整合支付宝即时到账接口调用

首先是在支付宝的蚂蚁金服开放平台下载PHP的demo: 1 https://doc.open.alipay.com/doc2/detail?treeId=62&articleId=103566&docType=1 下载地址如上,里面有个MD5加密方式UTF8的PHP的demo可以拿来用,可以直接在localhost上跑,传入合适的参数即使体验支付一次,这点和微信支付接口调用的demo相同. 现在我们尝试将其中demo的lib类文件整合到thinkphp之中去. 将四个lib改名放入Vend