Translation editor
A React block (a whole screen) in Beamline's CMS & media app.
Content in two languages side by side, and the interface strings. Content: the record and the language to translate into, how many fields are translated (one-hue progress); each field's source text beside its translation, edited in the target language's direction (right to left for Arabic), with its state: missing on danger, source changed on warning (what the source said when it was translated shown, with Still right), translated on success; Copy from source per field; saving saves that language only, others untouched. Interface strings: searched by key or text, each language's missing count (warning, or none missing on success), each key with every language's value (missing marked) and how many places use it; a string opens in a sheet with its key (renaming one in use says those places show the bare key until updated; a bad or taken key refused) and a value per language in its direction; delete in the sheet's menu says where it's used.
Use it for
- Translating records field by field beside the source, including right-to-left languages.
- Keeping the interface's reusable strings in every language.
Not for
- Choosing which fields are translatable (schema-fields).
- Machine translation suggestions.
Anatomy
- header: the tool's mark, Translations or Interface strings, the view switch
- content: record, translate into, progress; each field's source and its translation with state, Copy from source, what the source said then; Undo and Save
- strings: search, missing per language, New string; each key with its values and uses; the sheet with key, values, menu, Cancel and Save
States
- field missing, outdated, translated; unsaved changes; saved; refused
- strings filtered, none matching, a key renamed while in use, a bad or taken key, deleting one in use or unused
- nothing to translate, no strings
- phone: one column, source above its translation
- right to left: the translation side follows its language; the screen mirrors in a right-to-left interface
- reduced motion: through the tokens
Keyboard
- Tab through the record and language pickers, each field's Copy and translation, Undo and Save; the strings search, rows and sheet
Motion
The sheet slides in through the tokens; nothing runs at rest.
Props
| Prop | Type | Default | Description |
|---|---|---|---|
records | TRecord[] | — | |
defaultRecords | TRecord[] | — | |
onRecordsChange | ((r: TRecord[]) => void) | — | |
fields (required) | TField[] | — | |
titleField (required) | string | — | The field whose source value names a record. |
languages (required) | TLanguage[] | — | |
source (required) | string | — | The language translated from. |
onSaveTranslation (required) | (req: { recordId: string; language: string; values: Record<string, TValue>; }) => Promi… | — | |
strings | UiString[] | — | |
defaultStrings | UiString[] | — | |
onStringsChange | ((s: UiString[]) => void) | — | |
onSaveString (required) | (req: { oldKey: string | null; string: UiString; }) => Promise<{ ok: true; } | { refuse… | — | |
onDeleteString (required) | (key: string) => Promise<{ ok: true; } | { refused: string; }> | — | |
defaultView | "content" | "strings" | — | |
defaultRecord | string | — | |
defaultTarget | string | — | |
product | string | — | |
className | string | — | Classes on the documented visual root; no override by default. |
style | CSSProperties | — | Inline styles on the documented visual root; no overrides by default. |
ref | Ref<HTMLDivElement> | — | Receives the documented native target or imperative handle; omitted by default. |
Built from
- Alert
- Avatar
- Button
- Dropdown menu
- Input
- Label
- Segmented control
- Select
- Sheet
- Spinner
- Text morph
- Textarea
- Tooltip
Dependencies
lucide-react
Import
import { TranslationEditor } from "@beamline/translation-editor";
Get it
Translation editor is part of Beamline UI. Install the parts you need in your React app as compiled packages or editable source. Get Beamline · Connect your agent
More in CMS & media
- Content workbench: A site's content in one place: collections, the chosen collection's items in a grid where cells are chosen as a range (click, Shift-click), and an…
- Page editing: Editing a live page in place, for someone who may edit but not publish. Edit page outlines each editable piece with its name; a click edits it where it…
- Page inline edit: The website edited in place inside the admin. A page picker with the page's address and Edit in place. The website shown in its own paper and type; with…
- Writing canvas: Writing before structure, for a CMS team. A shared draft with where it sits, who's in it and the section each person is writing in (or that they're only…
- Versioned document: One CMS document edited in its draft or in a release's version. The switcher says what each version holds and where an edit goes; published reads only…
- Document history: A CMS document's history. Revisions as a timeline, newest first, each with what happened, who and when; the ones made inside a release are gathered under…
- Record versions: A published record with its versions. Main (published on success) and each version with how many fields differ from main (on info), who made it from what…
- Document finder: Finding documents in a CMS. Search by words in a title or text field; the filters read as a sentence of chips (type, what a field contains, as many as…
- Content releases: Content releases in a headless CMS: changes to many documents grouped to go live together. A preview bar layers chosen releases over what's live in the…
- Post release: One post on its way out. The preview shows it as the website, a phone, the email and a shared link, from one revision; the email's subject is set apart…
- Social media scheduler: Plan posts across your social accounts: a week calendar where every post sits at its time in its account's colour and moves by drag, a queue of what goes…
- Post performance: How published posts did, with every figure's denominator said. The list keeps each post's website visitors, its email's open and click rates (each "x of…
- Newsletter desk: A publication's newsletters, each its own list with its own subscribers, settings and design. Active and Archived apart; a new one says how many existing…
- Audience segments: A messaging product's audience segments in one place: the directory with members (a count of people, or not known, never 0) kept apart from what uses…
- Publishing team: A social team's settings in three places. Tags: posts with their status (scheduled, draft, sent) and tags in their own series hue, the same hue in the…
- Asset library: A shared media library in a CMS. Folders hold files; collections only point at them, and adding to one says it never moves a file. The grid filters by…
- Media collection: A media collection that fills itself from metadata. Its rules read as one sentence of chips (is, is not, contains, before, after; choices picked from the…
- File detail: One file's details. The image with its focal point (where crops keep the subject), set by clicking the picture and said in words, or none said. Metadata…
- Metadata fields: An account's metadata fields for media. The library lists each field with its type, how many assets fill it and how many projects can use it, with New…
- Collection batch edit: A collection's records filtered and edited together. Saved filters beside nested rules (query-builder, up to three levels) over fields and dotted JSON…
- Schema fields: A collection's fields and their settings. The fields with key, type and flags (required, unique, hidden, translated). An existing field leads with its…
- Policy rules: One access policy's permissions. Admin access (said to skip every rule, on warning) and app access (without it its people can't sign in; rules still…
- Automation steps: An automation's trigger and its steps' options. The outline: what starts it, then each step by its key and kind, with how many unknown paths it holds…
- Automation runs: An automation's runs and running it by hand. The runs: when, how it ended (done on success, failed on danger, running on info), what started it and how…
- Review share: Sharing cuts for review. The page as reviewers will see it leads, large: its title (edited in place), how many items and when it ends, what's allowed…
- Guest review: A guest's review of shared translations, and the invitation that scopes it. The room shows the screen each key appears on with the shared keys numbered…
- Translation workbench: Translating a file segment by segment. Source and target sit side by side, segments grouped by their content unit; the source is read only (it changes by…
- Translation key: A translation key, defined and given context. General: the name (one already in the project refused, or a name per platform), the base text, the…
- Language preview: One document in two languages side by side. The panes scroll together; choosing a passage in either lights it in both and offers Find in editor; a…
- Localization overview: A localization project at a glance. Review progress per language says segments and words approved out of their totals (a word total still being counted…
- Captions: Captions for a video, by speaker and by style. Caption layers are bound to a speaker (or all speakers), each with its own style and place, top or bottom…
- Cut review: Reviewing a film cut. The picture is the still of the clip under the playhead, large, with the checks a reviewer needs folded into three tools above it…
- Shot list: A scene's shot list for a film or video shoot. Shots in order with done, number, description, size, movement, setup and time, and banner rows (a meal, a…
- Call sheet: A shoot day's call sheet. Composed from grids switched on or off: schedule (scenes, start, pages, cast), cast with call times edited in place and a call…
- Screenplay revisions: A screenplay under revision for a production. The script in screenplay form (scene headings, action, character, parenthetical, dialogue, transitions)…
- Transition sequence: An event's sequence of states for one object, as an inspector. The states play in order; each step between two states has its own duration and easing…
- Segment editor: One segment's translation with its checks and help. The source shows its tags and placeholders as numbered chips, and so does a preview of the…
- Rig editor: Rig a character: bones, a rotation constraint and a mesh. Bones are drawn joint by joint on the stage or added from the chosen joint, and can branch from…
- Project board: A team's sprint as a board: the sprint's goal, points done and days left, filters by person and label, the work as cards in columns with work-in-progress…
- Cycle planner: A team's work cycles: the schedule read as one sentence (every two weeks from Monday, no cooldown, three ahead) over a calendar of cycles on a week…
- Component source: Components and their instances in one artboard. Layers chosen together become a component after a review of what goes with them (their timeline keys and…
- Element index: A production's element index: every element (cast, props, wardrobe, vehicles, animals…) grouped by category, each with how many scenes it's in, the shoot…
- Layout inspector: Size and place one object in its parent. Width and height are Fixed (points or percent), Hug (its content; not without children) or Fill (its parent; not…
- Text styles: A text object's runs, styles and modifiers. Each run takes one of the text's own styles (they belong to this text only); hovering or focusing a style…
- Label designer: A label template made against the real label: drawn at true proportions in millimetres with its size beside it; the code says what it holds (a QR links…