Integrations: Connect better-i18n to Your Development Stack
Integrations: Connect better-i18n to Your Development Stack
better-i18n is built API-first. Every feature is accessible programmatically, and the platform integrates directly with the tools developers use daily: GitHub for code, AI assistants for productivity, CI/CD for automation, and framework SDKs for runtime.
GitHub
Bidirectional sync between your repository and better-i18n:
- Inbound sync — Push events trigger automatic translation file import via webhooks
- Outbound sync — Published translations ship as pull requests to your repository
- File patterns — Configure which paths are synced (e.g.,
locales/**/*.json) - Minimal permissions — Read/write only to translation files, webhooks for push events
GitHub integration keeps your cloud project and repository in sync without manual intervention. You maintain full merge control over translation PRs.
Learn more about GitHub integration →
AI Assistants (MCP)
Two MCP servers connect 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 |
Supported AI Tools
| Tool | Connection Method |
|---|---|
| Claude (claude.ai) | Remote MCP URL: https://mcp.better-i18n.com/mcp |
| ChatGPT | Remote MCP URL: https://mcp.better-i18n.com/mcp |
| Gemini | Remote MCP URL: https://mcp.better-i18n.com/mcp |
| Cursor | Local: npx @better-i18n/mcp |
| Claude Code | Local: npx @better-i18n/mcp |
| Windsurf | Local: npx @better-i18n/mcp |
| Zed | Local: npx @better-i18n/mcp |
Your AI assistant can create keys, translate content, manage glossaries, preview pending changes, and publish — all through natural language.
Learn more about MCP integration →
CLI
The @better-i18n/cli integrates into your development workflow:
Scan: Detect Hardcoded Strings
npx @better-i18n/cli scan --ci
Finds untranslated text in React/Next.js code. Supports useTranslations(), getTranslations(), JSX text, and attributes.
Sync: Compare Local vs Cloud
npx @better-i18n/cli sync --format json
Shows which keys exist in code but not in the cloud (missing), and which cloud keys aren't used in code (unused).
CI/CD Integration
# GitHub Actions
- run: npx @better-i18n/cli scan --ci # Block PRs with hardcoded strings
- run: npx @better-i18n/cli sync --format json # Audit translation coverage
# Pre-commit hook
npx husky init
echo "npx @better-i18n/cli scan --staged --ci" > .husky/pre-commit
REST API
Full programmatic access to all translation management operations:
Base URL: https://dash.better-i18n.com/api
Auth: Authorization: Bearer your-api-key
| Endpoint | Description |
|---|---|
listProjects | List all projects in your organization |
getProject | Get project details, languages, namespaces |
listKeys | Query keys with search, namespace, status filters |
createKeys | Create keys with source text and translations |
updateKeys | Update translations for existing keys |
deleteKeys | Soft-delete unused keys |
addLanguage | Add target languages to a project |
API keys are created in the dashboard, scoped to specific projects, and revocable instantly.
Learn more about the REST API →
Content SDK
A Supabase-style query builder for fetching localized content:
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 } = await client
.from("blog-posts")
.eq("status", "published")
.language("fr")
.order("publishedAt", { ascending: false })
.limit(20);
Zero dependencies, fully typed in TypeScript, works in any JavaScript runtime.
Learn more about the Content SDK →
Framework SDKs
| Framework | Package | Runtime |
|---|---|---|
| Next.js (App Router & Pages) | @better-i18n/next | Server + Client |
| TanStack Start | @better-i18n/use-intl | SSR + Client |
| Vite + React | @better-i18n/use-intl | Client |
| Expo (React Native) | @better-i18n/expo | Client + Offline |
All SDKs use the same CDN endpoint and namespace structure. Your web and mobile apps share a single source of truth for translations.
CDN
Translations are served from Cloudflare's edge network:
https://cdn.better-i18n.com/{org}/{project}/{locale}/{namespace}.json
- Sub-100ms delivery worldwide (300+ edge locations)
- Updates propagate within seconds of publishing
- No app redeployment needed for translation changes
- Manifest endpoint for language discovery
Learn more about CDN delivery →
Custom Integrations
The REST API and Content SDK enable custom integrations with any system:
- Internal tools — Build translation management into your admin panels
- Automated workflows — Trigger translations from your event pipeline
- Custom dashboards — Pull translation metrics into your analytics
- Content pipelines — Integrate localized content into your CMS
Every operation available in the dashboard is also available via API. If you can make an HTTP request, you can integrate with better-i18n.
Getting Started
- GitHub — Connect your repository in project settings
- MCP — Add
npx @better-i18n/mcpto your AI tool's configuration - CLI —
npm install -D @better-i18n/cli - API — Generate an API key at dash.better-i18n.com/settings/api-keys
All integrations are available on every plan, including the free tier.