refactor: remove Anki import/export and simplify card system
- Remove Anki apkg import/export functionality - Remove OCR feature module - Remove note and note-type modules - Simplify card/deck modules (remove spaced repetition complexity) - Update translator and dictionary features - Clean up unused translations and update i18n files - Simplify prisma schema
This commit is contained in:
@@ -53,7 +53,30 @@
|
||||
"totalCards": "Gesamtkarten",
|
||||
"createdAt": "Erstellt am",
|
||||
"actions": "Aktionen",
|
||||
"view": "Anzeigen"
|
||||
"view": "Anzeigen",
|
||||
"subtitle": "Lern-Decks verwalten",
|
||||
"newDeck": "Neues Deck",
|
||||
"noDecksYet": "Noch keine Decks",
|
||||
"loading": "Laden...",
|
||||
"deckInfo": "ID: {id} · {totalCards} Karten",
|
||||
"enterDeckName": "Deck-Name eingeben:",
|
||||
"enterNewName": "Neuen Namen eingeben:",
|
||||
"confirmDelete": "\"{name}\" eingeben zum Löschen:",
|
||||
"public": "Öffentlich",
|
||||
"private": "Privat",
|
||||
"setPublic": "Öffentlich machen",
|
||||
"setPrivate": "Privat machen",
|
||||
"importApkg": "APKG importieren",
|
||||
"exportApkg": "APKG exportieren",
|
||||
"clickToUpload": "Klicken zum Hochladen",
|
||||
"apkgFilesOnly": "Nur .apkg Dateien",
|
||||
"parsing": "Analysieren...",
|
||||
"foundDecks": "{count} Decks gefunden",
|
||||
"back": "Zurück",
|
||||
"import": "Importieren",
|
||||
"importing": "Importieren...",
|
||||
"exportSuccess": "Export erfolgreich",
|
||||
"goToDecks": "Zu Decks"
|
||||
},
|
||||
"folder_id": {
|
||||
"unauthorized": "Sie sind nicht der Besitzer dieses Ordners",
|
||||
@@ -187,8 +210,8 @@
|
||||
},
|
||||
"memorize": {
|
||||
"deck_selector": {
|
||||
"selectDeck": "Deck auswählen",
|
||||
"noDecks": "Keine Decks gefunden",
|
||||
"selectDeck": "Deck wählen",
|
||||
"noDecks": "Keine Decks",
|
||||
"goToDecks": "Zu Decks",
|
||||
"noCards": "Keine Karten",
|
||||
"new": "Neu",
|
||||
@@ -199,44 +222,45 @@
|
||||
"review": {
|
||||
"loading": "Laden...",
|
||||
"backToDecks": "Zurück zu Decks",
|
||||
"allDone": "Fertig!",
|
||||
"allDoneDesc": "Alle fälligen Karten wurden wiederholt.",
|
||||
"allDone": "Alles erledigt!",
|
||||
"allDoneDesc": "Lernen für heute abgeschlossen!",
|
||||
"reviewedCount": "{count} Karten wiederholt",
|
||||
"progress": "{current} / {total}",
|
||||
"nextReview": "Nächste Wiederholung",
|
||||
"interval": "Intervall",
|
||||
"ease": "Leichtigkeit",
|
||||
"lapses": "Verlernungen",
|
||||
"ease": "Schwierigkeit",
|
||||
"lapses": "Fehler",
|
||||
"showAnswer": "Antwort zeigen",
|
||||
"again": "Nochmal",
|
||||
"hard": "Schwer",
|
||||
"good": "Gut",
|
||||
"easy": "Leicht",
|
||||
"now": "jetzt",
|
||||
"lessThanMinute": "<1 Min",
|
||||
"inMinutes": "{count} Min",
|
||||
"inHours": "{count} Std",
|
||||
"inDays": "{count} Tage",
|
||||
"inMonths": "{count} Monate",
|
||||
"minutes": "<1 Min",
|
||||
"days": "{count} Tage",
|
||||
"months": "{count} Monate",
|
||||
"minAbbr": "m",
|
||||
"dayAbbr": "T",
|
||||
"now": "Jetzt",
|
||||
"lessThanMinute": "weniger als 1 Minute",
|
||||
"inMinutes": "in {n} Minute{n, plural, one {} other {n}}",
|
||||
"inHours": "in {n} Stunde{n, plural, one {} other {n}}",
|
||||
"inDays": "in {n} Tag{en}",
|
||||
"inMonths": "in {n} Monat{en}",
|
||||
"minutes": "Minuten",
|
||||
"days": "Tage",
|
||||
"months": "Monate",
|
||||
"minAbbr": "min",
|
||||
"dayAbbr": "d",
|
||||
"cardTypeNew": "Neu",
|
||||
"cardTypeLearning": "Lernen",
|
||||
"cardTypeReview": "Wiederholung",
|
||||
"cardTypeReview": "Wiederholen",
|
||||
"cardTypeRelearning": "Neu lernen",
|
||||
"reverse": "Umkehren",
|
||||
"dictation": "Diktat",
|
||||
"clickToPlay": "Klicken zum Abspielen",
|
||||
"yourAnswer": "Ihre Antwort",
|
||||
"typeWhatYouHear": "Geben Sie ein, was Sie hören",
|
||||
"correct": "Richtig",
|
||||
"incorrect": "Falsch"
|
||||
"typeWhatYouHear": "Schreiben Sie was Sie hören",
|
||||
"correct": "Richtig!",
|
||||
"incorrect": "Falsch",
|
||||
"nextCard": "Nächste"
|
||||
},
|
||||
"page": {
|
||||
"unauthorized": "Sie sind nicht berechtigt, auf dieses Deck zuzugreifen"
|
||||
"unauthorized": "Nicht autorisiert"
|
||||
}
|
||||
},
|
||||
"navbar": {
|
||||
@@ -250,35 +274,49 @@
|
||||
"settings": "Einstellungen"
|
||||
},
|
||||
"ocr": {
|
||||
"title": "OCR Vokabel-Extraktion",
|
||||
"description": "Laden Sie Screenshots von Vokabeltabellen aus Lehrbüchern hoch, um Wort-Definition-Paare zu extrahieren",
|
||||
"title": "OCR-Erkennung",
|
||||
"description": "Text aus Bildern extrahieren",
|
||||
"uploadImage": "Bild hochladen",
|
||||
"dragDropHint": "Ziehen Sie ein Bild hierher oder klicken Sie zum Auswählen",
|
||||
"supportedFormats": "Unterstüt: JPG, PNG, WebP",
|
||||
"selectDeck": "Deck auswählen",
|
||||
"chooseDeck": "Wählen Sie einen Deck zum Speichern der extrahierten Paare",
|
||||
"noDecks": "Keine Decks verfügbar. Bitte create a deck first.",
|
||||
"languageHints": "Sprachhinweise (Optional)",
|
||||
"sourceLanguageHint": "Quellsprache (z.B. Englisch)",
|
||||
"targetLanguageHint": "Ziel-/Übersetzungssprache (z.B. Chinesisch)",
|
||||
"process": "Bild verarbeiten",
|
||||
"processing": "Verarbeitung...",
|
||||
"dragDropHint": "Ziehen und ablegen",
|
||||
"supportedFormats": "Unterstützt: JPG, PNG, WEBP",
|
||||
"selectDeck": "Deck wählen",
|
||||
"chooseDeck": "Deck wählen",
|
||||
"noDecks": "Keine Decks verfügbar",
|
||||
"languageHints": "Sprachhinweise",
|
||||
"sourceLanguageHint": "Quellsprache",
|
||||
"targetLanguageHint": "Zielsprache",
|
||||
"process": "Verarbeiten",
|
||||
"processing": "Verarbeiten...",
|
||||
"preview": "Vorschau",
|
||||
"extractedPairs": "Extrahierte Paare",
|
||||
"word": "Wort",
|
||||
"definition": "Definition",
|
||||
"pairsCount": "{count} Paare extrahiert",
|
||||
"savePairs": "In Deck speichern",
|
||||
"pairsCount": "{count} Paare",
|
||||
"savePairs": "Speichern",
|
||||
"saving": "Speichern...",
|
||||
"saved": "{count} Paare erfolgreich in {deck} gespeichert",
|
||||
"saved": "Gespeichert",
|
||||
"saveFailed": "Speichern fehlgeschlagen",
|
||||
"noImage": "Bitte laden Sie zuerst ein Bild hoch",
|
||||
"noDeck": "Bitte select a deck",
|
||||
"processingFailed": "OCR-Verarbeitung fehlgeschlagen",
|
||||
"tryAgain": "Bitte try again with a clearer image",
|
||||
"detectedLanguages": "Erkannt: {source} → {target}",
|
||||
"invalidFileType": "Ungültiger Dateityp. Bitte laden Sie eine Bilddatei hoch.",
|
||||
"ocrFailed": "OCR-Verarbeitung fehlgeschlagen."
|
||||
"noImage": "Bitte Bild hochladen",
|
||||
"noDeck": "Bitte Deck wählen",
|
||||
"processingFailed": "Verarbeitung fehlgeschlagen",
|
||||
"tryAgain": "Erneut versuchen",
|
||||
"detectedLanguages": "Erkannte Sprachen",
|
||||
"invalidFileType": "Ungültiger Dateityp",
|
||||
"ocrFailed": "OCR fehlgeschlagen",
|
||||
"uploadSection": "Bild hochladen",
|
||||
"dropOrClick": "Ablegen oder klicken",
|
||||
"changeImage": "Bild ändern",
|
||||
"deckSelection": "Deck wählen",
|
||||
"sourceLanguagePlaceholder": "z.B. Englisch",
|
||||
"targetLanguagePlaceholder": "z.B. Deutsch",
|
||||
"processButton": "Erkennung starten",
|
||||
"resultsPreview": "Ergebnisvorschau",
|
||||
"saveButton": "In Deck speichern",
|
||||
"ocrSuccess": "OCR erfolgreich",
|
||||
"savedToDeck": "In Deck gespeichert",
|
||||
"noResultsToSave": "Keine Ergebnisse",
|
||||
"detectedSourceLanguage": "Erkannte Quellsprache",
|
||||
"detectedTargetLanguage": "Erkannte Zielsprache"
|
||||
},
|
||||
"profile": {
|
||||
"myProfile": "Mein Profil",
|
||||
@@ -324,7 +362,7 @@
|
||||
"shortcuts": "Tastenkürzel",
|
||||
"keyboardShortcuts": "Tastaturkürzel",
|
||||
"playPause": "Wiedergabe/Pause",
|
||||
"autoPauseToggle": "Auto-Pause umschalten",
|
||||
"autoPauseToggle": "Auto-Pause",
|
||||
"subtitleSettings": "Untertiteleinstellungen",
|
||||
"fontSize": "Schriftgröße",
|
||||
"textColor": "Textfarbe",
|
||||
@@ -340,7 +378,22 @@
|
||||
"viewSavedItems": "Gespeicherte Einträge anzeigen",
|
||||
"confirmDeleteAll": "Sind Sie sicher, dass Sie alles löschen möchten? (J/N)",
|
||||
"saved": "Gespeichert",
|
||||
"clearAll": "Alles löschen"
|
||||
"clearAll": "Alles löschen",
|
||||
"language": "Sprache",
|
||||
"customLanguage": "oder Sprache eingeben...",
|
||||
"languages": {
|
||||
"auto": "Automatisch",
|
||||
"chinese": "Chinesisch",
|
||||
"english": "Englisch",
|
||||
"japanese": "Japanisch",
|
||||
"korean": "Koreanisch",
|
||||
"french": "Französisch",
|
||||
"german": "Deutsch",
|
||||
"italian": "Italienisch",
|
||||
"spanish": "Spanisch",
|
||||
"portuguese": "Portugiesisch",
|
||||
"russian": "Russisch"
|
||||
}
|
||||
},
|
||||
"translator": {
|
||||
"detectLanguage": "Sprache erkennen",
|
||||
@@ -374,7 +427,19 @@
|
||||
"error": "Fehler beim Hinzufügen des Textpaars zum Ordner"
|
||||
},
|
||||
"autoSave": "Autom. Speichern",
|
||||
"customLanguage": "oder Sprache eingeben..."
|
||||
"customLanguage": "oder Sprache eingeben...",
|
||||
"pleaseLogin": "Bitte anmelden um Karten zu speichern",
|
||||
"pleaseCreateDeck": "Bitte erst zuerst ein Deck",
|
||||
"noTranslationToSave": "Keine Übersetzung zum Speichern",
|
||||
"noDeckSelected": "Kein Deck ausgewählt",
|
||||
"saveAsCard": "Als Karte speichern",
|
||||
"selectDeck": "Deck wählen",
|
||||
"front": "Vorderseite",
|
||||
"back": "Rückseite",
|
||||
"cancel": "Abbrechen",
|
||||
"save": "Speichern",
|
||||
"savedToDeck": "Karte in {deckName} gespeichert",
|
||||
"saveFailed": "Karte speichern fehlgeschlagen"
|
||||
},
|
||||
"dictionary": {
|
||||
"title": "Wörterbuch",
|
||||
@@ -419,7 +484,9 @@
|
||||
"unfavorite": "Aus Favoriten entfernen",
|
||||
"pleaseLogin": "Bitte melden Sie sich zuerst an",
|
||||
"sortByFavorites": "Nach Favoriten sortieren",
|
||||
"sortByFavoritesActive": "Sortierung nach Favoriten aufheben"
|
||||
"sortByFavoritesActive": "Sortierung nach Favoriten aufheben",
|
||||
"noDecks": "Keine öffentlichen Decks",
|
||||
"deckInfo": "{userName} · {totalCards} Karten"
|
||||
},
|
||||
"exploreDetail": {
|
||||
"title": "Ordnerdetails",
|
||||
@@ -433,7 +500,8 @@
|
||||
"unfavorite": "Aus Favoriten entfernen",
|
||||
"favorited": "Favorisiert",
|
||||
"unfavorited": "Aus Favoriten entfernt",
|
||||
"pleaseLogin": "Bitte melden Sie sich zuerst an"
|
||||
"pleaseLogin": "Bitte melden Sie sich zuerst an",
|
||||
"totalCards": "{count} Karten"
|
||||
},
|
||||
"favorites": {
|
||||
"title": "Meine Favoriten",
|
||||
@@ -478,6 +546,16 @@
|
||||
"createdAt": "Erstellt am",
|
||||
"actions": "Aktionen",
|
||||
"view": "Anzeigen"
|
||||
},
|
||||
"joined": "Beigetreten",
|
||||
"decks": {
|
||||
"title": "Meine Decks",
|
||||
"noDecks": "Keine Decks",
|
||||
"deckName": "Deck-Name",
|
||||
"totalCards": "Gesamtkarten",
|
||||
"createdAt": "Erstellt am",
|
||||
"actions": "Aktionen",
|
||||
"view": "Ansehen"
|
||||
}
|
||||
},
|
||||
"follow": {
|
||||
@@ -512,28 +590,47 @@
|
||||
"edit": "Bearbeiten",
|
||||
"delete": "Löschen",
|
||||
"permissionDenied": "Sie haben keine Berechtigung für diese Aktion",
|
||||
"resetProgress": "Zurücksetzen",
|
||||
"resetProgressTitle": "Deck-Fortschritt zurücksetzen",
|
||||
"resetProgressConfirm": "Dies setzt alle Karten in diesem Deck auf den neuen Zustand zurück. Ihr Lernfortschritt geht verloren. Sind Sie sicher?",
|
||||
"resetSuccess": "{count} Karten erfolgreich zurückgesetzt",
|
||||
"resetting": "Wird zurückgesetzt...",
|
||||
"resetProgress": "Fortschritt zurücksetzen",
|
||||
"resetProgressTitle": "Lernfortschritt zurücksetzen",
|
||||
"resetProgressConfirm": "Fortschritt wirklich zurücksetzen?",
|
||||
"resetSuccess": "Fortschritt zurückgesetzt",
|
||||
"resetting": "Zurücksetzen...",
|
||||
"cancel": "Abbrechen",
|
||||
"settings": "Einstellungen",
|
||||
"settingsTitle": "Deck-Einstellungen",
|
||||
"newPerDay": "Neue Karten pro Tag",
|
||||
"newPerDayHint": "Maximale Anzahl neuer Karten pro Tag",
|
||||
"newPerDay": "Neue pro Tag",
|
||||
"newPerDayHint": "Neue Karten pro Tag",
|
||||
"revPerDay": "Wiederholungen pro Tag",
|
||||
"revPerDayHint": "Maximale Anzahl wiederholter Karten pro Tag",
|
||||
"revPerDayHint": "Wiederholungen pro Tag",
|
||||
"save": "Speichern",
|
||||
"saving": "Wird gespeichert...",
|
||||
"saving": "Speichern...",
|
||||
"settingsSaved": "Einstellungen gespeichert",
|
||||
"todayNew": "Neu",
|
||||
"todayReview": "Wiederholung",
|
||||
"todayNew": "Heute neu",
|
||||
"todayReview": "Heute wiederholen",
|
||||
"todayLearning": "Lernen",
|
||||
"error": {
|
||||
"update": "Sie haben keine Berechtigung, diese Karte zu aktualisieren.",
|
||||
"delete": "Sie haben keine Berechtigung, diese Karte zu löschen.",
|
||||
"add": "Sie haben keine Berechtigung, Karten zu diesem Deck hinzuzufügen."
|
||||
}
|
||||
"update": "Keine Berechtigung zum Aktualisieren",
|
||||
"delete": "Keine Berechtigung zum Löschen",
|
||||
"add": "Keine Berechtigung zum Hinzufügen"
|
||||
},
|
||||
"ipaPlaceholder": "IPA eingeben",
|
||||
"examplePlaceholder": "Beispiel eingeben",
|
||||
"wordRequired": "Bitte Wort eingeben",
|
||||
"definitionRequired": "Bitte Definition eingeben",
|
||||
"cardAdded": "Karte hinzugefügt",
|
||||
"cardType": "Kartentyp",
|
||||
"wordCard": "Wortkarte",
|
||||
"phraseCard": "Phrasenkarte",
|
||||
"sentenceCard": "Satzkarte",
|
||||
"sentence": "Satz",
|
||||
"sentencePlaceholder": "Satz eingeben",
|
||||
"wordPlaceholder": "Wort eingeben",
|
||||
"queryLang": "Abfragesprache",
|
||||
"meanings": "Bedeutungen",
|
||||
"addMeaning": "Bedeutung hinzufügen",
|
||||
"partOfSpeech": "Wortart",
|
||||
"deleteConfirm": "Karte wirklich löschen?",
|
||||
"cardDeleted": "Karte gelöscht",
|
||||
"cardUpdated": "Karte aktualisiert"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user