Skip to content

perlinson/deepseek-game-translator

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DeepSeek Game Translator

基于 DeepSeek AI 的专业游戏本地化翻译服务,支持多语言批量翻译、术语管理和知识库系统。

🌐 在线体验

无需安装,立即体验:

什么是 DeepSeek

DeepSeek 是一个基于人工智能技术的自然语言处理平台,提供了多种语言处理能力,包括文本翻译、语义分析、情感分析等。它通过深度学习模型和大规模语料库训练,能够实现高质量的文本翻译和多语言理解。DeepSeek 的核心优势在于其强大的语言模型和灵活的 API 接口,开发者可以轻松集成其功能到自己的应用中。

DeepSeek 的翻译能力不仅限于简单的文本翻译,还支持上下文理解、领域定制化翻译(如法律、医疗、科技等专业领域),并且能够处理多种语言之间的互译。这使得 DeepSeek 成为开发多语言应用、国际化服务以及跨语言沟通的理想工具。

✨ 核心特性

  • 🌍 支持 11 种语言: 英语、俄语、西班牙语、韩语、土耳其语、法语、德语、葡萄牙语、日语、波兰语、繁体中文
  • 📦 批量翻译: 支持多行文本批量处理,自动分批调用 API
  • 📚 知识库系统: 内置术语管理,确保翻译一致性
  • 🎮 游戏本地化: 专门优化的游戏翻译提示词,保留 HTML 标签
  • 📊 可视化界面: 友好的 Web UI,支持实时进度显示
  • 📥 Excel 导出: 一键导出翻译结果为 Excel 文件
  • 🔧 灵活配置: 支持自定义批量大小、目标语言等

为什么要开发一个自己的翻译

虽然市面上已经有许多成熟的翻译服务(如 Google Translate、Microsoft Translator 等),但开发一个基于 Deepseek 的翻译 API 有以下几个优势:

  • 定制化需求:Deepseek 允许开发者根据特定领域或业务需求定制翻译模型。例如,如果你在开发一个医疗应用,你可以训练一个专注于医学术语的翻译模型,从而提高翻译的准确性。

  • 数据隐私与安全:使用自己的翻译 API 可以确保敏感数据不会泄露给第三方服务。对于处理敏感信息的企业来说,这一点尤为重要。

  • 成本控制:虽然 Deepseek 提供了强大的翻译能力,但通过自己的 API,你可以更好地控制翻译服务的成本,尤其是在大规模使用时。

  • 灵活性与扩展性:通过开发自己的翻译 API,你可以根据业务需求灵活扩展功能。例如,你可以将翻译功能与其他自然语言处理功能(如情感分析、文本摘要等)结合,提供更丰富的用户体验。

通过开发一个基于 DeepSeek 的翻译 API,你可以充分利用其强大的翻译能力,同时满足个性化需求,提升应用的用户体验。

🚀 快速开始

方式一: GitHub Pages 部署 (推荐用于演示)

无需后端服务器,直接在浏览器中使用!

  1. 访问在线版本:

    • 打开 public/translate-ui-standalone.html 文件
    • 或部署到 GitHub Pages (详见 部署指南)
  2. 输入 API Key:

  3. 开始翻译:

    • 设置源语言和目标语言
    • 输入待翻译文本
    • 点击开始翻译

📘 详细部署教程: 查看 GITHUB_PAGES_DEPLOY.md

方式二: 本地运行 (完整功能)

1. 安装依赖

npm install

2. 配置 API Key

复制 .env.example.env 并填入你的 DeepSeek API Key:

cp .env.example .env

编辑 .env 文件:

DEEPSEEK_API_KEY=your_deepseek_api_key_here

💡 获取 API Key: 访问 DeepSeek Platform 注册并获取

3. 启动服务

npm run dev

服务将在 http://localhost:30000 启动。

4. 访问 Web UI

打开浏览器访问: http://localhost:30000/translate/ui

预览:

translate-ui

📖 使用指南

Web UI 界面

  1. 设置源语言: 默认为 zh (简体中文)
  2. 选择目标语言: 支持多个语言,用逗号分隔,如 en,ja,ko,fr,de
  3. 输入文本: 每行一句,支持批量翻译
  4. 设置批量大小: 建议 1-10 行,避免单次请求过大
  5. 开始翻译: 点击按钮开始,实时显示进度和 token 消耗
  6. 导出结果: 翻译完成后可导出为 Excel 文件

API 调用

单语言翻译

curl -X POST http://localhost:30000/translate/v1 \
  -H "Content-Type: application/json" \
  -d '{
    "text": "你好,世界!",
    "source": "zh",
    "target": "en"
  }'

响应:

{
  "code": 200,
  "data": {
    "text": "你好,世界!",
    "source": "zh",
    "target": "en",
    "result": "Hello, world!"
  },
  "error": null
}

