9c3915b387
V01+V02 (Task 2 of the UI-02 viewer redesign plan): - viewer-tokens.css: UI-02 §3.1 design tokens scoped to .viewer-shell (never :root), so embed routes consume none of them - App.vue: normal routes get a sticky white top bar (PhotoLive brand + compact locale switcher + lightweight "..." menu holding the reduce-motion toggle); global 16px content padding removed so banner and photos run edge-to-edge; embed shell branch untouched - LocaleSwitcher: compact "EN/中文 + caret" trigger with a proper menu (current language checked), 44px touch target, Escape/outside close - AlbumHeader (new): banner (2.4:1 mobile, 320px desktop cap, object-fit contain, collapses on missing/failed), 2-line expandable title + share button (clipboard copy with selectable-text fallback), 3-line expandable pre-line description, meta row (Intl-formatted view count with em-dash fallback for unknown, album-timezone dates with full range on title, venue), Latest/Popular 44px tabs and category pills from the API with horizontal scroll + overflow fade - ActivityPage: delegates the info area to AlbumHeader; sequence reset/sort-lock/category-by-id semantics unchanged; desktop content capped at 1120px - i18n: viewer.* strings (brand/share/views/readMore/latest/popular/ allCategories/noPhotos/newPhotos/reduceMotion/settings) in zh-CN+en - tests: viewer-shell (token source + normal/embed isolation) and album-header (8 cases) specs; activity/i18n specs updated for the menu switcher and the em-dash unknown view count; e2e selectors refreshed Co-Authored-By: Claude Code <noreply@anthropic.com>
102 lines
3.7 KiB
TypeScript
102 lines
3.7 KiB
TypeScript
export default {
|
||
app: { title: '现场相册' },
|
||
home: { hint: '打开相册链接即可观看' },
|
||
album: {
|
||
loading: '加载中…',
|
||
loadingMore: '加载更多…',
|
||
emptyNotice: '照片即将上线',
|
||
time: '时间',
|
||
venue: '地点',
|
||
views: '浏览次数',
|
||
categories: '分类',
|
||
all: '全部',
|
||
sortLabel: '排序',
|
||
sortLatest: '最新',
|
||
sortHot: '热门',
|
||
end: '已经到底了',
|
||
newPhotos: '有新照片,点击查看',
|
||
retry: '重试',
|
||
},
|
||
lang: { switch: '切换语言' },
|
||
prefs: { reduceMotion: '减少动画' },
|
||
// 嵌入轮播 iframe 页(P4b Task 4;UI-01 补全):独立于宿主语言的词条子集
|
||
// (lang 查询驱动)。图片无真实描述时只给上下文标签(§5.3 不编造画面)。
|
||
embed: {
|
||
comingSoon: '照片即将上线',
|
||
openPhoto: '查看照片大图',
|
||
close: '收起组件',
|
||
widgetTitle: '活动照片',
|
||
carouselLabel: '照片轮播',
|
||
slideOf: '第 {n} 张,共 {m} 张',
|
||
photoAlt: '活动照片,第 {n} 张',
|
||
viewAlbum: '查看相册',
|
||
pause: '暂停轮播',
|
||
play: '播放轮播',
|
||
prev: '上一张',
|
||
next: '下一张',
|
||
},
|
||
download: {
|
||
action: '下载图片',
|
||
original: '下载原图',
|
||
options: '下载选项',
|
||
busy: '准备中…',
|
||
failed: '下载失败,请重试',
|
||
// 微信内置浏览器引导(不支持程序化下载):长按保存 + 复制链接离场。
|
||
wechatTitle: '保存图片指引',
|
||
wechatHint: '微信内打开的页面不支持直接下载。请长按上方图片保存到手机,或复制链接后在浏览器中打开再下载。',
|
||
copyLink: '复制链接',
|
||
copied: '已复制链接',
|
||
copyFailed: '复制失败,请长按选择下方链接复制',
|
||
dismiss: '知道了',
|
||
},
|
||
viewer: {
|
||
title: '照片查看',
|
||
close: '关闭',
|
||
previous: '上一张',
|
||
next: '下一张',
|
||
counter: '{current} / {total}',
|
||
like: '点赞',
|
||
likeCount: '{count} 次点赞',
|
||
bubbleOpen: '查看被点赞的照片',
|
||
loadFailed: '图片加载失败',
|
||
photoRemoved: '照片已被移除',
|
||
// PHOTO_NOT_PUBLIC 专用:不存在/未发布/已隐藏同码(防枚举),文案覆盖两种成因。
|
||
photoUnavailable: '照片不存在或已下线',
|
||
backToAlbum: '返回相册',
|
||
// —— UI-02(V01/V02)新增 ——
|
||
brand: 'PhotoLive',
|
||
settings: '设置',
|
||
share: '分享',
|
||
shareCopied: '链接已复制',
|
||
shareCopyFailed: '复制失败,请手动复制链接:',
|
||
views: '{count} 次浏览',
|
||
viewsUnknown: '—',
|
||
readMore: '展开',
|
||
readLess: '收起',
|
||
latest: '最新',
|
||
popular: '热门',
|
||
allCategories: '全部',
|
||
noPhotos: '照片即将上线',
|
||
newPhotos: '有新照片',
|
||
reduceMotion: '减少动画',
|
||
},
|
||
route: { tokenLabel: '相册令牌', photoLabel: '照片' },
|
||
errors: {
|
||
albumNotFound: '相册不存在',
|
||
// ALBUM_NOT_PUBLIC 专用:offline / publicEnabled=false / 幽灵 token 同码(防枚举),
|
||
// 文案需同时覆盖「不存在」与「已下线」两种用户可理解成因。
|
||
albumNotAvailable: '相册不存在或已下线',
|
||
photoNotFound: '照片不存在',
|
||
notFound: '页面不存在',
|
||
authExpired: '登录已过期',
|
||
forbidden: '没有权限',
|
||
rateLimited: '操作过于频繁,请稍后再试',
|
||
validationFailed: '请求参数有误',
|
||
internal: '服务暂时不可用,请稍后再试',
|
||
unknown: '出错了,请稍后再试',
|
||
network: '网络连接失败,请检查网络',
|
||
// DOWNLOAD_DISABLED(P4a 下载两级开关):相册可见但未开放下载。
|
||
downloadDisabled: '该相册未开放下载',
|
||
},
|
||
};
|