# 简化版 Supabase 自动翻译服务 这是一个简化版的自动翻译脚本,专门用于翻译 `ak_contents` 表的内容,使用 Supabase 和 RageFlow 接口。 ## 功能特点 - ✅ 直接连接 Supabase 数据库 - ✅ 使用 RageFlow API 调用大模型翻译 - ✅ 支持批量翻译多种语言 - ✅ 自动保存翻译结果到 `ak_content_translations` 表 - ✅ 简单的质量评估 - ✅ 避重复翻译 - ✅ 错误处理和日志记录 ## 快速开始 ### 1. 安装依赖 ```bash pip install aiohttp asyncio ``` ### 2. 配置参数 复制 `.env.example` 为 `.env` 并填入您的配置: ```bash cp .env.example .env ``` 编辑 `.env` 文件: ```env SUPABASE_URL=https://your-project.supabase.co SUPABASE_KEY=your-supabase-anon-key RAGEFLOW_API_KEY=your-rageflow-api-key ``` ### 3. 使用脚本 #### 方法1:直接修改脚本配置 编辑 `simple_translation_service.py` 中的配置: ```python config = TranslationConfig( supabase_url="YOUR_SUPABASE_URL", supabase_key="YOUR_SUPABASE_KEY", rageflow_api_key="YOUR_RAGEFLOW_KEY" ) ``` 然后运行: ```bash python simple_translation_service.py ``` #### 方法2:作为模块使用 ```python import asyncio from simple_translation_service import SimpleTranslationService, TranslationConfig async def translate_contents(): config = TranslationConfig( supabase_url="YOUR_SUPABASE_URL", supabase_key="YOUR_SUPABASE_KEY", rageflow_api_key="YOUR_RAGEFLOW_KEY" ) async with SimpleTranslationService(config) as service: # 翻译为英文和日文,限制5条记录 results = await service.batch_translate( target_languages=["en", "ja"], limit=5 ) print(f"翻译完成: {results['summary']}") # 运行 asyncio.run(translate_contents()) ``` ## 数据库要求 确保您的 Supabase 数据库中存在以下表: ### ak_contents 表(源内容) ```sql CREATE TABLE ak_contents ( id UUID PRIMARY KEY, title TEXT, content TEXT, category_id UUID, created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() ); ``` ### ak_content_translations 表(翻译结果) ```sql CREATE TABLE ak_content_translations ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), content_id UUID REFERENCES ak_contents(id), language VARCHAR(10) NOT NULL, title TEXT, content TEXT, quality_score FLOAT DEFAULT 0.0, translated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), translation_source VARCHAR(50) DEFAULT 'manual', UNIQUE(content_id, language) ); ``` ## API 使用方法 ### 获取待翻译内容 ```python contents = await service.get_contents_to_translate(limit=10) ``` ### 翻译单个内容 ```python translation = await service.translate_content_item(content, "en") ``` ### 批量翻译 ```python results = await service.batch_translate( target_languages=["en", "ja", "fr"], limit=20 ) ``` ## 支持的语言 - `en`: English (英文) - `ja`: Japanese (日文) - `fr`: French (法文) - `de`: German (德文) - `es`: Spanish (西班牙文) ## 输出示例 ```json { "total_contents": 5, "target_languages": ["en", "ja"], "results": { "content-uuid-1": { "en": { "success": true, "quality_score": 0.9, "title_preview": "Translated title preview..." }, "ja": { "success": true, "quality_score": 0.85, "title_preview": "翻訳されたタイトルのプレビュー..." } } }, "summary": { "successful": 8, "failed": 2, "skipped": 0 } } ``` ## 注意事项 1. **API 限制**: 脚本会在每次翻译请求之间添加1秒延迟,避免触发API限制 2. **避免重复**: 自动检查是否已存在翻译,避免重复翻译 3. **错误处理**: 包含完整的错误处理和日志记录 4. **质量评估**: 提供基于长度比例的简单质量评分 ## 扩展功能 如果需要更多功能,可以考虑: - 添加更多翻译提供商(OpenAI、Google Translate等) - 实现更复杂的质量评估算法 - 添加人工审核工作流 - 支持增量翻译(定时任务) - 添加翻译缓存机制 ## 故障排除 ### 常见错误 1. **连接错误**: 检查 Supabase URL 和 API Key 是否正确 2. **权限错误**: 确保 Supabase API Key 有读写权限 3. **翻译失败**: 检查 RageFlow API Key 和网络连接 4. **数据库错误**: 确保表结构正确且存在 ### 调试模式 将日志级别设置为 DEBUG: ```python logging.basicConfig(level=logging.DEBUG) ```