Unity 接入有道智云AI - 文本翻译

接入接口前首先需要申请应用ID和应用秘钥,登录有道智云AI开放平台,创建应用,获取应用ID和秘钥。

定义接口响应类数据结构,接口实际返回内容和官方文档有点出入,大概是文档未更新吧。

以下是官方文档给出的说明:

以下是本人测试获取到的响应结构:

定义该数据结构:

[Serializable]
public class Response
{/// <summary>/// 单词校验后的结果 主要校验字母大小写、单词前含符号、中文简繁体/// </summary>public string[] returnPhrase;public string query;/// <summary>/// 错误返回码/// </summary>public string errorCode;/// <summary>/// 源语言和目标语言/// </summary>public string l;/// <summary>/// 翻译结果发音地址/// </summary>public string tSpeakUrl;/// <summary>/// 网络释义 不一定存在/// </summary>public Web[] web;public string requestId;/// <summary>/// 翻译结果/// </summary>public string[] translation;public URL dict;public URL webdict;/// <summary>/// 词义/// </summary>public Basic basic;public bool isWord;/// <summary>/// 源语言发音地址/// </summary>public string speakUrl;
}
[Serializable]
public class Web
{public string key;public string[] value;
}
[Serializable]
public class URL
{public string url;
}
[Serializable]
public class Basic
{public string phonetic;public string[] explains;
}

封装接口:

public class YoudaoTranslator
{//应用ID和应用秘钥 通过在平台创建应用获取private static readonly string appKey = "**********";private static readonly string appSecret = "********************";/// <summary>/// 将英文翻译为中文/// </summary>/// <param name="content">待翻译的文本</param>/// <param name="callback">回调函数</param>public static void EnglishToChinese(string content, Action<string> callback){Translate(content, "en", "zh-CHS", callback);}/// <summary>/// 将中文翻译为英文/// </summary>/// <param name="content">待翻译的文本</param>/// <param name="callback">回调函数</param>public static void ChineseToEnglish(string content, Action<string> callback){Translate(content, "zh-CHS", "en", callback);}/// <summary>/// 翻译/// 中文zh-CHS 英文en 日文ja 韩文ko 法文fr 德文de 俄文ru/// 其它语言查阅官方文档/// </summary>/// <param name="content">待翻译的文本</param>/// <param name="from">源语言</param>/// <param name="to">目标语言</param>/// <param name="callback">回调函数</param>public static void Translate(string content, string from, string to, Action<string> callback){HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://openapi.youdao.com/api");request.Method = "POST";request.ContentType = "application/x-www-form-urlencoded";//当前UTC时间戳(秒)string curtime = ((long)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds / 1000).ToString();//UUID 唯一通用识别码string salt = DateTime.Now.Millisecond.ToString();string input = content == null ? null : content.Length <= 20 ? content : (content.Substring(0, 10) + content.Length + content.Substring(content.Length - 10, 10));byte[] inputBytes = Encoding.UTF8.GetBytes(appKey + input + salt + curtime + appSecret);byte[] hashedBytes = new SHA256CryptoServiceProvider().ComputeHash(inputBytes);//签名 sha256(应用ID + input + salt + curtime + 应用秘钥)//其中input的计算方式为:input=content前10个字符 + content长度 + cotent后10个字符(当cotent长度大于20)或 input=content字符串(当content长度小于等于20)string sign = BitConverter.ToString(hashedBytes).Replace("-", "");//签名类型string signType = "v3";//参数列表string args = string.Format("from={0}&to={1}&signType={2}&curtime={3}&q={4}&appKey={5}&salt={6}&sign={7}",from, to, signType, curtime, content, appKey, salt, sign);byte[] data = Encoding.UTF8.GetBytes(args);request.ContentLength = data.Length;using (Stream reqStream = request.GetRequestStream()){reqStream.Write(data, 0, data.Length);reqStream.Close();}HttpWebResponse httpWebResponse = (HttpWebResponse)request.GetResponse();Stream stream = httpWebResponse.GetResponseStream();using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)){string responseStr = reader.ReadToEnd();//Debug.Log(responseStr);//反序列化var response = JsonUtility.FromJson<Response>(responseStr);int errorCode = int.Parse(response.errorCode);switch (errorCode){case 0: if (response.translation.Length > 0) callback.Invoke(response.translation[0]); break;case 102: Debug.LogError($"不支持的语言类型"); break;case 103: Debug.LogError($"翻译文本过长"); break;case 108: Debug.LogError($"应用ID无效 注册账号登录后台创建应用和实例并完成绑定 可获得应用ID和应用密钥等信息"); break;case 113: Debug.LogError($"待翻译文本不能为空"); break;//其它错误代码含义查阅官方文档default: Debug.LogError($"翻译失败 错误代码[{errorCode}]"); break;}}}
}

