164 lines
8.2 KiB
Python
164 lines
8.2 KiB
Python
# from importlib.resources import path
|
||
import os
|
||
import re
|
||
import string
|
||
import time
|
||
|
||
from BaiduTrans import transBaidu
|
||
from trans import getinfo,postData,transI18,transWord
|
||
from tclient import tenTrans
|
||
import requests
|
||
import random
|
||
|
||
|
||
|
||
# 处理单个文件
|
||
def transFile(fileName):
|
||
# 生成新的数据data [lines的形式]
|
||
newData=[]
|
||
print('执行文件===>',fileName)
|
||
# 读取每一行
|
||
with open(fileName,'r',encoding='utf8') as fLines:
|
||
# for line in fLines.readlines(): #依次读取每行
|
||
for index,line in enumerate(fLines.readlines()): #依次读取每行
|
||
newline = line.strip() #去掉每行头尾空白 -获取字符串
|
||
# print ("读取的数据为: %s" % (line))
|
||
# .* 表示任意匹配除换行符(\n、\r)之外的任何单个或多个字符
|
||
# (.*?) 表示"非贪婪"模式,===>只保存第一个匹配到的子串
|
||
# ^title: |^label: | :使用模板字符串 =使用{}
|
||
matchObj = re.match( r'(.*text: |.*title: |.*label: |.*label=|.*placeholder=|.*message: |.*placeholder: |.*title=)["||\'](.*?)["||\']', newline, re.M|re.I) #匹配title/label开始---- '/"结束 | re.M|
|
||
|
||
matchObjsingal = re.match( r'(.*text: |.*title: |.*label: |.*message: |.*placeholder: )[\'](.*?)[\']', newline, re.M|re.I) #匹配title/label开始---- '/"结束 | re.M|
|
||
matchObjmore = re.match( r'(.*text: |.*title: |.*label: |.*message: |.*placeholder: )["](.*?)["]', newline, re.M|re.I) #匹配title/label开始---- '/"结束 | re.M|
|
||
|
||
matchquerysl= re.match( r'(.*label=|.*placeholder=|.*title=)[\'](.*?)[\']', newline, re.M|re.I) #匹配title/label开始---- '/"结束 | re.M|
|
||
matchquerymore= re.match( r'(.*label=|.*placeholder=|.*title=)["](.*?)["]', newline, re.M|re.I) #匹配title/label开始---- '/"结束 | re.M|
|
||
|
||
# 识别中文字符
|
||
znRe=re.match( r'.*["||\']([\u4e00-\u9fa5]+?)["||\']', newline, re.M|re.I) #匹配title/label开始---- '/"结束 | re.M|
|
||
znResigal=re.match( r'.*["||\']([\u4e00-\u9fa5]+?)["||\']', newline, re.M|re.I) #匹配title/label开始---- '/"结束 | re.M|
|
||
znRemore=re.match( r'.*["||\']([\u4e00-\u9fa5]+?)["||\']', newline, re.M|re.I) #匹配title/label开始---- '/"结束 | re.M|
|
||
|
||
|
||
|
||
|
||
# 匹配
|
||
if matchObj:
|
||
# if False:
|
||
print ("原始语句------------------------ : ", matchObj.group()) #label: "hello'
|
||
# print ("matchObj.group(1) : ", matchObj.group(1)) #标识符 label:
|
||
# print ("matchObj.group(2) : ", matchObj.group(2)) #要替换的字符串 hello
|
||
oldWord=matchObj.group(2)
|
||
# enWord=transBaidu(oldWord,'zh','en') # 百度-执行中文翻译
|
||
enWord=tenTrans(oldWord,'zh','en') # 执行中文翻译
|
||
Idword=tenTrans(oldWord,'zh','id') # 执行印尼翻译 --api不支持
|
||
key=transI18(oldWord,enWord,Idword)
|
||
globalKey='`${'+'window.i18n("{key}")'.format(key=key)+'}`'
|
||
reline=line
|
||
if matchObjsingal:
|
||
reline=line.replace("'{}'".format(oldWord),globalKey,1) #仅全局替换1次字符
|
||
elif matchObjmore:
|
||
reline=line.replace("\"{}\"".format(oldWord),globalKey,1) #仅全局替换1次字符
|
||
elif matchquerysl:
|
||
if '==' not in line or '?' not in line:
|
||
globalKey='{'+'`${'+'window.i18n("{key}")'.format(key=key)+'}`'+'}'
|
||
reline=line.replace("'{}'".format(oldWord),globalKey,1) #仅全局替换1次字符
|
||
elif matchquerymore:
|
||
# 判断?或者==表达式 [排除翻译]
|
||
if '==' not in line or '?' not in line:
|
||
globalKey='{'+'`${'+'window.i18n("{key}")'.format(key=key)+'}`'+'}'
|
||
reline=line.replace("\"{}\"".format(oldWord),globalKey,1) #仅全局替换1次字符
|
||
#replace替换-字符串
|
||
# reline=line.replace("'{}'".format(oldWord),globalKey,1) #仅全局替换1次字符
|
||
print('globalKey--',globalKey)
|
||
print('替换语句------------------------ ',reline)
|
||
#每行写入
|
||
newData.append(reline)
|
||
else:
|
||
# 识别中文字符
|
||
newznList=re.findall("[\u4e00-\u9fa5]+",newline)
|
||
newznListsignal=re.findall('[\u4e00-\u9fa5]+',newline)
|
||
# newznListMore=re.findall('[\u4e00-\u9fa5]+',newline)
|
||
# newznList=re.findall('["||\'][\u4e00-\u9fa5]+["||\']',newline)
|
||
# newznListsignal=re.findall('[\'][\u4e00-\u9fa5]+[\']',newline)
|
||
# newznListMore=re.findall('["][\u4e00-\u9fa5]+["]',newline)
|
||
print('newznList',newznList)
|
||
print('newznListsignal',newznListsignal)
|
||
# print('newznListMore',newznListMore)
|
||
|
||
|
||
|
||
|
||
# 没有中文字符
|
||
if(len(newznList)==0):
|
||
# print ("No match!!")
|
||
newData.append(line)
|
||
else:
|
||
znline=line
|
||
# znline=tensWord(line,newznList)
|
||
for index,znWord in enumerate(newznList):
|
||
# print('newList',newznList)
|
||
# 翻译中文单词-英文
|
||
# enWord=transBaidu(znWord,'zh','en') # 百度-执行中文翻译
|
||
enWord=tenTrans(znWord,'zh','en') # 执行中文翻译
|
||
Idword=tenTrans(znWord,'zh','id') # 执行印尼翻译 --api不支持
|
||
enwordkey=transI18(znWord,enWord,Idword)
|
||
print('znWord---enWord',znWord,enWord)
|
||
enwordKey='`${'+'window.i18n("{key}")'.format(key=enwordkey)+'}`'
|
||
# znline=znline.replace(znWord,enwordKey,1) #仅全局替换1次字符
|
||
if znWord in newznListsignal:
|
||
print('单个')
|
||
znline=znline.replace("'{}'".format(znWord),enwordKey,1) #仅全局替换1次字符
|
||
znline=znline.replace("\"{}\"".format(znWord),enwordKey,1) #仅全局替换1次字符
|
||
# znline=znline.replace(znWord,enwordKey,1) #仅全局替换1次字符
|
||
|
||
print('znline1--',znline)
|
||
|
||
# if znWord in newznListMore:
|
||
# print('双引号')
|
||
# print('znline222--',znline)
|
||
# znline=znline.replace("\"{}\"".format(znWord),enwordKey,1) #仅全局替换1次字符
|
||
# # znline=znline.replace(znWord,enwordKey,1) #仅全局替换1次字符
|
||
# print('znline2--',znline)
|
||
|
||
# znline=znline.replace("\"{}\"".format(znWord),enwordKey,1) #仅全局替换1次字符
|
||
# print('znline--',znline)
|
||
print('znline--',znline)
|
||
newData.append(znline)
|
||
|
||
|
||
|
||
|
||
# 写入文件
|
||
with open(fileName,'w',encoding='utf8') as newfLines:
|
||
newfLines.writelines(newData)
|
||
|
||
def listFile():
|
||
newDir = input('请输入文件或者目录:')
|
||
# 判断类型: 文件还是目录
|
||
#1. 文件类型
|
||
if(os.path.isfile(newDir)):
|
||
transFile(newDir)
|
||
# pass
|
||
else:
|
||
#2. 目录类型
|
||
print('遍历目录',newDir)
|
||
for root, dirs, files in os.walk(eval(repr(newDir.replace('"', '')))):
|
||
# for root, dirs, files in os.walk(eval(repr(".")) , topdown=False):
|
||
# 遍历子目录
|
||
for name in dirs:
|
||
pass
|
||
# 遍历文件名
|
||
for name in files:
|
||
fileName=os.path.join(os.getcwd(), root,name) #windows系统异常
|
||
print(fileName)
|
||
transFile(fileName)
|
||
|
||
|
||
# 主程序-打包exe
|
||
if __name__=='__main__':
|
||
listFile()
|
||
input("按任意键回车停止")
|
||
print("已停止")
|
||
|