From abdb22f7391d4128a4f89d8b668781061aedf86d Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Tue, 30 Jun 2026 03:15:49 +0800
Subject: [PATCH] Add Windows preview build

---
 privatevoice.src/frontend/src/lib/i18n/en.json |   83 ++++++++++++++++++++++++++++++++++-------
 1 files changed, 69 insertions(+), 14 deletions(-)

diff --git a/privatevoice.src/frontend/src/lib/i18n/en.json b/privatevoice.src/frontend/src/lib/i18n/en.json
index 94b25f3..7f8aa66 100755
--- a/privatevoice.src/frontend/src/lib/i18n/en.json
+++ b/privatevoice.src/frontend/src/lib/i18n/en.json
@@ -1,10 +1,13 @@
 {
   "app": {
-    "name": "PrivateVoice Input",
-    "secondaryName": "私语输入"
+    "name": "PrivateVoice Dictation",
+    "brandName": "PrivateVoice",
+    "brandTagline": "Private. Offline.",
+    "secondaryName": "Private. Offline."
   },
   "nav": {
     "home": "Home",
+    "language": "Input",
     "userdict": "Dictionary",
     "permissions": "Permissions",
     "history": "History",
@@ -30,7 +33,7 @@
     "done": "Typed"
   },
   "home": {
-    "tagline": "Private.Offline",
+    "tagline": "Private. Offline.",
     "description": "Hold {key} to speak, release to recognize and type",
     "hotkeyLabel": "Trigger Hotkey",
     "modeHint": "Hold to record, release to type · Tap to start free talk, tap again to stop",
@@ -38,12 +41,38 @@
     "modeHintHold": "Hold to speak, release to stop and type"
   },
   "settings": {
+    "inputConfigTitle": "Input",
+    "inputConfigDesc": "Set input language and offline recognition models.",
     "inputDevice": "Input Device",
     "hotkeyMode": "Voice Input Mode",
     "hotkeyModeTap": "Tap",
     "hotkeyModeHold": "Hold",
     "hotkeyModeTapDesc": "Tap the hotkey to start speaking, then tap again to stop and type",
     "hotkeyModeHoldDesc": "Hold the hotkey to speak, release to stop and type",
+    "language": "Language",
+    "languageAuto": "Automatic",
+    "languageChinese": "Chinese",
+    "languageEnglish": "English",
+    "languageAutoDesc": "Follow the system language and choose the matching language version",
+    "languageManualDesc": "Use {language} as the app language and default recognition language",
+    "languageChineseDesc": "Use the Chinese interface with SenseVoice as the default offline model",
+    "languageEnglishDesc": "Use the English interface with Moonshine English as the default offline model",
+    "recognitionModel": "Recognition Model",
+    "recognitionModelDesc": "Choose the default offline model or an available model for {language}",
+    "recognitionModelChineseDesc": "Choose the default lightweight Chinese model or a larger high-quality Chinese model",
+    "recognitionModelEnglishDesc": "Choose the default lightweight model or a larger high-quality English model",
+    "modelDefault": "Default",
+    "modelAdvanced": "Advanced",
+    "modelCurrent": "Current",
+    "modelUse": "Use",
+    "modelDownload": "Download",
+    "modelCancel": "Cancel",
+    "modelCancelling": "Cancelling",
+    "modelWorking": "Working",
+    "modelUnavailable": "Unavailable",
+    "modelInstalled": "Installed",
+    "modelNotInstalled": "Not installed",
+    "modelActionFailed": "Model action failed",
     "autoHide": "Auto-hide Indicator",
     "autoHideDesc": "Automatically hide the floating indicator after completion",
     "soundFeedback": "Sound Feedback",
@@ -51,13 +80,24 @@
     "copyToClipboard": "Save Recognition to Clipboard",
     "copyToClipboardDesc": "Keep recognized text in the clipboard after input; off uses it only temporarily",
     "startAtLogin": "Start at Login",
-    "startAtLoginDesc": "Launch PrivateVoice Input when you log in",
+    "startAtLoginDesc": "Launch PrivateVoice Dictation when you log in",
     "hideDockIcon": "Hide Dock Icon",
-    "hideDockIconDesc": "Show PrivateVoice Input only in the menu bar"
+    "hideDockIconDesc": "Show PrivateVoice Dictation only in the menu bar"
+  },
+  "models": {
+    "sensevoiceDesc": "Lightweight Chinese offline model for Chinese and mixed Chinese-English input.",
+    "moonshineDesc": "Lightweight English offline model, recommended default.",
+    "parakeetDesc": "Higher quality English offline model for longer sentences and technical terms.",
+    "parakeetV3Desc": "Multilingual European offline model for French, German, Spanish, Italian, and Portuguese.",
+    "japaneseDesc": "Dedicated Japanese offline model based on ReazonSpeech.",
+    "koreanDesc": "Dedicated Korean offline model for Korean dictation.",
+    "qwen3Desc": "Higher quality Chinese offline model for long Chinese dictation, technical terms, and mixed Chinese-English input.",
+    "qwen3RequiresMacOS14": "Qwen3-ASR requires macOS 14 or later. This compatibility build does not support downloading it.",
+    "windowsPreviewUnsupported": "The Windows preview currently supports SenseVoice only. This model is not available yet."
   },
   "permissions": {
     "title": "Permission Check",
-    "subtitle": "PrivateVoice Input needs these permissions for recording, global hotkeys, and automatic text input",
+    "subtitle": "PrivateVoice Dictation needs these permissions for recording, global hotkeys, and automatic text input",
     "refresh": "Refresh",
     "grant": "Grant",
     "granted": "Granted",
@@ -83,7 +123,7 @@
     },
     "backgroundActivity": {
       "title": "Background Activity / Login Item",
-      "desc": "Starts PrivateVoice Input after login and allows it to run as a menu bar app in the background; it does not affect the currently running voice input."
+      "desc": "Starts PrivateVoice Dictation after login and allows it to run as a menu bar app in the background; it does not affect the currently running voice input."
     }
   },
   "hotkeys": {
@@ -107,13 +147,23 @@
     "checkingUpdate": "Checking...",
     "isLatestVersion": "Up to date",
     "checkFailed": "Check failed",
-    "tagline": "Private.Offline",
-    "slogan": "Private.Offline",
+    "displayName": "PrivateVoice Dictation",
+    "tagline": "Private offline · Custom dictionary · Privacy protected",
+    "slogan": "Voice dictation that truly belongs to you",
+    "offlineText": "This app runs fully offline. All speech recognition is completed on the local device using local models including SenseVoice, Qwen3-ASR, Moonshine English, and Parakeet.",
+    "noDataText": "Data never leaves the device. The app does not collect, upload, or store any voice, text, dictionary, or usage data.",
     "legalText": "This app is a secondary development based on the open-source VoiceSnap project and follows the MIT License.",
     "legalDetails": "For complete copyright notices, license text, and improvement details, visit:",
-    "supportUrl": "https://shanghai3168.github.io/privatevoice-support/",
-    "openSupport": "Open copyright and license details",
-    "copyright": "© {year} PrivateVoice Input · MIT License"
+    "sourceProjectLabel": "Source project",
+    "licenseLabel": "License details",
+    "privacyLabel": "Privacy policy",
+    "feedbackLabel": "Support",
+    "sourceUrl": "https://github.com/vorojar/VoiceSnap",
+    "licenseUrl": "https://shanghai3168.github.io/privatevoice-dictation-support/",
+    "privacyUrl": "https://shanghai3168.github.io/privatevoice-dictation-support/privacy.html",
+    "feedbackUrl": "https://shanghai3168.github.io/privatevoice-dictation-support/support.html",
+    "openSupport": "Open support and feedback",
+    "copyright": "© {year} PrivateVoice Dictation · MIT License"
   },
   "history": {
     "title": "Recognition History",
@@ -173,7 +223,7 @@
     "from": "Recognized As",
     "to": "Replace With",
     "fromPlaceholder": "e.g. voice snap",
-    "toPlaceholder": "e.g. PrivateVoice Input",
+    "toPlaceholder": "e.g. PrivateVoice Dictation",
     "add": "Add",
     "edit": "Edit",
     "save": "Save",
@@ -231,7 +281,12 @@
     "optimizing": "Optimizing...",
     "extracting": "Extracting model files...",
     "complete": "Complete",
-    "failed": "Setup failed"
+    "failed": "Setup failed",
+    "cancel": "Cancel",
+    "cancelling": "Cancelling",
+    "cancelled": "Cancelled",
+    "cancelledDetail": "Model download was cancelled. You can download it again later.",
+    "retry": "Download again"
   },
   "update": {
     "title": "Update Available",

--
Gitblit v1.9.3