From f193d7774000b3ce0e83f06290af90480c537307 Mon Sep 17 00:00:00 2001 From: guixiao <253752301+guixiao2026@users.noreply.github.com> Date: Wed, 11 Feb 2026 18:33:51 +0800 Subject: [PATCH 1/2] Add i18n internationalization support --- Compile.ps1 | 24 +- functions/private/Set-WinUtilLanguage.ps1 | 349 +++++ locales/en.json | 41 + locales/zh-TW.json | 1550 +++++++++++++++++++++ scripts/main.ps1 | 89 +- xaml/inputXML.xaml | 24 +- 6 files changed, 2073 insertions(+), 4 deletions(-) create mode 100644 functions/private/Set-WinUtilLanguage.ps1 create mode 100644 locales/en.json create mode 100644 locales/zh-TW.json diff --git a/Compile.ps1 b/Compile.ps1 index 34263cb989..ceb2729ebe 100644 --- a/Compile.ps1 +++ b/Compile.ps1 @@ -43,6 +43,7 @@ $excludedFiles = @() # Add directories only if they exist if (Test-Path '.\.git\') { $excludedFiles += '.\.git\' } if (Test-Path '.\binary\') { $excludedFiles += '.\binary\' } +if (Test-Path '.\locales\') { $excludedFiles += '.\locales\' } # Add files that should always be excluded $excludedFiles += @( @@ -92,6 +93,22 @@ $($jsonAsObject | ConvertTo-Json -Depth 3) $script_content.Add($(Write-Output "`$sync.configs.$($psitem.BaseName) = @'`r`n$json`r`n'@ `| ConvertFrom-Json" )) } +Update-Progress "Adding: Locale files" 50 +$localeJson = @{} +if (Test-Path "locales") { + Get-ChildItem "locales" -Filter "*.json" | ForEach-Object { + $localeContent = [System.IO.File]::ReadAllText( + $_.FullName, + [System.Text.Encoding]::UTF8 + ) + $localeJson[$_.BaseName] = $localeContent | + ConvertFrom-Json + } +} +$localeEmbedJson = $localeJson | + ConvertTo-Json -Depth 5 +$script_content.Add($(Write-Output "`$sync.configs.locales = @'`r`n$localeEmbedJson`r`n'@ | ConvertFrom-Json")) + # Read the entire XAML file as a single string, preserving line breaks $xaml = Get-Content "$workingdir\xaml\inputXML.xaml" -Raw @@ -118,7 +135,12 @@ if ($Debug) { Remove-Item "xaml\inputFeatures.xaml" -ErrorAction SilentlyContinue } -Set-Content -Path "$scriptname" -Value ($script_content -join "`r`n") -Encoding ascii +$utf8Bom = New-Object System.Text.UTF8Encoding $true +[System.IO.File]::WriteAllText( + (Join-Path $PWD $scriptname), + ($script_content -join "`r`n"), + $utf8Bom +) Write-Progress -Activity "Compiling" -Completed Update-Progress -Activity "Validating" -StatusMessage "Checking winutil.ps1 Syntax" -Percent 0 diff --git a/functions/private/Set-WinUtilLanguage.ps1 b/functions/private/Set-WinUtilLanguage.ps1 new file mode 100644 index 0000000000..30bf56b869 --- /dev/null +++ b/functions/private/Set-WinUtilLanguage.ps1 @@ -0,0 +1,349 @@ +function Set-WinUtilLanguage { + <# + .SYNOPSIS + Switches the WinUtil UI language by applying locale + translations to config objects and XAML elements. + .PARAMETER Language + The locale code (e.g., "en", "zh-TW"). + #> + [CmdletBinding()] + param( + [Parameter(Mandatory)] + [string]$Language + ) + + if (-not $sync.configs.locales) { return } + + # Save original English values on first call + if (-not $sync.originalConfigs) { + $sync.originalConfigs = @{} + $configNames = @( + "appnavigation", "tweaks", + "feature", "applications" + ) + foreach ($cn in $configNames) { + $json = $sync.configs.$cn | + ConvertTo-Json -Depth 4 -Compress + $sync.originalConfigs[$cn] = + $json | ConvertFrom-Json + } + } + + $sync.currentLanguage = $Language + + # Restore English originals + foreach ($cn in $sync.originalConfigs.Keys) { + $json = $sync.originalConfigs[$cn] | + ConvertTo-Json -Depth 4 -Compress + $sync.configs.$cn = $json | ConvertFrom-Json + } + + # Rebuild applicationsHashtable from restored config + $sync.configs.applicationsHashtable = @{} + $sync.configs.applications.PSObject.Properties | + ForEach-Object { + $sync.configs.applicationsHashtable[$_.Name] = + $_.Value + } + + if ($Language -eq "en") { + Set-WinUtilLanguageUI + return + } + + $localeData = $sync.configs.locales.$Language + if (-not $localeData) { + Write-Warning "Locale '$Language' not found" + return + } + + # Apply config translations + $configNames = @("appnavigation", "tweaks", "feature") + foreach ($cn in $configNames) { + $translations = $localeData.$cn + if (-not $translations) { continue } + + foreach ($prop in $translations.PSObject.Properties) { + $entry = $sync.configs.$cn.($prop.Name) + if (-not $entry) { continue } + + foreach ($f in $prop.Value.PSObject.Properties) { + $fname = $f.Name + if ($entry.PSObject.Properties[$fname]) { + $entry.$fname = $f.Value + } + } + } + } + + # Apply application translations + $appTr = $localeData.applications + if ($appTr) { + foreach ($prop in $appTr.PSObject.Properties) { + $appKey = "WPFInstall$($prop.Name)" + $fields = $prop.Value + + $targets = @( + $sync.configs.applicationsHashtable[$appKey], + $sync.configs.applications.$appKey + ) + + foreach ($target in $targets) { + if (-not $target) { continue } + foreach ($f in $fields.PSObject.Properties) { + $fname = $f.Name + if ($target.PSObject.Properties[$fname]) { + $target.$fname = $f.Value + } + } + } + } + } + + $catMap = $localeData.categories + if ($catMap) { + $configNames = @( + "appnavigation", "tweaks", + "feature", "applications" + ) + foreach ($cn in $configNames) { + foreach ($prop in + $sync.configs.$cn.PSObject.Properties) { + $entry = $prop.Value + $catField = if ($entry.PSObject.Properties["category"]) { + "category" + } elseif ($entry.PSObject.Properties["Category"]) { + "Category" + } else { $null } + if (-not $catField) { continue } + $orig = $entry.$catField + if ($catMap.PSObject.Properties[$orig]) { + $entry.$catField = $catMap.$orig + } + } + } + } + + Set-WinUtilLanguageUI +} + +function Set-WinUtilLanguageUI { + <# + .SYNOPSIS + Updates XAML UI elements with current language strings. + #> + + $lang = $sync.currentLanguage + $localeData = if ($lang -and $lang -ne "en") { + $sync.configs.locales.$lang + } else { $null } + + $ui = if ($localeData) { $localeData.ui } else { $null } + + # Helper to get UI string with English fallback + $getStr = { + param([string]$Key, [string]$Default) + if ($ui -and $ui.PSObject.Properties[$Key]) { + return $ui.$Key + } + return $Default + } + + # Tab buttons + $tabMap = @{ + "WPFTab1BT" = @{ key = "tab_install"; default = "Install" } + "WPFTab2BT" = @{ key = "tab_tweaks"; default = "Tweaks" } + "WPFTab3BT" = @{ key = "tab_config"; default = "Config" } + "WPFTab4BT" = @{ key = "tab_updates"; default = "Updates" } + } + + foreach ($btnName in $tabMap.Keys) { + $btn = $sync[$btnName] + if (-not $btn) { continue } + $info = $tabMap[$btnName] + $text = & $getStr $info.key $info.default + $textBlock = $btn.Content + if ($textBlock -and + $textBlock.GetType().Name -eq "TextBlock") { + $textBlock.Inlines.Clear() + $run = New-Object Windows.Documents.Run + $run.Text = $text + $textBlock.Inlines.Add($run) + } + } + + # SearchBar tooltip + $sb = $sync["SearchBar"] + if ($sb) { + $sb.ToolTip = & $getStr "search_tooltip" ` + "Press Ctrl-F and type app name to filter application list below. Press Esc to reset the filter" + } + + # Theme button and menu items + $thBtn = $sync["ThemeButton"] + if ($thBtn) { + $thBtn.ToolTip = & $getStr "theme_tooltip" ` + "Change the Winutil UI Theme" + } + + $themeItems = @{ + "AutoThemeMenuItem" = @{ + hKey = "theme_auto"; hDef = "Auto" + tKey = "theme_auto_tooltip" + tDef = "Follow the Windows Theme" + } + "DarkThemeMenuItem" = @{ + hKey = "theme_dark"; hDef = "Dark" + tKey = "theme_dark_tooltip" + tDef = "Use Dark Theme" + } + "LightThemeMenuItem" = @{ + hKey = "theme_light"; hDef = "Light" + tKey = "theme_light_tooltip" + tDef = "Use Light Theme" + } + } + + foreach ($itemName in $themeItems.Keys) { + $item = $sync[$itemName] + if (-not $item) { continue } + $info = $themeItems[$itemName] + $item.Header = & $getStr $info.hKey $info.hDef + $item.ToolTip = & $getStr $info.tKey $info.tDef + } + + # Font scaling popup + $fsBtn = $sync["FontScalingButton"] + if ($fsBtn) { + $fsBtn.ToolTip = & $getStr "font_scaling_tooltip" ` + "Adjust Font Scaling for Accessibility" + } + + # Settings menu items + $settingsItems = @{ + "ImportMenuItem" = @{ + hKey = "settings_import"; hDef = "Import" + tKey = "settings_import_tooltip" + tDef = "Import Configuration from exported file." + } + "ExportMenuItem" = @{ + hKey = "settings_export"; hDef = "Export" + tKey = "settings_export_tooltip" + tDef = "Export Selected Elements and copy execution command to clipboard." + } + "AboutMenuItem" = @{ + hKey = "settings_about"; hDef = "About" + } + "SponsorMenuItem" = @{ + hKey = "settings_sponsors"; hDef = "Sponsors" + } + } + + foreach ($itemName in $settingsItems.Keys) { + $item = $sync[$itemName] + if (-not $item) { continue } + $info = $settingsItems[$itemName] + $item.Header = & $getStr $info.hKey $info.hDef + if ($info.tKey) { + $item.ToolTip = & $getStr $info.tKey $info.tDef + } + } + + # Tweaks tab preset buttons + $tweakBtns = @{ + "WPFstandard" = @{ + key = "preset_standard"; default = " Standard " + } + "WPFminimal" = @{ + key = "preset_minimal"; default = " Minimal " + } + "WPFClearTweaksSelection" = @{ + key = "preset_clear"; default = " Clear " + } + "WPFGetInstalledTweaks" = @{ + key = "preset_get_installed" + default = " Get Installed " + } + "WPFTweaksbutton" = @{ + key = "tweaks_run"; default = "Run Tweaks" + } + "WPFUndoall" = @{ + key = "tweaks_undo" + default = "Undo Selected Tweaks" + } + } + + foreach ($btnName in $tweakBtns.Keys) { + $btn = $sync[$btnName] + if (-not $btn) { continue } + $info = $tweakBtns[$btnName] + $btn.Content = & $getStr $info.key $info.default + } + + # Updates tab buttons + $updateBtns = @{ + "WPFUpdatesdefault" = @{ + key = "updates_default" + default = "Default Settings" + } + "WPFUpdatessecurity" = @{ + key = "updates_security" + default = "Security Settings" + } + "WPFUpdatesdisable" = @{ + key = "updates_disable" + default = "Disable All Updates" + } + } + + foreach ($btnName in $updateBtns.Keys) { + $btn = $sync[$btnName] + if (-not $btn) { continue } + $info = $updateBtns[$btnName] + $btn.Content = & $getStr $info.key $info.default + } + + $recLabel = $sync["RecommendedSelectionsLabel"] + if ($recLabel) { + $recLabel.Content = + & $getStr "recommended_selections" ` + "Recommended Selections:" + } + + $langBtn = $sync["LanguageButton"] + if ($langBtn -and $localeData._metadata) { + $langBtn.ToolTip = & $getStr "language_tooltip" ` + "Change Language" + } +} + +function Get-WinUtilAvailableLanguages { + <# + .SYNOPSIS + Returns a list of available languages from locales. + #> + $languages = @() + $languages += [PSCustomObject]@{ + Code = "en" + Name = "English" + } + + if ($sync.configs.locales) { + foreach ($prop in + $sync.configs.locales.PSObject.Properties) { + if ($prop.Name -eq "en") { continue } + $locale = $prop.Value + $name = if ($locale._metadata -and + $locale._metadata.name) { + $locale._metadata.name + } else { $prop.Name } + + $languages += [PSCustomObject]@{ + Code = $prop.Name + Name = $name + } + } + } + + return $languages +} diff --git a/locales/en.json b/locales/en.json new file mode 100644 index 0000000000..c08633a51f --- /dev/null +++ b/locales/en.json @@ -0,0 +1,41 @@ +{ + "_metadata": { + "locale": "en", + "name": "English", + "author": "ChrisTitusTech", + "version": "1.0.0", + "description": "English is the default language. This file serves as a reference template for translators." + }, + "ui": { + "tab_install": "Install", + "tab_tweaks": "Tweaks", + "tab_config": "Config", + "tab_updates": "Updates", + "search_tooltip": "Press Ctrl-F and type app name to filter application list below. Press Esc to reset the filter", + "theme_tooltip": "Change the Winutil UI Theme", + "theme_auto": "Auto", + "theme_auto_tooltip": "Follow the Windows Theme", + "theme_dark": "Dark", + "theme_dark_tooltip": "Use Dark Theme", + "theme_light": "Light", + "theme_light_tooltip": "Use Light Theme", + "font_scaling_tooltip": "Adjust Font Scaling for Accessibility", + "settings_import": "Import", + "settings_import_tooltip": "Import Configuration from exported file.", + "settings_export": "Export", + "settings_export_tooltip": "Export Selected Elements and copy execution command to clipboard.", + "settings_about": "About", + "settings_sponsors": "Sponsors", + "preset_standard": " Standard ", + "preset_minimal": " Minimal ", + "preset_clear": " Clear ", + "preset_get_installed": " Get Installed ", + "tweaks_run": "Run Tweaks", + "tweaks_undo": "Undo Selected Tweaks", + "updates_default": "Default Settings", + "updates_security": "Security Settings", + "updates_disable": "Disable All Updates", + "language_tooltip": "Change Language", + "recommended_selections": "Recommended Selections:" + } +} diff --git a/locales/zh-TW.json b/locales/zh-TW.json new file mode 100644 index 0000000000..6a9334605b --- /dev/null +++ b/locales/zh-TW.json @@ -0,0 +1,1550 @@ +{ + "_metadata": { + "locale": "zh-TW", + "name": "繁體中文", + "description": "Traditional Chinese translation for WinUtil" + }, + "ui": { + "tab_install": "安裝", + "tab_tweaks": "調整", + "tab_config": "設定", + "tab_updates": "更新", + "search_tooltip": "按 Ctrl-F 並輸入應用程式名稱以篩選下方清單。按 Esc 重置篩選", + "theme_tooltip": "變更 Winutil 介面主題", + "theme_auto": "自動", + "theme_auto_tooltip": "跟隨 Windows 主題", + "theme_dark": "深色", + "theme_dark_tooltip": "使用深色主題", + "theme_light": "淺色", + "theme_light_tooltip": "使用淺色主題", + "font_scaling_tooltip": "調整字體縮放以提高無障礙存取性", + "settings_import": "匯入", + "settings_import_tooltip": "從匯出的檔案匯入設定", + "settings_export": "匯出", + "settings_export_tooltip": "匯出選取的項目並複製執行命令到剪貼簿", + "settings_about": "關於", + "settings_sponsors": "贊助者", + "preset_standard": " 標準 ", + "preset_minimal": " 精簡 ", + "preset_clear": " 清除 ", + "preset_get_installed": " 取得已安裝 ", + "tweaks_run": "執行調整", + "tweaks_undo": "復原所選調整", + "updates_default": "預設設定", + "updates_security": "安全性設定", + "updates_disable": "停用所有更新", + "language_tooltip": "變更語言", + "recommended_selections": "建議選項:" + }, + "categories": { + "____Actions": "____操作", + "__Package Manager": "__套件管理器", + "__Selection": "__選擇", + "Essential Tweaks": "基本調整", + "Customize Preferences": "自訂偏好設定", + "Performance Plans": "效能計畫", + "z__Advanced Tweaks - CAUTION": "z__進階調整 - 注意", + "Features": "功能", + "Fixes": "修復", + "Legacy Windows Panels": "傳統 Windows 面板", + "Powershell Profile Powershell 7+ Only": "PowerShell 設定檔(僅限 7+)", + "Remote Access": "遠端存取", + "Browsers": "瀏覽器", + "Communications": "通訊軟體", + "Development": "開發工具", + "Document": "文件工具", + "Games": "遊戲", + "Microsoft Tools": "Microsoft 工具", + "Multimedia Tools": "多媒體工具", + "Pro Tools": "專業工具", + "Utilities": "工具程式" + }, + "appnavigation": { + "WPFInstall": { + "Content": "安裝/升級應用程式", + "Description": "安裝或升級選取的應用程式" + }, + "WPFUninstall": { + "Content": "解除安裝應用程式", + "Description": "解除安裝選取的應用程式" + }, + "WPFInstallUpgrade": { + "Content": "升級所有應用程式", + "Description": "升級所有應用程式至最新版本" + }, + "WingetRadioButton": { + "Content": "Winget", + "Description": "使用 Winget 套件管理" + }, + "ChocoRadioButton": { + "Content": "Chocolatey", + "Description": "使用 Chocolatey 套件管理" + }, + "WPFCollapseAllCategories": { + "Content": "收合所有分類", + "Description": "收合所有應用程式分類" + }, + "WPFExpandAllCategories": { + "Content": "展開所有分類", + "Description": "展開所有應用程式分類" + }, + "WPFClearInstallSelection": { + "Content": "清除選取", + "Description": "清除應用程式選取" + }, + "WPFGetInstalled": { + "Content": "取得已安裝", + "Description": "顯示已安裝的應用程式" + }, + "WPFselectedAppsButton": { + "Content": "已選取應用程式: 0", + "Description": "顯示已選取的應用程式" + } + }, + "tweaks": { + "WPFTweaksActivity": { + "Content": "停用活動歷程記錄", + "Description": "清除最近的文件、剪貼簿和執行歷程記錄。" + }, + "WPFTweaksHiber": { + "Content": "停用休眠", + "Description": "休眠主要適用於筆電,會在關機前將記憶體內容儲存到磁碟。一般不建議使用。" + }, + "WPFTweaksWidget": { + "Content": "移除小工具", + "Description": "移除工作列上的小工具。" + }, + "WPFTweaksLaptopHibernation": { + "Content": "設定休眠為預設(適用筆電)", + "Description": "大多數現代筆電啟用了連線待命模式會耗盡電池,此設定將休眠設為預設以節省電力。" + }, + "WPFTweaksLocation": { + "Content": "停用位置追蹤", + "Description": "停用位置追蹤服務。" + }, + "WPFTweaksServices": { + "Content": "設定服務為手動", + "Description": "將不需要持續執行的系統服務設為手動,需要時會自動啟動,相當安全。" + }, + "WPFTweaksBraveDebloat": { + "Content": "Brave 去臃腫化", + "Description": "停用 Brave 獎勵、Leo AI、加密錢包和 VPN 等功能。" + }, + "WPFTweaksEdgeDebloat": { + "Content": "Edge 去臃腫化", + "Description": "停用 Edge 中的遙測選項、彈出視窗和其他干擾功能。" + }, + "WPFTweaksConsumerFeatures": { + "Content": "停用消費者功能", + "Description": "Windows 將不會自動安裝遊戲、第三方應用程式或 Store 連結。某些預設應用程式可能無法使用。" + }, + "WPFTweaksTelemetry": { + "Content": "停用遙測", + "Description": "停用 Microsoft 遙測資料收集。" + }, + "WPFTweaksRemoveEdge": { + "Content": "移除 Microsoft Edge", + "Description": "解除 Edge 解除安裝限制,然後使用其自帶的解除安裝程式移除。" + }, + "WPFTweaksUTC": { + "Content": "設定時間為 UTC(雙系統開機)", + "Description": "雙系統開機必備,修正與 Linux 系統的時間同步問題。" + }, + "WPFTweaksRemoveOneDrive": { + "Content": "移除 OneDrive", + "Description": "使用 OneDrive 自帶的解除安裝程式移除。" + }, + "WPFTweaksRemoveHome": { + "Content": "移除檔案總管首頁", + "Description": "從檔案總管移除首頁,並將「本機」設為預設。" + }, + "WPFTweaksRemoveGallery": { + "Content": "移除檔案總管圖庫", + "Description": "從檔案總管移除圖庫,並將「本機」設為預設。" + }, + "WPFTweaksDisplay": { + "Content": "設定顯示效能最佳化", + "Description": "將系統偏好設定設為效能優先。也可透過 sysdm.cpl 手動設定。" + }, + "WPFTweaksXboxRemoval": { + "Content": "移除 Xbox 與遊戲元件", + "Description": "移除 Xbox 服務、Xbox 應用程式、Game Bar 和相關驗證元件。" + }, + "WPFTweaksDeBloat": { + "Content": "移除所有 MS Store 應用程式 - 不建議", + "Description": "謹慎使用!這會移除所有 Microsoft Store 應用程式。" + }, + "WPFTweaksRestorePoint": { + "Content": "建立還原點", + "Description": "建立系統還原點,以便在需要時復原 WinUtil 的修改。" + }, + "WPFTweaksEndTaskOnTaskbar": { + "Content": "啟用右鍵結束工作", + "Description": "啟用在工作列上右鍵點擊程式時的「結束工作」選項。" + }, + "WPFTweaksPowershell7Tele": { + "Content": "停用 PowerShell 7 遙測", + "Description": "建立環境變數告知 PowerShell 7 不要傳送遙測資料。" + }, + "WPFTweaksStorage": { + "Content": "停用儲存空間感知器", + "Description": "儲存空間感知器會自動刪除暫存檔案。" + }, + "WPFTweaksRemoveCopilot": { + "Content": "停用 Microsoft Copilot", + "Description": "停用 Windows 23H2 以來內建的 MS Copilot AI。" + }, + "WPFTweaksWPBT": { + "Content": "停用 Windows Platform Binary Table (WPBT)", + "Description": "啟用時允許電腦廠商在每次開機時執行程式,可能是安全風險。" + }, + "WPFTweaksRazerBlock": { + "Content": "封鎖 Razer 軟體安裝", + "Description": "封鎖所有 Razer 軟體安裝。警告:這也會封鎖所有第三方驅動程式安裝。" + }, + "WPFTweaksDisableNotifications": { + "Content": "停用通知匣/日曆", + "Description": "停用所有通知,包括日曆。" + }, + "WPFTweaksBlockAdobeNet": { + "Content": "封鎖 Adobe 網路連線", + "Description": "選擇性封鎖 Adobe 啟用和遙測伺服器的連線。" + }, + "WPFTweaksRightClickMenu": { + "Content": "設定傳統右鍵選單", + "Description": "恢復 Windows 11 的傳統右鍵選單。" + }, + "WPFTweaksDiskCleanup": { + "Content": "執行磁碟清理", + "Description": "在 C: 磁碟執行磁碟清理並移除舊的 Windows 更新。" + }, + "WPFTweaksDeleteTempFiles": { + "Content": "刪除暫存檔案", + "Description": "清除暫存資料夾。" + }, + "WPFTweaksIPv46": { + "Content": "IPv4 優先於 IPv6", + "Description": "在未設定 IPv6 的私人網路上,設定 IPv4 優先可改善延遲和安全性。" + }, + "WPFTweaksTeredo": { + "Content": "停用 Teredo", + "Description": "Teredo 網路隧道是 IPv6 功能,可能造成額外延遲,但停用可能影響某些遊戲。" + }, + "WPFTweaksDisableIPv6": { + "Content": "停用 IPv6", + "Description": "停用 IPv6。" + }, + "WPFTweaksDisableBGapps": { + "Content": "停用背景應用程式", + "Description": "停用所有 Microsoft Store 應用程式在背景執行。" + }, + "WPFTweaksDisableFSO": { + "Content": "停用全螢幕最佳化", + "Description": "在所有應用程式中停用全螢幕最佳化。注意:這會停用獨佔全螢幕的色彩管理。" + }, + "WPFToggleDarkMode": { + "Content": "Windows 深色主題", + "Description": "啟用/停用深色模式。" + }, + "WPFToggleBingSearch": { + "Content": "開始選單 Bing 搜尋", + "Description": "啟用時會在開始選單搜尋中包含 Bing 網頁搜尋結果。" + }, + "WPFToggleNumLock": { + "Content": "開機時啟用 NumLock", + "Description": "切換電腦啟動時 Num Lock 鍵的狀態。" + }, + "WPFToggleVerboseLogon": { + "Content": "詳細登入訊息", + "Description": "在登入過程中顯示詳細訊息,用於疑難排解。" + }, + "WPFToggleStartMenuRecommendations": { + "Content": "開始選單建議", + "Description": "停用後開始選單中不會顯示建議。" + }, + "WPFToggleHideSettingsHome": { + "Content": "移除設定首頁", + "Description": "移除 Windows 設定應用程式中的首頁。" + }, + "WPFToggleMouseAcceleration": { + "Content": "滑鼠加速", + "Description": "啟用時游標移動受實體滑鼠移動速度影響。" + }, + "WPFToggleStickyKeys": { + "Content": "相黏鍵", + "Description": "協助行動不便使用者的無障礙功能。" + }, + "WPFToggleNewOutlook": { + "Content": "新版 Outlook", + "Description": "停用時移除新版 Outlook 切換開關並確保使用舊版 Outlook。" + }, + "WPFToggleMultiplaneOverlay": { + "Content": "停用多平面覆蓋", + "Description": "停用多平面覆蓋,有時可能導致顯示卡問題。" + }, + "WPFToggleHiddenFiles": { + "Content": "顯示隱藏檔案", + "Description": "啟用時會顯示隱藏檔案。" + }, + "WPFToggleShowExt": { + "Content": "顯示副檔名", + "Description": "啟用時會顯示副檔名(如 .txt、.jpg)。" + }, + "WPFToggleTaskbarSearch": { + "Content": "工作列搜尋按鈕", + "Description": "啟用時工作列上會顯示搜尋按鈕。" + }, + "WPFToggleTaskView": { + "Content": "工作列工作檢視按鈕", + "Description": "啟用時工作列上會顯示工作檢視按鈕。" + }, + "WPFToggleTaskbarAlignment": { + "Content": "工作列項目置中", + "Description": "[Windows 11] 啟用時工作列項目置中顯示,否則靠左顯示。" + }, + "WPFToggleDetailedBSoD": { + "Content": "詳細藍色當機畫面", + "Description": "啟用時會顯示包含更多資訊的詳細藍色當機畫面。" + }, + "WPFToggleS3Sleep": { + "Content": "S3 睡眠", + "Description": "在現代待命和 S3 睡眠之間切換。" + }, + "WPFOOSUbutton": { + "Content": "執行 OO Shutup 10" + }, + "WPFchangedns": { + "Content": "DNS 設定" + }, + "WPFAddUltPerf": { + "Content": "新增並啟用極致效能計畫" + }, + "WPFRemoveUltPerf": { + "Content": "移除極致效能計畫" + }, + "WPFTweaksDisableExplorerAutoDiscovery": { + "Content": "停用檔案總管自動探索資料夾", + "Description": "檔案總管會自動根據內容猜測資料夾類型,導致瀏覽速度變慢。" + }, + "WPFToggleDisableCrossDeviceResume": { + "Content": "跨裝置繼續", + "Description": "控制 Windows 11 24H2 的繼續功能,允許從行動裝置繼續作業。" + } + }, + "feature": { + "WPFFeaturesdotnet": { + "Content": "所有 .NET Framework (2,3,4)", + "Description": ".NET 和 .NET Framework 是由工具、程式語言和程式庫組成的開發平台。" + }, + "WPFFeatureshyperv": { + "Content": "Hyper-V 虛擬化", + "Description": "Hyper-V 是 Microsoft 的硬體虛擬化產品,可建立和管理虛擬機器。" + }, + "WPFFeatureslegacymedia": { + "Content": "舊版媒體 (WMP, DirectPlay)", + "Description": "啟用舊版 Windows 的傳統媒體程式。" + }, + "WPFFeaturewsl": { + "Content": "Windows 子系統 Linux 版", + "Description": "允許 Linux 程式在 Windows 上原生執行,無需虛擬機器或雙系統開機。" + }, + "WPFFeaturenfs": { + "Content": "NFS 網路檔案系統", + "Description": "網路檔案系統 (NFS) 是在網路上儲存檔案的機制。" + }, + "WPFFeatureRegBackup": { + "Content": "啟用每日登錄備份 (凌晨 12:30)", + "Description": "啟用每日登錄備份,此功能在 Windows 10 1803 中被停用。" + }, + "WPFFeatureEnableLegacyRecovery": { + "Content": "啟用舊版 F8 開機修復", + "Description": "啟用進階開機選項畫面,以進階疑難排解模式啟動 Windows。" + }, + "WPFFeatureDisableLegacyRecovery": { + "Content": "停用舊版 F8 開機修復", + "Description": "停用進階開機選項畫面。" + }, + "WPFFeaturesSandbox": { + "Content": "Windows 沙盒", + "Description": "輕量級虛擬機器,提供暫時性桌面環境以安全隔離執行應用程式。" + }, + "WPFFeatureInstall": { + "Content": "安裝功能" + }, + "WPFPanelAutologin": { + "Content": "設定自動登入" + }, + "WPFFixesUpdate": { + "Content": "重設 Windows Update" + }, + "WPFFixesNetwork": { + "Content": "重設網路" + }, + "WPFPanelDISM": { + "Content": "系統損毀掃描" + }, + "WPFFixesWinget": { + "Content": "重新安裝 WinGet" + }, + "WPFRunAdobeCCCleanerTool": { + "Content": "移除 Adobe Creative Cloud" + }, + "WPFPanelControl": { + "Content": "控制台" + }, + "WPFPanelComputer": { + "Content": "電腦管理" + }, + "WPFPanelNetwork": { + "Content": "網路連線" + }, + "WPFPanelPower": { + "Content": "電源選項" + }, + "WPFPanelPrinter": { + "Content": "印表機" + }, + "WPFPanelRegion": { + "Content": "地區設定" + }, + "WPFPanelRestore": { + "Content": "Windows 還原" + }, + "WPFPanelSound": { + "Content": "音效設定" + }, + "WPFPanelSystem": { + "Content": "系統內容" + }, + "WPFPanelTimedate": { + "Content": "日期和時間" + }, + "WPFWinUtilInstallPSProfile": { + "Content": "安裝 CTT PowerShell 設定檔" + }, + "WPFWinUtilUninstallPSProfile": { + "Content": "移除 CTT PowerShell 設定檔" + }, + "WPFWinUtilSSHServer": { + "Content": "啟用 OpenSSH 伺服器" + } + }, + "applications": { + "1password": { + "description": "安全儲存和管理密碼的工具。" + }, + "7zip": { + "description": "免費開源的檔案壓縮工具,支援多種格式,壓縮率高。" + }, + "adobe": { + "description": "免費的 PDF 檢視器,支援檢視、列印和註解。" + }, + "advancedip": { + "description": "快速易用的區域網路掃描工具。" + }, + "affine": { + "description": "開源的 Notion 替代品,支援書寫、繪圖和規劃。" + }, + "aimp": { + "description": "功能豐富的音樂播放器,支援多種音訊格式。" + }, + "alacritty": { + "description": "快速、跨平台、GPU 加速的終端機模擬器。" + }, + "anaconda3": { + "description": "Python 和 R 程式語言的科學計算發行版。" + }, + "angryipscanner": { + "description": "開源跨平台網路掃描器,掃描 IP 位址和連接埠。" + }, + "anki": { + "description": "使用智慧間隔重複法的記憶卡片應用程式。" + }, + "anydesk": { + "description": "快速低延遲的遠端桌面軟體。" + }, + "audacity": { + "description": "免費開源的音訊編輯軟體。" + }, + "autoruns": { + "description": "顯示系統開機或登入時自動執行的程式。" + }, + "rdcman": { + "description": "管理多個遠端桌面連線的工具。" + }, + "autohotkey": { + "description": "Windows 自動化腳本語言,可建立自訂巨集和快捷鍵。" + }, + "azuredatastudio": { + "description": "跨平台的 SQL Server 和 Azure SQL 資料管理工具。" + }, + "barrier": { + "description": "開源 KVM 軟體,用單一鍵盤滑鼠控制多台電腦。" + }, + "bat": { + "description": "帶有語法高亮的 cat 命令替代品。" + }, + "beeper": { + "description": "將所有聊天整合在一個應用程式中。" + }, + "bitwarden": { + "description": "開源密碼管理方案,跨裝置加密保管庫。" + }, + "bleachbit": { + "description": "清理系統並釋放磁碟空間。" + }, + "blender": { + "description": "強大的開源 3D 創作套件,支援建模、動畫和算圖。" + }, + "brave": { + "description": "注重隱私的瀏覽器,封鎖廣告和追蹤器。" + }, + "bulkcrapuninstaller": { + "description": "免費開源的批次程式移除工具。" + }, + "bulkrenameutility": { + "description": "批次重新命名檔案和資料夾的工具。" + }, + "AdvancedRenamer": { + "description": "一次重新命名多個檔案和資料夾的進階工具。" + }, + "calibre": { + "description": "強大易用的電子書管理、檢視和轉換工具。" + }, + "carnac": { + "description": "在畫面上顯示按鍵操作,適合簡報和教學。" + }, + "cemu": { + "description": "在 PC 上模擬 Wii U 遊戲的實驗性軟體。" + }, + "chatterino": { + "description": "乾淨可自訂的 Twitch 聊天用戶端。" + }, + "chrome": { + "description": "廣泛使用的網頁瀏覽器,以速度和簡潔著稱。" + }, + "chromium": { + "description": "Chrome 等瀏覽器的開源基礎專案。" + }, + "clementine": { + "description": "現代化音樂播放器和音樂庫管理工具。" + }, + "clink": { + "description": "Windows 命令列增強工具,支援語法高亮和改進的歷程記錄。" + }, + "clonehero": { + "description": "免費的吉他英雄風格節奏遊戲。" + }, + "cmake": { + "description": "開源跨平台的軟體建置、測試和打包工具。" + }, + "copyq": { + "description": "進階剪貼簿管理器,可儲存、編輯和擷取剪貼簿歷程。" + }, + "cpuz": { + "description": "系統監控和診斷工具,顯示 CPU、記憶體和主機板資訊。" + }, + "crystaldiskinfo": { + "description": "硬碟健康監控工具。" + }, + "capframex": { + "description": "基於 Intel PresentMon 的幀時間擷取和分析工具。" + }, + "crystaldiskmark": { + "description": "測量儲存裝置讀寫速度的硬碟效能測試工具。" + }, + "darktable": { + "description": "開源相片編輯工具,支援非破壞性工作流程。" + }, + "DaxStudio": { + "description": "DAX 查詢的終極執行和分析工具。" + }, + "ddu": { + "description": "完整移除 NVIDIA、AMD 和 Intel 顯示驅動程式的工具。" + }, + "deluge": { + "description": "免費開源的 BitTorrent 用戶端。" + }, + "devtoys": { + "description": "開發者常用工具集合,包括格式化、轉換等。" + }, + "digikam": { + "description": "進階開源相片管理軟體。" + }, + "discord": { + "description": "支援語音、視訊和文字聊天的通訊平台。" + }, + "dismtools": { + "description": "DISM 工具的快速自訂圖形介面。" + }, + "ntlite": { + "description": "整合更新、驅動程式,自動化 Windows 和應用程式安裝。" + }, + "ditto": { + "description": "Windows 標準剪貼簿的延伸工具。" + }, + "dockerdesktop": { + "description": "容器化應用程式開發和部署的強大工具。" + }, + "dotnet3": { + "description": "執行 .NET Core 3.1 應用程式所需的執行環境。" + }, + "dotnet5": { + "description": "執行 .NET 5 應用程式所需的執行環境。" + }, + "dotnet6": { + "description": "執行 .NET 6 應用程式所需的執行環境。" + }, + "dotnet7": { + "description": "執行 .NET 7 應用程式所需的執行環境。" + }, + "dotnet8": { + "description": "執行 .NET 8 應用程式所需的執行環境。" + }, + "dotnet9": { + "description": "執行 .NET 9 應用程式所需的執行環境。" + }, + "dmt": { + "description": "自訂多螢幕處理方式的免費工具。" + }, + "duplicati": { + "description": "開源備份方案,支援加密、壓縮和增量備份。" + }, + "eaapp": { + "description": "Electronic Arts 遊戲存取和遊玩平台。" + }, + "eartrumpet": { + "description": "簡單直覺的 Windows 音量控制工具。" + }, + "edge": { + "description": "基於 Chromium 的現代瀏覽器。" + }, + "efibooteditor": { + "description": "管理系統 EFI/UEFI 開機項目的工具。" + }, + "emulationstation": { + "description": "可主題化的模擬器前端,在一處存取所有遊戲。" + }, + "enteauth": { + "description": "免費、跨平台、端對端加密的驗證器。" + }, + "epicgames": { + "description": "Epic Games Store 的遊戲啟動器。" + }, + "esearch": { + "description": "快速高效的 Windows 檔案搜尋工具。" + }, + "espanso": { + "description": "跨平台開源文字擴展工具,以 Rust 撰寫。" + }, + "ffmpeg": { + "description": "強大的多媒體處理工具,支援大量編解碼器和格式。" + }, + "falkon": { + "description": "輕量快速、注重隱私的瀏覽器。" + }, + "fastfetch": { + "description": "以美觀方式顯示系統資訊的命令列工具。" + }, + "ferdium": { + "description": "將多個通訊服務合併在單一應用程式中。" + }, + "fileconverter": { + "description": "透過右鍵選單轉換和壓縮檔案的簡易工具。" + }, + "files": { + "description": "替代的檔案總管。" + }, + "firealpaca": { + "description": "免費數位繪圖軟體,提供豐富的繪圖工具。" + }, + "firefox": { + "description": "開源瀏覽器,以自訂選項和隱私功能著稱。" + }, + "firefoxesr": { + "description": "Firefox 延伸支援版本,每 42 週接收重大更新。" + }, + "flameshot": { + "description": "強大且易用的截圖軟體,支援註解和編輯。" + }, + "lightshot": { + "description": "輕量易用的截圖工具。" + }, + "floorp": { + "description": "開源瀏覽器,提供簡潔快速的瀏覽體驗。" + }, + "flow": { + "description": "Windows 快捷啟動器,搜尋、管理和啟動檔案及更多。" + }, + "flux": { + "description": "調整螢幕色溫以減少夜間使用時的眼睛疲勞。" + }, + "foobar": { + "description": "高度可自訂的模組化音樂播放器。" + }, + "foxpdfeditor": { + "description": "功能豐富的 PDF 編輯器和檢視器。" + }, + "foxpdfreader": { + "description": "免費的 PDF 檢視器。" + }, + "freecad": { + "description": "參數化 3D CAD 建模工具,適用於產品設計和工程。" + }, + "fxsound": { + "description": "免費開源音效增強軟體,含等化器和音效預設。" + }, + "fzf": { + "description": "命令列模糊搜尋工具。" + }, + "geforcenow": { + "description": "NVIDIA 雲端遊戲服務。" + }, + "gimp": { + "description": "多功能開源影像編輯器,支援修圖、編輯和合成。" + }, + "git": { + "description": "廣泛使用的分散式版本控制系統。" + }, + "gitbutler": { + "description": "支援同時管理多分支的 Git 用戶端。" + }, + "gitextensions": { + "description": "Git 的圖形介面,提供額外的原始碼管理功能。" + }, + "githubcli": { + "description": "直接從終端機操作 GitHub 的命令列工具。" + }, + "githubdesktop": { + "description": "易用的視覺化 Git 用戶端。" + }, + "gitkrakenclient": { + "description": "強大的視覺化 Git 用戶端,支援所有 Git 儲存庫。" + }, + "glaryutilities": { + "description": "全方位的系統優化和維護工具。" + }, + "godotengine": { + "description": "免費開源的 2D 和 3D 遊戲引擎。" + }, + "gog": { + "description": "提供無 DRM 遊戲的遊戲用戶端。" + }, + "gitify": { + "description": "在選單列顯示 GitHub 通知。" + }, + "golang": { + "description": "靜態型別編譯語言,注重簡潔和效率。" + }, + "googledrive": { + "description": "Google 帳號的跨裝置檔案同步。" + }, + "gpuz": { + "description": "顯示顯示卡和 GPU 的詳細資訊。" + }, + "greenshot": { + "description": "輕量截圖工具,內建編輯器和自訂擷取選項。" + }, + "gsudo": { + "description": "Windows 的 sudo 實作,允許提升權限執行。" + }, + "handbrake": { + "description": "開源影片轉碼器,支援幾乎所有影片格式。" + }, + "harmonoid": { + "description": "播放和管理音樂庫,支援播放清單和歌詞同步。" + }, + "heidisql": { + "description": "支援 MySQL、MariaDB、SQL Server 和 PostgreSQL 的資料庫用戶端。" + }, + "helix": { + "description": "以 Rust 撰寫的 Neovim 替代品。" + }, + "heroiclauncher": { + "description": "Epic Games Store 的開源替代啟動器。" + }, + "hexchat": { + "description": "免費開源的 IRC 圖形介面聊天用戶端。" + }, + "hwinfo": { + "description": "全面的硬體資訊和診斷工具。" + }, + "hwmonitor": { + "description": "讀取系統主要健康感測器的硬體監控程式。" + }, + "imhex": { + "description": "現代化、功能豐富的十六進位編輯器。" + }, + "imageglass": { + "description": "多功能圖片檢視器,支援多種格式,注重簡潔和速度。" + }, + "imgburn": { + "description": "輕量的光碟燒錄工具,支援 CD、DVD 和藍光。" + }, + "inkscape": { + "description": "強大的開源向量圖形編輯器。" + }, + "itch": { + "description": "獨立遊戲和創意專案的數位發行平台。" + }, + "itunes": { + "description": "Apple 開發的媒體播放器和媒體庫管理工具。" + }, + "jami": { + "description": "安全注重隱私的通訊平台,支援音訊視訊通話和訊息。" + }, + "java8": { + "description": "免費、多平台的 OpenJDK 發行版。" + }, + "java11": { + "description": "免費、多平台的 OpenJDK 發行版。" + }, + "java17": { + "description": "免費、多平台的 OpenJDK 發行版。" + }, + "java21": { + "description": "免費、多平台的 OpenJDK 發行版。" + }, + "java25": { + "description": "免費、多平台的 OpenJDK 發行版。" + }, + "jdownloader": { + "description": "功能豐富的下載管理器,支援多種檔案空間服務。" + }, + "jellyfinmediaplayer": { + "description": "Jellyfin 媒體伺服器的用戶端應用程式。" + }, + "jellyfinserver": { + "description": "開源媒體伺服器,整理和串流你的媒體庫。" + }, + "jetbrains": { + "description": "輕鬆安裝和管理 JetBrains 開發工具的平台。" + }, + "joplin": { + "description": "開源筆記和待辦事項應用程式,支援同步。" + }, + "jpegview": { + "description": "精簡、快速且高度可設定的圖片檢視器/編輯器。" + }, + "kdeconnect": { + "description": "無縫整合桌面和行動裝置。" + }, + "kdenlive": { + "description": "開源影片編輯軟體,功能強大專業級品質。" + }, + "keepass": { + "description": "跨平台開源密碼管理器,加密功能強大。" + }, + "klite": { + "description": "音訊和視訊解碼器集合,提供媒體播放所需元件。" + }, + "kodi": { + "description": "開源媒體中心,播放影片、音樂和其他數位媒體。" + }, + "krita": { + "description": "強大的開源繪圖應用程式,適合插畫師和概念藝術家。" + }, + "lazygit": { + "description": "簡單的終端機 Git 操作介面。" + }, + "libreoffice": { + "description": "強大的免費辦公套件,相容其他主要辦公軟體。" + }, + "librewolf": { + "description": "基於 Firefox 的注重隱私瀏覽器,加強隱私和安全。" + }, + "linkshellextension": { + "description": "在檔案總管中建立硬連結、連接點和符號連結。" + }, + "linphone": { + "description": "開源 VoIP 服務,支援音訊視訊通話和訊息。" + }, + "livelywallpaper": { + "description": "免費開源動態桌布和螢幕保護程式工具。" + }, + "localsend": { + "description": "開源跨平台的 AirDrop 替代品。" + }, + "lockhunter": { + "description": "刪除被不明程式鎖定的檔案的免費工具。" + }, + "logseq": { + "description": "多功能知識管理和筆記應用程式,支援雙向連結。" + }, + "malwarebytes": { + "description": "提供即時防護的反惡意軟體工具。" + }, + "masscode": { + "description": "快速高效的開源程式碼片段管理器。" + }, + "matrix": { + "description": "Matrix 去中心化安全通訊網路的用戶端。" + }, + "meld": { + "description": "檔案和目錄的視覺化差異和合併工具。" + }, + "ModernFlyouts": { + "description": "開源的 Fluent Design 現代化通知面板。" + }, + "monitorian": { + "description": "調整螢幕亮度和對比度的工具。" + }, + "moonlight": { + "description": "透過區域網路串流 PC 遊戲到其他裝置。" + }, + "Motrix": { + "description": "全功能的下載管理器。" + }, + "mpchc": { + "description": "免費開源的影音播放器。" + }, + "mremoteng": { + "description": "免費開源的遠端連線管理器,單一介面管理多個遠端工作階段。" + }, + "msedgeredirect": { + "description": "將新聞、搜尋、小工具等重導向到預設瀏覽器的工具。" + }, + "msiafterburner": { + "description": "進階功能的顯示卡超頻工具。" + }, + "mullvadvpn": { + "description": "Mullvad VPN 服務的用戶端軟體。" + }, + "BorderlessGaming": { + "description": "以無邊框視窗模式遊玩你喜愛的遊戲。" + }, + "EqualizerAPO": { + "description": "Windows 的參數/圖形等化器。" + }, + "CompactGUI": { + "description": "使用 Windows 10/11 API 透明壓縮遊戲和程式。" + }, + "ExifCleaner": { + "description": "清除圖片、影片、PDF 等檔案中繼資料的桌面應用程式。" + }, + "mullvadbrowser": { + "description": "與 Tor Project 合作開發的注重隱私瀏覽器。" + }, + "musescore": { + "description": "免費易用的樂譜製作、播放和列印軟體。" + }, + "musicbee": { + "description": "可自訂的音樂播放器,支援多種音訊格式。" + }, + "mp3tag": { + "description": "強大且易用的音訊中繼資料編輯工具。" + }, + "tagscanner": { + "description": "整理和管理音樂收藏的強大工具。" + }, + "nanazip": { + "description": "快速高效的檔案壓縮和解壓縮工具。" + }, + "netbird": { + "description": "可連接自建伺服器的開源 TailScale 替代品。" + }, + "naps2": { + "description": "簡化電子文件建立流程的文件掃描應用程式。" + }, + "neofetchwin": { + "description": "以美觀方式顯示系統資訊的命令列工具。" + }, + "neovim": { + "description": "高度可擴充的文字編輯器,Vim 的改進版。" + }, + "nextclouddesktop": { + "description": "Nextcloud 檔案同步和分享平台的官方桌面用戶端。" + }, + "nglide": { + "description": "3Dfx Voodoo Glide 包裝器,在現代顯卡上執行 Glide API 遊戲。" + }, + "nmap": { + "description": "開源網路探索和安全稽核工具。" + }, + "nodejs": { + "description": "基於 Chrome V8 引擎的 JavaScript 執行環境。" + }, + "nodejslts": { + "description": "Node.js 長期支援版本,穩定可靠的伺服器端 JavaScript 開發。" + }, + "nomacs": { + "description": "免費開源的跨平台圖片檢視器。" + }, + "notepadplus": { + "description": "免費開源的程式碼編輯器,支援多種語言。" + }, + "nuget": { + "description": ".NET 框架的套件管理器。" + }, + "nushell": { + "description": "現代化 shell,強大、富有表現力且快速。" + }, + "nvclean": { + "description": "自訂 NVIDIA 驅動程式安裝的工具。" + }, + "nvm": { + "description": "輕鬆切換多個 Node.js 版本。" + }, + "obs": { + "description": "免費開源的影片錄製和直播軟體。" + }, + "obsidian": { + "description": "強大的筆記和知識管理應用程式。" + }, + "okular": { + "description": "多功能文件檢視器。" + }, + "onedrive": { + "description": "Microsoft 雲端儲存服務,跨裝置安全儲存和分享檔案。" + }, + "onlyoffice": { + "description": "全面的文件編輯和協作辦公套件。" + }, + "OPAutoClicker": { + "description": "功能完整的自動點擊工具,支援動態和固定位置。" + }, + "openhashtab": { + "description": "在檔案屬性中計算和驗證雜湊值的 Shell 擴充功能。" + }, + "openrgb": { + "description": "開源 RGB 燈光控制軟體。" + }, + "openscad": { + "description": "免費開源的腳本式 3D CAD 建模工具,適合 3D 列印。" + }, + "openshell": { + "description": "Windows 開始選單替代品,增強功能和自訂選項。" + }, + "OpenVPN": { + "description": "開源 VPN 用戶端,提供安全加密連線。" + }, + "OVirtualBox": { + "description": "強大的免費開源虛擬化工具。" + }, + "ownclouddesktop": { + "description": "ownCloud 檔案同步和分享平台的官方桌面用戶端。" + }, + "policyplus": { + "description": "適用於所有 Windows 版本的本機群組原則編輯器加強版。" + }, + "potplayer": { + "description": "免費的 Windows 媒體播放器,廣泛格式支援和高效能。" + }, + "processexplorer": { + "description": "工作管理員和系統監控工具。" + }, + "Paintdotnet": { + "description": "免費的影像和相片編輯軟體,介面直覺。" + }, + "parsec": { + "description": "低延遲高品質的遠端桌面分享應用程式。" + }, + "pdf24creator": { + "description": "免費易用的線上/桌面 PDF 工具。" + }, + "pdfsam": { + "description": "免費開源的 PDF 分割、合併和旋轉工具。" + }, + "peazip": { + "description": "免費開源的檔案壓縮工具,支援多種格式和加密。" + }, + "piimager": { + "description": "將作業系統映像寫入 SD 卡的工具。" + }, + "playnite": { + "description": "開源遊戲庫管理器,統一介面管理所有遊戲。" + }, + "plex": { + "description": "媒體伺服器軟體,整理和串流你的媒體庫。" + }, + "plexdesktop": { + "description": "Plex 媒體伺服器的桌面前端。" + }, + "Portmaster": { + "description": "免費開源的應用程式網路連線控制工具。" + }, + "posh": { + "description": "跨平台、跨 shell 的命令提示主題引擎。" + }, + "postman": { + "description": "簡化 API 開發流程的協作平台。" + }, + "powerautomate": { + "description": "自動化桌面和網頁工作的工具。" + }, + "powerbi": { + "description": "建立精美報告和視覺化的商業智慧工具。" + }, + "powershell": { + "description": "工作自動化框架和腳本語言。" + }, + "powertoys": { + "description": "進階使用者的生產力增強工具組。" + }, + "prismlauncher": { + "description": "開源 Minecraft 啟動器,管理多個實例和模組。" + }, + "processlasso": { + "description": "系統優化和自動化工具,改善回應速度和穩定性。" + }, + "protonauth": { + "description": "Proton 的 2FA 應用程式,安全同步和備份驗證碼。" + }, + "processmonitor": { + "description": "進階監控工具,即時顯示檔案系統、登錄和程序活動。" + }, + "orcaslicer": { + "description": "3D 印表機的 G-code 產生器。" + }, + "prucaslicer": { + "description": "強大易用的 3D 列印切片軟體。" + }, + "psremoteplay": { + "description": "從 PlayStation 主機串流遊戲到 PC 或行動裝置。" + }, + "putty": { + "description": "免費開源的終端機模擬器,支援 SSH、Telnet 和 SCP。" + }, + "python3": { + "description": "多功能程式語言,用於網頁開發、資料分析和 AI。" + }, + "qbittorrent": { + "description": "免費開源的 BitTorrent 用戶端。" + }, + "transmission": { + "description": "跨平台開源 BitTorrent 用戶端,輕量且強大。" + }, + "tixati": { + "description": "以 C++ 撰寫的跨平台 BitTorrent 用戶端,系統資源佔用低。" + }, + "qtox": { + "description": "免費開源的注重隱私和安全的通訊應用程式。" + }, + "quicklook": { + "description": "將 macOS 快速預覽功能帶到 Windows。" + }, + "rainmeter": { + "description": "建立和分享可自訂桌面面板的工具。" + }, + "revo": { + "description": "進階解除安裝工具,徹底清除不需要的軟體。" + }, + "WiseProgramUninstaller": { + "description": "快速完整移除 Windows 程式的工具。" + }, + "revolt": { + "description": "與社群保持聯繫的開源通訊平台。" + }, + "ripgrep": { + "description": "快速強大的命令列搜尋工具。" + }, + "rufus": { + "description": "格式化和建立可開機 USB 的工具。" + }, + "rustdesk": { + "description": "免費開源的遠端桌面應用程式。" + }, + "rustlang": { + "description": "注重安全和效能的系統程式語言。" + }, + "sagethumbs": { + "description": "在檔案總管中提供更多格式的縮圖支援。" + }, + "sandboxie": { + "description": "在隔離環境中執行應用程式以增強安全性。" + }, + "sdio": { + "description": "免費開源的驅動程式更新工具。" + }, + "session": { + "description": "建立在去中心化網路上的私密安全通訊應用程式。" + }, + "sharex": { + "description": "免費開源的螢幕擷取和檔案分享工具。" + }, + "nilesoftShell": { + "description": "擴充 Windows 右鍵選單的功能和自訂選項。" + }, + "systeminformer": { + "description": "免費多功能的系統資源監控和偵錯工具。" + }, + "sidequest": { + "description": "在 Oculus Quest 裝置上探索、安裝和管理 VR 內容。" + }, + "signal": { + "description": "端對端加密的安全私密通訊應用程式。" + }, + "signalrgb": { + "description": "單一免費應用程式控制和同步所有 RGB 裝置。" + }, + "simplenote": { + "description": "輕鬆記錄筆記、清單和想法。" + }, + "simplewall": { + "description": "免費開源的 Windows 防火牆應用程式。" + }, + "slack": { + "description": "透過頻道、訊息和檔案分享的團隊協作中心。" + }, + "spacedrive": { + "description": "支援雲端儲存整合和跨裝置同步的檔案管理器。" + }, + "spacesniffer": { + "description": "了解磁碟上資料夾和檔案結構的工具。" + }, + "starship": { + "description": "精簡、快速且可自訂的任何 shell 命令提示。" + }, + "steam": { + "description": "購買和遊玩遊戲的數位發行平台。" + }, + "strawberry": { + "description": "開源音樂播放器,注重音樂收藏管理和音質。" + }, + "stremio": { + "description": "整理和串流電影、影集和影片內容的媒體中心。" + }, + "sublimemerge": { + "description": "進階功能和精美介面的 Git 用戶端。" + }, + "sublimetext": { + "description": "精緻的程式碼、標記和散文文字編輯器。" + }, + "sumatra": { + "description": "輕量快速的 PDF 檢視器。" + }, + "pdfgear": { + "description": "全功能免費 PDF 管理軟體。" + }, + "sunshine": { + "description": "GameStream 伺服器,遠端串流 PC 遊戲。" + }, + "superf4": { + "description": "按自訂快捷鍵立即終止程式。" + }, + "swift": { + "description": "通用程式語言,易於上手且功能強大。" + }, + "synctrayzor": { + "description": "Syncthing 的 Windows 系統匣工具和啟動器。" + }, + "sqlmanagementstudio": { + "description": "管理任何 SQL 基礎架構的整合環境。" + }, + "tabby": { + "description": "高度可設定的終端機模擬器和 SSH 用戶端。" + }, + "tailscale": { + "description": "安全易用的 VPN 方案,連接你的裝置和網路。" + }, + "TcNoAccSwitcher": { + "description": "超快速帳號切換器,支援 Steam、Epic Games 等多個平台。" + }, + "tcpview": { + "description": "顯示系統上所有 TCP 和 UDP 端點的網路監控工具。" + }, + "teams": { + "description": "整合 Office 365 的協作平台,支援聊天、視訊會議和檔案分享。" + }, + "teamviewer": { + "description": "熱門的遠端存取和支援軟體。" + }, + "telegram": { + "description": "雲端即時通訊應用程式,以安全、速度和簡潔著稱。" + }, + "unigram": { + "description": "Windows 版 Telegram 用戶端。" + }, + "terminal": { + "description": "現代化、快速高效的終端機應用程式,支援多分頁。" + }, + "Thonny": { + "description": "適合初學者的 Python IDE。" + }, + "MuEditor": { + "description": "適合初學者的 Python 程式碼編輯器。" + }, + "thorium": { + "description": "以速度為目標的 Chromium 瀏覽器,AVX2 最佳化。" + }, + "thunderbird": { + "description": "免費開源的電子郵件用戶端,功能進階。" + }, + "betterbird": { + "description": "Thunderbird 的分支版本,含額外功能和修復。" + }, + "tidal": { + "description": "以高保真音質和獨家內容著稱的音樂串流服務。" + }, + "tor": { + "description": "利用 Tor 網路保護使用者隱私的匿名瀏覽器。" + }, + "totalcommander": { + "description": "強大直覺的 Windows 檔案管理器。" + }, + "treesize": { + "description": "分析和視覺化磁碟空間使用情況。" + }, + "ttaskbar": { + "description": "自訂 Windows 工作列透明度。" + }, + "twinkletray": { + "description": "輕鬆管理多螢幕亮度。" + }, + "ubisoft": { + "description": "Ubisoft 的數位發行和線上遊戲服務。" + }, + "ungoogled": { + "description": "去除 Google 整合的 Chromium 版本,增強隱私。" + }, + "unity": { + "description": "強大的遊戲開發平台,支援 2D、3D 和 AR/VR。" + }, + "vagrant": { + "description": "開源虛擬化開發環境建置和管理工具。" + }, + "vc2015_32": { + "description": "執行 32 位元應用程式所需的 Visual C++ 執行時期元件。" + }, + "vc2015_64": { + "description": "執行 64 位元應用程式所需的 Visual C++ 執行時期元件。" + }, + "ventoy": { + "description": "開源工具,在單一 USB 上支援多個 ISO 檔案。" + }, + "vesktop": { + "description": "跨平台的 Discord 桌面應用程式,內建 Vencord。" + }, + "viber": { + "description": "免費通訊和通話應用程式。" + }, + "videomass": { + "description": "跨平台的 FFmpeg 圖形介面,批次處理多媒體檔案。" + }, + "visualstudio": { + "description": "建置、偵錯和部署應用程式的整合開發環境。" + }, + "vivaldi": { + "description": "高度可自訂的瀏覽器,注重個人化和生產力。" + }, + "vlc": { + "description": "免費開源的多媒體播放器,支援廣泛的音訊和影片格式。" + }, + "voicemeeter": { + "description": "管理和增強電腦音訊串流的虛擬音效混音器。" + }, + "VoicemeeterPotato": { + "description": "Voicemeeter 音效混音器的終極版本。" + }, + "vrdesktopstreamer": { + "description": "將桌面畫面串流到 VR 裝置。" + }, + "vscode": { + "description": "免費開源的程式碼編輯器,支援多種程式語言。" + }, + "vscodium": { + "description": "社群驅動的 VS Code 自由授權版本。" + }, + "waterfox": { + "description": "基於 Firefox 的快速注重隱私瀏覽器。" + }, + "wazuh": { + "description": "開源安全監控平台,提供入侵偵測和日誌分析。" + }, + "wezterm": { + "description": "強大的跨平台終端機模擬器和多工器。" + }, + "windowspchealth": { + "description": "檢查電腦是否符合 Windows 11 系統需求。" + }, + "WindowGrid": { + "description": "使用滑鼠在動態網格上快速排列視窗。" + }, + "wingetui": { + "description": "Winget、Chocolatey 和其他套件管理器的圖形介面。" + }, + "winmerge": { + "description": "視覺化的文字檔案和目錄比較工具。" + }, + "winpaletter": { + "description": "調整 Windows 色彩調色盤的自訂工具。" + }, + "winrar": { + "description": "強大的壓縮檔案管理器,建立、管理和解壓縮。" + }, + "winscp": { + "description": "熱門的開源 SFTP、FTP 和 SCP 用戶端。" + }, + "wireguard": { + "description": "快速現代的 VPN 協定,簡單且高效。" + }, + "wireshark": { + "description": "廣泛使用的開源網路協定分析器。" + }, + "wisetoys": { + "description": "增強和優化 Windows 體驗的工具和公用程式。" + }, + "TeraCopy": { + "description": "更快更安全地複製檔案。" + }, + "wizfile": { + "description": "幾乎即時地按名稱搜尋硬碟上的檔案。" + }, + "wiztree": { + "description": "快速找到佔用最多空間的檔案和資料夾。" + }, + "xdm": { + "description": "進階下載管理器,支援多種協定和瀏覽器。" + }, + "xeheditor": { + "description": "免費的十六進位編輯器,檢視和編輯二進位檔案。" + }, + "xemu": { + "description": "開源 Xbox 模擬器,在 PC 上遊玩 Xbox 遊戲。" + }, + "xnview": { + "description": "高效的圖片檢視器、瀏覽器和轉換器。" + }, + "xournal": { + "description": "開源手寫筆記軟體,支援 PDF 註解。" + }, + "xpipe": { + "description": "開源容器化應用程式編排工具。" + }, + "yarn": { + "description": "快速、可靠且安全的 JavaScript 相依性管理工具。" + }, + "ytdlp": { + "description": "從 YouTube 和其他網站下載影片的命令列工具。" + }, + "zerotierone": { + "description": "軟體定義的安全可擴展網路工具。" + }, + "zim": { + "description": "維護 Wiki 頁面集合的圖形文字編輯器。" + }, + "znote": { + "description": "筆記應用程式。" + }, + "zoom": { + "description": "熱門的視訊會議和線上會議服務。" + }, + "zoomit": { + "description": "技術簡報的螢幕放大、註解和錄製工具。" + }, + "zotero": { + "description": "免費易用的研究資料收集、整理和引用工具。" + }, + "zoxide": { + "description": "快速高效的目錄切換工具。" + }, + "zulip": { + "description": "開源團隊協作工具,具有結構化的對話串流。" + }, + "syncthingtray": { + "description": "Syncthing 的 Windows 系統匣工具和啟動器。" + }, + "miniconda": { + "description": "conda 的免費精簡安裝程式,包含 conda、Python 和基本套件。" + }, + "pixi": { + "description": "基於 conda 生態系的快速套件管理器,支援多種語言。" + }, + "temurin": { + "description": "基於 OpenJDK 的開源 Java SE 建置版本。" + }, + "intelpresentmon": { + "description": "遊戲效能覆蓋層和遙測應用程式。" + }, + "pyenvwin": { + "description": "輕鬆切換多個 Python 版本。" + }, + "tightvnc": { + "description": "免費開源的遠端桌面軟體,透過網路存取和控制電腦。" + }, + "ultravnc": { + "description": "強大易用的免費遠端電腦存取軟體。" + }, + "windowsfirewallcontrol": { + "description": "擴充 Windows 防火牆功能的強大工具。" + }, + "vistaswitcher": { + "description": "更容易定位和切換視窗焦點,支援多螢幕。" + }, + "autodarkmode": { + "description": "自動在 Windows 深色和淺色主題之間切換。" + }, + "AmbieWhiteNoise": { + "description": "幫助專注、學習或放鬆的白噪音和自然音效應用程式。" + }, + "magicwormhole": { + "description": "安全地在電腦之間傳輸檔案。" + }, + "croc": { + "description": "輕鬆安全地在電腦之間傳送檔案。" + }, + "qgis": { + "description": "開源地理資訊系統軟體,建立、編輯和分析地理空間資訊。" + }, + "smplayer": { + "description": "免費的 Windows 和 Linux 媒體播放器,內建解碼器。" + }, + "glazewm": { + "description": "受 i3 啟發的 Windows 平鋪視窗管理器。" + }, + "fancontrol": { + "description": "免費開源軟體,根據溫度控制 CPU、GPU 和機殼風扇。" + }, + "fnm": { + "description": "透過終端機切換 Node 版本的快速工具。" + }, + "Windhawk": { + "description": "Windows 程式的自訂市集。" + }, + "ForceAutoHDR": { + "description": "簡化將遊戲加入 Windows 登錄 AutoHDR 清單的流程。" + }, + "JoyToKey": { + "description": "讓遊戲控制器模擬鍵盤和滑鼠輸入。" + }, + "nditools": { + "description": "透過 IP 即時傳輸高品質低延遲的影音。" + }, + "kicad": { + "description": "開源電子設計自動化工具。" + }, + "dropox": { + "description": "跨裝置檔案同步的雲端硬碟桌面應用程式。" + }, + "OFGB": { + "description": "移除 Windows 11 各處廣告的圖形介面工具。" + }, + "PaleMoon": { + "description": "基於 Goanna 的開源瀏覽器,注重效率和易用性。" + }, + "Shotcut": { + "description": "免費開源的跨平台影片編輯器。" + }, + "LenovoLegionToolkit": { + "description": "Lenovo Legion 系列筆電的開源工具,無背景服務和遙測。" + }, + "PulsarEdit": { + "description": "社群驅動的高度可自訂文字編輯器。" + }, + "Aegisub": { + "description": "免費跨平台的字幕建立和編輯工具。" + }, + "SubtitleEdit": { + "description": "免費開源的影片字幕編輯器。" + }, + "Fork": { + "description": "快速友善的 Git 用戶端。" + }, + "ZenBrowser": { + "description": "基於 Firefox 的現代化、注重隱私和效能的瀏覽器。" + }, + "Zed": { + "description": "專為速度和協作設計的現代化高效能程式碼編輯器。" + } + } +} \ No newline at end of file diff --git a/scripts/main.ps1 b/scripts/main.ps1 index 1a253f5824..dd898f497e 100644 --- a/scripts/main.ps1 +++ b/scripts/main.ps1 @@ -115,6 +115,7 @@ $sync.Form.Add_Loaded({ }) Invoke-WinutilThemeChange -init $true + # Load the configuration files $sync.configs.applicationsHashtable = @{} @@ -180,6 +181,90 @@ $sync.keys | ForEach-Object { } } +#=========================================================================== +# Initialize language system +#=========================================================================== + +$sync.currentLanguage = "en" + +$sync["LanguageButton"].Add_Click({ + Invoke-WPFPopup -PopupActionTable @{ "Settings" = "Hide"; "Theme" = "Hide"; "FontScaling" = "Hide" } + $sync.LanguagePopup.IsOpen = -not $sync.LanguagePopup.IsOpen +}) + +$languages = Get-WinUtilAvailableLanguages +foreach ($lang in $languages) { + $menuItem = New-Object Windows.Controls.MenuItem + $menuItem.Header = $lang.Name + $menuItem.FontSize = $sync.Form.FindResource("ButtonFontSize") + $menuItem.Foreground = $sync.Form.FindResource("MainForegroundColor") + $menuItem.Tag = $lang.Code + $menuItem.Add_Click({ + $selectedLang = $this.Tag + $sync.LanguagePopup.IsOpen = $false + + # Save checkbox states before rebuild (skip Toggle - auto-restored from system state) + $checkedItems = @{} + foreach ($cn in @("tweaks", "feature")) { + foreach ($prop in $sync.configs.$cn.PSObject.Properties) { + if ($prop.Value.Type -eq "Toggle") { continue } + $ctrl = $sync[$prop.Name] + if ($ctrl -and $ctrl.IsChecked) { + $checkedItems[$prop.Name] = $true + } + } + } + + Set-WinUtilLanguage -Language $selectedLang + Invoke-WPFUIElements -configVariable $sync.configs.appnavigation -targetGridName "appscategory" -columncount 1 + Initialize-WPFUI -targetGridName "appscategory" + Initialize-WPFUI -targetGridName "appspanel" + Invoke-WPFUIElements -configVariable $sync.configs.tweaks -targetGridName "tweakspanel" -columncount 2 + Invoke-WPFUIElements -configVariable $sync.configs.feature -targetGridName "featurespanel" -columncount 2 + + # Re-bind handlers only for rebuilt config controls (not XAML-defined ones) + foreach ($cn in @("appnavigation", "tweaks", "feature")) { + foreach ($prop in $sync.configs.$cn.PSObject.Properties) { + $ctrl = $sync[$prop.Name] + if (-not $ctrl) { continue } + $tn = $ctrl.GetType().Name + if ($tn -eq "Button" -or $tn -eq "ToggleButton") { + $ctrl.Add_Click({ + [System.Object]$Sender = $args[0] + Invoke-WPFButton $Sender.name + }) + } + } + } + + # Re-bind TextBlock Link handlers (all are rebuilt, no XAML-defined ones) + $sync.keys | ForEach-Object { + if ($sync.$psitem -and + $sync["$psitem"].GetType().Name -eq "TextBlock" -and + $sync["$psitem"].Name.EndsWith("Link")) { + $sync["$psitem"].Add_MouseUp({ + [System.Object]$Sender = $args[0] + Start-Process $Sender.ToolTip -ErrorAction Stop + }) + } + } + + # Re-bind package manager radio buttons and restore preference + $sync.ChocoRadioButton.Add_Checked({Set-PackageManagerPreference Choco}) + $sync.WingetRadioButton.Add_Checked({Set-PackageManagerPreference Winget}) + switch ($sync["ManagerPreference"]) { + "Choco" {$sync.ChocoRadioButton.IsChecked = $true} + "Winget" {$sync.WingetRadioButton.IsChecked = $true} + } + + # Restore checkbox states + foreach ($name in $checkedItems.Keys) { + if ($sync[$name]) { $sync[$name].IsChecked = $true } + } + }) + $sync.LanguageStackPanel.Children.Add($menuItem) +} + #=========================================================================== # Setup background config #=========================================================================== @@ -260,7 +345,7 @@ $commonKeyEvents = { $sync["Form"].Add_PreViewKeyDown($commonKeyEvents) $sync["Form"].Add_MouseLeftButtonDown({ - Invoke-WPFPopup -Action "Hide" -Popups @("Settings", "Theme", "FontScaling") + Invoke-WPFPopup -Action "Hide" -Popups @("Settings", "Theme", "FontScaling", "Language") $sync["Form"].DragMove() }) @@ -278,7 +363,7 @@ $sync["Form"].Add_MouseDoubleClick({ $sync["Form"].Add_Deactivated({ Write-Debug "WinUtil lost focus" - Invoke-WPFPopup -Action "Hide" -Popups @("Settings", "Theme", "FontScaling") + Invoke-WPFPopup -Action "Hide" -Popups @("Settings", "Theme", "FontScaling", "Language") }) $sync["Form"].Add_ContentRendered({ diff --git a/xaml/inputXML.xaml b/xaml/inputXML.xaml index 3b440452c4..6146758169 100644 --- a/xaml/inputXML.xaml +++ b/xaml/inputXML.xaml @@ -1010,6 +1010,28 @@ +