企业版 better-i18n:扩展你的本地化基础设施
当你的产品以多种语言发布时,本地化就变成了基础设施——而不是一次性项目。你需要程序化访问、CI/CD 集成、一致的术语执行,以及对已翻译、待处理和缺失内容的可见性。
better-i18n 是一个 API 优先的翻译管理平台,专为工程团队设计。它提供构建模块——REST API、Content SDK、CLI 工具、MCP 服务器、CDN 分发和 GitHub 集成——使本地化成为开发工作流的无缝组成部分。
企业团队实际获得什么
API 优先架构
better-i18n 的每个功能都可通过 REST API 使用。你的内部工具、CI 流水线和自定义工作流可以以编程方式与平台交互:
翻译管理 API(dash.better-i18n.com/api):
| 操作 | 功能 |
|---|---|
| listKeys | 使用搜索、命名空间和状态过滤器查询翻译键 |
| createKeys | 创建带有源文本和初始翻译的键 |
| updateKeys | 跨语言更新现有键的翻译 |
| deleteKeys | 软删除不再使用的键 |
| listProjects | 列出组织中的所有项目 |
| getProject | 获取项目详细信息,包括语言和命名空间 |
Content SDK(@better-i18n/sdk):
一个 Supabase 风格的查询构建器,用于获取本地化内容条目:
import { createClient } from "@better-i18n/sdk";
const client = createClient({
project: "your-org/your-project",
apiKey: process.env.BETTER_I18N_CONTENT_API_KEY,
});
// 获取法语的已发布博客文章
const { data, total, hasMore } = await client
.from("blog-posts")
.eq("status", "published")
.language("fr")
.order("publishedAt", { ascending: false })
.limit(20);
该 SDK 零依赖,完全使用 TypeScript 类型化,可在任何 JavaScript 运行时中工作。
CDN 分发
翻译通过 Cloudflare 的边缘网络提供:
https://cdn.better-i18n.com/{org}/{project}/{locale}/{namespace}.json
全球低于 100 毫秒的分发。在仪表板或通过 API 更新翻译,无需重新部署应用即可在 CDN 上生效。
GitHub 集成
better-i18n 与你的仓库同步:
- Webhook 触发同步 — Push 事件触发翻译文件更新
- Pull Request 工作流 — 翻译更新以你控制的 PR 形式推送
- 最小权限 — 仅对配置的翻译文件模式(如
locales/**/*.json)具有读/写权限 - 完全合并控制 — 你决定翻译何时合入你的代码库
开发者工作流 CLI
@better-i18n/cli 集成到你的开发流程中:
# 检测 React/Next.js 代码中的硬编码字符串
npx @better-i18n/cli scan --ci
# 将本地翻译键与云项目进行比较
npx @better-i18n/cli sync --format json
将 scan 添加到你的 pre-commit 钩子或 CI 流水线。使用 sync 在发布前审核翻译覆盖率。
AI 辅助翻译的 MCP 服务器
两个 MCP 服务器将你的 AI 工具直接连接到翻译工作区:
| 包 | 工具数 | 用途 |
|---|---|---|
| @better-i18n/mcp | 11 个工具 | 翻译管理(键、翻译、发布) |
| @better-i18n/mcp-content | 17 个工具 | 内容管理(模型、条目、本地化内容) |
与 Claude、Cursor、Windsurf 和任何 MCP 兼容的 AI 工具配合使用。你的 AI 助手可以创建键、更新翻译和管理内容,无需离开 IDE。
安全性和访问控制
基础设施
- Cloudflare Workers — 边缘计算,内置 DDoS 防护
- PlanetScale MySQL — 无服务器数据库,自动备份
- Cloudflare R2 — 翻译文件的对象存储
加密
- 静态数据:AES-256 加密
- 传输中数据:所有连接使用 TLS 1.3
认证
- 仪表板:GitHub OAuth(不存储密码)
- API:使用 bcrypt 哈希的 Bearer 令牌认证
- 密钥范围:API 密钥可以限定到特定项目
- 密钥管理:从仪表板即时撤销
访问控制
- 组织和项目级别的基于角色的访问控制(RBAC)
- 所有敏感操作的审计日志
- 所有内部访问的最小权限原则
合规性
| 标准 | 状态 |
|---|---|
| GDPR | 合规——可提供数据处理协议,支持删除权,可按要求导出数据 |
| SOC 2 Type II | 进行中——我们正在努力获取认证 |
透明声明:我们尚未获得 SOC 2 Type II 认证。我们的基础设施提供商(Cloudflare、PlanetScale)持有 SOC 2 Type II 和 ISO 27001 认证。我们保持与这些标准一致的安全实践,并正在寻求自己的认证。详细信息请参阅我们的安全文档。
框架支持
| 框架 | 包 | 亮点 |
|---|---|---|
| Next.js(App Router 和 Pages) | @better-i18n/next | 服务器组件,中间件路由 |
| TanStack Start | @better-i18n/use-intl | SSR,基于文件的路由与 $locale 参数 |
| Vite + React | @better-i18n/use-intl | SPA,客户端语言切换 |
| Expo(React Native) | @better-i18n/expo | 离线缓存,动态本地化,OTA 更新 |
所有框架集成使用相同的翻译键和命名空间,因此你的 Web 和移动应用共享单一事实来源。
多团队翻译管理
命名空间组织
按团队、功能或内容类型组织翻译:
your-org/your-project
├── auth/ → 认证团队
├── dashboard/ → 产品团队
├── marketing/ → 营销团队
├── help/ → 支持团队
└── onboarding/ → 增长团队
每个命名空间可以有独立的翻译进度和审核工作流。
术语表管理
一次性定义品牌术语、产品名称和技术词汇。术语表在所有翻译中确保一致性:
- 批准的术语 — 为每种语言设置产品术语的正确翻译
- 禁止翻译规则 — 标记应保留源语言的品牌名称、技术术语和缩写
- 一致性警告 — 翻译人员使用非批准的替代词时会收到通知
带上下文的 AI 翻译
AI 翻译尊重你的术语表和命名空间上下文。用于:
- 初稿生成 — AI 生成遵循你术语的翻译,然后人工审核人员优化
- 批量翻译 — 在几分钟内将整个命名空间翻译成新语言
- 模型选择 — 根据你的质量偏好选择 GPT-4o、Claude、Gemini 或 DeepL
大型组织的扩展模式
多项目结构
企业组织通常有多个产品。每个产品获得自己的 better-i18n 项目,具有独立的命名空间、术语表和团队访问权限:
your-org/web-app
your-org/mobile-app
your-org/marketing-site
your-org/help-center
Content SDK 和 REST API 使用相同的认证跨所有项目工作。
CI/CD 集成
# .github/workflows/i18n-check.yml
name: Translation Coverage Check
on: [push, pull_request]
jobs:
i18n:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20"
- run: npx @better-i18n/cli scan --ci
- run: npx @better-i18n/cli sync --format json
阻止引入未翻译字符串的 PR。在每次推送时审核翻译覆盖率。
大规模内容管理
Content SDK 支持本地化内容的无头 CMS 模式:
// 获取所有已发布的德语帮助文章
const { data: articles, total } = await client
.from("help-articles")
.eq("status", "published")
.language("de")
.order("updatedAt", { ascending: false })
.limit(50);
// 获取单篇文章,展开作者关系
const { data: article } = await client
.from("help-articles")
.language("de")
.expand("author", "category")
.single("getting-started");
查询构建器是不可变的,完全类型化的,返回带有 total 和 hasMore 元数据的分页结果。
我们尚未提供的(但已在规划中)
我们相信对当前能力保持坦诚:
- SSO/SAML — 尚不可用。认证目前通过 GitHub OAuth。SSO 在我们的路线图上。
- 本地部署 — 我们是一个云托管的 SaaS 平台。目前不提供自托管选项。
- 自定义数据驻留 — 数据通过 Cloudflare 的全球网络处理并存储在 PlanetScale 中。特定区域的托管尚不可用。
- 专用 SLA — 我们目前不提供带有经济处罚的合同正常运行时间 SLA。
如果这些是你组织的阻碍因素,联系我们讨论你的需求和我们的路线图时间表。
开始使用
- 创建你的组织,访问 dash.better-i18n.com
- 设置你的第一个项目并配置语言
- 安装 CLI —
npm install -D @better-i18n/cli - 连接 GitHub — 为你的翻译文件启用同步
- 添加 MCP 服务器 — 让你的 AI 工具访问你的翻译
- 集成 SDK — 在你的应用中使用
@better-i18n/next、@better-i18n/use-intl或@better-i18n/expo
免费开始——无需信用卡。API、CLI、MCP 服务器和所有框架集成在每个计划中都可用。查看我们的文档获取详细的设置指南。