diff --git a/config/config.go b/config/config.go index bfe11032e..202af3543 100644 --- a/config/config.go +++ b/config/config.go @@ -14,6 +14,7 @@ import ( type Config struct { Host string `mapstructure:"Host"` BinPath string `mapstructure:"BinPath"` + Language string DisableSoftCrash bool // Disables the 'Press Return to exit' dialog allowing scripts to reboot the server automatically FeaturedWeapons int // Number of Active Feature weapons to generate daily HideLoginNotice bool // Hide the Erupe notice on login diff --git a/patch-schema/language.sql b/patch-schema/language.sql deleted file mode 100644 index d3440d6e1..000000000 --- a/patch-schema/language.sql +++ /dev/null @@ -1,6 +0,0 @@ -BEGIN; - -ALTER TABLE IF EXISTS public.users - ADD COLUMN IF NOT EXISTS language text NOT NULL DEFAULT 'en'; - -END; \ No newline at end of file diff --git a/server/channelserver/handlers.go b/server/channelserver/handlers.go index 462a3318e..50039b27c 100644 --- a/server/channelserver/handlers.go +++ b/server/channelserver/handlers.go @@ -142,7 +142,6 @@ func handleMsgSysLogin(s *Session, p mhfpacket.MHFPacket) { s.token = pkt.LoginTokenString s.Unlock() - s.dict = getLangStrings(s) updateRights(s) bf := byteframe.NewByteFrame() bf.WriteUint32(uint32(Time_Current_Adjusted().Unix())) // Unix timestamp diff --git a/server/channelserver/handlers_cafe.go b/server/channelserver/handlers_cafe.go index e0d967d2a..e1d005840 100644 --- a/server/channelserver/handlers_cafe.go +++ b/server/channelserver/handlers_cafe.go @@ -89,7 +89,7 @@ func handleMsgMhfGetCafeDuration(s *Session, p mhfpacket.MHFPacket) { } bf.WriteUint32(cafeTime) // Total cafe time bf.WriteUint16(0) - ps.Uint16(bf, fmt.Sprintf(s.dict["cafeReset"], int(cafeReset.Month()), cafeReset.Day()), true) + ps.Uint16(bf, fmt.Sprintf(s.server.dict["cafeReset"], int(cafeReset.Month()), cafeReset.Day()), true) doAckBufSucceed(s, pkt.AckHandle, bf.Data()) } diff --git a/server/channelserver/handlers_lang.go b/server/channelserver/handlers_lang.go index 5d413ac85..3409225ca 100644 --- a/server/channelserver/handlers_lang.go +++ b/server/channelserver/handlers_lang.go @@ -1,15 +1,8 @@ package channelserver -import "go.uber.org/zap" - -func getLangStrings(s *Session) map[string]string { - var lang string +func getLangStrings(s *Server) map[string]string { strings := make(map[string]string) - err := s.server.db.QueryRow(`SELECT language FROM users, characters WHERE characters.id = $1 AND users.id = characters.user_id`, s.charID).Scan(&lang) - if err != nil { - s.logger.Warn("No language set for user", zap.Uint32("CID", s.charID)) - } - switch lang { + switch s.erupeConfig.Language { case "jp": strings["language"] = "日本語" strings["cafeReset"] = "%d/%dにリセット" diff --git a/server/channelserver/sys_channel_server.go b/server/channelserver/sys_channel_server.go index 82f29d03a..3fdcc4861 100644 --- a/server/channelserver/sys_channel_server.go +++ b/server/channelserver/sys_channel_server.go @@ -52,6 +52,9 @@ type Server struct { stagesLock sync.RWMutex stages map[string]*Stage + // Used to map different languages + dict map[string]string + // UserBinary userBinaryPartsLock sync.RWMutex userBinaryParts map[userBinaryPartID][]byte @@ -164,6 +167,8 @@ func NewServer(config *Config) *Server { // MezFes s.stages["sl1Ns462p0a0u0"] = NewStage("sl1Ns462p0a0u0") + s.dict = getLangStrings(s) + return s } diff --git a/server/channelserver/sys_session.go b/server/channelserver/sys_session.go index 669f820c1..39a96f40f 100644 --- a/server/channelserver/sys_session.go +++ b/server/channelserver/sys_session.go @@ -47,8 +47,6 @@ type Session struct { kqf []byte kqfOverride bool - dict map[string]string - semaphore *Semaphore // Required for the stateful MsgSysUnreserveStage packet. // A stack containing the stage movement history (push on enter/move, pop on back)