2026-03-27 14:05:03 +08:00
|
|
|
// 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 => 'Linksy';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get commonConfirm => 'Confirm';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get commonCancel => 'Cancel';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get commonSave => 'Save';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get commonDone => 'Done';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get commonRetry => 'Retry';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get commonRefreshing => 'Refreshing';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get commonLoading => 'Loading...';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get commonEdit => 'Edit';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get commonDelete => 'Delete';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get commonShare => 'Share';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get commonArchive => 'Archive';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get commonCopySuccess => 'Copied';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String commonLoadFailed(Object error) {
|
|
|
|
|
return 'Load failed: $error';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get commonUnknown => 'Unknown';
|
|
|
|
|
|
2026-03-30 18:36:57 +08:00
|
|
|
@override
|
|
|
|
|
String get commonNone => 'None';
|
|
|
|
|
|
2026-03-27 14:05:03 +08:00
|
|
|
@override
|
|
|
|
|
String get toastLabelSuccess => 'Success';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get toastLabelWarning => 'Warning';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get toastLabelError => 'Error';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get toastLabelInfo => 'Info';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get errorGenericSafe => 'Request failed, please try again later';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get errorForbidden =>
|
|
|
|
|
'You do not have permission to perform this action';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get errorNotFound => 'Requested resource was not found';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get errorTooManyRequests =>
|
|
|
|
|
'Too many requests, please try again later';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get errorServer => 'Server error, please try again later';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get errorAgentSseConnectionLimit =>
|
|
|
|
|
'Too many connections, please try again later';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get errorAgentAttachmentEmpty => 'Attachment is empty';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get errorAgentAttachmentTooLarge => 'Attachment is too large';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get errorAgentAudioEmpty => 'Audio content is empty';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get errorAgentAudioTooLarge => 'Audio file is too large';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get errorAgentAudioUnsupportedFormat => 'Unsupported audio format';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get errorAgentAsrUnavailable =>
|
|
|
|
|
'Speech service is temporarily unavailable';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get errorAgentInvalidLastEventId =>
|
|
|
|
|
'Invalid event cursor, please refresh and retry';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get errorAgentInvalidBinaryUrl =>
|
|
|
|
|
'Invalid image link, please upload again';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get errorRequestFailed => 'Request failed';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get errorNetwork => 'Network error';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get errorReLogin => 'Please sign in again';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get errorNetworkTimeout =>
|
|
|
|
|
'Network timeout. Ensure your device and server are on the same network and retry.';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get errorNetworkUnavailable =>
|
|
|
|
|
'Cannot connect to server. Please enable network access for this app in iPhone settings.';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get homeViewHistory => 'View History';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get homeNoEarlierHistory => 'No earlier history';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get homeSheetTakePhoto => 'Take Photo';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get homeSheetPhotoLibrary => 'Photo Library';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String homeDateLabelWithYear(int year, int month, int day, Object weekday) {
|
|
|
|
|
return '$year-$month-$day $weekday';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String homeDateLabelNoYear(int month, int day, Object weekday) {
|
|
|
|
|
return '$month-$day $weekday';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get homeRecordingReleaseCancel => 'Release to cancel';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get homeRecordingReleaseSend => 'Release to send';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get homeRecordingHintReleaseCancel => 'Release to cancel';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get homeRecordingHintReleaseSend =>
|
|
|
|
|
'Release to send, slide up to cancel';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get homeHoldToSpeakText => 'Hold to speak';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get homeInputHint => 'Type a message...';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get homeTranscribing => 'Transcribing voice...';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get homeRecordingCanceled => 'Canceled';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get homeToolPreparing => 'Preparing tool';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get homeToolExecuting => 'Running task';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get homeToolExecutionFailed => 'Execution failed';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get homeToolCompleted => 'Completed';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get homeRecorderPluginUnavailable =>
|
|
|
|
|
'Recorder plugin is unavailable. Fully restart the app and retry.';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get homeRecorderPermissionDenied =>
|
|
|
|
|
'Microphone permission is not granted';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get homeStopRequested => 'Stop requested';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get homeNoValidSpeech =>
|
|
|
|
|
'No valid speech detected. Please move closer to the microphone and retry.';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get agentStageRouting => 'Analyzing intent';
|
|
|
|
|
|
2026-03-30 09:07:30 +08:00
|
|
|
@override
|
|
|
|
|
String get agentStageRequesting => 'Requesting server';
|
|
|
|
|
|
2026-03-27 14:05:03 +08:00
|
|
|
@override
|
|
|
|
|
String get agentStageExecution => 'Executing task';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get agentStageMemory => 'Loading memory';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get agentStageProcessing => 'Processing task';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get agUiEventRunStarted => 'Run started';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get agUiEventRunFinished => 'Run finished';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get agUiEventRunError => 'Run failed';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get agUiEventStepStarted => 'Step started';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get agUiEventStepFinished => 'Step finished';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get agUiEventTextMessageEnd => 'Text output completed';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get agUiEventToolCallStart => 'Tool call started';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get agUiEventToolCallArgs => 'Tool arguments updated';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get agUiEventToolCallEnd => 'Tool call ended';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get agUiEventToolCallResult => 'Tool result received';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get agUiEventToolCallError => 'Tool call failed';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get agUiEventUnknown => 'Unknown event';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get chatRunCanceled => 'This run was canceled';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get chatRunFailed => 'This run failed';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get chatSseInterruptedRetry =>
|
|
|
|
|
'Connection interrupted, please try again';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get chatTimestampToday => 'Today';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get chatTimestampYesterday => 'Yesterday';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String chatTimestampMonthDay(int month, int day) {
|
|
|
|
|
return '$month/$day';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String homeUnreadMessages(int count) {
|
|
|
|
|
return '$count new messages';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarToday => 'Today';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarEventNoAccessOrMissing =>
|
|
|
|
|
'Event not found or no permission';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String calendarDayWeekMonthYearLabel(int year, int month) {
|
|
|
|
|
return '$year-$month';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get validatorPhoneRequired => 'Please enter phone number';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get validatorPhoneInvalid86 => 'Please enter a valid +86 phone number';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get validatorPasswordRequired => 'Please enter password';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get validatorPasswordMin8 => 'Password must be at least 8 characters';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String validatorRequired(Object fieldName) {
|
|
|
|
|
return 'Please enter $fieldName';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get validatorNicknameRequired => 'Please enter nickname';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get validatorNicknameMin2 => 'Nickname must be at least 2 characters';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get authAgreementTitle => 'Please agree to the policies';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get authAgreementMessage =>
|
|
|
|
|
'Before using our services, please read and agree to the User Agreement and Privacy Policy.\n\nWe can only provide services after your consent.';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get authAgreementSemantics =>
|
|
|
|
|
'Agree to User Agreement and Privacy Policy';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get authAgreementPrefix => 'I have read and agree to';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get authAgreementTerms => 'User Agreement';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get authAgreementAnd => 'and';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get authAgreementPrivacy => 'Privacy Policy';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get authPhoneHint => 'Enter phone number';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get authCodeHint => 'Enter verification code';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get authSendCode => 'Send Code';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get authShowPassword => 'Show password';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get authHidePassword => 'Hide password';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get authLoginFailed => 'Login failed';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get authCheckInput => 'Please check your input';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get authLoginOrRegister => 'Login / Register';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get authInvalidPhone => 'Please enter a valid phone number';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get authSendCodeFailed => 'Failed to send verification code';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get inputUsernameRequired => 'Please enter username';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get inputUsernameMin => 'Username must be at least 3 characters';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get inputUsernameMax => 'Username must be at most 30 characters';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get inputPhoneRequired => 'Please enter phone number';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get inputPhoneInvalid => 'Invalid phone number format';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get inputPasswordRequired => 'Please enter password';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get inputPasswordMin => 'Password must be at least 6 characters';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get inputCodeRequired => 'Please enter verification code';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get inputCodeInvalid => 'Verification code must be 6 digits';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get uiSchemaInvalid => 'Invalid UI schema';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String uiSchemaUnsupportedLayout(Object type) {
|
|
|
|
|
return 'Unsupported layout node: $type';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String uiSchemaUnknownNode(Object type) {
|
|
|
|
|
return 'Unknown node: $type';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get uiSchemaActionFallback => 'Action';
|
|
|
|
|
|
2026-03-30 09:07:30 +08:00
|
|
|
@override
|
|
|
|
|
String get uiSchemaStatusInfo => 'Info';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get uiSchemaStatusSuccess => 'Completed';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get uiSchemaStatusWarning => 'Warning';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get uiSchemaStatusError => 'Failed';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get uiSchemaStatusPending => 'In progress';
|
|
|
|
|
|
2026-03-27 14:05:03 +08:00
|
|
|
@override
|
|
|
|
|
String get uiSchemaActionNotImplemented => 'This action is not available yet';
|
|
|
|
|
|
2026-03-30 09:07:30 +08:00
|
|
|
@override
|
|
|
|
|
String get uiSchemaUrlInvalid => 'Invalid URL';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get uiSchemaUrlOpenFailed => 'Unable to open URL';
|
|
|
|
|
|
2026-03-27 14:05:03 +08:00
|
|
|
@override
|
|
|
|
|
String get uiSchemaNavigationInvalidParams => 'Invalid navigation params';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get uiSchemaNavigationInvalidPath => 'Invalid navigation path';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String notificationSnoozeMinutes(int minutes) {
|
2026-04-01 00:42:34 +08:00
|
|
|
return 'Reminder snoozed for $minutes min';
|
2026-03-27 14:05:03 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get notificationSnoozeLater => 'Remind later';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get notificationChannelName => 'Schedule alarm';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get notificationChannelDescription =>
|
|
|
|
|
'Alarm-style notifications for scheduled events';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get notificationStartsNow => 'Event starts now';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String notificationStartsInMinutes(int minutes) {
|
|
|
|
|
return 'Event starts in $minutes minutes';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String notificationLocation(Object location) {
|
|
|
|
|
return 'Location: $location';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String notificationNotes(Object notes) {
|
|
|
|
|
return 'Notes: $notes';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoScreenTitle => 'To-Do';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoDetailTitle => 'To-Do Details';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoCreateTitle => 'Create To-Do';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoEditTitle => 'Edit To-Do';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoMoveFailed => 'Move failed';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoRefreshFailed => 'Refresh failed, please try again';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String todoCompleteFailed(Object error) {
|
|
|
|
|
return 'Failed to complete: $error';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoNotFound => 'To-do not found';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoCalendarEventCards => 'Calendar Event Cards';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoPriorityQuadrant => 'Quadrant';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoLinkedCalendarEvents => 'Linked Calendar Events';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoStatus => 'Status';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoStatusDone => 'Done';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoStatusInProgress => 'In progress';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String todoQuadrantOrder(int order) {
|
|
|
|
|
return 'Order in quadrant #$order';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String todoSplitToEvents(int count) {
|
|
|
|
|
return 'Split into $count calendar events';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoNoLinkedEvents => 'No linked calendar events';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoDeleteTitle => 'Delete To-Do';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoDeleteMessage => 'Are you sure you want to delete this to-do?';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoDeleteConfirm => 'Delete';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String todoDeleteFailed(Object error) {
|
|
|
|
|
return 'Delete failed: $error';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoQuadrantImportantUrgent => 'Important & Urgent';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoQuadrantUrgentNotImportant => 'Urgent, Not Important';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoQuadrantImportantNotUrgent => 'Important, Not Urgent';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoQuadrantNotUrgentNotImportant => 'Not Urgent, Not Important';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoNoItems => 'No to-dos';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String todoItemCount(int count) {
|
|
|
|
|
return '$count items';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoInfoTitle => 'To-Do Info';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoInfoDescCreate =>
|
|
|
|
|
'After creation, you can view it in quadrants and continue adjusting priority and linked events.';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoInfoDescDone =>
|
|
|
|
|
'This to-do is completed. You can still adjust content and reorganize linked events.';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoInfoDescDefault =>
|
|
|
|
|
'Adjust title, priority, and linked events to keep tasks organized.';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoFieldTitle => 'Title';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoFieldTitleHint => 'Enter to-do title';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoFieldDescriptionOptional => 'Description (optional)';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoFieldDescriptionHint => 'Add details or notes';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoPriority => 'Priority';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoNoSelectableCalendarEvents =>
|
|
|
|
|
'No calendar events available to link';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoSaveInProgress => 'Saving...';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoCreateButton => 'Create To-Do';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoSaveChanges => 'Save Changes';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get todoEnterTitle => 'Please enter a title';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String todoSaveFailed(Object error) {
|
|
|
|
|
return 'Save failed: $error';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactsTitle => 'Contacts';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactsSearchHint => 'Enter username or phone number';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactsSearchEmptyQuery =>
|
|
|
|
|
'Please enter username or phone number';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactsSearchFailed => 'Search failed, please try again';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactsSearchNoUser => 'User not found';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactsFriendRequestSent => 'Friend request sent';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactsSendFailed => 'Send failed, please try again';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactsSectionNew => 'New Contacts';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactsSectionAll => 'All Contacts';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactsStatusAlreadyFriend => 'Already friends';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactsStatusSent => 'Sent';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactsAdd => 'Add';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactsEmptyTitle => 'No contacts';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactsEmptyDesc =>
|
|
|
|
|
'Search by phone to add friends and start chatting';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactsPendingConfirm => 'Waiting for confirmation';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String contactsAddSheetTitle(Object username) {
|
|
|
|
|
return 'Add $username';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactsAddSheetDesc =>
|
|
|
|
|
'Send a verification message so the other person can confirm your identity';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactsAddSheetMessageHint => 'Hi, I am...';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactsSend => 'Send';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactEditTitle => 'Edit Contact';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactAddTitle => 'Add Contact';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactNickname => 'Nickname';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactNicknameHint => 'Enter nickname';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactPhone => 'Phone';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactPhoneHint => '+86 Enter 11-digit phone number';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactRemark => 'Remark';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactRemarkHint => 'Enter remark';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactDelete => 'Delete Contact';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactFillRequired => 'Please fill nickname and phone';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactDeleteConfirmTitle => 'Delete Contact';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactDeleteConfirmMessage =>
|
|
|
|
|
'Are you sure to delete this contact?';
|
|
|
|
|
|
2026-03-30 18:36:57 +08:00
|
|
|
@override
|
|
|
|
|
String get contactDetailTitle => 'Contact Detail';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactDetailLoadFailed => 'Failed to load contact info';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactDetailNotFound => 'Contact not found';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactDetailUsername => 'Username';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactDetailPhone => 'Phone';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get contactDetailBio => 'Bio';
|
|
|
|
|
|
2026-03-27 14:05:03 +08:00
|
|
|
@override
|
|
|
|
|
String get messagesLoadFailed => 'Failed to load messages, please try again';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesSenderLoadFailed =>
|
|
|
|
|
'Failed to load sender info, pull to retry';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesFriendRequestMissing => 'Missing friend request data';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesAcceptedFriendRequest => 'Friend request accepted';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesRejectedFriendRequest => 'Friend request rejected';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesActionFailed => 'Action failed, please try again';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesTabUnread => 'Unread';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesTabRead => 'Read';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesEmptyUnreadTitle => 'No unread messages';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesEmptyReadTitle => 'No read messages';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesEmptyUnreadDesc => 'New messages will appear here';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesEmptyReadDesc => 'Processed messages will appear here';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesFriendRequestLoadFailed =>
|
|
|
|
|
'Failed to load friend request info';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String messagesFriendRequestTitle(Object username) {
|
|
|
|
|
return '$username wants to add you as a friend';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesCalendarInvite => 'Calendar invite';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesSystemMessage => 'System message';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesTapToView => 'Tap to view details';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesInviteJoinCalendar => 'Invites you to join calendar';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesInviteAccepted => 'Calendar invite accepted';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesInviteRejected => 'Calendar invite rejected';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesCalendarUpdated => 'Updated calendar event';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesInviteStatusAccepted => 'Accepted';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesInviteStatusRejected => 'Rejected';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesInviteStatusHandled => 'Handled';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesInviteDetailNotFound => 'Invite not found or expired';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesInviteAcceptedToast => 'Invite accepted';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesInviteRejectedToast => 'Invite rejected';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesInviteOperationFailed =>
|
|
|
|
|
'Operation failed, please try again';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesInviteDetailTitle => 'Calendar Invite Details';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String messagesInviteEvent(Object title) {
|
|
|
|
|
return 'Event: $title';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesInviteUnnamedEvent => 'Unnamed schedule';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String messagesInviteSender(Object name) {
|
|
|
|
|
return 'Sender: $name';
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-30 18:36:57 +08:00
|
|
|
@override
|
|
|
|
|
String get messagesCalendarInviteActorLabel => 'Inviter';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesCalendarInviteTimeLabel => 'Time';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesCalendarInviteDescriptionLabel => 'Description';
|
|
|
|
|
|
2026-03-27 14:05:03 +08:00
|
|
|
@override
|
|
|
|
|
String get messagesInviteUnknownUser => 'Unknown user';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String messagesInviteTime(Object time) {
|
|
|
|
|
return 'Time: $time';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String messagesInviteStatus(Object status) {
|
|
|
|
|
return 'Status: $status';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String messagesInviteId(Object id) {
|
|
|
|
|
return 'Invite ID: $id';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesInviteTip =>
|
|
|
|
|
'Accept to join this calendar event. Reject to mark this invite as handled.';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesInviteAlreadyHandled => 'This invite has been handled';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesReject => 'Reject';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesAccept => 'Accept';
|
|
|
|
|
|
2026-03-30 18:36:57 +08:00
|
|
|
@override
|
|
|
|
|
String get messagesAcknowledge => 'Acknowledge';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesProtocolInvalid =>
|
|
|
|
|
'Message data is invalid, please try again later';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesProtocolInvalidCardTitle => 'Invalid message data';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesProtocolInvalidCardDesc =>
|
|
|
|
|
'This message is missing required fields and cannot be rendered';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesUnknownActor => 'Unknown user';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String messagesCalendarUpdatedBy(Object name) {
|
|
|
|
|
return '$name updated a calendar';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String messagesCalendarDeletedBy(Object name) {
|
|
|
|
|
return '$name deleted a calendar';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesCalendarDeleted => 'Deleted calendar event';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String messagesCalendarCardDeletedWithTitle(Object title) {
|
|
|
|
|
return '$title deleted';
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-27 14:05:03 +08:00
|
|
|
@override
|
|
|
|
|
String get messagesStatusPending => 'Pending';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsFeaturesTitle => 'Recurring Plans';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsSectionDaily => 'Daily';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsSectionWeekly => 'Weekly';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsNoDailyPlans => 'No daily plans';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsNoWeeklyPlans => 'No weekly plans';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsSystemJobReadonly =>
|
|
|
|
|
'System preset jobs cannot be changed';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobStatusEnabled => 'Enabled';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobStatusDisabled => 'Disabled';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobSourceSystem => 'System preset';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobSourceCustom => 'Custom';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsCreateJob => 'Create Job';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get memoryTitle => 'My Memory';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get memoryLoadFailedRetry => 'Load failed, please retry';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get memorySmartTitle => 'Smart Memory';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get memorySmartDesc =>
|
|
|
|
|
'Continuously learns your preferences and habits';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get memoryReload => 'Reload';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get memorySectionUser => 'User Memory';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get memorySectionWork => 'Work Memory';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get memoryUserProfile => 'Personal Preferences';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get memoryWorkProfile => 'Work Profile';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get memoryNoInfo => 'No info';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get memoryStatContacts => 'Contacts';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get memoryStatPlaces => 'Places';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get memoryStatInterests => 'Interests';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get memoryStatSchedule => 'Schedule';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get memoryStatExpertise => 'Expertise';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get memoryStatTools => 'Tools';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get memoryStatProjects => 'Projects';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get memoryStatTeam => 'Team';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String memorySummaryContactsCount(int count) {
|
|
|
|
|
return '$count contacts';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String memorySummaryPlacesCount(int count) {
|
|
|
|
|
return '$count places';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String memorySummaryInterestsCount(int count) {
|
|
|
|
|
return '$count interests';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String memorySummaryExpertiseCount(int count) {
|
|
|
|
|
return '$count expertise areas';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String memorySummaryProjectsCount(int count) {
|
|
|
|
|
return '$count projects';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String memorySummaryTeamMembersCount(int count) {
|
|
|
|
|
return '$count team members';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get toolCalendarRead => 'Read Calendar';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get toolCalendarWrite => 'Write Calendar';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get toolCalendarShare => 'Share Calendar';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get toolUserLookup => 'Lookup Contact';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get toolMemoryWrite => 'Write Memory';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get toolMemoryForget => 'Forget Memory';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsTitle => 'Settings';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUnset => 'Not set';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsFreeBadge => 'Free';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsNoContacts => 'No contacts';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String settingsContactsAddedOne(Object name) {
|
|
|
|
|
return 'Added 1 contact: $name';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String settingsContactsAddedMany(int count) {
|
|
|
|
|
return 'Added $count contacts';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsNoEnabledPlans => 'No enabled plans';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String settingsEnabledPlanOne(Object title) {
|
|
|
|
|
return 'Enabled: $title';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String settingsEnabledPlanMany(int count) {
|
|
|
|
|
return 'Enabled $count plans';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUpgradeProTitle => 'Upgrade to Pro';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUpgradeProDesc => 'Unlock more advanced features';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUpgradeButton => 'Upgrade';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsMenuNotifications => 'Reminder Settings';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsMenuCheckUpdates => 'Check for Updates';
|
|
|
|
|
|
2026-03-30 18:36:57 +08:00
|
|
|
@override
|
|
|
|
|
String get settingsMenuClearCache => 'Clear Cache';
|
|
|
|
|
|
2026-03-27 14:05:03 +08:00
|
|
|
@override
|
|
|
|
|
String get settingsLogoutTitle => 'Log Out';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsLogoutConfirmMessage =>
|
|
|
|
|
'Are you sure you want to log out of this account?';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsLogoutConfirm => 'Confirm Logout';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsLogoutFailed => 'Logout failed, please try again later';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsLatestVersion => 'You already have the latest version';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String settingsUpdateRequired(Object version) {
|
|
|
|
|
return 'A new version is available ($version), please update now';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String settingsUpdateOptional(Object version) {
|
|
|
|
|
return 'New version found ($version), update now?';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUpdateDialogTitle => 'Check for Updates';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUpdateAction => 'Update';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String settingsDownloadLink(Object url) {
|
|
|
|
|
return 'Download link: $url';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUpdateCheckFailed => 'Failed to check updates';
|
|
|
|
|
|
2026-03-30 18:36:57 +08:00
|
|
|
@override
|
|
|
|
|
String get settingsClearCacheTitle => 'Clear Local Cache';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsClearCacheMessage =>
|
|
|
|
|
'This will clear local cache and fetch fresh data. Continue?';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsClearCacheAction => 'Clear';
|
|
|
|
|
|
|
|
|
|
@override
|
2026-03-31 18:26:36 +08:00
|
|
|
String get settingsClearCacheSuccess => 'Cache cleared';
|
2026-03-30 18:36:57 +08:00
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsClearCacheFailed =>
|
|
|
|
|
'Failed to clear cache. Please try again later';
|
|
|
|
|
|
2026-03-27 14:05:03 +08:00
|
|
|
@override
|
|
|
|
|
String get settingsJobDetailTitle => 'Job Detail';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobCreatePageTitle => 'Create Recurring Plan';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobLoadFailed => 'Load failed';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobRetry => 'Retry';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobPlanConfig => 'Plan Configuration';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobCycle => 'Cycle';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobRunAt => 'Run Time';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobTimezone => 'Timezone';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobStatusLabel => 'Status';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobInputTemplate => 'Input Template';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobEnabledTools => 'Enabled Tools';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobContextMode => 'Context Message Mode';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobContextSource => 'Source';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobWindowMode => 'Window Mode';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobWindowCount => 'Window Count';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String settingsJobWindowCountValue(int count) {
|
|
|
|
|
return '$count';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobDeleteTitle => 'Delete Recurring Plan';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobDeleteMessage =>
|
|
|
|
|
'This action cannot be undone. Continue?';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobDeleteConfirm => 'Confirm Delete';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobDeleteSuccess => 'Deleted successfully';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobBasicInfo => 'Basic Info';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobName => 'Job Name';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobNameHint => 'Enter job name';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobTemplateHint => 'Example: summarize today memory';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobExecutionRules => 'Execution Rules';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobToolSelection => 'Tool Selection';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String settingsJobCounterValue(Object label, int value) {
|
|
|
|
|
return '$label: $value';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobWeekdayMon => 'Mon';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobWeekdayTue => 'Tue';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobWeekdayWed => 'Wed';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobWeekdayThu => 'Thu';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobWeekdayFri => 'Fri';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobWeekdaySat => 'Sat';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobWeekdaySun => 'Sun';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobRunDays => 'Run Days';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobNoToolsEnabled => 'No tools enabled';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobPickCycle => 'Choose Cycle';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobScheduleDaily => 'Daily';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobScheduleWeekly => 'Weekly';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobPickTimezone => 'Choose Timezone';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobPickContextSource => 'Choose Context Source';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobContextSourceLatestChat => 'Latest chat';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobPickWindowMode => 'Choose Window Mode';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobWindowModeByDay => 'By day';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobWindowModeByNumber => 'By message count';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobFillRequired => 'Please fill all required fields';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsJobCreateSuccess => 'Created successfully';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsMemorySaveSuccess => 'Saved successfully';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsMemorySaveFailed => 'Failed to save';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String settingsMemoryInputHint(Object label) {
|
|
|
|
|
return 'Enter $label';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsMemoryInputContent => 'Enter content';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryEditTitle => 'Edit Personal Preferences';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryEmptyProfile => 'No personal preferences';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemorySectionBasic => 'Basic Info';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemorySectionPreferences => 'Preferences';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemorySectionSchedule => 'Schedule Preferences';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemorySectionContacts => 'Contacts';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemorySectionPlaces => 'Places';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemorySectionInterests => 'Interests';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemorySectionAvoidTopics => 'Avoid Topics';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemorySectionCustomRules => 'Custom Rules';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemorySectionRoutines => 'Recurring Routines';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryFieldOccupation => 'Occupation';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryFieldTimezone => 'Timezone';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryFieldPrimaryLanguage => 'Primary Language';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryFieldCommunicationStyle => 'Communication Style';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryFieldLocationPreference => 'Location Preference';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryFieldWorkLifestyle => 'Work Lifestyle';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryFieldLanguagePreference => 'Language Preference';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryFieldNotificationPreference =>
|
|
|
|
|
'Notification Preference';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryFieldMeetingBuffer => 'Meeting Buffer';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryFieldMaxMeetingsPerDay => 'Max Meetings per Day';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryFieldPreferredMeetingDuration =>
|
|
|
|
|
'Preferred Meeting Duration';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryFieldNotes => 'Notes';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryFieldName => 'Name';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryFieldRelationship => 'Relationship';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryFieldRole => 'Role';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryFieldContact => 'Contact';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryFieldCategory => 'Category';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryFieldPreference => 'Preference';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryFieldAddress => 'Address';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryFieldDescription => 'Description';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryFieldCadence => 'Cadence';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryMinute => 'min';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String settingsUserMemoryMinutesValue(int minutes) {
|
|
|
|
|
return '$minutes min';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryEmptyContacts => 'No contacts';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryEmptyPlaces => 'No places';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryEmptyRoutines => 'No routines';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryAddContact => 'Add Contact';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryNewContact => 'New Contact';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryAddPlace => 'Add Place';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryNewPlace => 'New Place';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryAddRoutine => 'Add Routine';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsUserMemoryNewRoutine => 'New Routine';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemoryEditTitle => 'Edit Work Profile';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemoryEmptyProfile => 'No work info';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemorySectionBasic => 'Basic Info';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemorySectionExpertise => 'Expertise';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemorySectionPreferredTools => 'Preferred Tools';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemorySectionCurrentProjects => 'Current Projects';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemorySectionTeamMembers => 'Team Members';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemorySectionWorkHabits => 'Work Habits';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemorySectionTeamContext => 'Team Context';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemorySectionWorkRules => 'Work Rules';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemoryFieldOccupation => 'Occupation';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemoryFieldAvailableHours => 'Available Hours';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemoryFieldDeepWorkBlocks => 'Deep Work Blocks';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemoryFieldPreferredMeetingWindows =>
|
|
|
|
|
'Preferred Meeting Windows';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemoryFieldNoMeetingWindows => 'No-Meeting Windows';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemoryFieldPreferredMeetingDuration =>
|
|
|
|
|
'Preferred Meeting Duration';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemoryFieldNotificationChannel =>
|
|
|
|
|
'Notification Channel';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemoryFieldNotes => 'Notes';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemoryFieldTeamContext => 'Team Context';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemoryFieldProjectName => 'Project Name';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemoryFieldStatus => 'Status';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemoryFieldPriority => 'Priority';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemoryFieldDeadline => 'Deadline';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemoryFieldCollaborators => 'Collaborators';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemoryFieldMilestones => 'Milestones';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemoryMinute => 'min';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String settingsWorkMemoryMilestoneCount(int count) {
|
|
|
|
|
return '$count items';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemoryEmptyProjects => 'No projects';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemoryEmptyTeamMembers => 'No team members';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String settingsWorkMemoryTimeWindowCount(int count) {
|
|
|
|
|
return '$count windows';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemoryAddProject => 'Add Project';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemoryNewProject => 'New Project';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemoryAddMember => 'Add Member';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsWorkMemoryNewMember => 'New Member';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDetailTitle => 'Event Details';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDetailNotFoundTitle => 'Event not found';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDetailNotFoundDesc =>
|
|
|
|
|
'It may have been deleted, or you do not have access.';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDetailTimeArrangement => 'Time Arrangement';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String calendarDetailDateLabel(int year, int month, int day, Object weekday) {
|
|
|
|
|
return '$year-$month-$day $weekday';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDetailBasicInfo => 'Basic Info';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDetailDate => 'Date';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDetailReminder => 'Reminder';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDetailColor => 'Color';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDetailExtraInfo => 'Extra Info';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDetailLocation => 'Location';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDetailDescription => 'Description';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDetailNotes => 'Notes';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDetailReminderNone => 'None';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDetailReminderOnTime => 'On time';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String calendarDetailReminderBeforeMinutes(int minutes) {
|
|
|
|
|
return '$minutes min before start';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
2026-03-30 18:36:57 +08:00
|
|
|
String get calendarWeekdayMon => 'Monday';
|
2026-03-27 14:05:03 +08:00
|
|
|
|
|
|
|
|
@override
|
2026-03-30 18:36:57 +08:00
|
|
|
String get calendarWeekdayTue => 'Tuesday';
|
2026-03-27 14:05:03 +08:00
|
|
|
|
|
|
|
|
@override
|
2026-03-30 18:36:57 +08:00
|
|
|
String get calendarWeekdayWed => 'Wednesday';
|
2026-03-27 14:05:03 +08:00
|
|
|
|
|
|
|
|
@override
|
2026-03-30 18:36:57 +08:00
|
|
|
String get calendarWeekdayThu => 'Thursday';
|
2026-03-27 14:05:03 +08:00
|
|
|
|
|
|
|
|
@override
|
2026-03-30 18:36:57 +08:00
|
|
|
String get calendarWeekdayFri => 'Friday';
|
2026-03-27 14:05:03 +08:00
|
|
|
|
|
|
|
|
@override
|
2026-03-30 18:36:57 +08:00
|
|
|
String get calendarWeekdaySat => 'Saturday';
|
2026-03-27 14:05:03 +08:00
|
|
|
|
|
|
|
|
@override
|
2026-03-30 18:36:57 +08:00
|
|
|
String get calendarWeekdaySun => 'Sunday';
|
2026-03-27 14:05:03 +08:00
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDetailDeleteTitle => 'Delete Event';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDetailDeleteMessage =>
|
|
|
|
|
'Are you sure you want to delete this event?';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDetailDeleteConfirm => 'Delete';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDetailArchiveTitle => 'Archive Event';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDetailArchiveMessage =>
|
|
|
|
|
'This will mark the event as expired. Continue?';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDetailArchiveConfirm => 'Archive';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDetailArchiveFailed => 'Archive failed';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String calendarDetailDateTimeShort(
|
|
|
|
|
int month,
|
|
|
|
|
int day,
|
|
|
|
|
Object weekday,
|
|
|
|
|
Object time,
|
|
|
|
|
) {
|
|
|
|
|
return '$month/$day $weekday $time';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String calendarDetailRangeWithStartEnd(Object start, Object end) {
|
|
|
|
|
return 'Start: $start\nEnd: $end';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDetailStatusExpired => 'Expired';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarCreateEditTitle => 'Edit Event';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarCreateNewTitle => 'New Event';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarCreateTabBasic => 'Basic';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarCreateTabAdvanced => 'Advanced';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarCreateFieldTitle => 'Title';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarCreateFieldTitleHint => 'Enter event title';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarCreateFieldStart => 'Start';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarCreateFieldEnd => 'End';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarCreateFieldDescription => 'Description';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarCreateFieldDescriptionHint => 'Enter description';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarCreateFieldLocation => 'Location';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarCreateFieldLocationHint => 'Enter location';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarCreateFieldNotesHint => 'Enter notes';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String calendarCreateOptionalField(Object label) {
|
|
|
|
|
return '$label (optional)';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String calendarCreateDateTimeLabel(
|
|
|
|
|
int year,
|
|
|
|
|
int month,
|
|
|
|
|
int day,
|
|
|
|
|
Object hour,
|
|
|
|
|
Object minute,
|
|
|
|
|
) {
|
|
|
|
|
return '$year-$month-$day $hour:$minute';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarCreateReminderNone => 'No reminder';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarCreateReminderTime => 'Reminder Time';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarCreatePickReminderTime => 'Select Reminder Time';
|
|
|
|
|
|
2026-04-01 00:42:34 +08:00
|
|
|
@override
|
|
|
|
|
String get calendarCreateInvalidTimeRange =>
|
|
|
|
|
'End time must be after start time';
|
|
|
|
|
|
2026-03-27 14:05:03 +08:00
|
|
|
@override
|
|
|
|
|
String get calendarCreateReminderPermissionFailed =>
|
|
|
|
|
'Failed to create reminder, check notification permission';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsEditProfileLoadFailed => 'Failed to load user profile';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsEditProfileAvatarUploadSuccess =>
|
|
|
|
|
'Avatar uploaded successfully';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsEditProfileAvatarUploadFailed =>
|
|
|
|
|
'Failed to upload avatar, please try again';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsEditProfileUsernameRequired => 'Username is required';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsEditProfileUsernameLengthInvalid =>
|
|
|
|
|
'Username must be 3-30 characters';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsEditProfileSaveSuccess => 'Saved successfully';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsEditProfileSaveFailed => 'Save failed, please try again';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsEditProfileTitle => 'Edit Profile';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsEditProfileSaveChanges => 'Save Changes';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsEditProfileBasicInfo => 'Basic Info';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsEditProfileUsername => 'Username';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsEditProfileUsernameHint => 'Enter username';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsEditProfileBio => 'Bio';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsEditProfileBioContent => 'Bio Content';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get settingsEditProfileBioHint => 'Tell us about yourself';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarSharePhoneRequired => 'Please enter a phone number';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarShareInviteSent => 'Invite sent';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarShareInviteFailed => 'Failed to send invite';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarShareTitle => 'Share Calendar';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarSharePhoneLabel => 'Phone';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarSharePhoneHint => 'Enter recipient\'s +86 phone number';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarSharePermissionTitle => 'Permissions';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarSharePermissionView => 'View';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarSharePermissionViewDesc =>
|
|
|
|
|
'Can view this calendar event (required)';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarSharePermissionEdit => 'Edit';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarSharePermissionEditDesc => 'Can edit this calendar event';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarSharePermissionInvite => 'Invite';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarSharePermissionInviteDesc => 'Can invite others';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarShareSendInvite => 'Send Invite';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String calendarMonthHeader(int month) {
|
|
|
|
|
return '$month';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarMonthToday => 'Today';
|
|
|
|
|
|
|
|
|
|
@override
|
2026-03-30 18:36:57 +08:00
|
|
|
String get calendarMonthWeekdaySunShort => 'Sun';
|
2026-03-27 14:05:03 +08:00
|
|
|
|
|
|
|
|
@override
|
2026-03-30 18:36:57 +08:00
|
|
|
String get calendarMonthWeekdayMonShort => 'Mon';
|
2026-03-27 14:05:03 +08:00
|
|
|
|
|
|
|
|
@override
|
2026-03-30 18:36:57 +08:00
|
|
|
String get calendarMonthWeekdayTueShort => 'Tue';
|
2026-03-27 14:05:03 +08:00
|
|
|
|
|
|
|
|
@override
|
2026-03-30 18:36:57 +08:00
|
|
|
String get calendarMonthWeekdayWedShort => 'Wed';
|
2026-03-27 14:05:03 +08:00
|
|
|
|
|
|
|
|
@override
|
2026-03-30 18:36:57 +08:00
|
|
|
String get calendarMonthWeekdayThuShort => 'Thu';
|
2026-03-27 14:05:03 +08:00
|
|
|
|
|
|
|
|
@override
|
2026-03-30 18:36:57 +08:00
|
|
|
String get calendarMonthWeekdayFriShort => 'Fri';
|
2026-03-27 14:05:03 +08:00
|
|
|
|
|
|
|
|
@override
|
2026-03-30 18:36:57 +08:00
|
|
|
String get calendarMonthWeekdaySatShort => 'Sat';
|
2026-03-27 14:05:03 +08:00
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String calendarMonthYearLabel(int year) {
|
|
|
|
|
return '$year';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDateTimePickerDateLabel => 'Date';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDateTimePickerYearUnit => 'Y';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDateTimePickerMonthUnit => 'M';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDateTimePickerDayUnit => 'D';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDateTimePickerTimeLabel => 'Time';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarDateTimePickerTitle => 'Select Time';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesCalendarCardInviteTitle => 'Calendar Invite';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String messagesCalendarCardInviteWithTitle(Object title) {
|
|
|
|
|
return 'Invites you to access \"$title\"';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesCalendarCardInviteWithoutTitle =>
|
|
|
|
|
'Invites you to access a calendar';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String messagesCalendarCardUpdatedWithTitle(Object title) {
|
|
|
|
|
return '$title updated';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesCalendarCardUpdatedWithoutTitle =>
|
|
|
|
|
'Calendar event updated';
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String messagesCalendarCardTimeMinutesAgo(int minutes) {
|
|
|
|
|
return '${minutes}m ago';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String messagesCalendarCardTimeHoursAgo(int hours) {
|
|
|
|
|
return '${hours}h ago';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String messagesCalendarCardTimeDaysAgo(int days) {
|
|
|
|
|
return '${days}d ago';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String messagesCalendarCardTimeDate(int month, int day) {
|
|
|
|
|
return '$month/$day';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get messagesCalendarCardDeletedWithoutTitle =>
|
|
|
|
|
'Calendar event deleted';
|
2026-03-30 09:07:30 +08:00
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String calendarDetailSubscribers(int count) {
|
|
|
|
|
return 'Subscribers ($count)';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get calendarOwnerBadge => 'Owner';
|
2026-03-27 14:05:03 +08:00
|
|
|
}
|