xgd16 / UniTranslate

基于 go 实现的一个 百度 有道 谷歌 Deepl ChatGPT 翻译统一管理接入平台 统一API 调用规范 多平台翻译,调试操作端,权重,多接入 批量翻译 聚合翻译

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

uniTranslate

UniTranslate

中文 | English

项目简介 📒

该项目是一个支持多平台翻译和将翻译结果写入 Redis 缓存的工具。

依赖

MySQL: 8.* redis

可选

graylog

WEB管理

UniTranslate-web-console

功能特点 ✨

  • 支持百度、有道、谷歌和 Deepl 腾讯 ChatGPT 火山 讯飞 PaPaGo 平台的翻译接入
  • 支持设置翻译 API 的等级优先调用配置的低等级 API
  • 同一个 API 提供商可配置不限次 可设置为不同等级
  • 在配置多个 API 时如果调用当前 API 失败自动切换到下一个
  • 可以将翻译过的内容写入 Redis Memory 缓存重复翻译内容降低翻译 API 重复调用

批量翻译支持情况

平台 是否支持批量翻译 是否完美支持 准确的源语言 备注
百度 不支持精确返回具体每条结果的源语言类型
Google
有道 源语言类型识别不准确
火山
Deepl 源语言类型识别不准确
讯飞 官方不支持批量翻译通过特殊字符 № 切割实现 且 可能出现结果非多条
PaPaGo 基于 \n 切割实现 且不可识别不同的源语言类型
ChatGPT

未来支持 (优先级按照顺序,打勾为已实现) ✈️

  • 持久化已翻译到 MySQL
  • web 控制页面
  • ChatGPT AI翻译
  • 讯飞翻译
  • 更合理安全的身份验证
  • 腾讯翻译
  • 火山翻译
  • PaPaGo
  • 支持更多国家语言
  • 支持终端交互翻译
  • 客户端更多翻译功能支持

基础类型 🪨

YouDao Baidu Google Deepl ChatGPT XunFei XunFeiNiu Tencent HuoShan PaPaGo

Docker 启动 🚀

# 项目目录下
docker build -t uni-translate:latest .
# 然后执行 (最好创建一个 network 将 mysql 和 redis 放在同一个下 然后配置里直接用容器名字访问应用即可)
docker run -d --name uniTranslate -v {本机目录}/config.yaml:/app/config.yaml -p 9431:{你在config.yaml中配置的port} --network baseRun uni-translate:latest

配置解析 🗄️

server:
  name: uniTranslate
  address: "0.0.0.0:9431"
  cacheMode: redis # redis , mem , off 模式 mem 会将翻译结果存储到程序内存中 模式 off 不写入任何缓存
  cachePlatform: false # 执行缓存key生成是否包含平台 (会影响项目启动时自动初始化存储的key)
  key: "hdasdhasdhsahdkasjfsoufoqjoje" # http api 对接时的密钥
  keyMode: 1 # 模式 1 直接传入 key 做验证 模式 2 使用 key 加密加签数据进行验证

API 文档 🌍

在线文档 Open Api File

接口身份验证 ts 示例

import { MD5 } from "crypto-js";

/**
 * 
 * @param key 平台设置的key
 * @param params 请求参数
 * @return 生成的身份验证码
 */
function AuthEncrypt(key: string, params: { [key: string]: any }): string {
  return MD5(key + sortMapToStr(params)).toString();
}


const sortMapToStr = (map: { [key: string]: any }): string => {
  let mapArr = new Array();
  for (const key in map) {
    const item = map[key];
    if (Array.isArray(item)) {
      mapArr.push(`${key}:${item.join(",")}`);
      continue;
    }
    if (typeof item === "object") {
      mapArr.push(`${key}:|${sortMapToStr(item)}|`);
      continue;
    }
    mapArr.push(`${key}:${item}`);
  }

  return mapArr.sort().join("&");
};

const params: { [key: string]: any } = {
    c: {
        cc: 1,
        cb: 2,
        ca: 3,
        cd: 4,
    },
    a: 1,
    b: [4, 1, 2],
};

console.log(AuthEncrypt("123456", params));

请求示例

curl --location --request POST 'http://127.0.0.1:9431/api/translate' \
--header 'auth_key: xxxxxxxxx{AuthEncrypt函数结果放在此处}' \
--header 'User-Agent: Apifox/1.0.0 (https://apifox.com)' \
--header 'Content-Type: application/json' \
--data '{
    "from": "auto",
    "to": "en",
    "text": "测试一下",
    "platform": "YouDao"
}'

翻译的内容不支持??? 🤔

本程序所有支持的语言根据 translate.json 文件进行国家语言标识统一使用 有道 翻译 API 标识符作为基准

请根据 有道 翻译 API 文档支持的标识作为基准修改 translate.json 文件

About

基于 go 实现的一个 百度 有道 谷歌 Deepl ChatGPT 翻译统一管理接入平台 统一API 调用规范 多平台翻译,调试操作端,权重,多接入 批量翻译 聚合翻译

License:Apache License 2.0


Languages

Language:Go 94.3%Language:Makefile 2.5%Language:PHP 1.4%Language:TypeScript 1.1%Language:Dockerfile 0.6%