Skip to content

Commit 11487fc

Browse files
authored
fix(translate): 修复翻译空指针异常报错 (#2127)
2 parents b40856d + bfb7df1 commit 11487fc

File tree

1 file changed

+26
-5
lines changed

1 file changed

+26
-5
lines changed

server/utils/translate/translator.go

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ package translate
33
import (
44
"encoding/json"
55
"fmt"
6-
"github.com/nicksnyder/go-i18n/v2/i18n"
7-
"golang.org/x/text/language"
86
"io/ioutil"
97
"sync"
8+
9+
"github.com/nicksnyder/go-i18n/v2/i18n"
10+
"golang.org/x/text/language"
1011
)
1112

1213
type Translator struct {
@@ -35,7 +36,8 @@ func (t *Translator) InitTranslator(initLang string, langPath string) {
3536

3637
langFiles, err := ioutil.ReadDir(langPath)
3738
if err != nil {
38-
fmt.Printf("InitTranslator() Error: %v", err)
39+
fmt.Printf("InitTranslator() Error reading language directory '%s': %v\n", langPath, err)
40+
return
3941
}
4042

4143
t.bundle = i18n.NewBundle(language.English)
@@ -51,14 +53,16 @@ func (t *Translator) InitTranslator(initLang string, langPath string) {
5153

5254
t.localizer = i18n.NewLocalizer(t.bundle, initLang) // should add additionl check here
5355
t.IsInit = true
56+
fmt.Printf("Translator initialized successfully with language: %s\n", initLang)
5457
// end of adding
5558
}
5659

5760
func (t *Translator) InitTranslatorEx(initLang string, defaultLang string, langPath string) {
5861

5962
langFiles, err := ioutil.ReadDir(langPath)
6063
if err != nil {
61-
fmt.Printf("InitTranslator() Error: %v", err)
64+
fmt.Printf("InitTranslatorEx() Error reading language directory '%s': %v\n", langPath, err)
65+
return
6266
}
6367

6468
t.bundle = i18n.NewBundle(language.English)
@@ -81,6 +85,7 @@ func (t *Translator) InitTranslatorEx(initLang string, defaultLang string, langP
8185
}
8286

8387
t.IsInit = true
88+
fmt.Printf("Translator initialized successfully with language: %s, default: %s\n", initLang, defaultLang)
8489
// end of adding
8590
}
8691

@@ -102,11 +107,27 @@ func (t *Translator) TranslateMessage(messageID string) string {
102107
defaultLocalizer := t.defaultLocalizer
103108
t.mu.RUnlock()
104109

110+
// 检查localizer是否已初始化
111+
if localizer == nil {
112+
fmt.Printf("Warning: localizer is not initialized, returning original message: %s\n", messageID)
113+
return messageID
114+
}
115+
105116
translatedMsg, err := localizer.LocalizeMessage(&i18n.Message{ID: messageID})
106117
if err != nil || translatedMsg == "" { // if translation fail use default language transalator
107-
fmt.Println(err.Error())
118+
if err != nil {
119+
fmt.Printf("Translation error for message '%s': %v\n", messageID, err)
120+
}
121+
122+
// 检查defaultLocalizer是否已初始化
123+
if defaultLocalizer == nil {
124+
fmt.Printf("Warning: defaultLocalizer is not initialized, returning original message: %s\n", messageID)
125+
return messageID
126+
}
127+
108128
translatedMsg, err = defaultLocalizer.LocalizeMessage(&i18n.Message{ID: messageID})
109129
if err != nil {
130+
fmt.Printf("Default translation error for message '%s': %v\n", messageID, err)
110131
return messageID
111132
}
112133
}

0 commit comments

Comments
 (0)