闲社服务运行正常AI智能体自动化平台
u

全格式翻译

技能标识: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. 全格式翻译、文档翻译、批量翻译。

作者:admin | 来源记录:ClawHub
登记来源
ClawHub
版本
V 1.0.4
检测标记
后台标记通过
免费
免费获取
0
收藏
来源与检测标记为平台登记信息,并不代表已展示可复核的检测报告。使用前请核对版本、依赖和所需权限,建议先在隔离环境中运行。
概述
安装方式
版本历史

全格式翻译

通用翻译器

翻译任何文档格式,同时保留布局和格式。

功能特点

  • - 📄 全格式支持:Word、PDF、Excel、PPT、HTML、Markdown、TXT
  • 📁 批量翻译:翻译整个文件夹
  • 🎯 术语统一:保持术语一致性
  • 🌍 50+语言:中文、英文、日文等
  • 📐 格式保留:保持原始布局

支持格式

格式扩展名方法
Word.docxpython-docx
Excel
.xlsx | openpyxl | | PowerPoint | .pptx | python-pptx | | PDF | .pdf | pymupdf | | HTML | .html | BeautifulSoup | | Markdown | .md | 文本处理 | | 文本 | .txt | 文本处理 |

注意:仅支持现代格式。对于.xls文件,请先转换为.xlsx格式。

触发条件

  • - Translate this document / 翻译这个文档
  • Translate folder / 翻译文件夹
  • Translate to English / 翻译成英文
  • universal-translator

翻译工作原理

翻译由OpenClaw配置的LLM执行。

  • - 代理使用其内置AI模型进行文本翻译
  • 翻译质量取决于所配置的LLM
  • 隐私保护:不会向外部翻译API发送数据
  • LLM可在本地或远程运行,具体取决于OpenClaw配置

注意:请检查您的OpenClaw配置以了解LLM的运行位置。

Python代码

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}

示例

translator = UniversalTranslator()

翻译单个文件

translator.translateword(input.docx, outputen.docx, en)

翻译文件夹

translator.translate_folder(/path/to/docs, /path/to/translated, en)

使用示例

用户:Translate this Word document to English
代理:使用 translate_word() 函数

用户:Translate all files in this folder to Chinese
代理:使用 translate_folder() 函数

用户:翻译这份PDF成日文
代理:提取文本,翻译,生成PDF

注意事项

  • - 支持50+种语言
  • 保留原始格式
  • 支持批量处理
  • 跨平台兼容

标签

skill ai

通过对话安装

以下为平台配置的接入选项,并非逐项实测通过。能否安装取决于客户端支持、技能来源和运行环境:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 universal-translator-1775994142 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 universal-translator-1775994142 技能

通过命令行安装

skillhub install universal-translator-1775994142

下载

⬇ 下载 universal-translator v1.0.4(免费)

文件大小: 3.7 KB | 发布时间: 2026-4-13 12:25

v1.0.4 最新 2026-4-13 12:25
清理测试文件,重新发布
返回顶部