node实现国际化翻译以及文件读写

前几天有项任务是让我在几千个文件中,对指定内容进行繁体翻译。大概估算了一下有4700多处需要进行繁体翻译,如果只靠去google翻译复制粘贴也需要2天多的时间,而且会非常无聊!!
所以,在这里利用了nodejs的文件读写以及google翻译的api帮助我来做这繁琐的事情

其中,编程用到的工具有:

1.typescript (npm安装即可)
2.lodash(npm安装即可)
3.fsPromise(用异步读取文件的目的只是想用用async)
4.google-translate-api(npm 安装即可)

注意:

安装完google-translate-api后需要将index.js中网址google.com改成google.cn(否则不翻墙连不上),client:t改成client:gtx。
不要频繁请求这个接口(我的ip被封了一次。泪目)

要处理的文本内容的结构是:
{
   
	......//一些无关紧要的属性,
	Data:[{
   },{
   },{
   },...]//关键属性,其中{}中的属性name要是以_chs为后缀的话,进行繁体,并将内容写入对应以_cht结尾的{}对象中(不存在的话,则创建)
}
某个英文单词
......
{
   
	......//一些无关紧要的属性,
	Data:[{
   },{
   },{
   },...]//关键属性,
}
某个英文单词
思路
  1. 从每个文件中提取出要翻译的简体中文,并将其作为key存入Map(减轻网络资源消耗,从拒绝重复做起)。遍历完文件后,我再统一调用google翻译接口进行翻译,最后将繁体作为value存入Map中。
  2. 再遍历一遍文件,将文本转化为对象,给对象中对应属性添加繁体内容(从Map中获取繁体资源),最后再将对象转化后文本,创建并写入新的文件。
代码

main.ts

//main.ts
import {
    findAndReadFiles } from './read';
import * as path from 'path';
import translate = require('google-translate-api');
import * as _ from 'lodash';
import {
    findFileAndWrite } from './write';

const cache: Map<string, string> = new Map();

const sourcePath: string = path.resolve('./asset');//来源目录
const targetPath: string = path.resolve('./target');//新建一个目标目录,将新文件存入这里

findAndReadFiles(sourcePath, cache).then(() => {
   
	//走完findAndReadFiles后,会进入这里,并且需要的翻译内容都在cache的key中了

	const keys = [ ...cache.keys() ];//所有需要翻译的中文简体
	const keyChunk = _.chunk(keys, 200);//分成多个组后,每个组一次调用翻译api(因为一次翻译量有限)
	(async function() {
   
		for (let item of keyChunk) {
   
			try {
   
				const value = await translate(
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值