# 海报语言切换(App 分享二维码海报中/英文版) 日期:2026-09-29 | 状态:设计已确认(用户 2026-09-29 拍板「弹层内切换」) ## 背景与问题 App 分享页的二维码海报文案跟随 **App 语言**([share_qr_dialog.dart](../../apps/mobile/lib/pages/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)。