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:
2026-03-17 20:24:42 +08:00
parent 95ce49378b
commit de7c1321c2
77 changed files with 2767 additions and 8107 deletions

View File

@@ -53,7 +53,30 @@
"totalCards": "جەمئىي كارتا",
"createdAt": "قۇرۇلغان ۋاقتى",
"actions": "مەشغۇلاتلار",
"view": "كۆرۈش"
"view": "كۆرۈش",
"subtitle": "دېكلەرنى باشقۇرۇڭ",
"newDeck": "يېڭى دېك",
"noDecksYet": "دېك يوق",
"loading": "يۈكلىنىۋاتىدۇ...",
"deckInfo": "ID: {id} · {totalCards} كارتا",
"enterDeckName": "دېك ئاتى:",
"enterNewName": "يېڭى ئات:",
"confirmDelete": "ئۆچۈرۈش: \"{name}\"",
"public": "ئاممىۋىي",
"private": "شەخسىي",
"setPublic": "ئاممىۋىي قىلىش",
"setPrivate": "شەخسىي قىلىش",
"importApkg": "APKG ئەكىرىش",
"exportApkg": "APKG چىقىرىش",
"clickToUpload": "چېكىپ يۈكلەش",
"apkgFilesOnly": ".apkg ھۆججىتىلا",
"parsing": "تەھلىل قىلىنىۋاتىدۇ...",
"foundDecks": "{count} دېك تېپىلدى",
"back": "قايتىش",
"import": "ئەكىرىش",
"importing": "ئەكىرىلىۋاتىدۇ...",
"exportSuccess": "چىقىرىش مۇۋەپپەقىيەتلىك",
"goToDecks": "دېكلەرگە بېرىش"
},
"folder_id": {
"unauthorized": "بۇ قىسقۇچنىڭ ئىگىسى ئەمەسسىز",
@@ -106,29 +129,48 @@
"edit": "تەھرىرلەش",
"delete": "ئۆچۈرۈش",
"permissionDenied": "بۇ مەشغۇلاتنى ئېلىپ بېرىش ھوقۇقىڭىز يوق",
"resetProgress": "قايتا تەڭشەش",
"resetProgressTitle": "دېك ئىلگىرىلەش قايتا تەڭشەش",
"resetProgressConfirm": "بۇ دېكتىكى بارلىق كارتىلار يېڭى ھالەتكە قايتا تەڭشىلىدۇ. ئۆگىنىش ئىلگىرىلەشلىرىڭىز يوقىلىدۇ. داۋاملاشتۇرامسىز؟",
"resetSuccess": "{count} كارتا مۇۋەپپەقىيەتلىك قايتا تەڭشەلدى",
"resetting": "قايتا تەڭشەۋاتىدۇ...",
"resetProgress": "ئىلگىرىلەشنى ئەسلىگە قايتۇرۇش",
"resetProgressTitle": "ئۆگىنىش ئىلگىرىلەشىنى ئەسلىگە قايتۇرۇش",
"resetProgressConfirm": "ئىلگىرىلەشنى ئەسلىگە قايتۇرامسىز؟",
"resetSuccess": "ئەسلىگە قايتۇرۇلدى",
"resetting": "ئەسلىگە قايتۇرۇۋاتىدۇ...",
"cancel": "بىكار قىلىش",
"settings": "تەڭشەكلەر",
"settingsTitle": "دېك تەڭشەكلىرى",
"newPerDay": "كۈندىلىك يېڭى كارتا سانى",
"newPerDayHint": "ھەر كۈنى ئۆگىنىدىغان ئەڭ كۆپ يېڭى كارتا سانى",
"revPerDay": "كۈندىلىك تەكرار سانى",
"revPerDayHint": "ھەر كۈنى تەكرارلايدىغان ئەڭ كۆپ كارتا سانى",
"newPerDay": "كۈندىلىك يېڭى",
"newPerDayHint": "كۈندە يېڭى كارتا سانى",
"revPerDay": "كۈندىلىك تەكرار",
"revPerDayHint": "كۈندە تەكرار سانى",
"save": "ساقلاش",
"saving": "ساقلىنىۋاتىدۇ...",
"saving": "ساقلاۋاتىدۇ...",
"settingsSaved": "تەڭشەكلەر ساقلاندى",
"todayNew": "يېڭى",
"todayReview": "تەكرار",
"todayNew": "بۈگۈنكى يېڭى",
"todayReview": "بۈگۈنكى تەكرار",
"todayLearning": "ئۆگىنىۋاتىدۇ",
"error": {
"update": "بۇ كارتىنى يېڭىلاش ھوقۇقىڭىز يوق.",
"delete": "بۇ كارتىنى ئۆچۈرۈش ھوقۇقىڭىز يوق.",
"add": "بۇ دېككە كارتا قوشۇش ھوقۇقىڭىز يوق."
}
"update": "يېڭىلاش ھوقۇقى يوق",
"delete": "ئۆچۈرۈش ھوقۇقى يوق",
"add": "قوشۇش ھوقۇقى يوق"
},
"ipaPlaceholder": "IPA كىرگۈزۈڭ",
"examplePlaceholder": "مىسال كىرگۈزۈڭ",
"wordRequired": "سۆز كىرگۈزۈڭ",
"definitionRequired": "ئېنىقلىما كىرگۈزۈڭ",
"cardAdded": "كارتا قوشۇلدى",
"cardType": "كارتا تىپى",
"wordCard": "سۆز كارتىسى",
"phraseCard": "جۈملە كارتىسى",
"sentenceCard": "جۈملە كارتىسى",
"sentence": "جۈملە",
"sentencePlaceholder": "جۈملە كىرگۈزۈڭ",
"wordPlaceholder": "سۆز كىرگۈزۈڭ",
"queryLang": "سۈرۈشتۈرۈش تىلى",
"meanings": "مەنىلىرى",
"addMeaning": "مەنا قوشۇش",
"partOfSpeech": "سۆز بۆلىكى",
"deleteConfirm": "بۇ كارتىنى ئۆچۈرەمسىز؟",
"cardDeleted": "كارتا ئۆچۈرۈلدى",
"cardUpdated": "كارتا يېڭىلاندى"
},
"home": {
"title": "تىل ئۆگىنىش",
@@ -234,56 +276,57 @@
},
"memorize": {
"deck_selector": {
"selectDeck": "بىر دېك تاللاڭ",
"noDecks": "دېك تېپىلمىدى",
"goToDecks": "دېكلارغا بېرىڭ",
"selectDeck": "دېك تاللاش",
"noDecks": "دېك يوق",
"goToDecks": "دېكلەرگە بار",
"noCards": "كارتا يوق",
"new": "يېڭى",
"learning": "ئۆگىنىۋاتىدۇ",
"learning": "ئۆگىنىش",
"review": "تەكرار",
"due": "ۋاقتى كەلدى"
},
"review": {
"loading": "يۈكلىنىۋاتىدۇ...",
"backToDecks": "دېكلارغا قايتىڭ",
"allDone": "تامام!",
"allDoneDesc": ارلىق تەكرارلاش كارتلىرى تاماملاندى.",
"backToDecks": "دېكلەرگە قايتىش",
"allDone": "ھەممىسى تامام!",
"allDoneDesc": ۈگۈنكى ئۆگىنىش تامام!",
"reviewedCount": "{count} كارتا تەكرارلاندى",
"progress": "{current} / {total}",
"nextReview": "كېيىنكى تەكرار",
"interval": "ئارىلىق",
"ease": "ئاسانلىق",
"lapses": "ئۇنتۇش سانى",
"ease": "قىيىنلىق",
"lapses": "خاتالىق",
"showAnswer": "جاۋابنى كۆرسەت",
"again": "يەنە",
"hard": "قىيىن",
"good": "ياخشى",
"easy": "ئاسان",
"now": "ھازىر",
"lessThanMinute": "<1 مىنۇت",
"inMinutes": "{count} مىنۇت",
"inHours": "{count} سائەت",
"inDays": "{count} كۈن",
"inMonths": "{count} ئاي",
"minutes": "<1 مىنۇت",
"days": "{count} كۈن",
"months": "{count} ئاي",
"minAbbr": "م",
"dayAbbr": "ك",
"lessThanMinute": "1 مىنۇتتىن ئاز",
"inMinutes": "{n} مىنۇتتىن كېيىن",
"inHours": "{n} سائەتتىن كېيىن",
"inDays": "{n} كۈندىن كېيىن",
"inMonths": "{n} ئايدىن كېيىن",
"minutes": "مىنۇت",
"days": "كۈن",
"months": "ئاي",
"minAbbr": ىن",
"dayAbbr": ۈن",
"cardTypeNew": "يېڭى",
"cardTypeLearning": "ئۆگىنىۋاتىدۇ",
"cardTypeReview": "تەكرارلاش",
"cardTypeLearning": "ئۆگىنىش",
"cardTypeReview": "تەكرار",
"cardTypeRelearning": "قايتا ئۆگىنىش",
"reverse": "ئەكسى",
"dictation": "ئاڭلاپ يېزىش",
"reverse": "ئەكسىچە",
"dictation": ىملا",
"clickToPlay": "چېكىپ قويۇش",
"yourAnswer": "سىزنىڭ جاۋابىڭىز",
"typeWhatYouHear": "ئاڭلىغىنىڭىزنى كىرگۈزۈڭ",
"correct": "توغرا",
"incorrect": "خاتا"
"yourAnswer": "جاۋابىڭىز",
"typeWhatYouHear": "ئاڭلىغىنىڭىزنى يېزىڭ",
"correct": "توغرا!",
"incorrect": "خاتا",
"nextCard": "كېيىنكى"
},
"page": {
"unauthorized": "بۇ دېكنى زىيارەت قىلىش ھوقۇقىڭىز يوق"
"unauthorized": "ھوقۇقسىز"
}
},
"navbar": {
@@ -297,33 +340,49 @@
"settings": "تەڭشەكلەر"
},
"ocr": {
"title": "OCR سۆز ئاستىرىش",
"description": "دەرىسلىك كىتابىدىكى سۆز جەدۋىلى سۈرەتلىرىنى يۈكلەپ سۆز-مەنا جۈپلىرىنى ئاستىرىڭ",
"uploadImage": "سۈرەت يۈكلەش",
"dragDropHint": ۈرەتنى بۇ يەرگە سۆرەڭ ياكى چېكىپ تاللاڭ",
"supportedFormats": "قوللايدىغان فورماتلار: JPG، PNG، WebP",
"title": "OCR تونۇش",
"description": "رەسىمدىن تېكىست ئېلىش",
"uploadImage": "رەسىم يۈكلەش",
"dragDropHint": ۆرەپ تاشلاش",
"supportedFormats": "قوللايدىغان فورمات: JPG, PNG, WEBP",
"selectDeck": "دېك تاللاش",
"chooseDeck": "ئاستىرىلغان جۈپلەرنى ساقلاش ئۈچۈن دېك تاللاڭ",
"noDecks": "دېك يوق. ئاۋۋال دېك قۇرۇڭ.",
"languageHints": "تىل ئۇچۇرلىرى (ئىختىيارىي)",
"sourceLanguageHint": "مەنبە تىلى (مىسال: ئىنگىلىزچە)",
"targetLanguageHint": "نىشان/تەرجىمە تىلى (مىسال: خەنزۇچە)",
"process": "سۈرەتنى بىر تەرەپ قىلىش",
"processing": "بىر تەرەپ قىلىۋاتىدۇ...",
"chooseDeck": "دېك تاللاڭ",
"noDecks": "دېك يوق",
"languageHints": "تىل بېشارىتى",
"sourceLanguageHint": "مەنبە تىلى",
"targetLanguageHint": "نىشان تىلى",
"process": "بىر تەرەپ قىلىش",
"processing": "بىر تەرەپ قىلىنىۋاتىدۇ...",
"preview": "ئالدىن كۆرۈش",
"extractedPairs": استىرىلغان جۈپلەر",
"extractedPairs": ېلىنغان جۈپلەر",
"word": "سۆز",
"definition": ەنا",
"pairsCount": "{count} جۈپ ئاستىرىلدى",
"savePairs": "دېككە ساقلاش",
"definition": "ئېنىقلىما",
"pairsCount": "{count} جۈپ",
"savePairs": "ساقلاش",
"saving": "ساقلاۋاتىدۇ...",
"saved": "{deck} غا {count} جۈپ ساقلاندى",
"saved": "ساقلاندى",
"saveFailed": "ساقلاش مەغلۇپ بولدى",
"noImage": "ئاۋۋال سۈرەت يۈكلەڭ",
"noImage": "رەسىم يۈكلەڭ",
"noDeck": "دېك تاللاڭ",
"processingFailed": "OCR بىر تەرەپ قىلىش مەغلۇپ بولدى",
"tryAgain": "تېخىمۇ ئېنىق سۈرەت بىلەن قايتا سىناڭ",
"detectedLanguages": "بايقالدى: {source} → {target}"
"processingFailed": "بىر تەرەپ قىلىش مەغلۇپ بولدى",
"tryAgain": "قايتا سىناڭ",
"detectedLanguages": "تونۇلغان تىللار",
"uploadSection": "رەسىم يۈكلەش",
"dropOrClick": "تاشلاش ياكى چېكىش",
"changeImage": "رەسىم ئالماشتۇرۇش",
"invalidFileType": "ئىناۋەتسىز فايىل تىپى",
"deckSelection": "دېك تاللاش",
"sourceLanguagePlaceholder": "مەسىلەن: ئىنگلىزچە",
"targetLanguagePlaceholder": "مەسىلەن: ئۇيغۇرچە",
"processButton": "تونۇشنى باشلاش",
"resultsPreview": "نەتىجە ئالدىن كۆرۈش",
"saveButton": "دېككە ساقلاش",
"ocrSuccess": "OCR مۇۋەپپەقىيەتلىك",
"ocrFailed": "OCR مەغلۇپ بولدى",
"savedToDeck": "دېككە ساقلاندى",
"noResultsToSave": "نەتىجە يوق",
"detectedSourceLanguage": "تونۇلغان مەنبە تىلى",
"detectedTargetLanguage": "تونۇلغان نىشان تىلى"
},
"profile": {
"myProfile": "شەخسىي ئۇچۇرۇم",
@@ -364,12 +423,43 @@
"videoUploadFailed": "ۋىدېئو يۈكلەش مەغلۇپ بولدى",
"subtitleUploadFailed": "تر پودكاست يۈكلەش مەغلۇپ بولدى",
"subtitleLoadSuccess": "تر پودكاست مۇۋەپپەقىيەتلىك يۈكلەندى",
"subtitleLoadFailed": "تر پودكاست يۈكلەش مەغلۇپ بولدى"
"subtitleLoadFailed": "تر پودكاست يۈكلەش مەغلۇپ بولدى",
"settings": "تەڭشەكلەر",
"shortcuts": "تېزلەتمەلەر",
"keyboardShortcuts": "كۇنۇپكا تاختىسى تېزلەتمەلىرى",
"playPause": "قويۇش/توختىتىش",
"autoPauseToggle": "ئاپتوماتىك توختىتىش",
"subtitleSettings": "ئاستى سىزىق تەڭشەكلىرى",
"fontSize": "خەت چوڭلۇقى",
"textColor": "خەت رەڭگى",
"backgroundColor": "تەگلىك رەڭگى",
"position": "ئورنى",
"opacity": "سۈزۈكلۈك",
"top": "ئۈستى",
"center": "ئوتتۇرا",
"bottom": "ئاستى"
},
"text_speaker": {
"generateIPA": "IPA ھاسىل قىلىش",
"viewSavedItems": "ساقلانغان تۈرلەرنى كۆرۈش",
"confirmDeleteAll": "ھەممىنى ئۆچۈرەمسىز؟ (Y/N)"
"confirmDeleteAll": "ھەممىنى ئۆچۈرەمسىز؟ (Y/N)",
"saved": "ساقلاندى",
"clearAll": "ھەممىنى تازىلاش",
"language": "تىل",
"customLanguage": "ياكى تىل كىرگۈزۈڭ...",
"languages": {
"auto": "ئاپتوماتىك",
"chinese": "خەنزۇچە",
"english": "ئىنگلىزچە",
"japanese": "ياپونچە",
"korean": "كورېيەچە",
"french": "فرانسۇزچە",
"german": "گېرمانچە",
"italian": "ئىتاليانچە",
"spanish": "ئىسپانچە",
"portuguese": "پورتۇگالچە",
"russian": "رۇسچە"
}
},
"translator": {
"detectLanguage": "تىلنى تونۇش",
@@ -403,7 +493,19 @@
"error": "تېكىست جۈپىنى قىسقۇچقا قوشۇش مەغلۇپ بولدى"
},
"autoSave": "ئاپتوماتىك ساقلاش",
"customLanguage": "ياكى تىل تىل كىرۇڭ..."
"customLanguage": "ياكى تىل تىل كىرۇڭ...",
"pleaseLogin": "كارتا ساقلاش ئۈچۈن كىرىڭ",
"pleaseCreateDeck": "ئاۋۋال دېك قۇرۇڭ",
"noTranslationToSave": "ساقلايدىغان تەرجىمە يوق",
"noDeckSelected": "دېك تاللانمىدى",
"saveAsCard": "كارتا ساقلاش",
"selectDeck": "دېك تاللاش",
"front": "ئالدى",
"back": "كەينى",
"cancel": "بىكار قىلىش",
"save": "ساقلاش",
"savedToDeck": "{deckName} غا ساقلاندى",
"saveFailed": "ساقلاش مەغلۇپ"
},
"dictionary": {
"title": "لۇغەت",
@@ -448,7 +550,9 @@
"unfavorite": "يىغىپ ساقلاشنى بىكار قىل",
"pleaseLogin": "ئاۋۋال تىزىمغا كىرىڭ",
"sortByFavorites": "يىغىپ ساقلاش بويىچە تەرتىپلەش",
"sortByFavoritesActive": "يىغىپ ساقلاش بويىچە تەرتىپلەشنى بىكار قىلىش"
"sortByFavoritesActive": "يىغىپ ساقلاش بويىچە تەرتىپلەشنى بىكار قىلىش",
"noDecks": "ئاممىۋىي دېك يوق",
"deckInfo": "{userName} · {totalCards} كارتا"
},
"exploreDetail": {
"title": "قىسقۇچ تەپسىلاتلىرى",
@@ -462,7 +566,8 @@
"unfavorite": "يىغىپ ساقلاشنى بىكار قىل",
"favorited": "يىغىپ ساقلاندى",
"unfavorited": "يىغىپ ساقلاش بىكار قىلىندى",
"pleaseLogin": "ئاۋۋال تىزىمغا كىرىڭ"
"pleaseLogin": "ئاۋۋال تىزىمغا كىرىڭ",
"totalCards": "{count} كارتا"
},
"favorites": {
"title": "يىغىپ ساقلىغانلىرىم",
@@ -507,7 +612,8 @@
"createdAt": "قۇرۇلغان ۋاقتى",
"actions": "مەشغۇلاتلار",
"view": "كۆرۈش"
}
},
"joined": "قوشۇلدى"
},
"follow": {
"follow": "ئەگىشىش",