[Mineur] Traductions : textes en dur en anglais et pages publiques jamais traduites #160

Closed
opened 2026-10-28 10:32:31 +00:00 by asventi · 0 comments
Owner

Gravité : Mineur
Rapports QA d'origine : FRIENDS-09, PROFILE-14, PROFILE-13, AUTH-21, AUTH-24

Page Messages/amis sans useTranslation, tooltips, calendrier, invitations, erreurs d'auth ; clé events.liveNow absente en tc ; « Messages privée » en FR ; /login, /privacy, /terms et 404 toujours en anglais. Voir aussi #146.

Détails des rapports

[FRIENDS-09] Toute la page Messages privés / amis n'est pas traduite (EN en dur) et "Messages privée" est une faute en FR — Gravité : Cosmétique
  • Où : /messages/*, widget "Friends" de l'accueil, modales AddFriend/Rename/NewConversation, stats d'accueil partiellement traduites.
  • Étapes : 1. Mettre un user en français (PATCH /api/me/language body 0), se connecter en fr-FR. 2. Ouvrir /messages/all.
  • Attendu : libellés en FR (Amis, En ligne, En attente, Bloqués, Ajouter un ami, "Aucun ami pour l'instant"...).
  • Obtenu : tout reste en anglais ("Private Messages", "FRIENDS", "All/Online/Pending/Blocked", "Add friend", "No friends yet", toasts...). L'entrée de la sidebar principale affiche "Messages privée" (accord : "Messages privés").
  • Preuve : screens/friends_22_fr_messages.png, friends_23_fr_home.png.
  • Cause probable : aucun composant de frontend/src/friends/components/*.tsx n'appelle useTranslation (0 occurrence) ; clé sidebar.messages dans frontend/src/translation/fr/translation.js:521.
[PROFILE-14] Textes non traduits (anglais en dur) dans les interfaces FR et ZH — Gravité : Cosmétique
  • Où (constaté en FR et ZH, parcours home/calendar/knowledge/messages/event/channel/admin) :
    • Accueil, panneau Amis : "ONLINE NOW", "RECENT CONVERSATIONS", "No conversation yet", "Make you more friends and see them here later !" (friends/components/FriendsWidgets.tsx:109,141)
    • Page Messages privés (toutes les sous-pages /messages/all|online|pending|blocked) : entièrement en anglais ("Private Messages" en titre de nav = "Messages privée" en FR sidebar mais page en EN, "FRIENDS", "All/Online/Pending/Blocked", "Welcome to your private space", "No friends yet", "Nobody's around", "No pending requests", "No blocked users", "Search conversation", "New conversation", "Back") (friends/components/*)
    • Tooltips : "Settings" (engrenage, Sidebar.tsx:252), "Add friend" / "Remove friend" / "Friend request sent" / "Message" (MembersSidebar.tsx:97-102, ProfileUser.tsx), "Open Tanstack query devtools" (bouton devtools visible dans l'UI)
    • ZH : badge "LIVE NOW" (clé events.liveNow absente de translation/tc/translation.js, présente en/fr)
    • Calendrier : jours "Mon Tue Wed…", "October 2026" et dates des cartes ("Oct 29, 2026, 08:16 PM") restent en anglais dans les 3 langues (format toLocale… sans locale i18n).
    • FR : "Messages privée" (accord : "Messages privés") ; libellé "PARTICIPANTS - 0/5" / "Emoji" / "Assistant" etc. identiques à l'anglais (acceptable).
  • Troncatures FR constatées (Accueil, largeur 1400px) : tuiles "Événements à …", "Mes inscriptio…", "Demandes en …" tronquées ; titre "Fichiers récents" sur 2 lignes avec "Tout voir" coincé.
  • Preuve : screens/profile_tour_fr_home.png, profile_tour_tc_home.png, profile_tour_fr_messages.png.
  • Analyse statique des fichiers de traduction : 413/413/412 clés (seule events.liveNow manque en tc), aucune clé t("…") absente des fichiers ; aucun texte brut auth.xxx affiché dans les parcours.
[PROFILE-13] Pages /privacy, /terms, 404 (et /login, /register après rechargement) toujours en anglais, même si la langue du profil est FR/ZH — Gravité : Mineur
  • Où : /privacy, /terms, /doesnotexist (accès direct ou refresh), vérifié avec un user en langue FR puis ZH
  • Étapes : 1. Mettre le profil en FR (puis ZH). 2. Ouvrir directement http://localhost:5173/privacy (ou /terms, /xyz).
  • Attendu : texte dans la langue du profil.
  • Obtenu : 100 % anglais ("Privacy Policy.", "1. Introduction", "Page not found."…) : la langue du profil n'est appliquée que dans le layout dashboard.tsx ; i18n.init({lng:"en"}) ailleurs. Sur les pages du dashboard, un flash d'anglais précède la bascule au rechargement.
  • Preuve : screens/profile_tour_fr_privacy.png, profile_tour_tc_privacy.png, profile_tour_fr_notfound.png
  • Cause probable : frontend/src/translation/i18n.ts:21 (lng: "en", pas de détecteur ni de langue persistée en localStorage) ; routes/dashboard.tsx:56-60. Aucune détection de langue du navigateur au premier login (testé avec locale fr-FR : interface en anglais, user.language = English par défaut).
[AUTH-21] Les erreurs d'inscription/login ne sont pas traduites et le login masque toute erreur serveur derrière "Invalid login or password." — Gravité : Cosmétique
  • Où : /register, /login
  • Obtenu : les messages affichés à l'inscription sont le detail brut du backend en anglais ("You need a valid invitation with enough remaining uses to register.", "'x' is already used by an other user.") alors que la clé auth.invalidInvitation existe dans les traductions mais n'est jamais utilisée. Au login, login.tsx:15-16 affiche "Invalid login or password." pour TOUT échec (y compris un 500 comme AUTH-01 ou une coupure réseau). Les pages publiques sont toujours en anglais (i18n.ts lng: "en", pas de détection de la langue du navigateur : testé avec locale=fr-FR, page restée en anglais).
  • Cause probable : frontend/src/auth/api/auth.ts:55,74, frontend/src/auth/routes/login.tsx:15-16.
[AUTH-24] Textes de la liste d'invitations non traduits ("Never", "Infinite") et description du modal inexacte — Gravité : Cosmétique
  • Où : /admin/users, modal "Create An Invitation"
  • Obtenu : colonnes "Never"/"Infinite" en dur (InvitationList.tsx:34-41) ; le sous-titre du modal promet "The link will be automatically deleted if it expires or reaches all of its usages", or une invitation consommée reste listée avec 0 (AUTH-08). Le champ datetime-local coupe "PM" ("08:34 PI") à 1400 px de large (screenshot auth_22_invite_created.png).

Trouvé par une campagne de tests QA automatisés (agents Claude, Playwright) sur l'environnement de dev. Les captures citées sont locales et non jointes.

**Gravité :** Mineur **Rapports QA d'origine :** FRIENDS-09, PROFILE-14, PROFILE-13, AUTH-21, AUTH-24 Page Messages/amis sans `useTranslation`, tooltips, calendrier, invitations, erreurs d'auth ; clé `events.liveNow` absente en `tc` ; « Messages privée » en FR ; /login, /privacy, /terms et 404 toujours en anglais. Voir aussi #146. ## Détails des rapports <details><summary>[FRIENDS-09] Toute la page Messages privés / amis n'est pas traduite (EN en dur) et "Messages privée" est une faute en FR — Gravité : Cosmétique</summary> - Où : `/messages/*`, widget "Friends" de l'accueil, modales AddFriend/Rename/NewConversation, stats d'accueil partiellement traduites. - Étapes : 1. Mettre un user en français (`PATCH /api/me/language` body `0`), se connecter en `fr-FR`. 2. Ouvrir `/messages/all`. - Attendu : libellés en FR (Amis, En ligne, En attente, Bloqués, Ajouter un ami, "Aucun ami pour l'instant"...). - Obtenu : tout reste en anglais ("Private Messages", "FRIENDS", "All/Online/Pending/Blocked", "Add friend", "No friends yet", toasts...). L'entrée de la sidebar principale affiche "Messages privée" (accord : "Messages privés"). - Preuve : `screens/friends_22_fr_messages.png`, `friends_23_fr_home.png`. - Cause probable : aucun composant de `frontend/src/friends/components/*.tsx` n'appelle `useTranslation` (0 occurrence) ; clé `sidebar.messages` dans `frontend/src/translation/fr/translation.js:521`. </details> <details><summary>[PROFILE-14] Textes non traduits (anglais en dur) dans les interfaces FR et ZH — Gravité : Cosmétique</summary> - Où (constaté en FR et ZH, parcours home/calendar/knowledge/messages/event/channel/admin) : - Accueil, panneau Amis : "ONLINE NOW", "RECENT CONVERSATIONS", "No conversation yet", "Make you more friends and see them here later !" (`friends/components/FriendsWidgets.tsx:109,141`) - Page Messages privés (toutes les sous-pages /messages/all|online|pending|blocked) : entièrement en anglais ("Private Messages" en titre de nav = "Messages privée" en FR sidebar mais page en EN, "FRIENDS", "All/Online/Pending/Blocked", "Welcome to your private space", "No friends yet", "Nobody's around", "No pending requests", "No blocked users", "Search conversation", "New conversation", "Back") (`friends/components/*`) - Tooltips : "Settings" (engrenage, `Sidebar.tsx:252`), "Add friend" / "Remove friend" / "Friend request sent" / "Message" (`MembersSidebar.tsx:97-102`, `ProfileUser.tsx`), "Open Tanstack query devtools" (bouton devtools visible dans l'UI) - ZH : badge "LIVE NOW" (clé `events.liveNow` absente de `translation/tc/translation.js`, présente en/fr) - Calendrier : jours "Mon Tue Wed…", "October 2026" et dates des cartes ("Oct 29, 2026, 08:16 PM") restent en anglais dans les 3 langues (format `toLocale…` sans locale i18n). - FR : "Messages privée" (accord : "Messages privés") ; libellé "PARTICIPANTS - 0/5" / "Emoji" / "Assistant" etc. identiques à l'anglais (acceptable). - Troncatures FR constatées (Accueil, largeur 1400px) : tuiles "Événements à …", "Mes inscriptio…", "Demandes en …" tronquées ; titre "Fichiers récents" sur 2 lignes avec "Tout voir" coincé. - Preuve : `screens/profile_tour_fr_home.png`, `profile_tour_tc_home.png`, `profile_tour_fr_messages.png`. - Analyse statique des fichiers de traduction : 413/413/412 clés (seule `events.liveNow` manque en tc), aucune clé `t("…")` absente des fichiers ; aucun texte brut `auth.xxx` affiché dans les parcours. </details> <details><summary>[PROFILE-13] Pages /privacy, /terms, 404 (et /login, /register après rechargement) toujours en anglais, même si la langue du profil est FR/ZH — Gravité : Mineur</summary> - Où : `/privacy`, `/terms`, `/doesnotexist` (accès direct ou refresh), vérifié avec un user en langue FR puis ZH - Étapes : 1. Mettre le profil en FR (puis ZH). 2. Ouvrir directement `http://localhost:5173/privacy` (ou /terms, /xyz). - Attendu : texte dans la langue du profil. - Obtenu : 100 % anglais ("Privacy Policy.", "1. Introduction", "Page not found."…) : la langue du profil n'est appliquée que dans le layout `dashboard.tsx` ; `i18n.init({lng:"en"})` ailleurs. Sur les pages du dashboard, un flash d'anglais précède la bascule au rechargement. - Preuve : `screens/profile_tour_fr_privacy.png`, `profile_tour_tc_privacy.png`, `profile_tour_fr_notfound.png` - Cause probable : `frontend/src/translation/i18n.ts:21` (`lng: "en"`, pas de détecteur ni de langue persistée en localStorage) ; `routes/dashboard.tsx:56-60`. Aucune détection de langue du navigateur au premier login (testé avec locale fr-FR : interface en anglais, `user.language` = English par défaut). </details> <details><summary>[AUTH-21] Les erreurs d'inscription/login ne sont pas traduites et le login masque toute erreur serveur derrière "Invalid login or password." — Gravité : Cosmétique</summary> - Où : `/register`, `/login` - Obtenu : les messages affichés à l'inscription sont le `detail` brut du backend en anglais ("You need a valid invitation with enough remaining uses to register.", "'x' is already used by an other user.") alors que la clé `auth.invalidInvitation` existe dans les traductions mais n'est jamais utilisée. Au login, `login.tsx:15-16` affiche "Invalid login or password." pour TOUT échec (y compris un 500 comme AUTH-01 ou une coupure réseau). Les pages publiques sont toujours en anglais (`i18n.ts` `lng: "en"`, pas de détection de la langue du navigateur : testé avec `locale=fr-FR`, page restée en anglais). - Cause probable : `frontend/src/auth/api/auth.ts:55,74`, `frontend/src/auth/routes/login.tsx:15-16`. </details> <details><summary>[AUTH-24] Textes de la liste d'invitations non traduits ("Never", "Infinite") et description du modal inexacte — Gravité : Cosmétique</summary> - Où : `/admin/users`, modal "Create An Invitation" - Obtenu : colonnes "Never"/"Infinite" en dur (`InvitationList.tsx:34-41`) ; le sous-titre du modal promet "The link will be automatically deleted if it expires or reaches all of its usages", or une invitation consommée reste listée avec `0` (AUTH-08). Le champ `datetime-local` coupe "PM" ("08:34 PI") à 1400 px de large (screenshot `auth_22_invite_created.png`). </details> --- _Trouvé par une campagne de tests QA automatisés (agents Claude, Playwright) sur l'environnement de dev. Les captures citées sont locales et non jointes._
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Transcendence/frontend#160
No description provided.