无法在pptx的单元格或某些表格中将文本翻译成德语。但是,幻灯片中的简单文字正在得到翻译。
获得如下输出:Hello World等未得到翻译。
我正在使用的代码如下:
prs = Presentation('old.pptx')
for slide in prs.slides:
for shape in slide.shapes:
if not shape.has_text_frame:
continue
text_frame = shape.text_frame
text_frame.text=translator.translate(text_frame.text,dest='de').text
prs.save('new.pptx')
可以对上述代码进行调整,以便对所有内部pptx进行翻译吗? 我可以理解它在寻找文本框架,但是有没有机会对此进行调整? 如果我从上面的代码中删除以下内容,则会出现错误...
if not shape.has_text_frame:
continue
AttributeError:“图片”对象没有属性“ text_frame”
我浏览了python-pptx文档,发现有一些用于char,table,picture等的函数,但无法弄清楚如何通过它进行翻译,以便可以翻译其中的文本。 参考链接-https://python-pptx.readthedocs.io/en/latest/
答案 0 :(得分:1)
您将需要分别迭代任何表的单元格,如下所示:
def iter_cells(table):
"""Generate each cell in *table*, left-to-right, top-to-bottom."""
for row in table.rows:
for cell in row.cells:
yield cell
def translate_table(table):
for cell in iter_cells(table):
text_frame = cell.text_frame
text_frame.text = translator.translate(text_frame.text, dest='de').text
for shape in slide.shapes:
if shape.has_table:
translate_table(shape.table)
if not shape.has_text_frame:
continue
...
请注意,表格本身并不是形状。而是由GraphicFrame
形状包含。
在图片问题上,并非所有形状都可以包含文本。图片形状就是其中一种,这就是为什么在尝试访问它没有(也不能)拥有的TextFrame
对象之前必须先跳过它。