feat(localization): add Simplified Chinese (#774)

This commit is contained in:
CXM 2025-07-09 18:53:08 +08:00 committed by GitHub
parent 95768cb70f
commit d17fc6a174
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 96 additions and 95 deletions

View file

@ -2,6 +2,7 @@ package localization
import (
"encoding/json"
"fmt"
"sort"
"testing"
@ -11,105 +12,42 @@ import (
func TestLocalizationService(t *testing.T) {
service := NewLocalizationService()
t.Run("English localization", func(t *testing.T) {
localizer := service.GetLocalizer("en")
result := localizer.MustLocalize(&i18n.LocalizeConfig{MessageID: "loading"})
if result != "Loading..." {
t.Errorf("Expected 'Loading...', got '%s'", result)
}
})
loadingStrMap := map[string]string{
"en": "Loading...",
"fr": "Chargement...",
"de": "Ladevorgang...",
"tr": "Yükleniyor...",
"zh-CN": "加载中...",
"zh-TW": "載入中...",
}
t.Run("French localization", func(t *testing.T) {
localizer := service.GetLocalizer("fr")
result := localizer.MustLocalize(&i18n.LocalizeConfig{MessageID: "loading"})
if result != "Chargement..." {
t.Errorf("Expected 'Chargement...', got '%s'", result)
}
})
t.Run("German localization", func(t *testing.T) {
localizer := service.GetLocalizer("de")
result := localizer.MustLocalize(&i18n.LocalizeConfig{MessageID: "loading"})
if result != "Ladevorgang..." {
t.Errorf("Expected 'Ladevorgang...', got '%s'", result)
}
})
t.Run("Turkish localization", func(t *testing.T) {
localizer := service.GetLocalizer("tr")
result := localizer.MustLocalize(&i18n.LocalizeConfig{MessageID: "loading"})
if result != "Yükleniyor..." {
t.Errorf("Expected 'Yükleniyor...', got '%s'", result)
}
})
t.Run("Traditional Chinese localization", func(t *testing.T) {
localizer := service.GetLocalizer("zh-TW")
result := localizer.MustLocalize(&i18n.LocalizeConfig{MessageID: "loading"})
if result != "載入中..." {
t.Errorf("Expected '載入中...', got '%s'", result)
}
})
t.Run("All required keys exist in English", func(t *testing.T) {
localizer := service.GetLocalizer("en")
requiredKeys := []string{
"loading", "why_am_i_seeing", "protected_by", "made_with",
"mascot_design", "try_again", "go_home", "javascript_required",
}
for _, key := range requiredKeys {
result := localizer.MustLocalize(&i18n.LocalizeConfig{MessageID: key})
if result == "" {
t.Errorf("Key '%s' returned empty string", key)
for lang, expected := range loadingStrMap {
t.Run(fmt.Sprintf("%s localization", lang), func(t *testing.T) {
localizer := service.GetLocalizer(lang)
result := localizer.MustLocalize(&i18n.LocalizeConfig{MessageID: "loading"})
if result != expected {
t.Errorf("Expected '%s', got '%s'", expected, result)
}
}
})
})
}
t.Run("All required keys exist in French", func(t *testing.T) {
localizer := service.GetLocalizer("fr")
requiredKeys := []string{
"loading", "why_am_i_seeing", "protected_by", "made_with",
"mascot_design", "try_again", "go_home", "javascript_required",
}
// Test for requiredKeys localization
requiredKeys := []string{
"loading", "why_am_i_seeing", "protected_by", "made_with",
"mascot_design", "try_again", "go_home", "javascript_required",
}
for _, key := range requiredKeys {
result := localizer.MustLocalize(&i18n.LocalizeConfig{MessageID: key})
if result == "" {
t.Errorf("Key '%s' returned empty string", key)
for lang := range loadingStrMap {
t.Run(fmt.Sprintf("All required keys exist in %s", lang), func(t *testing.T) {
loc := service.GetLocalizer(lang)
for _, key := range requiredKeys {
result := loc.MustLocalize(&i18n.LocalizeConfig{MessageID: key})
if result == "" {
t.Errorf("Key '%s' returned empty string", key)
}
}
}
})
t.Run("All required keys exist in Turkish", func(t *testing.T) {
localizer := service.GetLocalizer("tr")
requiredKeys := []string{
"loading", "why_am_i_seeing", "protected_by", "made_with",
"mascot_design", "try_again", "go_home", "javascript_required",
}
for _, key := range requiredKeys {
result := localizer.MustLocalize(&i18n.LocalizeConfig{MessageID: key})
if result == "" {
t.Errorf("Key '%s' returned empty string", key)
}
}
})
t.Run("All required keys exist in Traditional Chinese", func(t *testing.T) {
localizer := service.GetLocalizer("zh-TW")
requiredKeys := []string{
"loading", "why_am_i_seeing", "protected_by", "made_with",
"mascot_design", "try_again", "go_home", "javascript_required",
}
for _, key := range requiredKeys {
result := localizer.MustLocalize(&i18n.LocalizeConfig{MessageID: key})
if result == "" {
t.Errorf("Key '%s' returned empty string", key)
}
}
})
})
}
}
type manifest struct {