From c64b469e5f7830b83db0d0cae29cf38248465efb Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Wed, 03 Jun 2026 22:42:35 +0800
Subject: [PATCH] Add release manifest for 2.1.27 about page candidate
---
privatevoice.src/services/config_service.go | 38 ++++++++++++++++++++++++++++++++++++--
1 files changed, 36 insertions(+), 2 deletions(-)
diff --git a/privatevoice.src/services/config_service.go b/privatevoice.src/services/config_service.go
index 6bffa6f..5905f75 100755
--- a/privatevoice.src/services/config_service.go
+++ b/privatevoice.src/services/config_service.go
@@ -3,16 +3,26 @@
import (
"voicesnap/internal/config"
"voicesnap/internal/dock"
+ "voicesnap/internal/language"
+ "voicesnap/internal/model"
"voicesnap/internal/startup"
)
// ConfigService provides configuration read/write methods to the frontend.
type ConfigService struct {
- cfg *config.Config
+ cfg *config.Config
+ localeDetector language.SystemLocaleDetector
}
func NewConfigService(cfg *config.Config) *ConfigService {
- return &ConfigService{cfg: cfg}
+ return NewConfigServiceWithDetector(cfg, language.NewSystemDetector())
+}
+
+func NewConfigServiceWithDetector(cfg *config.Config, detector language.SystemLocaleDetector) *ConfigService {
+ if detector == nil {
+ detector = language.NewSystemDetector()
+ }
+ return &ConfigService{cfg: cfg, localeDetector: detector}
}
// GetConfig returns the current configuration.
@@ -20,6 +30,30 @@
return s.cfg
}
+// GetLanguageSettings returns the configured and effective UI language.
+func (s *ConfigService) GetLanguageSettings() language.LanguageSettings {
+ return language.Resolve(s.cfg.LanguageMode, s.cfg.LanguageID, s.localeDetector)
+}
+
+// SetLanguageAuto makes the UI language follow the system language.
+func (s *ConfigService) SetLanguageAuto() language.LanguageSettings {
+ s.cfg.LanguageMode = config.LanguageModeAuto
+ s.cfg.ModelSelectionMode = config.ModelSelectionModeAuto
+ resolved := language.Resolve(s.cfg.LanguageMode, s.cfg.LanguageID, s.localeDetector)
+ s.cfg.LanguageID = resolved.EffectiveLanguageID
+ config.Save(s.cfg)
+ return language.Resolve(s.cfg.LanguageMode, s.cfg.LanguageID, s.localeDetector)
+}
+
+// SetLanguageManual persists a user-selected UI language.
+func (s *ConfigService) SetLanguageManual(languageID string) language.LanguageSettings {
+ s.cfg.LanguageMode = config.LanguageModeManual
+ s.cfg.LanguageID = model.NormalizeLanguageID(languageID)
+ s.cfg.ModelSelectionMode = config.ModelSelectionModeAuto
+ config.Save(s.cfg)
+ return language.Resolve(s.cfg.LanguageMode, s.cfg.LanguageID, s.localeDetector)
+}
+
// SetAutoHide sets the auto-hide indicator preference.
func (s *ConfigService) SetAutoHide(enabled bool) {
s.cfg.AutoHide = enabled
--
Gitblit v1.9.3