docs(plan): 海报语言切换设计方案(弹层内中/English 切换)
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
# 海报语言切换(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)。
|
||||
Reference in New Issue
Block a user