Add i18n support

This commit is contained in:
2025-04-28 12:41:18 +08:00
parent 0d3df25a94
commit d7a848e7ad
7 changed files with 140 additions and 16 deletions

View File

@@ -23,6 +23,16 @@ type EditorConfig struct {
TabType TabType `json:"tabType"` // Tab类型空格或Tab
}
// LanguageType 语言类型定义
type LanguageType string
const (
// LangZhCN 中文简体
LangZhCN LanguageType = "zh-CN"
// LangEnUS 英文-美国
LangEnUS LanguageType = "en-US"
)
// PathConfig 定义配置文件路径相关配置
type PathConfig struct {
RootDir string `json:"rootDir"` // 根目录
@@ -34,6 +44,7 @@ type AppConfig struct {
Editor EditorConfig `json:"editor"` // 编辑器配置
Paths PathConfig `json:"paths"` // 路径配置
Metadata ConfigMetadata `json:"metadata"` // 配置元数据
Language LanguageType `json:"language"` // 界面语言
}
// ConfigMetadata 配置元数据
@@ -60,5 +71,6 @@ func NewDefaultAppConfig() *AppConfig {
Version: "1.0.0",
LastUpdated: time.Now(),
},
Language: LangZhCN,
}
}

View File

@@ -314,6 +314,58 @@ func (cs *ConfigService) SaveAppConfig(config *models.AppConfig) error {
return cs.saveAppConfig(config)
}
// GetLanguage 获取当前语言设置
func (cs *ConfigService) GetLanguage() (models.LanguageType, error) {
// 如果内存中已有配置,直接返回
if cs.config != nil {
return cs.config.Language, nil
}
// 否则从文件加载
config, err := cs.loadAppConfig()
if err != nil {
log.Printf("GetLanguage: Failed to load config: %v", err)
// 使用默认配置
defaultConfig := models.NewDefaultAppConfig()
cs.config = defaultConfig
return defaultConfig.Language, nil
}
// 更新内存中的配置
cs.config = config
log.Printf("GetLanguage: Retrieved language: %s", config.Language)
return config.Language, nil
}
// SetLanguage 设置语言
func (cs *ConfigService) SetLanguage(language models.LanguageType) error {
// 验证语言类型有效
if language != models.LangZhCN && language != models.LangEnUS {
return fmt.Errorf("unsupported language: %s", language)
}
// 如果内存中已有配置,直接更新
if cs.config != nil {
log.Printf("SetLanguage: Updating language to: %s", language)
cs.config.Language = language
return cs.saveAppConfig(cs.config)
}
// 没有内存中的配置,需要先加载
config, err := cs.loadAppConfig()
if err != nil {
log.Printf("SetLanguage: Failed to load config: %v", err)
// 使用默认配置
config = models.NewDefaultAppConfig()
}
// 更新语言配置
config.Language = language
// 保存到文件
return cs.saveAppConfig(config)
}
// UpdateEditorConfig 更新编辑器配置
func (cs *ConfigService) UpdateEditorConfig(editorConfig models.EditorConfig) error {
// 如果内存中已有配置,直接更新