使用谷歌翻译json数据
最近有一个需求是使用node.js调用谷歌翻译,npm有一个叫google-translate-api的包,已经对谷歌翻译服务进行了封装,可以直接调用。npm包的安装及使用可以参考
链接: link.
链接: link.
api 提供了对字符串查询的基础功能,但是要实现对json对象的翻译,需要手动实现一下异步获取所有翻译结果的功能,在这里记录一下实现过程。
因为只能记录单个字符串,所以要把对象值的内容取出来,逐个翻译。平时async await用的比较多,所以首先想到的就是使用await异步获取到每个结果后放在原来的位置。
const translate = require('google-translate-api');let data = {"queryPerson": "露露","enterprise": "不知名的神秘公司","registration": "610100100442598","type": "股份有限公司","status": "在营(开业)","registeredCapital": "23674.790100万人民币元","isLegalPerson": 0,"isExecutive": 1,"isShareholder": 0,"position": "董事"
}
async function creatTranslate(){let start = new Date().getTime()for (let key in data){if(/[^\x00-\xff]/.test(data[key])){let res = await readyTranslate(data[key])if (res){data[key] = res.text}}}let end = new Date().getTime()let duration = end - startconsole.log(duration)
}
function readyTranslate(string){let res = translate(string, {to: 'en'})return res;
}
creatTranslate();
执行后得到结果如下
{queryPerson: 'Lulu',enterprise: "Unknown mysterious company",registration: '610100100442598',type: 'Co., Ltd.',status: 'In camp (opening)',registeredCapital: '23674.7901 million yuan',isLegalPerson: 0,isExecutive: 1,isShareholder: 0,position: 'director'
}
但是这种方式的不足之处在于,每次发出翻译都要等上次的结果返回了以后才能发出,耗时比较长。想要一种同时发出多个请求的方法,想到之前看到的promise对象有Promise.all()方法,接受一个数组为参数,将多个 Promise 实例,包装成一个新的 Promise 实例。
const translate = require('google-translate-api');let data1 = {"queryPerson": "露露","enterprise": "不知名的神秘公司","registration": "610100100442598","type": "股份有限公司","status": "在营(开业)","registeredCapital": "23674.790100万人民币元","isLegalPerson": 0,"isExecutive": 1,"isShareholder": 0,"position": "董事"
}function translateZh(){let start = new Date().getTime()let keys = Object.keys(data1)const promises = keys.map(function (key) {return translate(data1[key], {to: 'en'})});Promise.all(promises).then(function (posts) {console.log(posts)}).catch(function(reason){// ...});
}
translateZh()
执行结果:
[{text: 'Lulu',from: { language: [Object], text: [Object] },raw: ''},{text: 'Unknown mysterious company',from: { language: [Object], text: [Object] },raw: ''},{text: '610100100442598',from: { language: [Object], text: [Object] },raw: ''},{text: 'Co., Ltd.',from: { language: [Object], text: [Object] },raw: ''},{text: 'In camp (opening)',from: { language: [Object], text: [Object] },raw: ''},{text: '23674.7901 million yuan',from: { language: [Object], text: [Object] },raw: ''},{ text: '0', from: { language: [Object], text: [Object] }, raw: '' },{ text: '1', from: { language: [Object], text: [Object] }, raw: '' },{ text: '0', from: { language: [Object], text: [Object] }, raw: '' },{text: 'director',from: { language: [Object], text: [Object] },raw: ''}
]
返回了一个包含所有翻译结果的数组,麻烦点的就是需要对数据再进行一次处理,优点就是速度变快了。
一次小小的尝试,不足之处望大神指正。
使用谷歌翻译json数据相关推荐
- JSON数据解析:Gson(谷歌)和fastjson(阿里巴巴)的异同点
Gson和fastjson分别为谷歌和阿里巴巴对JSON数据进行处理封装的jar包 Gson(谷歌)和fastjson(阿里巴巴)两者异同点: 相同点:都是根据JSON数据创建相应的类不同点: 1.调 ...
- 推荐一个格式化json数据的谷歌插件JSONView:谷歌浏览器中JSONVue扩展程序插件jsonview的下载与安装
介绍: 在线格式化的网站有很多.但是都需要每次都要去打开网站.然后手动复制粘贴.非常麻烦.有了个代码格式化插件.非常方便.直接就能看. 实际开发工作中经常用到json数据,那么就会有这样一个需求:在谷 ...
- 生成JSON数据--Gson(谷歌)方法
Gson生成JSON数据方法: 创建相应的类,然后创建对象,toJson()进去就可以了 要求:生成如下JSON数据 1.{"age":4,"name":&qu ...
- 实战:Python 轻松实现自动化谷歌翻译!
背景 这个功能是在工作时,上级有个需求是让我将json文件中指定字段的英文翻译成中文,并且指定要使用谷歌翻译,理由是翻译的结果可能会比较准确. 过程 因为之前写过用python实现有道翻译,是在aja ...
- 为支持两个语言版本,我基于谷歌翻译API写了一款自动翻译的 webpack 插件
大家好,我是若川.持续组织了6个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步.同时极力推荐订阅我写的<学习源码整体架构系列& ...
- 谷歌翻译接口使用(android为例)
对于android来说,很多翻译接口要收费的.但是翻译还是有很多网页版的,因此爬虫便成为一种方式.谷歌翻译中国版不需要翻墙,谷歌翻译中有一个接口可以得到翻译后的json. 例子: https://tr ...
- python语言无需翻译成_python实现谷歌翻译
背景 这个功能是在工作时,上级有个需求是让我将json文件中指定字段的英文翻译成中文,并且指定要使用谷歌翻译,理由是翻译的结果可能会比较准确. 过程 因为之前写过用python实现有道翻译,是在aja ...
- python调用google翻译_python调用百度翻译、谷歌翻译
谷歌翻译不提供接口,想要使用谷歌的翻译结果,需要借用爬虫技术,将待翻译的文本传入,抓取页面,解析出翻译结果,经测试,这种方法的翻译效果较差,不建议使用. 百度翻译提供接口,可在百度翻译注册开发者后获取 ...
- python调用百度翻译、谷歌翻译
谷歌翻译不提供接口,想要使用谷歌的翻译结果,需要借用爬虫技术,将待翻译的文本传入,抓取页面,解析出翻译结果,经测试,这种方法的翻译效果较差,不建议使用. 百度翻译提供接口,可在百度翻译注册开发者后获取 ...
最新文章
- SecureCRT提示----数据库里没找到防火墙“无”----解决方案
- COM本质论学习笔记(一)IDL
- django-QueryDict对象
- FD.io VSAP(VPP Stack Acceleration Project),通过FD.io VSAP构建用户态协议栈
- BootLoader学习笔记(1)
- springboot 关于第三方包 打包问题
- python怎么读写文件-一文看懂Python文件的读取写入操作,建议收藏-bak文件怎么打开...
- Linux安装wget
- 解决网页pdf禁止打印的方案
- 数据结构-六度空间(模拟六度分隔理论)
- steam好友网络无法连接
- sinc函数卷积_11-2 Sinc 函数与矩形脉冲
- Unity API常用方法和类
- Seq2Seq模型讲解
- 数据库查询结果去重常用方法整理
- 基于惠斯顿电桥的压力传感器的解决方案
- 给技术创业的九个忠告
- 《深入浅出Python量化交易实战》:散户也能学会的数字化交易策略
- Ubuntu解决播放wmv格式视频
- 转载:Java3D实现三维显示