feat(localization): added zh_TW (#2913)

* feat(localization): added zh_TW

* fixed based on @coderabbitai

* updated false translation for zh_TW

* new workflow

* revert

* fixed a lot of translations

* turned most zh to zh-CN

* fallbacklang

* bruh

* eliminate ALL _

* fix: paths and other miscs thanks @Calcium-Ion

* fixed translation and temp fix for preferencessettings.js

* fixed translation error

* fixed issue about legacy support

* reverted stupid coderabbit's suggestion
This commit is contained in:
Oliver Tzeng
2026-02-11 20:37:53 +08:00
committed by GitHub
parent fb5bc7c4f2
commit 6597610395
15 changed files with 3724 additions and 180 deletions

View File

@@ -16,7 +16,8 @@ import (
)
const (
LangZh = "zh"
LangZhCN = "zh-CN"
LangZhTW = "zh-TW"
LangEn = "en"
DefaultLang = LangEn // Fallback to English if language not supported
)
@@ -39,7 +40,7 @@ func Init() error {
bundle.RegisterUnmarshalFunc("yaml", yaml.Unmarshal)
// Load embedded translation files
files := []string{"locales/zh.yaml", "locales/en.yaml"}
files := []string{"locales/zh-CN.yaml", "locales/zh-TW.yaml", "locales/en.yaml"}
for _, file := range files {
_, err := bundle.LoadMessageFileFS(localeFS, file)
if err != nil {
@@ -49,7 +50,8 @@ func Init() error {
}
// Pre-create localizers for supported languages
localizers[LangZh] = i18n.NewLocalizer(bundle, LangZh)
localizers[LangZhCN] = i18n.NewLocalizer(bundle, LangZhCN)
localizers[LangZhTW] = i18n.NewLocalizer(bundle, LangZhTW)
localizers[LangEn] = i18n.NewLocalizer(bundle, LangEn)
// Set the TranslateMessage function in common package
@@ -201,8 +203,10 @@ func normalizeLang(lang string) string {
// Handle common variations
switch {
case strings.HasPrefix(lang, "zh-tw"):
return LangZhTW
case strings.HasPrefix(lang, "zh"):
return LangZh
return LangZhCN
case strings.HasPrefix(lang, "en"):
return LangEn
default:
@@ -212,7 +216,7 @@ func normalizeLang(lang string) string {
// SupportedLanguages returns a list of supported language codes
func SupportedLanguages() []string {
return []string{LangZh, LangEn}
return []string{LangZhCN, LangZhTW, LangEn}
}
// IsSupported checks if a language code is supported