Brand and design · Specs

Copy deck — en + zh-Hans (v1)

Every client string by key, in en and zh-Hans; generated from strings.json.

Generated from design/tools/strings.py by python3 design/tools/build.py. Edit the catalog, not this file. Machine-readable twin: strings.json (xcstrings-shaped: strings[key].localizations[en|zh-Hans].stringUnit.value, **bold** markdown, \n newlines) — convert 1:1 into Localizable.xcstrings.

ADR-001 D13: the product is multilingual. UI locale (en, zh-Hans) and practice language (the article's language) are independent. Every key below has a real value in both UI locales — neither column is a gloss.

Where strings come from

Source Examples Localized by
Client catalog (this file) buttons, titles, hints, empty/error states, accessibility labels, notification bodies Device / settings.ui_locale → Localizable.xcstrings
API strings Home.greeting, Home.local_date_label, steps[].label, Topic.name/glyph, Level.title, band_label, dimension label, micro-skill Focus.title/instruction, comparison.verdict_label, Settlement.headline/subline, WeeklyQuests.quests[].title, Achievement.title/description, Growth.next_unlock, Paywall.benchmark_label, products[].badge, Exemplar.label, error.message, TextLength.label Server, from the request's Accept-Language (fallback en) — the client sends its UI locale on every request
Content article title/body/byline/reading_hint, transcript, Assessment.summary, dimension note, Evidence.*, one_action.*, key points, exemplar text + voice The article's language (session.language), regardless of UI locale. Rendered with lang= / .environment(\.locale) so VoiceOver picks the right voice

Rules: specifiers follow Apple format (%@, %lld, positional %1$@ where word order differs). Never concatenate fragments; never hard-code units — lengths come from TextLength.label ("301 字" / "300 words"), dates from Date.FormatStyle (10月24日 / Oct 24), prices from StoreKit displayPrice. English runs ~1.6× longer than Chinese: every layout wraps; nothing truncates.

Conditional copy is listed as separate keys per variant (e.g. complete.headline.* per verdict, unreliable.* per reason, record.button.* per recorder state).

Global

Key en zh-Hans Used in screens
app.name Shuke 述刻 yes
app.tagline Ten minutes a day to explain complex things clearly. 每天十分钟,把复杂的事讲清楚。 runtime / notifications
common.continue Continue 继续 yes
common.back Back 返回 yes
common.close Close 关闭 runtime / notifications
common.cancel Cancel 取消 yes
common.retry Retry 重试 yes
common.later Not now 以后再说 yes
common.ok OK 好的 yes
common.see_all See all 查看全部 yes
common.all All 全部 yes
common.today Today 今天 yes
common.step_of.a11y Step %lld of %lld 第 %lld 步,共 %lld 步 yes
common.read_seconds %lld sec read 约 %lld 秒 yes
common.read_minutes %lld min read 约 %lld 分钟 yes
common.read_min_sec %lld min %lld sec read 约 %lld 分 %lld 秒 runtime / notifications
common.xp_plus +%lld XP +%lld XP runtime / notifications
common.points %lld pts %lld 分 runtime / notifications
common.seconds_shorter %lld s shorter 少用 %lld 秒 yes
common.seconds_longer %lld s longer 多用 %lld 秒 yes
common.same_duration Same length 用时相同 runtime / notifications
common.difficulty Level %lld 难度 %lld yes
common.error_code_retryable Error %@ · retryable 错误代码 %@ · 可重试 yes
common.date_range %@ – %@ %@ – %@ yes
tab.home Home 首页 yes
tab.library Practice 练习 yes
tab.growth Progress 成长 yes
tab.profile Me 我的 yes
tab.nav.a11y Main navigation 主导航 yes

Languages

Language names are shown in their own script (endonyms) in both UIs, as iOS does.

Key en zh-Hans Used in screens
lang.en English English yes
lang.zh-Hans 中文(简体) 中文(简体) yes
lang.short.en EN EN yes
lang.short.zh-Hans 中 中 yes
lang.all All languages 全部语言 yes
lang.follow_system Follow system 跟随系统 runtime / notifications

Score bands, dimensions, micro-skills

The API sends band_label, dimension label and micro-skill title localized by Accept-Language; these are the client fallbacks and the paywall's derived band.

Key en zh-Hans Used in screens
band.retry Needs practice 需要再练 runtime / notifications
band.basic Good foundation 基础不错 yes
band.clear Clear 讲清楚了 runtime / notifications
band.excellent Excellent 出色 runtime / notifications
dimension.key_info Key information 关键信息 yes
dimension.structure Structure 逻辑结构 yes
dimension.efficiency Efficiency 表达效率 yes
dimension.fluency Fluency 流畅度 yes
dimension.weights Weights 35 / 30 / 20 / 15 权重 35 / 30 / 20 / 15 yes
dimension.insufficient Not enough evidence · score unaffected 依据不足 · 不影响分数 yes
micro.conclusion_first Conclusion first 先说结论 runtime / notifications
micro.three_points Three points 三点结构 runtime / notifications
micro.cut_fillers Cut fillers 删掉口头禅 runtime / notifications
micro.keep_constraints Keep the caveats 保留关键限制 runtime / notifications
micro.one_example One example 一个例子 runtime / notifications
micro.name_the_claim Name the claim 先点明观点 runtime / notifications
micro.drop_repeats No repeats 不重复 runtime / notifications

Onboarding

Key en zh-Hans Used in screens
onboarding.progress.a11y Step %lld of %lld 第 %lld 步,共 %lld 步 yes
onboarding.welcome.title Ten minutes a day.<br>Say complex things clearly. 每天十分钟,<br>把复杂的事讲清楚。 yes
onboarding.welcome.body Read a short piece and retell it in your own words. AI points out one thing to change. Say it again and see the difference. 读一篇短文,用自己的话讲一遍。AI 只指出一件要改的事,你再讲一遍,看见变化。 yes
onboarding.welcome.cta Get started 开始 yes
onboarding.welcome.legal By continuing you agree to the %@ and %@. Recordings are transcribed and assessed by third-party AI services and never used to train models. 继续即表示同意 %@ 和 %@。录音由第三方 AI 服务转写和评估,不会用于训练模型。 yes
onboarding.welcome.illo.meta Today · Product · 2 min read 今日文章 · 产品 · 约 1 分钟 yes
onboarding.welcome.illo.oa Next time, lead with your conclusion. 下一遍先说结论,再讲原因。 yes
onboarding.welcome.illo.first First take 第一次 yes
onboarding.welcome.illo.again Second take 再讲一次 yes
onboarding.language.title Which language do you want to practise? 你想练习哪种语言? yes
onboarding.language.subtitle You'll read and speak in this language. You can add more later in Settings. 你会用这种语言阅读和复述。之后可以在设置里添加更多。 yes
onboarding.language.en.sub Read and retell in English 英文文章,用英文复述 yes
onboarding.language.zh-Hans.sub Read and retell in Chinese 中文文章,用中文复述 yes
onboarding.language.ui_note The app’s language follows your device (%@). Change it any time in Settings. 界面语言跟随系统(%@),可在设置中修改。 yes
onboarding.goal.title What do you most want to improve? 你最想提升哪一点? yes
onboarding.goal.subtitle Pick the one that matters most. You can change it later. 选一个最重要的,之后可以改。 yes
onboarding.goal.report_clearly Explain clearly at work 汇报时讲清楚 yes
onboarding.goal.report_clearly.sub Meetings, updates, proposals 开会、汇报、解释方案 yes
onboarding.goal.remember_more Remember what I read 读完记得住 yes
onboarding.goal.remember_more.sub If you can say it, you understood it 把读过的内容讲出来,才算懂 yes
onboarding.goal.create_content Create content 做内容表达 yes
onboarding.goal.create_content.sub Better on video, podcasts and live 视频、播客、直播里讲得更好 yes
onboarding.goal.speak_concisely Be more concise 说话更简洁 yes
onboarding.goal.speak_concisely.sub Get to the point in the first sentence 少绕弯,第一句就到点子上 yes
onboarding.scenario.title Where do you need to speak most? 你常在哪里需要表达? yes
onboarding.scenario.subtitle We’ll pick articles and advice to match. 我们会按场景挑选文章和建议。 yes
onboarding.scenario.work_meeting Meetings and updates 工作会议 / 汇报 yes
onboarding.scenario.work_meeting.sub Make one thing clear in a few minutes 需要在几分钟内讲清一件事 yes
onboarding.scenario.study Study and exams 学习 / 考试复述 yes
onboarding.scenario.study.sub Summarise and defend what you read 读完材料后要复述、答辩 yes
onboarding.scenario.creator Video and podcasts 做视频 / 播客 yes
onboarding.scenario.creator.sub Talking to a camera or a mic 对着镜头或麦克风讲 yes
onboarding.scenario.social Everyday conversations 日常交流 yes
onboarding.scenario.social.sub Explaining things to friends and family 跟朋友、家人讲清楚一件事 yes
onboarding.scenario.topics.title Topics you like 感兴趣的话题 yes
onboarding.scenario.topics.hint Optional · pick any 可多选,可跳过 yes
onboarding.level.title How do you speak today? 你现在讲得怎么样? yes
onboarding.level.subtitle Go with your gut. The diagnostic will be more precise. 凭感觉选就好,诊断会给出更准的结果。 yes
onboarding.level.beginner I often lose the thread 经常讲着讲着就乱了 yes
onboarding.level.beginner.sub I say things as they come and get lost 想到哪说到哪,自己也会绕晕 yes
onboarding.level.sometimes_clear Sometimes clear, sometimes rambling 有时清楚,有时会绕 yes
onboarding.level.sometimes_clear.sub Fine when prepared, messy on the spot 准备过的能讲好,临场容易乱 yes
onboarding.level.mostly_clear Mostly clear, want it tighter 大多清楚,想更简洁 yes
onboarding.level.mostly_clear.sub I get there, just not crisply 能讲明白,但还不够利落 yes
onboarding.commitment.title How many days a week? 每周想练几天? yes
onboarding.commitment.subtitle About 10 minutes each. Change it any time. 每次大约 10 分钟。之后随时可以改。 yes
onboarding.commitment.unit.easy days · easy 天 · 轻松 yes
onboarding.commitment.unit.steady days · steady 天 · 稳定 yes
onboarding.commitment.unit.challenge days · stretch 天 · 挑战 yes
onboarding.commitment.days.a11y %lld days a week 每周 %lld 天 yes
onboarding.commitment.reminder.title When should we remind you? 什么时候提醒你? yes
onboarding.commitment.reminder.hint At most one a day, at the time you pick. 每天最多 1 条,在你选的时间。 yes
onboarding.commitment.reminder.a11y Reminder time %@ 提醒时间 %@ yes
onboarding.notify.title One reminder a day 每天提醒你一次 yes
onboarding.notify.subtitle Only at the time you chose. No noise. 只在你选的时间提醒,不会打扰。 yes
onboarding.notify.preview.a11y Notification preview 通知预览 yes
onboarding.notify.point1 Never more than one a day 每天最多 1 条 yes
onboarding.notify.point2 A gentle nudge at 8 pm only if you haven’t practised 晚上 8 点前还没练,才会温和提醒一次 yes
onboarding.notify.point3 Turn it off any time in Settings 随时在「设置」里关闭 yes
onboarding.notify.allow Turn on reminders 开启提醒 yes

Diagnostic

Key en zh-Hans Used in screens
diag.intro.badge About 3 minutes 约 3 分钟 yes
diag.intro.title Start with a<br>quick diagnostic 先做一次<br>表达诊断 yes
diag.intro.body See where you are today. Your 14-day plan will target the area that needs it most. 看看你现在讲得怎么样。之后的 14 天计划会针对你最需要的那一项。 yes
diag.intro.step1 Read a short article 读一篇短文 yes
diag.intro.step1.sub About a minute — just understand it 约 1 分钟,读懂就行 yes
diag.intro.step2 Retell it in your own words 用自己的话讲一遍 yes
diag.intro.step2.sub Up to 90 seconds 最长 90 秒 yes
diag.intro.step3 Get your 4 scores 看你的 4 项表达分 yes
diag.intro.step3.sub Plus the one thing to fix first 以及最该先改的一件事 yes
diag.intro.honesty This is a real assessment, not a demo. Recording starts only when you tap. The diagnostic is free. 这是真实评估,不是演示。录音只在你点击后开始,诊断免费。 yes
diag.intro.lang Practice language: %@ 练习语言:%@ yes
diag.intro.cta Start the diagnostic 开始诊断 yes
diag.intro.privacy_link How we handle your recording 我们如何处理你的录音 yes
diag.read.nav Diagnostic · Read 诊断 · 阅读 yes
diag.record.nav Diagnostic · Retell 诊断 · 复述 yes
diag.processing.nav Diagnostic · Results 诊断 · 生成结果 yes
diag.record.cta Done — see my results 完成,查看诊断结果 yes
diag.result.nav Your diagnostic 你的诊断结果 yes
diag.result.ring_label Score 诊断 yes
diag.result.cta See my 14-day plan 看看我的 14 天计划 yes
mic_sheet.title Next, we’ll need your microphone 接下来需要用麦克风 yes
mic_sheet.point1 Recording starts only when you tap, and an indicator stays on screen the whole time. 只在你点按录音后才开始,录音时屏幕上一直有提示。 yes
mic_sheet.point2 Third-party AI services transcribe and assess it. It is <b>never used to train models</b>. 录音由第三方 AI 服务转写和评估,<b>不会用于训练模型</b>。 yes
mic_sheet.point3 Kept for <b>%lld days</b> by default. Change it to 7 days or 1 year, or delete it any time. 默认保存 <b>%lld 天</b>,可在设置里改为 7 天或 1 年,或随时删除。 yes
mic_sheet.skip Not now 现在不用 yes

Plan

Plan day titles come from Plan.days[].title (server, localized).

Key en zh-Hans Used in screens
plan.eyebrow Made for you 为你定制 yes
plan.title Your 14-day plan 你的 14 天计划 yes
plan.focus_label Focus 重点练习 yes
plan.baseline Starting at %@ 起点 %@ 分 yes
plan.reason Your diagnostic shows %@ needs the most work: %@. 诊断里,你的「%@」最需要加强:%@。 yes
plan.weekly_days %lld days a week 每周 %lld 天 yes
plan.reminder Reminder at %@ 每天 %@ 提醒 yes
plan.week Week %lld 第 %lld 周 yes
plan.review Review 复盘 yes
plan.retest Re-test 复测 yes
plan.note The plan only changes each day’s focus — the routine stays the same. Missed a day? Just carry on. 计划只调整每天的练习重点,训练流程不变。漏掉的日子不用补,接着练就好。 yes

Paywall

Prices, periods and trial length always come from StoreKit; never write them into copy.

Key en zh-Hans Used in screens
paywall.restore Restore 恢复购买 yes
paywall.eyebrow Your diagnostic 你的诊断 yes
paywall.weakest Work on first: %@ 最需要练:%@ yes
paywall.title 14 days to master<br>“%@” 14 天,练好<br>「%@」 yes
paywall.k.label How many days a week? 每周练几天? yes
paywall.k.value %lld days %lld 天 yes
paywall.k.a11y_value %lld days a week 每周 %lld 天 yes
paywall.projection People who started at %@ and practised %@ days a week averaged %@ after 14 days (%lld people). 起点 %@的用户,每周练 %@ 天,14 天后平均达到 %@(样本 %lld 人)。 yes
paywall.projection.bucket.range %lld–%lld %lld–%lld 分 yes
paywall.projection.bucket.below50 below 50 50 分以下 yes
paywall.projection.bucket.80plus 80 or more 80 分以上 yes
paywall.projection.score %lld %lld 分 yes
paywall.projection.weakest_delta %@ rose by %lld on average. 其中「%@」平均提升 %lld 分。 yes
paywall.projection.insufficient Not enough people with a similar start practised %lld days a week (%lld so far), so we won’t predict. 起点相近、每周练 %lld 天的用户还不够多(%lld 人),暂不给出预测。 yes
paywall.projection.insufficient.note We don’t show numbers below %lld people. 样本少于 %lld 人时我们不展示数字。 yes
paywall.projection.you_now You now 你现在 yes
paywall.projection.day14 Day-14 average 14 天后平均 yes
paywall.projection.disclaimer Based on people with a similar start. Your results will differ. Not a promise. 来自起点相近的用户,个人结果会有差异,不是承诺。 yes
paywall.calendar.title Your 14 days 你的 14 天 yes
paywall.calendar.rest Rest 休息 yes
paywall.calendar.retest Re-test 复测 yes
paywall.calendar.dow M,T,W,T,F,S,S 一,二,三,四,五,六,日 yes
paywall.calendar.legend.today Today 今天 yes
paywall.calendar.legend.practice Practice day 练习日 yes
paywall.calendar.legend.streak Streak milestone 连续天数里程碑 yes
paywall.calendar.legend.retest Re-test 复测 yes
paywall.calendar.streak3 3-day streak 连续 3 天 yes
paywall.calendar.streak7 7-day streak 连续 7 天 yes
paywall.calendar.billing Billing starts 开始计费 yes
paywall.calendar.day.a11y %@, day %lld, %@ %@,第 %lld 天,%@ yes
paywall.calendar.practice.a11y practice: %@ 练习:%@ yes
paywall.timeline.trial_start Free trial starts — day 1 begins now 免费试用开始,马上开练第 1 天 yes
paywall.timeline.trial_reminder We’ll remind you a day before it ends (if notifications are on) 提醒你试用还剩 1 天(如已开启通知) yes
paywall.timeline.billing.trial Your %@ plan starts at %@ — cancel before then and pay nothing 开始按%@订阅 %@,此前取消不收费 yes
paywall.timeline.billing.now %@ plan at %@ — cancel any time 按%@订阅 %@,随时可取消 yes
paywall.timeline.billing.loading Billing starts (loading price) 开始计费(价格加载中) yes
paywall.timeline.retest Day-14 re-test against your starting %lld 第 14 天复测,和起点 %lld 分对比 yes
paywall.period.year annual 年 yes
paywall.period.month monthly 月 yes
paywall.per.year year 年 yes
paywall.per.month month 月 yes
paywall.plans.title Choose a plan 选择方案 yes
paywall.plan.annual Annual 年度 yes
paywall.plan.annual.trial %lld-day free trial · about %@/month 先免费试用 %lld 天 · 约 %@ / 月 yes
paywall.plan.annual.no_trial Billed yearly · about %@/month 按年付费 · 约 %@ / 月 yes
paywall.plan.monthly Monthly 月度 yes
paywall.plan.monthly.sub Billed monthly · cancel any time 按月付费,随时取消 yes
paywall.plan.suffix.year /yr /年 yes
paywall.plan.suffix.month /mo /月 yes
paywall.fineprint Subscriptions renew automatically. Cancel any time in iPhone Settings › Apple Account › Subscriptions; cancel during the trial and you won’t be charged. App Store pricing applies. 订阅自动续期。可随时在 iPhone「设置 › Apple 账户 › 订阅」中取消;试用期内取消不收费。价格以 App Store 显示为准。 yes
paywall.terms Terms 服务条款 yes
paywall.privacy Privacy 隐私政策 yes
paywall.plans.a11y Subscription plans 订阅方案 yes
paywall.cta.trial Start %lld-day free trial 免费试用 %lld 天 yes
paywall.cta.trial.caption Then %2$@ from %1$@ per %3$@. Cancel before then and pay nothing. %@起 %@/%@,此前随时取消不收费 yes
paywall.cta.subscribe Subscribe for %@/%@ 订阅 %@/%@ yes
paywall.cta.subscribe.caption Renews automatically · cancel any time in the App Store 自动续期,随时可在 App Store 取消 yes
paywall.cta.loading Loading prices… 正在获取价格… yes
paywall.cta.loading.caption Prices come from the App Store 价格来自 App Store yes
paywall.cta.purchasing Connecting to the App Store… 正在连接 App Store… yes
paywall.cta.purchasing.caption Confirm in the system sheet 请在系统弹窗中确认 yes
paywall.failed.title Purchase didn’t go through. You weren’t charged. 购买没有完成,没有扣费。 yes
paywall.failed.body We couldn’t reach the App Store. Please try again. App Store 暂时无法连接,请稍后重试。 yes
paywall.failed.caption Not charged · try another plan or try later 未扣费 · 可以换个方案或稍后再试 yes
paywall.restored.toast Subscription restored 已恢复你的订阅 yes
paywall.restored.cta Start today’s session 开始今天的训练 yes
paywall.restored.caption Restored: %@ 已恢复:%@ yes
paywall.expired.eyebrow Welcome back 欢迎回来 yes
paywall.expired.title %@, your trial<br>ended on %@ %@,你的试用<br>在 %@ 结束了 yes
paywall.expired.records Everything you’ve done is still here 你的记录都还在 yes
paywall.expired.stat.sessions Sessions 完成训练 yes
paywall.expired.stat.ability Ability 能力分 yes
paywall.expired.stat.focus Focus 当前重点 yes
paywall.expired.note Subscribe to pick up where you left off — your plan and history are kept. 订阅后从上次停下的地方继续,计划和历史不会丢。 yes
paywall.expired.question What if you keep going? 继续练下去,会怎样? yes
paywall.source.pilot Pilot data 试点数据 yes

Home

greeting, local_date_label, steps[].label, quick-pick titles and topic names come from the server (Accept-Language).

Key en zh-Hans Used in screens
home.greeting.format %@, %@ %@,%@ yes
home.streak.a11y.done %lld-day streak, done today 连续 %lld 天,今天已完成 yes
home.streak.a11y.todo %lld-day streak, not yet today 连续 %lld 天,今天还没练 yes
home.level.a11y Level %lld 等级 %lld yes
home.level.xp %lld / %lld XP %lld / %lld XP yes
home.level.progress.a11y Level progress 本级经验 yes
home.quest.label Today’s session 今日任务 yes
home.quest.plan_day 14-day plan · Day %lld 14 天计划 · 第 %lld 天 yes
home.quest.focus.last Last advice: %@ 上次建议:%@ yes
home.quest.focus.diagnostic From your diagnostic: %@ 诊断建议:%@ yes
home.quest.path.a11y Progress: %lld of 3 done 训练进度:完成 %lld / 3 yes
home.quest.cta.start Start today’s session 开始今日训练 yes
home.quest.cta.resume.compress Continue: second take 继续:压缩重讲 yes
home.quest.cta.resume.read Continue: read 继续:阅读 runtime / notifications
home.quest.cta.resume.retell Continue: retell 继续:复述 runtime / notifications
home.quest.cta.resume.processing Check feedback progress 查看反馈进度 runtime / notifications
home.freeze_used A streak freeze covered yesterday, so your streak is safe. 昨天用掉了 1 次连续保护,连续天数保住了。 runtime / notifications
home.quest.done.tag Done 已完成 yes
home.quest.done.xp %@ XP earned %@ XP 已到账 yes
home.quest.done.more Practise another (free practice) 再练一篇(自由练习) yes
home.quest.empty.title Today’s article isn’t ready yet 今天的文章还在准备中 yes
home.quest.empty.body Pick one from the library — rewards and your streak count as usual. 先去练习库挑一篇,奖励和连续天数照常计算。 yes
home.quest.empty.cta Open the library 去练习库 yes
home.risk.title Not yet today — 10 minutes is enough 今天还没练,10 分钟就够 yes
home.risk.body.freeze Finish now for day %lld. If today doesn’t work out, you still have %lld streak freeze. 练完就是连续第 %lld 天。今天来不及也没关系,你还有 %lld 次连续保护。 yes
home.offline Offline · showing data from %@ 离线 · 显示 %@ 缓存的数据 yes
home.picks.title Practise by topic 按兴趣练习 yes
home.picks.topics.a11y Topics 话题 yes
home.picks.empty.title %@ articles are on the way %@话题的文章还在编写中 yes
home.picks.empty.body Try another topic for now — new ones will show up here. 先看看其他话题,上新后会出现在这里。 yes
home.picks.empty.cta Browse all articles 看看全部文章 yes
home.error.title Home didn’t load 首页暂时没加载出来 yes
home.error.body Our server is busy. Your progress is safe — try again in a moment. 服务器有点忙,你的记录都在。稍后重试一下。 yes
home.loading.a11y Loading home 正在加载首页 yes

Library

Key en zh-Hans Used in screens
library.title Library 练习库 yes
library.subtitle Pick one and make it clear today. 选一篇,今天就讲清楚它。 yes
library.filter.language.a11y Filter by language 按语言筛选 yes
library.filter.topic.a11y Filter by topic 按话题筛选 yes
library.filter.status.a11y Status 状态 yes
library.filter.status.unseen New 未读 yes
library.filter.status.completed Practised 已练 yes
library.row.status.unseen New 未读 yes
library.row.status.in_progress In progress 进行中 yes
library.row.status.best Best %lld 最好 %lld yes
library.row.locked Unlocks at ability 80 能力分达到 80 解锁 yes
library.footer.tier3 Level 3 articles unlock at an ability score of 80 难度 3 的文章在能力分达到 80 后解锁 yes
library.empty.title No %@ articles yet %@话题还没有文章 yes
library.empty.body Our editors are on it. Try another topic? 编辑部正在写。先试试其他话题? yes
library.empty.cta Clear filter 清除筛选 yes
library.error.title Articles didn’t load 文章列表没加载出来 yes
library.error.body Check your connection or try again. Today’s article is still available on Home. 检查一下网络,或稍后重试。已下载的今日文章仍可在首页打开。 yes

Read

Key en zh-Hans Used in screens
read.nav Read 阅读 yes
read.tag.daily Today 今日任务 yes
read.tag.free Free practice 自由练习 yes
read.tag.diagnostic Diagnostic 诊断 yes
read.hint.title As you read 阅读提示 yes
read.source Source: %@ · v%lld 来源:%@ · 第 %lld 版 yes
read.cta I’m ready — start retelling 我读好了,开始复述 yes
read.cta.caption The text will be hidden. Just say what you understood. 下一步会隐藏原文,凭理解讲就好 yes
read.load_error The article didn’t load. Try again or pick another one. 文章没加载出来,换一篇或稍后重试。 runtime / notifications

Record

Round 1, round 2 and the diagnostic share these.

Key en zh-Hans Used in screens
record.nav.round1 Retell 复述 yes
record.nav.round2 Second take 压缩重讲 yes
record.chip.round1 First take 第一次 yes
record.chip.round2 Second take 第二次 yes
record.title.round1 Now, say it in your own words. 现在,用自己的话讲一遍。 yes
record.sub.round1 No need to quote it. Explain it to a colleague who hasn’t read it. 不需要复述原句。像讲给一位没看过文章的同事听。 yes
record.focus.round1 Today’s focus: %@ 今天的重点:%@ yes
record.title.round2 This time, just the core. 这次,只讲主干。 yes
record.sub.round2 Last take: %@. Keep the key points, drop the repeats — shorter isn’t the goal. 上一遍用了 %@。保留要点,删掉重复,不必刻意求短。 yes
record.advice.label Your advice from last take 上一遍的建议 yes
record.button.start Start recording 开始录音 yes
record.button.pause Pause recording 暂停录音 yes
record.button.resume Resume recording 继续录音 yes
record.button.stopped Recording ended 录音已结束 yes
record.button.denied Microphone unavailable 麦克风不可用 yes
record.indicator.recording Recording 录音中 yes
record.indicator.paused Paused · paused time doesn’t count 已暂停 · 暂停时间不计入 yes
record.hint.idle Tap the mic to start. Nothing is recorded until you do. 轻触麦克风开始,录音只在你点击后进行 yes
record.hint.need_more %lld more seconds before you can submit 还差 %lld 秒可以提交 runtime / notifications
record.hint.ready Tap below when you’re done. Stops automatically at %@. 讲完了就点下方按钮;%@ 时会自动停止 yes
record.hint.paused Tap to continue, or submit now 轻触继续;你也可以直接提交 yes
record.rerecord Start over 重录 yes
record.cta.round1 Done — get feedback 完成,查看反馈 yes
record.cta.round2 Finish session 完成训练 yes
record.cta.caption At least 20 s · up to %@ 至少 20 秒 · 最长 %@ yes
record.autostop.title You reached %@ — recording stopped 已到 %@ 上限,录音已自动停止 yes
record.autostop.body Everything is saved. Submit it for feedback, or start over. 这段录音已完整保存。确认后开始生成反馈;也可以重录一遍。 yes
record.autostop.effective Recorded time %@ 有效时长 %@ yes
record.autostop.submit Submit this recording 提交这段录音 yes
record.short.title That’s under 20 seconds 这段还不到 20 秒 yes
record.short.body You recorded %@. We need at least %@ for reliable feedback. Keep going — the timer picks up where it stopped. 有效录音 %@,至少需要 %@ 才能给出可靠反馈。接着讲完就好,不会重新计时。 yes
record.short.continue Keep going 接着讲 yes
record.denied.title Microphone access is off 麦克风权限已关闭 yes
record.denied.body Retelling needs the microphone. Turn it on and come back — your article and progress are kept. 复述需要录音。打开权限后回到这里,就能直接开始;文章和进度都保留着。 yes
record.denied.step1 Open Settings 打开「设置」 yes
record.denied.step2 Find Shuke 找到「述刻」 yes
record.denied.step3 Turn on Microphone 打开「麦克风」 yes
record.denied.cta Open Settings 打开设置 yes
record.denied.back Back to the article 返回阅读 yes
record.interrupted.title A call paused your recording 录音因来电暂停了 yes
record.interrupted.body %@ is saved on this phone. Continue, or start over? 已保存 %@ 的录音在本机。想接着讲,还是重新来一遍? yes
record.leave.title Leave this take? 要离开吗? yes
record.leave.body Recording paused. %@ is saved on this phone — continue or redo it when you’re back. 录音已暂停。%@ 的录音会保存在本机,回来可以继续或重录。 yes
record.leave.stay Keep recording 继续录音 yes
record.leave.save Save and leave 保存并离开 yes
record.leave.discard Discard and leave 丢弃录音并离开 yes

Processing

Unreliable reasons map from attempt.unreliable_reason; the floor (40 chars / 30 words) is per language (D2).

Key en zh-Hans Used in screens
processing.nav.round1 Feedback AI 反馈 yes
processing.stage.upload Upload 上传录音 yes
processing.stage.transcribe Transcribe 转写语音 yes
processing.stage.assess Assess 生成反馈 yes
processing.title.upload Uploading your recording 正在上传录音 yes
processing.title.transcribe Transcribing your retelling 正在转写你的复述 yes
processing.title.assess Preparing your feedback 正在生成反馈 yes
processing.sub.upload Uploading %@ of audio 正在上传 %@ 的录音 yes
processing.sub.transcribe Listening to what you said 正在听你说了什么 yes
processing.sub.assess Checking against the article’s key points 对照文章要点逐项评估 yes
processing.done.upload Uploaded 已上传 yes
processing.done.transcribe Transcribed %@ 已转写 %@ yes
processing.eta About %lld s left 大约还需 %lld 秒 yes
processing.tip.title While you wait 等的时候想一想 yes
processing.tip.body If you had one sentence, how would you sum up this article? 如果只能说一句话,你会怎么概括这篇文章? yes
processing.leave_ok You can leave — results will wait for you on Home 可以离开这个页面,结果会保存在首页 yes
processing.slow.title This is taking longer than usual 比平时慢了一些 yes
processing.slow.waited Waiting for %lld min 已等待 %lld 分钟 yes
processing.slow.body Your results will be saved automatically. Feel free to leave — you’ll find them under Continue on Home. 结果生成后会自动保存。你可以先去做别的,回到首页点「继续训练」就能看到。 yes
processing.slow.later Check later 稍后查看 yes
processing.slow.wait Keep waiting 继续等待 yes
processing.offline.title You’re offline 网络断开了 yes
processing.offline.sub We’ll continue when you’re back online 联网后会自动继续 yes
processing.offline.waiting Waiting for network · saved on this phone 等待网络 · 已保存在本机 yes
processing.offline.body Your recording is safe on this phone. It uploads automatically when you’re back online — no need to record again. 录音已安全保存在本机,不会丢失。恢复网络后会自动上传,无需重录。 yes
processing.failed.title Something went wrong with your feedback 生成反馈时出了点问题 yes
processing.failed.body %@ Your recording is already uploaded, so retrying won’t need a new one. %@你的录音已经上传,重试不需要重新录。 yes
processing.failed.stage Assessment service unavailable 评估服务暂时不可用 yes
processing.failed.code Error %@ · stage %@ 错误代码 %@ · 阶段 %@ yes
processing.failed.rerecord Record again 重新录一遍 yes
processing.unreliable.title We couldn’t assess this reliably 这段录音没法可靠评估 yes
processing.unreliable.sub No score, and no effect on XP or your streak. Just record it again. 不计分,也不影响 XP 和连续天数。重录一遍就好。 yes
processing.unreliable.reason_label Why 原因 yes
processing.unreliable.stage Not enough speech 有效内容不足 yes
processing.unreliable.tip Tip: hold the phone about 20 cm away, like on a call. 小提示:手机离嘴 20 厘米左右,像打电话一样说话。 yes
processing.unreliable.play.a11y Play this recording 播放这段录音 yes
unreliable.too_short.title Too little speech to assess 识别到的有效内容太少 yes
unreliable.too_short.body We only caught %@ (at least %@ needed). You may have been far from the mic, or paused for a long time. 这次只识别出 %@(至少需要 %@)。可能是离麦克风太远,或者中间停顿太久。 yes
unreliable.no_speech.title We didn’t hear any speech 没有检测到说话声 runtime / notifications
unreliable.no_speech.body The recording is mostly silence or background noise. Find a quiet spot and try again closer to the phone. 录音里大部分是安静或环境声。换个安静的地方,靠近手机再试一次。 runtime / notifications
unreliable.language_mismatch.title Wrong language for this article 语言和文章不一致 runtime / notifications
unreliable.language_mismatch.body This is a %@ article, so please retell it in %@. To switch languages, pick an article in another language from the library. 这篇是%@文章,请用%@复述。想换语言,可以在练习库里选另一种语言的文章。 runtime / notifications
unreliable.low_audio_quality.title The audio isn’t clear enough 录音不够清楚 runtime / notifications
unreliable.low_audio_quality.body Background noise or clipping made the transcript unreliable, so we didn’t score it. 背景声音太大或有爆音,转写可能不准,所以这次不打分。 runtime / notifications
unreliable.transcript_incomplete.title Transcript incomplete 转写不完整 runtime / notifications
unreliable.transcript_incomplete.body Part of the recording couldn’t be transcribed. Record again and we’ll reassess. 有一部分录音没能转写出来。重录一遍,我们会重新评估。 runtime / notifications

Feedback

Summary, notes, evidence, one-action and exemplar text are content in the ARTICLE's language.

Key en zh-Hans Used in screens
feedback.nav Feedback AI 反馈 yes
feedback.ring_label Score 本次 yes
feedback.achieved <b>You did it ✓ Last advice:</b> %@ <b>做到了 ✓ 上次的建议:</b>%@ yes
feedback.not_achieved Last advice “%@” didn’t land this time — try it again below. 上次的建议「%@」这次还没做到,下面再试一次。 yes
feedback.low_confidence <b>We’re less sure about this one.</b> %@ <b>这次评估不太确定。</b>%@ yes
feedback.dims.title Four dimensions 四个维度 yes
feedback.one_action.basis Based on 依据 yes
feedback.one_action.listen Hear a reference version 听参考表达 yes
feedback.evidence.title Evidence 依据 yes
feedback.evidence.hint Tap to hear your own words 轻点回放你的原话 yes
feedback.evidence.pause.a11y Pause 暂停 yes
feedback.evidence.expired This audio was deleted under your retention setting. The text is still here. 录音已按保留设置删除,文字依据仍可查看。 runtime / notifications
feedback.keypoints.title Key points 文章要点 yes
feedback.keypoints.count Covered %lld / %lld 讲到 %lld / %lld yes
feedback.exemplar.title Model answer 示范表达 yes
feedback.exemplar.tag Reference 参考表达 yes
feedback.exemplar.intro One way to say it using “%@”. Use your own words — don’t memorise it. 按“%@”重新组织的一种讲法。用你自己的话,不用背。 yes
feedback.exemplar.pending Generating a reference version — usually about 10 seconds 正在生成参考表达,通常需要 10 秒左右 yes
feedback.exemplar.failed The audio didn’t generate. Here’s the text for now. 语音暂时没生成出来,文字版可以先看。 yes
feedback.exemplar.play.a11y Play reference version 播放参考表达 yes
feedback.helpful.title Was this feedback helpful? 这条反馈有帮助吗? yes
feedback.helpful.yes.a11y Helpful 有帮助 yes
feedback.helpful.no.a11y Not helpful 没帮助 yes
feedback.helpful.reason.title What was off? 哪里不对? runtime / notifications
feedback.helpful.reason.inaccurate_transcript The transcript was wrong 转写不准 runtime / notifications
feedback.helpful.reason.unfair_score The score felt unfair 分数不公平 runtime / notifications
feedback.helpful.reason.unclear_advice The advice was unclear 建议看不懂 runtime / notifications
feedback.helpful.reason.other Something else 其他 runtime / notifications
feedback.helpful.thanks Thanks — this helps us improve the assessment. 谢谢,我们会用它改进评估。 runtime / notifications
feedback.meta Rubric %@ · %@ · confidence %@ 评估 %@ · %@ · 置信度%@ yes
feedback.confidence.high high 高 yes
feedback.confidence.medium medium 中 runtime / notifications
feedback.confidence.low low 低 yes
feedback.cta Try again with this advice 带着建议重讲一次 yes

Complete

Settlement.headline/subline are server strings per verdict; the keys below are fallbacks when null.

Key en zh-Hans Used in screens
complete.headline.improved You explained it more clearly today. 今天讲得更清楚了。 runtime / notifications
complete.headline.same You completed a full session today. 今天完成了一次完整训练。 runtime / notifications
complete.headline.shorter_but_lost_points Shorter, but a key point went missing. 更短了,但漏了一个要点。 runtime / notifications
complete.headline.regressed Session complete. The second take was weaker — that happens. 今天完成了一次完整训练。第二遍不如第一遍,很正常。 runtime / notifications
complete.eyebrow.daily Today’s session complete 今日任务完成 yes
complete.eyebrow.replayed Session record 训练记录 yes
complete.close.a11y Close and go home 关闭,回到首页 yes
complete.ba.first First take 第一次 yes
complete.ba.second Second take 压缩重讲 yes
complete.ba.a11y First take %lld, second take %lld 第一次 %lld 分,压缩重讲 %lld 分 yes
complete.ba.delta This session %@ 本次 %@ 分 yes
complete.lost_points <b>Missed:</b> %@ <b>漏掉的要点:</b>%@ yes
complete.stat.xp XP XP yes
complete.stat.xp.replayed XP earned 已获得 XP yes
complete.stat.streak Day streak 连续天数 yes
complete.stat.ability Ability 能力分 yes
complete.stat.baseline Building baseline 建立基线中 yes
complete.xp.level Lv.%lld %@ Lv.%lld %@ yes
complete.xp.round1 First take 首次复述 yes
complete.xp.round2 Second take 压缩重讲 yes
complete.xp.complete Session complete 完成训练 yes
complete.xp.improve Improvement bonus 进步奖励 yes
complete.xp.improve.missed Improvement bonus (when take two scores higher) 进步奖励(第二次得分更高时) yes
complete.xp.cap_hit You’ve hit today’s 165 XP cap. More tomorrow. 今天的 XP 已达上限(165),明天继续。 runtime / notifications
complete.xp.repeat You practised this article in the last 7 days, so XP is halved. 7 天内练过这篇,XP 减半。 runtime / notifications
complete.xp.weekly_quest Weekly quest reward 周任务奖励 runtime / notifications
complete.weekly.title This week 本周任务 yes
complete.next.label Next focus 下次的重点 yes
complete.cta.growth See progress 查看成长 yes
complete.cta.home Back to Home 回到首页 yes
complete.replayed.banner You completed this session on %@. Rewards were already added and won’t be counted twice. 这是你 %@ 完成的训练,奖励已经发放过,不会重复计算。 yes
levelup.eyebrow Level up 升级 yes
levelup.title You’re now a %@ 你现在是「%@」 yes
levelup.sub %1$lld XP total · %3$lld more to Lv.%2$lld 累计 %lld XP · 距离 Lv.%lld 还需 %lld XP yes
levelup.a11y Reached level %lld 升级到 %lld 级 yes
achievement.eyebrow Achievement unlocked 解锁成就 yes
achievement.plan_day 14-day plan · Day %lld done 14 天计划 · 第 %lld 天完成 yes

Growth

Key en zh-Hans Used in screens
growth.title Progress 我的成长 yes
growth.range.a11y Time range 时间范围 yes
growth.range.4w 4 wk 4 周 yes
growth.range.8w 8 wk 8 周 yes
growth.range.12w 12 wk 12 周 yes
growth.languages.a11y View by language 按语言查看 yes
growth.ability.label Ability score 当前能力分 yes
growth.ability.delta %@ in 30 days %@ 近 30 天 yes
growth.ability.meta From %lld sessions · %@ 基于 %lld 次训练 · %@ yes
growth.baseline.label Ability score 能力分 yes
growth.baseline.title Building your baseline %lld/3 建立基线中 %lld/3 yes
growth.chart.title Speaking ability 表达能力 yes
growth.chart.a11y Weekly ability trend 每周能力分趋势 yes
growth.trend.up Rising steadily 稳定上升 yes
growth.trend.flat Holding steady 基本持平 runtime / notifications
growth.trend.down Dipping 有所回落 runtime / notifications
growth.trend.insufficient Not enough data 样本不足 yes
growth.chart.note One point per week (weeks start Monday) · empty weeks stay empty — nothing is filled in 每周一个点(周一开始)· 没有训练的周留空,不补数据 yes
growth.chart.gap None 无训练 yes
growth.chart.point Week of %@: %lld · %lld sessions %@ 当周 %lld 分 · %lld 次训练 yes
growth.chart.gap.a11y No sessions the week of %@ %@ 当周没有训练 yes
growth.chart.pending %lld session this week — one more shows this week’s point 本周已练 %lld 次,再练 1 次显示趋势点 yes
growth.dims.title Breakdown 能力拆解 yes
growth.dims.note 30-day change 近 30 天变化 yes
growth.dims.pending Shown after 3 sessions 满 3 次后显示 yes
growth.skills.title Micro-skills 表达小技巧 yes
growth.skills.window Last 10 sessions 近 10 次训练 yes
growth.skill.counts Suggested %lld · done %lld 建议 %lld 次 · 做到 %lld 次 yes
growth.skill.never Not suggested yet 还没被建议过 yes
growth.skill.focus · current focus · 当前重点 yes
growth.achievements.title Achievements 成就 yes
growth.achievement.unlocked Unlocked 已解锁 yes
growth.recent.title Recent sessions 最近训练 yes
growth.empty.title Your progress chart appears after your first session 完成第一次训练后,这里会出现你的成长曲线 yes
growth.empty.body Every session records four scores. After three, you’ll see your ability score. 每次训练都会记录 4 个维度的分数。练满 3 次,就能看到你的能力分。 yes

Profile & settings

Key en zh-Hans Used in screens
profile.title Me 我的 yes
profile.settings.a11y Settings 设置 yes
profile.stat.streak Day streak 连续天数 yes
profile.stat.sessions Sessions 完成训练 yes
profile.stat.ability Ability 能力分 yes
profile.stat.ability.baseline Baseline 基线中 runtime / notifications
profile.siwa.title Keep your progress safe 保存你的训练记录 yes
profile.siwa.body Sign in with Apple so a new phone doesn’t mean starting over. 用 Apple 登录,换手机也不会丢。 yes
profile.siwa.cta Sign in 登录 yes
siwa.sheet.title Save your %lld sessions to your Apple Account 把 %lld 次训练保存到你的 Apple 账户 yes
siwa.sheet.body Right now your progress lives only on this device. Sign in to keep your streak, scores and history if you switch phones or reinstall. 现在你的记录只和这台设备绑定。登录后,换手机或重装也能找回连续天数、能力分和历史。 yes
siwa.sheet.point1 We never show your name or email 不会公开你的姓名或邮箱 yes
siwa.sheet.point2 You can choose Hide My Email 可以选择「隐藏邮件地址」 yes
siwa.sheet.point3 Your subscription comes with you 当前订阅会一起保留 yes
siwa.sheet.cta Sign in with Apple 通过 Apple 登录 yes
profile.weekly.title This week 本周任务 yes
profile.account.title Account 账户 yes
profile.sub.name Shuke Pro · Annual 述刻 Pro · 年度 yes
profile.sub.trial Free trial · annual plan starts %@ 试用中 · %@ 开始按年订阅 yes
profile.reminder Daily reminder 每日提醒 yes
profile.languages Languages 语言 yes
profile.privacy Privacy & AI 隐私与 AI 说明 yes
profile.settings Settings 设置 yes
weekly.nav This week 本周任务 yes
weekly.range %@ (Mon) – %@ (Sun) %@(周一)– %@(周日) yes
weekly.reset Resets Monday at 00:00. Recordings we couldn’t assess don’t count. 每周一 00:00 重置。无效录音(无法可靠评估)不计入。 yes
weekly.rule.retell_5 Each assessed first take counts once 每完成一次第一轮复述(有效评估)计 1 次 yes
weekly.rule.compress_3 Each assessed second take counts once 每完成一次压缩重讲(有效评估)计 1 次 yes
weekly.rule.follow_advice_3 Counts when your take follows the previous advice 评估判定你做到了上一次的建议,计 1 次 yes
weekly.note Quest rewards are added when a session is settled and count toward the 165 XP daily cap. 任务奖励在完成当次训练结算时一起发放,计入每日 165 XP 上限。 yes
settings.nav Settings 设置 yes
settings.section.language Language 语言 yes
settings.ui_language App language App 语言 yes
settings.ui_language.value Follow system · %@ 跟随系统 · %@ yes
settings.practice_languages Practice languages 练习语言 yes
settings.practice_languages.note Daily sessions and the library only suggest articles in these languages 每日任务和练习库只推荐这些语言的文章 yes
settings.language.primary Primary 主要 yes
settings.language.add_note The first one is your primary language, used for the diagnostic and daily sessions. 第一个是主要练习语言,诊断和每日任务优先用它。 yes
settings.section.reminders Reminders 提醒 yes
settings.reminders Daily reminder 每日提醒 yes
settings.reminder_time Reminder time 提醒时间 yes
settings.streak_alert 8 pm streak reminder 晚 8 点连续天数提醒 yes
settings.streak_alert.note Only if you haven’t practised; never more than one notification a day in total 当天还没练时提醒一次;和每日提醒合计每天最多 1 条 yes
settings.notifications_off Notifications are off in iOS Settings. Turn them on there. 通知已在系统中关闭。前往「设置」开启。 runtime / notifications
settings.section.data Recordings & data 录音与数据 yes
settings.retention Keep recordings for 录音保留时间 yes
settings.retention.note Audio is deleted automatically. Transcripts and feedback stay until you delete them. 到期自动删除音频;文字转写和反馈会保留,直到你删除 yes
settings.retention.7 7 days 7 天 yes
settings.retention.30 30 days 30 天 yes
settings.retention.365 1 year 1 年 yes
settings.delete_data Delete all training data 删除全部训练数据 yes
settings.section.account Account & subscription 账户与订阅 yes
settings.manage_sub Manage subscription 管理订阅 yes
settings.restore Restore purchases 恢复购买 yes
settings.delete_account Delete account 删除账户 yes
settings.version Shuke %@ (%@) · rubric %@ 述刻 %@ (%@) · 评估规则 %@ yes
delete_data.title Delete all training data? 删除全部训练数据? yes
delete_data.body This deletes the recordings, transcripts, feedback and rewards from <b>%lld sessions</b>. Your ability score, streak and level will be recalculated (reset to zero).<br><br>Your account and subscription stay. Backups are purged within 30 days. This can’t be undone. 将删除 <b>%lld 次训练</b>的录音、转写、反馈和奖励记录,能力分、连续天数和等级会重新计算(归零)。<br><br>账户和订阅会保留。备份会在 30 天内清除。此操作无法撤销。 yes
delete_data.confirm Delete training data 删除训练数据 yes
delete_account.title Delete your account? 删除账户? yes
delete_account.body Your account and all training data will be permanently deleted; backups are purged within 30 days.<br><br><b>Your subscription is not cancelled automatically.</b> Cancel it in the App Store first, or it will keep renewing. 账户和所有训练数据会被永久删除,备份在 30 天内清除。<br><br><b>订阅不会自动取消</b>:请先在 App Store 中取消,否则仍会续费。 yes
delete_account.manage Manage subscription first 先去管理订阅 yes
delete_account.confirm Delete permanently 永久删除账户 yes
privacy.nav Privacy & AI 隐私与 AI 说明 yes
privacy.title How your recordings are handled 你的录音怎么被处理 yes
privacy.intro Shuke has to hear you to give feedback. Here’s what we do — and don’t do. 述刻需要听你说话才能给反馈。下面是我们做什么、不做什么。 yes
privacy.mic.title Recording starts only when you tap 录音只在你点击后开始 yes
privacy.mic.body An indicator is always on screen while recording. Leaving the screen stops recording immediately. 录音时屏幕上始终有提示。离开页面会立即停止录音和计时。 yes
privacy.ai.title Processed by third-party AI 由第三方 AI 服务处理 yes
privacy.ai.body Recordings go to speech-to-text and AI assessment services (such as Whisper and Claude), along with the article’s language. Neither they nor we use your recordings to train models. 录音会发送给语音转写服务和 AI 评估服务(如 Whisper、Claude),并告知它们文章的语言。服务商不会用你的录音训练模型,我们也不会。 yes
privacy.retention.title Recordings are kept 30 days by default 录音默认保存 30 天 yes
privacy.retention.body Switch to 7 days or 1 year. Audio is deleted automatically; transcripts and feedback stay until you delete them. 可改为 7 天或 1 年。到期自动删除音频;文字转写和反馈会保留,直到你删除。 yes
privacy.delete.title Delete any time 你可以随时删除 yes
privacy.delete.body Delete one session, all training data or your whole account. Recordings, transcripts, feedback and rewards go with it; backups are purged within 30 days. 可删除单次训练、全部训练数据或整个账户。删除会连带录音、转写、反馈和奖励记录,备份在 30 天内清除。 yes
privacy.analytics.title Analytics never include content 分析数据不含内容 yes
privacy.analytics.body We count usage (like how many sessions you finish). We never send recordings, articles or transcripts to analytics. 我们只统计使用行为(比如完成了几次训练),不会上传你的录音、文章或转写内容到分析平台。 yes
privacy.age.title Age 适用年龄 yes
privacy.age.body Shuke is for people aged 13 and over. 述刻面向 13 岁及以上用户。 yes
privacy.current Current retention: <b>%@</b> · rubric %@ 当前录音保留:<b>%@</b> · 评估规则 %@ yes
privacy.full_policy Full privacy policy 完整隐私政策 yes

Global sheets, toasts, fatal states

Key en zh-Hans Used in screens
resume.eyebrow You have an unfinished session 上次的训练还没完成 yes
resume.stage Stopped at: %@ (step %lld) · %@ 停在:%@(第 %lld 步)· %@ yes
resume.round1 First take 第一次复述 yes
resume.cta Continue 继续训练 yes
resume.abandon Abandon this session 放弃这次训练 yes
resume.abandon.note No penalty, and no rewards for this session. 放弃不扣分,也不会发放这次的奖励。 yes
resume.a11y Continue your last session 继续上次的训练 yes
toast.offline Offline · recordings are saved on this phone 网络已断开 · 录音会先存在本机 yes
toast.online Back online — uploading 网络已恢复,正在上传 runtime / notifications
error.entitlement_required Your subscription has ended. Renew to keep training. 订阅已到期,续订后继续训练。 runtime / notifications
error.rate_limited Too many requests. Wait a moment and try again. 操作太频繁了,稍等一下再试。 runtime / notifications
error.generic.title Something went wrong 出了点问题 yes
error.generic.body That step didn’t finish, but your data is safe. Try again or head back home. 这一步没有完成,你的数据没有丢失。可以重试,或者先回到首页。 yes
error.generic.home Go to Home 回到首页 yes
error.generic.request Error %@ · request %@ 错误代码 %@ · 请求 %@ yes
force_update.title Please update Shuke 请更新述刻 yes
force_update.body Version %@ is no longer supported. Update to %@ or later to continue — your progress is safe. 当前版本 %@ 已不再支持,更新到 %@ 或更高版本后继续。你的训练记录都在,不会丢失。 yes
force_update.cta Update in the App Store 前往 App Store 更新 yes

Shared states

Patterns from states.md that are not drawn as separate mockups.

Key en zh-Hans Used in screens
state.inline_error Couldn’t load 没加载出来 runtime / notifications
state.offline.diagnostic The diagnostic needs a connection. Connect to start. 诊断需要联网,连上网络后就能开始。 runtime / notifications
state.offline.subscribe Connect to the internet to subscribe 连上网络后才能订阅 runtime / notifications
state.offline.settle Done — rewards will be added when you’re back online. 已完成,联网后会自动结算奖励。 runtime / notifications
state.offline.needs_network Needs a connection 需要联网 runtime / notifications
state.offline.delete Connect to the internet to delete 连上网络后才能删除 runtime / notifications
state.offline.language Connect to the internet to change languages 连上网络后才能切换语言 runtime / notifications
state.appstore_unavailable The App Store isn’t available right now 暂时无法连接 App Store runtime / notifications
state.delete_failed Couldn’t delete. Nothing was changed. 没有删除成功,数据没有变化。 runtime / notifications
state.plan_pending Building your plan… 正在生成你的计划… runtime / notifications
state.recording_unrecoverable That recording couldn’t be recovered. Please record again. 这段录音没能恢复,需要重录一遍。 runtime / notifications
state.locked_toast This article isn’t unlocked yet 这篇还没解锁 runtime / notifications
delete_data.done Training data deleted 训练数据已删除 runtime / notifications
delete_session.title Delete this session? 删除这次训练? runtime / notifications
delete_session.body Its recording, transcript and feedback will be deleted and your stats recalculated. 录音、转写和反馈会一起删除,统计会重新计算。 runtime / notifications
delete_session.confirm Delete 删除 runtime / notifications
settings.language.saved Language updated 语言已更新 runtime / notifications

Notifications

Max one notification per local day in total (engagement.md).

Key en zh-Hans Used in screens
notif.daily.title Shuke 述刻 yes
notif.daily.body Today’s 10 minutes: %@ 今天的 10 分钟:%@ yes
notif.daily.body.plan Plan day %lld · today: %@ 计划第 %lld 天 · 今天练「%@」 runtime / notifications
notif.daily.body.focus Try “%@” today: %@ 今天试试「%@」:%@ runtime / notifications
notif.risk.body %lld days in a row. There’s still time today — 10 minutes is enough. 连续 %lld 天了。今天还有时间,10 分钟就够。 runtime / notifications
notif.risk.body.freeze If today doesn’t work out, you still have %lld streak freeze. 今天来不及也没关系,你还有 %lld 次连续保护。 runtime / notifications
notif.result_ready.body Your feedback is ready: %@ 反馈好了:%@ runtime / notifications
notif.trial_ending.body Your trial ends tomorrow. Cancel in the App Store today if you don’t want to continue — you won’t be charged. 试用明天结束。不想继续的话,今天在 App Store 取消就不会扣费。 runtime / notifications

605 keys. Keys marked runtime / notifications are not visible in the static mockups (notifications, alternate reasons, fallbacks) but ship in v1.