From 9a85354d8b41e05ba8729cd8f44592291de9117a Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Wed, 03 Jun 2026 01:40:19 +0800
Subject: [PATCH] Implement Round 2 language settings
---
privatevoice.src/services/config_service.go | 36 ++++++++++++++++++++++++++++++++++--
1 files changed, 34 insertions(+), 2 deletions(-)
diff --git a/privatevoice.src/services/config_service.go b/privatevoice.src/services/config_service.go
index 6bffa6f..49c53c6 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,28 @@
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
+ 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)
+ 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