Decided 2026-10-01. Deleting still asks first; once confirmed, the studyset leaves the library at once and "Studyset deleted" offers Undo for three seconds. Only when the time to undo is over (four seconds: the message's three and a moment for a late tap) are its cards and then the studyset blanked and deleted, since blanking can't be undone (ADR 0002, rule 2). A deletion still waiting when the library closes (the app quits, the person changes) is dropped, and the studyset stays. The library's bloc keeps the waiting deletions; the event that ends the time to undo is private, so no screen can skip it. AGENTS.md now describes the library's shared widgets, the sheets (and why a sheet that asks before discarding can't be swiped away), the order of studysets, and this Undo. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
292 lines
6.7 KiB
Dart
292 lines
6.7 KiB
Dart
// ignore: unused_import
|
|
import 'package:intl/intl.dart' as intl;
|
|
|
|
import 'app_localizations.dart';
|
|
|
|
// ignore_for_file: type=lint
|
|
|
|
/// The translations for English (`en`).
|
|
class AppLocalizationsEn extends AppLocalizations {
|
|
AppLocalizationsEn([String locale = 'en']) : super(locale);
|
|
|
|
@override
|
|
String get appTitle => 'Halkyon Learn';
|
|
|
|
@override
|
|
String get shellTabHome => 'Home';
|
|
|
|
@override
|
|
String get shellTabLibrary => 'Library';
|
|
|
|
@override
|
|
String get shellTabExplore => 'Explore';
|
|
|
|
@override
|
|
String get shellTabProfile => 'Profile';
|
|
|
|
@override
|
|
String get homeTitle => 'Home';
|
|
|
|
@override
|
|
String get homeLibraryIntro =>
|
|
'Your studysets and cards are in your library.';
|
|
|
|
@override
|
|
String get homeOpenLibrary => 'Open library';
|
|
|
|
@override
|
|
String get libraryTitle => 'Library';
|
|
|
|
@override
|
|
String get libraryNewStudyset => 'New studyset';
|
|
|
|
@override
|
|
String get libraryEmpty => 'No studysets yet';
|
|
|
|
@override
|
|
String get libraryUnreadable => 'Couldn\'t read your studysets.';
|
|
|
|
@override
|
|
String get libraryArchivedSection => 'Archived';
|
|
|
|
@override
|
|
String get librarySearchTooltip => 'Search';
|
|
|
|
@override
|
|
String get librarySearchHint => 'Search studysets';
|
|
|
|
@override
|
|
String get librarySearchClearTooltip => 'Clear query';
|
|
|
|
@override
|
|
String get librarySearchCloseTooltip => 'Close search';
|
|
|
|
@override
|
|
String get librarySearchNoMatches => 'No studysets match your search';
|
|
|
|
@override
|
|
String get libraryStudysetArchived => 'Studyset archived';
|
|
|
|
@override
|
|
String get libraryStudysetUnarchived => 'Studyset unarchived';
|
|
|
|
@override
|
|
String get libraryStudysetDeleted => 'Studyset deleted';
|
|
|
|
@override
|
|
String get libraryDeleteTitle => 'Delete studyset?';
|
|
|
|
@override
|
|
String get libraryDeleteMessage =>
|
|
'It is deleted with its cards, on all your devices. You can undo this for a few seconds.';
|
|
|
|
@override
|
|
String get libraryDeleteConfirm => 'Delete';
|
|
|
|
@override
|
|
String get studysetSheetCreateTitle => 'Create studyset';
|
|
|
|
@override
|
|
String get studysetSheetEditTitle => 'Edit studyset';
|
|
|
|
@override
|
|
String get studysetSheetCreate => 'Create';
|
|
|
|
@override
|
|
String get studysetSheetSave => 'Save';
|
|
|
|
@override
|
|
String get studysetSheetTitleLabel => 'Title';
|
|
|
|
@override
|
|
String get studysetSheetSecondaryLabel => 'Secondary title';
|
|
|
|
@override
|
|
String get studysetSheetSecondaryHelper =>
|
|
'Shown as a small label above the title.';
|
|
|
|
@override
|
|
String get studysetSheetColor => 'Color';
|
|
|
|
@override
|
|
String get studysetSheetDiscardTitle => 'Discard changes?';
|
|
|
|
@override
|
|
String get studysetSheetDiscardMessage =>
|
|
'You have unsaved changes to this studyset. Discard them and close the form?';
|
|
|
|
@override
|
|
String get studysetSheetDiscardConfirm => 'Discard';
|
|
|
|
@override
|
|
String paletteColorName(String name) {
|
|
String _temp0 = intl.Intl.selectLogic(
|
|
name,
|
|
{
|
|
'carrot': 'Carrot',
|
|
'cerise': 'Cerise',
|
|
'cobalt': 'Cobalt',
|
|
'copper': 'Copper',
|
|
'enzian': 'Enzian',
|
|
'fern': 'Fern',
|
|
'forest': 'Forest',
|
|
'ocean': 'Ocean',
|
|
'olive': 'Olive',
|
|
'pacific': 'Pacific',
|
|
'pickle': 'Pickle',
|
|
'pine': 'Pine',
|
|
'pink': 'Pink',
|
|
'plum': 'Plum',
|
|
'purple': 'Purple',
|
|
'reef': 'Reef',
|
|
'sahara': 'Sahara',
|
|
'slateblue': 'Slate blue',
|
|
'soil': 'Soil',
|
|
'strawberry': 'Strawberry',
|
|
'other': '$name',
|
|
},
|
|
);
|
|
return '$_temp0';
|
|
}
|
|
|
|
@override
|
|
String colorPickerLabel(String color) {
|
|
return 'Color: $color';
|
|
}
|
|
|
|
@override
|
|
String studysetCountFlashcards(int count) {
|
|
String _temp0 = intl.Intl.pluralLogic(
|
|
count,
|
|
locale: localeName,
|
|
other: '$count flashcards',
|
|
one: '1 flashcard',
|
|
);
|
|
return '$_temp0';
|
|
}
|
|
|
|
@override
|
|
String get studysetNoContent => 'No content yet';
|
|
|
|
@override
|
|
String get studysetActionReview => 'Review';
|
|
|
|
@override
|
|
String get studysetActionStudy => 'Study';
|
|
|
|
@override
|
|
String get studysetActionAdd => 'Add content';
|
|
|
|
@override
|
|
String get studysetArchived => 'Archived';
|
|
|
|
@override
|
|
String get studysetStar => 'Star';
|
|
|
|
@override
|
|
String get studysetUnstar => 'Unstar';
|
|
|
|
@override
|
|
String get studysetOptions => 'Options';
|
|
|
|
@override
|
|
String get studysetMenuEdit => 'Edit';
|
|
|
|
@override
|
|
String get studysetMenuArchive => 'Archive';
|
|
|
|
@override
|
|
String get studysetMenuUnarchive => 'Unarchive';
|
|
|
|
@override
|
|
String get studysetMenuDelete => 'Delete';
|
|
|
|
@override
|
|
String get exploreTitle => 'Explore';
|
|
|
|
@override
|
|
String get exploreEmpty => 'Studysets that others share will appear here.';
|
|
|
|
@override
|
|
String get profileTitle => 'Profile';
|
|
|
|
@override
|
|
String get profileSettingsTooltip => 'Settings';
|
|
|
|
@override
|
|
String get profileIdentified => 'Your progress is kept with your account.';
|
|
|
|
@override
|
|
String get profileAnonymous =>
|
|
'Progress is saved on this device. Sign in to keep it.';
|
|
|
|
@override
|
|
String get profileSignInWithGitHub => 'Sign in with GitHub';
|
|
|
|
@override
|
|
String get profileSignInFailed => 'Couldn\'t sign in with GitHub.';
|
|
|
|
@override
|
|
String get profileContinueInBrowser => 'Continue in your browser.';
|
|
|
|
@override
|
|
String get profileSwitchTitle => 'Switch to your GitHub account?';
|
|
|
|
@override
|
|
String get profileSwitchMessage =>
|
|
'This GitHub account already has progress from another device. The studysets on this device can\'t be combined with it yet: if you switch, they are deleted.';
|
|
|
|
@override
|
|
String get profileSwitchStay => 'Stay anonymous';
|
|
|
|
@override
|
|
String get profileSwitchConfirm => 'Switch';
|
|
|
|
@override
|
|
String get settingsTitle => 'Settings';
|
|
|
|
@override
|
|
String get settingsAccount => 'Account';
|
|
|
|
@override
|
|
String get settingsSignOut => 'Sign out';
|
|
|
|
@override
|
|
String get settingsSignOutTitle => 'Sign out?';
|
|
|
|
@override
|
|
String get settingsSignOutAnonymousMessage =>
|
|
'This account can\'t be signed into again, so signing out deletes it with its progress.';
|
|
|
|
@override
|
|
String get settingsDeleteAccount => 'Delete account';
|
|
|
|
@override
|
|
String get settingsDeleteTitle => 'Delete your account?';
|
|
|
|
@override
|
|
String get settingsDeleteMessage =>
|
|
'Everything you have, your studysets, cards and reviews, is deleted on the server and on all your devices. This can\'t be undone.';
|
|
|
|
@override
|
|
String get settingsAbout => 'About Halkyon Learn';
|
|
|
|
@override
|
|
String get commonCancel => 'Cancel';
|
|
|
|
@override
|
|
String get commonClose => 'Close';
|
|
|
|
@override
|
|
String get commonUndo => 'Undo';
|
|
|
|
@override
|
|
String get commonTryAgain => 'Try again';
|
|
|
|
@override
|
|
String get sessionUnreachable => 'Couldn\'t reach the server.';
|
|
|
|
@override
|
|
String get notFoundGone =>
|
|
'This no longer exists. It may have been deleted on another device.';
|
|
}
|