better-i18n for Enterprise: Scale Your Localization Infrastructure
When your product ships in multiple languages, localization becomes infrastructure — not a one-time project. You need programmatic access, CI/CD integration, consistent terminology enforcement, and visibility into what's translated, what's pending, and what's missing.
better-i18n is an API-first translation management platform designed for engineering teams. It provides the building blocks — REST API, Content SDK, CLI tools, MCP server, CDN delivery, and GitHub integration — to make localization a seamless part of your development workflow.
What Enterprise Teams Actually Get
API-First Architecture
Every function in better-i18n is available via REST API. Your internal tools, CI pipelines, and custom workflows can interact with the platform programmatically:
Translation Management API (dash.better-i18n.com/api):
| Operation | What It Does |
|---|---|
| listKeys | Query translation keys with search, namespace, and status filters |
| createKeys | Create keys with source text and initial translations |
| updateKeys | Update translations for existing keys across languages |
| deleteKeys | Soft-delete keys that are no longer in use |
| listProjects | List all projects in your organization |
| getProject | Get project details including languages and namespaces |
Content SDK (@better-i18n/sdk):
A Supabase-style query builder for fetching localized content entries:
import { createClient } from "@better-i18n/sdk";
const client = createClient({
project: "your-org/your-project",
apiKey: process.env.BETTER_I18N_CONTENT_API_KEY,
});
// Fetch published blog posts in French
const { data, total, hasMore } = await client
.from("blog-posts")
.eq("status", "published")
.language("fr")
.order("publishedAt", { ascending: false })
.limit(20);
The SDK is zero-dependency, fully typed in TypeScript, and works in any JavaScript runtime.
CDN Delivery
Translations are served from Cloudflare's edge network at:
https://cdn.better-i18n.com/{org}/{project}/{locale}/{namespace}.json
Sub-100ms delivery worldwide. Update translations in the dashboard or via API, and they're live at the CDN without redeploying your application.
GitHub Integration
better-i18n syncs with your repositories:
- Webhook-triggered sync — Push events trigger translation file updates
- Pull request workflow — Translation updates are pushed as PRs you control
- Minimal permissions — Read/write only to configured translation file patterns (e.g.,
locales/**/*.json) - Full merge control — You decide when translations land in your codebase
CLI for Developer Workflow
The @better-i18n/cli integrates into your development process:
# Detect hardcoded strings in your React/Next.js code
npx @better-i18n/cli scan --ci
# Compare local translation keys with your cloud project
npx @better-i18n/cli sync --format json
Add scan to your pre-commit hooks or CI pipeline. Use sync to audit translation coverage before releases.
MCP Server for AI-Assisted Translation
Two MCP servers connect your AI tools directly to your translation workspace:
| Package | Tools | Purpose |
|---|---|---|
| @better-i18n/mcp | 11 tools | Translation management (keys, translations, publishing) |
| @better-i18n/mcp-content | 17 tools | Content management (models, entries, localized content) |
Works with Claude, Cursor, Windsurf, and any MCP-compatible AI tool. Your AI assistant can create keys, update translations, and manage content without leaving the IDE.
Security and Access Control
Infrastructure
- Cloudflare Workers — Edge computing with built-in DDoS protection
- PlanetScale MySQL — Serverless database with automatic backups
- Cloudflare R2 — Object storage for translation files
Encryption
- At rest: AES-256 encryption
- In transit: TLS 1.3 for all connections
Authentication
- Dashboard: GitHub OAuth (no passwords stored)
- API: Bearer token authentication with keys hashed using bcrypt
- Key scoping: API keys can be scoped to specific projects
- Key management: Instant revocation from the dashboard
Access Control
- Role-based access control (RBAC) at organization and project level
- Audit logs for all sensitive operations
- Principle of least privilege for all internal access
Compliance
| Standard | Status |
|---|---|
| GDPR | Compliant — Data processing agreements available, right to erasure supported, data export on request |
| SOC 2 Type II | In progress — we are working toward certification |
Transparency note: We are not yet SOC 2 Type II certified. Our infrastructure providers (Cloudflare, PlanetScale) hold SOC 2 Type II and ISO 27001 certifications. We maintain security practices aligned with these standards and are pursuing our own certification. For detailed information, see our security documentation.
Framework Support
| Framework | Package | Highlights |
|---|---|---|
| Next.js (App Router & Pages) | @better-i18n/next | Server components, middleware routing |
| TanStack Start | @better-i18n/use-intl | SSR, file-based routing with $locale param |
| Vite + React | @better-i18n/use-intl | SPA with client-side locale switching |
| Expo (React Native) | @better-i18n/expo | Offline caching, dynamic localizations, OTA updates |
All framework integrations use the same translation keys and namespaces, so your web and mobile apps share a single source of truth.
Multi-Team Translation Management
Namespace Organization
Organize translations by team, feature, or content type:
your-org/your-project
├── auth/ → Authentication team
├── dashboard/ → Product team
├── marketing/ → Marketing team
├── help/ → Support team
└── onboarding/ → Growth team
Each namespace can have independent translation progress and review workflows.
Glossary Management
Define brand terms, product names, and technical vocabulary once. The glossary enforces consistency across all translations:
- Approved terms — Set the correct translation for your product terminology in each language
- Never-translate rules — Mark brand names, technical terms, and abbreviations that should remain in the source language
- Consistency warnings — Translators see notifications when they use non-approved alternatives
AI Translation with Context
AI translation respects your glossary and namespace context. Use it for:
- First-draft generation — AI produces translations that follow your terminology, then human reviewers refine
- Bulk translation — Translate an entire namespace to a new language in minutes
- Model selection — Choose between GPT-4o, Claude, Gemini, or DeepL based on your quality preferences
Scaling Patterns for Large Organizations
Multi-Project Structure
Enterprise organizations often have multiple products. Each gets its own better-i18n project with independent namespaces, glossaries, and team access:
your-org/web-app
your-org/mobile-app
your-org/marketing-site
your-org/help-center
The Content SDK and REST API work across all projects using the same authentication.
CI/CD Integration
# .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
Block PRs that introduce untranslated strings. Audit translation coverage on every push.
Content Management at Scale
The Content SDK supports headless CMS patterns for localized content:
// Fetch all published help articles in German
const { data: articles, total } = await client
.from("help-articles")
.eq("status", "published")
.language("de")
.order("updatedAt", { ascending: false })
.limit(50);
// Fetch a single article with author relation expanded
const { data: article } = await client
.from("help-articles")
.language("de")
.expand("author", "category")
.single("getting-started");
The query builder is immutable, fully typed, and returns paginated results with total and hasMore metadata.
What We Don't Offer (Yet)
We believe in being upfront about our current capabilities:
- SSO/SAML — Not yet available. Authentication is currently via GitHub OAuth. SSO is on our roadmap.
- On-premises deployment — We are a cloud-hosted SaaS platform. Self-hosted options are not currently available.
- Custom data residency — Data is processed through Cloudflare's global network and stored in PlanetScale. Region-specific hosting is not yet available.
- Dedicated SLA — We don't currently offer contractual uptime SLAs with financial penalties.
If any of these are blockers for your organization, contact us to discuss your requirements and our roadmap timeline.
Getting Started
- Create your organization at dash.better-i18n.com
- Set up your first project and configure languages
- Install the CLI —
npm install -D @better-i18n/cli - Connect GitHub — Enable sync for your translation files
- Add the MCP server — Give your AI tools access to your translations
- Integrate the SDK — Use
@better-i18n/next,@better-i18n/use-intl, or@better-i18n/expoin your application
Get started free — no credit card required. The API, CLI, MCP server, and all framework integrations are available on every plan. View our documentation for detailed setup guides.