From b563ab1355cec6c08ebdc7a369a98c846c682d80 Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Sun, 8 Feb 2026 12:39:45 +0900 Subject: [PATCH] =?UTF-8?q?ScriptEditor:=20=E8=84=9A=E6=9C=AC=E5=90=8D?= =?UTF-8?q?=E7=A7=B0=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/locales/ach-UG/translation.json | 3 ++ src/locales/de-DE/translation.json | 3 ++ src/locales/en-US/translation.json | 3 ++ src/locales/ja-JP/translation.json | 3 ++ src/locales/ru-RU/translation.json | 3 ++ src/locales/vi-VN/translation.json | 3 ++ src/locales/zh-CN/translation.json | 3 ++ src/locales/zh-TW/translation.json | 3 ++ .../options/routes/script/ScriptEditor.tsx | 30 +++++++++++++++++++ 9 files changed, 54 insertions(+) diff --git a/src/locales/ach-UG/translation.json b/src/locales/ach-UG/translation.json index 980f4a4e9..c18b97884 100644 --- a/src/locales/ach-UG/translation.json +++ b/src/locales/ach-UG/translation.json @@ -413,6 +413,9 @@ "edit_conflict": "Edit Conflict", "confirm_override_when_edit_conflict": "This script was edited in another instance. Replacing it will overwrite those changes. Would you like to keep this version instead?", "save_abort_when_edit_conflict": "The script was edited in another instance. Save aborted.", + "scriptname_conflict": "Script Name Conflict", + "confirm_save_when_scriptname_conflict": "This script name is already used by another script. Do you still want to save it?", + "save_abort_when_scriptname_conflict": "This script name is already used by another script. Save aborted.", "eslint_config_format_error": "crwdns8614:0crwdne8614:0", "export_success": "crwdns8616:0crwdne8616:0", "get_backup_dir_url_failed": "crwdns8618:0crwdne8618:0", diff --git a/src/locales/de-DE/translation.json b/src/locales/de-DE/translation.json index 4a3fec5ef..87ae80cae 100644 --- a/src/locales/de-DE/translation.json +++ b/src/locales/de-DE/translation.json @@ -422,6 +422,9 @@ "edit_conflict": "Bearbeitungskonflikt", "confirm_override_when_edit_conflict": "Dieses Skript wurde in einer anderen Instanz bearbeitet. Beim Ersetzen werden diese Änderungen überschrieben. Möchten Sie stattdessen diese Version behalten?", "save_abort_when_edit_conflict": "Dieses Skript wurde in einer anderen Instanz bearbeitet. Speichern abgebrochen.", + "scriptname_conflict": "Skriptname-Konflikt", + "confirm_save_when_scriptname_conflict": "Dieser Skriptname wird bereits von einem anderen Skript verwendet. Möchten Sie ihn trotzdem speichern?", + "save_abort_when_scriptname_conflict": "Dieser Skriptname wird bereits von einem anderen Skript verwendet. Speichern abgebrochen.", "eslint_config_format_error": "eslint-Konfigurationsformat-Fehler", "export_success": "Export erfolgreich", "get_backup_dir_url_failed": "Backup-Verzeichnis-Adresse abrufen fehlgeschlagen", diff --git a/src/locales/en-US/translation.json b/src/locales/en-US/translation.json index 1420a0701..8b6e567fa 100644 --- a/src/locales/en-US/translation.json +++ b/src/locales/en-US/translation.json @@ -422,6 +422,9 @@ "edit_conflict": "Edit Conflict", "confirm_override_when_edit_conflict": "This script was edited in another instance. Replacing it will overwrite those changes. Would you like to keep this version instead?", "save_abort_when_edit_conflict": "The script was edited in another instance. Save aborted.", + "scriptname_conflict": "Script Name Conflict", + "confirm_save_when_scriptname_conflict": "This script name is already used by another script. Do you still want to save it?", + "save_abort_when_scriptname_conflict": "This script name is already used by another script. Save aborted.", "eslint_config_format_error": "eslint configuration format error", "export_success": "Dump success saved", "get_backup_dir_url_failed": "Failed to get backup directory address", diff --git a/src/locales/ja-JP/translation.json b/src/locales/ja-JP/translation.json index 64861f93e..a1792f6e0 100644 --- a/src/locales/ja-JP/translation.json +++ b/src/locales/ja-JP/translation.json @@ -422,6 +422,9 @@ "edit_conflict": "編集の競合", "confirm_override_when_edit_conflict": "このスクリプトは別のインスタンスで編集されています。置き換えるとその変更は上書きされます。このバージョンを保持しますか?", "save_abort_when_edit_conflict": "このスクリプトは別のインスタンスで編集されています。保存は中止されました。", + "scriptname_conflict": "スクリプト名の競合", + "confirm_save_when_scriptname_conflict": "このスクリプト名はすでに別のスクリプトで使用されています。それでも保存しますか?", + "save_abort_when_scriptname_conflict": "このスクリプト名はすでに別のスクリプトで使用されています。保存を中止しました。", "eslint_config_format_error": "ESLint設定フォーマットエラー", "export_success": "エクスポートに成功しました", "get_backup_dir_url_failed": "バックアップディレクトリアドレスの取得に失敗しました", diff --git a/src/locales/ru-RU/translation.json b/src/locales/ru-RU/translation.json index 0650cf11b..bfd7d21b5 100644 --- a/src/locales/ru-RU/translation.json +++ b/src/locales/ru-RU/translation.json @@ -422,6 +422,9 @@ "edit_conflict": "Конфликт редактирования", "confirm_override_when_edit_conflict": "Этот скрипт был изменён в другом экземпляре. Замена приведёт к перезаписи этих изменений. Хотите сохранить эту версию?", "save_abort_when_edit_conflict": "Скрипт был изменён в другом экземпляре. Сохранение отменено.", + "scriptname_conflict": "Конфликт имени скрипта", + "confirm_save_when_scriptname_conflict": "Это имя скрипта уже используется другим скриптом. Вы всё равно хотите сохранить его?", + "save_abort_when_scriptname_conflict": "Это имя скрипта уже используется другим скриптом. Сохранение отменено.", "eslint_config_format_error": "Ошибка формата конфигурации ESLint", "export_success": "Экспорт успешен", "get_backup_dir_url_failed": "Ошибка получения адреса папки резервных копий", diff --git a/src/locales/vi-VN/translation.json b/src/locales/vi-VN/translation.json index aa1a6d4c8..123b7b669 100644 --- a/src/locales/vi-VN/translation.json +++ b/src/locales/vi-VN/translation.json @@ -422,6 +422,9 @@ "edit_conflict": "Xung đột chỉnh sửa", "confirm_override_when_edit_conflict": "Tập lệnh này đã được chỉnh sửa ở một phiên bản khác. Việc thay thế sẽ ghi đè các thay đổi đó. Bạn có muốn giữ phiên bản này không?", "save_abort_when_edit_conflict": "Tập lệnh đã được chỉnh sửa ở một phiên bản khác. Đã hủy lưu.", + "scriptname_conflict": "Xung đột tên script", + "confirm_save_when_scriptname_conflict": "Tên script này đã được sử dụng bởi một script khác. Bạn vẫn muốn lưu chứ?", + "save_abort_when_scriptname_conflict": "Tên script này đã được sử dụng bởi một script khác. Đã hủy lưu.", "eslint_config_format_error": "Lỗi định dạng cấu hình eslint", "export_success": "Đổ dữ liệu thành công đã lưu", "get_backup_dir_url_failed": "Không thể lấy địa chỉ thư mục sao lưu", diff --git a/src/locales/zh-CN/translation.json b/src/locales/zh-CN/translation.json index 5f55f5df1..07483f8cd 100644 --- a/src/locales/zh-CN/translation.json +++ b/src/locales/zh-CN/translation.json @@ -422,6 +422,9 @@ "edit_conflict": "编辑冲突", "confirm_override_when_edit_conflict": "此脚本已在其他实例中被修改。替换将覆盖这些更改。是否要保留此版本?", "save_abort_when_edit_conflict": "该脚本已在其他实例中被修改,保存已中止。", + "scriptname_conflict": "脚本名称冲突", + "confirm_save_when_scriptname_conflict": "该脚本名称已被其他脚本使用,是否仍要保存?", + "save_abort_when_scriptname_conflict": "该脚本名称已被其他脚本使用,已取消保存。", "eslint_config_format_error": "ESLint配置格式错误", "export_success": "导出成功", "get_backup_dir_url_failed": "获取备份目录地址失败", diff --git a/src/locales/zh-TW/translation.json b/src/locales/zh-TW/translation.json index 9cce86015..2095d805e 100644 --- a/src/locales/zh-TW/translation.json +++ b/src/locales/zh-TW/translation.json @@ -422,6 +422,9 @@ "edit_conflict": "編輯衝突", "confirm_override_when_edit_conflict": "此腳本已在其他實例中被修改。替換將覆蓋這些變更。是否要保留此版本?", "save_abort_when_edit_conflict": "此腳本已在其他實例中被修改,已中止儲存。", + "scriptname_conflict": "腳本名稱衝突", + "confirm_save_when_scriptname_conflict": "此腳本名稱已被其他腳本使用,是否仍要儲存?", + "save_abort_when_scriptname_conflict": "此腳本名稱已被其他腳本使用,已取消儲存。", "eslint_config_format_error": "ESLint設定格式錯誤", "export_success": "匯出成功", "get_backup_dir_url_failed": "取得備份目錄網址失敗", diff --git a/src/pages/options/routes/script/ScriptEditor.tsx b/src/pages/options/routes/script/ScriptEditor.tsx index d9a6ca5bf..c1951c629 100644 --- a/src/pages/options/routes/script/ScriptEditor.tsx +++ b/src/pages/options/routes/script/ScriptEditor.tsx @@ -240,6 +240,36 @@ function ScriptEditor() { return prepareScriptByCode(code, existingScript.origin || "", targetUUID, false, scriptDAO, { byEditor: true }) .then(async (prepareScript) => { const { script, oldScript } = prepareScript; + // 新增/更改名字时,有相同名字的脚本的话,提醒一下是否真的储存 + if ( + (!oldScript || oldScript.name !== script.name || oldScript.namespace !== script.namespace) && + script.name && + script.namespace + ) { + const searchResult = await scriptDAO.findByNameAndNamespace(script.name, script.namespace); + if (searchResult && searchResult.uuid !== targetUUID) { + const modalResult = await new Promise((resolve) => { + modal.confirm!({ + focusLock: false, + simple: false, + closable: true, + title: t("scriptname_conflict"), + content: t("confirm_save_when_scriptname_conflict"), + onOk: () => { + resolve("yes"); + }, + onCancel: () => { + resolve("no"); + }, + }); + }); + setTimeout(e.focus.bind(e), 50); + if (modalResult === "no") { + Message.warning(t("save_abort_when_scriptname_conflict")); + return Promise.reject(new Error("This script name is already used by another script. Save aborted.")); + } + } + } if (targetUUID) { if (existingScript.createtime !== 0) { if (!oldScript || oldScript.uuid !== targetUUID) {