Appearance
Web Dashboard
The Babelon web dashboard is where you manage messages, review translations, configure settings, and monitor translation jobs. This page walks through each section of the interface.
Dashboard
The landing page after login. It shows:
- Project statistics -- Total messages, translations, and coverage by locale.
- Recent jobs -- The latest AI translation jobs and their statuses.
- 30-day analytics -- Activity trends for messages and translations over the past month.
Messages
The message list is the central hub for your translatable content.
Browsing and searching
The message list supports:
- Text search -- Filter by message key or source text.
- Pagination -- Navigate through large message sets.
- Pending filter -- Show only messages that have pending translations awaiting review.
Creating and editing messages
Click New Message or select an existing message to open the editor. Fields include:
| Field | Required | Description |
|---|---|---|
| Key | Yes | Stable identifier (e.g., checkout.confirm_button). Must start with a letter; allowed characters: a-z, A-Z, 0-9, ., _, -. |
| Source text | Yes | The original string to translate. |
| Source locale | Yes | Language of the source text (e.g., en). |
| Format type | Yes | plain for simple strings, icu for strings with placeholders or plurals. |
| Description | No | Context for translators and AI (e.g., "Button label on checkout page"). |
| Tone | No | Desired tone (e.g., "formal", "casual"). |
| Audience | No | Target audience context (e.g., "enterprise customers"). |
Version history
Every time you change a message's source text, Babelon automatically creates a version entry. The version history panel on the message detail page shows all previous versions with timestamps. Versions are tracked by content hash, so saving the same text twice does not create a duplicate version.
Translation Editor
Navigate to a message and click Translate to open the side-by-side translation editor. You will see one card per target locale.
Each card shows:
- The source text on the left for reference.
- An editable translation field on the right.
- The current status: pending, approved, or rejected.
- Action buttons: AI Translate, Save, Approve, Reject.
ICU support
If a message uses ICU MessageFormat (e.g., {count, plural, one {# item} other {# items}}), the editor validates that placeholders and syntax are preserved in the translation. Invalid ICU in a translation will be flagged.
Protected terms indicator
When your organization has protected terms configured (brand names, acronyms), the editor indicates which terms in the source text are protected. These terms are passed to the AI provider with instructions to keep them untranslated.
Bundles
Bundles let you organize messages into logical groups -- for example, by feature area, screen, or module. They are not tied to file paths; a single message can belong to multiple bundles.
The bundles page displays a card grid. Click a bundle to manage its message membership: add messages, remove them, or view the current set.
Bundles are useful for:
- Exporting subsets of translations (e.g., just the checkout flow).
- Triggering translation jobs for a specific group of messages.
- Organizing messages by team or feature ownership.
Jobs
The jobs page shows all AI translation jobs for your organization with real-time updates.
Status tabs
Filter jobs by status:
| Status | Meaning |
|---|---|
| Pending | Queued, waiting to be processed |
| Running | Currently being translated by the AI provider |
| Done | Translation completed successfully |
| Failed | Translation failed after all retry attempts |
| Cancelled | Manually cancelled by a user |
Real-time updates
The jobs page uses Supabase Realtime to update automatically. When a job starts, finishes, or fails, you will see the change immediately without refreshing the page.
Job actions
- Retry -- Requeue a failed job for another attempt.
- Cancel -- Stop a pending or running job.
- Delete -- Remove a completed, failed, or cancelled job from the list. You must cancel active jobs before deleting them.
Review Queue
The review page shows all translations with pending status, sorted oldest first.
Workflow
- Browse pending translations (25 per page).
- Filter by locale if you are reviewing a specific language.
- For each translation, choose Approve or Reject.
- Use the checkboxes and bulk action buttons to approve or reject multiple translations at once.
When you approve a translation, the status changes to approved and it becomes eligible for export. Rejected translations can be retranslated or manually edited.
Export
The export page lets you download your translations as files.
Options
| Option | Choices |
|---|---|
| Locales | Select one or more target locales, or choose from presets |
| Format | JSON (flat keys), nested JSON, or YAML |
| Status filter | Approved only, pending only, or all |
| Bundle | Optionally restrict to a specific bundle |
Click Export to generate and download the file. The database is always the source of truth -- exported files are generated on demand and can be regenerated at any time.
Settings
The settings page has four sections.
Localization
- Default locale -- The primary language for your source messages.
- Target locales -- The languages you want to translate into. These are used as defaults when triggering translation jobs.
Translation provider
Choose between platform-provided AI or your own API key:
- Platform AI -- Uses the platform's built-in AI provider. No configuration needed.
- Custom provider -- Bring your own API key for Anthropic (Claude), OpenAI, or Google Translate. Your API key is encrypted at rest with AES-256-GCM.
You can also select a specific model (e.g., claude-3-5-sonnet-20241022 or gpt-4o).
Enable Auto-approve AI translations to skip the manual review step. When enabled, AI translations are saved with approved status immediately.
Protected terms
Define terms that should never be translated -- brand names, product names, acronyms, or domain-specific terminology. For example, adding "Babelon" as a protected term ensures it remains untranslated in every language.
Protected terms are sent to AI providers as part of the translation prompt and are enforced during both AI and manual translation.
Webhooks
Configure a webhook URL to receive notifications when translation jobs complete or fail. Optionally add a signing secret for HMAC-SHA256 signature verification.
Events: job.completed, job.failed.
API Access
Generate and manage API tokens for CLI authentication. See API Tokens for details.
Team
Manage your organization's members from the team page.
- Invite members -- Add team members by email (they must have a Babelon account).
- Change roles -- Assign roles to control what each member can do.
- Remove members -- Remove someone from the organization.
See Team Management for details on roles and permissions.