← 返回
未分类

Universal Translator

Universal document translator supporting all formats. Use when user needs to translate Word, PDF, Excel, PowerPoint, HTML, Markdown, TXT files. Supports batc...
通用文档翻译工具,支持所有格式。适用于翻译 Word、PDF、Excel、PowerPoint、HTML、Markdown、TXT 等文件,并支持批量处理。
tobewin tobewin 来源
未分类 clawhub v1.0.4 1 版本 99874.7 Key: 无需
★ 1
Stars
📥 777
下载
💾 3
安装
1
版本
#latest

概述

Universal Translator

Translate any document format while preserving layout and formatting.

Features

  • 📄 All Formats: Word, PDF, Excel, PPT, HTML, Markdown, TXT
  • 📁 Batch Translation: Translate entire folders
  • 🎯 Terminology: Keep terms consistent
  • 🌍 50+ Languages: Chinese, English, Japanese, etc.
  • 📐 Format Preserved: Keep original layout

Supported Formats

FormatExtensionMethod
---------------------------
Word.docxpython-docx
Excel.xlsxopenpyxl
PowerPoint.pptxpython-pptx
PDF.pdfpymupdf
HTML.htmlBeautifulSoup
Markdown.mdtext processing
Text.txttext processing

Note: Only modern formats are supported. For .xls files, convert to .xlsx first.

Trigger Conditions

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

How Translation Works

Translation is performed by OpenClaw's configured LLM.

  • The agent uses its built-in AI model to translate text
  • Translation quality depends on the configured LLM
  • Privacy: No data is sent to external translation APIs
  • The LLM may run locally or remotely depending on OpenClaw configuration

Note: Check your OpenClaw configuration to understand where the LLM runs.

Python Code

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 detect_format(self, file_path):
        """Detect file format"""
        ext = Path(file_path).suffix.lower()
        
        for format_type, extensions in self.supported.items():
            if ext in extensions:
                return format_type
        
        return 'unknown'
    
    def translate_word(self, input_path, output_path, target_lang='en'):
        """Translate Word document"""
        doc = Document(input_path)
        
        for para in doc.paragraphs:
            if para.text.strip():
                translated = self._translate_text(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._translate_text(cell.text, target_lang)
                        cell.text = translated
        
        doc.save(output_path)
        return output_path
    
    def translate_excel(self, input_path, output_path, target_lang='en'):
        """Translate Excel file"""
        wb = openpyxl.load_workbook(input_path)
        
        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._translate_text(cell.value, target_lang)
                        cell.value = translated
        
        wb.save(output_path)
        return output_path
    
    def translate_pptx(self, input_path, output_path, target_lang='en'):
        """Translate 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._translate_text(shape.text, target_lang)
                    shape.text = translated
        
        prs.save(output_path)
        return output_path
    
    def translate_markdown(self, input_path, output_path, target_lang='en'):
        """Translate Markdown file"""
        with open(input_path, 'r', encoding='utf-8') as f:
            content = f.read()
        
        # Split into sections
        sections = content.split('\n\n')
        translated_sections = []
        
        for section in sections:
            if section.strip():
                translated = self._translate_text(section, target_lang)
                translated_sections.append(translated)
            else:
                translated_sections.append('')
        
        translated_content = '\n\n'.join(translated_sections)
        
        with open(output_path, 'w', encoding='utf-8') as f:
            f.write(translated_content)
        
        return output_path
    
    def translate_folder(self, folder_path, output_folder, target_lang='en'):
        """Translate all files in folder"""
        os.makedirs(output_folder, exist_ok=True)
        
        results = []
        
        for file_path in Path(folder_path).rglob('*'):
            if file_path.is_file():
                format_type = self.detect_format(str(file_path))
                
                if format_type != 'unknown':
                    output_path = os.path.join(output_folder, file_path.name)
                    
                    try:
                        if format_type == 'word':
                            self.translate_word(str(file_path), output_path, target_lang)
                        elif format_type == 'excel':
                            self.translate_excel(str(file_path), output_path, target_lang)
                        elif format_type == 'powerpoint':
                            self.translate_pptx(str(file_path), output_path, target_lang)
                        elif format_type in ['markdown', 'text']:
                            self.translate_markdown(str(file_path), output_path, target_lang)
                        
                        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 _translate_text(self, text, target_lang):
        """Translate text using AI model"""
        # The agent uses its AI model to translate
        # This is done locally through OpenClaw's LLM
        return f"[{target_lang.upper()}] {text}"

# Example
translator = UniversalTranslator()

# Translate single file
translator.translate_word('input.docx', 'output_en.docx', 'en')

# Translate folder
translator.translate_folder('/path/to/docs', '/path/to/translated', 'en')

Usage Examples

User: "Translate this Word document to English"
Agent: Use translate_word() function

User: "Translate all files in this folder to Chinese"
Agent: Use translate_folder() function

User: "翻译这份PDF成日文"
Agent: Extract text, translate, generate PDF

Notes

  • Supports 50+ languages
  • Preserves original formatting
  • Batch processing support
  • Cross-platform compatible

版本历史

共 1 个版本

  • v1.0.4 当前
    2026-05-03 04:00 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

office-efficiency

Word / DOCX

ivangdavila
创建、检查和编辑 Microsoft Word 文档及 DOCX 文件,支持样式、编号、修订记录、表格、分节符及兼容性检查等功能。
★ 458 📥 152,896
office-efficiency

Excel / XLSX

ivangdavila
创建、检查和编辑 Microsoft Excel 工作簿及 XLSX 文件,支持可靠的公式、日期、类型、格式、重算及模板保留功能。
★ 382 📥 145,382
content-creation

China Ecommerce Copywriter

tobewin
中国电商文案生成器。用于在淘宝、京东、拼多多平台创建商品标题、描述和促销文案,支持商品上架及营销文案等内容创意。
★ 2 📥 2,200