多语言支持

This commit is contained in:
ytc1012
2025-11-24 11:25:33 +08:00
parent 2c6ced5c14
commit 4444c401b9
14 changed files with 672 additions and 167 deletions

219
lib/l10n/app_en.arb Normal file
View File

@@ -0,0 +1,219 @@
{
"@@locale": "en",
"appTitle": "FocusBuddy",
"@appTitle": {
"description": "The application title"
},
"startFocusing": "Start Focusing",
"@startFocusing": {
"description": "Button text to start a focus session"
},
"minutes": "{count, plural, =1{minute} other{minutes}}",
"@minutes": {
"description": "Minutes plural form",
"placeholders": {
"count": {
"type": "int"
}
}
},
"minutesValue": "{count} {minutes}",
"@minutesValue": {
"description": "Minutes with value",
"placeholders": {
"count": {
"type": "int"
},
"minutes": {}
}
},
"tapDistractionAnytime": "Tap 'I got distracted'\nanytime — no guilt.",
"@tapDistractionAnytime": {
"description": "Helper text on home screen"
},
"history": "History",
"@history": {
"description": "History navigation button"
},
"settings": "Settings",
"@settings": {
"description": "Settings navigation button"
},
"iGotDistracted": "I got distracted",
"@iGotDistracted": {
"description": "Main distraction button text"
},
"pause": "Pause",
"resume": "Resume",
"stopSession": "Stop session",
"whatPulledYouAway": "What pulled you away?",
"@whatPulledYouAway": {
"description": "Distraction sheet title"
},
"skipThisTime": "Skip this time",
"stopEarly": "Stop early?",
"stopEarlyMessage": "That's totally fine — you still focused for {minutes} {minuteText}!",
"@stopEarlyMessage": {
"placeholders": {
"minutes": {
"type": "int"
},
"minuteText": {}
}
},
"keepGoing": "Keep going",
"yesStop": "Yes, stop",
"distractionEncouragement": "It happens. Let's gently come back.",
"@distractionEncouragement": {
"description": "Encouragement message when distracted"
},
"focusComplete": "Focus session complete!",
"youFocusedFor": "You focused for",
"totalToday": "Total today: {minutes} mins",
"@totalToday": {
"placeholders": {
"minutes": {
"type": "int"
}
}
},
"distractionsCount": "Distractions: {count} {times}",
"@distractionsCount": {
"placeholders": {
"count": {
"type": "int"
},
"times": {}
}
},
"times": "{count, plural, =1{time} other{times}}",
"@times": {
"placeholders": {
"count": {
"type": "int"
}
}
},
"startAnother": "Start Another",
"viewHistory": "View History",
"yourFocusJourney": "Your Focus Journey",
"noFocusSessionsYet": "No focus sessions yet",
"startFirstSession": "Start your first session\nto see your progress here!",
"today": "Today",
"sessions": "{count, plural, =1{session} other{sessions}}",
"@sessions": {
"placeholders": {
"count": {
"type": "int"
}
}
},
"completed": "Completed",
"stoppedEarly": "Stopped early",
"distractions": "{count, plural, =1{distraction} other{distractions}}",
"@distractions": {
"placeholders": {
"count": {
"type": "int"
}
}
},
"focusSettings": "Focus Settings",
"defaultFocusDuration": "Default Focus Duration",
"defaultLabel": "Default",
"about": "About",
"privacyPolicy": "Privacy Policy",
"aboutFocusBuddy": "About FocusBuddy",
"resetOnboarding": "Reset Onboarding",
"version": "Version 1.0.0 (MVP)",
"privacyPolicyTitle": "Privacy Policy",
"privacyPolicyContent": "FocusBuddy is 100% offline. We do not collect your name, email, location, or usage data. All sessions stay on your device.\n\nThere is no cloud sync, no account system, and no analytics tracking.\n\nFor the full privacy policy, visit:\n[Your website URL]/privacy",
"close": "Close",
"aboutTitle": "About FocusBuddy",
"aboutSubtitle": "A gentle focus timer for neurodivergent minds",
"aboutQuote": "\"Focus is not about never getting distracted — it's about gently coming back every time you do.\"",
"aboutFeatures": "✨ No punishment for distractions\n💚 Encouragement over criticism\n🔒 100% offline and private\n🌱 Made with care",
"resetOnboardingTitle": "Reset Onboarding?",
"resetOnboardingMessage": "This will show the onboarding screens again when you restart the app.",
"cancel": "Cancel",
"reset": "Reset",
"onboardingReset": "Onboarding reset. Restart the app to see it again.",
"onboarding1Title": "Focus without guilt",
"onboarding1Description": "This app is different — it won't punish you for losing focus.\n\nPerfect for ADHD, anxiety, or anyone who finds traditional timers too harsh.",
"onboarding2Title": "Tap when you get distracted",
"onboarding2Description": "We'll gently remind you to come back.\n\nNo shame. No stress. Just a friendly nudge.",
"onboarding3Title": "Track your progress",
"onboarding3Description": "See how you're improving, one session at a time.\n\nEvery distraction is just data — not failure.",
"skip": "Skip",
"next": "Next",
"getStarted": "Get Started",
"notificationFocusInProgress": "Focus session in progress",
"notificationRemaining": "{time} remaining",
"@notificationRemaining": {
"placeholders": {
"time": {
"type": "String"
}
}
},
"notificationFocusCompleteTitle": "🎉 Focus session complete!",
"notificationFocusCompleteBodyNoDistractions": "You focused for {minutes} {minuteText} without distractions!",
"@notificationFocusCompleteBodyNoDistractions": {
"placeholders": {
"minutes": {
"type": "int"
},
"minuteText": {}
}
},
"notificationFocusCompleteBody": "You focused for {minutes} {minuteText}. Great effort!",
"@notificationFocusCompleteBody": {
"placeholders": {
"minutes": {
"type": "int"
},
"minuteText": {}
}
},
"distractionPhoneNotification": "Phone / Notification",
"distractionSocialMedia": "Social Media",
"distractionThoughts": "Thoughts / Daydream",
"distractionOther": "Other",
"language": "Language",
"selectLanguage": "Select Language",
"english": "English",
"chinese": "中文 (Chinese)"
}

