python脚本实现将代码中的中文翻译为其他语言
如果我们写的代码中带有中文的字符提示,现在要将其翻译成为其他国家的语言,在没有做多国语言配置的情况下只能自己手动复制翻译。这种机械重复性动作完全可以交给程序来做。于是我写了一个python脚本用来帮我处理源码文档。下面就是脚本代码,一共不到100行,却实实在在地解决了一个大麻烦。废话不多说,直接上代码。
import hashlib
import random
import re
import time
import requests
import os
# 百度api
apiurl = 'http://api.fanyi.baidu.com/api/trans/vip/translate'
appid = '202*******9' # 百度翻译api的appid
secretKey = 'jBal*******tJ' # 百度翻译api的secretKey
# 查找文本中的中文字符,并将连续的中文字符以列表返回
def find_chinese(text):
regStr = ".*?([\u4E00-\u9FA5]+).*?"
aa = re.findall(regStr, text)
return aa
# 翻译内容 源语言 翻译后的语言
def translateBaidu(content, fromLang='zh', toLang='pt'):
salt = str(random.randint(32768, 65536))
sign = appid + content + salt + secretKey # appid+q+salt+密钥 的MD5值
sign = hashlib.md5(sign.encode("utf-8")).hexdigest() # 对sign做md5,得到32位小写的sign
try:
# 根据技术手册中的接入方式进行设定
paramas = {
'appid': appid,
'q': content,
'from': fromLang,
'to': toLang,
'salt': salt,
'sign': sign
}
response = requests.get(apiurl, paramas)
jsonResponse = response.json() # 获得返回的结果,结果为json格式
dst = str(jsonResponse["trans_result"][0]["dst"]) # 取得翻译后的文本结果
return dst
except Exception as e:
print(e)
# 读取文件,翻译成葡萄牙语,返回一个翻译好的文档的每行的list
def text_deal(filename, fromLang='zh', toLang='pt'):
'''
读取文件,翻译成葡萄牙语,返回一个翻译好的文档的每行的list
:param filename: 翻译的文档路径
:return: 翻译好的每行的list
'''
file = open(filename, encoding="utf-8")
while 1:
lines = file.readlines(100000)
if not lines:
break
# 遍历每一行代码
i = 0
newline = []
for line in lines:
i += 1
linea = line.lstrip() # 去除了左方空行
# 判断是否是注释,是注释则跳过
if linea[0:2] == "//" or linea[0:4] == " " + translate_str)
newline.append(line)
file.close()
return newline
# 调用函数处理文档
files = os.listdir("./translate")
for file in files:
print("=====================")
print("正在处理文件:" + file)
newlines = text_deal("./translate/" + file, "zh", "pt")
fw = open("./translated/" + file, "a",encoding="utf-8")
for l in newlines:
fw.write(l)
fw.close()
项目目录:
|