@khorsheed/dsh-library 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/README.en.md +49 -0
- package/README.i18n.yaml +6 -0
- package/README.md +48 -2
- package/cordis.patch.yml +17 -0
- package/lib/client.js +66276 -0
- package/lib/index.js +3318 -0
- package/lib/profiles-BXM8xNUf.js +1608 -0
- package/lib/profiles-BrbeM-bi.js +1635 -0
- package/lib/profiles-CFrPQdfO.js +1692 -0
- package/lib/profiles-DxtzIUvd.js +1632 -0
- package/lib/profiles-O0ddEit3.js +1631 -0
- package/lib/profiles-Oj-zBAY9.js +1692 -0
- package/lib/profiles-gIEviEuO.js +1610 -0
- package/lib/store-CIcZgTsg.js +1456 -0
- package/lib/store-DfYOmS44.js +1418 -0
- package/lib/tool.js +1597 -0
- package/lib/typert.host.d.ts +3 -0
- package/lib/typert.host.js +3811 -0
- package/lib/typert.remote-client.d.ts +137 -0
- package/lib/typert.remote-client.js +3077 -0
- package/lib/types/cards.d.ts +41 -0
- package/lib/types/cards.js +111 -0
- package/lib/types/client/LibraryPane.d.ts +26 -0
- package/lib/types/client/LibraryPane.js +117 -0
- package/lib/types/client/bind/BindChip.d.ts +33 -0
- package/lib/types/client/bind/BindChip.js +102 -0
- package/lib/types/client/contract.d.ts +164 -0
- package/lib/types/client/contract.js +1 -0
- package/lib/types/client/covers.d.ts +36 -0
- package/lib/types/client/covers.js +66 -0
- package/lib/types/client/definition.d.ts +27 -0
- package/lib/types/client/definition.js +32 -0
- package/lib/types/client/icons-local.d.ts +41 -0
- package/lib/types/client/icons-local.js +25 -0
- package/lib/types/client/icons.d.ts +27 -0
- package/lib/types/client/icons.js +11 -0
- package/lib/types/client/index.d.ts +35 -0
- package/lib/types/client/index.js +219 -0
- package/lib/types/client/judge.d.ts +70 -0
- package/lib/types/client/judge.js +262 -0
- package/lib/types/client/locales.d.ts +553 -0
- package/lib/types/client/locales.js +1076 -0
- package/lib/types/client/look.d.ts +63 -0
- package/lib/types/client/look.js +64 -0
- package/lib/types/client/math.d.ts +24 -0
- package/lib/types/client/math.js +47 -0
- package/lib/types/client/mistakes.d.ts +21 -0
- package/lib/types/client/mistakes.js +28 -0
- package/lib/types/client/preset-visibility.d.ts +109 -0
- package/lib/types/client/preset-visibility.js +123 -0
- package/lib/types/client/quiz-drafts.d.ts +29 -0
- package/lib/types/client/quiz-drafts.js +50 -0
- package/lib/types/client/store.d.ts +109 -0
- package/lib/types/client/store.js +44 -0
- package/lib/types/client/titles.d.ts +17 -0
- package/lib/types/client/titles.js +23 -0
- package/lib/types/client/ui.d.ts +96 -0
- package/lib/types/client/ui.js +124 -0
- package/lib/types/client/views/book.d.ts +57 -0
- package/lib/types/client/views/book.js +164 -0
- package/lib/types/client/views/cards.d.ts +17 -0
- package/lib/types/client/views/cards.js +53 -0
- package/lib/types/client/views/home.d.ts +26 -0
- package/lib/types/client/views/home.js +263 -0
- package/lib/types/client/views/lesson.d.ts +42 -0
- package/lib/types/client/views/lesson.js +146 -0
- package/lib/types/client/views/path.d.ts +32 -0
- package/lib/types/client/views/path.js +64 -0
- package/lib/types/client/views/quiz.d.ts +42 -0
- package/lib/types/client/views/quiz.js +366 -0
- package/lib/types/client/views/station-quiz.d.ts +43 -0
- package/lib/types/client/views/station-quiz.js +203 -0
- package/lib/types/client/views/station.d.ts +18 -0
- package/lib/types/client/views/station.js +142 -0
- package/lib/types/image-refs.d.ts +35 -0
- package/lib/types/image-refs.js +71 -0
- package/lib/types/index.d.ts +51 -0
- package/lib/types/index.js +31 -0
- package/lib/types/mastery.d.ts +81 -0
- package/lib/types/mastery.js +110 -0
- package/lib/types/profiles.d.ts +31 -0
- package/lib/types/profiles.js +25 -0
- package/lib/types/remote.d.ts +355 -0
- package/lib/types/remote.js +332 -0
- package/lib/types/service/assess.d.ts +144 -0
- package/lib/types/service/assess.js +773 -0
- package/lib/types/service/bindings.d.ts +92 -0
- package/lib/types/service/bindings.js +198 -0
- package/lib/types/service/cards.d.ts +85 -0
- package/lib/types/service/cards.js +320 -0
- package/lib/types/service/core.d.ts +124 -0
- package/lib/types/service/core.js +169 -0
- package/lib/types/service/pages.d.ts +60 -0
- package/lib/types/service/pages.js +125 -0
- package/lib/types/service/roadmap.d.ts +99 -0
- package/lib/types/service/roadmap.js +284 -0
- package/lib/types/service/rules.d.ts +63 -0
- package/lib/types/service/rules.js +245 -0
- package/lib/types/service/shelf.d.ts +136 -0
- package/lib/types/service/shelf.js +422 -0
- package/lib/types/service.d.ts +42 -0
- package/lib/types/service.js +41 -0
- package/lib/types/store.d.ts +257 -0
- package/lib/types/store.js +1376 -0
- package/lib/types/tool-definition.d.ts +49 -0
- package/lib/types/tool-definition.js +49 -0
- package/lib/types/tool.d.ts +71 -0
- package/lib/types/tool.js +174 -0
- package/lib/types/tools/assess.d.ts +11 -0
- package/lib/types/tools/assess.js +82 -0
- package/lib/types/tools/binding.d.ts +11 -0
- package/lib/types/tools/binding.js +46 -0
- package/lib/types/tools/cards.d.ts +11 -0
- package/lib/types/tools/cards.js +100 -0
- package/lib/types/tools/kit.d.ts +215 -0
- package/lib/types/tools/kit.js +281 -0
- package/lib/types/tools/notes.d.ts +11 -0
- package/lib/types/tools/notes.js +40 -0
- package/lib/types/tools/page.d.ts +11 -0
- package/lib/types/tools/page.js +59 -0
- package/lib/types/tools/project.d.ts +11 -0
- package/lib/types/tools/project.js +67 -0
- package/lib/types/tools/quiz.d.ts +11 -0
- package/lib/types/tools/quiz.js +74 -0
- package/lib/types/tools/read.d.ts +11 -0
- package/lib/types/tools/read.js +127 -0
- package/lib/types/tools/resource.d.ts +11 -0
- package/lib/types/tools/resource.js +147 -0
- package/lib/types/tools/roadmap.d.ts +11 -0
- package/lib/types/tools/roadmap.js +102 -0
- package/lib/types/types.d.ts +752 -0
- package/lib/types/types.js +159 -0
- package/locale/en.json +6 -0
- package/locale/zh.json +6 -0
- package/package.json +135 -3
|
@@ -0,0 +1,1076 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The library's dictionaries. The Chinese table is the key set's source of
|
|
3
|
+
* truth; the English one must carry exactly the same keys.
|
|
4
|
+
*
|
|
5
|
+
* `prime.*` strings are drafts the pane puts into the conversation's input —
|
|
6
|
+
* they speak to the coach, in the learner's voice.
|
|
7
|
+
*
|
|
8
|
+
* @module @khorsheed/dsh-library/client/locales
|
|
9
|
+
*/
|
|
10
|
+
export const NS = 'library';
|
|
11
|
+
export const zh = {
|
|
12
|
+
'tab.label': '图书馆',
|
|
13
|
+
'guide.description': '按项目精读:每本教材一条学习路线,拍照记重点,知识卡片与章节考',
|
|
14
|
+
'state.loading': '加载中…',
|
|
15
|
+
'state.error': '出错了:{reason}',
|
|
16
|
+
'action.back': '返回',
|
|
17
|
+
'action.save': '保存',
|
|
18
|
+
'action.cancel': '取消',
|
|
19
|
+
'action.confirmDelete': '确认删除',
|
|
20
|
+
'action.more': '更多',
|
|
21
|
+
'action.refresh': '刷新',
|
|
22
|
+
'action.askCoach': '问教练',
|
|
23
|
+
'action.bindProject': '把本会话绑定到这个项目',
|
|
24
|
+
'action.bindBook': '把本会话绑定到这本书',
|
|
25
|
+
'notice.primed': '已经把请求填进会话输入框,发送后教练会处理',
|
|
26
|
+
'notice.noConversation': '这个会话没有输入框,请在学习模式会话里打开图书馆',
|
|
27
|
+
'notice.bound': '本会话已绑定',
|
|
28
|
+
'today.title': '今日',
|
|
29
|
+
'today.emptyTitle': '还没有学习项目',
|
|
30
|
+
'today.emptyBody': '一个项目就是一个学习目标,比如「数学」「具身智能」。教材放进项目里,每本教材一条路线。',
|
|
31
|
+
'today.dueLine': '张卡片到期 · 约 {minutes} 分钟',
|
|
32
|
+
'today.startReview': '开始复习',
|
|
33
|
+
'today.dueTitle': '今日复习',
|
|
34
|
+
'today.recorded': '教练最近记下',
|
|
35
|
+
'today.projects': '项目',
|
|
36
|
+
'template.language': '语言学习',
|
|
37
|
+
'template.subject': '学科知识',
|
|
38
|
+
'template.custom': '自定义',
|
|
39
|
+
'template.language.hint': '划线 = 生词或短语;考语境义、同义替换、拼写。',
|
|
40
|
+
'template.subject.hint': '划线 = 重点概念;考解释、辨析、应用。',
|
|
41
|
+
'template.custom.hint': '建好后在会话里告诉教练你想怎么考。',
|
|
42
|
+
'project.new': '新建项目',
|
|
43
|
+
'project.name': '项目名',
|
|
44
|
+
'project.namePlaceholder': '神经科学、雅思…',
|
|
45
|
+
'project.template': '领域模板',
|
|
46
|
+
'project.goal': '目标(可选)',
|
|
47
|
+
'project.goalPlaceholder': '学术类 7 分,12 月 14 日考试',
|
|
48
|
+
'project.create': '创建',
|
|
49
|
+
'project.meta': '{template} · {books} 本书 · {cards} 张卡片',
|
|
50
|
+
'project.goalLine': '目标:{goal}',
|
|
51
|
+
'book.add': '加教材',
|
|
52
|
+
'book.draftWaiting': '路线草稿待采用',
|
|
53
|
+
'book.noRoadmap': '还没有路线',
|
|
54
|
+
'book.noRoadmapBody': '请教练根据目录排一条学习路线,草稿会出现在这里。',
|
|
55
|
+
'book.askPlan': '请教练排路线',
|
|
56
|
+
'book.progressMeta': '{done}/{total} · 下一节 {next}',
|
|
57
|
+
'book.finished': '已读完',
|
|
58
|
+
'book.replan': '重新排路线',
|
|
59
|
+
'book.delete': '删除这本教材…',
|
|
60
|
+
'book.draftTitle': '路线草稿',
|
|
61
|
+
'book.draftMeta': '{count} 节',
|
|
62
|
+
'book.draftReplaces': '采用后替换当前路线,已完成的节点会保留。',
|
|
63
|
+
'book.adopt': '采用为本书路线',
|
|
64
|
+
'book.discard': '放弃',
|
|
65
|
+
'book.pathTitle': '学习路线 · {done}/{total}',
|
|
66
|
+
'book.contentsMeta': '目录 {rows} 行 · {kind}',
|
|
67
|
+
'book.contentsSource': '目录来源',
|
|
68
|
+
'bookKind.knowledge': '知识型',
|
|
69
|
+
'bookKind.material': '材料型',
|
|
70
|
+
'book.kindLine': '类型:{kind}',
|
|
71
|
+
'book.kindHint.knowledge': '考的是知识本身:教练可以按领域知识出题(教科书、科普书)。',
|
|
72
|
+
'book.kindHint.material': '考的就是原文:每道内容题都要引用你拍的书页(真题、文学、读本)。',
|
|
73
|
+
'book.kindToMaterial': '改为材料型',
|
|
74
|
+
'book.kindToKnowledge': '改为知识型',
|
|
75
|
+
'tocSource.web': '目录已联网核对',
|
|
76
|
+
'tocSource.model': '目录来自模型知识,未核对',
|
|
77
|
+
'tocSource.photo': '目录来自照片',
|
|
78
|
+
'nodeKind.quiz': '考',
|
|
79
|
+
'nodeKind.read': '读',
|
|
80
|
+
'nodeKind.acceptance': '动手',
|
|
81
|
+
'nodeKind.practice': '动手',
|
|
82
|
+
'node.tabs': '这一节',
|
|
83
|
+
'node.guide': '导读',
|
|
84
|
+
'node.pages': '我的记录',
|
|
85
|
+
'node.quiz': '章节考',
|
|
86
|
+
'node.locked': '这一节还没解锁,先完成前面的节点。',
|
|
87
|
+
'node.goals': '这一节要掌握',
|
|
88
|
+
'node.covers': '对应目录',
|
|
89
|
+
'node.markRead': '读完',
|
|
90
|
+
'node.photo': '拍照记重点',
|
|
91
|
+
'node.photoSent': '照片已经发到会话里,教练识别后这一页和卡片会出现在这里',
|
|
92
|
+
'node.photoWaiting': '等教练识别…',
|
|
93
|
+
'node.photoRecorded': '这一页记好了,卡片在下面',
|
|
94
|
+
'node.thisPage': '这一页',
|
|
95
|
+
'node.addMissed': '补一个漏掉的词',
|
|
96
|
+
'node.addMissedPlaceholder': '输入划了但没记下的词',
|
|
97
|
+
'node.send': '发给教练',
|
|
98
|
+
'node.uncertain': '拿不准的:',
|
|
99
|
+
'node.fixSent': '已经在会话里告诉教练了',
|
|
100
|
+
'node.pageCaption': '{label} · {marks} 处标记',
|
|
101
|
+
'node.cardsHere': '这一节的卡片 · {count}',
|
|
102
|
+
'node.passRule': '答对 {percent}% 过关',
|
|
103
|
+
'node.best': '最好 {percent}%,考过 {attempts} 次',
|
|
104
|
+
'node.quizRow': '{count} 题',
|
|
105
|
+
'node.quizLatest': '最新考卷 · {count} 题',
|
|
106
|
+
'node.quizEarlier': '之前的考卷',
|
|
107
|
+
'book.quizzes': '本书测验 · {count}',
|
|
108
|
+
'book.points': '考点:{points}',
|
|
109
|
+
'mistakes.title': '错题本 · {count}',
|
|
110
|
+
'mistakes.stat': '错题',
|
|
111
|
+
'mistakes.cta': '围绕错题出一套 → 带进会话',
|
|
112
|
+
'mistakes.from': '来自「{node}」',
|
|
113
|
+
'project.quizzes': '自由测验 · {count}',
|
|
114
|
+
'node.askQuiz': '请教练出题',
|
|
115
|
+
'node.askQuizAgain': '再出一套新题',
|
|
116
|
+
'node.asking': '教练正在出题…',
|
|
117
|
+
'node.askStale': '还没等到新的一套题',
|
|
118
|
+
'node.askSince': '已等 {minutes} 分钟',
|
|
119
|
+
'node.askAgain': '再请求一次',
|
|
120
|
+
'node.askDismiss': '不等了',
|
|
121
|
+
'node.kindsMixed': '题型不限',
|
|
122
|
+
'node.askCount': '{count} 题',
|
|
123
|
+
'node.askPointsShort': '重点 {count} 个考点',
|
|
124
|
+
'node.quizWaiting': '等教练出题…',
|
|
125
|
+
'node.notes': '讲义',
|
|
126
|
+
'path.progress': '过关 {done} / {total} 站',
|
|
127
|
+
'path.mastered': '掌握 {done} / {total} 个考点',
|
|
128
|
+
'path.rows': '第 {rows} 章',
|
|
129
|
+
'path.points': '{count} 个考点',
|
|
130
|
+
'path.done': '已过关',
|
|
131
|
+
'path.doneBest': '已过关 · {percent}%',
|
|
132
|
+
'path.studying': '学习中',
|
|
133
|
+
'path.studyingOpen': '学习中 · {count} 题待订正',
|
|
134
|
+
'path.ready': '已备课',
|
|
135
|
+
'path.dotsLabel': '考点掌握情况',
|
|
136
|
+
'path.stationsPassed': '站过关',
|
|
137
|
+
'path.pointsMastered': '个考点掌握',
|
|
138
|
+
'path.nextTodo': '下一站 · 还没备课;哪一站都可以先学',
|
|
139
|
+
'path.nextHint': '下一站;哪一站都可以先学',
|
|
140
|
+
'path.continue': '接着学这一站',
|
|
141
|
+
'path.retake': '去订正 {count} 题',
|
|
142
|
+
'book.seqOf': '第 {seq} 本',
|
|
143
|
+
'book.contentsLine': '目录 {rows} 章',
|
|
144
|
+
'book.contentsOpen': '展开 ▾',
|
|
145
|
+
'book.skippedTag': '本路线不学',
|
|
146
|
+
'project.goalMore': '目标 ▾',
|
|
147
|
+
'project.goalLess': '收起 ▴',
|
|
148
|
+
'project.ringLabel': '过关',
|
|
149
|
+
'project.ringTitle': '{done} / {total} 站过关',
|
|
150
|
+
'project.bookProgress': '{done} / {total} 站过关',
|
|
151
|
+
'project.noPathYet': '还没有路线 · 学到这本时再排',
|
|
152
|
+
'mistakes.statOpen': '待订正',
|
|
153
|
+
'resource.emptyLine': '资源 · 0 · 教练找的文章、工具会放在这里',
|
|
154
|
+
'lesson.title': '讲义',
|
|
155
|
+
'lesson.titleOf': '讲义 · {node}',
|
|
156
|
+
'lesson.contents': '讲义目录',
|
|
157
|
+
'lesson.contentsMeta': '{count} 个考点',
|
|
158
|
+
'lesson.opening': '这一课学什么',
|
|
159
|
+
'lesson.meta': '教练写于 {at} · {count} 节',
|
|
160
|
+
'lesson.revised': '补充过 {n} 次',
|
|
161
|
+
'lesson.none': '这一站还没有讲义。',
|
|
162
|
+
'lesson.doneTitle': '觉得掌握了?',
|
|
163
|
+
'lesson.doneHint': '章节考按这 {count} 个考点出题。有没看懂的就问教练。',
|
|
164
|
+
'lesson.toQuiz': '去章节考',
|
|
165
|
+
'lesson.ask': '问教练',
|
|
166
|
+
'lesson.asked': '已填进对话框,写下你的问题再发送',
|
|
167
|
+
'lesson.notReady': '这一站还没备课',
|
|
168
|
+
'lesson.notReadyHint': '点开始后,教练会按你的情况写讲义。可以在对话框里补一句你的需求。',
|
|
169
|
+
'lesson.start': '开始学这一站',
|
|
170
|
+
'lesson.preparing': '教练正在备课…',
|
|
171
|
+
'lesson.preparingHint': '发送对话框里的那句话后,教练写好讲义会自动打开。',
|
|
172
|
+
'lesson.prepareStale': '讲义还没到',
|
|
173
|
+
'lesson.cancelWait': '取消',
|
|
174
|
+
'lesson.ready': '讲义 · {count} 个考点',
|
|
175
|
+
'lesson.open': '打开讲义',
|
|
176
|
+
'prime.lessonStart': '我要开始学《{book}》的「{node}」。考点:{points}。请写这一站的讲义(library_notes):讲义就是课本身,每个考点一节讲透,我不用跳出去看别的;参考资料放最后。我先自己看。\n我的情况是:',
|
|
177
|
+
'prime.lessonStartBook': '我要开始学《{book}》的「{node}」。考点:{points}。请写这一站的讲义(library_notes):讲义就是课本身,每个考点一节讲透,我不用跳出去看别的;书里对应的页码和参考资料放最后。我先自己看。\n我的情况是:',
|
|
178
|
+
'prime.lessonAsk': '我看了「{node}」的讲义,想问:',
|
|
179
|
+
'node.notesEmptyTitle': '这一站还没有讲义',
|
|
180
|
+
'node.notesEmpty': '教练讲完这一站会把讲义沉淀在这里,随时重读;也可以现在请教练写。',
|
|
181
|
+
'node.notesMeta': '教练写于 {at} · 第 {n} 次更新',
|
|
182
|
+
'node.notesAsk': '请教练补讲',
|
|
183
|
+
'node.notesWrite': '请教练写讲义',
|
|
184
|
+
'node.missedTitle': '这一站的错题 · {count}',
|
|
185
|
+
'node.missedMeta': '最近一次 {when}',
|
|
186
|
+
'node.missedShow': '展开',
|
|
187
|
+
'node.missedHide': '收起',
|
|
188
|
+
'node.missedAnswer': '正确答案:{answer}',
|
|
189
|
+
'node.otherMissed': '其他站的错题 · {count}',
|
|
190
|
+
'node.weakLine': '这一站的薄弱:{terms}',
|
|
191
|
+
'node.pointsTitle': '本站考点',
|
|
192
|
+
'node.pointState.strong': '已掌握',
|
|
193
|
+
'node.pointState.weak': '薄弱',
|
|
194
|
+
'node.pointState.untested': '未考',
|
|
195
|
+
'node.pointsHint': '点选可让教练重点出;不选则按薄弱点出。',
|
|
196
|
+
'node.pointsHintLabel': '考点说明',
|
|
197
|
+
'node.askPoints': '出一套 · 重点 {count} 个考点',
|
|
198
|
+
'node.kindsTitle': '题型',
|
|
199
|
+
'kind.choice': '选择题',
|
|
200
|
+
'kind.fill': '填空题',
|
|
201
|
+
'kind.free': '问答题',
|
|
202
|
+
'node.countTitle': '题量',
|
|
203
|
+
'node.settingsTitle': '出题设置',
|
|
204
|
+
'node.setting.range': '范围',
|
|
205
|
+
'node.paperPassed': '上套考卷 · {percent}% · 已过关',
|
|
206
|
+
'node.paperFailed': '上套考卷 · {percent}% · 未过关',
|
|
207
|
+
'node.retakeCount': '重考错题 {count}',
|
|
208
|
+
'node.redoSame': '重做这套',
|
|
209
|
+
'node.voidedSummary': '你觉得有问题的题 · {count}(不计分)',
|
|
210
|
+
'markdown.copy': '复制',
|
|
211
|
+
'markdown.copied': '已复制',
|
|
212
|
+
'markdown.footnotes': '脚注',
|
|
213
|
+
'node.voidedReplace': '请教练换题 → 带进会话',
|
|
214
|
+
'node.focusMineHint': '会考:{terms}…',
|
|
215
|
+
'node.focusMineEmpty': '这一节还没有你画的重点:先在「我的记录」里拍照,或选「书本内容」。',
|
|
216
|
+
'node.focusHint.book': '只考这一节书里的内容,不看你的卡片。',
|
|
217
|
+
'node.focusHint.mixed': '先考你画的重点,不够再补书本内容。',
|
|
218
|
+
'focus.mine': '只考我画的重点',
|
|
219
|
+
'focus.book': '只考书本内容',
|
|
220
|
+
'focus.mixed': '都考',
|
|
221
|
+
'cards.title': '知识卡片',
|
|
222
|
+
'cards.filters': '来源',
|
|
223
|
+
'cards.filter.all': '全部',
|
|
224
|
+
'cards.filter.photo': '我划的',
|
|
225
|
+
'cards.filter.chat': '我问过的',
|
|
226
|
+
'cards.filter.quiz': '我答错的',
|
|
227
|
+
'cards.filter.due': '到期',
|
|
228
|
+
'cards.search': '搜索',
|
|
229
|
+
'cards.searchPlaceholder': '搜词、释义或原句',
|
|
230
|
+
'cards.empty': '这里还没有卡片。拍照记重点、和教练问答、做章节考,都会留下卡片。',
|
|
231
|
+
'cards.projectLevel': '不挂书',
|
|
232
|
+
'cards.dueNow': '今天复习',
|
|
233
|
+
'cards.dueIn': '{days} 天后复习',
|
|
234
|
+
'cards.weakness': '薄弱度 {level}/3',
|
|
235
|
+
'cards.box': '复习进度 {box}/5',
|
|
236
|
+
'cards.userGloss': '我的释义:{gloss}',
|
|
237
|
+
'cards.aliases': '也叫:{aliases}',
|
|
238
|
+
'cards.mastered': '已掌握',
|
|
239
|
+
'cards.delete': '删除',
|
|
240
|
+
'source.photo': '我划的',
|
|
241
|
+
'source.chat': '我问过的',
|
|
242
|
+
'source.quiz': '我答错的',
|
|
243
|
+
'source.manual': '手动',
|
|
244
|
+
'target.marked': '我划的',
|
|
245
|
+
'target.asked': '我问过的',
|
|
246
|
+
'target.missed': '我答错的',
|
|
247
|
+
'target.topic': '本章主题',
|
|
248
|
+
'evidence.photo': '照片原句',
|
|
249
|
+
'evidence.web': '网上原文',
|
|
250
|
+
'evidence.knowledge': '领域知识',
|
|
251
|
+
'quiz.start': '开始',
|
|
252
|
+
'quiz.startNow': '开始作答',
|
|
253
|
+
'quiz.progress': '章节考 {at}/{total}',
|
|
254
|
+
'quiz.submit': '提交',
|
|
255
|
+
'quiz.next': '下一题',
|
|
256
|
+
'quiz.finish': '交卷',
|
|
257
|
+
'quiz.remaining': '还差 {count} 题',
|
|
258
|
+
'node.askFocusPicked': '重点:{points}',
|
|
259
|
+
'node.askFocusWeak': '重点:薄弱考点',
|
|
260
|
+
'node.askFocusCoach': '重点:教练定',
|
|
261
|
+
'node.neverSat': '还没考过',
|
|
262
|
+
'node.passedTag': '已过关',
|
|
263
|
+
'node.pointOpen': '{count} 题待订正',
|
|
264
|
+
'node.pointsRule': '薄弱 = 有待订正的题,或教练备注之后还没考对;巩固中 = 目前都对,但还不到 3 道题、2 次作答;掌握 = 没有待订正,至少 3 道不同的题答对,分布在 2 次作答里。点开看依据。',
|
|
265
|
+
'node.untakenBox': '新考卷 · {count} 题 · 未作答',
|
|
266
|
+
'node.retakeBox': '待订正 · {count} 题',
|
|
267
|
+
'node.retakeOther': '其他 {count}',
|
|
268
|
+
'node.retakeHint': '订正不计入过关成绩;答对的题移出待订正,考点据此变化。',
|
|
269
|
+
'node.retakeStart': '开始订正',
|
|
270
|
+
'node.askBox': '出一套新题',
|
|
271
|
+
'node.askAdjust': '调整设置',
|
|
272
|
+
'node.askDone': '收起',
|
|
273
|
+
'node.askGo': '出题',
|
|
274
|
+
'node.focusPoints': '重点考点',
|
|
275
|
+
'node.earlier': '之前的考卷 · {count}',
|
|
276
|
+
'node.paperUntaken': '未作答',
|
|
277
|
+
'point.untested': '未考',
|
|
278
|
+
'point.weak': '薄弱',
|
|
279
|
+
'point.practicing': '巩固中',
|
|
280
|
+
'point.mastered': '掌握',
|
|
281
|
+
'point.why.untested': '还没考到过它。',
|
|
282
|
+
'point.why.weak': '有待订正的题,或教练备注之后还没再考对。',
|
|
283
|
+
'point.why.practicing': '目前考到的都答对了,但证据还不够。',
|
|
284
|
+
'point.why.mastered': '至少 3 道不同的题答对,而且不是同一次作答里碰巧对的。',
|
|
285
|
+
'point.needRight': '还差 {count} 道不同的题答对',
|
|
286
|
+
'point.needSitting': '还要在另一次考卷或订正里答对',
|
|
287
|
+
'point.close': '关闭',
|
|
288
|
+
'point.notes': '教练备注',
|
|
289
|
+
'point.open': '待订正 · {count}',
|
|
290
|
+
'point.never': '还没考到过它',
|
|
291
|
+
'point.lastProbe': '最近一次考到它:{when} · {result}',
|
|
292
|
+
'point.lastPass': '答对',
|
|
293
|
+
'point.lastFail': '答错',
|
|
294
|
+
'point.retake': '订正这 {count} 题',
|
|
295
|
+
'point.ask': '围绕它出一套',
|
|
296
|
+
'quiz.retakeProgress': '订正 {at}/{total}',
|
|
297
|
+
'result.retakeTitle': '订正完成',
|
|
298
|
+
'result.retakeScore': '{right} / {total} 订正对',
|
|
299
|
+
'result.retakeNote': '订正不计入过关成绩',
|
|
300
|
+
'result.points': '考点变化',
|
|
301
|
+
'result.pointTo': '{title} → {state}',
|
|
302
|
+
'result.pointStill': '{title} · 仍{state}',
|
|
303
|
+
'result.retakeRest': '再订正剩下 {count} 题',
|
|
304
|
+
'result.toStation': '回到章节考',
|
|
305
|
+
'today.changes': '最近的变化',
|
|
306
|
+
'today.retakeLine': '{project} · 待订正',
|
|
307
|
+
'today.retakeHint': '各站答错的题汇总成一份订正卷,订正不计分',
|
|
308
|
+
'today.cardsDue': '张卡片到期',
|
|
309
|
+
'today.dueMinutes': '单词与划线概念 · 约 {minutes} 分钟',
|
|
310
|
+
'today.changeWeak': '{title} → 薄弱',
|
|
311
|
+
'today.changeMastered': '{title} → 掌握',
|
|
312
|
+
'today.changeUntested': '{title} → 未考',
|
|
313
|
+
'today.changePracticing': '{title} → 巩固中',
|
|
314
|
+
'today.changeOpen': '{count} 题待订正',
|
|
315
|
+
'point.counts': '考过 {asked} 题 · 现在对 {right} 题',
|
|
316
|
+
'point.noteCount': '{count} 条教练备注',
|
|
317
|
+
'point.history': '掌握变化',
|
|
318
|
+
'point.sitPaper': '考卷',
|
|
319
|
+
'point.sitRetake': '订正',
|
|
320
|
+
'point.sitScore': '{right}/{total} 对',
|
|
321
|
+
'point.askBelow': '想多练这个考点:在下面「出一套新题」的「调整 → 重点考点」里选中它。',
|
|
322
|
+
'node.pointsPicked': '选了 {count} 个',
|
|
323
|
+
'node.pointsWeak': '薄弱的 {count} 个',
|
|
324
|
+
'node.pointsCoach': '教练定',
|
|
325
|
+
'node.kindsHint': '都不选 = 题型不限。',
|
|
326
|
+
'node.focusPointsHint': '不选时,教练优先考薄弱和未考的考点。',
|
|
327
|
+
'quiz.right': '答对了',
|
|
328
|
+
'quiz.handedOverButton': '已交给教练判',
|
|
329
|
+
'quiz.finishing': '交卷中…',
|
|
330
|
+
'quiz.overrule': '我答对了(写法不同)',
|
|
331
|
+
'quiz.overruled': '已改判为答对',
|
|
332
|
+
'quiz.overruleUndo': '撤回改判',
|
|
333
|
+
'quiz.wrong': '答错了 · 答案:{answer}',
|
|
334
|
+
'quiz.coachJudges': '这题交卷后由教练判',
|
|
335
|
+
'quiz.unsure': '和参考答案对不上 · 交卷时教练确认',
|
|
336
|
+
'quiz.unsureKey': '参考答案(可能有误):{answer}',
|
|
337
|
+
'quiz.source': '查看原文出处',
|
|
338
|
+
'quiz.showQuote': '看参考原文',
|
|
339
|
+
'quiz.hideQuote': '收起原文',
|
|
340
|
+
'quiz.void': '题有问题',
|
|
341
|
+
'quiz.voidHint': '题目或答案本身有错:这题作废、不计分,教练会换一道',
|
|
342
|
+
'quiz.explainBefore': '讲讲思路',
|
|
343
|
+
'quiz.explainBeforeHint': '不会做:请教练讲思路和要用的知识点,不直接给答案',
|
|
344
|
+
'quiz.explainHint': '请教练讲清楚为什么、差在哪',
|
|
345
|
+
'quiz.explain': '讲这题',
|
|
346
|
+
'quiz.explainPrimed': '已填入对话框',
|
|
347
|
+
'quiz.explainBlank': '(没写)',
|
|
348
|
+
'quiz.explainRight': '判的是对',
|
|
349
|
+
'quiz.explainWrong': '判的是错',
|
|
350
|
+
'quiz.explainOpen': '还没判',
|
|
351
|
+
'quiz.unvoid': '已标为有问题 · 撤回',
|
|
352
|
+
'quiz.fillPlaceholder': '填空',
|
|
353
|
+
'quiz.fillMathPlaceholder': '填写答案,公式写成 $…$',
|
|
354
|
+
'quiz.preview': '预览',
|
|
355
|
+
'quiz.freePlaceholder': '写下你的回答',
|
|
356
|
+
'quiz.handOpen': '待判',
|
|
357
|
+
'quiz.handUnsure': '待确认;参考答案 {key},可能有误',
|
|
358
|
+
'quiz.handVoid': '这题有问题',
|
|
359
|
+
'quiz.handedOver': '答案已填进会话输入框,发送后教练判题并落账',
|
|
360
|
+
'result.title': '结算',
|
|
361
|
+
'result.line': '过关线 {pass}%',
|
|
362
|
+
'result.passed': '过关',
|
|
363
|
+
'result.notYet': '还差一点,可以重考',
|
|
364
|
+
'result.cards': '卡片的变化',
|
|
365
|
+
'result.cardUp': '升一格',
|
|
366
|
+
'result.cardBack': '明天再复习',
|
|
367
|
+
'result.cardNew': '新记下',
|
|
368
|
+
'result.voided': '其中 {count} 题作废不计分',
|
|
369
|
+
'result.next': '去下一节',
|
|
370
|
+
'result.toPath': '回到路线',
|
|
371
|
+
'result.retake': '重考错题 {count} → 带进会话',
|
|
372
|
+
'result.again': '再出一套新题 → 带进会话',
|
|
373
|
+
'review.title': '复习',
|
|
374
|
+
'review.due': '到期复习',
|
|
375
|
+
'review.start': '开始复习',
|
|
376
|
+
'review.progress': '复习 {at}/{total}',
|
|
377
|
+
'review.nothing': '今天没有要复习的卡片',
|
|
378
|
+
'review.done': '复习完了,共 {count} 张',
|
|
379
|
+
'review.askWord': '这里的 {term} 是什么意思?',
|
|
380
|
+
'review.askConcept': '用一句话说说:{term}',
|
|
381
|
+
'review.flip': '翻面',
|
|
382
|
+
'review.forgot': '忘了',
|
|
383
|
+
'review.fuzzy': '模糊',
|
|
384
|
+
'review.recalled': '记得',
|
|
385
|
+
'review.inDays': '{days} 天后',
|
|
386
|
+
'review.youAsked': '你问过:{note}',
|
|
387
|
+
'review.youMissed': '你答错过:{note}',
|
|
388
|
+
'prime.addBook': '我在「{project}」里有一本书:《》(版本:)。请联网核对版本和目录,按学习顺序上架(origin: learner),然后为它排一条学习路线草稿。',
|
|
389
|
+
'prime.addResource': '请把这条链接放上「{project}」的架子:(粘贴 url)。请联网打开它,补上标题、类型(article/video/repo/tool/course/hardware)和一句话 note(为什么给它),用 library_textbook 落账(kind 填链接类型)。',
|
|
390
|
+
'prime.plan': '请为《{book}》排一条学习路线草稿。',
|
|
391
|
+
'prime.replan': '请重新为《{book}》排学习路线:',
|
|
392
|
+
'prime.readBook': '我们来读《{book}》。',
|
|
393
|
+
'prime.node': '我在读《{book}》的「{node}」,想问:',
|
|
394
|
+
'prime.photo': '这是我读《{book}》「{node}」时拍的一页,请记下这一页:我划线的词都存成知识卡片,拿不准的单独告诉我。',
|
|
395
|
+
'prime.quiz.mine': '请为《{book}》的「{node}」出一套章节考,只考我自己画的重点和记下的卡片(focus: mine),不要用书本内容凑;如果这一节我画的不够,就少出几题并告诉我。',
|
|
396
|
+
'prime.quiz.book': '请为《{book}》的「{node}」出一套章节考,只考这一节的书本内容(focus: book)。',
|
|
397
|
+
'prime.quiz.mixed': '请为《{book}》的「{node}」出一套章节考,先考我画的重点,再补这一节的书本内容(focus: mixed)。',
|
|
398
|
+
'prime.quiz.weakSuffix': ';我最近在这一站的薄弱点:{terms},请优先围绕它们出题',
|
|
399
|
+
'prime.quiz.pointsSuffix': '。这次重点考:{points}',
|
|
400
|
+
'prime.quiz.kindsSuffix': ';题型只要:{kinds}',
|
|
401
|
+
'prime.quiz.countSuffix': ';题量:{count} 题',
|
|
402
|
+
'prime.card': '「{term}」我还是不太懂,能再讲讲吗?',
|
|
403
|
+
'prime.keepMark': '{page} 上的「{word}」确实是我划的,请补成知识卡片(按这一页的原句给本句义)。',
|
|
404
|
+
'prime.addMissed': '{page} 上我还划了「{word}」,你漏记了,请补成知识卡片(按这一页的原句给本句义)。',
|
|
405
|
+
'prime.explainHint': '我在做测验(quiz {quiz})第 {number} 题,不会做。请先讲思路和要用到的知识点,别直接给答案,让我自己再试一次:\n{prompt}\n{options}',
|
|
406
|
+
'prime.explainAfter': '请具体讲讲测验(quiz {quiz})第 {number} 题:\n{prompt}\n{options}\n我的答案:{given}({verdict})\n参考答案:{answer}\n讲清楚为什么、我差在哪;参考答案本身要是有问题,直接指出。',
|
|
407
|
+
'prime.grade': '我在侧栏做完了章节考(quiz {quiz}),请判题并用 library_assess 落账。标「待确认」的填空和参考答案对不上——参考答案可能本身有错,按题目本身判;若是参考答案错了,告诉我:\n{answers}',
|
|
408
|
+
'prime.notes': '请为「{node}」(站 id {nodeId})写一份讲义落库(library_notes):这一站的讲解、我卡住的点、易错清单。这一站取材是讲授的话,讲义就是教材,请写完整;是书的话,讲义是陪读笔记,不替代原书。写完不必贴在会话里,我会去「讲义」tab 读。',
|
|
409
|
+
'prime.quiz.retake': '请为「{node}」出一套错题重考:下面是我答错过的题,请换角度围绕同样的薄弱点出题(不要照抄原题),用 library_quiz 落库:\n{list}',
|
|
410
|
+
'prime.quiz.replace': '我在「{node}」的章节考里把这几题标了「这题有问题」(作废不计分)。请换一批新题(同样的考点、不同的问法),用 library_quiz 落库:\n{list}',
|
|
411
|
+
'prime.quiz.missedAll': '请围绕我最近答错的题出一套练习(不挂站的自由卷),换角度考同样的薄弱点(不要照抄原题),用 library_quiz 落库:\n{list}',
|
|
412
|
+
'prime.result.retake': '我刚做完一套卷(quiz {quiz}),答错 {count} 题。请围绕这些错题换角度再出一套(同样的考点,不照抄原题;范围与挂站和这套卷一致),用 library_quiz 落库:\n{list}',
|
|
413
|
+
'prime.result.again': '我刚做完一套卷(quiz {quiz},{percent}%)。请按这套卷的范围与挂站出一套全新的题(不重复这套的题目),用 library_quiz 落库。',
|
|
414
|
+
'prime.accept': '我在做「{node}」(站 id {nodeId})的动手验收。验收标准(每行带 id):\n{criteria}\n我的证据与说明贴在下面:\n(终端输出 / 截图 / 仓库链接)\n请逐条判(verdict 的 task 用行 id,如 L1),并用 library_assess(node {nodeId})落账。',
|
|
415
|
+
'bind.unbound': '绑定书',
|
|
416
|
+
'bind.bound': '学习 · {title}',
|
|
417
|
+
'bind.aria': '这次对话学的项目或书',
|
|
418
|
+
'bind.heading': '这次对话学哪本书',
|
|
419
|
+
'bind.wholeProject': '{project}(整个项目)',
|
|
420
|
+
'bind.empty': '还没有学习项目:在右栏图书馆里新建',
|
|
421
|
+
'bind.unbind': '解除绑定',
|
|
422
|
+
'bind.failed': '绑定没成功,再试一次',
|
|
423
|
+
'toast.recorded': '已记下:{terms}',
|
|
424
|
+
'toast.undo': '撤销',
|
|
425
|
+
'toast.undone': '已撤销',
|
|
426
|
+
'project.cardMeta': '{books} 本教材 · {cards} 张卡 · 今天 {due} 张到期',
|
|
427
|
+
'project.style': '颜色与图标',
|
|
428
|
+
'project.edit': '编辑项目',
|
|
429
|
+
'project.delete': '删除项目…',
|
|
430
|
+
'project.templateChange': '只影响以后记的卡:语言学习按单词记,学科知识按概念记;已有的卡不变',
|
|
431
|
+
'resource.title': '资源 · {count}',
|
|
432
|
+
'resource.add': '加链接',
|
|
433
|
+
'resource.empty': '还没有资源。教练找的文章、工具、仓库会放在这里;你也可以在会话里丢链接给它。',
|
|
434
|
+
'resource.kind.article': '文章',
|
|
435
|
+
'resource.kind.video': '视频',
|
|
436
|
+
'resource.kind.repo': '仓库',
|
|
437
|
+
'resource.kind.tool': '工具',
|
|
438
|
+
'resource.kind.course': '课程',
|
|
439
|
+
'resource.kind.hardware': '硬件',
|
|
440
|
+
'resource.kind.book': '书',
|
|
441
|
+
'accept.meta': '{count} 条验收',
|
|
442
|
+
'accept.title': '验收标准',
|
|
443
|
+
'accept.station': '这一站考作品 · {count} 条验收标准',
|
|
444
|
+
'accept.passRule': '过 {percent}% 解锁',
|
|
445
|
+
'accept.hint': '教练逐条判(带 → 机检的行由引用的测验自动判),过线才解锁下一站。',
|
|
446
|
+
'accept.machine': '机检',
|
|
447
|
+
'accept.submit': '提交验收 → 带进会话',
|
|
448
|
+
'accept.submitHint': '验收单连同你的证据说明填进会话输入框,教练逐条判。',
|
|
449
|
+
'accept.history': '验收记录',
|
|
450
|
+
'cover.book': '书',
|
|
451
|
+
'cover.link': '链接',
|
|
452
|
+
'cover.topic': '讲授',
|
|
453
|
+
'cover.chapters': '第 {ranges} 章',
|
|
454
|
+
'prov.web': '已核对',
|
|
455
|
+
'prov.model': '未核对',
|
|
456
|
+
'prov.user': '你给的',
|
|
457
|
+
'book.shelfMeta': '{done}/{total} 关',
|
|
458
|
+
'book.extrasTitle': '开始前 / 附录',
|
|
459
|
+
'book.extrasBefore': '开始前:{first}',
|
|
460
|
+
'book.extrasCount': '{count} 项',
|
|
461
|
+
'book.extraBefore': '开始前',
|
|
462
|
+
'book.extraReference': '附录',
|
|
463
|
+
'review.summaryTitle': '复习完成',
|
|
464
|
+
'review.practiceProgress': '再练 {at}/{total}',
|
|
465
|
+
'review.flipMode': '翻卡模式',
|
|
466
|
+
'review.combo': '连对 {count}',
|
|
467
|
+
'review.mode.cloze': '原句填词',
|
|
468
|
+
'review.mode.choice': '选本句义',
|
|
469
|
+
'review.mode.spell': '拼写',
|
|
470
|
+
'review.mode.explain': '一句话说清',
|
|
471
|
+
'review.hint': '提示:{gloss} · {letters}…',
|
|
472
|
+
'review.hintLetters': '提示:{letters}…',
|
|
473
|
+
'review.typeHere': '在这里写',
|
|
474
|
+
'review.right': '对了',
|
|
475
|
+
'review.answerWas': '答案是 {answer}',
|
|
476
|
+
'review.variant': '也对。书里写的是 {answer}',
|
|
477
|
+
'review.nextIn': '下次 {days} 天后',
|
|
478
|
+
'review.whichMeaning': '这里的 {term} 是什么意思?',
|
|
479
|
+
'review.meaningWas': '这里是:{gloss}',
|
|
480
|
+
'review.explainHere': '先用自己的话说一句',
|
|
481
|
+
'review.check': '对照答案',
|
|
482
|
+
'review.reference': '参考答案',
|
|
483
|
+
'review.self.forgot': '没说对',
|
|
484
|
+
'review.self.fuzzy': '差一点',
|
|
485
|
+
'review.self.recalled': '说对了',
|
|
486
|
+
'review.askCoachJudge': '交给教练判',
|
|
487
|
+
'review.summaryLine': '答对 · 最长连对 {best}',
|
|
488
|
+
'review.practiceNote': '这轮是再练,不改复习时间。',
|
|
489
|
+
'review.stillMissed': '还没记住({count})',
|
|
490
|
+
'review.backTomorrow': '明天再来({count})',
|
|
491
|
+
'review.movedUp': '升了一格({count})',
|
|
492
|
+
'review.steady': '靠提示答对,保持原地({count})',
|
|
493
|
+
'review.again': '再练错的 {count} 张',
|
|
494
|
+
'review.done.back': '回到图书馆',
|
|
495
|
+
'prime.judgeExplain': '复习时我这样解释「{term}」:{answer}。请帮我看看说得对不对、差在哪。',
|
|
496
|
+
'when.justNow': '刚刚',
|
|
497
|
+
'when.minutes': '{count} 分钟前',
|
|
498
|
+
'when.hours': '{count} 小时前',
|
|
499
|
+
'when.yesterday': '昨天',
|
|
500
|
+
'when.days': '{count} 天前',
|
|
501
|
+
'origin.learner': '你的书',
|
|
502
|
+
'origin.picked': '模型选的书',
|
|
503
|
+
'origin.digital': '电子资料',
|
|
504
|
+
'origin.authored': '模型自编',
|
|
505
|
+
'action.done': '完成',
|
|
506
|
+
'continue.label': '继续学习',
|
|
507
|
+
'continue.labelIn': '继续学习 · {project}',
|
|
508
|
+
'continue.where': '第 {seq} 本《{book}》',
|
|
509
|
+
'continue.go': '继续',
|
|
510
|
+
'project.textbooks': '教材 · 按学习顺序 · {count}',
|
|
511
|
+
'project.reorder': '调整顺序',
|
|
512
|
+
'project.reorderHint': '编号就是建议的学习顺序;「继续学习」从编号最小、还没学完的那本开始。顺序不加锁,后面的教材随时能开学。',
|
|
513
|
+
'project.moveUp': '把《{book}》往前挪',
|
|
514
|
+
'project.moveDown': '把《{book}》往后挪',
|
|
515
|
+
'project.currentStation': '当前:{station}',
|
|
516
|
+
'project.draftRow': '草稿待采用 · {count} 站',
|
|
517
|
+
'project.draftsWaiting': '{count} 份草稿待采用',
|
|
518
|
+
'project.draftsBanner': '{count} 本教材的路线草稿待采用',
|
|
519
|
+
'project.draftsOpen': '从第 {seq} 本看',
|
|
520
|
+
'project.noTextbooks': '还没有教材',
|
|
521
|
+
'project.noTextbooksBody': '每本教材一条路线。教材可以是你手上的书,也可以让教练挑现成教材、电子资料,或者自己编一本。',
|
|
522
|
+
'project.startOwn': '我有书',
|
|
523
|
+
'project.startOwnHint': '告诉教练书名和版本',
|
|
524
|
+
'project.startPick': '帮我选教材',
|
|
525
|
+
'project.startPickHint': '教练按目标排一份书单',
|
|
526
|
+
'project.deleteTitle': '删除项目「{project}」?',
|
|
527
|
+
'project.deleteTextbooks': '{count} 本教材,连同路线、讲义、拍照页',
|
|
528
|
+
'project.deleteCards': '{count} 张知识卡片(今天 {due} 张到期)',
|
|
529
|
+
'project.deleteAttempts': '{count} 次测验作答记录',
|
|
530
|
+
'project.deleteLinks': '{count} 条资料链接',
|
|
531
|
+
'project.deleteNote': '以上内容一起删除,无法恢复。绑定到这个项目的会话会解除绑定,对话本身不受影响。',
|
|
532
|
+
'project.deleteConfirmButton': '删除项目',
|
|
533
|
+
'book.deleteTitle': '从「{project}」删除《{book}》?',
|
|
534
|
+
'book.deletePath': '路线(已完成 {done}/{total})、讲义与草稿',
|
|
535
|
+
'book.deleteDraft': '路线草稿',
|
|
536
|
+
'book.deletePages': '{count} 张拍照页',
|
|
537
|
+
'book.deleteQuizzes': '本书的 {count} 份测验与作答记录',
|
|
538
|
+
'book.deleteKeep': '✓ 知识卡片保留在项目里(不再挂这本教材)',
|
|
539
|
+
'book.deleteRenumber': '后面的教材编号自动前移。无法恢复。',
|
|
540
|
+
'book.deleteConfirmButton': '删除教材',
|
|
541
|
+
'book.skipped': '本路线不学 · {count} 章',
|
|
542
|
+
'prime.pickTextbooks': '请帮我为「{project}」挑教材:按目标排一份书单(可以是现成的书、电子资料,或者你自编),写清每本为什么选、只学哪几章,按学习顺序上架,并给每本起草路线。我的基础和每周能投入的时间:',
|
|
543
|
+
};
|
|
544
|
+
export const en = {
|
|
545
|
+
'tab.label': 'Library',
|
|
546
|
+
'guide.description': 'Close reading by project: one learning path per textbook, photographed highlights, knowledge cards and chapter quizzes',
|
|
547
|
+
'state.loading': 'Loading…',
|
|
548
|
+
'state.error': 'Something went wrong: {reason}',
|
|
549
|
+
'action.back': 'Back',
|
|
550
|
+
'action.save': 'Save',
|
|
551
|
+
'action.cancel': 'Cancel',
|
|
552
|
+
'action.confirmDelete': 'Confirm delete',
|
|
553
|
+
'action.more': 'More',
|
|
554
|
+
'action.refresh': 'Refresh',
|
|
555
|
+
'action.askCoach': 'Ask the coach',
|
|
556
|
+
'action.bindProject': 'Bind this session to the project',
|
|
557
|
+
'action.bindBook': 'Bind this session to the book',
|
|
558
|
+
'notice.primed': 'The request is in the conversation input — send it and the coach takes it from there',
|
|
559
|
+
'notice.noConversation': 'This session has no input — open the library in a learning-mode session',
|
|
560
|
+
'notice.bound': 'This session is bound',
|
|
561
|
+
'today.title': 'Today',
|
|
562
|
+
'today.emptyTitle': 'No learning project yet',
|
|
563
|
+
'today.emptyBody': 'A project is one learning goal — “Math”, “Embodied AI”. Textbooks go inside it, one path each.',
|
|
564
|
+
'today.dueLine': 'cards due · about {minutes} min',
|
|
565
|
+
'today.startReview': 'Start review',
|
|
566
|
+
'today.dueTitle': 'Review today',
|
|
567
|
+
'today.recorded': 'Recently noted by the coach',
|
|
568
|
+
'today.projects': 'Projects',
|
|
569
|
+
'template.language': 'Language',
|
|
570
|
+
'template.subject': 'Subject',
|
|
571
|
+
'template.custom': 'Custom',
|
|
572
|
+
'template.language.hint': 'An underline is a word or phrase; quizzed by meaning in context, paraphrase and spelling.',
|
|
573
|
+
'template.subject.hint': 'An underline is a concept; quizzed by explanation, contrast and application.',
|
|
574
|
+
'template.custom.hint': 'Tell the coach how you want to be quizzed once it exists.',
|
|
575
|
+
'project.new': 'New project',
|
|
576
|
+
'project.name': 'Name',
|
|
577
|
+
'project.namePlaceholder': 'Neuroscience, IELTS…',
|
|
578
|
+
'project.template': 'Template',
|
|
579
|
+
'project.goal': 'Goal (optional)',
|
|
580
|
+
'project.goalPlaceholder': 'Academic 7.0 by December 14',
|
|
581
|
+
'project.create': 'Create',
|
|
582
|
+
'project.meta': '{template} · {books} books · {cards} cards',
|
|
583
|
+
'project.goalLine': 'Goal: {goal}',
|
|
584
|
+
'book.add': 'Add a textbook',
|
|
585
|
+
'book.draftWaiting': 'Roadmap draft waiting',
|
|
586
|
+
'book.noRoadmap': 'No roadmap yet',
|
|
587
|
+
'book.noRoadmapBody': 'Ask the coach to plan one from the contents; the draft appears here.',
|
|
588
|
+
'book.askPlan': 'Ask for a roadmap',
|
|
589
|
+
'book.progressMeta': '{done}/{total} · next: {next}',
|
|
590
|
+
'book.finished': 'finished',
|
|
591
|
+
'book.replan': 'Re-plan',
|
|
592
|
+
'book.delete': 'Delete this textbook…',
|
|
593
|
+
'book.draftTitle': 'Roadmap draft',
|
|
594
|
+
'book.draftMeta': '{count} nodes',
|
|
595
|
+
'book.draftReplaces': 'Adopting replaces the current path; completed nodes keep their progress.',
|
|
596
|
+
'book.adopt': 'Adopt as this textbook’s path',
|
|
597
|
+
'book.discard': 'Discard',
|
|
598
|
+
'book.pathTitle': 'Roadmap · {done}/{total}',
|
|
599
|
+
'book.contentsMeta': '{rows} contents rows · {kind}',
|
|
600
|
+
'book.contentsSource': 'contents source',
|
|
601
|
+
'bookKind.knowledge': 'knowledge',
|
|
602
|
+
'bookKind.material': 'material',
|
|
603
|
+
'book.kindLine': 'Type: {kind}',
|
|
604
|
+
'book.kindHint.knowledge': 'The knowledge is what is tested: the coach may quiz from domain knowledge (textbooks, popular science).',
|
|
605
|
+
'book.kindHint.material': 'The exact text is what is tested: every content question quotes a page you photographed (exam papers, literature, readers).',
|
|
606
|
+
'book.kindToMaterial': 'Make it material',
|
|
607
|
+
'book.kindToKnowledge': 'Make it knowledge',
|
|
608
|
+
'tocSource.web': 'Contents verified on the web',
|
|
609
|
+
'tocSource.model': 'Contents from model knowledge, unverified',
|
|
610
|
+
'tocSource.photo': 'Contents from a photo',
|
|
611
|
+
'nodeKind.quiz': 'quiz',
|
|
612
|
+
'nodeKind.read': 'read',
|
|
613
|
+
'nodeKind.acceptance': 'hands-on',
|
|
614
|
+
'nodeKind.practice': 'hands-on',
|
|
615
|
+
'node.tabs': 'This node',
|
|
616
|
+
'node.guide': 'Guide',
|
|
617
|
+
'node.pages': 'My notes',
|
|
618
|
+
'node.quiz': 'Chapter quiz',
|
|
619
|
+
'node.locked': 'This node is locked — finish the ones before it first.',
|
|
620
|
+
'node.goals': 'What to master',
|
|
621
|
+
'node.covers': 'Contents rows',
|
|
622
|
+
'node.markRead': 'Mark as read',
|
|
623
|
+
'node.photo': 'Photograph notes',
|
|
624
|
+
'node.photoSent': 'The photo is in the conversation — once the coach reads it, the page and its cards show up here',
|
|
625
|
+
'node.photoWaiting': 'Waiting for the coach…',
|
|
626
|
+
'node.photoRecorded': 'Page recorded — the cards are below',
|
|
627
|
+
'node.thisPage': 'this page',
|
|
628
|
+
'node.addMissed': 'Add a missed word',
|
|
629
|
+
'node.addMissedPlaceholder': 'A word you marked that was not recorded',
|
|
630
|
+
'node.send': 'Send to the coach',
|
|
631
|
+
'node.uncertain': 'Unsure:',
|
|
632
|
+
'node.fixSent': 'Told the coach in the conversation',
|
|
633
|
+
'node.pageCaption': '{label} · {marks} marks',
|
|
634
|
+
'node.cardsHere': 'Cards from this node · {count}',
|
|
635
|
+
'node.passRule': 'Pass at {percent}%',
|
|
636
|
+
'node.best': 'best {percent}%, {attempts} sittings',
|
|
637
|
+
'node.quizRow': '{count} questions',
|
|
638
|
+
'node.quizLatest': 'Latest quiz · {count} questions',
|
|
639
|
+
'node.quizEarlier': 'Earlier quizzes',
|
|
640
|
+
'book.quizzes': 'Book-level quizzes · {count}',
|
|
641
|
+
'book.points': 'Points: {points}',
|
|
642
|
+
'mistakes.title': 'Mistakes · {count}',
|
|
643
|
+
'mistakes.stat': 'missed',
|
|
644
|
+
'mistakes.cta': 'Quiz me on the missed → to the conversation',
|
|
645
|
+
'mistakes.from': 'from 「{node}」',
|
|
646
|
+
'project.quizzes': 'Free quizzes · {count}',
|
|
647
|
+
'node.askQuiz': 'Ask for a quiz',
|
|
648
|
+
'node.askQuizAgain': 'A fresh set',
|
|
649
|
+
'node.asking': 'The coach is composing your quiz…',
|
|
650
|
+
'node.askStale': 'No new quiz has landed yet',
|
|
651
|
+
'node.askSince': 'waiting {minutes} min',
|
|
652
|
+
'node.askAgain': 'Ask again',
|
|
653
|
+
'node.askDismiss': 'Stop waiting',
|
|
654
|
+
'node.kindsMixed': 'any kind',
|
|
655
|
+
'node.askCount': '{count} questions',
|
|
656
|
+
'node.askPointsShort': '{count} points in focus',
|
|
657
|
+
'node.quizWaiting': 'Waiting for the coach…',
|
|
658
|
+
'node.notes': 'Notes',
|
|
659
|
+
'path.progress': '{done} / {total} stations passed',
|
|
660
|
+
'path.mastered': '{done} / {total} points mastered',
|
|
661
|
+
'path.rows': 'ch. {rows}',
|
|
662
|
+
'path.points': '{count} points',
|
|
663
|
+
'path.done': 'passed',
|
|
664
|
+
'path.doneBest': 'passed · {percent}%',
|
|
665
|
+
'path.studying': 'studying',
|
|
666
|
+
'path.studyingOpen': 'studying · {count} to retake',
|
|
667
|
+
'path.ready': 'prepared',
|
|
668
|
+
'path.dotsLabel': 'Point mastery',
|
|
669
|
+
'path.stationsPassed': 'stations passed',
|
|
670
|
+
'path.pointsMastered': 'points mastered',
|
|
671
|
+
'path.nextTodo': 'Next · not prepared yet; any station can come first',
|
|
672
|
+
'path.nextHint': 'Next; any station can come first',
|
|
673
|
+
'path.continue': 'Continue',
|
|
674
|
+
'path.retake': 'Retake {count}',
|
|
675
|
+
'book.seqOf': 'textbook {seq}',
|
|
676
|
+
'book.contentsLine': '{rows} chapters',
|
|
677
|
+
'book.contentsOpen': 'Show ▾',
|
|
678
|
+
'book.skippedTag': 'not on this path',
|
|
679
|
+
'project.goalMore': 'Goal ▾',
|
|
680
|
+
'project.goalLess': 'Less ▴',
|
|
681
|
+
'project.ringLabel': 'passed',
|
|
682
|
+
'project.ringTitle': '{done} / {total} stations passed',
|
|
683
|
+
'project.bookProgress': '{done} / {total} stations passed',
|
|
684
|
+
'project.noPathYet': 'No path yet · drafted when you get to it',
|
|
685
|
+
'mistakes.statOpen': 'to retake',
|
|
686
|
+
'resource.emptyLine': 'Resources · 0 · articles and tools the coach finds land here',
|
|
687
|
+
'lesson.title': 'Lesson',
|
|
688
|
+
'lesson.titleOf': 'Lesson · {node}',
|
|
689
|
+
'lesson.contents': 'Lesson contents',
|
|
690
|
+
'lesson.contentsMeta': '{count} points',
|
|
691
|
+
'lesson.opening': 'What this lesson covers',
|
|
692
|
+
'lesson.meta': 'Written {at} · {count} sections',
|
|
693
|
+
'lesson.revised': 'revised {n}×',
|
|
694
|
+
'lesson.none': 'This station has no lesson yet.',
|
|
695
|
+
'lesson.doneTitle': 'Feel ready?',
|
|
696
|
+
'lesson.doneHint': 'The chapter quiz asks these {count} points. Anything unclear — ask the coach.',
|
|
697
|
+
'lesson.toQuiz': 'Chapter quiz',
|
|
698
|
+
'lesson.ask': 'Ask the coach',
|
|
699
|
+
'lesson.asked': 'In the chat input — write your question, then send',
|
|
700
|
+
'lesson.notReady': 'Not prepared yet',
|
|
701
|
+
'lesson.notReadyHint': 'Start, and the coach writes this lesson for you. Add a line about what you need in the chat input.',
|
|
702
|
+
'lesson.start': 'Start this station',
|
|
703
|
+
'lesson.preparing': 'The coach is preparing…',
|
|
704
|
+
'lesson.preparingHint': 'Once you send the line in the chat input, the lesson opens by itself when it is ready.',
|
|
705
|
+
'lesson.prepareStale': 'The lesson has not arrived',
|
|
706
|
+
'lesson.cancelWait': 'Cancel',
|
|
707
|
+
'lesson.ready': 'Lesson · {count} points',
|
|
708
|
+
'lesson.open': 'Open the lesson',
|
|
709
|
+
'prime.lessonStart': 'I want to start 「{node}」 in “{book}”. Points: {points}. Please write its lesson (library_notes): the lesson itself, one full section per point, so I need nothing else; references at the end. I will read it first.\nAbout me: ',
|
|
710
|
+
'prime.lessonStartBook': 'I want to start 「{node}」 in “{book}”. Points: {points}. Please write its lesson (library_notes): the lesson itself, one full section per point, so I need nothing else; the book pages and references at the end. I will read it first.\nAbout me: ',
|
|
711
|
+
'prime.lessonAsk': 'I read the lesson for 「{node}」 and want to ask: ',
|
|
712
|
+
'node.notesEmptyTitle': 'No notes for this station yet',
|
|
713
|
+
'node.notesEmpty': 'When the coach finishes teaching this station, the notes land here for re-reading — or ask for them now.',
|
|
714
|
+
'node.notesMeta': 'Coach · {at} · revision {n}',
|
|
715
|
+
'node.notesAsk': 'Ask the coach to expand',
|
|
716
|
+
'node.notesWrite': 'Ask the coach to write notes',
|
|
717
|
+
'node.missedTitle': 'Missed here · {count}',
|
|
718
|
+
'node.missedMeta': 'latest {when}',
|
|
719
|
+
'node.missedShow': 'Show',
|
|
720
|
+
'node.missedHide': 'Hide',
|
|
721
|
+
'node.missedAnswer': 'Answer: {answer}',
|
|
722
|
+
'node.otherMissed': 'Missed at other stations · {count}',
|
|
723
|
+
'node.weakLine': 'Weak here: {terms}',
|
|
724
|
+
'node.pointsTitle': 'Station points',
|
|
725
|
+
'node.pointState.strong': 'mastered',
|
|
726
|
+
'node.pointState.weak': 'weak',
|
|
727
|
+
'node.pointState.untested': 'untested',
|
|
728
|
+
'node.pointsHint': 'Tap to focus the next set on them; unpicked, the coach aims by weakness.',
|
|
729
|
+
'node.pointsHintLabel': 'About picking points',
|
|
730
|
+
'node.askPoints': 'A fresh set · {count} points in focus',
|
|
731
|
+
'node.kindsTitle': 'Kinds',
|
|
732
|
+
'kind.choice': 'choice',
|
|
733
|
+
'kind.fill': 'fill-in',
|
|
734
|
+
'kind.free': 'open',
|
|
735
|
+
'node.countTitle': 'Count',
|
|
736
|
+
'node.settingsTitle': 'Quiz settings',
|
|
737
|
+
'node.setting.range': 'Range',
|
|
738
|
+
'node.paperPassed': 'Last paper · {percent}% · passed',
|
|
739
|
+
'node.paperFailed': 'Last paper · {percent}% · not yet',
|
|
740
|
+
'node.retakeCount': 'Retake the missed {count}',
|
|
741
|
+
'node.redoSame': 'Redo this paper',
|
|
742
|
+
'node.voidedSummary': '{count} flagged as broken · not counted',
|
|
743
|
+
'markdown.copy': 'Copy',
|
|
744
|
+
'markdown.copied': 'Copied',
|
|
745
|
+
'markdown.footnotes': 'Footnotes',
|
|
746
|
+
'node.voidedReplace': 'Ask for replacements → to the conversation',
|
|
747
|
+
'node.focusMineHint': 'Will test: {terms}…',
|
|
748
|
+
'node.focusMineEmpty': 'Nothing marked in this node yet — photograph a page under My notes first, or pick Book content.',
|
|
749
|
+
'node.focusHint.book': 'Only this chapter’s content, not your cards.',
|
|
750
|
+
'node.focusHint.mixed': 'Your marked points first, topped up with the chapter’s content.',
|
|
751
|
+
'focus.mine': 'My marked points only',
|
|
752
|
+
'focus.book': 'Book content only',
|
|
753
|
+
'focus.mixed': 'Both',
|
|
754
|
+
'cards.title': 'Knowledge cards',
|
|
755
|
+
'cards.filters': 'Source',
|
|
756
|
+
'cards.filter.all': 'All',
|
|
757
|
+
'cards.filter.photo': 'Marked',
|
|
758
|
+
'cards.filter.chat': 'Asked',
|
|
759
|
+
'cards.filter.quiz': 'Missed',
|
|
760
|
+
'cards.filter.due': 'Due',
|
|
761
|
+
'cards.search': 'Search',
|
|
762
|
+
'cards.searchPlaceholder': 'Search terms, glosses or sentences',
|
|
763
|
+
'cards.empty': 'No cards here yet. Photographed notes, questions to the coach and chapter quizzes all leave cards.',
|
|
764
|
+
'cards.projectLevel': 'project-wide',
|
|
765
|
+
'cards.dueNow': 'review today',
|
|
766
|
+
'cards.dueIn': 'review in {days} days',
|
|
767
|
+
'cards.weakness': 'weakness {level}/3',
|
|
768
|
+
'cards.box': 'review progress {box}/5',
|
|
769
|
+
'cards.userGloss': 'My gloss: {gloss}',
|
|
770
|
+
'cards.aliases': 'Also: {aliases}',
|
|
771
|
+
'cards.mastered': 'Mastered',
|
|
772
|
+
'cards.delete': 'Delete',
|
|
773
|
+
'source.photo': 'marked',
|
|
774
|
+
'source.chat': 'asked',
|
|
775
|
+
'source.quiz': 'missed',
|
|
776
|
+
'source.manual': 'manual',
|
|
777
|
+
'target.marked': 'marked',
|
|
778
|
+
'target.asked': 'asked',
|
|
779
|
+
'target.missed': 'missed',
|
|
780
|
+
'target.topic': 'chapter topic',
|
|
781
|
+
'evidence.photo': 'photo quote',
|
|
782
|
+
'evidence.web': 'web quote',
|
|
783
|
+
'evidence.knowledge': 'domain knowledge',
|
|
784
|
+
'quiz.start': 'Start',
|
|
785
|
+
'quiz.startNow': 'Start answering',
|
|
786
|
+
'quiz.progress': 'Quiz {at}/{total}',
|
|
787
|
+
'quiz.submit': 'Submit',
|
|
788
|
+
'quiz.next': 'Next',
|
|
789
|
+
'quiz.finish': 'Finish',
|
|
790
|
+
'quiz.remaining': '{count} to go',
|
|
791
|
+
'node.askFocusPicked': 'focus: {points}',
|
|
792
|
+
'node.askFocusWeak': 'focus: weak points',
|
|
793
|
+
'node.askFocusCoach': 'focus: the coach decides',
|
|
794
|
+
'node.neverSat': 'not sat yet',
|
|
795
|
+
'node.passedTag': 'passed',
|
|
796
|
+
'node.pointOpen': '{count} to retake',
|
|
797
|
+
'node.pointsRule': 'Weak = something to retake, or a coach note not yet answered right; practicing = right so far, but fewer than 3 questions across 2 sittings; mastered = nothing to retake, 3 distinct questions right across 2 sittings. Tap a point for why.',
|
|
798
|
+
'node.untakenBox': 'New paper · {count} questions · not answered',
|
|
799
|
+
'node.retakeBox': 'To retake · {count}',
|
|
800
|
+
'node.retakeOther': 'other {count}',
|
|
801
|
+
'node.retakeHint': 'Retakes never count toward passing; a right answer leaves the list and moves its point.',
|
|
802
|
+
'node.retakeStart': 'Start retake',
|
|
803
|
+
'node.askBox': 'A new paper',
|
|
804
|
+
'node.askAdjust': 'Adjust',
|
|
805
|
+
'node.askDone': 'Done',
|
|
806
|
+
'node.askGo': 'Ask',
|
|
807
|
+
'node.focusPoints': 'Focus points',
|
|
808
|
+
'node.earlier': 'Earlier papers · {count}',
|
|
809
|
+
'node.paperUntaken': 'not answered',
|
|
810
|
+
'point.untested': 'untested',
|
|
811
|
+
'point.weak': 'weak',
|
|
812
|
+
'point.practicing': 'practicing',
|
|
813
|
+
'point.mastered': 'mastered',
|
|
814
|
+
'point.why.untested': 'Never asked yet.',
|
|
815
|
+
'point.why.weak': 'Something to retake, or a coach note not yet answered right.',
|
|
816
|
+
'point.why.practicing': 'Right so far, but not enough evidence yet.',
|
|
817
|
+
'point.why.mastered': 'At least 3 distinct questions right, not all in one sitting.',
|
|
818
|
+
'point.needRight': '{count} more distinct questions right',
|
|
819
|
+
'point.needSitting': 'right again in another paper or retake',
|
|
820
|
+
'point.close': 'Close',
|
|
821
|
+
'point.notes': 'Coach notes',
|
|
822
|
+
'point.open': 'To retake · {count}',
|
|
823
|
+
'point.never': 'Never asked yet',
|
|
824
|
+
'point.lastProbe': 'Last asked {when} · {result}',
|
|
825
|
+
'point.lastPass': 'right',
|
|
826
|
+
'point.lastFail': 'wrong',
|
|
827
|
+
'point.retake': 'Retake these {count}',
|
|
828
|
+
'point.ask': 'A paper on it',
|
|
829
|
+
'quiz.retakeProgress': 'Retake {at}/{total}',
|
|
830
|
+
'result.retakeTitle': 'Retake done',
|
|
831
|
+
'result.retakeScore': '{right} / {total} right',
|
|
832
|
+
'result.retakeNote': 'Retakes never count toward passing',
|
|
833
|
+
'result.points': 'Points moved',
|
|
834
|
+
'result.pointTo': '{title} → {state}',
|
|
835
|
+
'result.pointStill': '{title} · still {state}',
|
|
836
|
+
'result.retakeRest': 'Retake the {count} left',
|
|
837
|
+
'result.toStation': 'Back to the quiz tab',
|
|
838
|
+
'today.changes': 'Recent changes',
|
|
839
|
+
'today.retakeLine': '{project} · to retake',
|
|
840
|
+
'today.retakeHint': 'Every station\'s misses in one retake paper; retakes never count',
|
|
841
|
+
'today.cardsDue': 'cards due',
|
|
842
|
+
'today.dueMinutes': 'words and marked concepts · about {minutes} min',
|
|
843
|
+
'today.changeWeak': '{title} → weak',
|
|
844
|
+
'today.changeMastered': '{title} → mastered',
|
|
845
|
+
'today.changeUntested': '{title} → untested',
|
|
846
|
+
'today.changePracticing': '{title} → practicing',
|
|
847
|
+
'today.changeOpen': '{count} to retake',
|
|
848
|
+
'point.counts': '{asked} asked · {right} right now',
|
|
849
|
+
'point.noteCount': '{count} coach notes',
|
|
850
|
+
'point.history': 'How it moved',
|
|
851
|
+
'point.sitPaper': 'paper',
|
|
852
|
+
'point.sitRetake': 'retake',
|
|
853
|
+
'point.sitScore': '{right}/{total} right',
|
|
854
|
+
'point.askBelow': 'To practise this point: pick it under 「A new paper」 → Adjust → Focus points.',
|
|
855
|
+
'node.pointsPicked': '{count} picked',
|
|
856
|
+
'node.pointsWeak': '{count} weak',
|
|
857
|
+
'node.pointsCoach': 'the coach decides',
|
|
858
|
+
'node.kindsHint': 'None picked = any kind.',
|
|
859
|
+
'node.focusPointsHint': 'With none picked, the coach asks the weak and untested points first.',
|
|
860
|
+
'quiz.right': 'Right',
|
|
861
|
+
'quiz.handedOverButton': 'Handed to the coach',
|
|
862
|
+
'quiz.finishing': 'Submitting…',
|
|
863
|
+
'quiz.overrule': 'I was right (written differently)',
|
|
864
|
+
'quiz.overruled': 'Marked right by you',
|
|
865
|
+
'quiz.overruleUndo': 'Undo',
|
|
866
|
+
'quiz.wrong': 'Not quite · answer: {answer}',
|
|
867
|
+
'quiz.coachJudges': 'The coach judges this one after you finish',
|
|
868
|
+
'quiz.unsure': 'Does not match the key · the coach confirms at the end',
|
|
869
|
+
'quiz.unsureKey': 'Key (may be wrong): {answer}',
|
|
870
|
+
'quiz.source': 'View the source',
|
|
871
|
+
'quiz.showQuote': 'Show the reference passage',
|
|
872
|
+
'quiz.hideQuote': 'Hide the passage',
|
|
873
|
+
'quiz.void': 'Broken',
|
|
874
|
+
'quiz.voidHint': 'The question or its key is wrong: it counts for nothing and the coach replaces it',
|
|
875
|
+
'quiz.explainBefore': 'Approach',
|
|
876
|
+
'quiz.explainBeforeHint': 'Stuck: the coach walks you through the approach, not the answer',
|
|
877
|
+
'quiz.explainHint': 'The coach explains why, and where you went wrong',
|
|
878
|
+
'quiz.explain': 'Explain',
|
|
879
|
+
'quiz.explainPrimed': 'In the chat input',
|
|
880
|
+
'quiz.explainBlank': '(blank)',
|
|
881
|
+
'quiz.explainRight': 'marked right',
|
|
882
|
+
'quiz.explainWrong': 'marked wrong',
|
|
883
|
+
'quiz.explainOpen': 'not judged yet',
|
|
884
|
+
'quiz.unvoid': 'Marked broken · undo',
|
|
885
|
+
'quiz.fillPlaceholder': 'Fill in',
|
|
886
|
+
'quiz.fillMathPlaceholder': 'Answer; write math as $…$',
|
|
887
|
+
'quiz.preview': 'Preview',
|
|
888
|
+
'quiz.freePlaceholder': 'Write your answer',
|
|
889
|
+
'quiz.handOpen': 'to judge',
|
|
890
|
+
'quiz.handUnsure': 'to confirm; key {key}, may be wrong',
|
|
891
|
+
'quiz.handVoid': 'broken',
|
|
892
|
+
'quiz.handedOver': 'Your answers are in the conversation input — send them and the coach grades and records the sitting',
|
|
893
|
+
'result.title': 'Result',
|
|
894
|
+
'result.line': 'pass at {pass}%',
|
|
895
|
+
'result.passed': 'Passed',
|
|
896
|
+
'result.notYet': 'Not yet — you can retake it',
|
|
897
|
+
'result.cards': 'How the cards moved',
|
|
898
|
+
'result.cardUp': 'up one box',
|
|
899
|
+
'result.cardBack': 'back tomorrow',
|
|
900
|
+
'result.cardNew': 'newly noted',
|
|
901
|
+
'result.voided': '{count} flagged as broken — not counted',
|
|
902
|
+
'result.next': 'Next node',
|
|
903
|
+
'result.toPath': 'Back to the roadmap',
|
|
904
|
+
'result.retake': 'Retake the missed {count} → to the conversation',
|
|
905
|
+
'result.again': 'A fresh set → to the conversation',
|
|
906
|
+
'review.title': 'Review',
|
|
907
|
+
'review.due': 'Due',
|
|
908
|
+
'review.start': 'Start review',
|
|
909
|
+
'review.progress': 'Review {at}/{total}',
|
|
910
|
+
'review.nothing': 'Nothing to review today',
|
|
911
|
+
'review.done': 'Done — {count} cards reviewed',
|
|
912
|
+
'review.askWord': 'What does {term} mean here?',
|
|
913
|
+
'review.askConcept': 'In one sentence: {term}',
|
|
914
|
+
'review.flip': 'Flip',
|
|
915
|
+
'review.forgot': 'Forgot',
|
|
916
|
+
'review.fuzzy': 'Fuzzy',
|
|
917
|
+
'review.recalled': 'Got it',
|
|
918
|
+
'review.inDays': 'in {days} days',
|
|
919
|
+
'review.youAsked': 'You asked: {note}',
|
|
920
|
+
'review.youMissed': 'You missed it: {note}',
|
|
921
|
+
'prime.addBook': 'I have a book for “{project}”: (title, edition). Verify the edition and its contents on the web, shelve it in study order (origin: learner), then draft its path.',
|
|
922
|
+
'prime.addResource': 'Please put this link on “{project}”’s shelf: (paste the url). Open it on the web, fill in its title, its kind (article/video/repo/tool/course/hardware) and a one-line note on why it earns its place, then record it with library_textbook (kind: the link type).',
|
|
923
|
+
'prime.plan': 'Please draft a roadmap for “{book}”.',
|
|
924
|
+
'prime.replan': 'Please re-plan the roadmap for “{book}”: ',
|
|
925
|
+
'prime.readBook': 'Let’s read “{book}”.',
|
|
926
|
+
'prime.node': 'I’m reading “{node}” in “{book}” and want to ask: ',
|
|
927
|
+
'prime.photo': 'Here is a page I photographed while reading “{node}” in “{book}” — please record it: save every word I marked as a card and tell me which ones you are unsure of.',
|
|
928
|
+
'prime.quiz.mine': 'Please compose a chapter quiz for “{node}” in “{book}” on my own marked points and cards only (focus: mine) — no book content as filler; if I marked too little here, ask fewer questions and tell me.',
|
|
929
|
+
'prime.quiz.book': 'Please compose a chapter quiz for “{node}” in “{book}” on this chapter’s content only (focus: book).',
|
|
930
|
+
'prime.quiz.mixed': 'Please compose a chapter quiz for “{node}” in “{book}”: my marked points first, then this chapter’s content (focus: mixed).',
|
|
931
|
+
'prime.quiz.weakSuffix': '; my current weak points at this station: {terms} — prioritize them',
|
|
932
|
+
'prime.quiz.pointsSuffix': '. Focus this set on: {points}',
|
|
933
|
+
'prime.quiz.kindsSuffix': '; kinds: {kinds} only',
|
|
934
|
+
'prime.quiz.countSuffix': '; count: {count} questions',
|
|
935
|
+
'prime.card': 'I still don’t quite get “{term}” — could you explain it again?',
|
|
936
|
+
'prime.keepMark': '“{word}” on {page} is one I marked — please add it as a card (meaning from that page’s sentence).',
|
|
937
|
+
'prime.addMissed': 'I also marked “{word}” on {page} and it was missed — please add it as a card (meaning from that page’s sentence).',
|
|
938
|
+
'prime.explainHint': 'I am on question {number} of quiz {quiz} and stuck. Walk me through the approach and the ideas it needs — not the answer — so I can try again:\n{prompt}\n{options}',
|
|
939
|
+
'prime.explainAfter': 'Please explain question {number} of quiz {quiz}:\n{prompt}\n{options}\nMy answer: {given} ({verdict})\nKey: {answer}\nWhy is it so, and where did I go wrong? If the key itself is wrong, say so.',
|
|
940
|
+
'prime.grade': 'I finished the chapter quiz (quiz {quiz}) in the sidebar — please grade it and record it with library_assess. Fills marked “to confirm” did not match the key — the key itself may be wrong, so judge by the question; if the key was wrong, tell me:\n{answers}',
|
|
941
|
+
'prime.notes': 'Please write notes for 「{node}」 (station id {nodeId}) into the library (library_notes): the teaching of this station, the points I got stuck on, the pitfalls. If the station draws on coached teaching, the notes ARE the textbook — write them in full; if it draws on a book, the notes are marginalia, never a substitute. No need to paste them here — I will read them in the Notes tab.',
|
|
942
|
+
'prime.quiz.retake': 'Please compose a retake for 「{node}」: these are the questions I missed — probe the same weak points from new angles (do not copy the originals), and store it with library_quiz:\n{list}',
|
|
943
|
+
'prime.quiz.replace': 'I flagged these questions in 「{node}」’s chapter quiz as broken (voided, not counted). Please compose replacements (same points, new angles) and store them with library_quiz:\n{list}',
|
|
944
|
+
'prime.quiz.missedAll': 'Please compose a free practice quiz (no station) around the questions I recently missed across my projects — same weak points, new angles, never the originals verbatim — and store it with library_quiz:\n{list}',
|
|
945
|
+
'prime.result.retake': 'I just finished a paper (quiz {quiz}) and missed {count}. Please compose a retake around these misses — same points, new angles, never the originals verbatim; same scope and gated station as that quiz — and store it with library_quiz:\n{list}',
|
|
946
|
+
'prime.result.again': 'I just finished a paper (quiz {quiz}, {percent}%). Please compose a fresh paper on the same scope and gated station — all-new questions, none repeated — and store it with library_quiz.',
|
|
947
|
+
'prime.accept': 'I’m submitting the “{node}” hands-on station (station id {nodeId}) for acceptance. The criteria (each with its id):\n{criteria}\nMy evidence and notes are below:\n(terminal output / screenshots / repo links)\nPlease judge each line (verdict task = the line id, e.g. L1) and ledger it with library_assess (node {nodeId}).',
|
|
948
|
+
'bind.unbound': 'Bind a book',
|
|
949
|
+
'bind.bound': 'Studying · {title}',
|
|
950
|
+
'bind.aria': 'The project or book this conversation studies',
|
|
951
|
+
'bind.heading': 'Which book this conversation studies',
|
|
952
|
+
'bind.wholeProject': '{project} (whole project)',
|
|
953
|
+
'bind.empty': 'No learning project yet — create one in the library tab',
|
|
954
|
+
'bind.unbind': 'Unbind',
|
|
955
|
+
'bind.failed': 'Binding failed — try again',
|
|
956
|
+
'toast.recorded': 'Noted: {terms}',
|
|
957
|
+
'toast.undo': 'Undo',
|
|
958
|
+
'toast.undone': 'Undone',
|
|
959
|
+
'project.cardMeta': '{books} textbooks · {cards} cards · {due} due today',
|
|
960
|
+
'project.style': 'Color and icon',
|
|
961
|
+
'project.edit': 'Edit project',
|
|
962
|
+
'project.delete': 'Delete project…',
|
|
963
|
+
'project.templateChange': 'Affects only cards noted from now on (language: words; subject: concepts); existing cards stay as they are',
|
|
964
|
+
'resource.title': 'Resources · {count}',
|
|
965
|
+
'resource.add': 'Add a link',
|
|
966
|
+
'resource.empty': 'No links yet. Articles, tools and repos the coach finds land here — drop it a link in the conversation any time.',
|
|
967
|
+
'resource.kind.article': 'article',
|
|
968
|
+
'resource.kind.video': 'video',
|
|
969
|
+
'resource.kind.repo': 'repo',
|
|
970
|
+
'resource.kind.tool': 'tool',
|
|
971
|
+
'resource.kind.course': 'course',
|
|
972
|
+
'resource.kind.hardware': 'hardware',
|
|
973
|
+
'resource.kind.book': 'book',
|
|
974
|
+
'accept.meta': '{count} criteria',
|
|
975
|
+
'accept.title': 'Acceptance criteria',
|
|
976
|
+
'accept.station': 'This station grades your work · {count} criteria',
|
|
977
|
+
'accept.passRule': '{percent}% to unlock',
|
|
978
|
+
'accept.hint': 'The coach judges each line (lines marked → auto are judged by the quiz they reference); the next station unlocks at the pass line.',
|
|
979
|
+
'accept.machine': 'auto-checked',
|
|
980
|
+
'accept.submit': 'Submit for acceptance → to the conversation',
|
|
981
|
+
'accept.submitHint': 'The criteria and your evidence land in the conversation input; the coach judges each line.',
|
|
982
|
+
'accept.history': 'Acceptance history',
|
|
983
|
+
'cover.book': 'book',
|
|
984
|
+
'cover.link': 'link',
|
|
985
|
+
'cover.topic': 'teaching',
|
|
986
|
+
'cover.chapters': 'ch. {ranges}',
|
|
987
|
+
'prov.web': 'verified',
|
|
988
|
+
'prov.model': 'unverified',
|
|
989
|
+
'prov.user': 'from you',
|
|
990
|
+
'book.shelfMeta': '{done}/{total} levels',
|
|
991
|
+
'book.extrasTitle': 'Before you start / Appendix',
|
|
992
|
+
'book.extrasBefore': 'Before you start: {first}',
|
|
993
|
+
'book.extrasCount': '{count} items',
|
|
994
|
+
'book.extraBefore': 'before',
|
|
995
|
+
'book.extraReference': 'appendix',
|
|
996
|
+
'review.summaryTitle': 'Review done',
|
|
997
|
+
'review.practiceProgress': 'Practice {at}/{total}',
|
|
998
|
+
'review.flipMode': 'Flashcard mode',
|
|
999
|
+
'review.combo': 'Streak {count}',
|
|
1000
|
+
'review.mode.cloze': 'Fill the sentence',
|
|
1001
|
+
'review.mode.choice': 'Meaning here',
|
|
1002
|
+
'review.mode.spell': 'Spelling',
|
|
1003
|
+
'review.mode.explain': 'Say it in a sentence',
|
|
1004
|
+
'review.hint': 'Hint: {gloss} · {letters}…',
|
|
1005
|
+
'review.hintLetters': 'Hint: {letters}…',
|
|
1006
|
+
'review.typeHere': 'Type here',
|
|
1007
|
+
'review.right': 'Right',
|
|
1008
|
+
'review.answerWas': 'The answer is {answer}',
|
|
1009
|
+
'review.variant': 'Also right. The book spells it {answer}',
|
|
1010
|
+
'review.nextIn': 'next in {days} days',
|
|
1011
|
+
'review.whichMeaning': 'What does {term} mean here?',
|
|
1012
|
+
'review.meaningWas': 'Here it means: {gloss}',
|
|
1013
|
+
'review.explainHere': 'Say it in your own words first',
|
|
1014
|
+
'review.check': 'Check the answer',
|
|
1015
|
+
'review.reference': 'Reference',
|
|
1016
|
+
'review.self.forgot': 'Missed it',
|
|
1017
|
+
'review.self.fuzzy': 'Almost',
|
|
1018
|
+
'review.self.recalled': 'Got it',
|
|
1019
|
+
'review.askCoachJudge': 'Ask the coach to judge',
|
|
1020
|
+
'review.summaryLine': 'right · longest streak {best}',
|
|
1021
|
+
'review.practiceNote': 'A practice round — the schedule does not move.',
|
|
1022
|
+
'review.stillMissed': 'Still missed ({count})',
|
|
1023
|
+
'review.backTomorrow': 'Back tomorrow ({count})',
|
|
1024
|
+
'review.movedUp': 'Moved up ({count})',
|
|
1025
|
+
'review.steady': 'Right with a hint — staying put ({count})',
|
|
1026
|
+
'review.again': 'Practice the {count} missed',
|
|
1027
|
+
'review.done.back': 'Back to the library',
|
|
1028
|
+
'prime.judgeExplain': 'In review I explained “{term}” as: {answer}. Is that right, and what is missing?',
|
|
1029
|
+
'when.justNow': 'just now',
|
|
1030
|
+
'when.minutes': '{count}m ago',
|
|
1031
|
+
'when.hours': '{count}h ago',
|
|
1032
|
+
'when.yesterday': 'yesterday',
|
|
1033
|
+
'when.days': '{count}d ago',
|
|
1034
|
+
'origin.learner': 'Yours',
|
|
1035
|
+
'origin.picked': 'Coach’s pick',
|
|
1036
|
+
'origin.digital': 'Digital',
|
|
1037
|
+
'origin.authored': 'Coach-written',
|
|
1038
|
+
'action.done': 'Done',
|
|
1039
|
+
'continue.label': 'Continue',
|
|
1040
|
+
'continue.labelIn': 'Continue · {project}',
|
|
1041
|
+
'continue.where': 'Textbook {seq} · “{book}”',
|
|
1042
|
+
'continue.go': 'Continue',
|
|
1043
|
+
'project.textbooks': 'Textbooks · study order · {count}',
|
|
1044
|
+
'project.reorder': 'Reorder',
|
|
1045
|
+
'project.reorderHint': 'The numbers are the suggested study order; Continue starts from the lowest unfinished one. Nothing is locked — a later textbook can start anytime.',
|
|
1046
|
+
'project.moveUp': 'Move “{book}” earlier',
|
|
1047
|
+
'project.moveDown': 'Move “{book}” later',
|
|
1048
|
+
'project.currentStation': 'now: {station}',
|
|
1049
|
+
'project.draftRow': 'draft waiting · {count} stations',
|
|
1050
|
+
'project.draftsWaiting': '{count} drafts waiting',
|
|
1051
|
+
'project.draftsBanner': '{count} textbook path drafts are waiting for you to adopt',
|
|
1052
|
+
'project.draftsOpen': 'Start with #{seq}',
|
|
1053
|
+
'project.noTextbooks': 'No textbooks yet',
|
|
1054
|
+
'project.noTextbooksBody': 'Each textbook gets its own path. It can be a book you hold, or the coach can pick existing books or digital material — or write one.',
|
|
1055
|
+
'project.startOwn': 'I have a book',
|
|
1056
|
+
'project.startOwnHint': 'Tell the coach its title and edition',
|
|
1057
|
+
'project.startPick': 'Pick textbooks for me',
|
|
1058
|
+
'project.startPickHint': 'The coach drafts a reading list for the goal',
|
|
1059
|
+
'project.deleteTitle': 'Delete project “{project}”?',
|
|
1060
|
+
'project.deleteTextbooks': '{count} textbooks with their paths, notes and photographed pages',
|
|
1061
|
+
'project.deleteCards': '{count} knowledge cards ({due} due today)',
|
|
1062
|
+
'project.deleteAttempts': '{count} quiz sittings',
|
|
1063
|
+
'project.deleteLinks': '{count} links',
|
|
1064
|
+
'project.deleteNote': 'All of this goes and cannot be undone. Sessions bound to the project are unbound; the conversations themselves stay.',
|
|
1065
|
+
'project.deleteConfirmButton': 'Delete project',
|
|
1066
|
+
'book.deleteTitle': 'Remove “{book}” from “{project}”?',
|
|
1067
|
+
'book.deletePath': 'its path ({done}/{total} done), notes and draft',
|
|
1068
|
+
'book.deleteDraft': 'its path draft',
|
|
1069
|
+
'book.deletePages': '{count} photographed pages',
|
|
1070
|
+
'book.deleteQuizzes': '{count} quizzes on it and their sittings',
|
|
1071
|
+
'book.deleteKeep': '✓ Knowledge cards stay in the project (no longer hung on this textbook)',
|
|
1072
|
+
'book.deleteRenumber': 'The textbooks after it move up. This cannot be undone.',
|
|
1073
|
+
'book.deleteConfirmButton': 'Delete textbook',
|
|
1074
|
+
'book.skipped': 'Not on this path · {count} chapters',
|
|
1075
|
+
'prime.pickTextbooks': 'Please pick textbooks for “{project}”: a reading list for the goal (existing books, digital material, or one you write), saying why each and which chapters, shelved in study order, with a path drafted for each. My background and weekly time: ',
|
|
1076
|
+
};
|