Files
PYAS/Interface/static/js/main.js
T
2026-04-29 17:41:00 +08:00

2046 lines
121 KiB
JavaScript

document.addEventListener('DOMContentLoaded', () => {
let currentLang = "english_switch";
let isScanning = false;
const dict = {
"traditional_switch": {
"PYAS Security": "PYAS Security",
"此裝置已受到防護": "此裝置已受到防護",
"智能掃描": "智能掃描",
"此選項可以快速掃病毒": "此選項可以快速掃描病毒",
"日誌導出": "日誌導出",
"此選項可以篩選導出日誌": "此選項可以篩選導出日誌",
"病毒掃描": "病毒掃描",
"此選項可以選擇掃描方式": "此選項可以選擇掃描方式",
"刪除": "刪除",
"選擇": "選擇",
"智能": "智能",
"檔案": "檔案",
"路徑": "路徑",
"全盤": "全盤",
"停止": "停止",
"進程防護": "進程防護",
"此選項可以攔截進程病毒": "此選項可以攔截惡意進程",
"檔案防護": "檔案防護",
"此選項可以攔截檔案變更": "此選項可以攔截惡意檔案變更",
"系統防護": "系統防護",
"此選項可以攔截系統項目": "此選項可以防護系統關鍵項目",
"驅動防護": "驅動防護",
"此選項可以增強自身防護": "此選項可以增強自身防護",
"網路防護": "網路防護",
"此選項可以攔截網路通訊": "此選項可以攔截惡意網路連線",
"自訂防護": "自訂防護",
"此選項可以導入自訂防護": "此選項可以導入自訂防護規則",
"進程管理": "進程管理",
"此選項可以實時查看系統進程": "此選項可以實時查看系統進程",
"垃圾清理": "垃圾清理",
"此選項可以清理暫存垃圾檔案": "此選項可以清理暫存垃圾檔案",
"系統修復": "系統修復",
"此選項可以修復系統註冊項目": "此選項可以修復系統登錄檔項目",
"彈窗攔截": "彈窗攔截",
"此選項可以選擇指定窗口攔截": "此選項可以選擇指定窗口攔截",
"白名單": "白名單",
"此選項可以管理系統白名單": "此選項可以管理系統白名單",
"隔離區": "隔離區",
"此選項可以管理已隔離的檔案": "此選項可以管理已隔離的檔案",
"增強模式": "增強模式",
"此選項可以增強掃描引擎": "此選項可以增強掃描引擎",
"擴展引擎": "擴展引擎",
"此選項可以使用擴展引擎": "此選項可以使用擴展引擎",
"雲端服務": "雲端服務",
"此選項可以上報雲端引擎": "此選項可以將可疑檔案上報至雲端",
"顯色主題": "顯色主題",
"此選項可以選擇主題顏色": "此選項可以選擇主題顏色",
"白色主題": "白色主題",
"紅色主題": "紅色主題",
"黃色主題": "黃色主題",
"綠色主題": "綠色主題",
"藍色主題": "藍色主題",
"黑色主題": "黑色主題",
"顯示語言": "顯示語言",
"此選項可以選擇顯示語言": "此選項可以選擇顯示語言",
"重置選項": "重置選項",
"此選項可以重置所有設定": "此選項可以重置所有設定",
"執行": "執行",
"產品金鑰": "產品金鑰",
"此選項可以啟用產品金鑰": "此選項可以啟用產品金鑰",
"官方網站": "官方網站",
"此選項可以前往官方網站": "此選項可以前往官方網站",
"檢查更新": "檢查更新",
"此選項可以檢查可用更新": "此選項可以檢查可用更新",
"搜尋進程...": "搜尋進程...",
"查看": "查看",
"結束": "結束",
"白名單管理": "白名單管理",
"搜尋檔案...": "搜尋檔案...",
"加入": "加入",
"移除": "移除",
"隔離區管理": "隔離區管理",
"掃描": "掃描",
"搜尋窗口...": "搜尋窗口...",
"搜尋規則...": "搜尋規則...",
"搜尋日誌...": "搜尋日誌...",
"導出": "導出",
"正在初始化中": "正在初始化中",
"檢查更新失敗": "檢查更新失敗",
"發現新版本": "發現新版本",
"當前已是最新版本": "當前已是最新版本",
"請選擇要導出的日誌": "請選擇要導出的日誌",
"確定刪除選取的日誌記錄嗎?": "確定刪除選取的日誌記錄嗎?",
"選取的日誌已刪除。": "選取的日誌已刪除。",
"結束進程?": "結束進程?",
"確定要結束選取的進程嗎?": "確定要結束選取的進程嗎?",
"已清理 ": "已清理 ",
"設定已重置,請重新啟動程式以套用預設值。": "設定已重置,請重新啟動程式以套用預設值。",
"導出成功": "導出成功",
"選取進程路徑:\n": "選取進程路徑:\n",
"對 ": "對 ",
" 執行動作:\n1: 加入白名單\n2: 加入隔離區\n請輸入代碼:": " 執行動作:\n1: 加入白名單\n2: 加入隔離區\n請輸入代碼:",
"請在5秒內點擊目標視窗...": "請在5秒內點擊目標視窗...",
"確認攔截": "確認攔截",
"已修復選取項目": "已修復選取項目",
"修復": "修復",
"提示": "提示",
"錯誤": "錯誤",
"未知路徑": "未知路徑",
"修復系統 MBR": "修復系統 MBR",
"修復系統限制": "修復系統限制",
"修復檔案關聯": "修復檔案關聯",
"修復檔案圖標": "修復檔案圖標",
"修復映像劫持": "修復映像劫持",
"修復桌面壁紙": "修復桌面壁紙",
"正在掃描": "正在掃描",
"正在刪除": "正在刪除",
"選單掃描": "選單掃描",
"此選項可以加入右鍵掃描": "此選項可以加入右鍵掃描"
},
"simplified_switch": {
"PYAS Security": "PYAS Security",
"此裝置已受到防護": "此设备已受到防护",
"智能掃描": "智能扫描",
"此選項可以快速掃病毒": "此选项可以快速扫描病毒",
"日誌導出": "日志导出",
"此選項可以篩選導出日誌": "此选项可以筛选并导出日志",
"病毒掃描": "病毒扫描",
"此選項可以選擇掃描方式": "此选项可以选择扫描方式",
"刪除": "删除",
"選擇": "选择",
"智能": "智能",
"檔案": "文件",
"路徑": "路径",
"全盤": "全盘",
"停止": "停止",
"進程防護": "进程防护",
"此選項可以攔截進程病毒": "此选项可以拦截恶意进程",
"檔案防護": "文件防护",
"此選項可以攔截檔案變更": "此选项可以拦截恶意文件变更",
"系統防護": "系统防护",
"此選項可以攔截系統項目": "此选项可以防护系统关键项目",
"驅動防護": "驱动防护",
"此選項可以增強自身防護": "此选项可以增强自身防护",
"網路防護": "网络防护",
"此選項可以攔截網路通訊": "此选项可以拦截恶意网络连线",
"自訂防護": "自订防护",
"此選項可以導入自訂防護": "此选项可以导入自订防护规则",
"進程管理": "进程管理",
"此選項可以實時查看系統進程": "此选项可以实时查看系统进程",
"垃圾清理": "垃圾清理",
"此選項可以清理暫存垃圾檔案": "此选项可以清理暂存垃圾文件",
"系統修復": "系统修复",
"此選項可以修復系統註冊項目": "此选项可以修复系统注册表项目",
"彈窗攔截": "弹窗拦截",
"此選項可以選擇指定窗口攔截": "此选项可以选择指定窗口拦截",
"白名單": "白名单",
"此選項可以管理系統白名單": "此选项可以管理系统白名单",
"隔離區": "隔离区",
"此選項可以管理已隔離的檔案": "此选项可以管理已隔离的文件",
"增強模式": "增强模式",
"此選項可以增強掃描引擎": "此选项可以增强扫描引擎",
"擴展引擎": "扩展引擎",
"此選項可以使用擴展引擎": "此选项可以使用扩展引擎",
"雲端服務": "云端服务",
"此選項可以上報雲端引擎": "此选项可以将可疑文件上报至云端",
"顯色主題": "显色主题",
"此選項可以選擇主題顏色": "此选项可以选择主题颜色",
"白色主題": "白色主题",
"紅色主題": "红色主题",
"黃色主題": "黄色主题",
"綠色主題": "绿色主题",
"藍色主題": "蓝色主题",
"黑色主題": "黑色主题",
"顯示語言": "显示语言",
"此選項可以選擇顯示語言": "此选项可以选择显示语言",
"重置選項": "重置选项",
"此選項可以重置所有設定": "此选项可以重置所有设定",
"執行": "执行",
"產品金鑰": "产品密钥",
"此選項可以啟用產品金鑰": "此选项可以启用产品密钥",
"官方網站": "官方网站",
"此選項可以前往官方網站": "此选项可以前往官方网站",
"檢查更新": "检查更新",
"此選項可以檢查可用更新": "此选项可以检查可用更新",
"搜尋進程...": "搜索进程...",
"查看": "查看",
"結束": "结束",
"白名單管理": "白名单管理",
"搜尋檔案...": "搜索文件...",
"加入": "加入",
"移除": "移除",
"隔離區管理": "隔离区管理",
"掃描": "扫描",
"搜尋窗口...": "搜索窗口...",
"搜尋規則...": "搜索规则...",
"搜尋日誌...": "搜索日志...",
"導出": "导出",
"正在初始化中": "正在初始化中",
"檢查更新失敗": "检查更新失败",
"發現新版本": "发现新版本",
"當前已是最新版本": "当前已是最新版本",
"請選擇要導出的日誌": "请选择要导出的日志",
"確定刪除選取的日誌記錄嗎?": "确定删除选取的日志记录吗?",
"選取的日誌已刪除。": "选取的日志已删除。",
"結束進程?": "结束进程?",
"確定要結束選取的進程嗎?": "确定要结束选取的进程吗?",
"已清理 ": "已清理 ",
"設定已重置,請重新啟動程式以套用預設值。": "设定已重置,请重新启动程序以应用默认值。",
"導出成功": "导出成功",
"選取進程路徑:\n": "选取进程路径:\n",
"對 ": "对 ",
" 執行動作:\n1: 加入白名單\n2: 加入隔離區\n請輸入代碼:": " 执行动作:\n1: 加入白名单\n2: 加入隔离区\n请输入代码:",
"請在5秒內點擊目標視窗...": "请在5秒内点击目标窗口...",
"確認攔截": "确认拦截",
"已修復選取項目": "已修复选取项目",
"修復": "修复",
"提示": "提示",
"錯誤": "错误",
"未知路徑": "未知路径",
"修復系統 MBR": "修复系统 MBR",
"修復系統限制": "修复系统限制",
"修復檔案關聯": "修复文件关联",
"修復檔案圖標": "修复文件图标",
"修復映像劫持": "修复映像劫持",
"修復桌面壁紙": "修复桌面壁纸",
"正在掃描": "正在扫描",
"正在刪除": "正在删除",
"選單掃描": "菜单扫描",
"此選項可以加入右鍵掃描": "此选项可以加入右键扫描菜单"
},
"english_switch": {
"PYAS Security": "PYAS Security",
"此裝置已受到防護": "This Device is Protected",
"智能掃描": "Smart Scan",
"此選項可以快速掃病毒": "Quickly scan for viruses",
"日誌導出": "Export Logs",
"此選項可以篩選導出日誌": "Filter and export system logs",
"病毒掃描": "Virus Scan",
"此選項可以選擇掃描方式": "Select a scanning method",
"刪除": "Delete",
"選擇": "Select",
"智能": "Smart",
"檔案": "File",
"路徑": "Path",
"全盤": "Full",
"停止": "Stop",
"進程防護": "Process Protection",
"此選項可以攔截進程病毒": "Block malicious processes",
"檔案防護": "File Protection",
"此選項可以攔截檔案變更": "Block malicious file modifications",
"系統防護": "System Protection",
"此選項可以攔截系統項目": "Protect critical system components",
"驅動防護": "Driver Protection",
"此選項可以增強自身防護": "Enhance self-defense mechanisms",
"網路防護": "Network Protection",
"此選項可以攔截網路通訊": "Block malicious network connections",
"自訂防護": "Custom Protection",
"此選項可以導入自訂防護": "Import custom protection rules",
"進程管理": "Process Manager",
"此選項可以實時查看系統進程": "Monitor real-time system processes",
"垃圾清理": "Junk Cleanup",
"此選項可以清理暫存垃圾檔案": "Clean temporary and junk files",
"系統修復": "System Repair",
"此選項可以修復系統註冊項目": "Repair system registry items",
"彈窗攔截": "Popup Blocker",
"此選項可以選擇指定窗口攔截": "Block specific popup windows",
"白名單": "Whitelist",
"此選項可以管理系統白名單": "Manage system whitelist",
"隔離區": "Quarantine",
"此選項可以管理已隔離的檔案": "Manage quarantined files",
"增強模式": "Enhanced Mode",
"此選項可以增強掃描引擎": "Enhance the scanning engine",
"擴展引擎": "Extension Engine",
"此選項可以使用擴展引擎": "Enable external extension engines",
"雲端服務": "Cloud Service",
"此選項可以上報雲端引擎": "Report suspicious files to the cloud",
"顯色主題": "Color Theme",
"此選項可以選擇主題顏色": "Select application color theme",
"白色主題": "Light Mode",
"紅色主題": "Red Theme",
"黃色主題": "Yellow Theme",
"綠色主題": "Green Theme",
"藍色主題": "Blue Theme",
"黑色主題": "Dark Mode",
"顯示語言": "Display Language",
"此選項可以選擇顯示語言": "Select application display language",
"重置選項": "Reset Options",
"此選項可以重置所有設定": "Restore all settings to default",
"執行": "Execute",
"產品金鑰": "Product Key",
"此選項可以啟用產品金鑰": "Activate your product key",
"官方網站": "Official Website",
"此選項可以前往官方網站": "Visit our official website",
"檢查更新": "Check for Updates",
"此選項可以檢查可用更新": "Check for the latest updates",
"搜尋進程...": "Search processes...",
"查看": "View",
"結束": "End Task",
"白名單管理": "Whitelist Manager",
"搜尋檔案...": "Search files...",
"加入": "Add",
"移除": "Remove",
"隔離區管理": "Quarantine Manager",
"掃描": "Scan",
"搜尋窗口...": "Search windows...",
"搜尋規則...": "Search rules...",
"搜尋日誌...": "Search logs...",
"導出": "Export",
"正在初始化中": "Initializing...",
"檢查更新失敗": "Check update failed",
"發現新版本": "New version found",
"當前已是最新版本": "Currently at latest version",
"請選擇要導出的日誌": "Please select logs to export",
"確定刪除選取的日誌記錄嗎?": "Are you sure you want to delete selected logs?",
"選取的日誌已刪除。": "Selected logs have been deleted.",
"結束進程?": "End process?",
"確定要結束選取的進程嗎?": "Are you sure you want to end the selected processes?",
"已清理 ": "Cleaned ",
"設定已重置,請重新啟動程式以套用預設值。": "Settings reset. Please restart the application to apply defaults.",
"導出成功": "Export successful",
"選取進程路徑:\n": "Selected process paths:\n",
"對 ": "Action for ",
" 執行動作:\n1: 加入白名單\n2: 加入隔離區\n請輸入代碼:": ":\n1: Add to Whitelist\n2: Add to Quarantine\nEnter code:",
"請在5秒內點擊目標視窗...": "Click the target window within 5s...",
"確認攔截": "Confirm Block",
"已修復選取項目": "Selected items repaired",
"修復": "Repair",
"提示": "Prompt",
"錯誤": "Error",
"未知路徑": "Unknown Path",
"修復系統 MBR": "Repair System MBR",
"修復系統限制": "Repair System Restrictions",
"修復檔案關聯": "Repair File Associations",
"修復檔案圖標": "Repair File Icons",
"修復映像劫持": "Repair Image Hijacking",
"修復桌面壁紙": "Repair Desktop Wallpaper",
"正在掃描": "Scanning...",
"正在刪除": "Deleting...",
"選單掃描": "Context Menu Scan",
"此選項可以加入右鍵掃描": "Add scan option to right-click menu"
},
"japanese_switch": {
"PYAS Security": "PYAS Security",
"此裝置已受到防護": "このデバイスは保護されています",
"智能掃描": "スマートスキャン",
"此選項可以快速掃病毒": "ウイルスを迅速にスキャンします",
"日誌導出": "ログのエクスポート",
"此選項可以篩選導出日誌": "システムログをフィルタリングしてエクスポートします",
"病毒掃描": "ウイルススキャン",
"此選項可以選擇掃描方式": "スキャン方法を選択します",
"刪除": "削除",
"選擇": "選択",
"智能": "スマート",
"檔案": "ファイル",
"路徑": "パス",
"全盤": "フル",
"停止": "停止",
"進程防護": "プロセス保護",
"此選項可以攔截進程病毒": "悪意のあるプロセスをブロックします",
"檔案防護": "ファイル保護",
"此選項可以攔截檔案變更": "悪意のあるファイル変更をブロックします",
"系統防護": "システム保護",
"此選項可以攔截系統項目": "重要なシステムコンポーネントを保護します",
"驅動防護": "ドライバー保護",
"此選項可以增強自身防護": "自己防衛メカニズムを強化します",
"網路防護": "ネットワーク保護",
"此選項可以攔截網路通訊": "悪意のあるネットワーク接続をブロックします",
"自訂防護": "カスタム保護",
"此選項可以導入自訂防護": "カスタム保護ルールをインポートします",
"進程管理": "プロセス管理",
"此選項可以實時查看系統進程": "システムプロセスをリアルタイムで監視します",
"垃圾清理": "ジャンククリーンアップ",
"此選項可以清理暫存垃圾檔案": "一時ファイルやジャンクファイルをクリーンアップします",
"系統修復": "システム修復",
"此選項可以修復系統註冊項目": "システムレジストリ項目を修復します",
"彈窗攔截": "ポップアップブロック",
"此選項可以選擇指定窗口攔截": "特定のポップアップウィンドウをブロックします",
"白名單": "ホワイトリスト",
"此選項可以管理系統白名單": "システムのホワイトリストを管理します",
"隔離區": "隔離",
"此選項可以管理已隔離的檔案": "隔離されたファイルを管理します",
"增強模式": "拡張モード",
"此選項可以增強掃描引擎": "スキャンエンジンを強化します",
"擴展引擎": "拡張エンジン",
"此選項可以使用擴展引擎": "外部拡張エンジンを有効にします",
"雲端服務": "クラウドサービス",
"此選項可以上報雲端引擎": "疑わしいファイルをクラウドに報告します",
"顯色主題": "カラーテーマ",
"此選項可以選擇主題顏色": "アプリケーションのテーマカラーを選択します",
"白色主題": "ライトモード",
"紅色主題": "レッドテーマ",
"黃色主題": "イエローテーマ",
"綠色主題": "グリーンテーマ",
"藍色主題": "ブルーテーマ",
"黑色主題": "ダークモード",
"顯示語言": "表示言語",
"此選項可以選擇顯示語言": "アプリケーションの表示言語を選択します",
"重置選項": "オプションのリセット",
"此選項可以重置所有設定": "すべての設定をデフォルトに戻します",
"執行": "実行",
"產品金鑰": "プロダクトキー",
"此選項可以啟用產品金鑰": "プロダクトキーを有効にします",
"官方網站": "公式サイト",
"此選項可以前往官方網站": "当社の公式サイトにアクセスします",
"檢查更新": "アップデートの確認",
"此選項可以檢查可用更新": "利用可能なアップデートを確認します",
"搜尋進程...": "プロセスを検索...",
"查看": "表示",
"結束": "タスクの終了",
"白名單管理": "ホワイトリスト管理",
"搜尋檔案...": "ファイルを検索...",
"加入": "追加",
"移除": "削除",
"隔離區管理": "隔離管理",
"掃描": "スキャン",
"搜尋窗口...": "ウィンドウを検索...",
"搜尋規則...": "ルールを検索...",
"搜尋日誌...": "ログを検索...",
"導出": "エクスポート",
"正在初始化中": "初期化中...",
"檢查更新失敗": "アップデートの確認に失敗しました",
"發現新版本": "新しいバージョンが見つかりました",
"當前已是最新版本": "現在は最新バージョンです",
"請選擇要導出的日誌": "エクスポートするログを選択してください",
"確定刪除選取的日誌記錄嗎?": "選択したログを削除してもよろしいですか?",
"選取的日誌已刪除。": "選択したログが削除されました。",
"結束進程?": "プロセスを終了しますか?",
"確定要結束選取的進程嗎?": "選択したプロセスを終了してもよろしいですか?",
"已清理 ": "クリーンアップ完了 ",
"設定已重置,請重新啟動程式以套用預設值。": "設定がリセットされました。デフォルトを適用するにはプログラムを再起動してください。",
"導出成功": "エクスポート成功",
"選取進程路徑:\n": "選択されたプロセスのパス:\n",
"對 ": "",
" 執行動作:\n1: 加入白名單\n2: 加入隔離區\n請輸入代碼:": " に対するアクション:\n1: ホワイトリストに追加\n2: 隔離に追加\nコードを入力してください:",
"請在5秒內點擊目標視窗...": "5秒以内にターゲットウィンドウをクリックしてください...",
"確認攔截": "ブロックの確認",
"已修復選取項目": "選択された項目が修復されました",
"修復": "修復",
"提示": "プロンプト",
"錯誤": "エラー",
"未知路徑": "不明なパス",
"修復系統 MBR": "システム MBR の修復",
"修復系統限制": "システム制限の修復",
"修復檔案關聯": "ファイルの関連付けを修復",
"修復檔案圖標": "ファイルアイコンの修復",
"修復映像劫持": "イメージハイジャックの修復",
"修復桌面壁紙": "デスクトップの壁紙を修復",
"正在掃描": "スキャン中...",
"正在刪除": "削除中...",
"選單掃描": "コンテキストメニュースキャン",
"此選項可以加入右鍵掃描": "右クリックメニューにスキャンオプションを追加します"
},
"korean_switch": {
"PYAS Security": "PYAS Security",
"此裝置已受到防護": "이 장치는 보호되고 있습니다",
"智能掃描": "스마트 스캔",
"此選項可以快速掃病毒": "바이러스를 빠르게 스캔합니다",
"日誌導出": "로그 내보내기",
"此選項可以篩選導出日誌": "시스템 로그를 필터링하고 내보냅니다",
"病毒掃描": "바이러스 스캔",
"此選項可以選擇掃描方式": "스캔 방법을 선택합니다",
"刪除": "삭제",
"選擇": "선택",
"智能": "스마트",
"檔案": "파일",
"路徑": "경로",
"全盤": "전체",
"停止": "정지",
"進程防護": "프로세스 보호",
"此選項可以攔截進程病毒": "악성 프로세스를 차단합니다",
"檔案防護": "파일 보호",
"此選項可以攔截檔案變更": "악의적인 파일 변경을 차단합니다",
"系統防護": "시스템 보호",
"此選項可以攔截系統項目": "중요한 시스템 구성 요소를 보호합니다",
"驅動防護": "드라이버 보호",
"此選項可以增強自身防護": "자체 보호 메커니즘을 강화합니다",
"網路防護": "네트워크 보호",
"此選項可以攔截網路通訊": "악의적인 네트워크 연결을 차단합니다",
"自訂防護": "사용자 지정 보호",
"此選項可以導入自訂防護": "사용자 지정 보호 규칙을 가져옵니다",
"進程管理": "프로세스 관리",
"此選項可以實時查看系統進程": "실시간으로 시스템 프로세스를 모니터링합니다",
"垃圾清理": "정크 정리",
"此選項可以清理暫存垃圾檔案": "임시 파일 및 정크 파일을 정리합니다",
"系統修復": "시스템 복구",
"此選項可以修復系統註冊項目": "시스템 레지스트리 항목을 복구합니다",
"彈窗攔截": "팝업 차단",
"此選項可以選擇指定窗口攔截": "특정 팝업 창을 차단합니다",
"白名單": "화이트리스트",
"此選項可以管理系統白名單": "시스템 화이트리스트를 관리합니다",
"隔離區": "격리소",
"此選項可以管理已隔離的檔案": "격리된 파일을 관리합니다",
"增強模式": "고급 모드",
"此選項可以增強掃描引擎": "스캔 엔진을 강화합니다",
"擴展引擎": "확장 엔진",
"此選項可以使用擴展引擎": "외부 확장 엔진을 활성화합니다",
"雲端服務": "클라우드 서비스",
"此選項可以上報雲端引擎": "의심스러운 파일을 클라우드에 보고합니다",
"顯色主題": "색상 테마",
"此選項可以選擇主題顏色": "응용 프로그램 테마 색상을 선택합니다",
"白色主題": "라이트 모드",
"紅色主題": "레드 테마",
"黃色主題": "옐로우 테마",
"綠色主題": "그린 테마",
"藍色主題": "블루 테마",
"黑色主題": "다크 모드",
"顯示語言": "표시 언어",
"此選項可以選擇顯示語言": "응용 프로그램 표시 언어를 선택합니다",
"重置選項": "옵션 초기화",
"此選項可以重置所有設定": "모든 설정을 기본값으로 되돌립니다",
"執行": "실행",
"產品金鑰": "제품 키",
"此選項可以啟用產品金鑰": "제품 키를 활성화합니다",
"官方網站": "공식 웹사이트",
"此選項可以前往官方網站": "공식 웹사이트를 방문합니다",
"檢查更新": "업데이트 확인",
"此選項可以檢查可用更新": "사용 가능한 최신 업데이트를 확인합니다",
"搜尋進程...": "프로세스 검색...",
"查看": "보기",
"結束": "작업 끝내기",
"白名單管理": "화이트리스트 관리",
"搜尋檔案...": "파일 검색...",
"加入": "추가",
"移除": "제거",
"隔離區管理": "격리소 관리",
"掃描": "스캔",
"搜尋窗口...": "창 검색...",
"搜尋規則...": "규칙 검색...",
"搜尋日誌...": "로그 검색...",
"導出": "내보내기",
"正在初始化中": "초기화 중...",
"檢查更新失敗": "업데이트 확인 실패",
"發現新版本": "새 버전을 찾았습니다",
"當前已是最新版本": "현재 최신 버전입니다",
"請選擇要導出的日誌": "내보낼 로그를 선택하십시오",
"確定刪除選取的日誌記錄嗎?": "선택한 로그를 삭제하시겠습니까?",
"選取的日誌已刪除。": "선택한 로그가 삭제되었습니다.",
"結束進程?": "프로세스를 종료하시겠습니까?",
"確定要結束選取的進程嗎?": "선택한 프로세스를 종료하시겠습니까?",
"已清理 ": "정리 완료 ",
"設定已重置,請重新啟動程式以套用預設值。": "설정이 초기화되었습니다. 기본값을 적용하려면 프로그램을 다시 시작하십시오.",
"導出成功": "내보내기 성공",
"選取進程路徑:\n": "선택된 프로세스 경로:\n",
"對 ": "",
" 執行動作:\n1: 加入白名單\n2: 加入隔離區\n請輸入代碼:": "에 대한 작업:\n1: 화이트리스트에 추가\n2: 격리소에 추가\n코드를 입력하십시오:",
"請在5秒內點擊目標視窗...": "5초 이내에 대상 창을 클릭하십시오...",
"確認攔截": "차단 확인",
"已修復選取項目": "선택한 항목이 복구되었습니다",
"修復": "복구",
"提示": "프롬프트",
"錯誤": "오류",
"未知路徑": "알 수 없는 경로",
"修復系統 MBR": "시스템 MBR 복구",
"修復系統限制": "시스템 제한 복구",
"修復檔案關聯": "파일 연결 복구",
"修復檔案圖標": "파일 아이콘 복구",
"修復映像劫持": "이미지 하이재킹 복구",
"修復桌面壁紙": "바탕 화면 배경 무늬 복구",
"正在掃描": "스캔 중...",
"正在刪除": "삭제 중...",
"選單掃描": "컨텍스트 메뉴 스캔",
"此選項可以加入右鍵掃描": "마우스 우클릭 메뉴에 스캔 옵션을 추가합니다"
},
"french_switch": {
"PYAS Security": "PYAS Security",
"此裝置已受到防護": "Cet appareil est protégé",
"智能掃描": "Analyse intelligente",
"此選項可以快速掃病毒": "Analysez rapidement les virus",
"日誌導出": "Exporter les journaux",
"此選項可以篩選導出日誌": "Filtrer et exporter les journaux système",
"病毒掃描": "Analyse antivirus",
"此選項可以選擇掃描方式": "Sélectionnez une méthode d'analyse",
"刪除": "Supprimer",
"選擇": "Sélectionner",
"智能": "Intelligente",
"檔案": "Fichier",
"路徑": "Chemin",
"全盤": "Complète",
"停止": "Arrêter",
"進程防護": "Protection des processus",
"此選項可以攔截進程病毒": "Bloque les processus malveillants",
"檔案防護": "Protection des fichiers",
"此選項可以攔截檔案變更": "Bloque les modifications de fichiers malveillantes",
"系統防護": "Protection du système",
"此選項可以攔截系統項目": "Protège les composants critiques du système",
"驅動防護": "Protection des pilotes",
"此選項可以增強自身防護": "Améliore les mécanismes d'autodéfense",
"網路防護": "Protection réseau",
"此選項可以攔截網路通訊": "Bloque les connexions réseau malveillantes",
"自訂防護": "Protection personnalisée",
"此選項可以導入自訂防護": "Importer des règles de protection personnalisées",
"進程管理": "Gestionnaire de processus",
"此選項可以實時查看系統進程": "Surveille les processus système en temps réel",
"垃圾清理": "Nettoyage des déchets",
"此選項可以清理暫存垃圾檔案": "Nettoie les fichiers temporaires et inutiles",
"系統修復": "Réparation du système",
"此選項可以修復系統註冊項目": "Répare les éléments du registre système",
"彈窗攔截": "Bloqueur de fenêtres contextuelles",
"此選項可以選擇指定窗口攔截": "Bloque les fenêtres contextuelles spécifiques",
"白名單": "Liste blanche",
"此選項可以管理系統白名單": "Gérer la liste blanche du système",
"隔離區": "Quarantaine",
"此選項可以管理已隔離的檔案": "Gérer les fichiers mis en quarantaine",
"增強模式": "Mode amélioré",
"此選項可以增強掃描引擎": "Améliore le moteur d'analyse",
"擴展引擎": "Moteur d'extension",
"此選項可以使用擴展引擎": "Activer les moteurs d'extension externes",
"雲端服務": "Service cloud",
"此選項可以上報雲端引擎": "Signaler les fichiers suspects au cloud",
"顯色主題": "Thème de couleur",
"此選項可以選擇主題顏色": "Sélectionnez le thème de couleur de l'application",
"白色主題": "Mode clair",
"紅色主題": "Thème rouge",
"黃色主題": "Thème jaune",
"綠色主題": "Thème vert",
"藍色主題": "Thème bleu",
"黑色主題": "Mode sombre",
"顯示語言": "Langue d'affichage",
"此選項可以選擇顯示語言": "Sélectionnez la langue d'affichage",
"重置選項": "Réinitialiser",
"此選項可以重置所有設定": "Restaurer tous les paramètres par défaut",
"執行": "Exécuter",
"產品金鑰": "Clé de produit",
"此選項可以啟用產品金鑰": "Activer votre clé de produit",
"官方網站": "Site officiel",
"此選項可以前往官方網站": "Visitez notre site officiel",
"檢查更新": "Vérifier les mises à jour",
"此選項可以檢查可用更新": "Vérifier les dernières mises à jour",
"搜尋進程...": "Rechercher des processus...",
"查看": "Voir",
"結束": "Fin de tâche",
"白名單管理": "Gestionnaire de liste blanche",
"搜尋檔案...": "Rechercher des fichiers...",
"加入": "Ajouter",
"移除": "Retirer",
"隔離區管理": "Gestionnaire de quarantaine",
"掃描": "Analyser",
"搜尋窗口...": "Rechercher des fenêtres...",
"搜尋規則...": "Rechercher des règles...",
"搜尋日誌...": "Rechercher des journaux...",
"導出": "Exporter",
"正在初始化中": "Initialisation...",
"檢查更新失敗": "Échec de la vérification des mises à jour",
"發現新版本": "Nouvelle version trouvée",
"當前已是最新版本": "Actuellement à la dernière version",
"請選擇要導出的日誌": "Veuillez sélectionner les journaux à exporter",
"確定刪除選取的日誌記錄嗎?": "Êtes-vous sûr de vouloir supprimer les journaux sélectionnés ?",
"選取的日誌已刪除。": "Les journaux sélectionnés ont été supprimés.",
"結束進程?": "Terminer le processus ?",
"確定要結束選取的進程嗎?": "Êtes-vous sûr de vouloir terminer les processus sélectionnés ?",
"已清理 ": "Nettoyé ",
"設定已重置,請重新啟動程式以套用預設值。": "Paramètres réinitialisés. Veuillez redémarrer l'application.",
"導出成功": "Exportation réussie",
"選取進程路徑:\n": "Chemins des processus sélectionnés :\n",
"對 ": "Action pour ",
" 執行動作:\n1: 加入白名單\n2: 加入隔離區\n請輸入代碼:": " :\n1 : Ajouter à la liste blanche\n2 : Ajouter à la quarantaine\nEntrez le code :",
"請在5秒內點擊目標視窗...": "Cliquez sur la fenêtre cible dans les 5s...",
"確認攔截": "Confirmer le blocage",
"已修復選取項目": "Éléments sélectionnés réparés",
"修復": "Réparer",
"提示": "Indication",
"錯誤": "Erreur",
"未知路徑": "Chemin inconnu",
"修復系統 MBR": "Réparer le MBR du système",
"修復系統限制": "Réparer les restrictions du système",
"修復檔案關聯": "Réparer les associations de fichiers",
"修復檔案圖標": "Réparer les icônes de fichiers",
"修復映像劫持": "Réparer le détournement d'image",
"修復桌面壁紙": "Réparer le fond d'écran du bureau",
"正在掃描": "Analyse en cours...",
"正在刪除": "Suppression en cours...",
"選單掃描": "Analyse du menu contextuel",
"此選項可以加入右鍵掃描": "Ajouter l'option d'analyse au menu contextuel"
},
"spanish_switch": {
"PYAS Security": "PYAS Security",
"此裝置已受到防護": "Este dispositivo está protegido",
"智能掃描": "Escaneo inteligente",
"此選項可以快速掃病毒": "Escanea rápidamente en busca de virus",
"日誌導出": "Exportar registros",
"此選項可以篩選導出日誌": "Filtrer y exportar registros del sistema",
"病毒掃描": "Escaneo de virus",
"此選項可以選擇掃描方式": "Seleccione un método de escaneo",
"刪除": "Eliminar",
"選擇": "Seleccionar",
"智能": "Intelligente",
"檔案": "Archivo",
"路徑": "Ruta",
"全盤": "Completo",
"停止": "Detener",
"進程防護": "Protección de procesos",
"此選項可以攔截進程病毒": "Bloquea procesos maliciosos",
"檔案防護": "Protección de archivos",
"此選項可以攔截檔案變更": "Bloquea modificaciones de archivos maliciosos",
"系統防護": "Protección del sistema",
"此選項可以攔截系統項目": "Protege componentes críticos del sistema",
"驅動防護": "Protección de controladores",
"此選項可以增強自身防護": "Mejora los mecanismos de autodefensa",
"網路防護": "Protección de red",
"此選項可以攔截網路通訊": "Bloquea conexiones de red maliciosas",
"自訂防護": "Protección personalizada",
"此選項可以導入自訂防護": "Importar reglas de protección personalizadas",
"進程管理": "Administrador de procesos",
"此選項可以實時查看系統進程": "Monitorea procesos del sistema en tiempo real",
"垃圾清理": "Limpieza de basura",
"此選項可以清理暫存垃圾檔案": "Limpia archivos temporales y basura",
"系統修復": "Reparación del sistema",
"此選項可以修復系統註冊項目": "Repara elementos del registro del sistema",
"彈窗攔截": "Bloqueador de ventanas emergentes",
"此選項可以選擇指定窗口攔截": "Bloquea ventanas emergentes específicas",
"白名單": "Lista blanca",
"此選項可以管理系統白名單": "Gestionar la lista blanca del sistema",
"隔離區": "Cuarentena",
"此選項可以管理已隔離的檔案": "Gestionar archivos en cuarentena",
"增強模式": "Modo mejorado",
"此選項可以增強掃描引擎": "Mejora el motor de escaneo",
"擴展引擎": "Motor de extensión",
"此選項可以使用擴展引擎": "Habilitar motores de extensión externos",
"雲端服務": "Servicio en la nube",
"此選項可以上報雲端引擎": "Reportar archivos sospechosos a la nube",
"顯色主題": "Tema de color",
"此選項可以選擇主題顏色": "Seleccione el tema de color de la aplicación",
"白色主題": "Modo claro",
"紅色主題": "Tema rojo",
"黃色主題": "Tema amarillo",
"綠色主題": "Tema verde",
"藍色主題": "Tema azul",
"黑色主題": "Modo oscuro",
"顯示語言": "Idioma de visualización",
"此選項可以選擇顯示語言": "Seleccione el idioma de visualización",
"重置選項": "Restablecer",
"此選項可以重置所有設定": "Restaurar todos los ajustes predeterminados",
"執行": "Ejecutar",
"產品金鑰": "Clave de producto",
"此選項可以啟用產品金鑰": "Activar clave de producto",
"官方網站": "Sitio web oficial",
"此選項可以前往官方網站": "Visite nuestro sitio web oficial",
"檢查更新": "Buscar actualizaciones",
"此選項可以檢查可用更新": "Comprobar las últimas actualizaciones",
"搜尋進程...": "Buscar procesos...",
"查看": "Ver",
"結束": "Finalizar tarea",
"白名單管理": "Gestor de lista blanca",
"搜尋檔案...": "Buscar archivos...",
"加入": "Añadir",
"移除": "Eliminar",
"隔離區管理": "Gestor de cuarentena",
"掃描": "Escanear",
"搜尋窗口...": "Buscar ventanas...",
"搜尋規則...": "Buscar reglas...",
"搜尋日誌...": "Buscar registros...",
"導出": "Exportar",
"正在初始化中": "Inicializando...",
"檢查更新失敗": "Fallo al buscar actualizaciones",
"發現新版本": "Nueva versión encontrada",
"當前已是最新版本": "Actualmente en la última versión",
"請選擇要導出的日誌": "Seleccione los registros a exportar",
"確定刪除選取的日誌記錄嗎?": "¿Seguro que desea eliminar los registros seleccionados?",
"選取的日誌已刪除。": "Los registros seleccionados han sido eliminados.",
"結束進程?": "¿Finalizar proceso?",
"確定要結束選取的進程嗎?": "¿Seguro que desea finalizar los procesos seleccionados?",
"已清理 ": "Limpiado ",
"設定已重置,請重新啟動程式以套用預設值。": "Ajustes restablecidos. Reinicie la aplicación.",
"導出成功": "Exportación exitosa",
"選取進程路徑:\n": "Rutas de procesos seleccionados:\n",
"對 ": "Acción para ",
" 執行動作:\n1: 加入白名單\n2: 加入隔離區\n請輸入代碼:": ":\n1: Añadir a la lista blanca\n2: Añadir a la cuarentena\nIngrese código:",
"請在5秒內點擊目標視窗...": "Haga clic en la ventana objetivo en 5s...",
"確認攔截": "Confirmar bloqueo",
"已修復選取項目": "Elementos seleccionados reparados",
"修復": "Reparar",
"提示": "Aviso",
"錯誤": "Error",
"未知路徑": "Ruta desconocida",
"修復系統 MBR": "Reparar MBR del sistema",
"修復系統限制": "Reparar restricciones del sistema",
"修復檔案關聯": "Reparar asociaciones de archivos",
"修復檔案圖標": "Reparar iconos de archivos",
"修復映像劫持": "Reparar secuestro de imagen",
"修復桌面壁紙": "Reparar fondo de escritorio",
"正在掃描": "Escaneando...",
"正在刪除": "Eliminando...",
"選單掃描": "Escaneo de menú contextual",
"此選項可以加入右鍵掃描": "Añadir opción de escaneo al menú contextual"
},
"hindi_switch": {
"PYAS Security": "PYAS Security",
"此裝置已受到防護": "यह डिवाइस सुरक्षित है",
"智能掃描": "स्मार्ट स्कैन",
"此選項可以快速掃病毒": "वायरस के लिए जल्दी स्कैन करें",
"日誌導出": "लॉग निर्यात",
"此選項可以篩選導出日誌": "सिस्टम लॉग को फ़िल्टर और निर्यात करें",
"病毒掃描": "वायरस स्कैन",
"此選項可以選擇掃描方式": "एक स्कैनिंग विधि चुनें",
"刪除": "हटाएं",
"選擇": "चुनें",
"智能": "स्मार्ट",
"檔案": "फ़ाइल",
"路徑": "पथ",
"全盤": "पूर्ण",
"停止": "रोकें",
"進程防護": "प्रक्रिया सुरक्षा",
"此選項可以攔截進程病毒": "दुर्भावनापूर्ण प्रक्रियाओं को रोकें",
"檔案防護": "फ़ाइल सुरक्षा",
"此選項可以攔截檔案變更": "दुर्भावनापूर्ण फ़ाइल संशोधनों को रोकें",
"系統防護": "सिस्टम सुरक्षा",
"此選項可以攔截系統項目": "महत्वपूर्ण सिस्टम घटकों की रक्षा करें",
"驅動防護": "ड्राइवर सुरक्षा",
"此選項可以增強自身防護": "आत्मरक्षा तंत्र को बढ़ाएं",
"網路防護": "नेटवर्क सुरक्षा",
"此選項可以攔截網路通訊": "दुर्भावनापूर्ण नेटवर्क कनेक्शन को रोकें",
"自訂防護": "कस्टम सुरक्षा",
"此選項可以導入自訂防護": "कस्टम सुरक्षा नियम आयात करें",
"進程管理": "प्रक्रिया प्रबंधक",
"此選項可以實時查看系統進程": "रीयल-टाइम में सिस्टम प्रक्रियाओं की निगरानी करें",
"垃圾清理": "कचरा सफाई",
"此選項可以清理暫存垃圾檔案": "अस्थायी और कचरा फ़ाइलों को साफ़ करें",
"系統修復": "सिस्टम मरम्मत",
"此選項可以修復系統註冊項目": "सिस्टम रजिस्ट्री आइटम की मरम्मत करें",
"彈窗攔截": "पॉपअप ब्लॉकर",
"此選項可以選擇指定窗口攔截": "विशिष्ट पॉपअप विंडो ब्लॉक करें",
"白名單": "श्वेतसूची",
"此選項可以管理系統白名單": "सिस्टम श्वेतसूची प्रबंधित करें",
"隔離區": "संगरोध",
"此選項可以管理已隔離的檔案": "संगरोधित फ़ाइलों का प्रबंधन करें",
"增強模式": "उन्नत मोड",
"此選項可以增強掃描引擎": "स्कैनिंग इंजन को बढ़ाएं",
"擴展引擎": "विस्तार इंजन",
"此選項可以使用擴展引擎": "बाहरी विस्तार इंजन सक्षम करें",
"雲端服務": "क्लाउड सेवा",
"此選項可以上報雲端引擎": "संदिग्ध फ़ाइलों की क्लाउड पर रिपोर्ट करें",
"顯色主題": "रंग थीम",
"此選項可以選擇主題顏色": "एप्लिकेशन का रंग थीम चुनें",
"白色主題": "लाइट मोड",
"紅色主題": "लाल थीम",
"黃色主題": "पीला थीम",
"綠色主題": "हरा थीम",
"藍色主題": "नीला थीम",
"黑色主題": "डार्क मोड",
"顯示語言": "प्रदर्शन भाषा",
"此選項可以選擇顯示語言": "एप्लिकेशन प्रदर्शन भाषा चुनें",
"重置選項": "रीसेट विकल्प",
"此選項可以重置所有設定": "सभी सेटिंग्स को डिफ़ॉल्ट पर पुनर्स्थापित करें",
"執行": "निष्पादित करें",
"產品金鑰": "उत्पाद कुंजी",
"此選項可以啟用產品金鑰": "अपनी उत्पाद कुंजी सक्रिय करें",
"官方網站": "आधिकारिक वेबसाइट",
"此選項可以前往官方網站": "हमारी आधिकारिक वेबसाइट पर जाएँ",
"檢查更新": "अद्यतन जाँचे",
"此選項可以檢查可用更新": "नवीनतम अपडेट के लिए जाँचें",
"搜尋進程...": "प्रक्रियाएँ खोजें...",
"查看": "देखें",
"結束": "कार्य समाप्त करें",
"白名單管理": "श्वेतसूची प्रबंधक",
"搜尋檔案...": "फ़ाइलें खोजें...",
"加入": "जोड़ें",
"移除": "निकालें",
"隔離區管理": "संगरोध प्रबंधक",
"掃描": "स्कैन",
"搜尋窗口...": "विंडोज़ खोजें...",
"搜尋規則...": "नियम खोजें...",
"搜尋日誌...": "लॉग खोजें...",
"導出": "निर्यात",
"正在初始化中": "प्रारंभ हो रहा है...",
"檢查更新失敗": "अपडेट की जाँच विफल रही",
"發現新版本": "नया संस्करण मिला",
"當前已是最新版本": "वर्तमान में नवीनतम संस्करण है",
"請選擇要導出的日誌": "कृपया निर्यात करने के लिए लॉग चुनें",
"確定刪除選取的日誌記錄嗎?": "क्या आप वाकई चयनित लॉग हटाना चाहते हैं?",
"選取的日誌已刪除。": "चयनित लॉग हटा दिए गए हैं।",
"結束進程?": "प्रक्रिया समाप्त करें?",
"確定要結束選取的進程嗎?": "क्या आप वाकई चयनित प्रक्रियाओं को समाप्त करना चाहते हैं?",
"已清理 ": "साफ़ किया गया ",
"設定已重置,請重新啟動程式以套用預設值。": "सेटिंग्स रीसेट कर दी गईं। डिफ़ॉल्ट लागू करने के लिए एप्लिकेशन पुनः आरंभ करें।",
"導出成功": "सफलतापूर्वक निर्यात किया गया",
"選取進程路徑:\n": "चयनित प्रक्रिया पथ:\n",
"對 ": "कार्रवाई ",
" 執行動作:\n1: 加入白名單\n2: 加入隔離區\n請輸入代碼:": " के लिए:\n1: श्वेतसूची में जोड़ें\n2: संगरोध में जोड़ें\nकोड दर्ज करें:",
"請在5秒內點擊目標視窗...": "5 सेकंड के भीतर लक्ष्य विंडो पर क्लिक करें...",
"確認攔截": "ब्लॉक की पुष्टि करें",
"已修復選取項目": "चयनित आइटम मरम्मत किए गए",
"修復": "मरम्मत",
"提示": "सुझाव",
"錯誤": "त्रुटि",
"未知路徑": "अज्ञात पथ",
"修復系統 MBR": "सिस्टम MBR की मरम्मत",
"修復系統限制": "सिस्टम प्रतिबंधों की मरम्मत",
"修復檔案關聯": "फ़ाइल संघों की मरम्मत",
"修復檔案圖標": "फ़ाइल आइकन की मरम्मत",
"修復映像劫持": "छवि अपहरण की मरम्मत",
"修復桌面壁紙": "डेस्कटॉप वॉलपेपर की मरम्मत",
"正在掃描": "स्कैन कर रहा है...",
"正在刪除": "हटा रहा है...",
"選單掃描": "संदर्भ मेनू स्कैन",
"此選項可以加入右鍵掃描": "राइट-क्लिक मेनू में स्कैन विकल्प जोड़ें"
},
"arabic_switch": {
"PYAS Security": "PYAS Security",
"此裝置已受到防護": "هذا الجهاز محمي",
"智能掃描": "فحص ذكي",
"此選項可以快速掃病毒": "فحص سريع للفيروسات",
"日誌導出": "تصدير السجلات",
"此選項可以篩選導出日誌": "تصفية وتصدير سجلات النظام",
"病毒掃描": "فحص الفيروسات",
"此選項可以選擇掃描方式": "حدد طريقة الفحص",
"刪除": "حذف",
"選擇": "تحديد",
"智能": "ذكي",
"檔案": "ملف",
"路徑": "مسار",
"全盤": "شامل",
"停止": "إيقاف",
"進程防護": "حماية العمليات",
"此選項可以攔截進程病毒": "يمنع العمليات الخبيثة",
"檔案防護": "حماية الملفات",
"此選項可以攔截檔案變更": "يمنع التعديلات الخبيثة على الملفات",
"系統防護": "حماية النظام",
"此選項可以攔截系統項目": "يحمي مكونات النظام الحيوية",
"驅動防護": "حماية برامج التشغيل",
"此選項可以增強自身防護": "يعزز آليات الدفاع الذاتي",
"網路防護": "حماية الشبكة",
"此選項可以攔截網路通訊": "يمنع اتصالات الشبكة الخبيثة",
"自訂防護": "حماية مخصصة",
"此選項可以導入自訂防護": "استيراد قواعد حماية مخصصة",
"進程管理": "مدير العمليات",
"此選項可以實時查看系統進程": "مراقبة عمليات النظام في الوقت الفعلي",
"垃圾清理": "تنظيف المخلفات",
"此選項可以清理暫存垃圾檔案": "تنظيف الملفات المؤقتة والمخلفات",
"系統修復": "إصلاح النظام",
"此選項可以修復系統註冊項目": "إصلاح عناصر سجل النظام",
"彈窗攔截": "حظر النوافذ المنبثقة",
"此選項可以選擇指定窗口攔截": "حظر نوافذ منبثقة معينة",
"白名單": "القائمة البيضاء",
"此選項可以管理系統白名單": "إدارة القائمة البيضاء للنظام",
"隔離區": "الحجر الصحي",
"此選項可以管理已隔離的檔案": "إدارة الملفات المحجوزة",
"增強模式": "وضع محسن",
"此選項可以增強掃描引擎": "يعزز محرك الفحص",
"擴展引擎": "محرك الإضافات",
"此選項可以使用擴展引擎": "تفعيل محركات الإضافات الخارجية",
"雲端服務": "خدمة السحابة",
"此選項可以上報雲端引擎": "الإبلاغ عن الملفات المشبوهة للسحابة",
"顯色主題": "سمة اللون",
"此選項可以選擇主題顏色": "تحديد سمة ألوان التطبيق",
"白色主題": "الوضع الفاتح",
"紅色主題": "سمة حمراء",
"黃色主題": "سمة صفراء",
"綠色主題": "سمة خضراء",
"藍色主題": "سمة زرقاء",
"黑色主題": "الوضع الداكن",
"顯示語言": "لغة العرض",
"此選項可以選擇顯示語言": "تحديد لغة عرض التطبيق",
"重置選項": "إعادة تعيين الخيارات",
"此選項可以重置所有設定": "استعادة جميع الإعدادات الافتراضية",
"執行": "تنفيذ",
"產品金鑰": "مفتاح المنتج",
"此選項可以啟用產品金鑰": "تنشيط مفتاح المنتج",
"官方網站": "الموقع الرسمي",
"此選項可以前往官方網站": "قم بزيارة موقعنا الرسمي",
"檢查更新": "التحقق من التحديثات",
"此選項可以檢查可用更新": "التحقق من أحدث التحديثات",
"搜尋進程...": "البحث في العمليات...",
"查看": "عرض",
"結束": "إنهاء المهمة",
"白名單管理": "مدير القائمة البيضاء",
"搜尋檔案...": "البحث عن الملفات...",
"加入": "إضافة",
"移除": "إزالة",
"隔離區管理": "مدير الحجر الصحي",
"掃描": "فحص",
"搜尋窗口...": "البحث عن النوافذ...",
"搜尋規則...": "البحث في القواعد...",
"搜尋日誌...": "البحث في السجلات...",
"導出": "تصدير",
"正在初始化中": "جاري التهيئة...",
"檢查更新失敗": "فشل التحقق من التحديثات",
"發現新版本": "تم العثور على إصدار جديد",
"當前已是最新版本": "أنت تستخدم أحدث إصدار حاليًا",
"請選擇要導出的日誌": "يرجى تحديد السجلات لتصديرها",
"確定刪除選取的日誌記錄嗎?": "هل أنت متأكد من حذف السجلات المحددة؟",
"選取的日誌已刪除。": "تم حذف السجلات المحددة.",
"結束進程?": "إنهاء العملية؟",
"確定要結束選取的進程嗎?": "هل أنت متأكد من إنهاء العمليات المحددة؟",
"已清理 ": "تم التنظيف ",
"設定已重置,請重新啟動程式以套用預設值。": "تم إعادة تعيين الإعدادات. يرجى إعادة تشغيل التطبيق لتطبيق الافتراضيات.",
"導出成功": "تم التصدير بنجاح",
"選取進程路徑:\n": "مسارات العمليات المحددة:\n",
"對 ": "إجراء لـ ",
" 執行動作:\n1: 加入白名單\n2: 加入隔離區\n請輸入代碼:": ":\n1: إضافة للقائمة البيضاء\n2: إضافة للحجر الصحي\nأدخل الرمز:",
"請在5秒內點擊目標視窗...": "انقر على النافذة المستهدفة خلال 5 ثوانٍ...",
"確認攔截": "تأكيد الحظر",
"已修復選取項目": "تم إصلاح العناصر المحددة",
"修復": "إصلاح",
"提示": "تلميح",
"錯誤": "خطأ",
"未知路徑": "مسار غير معروف",
"修復系統 MBR": "إصلاح MBR للنظام",
"修復系統限制": "إصلاح قيود النظام",
"修復檔案關聯": "إصلاح اقترانات الملفات",
"修復檔案圖標": "إصلاح رموز الملفات",
"修復映像劫持": "إصلاح اختطاف الصور",
"修復桌面壁紙": "إصلاح خلفية سطح المكتب",
"正在掃描": "جاري الفحص...",
"正在刪除": "جاري الحذف...",
"選單掃描": "فحص قائمة السياق",
"此選項可以加入右鍵掃描": "إضافة خيار الفحص إلى قائمة النقر الأيمن"
},
"russian_switch": {
"PYAS Security": "PYAS Security",
"此裝置已受到防護": "Это устройство защищено",
"智能掃描": "Умное сканирование",
"此選項可以快速掃病毒": "Быстрое сканирование на наличие вирусов",
"日誌導出": "Экспорт журналов",
"此選項可以篩選導出日誌": "Фильтрация и экспорт системных журналов",
"病毒掃描": "Сканирование на вирусы",
"此選項可以選擇掃描方式": "Выберите метод сканирования",
"刪除": "Удалить",
"選擇": "Выбрать",
"智能": "Умный",
"檔案": "Файл",
"路徑": "Путь",
"全盤": "Полный",
"停止": "Остановить",
"進程防護": "Защита процессов",
"此選項可以攔截進程病毒": "Блокирует вредоносные процессы",
"檔案防護": "Защита файлов",
"此選項可以攔截檔案變更": "Блокирует вредоносные изменения файлов",
"系統防護": "Защита системы",
"此選項可以攔截系統項目": "Защищает критические системные компоненты",
"驅動防護": "Защита драйверов",
"此選項可以增強自身防護": "Усиливает механизмы самозащиты",
"網路防護": "Сетевая защита",
"此選項可以攔截網路通訊": "Блокирует вредоносные сетевые подключения",
"自訂防護": "Пользовательская защита",
"此選項可以導入自訂防護": "Импорт пользовательских правил защиты",
"進程管理": "Диспетчер процессов",
"此選項可以實時查看系統進程": "Мониторинг системных процессов в реальном времени",
"垃圾清理": "Очистка мусора",
"此選項可以清理暫存垃圾檔案": "Очистка временных и ненужных файлов",
"系統修復": "Восстановление системы",
"此選項可以修復系統註冊項目": "Восстановление элементов системного реестра",
"彈窗攔截": "Блокировщик всплывающих окон",
"此選項可以選擇指定窗口攔截": "Блокировка определенных всплывающих окон",
"白名單": "Белый список",
"此選項可以管理系統白名單": "Управление системным белым списком",
"隔離區": "Карантин",
"此選項可以管理已隔離的檔案": "Управление файлами в карантине",
"增強模式": "Расширенный режим",
"此選項可以增強掃描引擎": "Усиление механизма сканирования",
"擴展引擎": "Модули расширения",
"此選項可以使用擴展引擎": "Включение внешних модулей расширения",
"雲端服務": "Облачный сервис",
"此選項可以上報雲端引擎": "Сообщить о подозрительных файлах в облако",
"顯色主題": "Цветовая тема",
"此選項可以選擇主題顏色": "Выберите цветовую тему приложения",
"白色主題": "Светлый режим",
"紅色主題": "Красная тема",
"黃色主題": "Желтая тема",
"綠色主題": "Зеленая тема",
"藍色主題": "Синяя тема",
"黑色主題": "Темный режим",
"顯示語言": "Язык интерфейса",
"此選項可以選擇顯示語言": "Выберите язык приложения",
"重置選項": "Сброс настроек",
"此選項可以重置所有設定": "Восстановить все настройки по умолчанию",
"執行": "Выполнить",
"產品金鑰": "Ключ продукта",
"此選項可以啟用產品金鑰": "Активировать ключ продукта",
"官方網站": "Официальный сайт",
"此選項可以前往官方網站": "Посетите наш официальный сайт",
"檢查更新": "Проверить обновления",
"此選項可以檢查可用更新": "Проверить наличие последних обновлений",
"搜尋進程...": "Поиск процессов...",
"查看": "Просмотр",
"結束": "Завершить",
"白名單管理": "Управление белым списком",
"搜尋檔案...": "Поиск файлов...",
"加入": "Добавить",
"移除": "Удалить",
"隔離區管理": "Управление карантином",
"掃描": "Сканировать",
"搜尋窗口...": "Поиск окон...",
"搜尋規則...": "Поиск правил...",
"搜尋日誌...": "Поиск журналов...",
"導出": "Экспорт",
"正在初始化中": "Инициализация...",
"檢查更新失敗": "Ошибка проверки обновлений",
"發現新版本": "Найдена новая версия",
"當前已是最新版本": "Установлена последняя версия",
"請選擇要導出的日誌": "Пожалуйста, выберите журналы для экспорта",
"確定刪除選取的日誌記錄嗎?": "Вы уверены, что хотите удалить выбранные журналы?",
"選取的日誌已刪除。": "Выбранные журналы удалены.",
"結束進程?": "Завершить процесс?",
"確定要結束選取的進程嗎?": "Вы уверены, что хотите завершить выбранные процессы?",
"已清理 ": "Очищено ",
"設定已重置,請重新啟動程式以套用預設值。": "Настройки сброшены. Перезапустите программу.",
"導出成功": "Успешный экспорт",
"選取進程路徑:\n": "Пути выбранных процессов:\n",
"對 ": "Действие для ",
" 執行動作:\n1: 加入白名單\n2: 加入隔離區\n請輸入代碼:": ":\n1: Добавить в белый список\n2: Добавить в карантин\nВведите код:",
"請在5秒內點擊目標視窗...": "Нажмите на целевое окно в течение 5 сек...",
"確認攔截": "Подтвердить блокировку",
"已修復選取項目": "Выбранные элементы восстановлены",
"修復": "Восстановить",
"提示": "Подсказка",
"錯誤": "Ошибка",
"未知路徑": "Неизвестный путь",
"修復系統 MBR": "Восстановление MBR системы",
"修復系統限制": "Снятие системных ограничений",
"修復檔案關聯": "Восстановление ассоциаций файлов",
"修復檔案圖標": "Восстановление значков файлов",
"修復映像劫持": "Восстановление Image Hijacking",
"修復桌面壁紙": "Восстановление обоев рабочего стола",
"正在掃描": "Сканирование...",
"正在刪除": "Удаление...",
"選單掃描": "Сканирование из контекстного меню",
"此選項可以加入右鍵掃描": "Добавить опцию сканирования в контекстное меню"
},
"slovenian_switch": {
"PYAS Security": "PYAS Security",
"此裝置已受到防護": "Ta naprava je zaščitena",
"智能掃描": "Pametno skeniranje",
"此選項可以快速掃病毒": "Hitro skeniranje za viruse",
"日誌導出": "Izvoz dnevnikov",
"此選項可以篩選導出日誌": "Filtriranje in izvoz sistemskih dnevnikov",
"病毒掃描": "Skeniranje virusov",
"此選項可以選擇掃描方式": "Izberite metodo skeniranja",
"刪除": "Izbriši",
"選擇": "Izberi",
"智能": "Pametno",
"檔案": "Datoteka",
"路徑": "Pot",
"全盤": "Celotno",
"停止": "Ustavi",
"進程防護": "Zaščita procesov",
"此選項可以攔截進程病毒": "Blokira zlonamerne procese",
"檔案防護": "Zaščita datotek",
"此選項可以攔截檔案變更": "Blokira zlonamerne spremembe datotek",
"系統防護": "Sistemska zaščita",
"此選項可以攔截系統項目": "Ščiti kritične sistemske komponente",
"驅動防護": "Zaščita gonilnikov",
"此選項可以增強自身防護": "Krepi samoobrambne mehanizme",
"網路防護": "Omrežna zaščita",
"此選項可以攔截網路通訊": "Blokira zlonamerne omrežne povezave",
"自訂防護": "Zaščita po meri",
"此選項可以導入自訂防護": "Uvozi pravila zaščite po meri",
"進程管理": "Upravitelj procesov",
"此選項可以實時查看系統進程": "Spremlja sistemske procese v realnem času",
"垃圾清理": "Čiščenje nesnage",
"此選項可以清理暫存垃圾檔案": "Čisti začasne in nepotrebne datoteke",
"系統修復": "Popravilo sistema",
"此選項可以修復系統註冊項目": "Popravlja elemente sistemskega registra",
"彈窗攔截": "Blokator pojavnih oken",
"此選項可以選擇指定窗口攔截": "Blokira določena pojavna okna",
"白名單": "Seznam dovoljenih",
"此選項可以管理系統白名單": "Upravlja sistemski seznam dovoljenih",
"隔離區": "Karantena",
"此選項可以管理已隔離的檔案": "Upravlja datoteke v karanteni",
"增強模式": "Izboljšan način",
"此選項可以增強掃描引擎": "Izboljša mehanizem skeniranja",
"擴展引擎": "Razširitveni pogon",
"此選項可以使用擴展引擎": "Omogoči zunanje razširitvene pogone",
"雲端服務": "Storitev v oblaku",
"此選項可以上報雲端引擎": "Poroča sumljive datoteke v oblak",
"顯色主題": "Barvna tema",
"此選項可以選擇主題顏色": "Izberite barvno temo aplikacije",
"白色主題": "Svetel način",
"紅色主題": "Rdeča tema",
"黃色主題": "Rumena tema",
"綠色主題": "Zelena tema",
"藍色主題": "Modra tema",
"黑色主題": "Temen način",
"顯示語言": "Jezik prikaza",
"此選項可以選擇顯示語言": "Izberite jezik prikaza aplikacije",
"重置選項": "Ponastavitev",
"此選項可以重置所有設定": "Obnovi vse privzete nastavitve",
"執行": "Izvedi",
"產品金鑰": "Ključ izdelka",
"此選項可以啟用產品金鑰": "Aktivira ključ izdelka",
"官方網站": "Uradna stran",
"此選項可以前往官方網站": "Obiščite našo uradno spletno stran",
"檢查更新": "Preveri posodobitve",
"此選項可以檢查可用更新": "Preveri zadnje posodobitve",
"搜尋進程...": "Išči procese...",
"查看": "Poglej",
"結束": "Končaj opravilo",
"白名單管理": "Upravitelj seznama dovoljenih",
"搜尋檔案...": "Išči datoteke...",
"加入": "Dodaj",
"移除": "Odstrani",
"隔離區管理": "Upravitelj karantene",
"掃描": "Skeniraj",
"搜尋窗口...": "Išči okna...",
"搜尋規則...": "Išči pravila...",
"搜尋日誌...": "Išči dnevnike...",
"導出": "Izvozi",
"正在初始化中": "Inicializacija...",
"檢查更新失敗": "Preverjanje posodobitev ni uspelo",
"發現新版本": "Najdena nova različica",
"當前已是最新版本": "Trenutno imate najnovejšo različico",
"請選擇要導出的日誌": "Prosimo, izberite dnevnike za izvoz",
"確定刪除選取的日誌記錄嗎?": "Ali ste prepričani, da želite izbrisati izbrane dnevnike?",
"選取的日誌已刪除。": "Izbrani dnevniki so bili izbrisani.",
"結束進程?": "Končam proces?",
"確定要結束選取的進程嗎?": "Ali ste prepričani, da želite končati izbrane procese?",
"已清理 ": "Počiščeno ",
"設定已重置,請重新啟動程式以套用預設值。": "Nastavitve so ponastavljene. Znova zaženite program.",
"導出成功": "Izvoz uspešen",
"選取進程路徑:\n": "Poti izbranih procesov:\n",
"對 ": "Dejanje za ",
" 執行動作:\n1: 加入白名單\n2: 加入隔離區\n請輸入代碼:": ":\n1: Dodaj na seznam dovoljenih\n2: Dodaj v karanteno\nVnesite kodo:",
"請在5秒內點擊目標視窗...": "Kliknite na ciljno okno v 5s...",
"確認攔截": "Potrdi blokado",
"已修復選取項目": "Izbrani predmeti popravljeni",
"修復": "Popravi",
"提示": "Namig",
"錯誤": "Napaka",
"未知路徑": "Neznana pot",
"修復系統 MBR": "Popravilo sistemskega MBR",
"修復系統限制": "Popravilo sistemskih omejitev",
"修復檔案關聯": "Popravilo asociacij datotek",
"修復檔案圖標": "Popravilo ikon datotek",
"修復映像劫持": "Popravilo ugrabitve slike",
"修復桌面壁紙": "Popravilo ozadja namizja",
"正在掃描": "Skeniranje...",
"正在刪除": "Brisanje...",
"選單掃描": "Skeniranje iz kontekstnega menija",
"此選項可以加入右鍵掃描": "Dodaj možnost skeniranja v kontekstni meni"
}
};
const themes = {
"white_switch": { "--bg-window": "245, 245, 247", "--bg-nav": "255, 255, 255", "--bg-panel": "255, 255, 255", "--bg-hover": "rgba(0,0,0,0.05)", "--text-primary": "29, 29, 31", "--text-secondary": "134, 134, 139", "--border-color":"210, 210, 215", "--accent-color":"0, 122, 255", "--accent-alpha":"rgba(0, 122, 255, 0.1)", "--accent-shadow":"rgba(0, 122, 255, 0.2)", "--accent-hover":"rgba(0, 122, 255, 0.3)" },
"black_switch": { "--bg-window": "0, 0, 0", "--bg-nav": "28, 28, 30", "--bg-panel": "28, 28, 30", "--bg-hover": "rgba(255,255,255,0.1)", "--text-primary": "245, 245, 247", "--text-secondary": "134, 134, 139", "--border-color":"44, 44, 46", "--accent-color":"10, 132, 255", "--accent-alpha":"rgba(10, 132, 255, 0.1)", "--accent-shadow":"rgba(10, 132, 255, 0.2)", "--accent-hover":"rgba(10, 132, 255, 0.3)" },
"red_switch": { "--bg-window": "253, 246, 246", "--bg-nav": "255, 240, 240", "--bg-panel": "255, 255, 255", "--bg-hover": "rgba(255,59,48,0.05)", "--text-primary": "29, 29, 31", "--text-secondary": "134, 134, 139", "--border-color":"250, 220, 220", "--accent-color":"255, 59, 48", "--accent-alpha":"rgba(255, 59, 48, 0.1)", "--accent-shadow":"rgba(255, 59, 48, 0.2)", "--accent-hover":"rgba(255, 59, 48, 0.3)" },
"yellow_switch": { "--bg-window": "254, 251, 243", "--bg-nav": "255, 248, 230", "--bg-panel": "255, 255, 255", "--bg-hover": "rgba(255,149,0,0.05)", "--text-primary": "29, 29, 31", "--text-secondary": "134, 134, 139", "--border-color":"250, 240, 215", "--accent-color":"255, 149, 0", "--accent-alpha":"rgba(255, 149, 0, 0.1)", "--accent-shadow":"rgba(255, 149, 0, 0.2)", "--accent-hover":"rgba(255, 149, 0, 0.3)" },
"green_switch": { "--bg-window": "246, 253, 248", "--bg-nav": "235, 250, 240", "--bg-panel": "255, 255, 255", "--bg-hover": "rgba(52,199,89,0.05)", "--text-primary": "29, 29, 31", "--text-secondary": "134, 134, 139", "--border-color":"220, 240, 225", "--accent-color":"52, 199, 89", "--accent-alpha":"rgba(52, 199, 89, 0.1)", "--accent-shadow":"rgba(52, 199, 89, 0.2)", "--accent-hover":"rgba(52, 199, 89, 0.3)" },
"blue_switch": { "--bg-window": "246, 249, 253", "--bg-nav": "235, 244, 255", "--bg-panel": "255, 255, 255", "--bg-hover": "rgba(0,122,255,0.05)", "--text-primary": "29, 29, 31", "--text-secondary": "134, 134, 139", "--border-color":"220, 230, 250", "--accent-color":"0, 122, 255", "--accent-alpha":"rgba(0, 122, 255, 0.1)", "--accent-shadow":"rgba(0, 122, 255, 0.2)", "--accent-hover":"rgba(0, 122, 255, 0.3)" }
};
const getMsg = (key) => (dict[currentLang] || dict["english_switch"])[key] || key;
function initCustomSelects() {
document.querySelectorAll('select.modern-select').forEach(select => {
select.style.display = 'none';
const wrapper = document.createElement('div');
wrapper.className = 'custom-select-wrapper';
const trigger = document.createElement('div');
trigger.className = 'custom-select-trigger';
const triggerText = document.createElement('span');
triggerText.className = 'custom-select-text';
const selectedOpt = select.options[select.selectedIndex];
if(selectedOpt) {
triggerText.textContent = selectedOpt.textContent;
if(selectedOpt.hasAttribute('data-i18n')) triggerText.setAttribute('data-i18n', '');
if(selectedOpt.hasAttribute('data-origin-text')) triggerText.dataset.originText = selectedOpt.dataset.originText;
}
trigger.appendChild(triggerText);
const icon = document.createElement('div');
icon.className = 'custom-select-icon';
icon.innerHTML = `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>`;
trigger.appendChild(icon);
const optionsContainer = document.createElement('ul');
optionsContainer.className = 'custom-select-options';
Array.from(select.options).forEach(option => {
if(option.disabled) return;
const li = document.createElement('li');
li.className = 'custom-select-option';
li.textContent = option.textContent;
li.dataset.value = option.value;
if(option.hasAttribute('data-i18n')) li.setAttribute('data-i18n', '');
if(option.hasAttribute('data-origin-text')) li.dataset.originText = option.dataset.originText;
if(option.selected) li.classList.add('selected');
li.addEventListener('click', (e) => {
e.stopPropagation();
select.value = option.value;
select.dispatchEvent(new Event('change'));
triggerText.textContent = li.textContent;
if(li.hasAttribute('data-origin-text')) {
triggerText.dataset.originText = li.dataset.originText;
}
wrapper.classList.remove('open');
optionsContainer.querySelectorAll('.custom-select-option').forEach(el => el.classList.remove('selected'));
li.classList.add('selected');
});
optionsContainer.appendChild(li);
});
wrapper.appendChild(trigger);
wrapper.appendChild(optionsContainer);
select.parentNode.insertBefore(wrapper, select.nextSibling);
trigger.addEventListener('click', (e) => {
e.stopPropagation();
const isOpen = wrapper.classList.contains('open');
document.querySelectorAll('.custom-select-wrapper').forEach(w => w.classList.remove('open'));
if (!isOpen) wrapper.classList.add('open');
});
});
document.addEventListener('click', () => {
document.querySelectorAll('.custom-select-wrapper').forEach(w => w.classList.remove('open'));
});
}
initCustomSelects();
document.querySelectorAll("[data-i18n]").forEach(el => { el.dataset.originText = el.textContent.trim(); });
document.querySelectorAll("[data-i18n-placeholder]").forEach(el => { el.dataset.originPlaceholder = el.getAttribute('placeholder'); });
document.querySelectorAll("option[data-i18n]").forEach(el => { el.dataset.originText = el.textContent.trim(); });
const langMap = {
traditional_switch: "zh-Hant",
simplified_switch: "zh-Hans",
english_switch: "en",
japanese_switch: "ja",
korean_switch: "ko",
french_switch: "fr",
spanish_switch: "es",
hindi_switch: "hi",
arabic_switch: "ar",
russian_switch: "ru",
slovenian_switch: "sl"
};
const translateText = (lang) => {
currentLang = lang;
const currentDict = dict[lang] || dict["english_switch"];
document.querySelectorAll("[data-i18n]").forEach(el => {
const originText = el.dataset.originText;
el.textContent = currentDict[originText] || originText;
});
document.querySelectorAll("[data-i18n-placeholder]").forEach(el => {
const originText = el.dataset.originPlaceholder;
el.setAttribute('placeholder', currentDict[originText] || originText);
});
document.documentElement.lang = langMap[currentLang] || "en";
};
const applyTheme = (theme) => {
const themeVars = themes[theme];
if (themeVars) {
for (const [key, value] of Object.entries(themeVars)) {
document.documentElement.style.setProperty(key, value.startsWith("rgba") ? value : `rgb(${value})`);
}
}
};
function updateCustomSelectUI(selectId, val) {
const select = document.getElementById(selectId);
if (!select) return;
select.value = val;
const wrapper = select.nextElementSibling;
if (wrapper && wrapper.classList.contains('custom-select-wrapper')) {
const triggerText = wrapper.querySelector('.custom-select-text');
const selectedOpt = select.options[select.selectedIndex];
if(selectedOpt) {
triggerText.textContent = selectedOpt.textContent;
if(selectedOpt.hasAttribute('data-origin-text')) {
triggerText.dataset.originText = selectedOpt.dataset.originText;
}
}
wrapper.querySelectorAll('.custom-select-option').forEach(el => {
el.classList.toggle('selected', el.dataset.value === val);
});
}
}
let processInterval = null;
const switchPage = (targetId) => {
const oldActive = document.querySelector('.page.active');
if (oldActive && oldActive.id !== targetId) {
if (oldActive.id === 'junk_window') {
currentJunkList = [];
const list = document.querySelector('#junk_window .manage-list');
if (list) list.innerHTML = '';
const searchInput = document.querySelector('#junk_window .search-box input');
if (searchInput) searchInput.value = '';
} else if (oldActive.id === 'repair_window') {
const list = document.querySelector('#repair_window .manage-list');
if (list) list.innerHTML = '';
}
}
document.querySelectorAll('.page').forEach(page => page.classList.remove('active'));
document.querySelectorAll('.nav-btn').forEach(btn => btn.classList.remove('active'));
const targetPage = document.getElementById(targetId);
if (targetPage) targetPage.classList.add('active');
const activeNav = document.querySelector(`aside .nav-btn[data-target="${targetId}"]`);
if (activeNav) activeNav.classList.add('active');
if (targetId === 'taskmgr_window') {
const fetchProcs = () => {
if (window.pywebview && document.querySelectorAll('#taskmgr_window .manage-list-item input[type="checkbox"]:checked').length === 0) {
window.pywebview.api.get_process_list().then(updateProcessList);
}
};
fetchProcs();
if (!processInterval) processInterval = setInterval(fetchProcs, 2000);
} else {
if (processInterval) {
clearInterval(processInterval);
processInterval = null;
}
}
if (['whitelist_window', 'quarantine_window', 'popup_window', 'custom_protect_window'].includes(targetId)) {
refreshConfigLists();
}
if (targetId === 'log_export_window' && window.pywebview) {
window.pywebview.api.get_logs().then(logs => {
const logList = logs.reverse().map(log => {
let displayStr = `[${log.time_str}] ${log.level} | ${log.action}`;
if (log.source) displayStr += ` | ${log.source.split('\\').pop().split('/').pop()}`;
if (log.detail) displayStr += ` | ${log.detail}`;
return {
display: displayStr,
value: log.id
};
});
renderManageList('#log_export_window', logList, 'display', 'value', true);
});
}
};
document.querySelectorAll('[data-target]').forEach(btn => {
btn.addEventListener('click', (e) => {
const targetId = e.currentTarget.getAttribute('data-target');
if (targetId) switchPage(targetId);
});
});
document.getElementById('quick_scan_btn')?.addEventListener('click', () => {
switchPage('scan_window');
if (window.pywebview) {
triggerScan('smart');
}
});
const scanMethodSelect = document.getElementById('scan_method_select');
const stopBtn = document.getElementById('stop_btn');
const solveBtn = document.getElementById('solve_btn');
const progressText = document.getElementById('progress_text');
const progressTitle = document.querySelector('#scan_window .section-title');
const virusList = document.getElementById('virus_list');
const virusState = new Map();
window.addVirusResult = (label, path) => {
if (!virusState.has(path)) {
virusState.set(path, true);
const li = document.createElement('li');
li.className = 'manage-list-item';
li.dataset.path = path;
li.innerHTML = `
<input type="checkbox" value="${path}" checked>
<div class="manage-list-item-content"><strong>${label}</strong> | ${path}</div>
`;
virusList.appendChild(li);
}
};
virusList.addEventListener('click', (e) => {
const li = e.target.closest('.manage-list-item');
if (!li) return;
const cb = li.querySelector('input');
if (e.target.tagName !== 'INPUT') {
cb.checked = !cb.checked;
}
virusState.set(li.dataset.path, cb.checked);
});
virusList.addEventListener('contextmenu', (e) => {
e.preventDefault();
const li = e.target.closest('.manage-list-item');
if (!li || !window.pywebview) return;
const path = li.dataset.path;
window.pywebview.api.prompt_virus_action(path).then(action => {
if (action === '1') {
window.pywebview.api.manage_named_list('white_list', [path], 'add').then(() => {
window.pywebview.api.remove_virus_result([path]).then(() => {
virusState.delete(path);
li.remove();
if (virusState.size === 0) solveBtn.classList.add('hidden');
});
});
} else if (action === '2') {
window.pywebview.api.manage_named_list('quarantine', [path], 'add').then(() => {
window.pywebview.api.remove_virus_result([path]).then(() => {
virusState.delete(path);
li.remove();
if (virusState.size === 0) solveBtn.classList.add('hidden');
});
});
}
});
});
solveBtn?.addEventListener('click', () => {
if (!window.pywebview) return;
const paths = Array.from(virusState.entries())
.filter(([_, isChecked]) => isChecked)
.map(([path, _]) => path);
if (paths.length === 0) return;
solveBtn.disabled = true;
window.pywebview.api.solve_scan(paths).then((deletedPaths) => {
solveBtn.disabled = false;
const deletedSet = new Set(deletedPaths);
deletedPaths.forEach(p => virusState.delete(p));
Array.from(virusList.children).forEach(li => {
if (deletedSet.has(li.dataset.path)) {
li.remove();
}
});
if (virusState.size === 0) solveBtn.classList.add('hidden');
});
});
window.updateScanProgress = (path) => {
if (progressTitle) progressTitle.textContent = getMsg("正在掃描");
progressText.textContent = path;
};
window.updateDeleteProgress = (path) => {
if (progressTitle) progressTitle.textContent = getMsg("正在刪除");
progressText.textContent = path;
};
window.finishScan = (msg, count) => {
isScanning = false;
if (progressTitle) progressTitle.textContent = getMsg("病毒掃描");
progressText.textContent = msg;
stopBtn.classList.add('hidden');
scanMethodSelect.classList.remove('hidden');
updateCustomSelectUI('scan_method_select', 'none');
if (count > 0) solveBtn.classList.remove('hidden');
};
function triggerScan(method) {
if (!window.pywebview) return;
isScanning = true;
virusState.clear();
virusList.innerHTML = '';
scanMethodSelect.classList.add('hidden');
stopBtn.classList.remove('hidden');
stopBtn.disabled = false;
solveBtn.classList.add('hidden');
if (progressTitle) progressTitle.textContent = getMsg("正在掃描");
progressText.textContent = getMsg("正在初始化中");
window.pywebview.api.trigger_scan(method);
}
scanMethodSelect?.addEventListener('change', () => {
if (!isScanning && scanMethodSelect.value !== 'none') {
triggerScan(scanMethodSelect.value);
}
});
stopBtn?.addEventListener('click', () => {
if (window.pywebview) window.pywebview.api.stop_scan();
stopBtn.disabled = true;
});
document.getElementById('theme_select').addEventListener('change', (e) => {
applyTheme(e.target.value);
if (window.pywebview) window.pywebview.api.update_config('theme', e.target.value);
});
document.getElementById('lang_select').addEventListener('change', (e) => {
translateText(e.target.value);
if (window.pywebview) window.pywebview.api.update_config('language', e.target.value);
});
window.revertSwitch = (switchKey) => {
const switchMap = ["process_switch", "document_switch", "system_switch", "driver_switch", "network_switch", "sensitive_switch", "extension_switch", "cloud_switch", "context_switch"];
const index = switchMap.indexOf(switchKey);
if (index !== -1) {
const toggle = document.querySelectorAll('.toggle-switch input')[index];
if (toggle) {
toggle.checked = false;
}
}
};
document.querySelectorAll('.toggle-switch input').forEach((toggle, index) => {
toggle.addEventListener('change', async (e) => {
const switchMap = ["process_switch", "document_switch", "system_switch", "driver_switch", "network_switch", "sensitive_switch", "extension_switch", "cloud_switch", "context_switch"];
const key = switchMap[index];
if (window.pywebview && key) {
toggle.disabled = true;
try {
const result = await window.pywebview.api.update_config(key, e.target.checked);
if (result !== undefined && result !== null) {
toggle.checked = result;
}
} catch (err) {
toggle.checked = !e.target.checked;
} finally {
toggle.disabled = false;
}
}
});
});
window.triggerContextScan = (path) => {
if (isScanning) return;
switchPage('scan_window');
if (window.pywebview) {
isScanning = true;
virusState.clear();
virusList.innerHTML = '';
scanMethodSelect.classList.add('hidden');
stopBtn.classList.remove('hidden');
solveBtn.classList.add('hidden');
if (progressTitle) progressTitle.textContent = getMsg("正在掃描");
progressText.textContent = getMsg("正在初始化中");
window.pywebview.api.start_scan([path]);
}
};
window.addEventListener('pywebviewready', () => {
window.pywebview.api.get_config().then(cfg => {
const theme = cfg.theme || "white_switch";
const lang = cfg.language || "english_switch";
applyTheme(theme);
translateText(lang);
updateCustomSelectUI('theme_select', theme);
updateCustomSelectUI('lang_select', lang);
const switchMap = ["process_switch", "document_switch", "system_switch", "driver_switch", "network_switch", "sensitive_switch", "extension_switch", "cloud_switch", "context_switch"];
document.querySelectorAll('.toggle-switch input').forEach((toggle, index) => {
if (switchMap[index]) {
toggle.checked = !!cfg[switchMap[index]];
}
});
});
window.pywebview.api.init_ui_ready();
});
function renderManageList(containerSelector, dataList, displayKey, valKey, defaultChecked = false) {
const container = document.querySelector(`${containerSelector} .manage-list`);
const searchInput = document.querySelector(`${containerSelector} .search-box input`);
if (!container) return;
container.renderData = (filterText = "") => {
container.innerHTML = '';
dataList.forEach(item => {
const displayStr = typeof item === 'object' ? item[displayKey] : item;
const valueStr = typeof item === 'object' ? item[valKey] : item;
if (filterText && !String(displayStr).toLowerCase().includes(filterText.toLowerCase())) return;
const li = document.createElement('li');
li.className = 'manage-list-item';
const checkedAttr = defaultChecked ? 'checked' : '';
li.innerHTML = `
<input type="checkbox" value="${valueStr}" ${checkedAttr}>
<div class="manage-list-item-content">${displayStr}</div>
`;
li.addEventListener('click', (e) => {
if (e.target.tagName !== 'INPUT') {
const cb = li.querySelector('input');
cb.checked = !cb.checked;
}
});
container.appendChild(li);
});
};
container.renderData(searchInput ? searchInput.value : "");
if (searchInput) {
searchInput.oninput = (e) => container.renderData(e.target.value);
}
}
function getCheckedValues(containerSelector) {
const checkboxes = document.querySelectorAll(`${containerSelector} .manage-list-item input[type="checkbox"]:checked`);
return Array.from(checkboxes).map(cb => cb.value);
}
function formatSize(bytes) {
if (bytes === 0) return '0 B';
const k = 1024;
const sizes = ['B', 'KB', 'MB', 'GB'];
const i = Math.floor(Math.log(bytes) / Math.log(k));
return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
}
let currentJunkList = [];
document.querySelector('#junk_window .primary-btn')?.addEventListener('click', () => {
if (!window.pywebview) return;
const btn = document.querySelector('#junk_window .primary-btn');
btn.textContent = getMsg("正在初始化中");
window.pywebview.api.scan_system_junk().then(list => {
currentJunkList = list.map(item => ({
display: `${item.path} (${formatSize(item.size)})`,
value: item.path
}));
renderManageList('#junk_window', currentJunkList, 'display', 'value', true);
btn.textContent = getMsg("掃描");
});
});
document.querySelector('#junk_window .danger-btn')?.addEventListener('click', () => {
if (!window.pywebview) return;
const checkedPaths = getCheckedValues('#junk_window');
if (checkedPaths.length === 0) return;
window.pywebview.api.clean_system_junk(checkedPaths).then(deletedSize => {
const msg = getMsg("已清理 ");
window.pywebview.api.show_alert(getMsg("提示"), `${msg}${formatSize(deletedSize)}`, "info");
currentJunkList = currentJunkList.filter(item => !checkedPaths.includes(item.value));
renderManageList('#junk_window', currentJunkList, 'display', 'value', true);
});
});
function refreshConfigLists() {
if (!window.pywebview) return;
window.pywebview.api.get_config().then(cfg => {
renderManageList('#whitelist_window', cfg.white_list || [], 'file', 'file');
renderManageList('#quarantine_window', cfg.quarantine || [], 'file', 'file');
renderManageList('#custom_protect_window', cfg.custom_rule || [], 'file', 'file');
const popupRules = (cfg.block_list || []).map(item => ({
display: `${item.exe || '*'} | ${item.class || '*'} | ${item.title || '*'}`,
value: item.exe || item.title
}));
renderManageList('#popup_window', popupRules, 'display', 'value');
});
}
document.querySelector('#whitelist_window .modern-btn:not(.primary-btn)')?.addEventListener('click', () => {
if (!window.pywebview) return;
const checked = getCheckedValues('#whitelist_window');
if (checked.length > 0) {
window.pywebview.api.remove_list_items('white_list', checked).then(refreshConfigLists);
}
});
document.querySelector('#quarantine_window .modern-btn:not(.primary-btn)')?.addEventListener('click', () => {
if (!window.pywebview) return;
const checked = getCheckedValues('#quarantine_window');
if (checked.length > 0) {
window.pywebview.api.remove_list_items('quarantine', checked).then(refreshConfigLists);
}
});
document.querySelector('#popup_window .modern-btn:not(.primary-btn)')?.addEventListener('click', () => {
if (!window.pywebview) return;
const checked = getCheckedValues('#popup_window');
if (checked.length > 0) {
window.pywebview.api.remove_list_items('block_list', checked).then(refreshConfigLists);
}
});
document.querySelector('#custom_protect_window .modern-btn:not(.primary-btn)')?.addEventListener('click', () => {
if (!window.pywebview) return;
const checked = getCheckedValues('#custom_protect_window');
if (checked.length > 0) {
window.pywebview.api.remove_list_items('custom_rule', checked).then(refreshConfigLists);
}
});
document.querySelector('#whitelist_window .primary-btn')?.addEventListener('click', () => {
window.pywebview?.api.select_files().then(files => {
if (files && files.length > 0) {
window.pywebview.api.manage_named_list('white_list', files, 'add').then(refreshConfigLists);
}
});
});
document.querySelector('#quarantine_window .primary-btn')?.addEventListener('click', () => {
window.pywebview?.api.select_files().then(files => {
if (files && files.length > 0) {
window.pywebview.api.manage_named_list('quarantine', files, 'add').then(refreshConfigLists);
}
});
});
document.querySelector('#custom_protect_window .primary-btn')?.addEventListener('click', () => {
window.pywebview?.api.select_files().then(files => {
if (files && files.length > 0) {
window.pywebview.api.manage_named_list('custom_rule', files, 'add').then(refreshConfigLists);
}
});
});
document.querySelector('#repair_window .primary-btn')?.addEventListener('click', () => {
if (!window.pywebview) return;
window.pywebview.api.scan_system_repair().then(list => {
const translatedList = list.map(item => ({
display: getMsg(item.display),
value: item.value
}));
renderManageList('#repair_window', translatedList, 'display', 'value', true);
});
});
document.querySelector('#repair_window .danger-btn')?.addEventListener('click', () => {
if (!window.pywebview) return;
const checkedPaths = getCheckedValues('#repair_window');
if (checkedPaths.length === 0) return;
window.pywebview.api.execute_system_repair(checkedPaths).then(() => {
const msg = getMsg("已修復選取項目");
window.pywebview.api.show_alert(getMsg("提示"), msg, "info");
document.querySelector('#repair_window .manage-list').innerHTML = '';
});
});
document.getElementById('minimize_button')?.addEventListener('click', () => window.pywebview?.api.minimize());
document.getElementById('close_button')?.addEventListener('click', () => window.pywebview?.api.hide_window());
window.updateLogs = (entry) => {
const logWidget = document.querySelector('.log-text');
if (logWidget) {
let parts = [`[${entry.time_str}]`, entry.level, entry.action];
if (entry.source) parts.push(`Src: ${entry.source}`);
if (entry.target) parts.push(`Tgt: ${entry.target}`);
if (entry.code) parts.push(`Code: ${entry.code}`);
if (entry.pid) parts.push(`PID: ${entry.pid}`);
if (entry.hash) parts.push(`Hash: ${entry.hash}`);
if (entry.detail) parts.push(`Detail: ${entry.detail}`);
if (entry.operate !== null) parts.push(`Op: ${entry.operate}`);
parts.push(`Success: ${entry.success}`);
logWidget.value += parts.join(' | ') + '\n';
logWidget.scrollTop = logWidget.scrollHeight;
}
const exportWindow = document.getElementById('log_export_window');
if (exportWindow && exportWindow.classList.contains('active')) {
if (window.pywebview) {
window.pywebview.api.get_logs().then(logs => {
const logList = logs.reverse().map(log => {
let displayStr = `[${log.time_str}] ${log.level} | ${log.action}`;
if (log.source) displayStr += ` | ${log.source.split('\\').pop().split('/').pop()}`;
if (log.detail) displayStr += ` | ${log.detail}`;
return { display: displayStr, value: log.id };
});
renderManageList('#log_export_window', logList, 'display', 'value', true);
});
}
}
if ((entry.action === 'System' && entry.detail === 'Engine Initialization Complete') ||
(entry.level === 'WARN' && entry.action === 'init_engine_thread')) {
const overlay = document.getElementById('loading_overlay');
const appContainer = document.querySelector('.app-container');
if (overlay && !overlay.classList.contains('fade-out')) {
overlay.classList.add('fade-out');
setTimeout(() => {
if (appContainer) appContainer.classList.add('fade-in');
}, 400);
}
}
};
const websiteBtn = Array.from(document.querySelectorAll('#about_window .list-item')).find(el => el.textContent.includes('官方網站') || el.textContent.includes('Website'));
if (websiteBtn) {
websiteBtn.querySelector('button').addEventListener('click', () => {
if (window.pywebview) window.pywebview.api.open_website();
});
}
const updateBtn = Array.from(document.querySelectorAll('#about_window .list-item')).find(el => el.textContent.includes('檢查更新') || el.textContent.includes('Update'));
if (updateBtn) {
updateBtn.querySelector('button').addEventListener('click', () => {
if (window.pywebview) {
window.pywebview.api.check_update().then(res => {
if (res.error) {
window.pywebview.api.show_alert(getMsg("錯誤"), getMsg("檢查更新失敗"), "error");
} else if (res.has_update) {
const msg = getMsg("發現新版本");
window.pywebview.api.show_confirm(getMsg("提示"), `${msg} ${res.latest}\n(${res.current} -> ${res.latest})`).then(confirmRes => {
if (confirmRes) window.pywebview.api.open_url(res.url);
});
} else {
const msg = getMsg("當前已是最新版本");
window.pywebview.api.show_alert(getMsg("提示"), `${msg} ${res.current}`, "info");
}
});
}
});
}
const resetBtn = Array.from(document.querySelectorAll('#setting_window .list-item')).find(el => el.textContent.includes('重置選項') || el.textContent.includes('Reset'));
if (resetBtn) {
resetBtn.querySelector('button').addEventListener('click', () => {
const confirmMsg = getMsg("此選項可以重置所有設定");
if (window.pywebview) {
window.pywebview.api.show_confirm(getMsg("提示"), confirmMsg).then(res => {
if (res) {
window.pywebview.api.reset_config().then(() => {
window.pywebview.api.show_alert(getMsg("提示"), getMsg("設定已重置,請重新啟動程式以套用預設值。"), "info");
});
}
});
}
});
}
document.querySelector('#log_export_window .primary-btn')?.addEventListener('click', () => {
if (window.pywebview) {
const checkedIds = getCheckedValues('#log_export_window');
if (checkedIds.length === 0) {
window.pywebview.api.show_alert(getMsg("提示"), getMsg("請選擇要導出的日誌"), "warning");
return;
}
window.pywebview.api.export_logs(checkedIds).then(res => {
if (res) window.pywebview.api.show_alert(getMsg("提示"), getMsg("導出成功"), "info");
});
}
});
document.querySelector('#log_export_window .danger-btn')?.addEventListener('click', () => {
const checkedIds = getCheckedValues('#log_export_window');
if (checkedIds.length === 0) return;
const confirmMsg = getMsg("確定刪除選取的日誌記錄嗎?");
if (window.pywebview) {
window.pywebview.api.show_confirm(getMsg("提示"), confirmMsg).then(res => {
if (res) {
window.pywebview.api.clear_logs(checkedIds).then(() => {
window.pywebview.api.get_logs().then(logs => {
const logList = logs.reverse().map(log => {
let displayStr = `[${log.time_str}] ${log.level} | ${log.action}`;
if (log.source) displayStr += ` | ${log.source.split('\\').pop().split('/').pop()}`;
if (log.detail) displayStr += ` | ${log.detail}`;
return { display: displayStr, value: log.id };
});
renderManageList('#log_export_window', logList, 'display', 'value', true);
});
const successMsg = getMsg("選取的日誌已刪除。");
window.pywebview.api.show_alert(getMsg("提示"), successMsg, "info");
});
}
});
}
});
let currentProcessList = [];
function renderProcessList(filterText = "") {
const list = document.querySelector('#taskmgr_window .manage-list');
if (!list) return;
list.innerHTML = '';
currentProcessList.forEach(p => {
if (filterText && !p.name.toLowerCase().includes(filterText.toLowerCase())) return;
const li = document.createElement('li');
li.className = 'manage-list-item';
const unknownPathText = getMsg("未知路徑");
const pathText = p.path && p.path !== "None" ? p.path : unknownPathText;
li.innerHTML = `
<input type="checkbox" value="${p.pid}" data-path="${p.path || ''}">
<div class="manage-list-item-content">${p.name} | PID: ${p.pid} | ${pathText}</div>
`;
li.addEventListener('click', (e) => {
if (e.target.tagName !== 'INPUT') {
const cb = li.querySelector('input');
cb.checked = !cb.checked;
}
});
li.addEventListener('contextmenu', (e) => {
e.preventDefault();
const confirmMsg = getMsg("結束進程?");
if (window.pywebview) {
window.pywebview.api.show_confirm(getMsg("提示"), confirmMsg).then(res => {
if (res) {
window.pywebview.api.kill_process(p.pid).then(() => window.pywebview.api.get_process_list().then(updateProcessList));
}
});
}
});
list.appendChild(li);
});
}
function updateProcessList(procs) {
currentProcessList = procs;
const searchInput = document.querySelector('#taskmgr_window .search-box input');
renderProcessList(searchInput ? searchInput.value : "");
}
const procSearchInput = document.querySelector('#taskmgr_window .search-box input');
if (procSearchInput) {
procSearchInput.addEventListener('input', (e) => renderProcessList(e.target.value));
}
document.querySelector('#taskmgr_window .primary-btn')?.addEventListener('click', () => {
const cbs = document.querySelectorAll('#taskmgr_window .manage-list-item input[type="checkbox"]:checked');
if (cbs.length > 0 && window.pywebview) {
cbs.forEach(cb => {
const path = cb.dataset.path;
if (path && path !== "Unknown" && path !== "None") {
window.pywebview.api.open_file_location(path);
}
});
}
});
document.querySelector('#popup_window .primary-btn')?.addEventListener('click', () => {
if (!window.pywebview) return;
const btn = document.querySelector('#popup_window .primary-btn');
const originalText = btn.textContent;
const waitText = getMsg("請在5秒內點擊目標視窗...");
btn.textContent = waitText;
btn.disabled = true;
window.pywebview.api.capture_popup_window().then(rule => {
btn.textContent = originalText;
btn.disabled = false;
if (rule) {
window.pywebview.api.add_popup_rule(rule).then(success => {
if (success) refreshConfigLists();
});
}
});
});
document.querySelector('#taskmgr_window .danger-btn')?.addEventListener('click', () => {
const cbs = document.querySelectorAll('#taskmgr_window .manage-list-item input[type="checkbox"]:checked');
const confirmMsg = getMsg("確定要結束選取的進程嗎?");
if (cbs.length > 0 && window.pywebview) {
window.pywebview.api.show_confirm(getMsg("提示"), confirmMsg).then(res => {
if (res) {
const promises = Array.from(cbs).map(cb => window.pywebview.api.kill_process(parseInt(cb.value)));
Promise.all(promises).then(() => {
window.pywebview.api.get_process_list().then(updateProcessList);
});
}
});
}
});
});