feat(mobile): UI-03 forms and collaboration pages (09-12)

- Page 09 create: grouped form (Event details / Description & languages),
  required default-language selector, zh-CN/en tabs with per-locale
  title/description/venue/address, explicit timezone field, bottom save
  button kept keyboard-reachable, create mode has no Access tab
- Page 10 edit: Details/Access tabs sharing one draft; Access has four
  switches with explanations; original downloads constrained by downloads
  (disabled + forced off in PATCH); unsaved-changes PopScope confirm;
  save commits all changes in one minimal PATCH
- Page 11 members: Owner group + Collaborators list with initial avatars
  and per-row remove; full-width Invite colleague opens account-search
  bottom sheet (debounced prefix search, race guard, already-added state);
  remove confirm names the member
- Page 12 categories: extracted to standalone page with per-row edit/
  delete menu and New category sheet (language tabs + name + sort order);
  delete confirm mentions photo impact; collaborator browse-only; old
  inline section removed from album detail
- l10n: new form/members/categories keys both locales; regenerated
- tests: form 14, members 6, categories 7, detail nav 1; full suite green

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-09-22 01:23:02 +08:00
parent 5715c608d8
commit 8bd09eefb9
13 changed files with 2322 additions and 1184 deletions
+38 -17
View File
@@ -66,28 +66,40 @@
"albumsEmpty": "暂无相册,点击「新建相册」开始",
"loadMoreFailed": "加载更多失败,点击重试",
"albumCreate": "新建相册",
"albumEdit": "编辑相册",
"albumSectionEventInfo": "活动信息",
"albumSectionContent": "多语言内容",
"albumSectionAccess": "访问设置",
"albumTitle": "标题",
"albumDescription": "描述",
"albumVenue": "场地",
"albumAddress": "地址",
"albumDefaultLocale": "默认语言",
"albumStartAt": "开始时间",
"albumEndAtOptional": "结束时间(可选)",
"clearEndAt": "清除结束时间",
"albumTimezone": "时区",
"albumTimezoneInvalid": "无效的 IANA 时区名称",
"switchUpload": "允许上传",
"switchPublic": "公开可见",
"switchDownload": "允许下载",
"switchOriginalDownload": "允许下载原图",
"formStartAtRequired": "请选择开始时间",
"formDefaultLocaleMissing": "默认语言必须填写标题",
"formTitleRequiredWithFields": "填写了描述/场地/地址时,标题不能为空",
"formEndAtNotAfterStartAt": "结束时间必须晚于开始时间",
"formEventDetails": "活动信息",
"formDescriptionLanguages": "描述与语言",
"formDefaultLanguage": "默认语言",
"formDetailsTab": "详情",
"formAccessTab": "访问",
"formAllowUploads": "允许上传",
"formAllowUploadsDesc": "允许工作人员向该相册上传照片",
"formPublicAccess": "公开访问",
"formPublicAccessDesc": "任何获得链接的人都可以查看照片",
"formAllowDownloads": "允许下载",
"formAllowDownloadsDesc": "观众可以下载浏览质量的照片",
"formOriginalDownloads": "下载原图",
"formOriginalDownloadsDesc": "观众可以下载原图照片",
"createAlbumTitle": "新建相册",
"createAlbumSubmit": "新建相册",
"editAlbumTitle": "编辑相册",
"saveChanges": "保存修改",
"unsavedChangesTitle": "放弃修改?",
"unsavedChangesBody": "修改尚未保存,离开将丢失这些修改。",
"discardChanges": "放弃",
"keepEditing": "继续编辑",
"create": "创建",
"save": "保存",
"albumStatusActive": "正常",
@@ -98,27 +110,36 @@
"tagOriginal": "原图",
"notSet": "未定",
"actionEdit": "编辑",
"albumMembers": "成员管理",
"membersTitle": "成员",
"membersTitleCount": "成员({count})",
"@membersTitleCount": { "placeholders": { "count": { "type": "int" } } },
"ownerGroup": "创建者",
"collaboratorsGroup": "协作者",
"noCollaborators": "还没有协作者",
"inviteColleague": "邀请同事",
"alreadyAdded": "已添加",
"add": "添加",
"categoriesTitle": "分类",
"newCategory": "新增分类",
"editCategory": "编辑分类",
"deleteCategoryConfirm": "删除「{name}」?该分类下的照片将变为未分类。",
"@deleteCategoryConfirm": { "placeholders": { "name": { "type": "String" } } },
"noCategories": "暂无分类",
"albumCategories": "分类管理",
"shareQrTitle": "分享二维码",
"albumPhotos": "照片管理",
"delete": "删除",
"deleteConfirmCategory": "确定删除该分类?该分类下的照片将变为未分类。",
"categoryEmpty": "暂无分类,点击右上角新增",
"categoryAdd": "新增分类",
"categoryEdit": "编辑分类",
"categoryNameZh": "中文名称",
"categoryNameEn": "英文名称",
"categorySortOrder": "排序序号",
"categoryNameRequired": "至少填写一个语言的名称",
"categorySortOrderInvalid": "排序序号必须是整数",
"albumMembersEmpty": "暂无成员",
"inviteSearchHint": "输入账号前缀搜索邀请(至少 2 个字符)",
"inviteNoResults": "未找到匹配用户",
"invite": "邀请",
"memberInvited": "已邀请",
"removeMember": "移除成员",
"removeMemberConfirm": "确定移除该成员?",
"removeMemberConfirm": "确定将 {name} 从该相册移除?",
"@removeMemberConfirm": { "placeholders": { "name": { "type": "String" } } },
"roleOwner": "创建者",
"roleCollaborator": "协作者",
"selfMarker": "(我)",