Universal document translator supporting all formats. Use when user needs to translate Word, PDF, Excel, PowerPoint, HTML, Markdown, TXT files. Supports batch translation, terminology consistency, and format preservation. 全格式翻译、文档翻译、批量翻译。
翻译任何文档格式,同时保留布局和格式。
| 格式 | 扩展名 | 方法 |
|---|---|---|
| Word | .docx | python-docx |
| Excel |
注意:仅支持现代格式。对于.xls文件,请先转换为.xlsx格式。
翻译由OpenClaw配置的LLM执行。
注意:请检查您的OpenClaw配置以了解LLM的运行位置。
python
import os
from pathlib import Path
from docx import Document
import openpyxl
from pptx import Presentation
class UniversalTranslator:
def init(self):
self.supported = {
word: [.docx],
excel: [.xlsx, .xls],
powerpoint: [.pptx],
pdf: [.pdf],
html: [.html, .htm],
markdown: [.md],
text: [.txt]
}
def detectformat(self, filepath):
检测文件格式
ext = Path(file_path).suffix.lower()
for format_type, extensions in self.supported.items():
if ext in extensions:
return format_type
return unknown
def translateword(self, inputpath, outputpath, targetlang=en):
翻译Word文档
doc = Document(input_path)
for para in doc.paragraphs:
if para.text.strip():
translated = self.translatetext(para.text, target_lang)
para.clear()
para.add_run(translated)
for table in doc.tables:
for row in table.rows:
for cell in row.cells:
if cell.text.strip():
translated = self.translatetext(cell.text, target_lang)
cell.text = translated
doc.save(output_path)
return output_path
def translateexcel(self, inputpath, outputpath, targetlang=en):
翻译Excel文件
wb = openpyxl.loadworkbook(inputpath)
for sheet in wb.worksheets:
for row in sheet.iter_rows():
for cell in row:
if cell.value and isinstance(cell.value, str):
translated = self.translatetext(cell.value, target_lang)
cell.value = translated
wb.save(output_path)
return output_path
def translatepptx(self, inputpath, outputpath, targetlang=en):
翻译PowerPoint
prs = Presentation(input_path)
for slide in prs.slides:
for shape in slide.shapes:
if hasattr(shape, text) and shape.text.strip():
translated = self.translatetext(shape.text, target_lang)
shape.text = translated
prs.save(output_path)
return output_path
def translatemarkdown(self, inputpath, outputpath, targetlang=en):
翻译Markdown文件
with open(input_path, r, encoding=utf-8) as f:
content = f.read()
# 分割成段落
sections = content.split(\n\n)
translated_sections = []
for section in sections:
if section.strip():
translated = self.translatetext(section, target_lang)
translated_sections.append(translated)
else:
translated_sections.append()
translatedcontent = \n\n.join(translatedsections)
with open(output_path, w, encoding=utf-8) as f:
f.write(translated_content)
return output_path
def translatefolder(self, folderpath, outputfolder, targetlang=en):
翻译文件夹中的所有文件
os.makedirs(outputfolder, existok=True)
results = []
for filepath in Path(folderpath).rglob(*):
if filepath.isfile():
formattype = self.detectformat(str(file_path))
if format_type != unknown:
outputpath = os.path.join(outputfolder, file_path.name)
try:
if format_type == word:
self.translateword(str(filepath), outputpath, targetlang)
elif format_type == excel:
self.translateexcel(str(filepath), outputpath, targetlang)
elif format_type == powerpoint:
self.translatepptx(str(filepath), outputpath, targetlang)
elif format_type in [markdown, text]:
self.translatemarkdown(str(filepath), outputpath, targetlang)
results.append({file: file_path.name, status: success})
except Exception as e:
results.append({file: file_path.name, status: error, error: str(e)})
return results
def translatetext(self, text, target_lang):
使用AI模型翻译文本
# 代理使用其AI模型进行翻译
# 通过OpenClaw的LLM在本地完成
return f[{target_lang.upper()}] {text}
用户:Translate this Word document to English
代理:使用 translate_word() 函数
用户:Translate all files in this folder to Chinese
代理:使用 translate_folder() 函数
用户:翻译这份PDF成日文
代理:提取文本,翻译,生成PDF
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 universal-translator-1775994142 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 universal-translator-1775994142 技能
skillhub install universal-translator-1775994142
文件大小: 3.7 KB | 发布时间: 2026-4-13 12:25