release: v1.3.0 — 整站备份恢复、跨后端同步与任务中心
ci / ci (22, ubuntu-latest) (push) Canceled after 0s
GitHub Release / release (push) Canceled after 0s
Publish Docker image / build (linux/amd64, ubuntu-latest, amd64) (push) Canceled after 0s
Publish Docker image / build (linux/arm64, ubuntu-24.04-arm, arm64) (push) Canceled after 0s
Publish Docker image / merge (push) Canceled after 0s
ci / ci (22, ubuntu-latest) (push) Canceled after 0s
GitHub Release / release (push) Canceled after 0s
Publish Docker image / build (linux/amd64, ubuntu-latest, amd64) (push) Canceled after 0s
Publish Docker image / build (linux/arm64, ubuntu-24.04-arm, arm64) (push) Canceled after 0s
Publish Docker image / merge (push) Canceled after 0s
This commit is contained in:
1 parent
b05d572221
commit
f17d79b236
72 files changed
+4312
-559
No files matched your search
+131
-2
@@ -110,7 +110,18 @@
|
||||
"migrateSubmit": "Complete migration",
|
||||
"initSubmit": "Create and continue",
|
||||
"migrateSuccess": "Migration complete",
|
||||
"initSuccess": "Setup complete"
|
||||
"initSuccess": "Setup complete",
|
||||
"restoreTitle": "Restore from backup",
|
||||
"restoreSubtitle": "Upload a .phost.tar.gz to restore the full site",
|
||||
"restoreHint": "Restore replaces all current data. Cloud storage secrets are not in the backup—re-enter them on the Storage page after sign-in.",
|
||||
"restoreUpload": "Choose backup file",
|
||||
"restoreSubmit": "Start restore",
|
||||
"restoreProgress": "Restoring… {progress}/{total}",
|
||||
"restoreSuccess": "Restore complete. Sign in with the admin account from the backup.",
|
||||
"restoreFailed": "Restore failed",
|
||||
"restoreSecretsHint": "Cloud storage secrets are not in the backup. Re-enter them on the Storage page after sign-in.",
|
||||
"modeInit": "Create admin",
|
||||
"modeRestore": "Restore backup"
|
||||
},
|
||||
"register": {
|
||||
"title": "Register",
|
||||
@@ -388,7 +399,125 @@
|
||||
"deleteConfirmBody": "Delete “{name}”? This cannot be undone.",
|
||||
"secretsRequired": "Access Key and Secret Key are required for new storage",
|
||||
"manageStorage": "Manage object storage",
|
||||
"manageStorageHint": "Configure R2 / S3 / COS backends and URL serving"
|
||||
"manageStorageHint": "Configure R2 / S3 / COS backends and URL serving",
|
||||
"backup": {
|
||||
"sectionTitle": "Backup & migration",
|
||||
"sectionSubtitle": "Full-site backup, restore, and cross-backend image migration",
|
||||
"siteTitle": "Site backup & restore",
|
||||
"siteSubtitle": "For migration, disaster recovery, and full-site restore",
|
||||
"siteFooterHint": "Backups include the database and images, not plain-text secret_json.",
|
||||
"exportTitle": "Create site backup",
|
||||
"exportSubtitle": "Package the database and all images as .phost.tar.gz",
|
||||
"exportAction": "Start backup",
|
||||
"exportStarted": "Backup job started",
|
||||
"exportFailed": "Failed to start backup",
|
||||
"exportPathHint": "Exports are saved under data/backups/",
|
||||
"exportIncludesTitle": "Package includes",
|
||||
"exportIncludesDb": "Database snapshot (pichost.db)",
|
||||
"exportIncludesImages": "All image files ({count})",
|
||||
"exportExcludesSecrets": "Excludes plain-text secret.json for cloud storage",
|
||||
"exportConcurrencyHint": "Only one backup or migration job can run at a time",
|
||||
"estimateLoading": "Estimating size…",
|
||||
"estimateImageCountLabel": "Images",
|
||||
"estimatePackageSizeLabel": "Est. package",
|
||||
"estimateDatabaseSnapshotLabel": "Database snapshot",
|
||||
"estimateStoragePathLabel": "Save location",
|
||||
"estimateStoragePathValue": "data/backups/",
|
||||
"estimateImages": "{count} images · {size}",
|
||||
"estimateDatabase": "Database ~{size}",
|
||||
"estimateTotal": "Total ~{size}",
|
||||
"restoreTitle": "Restore from backup",
|
||||
"restoreSubtitle": "Upload or pick a .phost.tar.gz on the server, preview, then confirm",
|
||||
"restoreUpload": "Choose backup file",
|
||||
"restoreUploadLabel": "Upload from device",
|
||||
"restoreUploadHint": "Click to select a .phost.tar.gz backup",
|
||||
"restoreUploadAction": "Upload & restore",
|
||||
"restoreServerAction": "Server backup",
|
||||
"restoreServerPackages": "Server backups",
|
||||
"restoreServerSelectPlaceholder": "Select a backup",
|
||||
"restorePreview": "Preview",
|
||||
"restorePreviewConfirm": "Preview & confirm",
|
||||
"restoreConfirm": "Confirm restore",
|
||||
"restoreConfirmTitle": "Confirm site restore",
|
||||
"restoreConfirmSource": "Source: {name}",
|
||||
"restoreOverwriteWarning": "Overwrite mode replaces conflicting images and the database. Ensure you have a current backup.",
|
||||
"restoreSelectRequired": "Select or upload a backup file",
|
||||
"restoreStarted": "Restore job started",
|
||||
"restoreFailed": "Restore failed",
|
||||
"conflictMode": "Conflict policy",
|
||||
"conflictSkip": "Skip existing images",
|
||||
"conflictOverwrite": "Overwrite existing images and database",
|
||||
"syncTitle": "Cross-backend sync",
|
||||
"syncMigrateTitle": "Cross-backend migration",
|
||||
"syncMigrateSubtitle": "Migrate images between configured backends",
|
||||
"syncSubtitle": "Copy images between configured backends and update the index",
|
||||
"syncFrom": "Source backend",
|
||||
"syncTo": "Target backend",
|
||||
"syncPendingImages": "Images to migrate",
|
||||
"syncPendingSize": "Est. size",
|
||||
"syncIncludesTitle": "What sync does",
|
||||
"syncIncludesCopy": "Copy image files from source to target backend",
|
||||
"syncIncludesIndex": "Update storage_backend_id in the index",
|
||||
"syncIncludesConfig": "Site settings and other backends are unchanged",
|
||||
"syncDryRun": "Dry run only",
|
||||
"syncSetDefaultAfter": "Set target as default after migration",
|
||||
"syncStartMigrate": "Start migration",
|
||||
"syncPreviewOnly": "Preview",
|
||||
"syncFooterHint": "Only image files and index are migrated; site settings are unchanged.",
|
||||
"syncDeleteSource": "Delete source files after sync",
|
||||
"syncSetDefault": "Set target as default after sync",
|
||||
"syncPreview": "Preview & start",
|
||||
"syncConfirm": "Start sync",
|
||||
"syncConfirmTitle": "Confirm cross-backend sync",
|
||||
"syncDeleteWarning": "Source files will be deleted. This cannot be undone.",
|
||||
"syncSelectRequired": "Select source and target backends",
|
||||
"syncSameBackend": "Source and target must differ",
|
||||
"syncStarted": "Sync job started",
|
||||
"syncFailed": "Sync failed",
|
||||
"previewFailed": "Preview failed",
|
||||
"previewImages": "Images",
|
||||
"previewNew": "New images",
|
||||
"previewConflicts": "Conflicts",
|
||||
"previewCreated": "Backup created",
|
||||
"previewSize": "Data size",
|
||||
"jobsTitle": "Recent jobs",
|
||||
"jobsSubtitle": "Track backup, restore, and migration progress",
|
||||
"jobsEmpty": "No backup or migration jobs yet",
|
||||
"jobsEmptyHint": "Progress appears here after export, restore, or sync starts",
|
||||
"jobsUnit": "jobs",
|
||||
"colTask": "Task",
|
||||
"colType": "Type",
|
||||
"colStatus": "Status",
|
||||
"colProgress": "Progress",
|
||||
"colMessage": "Message",
|
||||
"colCreated": "Created",
|
||||
"colActions": "Actions",
|
||||
"jobTypeExport": "Site export",
|
||||
"jobTypeRestore": "Site restore",
|
||||
"jobTypeSync": "Cross-backend sync",
|
||||
"statusPending": "Pending",
|
||||
"statusRunning": "Running",
|
||||
"statusDone": "Done",
|
||||
"statusFailed": "Failed",
|
||||
"jobFailedUnknown": "Unknown error",
|
||||
"download": "Download",
|
||||
"jobView": "View",
|
||||
"retry": "Retry",
|
||||
"retryStarted": "Retry started",
|
||||
"retryFailed": "Retry failed",
|
||||
"jobRunning": "Another job is already running. Try again later.",
|
||||
"migrateIn": "Migrate in",
|
||||
"migrateOut": "Migrate out",
|
||||
"migrateInHint": "Copy images from the default backend to this one",
|
||||
"migrateOutHint": "Move images out of this backend",
|
||||
"syncDraftApplied": "Sync form prefilled — review and start when ready",
|
||||
"syncNeedTwoBackends": "At least two storage backends are required to sync",
|
||||
"selectBackend": "Select backend",
|
||||
"syncConfirmRoute": "{from} → {to}",
|
||||
"cancel": "Cancel",
|
||||
"cancelDone": "Job cancelled",
|
||||
"cancelFailed": "Failed to cancel job"
|
||||
}
|
||||
},
|
||||
"stats": {
|
||||
"title": "Gallery",
|
||||
|
||||
+131
-2
@@ -110,7 +110,18 @@
|
||||
"migrateSubmit": "完成迁移",
|
||||
"initSubmit": "创建并进入",
|
||||
"migrateSuccess": "账号迁移完成",
|
||||
"initSuccess": "初始化完成"
|
||||
"initSuccess": "初始化完成",
|
||||
"restoreTitle": "从备份包恢复",
|
||||
"restoreSubtitle": "上传 .phost.tar.gz 恢复整站数据",
|
||||
"restoreHint": "恢复将覆盖当前全部数据。云存储密钥未包含在备份中,登录后请在存储页重新填写。",
|
||||
"restoreUpload": "选择备份文件",
|
||||
"restoreSubmit": "开始恢复",
|
||||
"restoreProgress": "恢复中… {progress}/{total}",
|
||||
"restoreSuccess": "恢复完成,请使用备份中的管理员账号登录",
|
||||
"restoreFailed": "恢复失败",
|
||||
"restoreSecretsHint": "云存储密钥未包含在备份中,登录后请在存储页重新填写",
|
||||
"modeInit": "创建管理员",
|
||||
"modeRestore": "从备份恢复"
|
||||
},
|
||||
"register": {
|
||||
"title": "注册账号",
|
||||
@@ -388,7 +399,125 @@
|
||||
"deleteConfirmBody": "确定删除「{name}」?此操作不可撤销。",
|
||||
"secretsRequired": "新建存储需填写 Access Key 与 Secret Key",
|
||||
"manageStorage": "管理对象存储",
|
||||
"manageStorageHint": "配置 R2 / S3 / COS 等多后端与直链策略"
|
||||
"manageStorageHint": "配置 R2 / S3 / COS 等多后端与直链策略",
|
||||
"backup": {
|
||||
"sectionTitle": "备份与迁移",
|
||||
"sectionSubtitle": "整站备份恢复与跨后端图片迁移",
|
||||
"siteTitle": "站点备份与恢复",
|
||||
"siteSubtitle": "用于换机、灾备与整站恢复",
|
||||
"siteFooterHint": "备份包含数据库与图片,不包含 secret_json 明文。",
|
||||
"exportTitle": "创建站点备份",
|
||||
"exportSubtitle": "打包数据库与全部图片为 .phost.tar.gz",
|
||||
"exportAction": "开始备份",
|
||||
"exportStarted": "备份任务已开始",
|
||||
"exportFailed": "创建备份失败",
|
||||
"exportPathHint": "导出文件保存在 data/backups/",
|
||||
"exportIncludesTitle": "备份包含",
|
||||
"exportIncludesDb": "数据库快照(pichost.db)",
|
||||
"exportIncludesImages": "全部图片文件({count} 张)",
|
||||
"exportExcludesSecrets": "不含云存储 secret.json 明文",
|
||||
"exportConcurrencyHint": "同时仅可运行一个备份或迁移任务",
|
||||
"estimateLoading": "正在估算体积…",
|
||||
"estimateImageCountLabel": "图片总数",
|
||||
"estimatePackageSizeLabel": "预计备份包",
|
||||
"estimateDatabaseSnapshotLabel": "数据库快照",
|
||||
"estimateStoragePathLabel": "保存位置",
|
||||
"estimateStoragePathValue": "data/backups/",
|
||||
"estimateImages": "图片 {count} 张 · {size}",
|
||||
"estimateDatabase": "数据库约 {size}",
|
||||
"estimateTotal": "合计约 {size}",
|
||||
"restoreTitle": "从备份恢复",
|
||||
"restoreSubtitle": "上传或选择服务器上的 .phost.tar.gz,预检后确认恢复",
|
||||
"restoreUpload": "选择备份文件",
|
||||
"restoreUploadLabel": "本地上传",
|
||||
"restoreUploadHint": "点击选择 .phost.tar.gz 备份包",
|
||||
"restoreUploadAction": "上传备份恢复",
|
||||
"restoreServerAction": "选择服务器备份",
|
||||
"restoreServerPackages": "服务器已有备份",
|
||||
"restoreServerSelectPlaceholder": "选择备份包",
|
||||
"restorePreview": "预检",
|
||||
"restorePreviewConfirm": "预检并确认",
|
||||
"restoreConfirm": "确认恢复",
|
||||
"restoreConfirmTitle": "确认恢复站点",
|
||||
"restoreConfirmSource": "来源:{name}",
|
||||
"restoreOverwriteWarning": "覆盖模式将替换冲突图片与数据库,请确认已做好当前站点备份",
|
||||
"restoreSelectRequired": "请选择或上传备份文件",
|
||||
"restoreStarted": "恢复任务已开始",
|
||||
"restoreFailed": "恢复失败",
|
||||
"conflictMode": "冲突策略",
|
||||
"conflictSkip": "跳过已存在图片",
|
||||
"conflictOverwrite": "覆盖已存在图片与数据库",
|
||||
"syncTitle": "跨后端同步",
|
||||
"syncMigrateTitle": "跨后端迁移",
|
||||
"syncMigrateSubtitle": "在已配置后端之间迁移图片",
|
||||
"syncSubtitle": "在已配置的后端之间拷贝图片并更新索引",
|
||||
"syncFrom": "源后端",
|
||||
"syncTo": "目标后端",
|
||||
"syncPendingImages": "待迁移图片",
|
||||
"syncPendingSize": "预计体积",
|
||||
"syncIncludesTitle": "同步说明",
|
||||
"syncIncludesCopy": "拷贝源端图片文件到目标后端",
|
||||
"syncIncludesIndex": "更新索引中的 storage_backend_id",
|
||||
"syncIncludesConfig": "不修改站点配置与其它后端数据",
|
||||
"syncDryRun": "仅预览 Dry Run",
|
||||
"syncSetDefaultAfter": "迁移后设为默认后端",
|
||||
"syncStartMigrate": "开始迁移",
|
||||
"syncPreviewOnly": "预览",
|
||||
"syncFooterHint": "仅迁移图片文件与索引,不影响站点配置。",
|
||||
"syncDeleteSource": "同步后删除源端文件",
|
||||
"syncSetDefault": "同步后将目标设为默认",
|
||||
"syncPreview": "预检并开始",
|
||||
"syncConfirm": "开始同步",
|
||||
"syncConfirmTitle": "确认跨后端同步",
|
||||
"syncDeleteWarning": "将删除源后端上的图片文件,此操作不可撤销",
|
||||
"syncSelectRequired": "请选择源与目标后端",
|
||||
"syncSameBackend": "源与目标不能相同",
|
||||
"syncStarted": "同步任务已开始",
|
||||
"syncFailed": "同步失败",
|
||||
"previewFailed": "预检失败",
|
||||
"previewImages": "图片数量",
|
||||
"previewNew": "新增图片",
|
||||
"previewConflicts": "冲突图片",
|
||||
"previewCreated": "备份时间",
|
||||
"previewSize": "数据量",
|
||||
"jobsTitle": "最近任务",
|
||||
"jobsSubtitle": "查看备份、恢复与迁移进度",
|
||||
"jobsEmpty": "暂无备份或迁移任务",
|
||||
"jobsEmptyHint": "导出、恢复或同步开始后,进度会显示在这里",
|
||||
"jobsUnit": "条任务",
|
||||
"colTask": "任务",
|
||||
"colType": "类型",
|
||||
"colStatus": "状态",
|
||||
"colProgress": "进度",
|
||||
"colMessage": "说明",
|
||||
"colCreated": "创建时间",
|
||||
"colActions": "操作",
|
||||
"jobTypeExport": "站点导出",
|
||||
"jobTypeRestore": "站点恢复",
|
||||
"jobTypeSync": "跨后端同步",
|
||||
"statusPending": "等待中",
|
||||
"statusRunning": "进行中",
|
||||
"statusDone": "已完成",
|
||||
"statusFailed": "失败",
|
||||
"jobFailedUnknown": "未知错误",
|
||||
"download": "下载",
|
||||
"jobView": "查看",
|
||||
"retry": "重试",
|
||||
"retryStarted": "重试任务已开始",
|
||||
"retryFailed": "重试失败",
|
||||
"jobRunning": "已有任务正在运行,请稍后再试",
|
||||
"migrateIn": "迁入",
|
||||
"migrateOut": "迁出",
|
||||
"migrateInHint": "从默认后端拷贝图片到此后端",
|
||||
"migrateOutHint": "将图片从此后端迁出",
|
||||
"syncDraftApplied": "已填入同步表单,请确认后开始",
|
||||
"syncNeedTwoBackends": "至少需要两个存储后端才能同步",
|
||||
"selectBackend": "选择后端",
|
||||
"syncConfirmRoute": "{from} → {to}",
|
||||
"cancel": "取消",
|
||||
"cancelDone": "任务已取消",
|
||||
"cancelFailed": "取消任务失败"
|
||||
}
|
||||
},
|
||||
"stats": {
|
||||
"title": "图库",
|
||||
|
||||
Reference in new issue
Block a user