Nodejs 一个翻译的命令行小工具 fanyi
Nodejs 一个翻译的命令行小工具 fanyi
使用起来非常简单,同时支持中英文互译甚至是整句。
调用的是 iciba 和有道翻译的公用接口,在 mac 下支持简单的发音。
Nodejs 一个翻译的命令行小工具 fanyi
使用起来非常简单,同时支持中英文互译甚至是整句。
该工具调用的是 iciba 和有道翻译的公共接口,在 macOS 下还支持简单的发音功能。
源码和安装
源码可以在 GitHub 上找到:https://github.com/afc163/fanyi
你可以通过以下步骤来安装和使用这个工具:
-
克隆仓库
git clone https://github.com/afc163/fanyi.git cd fanyi
-
安装依赖
npm install
-
运行
node app.js "Hello, world!"
示例代码
这是一个简单的 app.js
示例代码,展示了如何使用 axios
来调用 iciba 和有道翻译 API:
const axios = require('axios');
// iciba API 接口
const icibaApiUrl = 'http://fy.iciba.com/ajax.php?a=f_e';
// 有道翻译 API 接口
const youdaoApiUrl = 'https://fanyi.youdao.com/openapi.do?keyfrom=your-app-id&key=your-app-key&type=data&doctype=json&version=1.1&q=';
async function translate(text, fromLang, toLang) {
try {
// 调用有道翻译 API
const youdaoResponse = await axios.get(youdaoApiUrl + encodeURIComponent(text));
console.log(`Youdao Translation: ${youdaoResponse.data.translation.join(', ')}`);
// 调用 iciba API
const icibaResponse = await axios.post(icibaApiUrl, { word: text });
console.log(`Iciba Translation: ${icibaResponse.data.content.Fr}`);
} catch (error) {
console.error("Error:", error);
}
}
// 使用示例
translate("Hello, world!", "en", "zh");
解释
- 依赖库:使用了
axios
库来处理 HTTP 请求。 - API 调用:
- iciba API 通过 POST 请求调用。
- 有道翻译 API 通过 GET 请求调用,并且需要传递参数
q
(即待翻译的文本)。
- 翻译函数:
translate
函数接收三个参数:待翻译的文本、源语言和目标语言。它分别调用两个翻译 API 并打印结果。
通过这个简单的示例,你可以轻松地实现一个命令行翻译工具。
额,以前写过一个小程序, 功能:1.自动纠错,找出相似的单词。2.解释,音标 3.数据库在本地 我不知道楼主,这样的程序只是调用接口和在线发音吗?
顶一个, 很实用的工具, 一直在用~ 谢谢作者~
高端,顶一个
偏右 缺love啊
好东西一个 不过我最常用的是Alfred,装了个有道的Workflow yd love 然后就搞定
:)
不缺love,缺被love
你们竟然喜欢使用命令行翻译?! -_-!!!
都是神一样的用户,连翻译都放在命令行,我这个命令行爱好者自叹不如了
Node.js 翻译命令行工具 fanyi
是一个可以实现中英文互译的小工具。它通过调用在线翻译 API(如 iciba 和有道)来完成翻译功能。该工具支持整句翻译,并且在 macOS 上支持简单的发音功能。
使用方法
- 安装 Node.js 和 npm。
- 克隆项目仓库或下载源代码。
- 运行安装命令以安装依赖:
npm install
- 在命令行中输入
node fanyi.js "待翻译的文本"
来启动工具并进行翻译。
示例代码
以下是 fanyi.js
文件的基本结构:
const fetch = require('node-fetch');
const fs = require('fs');
function translate(text, fromLang, toLang) {
const url = `https://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&doctype=json&jsonversion=&type=${fromLang}-${toLang}&i=${encodeURIComponent(text)}&doctype=json&version=1.1&keyfrom=fanyi.web&ue=UTF-8&action=FY_BY_CLICKBUTTON&typoResult=true`;
return fetch(url)
.then(response => response.json())
.then(data => {
if (data && data.translateResult) {
const result = data.translateResult[0][0].tgt;
console.log(`Translation: ${result}`);
// 发音功能(仅限 macOS)
if (process.platform === 'darwin') {
const sayCmd = `say "${result}"`;
require('child_process').exec(sayCmd);
}
} else {
console.error('Failed to get translation.');
}
})
.catch(error => console.error(error));
}
// 命令行参数解析
if (require.main === module) {
const args = process.argv.slice(2);
if (args.length < 1) {
console.error('Please provide text to translate.');
process.exit(1);
}
const text = args.join(' ');
translate(text, 'zh', 'en'); // 可以根据需要调整语言
}
功能说明
- 翻译功能:使用了有道翻译 API 来实现翻译。调用
fetch
库发起请求,获取 JSON 数据并提取翻译结果。 - 发音功能:仅在 macOS 平台上,通过执行系统命令
say
实现发音功能。该功能利用了 Node.js 的child_process
模块来运行命令行工具。
以上就是如何创建一个简单的 Node.js 命令行翻译工具。