feat(app): study sessions in rounds, by card type, cramming and reversed
A session studies a round of up to the settings' cards per round. In spaced repetition a card leaves the round once it is a day or more away, one rated lower comes back when due; cramming walks every card once, round after round, its reviews moving no schedule, with going back and on. Asking the back first (a toggle in the header, saved in the settings) asks front/back and vocabulary cards their back, on their own schedule. Each type studies its way: a word shows its reading and meanings, a multiple-choice card is picked and checked, a matching card sorted by dragging or tapping and checked; then the person rates (Bad, OK, Good, Perfect, each with when the card comes back). Progress shows as pills, or a tally bar while cramming; a round ends with how it went. The session settings gain the mode, cards per round, new cards per day and the order. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
66a1b6c2f4
commit
46855ab251
1 changed files with 2419 additions and 302 deletions
|
|
@ -776,6 +776,172 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
@override
|
||||
String get cardTileConflict => 'Changed on two devices';
|
||||
|
||||
@override
|
||||
String get studyClose => 'Close session';
|
||||
|
||||
@override
|
||||
String get studyBackFirstOn =>
|
||||
'Showing the back of cards first: tap to revert';
|
||||
|
||||
@override
|
||||
String get studyBackFirstOff => 'Show the back of cards first';
|
||||
|
||||
@override
|
||||
String get studyShowAnswer => 'Show answer';
|
||||
|
||||
@override
|
||||
String get studyCheck => 'Check';
|
||||
|
||||
@override
|
||||
String get studyRatingBad => 'Bad';
|
||||
|
||||
@override
|
||||
String get studyRatingOk => 'OK';
|
||||
|
||||
@override
|
||||
String get studyRatingGood => 'Good';
|
||||
|
||||
@override
|
||||
String get studyRatingPerfect => 'Perfect';
|
||||
|
||||
@override
|
||||
String get studyNothingTitle => 'Nothing to study right now';
|
||||
|
||||
@override
|
||||
String get studyNothingBody => 'Come back later when more cards are due.';
|
||||
|
||||
@override
|
||||
String studyNextDue(String interval) {
|
||||
return 'The next card is due in $interval.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get studyDone => 'Done';
|
||||
|
||||
@override
|
||||
String get studyRoundDone => 'Round complete';
|
||||
|
||||
@override
|
||||
String get studyContinue => 'Continue learning';
|
||||
|
||||
@override
|
||||
String get studyPrevious => 'Previous card';
|
||||
|
||||
@override
|
||||
String get studyNext => 'Next card';
|
||||
|
||||
@override
|
||||
String get studyReading => 'Reading';
|
||||
|
||||
@override
|
||||
String get studyMeanings => 'Meanings';
|
||||
|
||||
@override
|
||||
String get studyPlaceItems =>
|
||||
'Drag each item onto its category, or tap an item and then a category.';
|
||||
|
||||
@override
|
||||
String studyMinutes(int count) {
|
||||
return '$count min';
|
||||
}
|
||||
|
||||
@override
|
||||
String studyHours(int count) {
|
||||
return '$count h';
|
||||
}
|
||||
|
||||
@override
|
||||
String studyDays(int count) {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: '$count days',
|
||||
one: '1 day',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String studyMonths(int count) {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: '$count months',
|
||||
one: '1 month',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String studyYears(int count) {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: '$count years',
|
||||
one: '1 year',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String studyFilteredBy(int count) {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: 'Narrowed to $count tags',
|
||||
one: 'Narrowed to 1 tag',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get studySettingsCardsPerRound => 'Cards per round';
|
||||
|
||||
@override
|
||||
String get studySettingsNewPerDay => 'New cards per day';
|
||||
|
||||
@override
|
||||
String get studySettingsNewPerDayHint =>
|
||||
'How many never-studied cards each studyset starts a day. Due reviews are never limited.';
|
||||
|
||||
@override
|
||||
String get studySettingsUnlimited => 'Unlimited';
|
||||
|
||||
@override
|
||||
String get studySettingsSortBy => 'Sort by';
|
||||
|
||||
@override
|
||||
String get studySettingsLearnMode => 'Learn mode';
|
||||
|
||||
@override
|
||||
String get studyModeSpaced => 'Spaced repetition';
|
||||
|
||||
@override
|
||||
String get studyModeSpacedHint =>
|
||||
'Due cards on their schedules; ratings move them.';
|
||||
|
||||
@override
|
||||
String get studyModeCram => 'Cram';
|
||||
|
||||
@override
|
||||
String get studyModeCramHint =>
|
||||
'Walk every card without touching the schedules.';
|
||||
|
||||
@override
|
||||
String get studySortOldestFirst => 'Oldest first';
|
||||
|
||||
@override
|
||||
String get studySortRandom => 'Random';
|
||||
|
||||
@override
|
||||
String get studySortNewestFirst => 'Newest first';
|
||||
|
||||
@override
|
||||
String get studyFewer => 'Fewer';
|
||||
|
||||
@override
|
||||
String get studyMore => 'More';
|
||||
|
||||
@override
|
||||
String get commonCancel => 'Cancel';
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue