美文网首页
Cocos接入腾讯云机器翻译

Cocos接入腾讯云机器翻译

作者: 左岸仙缘 | 来源:发表于2019-09-29 09:59 被阅读0次

项目因为要用到即是的多语言,网上找了不少的翻译API,包括有道,google翻译,阿里云等。因为之前有接触过腾讯的语音,就直接用的腾讯系列的机器翻译。

机器翻译包括文本,语音,图像翻译,现阶段只用到文本,所以只接入文本部分。

腾讯云机器翻译入口:https://cloud.tencent.com/product/tmt

本身cocos是有XMLHttpRequest.setRequestHeader() 可以直接发送http get和post请求,具体代码如下:

https://cvm.tencentcloudapi.com/

Authorization: TC3-HMAC-SHA256 Credential=AKIDEXAMPLE/2018-05-30/cvm/tc3_request, SignedHeaders=content-type;host, Signature=582c400e06b5924a6f2b5d7d672d79c15b13162d9279b0855cfba6789a8edb4c
Content-Type: application/json
Host: cvm.tencentcloudapi.com
X-TC-Action: DescribeInstances
X-TC-Version: 2017-03-12
X-TC-Timestamp: 1527672334
X-TC-Region: ap-guangzhou

{"Offset":0,"Limit":10}

测试一下不知道是不是腾讯后台参数和密钥获取不对还是怎样,用XMLHttpRequest不能返回正常的翻译结果,有成功的朋友麻烦留言分享,thx。

只能自己手动接入平台SDK。首先想不用分平台接入腾讯的机器翻译,可以用php在web服务端接入翻译SDK,这样在每次翻译会有一条http消息交互,效率不是太高,最后确定尝试接入java端翻译的SDK。

java sdk api:https://github.com/TencentCloud/tencentcloud-sdk-java

原来想着java端直接接入在android stuido里面就可以直接用了。后来发现java端sdk并不能直接在安卓平台上直接使用。在编译的过程中还会有个jar缺失报错,这个在腾讯云翻译的sdk里面没有的,得从网上下载,jar名:javax.xml.bind.jar。不过这个jar到最后还是没用上,因为jar里面的DatatypeConverter安卓平台没有。

最后能够编译通过了,但有运行进错误。返回的翻译结果也是不成功,如下图:


clipboard.png

查看报错,发现DatatypeConverter这个类在android平台并没有,是java se才有的。想在android上使用得直接找相应替代方法。

总共有两个文件包含DatatypeConverter的调用,修改代码如下

//最后一个才是正确的,前面注释的代码查测试过程用的代码
com\tencentcloudapi\common\AbstractClient.java

//String signature = DatatypeConverter.printHexBinary(Sign.hmac256(secretSigning, stringToSign)).toLowerCase();

//String signature = Base64.encodeToString(Sign.hmac256(secretSigning, stringToSign), Base64.URL_SAFE).toLowerCase();

//String signature = byte2HexStr(Sign.hmac256(secretSigning, stringToSign)).toLowerCase();

String signature =new String(org.apache.commons.codec.binary.Hex.encodeHex(Sign.hmac256(secretSigning, stringToSign))).toLowerCase();
//最后一个才是正确的,前面注释的代码查测试过程用的代码
com\tencentcloudapi\common\Sign.java

//return DatatypeConverter.printHexBinary(d).toLowerCase();
//return Base64.encodeToString(d, Base64.URL_SAFE).toLowerCase();
return new String(org.apache.commons.codec.binary.Hex.encodeHex(d)).toLowerCase();
/** 
* bytes转换成十六进制字符串 
 * @param byte[] b byte数组 
 * @return String 每个Byte值之间空格分隔 
*/  
public static String byte2HexStr(byte[] b)  
{  
     String stmp="";  
     StringBuilder sb = new StringBuilder("");  
     for (int n=0;n<b.length;n++)  
     {  
          stmp = Integer.toHexString(b[n] & 0xFF);  
          sb.append((stmp.length()==1)? "0"+stmp : stmp);  
          sb.append(" ");  
     }  
     return sb.toString().toUpperCase().trim();  
} 

这样修改替换完之后,将翻译源设成auto,再把java端的代码复制到android studio里面就能正常翻译了。

在改的过程还会出现另外一个错,表示解出来的密钥不对,腾讯云机器翻译sdk直接返回了校验错误:


clipboard1.png

总结:
1 想要不分平台还是直接接入php的sdk会好一些,这样只要调用一个get或者post就可以直接翻译

2 语音翻译的功能在腾讯的GVoice里面也有集成的,感觉比这个好用,就我个人的应用场合来说,GVoice会更适合一些。

相关文章

  • Cocos接入腾讯云机器翻译

    项目因为要用到即是的多语言,网上找了不少的翻译API,包括有道,google翻译,阿里云等。因为之前有接触过腾讯的...

  • 腾讯云IM接入案列(一)

    合集 腾讯云IM接入案列(一)腾讯云IM接入案列(二)腾讯云IM接入案列(三)腾讯云IM接入案列(四) 前言 前端...

  • 腾讯云IM接入案列(二)

    合集 腾讯云IM接入案列(一)腾讯云IM接入案列(二)腾讯云IM接入案列(三)腾讯云IM接入案列(四) 前言 上面...

  • 腾讯云IM接入案例(三)

    合集 腾讯云IM接入案列(一)腾讯云IM接入案列(二)腾讯云IM接入案列(三)腾讯云IM接入案列(四) 本篇内容 ...

  • 腾讯云IM接入案例(四)

    合集 腾讯云IM接入案列(一)腾讯云IM接入案列(二)腾讯云IM接入案列(三)腾讯云IM接入案列(四) 前言 前三...

  • iOS 腾讯云Web端接入短信人机验证

    由于腾讯云目前暂无支持APP直接SDK接入,APP要接入只能通过web的形式接入。详情请参考下方腾讯云链接:htt...

  • 腾讯IM推送问题怎么查?

    前言:对于新接入腾讯云IM即时通信的开发者来说,接入过程中,难免会遇到一些问题,接下来笔者将针对使用腾讯云IM接入...

  • 腾讯云短信接入

    因公司需要短信提醒功能,公司使用了腾讯云的短信包,对于第三方的短信开发功能。接入腾讯云短信还是很简单的,大致的思路...

  • 先接入腾讯云直播后再接入TIM聊天遇到的坑

    因项目需求先接入了腾讯云直播功能,后期加入tim聊天的tuikit库时遇到一些问题。 首先查看一下我们接入腾讯云时...

  • CocosCreator接微信,防止忘了

    cocos creator接入微信登陆sdk 背景 项目引擎使用cocos creator,使用android s...

网友评论

      本文标题:Cocos接入腾讯云机器翻译

      本文链接:https://www.haomeiwen.com/subject/vpnauctx.html