Skip to content

Features

Everything Babelon brings to your internationalization workflow.

AI Translation Engine

Babelon integrates with three leading AI providers -- Anthropic Claude, OpenAI, and Google Translate -- to generate high-quality translations at scale. Instead of sending spreadsheets to translation agencies and waiting days for results, you trigger translation jobs from the dashboard or CLI and receive translations in seconds.

The translation pipeline is designed for reliability. Each job tracks its status through a clear lifecycle: pending, running, done, or failed. Failed jobs are automatically retried up to three times with exponential backoff. When a job completes, Babelon validates the output to ensure placeholders and ICU syntax are preserved -- if validation fails, the job is marked as failed rather than saving broken translations into your project.

You can bring your own API key for any provider, or use the platform's built-in AI. Provider configuration is per-organization, and API keys are encrypted at rest with AES-256-GCM. Switching providers is a settings change -- no migration required.

Web Dashboard

The Babelon web dashboard is a complete translation management interface built with Nuxt 3 and Tailwind CSS. It gives your team a central place to manage messages, review translations, monitor jobs, and configure settings -- no CLI required.

The dashboard includes a side-by-side translation editor where you can see the source text alongside each locale's translation, with inline validation for ICU syntax. The review queue lets you approve or reject AI-generated translations individually or in bulk, with locale filtering so reviewers can focus on one language at a time. The jobs page updates in real time using Supabase Realtime, so you see translation progress as it happens.

Export is flexible: choose from flat JSON, nested JSON, or YAML, filter by status (approved only, pending, or all), and optionally scope to a specific bundle. The dashboard handles everything from initial message creation through final export -- it is the single pane of glass for your localization workflow.

Developer CLI

The Babelon CLI is a fast, Rust-based tool that fits naturally into development workflows and CI/CD pipelines. Seven commands cover the full lifecycle: initialize a project, upload source files, trigger translations, monitor jobs, validate ICU syntax, check project status, and download localized files.

The CLI supports JSON, nested JSON, and YAML input. Nested keys are automatically flattened to dot-notation, and ICU MessageFormat is auto-detected and tagged. For output, the CLI goes further: beyond the standard formats, it can convert ICU to i18next, vue-i18n, or Rails syntax locally, so the database always stores canonical ICU while your codebase gets the format your framework expects.

All API calls use automatic retry with exponential backoff, and the translate command polls until jobs complete, making it safe to use in scripts and automation. Authentication uses API tokens (no browser-based OAuth), so headless environments work without any extra configuration.

Team Collaboration and Security

Babelon is built for teams from the ground up. Every organization has role-based access control with four levels: owner, admin, member, and viewer. Owners and admins manage settings, providers, and team membership. Members create and edit content. Viewers have read-only access for stakeholders who need visibility without write permissions.

All data is isolated between organizations using PostgreSQL Row-Level Security. Every table with user data has a tenant_id column, and RLS policies enforce that queries only return rows belonging to the authenticated user's organization. API tokens are bound to a specific tenant at the database level, preventing any cross-organization access.

Security extends to stored credentials. Translation provider API keys are encrypted with AES-256-GCM before storage, with support for key rotation. API tokens are stored as SHA-256 hashes -- the raw token is shown once during generation and never persisted. Webhook endpoints support HMAC-SHA256 signing for payload verification.

ICU MessageFormat Support

Babelon treats ICU MessageFormat as a first-class citizen. The platform stores, validates, and preserves ICU syntax throughout the entire pipeline -- from upload through AI translation to export. Placeholders like {name}, plurals like {count, plural, one {# item} other {# items}}, gender selects, ordinals, and date/number formats all pass through the system without modification.

The CLI includes a hand-written recursive-descent ICU parser that produces a full AST, supporting nested messages, quoted sequences, and all standard ICU types. Validation happens at upload time, after AI translation, and during manual editing. If an AI-generated translation has malformed ICU (missing placeholders, unbalanced braces, invalid plural keywords), the job fails rather than corrupting your data.

For Google Translate, which does not understand ICU natively, Babelon decomposes placeholders into XML tags before sending the text, then reconstructs them afterward. For LLM-based providers (Claude and OpenAI), the prompt explicitly instructs the model to preserve all ICU constructs, and post-translation validation confirms compliance.

Protected Terms

Protected terms let you define words and phrases that should never be translated -- brand names, product names, acronyms, and domain-specific terminology. Add terms like "Babelon", "OAuth", or "Kubernetes" to your settings, and they will be preserved in every language across every translation method.

Protected terms are embedded into the AI translation prompt, giving the model explicit context about which strings to leave untouched. The web dashboard indicates protected terms in the translation editor, so manual translators see them too. This prevents inconsistencies like having your brand name transliterated differently across languages, or technical acronyms being expanded or translated when they should remain as-is.

Configuration is straightforward: add terms in Settings, and they apply to all future translations. No per-message markup or special syntax required.