测试:

public class Foo : MonoBehaviour
{private void Start(){YoudaoTranslator.EnglishToChinese("Hello everyone.", s => Debug.Log(s));YoudaoTranslator.ChineseToEnglish("测试", s => Debug.Log(s));}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/57765.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python爬虫】有道翻译新旧API接口

&#x1f308;据说&#xff0c;看我文章时 关注、点赞、收藏 的 帅哥美女们 心情都会不自觉的好起来。 前言&#xff1a; &#x1f9e1;作者简介&#xff1a;大家好我是 user_from_future &#xff0c;意思是 “ 来自未来的用户 ” &#xff0c;寓意着未来的自己一定很棒~ ✨个…

Translate插件的有道翻译

在plugins下载Translate插件 setting-> Tools->Translation 没有id和密钥就申请注册 登录后 创建应用 创建成功后输入id和密钥 点击鼠标右键即可使用 翻译效果 over

python利用有道词典翻译_Python利用有道词典接口制作即时翻译的工具

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于Python 实用宝典&#xff0c;作者Python 实用宝典 前言 在编程时经常会遇到需要将中文词汇翻译成英文的情况。 比如变量名的定义、取一个合…

如何用python“优雅的”调用有道翻译

文章目录 前言分析分析url分析参数01分析参数02加密分析 模拟请求注意点请求代码执行结果 结语 前言 其实在以前就盯上有道翻译了的&#xff0c;但是由于时间问题一直没有研究(我的骚操作还在后面&#xff0c;记得关注)&#xff0c;本文主要讲解如何用python调用有道翻译&…

Python 调用有道的翻译接口

最近为了熟悉一下 js 用有道翻译练了一下手&#xff0c;写一篇博客记录一下&#xff0c;也希望能对大家有所启迪&#xff0c;不过这些网站更新太快&#xff0c;可能大家尝试的时候会有所不同。 首先来看一下网页 post 过去的数据 大家不难发现&#xff0c;我们翻译的内容是…

使用python打造一个中英互译软件(基于有道翻译)

&#xff08;本博客简洁明了&#xff0c;适合小白入门&#xff09; 首先明确整体构架&#xff1a; 1.爬虫部分 2.界面部分 3.打包 涵盖的库&#xff1a; import urllib.request import urllib.parse import json import tkinter as tk import tkinter.messagebox 先确定爬…

ubuntu最好用的划词翻译词典:有道词典和GoldenDict

目录 1、安装有到词典 2、安装GoldenDict 3、GoldenDict的一些简单配置以及相关bug修改 用惯了Windows下的有道词典&#xff0c;其划词翻译功能用起来令人极其舒适&#xff5e;Ubuntu系统中也有有道词典以及一个类似的类似的软件GoldenDict&#xff0c;下面就分别介绍下这两…

有道翻译接口 破解

有道翻译 API 最近有些任务需要将中文翻译成英文&#xff0c;由于个人英文水平问题&#xff0c;每次都要打开好几个在线翻译网页&#xff0c;一句一句的丢进去&#xff0c;取最佳者为所用&#xff0c;甚是麻烦。 任务完成之后&#xff0c;就稍微研究了一下各个翻译接口&#…

对接有道翻译api中英翻译软件

中译英翻译软件对接了有道翻译API的翻译数据接口&#xff0c;通过数据接口&#xff0c;我们可以获得文本的批量翻译并对我们的译后文本进行内容自动编辑&#xff0c;通过调用有道翻译API数据接口&#xff0c;我们可以在我们的中译英翻译软件中更灵活地对我们的文本进行翻译处理…

百度、阿里、腾讯、有道各平台翻译API申请教程

文章目录 文章推荐 vscode插件 var-translate-en 中翻英转驼峰命名百度翻译申请腾讯翻译申请阿里翻译申请有道翻译申请 文章推荐 vscode插件 var-translate-en 中翻英转驼峰命名 快捷 一键转换为英文&#xff0c;并生成多种命名风格支持多平台翻译服务配置&#xff08;谷歌、腾…

塔望 · ​食界​人物|红牛饮料背后的两个企业家

关注行业&#xff0c;更要关注行业发展背后的人。关注企业&#xff0c;更要关注企业的人格化身——“企业家”。人类在任何领域的创新和进步&#xff0c;都离不开企业家精神。优秀的企业家和企业家精神&#xff0c;是经济社会发展的重要推动力。 本期塔望【​食界​人物】将带…

正则表达式爬取红牛分公司数据

正则表达式还是很好玩的,爬取红牛官网分公司信息 import requests import re import pandas as pd response requests.get(url"http://www.redbull.com.cn/about/branch") company re.findall(<h2>(.*?)</h2>, response.text) add re.findall("…

列表表达式爬取红牛分公司数据

列表达式爬取红牛官网分公司信息 import requests import pandas as pd import bs4 response requests.get("http://www.redbull.com.cn/about/branch") main_page bs4.BeautifulSoup(response.text,"html.parser") company [i.text for i in main_pag…

红牛商标所有者泰国天丝集团将投资逾10亿元深化在华布局

全球红牛品牌及“红牛”商标的创始者和所有者 -- 泰国天丝集团宣布&#xff0c;未来三年将对其在华业务进行一系列投资&#xff0c;总额高达10.6亿人民币。具体包括深化在华合作伙伴战略关系、在中国设立新的代表处、组建国内团队、扩建新的生产基地以及推出集团旗下更多新产品…

从红牛案看商业伦理和社会公义中的众生相

一出与生恩、养恩有关的大戏&#xff0c;正在中国商业界上演。 “儿子”是红牛&#xff0c;一方是在养育红牛的华彬集团&#xff0c;一方是生育红牛的泰国天丝&#xff0c;自2016年以来&#xff0c;双方数次诉讼、数次论战&#xff0c;严重冲击了市场秩序的稳定繁荣。 对于生…

java红牛农场答案_Java面向对象程序设计实验指导与习题解答(21世纪高等学校计算机专业实用规划教材)...

导语 《Java面向对象程序设计实验指导与习题解答》是《Java面向对象程序设计》(作者耿祥义,清华大学出版社出版,2010)的配套实验指导和习题解答,目的是通过一系列实验练习使学生巩固所学的知识。本书由16个实验组成,每个实验由6个主要部分构成。本书由耿祥义、张跃平编著。…

红牛开发板模拟器简要说明_V1.0

文档名称 红牛开发板模拟器简要说明_V1.0 版本 1.0 作者 叶帆 日期 2011-2-27 历史 文档列表 http://www.sky-walker.com.cn/MFRelease/YF_document_list.pdf 1、前言 .NET Micro Framwork 除了简单易于开发外&#xff0c;还有一个比较有用的功能&#xff0c;那就是…

zte android截屏快捷键,中兴红牛V5手机怎么截屏 中兴红牛V5截图技巧图解

中兴红牛V5手机截屏怎么截的呢&#xff0c;对于刚开始用智能机的我来说&#xff0c;是一个不小的尝试&#xff0c;包括我刚知道的候一样&#xff0c;下面由本小编教大家怎么使用中兴红牛手机截屏和截图的技巧。操作步骤如下&#xff1a; 红牛V5怎么截屏 中兴红牛V5截图技巧 [中…

我有故事,你有红牛吗?

前言 不经意留意到CSDN官方的活动1024有奖征文|我和CSDN的故事 &#xff0c;CSDN提供了一个帮助自己成长的平台&#xff0c;所以决定写一篇文章真诚的感谢CSDN&#xff0c;当然了我肯定不会为了那小小的奖品而折腰的&#xff0c;不就是个衣服嘛&#xff0c;不就是个会员嘛&…

AutoGPT保姆级使用教程

1. 介绍 Auto-GPT是一个基于ChatGPT的工具&#xff0c;他能帮你自动完成各种任务&#xff0c;比如写代码、写报告、做调研等等。使用它时&#xff0c;你只需要告诉他要扮演的角色和要实现的目标&#xff0c;然后他就会利用ChatGPT和谷歌搜索等工具&#xff0c;不断“思考”如何…