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

47 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 海报语言切换(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)。