Files
clash-verge-rev/src/locales/en/shared.json
Sline 838e401796 feat(auto-backup): implement centralized auto-backup manager and UI (#5374)
* feat(auto-backup): implement centralized auto-backup manager and UI

- Introduced AutoBackupManager to handle verge settings, run a background scheduler, debounce change-driven backups, and trim auto-labeled archives (keeps 20); wired into startup and config refresh hooks
  (src-tauri/src/module/auto_backup.rs:28-209, src-tauri/src/utils/resolve/mod.rs:64-136, src-tauri/src/feat/config.rs:102-238)

- Extended verge schema and backup helpers so scheduled/change-based settings persist, create_local_backup can rename archives, and profile/global-extend mutations now trigger backups
  (src-tauri/src/config/verge.rs:162-536, src/types/types.d.ts:857-859, src-tauri/src/feat/backup.rs:125-189, src-tauri/src/cmd/profile.rs:66-476, src-tauri/src/cmd/save_profile.rs:21-82)

- Added Auto Backup settings panel in backup dialog with dual toggles + interval selector; localized new strings across all locales
  (src/components/setting/mods/auto-backup-settings.tsx:1-138, src/components/setting/mods/backup-viewer.tsx:28-309, src/locales/en/settings.json:312-326 and mirrored entries)

- Regenerated typed i18n resources for strong typing in React
  (src/types/generated/i18n-keys.ts, src/types/generated/i18n-resources.ts)

* refactor(setting/backup): restructure backup dialog for consistent layout

* refactor(ui): unify settings dialog style

* fix(backup): only trigger auto-backup on valid saves & restore restarts app safely

* fix(backup): scrub console.log leak and rewire WebDAV dialog to actually probe server

* refactor: rename SubscriptionChange to ProfileChange

* chore: update i18n

* chore: WebDAV i18n improvements

* refactor(backup): error handling

* refactor(auto-backup): wrap scheduler startup with maybe_start_runner

* refactor: remove the redundant throw in handleExport

* feat(backup-history-viewer): improve WebDAV handling and UI fallback

* feat(auto-backup): trigger backups on all profile edits & improve interval input UX

* refactor: use InputAdornment

* docs: Changelog.md
2025-11-10 13:49:14 +08:00

133 lines
4.1 KiB
JSON

{
"actions": {
"cancel": "Cancel",
"close": "Close",
"confirm": "Confirm",
"save": "Save",
"delete": "Delete",
"edit": "Edit",
"new": "New",
"enable": "Enable",
"upgrade": "Upgrade",
"restart": "Restart",
"resetToDefault": "Reset to Default",
"refresh": "Refresh",
"retry": "Retry",
"refreshPage": "Refresh Page",
"showDetails": "Show Details",
"hideDetails": "Hide Details",
"listView": "List View",
"tableView": "Table View",
"pause": "Pause",
"resume": "Resume",
"closeAll": "Close All",
"clear": "Clear",
"previous": "Previous",
"next": "Next"
},
"labels": {
"updateAt": "Update At",
"timeout": "Timeout",
"icon": "Icon",
"name": "Name",
"readOnly": "ReadOnly",
"expireTime": "Expire Time",
"updateTime": "Update Time",
"usedTotal": "Used / Total",
"from": "From",
"password": "Password",
"retryAttempts": "Retry attempts",
"downloaded": "Downloaded",
"uploaded": "Uploaded"
},
"statuses": {
"enabled": "Enabled",
"disabled": "Disabled",
"saving": "Saving...",
"empty": "Empty"
},
"units": {
"milliseconds": "ms",
"seconds": "seconds",
"minutes": "mins",
"hours": "hrs",
"kilobytes": "KB",
"files": "Files"
},
"placeholders": {
"filter": "Filter conditions",
"matchCase": "Match Case",
"matchWholeWord": "Match Whole Word",
"useRegex": "Use Regular Expression"
},
"validation": {
"invalidRegex": "Invalid regular expression"
},
"window": {
"maximize": "Maximize",
"minimize": "Minimize"
},
"editorModes": {
"visualization": "Visualization",
"advanced": "Advanced"
},
"feedback": {
"errors": {
"trafficStats": "Traffic Statistics Error",
"trafficStatsDescription": "The traffic statistics component encountered an error and has been disabled to prevent crashes."
},
"notices": {
"raw": "{{message}}",
"prefixedRaw": "{{prefix}} {{message}}"
},
"notifications": {
"importSuccess": "Profile Imported Successfully",
"importSubscriptionSuccess": "Import subscription successful",
"importWithClashProxy": "Profile Imported with Clash proxy",
"updateAvailable": "Update Available",
"saved": "Saved successfully",
"common": {
"copySuccess": "Copy Success",
"saveSuccess": "Configuration saved successfully",
"saveFailed": "Failed to save configuration"
}
},
"validation": {
"config": {
"failed": "Subscription configuration validation failed. Please check the subscription configuration file; modifications have been rolled back.",
"bootFailed": "Boot subscription configuration validation failed. Started with the default configuration; please check the subscription configuration file.",
"coreChangeFailed": "Configuration validation failed when switching the kernel. Started with the default configuration; please check the subscription configuration file.",
"processTerminated": "The validation process has been terminated."
},
"script": {
"syntaxError": "Script syntax error, changes reverted",
"missingMain": "Script error, changes reverted",
"fileNotFound": "File missing, changes reverted",
"fileError": "Script file error, changes reverted"
},
"yaml": {
"syntaxError": "YAML syntax error, changes reverted",
"readError": "YAML read error, changes reverted",
"mappingError": "YAML mapping error, changes reverted",
"keyError": "YAML key error, changes reverted",
"generalError": "YAML error, changes reverted"
},
"merge": {
"syntaxError": "Merge file syntax error, changes reverted",
"mappingError": "Merge file mapping error, changes reverted",
"keyError": "Merge file key error, changes reverted",
"generalError": "Merge file error, changes reverted"
}
}
},
"filters": {
"logLevels": {
"all": "ALL",
"debug": "DEBUG",
"info": "INFO",
"warn": "WARN",
"error": "ERROR"
}
}
}