Files
xianyan/lib/l10n/languages/en.dart
2026-06-07 18:20:26 +08:00

2072 lines
83 KiB
Dart
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/// ============================================================
/// 闲言APP — 英语翻译数据
/// 创建时间: 2026-05-29
/// 更新时间: 2026-06-06
/// 作用: 英语(en)翻译文本
/// 上次更新: 新增UserCenter子组件国际化翻译字段
/// ============================================================
import '../types/t.dart';
const en = T(
nav: TNav(
home: 'Xianyan',
discover: 'Discover',
profile: 'Me',
footprint: 'Footprint',
inspiration: 'Inspiration',
),
common: TCommon(
cancel: 'Cancel',
ok: 'OK',
save: 'Save',
confirm: 'Confirm',
clear: 'Clear',
reset: 'Reset',
delete: 'Delete',
success: 'Success',
failed: 'Failed',
enabled: 'On',
disabled: 'Off',
loading: 'Loading...',
view: 'View',
search: 'Search settings...',
entriesCountUnit: 'entries',
copyright: '© 2026 Xianyan Team',
done: 'Done',
all: 'All',
refresh: 'Refresh',
retry: 'Retry',
copy: 'Copy',
searchHistory: 'Search History',
gotIt: 'OK',
featureUnavailable: 'This feature is temporarily unavailable',
featureNotSupported: 'This feature is not supported on this device',
inDevelopment: 'In Development',
nAvailable: '{0} available',
appName: 'Xianyan',
exportFailed: 'Export failed',
),
home: THome(
base: THomeBase(
batteryCritical: 'Battery very low! Charge now 🔴',
batteryLow: 'Battery running low, remember to charge 💛',
defaultSentence:
'Life isn\'t about waiting for the storm to pass, it\'s about learning to dance in the rain.',
defaultFeedName: 'Xianyan',
authorPrefix: '',
numberWan: 'w',
numberThousand: 'k',
dailyRecommendation: 'Daily Pick',
findingNewSentences: 'Finding new quotes for you...',
gettingTodayRecommendation: 'Loading today\'s recommendation...',
createCard: 'Create Card',
editThisSentence: 'Edit Quote',
noSentences: 'No quotes yet',
pullDownToRefresh: 'Try refreshing',
networkConnectionFailed: 'Network connection failed',
clickToRetry: 'Tap to retry',
sentenceCopied: 'Quote copied',
offlineMode: 'Offline — Showing cached data',
quoteSquare: 'Quote Square',
dragToSort: '📖 Drag to Sort',
sortNewest: 'Newest',
sortHot: 'Popular',
sortClassic: 'Classic',
noContent: '📋 No content',
recentlyOpened: '🕐 Recently Opened',
selectCustomTool: '🔧 Select Custom Tool',
collapse: 'Collapse',
openAnyPageAutoRecord: 'Open any page\nAuto record',
longPressToSet: 'Long press to set',
shareAppSignature: '— Xianyan APP',
shareFailed: 'Share failed',
loadingContent: 'Loading content...',
autoRefreshSeconds: 'Auto-refresh in {0}s',
),
sentenceDetail: TSentenceDetail(
longPressToSelect: 'Long press to select text',
originalContent: '📝 Original Content',
liked: 'Liked',
like: 'Like',
likeCanceled: 'Like removed',
likeToast: '👍 Liked',
favorited: 'Favorited',
favorite: 'Favorite',
favoriteCanceled: 'Favorite removed',
favoriteToast: '⭐ Favorited',
readLaterMarked: 'Marked',
readLaterLabel: 'Read Later',
alreadyInReadLater: 'Already in read later list',
share: 'Share',
shareSentence: 'Share Quote',
sentenceDetail: 'Quote Detail',
bookmarkAdded: '🔖 Bookmark added',
bookmarkRemoved: '🔖 Bookmark removed',
bookmark: '🔖 Bookmark',
tag: '🏷️ Tag',
externalSearch: '🔍 External Search',
readAloud: '🔊 Read Aloud',
searchEmpty: 'Search content is empty',
searchUrlError: 'Cannot build search URL',
searchFailed: 'External search failed',
addTag: '🏷️ Add Tag',
tagInputHint: 'Enter tag name',
tagAdded: '🏷️ Tag added',
tagAddFailed: 'Tag add failed',
addLabel: 'Add',
editSentence: '✏️ Edit Quote',
blocked: '🚫 Blocked',
block: '🚫 Block',
notInterestedToast: '🙈 Marked as not interested',
notInterested: '🙈 Not Interested',
searchQuery: '🔍 Search "{0}"',
),
readLater: TReadLater(
readLaterLabel: 'Read Later',
readLaterPageTitle: '📖 Read Later',
readLaterCountFormat: '{0} items',
readLaterEmpty: 'No items to read later',
readLaterEmptyHint: 'Swipe on a quote card to add',
imageType: 'Image',
videoType: 'Video',
fileType: 'File',
linkType: 'Link',
docType: 'Document',
textType: 'Text',
imageEmoji: '🖼️ Image',
videoEmoji: '🎬 Video',
fileEmoji: '📄 File',
textEmoji: '📝 Text',
archiveLabel: 'Archive',
fileLabel: 'File',
removedFromReadLater: 'Removed from read later',
operationFailed: 'Operation failed',
detailLabel: 'Details',
closeLabel: 'Close',
sizeLabel: 'Size',
typeLabel: 'Type',
searchPlaceholder: 'Search Read Later',
allLabel: 'All',
selectedLabel: 'Selected',
cancelLabel: 'Cancel',
selectAllLabel: 'Select All',
deleteLabel: 'Delete',
markReadLabel: 'Mark Read',
markedReadLabel: 'Marked Read',
markAllReadLabel: 'Mark All Read',
markAllReadConfirm: 'Mark all items as read?',
confirmLabel: 'Confirm',
batchDeletedLabel: 'Deleted {0} items',
sortLabel: 'Sort By',
sortTimeDesc: 'Time (Newest)',
sortTimeAsc: 'Time (Oldest)',
sortType: 'By Type',
sortSize: 'By Size',
copyLabel: 'Copy',
copiedLabel: 'Copied',
copyLinkLabel: 'Copy Link',
shareLabel: 'Share',
removeReadLaterLabel: 'Remove from Read Later',
openBrowserLabel: 'Open in Browser',
),
),
discover: TDiscover(
base: TDiscoverBase(
browse: '📋 Browse',
likes: '👍 Likes',
favorite: '⭐ Favorites',
readLater: '📖 Later',
notes: '📝 Notes',
loginToSync: 'Login to sync cloud records',
login: 'Login',
noInspiration: 'No inspiration yet',
refresh: 'Refresh',
listView: 'List',
gridView: 'Cards',
pinned: 'Pinned',
conversations: 'Conversations',
pullDownTools: '⬆️ Pull down for tools',
remark: '✏️ Remark',
originalName: 'Original Name',
remarkPlaceholder: 'Enter remark (leave empty for original)',
saveRemark: 'Save Remark',
loginRequired: 'Please login first',
comingSoon: 'Coming soon ✨',
browseHistory: 'Browse History',
likesHistory: 'Likes History',
myNotes: 'My Notes',
readLaterFull: 'Read Later',
makeCard: '🎨 Make Card',
favoriteAction: '👍 Favorite',
tryOtherCategory: 'Try another category',
shareAction: 'Share',
shareText: 'Share Inspiration',
cardSaved: 'Card saved',
cardSaveFailed: 'Save failed',
copiedToClipboard: 'Copied to clipboard',
errorLoading: 'Load failed, tap to retry',
favorited: 'Favorited',
relatedRecommend: '🎯 Related',
notInterested: 'Not Interested',
dailyRead: '📖 Daily Read',
changeGroup: 'Refresh',
relatedRecommendShort: 'Related',
noRecommendContent: 'No recommendations yet',
inspiration: 'Inspiration',
stopReading: 'Stop',
readAloud: 'Read Aloud',
inspirationCategory: '🏷️ Categories',
searchLabel: 'Search',
loadMore: 'Load More',
// Session names and descriptions
sessionReadLater: 'Read Later',
sessionReadLaterDesc: 'Save content to read later',
sessionInspiration: 'Inspiration',
sessionInspirationDesc: 'Trending quotes · Categories · Daily pick',
sessionFootprint: 'Footprint',
sessionFootprintDesc: 'Browse · Likes · Favorites · Read Later · Notes',
sessionDailyCard: 'Daily Card',
sessionDailyCardDesc: 'Daily quote · Style switch · One-tap share',
sessionTemplate: 'Wallpaper Templates',
sessionTemplateDesc:
'Preset templates · Browse categories · Apply instantly',
sessionReadingReport: 'Reading Report',
sessionReadingReportDesc:
'Weekly/Monthly/Yearly · Trends · Heatmap · Achievements',
sessionWeather: 'Poetry & Weather',
sessionWeatherDesc:
'Real-time weather · Contextual poems · Mood recommendations',
sessionPoetry: 'Daily Poetry',
sessionPoetryDesc:
'Daily recommendation · Full poem · Translation & analysis',
sessionDailyFortune: 'Daily Fortune',
sessionDailyFortuneDesc:
"Today's fortune · 6D analysis · Lucky indicators",
sessionSolarTerm: 'Solar Terms',
sessionSolarTermDesc: '24 Solar Terms · Poems · Folk customs',
sessionKnowledgeGraph: 'Knowledge Graph',
sessionKnowledgeGraphDesc:
'Explore connections between poems, authors, and themes',
sessionStudyPlan: 'Study Plan',
sessionStudyPlanDesc: 'Create study plans, stay consistent daily',
sessionProgress: 'Progress',
sessionProgressDesc:
'Today · This week · This month · Yearly · Holiday countdown',
sessionFileTransfer: 'File Transfer',
sessionFileTransferDesc: 'LAN · Bluetooth · WebRTC · USB',
sessionRssFeed: 'RSS Feed',
sessionRssFeedDesc: 'Third-party RSS/XML subscriptions',
sessionTranslate: 'Translator',
sessionTranslateDesc:
'Multi-language smart translation · Auto-detect language',
sessionLeisure: 'Leisure Time',
sessionLeisureDesc: 'Flowers · Food · Attractions · Timeline',
),
chatFlow: TChatFlow(
chatFlow: '💬 Chat Flow',
chatSettings: 'Chat Settings',
defaultConversation: 'Default conversation',
searchMessages: '🔍 Search messages, authors, links...',
categoryAll: '📋 All',
categoryHot: '🔥 Hot',
categoryLove: 'Love',
categoryNature: '🌿 Nature',
categoryMotivate: '💪 Motivate',
categoryLiterature: '📖 Literature',
categoryMovie: '🎬 Movie',
expandCategories: 'More ▼',
collapseCategories: 'Less ▲',
inputPlaceholderChat: 'Say something...',
inputPlaceholderReadlater: 'Add link/text...',
attachmentGallery: 'Gallery',
attachmentCamera: 'Camera',
attachmentVideo: 'Video',
attachmentAudio: 'Audio',
attachmentFile: 'File',
attachmentLocation: 'Location',
attachmentLink: 'Link',
attachmentRichText: 'Rich Text',
hiddenSessions: '👁️‍🗨️ Hidden Chats',
noHiddenSessions: 'No hidden chats',
swipeToHide: 'Swipe left to hide a chat',
unhide: 'Unhide',
hidden: 'Hidden',
searchSessionOrContent: 'Search chats or content…',
noSearchResults: 'No results found',
sessionSection: '📱 Chats',
messageContentSection: '💬 Message Content',
pin: '📌 Pin',
unpin: 'Unpin',
hideSession: '👁️‍🗨️ Hide',
unhideSession: '👁️ Unhide',
remark: '✏️ Remark',
markAsRead: '👁️ Mark as Read',
markAsUnread: '👁️ Mark as Unread',
muteNotifications: '🔕 Mute',
unmuteNotifications: '🔔 Unmute',
hideSettings: '⚙️ Hide Settings',
deleteSession: '🗑️ Delete',
emptyReadlater: 'No read-later items',
emptyChat: 'No messages yet',
emptyReadlaterHint: 'Save content to read later 📖',
emptyChatHint: 'Send a message to start chatting',
newConversation: '✨ New Chat',
conversationNamePlaceholder: 'Chat name',
create: 'Create',
sentToCategory: 'Sent to',
sent: '✈️ Sent',
readlaterList: '📋 Read Later List',
manageTags: '🏷️ Manage Tags',
manageFolders: '📁 Manage Folders',
cloudSync: '☁️ Cloud Sync',
aiSummary: '🤖 AI Summary',
sharedCollab: '👥 Shared Collab',
deviceSync: '📱 Device Sync',
updateWidget: '🏠 Update Widget',
clipboardMonitor: '📋 Clipboard Monitor',
markAllRead: '✅ Mark All Read',
exportContent: '📤 Export',
clearReadlater: '🗑️ Clear Read Later',
allMarkedRead: 'All marked as read',
clearReadlaterConfirm:
'Clear all {0} read-later items? This cannot be undone.',
clearButton: 'Clear',
readlaterCleared: 'Read later cleared',
readlaterStats: '📊 Total {0} · Read {1} · Unread {2}',
tagManagement: '🏷️ Tag Management',
addTagButton: ' Add',
noTags: 'No tags yet',
addTagHint: 'Tap top right to add a tag',
addTagTitle: '🏷️ Add Tag',
tagNamePlaceholder: 'Enter tag name',
tagDeleted: 'Tag "{0}" deleted',
tagAdded: 'Tag "{0}" added',
tagFilterTitle: '🏷️ Tag: {0}',
tagMessageCount: '{0} messages',
folderManagement: '📁 Folder Management',
createFolderButton: ' New',
noFolders: 'No folders yet',
createFolderHint: 'Tap top right to create a folder',
folderDeleted: 'Folder "{0}" deleted',
createFolderTitle: '📁 New Folder',
folderNamePlaceholder: 'Enter folder name',
folderCreated: 'Folder "{0}" created',
renameFolderTitle: '✏️ Rename Folder',
messageCountUnit: '{0} messages',
addTagAction: '🏷️ Add Tag',
aiSummaryAction: '🤖 AI Summary',
smartTagAction: '🏷️ Smart Tags',
archiveToFolder: '📁 Archive to Folder',
existingTags: 'Existing tags: {0}',
generatingSummary: '🤖 Generating summary...',
summaryCopied: 'Summary copied',
aiSummaryUnavailable: 'AI summary unavailable',
aiSummaryFailed: 'AI summary failed',
analyzingTags: '🏷️ Analyzing...',
emptyContentNoTags: 'Empty content, cannot suggest tags',
noTagSuggestions: 'No tag suggestions from AI',
smartTagSuggestionTitle: '🏷️ Smart Tag Suggestions',
aiSuggestedTags: 'AI suggested tags: {0}',
tagsAddedCount: '{0} tags added',
addAllTags: 'Add All',
selectFolder: '📁 Select Folder',
archivedToFolder: 'Archived to "{0}"',
createFolderFirst: 'Please create a folder first',
exportAsJsonAction: '📋 Export as JSON',
exportAsMarkdownAction: '📝 Export as Markdown',
exportAsZipAction: '📦 Export as ZIP',
exportedToClipboardJson: '{0} items exported to clipboard (JSON)',
exportedToClipboardMarkdown: '{0} items exported to clipboard (Markdown)',
readlaterExportTitle: '📖 Read Later Export',
zipExportSuccess: 'ZIP export successful',
exportFailedMsg: 'Export failed',
readlaterExportSubject: 'XianYan - Read Later Export',
syncing: '☁️ Syncing...',
syncComplete: 'Sync complete ↑{0} ↓{1} ⚡{2}',
syncFailed: 'Sync failed',
noContentForSummary: 'No content for summary',
generatingAiSummary: '🤖 Generating AI summary...',
summaryCopiedToClipboard: 'Summary copied to clipboard',
aiSummaryUnavailableRetry: 'AI summary unavailable, please try later',
sharedCollabTitle: '👥 Shared Collaboration',
createButton: ' Create',
noSharedLists: 'No shared lists',
createSharedListHint: 'Create a shared list to collaborate',
sharedListStats: '{0} members · {1} messages',
createSharedListTitle: '👥 Create Shared List',
listNamePlaceholder: 'Enter list name',
sharedListCreated: 'Shared list "{0}" created',
membersCount: 'Members: {0}',
messagesCount: 'Messages: {0}',
createdDate: 'Created: {0}',
leftSharedList: 'Left shared list',
leaveList: 'Leave List',
discoveringDevices: '📱 Discovering devices...',
noDevicesFound:
'No online devices found. Make sure devices are connected.',
selectTargetDevice: '📱 Select Target Device',
syncingToDevice: '📱 Syncing to {0}...',
syncSendFailed: 'Sync send failed',
deviceDiscoveryFailed: 'Device discovery failed',
widgetUpdated: '🏠 Widget updated',
widgetUpdateFailed: 'Widget update failed',
clipboardMonitorTitle: '📋 Clipboard Monitor',
clipboardStatusMonitoring: 'Status: Monitoring',
clipboardStatusOff: 'Status: Off',
clipboardMonitorEnabled: '📋 Clipboard monitor enabled',
clipboardMonitorDisabled: '📋 Clipboard monitor disabled',
enableMonitor: 'Enable Monitor',
disableMonitor: 'Disable Monitor',
viewClipboard: 'View Clipboard',
clipboardContent: '📋 Clipboard: {0}',
clipboardEmpty: 'Clipboard is empty',
),
chatSettings: TChatSettings(
appearance: '🎨 Appearance',
backgroundImage: '🖼️ Background',
setBackground: 'Set chat background',
themeColor: '🎨 Theme Color',
customAccentColor: 'Custom accent color',
data: '📦 Data',
exportMessages: '📤 Export Messages',
exportAsJson: 'Export as JSON file',
importMessages: '📥 Import Messages',
importFromJson: 'Import from JSON file',
shareChatRecord: '↗️ Share',
sync: '🔄 Sync',
syncInfo: '🔄 Sync',
syncInfoDetail:
'Cloud sync will be available in a future update.\nData is currently stored locally.',
gotIt: 'Got it',
categoryManagement: '🏷️ Categories',
manageCategories: '🏷️ Manage Categories',
editCategoryNames: 'Edit category names & order',
editCategory: '✏️ Edit Category',
enterNewName: 'Enter new name',
recycleBin: '🗑️ Recycle Bin',
viewDeletedMessages: 'View deleted messages',
recycleBinEmpty: 'Recycle bin is empty',
recycleBinCleared: 'Recycle bin cleared',
emptyBin: 'Empty',
close: 'Close',
restore: 'Restore',
messageRestored: 'Message restored',
permanentDelete: 'Delete',
messagePermanentlyDeleted: 'Message permanently deleted',
dangerZone: '⚠️ Danger Zone',
clearMessages: 'Clear Messages',
clearAllMessagesConfirm:
'Clear all messages in this conversation?\nMessages will be moved to recycle bin and can be restored.',
messagesCleared: 'Messages cleared',
exportFailed: 'Export failed',
fromAlbum: 'Choose from Album',
restoreDefault: 'Restore Default',
defaultPurple: '💜 Default Purple',
oceanBlue: '🔵 Ocean Blue',
mintGreen: '💚 Mint Green',
warmOrange: '🧡 Warm Orange',
roseRed: '🌹 Rose Red',
skyCyan: '🩵 Sky Cyan',
brownCoffee: '🟤 Brown Coffee',
silverGrey: '⬜ Silver Grey',
selectAccentColor: 'Select accent color',
),
toolCenter: TToolCenter(
toolCenter: 'Tool Center',
discoverMoreHelpers: 'Discover more helpers',
toolCount: ' tools',
myFavorites: 'My Favorites',
recentlyUsed: '🕐 Recently Used',
startUsingTools: 'Start using tools 💡',
viewAll: 'View All →',
useCountTimes: ' times',
recommendedTools: '⭐ Recommended',
refreshBatch: 'Refresh',
editLayout: 'Edit Layout',
importTool: 'Import Tool',
stayTuned: 'Coming soon ✨',
toolSettings: 'Settings',
searchTools: '🔍 Search tools…',
searchHistory: 'Search History',
clearHistory: 'Clear',
noSearchResult: 'No tools found',
toolRemoved: 'Removed "{0}", restore in Settings',
dragToRemove: 'Drag here to remove',
releaseToRemove: 'Release to remove "{0}"',
closeToolPanel: 'Close tool panel',
tapToClose: 'Tap background to close',
cancelFavorite: 'Unfavorite',
pinToTop: 'Pin',
cancelPin: 'Unpin',
newBadge: 'New',
tapToOpen: 'Tap to open',
longPressForMore: 'Long press for more',
),
toolStats: TToolStats(
usageCount: 'Usage count',
lastUsed: 'Last used',
never: 'Never',
rating: 'Rating',
noRating: 'N/A',
usageTrend: 'Usage trend',
version: 'Version',
),
),
profile: TProfile(
title: 'Me',
myFavorites: 'Favorites',
readingHistory: 'History',
darkMode: 'Dark Mode',
accountSettings: 'Account',
dataManagement: 'Data',
offlineMode: 'Offline',
cacheManagement: 'Cache',
themeCustomization: 'Theme',
desktopWidgets: 'Widgets',
sentenceSource: 'Sources',
aboutApp: 'About',
rateApp: 'Rate',
debugMode: 'Debug',
tapToLogin: 'Tap to Login',
defaultUserName: 'Xianyan User',
appSlogan: 'Discover quotes, create cards',
freeTier: 'Free',
points: 'Points',
checkin: 'Check-in',
notes: 'Notes',
quickActions: 'Quick Actions',
scanQr: 'Scan',
nearbyTransfer: 'Transfer',
payment: 'Payment',
selectScanMethod: 'Select Scan Method',
scanQrLogin: 'QR Login',
scanQrCode: 'Scan QR Code',
appStoreNotFound: 'App store not found',
experimentalFeature: 'Experimental Features',
underReview: 'Under Review',
changeAvatar: 'Change Avatar',
inputAvatarUrl: 'Enter Avatar URL',
selectFromAlbum: 'Choose from Album (Coming Soon)',
avatarUrlHint:
'URL must not exceed 2048 characters, only http/https image links are supported',
pleaseInputUrl: 'Please enter a URL',
urlMustStartWithHttp: 'URL must start with http:// or https://',
urlTooLong: 'URL exceeds 2048 character limit, please use a shorter link',
invalidUrlFormat: 'Invalid URL format, please check and try again',
avatarUnderReview: '🔍 Image Under Review',
avatarReviewing: 'Reviewing avatar image, please wait...',
avatarChangeSuccess: 'Avatar changed successfully',
avatarChangeFailed: 'Avatar change failed',
success: 'Success',
failed: 'Failed',
ok: 'OK',
loading: 'Loading...',
loginToViewProfile: 'Login to view your profile',
goLogin: 'Login',
consecutiveCheckin: 'Consecutive Check-in',
favorites: 'Favorites',
likes: 'Likes',
dailyCheckin: 'Daily Check-in',
learningCenter: 'Learning Center',
achievementCenter: 'Achievement Center',
dailyTask: 'Daily Tasks',
leaderboard: 'Leaderboard',
dataStatistics: 'Data Statistics',
myNotes: 'My Notes',
contentCorrection: 'Content Correction',
myDevices: 'My Devices',
tagCloud: 'Tag Cloud',
personalInfo: 'Personal Info',
username: 'Username',
nickname: 'Nickname',
bio: 'Bio',
notSet: 'Not set',
notFilled: 'Not filled',
set: 'Set',
reviewing: 'Reviewing',
editUsername: 'Edit Username',
editNickname: 'Edit Nickname',
nearbyDiscovery: 'Nearby Devices',
nearbyDiscoveryDesc: 'Bluetooth + Wi-Fi discover nearby devices',
totalTasks: 'Total',
taskClaimed: 'Claimed',
perfectDay: 'Perfect Day',
perfectDayAllDone: 'All tasks completed',
perfectDayReward: 'Perfect Day Reward',
perfectDayRewardDesc: 'All tasks completed! Claim extra reward',
claimPerfectDayReward: 'Claim Reward',
rewardSuffix: 'Reward',
expUnit: 'EXP',
scoreUnit: 'Points',
noTasks: 'No Tasks',
noTasksDesc: 'No tasks yet today. Check back later!',
great: 'Great!',
loginToCheckin: 'Login required to check in',
loginToCheckinDesc:
'Log in to participate in daily check-in and earn points',
viewAchievementCenter: 'View Achievement Center',
todaySigned: 'Already checked in today',
tapToCheckin: 'Tap to check in',
signed: 'Checked in',
weeklyCheckin: 'This Week',
totalCheckinDays: 'Total {0} days',
checkinHistory: 'Check-in History',
noCheckinRecord: 'No check-in records yet',
todayLabel: 'Today',
checkinDate: 'Check-in Date',
status: 'Status',
signedStatus: 'Checked in ✓',
remark: 'Remark',
dailyCheckinTaskDone: 'Daily check-in completed',
makeupCheckin: 'Make-up',
makeupCostInfo: 'Make-up check-in costs points. Please confirm:',
makeupDate: 'Make-up Date',
costPoints: 'Cost Points',
currentPoints: 'Current Points',
makeupInfo: 'Make-up Info',
makeupLimitInfo:
'Only 1 make-up per day. Insufficient points will prevent make-up (need {0} points)',
confirmMakeup: 'Confirm Make-up',
insufficientPoints: 'Insufficient Points',
insufficientPointsDesc:
'Make-up requires {0} points, current: {1}\n\n💡 Earn points via daily check-in, posting articles, etc.',
makeupSuccess: 'Make-up Successful',
makeupSuccessDesc: '{0} make-up successful, {1} points deducted',
makeupFailed: 'Make-up Failed',
makeupFailedRetry: 'Make-up failed, please try again later',
timesUnit: 'times',
daysUnit: 'days',
accountAndData: 'Account & Data',
editProfile: 'Edit Profile',
edit: 'Edit',
editBio: 'Edit Bio',
save: 'Save',
pleaseInput: 'Please enter',
modifySuccess: 'Modified successfully',
modifyFailed: 'Modification failed',
userProfile: 'User Profile',
goBack: 'Back',
userNotExist: 'User not found',
retry: 'Retry',
anonymousUser: 'Anonymous',
articles: 'Articles',
follow: 'Follow',
followed: 'Following',
theUser: 'this user',
privateMessage: 'Message',
gotIt: 'Got it',
shareProfile: 'Share Profile',
blockUser: 'Block User',
personalBio: 'Bio',
titleLevel: 'Title Level',
activeData: 'Activity',
beginner: 'Beginner',
apprentice: 'Apprentice',
skilled: 'Skilled',
expert: 'Expert',
master: 'Master',
signInCount: 'Check-in {count}',
noteCount: 'Notes {count}',
likeCount: 'Likes {count}',
commentCount: 'Comments {count}',
viewCount: 'Views {count}',
readLaterCount: 'Read Later {count}',
modifyField: 'Edit {field}',
pleaseInputField: 'Enter {field}',
fieldModifySuccess: '{field} updated',
fieldModifyFailed: 'Failed: {error}',
debugInfo: 'Debug Info',
defaultBio: 'Light up every moment with words',
),
settings: TSettings(
language: 'Language',
languageSubtitle: 'Change display language',
generalSettings: 'General',
selectLanguage: 'Select Language',
followSystem: 'Follow System',
collaborativeTranslation: 'Collaborate',
collaborativeTranslationDesc: 'Help improve translations',
lastTranslation: 'Last translation',
translationVersion: 'Version',
featureExtension: 'Extensions',
plugin: 'Plugins',
pluginSubtitle: 'Translation guard, TTS and more',
dailyReminder: 'Daily Reminder',
dailyReminderSubtitle: 'Push a daily quote at scheduled time',
reminderTime: 'Reminder Time',
reminderTimeSubtitle: 'Choose daily reminder time',
developer: 'Developer',
logLevel: 'Log Level',
logLevelSubtitle: 'Control log output level by module',
interaction: TSettingsInteraction(
interaction: 'Interaction',
sound: 'Sound',
soundSubtitle: 'Operation and notification sounds',
vibration: 'Vibration',
vibrationSubtitle: 'Haptic feedback intensity',
soundEffect: 'Sound Effect',
soundEffectSubtitle: 'Choose operation sound style',
pageTransitionMode: 'Page Transition',
pageTransitionModeNavigate: 'Standard navigation with swipe back',
pageTransitionModeSheet: 'Bottom sheet for wide screens',
predictiveBack: 'Predictive Back',
predictiveBackSubtitle: 'Preview previous page while swiping',
longPressPreview: 'Long Press Preview',
longPressPreviewSubtitle: 'Preview details with long press',
vibrationStrength: 'Vibration Strength',
soundEffectStyle: 'Sound Effect Style',
pageTransitionModeTitle: 'Page Transition',
navigateDescDetail:
'Swipe from left edge to go back, supports predictive back animation',
sheetDescDetail:
'Opens as a sheet, suitable for wide screens, tap ✕ to close',
standardNavigation: 'Standard Navigation',
bottomSheet: 'Bottom Sheet',
sfxFeedback: 'Sound Feedback',
sfxFeedbackSubtitle: 'Play sound on actions',
sfxStyle: '🎵 Sound Style',
sfxStyleSubtitle: 'Choose sound effect style',
shakeToSwitch: 'Shake to Switch',
shakeToSwitchSubtitle: 'Shake device to switch daily pick',
),
notification: 'Notifications',
pushNotification: 'Push Notifications',
pushNotificationSubtitle: 'Daily picks, check-in & solar term alerts',
display: TSettingsDisplay(
display: 'Display',
screenTimeout: 'Screen Timeout',
screenTimeoutSubtitle: 'Set auto-lock time',
fontSize: 'Font Size',
fontSizeSubtitle: 'Go to theme settings',
startupPage: 'Startup Page',
startupPageSubtitle: 'Choose the page shown on launch',
immersiveStatus: 'Immersive Status Bar',
immersiveStatusSubtitle: 'Hide status bar for full screen',
contentDensity: 'Content Density',
contentDensitySubtitle: 'Adjust list and card spacing',
reduceAnimations: 'Reduce Animations',
reduceAnimationsSubtitle: 'Reduce interface animation effects',
screenTimeoutTitle: 'Screen Timeout',
startupPageTitle: 'Startup Page',
contentDensityTitle: 'Content Density',
screenAlwaysOn: 'Screen Always On',
screenAlwaysOnSubtitle: 'Keep screen always on',
screenAlwaysOnOff: 'Off',
screenAlwaysOnReading: 'While Reading',
screenAlwaysOnAlways: 'Always',
screenAlwaysOnTitle: '💡 Screen Always On',
reopenOnboarding: 'Reopen Onboarding',
reopenOnboardingSubtitle: 'View intro and personalization wizard',
navBarPosition: 'Navigation Bar Position',
navBarPositionSubtitle: 'Nav bar dock position on wide screens',
navBarPositionLeft: 'Left',
navBarPositionTitle: '📍 Navigation Bar Position',
splitViewRatio: 'Split View Ratio',
splitViewRatioSubtitle: 'Left/right panel ratio in split view',
splitViewRatioTitle: '📐 Split View Ratio',
splitViewEnabled: 'Split View',
splitViewEnabledSubtitle: 'Enable split view layout on wide screens',
shaderBackground: 'Shader Background',
shaderBackgroundSubtitle: 'Fluid gradient effect on quote cards',
),
performance: TSettingsPerformance(
performance: 'Performance',
smartMode: 'Smart Mode',
smartModeSubtitle: 'Auto-switch browsing mode by network',
preload: 'Preload',
preloadSubtitle: 'Load content in advance',
cacheStrategy: 'Cache Strategy',
cacheStrategySubtitle: 'Control content caching behavior',
imageQuality: 'Image Quality',
imageQualityOriginal: 'Load originals, uses more data',
imageQualitySaver: 'Compress images, saves data',
imageQualityBalanced: 'Balance quality and data usage',
dataSaver: 'Data Saver',
dataSaverSubtitle: 'Reduce data consumption',
cacheStrategyTitle: 'Cache Strategy',
imageQualityTitle: 'Image Quality',
),
privacy: TSettingsPrivacy(
privacyAndPermissions: 'Privacy & Permissions',
appLock: 'App Lock',
appLockSubtitle: 'Face ID / Fingerprint unlock',
clipboardRead: 'Clipboard Read',
clipboardReadSubtitle: 'Allow reading clipboard content',
permissionManagement: 'Permissions',
permissionManagementSubtitle: 'Manage app permissions',
privacyPolicy: 'Privacy Policy',
privacyPolicySubtitle: 'View privacy policy content',
nearbyDiscovery: 'Nearby Discovery',
nearbyDiscoverySubtitle: 'Allow nearby users to discover you',
),
advanced: TSettingsAdvanced(
advanced: 'Advanced',
moreSettings: 'More Settings',
moreSettingsSubtitle: 'Compatibility, debug, proxy, battery',
autoCheckUpdate: 'Auto Check Update',
autoCheckUpdateSubtitle: 'Check for new version on launch',
syncSettings: 'Sync Settings',
syncSettingsSubtitle: 'Sync preferences across devices',
logManagement: 'Logs',
logManagementSubtitle: 'View and export app logs',
exportImportSettings: 'Export / Import',
exportImportSettingsSubtitle: 'Migrate settings via JSON',
dataExport: 'Data Export',
dataExportSubtitle: 'Export personal data',
clearCache: 'Clear Cache',
clearCacheSubtitle: 'Clean local cached data',
resetSettings: 'Reset Settings',
resetSettingsSubtitle: 'Restore all settings to defaults',
youMayBeLookingFor: 'You may be looking for',
fontManagement: 'Fonts',
clearCacheConfirm: 'Are you sure you want to clear all cached data?',
resetSettingsConfirm:
'Are you sure you want to reset all settings? This cannot be undone.',
exportSettings: '📤 Export Settings',
importSettings: '📥 Import Settings',
importSettingsDesc:
'Paste the exported JSON below. Import will overwrite current settings.',
confirmImport: 'Confirm Import',
importSuccess: 'Import successful',
importFailed: 'Import failed, invalid format',
pasteJson: 'Paste JSON',
pasteJsonPlaceholder: 'Paste exported JSON content...',
otherSettings: 'Other Settings',
otherSettingsSubtitle: 'Advanced, accessibility, battery & storage',
),
cache: TSettingsCache(
cacheManagement: 'Image Cache Management',
storageOverview: 'Storage Overview',
totalCache: 'Total Cache',
fileCount: 'Files',
feedCache: 'Feed Cache',
cacheBreakdown: 'Cache Breakdown',
recentCache: 'Recent Cache',
expiredCache: 'Expired Cache',
cacheFiles: 'Cache Files',
cacheActions: 'Cache Actions',
autoCleanPolicy: 'Auto Clean Policy',
autoCleanPolicyDesc: 'Cache older than the set time will be auto-cleaned',
clearExpiredCache: 'Clear Expired Cache',
clearAllCache: 'Clear All Cache',
cacheSizeLimit: 'Cache Size Limit',
cacheSizeLimitDesc: 'Alert when exceeding the limit',
batchDelete: 'Batch Delete',
selectAll: 'Select All',
deselectAll: 'Deselect All',
deleteSelected: 'Delete Selected',
cleaningProgress: 'Cleaning...',
cleanLog: 'Clean Log',
cleanLogDesc: 'View cache cleaning history',
noCache: 'No Image Cache',
noCacheHint: 'Image cache will appear here after browsing',
retry: 'Retry',
loadFailed: 'Load Failed',
fileDetail: 'File Detail',
fileName: 'File Name',
fileSize: 'File Size',
createdTime: 'Created',
expiresTime: 'Expires',
resolution: 'Resolution',
format: 'Format',
sourceUrl: 'Source URL',
category: 'Category',
expired: 'Expired',
sortBy: 'Sort By',
sortByDate: 'By Date',
sortBySize: 'By Size',
sortByType: 'By Type',
usedSpace: 'Used',
refLimit: 'Limit',
confirmDelete: 'Delete this cache file?',
confirmClearExpired:
'Expired cache files will be cleared. This cannot be undone.',
confirmClearAll:
'All cache files will be cleared. This cannot be undone.',
irreversible: 'This cannot be undone',
cleared: 'Cleared',
clearFailed: 'Clear Failed',
filesUnit: 'files',
daysUnit: 'days',
policyOff: 'Off',
edit: 'Edit',
cancel: 'Cancel',
delete: 'Delete',
clear: 'Clear',
totalCacheLabel: 'Total',
basicInfo: 'Basic Info',
imageInfo: 'Image Info',
sourceInfo: 'Source Info',
clearLog: 'Clear',
noCleanLog: 'No cleaning records',
selectedCount: 'Selected',
status: 'Status',
done: 'Done',
all: 'All',
withinDays: 'within',
beforeDays: 'before',
currentLabel: 'Current',
autoCleanSuffix: 'auto clean expired cache',
currentLimitLabel: 'Current limit',
confirmBatchDelete: 'Delete selected cache files?',
deleted: 'Deleted',
unknown: 'Unknown',
logCleared: 'Log cleared',
confirmClearLog: 'Clear all clean logs?',
clearingExpired: 'Clearing expired cache...',
clearingAll: 'Clearing all cache...',
clearingBatch: 'Batch deleting...',
storageSpace: 'Storage Space',
database: 'Database',
hive: 'Hive',
cacheCount: 'Cache Count',
categoryStats: 'Category Stats',
feedCacheCount: 'Feed Cache',
pendingSync: 'Pending Sync',
hiveStorage: 'Hive Storage',
chatSessions: 'Chat Sessions',
chatAttachments: 'Chat Attachments',
chatTrash: 'Chat Trash',
transferRecords: 'Transfer Records',
pairedDevices: 'Paired Devices',
receivedFiles: 'Received Files',
readLater: 'Read Later',
cacheCleanup: 'Cache Cleanup',
cleanExpiredCache: 'Clean Expired Cache',
cleanChatTrash: 'Clean Chat Trash',
cleanChatThumbnails: 'Clean Chat Thumbnails',
clearAllCache2: 'Clear All Cache',
cleanTransferCache: 'Clean Transfer Cache',
clearAllChatData: 'Clear All Chat Data',
cleanReadlaterCache: 'Clean Read Later Cache',
clearReadlaterData: 'Clear All Read Later Data',
cacheStrategy: 'Cache Strategy',
cacheLimit: 'Cache Limit',
expiryDays: 'Expiry Days',
offlineMode2: 'Offline Mode',
wifiPreload: 'WiFi Preload',
autoSync: 'Auto Sync',
cleaningCache: 'Cleaning cache...',
itemsUnit: 'items',
piecesUnit: 'pieces',
cleaningChatTrash: 'Chat trash cleaned',
cleaningChatThumbnails: 'Chat thumbnails cleaned',
cleaningTransferCache: 'Transfer cache cleaned',
clearingAllChatData: 'All chat data cleared',
cleaningReadlaterCache: 'Read later cache cleaned',
clearingReadlaterData: 'All read later data cleared',
allCacheCleared: 'All cache cleared',
cleanFailed2: 'Cleanup failed: {0}',
confirmCleanChatTrashTitle: 'Clean Chat Trash',
confirmCleanChatTrashContent:
'Permanently delete messages and files in trash older than 30 days. This cannot be undone.',
confirmCleanChatThumbnailsTitle: 'Clean Chat Thumbnails',
confirmCleanChatThumbnailsContent:
'Clean all chat image thumbnail cache. Original images will not be deleted.',
confirmClearAllCacheTitle: 'Clear All Cache',
confirmClearAllCacheContent:
'Are you sure you want to clear all cached data? Offline content will be deleted. This cannot be undone.',
confirmCleanTransferCacheTitle: 'Clean Transfer Cache',
confirmCleanTransferCacheContent:
'Clean transfer thumbnails, temporary files, and transfer records older than 30 days. Received files will not be deleted.',
confirmClearAllChatDataTitle: 'Clear All Chat Data',
confirmClearAllChatDataContent:
'Delete all chat sessions, messages, attachments, and trash data. This cannot be undone!',
confirmCleanReadlaterCacheTitle: 'Clean Read Later Cache',
confirmCleanReadlaterCacheContent:
'Clean read later thumbnails, attachments, and sync temp files. Message records will not be deleted.',
confirmClearReadlaterDataTitle: 'Clear All Read Later Data',
confirmClearReadlaterDataContent:
'Delete all read later messages, attachments, and thumbnails. This cannot be undone!',
clearAll: 'Clear All',
clean2: 'Clean',
enabled2: 'Enabled',
disabled2: 'Disabled',
mbUnit: 'MB',
daysUnit2: 'days',
),
permission: TSettingsPermission(
pageTitle: 'Permission Management',
loadFailed: 'Load failed',
headerTitle: 'Permission Info',
headerDesc:
'Xianyan only requests necessary permissions for core features. You can manage permissions anytime. Denying certain permissions may affect related features.',
appPermissionSection: '📱 App Permissions',
appPermissionSubtitle: 'Features requiring your authorization',
systemCapabilitySection: '⚙️ System Capabilities',
systemCapabilitySubtitle: 'Managed by OS, no manual authorization needed',
disclaimer:
'Xianyan does not over-request permissions. Some are only requested when specific features are used.',
usageStats: 'Usage Statistics',
noUsageData: 'No permission usage data',
totalCountPrefix: 'Total ',
totalCountSuffix: ' times',
badgeSystem: 'System',
badgeRequired: 'Required',
badgeOptional: 'Optional',
statusGranted: 'Granted',
statusDenied: 'Denied',
statusPermanentlyDenied: 'Refused',
statusNotDetermined: 'Not Requested',
statusRestricted: 'Restricted',
recentUsagePrefix: 'Recent: ',
timesSuffix: ' times',
btnGoSettings: 'Settings',
btnRequest: 'Request',
shakeEnabled: 'On',
shakeDisabled: 'Off',
frequencyHigh: 'High',
frequencyMedium: 'Med',
frequencyLow: 'Low',
permCameraLabel: 'Camera',
permCameraDesc:
'Used for taking photos to create wallpapers, scanning QR codes, and file transfer pairing. Only requested when you actively use related features, never in the background.',
permCameraUsage:
'Wallpaper — Take photo|QR Code — Scan login/pair|File Transfer — Scan to connect',
permCameraDenial: 'Cannot take photos, scan QR codes, or pair devices',
permPhotosLabel: 'Photos & Storage',
permPhotosDesc:
'Used for selecting images to create wallpapers, saving works to your album, and setting avatars. Only accesses selected images, never reads the entire album.',
permPhotosUsage:
'Wallpaper — Select image|Save Card — Save to album|Profile — Set avatar',
permPhotosDenial: 'Cannot select images or save works to album',
permNotificationLabel: 'Notifications',
permNotificationDesc:
'Used for daily quote push, check-in reminders, system announcements, file transfer status, and interaction messages. You can disable anytime in system settings.',
permNotificationUsage:
'Daily Quote — Scheduled push|Check-in — Daily reminder|File Transfer — Status|Messages — Likes & comments',
permNotificationDenial:
'Cannot receive daily quotes, check-in reminders, or interaction messages',
permLocationLabel: 'Location (Coarse)',
permLocationDesc:
'Used for weather information and solar term reminders. Only uses coarse location (city-level), never precise location, never tracks in background.',
permLocationUsage:
'Weather — Current city weather|Solar Terms — Local reminders',
permLocationDenial:
'Cannot get weather information or solar term reminders',
permNearbyDevicesLabel: 'Nearby Devices',
permNearbyDevicesDesc:
'Used for LAN device discovery and connection in file transfer. Only requested when using file transfer features.',
permNearbyDevicesUsage:
'File Transfer — LAN discovery|Device Connection — WiFi Direct',
permNearbyDevicesDenial: 'Cannot discover or connect to LAN devices',
permMicrophoneLabel: 'Microphone',
permMicrophoneDesc:
'Used for voice reading, voice search, and AI chat voice input. Only requested when you actively use voice features, never records in background.',
permMicrophoneUsage:
'Voice Reading — Read sentences|Voice Search — Voice input|AI Chat — Voice message',
permMicrophoneDenial:
'Cannot use voice search, voice reading, or voice input',
permStorageLabel: 'Storage',
permStorageDesc:
'Used for saving edited cards and wallpapers locally, exporting font files and data. Android 12 and below (API≤32) requires read permission; Android 13+ uses photos permission instead; writes use scoped storage.',
permStorageUsage:
'Save Card — Export locally|Wallpaper — Save wallpaper|Fonts — Download fonts|Data Export — Export user data',
permStorageDenial: 'Cannot save cards or wallpapers locally',
permNetworkLabel: 'Network',
permNetworkDesc:
'Xianyan needs network access to fetch quotes, sync data, and push notifications. Please ensure network permission is enabled in system settings.',
permNetworkUsage:
'Quotes — Load daily picks|Sync — Cloud sync|Notifications — Receive messages',
permNetworkDenial: 'Cannot fetch quotes or sync data',
permClipboardLabel: 'Clipboard',
permClipboardDesc:
'Used for copying quotes to clipboard and pasting text into the editor. Only accesses clipboard when you actively operate, never reads automatically.',
permClipboardUsage:
'Copy Quote — One-tap copy|Editor — Paste text|Search — Paste keywords',
permClipboardDenial: 'Cannot copy quotes or paste text',
permShareLabel: 'Share',
permShareDesc:
'Allows sharing content to other apps via the system share sheet',
permShareUsage:
'Quote Share — Share to WeChat/QQ|Card Share — Share to social media|Log Export — Share log files',
permShareDenial: 'Cannot share content to other apps',
permShakeLabel: 'Shake',
permShakeDesc:
'Shake your phone to trigger features like switching quotes or refreshing content',
permShakeUsage: 'Switch daily quote|Refresh content|Easter egg',
permShakeDenial: 'Cannot use shake to switch quotes',
permTrackingLabel: 'Tracking',
permTrackingDesc:
'Allow the app to request tracking of your activity for personalized content recommendations',
permTrackingUsage:
'Personalized recommendations|Content preference analysis',
permTrackingDenial:
'Unable to receive personalized recommendations, content suggestions may be less accurate',
),
dataCollection: TSettingsDataCollection(
pageTitle: 'Data We Collect',
introTitle: 'Data Collection Notice',
introDesc:
'Xianyan values your privacy. Below are the categories of information we collect, use, and store. We only collect data necessary for core features and never sell your information to third parties.',
collectionMethod: 'Collection method: ',
riskHigh: 'High Risk',
riskMedium: 'Medium Risk',
riskLow: 'Low Risk',
riskNone: 'No Risk',
categoryAccount: 'Account Info',
categoryAccountItems:
'Username, Password(encrypted), Email, Phone(optional), Security Q(encrypted)',
categoryAccountMethod: 'Provided during registration',
categoryProfile: 'Profile',
categoryProfileItems: 'Nickname, Bio, Avatar',
categoryProfileMethod: 'Submitted when editing profile',
categoryDevice: 'Device Info',
categoryDeviceItems:
'Device model, Platform, Device ID, IP address, User-Agent',
categoryDeviceMethod: 'Auto-collected on app launch',
categoryBehavior: 'Usage Behavior',
categoryBehaviorItems:
'Browsing history, Search keywords, Comments, Likes & Favorites',
categoryBehaviorMethod: 'Auto-recorded on user actions',
categoryLocation: 'Location Info',
categoryLocationItems: 'IP-inferred city (no GPS)',
categoryLocationMethod: 'Auto-inferred during network requests',
categoryLocalStorage: 'Local Storage',
categoryLocalStorageItems: 'SharedPreferences, SQLite, Temp directory',
categoryLocalStorageMethod: 'Written locally during app runtime',
categoryCloudStorage: 'Cloud Storage',
categoryCloudStorageItems:
'Notes, Favorites, Cloud drafts(encrypted), User profile',
categoryCloudStorageMethod: 'Uploaded to server during sync',
categoryNotCollected: 'Not Collected',
categoryNotCollectedItems:
'Contacts, SMS, GPS precise location, Biometrics, Ad data',
categoryNotCollectedMethod: '',
rightsTitle: 'Your Rights',
rightAccess: 'Access Right',
rightAccessDesc: 'You have the right to know what information we collect',
rightCorrection: 'Correction Right',
rightCorrectionDesc:
'You have the right to request correction of inaccurate info',
rightDeletion: 'Deletion Right',
rightDeletionDesc:
'You have the right to request deletion of your personal data',
rightExport: 'Export Right',
rightExportDesc: 'You have the right to export your personal data',
rightWithdraw: 'Withdrawal Right',
rightWithdrawDesc:
'You have the right to withdraw consent for data collection',
footerTitle: 'Disclaimer',
footerDesc:
'We may adjust data collection scope based on feature updates and will notify you in-app. For questions, contact us via the "About" page.',
),
),
about: TAbout(
appInfo: 'App Info',
learnUs: 'About Us',
learnUsSlogan: 'Record every moment of life with words',
techStack: 'Tech Stack',
techLanguage: 'Language',
techState: 'State Mgmt',
techRouter: 'Router',
techNetwork: 'Network',
buildInfo: 'Build Info',
version: 'Version',
buildNumber: 'Build No.',
buildTime: 'Build Time',
deviceInfo: 'Device Info',
os: 'OS',
deviceType: 'Device',
deviceUnknown: 'Unknown',
deviceMobile: 'Mobile',
deviceDesktop: 'Desktop',
renderEngine: 'Renderer',
screenDetail: 'Screen Detail',
screenSize: 'Resolution',
pixelRatio: 'Pixel Ratio',
platformCompat: 'Platform Compat',
updateLog: 'Update Log',
updateLog1: 'New app info page',
updateLog2: 'New about us page',
updateLog3: 'Liquid glass style',
openSource: 'Open Source',
footerSlogan: 'Made with ❤️',
officialSiteTitle: 'Official Website',
officialSite: 'Homepage',
officialSiteDesc: 'Visit our website for more information',
businessSite: 'Business Site',
otherProducts: 'Other Products',
productPoetry: 'Scene Poetry',
productPoetryDesc: 'Recommend poetry for different times and locations',
productKitchen: 'XiaoMa Kitchen',
productKitchenDesc:
'10,000+ recipes, 1,000+ ingredients, kitchen encyclopedia',
developer: 'Developer',
companyName: 'Micro storm studio',
companyDesc: 'Focused on quality mobile app development',
contactEmail: 'Contact Email',
viewEmails: 'Tap to view email list',
emailPrimary: 'Primary',
emailSupport: 'Support',
emailAny: 'General',
wechatAccount: 'WeChat Official',
teamInfo: 'Team',
roleDesign: 'Developer',
roleUIUX: 'UI/UX',
roleBackend: 'Backend',
roleNative: 'Native Stack',
roleSupport: 'i18n Support',
member1: '无书的书',
member1Sig: 'Always almost there',
member2: 'ayk',
member2Sig: '',
member3: '伯乐不相马',
member3Sig: 'Whose purple is so wow~',
member4: '泼茶香',
member4Sig: 'Raise cats together, watch the sea together',
member1Social: 'TikTok:@itbole',
member2Social: 'Twitter@Ayk_Ago',
member3Social: 'telegram@iboler',
qqGroup: 'QQ Group',
qqGroupDesc: 'Group: 271129018',
joinQQGroup: 'Join QQ Group',
qqGroupConfirm: 'Open QQ to join the group?',
qqGroupTelegram: 'Telegram Group',
qqGroupTelegramDesc: 'https://t.me/Windmill_CodeTalk',
icpInfo: 'APP ICP Filing No.',
icpInfoHint:
'In mainland China, ICP filing for internet-connected apps is mandatory as a security measure. It verifies the developer\'s identity and enables full traceability through government query websites. If you are an overseas user, you may ignore this.',
icpDesc: 'MIIT of PRC',
viewIcpDetail: 'View ICP Details',
icpLaunchConfirm: 'Open ICP filing website?',
contributors: 'Contributors',
contributorsDesc: 'Thanks to every contributor',
specialThanks: 'Special Thanks',
specialThanksDesc: 'Thanks to the following organizations and individuals',
contributorRole1: 'Code Development',
contributorRole2: 'UI Design',
contributorRole3: 'Testing',
contributorRole4: 'Documentation',
contributorRole5: 'Special Tester',
contributorRole5Name: '广州性感母蟑螂',
thanksFlutter:
'Thanks to the Flutter team for the excellent cross-platform framework',
thanksOpenSource:
'Thanks to the open source community for contributions and support',
thanksQQGroup: 'Thanks to QQ group members for feedback and suggestions',
thanksUsers: 'Thanks to all users for your support',
specialThanksTools: 'Tools & Plugins',
bottomEnd: '— Xianyan —',
copied: 'Copied to clipboard',
openLink: 'Open Link',
leaveAppHint: 'Leaving the app to open external link',
copyLink: 'Copy Link',
goTo: 'Go',
aboutTitle: 'About',
basicInfo: 'Basic Info',
softwareInfoDesc: 'View version and feature details',
learnUsMenuDesc: 'The story and vision of Xianyan',
usageGuide: 'User Guide',
usageGuideDesc: 'Feature introduction and operation guide',
interactionFeedback: 'Feedback',
userFeedback: 'User Feedback',
userFeedbackDesc: 'Submit opinions or suggestions',
rateAppMenu: 'Rate App',
rateAppMenuDesc: 'Rate us on the app store',
contactEmailMenuDesc: 'Tap to view all emails',
rateDialogTitle: 'Give us 5 stars!',
rateDialogContent1: 'If you like Xianyan, please give us a review!',
rateDialogContent2: 'Your support is our motivation',
laterButton: 'Later',
huaweiStore: 'Huawei AppGallery',
goRate: 'Rate',
emailHint1: 'If no reply within 24h, try another email',
emailHint2: 'Any email is fine to contact',
legalInfo: 'Legal',
softwareAgreement: 'Agreements',
softwareAgreementDesc: 'Privacy policy, user agreement, membership, etc.',
dataCollectionMenu: 'Data Collection',
dataCollectionMenuDesc: 'View what information we collect',
softwarePermission: 'Permissions',
softwarePermissionDesc: 'View app permission declarations',
openSourceDesc: 'View third-party open source licenses',
updateLogMenuDesc: 'View version update history',
checkUpdate: 'Check Update',
alreadyLatest: 'Already up to date',
alreadyLatestDesc: 'You are already on the latest version',
okButton: 'OK',
comingSoon: 'Coming Soon',
distributionChannel: 'Distribution Channel',
distAndroid: 'Downloaded from Xianyan Official Website',
distIOS: 'Distributed via App Store',
distMacOS: 'Distributed via App Store',
distHarmony: 'Distributed via AppGallery',
distWeb: 'Application Required',
distWindows: 'Downloaded from Xianyan Official Website',
),
auth: TAuth(
welcomeBack: 'Welcome Back',
loginToAccount: 'Sign in to your Xianyan account',
password: 'Password',
verifyCode: 'Code',
token: 'Token',
legacyUser: 'Legacy',
passwordLogin: 'Password Login',
codeLogin: 'Code Login',
tokenLogin: 'Token Login',
legacyLogin: 'Legacy Login',
noAccountRegister: 'No account? Register now',
skipLogin: 'Skip Login',
otherMethods: 'Other Methods',
otherLoginMethods: 'Or sign in with',
webLogin: 'Web Login',
wechat: 'WeChat',
qrcode: 'QR Code',
loginAgreePrefix: 'By signing in, you agree to ',
registerAgreePrefix: 'By registering, you agree to ',
userAgreement: 'User Agreement',
and: ' and ',
privacyPolicy: 'Privacy Policy',
resetPassword: 'Reset Password',
resetPasswordHint:
'Please log in via verification code to change your password',
featureNotSupported: 'This feature is not supported on this device',
loginSuccess: 'Login successful, welcome back!',
pleaseAgreeTerms:
'Please agree to the User Agreement and Privacy Policy first',
pleaseEnterAccount: 'Please enter username or email',
pleaseEnterPassword: 'Please enter password',
passwordTooShort: 'Password must be at least 6 characters',
pleaseEnterEmail: 'Please enter email address',
pleaseEnterValidEmail: 'Please enter a valid email address',
pleaseEnterCode: 'Please enter verification code',
codeExpiredOrWrong: 'Verification code is incorrect or expired',
codeLoginFailed: 'Code login failed',
pleaseEnterToken: 'Please enter Token',
tokenTooShort: 'Token is too short, please check and try again',
tokenLoginFailed: 'Token login failed',
legacyMigrating:
'This login method is being migrated, please use other methods',
openInBrowser: 'Open in Browser',
registerNotice: ' Registration Notice',
iUnderstand: 'I Understand',
createAccount: 'Create Account',
registerNewAccount: 'Register a new account to get started',
username: 'Username',
usernameHint: '3-30 chars, letters/numbers/underscore/CJK',
emailRequired: 'Email (required)',
emailHint: 'For verification and password recovery',
nextStep: 'Next',
prevStep: 'Back',
codeSentTo: 'Verification code sent to',
enterCodeHint: 'Enter 6-digit code',
resend: 'Resend',
codeNotReceivedTip:
'If you didn\'t receive the code, check your spam folder. Contact support for help.',
setPassword: 'Set Password',
passwordHint: '6-30 character password',
confirmPassword: 'Confirm Password',
confirmPasswordHint: 'Enter password again',
secQuestionOptional: '🛡️ Security Question (optional)',
selected: 'Selected',
enhanceSecurity: 'Enhance account security',
selectSecQuestion: 'Select security question',
enterSecAnswerHint: 'Enter security answer (1-50 chars)',
subscribeEmail: 'Subscribe to Xianyan team emails',
completeRegister: 'Complete Registration',
hasAccountLogin: 'Already have an account? Login',
pleaseFillRequired: 'Please fill in all required fields',
passwordMismatch: 'Passwords do not match',
codeError: 'Verification code error',
registerSuccess: 'Registration successful, welcome!',
codeSendFailed: 'Failed to send code, please check email address',
codeSent: 'Verification code sent',
codeSendFailedShort: 'Failed to send code',
emailRegistered: 'Email Already Registered',
emailRegisteredHint:
'This email ({email}) is already registered. Go to login page?',
goLogin: 'Go to Login',
forgotPassword: 'Forgot Password?',
accountOrEmail: 'Username or email',
emailAddress: 'Email address',
emailVerifyCode: 'Email verification code',
sendCode: 'Send Code',
emailNotReceivedHint:
'Didn\'t receive the email? Check spam or try again later',
tokenLoginHint:
'Enter Token for quick login\nSuitable for multi-device sync',
pasteOrEnterToken: 'Paste or enter Token',
tokenManageHint: 'Get Token in Security & Token Management',
legacyLoginTitle: 'Legacy Login',
legacyLoginSubtitle: 'Login with legacy account system',
aboutLegacyLogin: 'About Legacy Login',
legacyLoginNotice:
'Users registered between 2019—June 2023 are legacy users with lasting benefits:\n• Retain original points and levels\n• Exclusive legacy user badge and title\n• Priority access to premium features\n\nThis login method is being migrated, please use other methods.',
loginSuccessTitle: 'Login Successful',
redirecting: 'Redirecting...',
selectOpenMethod: 'Select how to open:',
browser: 'Browser',
unableOpenBrowser: 'Unable to open browser',
cannotVerifyEmail: 'Cannot verify email?',
skipEmailVerifyTip:
'You can skip email verification and set a security question in the next step as an alternative credential. Security questions can be used for password recovery and account security verification.',
setSecQuestionToContinue: 'Set security question to continue',
warmTips: 'Tips',
tipOpenWithoutLogin:
'XianYan remains open — most features work without logging in',
tipServerMayFail:
'Server issues may occasionally cause registration to fail',
tipWillImprove:
'We will improve the registration process in future updates',
tips: 'Tips',
forgotPasswordTitle: 'Forgot Password',
forgotPasswordSubtitle: 'Reset your password via verification',
resetBySecQuestion: 'Security Question',
resetByVerifyCode: 'Verification Code',
resetByContactService: 'Contact Support',
newPasswordHint: 'Enter new password (6-30 chars)',
resetCodeAccountHint: 'Email or mobile number',
resetPasswordSuccess: 'Password reset successfully',
resetPasswordFailed: 'Password reset failed',
contactServiceTitle: 'Contact Support',
contactServiceSubtitle:
'If you cannot reset your password through the above methods, please contact support with the following information',
contactServiceInfoAccount: 'Registered account/username',
contactServiceInfoEmail: 'Registered email',
contactServiceInfoDevice: 'Device info (model/OS version)',
contactServiceInfoDescription:
'Issue description (e.g. registration time, usage)',
contactServiceMethod: 'Contact Method',
contactServiceMethodDetail:
'Please contact support via the "About" page in the app or official email, providing the above information for identity verification and password reset assistance.',
experimentalFeature: 'Experimental Feature',
experimentalFeatureDesc:
'Xianyan account is an experimental feature. Registration and login have minimal impact on usage and are not recommended. Most features work without logging in.',
dontShowAgain: "Don't Show Again",
viewExperimentalFeatures: 'View Experimental Features',
userBatchFlag: 'Batch: {flag}',
openPeriod: 'Open: {period}',
expireNotice: 'Closes after {year}',
),
progress: TProgress(
title: 'Progress',
inputHint: 'Enter progress name...',
noData: 'No progress data',
addProgress: 'Add Progress',
editProgress: 'Edit Progress',
deleteItem: 'Delete Item',
clearAll: 'Clear All Custom',
clearAllConfirm: 'Clear Custom Progress',
clearAllConfirmMsg:
'Are you sure you want to delete all custom progress items? This cannot be undone.',
cancel: 'Cancel',
add: 'Add',
save: 'Save',
name: 'Name',
nameHint: 'e.g. Exam Countdown',
tag: 'Tag',
tagHint: 'e.g. Keep going',
type: 'Type',
countdown: 'Countdown',
progress: 'Progress',
targetDate: 'Target Date',
displayStyle: 'Display Style',
custom: 'Custom',
system: 'System',
settings: 'Progress Settings',
styleSetting: 'Display Style',
styleSettingDesc: 'Customize progress display style',
dataManagement: 'Data Management',
dataManagementDesc: 'Manage custom progress data',
shareCard: 'Share Progress Card',
shareCardDesc: 'Generate progress report to share',
refreshData: 'Refresh Data',
refreshDataDesc: 'Recalculate system progress',
selectStyle: 'Select Display Style',
applyStyleTo: 'Apply "{style}" to',
applyAll: 'Apply All',
current: 'Current',
applied: '{style} applied',
allApplied: '{style} applied to all',
noUserItems: 'No custom progress items',
noShareData: 'No progress data to share',
saveToAlbum: 'Save to Album',
systemShare: 'System Share',
saveFailed: 'Save failed',
shareFailed: 'Share failed',
savedToAlbum: 'Saved to album',
progressReport: 'Xianyan Progress Report',
totalProgress: 'Total Progress',
inProgress: 'In Progress',
completed: 'Completed',
moreItems: '{n} more items',
done: 'Done',
progressLabel: 'Progress',
deleted: 'Deleted',
cleared: 'Cleared',
updated: 'Updated',
refreshed: 'Refreshed',
styleDescProgressBar: 'Horizontal bar, shows completion ratio',
styleDescRingProgress: 'Ring style, great for percentages',
styleDescCountdownGrid: 'Days/Hours/Min/Sec grid, real-time countdown',
styleDescTagOnly: 'Simple tag display, for expired items',
nameRequired: 'Please enter a progress name',
dateMustBeFuture: 'Target date must be after today',
undo: 'Undo',
itemDeleted: 'Deleted "{name}"',
allCleared: 'All custom progress cleared',
),
onboarding: TOnboarding(
welcomeTitle: 'Welcome to Xianyan',
welcomeSubtitle: 'Open life with words · Quotes + Wallpapers',
featureDailyQuote: 'Daily Quote',
featureDailyQuoteDesc: 'A curated quote every day to start your day',
featureDailyQuoteDetail:
'A beautifully curated quote for you daily, with support for favorites, sharing, and wallpaper creation',
featureWallpaper: 'Wallpaper Maker',
featureWallpaperDesc: 'Turn quotes into beautiful wallpapers to share',
featureWallpaperDetail:
'Create stunning wallpapers from your favorite quotes with multiple templates and styles',
featureFileTransfer: 'File Transfer',
featureFileTransferDesc: 'Fast cross-device transfer via LAN/Bluetooth',
featureFileTransferDetail:
'Quickly transfer files over LAN, supporting Bluetooth, WiFi Direct and more',
featureChatFlow: 'Chat Flow',
featureChatFlowDesc: 'Subscribe to RSS feeds, aggregate your content',
featureChatFlowDetail:
'Subscribe to RSS feeds, aggregate content you follow, with smart recommendations',
permissionEntry: 'App Permissions',
dataCollectionEntry: 'Data Collection',
languageLabel: '🌐 Language',
startButton: 'Get Started',
gotIt: 'Got It',
dailyQuoteLabel: 'Today\'s Quote',
collectAction: 'Favorite',
shareAction: 'Share',
makeWallpaperAction: 'Wallpaper',
templateSimple: 'Minimal',
templateGradient: 'Gradient',
templateGlass: 'Frosted',
transferring: 'Transferring 70%',
wifiDirect: 'WiFi Direct',
mobileDevice: 'Mobile Device',
pcDevice: 'PC Device',
rssLabel: 'RSS Feeds',
addRssSource: 'Add Feed',
welcomeNavLabel: 'Welcome',
agreementTitle: 'Agreements',
agreementSubtitle:
'Please read and agree to the following agreements to protect your rights',
privacyPolicyTab: 'Privacy Policy',
userAgreementTab: 'User Agreement',
permissionInfoTab: 'Permissions',
updateDateLabel: 'Updated: ',
permissionUsageTitle: 'App Permission Usage',
permissionUsageDesc:
'The following permissions are requested only when you use related features',
requiredWarning: '⚠️ Denying will affect core features',
optionalLabel: 'Optional',
systemManagedLabel: 'System managed',
requiredBadge: 'Required',
systemBadge: 'System',
agreeAllCheckbox:
'I have read and agree to 《User Service Agreement》 and 《Privacy Policy》',
readPermissionCheckbox: 'I have read the 《App Permission Usage》',
agreeAndContinue: 'Agree & Continue',
skipOnboarding: 'Skip',
agreementNavLabel: 'Agreements',
personalizationTitle: 'Personalization',
personalizationSubtitle:
'Customize your usage experience, adjustable anytime later',
livePreview: 'Live Preview',
appearance: 'Appearance',
features: 'Features',
accentColor: 'Accent Color',
cardStyle: 'Card Style',
fontStyle: 'Font',
shakeToSwitch: 'Shake to Switch',
shaderBackground: 'Effect Background',
soundFeedback: 'Sound Feedback',
showOnNextLaunch: 'Show onboarding next launch',
completeSetup: 'Done, Enter Xianyan',
),
theme: TTheme(
title: 'Theme Personalization',
presetSection: 'Theme Presets',
appearanceSection: 'Appearance',
autoDarkSection: 'Auto Dark Mode',
accentColorSection: 'Accent Color',
fontSection: 'Font Settings',
glassEffectSection: 'Glass Effect',
animationSection: 'Animation Intensity',
cornerRadiusSection: 'Corner Radius',
cardStyleSection: 'Card Style',
tabExpressionSection: 'Expression',
tabCharacterSection: 'Tab Character',
bubbleStyleSection: 'Bubble Style',
wallpaperSection: 'Wallpaper',
previewSection: 'Live Preview',
shareSection: 'Theme Sharing',
modeLight: 'Light',
modeDark: 'Dark',
modeAmoled: 'AMOLED',
modeSystem: 'System',
autoDarkOff: 'Off',
autoDarkSunset: 'Sunset/Sunrise',
autoDarkCustom: 'Custom Schedule',
sunsetHint: 'Auto-switch based on sunset/sunrise (approx. 18:00 06:30)',
accentPurple: 'Lavender',
accentCoral: 'Coral',
accentTeal: 'Mint',
accentBlue: 'Sky Blue',
accentOrange: 'Warm Orange',
accentPink: 'Sakura Pink',
accentGreen: 'Emerald',
accentRose: 'Rose Gold',
accentNoir: 'Noir',
accentCustom: 'Custom',
customAccentTitle: 'Custom Accent Color',
hueLabel: 'Hue',
applyLabel: 'Apply',
fontSizeLabel: 'Font Size',
fontWeightLabel: 'Font Weight',
fontStyleLabel: 'Font Style',
fontSizeXs: 'Extra Small',
fontSizeSmall: 'Small',
fontSizeNormal: 'Normal',
fontSizeLarge: 'Large',
fontSizeXlarge: 'Extra Large',
fontWeightLight: 'Light',
fontWeightRegular: 'Regular',
fontWeightMedium: 'Medium',
fontWeightSemibold: 'Semibold',
fontStyleSystem: 'System Default',
fontStyleSerif: 'Serif',
fontStyleMono: 'Monospace',
fontStyleRounded: 'Rounded',
glassOff: 'Off',
glassLight: 'Light',
glassMedium: 'Medium',
glassStrong: 'Strong',
animNone: 'None',
animSubtle: 'Subtle',
animNormal: 'Normal',
animPlayful: 'Playful',
cornerCompact: 'Compact',
cornerStandard: 'Standard',
cornerRounded: 'Rounded',
cornerSuper: 'Super Rounded',
cornerRadiusPreview: 'Preview Radius',
cardStandard: 'Standard',
cardBorderless: 'Borderless',
cardShadow: 'Shadow',
cardMinimal: 'Minimal',
cardIos: 'Xianyan',
tabExpressionDesc: 'Expression style for selected tab icons',
tabExpressionExaggerated: 'Expressive',
tabExpressionSubtle: 'Subtle',
tabCharacterDesc: 'Character style for tab icons, pet or human',
tabCharacterPet: '🐾 Pets',
tabCharacterHuman: '👤 Humans',
tabCharacterCat: 'Kitty',
tabCharacterDog: 'Puppy',
tabCharacterBoy: 'Boy',
tabCharacterGirl: 'Girl',
bubbleStyleDesc: 'Chat bubble appearance, applied globally',
bubbleStandard: 'Standard',
bubbleMinimal: 'Minimal',
bubbleGlass: 'Glass',
bubbleShadow: 'Shadow',
selectWallpaper: 'Select Wallpaper',
clearWallpaper: 'Clear Wallpaper',
wallpaperOnlineSet: '🌐 Online wallpaper set',
wallpaperGallerySet: '📷 Gallery wallpaper set',
wallpaperGradientSet: '🎨 Gradient wallpaper set',
wallpaperSolidSet: '🎨 Solid wallpaper set',
wallpaperDefaultSet: 'Wallpaper set',
wallpaperOnline: '🌐 Online Wallpaper',
wallpaperGradientPreset: '🎨 Gradient Presets',
wallpaperFromGallery: '📷 From Gallery',
wallpaperSolidBackground: '🎯 Solid Color',
gradientPresetTitle: 'Gradient Presets',
solidColorTitle: 'Solid Color',
applyCustomColor: 'Apply Custom Color',
wpStarry: 'Starry',
wpForest: 'Forest',
wpOcean: 'Ocean',
wpDesert: 'Desert',
wpAurora: 'Aurora',
wpSunset: 'Sunset',
wpLavender: 'Lavender',
wpMist: 'Mist',
solidInkBlack: 'Ink Black',
solidDeepBlue: 'Deep Blue',
solidInkGreen: 'Ink Green',
solidWarmGray: 'Warm Gray',
solidWineRed: 'Wine Red',
solidIndigo: 'Indigo',
solidOffWhite: 'Off White',
solidLightGray: 'Light Gray',
photoPermissionTitle: 'Photo Access Required',
photoPermissionDesc:
'Please allow Xianyan to access your photo library in system settings to select wallpaper images.',
goToSettings: 'Go to Settings',
resetTitle: 'Reset Theme Settings',
resetConfirm:
'Are you sure you want to reset all theme settings to defaults?',
resetToDefault: 'Reset to Defaults',
previewTitleText: 'Title Preview',
previewBodyText:
'Body preview — accent color, font size, weight, corner radius, and glass effect are shown here.',
exportJson: 'Export JSON',
importJson: 'Import JSON',
themeConfigJson: 'Theme Configuration JSON',
closeLabel: 'Close',
copyLabel: 'Copy',
importConfigTitle: 'Import Theme Config',
pasteJsonPlaceholder: 'Paste JSON config',
importLabel: 'Import',
presetInk: 'Ink',
presetLavender: 'Lavender',
presetSunset: 'Sunset',
presetMint: 'Mint',
presetMidnight: 'Midnight',
presetSakura: 'Sakura',
systemDefaultFont: 'System Default',
previewCornerRadius: 'Corner',
previewCardStyle: 'Card',
previewGlassEffect: 'Glass',
fontPreviewSample: 'Hello World',
),
search: TSearch(
placeholder: 'Search quotes, poetry, movies, articles...',
typeAll: 'All',
typeSentence: 'Quotes',
typePoetry: 'Poetry',
typeArticle: 'Articles',
typeFilm: 'Movies',
typeMusic: 'Music',
typeBook: 'Classics',
typeHanzi: 'Hanzi',
typeCy: 'Idioms',
modeFuzzy: 'Fuzzy',
modeExact: 'Exact',
modeRelated: 'Related',
typeRowLabel: 'Search Type',
modeRowLabel: 'Search Mode',
suggestions: 'Suggestions',
hotSearch: 'Trending',
searchHistory: 'History',
countTimes: '{0} times',
noResults: 'No results found',
tryDifferentKeyword: 'Try a different keyword',
loadingMore: 'Loading more results...',
loading: 'Loading...',
foundCountSearching: 'Found {0}, still searching...',
foundCountResults: 'Found {0} results',
modeLabel: 'Mode: {0}',
keywordHighlight: 'Keyword Highlights',
hotSearchRank: '🔥 Trending',
periodToday: '📅 Today',
periodWeek: '📆 This Week',
periodMonth: '🗓️ This Month',
loadFailed: 'Load failed',
noHotSearch: 'No trending searches for {0}',
numberWan: 'w',
searchPreference: '🎯 Search Preferences',
noPreference: 'No search preferences yet',
preferenceHint:
'Your type preferences are recorded automatically when searching',
preferenceDetail: '📊 Preference Details',
preferenceOverview: 'Overview',
totalSearchCount: '🔍 Total Searches',
mostSearched: '⭐ Most Searched',
preferenceTypeCount: '📂 Preference Types',
lastSearch: 'Last search: {0}',
justNow: 'Just now',
minutesAgo: '{0} min ago',
hoursAgo: '{0} hr ago',
daysAgo: '{0} days ago',
contentPreference: '🎯 Content Preferences',
contentPreferenceHint:
'Disabled types will be excluded from recommendations',
contentPoetry: '📜 Classical Poetry',
contentChengyu: '📖 Idioms',
contentStory: '📖 Stories',
contentWisdom: '💬 Quotes',
contentRiddle: '❓ Riddles',
contentBrainteaser: '🧠 Brainteasers',
contentEfs: '💬 Xiehouyu',
clearPreferenceTitle: 'Clear Preferences',
clearPreferenceConfirm:
'Are you sure you want to clear all search preferences? This cannot be undone.',
),
accountSettings: TAccountSettings(
title: 'Account Settings',
nickname: 'Nickname',
notSet: 'Not set',
bio: 'Bio',
notFilled: 'Not filled',
bindEmail: 'Bind Email',
notBound: 'Not bound',
bindMobile: 'Bind Mobile',
changePassword: 'Change Password',
securityQuestion: 'Security Question',
alreadySet: 'Set',
securityAndToken: 'Security & Token',
exportPersonalInfo: 'Export Personal Info',
deleteAccount: 'Delete Account',
logout: 'Log Out',
logoutConfirm: 'Are you sure you want to log out?',
logoutButton: 'Log Out',
verified: 'Verified',
unverified: 'Unverified',
),
dataManagement: TDataManagement(
title: '💾 Data Management',
storageOverview: 'Storage Overview',
totalLocalData: '{count} local entries',
favorites: 'Favorites',
history: 'History',
notes: 'Notes',
shares: 'Shares',
entriesUnit: 'entries',
dataDistribution: 'Data Distribution',
dataCategories: 'Data Categories',
favoriteData: 'Favorite Data',
localFavorites: '{count} local favorites',
readingHistory: 'Browse History',
localHistory: '{count} local history',
noteData: 'Note Data',
localNotes: '{count} local notes',
shareHistory: 'Share History',
shareRecords: '{count} share records',
imageCache: 'Image Cache',
hanziCache: 'Hanzi Cache',
queryCache: '{count} query cache',
offlineQueue: 'Offline Queue',
pendingSync: '{count} pending sync',
clearName: '🗑️ Clear {name}',
clearConfirm:
'Are you sure you want to clear {name}? This cannot be undone.',
cleared: '{name} cleared',
dangerZone: 'Danger Zone',
clearAllData: '⚠️ Clear All Data',
clearAllConfirm:
'This will clear all local data including favorites, notes, and cache. This cannot be undone!',
clearAll: 'Clear All',
clearAllLocalData: '🗑️ Clear All Local Data',
allDataCleared: 'All data cleared',
),
source: TSource(
title: 'Sentence Source',
dataOverview: 'Data Overview',
totalContent: 'Total Content',
openChannels: 'Open Channels',
totalViews: 'Total Views',
searchChannel: 'Search channels...',
channelManagement: 'Channel Management',
enabledCount: 'Enabled',
manage: 'Manage',
noChannelFound: 'No channel found',
displaySettings: 'Display Settings',
sortOrder: 'Sort Order',
newestFirst: 'Newest First',
hottestFirst: 'Hottest First',
contentDedup: 'Content Dedup',
dedupSubtitle: 'Exclude viewed content on refresh',
mixMode: 'Mix Mode',
perPage: 'Per Page',
perPageUnit: '{count} entries',
homeCardSettings: 'Home Card Settings',
cardSource: 'Card Source',
cardSourceSubtitle: 'Configure home page card content source',
cardMixMode: 'Card Mix Mode',
advanced: 'Advanced',
importSource: 'Import Source',
importSubtitle: 'JSON / CSV file import',
moreSources: 'More Sources',
moreSourcesSubtitle: 'Discover more content channels',
enableAll: 'Enable All',
disableAll: 'Disable All',
contentCount: 'Content',
viewCount: 'Views',
status: 'Status',
enabledStatus: 'Enabled',
disabledStatus: 'Disabled',
browseChannel: 'Browse Channel',
channelInfo: '{count} entries · {views} views',
importSentenceSource: 'Import Sentence Source',
importComingSoon:
'Import feature coming soon!\n\nWill support:\n• JSON / CSV file import\n• URL subscription for remote sources\n• Custom field mapping',
newest: 'Newest',
hottest: 'Hottest',
),
favorites: TFavorites(
title: 'My Favorites',
manage: 'Manage',
favorites: 'Favorites',
categories: 'Categories',
noStats: 'No stats',
searchFavorites: 'Search favorites',
newestFav: '🕐 Newest',
oldestFav: '📅 Oldest',
sortByType: '📂 By Type',
newest: 'Newest',
oldest: 'Oldest',
type: 'Type',
selectedCount: '{count} selected',
selectAll: 'Select All',
unfavorite: 'Unfavorite',
batchUnfavorite: 'Batch Unfavorite',
batchUnfavoriteConfirm: 'Unfavorite {count} selected items?',
unfavoriteSuccess: 'Unfavorited',
unfavoriteConfirm: 'Unfavorite',
unfavoriteItemConfirm: 'Unfavorite "{title}"?',
thinkAgain: 'Cancel',
copyContent: 'Copy Content',
share: 'Share',
addTag: '🏷️ Add Tag',
moveGroup: '📁 Move to Group',
article: '📖 Article',
tool: '🔧 Tool',
page: '📄 Page',
localMode: 'Local mode · Sign in to sync to cloud',
loginSync: 'Sign in & Sync',
noMatchingFavorites: 'No matching favorites',
noFavoritesYet: 'No favorites yet',
tryOtherKeywords: 'Try other keywords',
tapToFavorite: 'Tap ❤️ on home page to favorite',
shareFavorite: 'Share Favorite',
systemShare: '📤 System Share',
noContentToCopy: 'No content to copy',
copiedToClipboard: 'Copied to clipboard',
addTagTitle: '🏷️ Add Tag',
tagSeparatorHint: 'Separate tags with commas',
tagPlaceholder: 'e.g. Motivational, Poetry, Life',
tagSaved: 'Tag saved',
exportFavorites: '📤 Export Favorites',
exportAsText: '📝 Export as Text',
exportAsJson: '📋 Export as JSON',
exportAsCsv: '📊 Export as CSV',
noFavoritesToExport: 'No favorites to export',
exportHeader: 'Xianyan Favorites Export',
formatCopied: '{format} copied to clipboard',
moveToGroup: '📁 Move to Group',
defaultGroup: 'Default Group',
newGroup: 'New Group...',
movedToGroup: 'Moved to "{group}"',
moveFailed: 'Move failed',
newGroupTitle: '📁 New Group',
groupNamePlaceholder: 'Enter group name',
createAndMove: 'Create & Move',
createdAndMoved: 'Created and moved to "{name}"',
operationFailed: 'Operation failed',
favoriteGroups: '📁 Favorite Groups',
createNew: 'New',
noGroups: 'No groups',
tapToCreateGroup: 'Tap + to create a group',
deleteGroup: 'Delete Group',
deleteGroupConfirm:
'Delete group "{name}"? Favorites will move to default group.',
groupDeleted: 'Group deleted',
deleteFailed: 'Delete failed',
renameGroup: 'Rename Group',
newNamePlaceholder: 'Enter new name',
renamed: 'Renamed',
renameFailed: 'Rename failed',
groupCreated: 'Group created',
createFailed: 'Create failed',
noTitle: 'No title',
noContentToShare: 'No content to share',
shareCopied: 'Share content copied',
thisContent: 'this content',
),
offline: TOffline(
title: 'Offline Mode',
online: 'Online',
offline: 'Offline',
onlineDesc: 'Network connected, all features available',
offlineDesc: 'Network disconnected, cached content only',
syncNow: 'Sync Now',
pendingActions: 'Pending Actions',
pendingSync: 'Pending',
lastSync: 'Last Sync',
successCount: '{count} succeeded',
noData: 'None',
syncAll: 'Sync All',
clearQueue: 'Clear Queue',
preloadManagement: 'Preload Management',
wifiAutoPreload: 'WiFi Auto Preload',
wifiAutoPreloadSubtitle: 'Auto-cache recommendations on WiFi',
autoSyncOnReconnect: 'Auto Sync on Reconnect',
autoSyncOnReconnectSubtitle: 'Auto-sync offline actions when back online',
preloadChannels: 'Preload Channels',
preloadNow: 'Preload Now',
smartPreloadStrategy: 'Smart Preload Strategy',
preloadMode: 'Preload Mode',
preloadContent: 'Preload Content',
preloadFrequency: 'Preload Frequency',
batteryThreshold: 'Low Battery Threshold',
smartMode: '🧠 Smart',
wifiOnly: '📶 WiFi Only',
disabledMode: '🚫 Off',
textContent: 'Text',
imageContent: 'Image',
audioContent: 'Audio',
realtime: 'Realtime',
hourly: 'Hourly',
daily: 'Daily',
smartModeDesc:
'Smart mode: Full preload on WiFi, text only on mobile, pause on low battery',
cacheStrategy: 'Cache Strategy',
offlineModeSwitch: 'Offline Mode',
offlineModeSwitchSubtitle: 'Auto-cache browsed content when enabled',
cacheLimit: 'Cache Limit',
cacheExpiryDays: 'Cache Expiry Days',
maxOfflineActions: 'Max Offline Actions',
maxRetryCount: 'Max Retry Count',
daysUnit: 'days',
clearQueueTitle: 'Clear Queue',
clearQueueConfirm: 'Clear all pending actions? This cannot be undone.',
syncComplete: 'Sync complete, {count} succeeded',
syncNoSuccess: 'Sync complete, no items succeeded',
syncFailed: 'Sync failed, please try again later',
syncError: 'Sync error: {error}',
wifiPreloadDisabled: 'WiFi auto preload is off, please enable it first',
networkUnavailable: 'Network unavailable, please check your connection',
preloadComplete: 'Preload complete, {count} channels cached',
preloadSkipped: '{count} channels already cached, skipped',
allChannelsCached: 'All channels already cached',
preloadFailed: 'Preload failed, please check your connection',
preloadError: 'Preload error: {error}',
preloadModeDisabledHint:
'Preload mode is disabled, enable it in smart preload strategy',
wifiOnlyModeHint: 'WiFi-only mode active, please connect to WiFi',
preloadNoNewContent:
'No new content to preload, all up-to-date or rate limited',
),
accountInsights: TAccountInsights(
title: 'Account Insights',
markAllRead: 'Mark All Read',
close: 'Close',
testAccountWarning:
'⚠️ This may be a test account provided by Xianyan official, used by multiple people. Please do not change the password or create notes with this account. Please register your own account if needed.',
ohosDeviceWarning:
'⚠️ Some devices may experience identification issues, such as showing unknown or security factor errors',
allNormal: 'All Normal',
noSecurityIssues: 'No security issues to pay attention to',
totalCount: '{0} total · {1} unread',
refresh: '🔄 Refresh',
markedAsRead: '"{0}" marked as read',
selectReminderMethod:
'Select reminder method, or cancel to keep current state',
snooze7Days: 'Snooze for 7 days',
ignoreForever: 'Ignore · Never remind again',
snoozeSet: '🔇 Snoozed for 7 days',
ignoredSet: '🔕 Ignored, will not remind again',
allMarkedAsRead: 'All marked as read',
deleted2: 'Deleted',
markRead: 'Mark Read',
highPriority: 'High Priority',
mediumPriority: 'Medium Priority',
lowPriority: 'Low Priority',
justNow: 'Just now',
hoursAgo: '{0} hours ago',
daysAgo: '{0} days ago',
monthsAgo: '{0} months ago',
),
);