mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-11-03 03:35:04 +03:00
fix(i18n): publish the translation bundle only once it is complete
InitLocalizer filled the shared bundle in place, and the Telegram bot runs it again while the panel is serving, so a request could read the bundle's maps while they were being written and the process died on a concurrent map access. Build the bundle privately and publish it, and the bot and web localizers, through atomic pointers; the lazy load in the middleware publishes only if nothing else did first.
This commit is contained in:
@@ -52,9 +52,8 @@ func draftLocalizer(t *testing.T, msgs ...*i18n.Message) {
|
||||
bundle := i18n.NewBundle(language.MustParse("en-US"))
|
||||
bundle.RegisterUnmarshalFunc("json", json.Unmarshal)
|
||||
_ = bundle.AddMessages(language.MustParse("en-US"), msgs...)
|
||||
orig := locale.LocalizerBot
|
||||
t.Cleanup(func() { locale.LocalizerBot = orig })
|
||||
locale.LocalizerBot = i18n.NewLocalizer(bundle, "en-US")
|
||||
orig := locale.SwapBotLocalizer(i18n.NewLocalizer(bundle, "en-US"))
|
||||
t.Cleanup(func() { locale.SwapBotLocalizer(orig) })
|
||||
}
|
||||
|
||||
// Regression test: the wizard's own prompts are HTML-parsed as well, so the
|
||||
|
||||
Reference in New Issue
Block a user