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

@@ -98,28 +98,47 @@
"delete": "删除",
"permissionDenied": "您没有权限执行此操作",
"resetProgress": "重置进度",
"resetProgressTitle": "重置牌组进度",
"resetProgressConfirm": "这将把牌组内所有卡片重置为新卡片状态。您的学习进度将会丢失。确定要继续吗?",
"resetSuccess": "成功重置 {count} 张卡片",
"resetProgressTitle": "重置学习进度",
"resetProgressConfirm": "确定要重置这个卡组的学习进度吗?",
"resetSuccess": "进度已重置",
"resetting": "重置中...",
"cancel": "取消",
"settings": "设置",
"settingsTitle": "组设置",
"newPerDay": "每日新卡数量",
"newPerDayHint": "每天最多学习的新卡片数量",
"revPerDay": "每日复习数量",
"revPerDayHint": "每天最多复习的卡片数量",
"settingsTitle": "组设置",
"newPerDay": "每日新卡",
"newPerDayHint": "每天学习的新卡片数量",
"revPerDay": "每日复习",
"revPerDayHint": "每天复习的卡片数量",
"save": "保存",
"saving": "保存中...",
"settingsSaved": "设置已保存",
"todayNew": "新卡",
"todayReview": "复习",
"todayNew": "今日新卡",
"todayReview": "今日复习",
"todayLearning": "学习中",
"error": {
"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": "学语言",
@@ -271,7 +290,8 @@
"yourAnswer": "你的答案",
"typeWhatYouHear": "输入你听到的内容",
"correct": "正确",
"incorrect": "错误"
"incorrect": "错误",
"nextCard": "下一张"
},
"page": {
"unauthorized": "您无权访问该牌组"
@@ -288,48 +308,49 @@
"settings": "设置"
},
"ocr": {
"title": "OCR 词汇提取",
"description": "上传教材词汇表截图,提取单词-释义对",
"title": "OCR文字识别",
"description": "从图片中提取文字创建学习卡片",
"uploadSection": "上传图片",
"uploadImage": "上传图片",
"dragDropHint": "拖放图片到此处,或点击选择",
"dropOrClick": "拖放图片到此处,或点击选择",
"changeImage": "点击更换图片",
"supportedFormats": "支持格式JPGPNG、WebP",
"invalidFileType": "无效的文件类型请上传图片文件JPG、PNG 或 WebP",
"deckSelection": "选择组",
"selectDeck": "选择组",
"chooseDeck": "选择保存提取词汇的牌组",
"noDecks": "暂无牌组,请先创建牌组",
"languageHints": "语言提示(可选)",
"sourceLanguageHint": "源语言(如:英语)",
"targetLanguageHint": "目标/翻译语言(如:中文)",
"sourceLanguagePlaceholder": "源语言(如:英语",
"targetLanguagePlaceholder": "目标/翻译语言(如:中文",
"process": "处理图片",
"processButton": "处理图片",
"dragDropHint": "拖放或点击上传",
"dropOrClick": "拖放或点击",
"changeImage": "更换图片",
"supportedFormats": "支持格式JPG, PNG, WEBP",
"invalidFileType": "无效的文件类型",
"deckSelection": "选择组",
"selectDeck": "选择组",
"chooseDeck": "选择卡组保存",
"noDecks": "没有可用的卡组",
"languageHints": "语言提示",
"sourceLanguageHint": "源语言提示",
"targetLanguageHint": "目标语言提示",
"sourceLanguagePlaceholder": "如:英语",
"targetLanguagePlaceholder": "如:中文",
"process": "处理",
"processButton": "开始识别",
"processing": "处理中...",
"preview": "预览",
"resultsPreview": "结果预览",
"extractedPairs": "提取 {count} 个词汇对",
"extractedPairs": "提取的语言对",
"word": "单词",
"definition": "释义",
"pairsCount": "{count} 个词汇对",
"savePairs": "保存到牌组",
"saveButton": "保存",
"pairsCount": "{count}对",
"savePairs": "保存",
"saveButton": "保存到卡组",
"saving": "保存中...",
"saved": "成功将 {count} 个词汇对保存到 {deck}",
"ocrSuccess": "成功将 {count} 个词汇对保存到 {deck}",
"savedToDeck": "已保存到 {deckName}",
"saved": "已保存",
"ocrSuccess": "OCR识别成功",
"savedToDeck": "已保存到卡组",
"saveFailed": "保存失败",
"noImage": "请上传图片",
"noDeck": "请选择组",
"noResultsToSave": "没有可保存的结果",
"processingFailed": "OCR 处理失败",
"tryAgain": "请尝试上传更清晰的图片",
"detectedLanguages": "检测到{source} → {target}",
"noImage": "请上传图片",
"noDeck": "请选择组",
"noResultsToSave": "无结果可保存",
"processingFailed": "处理失败",
"tryAgain": "重试",
"detectedLanguages": "检测到的语言",
"detectedSourceLanguage": "检测到的源语言",
"detectedTargetLanguage": "检测到的目标语言"
"detectedTargetLanguage": "检测到的目标语言",
"ocrFailed": "OCR识别失败"
},
"profile": {
"myProfile": "我的个人资料",
@@ -375,13 +396,13 @@
"shortcuts": "快捷键",
"keyboardShortcuts": "键盘快捷键",
"playPause": "播放/暂停",
"autoPauseToggle": "切换自动暂停",
"autoPauseToggle": "自动暂停开关",
"subtitleSettings": "字幕设置",
"fontSize": "字体大小",
"textColor": "文字颜色",
"backgroundColor": "背景颜色",
"position": "位置",
"opacity": "透明度",
"opacity": "透明度",
"top": "顶部",
"center": "居中",
"bottom": "底部"
@@ -391,7 +412,22 @@
"viewSavedItems": "查看保存项",
"confirmDeleteAll": "确定删光吗?(Y/N)",
"saved": "已保存",
"clearAll": "清空全部"
"clearAll": "清空全部",
"language": "语言",
"customLanguage": "或输入语言...",
"languages": {
"auto": "自动",
"chinese": "中文",
"english": "英语",
"japanese": "日语",
"korean": "韩语",
"french": "法语",
"german": "德语",
"italian": "意大利语",
"spanish": "西班牙语",
"portuguese": "葡萄牙语",
"russian": "俄语"
}
},
"translator": {
"detectLanguage": "检测语言",
@@ -425,7 +461,19 @@
"error": "添加文本对到文件夹失败"
},
"autoSave": "自动保存",
"customLanguage": "或输入语言..."
"customLanguage": "或输入语言...",
"pleaseLogin": "请登录后保存卡片",
"pleaseCreateDeck": "请先创建卡组",
"noTranslationToSave": "没有可保存的翻译",
"noDeckSelected": "未选择卡组",
"saveAsCard": "保存为卡片",
"selectDeck": "选择卡组",
"front": "正面",
"back": "背面",
"cancel": "取消",
"save": "保存",
"savedToDeck": "已保存到 {deckName}",
"saveFailed": "保存失败"
},
"dictionary": {
"title": "词典",
@@ -463,8 +511,8 @@
"subtitle": "发现公开牌组",
"searchPlaceholder": "搜索公开牌组...",
"loading": "加载中...",
"noDecks": "没有找到公开组",
"deckInfo": "{userName} {cardCount} 张卡片",
"noDecks": "暂无公开组",
"deckInfo": "{userName} · {totalCards} 张",
"unknownUser": "未知用户",
"favorite": "收藏",
"unfavorite": "取消收藏",
@@ -476,7 +524,7 @@
"title": "牌组详情",
"createdBy": "创建者:{name}",
"unknownUser": "未知用户",
"totalCards": "卡片数量",
"totalCards": "共 {count} 张",
"favorites": "收藏数",
"createdAt": "创建时间",
"viewContent": "查看内容",
@@ -505,7 +553,7 @@
"displayName": "显示名称",
"notSet": "未设置",
"memberSince": "注册时间",
"joined": "加入于",
"joined": "注册于",
"logout": "登出",
"deleteAccount": {
"button": "注销账号",
@@ -534,30 +582,30 @@
},
"decks": {
"title": "牌组",
"subtitle": "管理您的闪卡牌组",
"newDeck": "新建组",
"noDecksYet": "还没有牌组",
"subtitle": "管理你的学习卡组",
"newDeck": "新建组",
"noDecksYet": "暂无卡组",
"loading": "加载中...",
"deckInfo": "ID: {id} {totalCards} 张卡片",
"enterDeckName": "输入组名称:",
"deckInfo": "ID: {id} · {totalCards} 张",
"enterDeckName": "输入组名称:",
"enterNewName": "输入新名称:",
"confirmDelete": "输入 \"{name}\" 删除:",
"confirmDelete": "输入 \"{name}\" 确认删除:",
"public": "公开",
"private": "私有",
"setPublic": "设为公开",
"setPrivate": "设为私有",
"importApkg": "导入 APKG",
"exportApkg": "导出 APKG",
"clickToUpload": "点击上传 APKG 文件",
"clickToUpload": "点击上传",
"apkgFilesOnly": "仅支持 .apkg 文件",
"parsing": "解析中...",
"foundDecks": "找到 {count} 个组",
"deckName": "组名称",
"foundDecks": "发现 {count} 个组",
"deckName": "组名称",
"back": "返回",
"import": "导入",
"importing": "导入中...",
"exportSuccess": "牌组导出成功",
"goToDecks": "前往组"
"exportSuccess": "导出成功",
"goToDecks": "前往组"
},
"follow": {
"follow": "关注",