|
@@ -98,6 +98,7 @@ type Server struct {
|
98
|
98
|
loggingRawIO bool
|
99
|
99
|
isupport *isupport.List
|
100
|
100
|
klines *KLineManager
|
|
101
|
+ languages *LanguageManager
|
101
|
102
|
limits Limits
|
102
|
103
|
listeners map[string]*ListenerWrapper
|
103
|
104
|
logger *logger.Manager
|
|
@@ -153,6 +154,7 @@ func NewServer(config *Config, logger *logger.Manager) (*Server, error) {
|
153
|
154
|
commands: make(chan Command),
|
154
|
155
|
connectionLimiter: connection_limits.NewLimiter(),
|
155
|
156
|
connectionThrottler: connection_limits.NewThrottler(),
|
|
157
|
+ languages: NewLanguageManager(),
|
156
|
158
|
listeners: make(map[string]*ListenerWrapper),
|
157
|
159
|
logger: logger,
|
158
|
160
|
monitorManager: NewMonitorManager(),
|
|
@@ -434,7 +436,7 @@ func (server *Server) tryRegister(c *Client) {
|
434
|
436
|
// send welcome text
|
435
|
437
|
//NOTE(dan): we specifically use the NICK here instead of the nickmask
|
436
|
438
|
// see http://modern.ircdocs.horse/#rplwelcome-001 for details on why we avoid using the nickmask
|
437
|
|
- c.Send(nil, server.name, RPL_WELCOME, c.nick, fmt.Sprintf("Welcome to the Internet Relay Network %s", c.nick))
|
|
439
|
+ c.Send(nil, server.name, RPL_WELCOME, c.nick, fmt.Sprintf(c.t("Welcome to the Internet Relay Network %s"), c.nick))
|
438
|
440
|
c.Send(nil, server.name, RPL_YOURHOST, c.nick, fmt.Sprintf("Your host is %s, running version %s", server.name, Ver))
|
439
|
441
|
c.Send(nil, server.name, RPL_CREATED, c.nick, fmt.Sprintf("This server was created %s", server.ctime.Format(time.RFC1123)))
|
440
|
442
|
//TODO(dan): Look at adding last optional [<channel modes with a parameter>] parameter
|
|
@@ -447,6 +449,15 @@ func (server *Server) tryRegister(c *Client) {
|
447
|
449
|
}
|
448
|
450
|
}
|
449
|
451
|
|
|
452
|
+// t returns the translated version of the given string, based on the languages configured by the client.
|
|
453
|
+func (client *Client) t(originalString string) string {
|
|
454
|
+ // grab this mutex to protect client.languages
|
|
455
|
+ client.stateMutex.RLock()
|
|
456
|
+ defer client.stateMutex.RUnlock()
|
|
457
|
+
|
|
458
|
+ return client.server.languages.Translate(client.languages, originalString)
|
|
459
|
+}
|
|
460
|
+
|
450
|
461
|
// MOTD serves the Message of the Day.
|
451
|
462
|
func (server *Server) MOTD(client *Client) {
|
452
|
463
|
server.configurableStateMutex.RLock()
|