3
0
mirror of https://github.com/ergochat/ergo.git synced 2024-12-22 10:42:52 +01:00

Fix dodgy TL strings to make them easier to translate

This commit is contained in:
Daniel Oaks 2019-02-22 12:37:11 +10:00
parent 92a3ed9eca
commit 6d109e92a5
10 changed files with 49 additions and 43 deletions

View File

@ -619,21 +619,21 @@ func (channel *Channel) replayHistoryItems(rb *ResponseBuffer, items []history.I
if item.AccountName == "*" {
message = fmt.Sprintf(client.t("%s joined the channel"), nick)
} else {
message = fmt.Sprintf(client.t("%s [account: %s] joined the channel"), nick, item.AccountName)
message = fmt.Sprintf(client.t("%[1]s [account: %[2]s] joined the channel"), nick, item.AccountName)
}
rb.Add(tags, "HistServ", "PRIVMSG", chname, message)
case history.Part:
nick := stripMaskFromNick(item.Nick)
message := fmt.Sprintf(client.t("%s left the channel (%s)"), nick, item.Message.Original)
message := fmt.Sprintf(client.t("%[1]s left the channel (%[2]s)"), nick, item.Message.Original)
rb.Add(tags, "HistServ", "PRIVMSG", chname, message)
case history.Quit:
nick := stripMaskFromNick(item.Nick)
message := fmt.Sprintf(client.t("%s quit (%s)"), nick, item.Message.Original)
message := fmt.Sprintf(client.t("%[1]s quit (%[2]s)"), nick, item.Message.Original)
rb.Add(tags, "HistServ", "PRIVMSG", chname, message)
case history.Kick:
nick := stripMaskFromNick(item.Nick)
// XXX Msgid is the kick target
message := fmt.Sprintf(client.t("%s kicked %s (%s)"), nick, item.Msgid, item.Message.Original)
message := fmt.Sprintf(client.t("%[1]s kicked %[2]s (%[3]s)"), nick, item.Msgid, item.Message.Original)
rb.Add(tags, "HistServ", "PRIVMSG", chname, message)
}
}

View File

@ -149,15 +149,15 @@ func csAmodeHandler(server *Server, client *Client, command string, params []str
sort.Slice(affectedModes, func(i, j int) bool {
return umodeGreaterThan(affectedModes[i].Mode, affectedModes[j].Mode)
})
csNotice(rb, fmt.Sprintf(client.t("Channel %s has %d persistent modes set"), channelName, len(affectedModes)))
csNotice(rb, fmt.Sprintf(client.t("Channel %[1]s has %[2]d persistent modes set"), channelName, len(affectedModes)))
for _, modeChange := range affectedModes {
csNotice(rb, fmt.Sprintf(client.t("Account %s receives mode +%s"), modeChange.Arg, string(modeChange.Mode)))
csNotice(rb, fmt.Sprintf(client.t("Account %[1]s receives mode +%[2]s"), modeChange.Arg, string(modeChange.Mode)))
}
case modes.Add, modes.Remove:
if len(affectedModes) > 0 {
csNotice(rb, fmt.Sprintf(client.t("Successfully set mode %s"), change.String()))
} else {
csNotice(rb, client.t("Change was a no-op"))
csNotice(rb, client.t("No changes were made"))
}
}
}
@ -293,7 +293,7 @@ func csUnregisterHandler(server *Server, client *Client, command string, params
expectedCode := unregisterConfirmationCode(info.Name, info.RegisteredAt)
if expectedCode != verificationCode {
csNotice(rb, ircfmt.Unescape(client.t("$bWarning: unregistering this channel will remove all stored channel attributes.$b")))
csNotice(rb, fmt.Sprintf(client.t("To confirm channel unregistration, type: /CS UNREGISTER %s %s"), channelKey, expectedCode))
csNotice(rb, fmt.Sprintf(client.t("To confirm channel unregistration, type: /CS UNREGISTER %[1]s %[2]s"), channelKey, expectedCode))
return
}

View File

@ -166,8 +166,8 @@ func accRegisterHandler(server *Server, client *Client, msg ircmsg.IrcMessage, r
}
sendSuccessfulRegResponse(client, rb, false)
} else {
messageTemplate := client.t("Account created, pending verification; verification code has been sent to %s:%s")
message := fmt.Sprintf(messageTemplate, callbackNamespace, callbackValue)
messageTemplate := client.t("Account created, pending verification; verification code has been sent to %s")
message := fmt.Sprintf(messageTemplate, fmt.Sprintf("%s:%s", callbackNamespace, callbackValue))
rb.Add(nil, server.name, RPL_REG_VERIFICATION_REQUIRED, nick, casefoldedAccount, message)
}

