之前一直在使用的火车头翻译插件是免API的火车头翻译插件,但由于最近百度翻译官方改变了传递数据的规则,增加了的sign的验证,要破解的话应该有一定的难度,同时搜索遍了暂时也没有找到合适的火车头翻译插件,就上百度翻译开放平台官方看了下。发现百度翻译api每个月有200万字符的免费额度,对于我来说感觉已经够了,就拿百度翻译开放平台官方的DEMO修改了下,做成了这个基于百度翻译API的火车头php翻译插件。

插件优点

  • 本插件是PHP写的,就一个PHP文件,简单灵活。
  • 不受火车头软件版本限制,任何有PHP插件权限的火车头版本都可以使用。

使用方法

1.修改火车头的PHP环境

由于火车头采集器软件内置的PHP环境有问题,在使用PHP插件之前需要先修改火车头的PHP环境。修改的方法很简单,打开火车头网站采集软件的安装目录“System/PHP”,找到php.ini文件打开,并找到如下代码。

;extension=php_curl.dll

将最前面的分号“;”删除并保存即可,这样火车头数据采集器就可以正常运行这个PHP翻译插件了。

2.申请百度翻译API

这个插件是基于百度翻译开放平台的,所以必须要先到百度翻译开放平台申请到appID和密钥之后,插件才能正常使用。

百度翻译开放平台网址:http://api.fanyi.baidu.com

申请百度开放平台的帐户很简单,只要填写姓名、Email、手机就可以了,审核也很快。最主要的是百度翻译开放平台审核也很宽泛,基本上只要你填的信息是真实的就会通过。

审核通过后,登陆百度翻译开放平台,进入“管理控制台”,在网页最底部的“申请信息”里可以看到“APP ID”和“密钥”,这两个需要填到插件代码里才能正常使用。

3.修改代码设置插件

插件下载后解压,用编辑器(推荐Dreamweaver或Notepad,最好不要用Windows系统自带的记事本)打开“BaiduTranslateApi.php”文件,将12行的“YOUR APP ID”修改为你百度翻译开放平台的“APP ID”,将13行的“YOUR SEC KEY”修改为你百度翻译开放平台的“密钥”。

14、15行分别为你采集的语言和需要翻译成什么语言,例如插件默认的是采集的中文,用“zh”表示、需要翻译为英文,用“en”表示,你可以根据你的具体情况修改,所有语言的标识码查看下面的表格。

最后就是设置需要翻译的标签了,这个设置需要和火车头采集器的采集标签一致,否则无法翻译。在“BaiduTranslateApi.php”文件的156、157两行里给了两个事例,分别是翻译“标题”和“内容”两个标签,如果你采集的标签名和我的不一样,则直接修改就可以,如果你要翻译的标签有很多个,按找事例的规律在下面新增代码就可以了,设置的话看代码上面的注释应该能看懂。

需要特别说的是翻译方式有两种,一种是不保存采集的内容直接翻译,另一只是保存采集的内容再翻译;插件上默认的“标题”就是不保存采集的内容,软件会直接保存翻译后的内容,“内容”标签就是保存了采集的内容,同时也保存了翻译后的内容。对比一下两行代码前后标签名的区别,应该就能看出规律。

如下两张图为设置方法:

↑上图可以看到,我采集了标题、关键词、内容三个标签,并且将这三个标签都翻译成了英文。但是翻译后的显示有区别,“标题”这个标签是直接显示了翻译后的英文内容,没有采集的中文,而关键词和内容两个标签都保留了采集的中文原文,同时另外用一个标签来保存了翻译后的英文。设置方法需要修改插件的“BaiduTranslateApi.php”文件,见下图。

↑上图就是插件的代码设置,这个设置是必须的,并且必须根据你的火车头采集的标签名来设置,否则会翻译不了。看上图156、157、158三行代码,156行表示将火车头采集规则里“标题”这个标签翻译,并且不保存中文原文;157行表示将“关键词”这个标签翻译,并且保存采集的原文,然后需要另外在火车头建一个“翻译后的关键词”标签来保存翻译后的英文,158行的代码规则和157行是一样的,只是翻译标签为“内容”这个采集标签。如果你要翻译的标签不止上面3个,那么直接按照上面的规则在158行后按前面的规则添加代码即可,一行为一条规则。

