/* ============================================================================ FORM PARSING AND VALIDATION - pure ---------------------------------------------------------------------------- Actions validate, components render. The action returns error CODES, never sentences, so the same result is correct on /en and /ar and the message catalogue stays the only place a wording lives. Both forms work without JavaScript: they are plain