View File

@ -646,13 +646,13 @@ func GenerateHelpIndex(lm *languages.Manager, forOpers bool) map[string]string {
defaultHelpIndex := `= Help Topics =
Commands:
%s
%[1]s
RPL_ISUPPORT Tokens:
%s
%[2]s
Information:
%s`
%[3]s`
newHelpIndex := make(map[string]string)

View File

@ -222,7 +222,7 @@ func hsStatusHandler(server *Server, client *Client, command string, params []st
}
if account.VHost.ApprovedVHost != "" {
hsNotice(rb, fmt.Sprintf(client.t("Account %s has vhost: %s"), accountName, account.VHost.ApprovedVHost))
hsNotice(rb, fmt.Sprintf(client.t("Account %[1]s has vhost: %[2]s"), accountName, account.VHost.ApprovedVHost))
if !account.VHost.Enabled {
hsNotice(rb, fmt.Sprintf(client.t("This vhost is currently disabled, but can be enabled with /HS ON")))
}
@ -274,9 +274,9 @@ func hsSetHandler(server *Server, client *Client, command string, params []strin
func hsWaitingHandler(server *Server, client *Client, command string, params []string, rb *ResponseBuffer) {
requests, total := server.accounts.VHostListRequests(10)
hsNotice(rb, fmt.Sprintf(client.t("There are %d pending requests for vhosts (%d displayed)"), total, len(requests)))
hsNotice(rb, fmt.Sprintf(client.t("There are %[1]d pending requests for vhosts (%[2]d displayed)"), total, len(requests)))
for i, request := range requests {
hsNotice(rb, fmt.Sprintf(client.t("%d. User %s requests vhost: %s"), i+1, request.Account, request.RequestedVHost))
hsNotice(rb, fmt.Sprintf(client.t("%[1]d. User %[2]s requests vhost: %[3]s"), i+1, request.Account, request.RequestedVHost))
}
}
@ -288,7 +288,7 @@ func hsApproveHandler(server *Server, client *Client, command string, params []s
hsNotice(rb, client.t("An error occurred"))
} else {
hsNotice(rb, fmt.Sprintf(client.t("Successfully approved vhost request for %s"), user))
chanMsg := fmt.Sprintf("Oper %s approved vhost %s for account %s", client.Nick(), vhostInfo.ApprovedVHost, user)
chanMsg := fmt.Sprintf("Oper %[1]s approved vhost %[2]s for account %[3]s", client.Nick(), vhostInfo.ApprovedVHost, user)
hsNotifyChannel(server, chanMsg)
for _, client := range server.accounts.AccountToClients(user) {
client.Notice(client.t("Your vhost request was approved by an administrator"))

View File

@ -392,8 +392,8 @@ func nsRegisterHandler(server *Server, client *Client, command string, params []
sendSuccessfulRegResponse(client, rb, true)
}
} else {
messageTemplate := client.t("Account created, pending verification; verification code has been sent to %s:%s")
message := fmt.Sprintf(messageTemplate, callbackNamespace, callbackValue)
messageTemplate := client.t("Account created, pending verification; verification code has been sent to %s")
message := fmt.Sprintf(messageTemplate, fmt.Sprintf("%s:%s", callbackNamespace, callbackValue))
nsNotice(rb, message)
}
}
@ -459,7 +459,7 @@ func nsUnregisterHandler(server *Server, client *Client, command string, params
expectedCode := unregisterConfirmationCode(account.Name, account.RegisteredAt)
if expectedCode != verificationCode {
nsNotice(rb, ircfmt.Unescape(client.t("$bWarning: unregistering this account will remove its stored privileges.$b")))
nsNotice(rb, fmt.Sprintf(client.t("To confirm account unregistration, type: /NS UNREGISTER %s %s"), cfname, expectedCode))
nsNotice(rb, fmt.Sprintf(client.t("To confirm account unregistration, type: /NS UNREGISTER %[1]s %[2]s"), cfname, expectedCode))
return
}

View File

@ -143,12 +143,12 @@ func serviceRunCommand(service *ircService, server *Server, client *Client, cmd
}
if cmd == nil {
sendNotice(fmt.Sprintf("%s /%s HELP", client.t("Unknown command. To see available commands, run"), service.ShortName))
sendNotice(fmt.Sprintf(client.t("Unknown command. To see available commands, run: /%s HELP"), service.ShortName))
return
}
if len(params) < cmd.minParams {
sendNotice(fmt.Sprintf(client.t("Invalid parameters. For usage, do /msg %s HELP %s"), service.Name, strings.ToUpper(commandName)))
sendNotice(fmt.Sprintf(client.t("Invalid parameters. For usage, do /msg %[1]s HELP %[2]s"), service.Name, strings.ToUpper(commandName)))
return
}

View File

@ -1,5 +1,5 @@
{
"= 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",
"= 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",
"== 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.",
"== 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",
"== 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 @@
"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.",
"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",
"CHANSERV <subcommand> [params]\n\nChanServ controls channel registrations.": "CHANSERV <subcommand> [params]\n\nChanServ controls channel registrations.",
"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",
"CS <subcommand> [params]\n\nChanServ controls channel registrations.": "CS <subcommand> [params]\n\nChanServ controls channel registrations.",
"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.",
"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.",
"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.",
"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.",
"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.",
"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).",
"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).",
"INFO\n\nSends information about the server, developers, etc.": "INFO\n\nSends information about the server, developers, etc.",
@ -53,6 +55,7 @@
"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\".",
"SANICK <currentnick> <newnick>\n\nGives the given user a new nickname.": "SANICK <currentnick> <newnick>\n\nGives the given user a new nickname.",
"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.",
"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.",
"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.",
"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.",
"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",

View File

@ -1,12 +1,12 @@
{
"$bWarning: unregistering this account will remove its stored privileges.$b": "$bWarning: unregistering this account will remove its stored privileges.$b",
"$bWarning: unregistering this channel will remove all stored channel attributes.$b": "$bWarning: unregistering this channel will remove all stored channel attributes.$b",
"%d. User %s requests vhost: %s": "%d. User %s requests vhost: %s",
"%s [account: %s] joined the channel": "%s [account: %s] joined the channel",
"%[1]d. User %[2]s requests vhost: %[3]s": "%[1]d. User %[2]s requests vhost: %[3]s",
"%[1]s [account: %[2]s] joined the channel": "%[1]s [account: %[2]s] joined the channel",
"%[1]s kicked %[2]s (%[3]s)": "%[1]s kicked %[2]s (%[3]s)",
"%[1]s left the channel (%[2]s)": "%[1]s left the channel (%[2]s)",
"%[1]s quit (%[2]s)": "%[1]s quit (%[2]s)",
"%s joined the channel": "%s joined the channel",
"%s kicked %s (%s)": "%s kicked %s (%s)",
"%s left the channel (%s)": "%s left the channel (%s)",
"%s quit (%s)": "%s quit (%s)",
"*** $bEnd of %s HELP$b ***": "*** $bEnd of %s HELP$b ***",
"*** Could not find your username": "*** Could not find your username",
"*** Found your username": "*** Found your username",
@ -16,15 +16,14 @@
"... and other commands which have been disabled": "... and other commands which have been disabled",
"A request is pending for vhost: %s": "A request is pending for vhost: %s",
"A request was previously made for vhost: %s": "A request was previously made for vhost: %s",
"Account %[1]s has vhost: %[2]s": "Account %[1]s has vhost: %[2]s",
"Account %[1]s receives mode +%[2]s": "Account %[1]s receives mode +%[2]s",
"Account %s has no vhost": "Account %s has no vhost",
"Account %s has vhost: %s": "Account %s has vhost: %s",
"Account %s receives mode +%s": "Account %s receives mode +%s",
"Account already exists": "Account already exists",
"Account created": "Account created",
"Account created, pending verification; verification code has been sent to %s:%s": "Account created, pending verification; verification code has been sent to %s:%s",
"Account created, pending verification; verification code has been sent to %s": "Account created, pending verification; verification code has been sent to %s",
"Account does not exist": "Account does not exist",
"Account name is not valid": "Account name is not valid",
"Account registration has been disabled": "Account registration has been disabled",
"Account registration is disabled": "Account registration is disabled",
"Account: %s": "Account: %s",
"Actual user@host, Actual IP": "Actual user@host, Actual IP",
@ -33,7 +32,6 @@
"Added temporary (%[1]s) D-Line for %[2]s": "Added temporary (%[1]s) D-Line for %[2]s",
"Added temporary (%[1]s) K-Line for %[2]s": "Added temporary (%[1]s) K-Line for %[2]s",
"Additional grouped nick: %s": "Additional grouped nick: %s",
"An account already exists for your certificate fingerprint": "An account already exists for your certificate fingerprint",
"An error occurred": "An error occurred",
"Authentication successful": "Authentication successful",
"Bad or unauthorized PROXY command": "Bad or unauthorized PROXY command",
@ -45,12 +43,10 @@
"Cannot join channel (+%s)": "Cannot join channel (+%s)",
"Cannot resume connection": "Cannot resume connection",
"Cannot resume connection, connection registration has already been completed": "Cannot resume connection, connection registration has already been completed",
"Cannot resume connection, invalid resume token": "Cannot resume connection, invalid resume token",
"Cannot resume connection, old and new clients must have TLS": "Cannot resume connection, old and new clients must have TLS",
"Cannot resume connection, old client not found": "Cannot resume connection, old client not found",
"Cannot resume connection, token is not valid": "Cannot resume connection, token is not valid",
"Cannot send to channel": "Cannot send to channel",
"Change was a no-op": "Change was a no-op",
"Channel %s has %d persistent modes set": "Channel %s has %d persistent modes set",
"Channel %[1]s has %[2]d persistent modes set": "Channel %[1]s has %[2]d persistent modes set",
"Channel %s is now unregistered": "Channel %s is now unregistered",
"Channel %s successfully registered": "Channel %s successfully registered",
"Channel does not exist": "Channel does not exist",
@ -101,7 +97,7 @@
"Invalid account name": "Invalid account name",
"Invalid mode change": "Invalid mode change",
"Invalid parameters": "Invalid parameters",
"Invalid parameters. For usage, do /msg %s HELP %s": "Invalid parameters. For usage, do /msg %s HELP %s",
"Invalid parameters. For usage, do /msg %[1]s HELP %[2]s": "Invalid parameters. For usage, do /msg %[1]s HELP %[2]s",
"Invalid vhost": "Invalid vhost",
"It was rejected for reason: %s": "It was rejected for reason: %s",
"JOIN 0 is not allowed": "JOIN 0 is not allowed",
@ -114,6 +110,7 @@
"Nickname is already in use": "Nickname is already in use",
"Nickname is reserved by a different account": "Nickname is reserved by a different account",
"No DLINEs have been set!": "No DLINEs have been set!",
"No changes were made": "No changes were made",
"No command given": "No command given",
"No masks given": "No masks given",
"No nickname given": "No nickname given",
@ -121,7 +118,6 @@
"No such channel": "No such channel",
"No such nick": "No such nick",
"No topic is set": "No topic is set",
"No username supplied": "No username supplied",
"Not enough parameters": "Not enough parameters",
"Only channel founders can change registered channels": "Only channel founders can change registered channels",
"Oragono is released under the MIT license.": "Oragono is released under the MIT license.",
@ -135,6 +131,7 @@
"Proxied IP address is not valid: [%s]": "Proxied IP address is not valid: [%s]",
"Received malformed line": "Received malformed line",
"Registered at: %s": "Registered at: %s",
"Registered channel: %s": "Registered channel: %s",
"Registration requires a valid e-mail address": "Registration requires a valid e-mail address",
"Rehashing": "Rehashing",
"Remote servers not yet supported": "Remote servers not yet supported",
@ -157,16 +154,18 @@
"Successfully enabled your vhost": "Successfully enabled your vhost",
"Successfully grouped nick %s with your account": "Successfully grouped nick %s with your account",
"Successfully op'd in channel %s": "Successfully op'd in channel %s",
"Successfully registered account %s": "Successfully registered account %s",
"Successfully rejected vhost request for %s": "Successfully rejected vhost request for %s",
"Successfully set mode %s": "Successfully set mode %s",
"Successfully set vhost": "Successfully set vhost",
"Successfully ungrouped nick %s with your account": "Successfully ungrouped nick %s with your account",
"Successfully unregistered account %s": "Successfully unregistered account %s",
"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",
"That channel is not registered": "That channel is not registered",
"That nickname is already reserved by someone else": "That nickname is already reserved by someone else",
"That nickname is not registered": "That nickname is not registered",
"There are %[1]d pending requests for vhosts (%[2]d displayed)": "There are %[1]d pending requests for vhosts (%[2]d displayed)",
"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)",
"There are %d pending requests for vhosts (%d displayed)": "There are %d pending requests for vhosts (%d displayed)",
"There was no such nickname": "There was no such nickname",
"They aren't on that channel": "They aren't on that channel",
"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 @@
"This server was created %s": "This server was created %s",
"This vhost is currently disabled, but can be enabled with /HS ON": "This vhost is currently disabled, but can be enabled with /HS ON",
"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",
"To confirm account unregistration, type: /NS UNREGISTER %s %s": "To confirm account unregistration, type: /NS UNREGISTER %s %s",
"To confirm channel unregistration, type: /CS UNREGISTER %s %s": "To confirm channel unregistration, type: /CS UNREGISTER %s %s",
"To confirm account unregistration, type: /NS UNREGISTER %[1]s %[2]s": "To confirm account unregistration, type: /NS UNREGISTER %[1]s %[2]s",
"To confirm channel unregistration, type: /CS UNREGISTER %[1]s %[2]s": "To confirm channel unregistration, type: /CS UNREGISTER %[1]s %[2]s",
"To verify your account, issue one of these commands:": "To verify your account, issue one of these commands:",
"Translators:": "Translators:",
"Unknown command": "Unknown command",
"Unknown command. To see available commands, run": "Unknown command. To see available commands, run",
"Unknown command. To see available commands, run: /%s HELP": "Unknown command. To see available commands, run: /%s HELP",
"Unknown subcommand": "Unknown subcommand",
"User doesn't have roleplaying mode enabled": "User doesn't have roleplaying mode enabled",
"Verification code: %s": "Verification code: %s",
@ -189,6 +188,7 @@
"WEBIRC command is not usable from your address or incorrect password given": "WEBIRC command is not usable from your address or incorrect password given",
"Welcome to the Internet Relay Network %s": "Welcome to the Internet Relay Network %s",
"You are banned from this server (%s)": "You are banned from this server (%s)",
"You are no longer authorized to be on this server": "You are no longer authorized to be on this server",
"You are no longer marked as being away": "You are no longer marked as being away",
"You are not using a TLS certificate": "You are not using a TLS certificate",
"You are now an IRC operator": "You are now an IRC operator",
@ -197,8 +197,10 @@
"You can't ungroup your primary nickname (try unregistering your account instead)": "You can't ungroup your primary nickname (try unregistering your account instead)",
"You don't have enough channel privileges": "You don't have enough channel privileges",
"You don't own that nick": "You don't own that nick",
"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",
"You have been banned from this server (%s)": "You have been banned from this server (%s)",
"You have been marked as being away": "You have been marked as being away",
"You have joined too many channels": "You have joined too many channels",
"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)",
"You may not reregister": "You may not reregister",
"You must be an oper on the channel to register it": "You must be an oper on the channel to register it",

View File

@ -9,6 +9,7 @@
"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.",
"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).",
"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.",
"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.",
"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.",
"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."
}