多语言翻译

curl -X POST http://localhost:30000/translate/v1 \
  -H "Content-Type: application/json" \
  -d '{
    "text": "凤凰烈焰",
    "source": "zh",
    "target": ["en", "ja", "ko"]
  }'

响应:

{
  "code": 200,
  "data": {
    "text": "凤凰烈焰",
    "source": "zh",
    "targets": ["en", "ja", "ko"],
    "results": {
      "en": "Phoenix Flame",
      "ja": "フェニックスフレーム",
      "ko": "피닉스 플레임"
    }
  },
  "error": null
}

📚 知识库系统

什么是知识库

知识库是一个术语管理系统,用于确保翻译的一致性。当翻译文本时,系统会:

  1. 自动搜索知识库中的相关术语
  2. 将匹配的术语参考注入到 AI 提示词中
  3. 确保 AI 使用标准译法进行翻译

支持的格式

  • JSON 格式: knowledge-base.json
  • Excel 格式: knowledge-base.xlsx (推荐)

Excel 知识库结构

zh (中文) en (英语) ru (俄语) es (西班牙语) ko (韩语) tr (土耳其语) fr (法语) de (德语) pt (葡萄牙语) ja (日语) pl (波兰语) cht (繁体中文) category (分类) note (备注)
伤害 Damage Урон Daño 피해 Hasar Dégâts Schaden Dano ダメージ Obrażenia 傷害 游戏术语 游戏中造成的伤害值

创建知识库

方法 1: 使用 Excel (推荐)

  1. 生成模板:
node create-excel-template.js
  1. 编辑 knowledge-base-template.xlsx,添加你的术语

  2. 保存为 knowledge-base.xlsx 到项目根目录

  3. 重启服务

方法 2: 使用 JSON

直接编辑 knowledge-base.json:

[
  {
    "zh": "伤害",
    "en": "Damage",
    "ja": "ダメージ",
    "category": "游戏术语",
    "note": "游戏中造成的伤害值"
  }
]

详细说明请参考: KNOWLEDGE_BASE.mdEXCEL_TEMPLATE.md

🎮 游戏本地化特性

专业提示词

系统内置了专门为游戏本地化优化的提示词,包括:

  • 保留 HTML 标签 (如 <b>, <i>)
  • 游戏术语一致性
  • 符合各语言游戏习惯的表达
  • 同批次翻译保持风格一致

示例

输入:

凤凰烈焰
对所有敌方随从造成3点伤害
<b>埋伏</b>
机械小青蛙

输出 (英语):

Phoenix Flame
Deal 3 Damage to all Enemy Minions
<b>Stealth</b>
Mechanical Frog

🔧 代码实现

1. 单例模式

private static instance: OpenAI | null = null;
  • 这里使用了单例模式来管理 OpenAI 的实例。单例模式确保在整个应用中只有一个 OpenAI 实例,避免重复创建和资源浪费。

2. 配置方法

static config(baseURL: string, apiKey: string) {
    if (baseURL && apiKey) {
        this.instance = new OpenAI({
            baseURL,
            apiKey
        });
    }
}
  • config 方法用于初始化 OpenAI 实例。它接收 baseURLapiKey 作为参数,并创建一个 OpenAI 实例。

  • 如果 baseURLapiKey 都有效,才会创建实例,否则实例保持为 null

3. 翻译方法 (支持单语言和多语言)

static translate(content: { source: string; target: string | string[]; text: string }) {
    // 统一处理为数组格式
    const targets = Array.isArray(content.target) ? content.target : [content.target];

    // 从知识库搜索相关术语
    const kb = getKnowledgeBase();
    const matchedTerms = kb.search(content.text, targets);
    const termReference = kb.generateTermReference(matchedTerms, targets);

    // 构建专业的游戏本地化提示词
    const systemPrompt = Array.isArray(content.target)
        ? `# Role: 资深多语言翻译专家
           ... (包含游戏本地化指导、术语一致性要求等)
           ${termReference}  // 注入知识库术语
           请根据以下输入生成翻译结果:`
        : '单语言翻译提示词...';

    return this.instance.chat.completions
        .create({
            messages: [
                { role: 'system', content: systemPrompt },
                { role: 'user', content: JSON.stringify({ source, targets, text }) }
            ],
            model: 'deepseek-chat',
            temperature: 1.3,
            response_format: { type: 'json_object' }
        })
        .then((completion) => {
            const resultJson = JSON.parse(completion.choices[0].message.content);
            // 返回多语言结果
            return {
                source: content.source,
                targets: targets,
                text: content.text,
                results: resultJson.results  // { en: "...", ja: "...", ko: "..." }
            };
        });
}

