feat(flashcards): révision SM-2, génération IA et page /revision
Some checks failed
CI / Lint, Test & Build (push) Failing after 32s
CI / Deploy production (on server) (push) Has been skipped

Livre US-FLASHCARDS avec decks, session de révision, stats et migration Prisma. Finalise le Web Clipper (i18n 15 langues) et corrige les erreurs ESLint bloquant la CI.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Antigravity
2026-05-24 19:22:20 +00:00
parent 8697ae244f
commit 36336e6b0d
50 changed files with 7687 additions and 98 deletions

View File

@@ -2404,6 +2404,64 @@
"Japonais": "Japanese"
}
},
"flashcards": {
"generateTitle": "Generate flashcards",
"generateAction": "Generate with AI",
"confirmSave": "Save to deck",
"generateFailed": "Could not generate flashcards",
"saveFailed": "Could not save flashcards",
"savedCount": "{count} flashcards saved",
"cardCount": "Number of cards",
"styleLabel": "Card style",
"style": {
"qa": "Q&A",
"cloze": "Cloze",
"concept": "Concept"
},
"previewHint": "Edit cards before saving",
"frontPlaceholder": "Question / front",
"backPlaceholder": "Answer / back",
"toolbarGenerate": "Generate flashcards",
"tabDecks": "Decks",
"tabProgress": "Progress",
"emptyDecks": "No flashcard decks yet",
"emptyDecksHint": "Open a note and use the graduation cap in the toolbar to generate cards with AI.",
"createDeck": "Create deck",
"newDeckPlaceholder": "Thematic deck name…",
"deckCreated": "Deck created",
"dueCount": "{count} due today",
"upToDate": "Up to date",
"cardCountLabel": "{count} cards",
"masteredShort": "mastered",
"viewDeck": "Details",
"review": "Review",
"startReview": "Start review",
"activeDeck": "Active deck",
"statTotal": "Total: {count}",
"statDue": "Due: {count}",
"statMastered": "Mastered: {count}",
"exitSession": "Exit session",
"previous": "Previous",
"next": "Next",
"front": "Front",
"back": "Back",
"tapToFlip": "Space or tap to flip",
"grade": {
"hard": "Hard (1)",
"difficult": "Difficult (2)",
"good": "Good (3)",
"easy": "Easy (4)"
},
"sessionComplete": "Session complete",
"backToDecks": "Back to decks",
"loadDeckFailed": "Could not load deck",
"reviewFailed": "Could not save review",
"heatmapTitle": "Review activity",
"heatmapLast90": "Last 90 days",
"retentionRate": "Retention rate",
"retentionCurve": "Weekly retention",
"difficultCards": "Hardest cards"
},
"brainstorm": {
"title": "Waves of Thought",
"subtitle": "Unfold dimensions of potentiality",

View File

@@ -2408,6 +2408,64 @@
"Japonais": "Japonais"
}
},
"flashcards": {
"generateTitle": "Générer des flashcards",
"generateAction": "Générer avec l'IA",
"confirmSave": "Enregistrer dans le deck",
"generateFailed": "Impossible de générer les flashcards",
"saveFailed": "Impossible d'enregistrer les flashcards",
"savedCount": "{count} flashcards enregistrées",
"cardCount": "Nombre de cartes",
"styleLabel": "Style de cartes",
"style": {
"qa": "Question / réponse",
"cloze": "Texte à trous",
"concept": "Terme / définition"
},
"previewHint": "Modifiez les cartes avant l'enregistrement",
"frontPlaceholder": "Question / recto",
"backPlaceholder": "Réponse / verso",
"toolbarGenerate": "Générer des flashcards",
"tabDecks": "Decks",
"tabProgress": "Progression",
"emptyDecks": "Aucun deck de flashcards",
"emptyDecksHint": "Ouvrez une note et utilisez l'icône casquette dans la barre d'outils pour générer des cartes avec l'IA.",
"createDeck": "Créer un deck",
"newDeckPlaceholder": "Nom du deck thématique…",
"deckCreated": "Deck créé",
"dueCount": "{count} à réviser",
"upToDate": "À jour",
"cardCountLabel": "{count} cartes",
"masteredShort": "maîtrisées",
"viewDeck": "Détails",
"review": "Réviser",
"startReview": "Lancer la révision",
"activeDeck": "Deck actif",
"statTotal": "Total : {count}",
"statDue": "À réviser : {count}",
"statMastered": "Maîtrisées : {count}",
"exitSession": "Quitter la session",
"previous": "Précédent",
"next": "Suivant",
"front": "Recto",
"back": "Verso",
"tapToFlip": "Espace ou clic pour retourner",
"grade": {
"hard": "Difficile (1)",
"difficult": "Dur (2)",
"good": "Bien (3)",
"easy": "Facile (4)"
},
"sessionComplete": "Session terminée",
"backToDecks": "Retour aux decks",
"loadDeckFailed": "Impossible de charger le deck",
"reviewFailed": "Impossible d'enregistrer la révision",
"heatmapTitle": "Activité de révision",
"heatmapLast90": "90 derniers jours",
"retentionRate": "Taux de rétention",
"retentionCurve": "Rétention hebdomadaire",
"difficultCards": "Cartes difficiles"
},
"brainstorm": {
"title": "Vagues de pensée",
"subtitle": "Déployer les dimensions du potentiel",