Browse Source

Fix dodgy TL strings to make them easier to translate

tags/v1.1.0-rc1
Daniel Oaks 5 years ago
parent
commit
6d109e92a5

+ 4
- 4
irc/channel.go View File

619
 			if item.AccountName == "*" {
619
 			if item.AccountName == "*" {
620
 				message = fmt.Sprintf(client.t("%s joined the channel"), nick)
620
 				message = fmt.Sprintf(client.t("%s joined the channel"), nick)
621
 			} else {
621
 			} else {
622
-				message = fmt.Sprintf(client.t("%s [account: %s] joined the channel"), nick, item.AccountName)
622
+				message = fmt.Sprintf(client.t("%[1]s [account: %[2]s] joined the channel"), nick, item.AccountName)
623
 			}
623
 			}
624
 			rb.Add(tags, "HistServ", "PRIVMSG", chname, message)
624
 			rb.Add(tags, "HistServ", "PRIVMSG", chname, message)
625
 		case history.Part:
625
 		case history.Part:
626
 			nick := stripMaskFromNick(item.Nick)
626
 			nick := stripMaskFromNick(item.Nick)
627
-			message := fmt.Sprintf(client.t("%s left the channel (%s)"), nick, item.Message.Original)
627
+			message := fmt.Sprintf(client.t("%[1]s left the channel (%[2]s)"), nick, item.Message.Original)
628
 			rb.Add(tags, "HistServ", "PRIVMSG", chname, message)
628
 			rb.Add(tags, "HistServ", "PRIVMSG", chname, message)
629
 		case history.Quit:
629
 		case history.Quit:
630
 			nick := stripMaskFromNick(item.Nick)
630
 			nick := stripMaskFromNick(item.Nick)
631
-			message := fmt.Sprintf(client.t("%s quit (%s)"), nick, item.Message.Original)
631
+			message := fmt.Sprintf(client.t("%[1]s quit (%[2]s)"), nick, item.Message.Original)
632
 			rb.Add(tags, "HistServ", "PRIVMSG", chname, message)
632
 			rb.Add(tags, "HistServ", "PRIVMSG", chname, message)
633
 		case history.Kick:
633
 		case history.Kick:
634
 			nick := stripMaskFromNick(item.Nick)
634
 			nick := stripMaskFromNick(item.Nick)
635
 			// XXX Msgid is the kick target
635
 			// XXX Msgid is the kick target
636
-			message := fmt.Sprintf(client.t("%s kicked %s (%s)"), nick, item.Msgid, item.Message.Original)
636
+			message := fmt.Sprintf(client.t("%[1]s kicked %[2]s (%[3]s)"), nick, item.Msgid, item.Message.Original)
637
 			rb.Add(tags, "HistServ", "PRIVMSG", chname, message)
637
 			rb.Add(tags, "HistServ", "PRIVMSG", chname, message)
638
 		}
638
 		}
639
 	}
639
 	}

+ 4
- 4
irc/chanserv.go View File

149
 		sort.Slice(affectedModes, func(i, j int) bool {
149
 		sort.Slice(affectedModes, func(i, j int) bool {
150
 			return umodeGreaterThan(affectedModes[i].Mode, affectedModes[j].Mode)
150
 			return umodeGreaterThan(affectedModes[i].Mode, affectedModes[j].Mode)
151
 		})
151
 		})
152
-		csNotice(rb, fmt.Sprintf(client.t("Channel %s has %d persistent modes set"), channelName, len(affectedModes)))
152
+		csNotice(rb, fmt.Sprintf(client.t("Channel %[1]s has %[2]d persistent modes set"), channelName, len(affectedModes)))
153
 		for _, modeChange := range affectedModes {
153
 		for _, modeChange := range affectedModes {
154
-			csNotice(rb, fmt.Sprintf(client.t("Account %s receives mode +%s"), modeChange.Arg, string(modeChange.Mode)))
154
+			csNotice(rb, fmt.Sprintf(client.t("Account %[1]s receives mode +%[2]s"), modeChange.Arg, string(modeChange.Mode)))
155
 		}
155
 		}
156
 	case modes.Add, modes.Remove:
156
 	case modes.Add, modes.Remove:
157
 		if len(affectedModes) > 0 {
157
 		if len(affectedModes) > 0 {
158
 			csNotice(rb, fmt.Sprintf(client.t("Successfully set mode %s"), change.String()))
158
 			csNotice(rb, fmt.Sprintf(client.t("Successfully set mode %s"), change.String()))
159
 		} else {
159
 		} else {
160
-			csNotice(rb, client.t("Change was a no-op"))
160
+			csNotice(rb, client.t("No changes were made"))
161
 		}
161
 		}
162
 	}
162
 	}
163
 }
163
 }
293
 	expectedCode := unregisterConfirmationCode(info.Name, info.RegisteredAt)
293
 	expectedCode := unregisterConfirmationCode(info.Name, info.RegisteredAt)
294
 	if expectedCode != verificationCode {
294
 	if expectedCode != verificationCode {
295
 		csNotice(rb, ircfmt.Unescape(client.t("$bWarning: unregistering this channel will remove all stored channel attributes.$b")))
295
 		csNotice(rb, ircfmt.Unescape(client.t("$bWarning: unregistering this channel will remove all stored channel attributes.$b")))
296
-		csNotice(rb, fmt.Sprintf(client.t("To confirm channel unregistration, type: /CS UNREGISTER %s %s"), channelKey, expectedCode))
296
+		csNotice(rb, fmt.Sprintf(client.t("To confirm channel unregistration, type: /CS UNREGISTER %[1]s %[2]s"), channelKey, expectedCode))
297
 		return
297
 		return
298
 	}
298
 	}
299
 
299
 

+ 2
- 2
irc/handlers.go View File

166
 		}
166
 		}
167
 		sendSuccessfulRegResponse(client, rb, false)
167
 		sendSuccessfulRegResponse(client, rb, false)
168
 	} else {
168
 	} else {
169
-		messageTemplate := client.t("Account created, pending verification; verification code has been sent to %s:%s")
170
-		message := fmt.Sprintf(messageTemplate, callbackNamespace, callbackValue)
169
+		messageTemplate := client.t("Account created, pending verification; verification code has been sent to %s")
170
+		message := fmt.Sprintf(messageTemplate, fmt.Sprintf("%s:%s", callbackNamespace, callbackValue))
171
 		rb.Add(nil, server.name, RPL_REG_VERIFICATION_REQUIRED, nick, casefoldedAccount, message)
171
 		rb.Add(nil, server.name, RPL_REG_VERIFICATION_REQUIRED, nick, casefoldedAccount, message)
172
 	}
172
 	}
173
 
173
 

+ 3
- 3
irc/help.go View File

646
 	defaultHelpIndex := `= Help Topics =
646
 	defaultHelpIndex := `= Help Topics =
647
 
647
 
648
 Commands:
648
 Commands:
649
-%s
649
+%[1]s
650
 
650
 
651
 RPL_ISUPPORT Tokens:
651
 RPL_ISUPPORT Tokens:
652
-%s
652
+%[2]s
653
 
653
 
654
 Information:
654
 Information:
655
-%s`
655
+%[3]s`
656
 
656
 
657
 	newHelpIndex := make(map[string]string)
657
 	newHelpIndex := make(map[string]string)
658
 
658
 

+ 4
- 4
irc/hostserv.go View File

222
 	}
222
 	}
223
 
223
 
