Translation workbench — 375 px, English · עברית · العربية

Frames 2a–2c at a phone width. The locale grid becomes one column, the bilingual editor stacks source above translation instead of side by side, “Save all” moves to a sticky bar, and the autofill confirmation becomes a BottomSheet.

en · ltr · 375 · translation index

en · ltr · 375 · locale editor (fr)

FuzeFront
CR
Translations · Français

Français fr

250 of 250 · M 248 1 changed

CA · source en
Canada
M machine
GB · source en
United Kingdom of Great Britain and Northern Ireland
Source changed — re-check, then save.
MX · source en
Mexico
Autofill missing

he · rtl · 375 · editing ar

FuzeFront
CR
תרגומים · العربية

العربية ar

120 מתוך 250 תורגמו

US · source en
United States
M תרגום מכונה
CA · source en
Canada
human תרגום אנושי — לא יידרס
השלמה אוטומטית

en · ltr · 375 · autofill confirmation

FuzeFront
CR

States at 375 px

Same states as frames 2a–2c; the edit you typed always survives a failed request.

loading

autofill running

Translating 120 of 250…

Determinate progress; both actions disabled until it finishes.

partial failure

212 translated, 38 failed

What was written is kept.

save failed

Couldn't save — your edit is kept and marked unsaved.

403 — read-only

US · source en
United States
Français

Editing translations needs translate. No save bar is shown.

Rules the implementation must keep

Test hooks: [data-frame='16-mobile-translation-workbench'] · [data-device='375'] · [data-panel='translation-index-mobile'] · [data-panel='locale-editor-mobile'] · [data-locale='he'][data-dir='rtl'] · [data-source-dir='ltr'] · [dir='rtl'][data-locale='ar'] · [data-translation-input='item'] · [data-warning='source-changed'] · [data-control='editor-actions'] · [data-action='save-all'] · [data-action='autofill'] · [data-dialog='autofill'][data-presentation='bottom-sheet'] · [data-guarantee='human-preserved'] · [data-state='running'] · [data-error='autofill-partial'] · [data-error='save-failed'] · [data-error='FORBIDDEN'] · [data-rules='mobile-translation-workbench']
Playwright drives the real workbench at { viewport: 375×812, locale: en | he-IL }: no horizontal scroll, the source cell renders above its input, the sticky bar stays inside the viewport while scrolling, and an RTL target input has dir='rtl' while its source has dir='ltr'.
Tokens only — no raw hex, spacing or type outside tokens.css / frame.css / mobile.css.

Review · selection-lists approve or reject each flow ↓
list-managementapproved · izzywdev
translation-workbenchapproved · izzywdev
access-controlapproved · izzywdev
pickerapproved · izzywdev