diff --git a/src/locales/ach-UG/translation.json b/src/locales/ach-UG/translation.json index e7cff88a7..d63f8e58d 100644 --- a/src/locales/ach-UG/translation.json +++ b/src/locales/ach-UG/translation.json @@ -415,6 +415,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 1084105b5..8e767a7cd 100644 --- a/src/locales/de-DE/translation.json +++ b/src/locales/de-DE/translation.json @@ -424,6 +424,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 f4427b6b0..02f6e8ca0 100644 --- a/src/locales/en-US/translation.json +++ b/src/locales/en-US/translation.json @@ -424,6 +424,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 c6c959f84..fd50f0047 100644 --- a/src/locales/ja-JP/translation.json +++ b/src/locales/ja-JP/translation.json @@ -424,6 +424,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 f62027cf5..43405818e 100644 --- a/src/locales/ru-RU/translation.json +++ b/src/locales/ru-RU/translation.json @@ -424,6 +424,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 79f1b48bb..82e8b6492 100644 --- a/src/locales/vi-VN/translation.json +++ b/src/locales/vi-VN/translation.json @@ -424,6 +424,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 309e7c57c..06faf99b1 100644 --- a/src/locales/zh-CN/translation.json +++ b/src/locales/zh-CN/translation.json @@ -424,6 +424,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 d9f1f0292..94ef74073 100644 --- a/src/locales/zh-TW/translation.json +++ b/src/locales/zh-TW/translation.json @@ -424,6 +424,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) {