最近有一个需求是使用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数据相关推荐

  1. JSON数据解析:Gson(谷歌)和fastjson(阿里巴巴)的异同点

    Gson和fastjson分别为谷歌和阿里巴巴对JSON数据进行处理封装的jar包 Gson(谷歌)和fastjson(阿里巴巴)两者异同点: 相同点:都是根据JSON数据创建相应的类不同点: 1.调 ...

  2. 推荐一个格式化json数据的谷歌插件JSONView:谷歌浏览器中JSONVue扩展程序插件jsonview的下载与安装

    介绍: 在线格式化的网站有很多.但是都需要每次都要去打开网站.然后手动复制粘贴.非常麻烦.有了个代码格式化插件.非常方便.直接就能看. 实际开发工作中经常用到json数据,那么就会有这样一个需求:在谷 ...

  3. 生成JSON数据--Gson(谷歌)方法

    Gson生成JSON数据方法: 创建相应的类,然后创建对象,toJson()进去就可以了 要求:生成如下JSON数据 1.{"age":4,"name":&qu ...

  4. 实战:Python 轻松实现自动化谷歌翻译!

    背景 这个功能是在工作时,上级有个需求是让我将json文件中指定字段的英文翻译成中文,并且指定要使用谷歌翻译,理由是翻译的结果可能会比较准确. 过程 因为之前写过用python实现有道翻译,是在aja ...

  5. 为支持两个语言版本,我基于谷歌翻译API写了一款自动翻译的 webpack 插件

    大家好,我是若川.持续组织了6个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步.同时极力推荐订阅我写的<学习源码整体架构系列& ...

  6. 谷歌翻译接口使用(android为例)

    对于android来说,很多翻译接口要收费的.但是翻译还是有很多网页版的,因此爬虫便成为一种方式.谷歌翻译中国版不需要翻墙,谷歌翻译中有一个接口可以得到翻译后的json. 例子: https://tr ...

  7. python语言无需翻译成_python实现谷歌翻译

    背景 这个功能是在工作时,上级有个需求是让我将json文件中指定字段的英文翻译成中文,并且指定要使用谷歌翻译,理由是翻译的结果可能会比较准确. 过程 因为之前写过用python实现有道翻译,是在aja ...

  8. python调用google翻译_python调用百度翻译、谷歌翻译

    谷歌翻译不提供接口,想要使用谷歌的翻译结果,需要借用爬虫技术,将待翻译的文本传入,抓取页面,解析出翻译结果,经测试,这种方法的翻译效果较差,不建议使用. 百度翻译提供接口,可在百度翻译注册开发者后获取 ...

  9. python调用百度翻译、谷歌翻译

    谷歌翻译不提供接口,想要使用谷歌的翻译结果,需要借用爬虫技术,将待翻译的文本传入,抓取页面,解析出翻译结果,经测试,这种方法的翻译效果较差,不建议使用. 百度翻译提供接口,可在百度翻译注册开发者后获取 ...

最新文章

  1. SecureCRT提示----数据库里没找到防火墙“无”----解决方案
  2. COM本质论学习笔记(一)IDL
  3. django-QueryDict对象
  4. FD.io VSAP(VPP Stack Acceleration Project),通过FD.io VSAP构建用户态协议栈
  5. BootLoader学习笔记(1)
  6. springboot 关于第三方包 打包问题
  7. python怎么读写文件-一文看懂Python文件的读取写入操作,建议收藏-bak文件怎么打开...
  8. Linux安装wget
  9. 解决网页pdf禁止打印的方案
  10. 数据结构-六度空间(模拟六度分隔理论)
  11. steam好友网络无法连接
  12. sinc函数卷积_11-2   Sinc 函数与矩形脉冲
  13. Unity API常用方法和类
  14. Seq2Seq模型讲解
  15. 数据库查询结果去重常用方法整理
  16. 基于惠斯顿电桥的压力传感器的解决方案
  17. 给技术创业的九个忠告
  18. 《深入浅出Python量化交易实战》:散户也能学会的数字化交易策略
  19. Ubuntu解决播放wmv格式视频
  20. 转载:Java3D实现三维显示

热门文章

  1. 福特sync恢复出厂设置_新福特福克斯SYNC常用命令
  2. 小项目/小游戏Demo合集
  3. 区块链最全书单:必读这20本书
  4. 如何入门大数据(数据挖掘方面)
  5. windows10查询所安装软件
  6. mplayer移植-迅为IMX6Q开发板
  7. 输入n个手机号,做抽奖活动
  8. matlab ode45输出数值解,ode45求微分方程组数值解的问题
  9. 三菱(MITSUBISHI)CNC数据采集
  10. 计算机仿真撤稿,怎样撤稿?时间等的太长了 - 论文投稿 - 小木虫 - 学术 科研 互动社区...