Files
photo-live/docs/plans/2026-09-29-海报语言切换-设计方案.md
2026-09-29 10:57:17 +08:00

2.6 KiB
Raw Permalink Blame History

海报语言切换(App 分享二维码海报中/英文版)

日期:2026-09-29 | 状态:设计已确认(用户 2026-09-29 拍板「弹层内切换」)

背景与问题

App 分享页的二维码海报文案跟随 App 语言(share_qr_dialog.dart): 固定文案走 arb(中英双份齐全)、相册标题/场地/地址走多语言回退链、二维码链接自动带 ?lang=。但 App 语言默认中文,想出英文海报必须把整个 App 切成英文再切回——实际没人会这么 用,体感即「只有中文海报」。

方案(用户选定:弹层内切换)

海报弹层顶部加「中文 / English」分段切换;只影响海报预览与下载图,不改 App 语言设置。

  1. 交互:_PosterSheet 标题行下方加 SegmentTabs(复用 UI-06 组件,light 风格), 两档「中文」「English」(语言名以自身语言书写,与 language_sheet 同约定)。 默认选中 = App 语言前缀(zh→中文,其余→English)。
  2. 固定文案:扫码提示等按海报语言取 lookupAppLocalizations(Locale('zh'/'en')) (生成代码已提供 lookup,arb 中英双全)——不新增硬编码,与「查重弹窗 l10n」遗留 整改方向一致。
  3. 相册字段:标题/场地/地址复用现有回退链按海报语言取 (albumDisplayTitle/Venue/Translations(album, posterLang))。相册未填英文翻译时 回退相册默认语言——数据问题由后台补翻译,海报不做假翻译。
  4. 二维码:?lang= 跟海报语言(中文海报=zh-CN,英文海报=en),扫码打开的观众页 语言与海报一致。弹层外的分享卡片/复制链接仍跟 App 语言。
  5. 不改动:海报日期为纯数字(语言无关)、布局/配色、下载逻辑(RepaintBoundary 3x PNG → gal)、弹层 chrome 文案(标题/下载按钮/成功提示仍跟 App 语言)。

错误处理

无新增错误路径(banner 拉取失败回退封面的既有逻辑不变)。

测试

扩展 apps/mobile/test/pages/share_qr_page_test.dart:

  • 弹层内有中文/English 切换,默认跟 App 语言;
  • 切 English:扫码提示变 "Scan to view photos"、二维码 data 含 lang=en、 标题取相册英文翻译;
  • 切回中文反向验证(提示中文、lang=zh-CN、标题取中文翻译)。

影响面

改动集中在 apps/mobile/lib/pages/share_qr_dialog.dart + 上述测试文件;不涉及其它页面、 不碰 apps/viewer(并行会话在改 AdCarousel)。