fix: resolve i18n file loading failure issue (#11164)

This commit is contained in:
CityFun 2025-12-03 10:08:20 +08:00 committed by GitHub
parent ba999c516a
commit 2c02dc07e9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 29 additions and 17 deletions

View file

@ -1153,7 +1153,7 @@ func (a AppService) SyncAppListFromRemote(taskID string) (err error) {
}, nil) }, nil)
go func() { go func() {
if err = syncTask.Execute(); err != nil { if err := syncTask.Execute(); err != nil {
_ = NewISettingService().Update("AppStoreLastModified", "0") _ = NewISettingService().Update("AppStoreLastModified", "0")
_ = NewISettingService().Update("AppStoreSyncStatus", constant.StatusError) _ = NewISettingService().Update("AppStoreSyncStatus", constant.StatusError)
} }

View file

@ -13,6 +13,19 @@ import (
"gopkg.in/yaml.v3" "gopkg.in/yaml.v3"
) )
var langFiles = map[string]string{
"zh": "lang/zh.yaml",
"en": "lang/en.yaml",
"zh-Hant": "lang/zh-Hant.yaml",
"pt-BR": "lang/pt-BR.yaml",
"ja": "lang/ja.yaml",
"ru": "lang/ru.yaml",
"ms": "lang/ms.yaml",
"ko": "lang/ko.yaml",
"tr": "lang/tr.yaml",
"es-ES": "lang/es-ES.yaml",
}
func GetMsgWithMap(key string, maps map[string]interface{}) string { func GetMsgWithMap(key string, maps map[string]interface{}) string {
var content string var content string
if maps == nil { if maps == nil {
@ -123,18 +136,17 @@ func UseI18n() gin.HandlerFunc {
func Init() { func Init() {
bundle = i18n.NewBundle(language.Chinese) bundle = i18n.NewBundle(language.Chinese)
bundle.RegisterUnmarshalFunc("yaml", yaml.Unmarshal) bundle.RegisterUnmarshalFunc("yaml", yaml.Unmarshal)
_, _ = bundle.LoadMessageFileFS(fs, "lang/zh.yaml") isSuccess := true
_, _ = bundle.LoadMessageFileFS(fs, "lang/en.yaml") for _, file := range langFiles {
_, _ = bundle.LoadMessageFileFS(fs, "lang/zh-Hant.yaml") if _, err := bundle.LoadMessageFileFS(fs, file); err != nil {
_, _ = bundle.LoadMessageFileFS(fs, "lang/fa.yaml") global.LOG.Errorf("[i18n] load language file %s failed: %v\n", file, err)
_, _ = bundle.LoadMessageFileFS(fs, "lang/pt.yaml") isSuccess = false
_, _ = bundle.LoadMessageFileFS(fs, "lang/pt-BR.yaml") }
_, _ = bundle.LoadMessageFileFS(fs, "lang/ja.yaml") }
_, _ = bundle.LoadMessageFileFS(fs, "lang/ru.yaml")
_, _ = bundle.LoadMessageFileFS(fs, "lang/ms.yaml") if !isSuccess {
_, _ = bundle.LoadMessageFileFS(fs, "lang/ko.yaml") panic("[i18n] failed to init language files, See log above for details")
_, _ = bundle.LoadMessageFileFS(fs, "lang/tr.yaml") }
_, _ = bundle.LoadMessageFileFS(fs, "lang/es-ES.yaml")
lang := GetLanguageFromDB() lang := GetLanguageFromDB()
global.I18n = i18n.NewLocalizer(bundle, lang) global.I18n = i18n.NewLocalizer(bundle, lang)
} }

View file

@ -254,7 +254,7 @@ IgnoreUploadErr: "Upload failed, error: {{ .detail }}, ignoring this error..."
LoadBackupFailed: "Failed to get backup account connection, error: {{ .detail }}" LoadBackupFailed: "Failed to get backup account connection, error: {{ .detail }}"
InExecuting: "The current task is being executed, please do not repeat the execution!" InExecuting: "The current task is being executed, please do not repeat the execution!"
NoSuchResource: "No backup content found in the database, skipping..." NoSuchResource: "No backup content found in the database, skipping..."
CleanLog: "Clean Log", CleanLog: "Clean Log"
CleanLogByName: "Clean {{.name}} Log" CleanLogByName: "Clean {{.name}} Log"
#toolbox #toolbox

View file

@ -112,14 +112,14 @@ ExportDate: "Zaman"
#file #file
ErrFileCanNotRead: 'Bu dosya önizlemeyi desteklemiyor' ErrFileCanNotRead: 'Bu dosya önizlemeyi desteklemiyor'
ErrFileToLarge: 'Dosya 10M'dan büyük ve açılamıyor' ErrFileToLarge: 'Dosya 10M dan büyük ve açılamıyor'
ErrPathNotFound: 'Dizin mevcut değil' ErrPathNotFound: 'Dizin mevcut değil'
ErrMovePathFailed: 'Hedef yol orijinal yolu içeremez!' ErrMovePathFailed: 'Hedef yol orijinal yolu içeremez!'
ErrLinkPathNotFound: 'Hedef yol mevcut değil!' ErrLinkPathNotFound: 'Hedef yol mevcut değil!'
ErrFileIsExist: 'Dosya veya klasör zaten mevcut!' ErrFileIsExist: 'Dosya veya klasör zaten mevcut!'
ErrFileUpload: '{{ .name }} dosya yükleme başarısız {{ .detail }}' ErrFileUpload: '{{ .name }} dosya yükleme başarısız {{ .detail }}'
ErrFileDownloadDir: 'Klasör indirme desteklenmiyor' ErrFileDownloadDir: 'Klasör indirme desteklenmiyor'
ErrCmdNotFound: '{{ .name}} komutu mevcut değil, lütfen önce bu komutu host'a yükleyin' ErrCmdNotFound: '{{ .name}} komutu mevcut değil, lütfen önce bu komutu host a yükleyin'
ErrSourcePathNotFound: 'Kaynak dizin mevcut değil' ErrSourcePathNotFound: 'Kaynak dizin mevcut değil'
ErrFavoriteExist: 'Bu yol zaten favorilere eklendi' ErrFavoriteExist: 'Bu yol zaten favorilere eklendi'
ErrInvalidChar: 'Yasak karakterlere izin verilmiyor' ErrInvalidChar: 'Yasak karakterlere izin verilmiyor'
@ -408,7 +408,7 @@ SnapNewDB: 'Veritabanı {{ .name }} bağlantısını başlat'
SnapDeleteOperationLog: 'İşlem günlüğünü sil' SnapDeleteOperationLog: 'İşlem günlüğünü sil'
SnapDeleteLoginLog: 'Erişim günlüğünü sil' SnapDeleteLoginLog: 'Erişim günlüğünü sil'
SnapDeleteMonitor: 'İzleme verilerini sil' SnapDeleteMonitor: 'İzleme verilerini sil'
SnapRemoveSystemIP: 'Sistem IP'sini kaldır' SnapRemoveSystemIP: 'Sistem IP sini kaldır'
SnapBaseInfo: '1Panel temel bilgilerini yaz' SnapBaseInfo: '1Panel temel bilgilerini yaz'
SnapInstallAppImageEmpty: 'Uygulama imageı seçilmedi, atlanıyor...' SnapInstallAppImageEmpty: 'Uygulama imageı seçilmedi, atlanıyor...'
SnapInstallApp: '1Panel yüklü uygulamaları yedekle' SnapInstallApp: '1Panel yüklü uygulamaları yedekle'