Nodejs 一个翻译的命令行小工具 fanyi

Nodejs 一个翻译的命令行小工具 fanyi

使用起来非常简单,同时支持中英文互译甚至是整句。

调用的是 iciba 和有道翻译的公用接口,在 mac 下支持简单的发音。

源码和安装:https://github.com/afc163/fanyi


11 回复

Nodejs 一个翻译的命令行小工具 fanyi

使用起来非常简单,同时支持中英文互译甚至是整句。

示例图

该工具调用的是 iciba 和有道翻译的公共接口,在 macOS 下还支持简单的发音功能。

源码和安装

源码可以在 GitHub 上找到:https://github.com/afc163/fanyi

你可以通过以下步骤来安装和使用这个工具:

  1. 克隆仓库

    git clone https://github.com/afc163/fanyi.git
    cd fanyi
    
  2. 安装依赖

    npm install
    
  3. 运行

    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 上支持简单的发音功能。

使用方法

  1. 安装 Node.js 和 npm。
  2. 克隆项目仓库或下载源代码。
  3. 运行安装命令以安装依赖:
    npm install
    
  4. 在命令行中输入 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 命令行翻译工具。

回到顶部