diff --git a/irc/client.go b/irc/client.go index e77f230b..236f1bc9 100644 --- a/irc/client.go +++ b/irc/client.go @@ -102,6 +102,7 @@ func NewClient(server *Server, conn net.Conn, isTLS bool) *Client { nickCasefolded: "*", nickMaskString: "*", // * is used until actual nick is given } + client.languages = server.languages.Default() client.recomputeMaxlens() if isTLS { diff --git a/irc/languages.go b/irc/languages.go index 72a712bd..29cf4784 100644 --- a/irc/languages.go +++ b/irc/languages.go @@ -13,13 +13,15 @@ type LanguageManager struct { sync.RWMutex Info map[string]LangData translations map[string]map[string]string + defaultLang string } // NewLanguageManager returns a new LanguageManager. -func NewLanguageManager(languageData map[string]LangData) *LanguageManager { +func NewLanguageManager(defaultLang string, languageData map[string]LangData) *LanguageManager { lm := LanguageManager{ Info: make(map[string]LangData), translations: make(map[string]map[string]string), + defaultLang: defaultLang, } // make fake "en" info @@ -38,6 +40,17 @@ func NewLanguageManager(languageData map[string]LangData) *LanguageManager { return &lm } +// Default returns the default languages. +func (lm *LanguageManager) Default() []string { + lm.RLock() + defer lm.RUnlock() + + if lm.defaultLang == "" { + return []string{} + } + return []string{lm.defaultLang} +} + // Count returns how many languages we have. func (lm *LanguageManager) Count() int { lm.RLock() diff --git a/irc/server.go b/irc/server.go index 5ea9f1a5..3c858374 100644 --- a/irc/server.go +++ b/irc/server.go @@ -150,7 +150,7 @@ func NewServer(config *Config, logger *logger.Manager) (*Server, error) { commands: make(chan Command), connectionLimiter: connection_limits.NewLimiter(), connectionThrottler: connection_limits.NewThrottler(), - languages: NewLanguageManager(config.Languages.Data), + languages: NewLanguageManager(config.Languages.Default, config.Languages.Data), listeners: make(map[string]*ListenerWrapper), logger: logger, monitorManager: NewMonitorManager(),