224
 	if account.VHost.ApprovedVHost != "" {
224
 	if account.VHost.ApprovedVHost != "" {
225
-		hsNotice(rb, fmt.Sprintf(client.t("Account %s has vhost: %s"), accountName, account.VHost.ApprovedVHost))
225
+		hsNotice(rb, fmt.Sprintf(client.t("Account %[1]s has vhost: %[2]s"), accountName, account.VHost.ApprovedVHost))
226
 		if !account.VHost.Enabled {
226
 		if !account.VHost.Enabled {
227
 			hsNotice(rb, fmt.Sprintf(client.t("This vhost is currently disabled, but can be enabled with /HS ON")))
227
 			hsNotice(rb, fmt.Sprintf(client.t("This vhost is currently disabled, but can be enabled with /HS ON")))
228
 		}
228
 		}
274
 
274
 
275
 func hsWaitingHandler(server *Server, client *Client, command string, params []string, rb *ResponseBuffer) {
275
 func hsWaitingHandler(server *Server, client *Client, command string, params []string, rb *ResponseBuffer) {
276
 	requests, total := server.accounts.VHostListRequests(10)
276
 	requests, total := server.accounts.VHostListRequests(10)
277
-	hsNotice(rb, fmt.Sprintf(client.t("There are %d pending requests for vhosts (%d displayed)"), total, len(requests)))
277
+	hsNotice(rb, fmt.Sprintf(client.t("There are %[1]d pending requests for vhosts (%[2]d displayed)"), total, len(requests)))
278
 	for i, request := range requests {
278
 	for i, request := range requests {
279
-		hsNotice(rb, fmt.Sprintf(client.t("%d. User %s requests vhost: %s"), i+1, request.Account, request.RequestedVHost))
279
+		hsNotice(rb, fmt.Sprintf(client.t("%[1]d. User %[2]s requests vhost: %[3]s"), i+1, request.Account, request.RequestedVHost))
280
 	}
280
 	}
281
 }
281
 }
282
 
282
 
288
 		hsNotice(rb, client.t("An error occurred"))
288
 		hsNotice(rb, client.t("An error occurred"))
289
 	} else {
289
 	} else {
290
 		hsNotice(rb, fmt.Sprintf(client.t("Successfully approved vhost request for %s"), user))
290
 		hsNotice(rb, fmt.Sprintf(client.t("Successfully approved vhost request for %s"), user))
291
-		chanMsg := fmt.Sprintf("Oper %s approved vhost %s for account %s", client.Nick(), vhostInfo.ApprovedVHost, user)
291
+		chanMsg := fmt.Sprintf("Oper %[1]s approved vhost %[2]s for account %[3]s", client.Nick(), vhostInfo.ApprovedVHost, user)
292
 		hsNotifyChannel(server, chanMsg)
292
 		hsNotifyChannel(server, chanMsg)
293
 		for _, client := range server.accounts.AccountToClients(user) {
293
 		for _, client := range server.accounts.AccountToClients(user) {
294
 			client.Notice(client.t("Your vhost request was approved by an administrator"))
294
 			client.Notice(client.t("Your vhost request was approved by an administrator"))

+ 3
- 3
irc/nickserv.go View File

392
 				sendSuccessfulRegResponse(client, rb, true)
392
 				sendSuccessfulRegResponse(client, rb, true)
393
 			}
393
 			}
394
 		} else {
394
 		} else {
395
-			messageTemplate := client.t("Account created, pending verification; verification code has been sent to %s:%s")
396
-			message := fmt.Sprintf(messageTemplate, callbackNamespace, callbackValue)
395
+			messageTemplate := client.t("Account created, pending verification; verification code has been sent to %s")
396
+			message := fmt.Sprintf(messageTemplate, fmt.Sprintf("%s:%s", callbackNamespace, callbackValue))
397
 			nsNotice(rb, message)
397
 			nsNotice(rb, message)
398
 		}
398
 		}
399
 	}
399
 	}
459
 	expectedCode := unregisterConfirmationCode(account.Name, account.RegisteredAt)
459
 	expectedCode := unregisterConfirmationCode(account.Name, account.RegisteredAt)
460
 	if expectedCode != verificationCode {
460
 	if expectedCode != verificationCode {
461
 		nsNotice(rb, ircfmt.Unescape(client.t("$bWarning: unregistering this account will remove its stored privileges.$b")))
461
 		nsNotice(rb, ircfmt.Unescape(client.t("$bWarning: unregistering this account will remove its stored privileges.$b")))
462
-		nsNotice(rb, fmt.Sprintf(client.t("To confirm account unregistration, type: /NS UNREGISTER %s %s"), cfname, expectedCode))
462
+		nsNotice(rb, fmt.Sprintf(client.t("To confirm account unregistration, type: /NS UNREGISTER %[1]s %[2]s"), cfname, expectedCode))
463
 		return
463
 		return
464
 	}
464
 	}
465
 
465
 

+ 2
- 2
irc/services.go View File

143
 	}
143
 	}
144
 
144
 
145
 	if cmd == nil {
145
 	if cmd == nil {
146
-		sendNotice(fmt.Sprintf("%s /%s HELP", client.t("Unknown command. To see available commands, run"), service.ShortName))
146
+		sendNotice(fmt.Sprintf(client.t("Unknown command. To see available commands, run: /%s HELP"), service.ShortName))
147
 		return
147
 		return
148
 	}
148
 	}
149
 
149
 
150
 	if len(params) < cmd.minParams {
150
 	if len(params) < cmd.minParams {
151
-		sendNotice(fmt.Sprintf(client.t("Invalid parameters. For usage, do /msg %s HELP %s"), service.Name, strings.ToUpper(commandName)))
151
+		sendNotice(fmt.Sprintf(client.t("Invalid parameters. For usage, do /msg %[1]s HELP %[2]s"), service.Name, strings.ToUpper(commandName)))
152
 		return
152
 		return
153
 	}
153
 	}
154
 
154
 

+ 4
- 1
languages/example/help.lang.json View File

