{"id":31392211,"url":"https://github.com/louislau-art/ark-translator","last_synced_at":"2026-04-15T16:03:11.735Z","repository":{"id":316986615,"uuid":"1065572651","full_name":"LouisLau-art/ARK-translator","owner":"LouisLau-art","description":"A lightweight dark-themed web translator powered by ARK Doubao API with Markdown support | 基于 ARK 豆包 API 的轻量级暗黑主题翻译器","archived":false,"fork":false,"pushed_at":"2025-09-28T02:13:53.000Z","size":322,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-28T04:09:47.073Z","etag":null,"topics":["flask","markdown","python","translator"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LouisLau-art.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-28T01:55:19.000Z","updated_at":"2025-09-28T02:16:50.000Z","dependencies_parsed_at":"2025-09-28T04:09:56.843Z","dependency_job_id":"c013e891-5e7d-45bc-bd38-8b9fcf78f192","html_url":"https://github.com/LouisLau-art/ARK-translator","commit_stats":null,"previous_names":["louislau-art/ark-translator"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/LouisLau-art/ARK-translator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LouisLau-art%2FARK-translator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LouisLau-art%2FARK-translator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LouisLau-art%2FARK-translator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LouisLau-art%2FARK-translator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LouisLau-art","download_url":"https://codeload.github.com/LouisLau-art/ARK-translator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LouisLau-art%2FARK-translator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277462588,"owners_count":25822034,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-29T02:00:09.175Z","response_time":84,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flask","markdown","python","translator"],"created_at":"2025-09-29T03:59:53.943Z","updated_at":"2026-04-15T16:03:11.728Z","avatar_url":"https://github.com/LouisLau-art.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ARK Doubao Translator 🔤\n\n![Python](https://img.shields.io/badge/python-v3.7%2B-blue.svg)\n![Flask](https://img.shields.io/badge/flask-v2.3.2-green.svg)\n![License](https://img.shields.io/badge/license-MIT-blue.svg)\n![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)\n\n一款基于 ARK 豆包翻译 API 的轻量级深色主题网页翻译器，支持 Markdown/LaTeX 渲染、自动翻译、翻译历史与字体大小调节。\n\n![演示截图](screenshots/demo.png)\n\n## 功能亮点 ✨\n\n- 🌙 **深色界面**：自带暗色主题，长时间阅读不刺眼。\n- 🔄 **实时自动翻译**：输入停顿 0.5 秒自动触发，可随时切换开关。\n- 📝 **Markdown/LaTeX 支持**：内置 MathJax，对 `$...$`、`$$...$$` 公式友好。\n- 🌍 **多语言互译**：内置 28 种语种选项，并支持源语言自动检测。\n- 📋 **增强复制体验**：复制后按钮会短暂显示 ✔️，反馈更及时。\n- 🧹 **快速清空**：输入输出一键清空，重写更高效。\n- 📜 **本地历史记录**：自动保存所有翻译记录，可随时展开重用。\n- 📐 **字体滑杆**：通过拖动滑杆精细调节输入/输出面板字体大小（12px–26px）。\n- 📄 **长文档翻译**：支持任意长度的 Markdown 文档翻译，自动拆分合并，保留格式。\n\n## 技术栈 🛠\n\n- **后端**：Flask (Python)\n- **前端**：原生 HTML / CSS / JavaScript（拆分静态资源）\n- **API**：ARK Doubao Translation\n- **渲染**：Python-Markdown + MathJax\n\n## 快速开始 🚀\n\n### 环境要求\n\n- Python 3.7 及以上\n- 火山引擎 ARK API 密钥（[点击申请](https://www.volcengine.com/)）\n\n### 安装步骤\n\n1. **克隆项目**\n   ```bash\n   git clone https://github.com/yourusername/ark-translator.git\n   cd ark-translator\n   ```\n2. **安装依赖**\n   ```bash\n   pip install -r requirements.txt\n   ```\n3. **配置 API 密钥**\n   ```bash\n   cp translator.example.env translator.env\n   # 编辑 translator.env，写入真实 API Key\n   ```\n   ```env\n   ARK_API_KEY=your_actual_api_key\n   ```\n4. **启动服务**\n   ```bash\n   python app.py\n   ```\n5. **访问页面**\n   在浏览器打开 [http://127.0.0.1:5000](http://127.0.0.1:5000)。\n\n## 配置说明 ⚙️\n\n- 应用启动时会自动加载同目录下的 `translator.env`。\n- `python-dotenv` 负责读取环境变量，避免将密钥硬编码进代码。\n- 若部署至其他路径，请确保 `translator.env` 与 `web_translator.py` 在同一目录。\n\n## 使用指南 📖\n\n1. 在左侧输入框键入或粘贴文本。\n2. 依据需求选择源语言与目标语言，或使用“⇄”按钮互换。\n3. 保持“自动翻译”开启即可实时出结果，也可手动控制。\n4. 拖动状态栏的字体滑杆，调整输入与输出区域的字号。\n5. 点击“📋”按钮复制翻译结果的纯文本。\n6. 若文本包含公式，MathJax 会在翻译完成后自动重新渲染。\n7. **长文档翻译**：直接粘贴任意长度的 Markdown 文档，系统会自动拆分、翻译并合并结果，保留原格式。\n\n## API 说明 📚\n\n- 当前实现内置 28 种语言（详见 `app.py` 中的 `LANGUAGE_MAP`）。\n- 源语言支持自动检测，目标语言需从列表中选择。\n- 翻译请求默认超时 30 秒，超时会提示“网络错误”。\n- 针对常见状态码（401/429 等）提供了更明确的错误提示。\n- **长文档处理**：自动将超过 1000 个 token 的文档拆分为多个块，翻译后合并，保留 Markdown 格式。\n\n## 常见问题 ❓\n\n- **提示“请创建 translator.env 文件并设置 ARK_API_KEY”**：检查文件是否存在且密钥填写正确。\n- **返回错误信息**：留意接口响应，确认 Key 权限与余额。\n- **网络错误**：检查本地网络环境，终端日志可帮助定位问题。\n- **长文档翻译问题**：确保输入的是有效的 Markdown 格式，代码块会自动完整保留。\n\n## 目录结构 🗂️\n\n```\nARK-translator/\n├── app.py                   # Flask 应用主入口\n├── templates/\n│   └── index.html           # 页面模板\n├── static/\n│   ├── style.css            # 全部样式\n│   └── script.js            # 前端交互脚本\n├── translator.env           # 私有环境变量（需手动创建）\n├── translator.example.env   # 环境变量示例\n├── requirements.txt         # 项目依赖\n└── README.md\n```\n\n## 贡献指南 🤝\n\n欢迎提交 Issue / PR：\n\n1. Fork 本仓库。\n2. 新建分支 `git checkout -b feature/your-feature`。\n3. 提交修改 `git commit -m \"feat: add your feature\"`。\n4. 推送分支 `git push origin feature/your-feature`。\n5. 发起 Pull Request 并描述变更内容。\n\n## 安全提示 🔒\n\n- 切勿将真实 API Key 提交到版本库。\n- 保持 `.gitignore` 中对 `translator.env` 等敏感文件的忽略规则。\n- 部署到服务器时，推荐使用系统级环境变量或密钥管理服务。\n\n## 许可证 📄\n\n本项目遵循 [MIT License](LICENSE)。\n\n## 致谢 🙏\n\n- 火山引擎 ARK 团队提供的豆包翻译 API。\n- Flask 社区提供的优秀 Web 框架。\n- Python-Markdown 与 MathJax 项目的支持。\n\n## 作者 👤\n\n- GitHub：[LouisLau-art](https://github.com/LouisLau-art)\n- Email：louis.shawn@qq.com\n\n## 支持 ⭐\n\n如果这个项目对你有帮助，欢迎点亮 Star，或分享给更多开发者。\n\nMade with ❤️ and ☕\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flouislau-art%2Fark-translator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flouislau-art%2Fark-translator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flouislau-art%2Fark-translator/lists"}