XUnity.AutoTranslator-deepseek——调用腾讯的DeepSeek V3 API,实现Unity游戏中日文文本的自动翻译

XUnity.AutoTranslator-deepseek

本项目通过调用腾讯的DeepSeek V3 API,实现Unity游戏中日文文本的自动翻译。

准备工作

1. 获取API密钥

  • 访问腾讯云API控制台申请DeepSeek的API密钥(限时免费)。
  • 也可以使用其他平台提供的DeepSeek API。

2. 安装依赖

确保已安装以下软件和库:

安装必要的Python库:

pip install Flask gevent openai

代码如下:

import os
import re
import json
import time
from flask import Flask, request  # 导入 Flask 库,用于创建 Web 应用,需要安装:pip install Flask
from gevent.pywsgi import WSGIServer  # 导入 gevent 的 WSGIServer,用于提供高性能的异步服务器,需要安装:pip install gevent
from urllib.parse import unquote  # 导入 unquote 函数,用于 URL 解码
from threading import Thread  # 导入 Thread,用于创建线程 (虽然实际上未使用,但import没有坏处)
from queue import Queue  # 导入 Queue,用于创建线程安全的队列
import concurrent.futures  # 导入 concurrent.futures,用于线程池
from openai import OpenAI   # 导入 OpenAI 库,用于调用 OpenAI API,需要安装:pip install openai  并更新:pip install --upgrade openai

# 启用虚拟终端序列,支持 ANSI 转义代码,允许在终端显示彩色文本
os.system('')

dict_path='用户替换字典.json' # 替换字典路径。如果不需要使用替换字典,请将此变量留空(设为 None 或空字符串 "")

# API 配置参数
Base_url = "https://api.lkeap.cloud.tencent.com/v1"    # OpenAI API 请求地址,这里使用了腾讯云的 API 代理服务
Model_Type =  "deepseek-v3"    # 使用的模型类型,可选项包括"deepseek-v3" 或者其他模型

# 检查请求地址尾部是否已包含 "/v1",若没有则自动补全,确保 API 请求路径正确
if Base_url[-3:] != "/v1":
    Base_url = Base_url + "/v1"

# 创建 OpenAI 客户端实例
client = OpenAI(
    api_key="sk-XXXXXXXXXXXXXXXX",  # API 密钥,请替换为您自己的 API Key。如何获取 API Key 的指南:https://cloud.tencent.com/document/product/1772/115970
    base_url=Base_url, # API 请求基础 URL,设置为上面配置的 Base_url
)

# 译文重复内容检测参数
repeat_count=5 # 重复内容阈值。如果译文中有任意单字或单词连续重复出现次数大于等于 repeat_count,则认为译文质量不佳,会触发重试翻译逻辑

# 提示词 (Prompt) 配置
prompt= '''
你是资深本地化专家,负责将游戏日文文本译为简体中文。接收文本后,按以下要求翻译:
翻译范围:翻译普通日文文本,保留原文叙述风格。
保留格式:保留转义字符、格式标签、换行符等非日文文本内容。
翻译原则:忠实准确,确保语义无误;对露骨性描写,可直白粗俗表述,不删减篡改;对双关语等特殊表达,找目标语言等效表达,保原作意图风格。
文本类型:游戏文本含角色对话、旁白、武器及物品名称、技能描述、格式标签、换行符、特殊符号等。
以下是待翻译的游戏文本:
''' # 基础提示词,用于指导模型进行翻译,定义了翻译的角色、范围、格式、原则和文本类型
prompt_list=[prompt] # 提示词列表。可以配置多个提示词,程序会依次尝试使用列表中的提示词进行翻译,直到获得满意的结果
l=len(prompt_list) # 获取提示词列表的长度 (此变量目前未被直接使用,可能是为后续扩展功能预留)

