Next notify slice: @mail and @email player feedback.
mail.cpp: convert constant raw_notify T("…") to M_ (~98 sites). The
static mailmsg[] invalid-spec table uses N_() for extraction and
mail_msg() for runtime gettext so the table does not need a refresh
pass. Leave tprintf formats, DASH_LINE/MAIL_LINE decoration, and logs
as T().
plusemail.cpp: four constant @email denials → M_().
Half-mark pass clean. Regenerate pot/xx without fuzzy entries.
Replace ~900 typographic \xE2\x80\x.. escapes (curly quotes, en dashes)
and a few \xE2\x80\230 octal workarounds with real UTF-8 in message
strings under mux/modules and mux/src. Leave stringutil and convert
charset mapping tables as explicit byte sequences.
Third wave: convert manual alloc/free pairs in walkdb (3), htab (3),
dbt_spike (1), plusemail (2), mguests (2), file_c (2), powers (1),
jit_compiler (2). Completes all convertible sites in the small and
medium engine source files.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>