1
 {
1
 {
2
-  "= Help Topics =\n\nCommands:\n%s\n\nRPL_ISUPPORT Tokens:\n%s\n\nInformation:\n%s": "= Help Topics =\n\nCommands:\n%s\n\nRPL_ISUPPORT Tokens:\n%s\n\nInformation:\n%s",
2
+  "= Help Topics =\n\nCommands:\n%[1]s\n\nRPL_ISUPPORT Tokens:\n%[2]s\n\nInformation:\n%[3]s": "= Help Topics =\n\nCommands:\n%[1]s\n\nRPL_ISUPPORT Tokens:\n%[2]s\n\nInformation:\n%[3]s",
3
   "== Channel Modes ==\n\nOragono supports the following channel modes:\n\n  +b  |  Client masks that are banned from the channel (e.g. *!*@127.0.0.1)\n  +e  |  Client masks that are exempted from bans.\n  +I  |  Client masks that are exempted from the invite-only flag.\n  +i  |  Invite-only mode, only invited clients can join the channel.\n  +k  |  Key required when joining the channel.\n  +l  |  Client join limit for the channel.\n  +m  |  Moderated mode, only privileged clients can talk on the channel.\n  +n  |  No-outside-messages mode, only users that are on the channel can send\n      |  messages to it.\n  +R  |  Only registered users can talk in the channel.\n  +s  |  Secret mode, channel won't show up in /LIST or whois replies.\n  +t  |  Only channel opers can modify the topic.\n\n= Prefixes =\n\n  +q (~)  |  Founder channel mode.\n  +a (&)  |  Admin channel mode.\n  +o (@)  |  Operator channel mode.\n  +h (%)  |  Halfop channel mode.\n  +v (+)  |  Voice channel mode.": "== Channel Modes ==\n\nOragono supports the following channel modes:\n\n  +b  |  Client masks that are banned from the channel (e.g. *!*@127.0.0.1)\n  +e  |  Client masks that are exempted from bans.\n  +I  |  Client masks that are exempted from the invite-only flag.\n  +i  |  Invite-only mode, only invited clients can join the channel.\n  +k  |  Key required when joining the channel.\n  +l  |  Client join limit for the channel.\n  +m  |  Moderated mode, only privileged clients can talk on the channel.\n  +n  |  No-outside-messages mode, only users that are on the channel can send\n      |  messages to it.\n  +R  |  Only registered users can talk in the channel.\n  +s  |  Secret mode, channel won't show up in /LIST or whois replies.\n  +t  |  Only channel opers can modify the topic.\n\n= Prefixes =\n\n  +q (~)  |  Founder channel mode.\n  +a (&)  |  Admin channel mode.\n  +o (@)  |  Operator channel mode.\n  +h (%)  |  Halfop channel mode.\n  +v (+)  |  Voice channel mode.",
3
   "== Channel Modes ==\n\nOragono supports the following channel modes:\n\n  +b  |  Client masks that are banned from the channel (e.g. *!*@127.0.0.1)\n  +e  |  Client masks that are exempted from bans.\n  +I  |  Client masks that are exempted from the invite-only flag.\n  +i  |  Invite-only mode, only invited clients can join the channel.\n  +k  |  Key required when joining the channel.\n  +l  |  Client join limit for the channel.\n  +m  |  Moderated mode, only privileged clients can talk on the channel.\n  +n  |  No-outside-messages mode, only users that are on the channel can send\n      |  messages to it.\n  +R  |  Only registered users can talk in the channel.\n  +s  |  Secret mode, channel won't show up in /LIST or whois replies.\n  +t  |  Only channel opers can modify the topic.\n\n= Prefixes =\n\n  +q (~)  |  Founder channel mode.\n  +a (&)  |  Admin channel mode.\n  +o (@)  |  Operator channel mode.\n  +h (%)  |  Halfop channel mode.\n  +v (+)  |  Voice channel mode.": "== Channel Modes ==\n\nOragono supports the following channel modes:\n\n  +b  |  Client masks that are banned from the channel (e.g. *!*@127.0.0.1)\n  +e  |  Client masks that are exempted from bans.\n  +I  |  Client masks that are exempted from the invite-only flag.\n  +i  |  Invite-only mode, only invited clients can join the channel.\n  +k  |  Key required when joining the channel.\n  +l  |  Client join limit for the channel.\n  +m  |  Moderated mode, only privileged clients can talk on the channel.\n  +n  |  No-outside-messages mode, only users that are on the channel can send\n      |  messages to it.\n  +R  |  Only registered users can talk in the channel.\n  +s  |  Secret mode, channel won't show up in /LIST or whois replies.\n  +t  |  Only channel opers can modify the topic.\n\n= Prefixes =\n\n  +q (~)  |  Founder channel mode.\n  +a (&)  |  Admin channel mode.\n  +o (@)  |  Operator channel mode.\n  +h (%)  |  Halfop channel mode.\n  +v (+)  |  Voice channel mode.",
4
   "== Server Notice Masks ==\n\nOragono supports the following server notice masks for operators:\n\n  a  |  Local announcements.\n  c  |  Local client connections.\n  j  |  Local channel actions.\n  k  |  Local kills.\n  n  |  Local nick changes.\n  o  |  Local oper actions.\n  q  |  Local quits.\n  t  |  Local /STATS usage.\n  u  |  Local client account actions.\n  x  |  Local X-lines (DLINE/KLINE/etc).\n\nTo set a snomask, do this with your nickname:\n\n  /MODE <nick> +s <chars>\n\nFor instance, this would set the kill, oper, account and xline snomasks on dan:\n\n  /MODE dan +s koux": "== Server Notice Masks ==\n\nOragono supports the following server notice masks for operators:\n\n  a  |  Local announcements.\n  c  |  Local client connections.\n  j  |  Local channel actions.\n  k  |  Local kills.\n  n  |  Local nick changes.\n  o  |  Local oper actions.\n  q  |  Local quits.\n  t  |  Local /STATS usage.\n  u  |  Local client account actions.\n  x  |  Local X-lines (DLINE/KLINE/etc).\n\nTo set a snomask, do this with your nickname:\n\n  /MODE <nick> +s <chars>\n\nFor instance, this would set the kill, oper, account and xline snomasks on dan:\n\n  /MODE dan +s koux",
4
   "== Server Notice Masks ==\n\nOragono supports the following server notice masks for operators:\n\n  a  |  Local announcements.\n  c  |  Local client connections.\n  j  |  Local channel actions.\n  k  |  Local kills.\n  n  |  Local nick changes.\n  o  |  Local oper actions.\n  q  |  Local quits.\n  t  |  Local /STATS usage.\n  u  |  Local client account actions.\n  x  |  Local X-lines (DLINE/KLINE/etc).\n\nTo set a snomask, do this with your nickname:\n\n  /MODE <nick> +s <chars>\n\nFor instance, this would set the kill, oper, account and xline snomasks on dan:\n\n  /MODE dan +s koux": "== Server Notice Masks ==\n\nOragono supports the following server notice masks for operators:\n\n  a  |  Local announcements.\n  c  |  Local client connections.\n  j  |  Local channel actions.\n  k  |  Local kills.\n  n  |  Local nick changes.\n  o  |  Local oper actions.\n  q  |  Local quits.\n  t  |  Local /STATS usage.\n  u  |  Local client account actions.\n  x  |  Local X-lines (DLINE/KLINE/etc).\n\nTo set a snomask, do this with your nickname:\n\n  /MODE <nick> +s <chars>\n\nFor instance, this would set the kill, oper, account and xline snomasks on dan:\n\n  /MODE dan +s koux",
5
   "== User Modes ==\n\nOragono supports the following user modes:\n\n  +a  |  User is marked as being away. This mode is set with the /AWAY command.\n  +i  |  User is marked as invisible (their channels are hidden from whois replies).\n  +o  |  User is an IRC operator.\n  +R  |  User only accepts messages from other registered users. \n  +s  |  Server Notice Masks (see help with /HELPOP snomasks).\n  +Z  |  User is connected via TLS.": "== User Modes ==\n\nOragono supports the following user modes:\n\n  +a  |  User is marked as being away. This mode is set with the /AWAY command.\n  +i  |  User is marked as invisible (their channels are hidden from whois replies).\n  +o  |  User is an IRC operator.\n  +R  |  User only accepts messages from other registered users. \n  +s  |  Server Notice Masks (see help with /HELPOP snomasks).\n  +Z  |  User is connected via TLS.",
5
   "== User Modes ==\n\nOragono supports the following user modes:\n\n  +a  |  User is marked as being away. This mode is set with the /AWAY command.\n  +i  |  User is marked as invisible (their channels are hidden from whois replies).\n  +o  |  User is an IRC operator.\n  +R  |  User only accepts messages from other registered users. \n  +s  |  Server Notice Masks (see help with /HELPOP snomasks).\n  +Z  |  User is connected via TLS.": "== User Modes ==\n\nOragono supports the following user modes:\n\n  +a  |  User is marked as being away. This mode is set with the /AWAY command.\n  +i  |  User is marked as invisible (their channels are hidden from whois replies).\n  +o  |  User is an IRC operator.\n  +R  |  User only accepts messages from other registered users. \n  +s  |  Server Notice Masks (see help with /HELPOP snomasks).\n  +Z  |  User is connected via TLS.",
10
   "AWAY [message]\n\nIf [message] is sent, marks you away. If [message] is not sent, marks you no\nlonger away.": "AWAY [message]\n\nIf [message] is sent, marks you away. If [message] is not sent, marks you no\nlonger away.",
10
   "AWAY [message]\n\nIf [message] is sent, marks you away. If [message] is not sent, marks you no\nlonger away.": "AWAY [message]\n\nIf [message] is sent, marks you away. If [message] is not sent, marks you no\nlonger away.",
11
   "CAP <subcommand> [:<capabilities>]\n\nUsed in capability negotiation. See the IRCv3 specs for more info:\nhttp://ircv3.net/specs/core/capability-negotiation-3.1.html\nhttp://ircv3.net/specs/core/capability-negotiation-3.2.html": "CAP <subcommand> [:<capabilities>]\n\nUsed in capability negotiation. See the IRCv3 specs for more info:\nhttp://ircv3.net/specs/core/capability-negotiation-3.1.html\nhttp://ircv3.net/specs/core/capability-negotiation-3.2.html",
11
   "CAP <subcommand> [:<capabilities>]\n\nUsed in capability negotiation. See the IRCv3 specs for more info:\nhttp://ircv3.net/specs/core/capability-negotiation-3.1.html\nhttp://ircv3.net/specs/core/capability-negotiation-3.2.html": "CAP <subcommand> [:<capabilities>]\n\nUsed in capability negotiation. See the IRCv3 specs for more info:\nhttp://ircv3.net/specs/core/capability-negotiation-3.1.html\nhttp://ircv3.net/specs/core/capability-negotiation-3.2.html",
12
   "CHANSERV <subcommand> [params]\n\nChanServ controls channel registrations.": "CHANSERV <subcommand> [params]\n\nChanServ controls channel registrations.",
12
   "CHANSERV <subcommand> [params]\n\nChanServ controls channel registrations.": "CHANSERV <subcommand> [params]\n\nChanServ controls channel registrations.",
13
+  "CHATHISTORY [params]\n\nCHATHISTORY is an experimental history replay command. See these documents:\nhttps://github.com/MuffinMedic/ircv3-specifications/blob/chathistory/extensions/chathistory.md\nhttps://gist.github.com/DanielOaks/c104ad6e8759c01eb5c826d627caf80d": "CHATHISTORY [params]\n\nCHATHISTORY is an experimental history replay command. See these documents:\nhttps://github.com/MuffinMedic/ircv3-specifications/blob/chathistory/extensions/chathistory.md\nhttps://gist.github.com/DanielOaks/c104ad6e8759c01eb5c826d627caf80d",
13
   "CS <subcommand> [params]\n\nChanServ controls channel registrations.": "CS <subcommand> [params]\n\nChanServ controls channel registrations.",
14
   "CS <subcommand> [params]\n\nChanServ controls channel registrations.": "CS <subcommand> [params]\n\nChanServ controls channel registrations.",
14
   "DEBUG <option>\n\nPrints debug information about the IRCd. <option> can be one of:\n\n* GCSTATS: Garbage control statistics.\n* NUMGOROUTINE: Number of goroutines in use.\n* STARTCPUPROFILE: Starts the CPU profiler.\n* STOPCPUPROFILE: Stops the CPU profiler.\n* PROFILEHEAP: Writes out the CPU profiler info.": "DEBUG <option>\n\nPrints debug information about the IRCd. <option> can be one of:\n\n* GCSTATS: Garbage control statistics.\n* NUMGOROUTINE: Number of goroutines in use.\n* STARTCPUPROFILE: Starts the CPU profiler.\n* STOPCPUPROFILE: Stops the CPU profiler.\n* PROFILEHEAP: Writes out the CPU profiler info.",
15
   "DEBUG <option>\n\nPrints debug information about the IRCd. <option> can be one of:\n\n* GCSTATS: Garbage control statistics.\n* NUMGOROUTINE: Number of goroutines in use.\n* STARTCPUPROFILE: Starts the CPU profiler.\n* STOPCPUPROFILE: Stops the CPU profiler.\n* PROFILEHEAP: Writes out the CPU profiler info.": "DEBUG <option>\n\nPrints debug information about the IRCd. <option> can be one of:\n\n* GCSTATS: Garbage control statistics.\n* NUMGOROUTINE: Number of goroutines in use.\n* STARTCPUPROFILE: Starts the CPU profiler.\n* STOPCPUPROFILE: Stops the CPU profiler.\n* PROFILEHEAP: Writes out the CPU profiler info.",
15
   "DLINE [ANDKILL] [MYSELF] [duration] <ip>/<net> [ON <server>] [reason [| oper reason]]\nDLINE LIST\n\nBans an IP address or network from connecting to the server. If the duration is\ngiven then only for that long. The reason is shown to the user themselves, but\neveryone else will see a standard message. The oper reason is shown to\noperators getting info about the DLINEs that exist.\n\nBans are saved across subsequent launches of the server.\n\n\"ANDKILL\" means that all matching clients are also removed from the server.\n\n\"MYSELF\" is required when the DLINE matches the address the person applying it is connected\nfrom. If \"MYSELF\" is not given, trying to DLINE yourself will result in an error.\n\n[duration] can be of the following forms:\n\t1y 12mo 31d 10h 8m 13s\n\n<net> is specified in typical CIDR notation. For example:\n\t127.0.0.1/8\n\t8.8.8.8/24\n\nON <server> specifies that the ban is to be set on that specific server.\n\n[reason] and [oper reason], if they exist, are separated by a vertical bar (|).\n\nIf \"DLINE LIST\" is sent, the server sends back a list of our current DLINEs.": "DLINE [ANDKILL] [MYSELF] [duration] <ip>/<net> [ON <server>] [reason [| oper reason]]\nDLINE LIST\n\nBans an IP address or network from connecting to the server. If the duration is\ngiven then only for that long. The reason is shown to the user themselves, but\neveryone else will see a standard message. The oper reason is shown to\noperators getting info about the DLINEs that exist.\n\nBans are saved across subsequent launches of the server.\n\n\"ANDKILL\" means that all matching clients are also removed from the server.\n\n\"MYSELF\" is required when the DLINE matches the address the person applying it is connected\nfrom. If \"MYSELF\" is not given, trying to DLINE yourself will result in an error.\n\n[duration] can be of the following forms:\n\t1y 12mo 31d 10h 8m 13s\n\n<net> is specified in typical CIDR notation. For example:\n\t127.0.0.1/8\n\t8.8.8.8/24\n\nON <server> specifies that the ban is to be set on that specific server.\n\n[reason] and [oper reason], if they exist, are separated by a vertical bar (|).\n\nIf \"DLINE LIST\" is sent, the server sends back a list of our current DLINEs.",
16
   "DLINE [ANDKILL] [MYSELF] [duration] <ip>/<net> [ON <server>] [reason [| oper reason]]\nDLINE LIST\n\nBans an IP address or network from connecting to the server. If the duration is\ngiven then only for that long. The reason is shown to the user themselves, but\neveryone else will see a standard message. The oper reason is shown to\noperators getting info about the DLINEs that exist.\n\nBans are saved across subsequent launches of the server.\n\n\"ANDKILL\" means that all matching clients are also removed from the server.\n\n\"MYSELF\" is required when the DLINE matches the address the person applying it is connected\nfrom. If \"MYSELF\" is not given, trying to DLINE yourself will result in an error.\n\n[duration] can be of the following forms:\n\t1y 12mo 31d 10h 8m 13s\n\n<net> is specified in typical CIDR notation. For example:\n\t127.0.0.1/8\n\t8.8.8.8/24\n\nON <server> specifies that the ban is to be set on that specific server.\n\n[reason] and [oper reason], if they exist, are separated by a vertical bar (|).\n\nIf \"DLINE LIST\" is sent, the server sends back a list of our current DLINEs.": "DLINE [ANDKILL] [MYSELF] [duration] <ip>/<net> [ON <server>] [reason [| oper reason]]\nDLINE LIST\n\nBans an IP address or network from connecting to the server. If the duration is\ngiven then only for that long. The reason is shown to the user themselves, but\neveryone else will see a standard message. The oper reason is shown to\noperators getting info about the DLINEs that exist.\n\nBans are saved across subsequent launches of the server.\n\n\"ANDKILL\" means that all matching clients are also removed from the server.\n\n\"MYSELF\" is required when the DLINE matches the address the person applying it is connected\nfrom. If \"MYSELF\" is not given, trying to DLINE yourself will result in an error.\n\n[duration] can be of the following forms:\n\t1y 12mo 31d 10h 8m 13s\n\n<net> is specified in typical CIDR notation. For example:\n\t127.0.0.1/8\n\t8.8.8.8/24\n\nON <server> specifies that the ban is to be set on that specific server.\n\n[reason] and [oper reason], if they exist, are separated by a vertical bar (|).\n\nIf \"DLINE LIST\" is sent, the server sends back a list of our current DLINEs.",
16
   "HELP <argument>\n\nGet an explanation of <argument>, or \"index\" for a list of help topics.": "HELP <argument>\n\nGet an explanation of <argument>, or \"index\" for a list of help topics.",
17
   "HELP <argument>\n\nGet an explanation of <argument>, or \"index\" for a list of help topics.": "HELP <argument>\n\nGet an explanation of <argument>, or \"index\" for a list of help topics.",
17
   "HELPOP <argument>\n\nGet an explanation of <argument>, or \"index\" for a list of help topics.": "HELPOP <argument>\n\nGet an explanation of <argument>, or \"index\" for a list of help topics.",
18
   "HELPOP <argument>\n\nGet an explanation of <argument>, or \"index\" for a list of help topics.": "HELPOP <argument>\n\nGet an explanation of <argument>, or \"index\" for a list of help topics.",
19
+  "HISTORY <target> [limit]\n\nReplay message history. <target> can be a channel name, \"me\" to replay direct\nmessage history, or a nickname to replay another client's direct message\nhistory (they must be logged into the same account as you). At most [limit]\nmessages will be replayed.": "HISTORY <target> [limit]\n\nReplay message history. <target> can be a channel name, \"me\" to replay direct\nmessage history, or a nickname to replay another client's direct message\nhistory (they must be logged into the same account as you). At most [limit]\nmessages will be replayed.",
18
   "HOSTSERV <command> [params]\n\nHostServ lets you manage your vhost (a string displayed in place of your\nreal hostname).": "HOSTSERV <command> [params]\n\nHostServ lets you manage your vhost (a string displayed in place of your\nreal hostname).",
20
   "HOSTSERV <command> [params]\n\nHostServ lets you manage your vhost (a string displayed in place of your\nreal hostname).": "HOSTSERV <command> [params]\n\nHostServ lets you manage your vhost (a string displayed in place of your\nreal hostname).",
19
   "HS <command> [params]\n\nHostServ lets you manage your vhost (a string displayed in place of your\nreal hostname).": "HS <command> [params]\n\nHostServ lets you manage your vhost (a string displayed in place of your\nreal hostname).",
21
   "HS <command> [params]\n\nHostServ lets you manage your vhost (a string displayed in place of your\nreal hostname).": "HS <command> [params]\n\nHostServ lets you manage your vhost (a string displayed in place of your\nreal hostname).",
20
   "INFO\n\nSends information about the server, developers, etc.": "INFO\n\nSends information about the server, developers, etc.",
22
   "INFO\n\nSends information about the server, developers, etc.": "INFO\n\nSends information about the server, developers, etc.",
53
   "SAMODE <target> [<modestring> [<mode arguments>...]]\n\nForcibly sets and removes modes from the given target -- only available to\nopers. For more specific information on mode characters, see the help for\n\"cmode\" and \"umode\".": "SAMODE <target> [<modestring> [<mode arguments>...]]\n\nForcibly sets and removes modes from the given target -- only available to\nopers. For more specific information on mode characters, see the help for\n\"cmode\" and \"umode\".",
55
   "SAMODE <target> [<modestring> [<mode arguments>...]]\n\nForcibly sets and removes modes from the given target -- only available to\nopers. For more specific information on mode characters, see the help for\n\"cmode\" and \"umode\".": "SAMODE <target> [<modestring> [<mode arguments>...]]\n\nForcibly sets and removes modes from the given target -- only available to\nopers. For more specific information on mode characters, see the help for\n\"cmode\" and \"umode\".",
54
   "SANICK <currentnick> <newnick>\n\nGives the given user a new nickname.": "SANICK <currentnick> <newnick>\n\nGives the given user a new nickname.",
56
   "SANICK <currentnick> <newnick>\n\nGives the given user a new nickname.": "SANICK <currentnick> <newnick>\n\nGives the given user a new nickname.",
55
   "SCENE <target> <text to be sent>\n\nThe SCENE command is used to send a scene notification to the given target.": "SCENE <target> <text to be sent>\n\nThe SCENE command is used to send a scene notification to the given target.",
57
   "SCENE <target> <text to be sent>\n\nThe SCENE command is used to send a scene notification to the given target.": "SCENE <target> <text to be sent>\n\nThe SCENE command is used to send a scene notification to the given target.",
58
+  "SETNAME <realname>\n\nThe SETNAME command updates the realname to be the newly-given one.": "SETNAME <realname>\n\nThe SETNAME command updates the realname to be the newly-given one.",
56
   "TIME [server]\n\nShows the time of the current, or the given, server.": "TIME [server]\n\nShows the time of the current, or the given, server.",
59
   "TIME [server]\n\nShows the time of the current, or the given, server.": "TIME [server]\n\nShows the time of the current, or the given, server.",
57
   "TOPIC <channel> [topic]\n\nIf [topic] is given, sets the topic in the channel to that. If [topic] is not\ngiven, views the current topic on the channel.": "TOPIC <channel> [topic]\n\nIf [topic] is given, sets the topic in the channel to that. If [topic] is not\ngiven, views the current topic on the channel.",
60
   "TOPIC <channel> [topic]\n\nIf [topic] is given, sets the topic in the channel to that. If [topic] is not\ngiven, views the current topic on the channel.": "TOPIC <channel> [topic]\n\nIf [topic] is given, sets the topic in the channel to that. If [topic] is not\ngiven, views the current topic on the channel.",
58
   "UNDLINE <ip>/<net>\n\nRemoves an existing ban on an IP address or a network.\n\n<net> is specified in typical CIDR notation. For example:\n\t127.0.0.1/8\n\t8.8.8.8/24": "UNDLINE <ip>/<net>\n\nRemoves an existing ban on an IP address or a network.\n\n<net> is specified in typical CIDR notation. For example:\n\t127.0.0.1/8\n\t8.8.8.8/24",
61
   "UNDLINE <ip>/<net>\n\nRemoves an existing ban on an IP address or a network.\n\n<net> is specified in typical CIDR notation. For example:\n\t127.0.0.1/8\n\t8.8.8.8/24": "UNDLINE <ip>/<net>\n\nRemoves an existing ban on an IP address or a network.\n\n<net> is specified in typical CIDR notation. For example:\n\t127.0.0.1/8\n\t8.8.8.8/24",

+ 22
- 20
languages/example/irc.lang.json View File

1
 {
1
 {
2
   "$bWarning: unregistering this account will remove its stored privileges.$b": "$bWarning: unregistering this account will remove its stored privileges.$b",
2
   "$bWarning: unregistering this account will remove its stored privileges.$b": "$bWarning: unregistering this account will remove its stored privileges.$b",
3
   "$bWarning: unregistering this channel will remove all stored channel attributes.$b": "$bWarning: unregistering this channel will remove all stored channel attributes.$b",
3
   "$bWarning: unregistering this channel will remove all stored channel attributes.$b": "$bWarning: unregistering this channel will remove all stored channel attributes.$b",
4
-  "%d. User %s requests vhost: %s": "%d. User %s requests vhost: %s",
5
-  "%s [account: %s] joined the channel": "%s [account: %s] joined the channel",
4
+  "%[1]d. User %[2]s requests vhost: %[3]s": "%[1]d. User %[2]s requests vhost: %[3]s",
5
+  "%[1]s [account: %[2]s] joined the channel": "%[1]s [account: %[2]s] joined the channel",
6
+  "%[1]s kicked %[2]s (%[3]s)": "%[1]s kicked %[2]s (%[3]s)",
7
+  "%[1]s left the channel (%[2]s)": "%[1]s left the channel (%[2]s)",
8
+  "%[1]s quit (%[2]s)": "%[1]s quit (%[2]s)",
6
   "%s joined the channel": "%s joined the channel",
9
   "%s joined the channel": "%s joined the channel",
7
-  "%s kicked %s (%s)": "%s kicked %s (%s)",
8
-  "%s left the channel (%s)": "%s left the channel (%s)",
9
-  "%s quit (%s)": "%s quit (%s)",
10
   "*** $bEnd of %s HELP$b ***": "*** $bEnd of %s HELP$b ***",
10
   "*** $bEnd of %s HELP$b ***": "*** $bEnd of %s HELP$b ***",
11
   "*** Could not find your username": "*** Could not find your username",
11
   "*** Could not find your username": "*** Could not find your username",
12
   "*** Found your username": "*** Found your username",
12
   "*** Found your username": "*** Found your username",
16
   "... and other commands which have been disabled": "... and other commands which have been disabled",
16
   "... and other commands which have been disabled": "... and other commands which have been disabled",
17
   "A request is pending for vhost: %s": "A request is pending for vhost: %s",
17
   "A request is pending for vhost: %s": "A request is pending for vhost: %s",
18
   "A request was previously made for vhost: %s": "A request was previously made for vhost: %s",
18
   "A request was previously made for vhost: %s": "A request was previously made for vhost: %s",
19
+  "Account %[1]s has vhost: %[2]s": "Account %[1]s has vhost: %[2]s",
20
+  "Account %[1]s receives mode +%[2]s": "Account %[1]s receives mode +%[2]s",
19
   "Account %s has no vhost": "Account %s has no vhost",
21
   "Account %s has no vhost": "Account %s has no vhost",
20
-  "Account %s has vhost: %s": "Account %s has vhost: %s",
21
-  "Account %s receives mode +%s": "Account %s receives mode +%s",
22
   "Account already exists": "Account already exists",
22
   "Account already exists": "Account already exists",
23
   "Account created": "Account created",
23
   "Account created": "Account created",
24
-  "Account created, pending verification; verification code has been sent to %s:%s": "Account created, pending verification; verification code has been sent to %s:%s",
24
+  "Account created, pending verification; verification code has been sent to %s": "Account created, pending verification; verification code has been sent to %s",
25
   "Account does not exist": "Account does not exist",
25
   "Account does not exist": "Account does not exist",
26
   "Account name is not valid": "Account name is not valid",
26
   "Account name is not valid": "Account name is not valid",
27
-  "Account registration has been disabled": "Account registration has been disabled",
28
   "Account registration is disabled": "Account registration is disabled",
27
   "Account registration is disabled": "Account registration is disabled",
29
   "Account: %s": "Account: %s",
28
   "Account: %s": "Account: %s",
30
   "Actual user@host, Actual IP": "Actual user@host, Actual IP",
29
   "Actual user@host, Actual IP": "Actual user@host, Actual IP",
33
   "Added temporary (%[1]s) D-Line for %[2]s": "Added temporary (%[1]s) D-Line for %[2]s",
32
   "Added temporary (%[1]s) D-Line for %[2]s": "Added temporary (%[1]s) D-Line for %[2]s",
34
   "Added temporary (%[1]s) K-Line for %[2]s": "Added temporary (%[1]s) K-Line for %[2]s",
33
   "Added temporary (%[1]s) K-Line for %[2]s": "Added temporary (%[1]s) K-Line for %[2]s",
35
   "Additional grouped nick: %s": "Additional grouped nick: %s",
34
   "Additional grouped nick: %s": "Additional grouped nick: %s",
36
-  "An account already exists for your certificate fingerprint": "An account already exists for your certificate fingerprint",
37
   "An error occurred": "An error occurred",
35
   "An error occurred": "An error occurred",
38
   "Authentication successful": "Authentication successful",
36
   "Authentication successful": "Authentication successful",
39
   "Bad or unauthorized PROXY command": "Bad or unauthorized PROXY command",
37
   "Bad or unauthorized PROXY command": "Bad or unauthorized PROXY command",
45
   "Cannot join channel (+%s)": "Cannot join channel (+%s)",
43
   "Cannot join channel (+%s)": "Cannot join channel (+%s)",
46
   "Cannot resume connection": "Cannot resume connection",
44
   "Cannot resume connection": "Cannot resume connection",
47
   "Cannot resume connection, connection registration has already been completed": "Cannot resume connection, connection registration has already been completed",
45
   "Cannot resume connection, connection registration has already been completed": "Cannot resume connection, connection registration has already been completed",
48
-  "Cannot resume connection, invalid resume token": "Cannot resume connection, invalid resume token",
49
   "Cannot resume connection, old and new clients must have TLS": "Cannot resume connection, old and new clients must have TLS",
46
   "Cannot resume connection, old and new clients must have TLS": "Cannot resume connection, old and new clients must have TLS",
50
-  "Cannot resume connection, old client not found": "Cannot resume connection, old client not found",
47
+  "Cannot resume connection, token is not valid": "Cannot resume connection, token is not valid",
51
   "Cannot send to channel": "Cannot send to channel",
48
   "Cannot send to channel": "Cannot send to channel",
52
-  "Change was a no-op": "Change was a no-op",
53
-  "Channel %s has %d persistent modes set": "Channel %s has %d persistent modes set",
49
+  "Channel %[1]s has %[2]d persistent modes set": "Channel %[1]s has %[2]d persistent modes set",
54
   "Channel %s is now unregistered": "Channel %s is now unregistered",
50
   "Channel %s is now unregistered": "Channel %s is now unregistered",
55
   "Channel %s successfully registered": "Channel %s successfully registered",
51
   "Channel %s successfully registered": "Channel %s successfully registered",
56
   "Channel does not exist": "Channel does not exist",
52
   "Channel does not exist": "Channel does not exist",
101
   "Invalid account name": "Invalid account name",
97
   "Invalid account name": "Invalid account name",
102
   "Invalid mode change": "Invalid mode change",
98
   "Invalid mode change": "Invalid mode change",
103
   "Invalid parameters": "Invalid parameters",
99
   "Invalid parameters": "Invalid parameters",
104
-  "Invalid parameters. For usage, do /msg %s HELP %s": "Invalid parameters. For usage, do /msg %s HELP %s",
100
+  "Invalid parameters. For usage, do /msg %[1]s HELP %[2]s": "Invalid parameters. For usage, do /msg %[1]s HELP %[2]s",
105
   "Invalid vhost": "Invalid vhost",
101
   "Invalid vhost": "Invalid vhost",
106
   "It was rejected for reason: %s": "It was rejected for reason: %s",
102
   "It was rejected for reason: %s": "It was rejected for reason: %s",
107
   "JOIN 0 is not allowed": "JOIN 0 is not allowed",
103
   "JOIN 0 is not allowed": "JOIN 0 is not allowed",
114
   "Nickname is already in use": "Nickname is already in use",
110
   "Nickname is already in use": "Nickname is already in use",
115
   "Nickname is reserved by a different account": "Nickname is reserved by a different account",
111
   "Nickname is reserved by a different account": "Nickname is reserved by a different account",
116
   "No DLINEs have been set!": "No DLINEs have been set!",
112
   "No DLINEs have been set!": "No DLINEs have been set!",
113
+  "No changes were made": "No changes were made",
117
   "No command given": "No command given",
114
   "No command given": "No command given",
118
   "No masks given": "No masks given",
115
   "No masks given": "No masks given",
119
   "No nickname given": "No nickname given",
116
   "No nickname given": "No nickname given",
121
   "No such channel": "No such channel",
118
   "No such channel": "No such channel",
122
   "No such nick": "No such nick",
119
   "No such nick": "No such nick",
123
   "No topic is set": "No topic is set",
120
   "No topic is set": "No topic is set",
124
-  "No username supplied": "No username supplied",
125
   "Not enough parameters": "Not enough parameters",
121
   "Not enough parameters": "Not enough parameters",
126
   "Only channel founders can change registered channels": "Only channel founders can change registered channels",
122
   "Only channel founders can change registered channels": "Only channel founders can change registered channels",
127
   "Oragono is released under the MIT license.": "Oragono is released under the MIT license.",
123
   "Oragono is released under the MIT license.": "Oragono is released under the MIT license.",
135
   "Proxied IP address is not valid: [%s]": "Proxied IP address is not valid: [%s]",
131
   "Proxied IP address is not valid: [%s]": "Proxied IP address is not valid: [%s]",
136
   "Received malformed line": "Received malformed line",
132
   "Received malformed line": "Received malformed line",
137
   "Registered at: %s": "Registered at: %s",
133
   "Registered at: %s": "Registered at: %s",
134
+  "Registered channel: %s": "Registered channel: %s",
138
   "Registration requires a valid e-mail address": "Registration requires a valid e-mail address",
135
   "Registration requires a valid e-mail address": "Registration requires a valid e-mail address",
139
   "Rehashing": "Rehashing",
136
   "Rehashing": "Rehashing",
140
   "Remote servers not yet supported": "Remote servers not yet supported",
137
   "Remote servers not yet supported": "Remote servers not yet supported",
157
   "Successfully enabled your vhost": "Successfully enabled your vhost",
154
   "Successfully enabled your vhost": "Successfully enabled your vhost",
158
   "Successfully grouped nick %s with your account": "Successfully grouped nick %s with your account",
155
   "Successfully grouped nick %s with your account": "Successfully grouped nick %s with your account",
159
   "Successfully op'd in channel %s": "Successfully op'd in channel %s",
156
   "Successfully op'd in channel %s": "Successfully op'd in channel %s",
157
+  "Successfully registered account %s": "Successfully registered account %s",
160
   "Successfully rejected vhost request for %s": "Successfully rejected vhost request for %s",
158
   "Successfully rejected vhost request for %s": "Successfully rejected vhost request for %s",
161
   "Successfully set mode %s": "Successfully set mode %s",
159
   "Successfully set mode %s": "Successfully set mode %s",
162
   "Successfully set vhost": "Successfully set vhost",
160
   "Successfully set vhost": "Successfully set vhost",
163
   "Successfully ungrouped nick %s with your account": "Successfully ungrouped nick %s with your account",
161
   "Successfully ungrouped nick %s with your account": "Successfully ungrouped nick %s with your account",
164
   "Successfully unregistered account %s": "Successfully unregistered account %s",
162
   "Successfully unregistered account %s": "Successfully unregistered account %s",
165
   "Thanks to Jeremy Latt for founding Ergonomadic, the project this is based on": "Thanks to Jeremy Latt for founding Ergonomadic, the project this is based on",
163
   "Thanks to Jeremy Latt for founding Ergonomadic, the project this is based on": "Thanks to Jeremy Latt for founding Ergonomadic, the project this is based on",
164
+  "That channel is not registered": "That channel is not registered",
166
   "That nickname is already reserved by someone else": "That nickname is already reserved by someone else",
165
   "That nickname is already reserved by someone else": "That nickname is already reserved by someone else",
167
   "That nickname is not registered": "That nickname is not registered",
166
   "That nickname is not registered": "That nickname is not registered",
167
+  "There are %[1]d pending requests for vhosts (%[2]d displayed)": "There are %[1]d pending requests for vhosts (%[2]d displayed)",
168
   "There are %[1]d users and %[2]d invisible on %[3]d server(s)": "There are %[1]d users and %[2]d invisible on %[3]d server(s)",
168
   "There are %[1]d users and %[2]d invisible on %[3]d server(s)": "There are %[1]d users and %[2]d invisible on %[3]d server(s)",
169
-  "There are %d pending requests for vhosts (%d displayed)": "There are %d pending requests for vhosts (%d displayed)",
170
   "There was no such nickname": "There was no such nickname",
169
   "There was no such nickname": "There was no such nickname",
171
   "They aren't on that channel": "They aren't on that channel",
170
   "They aren't on that channel": "They aren't on that channel",
172
   "This ban matches you. To DLINE yourself, you must use the command:  /DLINE MYSELF <arguments>": "This ban matches you. To DLINE yourself, you must use the command:  /DLINE MYSELF <arguments>",
171
   "This ban matches you. To DLINE yourself, you must use the command:  /DLINE MYSELF <arguments>": "This ban matches you. To DLINE yourself, you must use the command:  /DLINE MYSELF <arguments>",
176
   "This server was created %s": "This server was created %s",
175
   "This server was created %s": "This server was created %s",
177
   "This vhost is currently disabled, but can be enabled with /HS ON": "This vhost is currently disabled, but can be enabled with /HS ON",
176
   "This vhost is currently disabled, but can be enabled with /HS ON": "This vhost is currently disabled, but can be enabled with /HS ON",
178
   "Timestamp is not in 2006-01-02T15:04:05.999Z format, ignoring it": "Timestamp is not in 2006-01-02T15:04:05.999Z format, ignoring it",
177
   "Timestamp is not in 2006-01-02T15:04:05.999Z format, ignoring it": "Timestamp is not in 2006-01-02T15:04:05.999Z format, ignoring it",
179
-  "To confirm account unregistration, type: /NS UNREGISTER %s %s": "To confirm account unregistration, type: /NS UNREGISTER %s %s",
180
-  "To confirm channel unregistration, type: /CS UNREGISTER %s %s": "To confirm channel unregistration, type: /CS UNREGISTER %s %s",
178
+  "To confirm account unregistration, type: /NS UNREGISTER %[1]s %[2]s": "To confirm account unregistration, type: /NS UNREGISTER %[1]s %[2]s",
179
+  "To confirm channel unregistration, type: /CS UNREGISTER %[1]s %[2]s": "To confirm channel unregistration, type: /CS UNREGISTER %[1]s %[2]s",
181
   "To verify your account, issue one of these commands:": "To verify your account, issue one of these commands:",
180
   "To verify your account, issue one of these commands:": "To verify your account, issue one of these commands:",
182
   "Translators:": "Translators:",
181
   "Translators:": "Translators:",
183
   "Unknown command": "Unknown command",
182
   "Unknown command": "Unknown command",
184
-  "Unknown command. To see available commands, run": "Unknown command. To see available commands, run",
183
+  "Unknown command. To see available commands, run: /%s HELP": "Unknown command. To see available commands, run: /%s HELP",
185
   "Unknown subcommand": "Unknown subcommand",
184
   "Unknown subcommand": "Unknown subcommand",
186
   "User doesn't have roleplaying mode enabled": "User doesn't have roleplaying mode enabled",
185
   "User doesn't have roleplaying mode enabled": "User doesn't have roleplaying mode enabled",
187
   "Verification code: %s": "Verification code: %s",
186
   "Verification code: %s": "Verification code: %s",
189
   "WEBIRC command is not usable from your address or incorrect password given": "WEBIRC command is not usable from your address or incorrect password given",
188
   "WEBIRC command is not usable from your address or incorrect password given": "WEBIRC command is not usable from your address or incorrect password given",
190
   "Welcome to the Internet Relay Network %s": "Welcome to the Internet Relay Network %s",
189
   "Welcome to the Internet Relay Network %s": "Welcome to the Internet Relay Network %s",
191
   "You are banned from this server (%s)": "You are banned from this server (%s)",
190
   "You are banned from this server (%s)": "You are banned from this server (%s)",
191
+  "You are no longer authorized to be on this server": "You are no longer authorized to be on this server",
192
   "You are no longer marked as being away": "You are no longer marked as being away",
192
   "You are no longer marked as being away": "You are no longer marked as being away",
193
   "You are not using a TLS certificate": "You are not using a TLS certificate",
193
   "You are not using a TLS certificate": "You are not using a TLS certificate",
194
   "You are now an IRC operator": "You are now an IRC operator",
194
   "You are now an IRC operator": "You are now an IRC operator",
197
   "You can't ungroup your primary nickname (try unregistering your account instead)": "You can't ungroup your primary nickname (try unregistering your account instead)",
197
   "You can't ungroup your primary nickname (try unregistering your account instead)": "You can't ungroup your primary nickname (try unregistering your account instead)",
198
   "You don't have enough channel privileges": "You don't have enough channel privileges",
198
   "You don't have enough channel privileges": "You don't have enough channel privileges",
199
   "You don't own that nick": "You don't own that nick",
199
   "You don't own that nick": "You don't own that nick",
200
+  "You have already registered the maximum number of channels; try dropping some with /CS UNREGISTER": "You have already registered the maximum number of channels; try dropping some with /CS UNREGISTER",
200
   "You have been banned from this server (%s)": "You have been banned from this server (%s)",
201
   "You have been banned from this server (%s)": "You have been banned from this server (%s)",
201
   "You have been marked as being away": "You have been marked as being away",
202
   "You have been marked as being away": "You have been marked as being away",
203
+  "You have joined too many channels": "You have joined too many channels",
202
   "You have too many nicks reserved already (you can remove some with /NS DROP)": "You have too many nicks reserved already (you can remove some with /NS DROP)",
204
   "You have too many nicks reserved already (you can remove some with /NS DROP)": "You have too many nicks reserved already (you can remove some with /NS DROP)",
203
   "You may not reregister": "You may not reregister",
205
   "You may not reregister": "You may not reregister",
204
   "You must be an oper on the channel to register it": "You must be an oper on the channel to register it",
206
   "You must be an oper on the channel to register it": "You must be an oper on the channel to register it",

+ 1
- 0
languages/example/nickserv.lang.json View File

9
   "Syntax: $bPASSWD <current> <new> <new_again>$b\nOr:     $bPASSWD <username> <new>$b\n\nPASSWD lets you change your account password. You must supply your current\npassword and confirm the new one by typing it twice. If you're an IRC operator\nwith the correct permissions, you can use PASSWD to reset someone else's\npassword by supplying their username and then the desired password.": "Syntax: $bPASSWD <current> <new> <new_again>$b\nOr:     $bPASSWD <username> <new>$b\n\nPASSWD lets you change your account password. You must supply your current\npassword and confirm the new one by typing it twice. If you're an IRC operator\nwith the correct permissions, you can use PASSWD to reset someone else's\npassword by supplying their username and then the desired password.",
9
   "Syntax: $bPASSWD <current> <new> <new_again>$b\nOr:     $bPASSWD <username> <new>$b\n\nPASSWD lets you change your account password. You must supply your current\npassword and confirm the new one by typing it twice. If you're an IRC operator\nwith the correct permissions, you can use PASSWD to reset someone else's\npassword by supplying their username and then the desired password.": "Syntax: $bPASSWD <current> <new> <new_again>$b\nOr:     $bPASSWD <username> <new>$b\n\nPASSWD lets you change your account password. You must supply your current\npassword and confirm the new one by typing it twice. If you're an IRC operator\nwith the correct permissions, you can use PASSWD to reset someone else's\npassword by supplying their username and then the desired password.",
10
   "Syntax: $bREGISTER <username> <email> [password]$b\n\nREGISTER lets you register a user account. If the server allows anonymous\nregistration, you can send an asterisk (*) as the email address.\n\nIf the password is left out, your account will be registered to your TLS client\ncertificate (and you will need to use that certificate to login in future).": "Syntax: $bREGISTER <username> <email> [password]$b\n\nREGISTER lets you register a user account. If the server allows anonymous\nregistration, you can send an asterisk (*) as the email address.\n\nIf the password is left out, your account will be registered to your TLS client\ncertificate (and you will need to use that certificate to login in future).",
10
   "Syntax: $bREGISTER <username> <email> [password]$b\n\nREGISTER lets you register a user account. If the server allows anonymous\nregistration, you can send an asterisk (*) as the email address.\n\nIf the password is left out, your account will be registered to your TLS client\ncertificate (and you will need to use that certificate to login in future).": "Syntax: $bREGISTER <username> <email> [password]$b\n\nREGISTER lets you register a user account. If the server allows anonymous\nregistration, you can send an asterisk (*) as the email address.\n\nIf the password is left out, your account will be registered to your TLS client\ncertificate (and you will need to use that certificate to login in future).",
11
   "Syntax: $bSADROP <nickname>$b\n\nSADROP forcibly de-links the given nickname from the attached user account.": "Syntax: $bSADROP <nickname>$b\n\nSADROP forcibly de-links the given nickname from the attached user account.",
11
   "Syntax: $bSADROP <nickname>$b\n\nSADROP forcibly de-links the given nickname from the attached user account.": "Syntax: $bSADROP <nickname>$b\n\nSADROP forcibly de-links the given nickname from the attached user account.",
12
+  "Syntax: $bSAREGISTER <username> <password>$b\n\nSAREGISTER registers an account on someone else's behalf.\nThis is for use in configurations that require SASL for all connections;\nan administrator can set use this command to set up user accounts.": "Syntax: $bSAREGISTER <username> <password>$b\n\nSAREGISTER registers an account on someone else's behalf.\nThis is for use in configurations that require SASL for all connections;\nan administrator can set use this command to set up user accounts.",
12
   "Syntax: $bUNREGISTER <username> [code]$b\n\nUNREGISTER lets you delete your user account (or someone else's, if you're an\nIRC operator with the correct permissions). To prevent accidental\nunregistrations, a verification code is required; invoking the command without\na code will display the necessary code.": "Syntax: $bUNREGISTER <username> [code]$b\n\nUNREGISTER lets you delete your user account (or someone else's, if you're an\nIRC operator with the correct permissions). To prevent accidental\nunregistrations, a verification code is required; invoking the command without\na code will display the necessary code.",
13
   "Syntax: $bUNREGISTER <username> [code]$b\n\nUNREGISTER lets you delete your user account (or someone else's, if you're an\nIRC operator with the correct permissions). To prevent accidental\nunregistrations, a verification code is required; invoking the command without\na code will display the necessary code.": "Syntax: $bUNREGISTER <username> [code]$b\n\nUNREGISTER lets you delete your user account (or someone else's, if you're an\nIRC operator with the correct permissions). To prevent accidental\nunregistrations, a verification code is required; invoking the command without\na code will display the necessary code.",
13
   "Syntax: $bVERIFY <username> <code>$b\n\nVERIFY lets you complete an account registration, if the server requires email\nor other verification.": "Syntax: $bVERIFY <username> <code>$b\n\nVERIFY lets you complete an account registration, if the server requires email\nor other verification."
14
   "Syntax: $bVERIFY <username> <code>$b\n\nVERIFY lets you complete an account registration, if the server requires email\nor other verification.": "Syntax: $bVERIFY <username> <code>$b\n\nVERIFY lets you complete an account registration, if the server requires email\nor other verification."
14
 }
15
 }

Loading…
Cancel
Save