@siegesailor/terminal-sigma 1.0.0 → 1.2.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.
Files changed (38) hide show
  1. package/README.md +125 -40
  2. package/build/app.js +387 -0
  3. package/build/app.js.map +1 -0
  4. package/build/command-line-interface.js +41 -4
  5. package/build/command-line-interface.js.map +1 -1
  6. package/build/components/character.js +17 -293
  7. package/build/components/character.js.map +1 -1
  8. package/build/components/choice.js +32 -0
  9. package/build/components/choice.js.map +1 -0
  10. package/build/components/entry-form.js +54 -0
  11. package/build/components/entry-form.js.map +1 -0
  12. package/build/components/footer.js +27 -0
  13. package/build/components/footer.js.map +1 -0
  14. package/build/components/logs-view.js +102 -0
  15. package/build/components/logs-view.js.map +1 -0
  16. package/build/components/menu-grid.js +27 -45
  17. package/build/components/menu-grid.js.map +1 -1
  18. package/build/components/today-panel.js +30 -0
  19. package/build/components/today-panel.js.map +1 -0
  20. package/build/content.js +286 -0
  21. package/build/content.js.map +1 -0
  22. package/build/health.js +90 -0
  23. package/build/health.js.map +1 -0
  24. package/build/i18n.js +603 -0
  25. package/build/i18n.js.map +1 -0
  26. package/build/pixel-art.js +359 -0
  27. package/build/pixel-art.js.map +1 -0
  28. package/build/progress.js +72 -34
  29. package/build/progress.js.map +1 -1
  30. package/build/quotes.js +157 -5
  31. package/build/quotes.js.map +1 -1
  32. package/build/theme.js +137 -0
  33. package/build/theme.js.map +1 -0
  34. package/package.json +1 -3
  35. package/build/commands/index.js +0 -274
  36. package/build/commands/index.js.map +0 -1
  37. package/build/components/status-panel.js +0 -19
  38. package/build/components/status-panel.js.map +0 -1
