window.__ModuleLoader__.load({ id: "dsh-plugin-english", factory: (require) => { var module = { exports: {} }; var exports = module.exports; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name2 in all) __defProp(target, name2, { get: all[name2], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/client/index.ts var index_exports = {}; __export(index_exports, { apply: () => apply, inject: () => inject, name: () => name }); module.exports = __toCommonJS(index_exports); // src/client/dictionary.ts var DICTIONARY = { // Navigation & Core Concepts "\u6280\u80FD\u7BA1\u7406": "Skills Manager", "\u6280\u80FD\u7BA1\u7406\u5668": "Skills Manager", "\u6280\u80FD\u5217\u8868": "Skills List", "\u5DF2\u5B89\u88C5\u6280\u80FD": "Installed Skills", "\u53EF\u7528\u6280\u80FD": "Available Skills", "\u53D1\u73B0\u6280\u80FD": "Discover Skills", "\u4ED3\u5E93\u8BA2\u9605": "Repository Subscriptions", "\u4ED3\u5E93\u7BA1\u7406": "Repositories", "\u6280\u80FD\u6765\u6E90": "Skill Sources", "\u5168\u5C40\u6280\u80FD": "Global Skills", "\u9879\u76EE\u6280\u80FD": "Project Skills", "\u4F1A\u8BDD\u6280\u80FD": "Session Skills", "\u56DE\u6536\u7AD9": "Trash", "\u8BCA\u65AD\u5F02\u5E38": "Diagnostics", "\u5F02\u5E38\u8BCA\u65AD": "Diagnostics", // Actions & Buttons "\u68C0\u67E5\u66F4\u65B0": "Check Updates", "\u6B63\u5728\u68C0\u67E5\u66F4\u65B0\u2026": "Checking for updates...", "\u6B63\u5728\u68C0\u67E5\u66F4\u65B0...": "Checking for updates...", "\u68C0\u67E5\u5E76\u66F4\u65B0": "Check & Update", "\u66F4\u65B0": "Update", "\u5DF2\u662F\u6700\u65B0": "Up to date", "\u53EF\u66F4\u65B0": "Update Available", "\u7ACB\u5373\u66F4\u65B0": "Update Now", "\u786E\u8BA4\u66F4\u65B0": "Confirm Update", "\u56DE\u6EDA": "Rollback", "\u786E\u8BA4\u56DE\u6EDA": "Confirm Rollback", "\u6062\u590D": "Restore", "\u5220\u9664": "Delete", "\u6C38\u4E45\u5220\u9664": "Permanently Delete", "\u6E05\u7A7A\u56DE\u6536\u7AD9": "Empty Trash", "\u79FB\u5165\u56DE\u6536\u7AD9": "Move to Trash", "\u5BFC\u5165": "Import", "\u5BFC\u5165\u6280\u80FD": "Import Skill", "\u5BFC\u51FA": "Export", "\u5BFC\u51FA\u6280\u80FD": "Export Skill", "\u65B0\u5EFA\u6280\u80FD": "New Skill", "\u521B\u5EFA\u6280\u80FD": "Create Skill", "\u5237\u65B0": "Refresh", "\u542F\u7528": "Enable", "\u505C\u7528": "Disable", "\u5DF2\u542F\u7528": "Enabled", "\u5DF2\u505C\u7528": "Disabled", "\u5168\u90E8\u542F\u7528": "Enable All", "\u5168\u90E8\u505C\u7528": "Disable All", "\u5B89\u88C5": "Install", "\u5DF2\u5B89\u88C5": "Installed", "\u5378\u8F7D": "Uninstall", "\u67E5\u770B": "View", "\u67E5\u770B\u8BE6\u60C5": "View Details", "\u67E5\u770B\u8BF4\u660E": "View Docs", "\u4FDD\u5B58": "Save", "\u53D6\u6D88": "Cancel", "\u5173\u95ED": "Close", "\u786E\u5B9A": "OK", "\u590D\u5236": "Copy", "\u590D\u5236\u6210\u529F": "Copied", "\u641C\u7D22": "Search", "\u91CD\u8BD5": "Retry", // Status & Counts "\u5168\u90E8": "All", "\u72B6\u6001": "Status", "\u7C7B\u578B": "Type", "\u540D\u79F0": "Name", "\u7248\u672C": "Version", "\u64CD\u4F5C": "Actions", "\u6765\u6E90": "Source", "\u8DEF\u5F84": "Path", "\u63CF\u8FF0": "Description", "\u8BE6\u60C5": "Details", "\u5927\u5C0F": "Size", "\u66F4\u65B0\u65F6\u95F4": "Updated", "\u521B\u5EFA\u65F6\u95F4": "Created", "\u4E2A\u6280\u80FD": " skills", "\u4E2A\u5DF2\u542F\u7528": " enabled", "\u4E2A\u5DF2\u505C\u7528": " disabled", "\u4E2A\u88AB\u8986\u76D6": " shadowed", "\u4E2A\u5F85\u5904\u7406\u6280\u80FD": " pending skills", "\u4E2A\u8BCA\u65AD\u5F02\u5E38": " diagnostic issues", // Form Fields & Hints "\u6280\u80FD\u540D\u79F0": "Skill Name", "\u6280\u80FD\u63CF\u8FF0": "Description", "\u6280\u80FD\u5185\u5BB9": "Skill Body", "\u6280\u80FD\u6B63\u6587": "Skill Body", "\u4ED3\u5E93\u5730\u5740": "Repository URL", "\u641C\u7D22\u6280\u80FD": "Search skills...", "\u641C\u7D22\u6280\u80FD\u540D\u79F0\u3001\u63CF\u8FF0\u6216\u6765\u6E90": "Search skills by name, description, or source...", "\u8BF7\u8F93\u5165\u4ED3\u5E93\u5730\u5740": "Enter repository URL...", "\u6CA1\u6709\u627E\u5230\u5339\u914D\u7684\u6280\u80FD": "No matching skills found", "\u6682\u65E0\u6280\u80FD": "No skills available", "\u56DE\u6536\u7AD9\u4E3A\u7A7A": "Trash is empty", "\u52A0\u8F7D\u4E2D\u2026": "Loading...", "\u52A0\u8F7D\u4E2D...": "Loading...", "\u6B63\u5728\u8BFB\u53D6\u8BF4\u660E\u2026": "Loading documentation...", // Settings & Configuration "\u901A\u7528\u8BBE\u7F6E": "General Settings", "\u6A21\u578B\u8BBE\u7F6E": "Model Settings", "\u5916\u89C2\u8BBE\u7F6E": "Appearance", "\u5FEB\u6377\u952E": "Shortcuts", "\u8BED\u8A00": "Language", "\u7B80\u4F53\u4E2D\u6587": "Simplified Chinese", "\u82F1\u6587": "English", // Common Notification & Messages "\u64CD\u4F5C\u6210\u529F": "Operation successful", "\u64CD\u4F5C\u5931\u8D25": "Operation failed", "\u66F4\u65B0\u6210\u529F": "Updated successfully", "\u5220\u9664\u6210\u529F": "Deleted successfully", "\u521B\u5EFA\u6210\u529F": "Created successfully", "\u5BFC\u5165\u6210\u529F": "Imported successfully", "\u5907\u4EFD\u5DF2\u4FDD\u5B58": "Backup saved", "\u6B63\u5728\u52A0\u8F7D": "Loading" }; var PHRASE_PATTERNS = [ [/(\d+)\s*个技能/g, "$1 skills"], [/(\d+)\s*个已启用/g, "$1 enabled"], [/(\d+)\s*个已停用/g, "$1 disabled"], [/(\d+)\s*个被覆盖/g, "$1 shadowed"], [/(\d+)\s*个文件/g, "$1 files"], [/(\d+)\s*个待处理技能/g, "$1 pending skills"], [/(\d+)\s*个诊断异常/g, "$1 diagnostic issues"], [/正在检查更新[…\.]*/g, "Checking for updates..."], [/正在读取说明[…\.]*/g, "Loading documentation..."], [/暂无可用技能/g, "No skills available"], [/暂无数据/g, "No data available"], [/暂无更新/g, "No updates available"], [/无法恢复/g, "cannot be restored"], [/已被覆盖/g, "is shadowed"], [/移入回收站/g, "Move to Trash"], [/永久删除/g, "Permanently Delete"] ]; // src/client/index.ts var name = "dsh-plugin-english-client"; var inject = ["locale", "slots"]; var CHINESE_REGEX = /[\u4e00-\u9fa5]/; function translateText(text) { if (!text || !CHINESE_REGEX.test(text)) return text; const trimmed = text.trim(); if (DICTIONARY[trimmed]) { return text.replace(trimmed, DICTIONARY[trimmed]); } let result = text; for (const [pattern, replacement] of PHRASE_PATTERNS) { result = result.replace(pattern, replacement); } for (const [cn, en] of Object.entries(DICTIONARY)) { if (result.includes(cn)) { result = result.replaceAll(cn, en); } } return result; } function translateNode(node) { if (node.nodeType === Node.TEXT_NODE) { const val = node.nodeValue; if (val && CHINESE_REGEX.test(val)) { const translated = translateText(val); if (translated !== val) { node.nodeValue = translated; } } return; } if (node.nodeType === Node.ELEMENT_NODE) { const el = node; const tagName = el.tagName; if (tagName === "SCRIPT" || tagName === "STYLE" || tagName === "PRE" || tagName === "CODE") { return; } for (const attr of ["title", "placeholder", "aria-label", "alt"]) { const val = el.getAttribute(attr); if (val && CHINESE_REGEX.test(val)) { el.setAttribute(attr, translateText(val)); } } let child = el.firstChild; while (child) { translateNode(child); child = child.nextSibling; } } } function apply(ctx) { if (ctx.locale && typeof ctx.locale.register === "function") { ctx.effect(() => { if (typeof ctx.locale.subscribe === "function") { ctx.locale.subscribe(() => { if (typeof document !== "undefined") { translateNode(document.body); } }); } }, "dsh-plugin-english: locale observer"); } if (typeof document !== "undefined") { let pending = false; const queue = /* @__PURE__ */ new Set(); const flushTranslations = () => { pending = false; const nodes = Array.from(queue); queue.clear(); for (const n of nodes) { if (n.isConnected) { translateNode(n); } } }; const observer = new MutationObserver((mutations) => { for (const m of mutations) { if (m.type === "childList") { for (let i = 0; i < m.addedNodes.length; i++) { const n = m.addedNodes[i]; if (n.nodeType === Node.TEXT_NODE || n.nodeType === Node.ELEMENT_NODE) { queue.add(n); } } } else if (m.type === "characterData") { queue.add(m.target); } else if (m.type === "attributes") { queue.add(m.target); } } if (!pending && queue.size > 0) { pending = true; window.requestAnimationFrame(flushTranslations); } }); translateNode(document.body); observer.observe(document.body, { childList: true, subtree: true, characterData: true, attributes: true, attributeFilter: ["title", "placeholder", "aria-label", "alt"] }); } } return module.exports; } }); //# sourceMappingURL=client.js.map