// ignore: unused_import import 'package:intl/intl.dart' as intl; import 'app_localizations.dart'; // ignore_for_file: type=lint /// The translations for English (`en`). class AppLocalizationsEn extends AppLocalizations { AppLocalizationsEn([String locale = 'en']) : super(locale); @override String get appTitle => 'MeiYao Divination'; @override String get welcomeLogin => 'Welcome Back'; @override String get loginSubtitle => 'Sign in with your email'; @override String get loginSubtitleEmail => 'Sign in with your email'; @override String get emailHint => 'Enter email address'; @override String get codeHint => 'Enter verification code'; @override String get sendCode => 'Get Code'; @override String get sending => 'Sending...'; @override String retryAfter(int seconds) { return 'Retry in ${seconds}s'; } @override String get login => 'Login'; @override String get agreementPrefix => 'I have read and agree to '; @override String get aboutUs => 'About Us'; @override String get aboutUsSubtitle => 'Learn about the product vision of MeiYao Divination'; @override String get privacyPolicy => 'Privacy Policy'; @override String get privacyPolicySubtitle => 'Learn how we protect user privacy'; @override String get termsOfService => 'Terms of Service'; @override String get termsOfServiceSubtitle => 'Learn the service agreement for users'; @override String get legalDocumentLoadFailedTitle => 'Failed to load document'; @override String get legalDocumentLoadFailedPathPrefix => 'Path'; @override String get legalDocumentLoadFailedErrorPrefix => 'Error'; @override String get disclaimer => 'Disclaimer'; @override String get icp => 'Yue ICP 2025428416-1A'; @override String get invalidPhone => 'Please enter a valid phone number'; @override String get invalidEmail => 'Please enter a valid email address'; @override String get invalidCode => 'Please enter a 6-digit code'; @override String get agreementRequired => 'Please accept the agreements first'; @override String get codeSent => 'Code sent successfully'; @override String get loginSuccess => 'Login success'; @override String helloUser(String name) { return 'Hi, $name'; } @override String get startJourney => 'Start Your Divination Journey'; @override String get journeySubtitle => 'Explore possibilities with AI'; @override String get startNow => 'Start Now'; @override String get historyTitle => 'History'; @override String get more => 'More'; @override String get noRecords => 'No records yet'; @override String get noRecordsSubtitle => 'You have not saved any records'; @override String get homeTab => 'Home'; @override String get profileTab => 'Me'; @override String get notify => 'Message Notifications'; @override String get featurePending => 'This feature is not connected yet'; @override String get logout => 'Logout'; @override String get defaultUserName => 'User'; @override String get historyQuestion1 => 'Is this year a good time to change jobs?'; @override String get historyQuestion2 => 'Can my relationship progress soon?'; @override String get historyQuestion3 => 'What pace should I keep for investments this quarter?'; @override String get guaName1 => 'Wuwang'; @override String get guaName2 => 'Ge'; @override String get guaName3 => 'Guan'; @override String get welcomeDialogTitle => 'Welcome to MeiYao Divination'; @override String get welcomeParagraph1 => 'Welcome to MeiYao Divination, an AI-assisted platform for interpreting traditional Six-Line divination and exploring Chinese classic wisdom.'; @override String get welcomeParagraph2 => 'Six-Line divination comes from the profound philosophy of the I Ching. It reflects how intention and timing are mapped into symbolic patterns.'; @override String get welcomeParagraph3 => 'MeiYao Divination helps you look beyond narrow thinking, see opportunities and risks from a broader trend perspective, and make clearer decisions.'; @override String get warningTitle => 'Important Notice'; @override String get warningBody => 'All interpretations are AI-generated for entertainment only. Do not use them as professional advice for business, medical, or legal decisions.'; @override String get scrollHint => 'Scroll down to read all'; @override String get understood => 'Got It'; @override String get readAllFirst => 'Please read all first'; @override String get signBest => 'Supremely Auspicious'; @override String get signGood => 'Auspicious'; @override String get signNormal => 'Cautionary'; @override String get signBad => 'Inauspicious'; @override String get language => 'Language'; @override String get settingsTitle => 'Settings'; @override String get settingsSectionGeneral => 'Preferences'; @override String get settingsSectionQuickAccess => 'Primary Menu'; @override String get settingsSectionAccount => 'Account'; @override String get settingsSectionPrivacy => 'Privacy'; @override String get settingsSectionNotification => 'Notification Settings'; @override String get settingsAccountAndDataTitle => 'Account Data'; @override String get settingsLanguage => 'Language'; @override String get settingsNotificationAllow => 'Allow Notifications'; @override String get settingsNotificationVibration => 'Allow Vibration'; @override String get settingsSectionAbout => 'About'; @override String get settingsGeneralTitle => 'General Settings'; @override String settingsGeneralSubtitle(String currentLanguage) { return 'Language: $currentLanguage. Other fields are reserved to match profiles.settings.'; } @override String get settingsPrivacyAndNotificationTitle => 'Privacy & Notifications'; @override String get settingsPrivacyAndNotificationSubtitle => 'Manage placeholders for privacy and notification groups'; @override String get settingsLegalCenterTitle => 'About & Agreements'; @override String get settingsLegalCenterSubtitle => 'Read About Us, Privacy Policy, and Terms of Service'; @override String get settingsCoinCenterTitle => 'Credits Center'; @override String settingsCoinCenterSubtitle(int balance) { return 'Balance: $balance credits. View packages and recharge entry.'; } @override String get settingsCoinHeroSubtitle => 'Credits will be used for casting and related services later.'; @override String get settingsTimezone => 'Time Zone'; @override String get settingsTimezoneHint => 'This field will align with profiles.settings.preferences.timezone and later provide a real time zone picker.'; @override String get settingsPrivacyProfileVisibility => 'Profile Visibility'; @override String get settingsPrivacyPersonalization => 'Personalization'; @override String get settingsPrivacyHistoryVisibility => 'History Visibility'; @override String get settingsPrivacyHint => 'These options will be stored under profiles.settings.privacy. The UI is prepared as a placeholder for now.'; @override String get settingsNotificationSystem => 'System Notifications'; @override String get settingsNotificationActivity => 'Activity Reminders'; @override String get settingsNotificationResult => 'Result Reminders'; @override String get settingsNotificationHint => 'These options will be stored under profiles.settings.notification. The UI is prepared as a placeholder for now.'; @override String get settingsVersion => 'App Version'; @override String get settingsVersionHint => 'Version details and more setting metadata will be connected later.'; @override String get settingsTapToView => 'Tap to view'; @override String get settingsComingSoon => 'Coming Soon'; @override String settingsPlaceholderState(int count) { return '$count config placeholders prepared'; } @override String get settingsCurrentValue => 'Current Value'; @override String get settingsVersionLabel => 'Settings Version'; @override String get settingsLogoutSubtitle => 'Sign out from the current account'; @override String get settingsLogoutDialogTitle => 'Confirm logout?'; @override String get settingsLogoutDialogBody => 'You will need to sign in again to continue with this account.'; @override String get settingsDeleteAccountTitle => 'Delete Account'; @override String get settingsDeleteAccountSubtitle => 'Permanently delete your account and personal data'; @override String get settingsDeleteAccountWarningTitle => 'Please confirm before deleting'; @override String get settingsDeleteAccountWarningBody => 'After deletion, related data including profile, history, and points will be permanently removed and cannot be restored.'; @override String get settingsDeleteAccountReRegisterNotice => 'Important: if you delete and re-register with the same email, consumed points will not be reset or refunded.'; @override String get settingsDeleteAccountScopeProfile => 'Profile and account information will be deleted'; @override String get settingsDeleteAccountScopeHistory => 'Divination history records will be deleted'; @override String get settingsDeleteAccountScopePoints => 'Points account and ledger records will be deleted'; @override String get settingsDeleteAccountDialogTitle => 'Permanently delete this account?'; @override String get settingsDeleteAccountDialogBody => 'This action cannot be undone. Deletion will start immediately after confirmation.'; @override String get settingsDeleteAccountAction => 'Delete Account'; @override String get settingsDeleteAccountProcessing => 'Deleting...'; @override String settingsDeleteAccountWaitAction(int seconds) { return 'Wait ${seconds}s before confirming deletion'; } @override String get settingsCancel => 'Cancel'; @override String get settingsLogoutConfirmHint => 'Tap again to confirm logout'; @override String get settingsLogoutConfirmAction => 'Tap again to logout'; @override String get settingsEditProfileAction => 'Edit'; @override String get settingsEditProfileTitle => 'Edit Profile'; @override String get settingsAvatar => 'Avatar'; @override String get settingsDisplayName => 'Display Name'; @override String get settingsDisplayNameHint => 'Enter display name'; @override String get settingsDisplayNameRequired => 'Display name is required'; @override String get settingsBio => 'Bio'; @override String get settingsBioHint => 'Write a short introduction'; @override String get settingsAvatarPickerHint => 'Supports PNG / JPG / WEBP. A clear square photo works best.'; @override String get settingsAvatarChooseFromAlbum => 'Choose from Photos'; @override String get settingsAvatarUploading => 'Uploading...'; @override String get settingsAvatarUploadSuccess => 'Avatar uploaded'; @override String get settingsAvatarPickPermissionHint => 'Cannot open photo library. Please allow Photos access in system settings.'; @override String get settingsLanguageSection => 'Interface Language'; @override String get settingsCoinBalanceLabel => 'Current Credits'; @override String settingsCoinBalanceValue(int balance) { return '$balance credits'; } @override String get settingsCoinCenterDescription => ''; @override String get settingsCoinRechargeSection => 'Recharge Packages'; @override String get settingsCoinPackStarter => 'New User Pack'; @override String get settingsCoinPackBasic => 'Starter Pack'; @override String get settingsCoinPackPopular => 'Popular Pack'; @override String get settingsCoinPackPremium => 'Premium Pack'; @override String get settingsCoinPackPopularBadge => 'Popular'; @override String get settingsCoinPackNewUserBadge => 'Only Once'; @override String get settingsPurchaseButton => 'Pay Now'; @override String get settingsPurchasePending => ''; @override String settingsCoinAmount(int amount) { return '$amount credits'; } @override String get english => 'English'; @override String get chinese => 'Chinese'; @override String get dialogConfirm => 'OK'; @override String get agreementSeparator => ', '; @override String get agreementAnd => ' and '; @override String get aboutUsContent => 'Welcome to MeiYao Divination, an AI-assisted platform for interpreting traditional Six-Line divination and opening a window into classical Chinese wisdom.\n\nSix-Line divination originates from the deep philosophical system of the I Ching. It reflects the ancient idea that intention, timing, and the changing world are interconnected. After a hexagram is formed, it can be interpreted together with line texts and rules such as the Five Elements and GanZhi interactions to understand likely trends and developments.\n\nMeiYao Divination is built on this idea. Its core value is to help users step outside narrow thinking, understand contradictions, opportunities, and risks from a broader trend perspective, and make calmer, more thoughtful decisions. We hope AI can become a modern bridge to this old wisdom.\n\nImportant Notice\nAll divination interpretations are generated by AI and are for entertainment and reference only. They must not be used as the sole basis for business, medical, or other professional decisions.\n\nYue ICP 2025428416-1A'; @override String get privacyContent => 'Dear user,\nWelcome to MeiYao Divination. We understand that your privacy is critically important, and we take the protection of your personal information seriously. This policy explains how we collect, use, store, and share your information, as well as how you can access and manage it.\n\n1. Information We Collect\nWe may collect information you actively provide, including account registration details, profile information, and divination-related inputs and results. We may also collect device information and log data automatically to support security, compatibility, and service improvement.\n\n2. How We Use Information\nWe use your information to provide and improve divination services, manage accounts, protect account security, send service notifications, and respond to feedback or support requests.\n\n3. Storage of Information\nInformation collected in China is generally stored on servers located within China. We only retain personal information for as long as needed to meet legal obligations and service purposes, after which it will be deleted or anonymized.\n\n4. Sharing of Information\nWe do not share personal information with third parties except when you give clear consent, when we work with service providers under proper safeguards, when required by law, or in connection with mergers, acquisitions, restructuring, or bankruptcy.\n\n5. Your Rights\nYou may request access to, correction of, or deletion of your personal information, and you may request account cancellation. Please note that cancelling an account may make related data unrecoverable.\n\n6. Protection of Minors\nIf you are under the age of 14, please use the service under the guidance of a parent or legal guardian and obtain their prior consent.\n\n7. Security of Personal Information\nWe use reasonable organizational and technical measures, including encryption, access control, auditing, and monitoring, to protect personal information from unauthorized access, disclosure, use, modification, damage, or loss.\n\n8. Policy Updates\nWe may update this privacy policy from time to time because of legal, business, or service changes. Material changes will be communicated in a prominent way.\n\n9. Contact Us\nIf you have questions or suggestions about this privacy policy, please contact us at xuyunlong@xunmee.com.\n\nXunmee Technology (Shenzhen) Co., Ltd.\nJune 1, 2025'; @override String get termsContent => 'Chapter 1 General\nWelcome to MeiYao Divination. The app is developed, operated, and maintained by Xunmee Technology (Shenzhen) Co., Ltd. By downloading, installing, registering, signing in, or otherwise using the app, you confirm that you have read, understood, and accepted these terms.\n\nChapter 2 Service Description\nMeiYao Divination provides AI-based divination interpretation services, including manual and automatic casting flows. Service interruption caused by maintenance, failure, force majeure, or other reasonable causes does not constitute a breach.\n\nChapter 3 User Accounts and Information Security\nUsers must have proper legal capacity, provide true and valid registration information, and keep account credentials secure. Necessary personal information may be collected and processed according to the privacy policy.\n\nChapter 4 Intellectual Property\nAll content of MeiYao Divination, including software, text, images, audio, video, charts, trademarks, and domains, is protected by law. Reverse engineering, decompilation, disassembly, or any attempt to obtain source code without written permission is strictly prohibited.\n\nChapter 5 User Conduct\nUsers may not publish unlawful content, infringe on the rights of others, disrupt normal service operation, or conduct unauthorized commercial activity. The app may warn, restrict, suspend, or ban accounts that violate these rules and may pursue legal liability.\n\nChapter 6 Liability and Disclaimer\nUsers are responsible for losses caused by their own violations of these terms. AI-generated divination results are for reference only and must not be treated as the sole basis for real-world decisions. Users assume the related risks.\n\nChapter 7 Dispute Resolution\nThese terms are governed by the laws of the People\'s Republic of China. Disputes should first be resolved through friendly consultation. If consultation fails, either party may bring the dispute to the competent court where Xunmee Technology is registered.\n\nChapter 8 Miscellaneous\nNotices may be delivered through contact information, system messages, internal messages, or announcements. If you need to contact Xunmee Technology, please email xuyunlong@xunmee.com.\n\nXunmee Technology (Shenzhen) Co., Ltd.\nJune 1, 2025'; @override String get disclaimerContent => 'Placeholder content for disclaimer.'; @override String get toastLabelInfo => 'Tip'; @override String get toastLabelSuccess => 'Success'; @override String get toastLabelWarning => 'Warning'; @override String get toastLabelError => 'Error'; @override String get errorTooManyRequests => 'Too many requests, please try again later'; @override String get errorInvalidVerificationCode => 'Invalid verification code'; @override String get errorSessionExpired => 'Session expired, please login again'; @override String get errorServiceUnavailable => 'Service unavailable, please try again later'; @override String get errorServerGeneric => 'Server error, please try again later'; @override String get errorRequestGeneric => 'Request failed, please try again'; @override String get errorProfileDeleteFailed => 'Failed to delete account, please try again'; @override String get errorRunLimitExceeded => 'Run limit reached in this session. Please start a new divination.'; @override String get errorDivinationPayloadRequired => 'Missing divination payload. Please cast again.'; @override String get divinationScreenTitle => 'Cast Hexagram'; @override String get divinationSelectMethod => 'Select divination method'; @override String get divinationManualMethod => 'Manual Casting'; @override String get divinationAutoMethod => 'Auto Casting'; @override String get divinationQuestionTypePrompt => 'Select question type'; @override String get divinationQuestionInputPrompt => 'Please enter your question'; @override String get divinationQuestionInputHint => 'Describe your question in detail for more accurate reading'; @override String get divinationStartButton => 'Start Divination'; @override String divinationCoinBalance(int balance) { return 'Available coins: $balance'; } @override String get divinationRefreshBalance => 'Refresh balance'; @override String get divinationRecommendManual => 'Manual casting is recommended for more accurate readings! Prepare three identical coins and click here for the tutorial.'; @override String get divinationMethodTipTitle => 'Divination Method'; @override String get divinationMethodTipAuto => 'Auto: No coins needed, just follow the instructions.'; @override String get divinationMethodTipManual => 'Manual: Prepare three identical coins.'; @override String get divinationMethodTipRecommend => 'Manual casting provides higher accuracy.'; @override String get divinationManualGuideTitle => 'Manual Casting Tutorial'; @override String get divinationManualGuideStep1 => 'Left: Pattern side. Right: Inscription side. Prepare three identical coins or similar tokens.'; @override String get divinationManualGuideStep2 => 'Hold the coins in both hands, think about your question, then toss them onto a table. Record how many inscription sides and pattern sides appear.'; @override String get divinationManualGuideStep3 => 'Record each result by whether the inscription side or pattern side faces up. Repeat 6 times, recording from bottom to top.'; @override String get autoGuideStep1Title => 'Auto Casting'; @override String get autoGuideStep1Body => 'No coins needed. Simply shake your phone or tap the button to cast. Each shake automatically rotates three coins and shows the result.'; @override String get autoGuideStep2Title => 'Start Casting'; @override String get autoGuideStep2Body => 'Tap the \"Start Casting\" button or shake your phone. The coins will rotate automatically for 3 seconds.'; @override String get autoGuideStep3Title => 'Auto Recording'; @override String get autoGuideStep3Body => 'Each shake automatically records the corresponding yao position. Repeat 6 times to complete all six yao.'; @override String get autoGuideStep4Title => 'Analyze Hexagram'; @override String get autoGuideStep4Body => 'After 6 shakes, the \"Analyze Hexagram\" button will blink. Tap it to view the hexagram interpretation.'; @override String get manualGuideStep1Title => 'Manual Casting'; @override String get manualGuideStep1Body => 'Prepare three identical coins. Record one yao at a time, from bottom to top, until all six yao are complete.'; @override String get manualGuideStep2Title => 'Confirm Time'; @override String get manualGuideStep2Body => 'Check the casting time first. Tap \"Modify\" on the right if you need to adjust it.'; @override String get manualGuideStep3Title => 'Fill Six Yao in Order'; @override String get manualGuideStep3Body => 'Start from the first yao and select one row at a time. The next row stays locked until the current row is completed.'; @override String get manualGuideStep4Title => 'Start Analysis'; @override String get manualGuideStep4Body => 'After all six yao are filled, the \"Analyze Hexagram\" button will blink. Tap it to start interpretation.'; @override String get yaoNameFirst => 'First Yao'; @override String get yaoNameSecond => 'Second Yao'; @override String get yaoNameThird => 'Third Yao'; @override String get yaoNameFourth => 'Fourth Yao'; @override String get yaoNameFifth => 'Fifth Yao'; @override String get yaoNameTop => 'Top Yao'; @override String get yaoYin => 'Yin'; @override String get yaoYang => 'Yang'; @override String get yaoYoungYin => 'Young Yin'; @override String get yaoYoungYang => 'Young Yang'; @override String get yaoOldYin => 'Old Yin'; @override String get yaoOldYang => 'Old Yang'; @override String get yaoMovingSuffix => '(moving)'; @override String get autoCoinFaceZi => 'Inscription'; @override String get autoCoinFaceHua => 'Pattern'; @override String get divinationIAcknowledge => 'I Understand'; @override String get divinationClose => 'Close'; @override String get divinationModify => 'Modify'; @override String get questionTypeCareer => 'Career'; @override String get questionTypeLove => 'Love'; @override String get questionTypeWealth => 'Wealth'; @override String get questionTypeFortune => 'Fortune'; @override String get questionTypeDream => 'Dream'; @override String get questionTypeHealth => 'Health'; @override String get questionTypeStudy => 'Study'; @override String get questionTypeSearch => 'Search'; @override String get questionTypeOther => 'Other'; @override String get toastPleaseInputQuestion => 'Please enter your question'; @override String get toastCoinInsufficient => 'Insufficient points'; @override String get divinationCostDialogTitle => 'Confirm divination'; @override String divinationCostDialogBody(int cost, int balance) { return 'This run costs $cost credits. Available balance: $balance credits. Continue?'; } @override String get divinationCostDialogConfirm => 'Confirm'; @override String get toastContentCopied => 'Content copied'; @override String toastContentCopiedWithTitle(String title) { return '$title copied'; } @override String get resultScreenTitle => 'Result'; @override String get resultAIAnalysis => 'AI Analysis'; @override String get resultShare => 'Share'; @override String get resultBasicInfo => 'Basic Info'; @override String get resultHexagramDetail => 'Hexagram Detail'; @override String get resultConclusion => 'Conclusion'; @override String get resultAnalysis => 'Analysis'; @override String get resultSuggestion => 'Suggestion'; @override String get resultDivinationInfo => 'Divination Info'; @override String get resultDivinationTime => 'Casting Time'; @override String get resultDivinationMethod => 'Method'; @override String get resultQuestionType => 'Type'; @override String get resultQuestion => 'Question'; @override String get resultAutoMethod => 'Auto Casting'; @override String get resultManualMethod => 'Manual Casting'; @override String get signTypeShangShang => 'Supremely Auspicious'; @override String get signTypeZhongShang => 'Auspicious'; @override String get signTypeZhongXia => 'Cautionary'; @override String get signTypeXiaXia => 'Inauspicious'; @override String get resultCopy => 'Copy'; @override String get resultWarning => 'All interpretations are AI-generated for entertainment only. Do not use them as professional advice for business, medical, or legal decisions.'; @override String get followUpEntryHint => 'You can ask one follow-up question for this reading'; @override String get followUpEntryAction => 'Ask Follow-up'; @override String get followUpViewHistory => 'View history'; @override String get followUpScreenTitle => 'Continue Follow-up'; @override String get followUpEmpty => 'No messages yet'; @override String get followUpQuotaUsed => 'Follow-up limit reached for this session'; @override String get followUpInputHint => 'Type your follow-up question'; @override String get followUpHoldToSpeak => 'Hold to speak'; @override String get followUpRecording => 'Release to send'; @override String get followUpRecordingHint => 'Slide up to cancel'; @override String get followUpTranscribing => 'Transcribing voice...'; @override String get followUpGenerating => 'Generating reply...'; @override String get followUpStepWorker => 'Analyzing divination and generating reply'; @override String followUpStepGeneric(String stepName) { return 'Processing: $stepName'; } @override String get errorAudioUnsupportedFormat => 'Unsupported audio format. Please use wav'; @override String get errorAudioTooLarge => 'Audio file too large. Please record a shorter clip'; @override String get errorAudioEmpty => 'No valid voice detected. Please try again'; @override String get errorAsrUnavailable => 'Voice transcription service is unavailable now'; @override String get transitionPreparing => 'Deriving...'; @override String get transitionDeriving => 'Analyzing...'; @override String get transitionDone => 'Complete\nTap to view'; @override String get iChingTitle => 'I Ching'; @override String get processingCardQianTitle => 'Qian • The Creative'; @override String get processingCardQianQuote => 'The movement of Heaven is full of power; thus the noble one makes himself strong and tireless.'; @override String get processingCardDuiTitle => 'Dui • The Joyous'; @override String get processingCardDuiQuote => 'Joy grounded in integrity brings openness, harmony, and right expression.'; @override String get processingCardLiTitle => 'Li • The Clinging Fire'; @override String get processingCardLiQuote => 'With clear brilliance, the great one illumines all directions.'; @override String get processingCardZhenTitle => 'Zhen • The Arousing Thunder'; @override String get processingCardZhenQuote => 'Shock awakens the heart; composure turns fear into growth.'; @override String get processingCardXunTitle => 'Xun • The Gentle Wind'; @override String get processingCardXunQuote => 'Gentle penetration furthers progress and helps one meet the right people.'; @override String get processingCardKanTitle => 'Kan • The Abysmal Water'; @override String get processingCardKanQuote => 'In danger, sincerity and disciplined action carry one through.'; @override String get processingCardGenTitle => 'Gen • Keeping Still Mountain'; @override String get processingCardGenQuote => 'Stillness at the proper time keeps one centered and steady in place.'; @override String get processingCardKunTitle => 'Kun • The Receptive Earth'; @override String get processingCardKunQuote => 'The Earth\'s condition is devoted receptivity; the noble one carries all with broad virtue.'; @override String get ganZhiInfo => 'Stem-Branch'; @override String get wuXingWangShuai => 'Five Elements'; @override String get ganZhiKongWang => 'Void'; @override String get resultPillarColumn => '四柱'; @override String get resultYearPillar => '年柱'; @override String get resultMonthPillar => '月柱'; @override String get resultDayPillar => '日柱'; @override String get resultTimePillar => '时柱'; @override String get resultGanZhiLabel => '干支'; @override String get resultKongWangLabel => '空亡'; @override String get termYueJian => '月建'; @override String get termRiChen => '日辰'; @override String get termYuePo => '月破'; @override String get termRiChong => '日冲'; @override String get guaNameSimplifiedChars => '风泽观讼师谦随蛊临贲剥复无颐恒壮晋损渐归丰兑涣节济'; @override String get guaNameTraditionalChars => '风泽观讼师谦随蛊临贲剥复无颐恒壮晋损渐归丰兑涣节济'; @override String get manualScreenTitle => 'Manual Casting'; @override String get manualSelectTime => 'Select time'; @override String get manualSpecifyYaoCombo => 'Select coin combination'; @override String get manualStartResolve => 'Start Interpretation'; @override String get manualSelectYaoTitle => 'Select Yao'; @override String get manualYaoInstruction => 'Tap to view casting method and coin combination guide'; @override String get manualYaoTipTitle => 'Tip'; @override String get manualYaoTipContent => 'Select from bottom to top, not top to bottom.\n\nCast three coins together, select once each time, six times total.'; @override String get manualCoinSelectHint => 'Tap coins to flip between inscription and pattern. Record your casting result.'; @override String get autoScreenTitle => 'Auto Casting'; @override String get autoSelectTime => 'Select Time'; @override String get autoCoinDivination => 'Coin Casting'; @override String get autoHexagramForming => 'Forming Hexagram'; @override String get autoShakeInstruction => 'Tap to view auto casting method'; @override String get autoStartShake => 'Start Casting'; @override String get autoContinueShake => 'Continue'; @override String get autoFinishShake => 'Finish'; @override String get autoShaking => 'Casting...'; @override String get autoStartResolve => 'Start Interpretation'; @override String autoShakeCountdown(int seconds) { return 'Stopping in ${seconds}s'; } @override String autoShakeRemaining(int count) { return '$count more times'; } @override String get autoShakeComplete => 'Tap the button below to analyze'; @override String get autoTryShakePhone => 'You can also shake your phone'; @override String autoSimBalance(int balance) { return 'Available coins: $balance'; } @override String get autoGuideTitle => 'Auto Casting Tutorial'; @override String get autoGuideInstruction => 'Shake your phone or tap the button, cast 6 times to form a complete hexagram.'; @override String get dateTab => 'Date'; @override String get timeTab => 'Time Picker'; @override String get confirm => 'Confirm'; @override String get cancel => 'Cancel'; @override String get coinFaceGuideTitle => 'Coin Face Guide'; @override String get coinFaceGuideDescription => 'Left: Pattern side. Right: Inscription side.'; @override String get settingsInviteTitle => 'My Invitation'; @override String get settingsInviteSubtitle => 'Invite friends, earn rewards together'; @override String get settingsInviteMyCode => 'My Invite Code'; @override String get settingsInviteCopySuccess => 'Invite code copied'; @override String get settingsInviteCopied => 'Copied'; @override String get settingsInviteCopy => 'Copy'; @override String settingsInviteStats(int count) { return 'Invited: $count friend(s)'; } @override String get settingsInviteBindCode => 'Bind Invite Code'; @override String get settingsInviteBindHint => 'Enter your friend\'s invite code'; @override String get settingsInviteBindPlaceholder => '6-digit code'; @override String get settingsInviteBindButton => 'Bind'; @override String get settingsInviteBindSuccess => 'Invite code bound successfully'; @override String get settingsInviteBindFailed => 'Failed to bind invite code'; @override String get settingsInviteGenerateTitle => 'Generate My Invite Code'; @override String get settingsInviteGenerateButton => 'Generate My Invite Code'; @override String get settingsInviteGenerateSuccess => 'Invite code generated'; @override String get settingsInviteEmptyTitle => 'Invite Friends, Earn Rewards'; @override String get settingsInviteEmptyDescription => 'Each friend who registers using your invite code gives you bonus credits'; @override String get settingsInviteInputLabel => 'Enter invite code (optional)'; @override String get settingsInviteInputHint => 'Enter code to bind your inviter'; @override String get settingsInviteInvalidCode => 'Please enter a valid 6-character invite code'; @override String get settingsDoNotSellTitle => 'Personalized Ads'; @override String get settingsDoNotSellDescription => 'When off, your personal info won\'t be used for ad recommendations'; @override String get settingsDoNotSellEnabled => 'Off'; @override String get settingsDoNotSellDisabled => 'On'; @override String get settingsFeedbackTitle => 'Feedback'; @override String get feedbackTitle => 'Feedback'; @override String get feedbackTypeLabel => 'Feedback Type'; @override String get feedbackTypeBug => 'Bug'; @override String get feedbackTypeSuggestion => 'Suggestion'; @override String get feedbackTypeOther => 'Other'; @override String get feedbackContentLabel => 'Content'; @override String get feedbackContentHint => 'Please describe your issue or suggestion in detail...'; @override String get feedbackImagesLabel => 'Add Screenshots (max 3)'; @override String get feedbackAnonymousLabel => 'Do not upload my personal information'; @override String get feedbackAnonymousHint => 'If checked, your user ID will not be collected. Device info will still be collected for troubleshooting.'; @override String get feedbackSubmit => 'Submit Feedback'; @override String get feedbackSubmitting => 'Submitting...'; @override String get feedbackSuccess => 'Thank you for your feedback. We will process it soon.'; @override String get feedbackContentRequired => 'Please enter feedback content'; @override String get feedbackContentTooLong => 'Feedback content cannot exceed 500 characters'; @override String get feedbackTooManyImages => 'Maximum 3 images allowed'; @override String get feedbackImageTooLarge => 'Image size cannot exceed 5MB'; @override String get paymentSuccess => 'Purchase successful'; @override String get paymentVerifyFailed => 'Purchase verification failed, please try again later'; @override String get paymentProductNotFound => 'Product temporarily unavailable'; @override String get paymentStarterPackIneligible => 'Starter pack is limited to one purchase per user'; @override String get paymentProductUnavailable => 'Product temporarily unavailable'; @override String get paymentPending => 'Apple is processing, please wait'; @override String get notifyCenterTitle => 'Notifications'; @override String get notifyMarkAllRead => 'Mark all read'; @override String get notifyLoadFailed => 'Failed to load'; @override String get notifyRetry => 'Retry'; @override String get notifyEmpty => 'No notifications'; @override String get timeJustNow => 'Just now'; @override String timeMinutesAgo(int minutes) { return '${minutes}m ago'; } @override String timeHoursAgo(int hours) { return '${hours}h ago'; } @override String timeDaysAgo(int days) { return '${days}d ago'; } @override String get pointsLedgerTitle => 'Points Ledger'; @override String get pointsLedgerEmpty => 'No records yet'; @override String get pointsLedgerTypeRegister => 'Registration bonus'; @override String get pointsLedgerTypePurchase => 'Purchase credits'; @override String get pointsLedgerTypeConsume => 'AI chat cost'; @override String get pointsLedgerTypeAdjust => 'System adjustment'; @override String get pointsLedgerTypeRefund => 'Refund'; @override String pointsLedgerBalance(int balance) { return 'Balance $balance'; } @override String get retry => 'Retry'; @override String get resultFocusPoints => 'Focus Points'; @override String get wuXingMu => 'Wood'; @override String get wuXingHuo => 'Fire'; @override String get wuXingTu => 'Earth'; @override String get wuXingJin => 'Metal'; @override String get wuXingShui => 'Water'; @override String get wuXingWang => 'Prosperous'; @override String get wuXingXiang => 'Strong'; @override String get wuXingXiu => 'Resting'; @override String get wuXingQiu => 'Imprisoned'; @override String get wuXingSi => 'Dead'; @override String get yaoLegendTitle => 'Symbol Guide'; @override String get yaoColSpirit => 'Spirit'; @override String get yaoColRelation => 'Relation'; @override String get yaoColBranch => 'Branch'; @override String get yaoColElement => 'Element'; @override String get yaoColChange => 'Chg'; @override String get yaoColMark => 'Mark'; @override String get resultHexagramDetailFailed => 'Interpretation failed. Hexagram details are unavailable.'; @override String get resultHexagramDetailRefused => 'Interpretation not supported. Please adjust your question and try again.'; }