Français fr
Source English (en) on the left, translation on the right. Source text is read-only here — editing it belongs in the value editor.
source_hash no longer matches). Re-check it, then save.
RTL — ar and he
The target column flips to right-to-left: label right-aligned, caret starting on
the right, text flowing right. The source column stays LTR because the source text is still
English — mirroring the whole page would misrender it. Driven by dir="rtl"
on the target cell, never a per-locale stylesheet.
States
Nothing translated in Français yet
Type translations row by row, or machine-translate all 250 strings and review them afterwards.
Autofill with AI
Test hooks: [data-frame='08-locale-editor'] · [data-panel='locale-editor'] · [data-progress='fr'] · [data-translation-input='item'] · [data-machine='true'] · [data-machine='false'] · [data-stale='true'] · [data-warning='source-changed'] · [data-missing='true'] · [data-rtl='true'] · [dir='rtl'][data-locale='ar'] · [dir='rtl'][data-locale='he'] · [data-action='save-row'] · [data-action='save-all'] · [data-error='save-failed'] · [data-error='FORBIDDEN'] · [data-state='empty']
Contract: PUT …/translations/{locale} · PUT …/items/{itemId}/translations/{locale}. source_hash mismatch ⇒ Source changed.
Tokens only — no raw hex, spacing or type outside tokens.css / frame.css.