技能标识:universal-translator
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