fix(ui): design critique overhaul — a11y, honest metrics, i18n repair (critique 2026-08-30)
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 2m51s
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 2m51s
P0 a11y: keyboard-accessible dropzone (role/tabIndex/Enter-Space), ARIA combobox + listbox pattern for language selector, role=switch on glossary toggle, role=status live region on notifications, aria-labels on password toggles, visible-on-focus close buttons, RTL logical positioning (start-*). Trust: third-party Memento promo removed from translate page, sidebar and all 13 locales; fabricated stats (99.9%, Turbo, computed layout-integrity bars) replaced with real measurements incl. API estimated remaining time; silent download failure now surfaces an error notification. Honesty: fake 100-byte file injections removed (format chips are now informational); cancel-that-doesn't renamed 'Back to start' with hint; Enterprise contact placeholder replaced with contact@wordly.art. i18n: t() no longer returns raw keys (empty string + defaultValue support, ~30 dead || fallbacks now work); ~170 new keys EN+FR across new reviews/ teams namespaces, glossaries context tab, translate monitor, settings, services, pricing, landing, fileUploader; split-key italic titles replace lastIndexOf() surgery (zh/ja-safe); key-audit script added 0 missing. Flow: active job persisted across refresh with polling resume (24h TTL); client-side recent-jobs history with review links; review page linked from complete state; settings/services added to dashboard nav; Business/ Enterprise regain glossary access (tier gate unified). Typeset (sober-tool direction): 7.5-9px labels raised to 10-12px, /30 opacity to /45-/55, uppercase tracking reduced, trust footer legible, country flags removed from language switcher, localized dates. Cleanup: 5 orphaned translate components, dead site header/footer, fossil tailwind.config.js, PipelineStepper, duplicate pill+H1 titles, two-step confirm for cache clear, dead landing footer links. Verified: next build exit 0, vitest 9/9, eslint 64 errors = HEAD (no regression, -3 warnings), detector 4 -> 3 findings.
This commit is contained in:
32
frontend/src/lib/i18n/messages/fr/reviews.json
Normal file
32
frontend/src/lib/i18n/messages/fr/reviews.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"reviews.title": "Relecture",
|
||||
"reviews.subtitle": "{file} — {total} segments ({pending} à relire, {approved} approuvés, {edited} modifiés)",
|
||||
"reviews.approveAll": "Tout approuver",
|
||||
"reviews.importXliff": "Importer XLIFF",
|
||||
"reviews.rebuild": "Reconstruire et télécharger",
|
||||
"reviews.col.source": "Source",
|
||||
"reviews.col.target": "Traduction",
|
||||
"reviews.col.status": "Statut",
|
||||
"reviews.status.approved": "Approuvé",
|
||||
"reviews.status.edited": "Modifié",
|
||||
"reviews.status.pending": "À relire",
|
||||
"reviews.save": "Enregistrer",
|
||||
"reviews.cancel": "Annuler",
|
||||
"reviews.emptyCell": "— vide —",
|
||||
"reviews.action.edit": "Modifier la traduction",
|
||||
"reviews.action.approve": "Approuver tel quel",
|
||||
"reviews.action.reset": "Remettre à relire",
|
||||
"reviews.approvedTitle": "Segments approuvés",
|
||||
"reviews.approvedDesc": "{count} segment(s) approuvé(s).",
|
||||
"reviews.rebuiltTitle": "Document reconstruit",
|
||||
"reviews.rebuiltDesc": "{count} segment(s) relu(s) appliqué(s).",
|
||||
"reviews.rebuildFailed": "Reconstruction impossible",
|
||||
"reviews.xliffExportFailed": "Export XLIFF échoué",
|
||||
"reviews.xliffImported": "XLIFF importé",
|
||||
"reviews.xliffImportedDesc": "{count} segment(s) mis à jour.",
|
||||
"reviews.xliffImportFailed": "Import XLIFF échoué",
|
||||
"reviews.error.title": "Erreur",
|
||||
"reviews.error.load": "Erreur de chargement",
|
||||
"reviews.error.update": "Mise à jour impossible",
|
||||
"reviews.error.download": "Téléchargement échoué (HTTP {status})"
|
||||
}
|
||||
Reference in New Issue
Block a user