各美其美,美人之美,美美与共,天下大同

声明:接口来源雷鸣云开源项目 translate.js,为 Edge 浏览器未公开 API,禁止商用!


1. 接口总览

1.1 接口地址

https://edge.microsoft.com/translate/translatetext

1.2 完整 URL 拼接规则

在链接后拼接源语言、目标语言双参数,模板如下:

https://edge.microsoft.com/translate/translatetext?from=${from}&to=${to}

2. 请求规范

大多情况下,调不通接口是由于忽略了请求方式、请求头、请求体细节造成的,以下是拆解。

◇ 请求基础

  • 请求方法:POST
  • 请求头:Content-Type: application/json,JSON 格式数据
  • 请求体:传入字符串数组以实现多行文本批量翻译,单行文本也需要包裹为数组

◇ URL 参数说明

  1. from 源语言(需要翻译的原文语种)

zh-CHS(简体中文)、en(英文)、ru(俄语)、ja(日语)、ko(韩语)

  1. to 目标语言(需要转换成的语种)
  2. 请求体示例

若输入两行文本:hello、world,分割后请求体即传入数组:["hello","world"]

  1. 返回格式

该接囗返回数组内是对象,格式为 [{translations:[{text:"译文"}]}]


3. 核心代码

下面是较标准的 fetch 请求核心代码,基于原生 JS 写成,供参考:

// from:源语言编码  to:目标语言编码  lines:待翻译文本数组
const response=await fetch(`https://edge.microsoft.com/translate/translatetext?from=${from}&to=${to}`,{
  method:'POST', 
  headers:{'Content-Type':'application/json'}, 
  body:JSON.stringify(lines)
});
// 解析返回结果
const result = await response.json();
console.log("翻译结果:", result);
const textList = result.map(item => item.translations[0].text);
const output = textList.join('\n');
document.getElementById('outputText').value = output;

4. 迷你项目

以下是基于该接囗的 HTML 页面,供参考:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>自制极简翻译小工具</title>
    <style>
        textarea{width:45%;height:180px;padding:10px;margin:10px;}
        button{padding:8px 20px;font-size:16px;cursor:pointer;}
    </style>
</head>
<body>
    <textarea id="inputText" placeholder="输入原文,支持多行文本">Hello World
Nice to meet you</textarea>
    <textarea id="outputText" placeholder="翻译结果自动展示" readonly></textarea>
    <br/>
    <button onclick="translateText()">一键开始翻译</button>

    <script>
        async function translateText(){
            const input = document.getElementById('inputText').value;
            const lines = input.split('\n');
            const from = 'en';
            const to = 'zh-CHS';
            try{
                const res = await fetch(`https://edge.microsoft.com/translate/translatetext?from=${from}&to=${to}`,{
                    method:'POST',
                    headers:{'Content-Type':'application/json'},
                    body:JSON.stringify(lines)
                });
                const data = await res.json();
                // 提取翻译文本,解决 [object Object] 问题
                const translateResult = data.map(item => item.translations[0].text).join('\n');
                document.getElementById('outputText').value = translateResult;
            }catch(err){
                alert('翻译失败');
                console.error(err);
            }
        }
    </script>
</body>
</html>

敲下 fetch 请求,拼接一行 URL 参数,语言壁垒被瞬间跨越:

英文的直白浪漫、俄语的厚重铿锵、日语的细腻温柔、中文的含蓄诗意,在一行接口请求之间相融。

每一种语言,都是一个民族千年文化的载体:

  • 中文一字藏千意,寥寥数语便有山河风月;
  • 英文直白热烈,擅长直白表达情绪与热爱;
  • 小语种里的风土人情,不一样的生活与信仰。

从前靠书本、靠人力跨越语言隔阂的笨挫已去,我们更便捷地打破文字的边界。

编程从来不止是冰冷的语法、接口和参数,它是桥梁,让不同的文字相遇,让不同的文化相拥。

一行行请求、一次次数据交互中,看见世界的多元与美好。

微不足道的在线工具,却也是数字世界里,一次温柔的跨文化相遇。


本期为炒冷饭,哈哈哈哈哈哈哈哈!

标签: 随心随想, 所思所感, 技术实践, 学习笔记, 工具分享

已有 2 条评论

  1. 现在翻译的门槛好低,应该很多地方都找到免费接口

    1. 是的,免费翻译接囗获得的大量语料数据可以投喂 AI,廉价获得原数据,而且翻译比起其它云计算成本低得多,新翻译开源模型也在疯狂压算力

添加新评论