109
lib/l10n/app_zh.arb Normal file
View File

@@ -0,0 +1,109 @@
{
"@@locale": "zh",
"appTitle": "专注伙伴",
"startFocusing": "开始专注",
"minutes": "{count, plural, =1{分钟} other{分钟}}",
"minutesValue": "{count} {minutes}",
"tapDistractionAnytime": "随时点击'我分心了'\n——没有负罪感。",
"history": "历史",
"settings": "设置",
"iGotDistracted": "我分心了",
"pause": "暂停",
"resume": "继续",
"stopSession": "停止会话",
"whatPulledYouAway": "是什么分散了你的注意力?",
"skipThisTime": "跳过",
"stopEarly": "提前停止?",
"stopEarlyMessage": "完全没问题——你已经专注了 {minutes} {minuteText}",
"keepGoing": "继续",
"yesStop": "确定停止",
"distractionEncouragement": "没关系,让我们温柔地回到正轨。",
"focusComplete": "专注完成!",
"youFocusedFor": "你专注了",
"totalToday": "今日总计:{minutes} 分钟",
"distractionsCount": "分心:{count} {times}",
"times": "{count, plural, =1{次} other{次}}",
"startAnother": "再来一次",
"viewHistory": "查看历史",
"yourFocusJourney": "你的专注之旅",
"noFocusSessionsYet": "还没有专注记录",
"startFirstSession": "开始你的第一次专注\n在这里查看进度",
"today": "今天",
"sessions": "{count, plural, =1{次会话} other{次会话}}",
"completed": "已完成",
"stoppedEarly": "提前停止",
"distractions": "{count, plural, =1{次分心} other{次分心}}",
"focusSettings": "专注设置",
"defaultFocusDuration": "默认专注时长",
"defaultLabel": "默认",
"about": "关于",
"privacyPolicy": "隐私政策",
"aboutFocusBuddy": "关于专注伙伴",
"resetOnboarding": "重置引导",
"version": "版本 1.0.0 (MVP)",
"privacyPolicyTitle": "隐私政策",
"privacyPolicyContent": "专注伙伴 100% 离线运行。我们不收集您的姓名、电子邮件、位置或使用数据。所有会话数据都保存在您的设备上。\n\n没有云同步没有账户系统没有分析追踪。\n\n完整隐私政策请访问\n[您的网站 URL]/privacy",
"close": "关闭",
"aboutTitle": "关于专注伙伴",
"aboutSubtitle": "为神经多样性人群设计的温柔专注计时器",
"aboutQuote": "\"专注不是永不分心——而是每次分心后温柔地回来。\"",
"aboutFeatures": "✨ 不惩罚分心\n💚 鼓励而非批评\n🔒 100% 离线和私密\n🌱 用心制作",
"resetOnboardingTitle": "重置引导?",
"resetOnboardingMessage": "重启应用后将再次显示引导页面。",
"cancel": "取消",
"reset": "重置",
"onboardingReset": "引导已重置。重启应用后将再次显示。",
"onboarding1Title": "无负罪感地专注",
"onboarding1Description": "这个应用与众不同——它不会因为你失去专注而惩罚你。\n\n完美适合 ADHD、焦虑症患者或任何觉得传统计时器太苛刻的人。",
"onboarding2Title": "分心时轻触按钮",
"onboarding2Description": "我们会温柔地提醒你回来。\n\n没有羞愧。没有压力。只是友好的提醒。",
"onboarding3Title": "追踪你的进步",
"onboarding3Description": "看看你是如何一次次进步的。\n\n每次分心都只是数据——而非失败。",
"skip": "跳过",
"next": "下一步",
"getStarted": "开始使用",
"notificationFocusInProgress": "专注进行中",
"notificationRemaining": "剩余 {time}",
"notificationFocusCompleteTitle": "🎉 专注完成!",
"notificationFocusCompleteBodyNoDistractions": "你专注了 {minutes} {minuteText},没有分心!",
"notificationFocusCompleteBody": "你专注了 {minutes} {minuteText}。做得很棒!",
"distractionPhoneNotification": "手机/通知",
"distractionSocialMedia": "社交媒体",
"distractionThoughts": "思绪/白日梦",
"distractionOther": "其他",
"language": "语言",
"selectLanguage": "选择语言",
"english": "English",
"chinese": "中文"
}