Sfoglia il codice sorgente

Fix dodgy TL strings to make them easier to translate

tags/v1.1.0-rc1
Daniel Oaks 5 anni fa
parent
commit
6d109e92a5

+ 4
- 4
irc/channel.go Vedi File

@@ -619,21 +619,21 @@ func (channel *Channel) replayHistoryItems(rb *ResponseBuffer, items []history.I
619 619
 			if item.AccountName == "*" {
620 620
 				message = fmt.Sprintf(client.t("%s joined the channel"), nick)
621 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 624
 			rb.Add(tags, "HistServ", "PRIVMSG", chname, message)
625 625
 		case history.Part:
626 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 628
 			rb.Add(tags, "HistServ", "PRIVMSG", chname, message)
629 629
 		case history.Quit:
630 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 632
 			rb.Add(tags, "HistServ", "PRIVMSG", chname, message)
633 633
 		case history.Kick:
634 634
 			nick := stripMaskFromNick(item.Nick)
635 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 637
 			rb.Add(tags, "HistServ", "PRIVMSG", chname, message)
638 638
 		}
639 639
 	}

+ 4
- 4
irc/chanserv.go Vedi File

@@ -149,15 +149,15 @@ func csAmodeHandler(server *Server, client *Client, command string, params []str
149 149
 		sort.Slice(affectedModes, func(i, j int) bool {
150 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 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 156
 	case modes.Add, modes.Remove:
157 157
 		if len(affectedModes) > 0 {
158 158
 			csNotice(rb, fmt.Sprintf(client.t("Successfully set mode %s"), change.String()))
159 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,7 +293,7 @@ func csUnregisterHandler(server *Server, client *Client, command string, params
293 293
 	expectedCode := unregisterConfirmationCode(info.Name, info.RegisteredAt)
294 294
 	if expectedCode != verificationCode {
295 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 297
 		return
298 298
 	}
299 299
 

+ 2
- 2
irc/handlers.go Vedi File

@@ -166,8 +166,8 @@ func accRegisterHandler(server *Server, client *Client, msg ircmsg.IrcMessage, r
166 166
 		}
167 167
 		sendSuccessfulRegResponse(client, rb, false)
168 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 171
 		rb.Add(nil, server.name, RPL_REG_VERIFICATION_REQUIRED, nick, casefoldedAccount, message)
172 172
 	}
173 173
 

+ 3
- 3
irc/help.go Vedi File

@@ -646,13 +646,13 @@ func GenerateHelpIndex(lm *languages.Manager, forOpers bool) map[string]string {
646 646
 	defaultHelpIndex := `= Help Topics =
647 647
 
648 648
 Commands:
649
-%s
649
+%[1]s
650 650
 
651 651
 RPL_ISUPPORT Tokens:
652
-%s
652
+%[2]s
653 653
 
654 654
 Information:
655
-%s`
655
+%[3]s`
656 656
 
657 657
 	newHelpIndex := make(map[string]string)
658 658
 

+ 4
- 4
irc/hostserv.go Vedi File

@@ -222,7 +222,7 @@ func hsStatusHandler(server *Server, client *Client, command string, params []st
222 222
 	}
223 223
 
224 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 226
 		if !account.VHost.Enabled {
227 227
 			hsNotice(rb, fmt.Sprintf(client.t("This vhost is currently disabled, but can be enabled with /HS ON")))
228 228
 		}
@@ -274,9 +274,9 @@ func hsSetHandler(server *Server, client *Client, command string, params []strin
274 274
 
275 275
 func hsWaitingHandler(server *Server, client *Client, command string, params []string, rb *ResponseBuffer) {
276 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 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,7 +288,7 @@ func hsApproveHandler(server *Server, client *Client, command string, params []s
288 288
 		hsNotice(rb, client.t("An error occurred"))
289 289
 	} else {
290 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 292
 		hsNotifyChannel(server, chanMsg)
293 293
 		for _, client := range server.accounts.AccountToClients(user) {
294 294
 			client.Notice(client.t("Your vhost request was approved by an administrator"))

+ 3
- 3
irc/nickserv.go Vedi File

@@ -392,8 +392,8 @@ func nsRegisterHandler(server *Server, client *Client, command string, params []
392 392
 				sendSuccessfulRegResponse(client, rb, true)
393 393
 			}
394 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 397
 			nsNotice(rb, message)
398 398
 		}
399 399
 	}
@@ -459,7 +459,7 @@ func nsUnregisterHandler(server *Server, client *Client, command string, params
459 459
 	expectedCode := unregisterConfirmationCode(account.Name, account.RegisteredAt)
460 460
 	if expectedCode != verificationCode {
461 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 463
 		return
464 464
 	}
465 465
 

+ 2
- 2
irc/services.go Vedi File

@@ -143,12 +143,12 @@ func serviceRunCommand(service *ircService, server *Server, client *Client, cmd
143 143
 	}
144 144
 
145 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 147
 		return
148 148
 	}
149 149
 
150 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 152
 		return
153 153
 	}
154 154
 

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

@@ -1,5 +1,5 @@
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 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 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 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,11 +10,13 @@
10 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 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 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 14
   "CS <subcommand> [params]\n\nChanServ controls channel registrations.": "CS <subcommand> [params]\n\nChanServ controls channel registrations.",
14 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 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 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 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 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 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 22
   "INFO\n\nSends information about the server, developers, etc.": "INFO\n\nSends information about the server, developers, etc.",
@@ -53,6 +55,7 @@
53 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 56
   "SANICK <currentnick> <newnick>\n\nGives the given user a new nickname.": "SANICK <currentnick> <newnick>\n\nGives the given user a new nickname.",
55 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 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 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 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 Vedi File

@@ -1,12 +1,12 @@
1 1
 {
2 2
   "$bWarning: unregistering this account will remove its stored privileges.$b": "$bWarning: unregistering this account will remove its stored privileges.$b",
3 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 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 10
   "*** $bEnd of %s HELP$b ***": "*** $bEnd of %s HELP$b ***",
11 11
   "*** Could not find your username": "*** Could not find your username",
12 12
   "*** Found your username": "*** Found your username",
@@ -16,15 +16,14 @@
16 16
   "... and other commands which have been disabled": "... and other commands which have been disabled",
17 17
   "A request is pending for vhost: %s": "A request is pending for vhost: %s",
18 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 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 22
   "Account already exists": "Account already exists",
23 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 25
   "Account does not exist": "Account does not exist",
26 26
   "Account name is not valid": "Account name is not valid",
27
-  "Account registration has been disabled": "Account registration has been disabled",
28 27
   "Account registration is disabled": "Account registration is disabled",
29 28
   "Account: %s": "Account: %s",
30 29
   "Actual user@host, Actual IP": "Actual user@host, Actual IP",
@@ -33,7 +32,6 @@
33 32
   "Added temporary (%[1]s) D-Line for %[2]s": "Added temporary (%[1]s) D-Line for %[2]s",
34 33
   "Added temporary (%[1]s) K-Line for %[2]s": "Added temporary (%[1]s) K-Line for %[2]s",
35 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 35
   "An error occurred": "An error occurred",
38 36
   "Authentication successful": "Authentication successful",
39 37
   "Bad or unauthorized PROXY command": "Bad or unauthorized PROXY command",
@@ -45,12 +43,10 @@
45 43
   "Cannot join channel (+%s)": "Cannot join channel (+%s)",
46 44
   "Cannot resume connection": "Cannot resume connection",
47 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 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 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 50
   "Channel %s is now unregistered": "Channel %s is now unregistered",
55 51
   "Channel %s successfully registered": "Channel %s successfully registered",
56 52
   "Channel does not exist": "Channel does not exist",
@@ -101,7 +97,7 @@
101 97
   "Invalid account name": "Invalid account name",
102 98
   "Invalid mode change": "Invalid mode change",
103 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 101
   "Invalid vhost": "Invalid vhost",
106 102
   "It was rejected for reason: %s": "It was rejected for reason: %s",
107 103
   "JOIN 0 is not allowed": "JOIN 0 is not allowed",
@@ -114,6 +110,7 @@
114 110
   "Nickname is already in use": "Nickname is already in use",
115 111
   "Nickname is reserved by a different account": "Nickname is reserved by a different account",
116 112
   "No DLINEs have been set!": "No DLINEs have been set!",
113
+  "No changes were made": "No changes were made",
117 114
   "No command given": "No command given",
118 115
   "No masks given": "No masks given",
119 116
   "No nickname given": "No nickname given",
@@ -121,7 +118,6 @@
121 118
   "No such channel": "No such channel",
122 119
   "No such nick": "No such nick",
123 120
   "No topic is set": "No topic is set",
124
-  "No username supplied": "No username supplied",
125 121
   "Not enough parameters": "Not enough parameters",
126 122
   "Only channel founders can change registered channels": "Only channel founders can change registered channels",
127 123
   "Oragono is released under the MIT license.": "Oragono is released under the MIT license.",
@@ -135,6 +131,7 @@
135 131
   "Proxied IP address is not valid: [%s]": "Proxied IP address is not valid: [%s]",
136 132
   "Received malformed line": "Received malformed line",
137 133
   "Registered at: %s": "Registered at: %s",
134
+  "Registered channel: %s": "Registered channel: %s",
138 135
   "Registration requires a valid e-mail address": "Registration requires a valid e-mail address",
139 136
   "Rehashing": "Rehashing",
140 137
   "Remote servers not yet supported": "Remote servers not yet supported",
@@ -157,16 +154,18 @@
157 154
   "Successfully enabled your vhost": "Successfully enabled your vhost",
158 155
   "Successfully grouped nick %s with your account": "Successfully grouped nick %s with your account",
159 156
   "Successfully op'd in channel %s": "Successfully op'd in channel %s",
157
+  "Successfully registered account %s": "Successfully registered account %s",
160 158
   "Successfully rejected vhost request for %s": "Successfully rejected vhost request for %s",
161 159
   "Successfully set mode %s": "Successfully set mode %s",
162 160
   "Successfully set vhost": "Successfully set vhost",
163 161
   "Successfully ungrouped nick %s with your account": "Successfully ungrouped nick %s with your account",
164 162
   "Successfully unregistered account %s": "Successfully unregistered account %s",
165 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 165
   "That nickname is already reserved by someone else": "That nickname is already reserved by someone else",
167 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 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 169
   "There was no such nickname": "There was no such nickname",
171 170
   "They aren't on that channel": "They aren't on that channel",
172 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,12 +175,12 @@
176 175
   "This server was created %s": "This server was created %s",
177 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 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 180
   "To verify your account, issue one of these commands:": "To verify your account, issue one of these commands:",
182 181
   "Translators:": "Translators:",
183 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 184
   "Unknown subcommand": "Unknown subcommand",
186 185
   "User doesn't have roleplaying mode enabled": "User doesn't have roleplaying mode enabled",
187 186
   "Verification code: %s": "Verification code: %s",
@@ -189,6 +188,7 @@
189 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 189
   "Welcome to the Internet Relay Network %s": "Welcome to the Internet Relay Network %s",
191 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 192
   "You are no longer marked as being away": "You are no longer marked as being away",
193 193
   "You are not using a TLS certificate": "You are not using a TLS certificate",
194 194
   "You are now an IRC operator": "You are now an IRC operator",
@@ -197,8 +197,10 @@
197 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 198
   "You don't have enough channel privileges": "You don't have enough channel privileges",
199 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 201
   "You have been banned from this server (%s)": "You have been banned from this server (%s)",
201 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 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 205
   "You may not reregister": "You may not reregister",
204 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 Vedi File

@@ -9,6 +9,7 @@
9 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 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 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 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 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…
Annulla
Salva