代码如下(注意修改引号内的内容为你火车头的实际标签名):

$LabelArray['翻译后的标签名'] = translate($query = $LabelArray['采集标签名']);

如果需要保存采集的内容,又要保存翻译后的内容,那在采集规则设置时,需要创建一个翻译后的标签名,规则留空即可。例如插件默认的内容标签,我的火车头采集软件里“内容”这个标签需要填写采集规则,这个标签会保存采集的内容,再创建一个标签名为“翻译的内容”的标签,这个标签不需要填任何规则,火车头网站数据抓取软件开始采集后这个标签会自动保存翻译的内容。

如果你的火车头采集工具能正常采集到内容,但是不显示翻译的内容,那肯定是你的插件设置不对,请仔细阅读插件代码末尾的注释说明,按说明和事例的规则进行设置。如果翻译的内容报错,请看下面的错误代码,根据提示检查。

如果还不会,那就留言吧。

错误代码

插件内置了大部分的错误,只要插件设置不正确的话火车头的采集结果就会显示错误内容,基本上设置不正确的话看采集结果就能知道怎么解决,下面是更详细的错误和解决方法。

错误码 含义 解决方法
52000 成功
52001 请求超时 重试,或将插件代码第1行的“30”改大一点试试。
52002 系统错误 重试
52003 未授权用户 检查您的APPID设置是否正确
54000 必填参数为空 检查插件的采集规则,看看是否没有采集到内容
54001 签名错误 请检查您的密钥是否填写正确
54003 访问频率受限 采集的频率太高,过段时间或调整下采集间隔试试
54004 账户余额不足 余额不足,您的免费字符已用完或余额不足
54005 长query请求频繁 3s后再试,或调整采集时间间隔,或调整采集的文章长度试试
58000 客户端IP非法 检查个人资料里填写的IP地址是否正确
可前往管理控制平台修改
IP限制,IP可留空
58001 译文语言方向不支持 译文语言方向错误,请检查您设置的目标语言标识码是否正确。

基于百度翻译API的火车头PHP翻译插件错误代码列表

语言标识

百度翻译API支持28种语言互译,各语言标识码如下:

语言标识码 名称
auto 自动检测
zh 中文
en 英语
yue 粤语
wyw 文言文
jp 日语
kor 韩语
fra 法语
spa 西班牙语
th 泰语
ARa 阿拉伯语
ru 俄语
pt 葡萄牙语
de 德语
it 意大利语
el 希腊语
nl 荷兰语
pl 波兰语
bul 保加利亚语
est 爱沙尼亚语
dan 丹麦语
fin 芬兰语
cs 捷克语
rom 罗马尼亚语
slo 斯洛文尼亚语
swe 瑞典语
hu 匈牙利语
cht 繁体中文
vie 越南语

语言标识码错误的话,火车头的翻译标签内容会报错,需要按上面表格的语言标识码正确设置插件第14、15行。

注意事项

免费版火车头数据采集软件不能使用本插件,因为免费版的火车头采集器禁止了插件功能,其实免费版火车头采集软件也不能用任何插件。

百度翻译开放平台对每个帐户每个月有200万免费字符的限额,如果每个月翻译的字符数超过200万,则需要收费。而且他的收费方式比较坑,当超过200万字符时,并不是只收取超过字符的费用,而是收取当月全部翻译字符数的费用。(官方原话:当月翻译字符数≤200万,当月免费。超过200万字符,按照49元人民币/百万字符,支付当月全部翻译字符数费用。)

我测试了下,字符的规则为:汉字、英文字母、阿拉伯数字、标点(含中英文)、空格均计算为1个字符,回车计算为4个字符。

下载地址

BaiduTranslateApi

插件和代码均免费发布使用,不提供技术维护。有什么建议或插件使用遇到有问题,可以在下面评论留言,看到我都会回复,但我本身不会PHP开发,高难度问题我不一定能实现。欢迎转载本文和插件,但请注明出处,转载插件请保留代码内的注释说明。