2026-09-18 09:12:45 +08:00
export default {
app : { title : 'Live Gallery' },
home : { hint : 'Open an album link to start viewing' },
2026-09-18 09:52:22 +08:00
album : {
loading : 'Loading…' ,
2026-09-18 10:23:27 +08:00
loadingMore : 'Loading more…' ,
2026-09-18 09:52:22 +08:00
emptyNotice : 'Photos coming soon' ,
time : 'Time' ,
venue : 'Venue' ,
2026-09-18 19:52:27 +08:00
views : 'Views' ,
2026-09-18 09:52:22 +08:00
categories : 'Categories' ,
2026-09-18 10:23:27 +08:00
all : 'All' ,
2026-09-18 19:52:27 +08:00
sortLabel : 'Sort' ,
sortLatest : 'Latest' ,
sortHot : 'Popular' ,
2026-09-18 10:23:27 +08:00
end : 'You have reached the end' ,
newPhotos : 'New photos — tap to refresh' ,
2026-09-18 09:52:22 +08:00
retry : 'Retry' ,
},
2026-09-18 09:12:45 +08:00
lang : { switch : 'Switch language' },
2026-09-18 19:52:27 +08:00
prefs : { reduceMotion : 'Reduce motion' },
2026-09-20 23:02:07 +08:00
// Embed carousel iframe page (P4b Task 4): subset driven by the lang query.
embed : {
comingSoon : 'Photos coming soon' ,
openPhoto : 'Open photo' ,
close : 'Collapse widget' ,
},
2026-09-20 18:32:34 +08:00
download : {
action : 'Download photo' ,
original : 'Download original' ,
options : 'Download options' ,
busy : 'Preparing…' ,
failed : 'Download failed, please try again' ,
// WeChat in-app browser guidance (no programmatic download): long-press save + copy link.
wechatTitle : 'How to save this photo' ,
wechatHint : 'Pages opened inside WeChat cannot download directly. Long-press the photo above to save it, or copy the link and open it in a browser to download.' ,
copyLink : 'Copy link' ,
copied : 'Link copied' ,
copyFailed : 'Copy failed — long-press to select the link below' ,
dismiss : 'Got it' ,
},
2026-09-18 11:04:05 +08:00
viewer : {
title : 'Photo viewer' ,
close : 'Close' ,
previous : 'Previous photo' ,
next : 'Next photo' ,
counter : '{current} / {total}' ,
2026-09-18 19:52:27 +08:00
like : 'Like' ,
2026-09-18 11:04:05 +08:00
likeCount : '{count} likes' ,
2026-09-18 19:52:27 +08:00
bubbleOpen : 'Open the liked photo' ,
2026-09-18 11:04:05 +08:00
loadFailed : 'Failed to load image' ,
// PHOTO_NOT_PUBLIC 专用:not found / unpublished / hidden share one code (anti-enumeration).
photoUnavailable : 'Photo not found or unavailable' ,
2026-09-20 23:44:27 +08:00
// 轮播中被移除(ws photo.hidden)的轻提示。
photoRemoved : 'This photo has been removed' ,
2026-09-18 11:04:05 +08:00
backToAlbum : 'Back to album' ,
},
2026-09-18 09:12:45 +08:00
route : { tokenLabel : 'Album token' , photoLabel : 'Photo' },
errors : {
albumNotFound : 'Album not found' ,
2026-09-18 09:52:22 +08:00
// ALBUM_NOT_PUBLIC 专用:offline / disabled / ghost token 同码(防枚举)。
albumNotAvailable : 'Album not found or offline' ,
2026-09-18 09:12:45 +08:00
photoNotFound : 'Photo not found' ,
notFound : 'Page not found' ,
authExpired : 'Session expired' ,
forbidden : 'Access denied' ,
rateLimited : 'Too many requests, please try again later' ,
validationFailed : 'Invalid request' ,
internal : 'Service temporarily unavailable, please try again later' ,
unknown : 'Something went wrong, please try again later' ,
network : 'Network error, please check your connection' ,
2026-09-20 23:44:27 +08:00
// DOWNLOAD_DISABLED (P4a two-tier download switches): visible but not downloadable.
downloadDisabled : 'Downloads are not enabled for this album' ,
2026-09-18 09:12:45 +08:00
},
};