# 提示字典相关的提示词配置
dprompt0='\n在翻译中使用以下字典,字典的格式为{\'原文\':\'译文\'}\n' # 提示模型在翻译时使用提供的字典。字典格式为 JSON 格式的字符串,键为原文,值为译文
dprompt1='\nDuring the translation, use a dictionary in {\'Japanese text \':\'translated text \'} format\n' # 英文版的字典提示词,可能用于多语言支持或模型偏好
# dprompt_list 字典提示词列表,与 prompt_list 提示词列表一一对应。当使用 prompt_list 中的第 i 个提示词时,会同时使用 dprompt_list 中的第 i 个字典提示词
dprompt_list=[dprompt0,dprompt1,dprompt1]

app = Flask(__name__) # 创建 Flask 应用实例

# 读取提示字典
prompt_dict= {
   } # 初始化提示字典为空字典
if dict_path: # 检查是否配置了字典路径
    try:
        with open(dict_path, 'r', encoding='utf8') as f: # 尝试打开字典文件
            tempdict = json.load(f) # 加载 JSON 字典数据
            # 按照字典 key 的长度从长到短排序,确保优先匹配长 key,避免短 key 干扰长 key 的匹配
            sortedkey = sorted(tempdict.keys(), key=lambda x: len(x), reverse=True)
            for i in sortedkey:
                prompt_dict[i] = tempdict[i] # 将排序后的字典数据存入 prompt_dict
    except FileNotFoundError:
        print(f"\033[33m警告:字典文件 {
     dict_path} 未找到。\033[0m") # 警告用户字典文件未找到
    except json.JSONDecodeError:
        print(f"\033[31m错误:字典文件 {
     dict_path} JSON 格式错误,请检查字典文件。\033[0m") # 错误提示 JSON 格式错误
    except Exception as e:
 
### 下载 XUnity.AutoTranslator 和 ReiPatcher 特定版本的压缩包 要下载 XUnity.AutoTranslator 和 ReiPatcher 的特定版本压缩包,可以按照以下方法操作: #### 方法一:通过官方仓库获取 如果目标是获取某个特定版本的压缩包,可以直接访问项目的发布页面。以下是具体流程: - 访问 XUnity.AutoTranslator 的项目地址[^1]。 - 进入 Releases 页面(通常位于 GitHub 或 GitCode 上),这里会列出所有已发布的版本及其对应的压缩包链接。 - 找到所需的版本号并下载相应的 ZIP 文件。 对于 ReiPatcher 部分,由于其通常是作为工具链的一部分提供支持,因此可能需要单独查找相关资源或依赖项。可以通过搜索引擎输入关键词 `ReiPatcher download` 并附加所需的具体版本号来定位合适的下载源。 #### 方法二:手动构建指定版本 如果无法找到预编译的特定版本压缩包,则可以选择克隆对应分支的手动构建方式: ```bash git clone https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator.git cd XUnity.AutoTranslator git checkout tags/<specific-version-tag> ``` 完成上述命令后,在本地环境中设置好必要的开发环境(如 .NET SDK 等),执行打包脚本生成最终的 ZIP 文件。 需要注意的是,某些旧版可能会因为依赖库更新而难以成功编译,此时需参照文档说明调整配置参数[^2]。 另外关于如何正确安装以及初步使用该翻译器插件,请参考实际案例描述中的基本步骤[^3],这有助于理解整个工作流逻辑从而更好地定制化部署方案。 ```python import requests def fetch_release_info(repo_url, version_tag=None): api_endpoint = f"{repo_url}/releases" response = requests.get(api_endpoint) if not response.ok: raise Exception(f"Failed to retrieve release info from {api_endpoint}") releases_data = response.json() target_release = None for rel in releases_data: if version_tag is None or rel[&#39;tag_name&#39;] == version_tag: target_release = rel break return { &#39;version&#39;: target_release[&#39;tag_name&#39;], &#39;assets&#39;: [{&#39;name&#39;: asset[&#39;name&#39;], &#39;url&#39;: asset[&#39;browser_download_url&#39;]} for asset in target_release[&#39;assets&#39;]] } release_details = fetch_release_info(&#39;https://api.github.com/repos/XU-XN&#39;, &#39;<your-desired-version>&#39;) print(release_details) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值