1f67b7c818
Co-Authored-By: Claude Code <noreply@anthropic.com>
708 lines
16 KiB
Dart
708 lines
16 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 appName => 'Photo Live';
|
|
|
|
@override
|
|
String get login => 'Sign in';
|
|
|
|
@override
|
|
String get logout => 'Sign out';
|
|
|
|
@override
|
|
String get username => 'Account';
|
|
|
|
@override
|
|
String get password => 'Password';
|
|
|
|
@override
|
|
String get albums => 'Albums';
|
|
|
|
@override
|
|
String get albumDetail => 'Album details';
|
|
|
|
@override
|
|
String get queue => 'Uploads';
|
|
|
|
@override
|
|
String get settings => 'Settings';
|
|
|
|
@override
|
|
String get language => 'Language';
|
|
|
|
@override
|
|
String get settingsSectionAccount => 'Account';
|
|
|
|
@override
|
|
String get settingsSectionLanguage => 'Language';
|
|
|
|
@override
|
|
String get settingsSectionSecurity => 'Security';
|
|
|
|
@override
|
|
String get settingsSectionUploadHelp => 'Upload help';
|
|
|
|
@override
|
|
String get settingsSectionAbout => 'About';
|
|
|
|
@override
|
|
String get settingsSignedInAccount => 'Currently signed-in account';
|
|
|
|
@override
|
|
String get settingsVersion => 'Version';
|
|
|
|
@override
|
|
String get settingsUploadHelpTitle => 'How background uploads work';
|
|
|
|
@override
|
|
String get settingsUploadHelpBody =>
|
|
'While the app stays in the background, the system keeps uploads running within its battery limits. If you force quit the app or the system stops it, unfinished tasks pause and resume the next time you open the app. Tasks waiting for the network start automatically once a connection is available — no manual retry needed.';
|
|
|
|
@override
|
|
String get logoutConfirmTitle => 'Sign out?';
|
|
|
|
@override
|
|
String get logoutConfirmBody =>
|
|
'Local upload tasks are preserved on this device and will resume when you sign back in.';
|
|
|
|
@override
|
|
String get localeFollowSystem => 'Follow system';
|
|
|
|
@override
|
|
String get localeChinese => '中文';
|
|
|
|
@override
|
|
String get localeEnglish => 'English';
|
|
|
|
@override
|
|
String get retry => 'Retry';
|
|
|
|
@override
|
|
String get cancel => 'Cancel';
|
|
|
|
@override
|
|
String get errorGeneric => 'Something went wrong, please retry';
|
|
|
|
@override
|
|
String get ok => 'OK';
|
|
|
|
@override
|
|
String get navAlbums => 'Albums';
|
|
|
|
@override
|
|
String get navUploads => 'Uploads';
|
|
|
|
@override
|
|
String get navSettings => 'Settings';
|
|
|
|
@override
|
|
String badgeUploading(int count) {
|
|
return '$count tasks';
|
|
}
|
|
|
|
@override
|
|
String get albumUploadsOn => 'Uploads on';
|
|
|
|
@override
|
|
String get albumUploadsOff => 'Uploads off';
|
|
|
|
@override
|
|
String get albumPublicOff => 'Not public';
|
|
|
|
@override
|
|
String get loginHint => 'Sign in with your staff account';
|
|
|
|
@override
|
|
String get fieldRequired => 'This field is required';
|
|
|
|
@override
|
|
String get passwordChangeTitle => 'Change password';
|
|
|
|
@override
|
|
String get currentPassword => 'Current password';
|
|
|
|
@override
|
|
String get newPassword => 'New password';
|
|
|
|
@override
|
|
String get confirmNewPassword => 'Confirm new password';
|
|
|
|
@override
|
|
String get passwordMinLength => 'New password must be at least 8 characters';
|
|
|
|
@override
|
|
String get passwordMismatch => 'New passwords do not match';
|
|
|
|
@override
|
|
String get passwordChangeSuccess => 'Password changed';
|
|
|
|
@override
|
|
String get errorAuthInvalidCredentials => 'Incorrect account or password';
|
|
|
|
@override
|
|
String get errorOldPasswordIncorrect => 'Current password is incorrect';
|
|
|
|
@override
|
|
String get errorAuthRateLimited =>
|
|
'Too many attempts. Please try again later';
|
|
|
|
@override
|
|
String get errorAuthTokenExpired => 'Session expired. Please sign in again';
|
|
|
|
@override
|
|
String get errorValidation => 'Invalid input. Please check and retry';
|
|
|
|
@override
|
|
String get errorNetwork => 'Network error. Check your connection and retry';
|
|
|
|
@override
|
|
String get errorNetworkTimeout => 'Network timed out. Please retry';
|
|
|
|
@override
|
|
String get errorInternal =>
|
|
'Service temporarily unavailable. Please retry later';
|
|
|
|
@override
|
|
String get albumsEmpty =>
|
|
'No albums yet. Tap \"Create album\" to get started';
|
|
|
|
@override
|
|
String get loadMoreFailed => 'Failed to load more. Tap to retry';
|
|
|
|
@override
|
|
String get albumCreate => 'Create album';
|
|
|
|
@override
|
|
String get albumEdit => 'Edit album';
|
|
|
|
@override
|
|
String get albumSectionEventInfo => 'Event info';
|
|
|
|
@override
|
|
String get albumSectionContent => 'Multilingual content';
|
|
|
|
@override
|
|
String get albumSectionAccess => 'Access settings';
|
|
|
|
@override
|
|
String get albumTitle => 'Title';
|
|
|
|
@override
|
|
String get albumDescription => 'Description';
|
|
|
|
@override
|
|
String get albumVenue => 'Venue';
|
|
|
|
@override
|
|
String get albumAddress => 'Address';
|
|
|
|
@override
|
|
String get albumDefaultLocale => 'Default locale';
|
|
|
|
@override
|
|
String get albumStartAt => 'Start time';
|
|
|
|
@override
|
|
String get albumEndAtOptional => 'End time (optional)';
|
|
|
|
@override
|
|
String get clearEndAt => 'Clear end time';
|
|
|
|
@override
|
|
String get albumTimezone => 'Timezone';
|
|
|
|
@override
|
|
String get albumTimezoneInvalid => 'Invalid IANA timezone name';
|
|
|
|
@override
|
|
String get switchUpload => 'Allow uploads';
|
|
|
|
@override
|
|
String get switchPublic => 'Publicly visible';
|
|
|
|
@override
|
|
String get switchDownload => 'Allow downloads';
|
|
|
|
@override
|
|
String get switchOriginalDownload => 'Allow original downloads';
|
|
|
|
@override
|
|
String get formStartAtRequired => 'Pick a start time';
|
|
|
|
@override
|
|
String get formDefaultLocaleMissing => 'Default locale must have a title';
|
|
|
|
@override
|
|
String get formTitleRequiredWithFields =>
|
|
'Title is required when description, venue or address is filled';
|
|
|
|
@override
|
|
String get formEndAtNotAfterStartAt => 'End time must be after start time';
|
|
|
|
@override
|
|
String get create => 'Create';
|
|
|
|
@override
|
|
String get save => 'Save';
|
|
|
|
@override
|
|
String get albumStatusActive => 'Active';
|
|
|
|
@override
|
|
String get albumStatusOffline => 'Offline';
|
|
|
|
@override
|
|
String get tagUpload => 'Upload';
|
|
|
|
@override
|
|
String get tagPublic => 'Public';
|
|
|
|
@override
|
|
String get tagDownload => 'Download';
|
|
|
|
@override
|
|
String get tagOriginal => 'Original';
|
|
|
|
@override
|
|
String get notSet => 'Not set';
|
|
|
|
@override
|
|
String get actionEdit => 'Edit';
|
|
|
|
@override
|
|
String get albumMembers => 'Members';
|
|
|
|
@override
|
|
String get albumCategories => 'Categories';
|
|
|
|
@override
|
|
String get shareQrTitle => 'Share QR code';
|
|
|
|
@override
|
|
String get albumPhotos => 'Photos';
|
|
|
|
@override
|
|
String get delete => 'Delete';
|
|
|
|
@override
|
|
String get deleteConfirmCategory =>
|
|
'Delete this category? Its photos will become uncategorized.';
|
|
|
|
@override
|
|
String get categoryEmpty => 'No categories yet. Tap + to add one';
|
|
|
|
@override
|
|
String get categoryAdd => 'Add category';
|
|
|
|
@override
|
|
String get categoryEdit => 'Edit category';
|
|
|
|
@override
|
|
String get categoryNameZh => 'Chinese name';
|
|
|
|
@override
|
|
String get categoryNameEn => 'English name';
|
|
|
|
@override
|
|
String get categorySortOrder => 'Sort order';
|
|
|
|
@override
|
|
String get categoryNameRequired => 'At least one language name is required';
|
|
|
|
@override
|
|
String get categorySortOrderInvalid => 'Sort order must be an integer';
|
|
|
|
@override
|
|
String get albumMembersEmpty => 'No members yet';
|
|
|
|
@override
|
|
String get inviteSearchHint =>
|
|
'Search by account prefix to invite (at least 2 characters)';
|
|
|
|
@override
|
|
String get inviteNoResults => 'No matching users';
|
|
|
|
@override
|
|
String get invite => 'Invite';
|
|
|
|
@override
|
|
String get memberInvited => 'Invited';
|
|
|
|
@override
|
|
String get removeMember => 'Remove member';
|
|
|
|
@override
|
|
String get removeMemberConfirm => 'Remove this member?';
|
|
|
|
@override
|
|
String get roleOwner => 'Owner';
|
|
|
|
@override
|
|
String get roleCollaborator => 'Collaborator';
|
|
|
|
@override
|
|
String get selfMarker => ' (you)';
|
|
|
|
@override
|
|
String get errorMemberConflict => 'User is already a member';
|
|
|
|
@override
|
|
String get qrHint => 'Scan the code or open the link to view';
|
|
|
|
@override
|
|
String get copyLink => 'Copy link';
|
|
|
|
@override
|
|
String get copiedToClipboard => 'Copied';
|
|
|
|
@override
|
|
String get openInBrowser => 'Open in browser';
|
|
|
|
@override
|
|
String get photosTask9Placeholder =>
|
|
'Photo management is a placeholder; the full experience ships in Task 9';
|
|
|
|
@override
|
|
String get albumPhotosEmpty => 'No photos yet';
|
|
|
|
@override
|
|
String get visibilityPublished => 'Published';
|
|
|
|
@override
|
|
String get visibilityUnpublished => 'Unpublished';
|
|
|
|
@override
|
|
String get visibilityHidden => 'Hidden';
|
|
|
|
@override
|
|
String get visibilityDeleted => 'Deleted';
|
|
|
|
@override
|
|
String get procPendingUpload => 'Pending upload';
|
|
|
|
@override
|
|
String get procUploaded => 'Uploaded';
|
|
|
|
@override
|
|
String get procProcessing => 'Processing';
|
|
|
|
@override
|
|
String get procReady => 'Ready';
|
|
|
|
@override
|
|
String get procProcessingFailed => 'Processing failed';
|
|
|
|
@override
|
|
String get queueStubHint =>
|
|
'Local upload queue and continuous capture arrive in Task 9';
|
|
|
|
@override
|
|
String get serverHistoryEntry => 'Server history';
|
|
|
|
@override
|
|
String get serverHistoryTitle => 'Server history (cross-device)';
|
|
|
|
@override
|
|
String get serverHistoryBanner =>
|
|
'Upload records from all of your devices. The local queue is on the Uploads tab.';
|
|
|
|
@override
|
|
String get serverHistoryEmpty => 'No upload sessions yet';
|
|
|
|
@override
|
|
String get uploadStatePending => 'Pending';
|
|
|
|
@override
|
|
String get uploadStateConfirmed => 'Confirmed';
|
|
|
|
@override
|
|
String get uploadStateCancelled => 'Cancelled';
|
|
|
|
@override
|
|
String get uploadStateExpired => 'Expired';
|
|
|
|
@override
|
|
String get thisDevice => 'This device';
|
|
|
|
@override
|
|
String get queueAlbumFilterAll => 'All albums';
|
|
|
|
@override
|
|
String get queueStateAll => 'All';
|
|
|
|
@override
|
|
String get queueStateInProgress => 'In progress';
|
|
|
|
@override
|
|
String get queueStateNeedsAttention => 'Needs attention';
|
|
|
|
@override
|
|
String get queueStateCompleted => 'Completed';
|
|
|
|
@override
|
|
String get queueSummaryCompleted => 'completed';
|
|
|
|
@override
|
|
String get queueSummaryUploading => 'uploading';
|
|
|
|
@override
|
|
String get queueSummaryWaiting => 'waiting';
|
|
|
|
@override
|
|
String get queueSummaryNeedAttention => 'need attention';
|
|
|
|
@override
|
|
String queueRowUploadingPercent(int percent) {
|
|
return 'Uploading $percent%';
|
|
}
|
|
|
|
@override
|
|
String get queueRowConfirming => 'Confirming upload';
|
|
|
|
@override
|
|
String get queueRowWaitingUpload => 'Waiting to upload';
|
|
|
|
@override
|
|
String get queueRowPreparing => 'Preparing photo';
|
|
|
|
@override
|
|
String get queueWaitingNetworkHint =>
|
|
'Resumes automatically when the network recovers';
|
|
|
|
@override
|
|
String get queueRowFileUnavailable => 'File unavailable';
|
|
|
|
@override
|
|
String get queueActionSelectAgain => 'Select again';
|
|
|
|
@override
|
|
String get queueActionRemoveRecord => 'Remove record';
|
|
|
|
@override
|
|
String get queueRemoveRecordTitle => 'Remove this record?';
|
|
|
|
@override
|
|
String get queueRemoveRecordBody =>
|
|
'This only removes the local task record. Photos already uploaded are not deleted from the cloud.';
|
|
|
|
@override
|
|
String get queueRemoveRecordConfirm => 'Remove';
|
|
|
|
@override
|
|
String get queueRetryAllScope =>
|
|
'Only failed uploads on this device are retried. Tasks waiting for the network recover automatically.';
|
|
|
|
@override
|
|
String get queueTimeAll => 'Any time';
|
|
|
|
@override
|
|
String get queueTimeToday => 'Today';
|
|
|
|
@override
|
|
String get queueTimeLast7Days => 'Last 7 days';
|
|
|
|
@override
|
|
String get queueTimeLast30Days => 'Last 30 days';
|
|
|
|
@override
|
|
String get queueEmpty => 'No upload tasks';
|
|
|
|
@override
|
|
String get queueRetryAllFailed => 'Retry all failed';
|
|
|
|
@override
|
|
String queueAttemptCount(int count) {
|
|
return '$count attempt(s)';
|
|
}
|
|
|
|
@override
|
|
String get taskStatePreparing => 'Preparing';
|
|
|
|
@override
|
|
String get taskStatePreparationFailed => 'Preparation failed';
|
|
|
|
@override
|
|
String get taskStateQueued => 'Queued';
|
|
|
|
@override
|
|
String get taskStateUploading => 'Uploading';
|
|
|
|
@override
|
|
String get taskStateUploadedConfirming => 'Confirming';
|
|
|
|
@override
|
|
String get taskStateCompleted => 'Completed';
|
|
|
|
@override
|
|
String get taskStateWaitingNetwork => 'Waiting for network';
|
|
|
|
@override
|
|
String get taskStateRetryableFailed => 'Upload failed';
|
|
|
|
@override
|
|
String get taskStateCancelled => 'Cancelled';
|
|
|
|
@override
|
|
String get errorPrepSourceUnreadable =>
|
|
'Could not read the selected photo. Please reselect';
|
|
|
|
@override
|
|
String get errorPrepUnsupportedType =>
|
|
'Only JPG, PNG and HEIC images are supported';
|
|
|
|
@override
|
|
String get errorPrepTooLarge => 'Photo exceeds the 50MB limit';
|
|
|
|
@override
|
|
String get errorPrepCopyFailed => 'Failed to copy the photo. Please retry';
|
|
|
|
@override
|
|
String get errorUploadSourceMissing =>
|
|
'Source file is missing. Please reselect';
|
|
|
|
@override
|
|
String get errorAlbumUploadDisabled => 'Album uploads are disabled';
|
|
|
|
@override
|
|
String get errorUploadSessionConflict =>
|
|
'Upload session conflict. Please retry';
|
|
|
|
@override
|
|
String get errorUploadVerifyFailed =>
|
|
'Upload verification failed. Will retry';
|
|
|
|
@override
|
|
String get captureTitle => 'Continuous capture';
|
|
|
|
@override
|
|
String get captureCategoryDefault => 'Default category';
|
|
|
|
@override
|
|
String get captureSwitchHint =>
|
|
'Switching only affects photos captured afterwards';
|
|
|
|
@override
|
|
String capturePendingBadge(int count) {
|
|
return 'Pending $count';
|
|
}
|
|
|
|
@override
|
|
String captureFailedBadge(int count) {
|
|
return 'Failed $count';
|
|
}
|
|
|
|
@override
|
|
String get capturePickFromGallery => 'Pick from gallery';
|
|
|
|
@override
|
|
String get captureShutter => 'Capture';
|
|
|
|
@override
|
|
String captureQueuedBadge(int count) {
|
|
return 'Queued $count';
|
|
}
|
|
|
|
@override
|
|
String get captureEnqueuedFeedback => 'Added to queue';
|
|
|
|
@override
|
|
String get captureExitTitle => 'Leave shooting?';
|
|
|
|
@override
|
|
String captureExitBody(int count) {
|
|
return '$count photo(s) are still uploading. Tasks will continue in the background after you leave.';
|
|
}
|
|
|
|
@override
|
|
String get captureKeepShooting => 'Keep shooting';
|
|
|
|
@override
|
|
String get captureExitConfirm => 'Leave';
|
|
|
|
@override
|
|
String get cameraPermissionDenied =>
|
|
'Camera unavailable. Allow camera access in system settings';
|
|
|
|
@override
|
|
String get cameraInitFailed => 'Camera failed to initialize';
|
|
|
|
@override
|
|
String get uploadActionCapture => 'Capture and upload';
|
|
|
|
@override
|
|
String get uploadActionPick => 'Pick from gallery';
|
|
|
|
@override
|
|
String get uploadAction => 'Upload';
|
|
|
|
@override
|
|
String uploadEnqueuedCount(int count) {
|
|
return 'Added $count photo(s) to the upload queue';
|
|
}
|
|
|
|
@override
|
|
String get uploadPickNone => 'No photos selected';
|
|
|
|
@override
|
|
String get albumManagePhotos => 'Manage photos';
|
|
|
|
@override
|
|
String get albumTakeFirstPhoto => 'Take the first photo';
|
|
|
|
@override
|
|
String get albumUploadDisabledHint =>
|
|
'Uploads are off for this album. New photos cannot be added right now';
|
|
|
|
@override
|
|
String get albumRecentPhotos => 'Recent uploads';
|
|
|
|
@override
|
|
String get photoFilterAll => 'All';
|
|
|
|
@override
|
|
String get photoFilterFailed => 'Failed';
|
|
|
|
@override
|
|
String get photosScopeOwnHint =>
|
|
'Collaborator view: only photos you uploaded are shown';
|
|
|
|
@override
|
|
String get photosEmptyFiltered => 'No photos match this filter';
|
|
|
|
@override
|
|
String get photoHide => 'Hide';
|
|
|
|
@override
|
|
String get photoUnhide => 'Unhide';
|
|
|
|
@override
|
|
String get photoDeleteConfirmTitle => 'Delete this photo?';
|
|
|
|
@override
|
|
String get photoDeleteConfirmBody =>
|
|
'The cloud photo will be deleted. This cannot be undone.';
|
|
|
|
@override
|
|
String get photoHiddenToast => 'Hidden';
|
|
|
|
@override
|
|
String get photoUnhiddenToast => 'Unhidden';
|
|
|
|
@override
|
|
String get photoDeletedToast => 'Deleted';
|
|
|
|
@override
|
|
String get photoReload => 'Reload';
|
|
|
|
@override
|
|
String get photoPreviewUnavailable => 'Image unavailable';
|
|
}
|