feat: add study modes to Memorize page

- Add 4 study modes: order-limited, order-infinite, random-limited, random-infinite
- Add mode selector buttons with icons
- Update progress display for infinite modes
- Add translations for all 8 locales
This commit is contained in:
2026-03-18 08:52:45 +08:00
parent c54376cbe6
commit 06012c43f2
9 changed files with 187 additions and 144 deletions

View File

@@ -233,32 +233,11 @@
"showAnswer": "Antwort zeigen",
"nextCard": "Weiter",
"again": "Nochmal",
"hard": "Schwer",
"good": "Gut",
"easy": "Leicht",
"now": "Jetzt",
"lessThanMinute": "weniger als 1 Minute",
"inMinutes": "in {n} Minute{n, plural, one {} other {n}}",
"inHours": "in {n} Stunde{n, plural, one {} other {n}}",
"inDays": "in {n} Tag{en}",
"inMonths": "in {n} Monat{en}",
"minutes": "Minuten",
"days": "Tage",
"months": "Monate",
"minAbbr": "min",
"dayAbbr": "d",
"cardTypeNew": "Neu",
"cardTypeLearning": "Lernen",
"cardTypeReview": "Wiederholen",
"cardTypeRelearning": "Neu lernen",
"reverse": "Umkehren",
"dictation": "Diktat",
"clickToPlay": "Klicken zum Abspielen",
"yourAnswer": "Ihre Antwort",
"typeWhatYouHear": "Schreiben Sie was Sie hören",
"correct": "Richtig!",
"incorrect": "Falsch",
"nextCard": "Nächste"
"modeOrderLimited": "Reihenfolge",
"modeOrderInfinite": "Schleife",
"modeRandomLimited": "Zufällig",
"modeRandomInfinite": "Zufällig Schleife",
"restart": "Neustart"
},
"page": {
"unauthorized": "Nicht autorisiert"

View File

@@ -296,6 +296,11 @@
"reverse": "Reverse",
"dictation": "Dictation",
"clickToPlay": "Click to play audio",
"modeOrderLimited": "Order",
"modeOrderInfinite": "Loop",
"modeRandomLimited": "Random",
"modeRandomInfinite": "Random Loop",
"restart": "Restart"
"yourAnswer": "Your answer",
"typeWhatYouHear": "Type what you hear...",
"correct": "Correct",

View File

@@ -304,32 +304,11 @@
"showAnswer": "Montrer réponse",
"nextCard": "Suivant",
"again": "Encore",
"hard": "Difficile",
"good": "Bien",
"easy": "Facile",
"now": "Maintenant",
"lessThanMinute": "moins d'une minute",
"inMinutes": "dans {n} minute{s}",
"inHours": "dans {n} heure{s}",
"inDays": "dans {n} jour{s}",
"inMonths": "dans {n} mois",
"minutes": "minutes",
"days": "jours",
"months": "mois",
"minAbbr": "min",
"dayAbbr": "j",
"cardTypeNew": "Nouveau",
"cardTypeLearning": "Apprentissage",
"cardTypeReview": "Révision",
"cardTypeRelearning": "Réapprentissage",
"reverse": "Inverser",
"dictation": "Dictée",
"clickToPlay": "Cliquer pour jouer",
"yourAnswer": "Votre réponse",
"typeWhatYouHear": "Tapez ce que vous entendez",
"correct": "Correct!",
"incorrect": "Incorrect",
"nextCard": "Suivant"
"modeOrderLimited": "Ordre",
"modeOrderInfinite": "Boucle",
"modeRandomLimited": "Aléatoire",
"modeRandomInfinite": "Aléatoire Boucle",
"restart": "Recommencer"
},
"page": {
"unauthorized": "Non autorisé"

View File

@@ -304,6 +304,11 @@
"showAnswer": "Mostra risposta",
"nextCard": "Prossima",
"again": "Ancora",
"modeOrderLimited": "Ordine",
"modeOrderInfinite": "Ciclo",
"modeRandomLimited": "Casuale",
"modeRandomInfinite": "Casuale Ciclo",
"restart": "Ricomincia",
"hard": "Difficile",
"good": "Buono",
"easy": "Facile",

View File

@@ -297,7 +297,12 @@
"typeWhatYouHear": "聞こえた内容を入力",
"correct": "正解",
"incorrect": "不正解",
"nextCard": "次へ"
"nextCard": "次へ",
"modeOrderLimited": "順序",
"modeOrderInfinite": "ループ",
"modeRandomLimited": "ランダム",
"modeRandomInfinite": "ランダムループ",
"restart": "最初から"
},
"page": {
"unauthorized": "このデッキにアクセスする権限がありません"

View File

@@ -304,32 +304,11 @@
"showAnswer": "정답 보기",
"nextCard": "다음",
"again": "다시",
"hard": "어려움",
"good": "좋음",
"easy": "쉬움",
"now": "지금",
"lessThanMinute": "1분 미만",
"inMinutes": "{n}분 후",
"inHours": "{n}시간 후",
"inDays": "{n}일 후",
"inMonths": "{n}개월 후",
"minutes": "분",
"days": "일",
"months": "개월",
"minAbbr": "분",
"dayAbbr": "일",
"cardTypeNew": "새 카드",
"cardTypeLearning": "학습 중",
"cardTypeReview": "복습",
"cardTypeRelearning": "재학습",
"reverse": "반대로",
"dictation": "받아쓰기",
"clickToPlay": "클릭하여 재생",
"yourAnswer": "당신의 답",
"typeWhatYouHear": "들은 내용을 입력하세요",
"correct": "정답!",
"incorrect": "오답",
"nextCard": "다음"
"modeOrderLimited": "순서",
"modeOrderInfinite": "반복",
"modeRandomLimited": "무작위",
"modeRandomInfinite": "무작위 반복",
"restart": "다시 시작"
},
"page": {
"unauthorized": "권한이 없습니다"

View File

@@ -329,7 +329,11 @@
"typeWhatYouHear": "ئاڭلىغىنىڭىزنى يېزىڭ",
"correct": "توغرا!",
"incorrect": "خاتا",
"nextCard": "كېيىنكى"
"modeOrderLimited": "تەرتىپ",
"modeOrderInfinite": "دەۋرىيە",
"modeRandomLimited": "ئىختىيارى",
"modeRandomInfinite": "ئىختىيارى دەۋرىيە",
"restart": "قايتا باشلا"
},
"page": {
"unauthorized": "ھوقۇقسىز"
@@ -630,4 +634,4 @@
"noFollowers": "تېخى ئەگەشكۈچى يوق",
"noFollowing": "تېخى ئەگىشىدىغان ئادەم يوق"
}
}
}

View File

@@ -297,7 +297,12 @@
"typeWhatYouHear": "输入你听到的内容",
"correct": "正确",
"incorrect": "错误",
"nextCard": "下一张"
"nextCard": "下一张",
"modeOrderLimited": "顺序",
"modeOrderInfinite": "循环",
"modeRandomLimited": "随机",
"modeRandomInfinite": "随机循环",
"restart": "重新开始"
},
"page": {
"unauthorized": "您无权访问该牌组"