基于 DeepSeek AI 的专业游戏本地化翻译服务,支持多语言批量翻译、术语管理和知识库系统。
无需安装,立即体验:
- 🔗 在线演示: https://perlinson.github.io/deepseek-game-translator/
- 📝 只需输入你的 DeepSeek API Key 即可开始使用
- 💡 获取 API Key: DeepSeek Platform
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,你可以充分利用其强大的翻译能力,同时满足个性化需求,提升应用的用户体验。
无需后端服务器,直接在浏览器中使用!
-
访问在线版本:
- 打开
public/translate-ui-standalone.html
文件 - 或部署到 GitHub Pages (详见 部署指南)
- 打开
-
输入 API Key:
- 访问 DeepSeek Platform 获取 API Key
- 在网页中输入你的 API Key
-
开始翻译:
- 设置源语言和目标语言
- 输入待翻译文本
- 点击开始翻译
📘 详细部署教程: 查看 GITHUB_PAGES_DEPLOY.md
npm install
复制 .env.example
为 .env
并填入你的 DeepSeek API Key:
cp .env.example .env
编辑 .env
文件:
DEEPSEEK_API_KEY=your_deepseek_api_key_here
💡 获取 API Key: 访问 DeepSeek Platform 注册并获取
npm run dev
服务将在 http://localhost:30000
启动。
打开浏览器访问: http://localhost:30000/translate/ui
预览:
- 设置源语言: 默认为
zh
(简体中文) - 选择目标语言: 支持多个语言,用逗号分隔,如
en,ja,ko,fr,de
- 输入文本: 每行一句,支持批量翻译
- 设置批量大小: 建议 1-10 行,避免单次请求过大
- 开始翻译: 点击按钮开始,实时显示进度和 token 消耗
- 导出结果: 翻译完成后可导出为 Excel 文件
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
}
知识库是一个术语管理系统,用于确保翻译的一致性。当翻译文本时,系统会:
- 自动搜索知识库中的相关术语
- 将匹配的术语参考注入到 AI 提示词中
- 确保 AI 使用标准译法进行翻译
- JSON 格式:
knowledge-base.json
- Excel 格式:
knowledge-base.xlsx
(推荐)
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 | 傷害 | 游戏术语 | 游戏中造成的伤害值 |
- 生成模板:
node create-excel-template.js
-
编辑
knowledge-base-template.xlsx
,添加你的术语 -
保存为
knowledge-base.xlsx
到项目根目录 -
重启服务
直接编辑 knowledge-base.json
:
[
{
"zh": "伤害",
"en": "Damage",
"ja": "ダメージ",
"category": "游戏术语",
"note": "游戏中造成的伤害值"
}
]
详细说明请参考: KNOWLEDGE_BASE.md 和 EXCEL_TEMPLATE.md
系统内置了专门为游戏本地化优化的提示词,包括:
- 保留 HTML 标签 (如
<b>
,<i>
) - 游戏术语一致性
- 符合各语言游戏习惯的表达
- 同批次翻译保持风格一致
输入:
凤凰烈焰
对所有敌方随从造成3点伤害
<b>埋伏</b>
机械小青蛙
输出 (英语):
Phoenix Flame
Deal 3 Damage to all Enemy Minions
<b>Stealth</b>
Mechanical Frog
private static instance: OpenAI | null = null;
- 这里使用了单例模式来管理
OpenAI
的实例。单例模式确保在整个应用中只有一个OpenAI
实例,避免重复创建和资源浪费。
static config(baseURL: string, apiKey: string) {
if (baseURL && apiKey) {
this.instance = new OpenAI({
baseURL,
apiKey
});
}
}
-
config
方法用于初始化OpenAI
实例。它接收baseURL
和apiKey
作为参数,并创建一个OpenAI
实例。 -
如果
baseURL
和apiKey
都有效,才会创建实例,否则实例保持为null
。
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: "..." }
};
});
}
核心改进:
- ✅ 支持多语言: 可以同时翻译成多种语言
- ✅ 知识库集成: 自动搜索并注入术语参考
- ✅ 专业提示词: 针对游戏本地化优化
- ✅ 术语一致性: 确保同批次翻译使用相同术语
// 知识库类
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
- 在
src/translate.service.ts
的TranslateLanguage
中添加语言定义 - 在系统提示词中添加该语言的翻译指导
- 在前端
langNames
中添加显示名称 - 更新知识库 Excel 模板添加对应列
编辑 src/translate.service.ts
中的 systemPrompt
:
const systemPrompt = `
# Role: 你的角色定义
## 翻译要求:
- 你的自定义要求
...
`;
当前使用简单的字符串匹配,可以优化为:
- 模糊匹配
- 正则表达式
- 向量数据库(如 Pinecone)
A: 访问 DeepSeek 官网 注册账号并获取 API Key。
A:
- 减少批量大小
- 使用更快的网络
- 考虑并发请求(需修改代码)
A:
- 维护完善的知识库
- 使用 Excel 便于团队协作
- 定期审查和更新术语
A: 不支持,需要调用 DeepSeek API。
A: 可以通过修改 systemPrompt
来调整翻译风格和要求。
欢迎提交 Issue 和 Pull Request!
MIT
- ✅ 完全免费
- ✅ 无需服务器
- ❌ 需要用户输入 API Key
- 📘 部署指南
- Vercel: 推荐,支持 Node.js
- Railway: 简单易用
- Render: 免费套餐
如有问题或建议,欢迎通过 Issue 反馈。