Skip to content

Commit 22b8ffd

Browse files
committed
chore: Modify i18n initialization method
1 parent d957990 commit 22b8ffd

File tree

13 files changed

+67
-31
lines changed

13 files changed

+67
-31
lines changed

core/app/service/script_library.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -194,13 +194,13 @@ func (u *ScriptService) Sync(req dto.OperateByTaskID) error {
194194
if global.CONF.Base.IsOffLine {
195195
return nil
196196
}
197-
syncTask, err := task.NewTaskWithOps(i18n.GetMsgByKey("ScriptLibrary"), task.TaskSync, task.TaskScopeScript, req.TaskID, 0)
197+
syncTask, err := task.NewTaskWithOps(i18n.GetMsgByKey("RemoteScriptLibrary"), task.TaskSync, task.TaskScopeScript, req.TaskID, 0)
198198
if err != nil {
199199
global.LOG.Errorf("create sync task failed %v", err)
200200
return err
201201
}
202202

203-
syncTask.AddSubTask(task.GetTaskName(i18n.GetMsgByKey("ScriptLibrary"), task.TaskSync, task.TaskScopeScript), func(t *task.Task) (err error) {
203+
syncTask.AddSubTask(task.GetTaskName(i18n.GetMsgByKey("RemoteScriptLibrary"), task.TaskSync, task.TaskScopeScript), func(t *task.Task) (err error) {
204204
versionUrl := fmt.Sprintf("%s/scripts/version.txt", global.CONF.RemoteURL.ResourceURL)
205205
_, versionRes, err := req_helper.HandleRequestWithProxy(versionUrl, http.MethodGet, constant.TimeOut20s)
206206
if err != nil {

core/app/task/task.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ const (
5151
TaskUpgrade = "TaskUpgrade"
5252
TaskAddNode = "TaskAddNode"
5353
TaskSync = "TaskSync"
54+
TaskSyncForNode = "TaskSyncForNode"
5455
TaskRsync = "TaskRsync"
5556
TaskInstallCluster = "TaskInstallCluster"
5657
TaskCreateCluster = "TaskCreateCluster"

core/i18n/i18n.go

Lines changed: 44 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,12 @@ package i18n
33
import (
44
"embed"
55
"fmt"
6+
"os/exec"
67
"strings"
7-
"sync"
88
"sync/atomic"
99

1010
"github.com/1Panel-dev/1Panel/core/app/repo"
11-
1211
"github.com/1Panel-dev/1Panel/core/global"
13-
1412
"github.com/gin-gonic/gin"
1513
"github.com/nicksnyder/go-i18n/v2/i18n"
1614
"golang.org/x/text/language"
@@ -140,38 +138,27 @@ func UseI18n() gin.HandlerFunc {
140138
}
141139

142140
func Init() {
143-
initOnce.Do(func() {
144-
bundle = i18n.NewBundle(language.Chinese)
145-
bundle.RegisterUnmarshalFunc("yaml", yaml.Unmarshal)
146-
147-
isSuccess := true
148-
for _, file := range langFiles {
149-
if _, err := bundle.LoadMessageFileFS(fs, file); err != nil {
150-
fmt.Printf("[i18n] load language file %s failed: %v\n", file, err)
151-
isSuccess = false
152-
}
153-
}
154-
155-
if !isSuccess {
156-
panic("[i18n] failed to init language files, See log above for details")
157-
}
158-
159-
dbLang := getLanguageFromDBInternal()
160-
if dbLang == "" {
161-
dbLang = defaultLang
162-
}
163-
SetCachedDBLanguage(dbLang)
141+
initBundle()
142+
dbLang := getLanguageFromDBInternal()
143+
if dbLang == "" {
144+
dbLang = defaultLang
145+
}
146+
SetCachedDBLanguage(dbLang)
164147

165-
global.I18n = i18n.NewLocalizer(bundle, dbLang)
166-
})
148+
global.I18n = i18n.NewLocalizer(bundle, dbLang)
167149
}
168150

169151
func UseI18nForCmd(lang string) {
170152
if bundle == nil {
171-
Init()
153+
initBundle()
172154
}
173155
if lang == "" {
174-
lang = defaultLang
156+
langFrom1pctl := getLanguageFrom1pctl()
157+
if langFrom1pctl == "" {
158+
lang = defaultLang
159+
} else {
160+
lang = langFrom1pctl
161+
}
175162
}
176163
global.I18nForCmd = i18n.NewLocalizer(bundle, lang)
177164
}
@@ -219,9 +206,20 @@ func getLanguageFromDBInternal() string {
219206
}
220207
return lang
221208
}
209+
func getLanguageFrom1pctl() string {
210+
cmd := exec.Command("bash", "-c", "grep '^LANGUAGE=' /usr/local/bin/1pctl | cut -d'=' -f2")
211+
stdout, err := cmd.CombinedOutput()
212+
if err != nil {
213+
panic(err)
214+
}
215+
info := strings.ReplaceAll(string(stdout), "\n", "")
216+
if len(info) == 0 || info == `""` {
217+
panic("error `LANGUAGE` find in /usr/local/bin/1pctl")
218+
}
219+
return info
220+
}
222221

223222
var cachedDBLang atomic.Value
224-
var initOnce sync.Once
225223

226224
func GetLanguage() string {
227225
if v := cachedDBLang.Load(); v != nil {
@@ -236,3 +234,20 @@ func SetCachedDBLanguage(lang string) {
236234
}
237235
cachedDBLang.Store(lang)
238236
}
237+
238+
func initBundle() {
239+
bundle = i18n.NewBundle(language.Chinese)
240+
bundle.RegisterUnmarshalFunc("yaml", yaml.Unmarshal)
241+
242+
isSuccess := true
243+
for _, file := range langFiles {
244+
if _, err := bundle.LoadMessageFileFS(fs, file); err != nil {
245+
fmt.Printf("[i18n] load language file %s failed: %v\n", file, err)
246+
isSuccess = false
247+
}
248+
}
249+
250+
if !isSuccess {
251+
panic("[i18n] failed to init language files, See log above for details")
252+
}
253+
}

core/i18n/lang/en.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ SubTaskFailed: "{{ .name }} failed: {{ .err }}"
103103
TaskInstall: "Install"
104104
TaskUpgrade: "Upgrade"
105105
TaskSync: 'Synchronize'
106+
TaskSyncForNode: "Sync Node Data"
106107
TaskBackup: "Backup"
107108
SuccessStatus: "{{ .name }} succeeded"
108109
FailedStatus: "{{ .name }} failed {{ .err }}"
@@ -112,6 +113,7 @@ Skip: "Skip errors and continue..."
112113

113114
#script
114115
ScriptLibrary: "Script Library"
116+
RemoteScriptLibrary: "Remote Script Library"
115117
ScriptSyncSkip: "Current script library is already the latest version!"
116118
DownloadData: "Downloading script library file data.yaml"
117119
DownloadPackage: "Downloading script library package"

core/i18n/lang/es-ES.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ SubTaskFailed: "{{ .name }} falló: {{ .err }}"
103103
TaskInstall: "Instalar"
104104
TaskUpgrade: "Actualizar"
105105
TaskSync: 'Sincronizar'
106+
TaskSyncForNode: "Sincronizar Datos del Nodo"
106107
TaskBackup: "Respaldar"
107108
SuccessStatus: "{{ .name }} correcta"
108109
FailedStatus: "{{ .name }} fallida {{ .err }}"
@@ -112,6 +113,7 @@ Skip: "Omitir errores y continuar..."
112113

113114
#script
114115
ScriptLibrary: "Biblioteca de scripts"
116+
RemoteScriptLibrary: "Biblioteca de Scripts Remota"
115117
ScriptSyncSkip: "¡La biblioteca de scripts ya está en la última versión!"
116118
DownloadData: "Descargando archivo de datos de la biblioteca de scripts data.yaml"
117119
DownloadPackage: "Descargando paquete de la biblioteca de scripts"

core/i18n/lang/ja.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ SubTaskFailed: "{{ .name }} 失敗: {{ .err }}"
104104
TaskInstall: "インストール"
105105
TaskUpgrade: "アップグレード"
106106
TaskSync: '同期'
107+
TaskSyncForNode: "ノードデータを同期"
107108
TaskBackup: "バックアップ"
108109
SuccessStatus: "{{ .name }} 成功"
109110
FailedStatus: "{{ .name }} 失敗 {{ .err }}"
@@ -113,6 +114,7 @@ Skip: "エラーを無視して続行..."
113114

114115
#script
115116
ScriptLibrary: "スクリプトライブラリ"
117+
RemoteScriptLibrary: "リモートスクリプトライブラリ"
116118
ScriptSyncSkip: "現在のスクリプトライブラリは最新バージョンです!"
117119
DownloadData: "スクリプトライブラリファイル data.yaml をダウンロード中"
118120
DownloadPackage: "スクリプトライブラリパッケージをダウンロード中"

core/i18n/lang/ko.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ SubTaskFailed: "{{ .name }} 실패: {{ .err }}"
103103
TaskInstall: "설치"
104104
TaskUpgrade: "업그레이드"
105105
TaskSync: '동기화'
106+
TaskSyncForNode: "노드 데이터 동기화"
106107
TaskBackup: "백업"
107108
SuccessStatus: "{{ .name }} 성공"
108109
FailedStatus: "{{ .name }} 실패 {{ .err }}"
@@ -112,6 +113,7 @@ Skip: "오류 무시하고 계속..."
112113

113114
#script
114115
ScriptLibrary: "스크립트 라이브러리"
116+
RemoteScriptLibrary: "원격 스크립트 라이브러리"
115117
ScriptSyncSkip: "현재 스크립트 라이브러리가 이미 최신 버전입니다!"
116118
DownloadData: "스크립트 라이브러리 파일 data.yaml 다운로드 중"
117119
DownloadPackage: "스크립트 라이브러리 패키지 다운로드 중"

core/i18n/lang/ms.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ SubTaskFailed: "{{ .name }} gagal: {{ .err }}"
9898
TaskInstall: "Pasang"
9999
TaskUpgrade: "Kemas kini"
100100
TaskSync: 'Selaraskan'
101+
TaskSyncForNode: "Segerakan Data Nod"
101102
TaskBackup: "Sandaran"
102103
SuccessStatus: "{{ .name }} berjaya"
103104
FailedStatus: "{{ .name }} gagal {{ .err }}"
@@ -107,6 +108,7 @@ Skip: "Abaikan ralat dan teruskan..."
107108

108109
#script
109110
ScriptLibrary: "Pustaka Skrip"
111+
RemoteScriptLibrary: "Pustaka Skrip Jauh"
110112
ScriptSyncSkip: "Pustaka skrip semasa sudah versi terkini!"
111113
DownloadData: "Muat turun fail pustaka skrip data.yaml"
112114
DownloadPackage: "Muat turun pakej pustaka skrip"

core/i18n/lang/pt-BR.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ SubTaskFailed: "{{ .name }} falhou: {{ .err }}"
103103
TaskInstall: "Instalar"
104104
TaskUpgrade: "Atualizar"
105105
TaskSync: 'Sincronizar'
106+
TaskSyncForNode: "Sincronizar Dados do Nó"
106107
TaskBackup: "Backup"
107108
SuccessStatus: "{{ .name }} bem-sucedido"
108109
FailedStatus: "{{ .name }} falhou {{ .err }}"
@@ -112,6 +113,7 @@ Skip: "Ignorar erros e continuar..."
112113

113114
#script
114115
ScriptLibrary: "Biblioteca de Scripts"
116+
RemoteScriptLibrary: "Biblioteca de Scripts Remota"
115117
ScriptSyncSkip: "A biblioteca de scripts atual já é a versão mais recente!"
116118
DownloadData: "Baixando arquivo data.yaml da biblioteca de scripts"
117119
DownloadPackage: "Baixando pacote da biblioteca de scripts"

core/i18n/lang/ru.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ SubTaskFailed: "{{ .name }} не удалось: {{ .err }}"
103103
TaskInstall: "Установить"
104104
TaskUpgrade: "Обновить"
105105
TaskSync: 'Синхронизация'
106+
TaskSyncForNode: "Синхронизировать Данные Узла"
106107
TaskBackup: "Резервная копия"
107108
SuccessStatus: "{{ .name }} успешно"
108109
FailedStatus: "{{ .name }} не удалось {{ .err }}"
@@ -112,6 +113,7 @@ Skip: "Пропустить ошибки и продолжить..."
112113

113114
#script
114115
ScriptLibrary: "Библиотека скриптов"
116+
RemoteScriptLibrary: "Удаленная Библиотека Скриптов"
115117
ScriptSyncSkip: "Текущая библиотека скриптов уже является последней версией!"
116118
DownloadData: "Загрузка файла библиотеки скриптов data.yaml"
117119
DownloadPackage: "Загрузка архива библиотеки скриптов"

0 commit comments

Comments
 (0)