简介:本文详细解析MyMemory API的核心功能、接口调用方法及最佳实践,涵盖认证、请求参数、响应解析、错误处理及高阶应用场景,助力开发者高效实现多语言翻译与记忆库管理。
MyMemory API 是一个基于云服务的翻译记忆库(Translation Memory, TM)平台,提供机器翻译与人工翻译记忆的混合解决方案。其核心价值在于通过复用历史翻译数据,显著提升翻译效率并保持术语一致性。开发者可通过 RESTful 接口实现文本翻译、记忆库管理、术语提取等功能,适用于本地化团队、翻译公司及多语言内容管理系统。
MyMemory API 采用 API Key 认证,需在请求头中添加 X-MyMemory-API-Key 字段。
GET /api/v1/translate HTTP/1.1Host: api.mymemory.translated.netX-MyMemory-API-Key: YOUR_API_KEY
获取 API Key:
所有 API 请求需包含以下参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
q |
string | 是 | 待翻译文本 |
langpair |
string | 是 | 格式:源语言_目标语言 |
de |
string | 否 | 记忆库 ID(可选) |
示例请求:
POST /api/v1/translate HTTP/1.1Content-Type: application/x-www-form-urlencodedq=Hello&langpair=en|fr&de=12345
功能:执行文本翻译并返回最佳匹配结果。
关键参数:
prop: 控制返回字段(json/xml/text,默认 json)。mt: 指定机器翻译引擎(google/microsoft/mymemory)。of: 输出格式(htm/txt/rtf)。响应示例:
{"responseData": {"translatedText": "Bonjour","match": 0.98,"memoryId": "TM-56789"},"responseDetails": null,"responseStatus": 200}
高阶用法:
context 参数提供上下文文本,提升匹配精度。
q=bank&langpair=en|fr&context=financial institution
segment 参数分隔多段文本(需 URL 编码)。功能:操作翻译记忆库数据。
子接口:
POST /tm/create
{"name": "Tech_Docs","description": "Technical documentation TM","sourceLang": "en","targetLang": "fr"}
POST /tm/add
{"tmId": "TM-56789","segment": "API","translation": "Interface de programmation","context": "Computer science"}
GET /tm/search?q=API&tmId=TM-56789功能:从文本中提取专业术语并存储至术语库。
示例请求:
POST /glossary/extract HTTP/1.1Content-Type: application/json{"text": "The API key must be stored securely.","sourceLang": "en","domain": "IT"}
响应:
[{"term": "API key","confidence": 0.95,"domain": "IT"}]
| 错误码 | 说明 | 解决方案 |
|---|---|---|
| 401 | 未授权(无效 API Key) | 检查密钥并重新生成 |
| 429 | 请求频率超限 | 升级套餐或实现指数退避算法 |
| 500 | 服务器内部错误 | 捕获异常并重试(最多 3 次) |
缓存机制:对高频翻译对(如 UI 文本)实施本地缓存。
import requestsfrom functools import lru_cache@lru_cache(maxsize=1000)def translate_text(text, langpair):resp = requests.post("https://api.mymemory.translated.net/get",data={"q": text, "langpair": langpair})return resp.json()["responseData"]["translatedText"]
结合 WebSocket 实现低延迟双语对话:
// 前端示例(WebSocket)const socket = new WebSocket("wss://api.mymemory.translated.net/ws");socket.onmessage = (event) => {const data = JSON.parse(event.data);document.getElementById("output").innerText = data.translatedText;};// 发送消息function sendMessage(text, langpair) {socket.send(JSON.stringify({ q: text, langpair }));}
通过 CI/CD 管道集成翻译记忆库更新:
# GitLab CI 示例translate_docs:stage: deployscript:- curl -X POST "https://api.mymemory.translated.net/tm/add"-H "X-MyMemory-API-Key: $API_KEY"-d "@translations.json"
动态生成不同语言的元标签:
<?phpfunction getLocalizedMeta($text, $targetLang) {$ch = curl_init("https://api.mymemory.translated.net/get");curl_setopt($ch, CURLOPT_POSTFIELDS, "q=$text&langpair=en|$targetLang");$resp = curl_exec($ch);$data = json_decode($resp, true);return "<meta name='description' content='{$data['responseData']['translatedText']}'>";}?>
MyMemory API 通过强大的翻译记忆库和灵活的接口设计,为多语言内容处理提供了高效解决方案。开发者应重点关注:
官方资源:
mymemory-api-sdk mymemory-api