diff --git a/irc/languages.go b/irc/languages.go index 5a39eaea..399c9c46 100644 --- a/irc/languages.go +++ b/irc/languages.go @@ -4,6 +4,8 @@ package irc import ( + "fmt" + "sort" "strings" "sync" ) @@ -67,6 +69,24 @@ func (lm *LanguageManager) Count() int { return len(lm.Info) } +// Translators returns the languages we have and the translators. +func (lm *LanguageManager) Translators() []string { + lm.RLock() + defer lm.RUnlock() + + var tlist sort.StringSlice + + for _, info := range lm.Info { + if info.Code == "en" { + continue + } + tlist = append(tlist, fmt.Sprintf("%s (%s): %s", info.Name, info.Code, info.Contributors)) + } + + sort.Sort(tlist) + return tlist +} + // Codes returns the proper language codes for the given casefolded language codes. func (lm *LanguageManager) Codes(codes []string) []string { lm.RLock() diff --git a/irc/server.go b/irc/server.go index 91375d62..de0749b1 100644 --- a/irc/server.go +++ b/irc/server.go @@ -2281,11 +2281,19 @@ func infoHandler(server *Server, client *Client, msg ircmsg.IrcMessage) bool { for _, line := range infoString2 { client.Send(nil, server.name, RPL_INFO, client.nick, line) } - client.Send(nil, server.name, RPL_INFO, client.nick, "") client.Send(nil, server.name, RPL_INFO, client.nick, client.t("Contributors and Former Developers:")) for _, line := range infoString3 { client.Send(nil, server.name, RPL_INFO, client.nick, line) } + // show translators for languages other than good ole' regular English + tlines := server.languages.Translators() + if 0 < len(tlines) { + client.Send(nil, server.name, RPL_INFO, client.nick, client.t("Translators:")) + for _, line := range tlines { + client.Send(nil, server.name, RPL_INFO, client.nick, " "+line) + } + client.Send(nil, server.name, RPL_INFO, client.nick, "") + } client.Send(nil, server.name, RPL_ENDOFINFO, client.nick, client.t("End of /INFO")) return false }