Bilingual forms require more than translating labels. Direction, native controls, validation, spacing, and focus behaviour all need to remain predictable in both LTR and RTL layouts.
What we changed
- Kept server-side validation as the source of truth.
- Disabled submission until required client-side fields are complete.
- Used direction-aware spacing for select controls.
- Associated errors with their fields and groups.
- Tested invalid and live submissions through the Next.js and WordPress flow.
What we learned
Small inconsistencies become obvious when the same form is viewed in two directions and two themes. A shared component and a repeatable test route are more reliable than one-off CSS fixes.