package/build/i18n.js ADDED
@@ -0,0 +1,603 @@
1
+ export const languages = ["en", "zh-TW", "ko"];
2
+ export const workoutActivities = [
3
+ "running",
4
+ "walking",
5
+ "cycling",
6
+ "swimming",
7
+ "strength",
8
+ "yoga",
9
+ "other",
10
+ ];
11
+ export const intensities = ["light", "moderate", "vigorous"];
12
+ export const genders = ["female", "male", "other"];
13
+ export const workStyles = ["desk", "standing", "active", "athlete"];
14
+ export const healthGoals = [
15
+ "loseFat",
16
+ "maintain",
17
+ "buildMuscle",
18
+ "endurance",
19
+ ];
20
+ const en = {
21
+ languageName: "English",
22
+ languageChanged: "Language set to English.",
23
+ chooseLanguage: "Choose your language · 選擇語言 · 언어 선택",
24
+ level: (level) => `Lv ${level}`,
25
+ savedTo: (file) => `Progress is saved to ${file}`,
26
+ notSaved: (error) => `Not saved: ${error}`,
27
+ hints: {
28
+ menu: "↑↓←→ move · enter select · q quit",
29
+ select: "↑↓ move · enter select · esc back",
30
+ form: "enter next · esc cancel",
31
+ logs: "←→ filter · ↑↓ scroll · esc back",
32
+ },
33
+ menu: {
34
+ timer: "Tomato Timer",
35
+ health: "Health",
36
+ logs: "Logs",
37
+ quotes: "Everyday Quotes",
38
+ profile: "Profile",
39
+ theme: "Theme",
40
+ language: "Language",
41
+ },
42
+ describe: {
43
+ timer: (focus, rest) => `Enter starts a ${focus}-minute focus, and pauses, resumes, or stops a running one. A finished focus earns ${focus} XP, then a ${rest}-minute break begins.`,
44
+ health: "Your diet and workouts against targets from your profile, with advice for the rest of today.",
45
+ logs: "Browse every focus, meal, and workout you have logged.",
46
+ quotes: (minutes) => `Draw a new quote. Quotes also refresh every ${minutes} minutes.`,
47
+ profile: "Your name, body, work style, and health goal, which set your daily targets.",
48
+ theme: "Pick the color tone of the dashboard and your character.",
49
+ language: "Switch between English, Traditional Chinese, and Korean.",
50
+ },
51
+ signal: {
52
+ ready: "Ready",
53
+ paused: "Paused",
54
+ entries: (count) => `${count} ${count === 1 ? "log" : "logs"}`,
55
+ newQuote: "New",
56
+ setUp: "Set up",
57
+ proteinLeft: (grams) => `${grams} g protein`,
58
+ onTrack: "On track",
59
+ },
60
+ today: {
61
+ title: "Today",
62
+ character: "Character",
63
+ characterDetail: (next, missing) => `${missing} XP to Lv ${next}`,
64
+ focus: "Focus",
65
+ focusDetail: (count, goal) => `${count} of ${goal} sessions`,
66
+ health: "Health",
67
+ protein: "Protein",
68
+ proteinDetail: (grams, target) => `${grams} of ${target} g`,
69
+ calories: "Calories",
70
+ caloriesDetail: (calories, target, meals) => `${calories} of ${target} kcal · ${meals} ${meals === 1 ? "meal" : "meals"}`,
71
+ workout: "Workout",
72
+ workoutDetail: (minutes, goal) => `${minutes} of ${goal} minutes`,
73
+ },
74
+ activity: {
75
+ idle: "Standing watch",
76
+ focus: "Focusing…",
77
+ break: "On a break…",
78
+ eat: "Eating…",
79
+ run: "Running…",
80
+ lift: "Lifting…",
81
+ stretch: "Stretching…",
82
+ levelUp: "Level up!",
83
+ },
84
+ timer: {
85
+ focus: "Focus",
86
+ break: "Break",
87
+ left: (phase, clock) => `${phase} · ${clock} left`,
88
+ pausedAt: (phase, clock) => `${phase} paused at ${clock}`,
89
+ pause: "Pause",
90
+ resume: "Resume",
91
+ stop: "Stop this tomato",
92
+ back: "Back",
93
+ started: "Focus started.",
94
+ paused: "Timer paused.",
95
+ resumed: "Timer resumed.",
96
+ stopped: "Tomato stopped. An unfinished focus earns no XP.",
97
+ focusComplete: (xp, rest) => `Focus complete, +${xp} XP. ${rest}-minute break started.`,
98
+ breakOver: "Break over. Select Tomato Timer to focus again.",
99
+ },
100
+ form: {
101
+ dietTitle: "Log a meal",
102
+ workoutTitle: "Log a workout",
103
+ profileTitle: "Profile",
104
+ food: "Food",
105
+ foodExample: "e.g. Chicken salad",
106
+ calories: "Calories (kcal)",
107
+ protein: "Protein (g)",
108
+ activity: "Activity",
109
+ minutes: "Minutes",
110
+ intensity: "Intensity",
111
+ name: "Name",
112
+ age: "Age",
113
+ height: "Height (cm)",
114
+ weight: "Weight (kg)",
115
+ gender: "Gender",
116
+ workStyle: "Work style",
117
+ goal: "Health goal",
118
+ required: "Required.",
119
+ wholeNumber: (minimum, maximum) => `Enter a whole number from ${minimum} to ${maximum}.`,
120
+ cancelled: "Nothing changed.",
121
+ mealLogged: (food, xp) => `Logged ${food}, +${xp} XP.`,
122
+ workoutLogged: (activity, minutes, xp) => `Logged ${activity} for ${minutes} minutes, +${xp} XP.`,
123
+ profileSaved: "Profile saved. Your daily targets are updated.",
124
+ levelUp: (level) => `Level up! Lv ${level}.`,
125
+ },
126
+ workoutActivity: {
127
+ running: "Running",
128
+ walking: "Walking",
129
+ cycling: "Cycling",
130
+ swimming: "Swimming",
131
+ strength: "Strength",
132
+ yoga: "Yoga",
133
+ other: "Other",
134
+ },
135
+ intensity: {
136
+ light: "Light",
137
+ moderate: "Moderate",
138
+ vigorous: "Vigorous",
139
+ },
140
+ gender: {
141
+ female: "Female",
142
+ male: "Male",
143
+ other: "Other, or prefer not to say",
144
+ },
145
+ workStyle: {
146
+ desk: "Desk work, mostly sitting",
147
+ standing: "On your feet, like retail or teaching",
148
+ active: "Physical work, like nursing or a warehouse",
149
+ athlete: "Training hard every day",
150
+ },
151
+ goal: {
152
+ loseFat: "Lose fat",
153
+ maintain: "Stay healthy",
154
+ buildMuscle: "Build muscle",
155
+ endurance: "Build endurance",
156
+ },
157
+ health: {
158
+ title: (goal) => `Health · ${goal}`,
159
+ noProfile: "Set up your profile to get targets for your body, work style, and goal.",
160
+ targets: (calories, protein, minutes) => `Daily targets: ${calories} kcal, ${protein} g protein, ${minutes} minutes of exercise.`,
161
+ logMeal: "Log a meal",
162
+ logWorkout: "Log a workout",
163
+ setUp: "Set up my profile",
164
+ back: "Back",
165
+ proteinLeft: (grams) => `${grams} g of protein to go today, e.g. a chicken breast has about 30 g.`,
166
+ proteinDone: "Protein target met for today.",
167
+ caloriesLeft: (calories) => `${calories} kcal left in today's budget.`,
168
+ caloriesOver: (calories) => `${calories} kcal over today's budget; keep the next meal light.`,
169
+ workoutLeft: (minutes, suggestion) => `${minutes} more minutes of exercise today: ${suggestion}.`,
170
+ workoutDone: "Exercise target met for today.",
171
+ suggestion: {
172
+ loseFat: "a brisk walk or an easy run",
173
+ maintain: "a walk or a bike ride",
174
+ buildMuscle: "a strength session",
175
+ endurance: "a run, a ride, or a swim",
176
+ },
177
+ tip: {
178
+ loseFat: "Protein and fiber keep you full; a steady deficit beats a crash diet.",
179
+ maintain: "Move a little every day, and eat protein at every meal.",
180
+ buildMuscle: "Train each muscle twice a week, and spread protein across meals.",
181
+ endurance: "Build volume slowly, and refuel with carbohydrates after long sessions.",
182
+ },
183
+ },
184
+ themes: {
185
+ changed: (name) => `Theme set to ${name}.`,
186
+ names: {
187
+ ember: "Ember",
188
+ moss: "Moss",
189
+ frost: "Frost",
190
+ dusk: "Dusk",
191
+ mono: "Mono",
192
+ },
193
+ },
194
+ logs: {
195
+ title: "Logs",
196
+ all: "All",
197
+ focus: "Focus",
198
+ diet: "Diet",
199
+ workout: "Workout",
200
+ empty: "Nothing logged yet.",
201
+ summary: (count, xp) => `${count} ${count === 1 ? "log" : "logs"} · ${xp} XP`,
202
+ focusEntry: (minutes) => `${minutes}-minute focus`,
203
+ mealEntry: (food, calories, protein) => `${food} · ${calories} kcal · ${protein} g protein`,
204
+ workoutEntry: (activity, minutes, intensity) => `${activity} · ${minutes} min · ${intensity}`,
205
+ },
206
+ recent: {
207
+ title: "Recent",
208
+ empty: "Nothing yet. Start a tomato or log a meal.",
209
+ },
210
+ quoteDrawn: "New quote drawn.",
211
+ };
212
+ const traditionalChinese = {
213
+ languageName: "繁體中文",
214
+ languageChanged: "語言已設為繁體中文。",
215
+ chooseLanguage: "Choose your language · 選擇語言 · 언어 선택",
216
+ level: (level) => `Lv ${level}`,
217
+ savedTo: (file) => `進度儲存於 ${file}`,
218
+ notSaved: (error) => `未儲存:${error}`,
219
+ hints: {
220
+ menu: "↑↓←→ 移動 · enter 選擇 · q 離開",
221
+ select: "↑↓ 移動 · enter 選擇 · esc 返回",
222
+ form: "enter 下一步 · esc 取消",
223
+ logs: "←→ 篩選 · ↑↓ 捲動 · esc 返回",
224
+ },
225
+ menu: {
226
+ timer: "番茄鐘",
227
+ health: "健康",
228
+ logs: "所有紀錄",
229
+ quotes: "每日語錄",
230
+ profile: "個人資料",
231
+ theme: "主題",
232
+ language: "語言",
233
+ },
234
+ describe: {
235
+ timer: (focus, rest) => `按 Enter 開始 ${focus} 分鐘專注;計時中再按 Enter 可暫停、繼續或停止。完成專注獲得 ${focus} XP,接著休息 ${rest} 分鐘。`,
236
+ health: "依個人資料設定的目標檢視飲食與運動,並提供今天剩餘時間的建議。",
237
+ logs: "瀏覽所有專注、飲食與運動紀錄。",
238
+ quotes: (minutes) => `換一則語錄。語錄也會每 ${minutes} 分鐘自動更新。`,
239
+ profile: "你的名字、身體數據、工作型態與健康目標,用來計算每日目標。",
240
+ theme: "選擇儀表板與角色的色調。",
241
+ language: "切換英文、繁體中文與韓文。",
242
+ },
243
+ signal: {
244
+ ready: "就緒",
245
+ paused: "已暫停",
246
+ entries: (count) => `${count} 筆`,
247
+ newQuote: "換一則",
248
+ setUp: "設定",
249
+ proteinLeft: (grams) => `蛋白質 ${grams} 克`,
250
+ onTrack: "達標",
251
+ },
252
+ today: {
253
+ title: "今日",
254
+ character: "角色",
255
+ characterDetail: (next, missing) => `距 Lv ${next} 還差 ${missing} XP`,
256
+ focus: "專注",
257
+ focusDetail: (count, goal) => `${count} / ${goal} 次`,
258
+ health: "健康",
259
+ protein: "蛋白質",
260
+ proteinDetail: (grams, target) => `${grams} / ${target} 克`,
261
+ calories: "熱量",
262
+ caloriesDetail: (calories, target, meals) => `${calories} / ${target} 大卡 · ${meals} 餐`,
263
+ workout: "運動",
264
+ workoutDetail: (minutes, goal) => `${minutes} / ${goal} 分鐘`,
265
+ },
266
+ activity: {
267
+ idle: "守望中",
268
+ focus: "專注中…",
269
+ break: "休息中…",
270
+ eat: "用餐中…",
271
+ run: "跑步中…",
272
+ lift: "重訓中…",
273
+ stretch: "伸展中…",
274
+ levelUp: "升級了!",
275
+ },
276
+ timer: {
277
+ focus: "專注",
278
+ break: "休息",
279
+ left: (phase, clock) => `${phase} · 剩 ${clock}`,
280
+ pausedAt: (phase, clock) => `${phase}已暫停於 ${clock}`,
281
+ pause: "暫停",
282
+ resume: "繼續",
283
+ stop: "結束這顆番茄",
284
+ back: "返回",
285
+ started: "開始專注。",
286
+ paused: "計時已暫停。",
287
+ resumed: "計時繼續。",
288
+ stopped: "已結束這顆番茄。未完成的專注不計 XP。",
289
+ focusComplete: (xp, rest) => `專注完成,+${xp} XP。開始休息 ${rest} 分鐘。`,
290
+ breakOver: "休息結束。選擇番茄鐘開始下一次專注。",
291
+ },
292
+ form: {
293
+ dietTitle: "記錄一餐",
294
+ workoutTitle: "記錄運動",
295
+ profileTitle: "個人資料",
296
+ food: "食物",
297
+ foodExample: "例如:雞肉沙拉",
298
+ calories: "熱量(大卡)",
299
+ protein: "蛋白質(克)",
300
+ activity: "運動項目",
301
+ minutes: "分鐘數",
302
+ intensity: "強度",
303
+ name: "名字",
304
+ age: "年齡",
305
+ height: "身高(公分)",
306
+ weight: "體重(公斤)",
307
+ gender: "性別",
308
+ workStyle: "工作型態",
309
+ goal: "健康目標",
310
+ required: "必填。",
311
+ wholeNumber: (minimum, maximum) => `請輸入 ${minimum} 到 ${maximum} 的整數。`,
312
+ cancelled: "沒有任何變更。",
313
+ mealLogged: (food, xp) => `已記錄 ${food},+${xp} XP。`,
314
+ workoutLogged: (activity, minutes, xp) => `已記錄${activity} ${minutes} 分鐘,+${xp} XP。`,
315
+ profileSaved: "個人資料已儲存,每日目標已更新。",
316
+ levelUp: (level) => `升級了!Lv ${level}。`,
317
+ },
318
+ workoutActivity: {
319
+ running: "跑步",
320
+ walking: "健走",
321
+ cycling: "騎單車",
322
+ swimming: "游泳",
323
+ strength: "重量訓練",
324
+ yoga: "瑜伽",
325
+ other: "其他",
326
+ },
327
+ intensity: {
328
+ light: "輕度",
329
+ moderate: "中度",
330
+ vigorous: "高強度",
331
+ },
332
+ gender: {
333
+ female: "女性",
334
+ male: "男性",
335
+ other: "其他或不透露",
336
+ },
337
+ workStyle: {
338
+ desk: "辦公桌工作,大多坐著",
339
+ standing: "需要久站,例如零售或教學",
340
+ active: "體力勞動,例如護理或倉儲",
341
+ athlete: "每天高強度訓練",
342
+ },
343
+ goal: {
344
+ loseFat: "減脂",
345
+ maintain: "維持健康",
346
+ buildMuscle: "增肌",
347
+ endurance: "提升耐力",
348
+ },
349
+ health: {
350
+ title: (goal) => `健康 · ${goal}`,
351
+ noProfile: "設定個人資料,即可依身體、工作型態與目標取得專屬目標。",
352
+ targets: (calories, protein, minutes) => `每日目標:${calories} 大卡、蛋白質 ${protein} 克、運動 ${minutes} 分鐘。`,
353
+ logMeal: "記錄一餐",
354
+ logWorkout: "記錄運動",
355
+ setUp: "設定個人資料",
356
+ back: "返回",
357
+ proteinLeft: (grams) => `今天還需要 ${grams} 克蛋白質,例如一塊雞胸肉約 30 克。`,
358
+ proteinDone: "今天的蛋白質已達標。",
359
+ caloriesLeft: (calories) => `今天的熱量預算還剩 ${calories} 大卡。`,
360
+ caloriesOver: (calories) => `今天已超出熱量預算 ${calories} 大卡,下一餐吃清淡些。`,
361
+ workoutLeft: (minutes, suggestion) => `今天還需運動 ${minutes} 分鐘:${suggestion}。`,
362
+ workoutDone: "今天的運動已達標。",
363
+ suggestion: {
364
+ loseFat: "快走或輕鬆慢跑",
365
+ maintain: "散步或騎單車",
366
+ buildMuscle: "一次重量訓練",
367
+ endurance: "跑步、騎車或游泳",
368
+ },
369
+ tip: {
370
+ loseFat: "蛋白質與纖維讓人有飽足感;穩定的熱量赤字勝過激烈節食。",
371
+ maintain: "每天都動一動,每餐都吃到蛋白質。",
372
+ buildMuscle: "每個肌群一週訓練兩次,蛋白質分散在各餐攝取。",
373
+ endurance: "循序漸進增加訓練量,長時間訓練後補充碳水化合物。",
374
+ },
375
+ },
376
+ themes: {
377
+ changed: (name) => `主題已設為${name}。`,
378
+ names: {
379
+ ember: "餘燼",
380
+ moss: "苔蘚",
381
+ frost: "霜雪",
382
+ dusk: "暮色",
383
+ mono: "單色",
384
+ },
385
+ },
386
+ logs: {
387
+ title: "所有紀錄",
388
+ all: "全部",
389
+ focus: "專注",
390
+ diet: "飲食",
391
+ workout: "運動",
392
+ empty: "尚無紀錄。",
393
+ summary: (count, xp) => `共 ${count} 筆 · ${xp} XP`,
394
+ focusEntry: (minutes) => `專注 ${minutes} 分鐘`,
395
+ mealEntry: (food, calories, protein) => `${food} · ${calories} 大卡 · 蛋白質 ${protein} 克`,
396
+ workoutEntry: (activity, minutes, intensity) => `${activity} · ${minutes} 分鐘 · ${intensity}`,
397
+ },
398
+ recent: {
399
+ title: "最近",
400
+ empty: "還沒有紀錄。開始一顆番茄或記錄一餐吧。",
401
+ },
402
+ quoteDrawn: "已換一則語錄。",
403
+ };
404
+ const korean = {
405
+ languageName: "한국어",
406
+ languageChanged: "언어가 한국어로 설정되었습니다.",
407
+ chooseLanguage: "Choose your language · 選擇語言 · 언어 선택",
408
+ level: (level) => `Lv ${level}`,
409
+ savedTo: (file) => `진행 상황 저장 위치: ${file}`,
410
+ notSaved: (error) => `저장되지 않음: ${error}`,
411
+ hints: {
412
+ menu: "↑↓←→ 이동 · enter 선택 · q 종료",
413
+ select: "↑↓ 이동 · enter 선택 · esc 뒤로",
414
+ form: "enter 다음 · esc 취소",
415
+ logs: "←→ 필터 · ↑↓ 스크롤 · esc 뒤로",
416
+ },
417
+ menu: {
418
+ timer: "토마토 타이머",
419
+ health: "건강",
420
+ logs: "전체 기록",
421
+ quotes: "오늘의 명언",
422
+ profile: "프로필",
423
+ theme: "테마",
424
+ language: "언어",
425
+ },
426
+ describe: {
427
+ timer: (focus, rest) => `Enter로 ${focus}분 집중을 시작하고, 진행 중에는 일시정지, 재개, 중지할 수 있습니다. 집중을 마치면 ${focus} XP를 얻고 ${rest}분 휴식이 시작됩니다.`,
428
+ health: "프로필로 정한 목표에 맞춰 식단과 운동을 확인하고, 남은 하루에 대한 조언을 받습니다.",
429
+ logs: "기록한 모든 집중, 식사, 운동을 봅니다.",
430
+ quotes: (minutes) => `새 명언을 뽑습니다. 명언은 ${minutes}분마다 자동으로 바뀝니다.`,
431
+ profile: "이름, 신체 정보, 업무 형태, 건강 목표로 하루 목표를 정합니다.",
432
+ theme: "대시보드와 캐릭터의 색조를 고릅니다.",
433
+ language: "영어, 번체 중국어, 한국어 중에서 전환합니다.",
434
+ },
435
+ signal: {
436
+ ready: "준비",
437
+ paused: "일시정지",
438
+ entries: (count) => `${count}개`,
439
+ newQuote: "새로",
440
+ setUp: "설정",
441
+ proteinLeft: (grams) => `단백질 ${grams}g`,
442
+ onTrack: "달성",
443
+ },
444
+ today: {
445
+ title: "오늘",
446
+ character: "캐릭터",
447
+ characterDetail: (next, missing) => `Lv ${next}까지 ${missing} XP`,
448
+ focus: "집중",
449
+ focusDetail: (count, goal) => `${count} / ${goal}회`,
450
+ health: "건강",
451
+ protein: "단백질",
452
+ proteinDetail: (grams, target) => `${grams} / ${target}g`,
453
+ calories: "칼로리",
454
+ caloriesDetail: (calories, target, meals) => `${calories} / ${target} kcal · ${meals}끼`,
455
+ workout: "운동",
456
+ workoutDetail: (minutes, goal) => `${minutes} / ${goal}분`,
457
+ },
458
+ activity: {
459
+ idle: "경계 중",
460
+ focus: "집중 중…",
461
+ break: "휴식 중…",
462
+ eat: "식사 중…",
463
+ run: "달리는 중…",
464
+ lift: "웨이트 중…",
465
+ stretch: "스트레칭 중…",
466
+ levelUp: "레벨 업!",
467
+ },
468
+ timer: {
469
+ focus: "집중",
470
+ break: "휴식",
471
+ left: (phase, clock) => `${phase} · ${clock} 남음`,
472
+ pausedAt: (phase, clock) => `${phase} ${clock}에서 일시정지`,
473
+ pause: "일시정지",
474
+ resume: "재개",
475
+ stop: "이번 토마토 중지",
476
+ back: "뒤로",
477
+ started: "집중을 시작했습니다.",
478
+ paused: "타이머를 일시정지했습니다.",
479
+ resumed: "타이머를 재개했습니다.",
480
+ stopped: "토마토를 중지했습니다. 끝내지 못한 집중은 XP가 없습니다.",
481
+ focusComplete: (xp, rest) => `집중 완료, +${xp} XP. ${rest}분 휴식을 시작합니다.`,
482
+ breakOver: "휴식이 끝났습니다. 토마토 타이머를 선택해 다시 집중하세요.",
483
+ },
484
+ form: {
485
+ dietTitle: "식사 기록",
486
+ workoutTitle: "운동 기록",
487
+ profileTitle: "프로필",
488
+ food: "음식",
489
+ foodExample: "예: 닭가슴살 샐러드",
490
+ calories: "칼로리 (kcal)",
491
+ protein: "단백질 (g)",
492
+ activity: "운동 종류",
493
+ minutes: "시간 (분)",
494
+ intensity: "강도",
495
+ name: "이름",
496
+ age: "나이",
497
+ height: "키 (cm)",
498
+ weight: "몸무게 (kg)",
499
+ gender: "성별",
500
+ workStyle: "업무 형태",
501
+ goal: "건강 목표",
502
+ required: "필수 항목입니다.",
503
+ wholeNumber: (minimum, maximum) => `${minimum}부터 ${maximum}까지의 정수를 입력하세요.`,
504
+ cancelled: "바뀐 것이 없습니다.",
505
+ mealLogged: (food, xp) => `${food}을(를) 기록했습니다, +${xp} XP.`,
506
+ workoutLogged: (activity, minutes, xp) => `${activity} ${minutes}분을 기록했습니다, +${xp} XP.`,
507
+ profileSaved: "프로필을 저장했습니다. 하루 목표가 갱신되었습니다.",
508
+ levelUp: (level) => `레벨 업! Lv ${level}.`,
509
+ },
510
+ workoutActivity: {
511
+ running: "달리기",
512
+ walking: "걷기",
513
+ cycling: "자전거",
514
+ swimming: "수영",
515
+ strength: "근력 운동",
516
+ yoga: "요가",
517
+ other: "기타",
518
+ },
519
+ intensity: {
520
+ light: "가볍게",
521
+ moderate: "보통",
522
+ vigorous: "격렬하게",
523
+ },
524
+ gender: {
525
+ female: "여성",
526
+ male: "남성",
527
+ other: "기타 또는 밝히지 않음",
528
+ },
529
+ workStyle: {
530
+ desk: "사무직, 주로 앉아서",
531
+ standing: "서서 일함, 판매나 교육 등",
532
+ active: "육체 노동, 간호나 물류 등",
533
+ athlete: "매일 강도 높은 훈련",
534
+ },
535
+ goal: {
536
+ loseFat: "체지방 감량",
537
+ maintain: "건강 유지",
538
+ buildMuscle: "근육 증가",
539
+ endurance: "지구력 향상",
540
+ },
541
+ health: {
542
+ title: (goal) => `건강 · ${goal}`,
543
+ noProfile: "프로필을 설정하면 신체, 업무 형태, 목표에 맞는 목표를 받을 수 있습니다.",
544
+ targets: (calories, protein, minutes) => `하루 목표: ${calories} kcal, 단백질 ${protein}g, 운동 ${minutes}분.`,
545
+ logMeal: "식사 기록",
546
+ logWorkout: "운동 기록",
547
+ setUp: "프로필 설정",
548
+ back: "뒤로",
549
+ proteinLeft: (grams) => `오늘 단백질이 ${grams}g 더 필요합니다. 닭가슴살 하나에 약 30g이 들어 있습니다.`,
550
+ proteinDone: "오늘 단백질 목표를 달성했습니다.",
551
+ caloriesLeft: (calories) => `오늘 칼로리 예산이 ${calories} kcal 남았습니다.`,
552
+ caloriesOver: (calories) => `오늘 칼로리 예산을 ${calories} kcal 넘었습니다. 다음 식사는 가볍게 하세요.`,
553
+ workoutLeft: (minutes, suggestion) => `오늘 운동이 ${minutes}분 더 필요합니다: ${suggestion}.`,
554
+ workoutDone: "오늘 운동 목표를 달성했습니다.",
555
+ suggestion: {
556
+ loseFat: "빠르게 걷기나 가벼운 달리기",
557
+ maintain: "산책이나 자전거 타기",
558
+ buildMuscle: "근력 운동 한 세션",
559
+ endurance: "달리기, 자전거, 또는 수영",
560
+ },
561
+ tip: {
562
+ loseFat: "단백질과 식이섬유가 포만감을 줍니다. 꾸준한 적자가 급격한 다이어트보다 낫습니다.",
563
+ maintain: "매일 조금씩 움직이고, 끼니마다 단백질을 드세요.",
564
+ buildMuscle: "각 근육을 일주일에 두 번 훈련하고, 단백질을 여러 끼니에 나눠 드세요.",
565
+ endurance: "훈련량은 천천히 늘리고, 긴 운동 후에는 탄수화물로 보충하세요.",
566
+ },
567
+ },
568
+ themes: {
569
+ changed: (name) => `테마를 ${name}(으)로 설정했습니다.`,
570
+ names: {
571
+ ember: "엠버",
572
+ moss: "이끼",
573
+ frost: "서리",
574
+ dusk: "황혼",
575
+ mono: "모노",
576
+ },
577
+ },
578
+ logs: {
579
+ title: "전체 기록",
580
+ all: "전체",
581
+ focus: "집중",
582
+ diet: "식단",
583
+ workout: "운동",
584
+ empty: "아직 기록이 없습니다.",
585
+ summary: (count, xp) => `${count}개 · ${xp} XP`,
586
+ focusEntry: (minutes) => `${minutes}분 집중`,
587
+ mealEntry: (food, calories, protein) => `${food} · ${calories} kcal · 단백질 ${protein}g`,
588
+ workoutEntry: (activity, minutes, intensity) => `${activity} · ${minutes}분 · ${intensity}`,
589
+ },
590
+ recent: {
591
+ title: "최근",
592
+ empty: "아직 없습니다. 토마토를 시작하거나 식사를 기록해 보세요.",
593
+ },
594
+ quoteDrawn: "새 명언을 뽑았습니다.",
595
+ };
596
+ const messagesByLanguage = {
597
+ en,
598
+ "zh-TW": traditionalChinese,
599
+ ko: korean,
600
+ };
601
+ export const messagesOf = (language) => messagesByLanguage[language];
602
+ export const formatNumber = (language, value) => value.toLocaleString(language);
603
+ //# sourceMappingURL=i18n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../source/i18n.ts"],"names":[],"mappings":"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"}