feat(admin): batch ops, transfer, watermark, usage and qr share pages
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -233,7 +233,8 @@
|
||||
"system": {
|
||||
"title": "Accounts & Sync",
|
||||
"users": "Account Management",
|
||||
"userSync": "User Sync"
|
||||
"userSync": "User Sync",
|
||||
"usage": "Usage"
|
||||
},
|
||||
"albums": {
|
||||
"title": "Albums",
|
||||
@@ -339,6 +340,8 @@
|
||||
"tabPhotos": "Photos",
|
||||
"tabMembers": "Members",
|
||||
"tabCategories": "Categories",
|
||||
"tabWatermark": "Watermark",
|
||||
"tabShare": "Share",
|
||||
"loadFailed": "Failed to load album",
|
||||
"retry": "Retry",
|
||||
"fieldTitle": "Title",
|
||||
@@ -348,7 +351,10 @@
|
||||
"fieldStartAt": "Start",
|
||||
"fieldEndAt": "End",
|
||||
"fieldCreatedAt": "Created",
|
||||
"fieldUpdatedAt": "Updated"
|
||||
"fieldUpdatedAt": "Updated",
|
||||
"fieldStatsSyncedAt": "Stats Synced At",
|
||||
"statsNotSynced": "Not synced yet",
|
||||
"fieldOwnerId": "Owner"
|
||||
},
|
||||
"banner": {
|
||||
"kind": "Asset Kind",
|
||||
@@ -438,7 +444,114 @@
|
||||
"hidden": "Photo hidden",
|
||||
"restored": "Photo restored",
|
||||
"deleted": "Photo deleted",
|
||||
"empty": "No photos"
|
||||
"empty": "No photos",
|
||||
"colLikeCount": "Likes",
|
||||
"batchHide": "Batch Hide",
|
||||
"batchHideConfirm": "Batch hide the {count} selected photos? They become invisible to the public immediately.",
|
||||
"batchResult": "Batch hide finished: {ok} succeeded / {fail} failed",
|
||||
"batchResultAllOk": "Batch hide finished: {ok} succeeded",
|
||||
"batchFailuresTitle": "Failures (per item)",
|
||||
"batchColPhoto": "Photo ID",
|
||||
"batchColReason": "Reason"
|
||||
},
|
||||
"transfer": {
|
||||
"entry": "Transfer Owner",
|
||||
"title": "Transfer Album Owner",
|
||||
"targetLabel": "New Owner",
|
||||
"searchPlaceholder": "Type an account prefix (min 2 chars) to search",
|
||||
"keepLabel": "Keep as collaborator",
|
||||
"keepHint": "On: the previous owner becomes a collaborator; Off: removed from members",
|
||||
"historyHint": "Transfer only moves the owner role: upload attribution of existing photos stays unchanged.",
|
||||
"submit": "Transfer",
|
||||
"success": "Owner transferred"
|
||||
},
|
||||
"watermark": {
|
||||
"loadFailed": "Failed to load watermark config",
|
||||
"retry": "Retry",
|
||||
"currentVersion": "Current Config",
|
||||
"versionTag": "v{version} · {state}",
|
||||
"neverConfigured": "Never configured",
|
||||
"enabled": "Enabled",
|
||||
"disabled": "Disabled",
|
||||
"switchLabel": "Browse watermark",
|
||||
"positionLabel": "Position",
|
||||
"position_topLeft": "Top Left",
|
||||
"position_topRight": "Top Right",
|
||||
"position_bottomLeft": "Bottom Left",
|
||||
"position_bottomRight": "Bottom Right",
|
||||
"position_center": "Center",
|
||||
"opacityLabel": "Opacity",
|
||||
"scaleLabel": "Scale",
|
||||
"textContentLabel": "Text",
|
||||
"textContentPlaceholder": "Leave empty for no text",
|
||||
"fontSizeLabel": "Font Size",
|
||||
"save": "Save & Regenerate",
|
||||
"saveHint": "Saving creates a new config version and starts regeneration for all existing photos (atomic switch — old images stay available until done)",
|
||||
"accepted": "Config saved (v{version}), regeneration job accepted",
|
||||
"previewTitle": "Test Watermark (schematic)",
|
||||
"previewHint": "CSS overlay schematic; actual result follows the regenerated browse images",
|
||||
"jobsTitle": "Version History",
|
||||
"regen": "Regenerate",
|
||||
"colVersion": "Version",
|
||||
"colState": "State",
|
||||
"colProgress": "Progress",
|
||||
"colCreatedAt": "Created",
|
||||
"state_pending": "Pending",
|
||||
"state_running": "Running",
|
||||
"state_done": "Done",
|
||||
"state_failed": "Failed",
|
||||
"failedCount": "{count} failed",
|
||||
"jobsEmpty": "No regeneration jobs"
|
||||
},
|
||||
"share": {
|
||||
"viewerUrl": "Viewer URL",
|
||||
"copy": "Copy Link",
|
||||
"hint": "Guests open the public album page via this link; it stops working when \"Publicly visible\" is off.",
|
||||
"qrTitle": "Scan to open",
|
||||
"publicOffHint": "\"Publicly visible\" is off for this album — the viewer link is currently unreachable"
|
||||
}
|
||||
},
|
||||
"usage": {
|
||||
"loadFailed": "Failed to load usage",
|
||||
"retry": "Retry",
|
||||
"totals": {
|
||||
"photoCount": "Total Photos",
|
||||
"totalBytes": "Total Storage",
|
||||
"thresholds": "Alert Thresholds"
|
||||
},
|
||||
"albums": {
|
||||
"title": "Album Usage",
|
||||
"colTitle": "Album",
|
||||
"colPhotoCount": "Photos",
|
||||
"colOriginal": "Originals",
|
||||
"colVariant": "Variants",
|
||||
"colTotal": "Total",
|
||||
"empty": "No albums"
|
||||
},
|
||||
"thresholds": {
|
||||
"entry": "Thresholds",
|
||||
"title": "Usage Alert Thresholds",
|
||||
"storageLabel": "Storage threshold",
|
||||
"storageShort": "Storage",
|
||||
"perAlbumLabel": "Per-album threshold",
|
||||
"perAlbumShort": "Per album",
|
||||
"off": "Not set",
|
||||
"hint": "Turning a switch off clears that threshold (alerts disabled); saving re-evaluates immediately — new alerts appear when exceeded, raising a threshold resolves old alerts.",
|
||||
"submit": "Save",
|
||||
"saved": "Thresholds saved"
|
||||
},
|
||||
"alerts": {
|
||||
"title": "Alerts",
|
||||
"colState": "State",
|
||||
"colKind": "Kind",
|
||||
"colMessage": "Message",
|
||||
"colCreatedAt": "Raised",
|
||||
"colResolvedAt": "Resolved",
|
||||
"active": "Active",
|
||||
"resolved": "Resolved",
|
||||
"kind_storage": "Storage",
|
||||
"kind_perAlbum": "Per album",
|
||||
"empty": "No alerts"
|
||||
}
|
||||
},
|
||||
"usersManage": {
|
||||
@@ -594,6 +707,7 @@
|
||||
"MEMBER_CONFLICT": "This user is already a member",
|
||||
"ALBUM_NOT_FOUND": "Album not found or not visible",
|
||||
"PHOTO_NOT_FOUND": "Photo not found",
|
||||
"PHOTO_NOT_PUBLIC": "Photo state cannot be hidden (not published)",
|
||||
"UPLOAD_VERIFY_FAILED": "Upload verification failed, please retry",
|
||||
"UPLOAD_SESSION_CONFLICT": "Upload session conflict, please start over",
|
||||
"ALBUM_UPLOAD_DISABLED": "Upload is disabled for this album"
|
||||
|
||||
@@ -233,7 +233,8 @@
|
||||
"system": {
|
||||
"title": "账号与同步",
|
||||
"users": "账号管理",
|
||||
"userSync": "用户同步"
|
||||
"userSync": "用户同步",
|
||||
"usage": "用量统计"
|
||||
},
|
||||
"albums": {
|
||||
"title": "相册管理",
|
||||
@@ -339,6 +340,8 @@
|
||||
"tabPhotos": "照片管理",
|
||||
"tabMembers": "成员管理",
|
||||
"tabCategories": "分类管理",
|
||||
"tabWatermark": "水印管理",
|
||||
"tabShare": "分享",
|
||||
"loadFailed": "相册加载失败",
|
||||
"retry": "重试",
|
||||
"fieldTitle": "标题",
|
||||
@@ -348,7 +351,10 @@
|
||||
"fieldStartAt": "开始时间",
|
||||
"fieldEndAt": "结束时间",
|
||||
"fieldCreatedAt": "创建时间",
|
||||
"fieldUpdatedAt": "更新时间"
|
||||
"fieldUpdatedAt": "更新时间",
|
||||
"fieldStatsSyncedAt": "统计同步时间",
|
||||
"statsNotSynced": "尚无回传",
|
||||
"fieldOwnerId": "负责人"
|
||||
},
|
||||
"banner": {
|
||||
"kind": "资产类型",
|
||||
@@ -438,7 +444,114 @@
|
||||
"hidden": "照片已隐藏",
|
||||
"restored": "照片已恢复发布",
|
||||
"deleted": "照片已删除",
|
||||
"empty": "暂无照片"
|
||||
"empty": "暂无照片",
|
||||
"colLikeCount": "点赞数",
|
||||
"batchHide": "批量隐藏",
|
||||
"batchHideConfirm": "确定批量隐藏选中的 {count} 张照片?隐藏后公开端即刻不可见。",
|
||||
"batchResult": "批量隐藏完成:成功 {ok} 张 / 失败 {fail} 张",
|
||||
"batchResultAllOk": "批量隐藏完成:成功 {ok} 张",
|
||||
"batchFailuresTitle": "失败明细(逐项原因)",
|
||||
"batchColPhoto": "照片 ID",
|
||||
"batchColReason": "原因"
|
||||
},
|
||||
"transfer": {
|
||||
"entry": "负责人交接",
|
||||
"title": "相册负责人交接",
|
||||
"targetLabel": "新负责人",
|
||||
"searchPlaceholder": "输入账号前缀(至少 2 字符)搜索",
|
||||
"keepLabel": "保留原负责人",
|
||||
"keepHint": "开启则原负责人转为协作者,关闭则移出成员表",
|
||||
"historyHint": "交接仅转移负责人角色:历史照片的上传人保持不变。",
|
||||
"submit": "交接",
|
||||
"success": "负责人已交接"
|
||||
},
|
||||
"watermark": {
|
||||
"loadFailed": "水印配置加载失败",
|
||||
"retry": "重试",
|
||||
"currentVersion": "当前配置",
|
||||
"versionTag": "v{version} · {state}",
|
||||
"neverConfigured": "从未配置",
|
||||
"enabled": "已开启",
|
||||
"disabled": "已关闭",
|
||||
"switchLabel": "浏览图水印",
|
||||
"positionLabel": "位置",
|
||||
"position_topLeft": "左上",
|
||||
"position_topRight": "右上",
|
||||
"position_bottomLeft": "左下",
|
||||
"position_bottomRight": "右下",
|
||||
"position_center": "居中",
|
||||
"opacityLabel": "不透明度",
|
||||
"scaleLabel": "尺寸占比",
|
||||
"textContentLabel": "文字内容",
|
||||
"textContentPlaceholder": "留空则不绘制文字",
|
||||
"fontSizeLabel": "字号",
|
||||
"save": "保存并发起重生成",
|
||||
"saveHint": "保存即创建新配置版本,并为全部历史照片发起重生成(原子切换,完成前旧图可用)",
|
||||
"accepted": "配置已保存(v{version}),重生成任务已受理",
|
||||
"previewTitle": "测试水印(示意预览)",
|
||||
"previewHint": "CSS 叠加示意,实际效果以重生成后的浏览图为准",
|
||||
"jobsTitle": "版本历史",
|
||||
"regen": "发起重生成",
|
||||
"colVersion": "版本",
|
||||
"colState": "状态",
|
||||
"colProgress": "进度",
|
||||
"colCreatedAt": "创建时间",
|
||||
"state_pending": "等待中",
|
||||
"state_running": "进行中",
|
||||
"state_done": "已完成",
|
||||
"state_failed": "已失败",
|
||||
"failedCount": "失败 {count} 张",
|
||||
"jobsEmpty": "暂无重生成任务"
|
||||
},
|
||||
"share": {
|
||||
"viewerUrl": "观众端链接",
|
||||
"copy": "复制链接",
|
||||
"hint": "观众经此链接访问相册公开页;关闭「公开可见」开关后链接失效。",
|
||||
"qrTitle": "扫码打开",
|
||||
"publicOffHint": "该相册已关闭「公开可见」,观众端链接当前不可访问"
|
||||
}
|
||||
},
|
||||
"usage": {
|
||||
"loadFailed": "用量加载失败",
|
||||
"retry": "重试",
|
||||
"totals": {
|
||||
"photoCount": "照片总数",
|
||||
"totalBytes": "存储总量",
|
||||
"thresholds": "告警阈值"
|
||||
},
|
||||
"albums": {
|
||||
"title": "相册用量",
|
||||
"colTitle": "相册",
|
||||
"colPhotoCount": "照片数",
|
||||
"colOriginal": "原图",
|
||||
"colVariant": "变体",
|
||||
"colTotal": "合计",
|
||||
"empty": "暂无相册"
|
||||
},
|
||||
"thresholds": {
|
||||
"entry": "阈值设置",
|
||||
"title": "用量告警阈值",
|
||||
"storageLabel": "全库存储阈值",
|
||||
"storageShort": "全库",
|
||||
"perAlbumLabel": "单相册阈值",
|
||||
"perAlbumShort": "单相册",
|
||||
"off": "未设置",
|
||||
"hint": "开关关闭即清除该阈值(告警停用);保存后立即重新评估——超阈产生新告警、阈值上调解除旧告警。",
|
||||
"submit": "保存",
|
||||
"saved": "阈值已保存"
|
||||
},
|
||||
"alerts": {
|
||||
"title": "告警列表",
|
||||
"colState": "状态",
|
||||
"colKind": "维度",
|
||||
"colMessage": "描述",
|
||||
"colCreatedAt": "产生时间",
|
||||
"colResolvedAt": "解除时间",
|
||||
"active": "未解决",
|
||||
"resolved": "已解决",
|
||||
"kind_storage": "全库存储",
|
||||
"kind_perAlbum": "单相册",
|
||||
"empty": "暂无告警"
|
||||
}
|
||||
},
|
||||
"usersManage": {
|
||||
@@ -594,6 +707,7 @@
|
||||
"MEMBER_CONFLICT": "该用户已是相册成员",
|
||||
"ALBUM_NOT_FOUND": "相册不存在或不可见",
|
||||
"PHOTO_NOT_FOUND": "照片不存在",
|
||||
"PHOTO_NOT_PUBLIC": "照片状态不可隐藏(非已发布)",
|
||||
"UPLOAD_VERIFY_FAILED": "上传核验失败,请重试",
|
||||
"UPLOAD_SESSION_CONFLICT": "上传会话状态冲突,请重新开始",
|
||||
"ALBUM_UPLOAD_DISABLED": "该相册已关闭上传"
|
||||
|
||||
Reference in New Issue
Block a user