核心改进:

  • 支持多语言: 可以同时翻译成多种语言
  • 知识库集成: 自动搜索并注入术语参考
  • 专业提示词: 针对游戏本地化优化
  • 术语一致性: 确保同批次翻译使用相同术语

4. 知识库系统

// 知识库类
export class KnowledgeBase {
    private terms: TermTranslation[] = [];

    // 搜索相关术语
    search(text: string, targetLangs: string[]): TermTranslation[] {
        const matches: TermTranslation[] = [];
        for (const term of this.terms) {
            if (text.includes(term.zh)) {
                matches.push(term);
            }
        }
        return matches;
    }

    // 生成术语参考文本
    generateTermReference(matches: TermTranslation[], targetLangs: string[]): string {
        let reference = '\n\n## 术语参考表\n';
        matches.forEach((term, index) => {
            reference += `${index + 1}. "${term.zh}":\n`;
            targetLangs.forEach(lang => {
                if (term[lang]) {
                    reference += `   - ${lang}: "${term[lang]}"\n`;
                }
            });
        });
        return reference;
    }

    // 从 Excel 加载
    loadFromFile(filePath: string) {
        // 支持 .json 和 .xlsx 格式
        if (filePath.endsWith('.xlsx')) {
            return this.loadFromExcel(filePath);
        }
        // ... JSON 加载逻辑
    }
}

📊 支持的语言

语言代码 语言名称 示例
zh 简体中文 你好
en 英语 Hello
cht 繁体中文 你好
fr 法语 Bonjour
de 德语 Hallo
ja 日语 こんにちは
ko 韩语 안녕하세요
ru 俄语 Привет
tr 土耳其语 Merhaba
pt 葡萄牙语(巴西) Olá
pl 波兰语 Cześć
es 西班牙语 Hola

📁 项目结构

deepseek-game-translator/
├── src/
│   ├── index.ts                 # 主入口,路由定义
│   ├── translate.service.ts     # 翻译服务核心
│   ├── knowledge-base.ts        # 知识库系统
│   └── utils.ts                 # 工具函数
├── public/
│   └── translate-ui.html        # Web UI 界面
├── knowledge-base.json          # JSON 格式知识库
├── knowledge-base.xlsx          # Excel 格式知识库(推荐)
├── create-excel-template.js     # 生成 Excel 模板脚本
├── KNOWLEDGE_BASE.md            # 知识库详细文档
├── EXCEL_TEMPLATE.md            # Excel 模板说明
└── package.json

🛠️ 技术栈

  • 后端框架: koa-api-plus
  • AI 服务: DeepSeek API
  • Excel 处理: xlsx
  • 前端: 原生 HTML/JavaScript
  • 语言: TypeScript

📝 开发指南

添加新语言支持

  1. src/translate.service.tsTranslateLanguage 中添加语言定义
  2. 在系统提示词中添加该语言的翻译指导
  3. 在前端 langNames 中添加显示名称
  4. 更新知识库 Excel 模板添加对应列

自定义提示词

编辑 src/translate.service.ts 中的 systemPrompt:

const systemPrompt = `
# Role: 你的角色定义
## 翻译要求:
- 你的自定义要求
...
`;

优化知识库搜索

当前使用简单的字符串匹配,可以优化为:

  • 模糊匹配
  • 正则表达式
  • 向量数据库(如 Pinecone)

🔍 常见问题

Q: 如何获取 DeepSeek API Key?

A: 访问 DeepSeek 官网 注册账号并获取 API Key。

Q: 翻译速度慢怎么办?

A:

  1. 减少批量大小
  2. 使用更快的网络
  3. 考虑并发请求(需修改代码)

Q: 如何保证术语一致性?

A:

  1. 维护完善的知识库
  2. 使用 Excel 便于团队协作
  3. 定期审查和更新术语

Q: 支持离线翻译吗?

A: 不支持,需要调用 DeepSeek API。

Q: 可以自定义翻译模型吗?

A: 可以通过修改 systemPrompt 来调整翻译风格和要求。

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📄 License

MIT

🌐 部署选项

GitHub Pages (纯前端)

  • ✅ 完全免费
  • ✅ 无需服务器
  • ❌ 需要用户输入 API Key
  • 📘 部署指南

云平台部署 (完整功能)

  • Vercel: 推荐,支持 Node.js
  • Railway: 简单易用
  • Render: 免费套餐

详见 GITHUB_PAGES_DEPLOY.md

🔗 相关链接

📮 联系方式

如有问题或建议,欢迎通过 Issue 反馈。

About

基于 DeepSeek AI 的专业游戏本地化翻译服务,支持多语言批量翻译、术语管理和知识库系统。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • HTML 57.4%
  • TypeScript 31.7%
  • JavaScript 6.2%
  • Shell 3.8%
  • Batchfile 0.9%