From fc9b501a7761e9e9e1ea4d59a90dcb6ae4ed7a06 Mon Sep 17 00:00:00 2001 From: Daniel Oaks Date: Thu, 25 Jan 2018 19:51:02 +1000 Subject: [PATCH] Show translator names in INFO --- irc/languages.go | 20 ++++++++++++++++++++ irc/server.go | 10 +++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) 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 }