一、前言
本翻译小程序功能为将ppt中的中文翻译称为英文。项目文件结构如下:
1、newppt:转换成英文之后所存的ppt;
2、oldppt:需要转换的ppt;
3、chromedriver:需要自行下载,和电脑当中所使用的Google浏览器版本对应;
4、main.py:主程序;
5、translating.py:翻译的代码。
二、main.py内容:
#coding = utf-8
from translating import get_words
if __name__=='__main__':
read_path = './oldppt/xiaochen.pptm' #待翻译ppt的路径
save_path = './newppt/xiaochen.pptx' #存放路径
get_words(read_path, save_path)
'''
#----下面一部分是批量翻译ppt当中的内容-----
path_in = './oldppt' #需要翻译的ppt所在的路径
path_out = './newppt' #翻译后的ppt需要保存的路径
for i in os.listdir(path_in):
read_path = path_in +'/'+i
save_path = path_out +'/' +i
get_words(read_path, save_path)
'''
三、translating.py内容:
from selenium import webdriver
import time
import re
from pptx import Presentation
def Translate(words):
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
browser = webdriver.Chrome('./chromedriver',options=chrome_options)
browser.get("https://fanyi.baidu.com/?aldtype=16047#auto/zh")
browser.find_element_by_css_selector('#baidu_translate_input').send_keys(words)
time.sleep(3) #网页跳变时给网页点时间,跳转完成后再提取网页,若直接提取网页则不需要等待
data = browser.page_source
dat = re.findall('<div style="display:none;" id="original-output"><p>(.*?)</p></div>',data)
Eng = dat[0].replace("</p><p>", "\n")
Eng = Eng.replace(">",">>")
Eng = Eng.replace(">>", ">>")
Eng = Eng.replace("<", "<")
Eng = Eng.replace(">>>>", ">>")
browser.quit()
time.sleep(1)
return Eng
def get_words(read_path,save_path):
prs = Presentation(read_path)
ctotal = len(prs.slides)
num = 1
for slide in prs.slides:
# 获取形状shape
print("总共%d页,正在翻译第%d页..." % (ctotal, num))
#print(slide.shapes)
for shape in slide.shapes:
if shape.has_text_frame: # 判断是否有文字
text_frame = shape.text_frame # 获取文字框
text_frame.text.strip()
if text_frame.text != '':
try:
Eng = Translate(text_frame.text)
text_frame.text = Eng
except:
print('error')
num +=1
prs.save(save_path)
四、写在后面
1、本小程序只能翻译ppt中插入的文本框当中的文字,不能翻译图片;
2、翻译完后,格式需要做相应的调整,有特殊字符的也需要做相应的修改。