Traduora 介绍与选型指南
Ever Traduora 开源翻译管理平台全景介绍,覆盖技术栈、功能、版本现状、同类方案选型对比与适用场景建议。
Traduora 介绍与选型指南
一、Traduora 是什么
Ever® Traduora 是 Ever Co. LTD 旗下的开源翻译管理平台(Translation Management Platform,TMS),面向需要对产品、应用、网站进行多语言本地化(i18n / l10n)的开发团队与内容团队。平台提供 Web 管理界面 + REST API,支持 JSON、YAML、Gettext(.po)、XLIFF、Android XML 等十多种翻译格式的导入导出,自带团队协作、词条搜索、批量导入导出等核心能力。
Traduora 的定位是「开发者友好的翻译基础设施」——与面向纯翻译团队的重量级商业 TMS 不同,它强调与 CI/CD 流水线集成(通过 REST API 自动同步翻译词条)、支持多格式无缝切换、5 分钟快速部署,适合中小团队和技术驱动的本地化场景。
💡 翻译管理平台(TMS) 是一类专门管理多语言翻译流程的系统,核心能力包括:词条(term)集中管理、多语言翻译存储、导入导出、工作流审批、团队协作。市场上主要分为商业 TMS(Smartling、Transifex、POEditor)和开源 TMS(Traduora、Tolgee、Weblate、Pootle)两类。Traduora 属于后者中更偏向开发者场景的一员——它原生提供 REST API,方便与代码仓库、构建流水线对接,而非纯 Web 人工翻译工作台。
官方定位(官网 traduora.co,2026-10-27 查询):Open Translation Management Platform for teams,核心产品 AGPL-3.0 开源。
二、技术栈与架构
2.1 技术栈
| 层级 | 技术 | 版本/说明 |
|---|---|---|
| 后端语言 | Node.js + TypeScript | NestJS 框架 |
| 前端框架 | Vue.js | SPA,打包后静态资源由后端提供 |
| ORM | TypeORM | 支持 MySQL / PostgreSQL / SQLite(better-sqlite3) |
| 认证 | JWT(Access Token) | password 和 client_credentials 两种 grant type |
| 数据库 | SQLite(默认)/ MySQL 5.7+ / PostgreSQL 15+ | 生产推荐 MySQL 或 PostgreSQL |
| 容器化 | Docker 镜像 everco/ever-traduora | 单镜像包含后端 API + 前端静态文件 |
| 许可证 | AGPL-3.0 | 商业部署可联系 Ever Co. 获取企业版 |
⚠️ 注意:多个批次任务书曾标注 Traduora 为「Go + Vue.js」技术栈,属历史信息。本文档以 2026-10-27 GitHub 仓库
ever-co/ever-traduora的 package.json(version 0.23.0)和源码实查为准:后端为 Node.js + TypeScript(NestJS),前端为 Vue.js,数据库默认 better-sqlite3。
2.2 架构概览
Traduora 采用经典的前后端分离但打包一体化的架构:
- API Server(NestJS):提供
/api/v1/下所有 REST 端点,处理认证、项目管理、词条/翻译 CRUD、导入导出任务等业务逻辑 - Web App(Vue.js SPA):打包后的前端静态文件由 NestJS 后端在同端口(默认 8080)下的根路径提供服务
- 数据库:TypeORM 连接,自动迁移(
TR_DB_AUTOMIGRATE=true),应用启动时自动执行 pending migrations - 入口脚本:单容器通过
docker-entrypoint.sh启动 NestJS,前端已嵌入public/目录
┌─────────────────────────────────────────────┐
│ everco/ever-traduora │
│ ┌──────────────┐ ┌──────────────────────┐ │
│ │ NestJS API │ │ Vue.js SPA (public) │ │
│ │ :8080 API │ │ :8080 / (Web UI) │ │
│ └──────┬───────┘ └──────────────────────┘ │
│ │ │
│ TypeORM │
│ │ │
│ ┌──────▼───────┐ │
│ │ Database │ SQLite/MySQL/PostgreSQL │
│ └──────────────┘ │
└─────────────────────────────────────────────┘
2.3 API 资源模型
Traduora REST API(基础路径 /api/v1/)的核心资源层级:
User
└─ Project
├─ ProjectUser (协作者,角色 Admin/Editor/Viewer)
├─ ProjectClient (API 客户端,client_credentials 认证)
├─ ProjectInvite (邀请链接)
├─ Term (词条,带 label 标签)
│ └─ Translation (按 locale 分类)
├─ Label (词条/翻译分组标签)
├─ Import / Export (批量操作任务)
├─ Stats (项目统计)
└─ Plan (套餐,默认 open-source)
Locale (语言注册表,/api/v1/locales)
三、功能全景
3.1 核心功能清单
| 功能域 | 具体能力 | 实现方式 |
|---|---|---|
| 项目管理 | 创建/编辑/删除项目、项目统计、套餐管理 | Web + REST |
| 团队协作 | 项目邀请、成员角色(Admin/Editor/Viewer)、邮箱邀请 | Web + REST |
| 词条管理 | 创建/编辑/删除词条、label 标签分组、按标签筛选 | Web + REST |
| 翻译管理 | 按 locale 增删改翻译值、翻译状态追踪 | Web + REST |
| 批量导入 | 支持 JSON/YAML/PO/XLIFF/CSV/Properties/Android XML/PHP Arrays 等 11 种格式 | Web + REST POST /imports |
| 批量导出 | 同上 11 种格式,按 locale / label / term 过滤导出 | REST GET /exports(异步任务) |
| 认证 | 用户邮箱+密码、Google OAuth、API 客户端 client_credentials | REST JWT Bearer |
| REST API | 全量 CRUD + 批量导入导出 + 认证,可嵌入 CI/CD | REST /api/v1/* |
| 搜索 | 即时全文搜索词条和翻译值 | Web UI(后端 Elasticsearch 独立服务可选) |
| 邮件通知 | 邀请邮件、密码重置 | 可配置 SMTP |
| 自动迁移 | 应用启动自动执行 TypeORM migrations | TR_DB_AUTOMIGRATE=true |
3.2 支持的翻译格式(11 种)
Traduora 支持以下格式的导入和导出,覆盖前端、后端、移动端常见本地化场景:
| 格式 | 典型应用场景 | 支持嵌套 |
|---|---|---|
| JSON flat | Web 前端(i18next、react-i18next) | 否 |
| JSON nested | Web 前端(vue-i18n、react-intl) | 是 |
| YAML flat | Ruby on Rails、Go i18n | 否 |
| YAML nested | Ruby on Rails config/locales | 是 |
| Java Properties | Java/Spring Boot 后端国际化 | 否 |
| CSV | Excel 批量翻译表 | 否 |
| Gettext(.po) | WordPress、Django、Python gettext | 否 |
| XLIFF 1.2 | iOS/Android、CAT 工具通用格式 | 是 |
| Strings(Apple .strings) | iOS/macOS | 否 |
| Android Resources(xml) | Android strings.xml | 否 |
| PHP Arrays | Laravel / Symfony 本地化 | 是 |
3.3 API 客户端与集成
Traduora 项目内建「Project Client」概念——每项目可创建多个 API 客户端,用 client_credentials 授权类型获取 token。这意味着:
- CI/CD 流水线可在构建时通过 API 拉取最新翻译值
- 翻译更新可通过 Webhook 或定时任务自动推送到代码仓库
- 不需要真实用户登录即可执行导入导出、词条 CRUD
社区还提供了非官方 CLI:github.com/iilei/traduora-cli。
四、版本与社区现状
| 指标 | 数值 | 查询日期 | 来源 |
|---|---|---|---|
| 最新稳定版 | 0.23.0 | 2026-10-27 | GitHub package.json(clone ever-co/ever-traduora develop 分支) |
| GitHub Stars | ~1500+ | 2026-10-27 | traduora.co 官网 |
| Docker Pulls | 50 万+ | 2026-10-27 | traduora.co 官网 |
| 许可证 | AGPL-3.0 | — | README.md |
| 所属公司 | Ever Co. LTD | — | README.md(2021 年从个人作者 anthonynsimon 迁移) |
| Discord 社区 | discord.gg/msqRJ4w | — | README.md |
| 商业支持 | 联系 traduora@ever.co | — | README.md |
4.1 版本时间线(重要变化)
| 版本 | 主要变化 |
|---|---|
| 0.6.x(anthonynsimon 时期) | 初版,Go 后端原型验证 |
| 0.8–0.12 | 技术栈切换为 Node.js + TypeScript + Vue.js |
| 0.15–0.19 | 加入 MySQL/PostgreSQL 支持、OAuth、批量导入导出 |
| 0.21–0.22 | Docker 化完善,支持 SQLite 快速启动 |
| 0.23.0(当前) | 强制 TR_SECRET 校验(拒绝公开默认值)、强制 TR_ADMIN_PASSWORD(不再有已知默认密码)、加入安全 throttle、登录失败锁定 |
⚠️ 重要安全变更(0.23.0):之前版本存在公开已知的默认密码(如
sTr0ngP@ssw0rd!2025),自 0.23.0 起这些密码首次登录后会被自动失效。生产部署必须显式设置TR_SECRET(openssl rand -hex 32生成)和TR_ADMIN_PASSWORD。
五、选型决策:Traduora vs 同类方案
5.1 同类方案对比矩阵
| 维度 | Traduora | Tolgee | Weblate | POEditor(商业) | Smartling(商业) |
|---|---|---|---|---|---|
| 开源协议 | AGPL-3.0 | Apache-2.0 | GPL-3.0 | 商业 SaaS | 商业 SaaS |
| 部署形态 | Docker / 源码 / K8s | Docker / Helm / K8s | 源码 / Docker | SaaS | SaaS |
| 后端技术栈 | Node.js + NestJS | Go + React | Django | — | — |
| 支持格式数 | 11 种 | 14 种 | 40+ 种 | 30+ 种 | 50+ 种 |
| REST API | ✅ 全量 | ✅ 全量 | ✅ 全量 | ✅ | ✅ |
| 自托管 | ✅ | ✅ | ✅ | ❌ | ❌ |
| 免费额度 | 无限制(AGPL) | 无限制 | 无限制 | 项目数限制 | 字符数限制 |
| CI/CD 集成 | REST API + client_credentials | REST API + CLI | REST API + addons | Webhook | Webhook |
| 机器翻译 | 待规划 | ✅ 原生 | ✅ 可配置 | ✅ | ✅ |
| 社区规模 | ~1.5k stars | ~3k stars | ~5k stars | — | — |
| 维护方 | Ever Co. LTD(商业公司) | tolgee.com(商业公司) | 社区主导 | POEditor Ltd. | Smartling Inc. |
5.2 选型建议(按场景)
选 Traduora 的场景:
- ✅ 中小团队(50 项目内、10 万字符串内,默认为 open-source 套餐上限,可改)
- ✅ 开发者为主,需要 REST API 嵌入 CI/CD 流水线(client_credentials 认证特别方便)
- ✅ 快速启动:5 分钟内 Docker Compose 拉起(SQLite 模式)
- ✅ 技术栈偏好 Node.js 生态
- ✅ AGPL-3.0 许可可接受
选 Tolgee 的场景:
- ✅ 同样自托管 + 开源
- ✅ 自带机器翻译(Google / DeepL / Azure)原生集成
- ✅ Go 技术栈偏好
- ✅ Apache-2.0 许可更宽松
选 Weblate 的场景:
- ✅ 需要最丰富的格式支持(40+ 种)
- ✅ 大型社区项目翻译协作
- ✅ 有 Python / Django 技术栈偏好
选商业 SaaS 的场景:
- ✅ 完全不想运维(POEditor / Smartling)
- ✅ 需要企业级 SSO、工作流审批、专业服务
- ✅ 海量翻译(百万级字符串)
排除 Traduora 的场景:
- ❌ 需要原生机器翻译集成(规划中,当前版本无)
- ❌ 超大规模项目(需评估 open-source 套餐上限)
- ❌ 团队纯译员无技术背景(Traduora 的 Web UI 简洁但不如 POEditor 丰富)
5.3 Traduora 的优势与劣势
优势:
- 极简部署:SQLite 模式下 Docker Compose 一条命令启动,无需单独数据库
- REST API 覆盖全面,client_credentials 认证天生适合 CI/CD 集成
- TypeORM 自动迁移,版本升级平滑
- 格式覆盖主流开发场景(前端 JSON/YAML、后端 PO/Properties、移动端 Android XML/Strings)
- AGPL-3.0 核心产品永远免费无限制
劣势:
- 社区规模不如 Weblate(~1.5k vs ~5k stars)
- 无内建机器翻译(需第三方法接)
- open-source 套餐有 100k 字符串上限(可通过配置覆盖,但属未文档化操作)
- 生产部署仍需 MySQL/PostgreSQL + 反向代理 TLS(官方明确警告 JWT token 安全)
- 0.23.0 起强制安全配置,绕过易踩坑
六、适用人群与规模建议
| 团队规模 | 推荐部署方式 | 数据库 | 备注 |
|---|---|---|---|
| 个人开发者 / 小型项目 | Docker Compose(SQLite demo) | better-sqlite3 | 适合快速体验、原型验证 |
| 5–20 人技术团队 | Docker Compose + MySQL | MySQL 5.7+ | 生产推荐,数据持久化 |
| 20+ 人中型团队 | K8s Deployment + PostgreSQL | PostgreSQL 15+ | 可参考 deploy/k8s/traduora-preview.yaml |
| 企业级大规模 | Helm / K8s Operator + 托管数据库 | MySQL/PostgreSQL | 需联系 Ever Co. 获取商业支持 |
open-source 套餐默认上限(可通过 TR_DEFAULT_PROJECT_PLAN 配置覆盖):
- 每用户最多 100 个项目
- 每项目最多 100,000 字符串(term + translation 合计)
- 无时间或团队人数限制
七、合规与安全要点
- JWT 必走 HTTPS:Traduora 使用 JWT Bearer Token,官方强烈建议放在 TLS 终止的反向代理之后
- TR_SECRET 必须设置:0.23.0 起,
NODE_ENV=production时未设置 TR_SECRET 直接启动失败;即使 dev 环境,也会拒绝公开已知默认值 - TR_ADMIN_PASSWORD 必须设置:0.23.0 起无默认管理员密码,必须显式配置
- 登录失败锁定:
TR_LOGIN_ATTEMPTS_MAX默认 3 次,900 秒 TTL - API 速率限制:
TR_AUTH_THROTTLE_LIMIT生产默认 100/min,开发环境 10/min - 邮件验证:Google OAuth 和邮箱注册可选启用(
TR_AUTH_GOOGLE_*、TR_SIGNUPS_ENABLED) - 数据隐私:自托管模式下翻译数据完全在自有数据库中,符合 GDPR 等隐私法规
八、快速体验
# 5 分钟快速体验(SQLite,无需单独数据库)
git clone https://github.com/ever-co/ever-traduora
cd ever-traduora
export TR_SECRET=$(openssl rand -hex 32)
export TR_ADMIN_PASSWORD=q1w2e3r4
docker compose -f docker-compose.demo.yaml up -d
# 浏览器访问
open http://localhost:8080
# 默认管理员:local.admin@ever.co / q1w2e3r4
九、延伸阅读
- 《Ubuntu 22.04 安装 Traduora 0.23 指南》:裸机从零安装全流程
- 《Traduora 0.23 Docker Compose 部署指南》:SQLite/MySQL/PostgreSQL 三种 Compose 方案
- 《Traduora 0.23 配置参数详解》:30+ 环境变量逐项说明
- 《Traduora 0.23 REST API 详解》:API v1 全部端点 + curl 示例
十、信息来源
| 来源 | 链接 | 查询日期 |
|---|---|---|
| GitHub 仓库 | https://github.com/ever-co/ever-traduora | 2026-10-27 |
| 官方文档站 | https://docs.traduora.co | 2026-10-27 |
| 官网 | https://traduora.co | 2026-10-27 |
| package.json | 仓库 version 字段 | 2026-10-27 |
| 源码 config.ts | api/src/config.ts 环境变量定义 | 2026-10-27 |
| 源码 controllers | api/src/controllers/*.controller.ts API 端点 | 2026-10-27 |
| Docker Hub | https://hub.docker.com/r/everco/ever-traduora | 2026-10-27 |