Python调用百度翻译API实现批量自动翻译工具
本文介绍如何使用Python编写脚本,通过百度通用翻译API自动提取并翻译目标软件界面字符串。内容涵盖密钥获取、请求签名生成、代码结构说明及防频率限制优化方法,帮助开发者快速搭建本地化翻译流程。
实现原理与预期结果
在进行开源软件(如StarUML)汉化时,手动替换界面文案工作量较大。利用Python调用百度翻译通用接口,可快速完成英文字符串到目标语言的批量转换。脚本运行后,会按输入文本返回对应的翻译列表,保持原始结构以便直接替换。

准备条件:获取应用密钥
调用百度翻译API前,需在开放平台注册账号并创建应用,获取 appid 与应用密钥 key。免费版审核通常即时通过,密钥信息可在开发者控制台查看。

核心模块实现
为实现稳定的API调用,代码划分为配置管理与请求处理两个类,降低耦合度并便于后续扩展。
第1步:初始化API参数配置
APIConfig 负责维护基础接口地址与随机盐值。接口地址短期内保持不变,salt 只需填入任意数字即可满足签名规则。该类仅暴露必要的属性访问器,用于集中管理敏感凭证。
# 百度翻译API配置,链接对的话,填下ID和密匙就OK。
class APIConfig:
def __init__(self,
appid: str = "",
key: str = "",
url: str = "https://fanyi-api.baidu.com/api/trans/vip/translate",
salt: str = "123"
):
self.__appid = appid # 你的百度ID
self.__key = key # 你的密匙
self.__url = url # 百度翻译API链接
self.__salt = salt # 随机数字
@property
def appid(self):
return self.__appid
@appid.setter
def appid(self, value: str):
self.__appid = value
@property
def key(self):
return self.__key
@key.setter
def key(self, value: str):
self.__key = value
@property
def url(self):
return self.__url
@url.setter
def url(self, value: str):
self.__url = value
@property
def salt(self):
return self.__salt
@salt.setter
def salt(self, value: str):
self.__salt = value
第2步:实现请求签名与网络交互
Translater 类负责构造HTTP请求体。根据百度规范,需将 appid + query + salt + key 拼接后计算MD5哈希作为签名。随后通过 POST 提交表单数据,解析返回的JSON并提取 trans_result 字段。若接口未返回预期键值,则抛出运行时错误。
class Translater:
def __init__(self, config: APIConfig, from_lang: str, to_lang: str):
self.__config = config # API配置
self.__from_lang = from_lang # 原语言,可为auto
self.__to_lang = to_lang # 目标语言
# 按百度API要求连接要加密的文本
def __make_md5_text(self, query: str) -> str:
return "{}{}{}{}".format(
self.__config.appid,
query,
self.__config.salt,
self.__config.key
)
# 按百度API要求进行MD5加密
def __make_signature(self, query: str) -> str:
md5 = hashlib.md5()
md5.update(self.__make_md5_text(query).encode('utf-8'))
return md5.hexdigest()
# 发送post请求调用百度API
def __post(self, query: str):
headers = {
"Content-Type": "application/x-www-form-urlencoded"
}
data = {
"q": query,
"from": self.__from_lang,
"to": self.__to_lang,
"appid": self.__config.appid,
"salt": self.__config.salt,
"sign": self.__make_signature(query)
}
try:
response = requests.post(
url=self.__config.url, headers=headers, data=data)
return response
except Exception as e:
print(str(e))
exit()
# 用户接口
def translate(self, query: str) -> list:
result = self.__post(query).json()
if "trans_result" in result:
return result["trans_result"]
else:
print("错误信息:" + str(result))
raise RuntimeError("百度翻译失败,请检验配置有效性")
调用流程与防限流优化
实例化配置后,直接调用 translate() 传入待翻译文本即可。注意,免费版接口存在并发与频率控制,请求间隔过短(通常约0.8秒内频繁触发)会返回状态码 54003 拒绝访问。建议在实际批量处理时适当增加延时,或单次传递较长文本以提高吞吐效率。

以上就是基于Python调用百度翻译API实现批量自动翻译工具的详细内容,更多关于使用Python结合云端接口进行界面汉化的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













