diff options
| author | Adam <Adam@anope.org> | 2011-02-04 15:30:31 -0500 |
|---|---|---|
| committer | Adam <Adam@anope.org> | 2011-02-04 15:30:31 -0500 |
| commit | 08583dc107974252312fb7c87532c9deb68e7f63 (patch) | |
| tree | 0c42ec7422752cabd8352b49be976b4dc100c56c /src/language.cpp | |
| parent | c362a1e077d5ede9eadbe79483f2a755b5883e9a (diff) | |
Moved the language strings which are only used once
out of the core and into the modules that use them.
Diffstat (limited to 'src/language.cpp')
| -rw-r--r-- | src/language.cpp | 5255 |
1 files changed, 44 insertions, 5211 deletions
diff --git a/src/language.cpp b/src/language.cpp index 2823cc117..7256ebbbf 100644 --- a/src/language.cpp +++ b/src/language.cpp @@ -1,11 +1,5 @@ #include "services.h" - -#if GETTEXT_FOUND -# include LIBINTL -# define _(x) gettext(x) -#else -# define _(x) x -#endif +#include <stack> std::vector<Anope::string> languages; @@ -38,50 +32,49 @@ void InitLanguages() #endif } -const Anope::string GetString(const Anope::string &language, LanguageString string) +const Anope::string GetString(NickCore *nc, const char *string) { - return GetString("anope", language, language_strings[string]); + return GetString("anope", nc ? nc->language : "", string); } -const Anope::string GetString(LanguageString string) +const Anope::string GetString(const Anope::string &domain, const Anope::string &lang, const char *string) { - return GetString("anope", "", language_strings[string]); + PushLanguage(domain, lang); + const char *t_string = anope_gettext(string); + PopLanguage(); + return t_string; } -const Anope::string GetString(NickCore *nc, LanguageString string) +#if GETTEXT_FOUND +static std::stack<std::pair<Anope::string, Anope::string > > language_stack; + +void PushLanguage(const Anope::string &domain, Anope::string language) { - return GetString(nc ? nc->language : "", string); + if (language.empty() && !Config->NSDefLanguage.empty()) + language = Config->NSDefLanguage; + + language_stack.push(std::make_pair(domain, language)); } -const Anope::string GetString(User *u, LanguageString string) +void PopLanguage() { - if (!u) - return GetString(string); - NickCore *nc = u->Account(); - NickAlias *na = NULL; - if (!nc) - na = findnick(u->nick); - return GetString(nc ? nc : (na ? na->nc : NULL), string); + language_stack.pop(); } -#if GETTEXT_FOUND /* Used by gettext to make it always dynamically load language strings (so we can drop them in while Anope is running) */ extern "C" int _nl_msg_cat_cntr; -const Anope::string GetString(const char *domain, Anope::string language, const Anope::string &string) -{ - if (language == "en") - language.clear(); - /* Apply def language */ - if (language.empty() && !Config->NSDefLanguage.empty()) - language = Config->NSDefLanguage; - - if (language.empty()) +const char *anope_gettext(const char *string) +{ + std::pair<Anope::string, Anope::string> lang_info; + if (!language_stack.empty()) + lang_info = language_stack.top(); + if (lang_info.first.empty() || lang_info.second.empty()) return string; ++_nl_msg_cat_cntr; #ifdef _WIN32 - SetThreadLocale(MAKELCID(MAKELANGID(WindowsGetLanguage(language.c_str()), SUBLANG_DEFAULT), SORT_DEFAULT)); + SetThreadLocale(MAKELCID(MAKELANGID(WindowsGetLanguage(lang_info.second.c_str()), SUBLANG_DEFAULT), SORT_DEFAULT)); #else /* First, set LANGUAGE env variable. * Some systems (Debian) don't care about this, so we must setlocale LC_ALL aswell. @@ -90,11 +83,11 @@ const Anope::string GetString(const char *domain, Anope::string language, const * use the LANGUAGE env variable. We must reset the locale to en_US (or, anything not * C or POSIX) then. */ - setenv("LANGUAGE", language.c_str(), 1); - if (setlocale(LC_ALL, language.c_str()) == NULL) + setenv("LANGUAGE", lang_info.second.c_str(), 1); + if (setlocale(LC_ALL, lang_info.second.c_str()) == NULL) setlocale(LC_ALL, "en_US"); #endif - const char *ret = dgettext(domain, string.c_str()); + const char *translated_string = dgettext(lang_info.first.c_str(), string); #ifdef _WIN32 SetThreadLocale(MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), SORT_DEFAULT)); #else @@ -102,5198 +95,38 @@ const Anope::string GetString(const char *domain, Anope::string language, const setlocale(LC_ALL, ""); #endif - Anope::string translated = ret ? ret : ""; + Anope::string translated = translated_string ? translated_string : ""; if (Config->UseStrictPrivMsg) translated = translated.replace_all_cs("%R", "/"); else translated = translated.replace_all_cs("%R", "/msg "); - return translated; + return translated.c_str(); } #else -const Anope::string GetString(const char *domain, Anope::string language, const Anope::string &string) +void PushLanguage(const Anope::string &, Anope::string) { - Anope::string translated = string; +} + +void PopLanguage() +{ +} + +const char *anope_gettext(const char *string) +{ + Anope::string translated = string ? string : ""; if (Config->UseStrictPrivMsg) translated = translated.replace_all_cs("%R", "/"); else translated = translated.replace_all_cs("%R", "/msg "); - return translated; + return translated.c_str(); } #endif -void SyntaxError(CommandSource &source, const Anope::string &command, LanguageString message) +void SyntaxError(CommandSource &source, const Anope::string &command, const Anope::string &message) { - if (command.empty()) - return; - - Anope::string str = GetString(source.u, message); - source.Reply(SYNTAX_ERROR, str.c_str()); - source.Reply(MORE_INFO, source.owner->nick.c_str(), command.c_str()); + source.Reply(_("Syntax: \002%s\002"), message.c_str()); + source.Reply(_(LanguageString::MORE_INFO), source.owner->nick.c_str(), command.c_str()); } -const char *const language_strings[LANG_STRING_COUNT] = { - /* LANGUAGE_NAME */ - _("English"), - /* COMMAND_REQUIRES_PERM */ - _("Access to this command requires the permission %s to be present in your opertype."), - /* COMMAND_IDENTIFY_REQUIRED */ - _("You need to be identified to use this command."), - /* COMMAND_CANNOT_USE */ - _("You cannot use this command."), - /* COMMAND_CAN_USE */ - _("You can use this command."), - /* COMMAND_DEPRECATED */ - _("This command is deprecated, use \"%R%s MODE\" instead."), - /* USER_RECORD_NOT_FOUND */ - _("Internal error - unable to process request."), - /* UNKNOWN_COMMAND */ - _("Unknown command %s."), - /* UNKNOWN_COMMAND_HELP */ - _("Unknown command %s. \"%R%s HELP\" for help."), - /* SYNTAX_ERROR */ - _("Syntax: %s"), - /* MORE_INFO */ - _("%R%s HELP %s for more information."), - /* NO_HELP_AVAILABLE */ - _("No help available for %s."), - /* BAD_USERHOST_MASK */ - _("Mask must be in the form user@host."), - /* BAD_EXPIRY_TIME */ - _("Invalid expiry time."), - /* USERHOST_MASK_TOO_WIDE */ - _("%s coverage is too wide; Please use a more specific mask."), - /* SERVICE_OFFLINE */ - _("%s is currently offline."), - /* READ_ONLY_MODE */ - _("Notice: Services is in read-only mode; changes will not be saved!"), - /* PASSWORD_INCORRECT */ - _("Password incorrect."), - /* INVALID_TARGET */ - _("\"/msg %s\" is no longer supported. Use \"/msg %s@%s\" or \"/%s\" instead."), - /* ACCESS_DENIED */ - _("Access denied."), - /* MORE_OBSCURE_PASSWORD */ - _("Please try again with a more obscure password. Passwords should be at least five characters long, should not be something easily guessed (e.g. your real name or your nick), and cannot contain the space or tab characters."), - /* PASSWORD_TOO_LONG */ - _("Your password is too long. Please try again with a shorter password."), - /* NICK_NOT_REGISTERED */ - _("Your nick isn't registered."), - /* NICK_X_IS_SERVICES */ - _("Nick %s is part of this Network's Services."), - /* NICK_X_NOT_REGISTERED */ - _("Nick %s isn't registered."), - /* NICK_X_IN_USE */ - _("Nick %s is currently in use."), - /* NICK_X_NOT_IN_USE */ - _("Nick %s isn't currently in use."), - /* NICK_X_NOT_ON_CHAN */ - _("%s is not currently on channel %s."), - /* NICK_X_FORBIDDEN */ - _("Nick %s may not be registered or used."), - /* NICK_X_FORBIDDEN_OPER */ - _("Nick %s has been forbidden by %s:\n" - "%s"), - /* NICK_X_ILLEGAL */ - _("Nick %s is an illegal nickname and cannot be used."), - /* NICK_X_TRUNCATED */ - _("Nick %s was truncated to %d characters."), - /* NICK_X_SUSPENDED */ - _("Nick %s is currently suspended."), - /* CHAN_X_NOT_REGISTERED */ - _("Channel %s isn't registered."), - /* CHAN_X_NOT_IN_USE */ - _("Channel %s doesn't exist."), - /* CHAN_X_FORBIDDEN */ - _("Channel %s may not be registered or used."), - /* CHAN_X_FORBIDDEN_OPER */ - _("Channel %s has been forbidden by %s:\n" - "%s"), - /* CHAN_X_SUSPENDED */ - _(" Suspended: [%s] %s"), - /* NICK_IDENTIFY_REQUIRED */ - _("Password authentication required for that command.\n" - "Retry after typing %R%s IDENTIFY password."), - /* MAIL_DISABLED */ - _("Services have been configured to not send mail."), - /* MAIL_INVALID */ - _("E-mail for %s is invalid."), - /* MAIL_X_INVALID */ - _("%s is not a valid e-mail address."), - /* MAIL_LATER */ - _("Cannot send mail now; please retry a little later."), - /* MAIL_DELAYED */ - _("Please wait %d seconds and retry."), - /* NO_REASON */ - _("No reason"), - /* UNKNOWN */ - _("<unknown>"), - /* DURATION_DAY */ - _("1 day"), - /* DURATION_DAYS */ - _("%d days"), - /* DURATION_HOUR */ - _("1 hour"), - /* DURATION_HOURS */ - _("%d hours"), - /* DURATION_MINUTE */ - _("1 minute"), - /* DURATION_MINUTES */ - _("%d minutes"), - /* DURATION_SECOND */ - _("1 second"), - /* DURATION_SECONDS */ - _("%d seconds"), - /* NO_EXPIRE */ - _("does not expire"), - /* EXPIRES_SOON */ - _("expires at next database update"), - /* EXPIRES_M */ - _("expires in %d minutes"), - /* EXPIRES_1M */ - _("expires in %d minute"), - /* EXPIRES_HM */ - _("expires in %d hours, %d minutes"), - /* EXPIRES_H1M */ - _("expires in %d hours, %d minute"), - /* EXPIRES_1HM */ - _("expires in %d hour, %d minutes"), - /* EXPIRES_1H1M */ - _("expires in %d hour, %d minute"), - /* EXPIRES_D */ - _("expires in %d days"), - /* EXPIRES_1D */ - _("expires in %d day"), - /* END_OF_ANY_LIST */ - _("End of %s list."), - /* LIST_INCORRECT_RANGE */ - _("Incorrect range specified. The correct syntax is #from-to."), - /* CS_LIST_INCORRECT_RANGE */ - _("To search for channels starting with #, search for the channel\n" - "name without the #-sign prepended (anope instead of #anope)."), - /* NICK_IS_REGISTERED */ - _("This nick is owned by someone else. Please choose another.\n" - "(If this is your nick, type %R%s IDENTIFY password.)"), - /* NICK_IS_SECURE */ - _("This nickname is registered and protected. If it is your\n" - "nick, type %R%s IDENTIFY password. Otherwise,\n" - "please choose a different nick."), - /* NICK_MAY_NOT_BE_USED */ - _("This nickname may not be used. Please choose another one."), - /* FORCENICKCHANGE_IN_1_MINUTE */ - _("If you do not change within one minute, I will change your nick."), - /* FORCENICKCHANGE_IN_20_SECONDS */ - _("If you do not change within 20 seconds, I will change your nick."), - /* FORCENICKCHANGE_NOW */ - _("This nickname has been registered; you may not use it."), - /* FORCENICKCHANGE_CHANGING */ - _("Your nickname is now being changed to %s"), - /* NICK_REGISTER_SYNTAX */ - _("REGISTER password [email]"), - /* NICK_REGISTER_SYNTAX_EMAIL */ - _("REGISTER password email"), - /* NICK_REGISTRATION_DISABLED */ - _("Sorry, nickname registration is temporarily disabled."), - /* NICK_REGISTRATION_FAILED */ - _("Sorry, registration failed."), - /* NICK_REG_PLEASE_WAIT */ - _("Please wait %d seconds before using the REGISTER command again."), - /* NICK_CANNOT_BE_REGISTERED */ - _("Nickname %s may not be registered."), - /* NICK_ALREADY_REGISTERED */ - _("Nickname %s is already registered!"), - /* NICK_REGISTERED */ - _("Nickname %s registered under your account: %s"), - /* NICK_REGISTERED_NO_MASK */ - _("Nickname %s registered."), - /* NICK_PASSWORD_IS */ - _("Your password is %s - remember this for later use."), - /* NICK_REG_DELAY */ - _("You must have been using this nick for at least %d seconds to register."), - /* NICK_GROUP_SYNTAX */ - _("GROUP target password"), - /* NICK_GROUP_DISABLED */ - _("Sorry, nickname grouping is temporarily disabled."), - /* NICK_GROUP_PLEASE_WAIT */ - _("Please wait %d seconds before using the GROUP command again."), - /* NICK_GROUP_CHANGE_DISABLED */ - _("Your nick is already registered; type \002%R%s DROP\002 first."), - /* NICK_GROUP_SAME */ - _("You are already a member of the group of %s."), - /* NICK_GROUP_TOO_MANY */ - _("There are too many nicks in %s's group; list them and drop some.\n" - "Type %R%s HELP GLIST and %R%s HELP DROP\n" - "for more information."), - /* NICK_GROUP_JOINED */ - _("You are now in the group of %s."), - /* NICK_UNGROUP_ONE_NICK */ - _("Your nick is not grouped to anything, you can't ungroup it."), - /* NICK_UNGROUP_NOT_IN_GROUP */ - _("The nick %s is not in your group."), - /* NICK_UNGROUP_SUCCESSFUL */ - _("Nick %s has been ungrouped from %s."), - /* NICK_IDENTIFY_SYNTAX */ - _("IDENTIFY [account] password"), - /* NICK_IDENTIFY_FAILED */ - _("Sorry, identification failed."), - /* NICK_IDENTIFY_SUCCEEDED */ - _("Password accepted - you are now recognized."), - /* NICK_IDENTIFY_EMAIL_REQUIRED */ - _("You must now supply an e-mail for your nick.\n" - "This e-mail will allow you to retrieve your password in\n" - "case you forget it."), - /* NICK_IDENTIFY_EMAIL_HOWTO */ - _("Type %R%S SET EMAIL e-mail in order to set your e-mail.\n" - "Your privacy is respected; this e-mail won't be given to\n" - "any third-party person."), - /* NICK_ALREADY_IDENTIFIED */ - _("You are already identified."), - /* NICK_UPDATE_SUCCESS */ - _("Status updated (memos, vhost, chmodes, flags)."), - /* NICK_LOGOUT_SYNTAX */ - _("LOGOUT"), - /* NICK_LOGOUT_SUCCEEDED */ - _("Your nick has been logged out."), - /* NICK_LOGOUT_X_SUCCEEDED */ - _("Nick %s has been logged out."), - /* NICK_LOGOUT_SERVICESADMIN */ - _("Can't logout %s because he's a Services Operator."), - /* NICK_DROP_DISABLED */ - _("Sorry, nickname de-registration is temporarily disabled."), - /* NICK_DROPPED */ - _("Your nickname has been dropped."), - /* NICK_X_DROPPED */ - _("Nickname %s has been dropped."), - /* NICK_SET_SYNTAX */ - _("SET option parameters"), - /* NICK_SET_DISABLED */ - _("Sorry, nickname option setting is temporarily disabled."), - /* NICK_SET_UNKNOWN_OPTION */ - _("Unknown SET option %s."), - /* NICK_SET_OPTION_DISABLED */ - _("Option %s cannot be set on this network."), - /* NICK_SET_DISPLAY_CHANGED */ - _("The new display is now %s."), - /* NICK_SET_LANGUAGE_SYNTAX */ - _("SET LANGUAGE language"), - /* NICK_SET_LANGUAGE_CHANGED */ - _("Language changed to English."), - /* NICK_SET_EMAIL_UNSET */ - _("E-mail address unset."), - /* NICK_SET_EMAIL_UNSET_IMPOSSIBLE */ - _("You cannot unset the e-mail on this network."), - /* NICK_SET_KILL_SYNTAX */ - _("SET KILL {ON | QUICK | OFF}"), - /* NICK_SET_KILL_IMMED_SYNTAX */ - _("SET KILL {ON | QUICK | IMMED | OFF}"), - /* NICK_SET_KILL_IMMED */ - _("Protection is now ON, with no delay."), - /* NICK_SET_KILL_IMMED_DISABLED */ - _("The IMMED option is not available on this network."), - /* NICK_SET_SECURE_SYNTAX */ - _("SET SECURE {ON | OFF}"), - /* NICK_SET_PRIVATE_SYNTAX */ - _("SET PRIVATE {ON | OFF}"), - /* NICK_SET_HIDE_SYNTAX */ - _("SET HIDE {EMAIL | STATUS | USERMASK | QUIT} {ON | OFF}"), - /* NICK_SET_MSG_SYNTAX */ - _("SET MSG {ON | OFF}"), - /* NICK_SET_AUTOOP_SYNTAX */ - _("SET AUTOOP {ON | OFF}"), - /* NICK_SASET_SYNTAX */ - _("SASET nickname option parameters"), - /* NICK_SASET_UNKNOWN_OPTION */ - _("Unknown SASET option %s."), - /* NICK_SASET_BAD_NICK */ - _("Nickname %s not registered."), - /* NICK_SASET_DISPLAY_INVALID */ - _("The new display for %s MUST be a nickname of the nickname group!"), - /* NICK_SASET_PASSWORD_FAILED */ - _("Sorry, couldn't change password for %s."), - /* NICK_SASET_PASSWORD_CHANGED */ - _("Password for %s changed."), - /* NICK_SASET_PASSWORD_CHANGED_TO */ - _("Password for %s changed to %s."), - /* NICK_SASET_EMAIL_CHANGED */ - _("E-mail address for %s changed to %s."), - /* NICK_SASET_EMAIL_UNSET */ - _("E-mail address for %s unset."), - /* NICK_SASET_GREET_CHANGED */ - _("Greet message for %s changed to %s."), - /* NICK_SASET_GREET_UNSET */ - _("Greet message for %s unset."), - /* NICK_SASET_KILL_SYNTAX */ - _("SASET nickname KILL {ON | QUICK | OFF}"), - /* NICK_SASET_KILL_IMMED_SYNTAX */ - _("SASET nickname KILL {ON | QUICK | IMMED | OFF}"), - /* NICK_SASET_KILL_ON */ - _("Protection is now ON for %s."), - /* NICK_SASET_KILL_QUICK */ - _("Protection is now ON for %s, with a reduced delay."), - /* NICK_SASET_KILL_IMMED */ - _("Protection is now ON for %s, with no delay."), - /* NICK_SASET_KILL_OFF */ - _("Protection is now OFF for %s."), - /* NICK_SASET_SECURE_SYNTAX */ - _("SASET nickname SECURE {ON | OFF}"), - /* NICK_SASET_SECURE_ON */ - _("Secure option is now ON for %s."), - /* NICK_SASET_SECURE_OFF */ - _("Secure option is now OFF for %s."), - /* NICK_SASET_PRIVATE_SYNTAX */ - _("SASET nickname PRIVATE {ON | OFF}"), - /* NICK_SASET_PRIVATE_ON */ - _("Private option is now ON for %s."), - /* NICK_SASET_PRIVATE_OFF */ - _("Private option is now OFF for %s."), - /* NICK_SASET_HIDE_SYNTAX */ - _("SASET nickname HIDE {EMAIL | STATUS | USERMASK | QUIT} {ON | OFF}"), - /* NICK_SASET_HIDE_EMAIL_ON */ - _("The E-mail address of %s will now be hidden from %s INFO displays."), - /* NICK_SASET_HIDE_EMAIL_OFF */ - _("The E-mail address of %s will now be shown in %s INFO displays."), - /* NICK_SASET_HIDE_MASK_ON */ - _("The last seen user@host mask of %s will now be hidden from %s INFO displays."), - /* NICK_SASET_HIDE_MASK_OFF */ - _("The last seen user@host mask of %s will now be shown in %s INFO displays."), - /* NICK_SASET_HIDE_QUIT_ON */ - _("The last quit message of %s will now be hidden from %s INFO displays."), - /* NICK_SASET_HIDE_QUIT_OFF */ - _("The last quit message of %s will now be shown in %s INFO displays."), - /* NICK_SASET_HIDE_STATUS_ON */ - _("The services access status of %s will now be hidden from %s INFO displays."), - /* NICK_SASET_HIDE_STATUS_OFF */ - _("The services access status of %s will now be shown in %s INFO displays."), - /* NICK_SASET_MSG_SYNTAX */ - _("SASAET nickname PRIVATE {ON | OFF}"), - /* NICK_SASET_MSG_ON */ - _("Services will now reply to %s with messages."), - /* NICK_SASET_MSG_OFF */ - _("Services will now reply to %s with notices."), - /* NICK_SASET_NOEXPIRE_SYNTAX */ - _("SASET nickname NOEXPIRE {ON | OFF}"), - /* NICK_SASET_NOEXPIRE_ON */ - _("Nick %s will not expire."), - /* NICK_SASET_NOEXPIRE_OFF */ - _("Nick %s will expire."), - /* NICK_SASET_AUTOOP_SYNTAX */ - _("SASET nickname AUTOOP {ON | OFF}"), - /* NICK_SASET_AUTOOP_ON */ - _("Services will now autoop %s in channels."), - /* NICK_SASET_AUTOOP_OFF */ - _("Services will no longer autoop %s in channels."), - /* NICK_SASET_LANGUAGE_SYNTAX */ - _("SASET nickname LANGUAGE number"), - /* NICK_ACCESS_SYNTAX */ - _("ACCESS {ADD | DEL | LIST} [mask]"), - /* NICK_ACCESS_ALREADY_PRESENT */ - _("Mask %s already present on your access list."), - /* NICK_ACCESS_REACHED_LIMIT */ - _("Sorry, you can only have %d access entries for a nickname."), - /* NICK_ACCESS_ADDED */ - _("%s added to your access list."), - /* NICK_ACCESS_NOT_FOUND */ - _("%s not found on your access list."), - /* NICK_ACCESS_DELETED */ - _("%s deleted from your access list."), - /* NICK_ACCESS_LIST */ - _("Access list:"), - /* NICK_ACCESS_LIST_X */ - _("Access list for %s:"), - /* NICK_ACCESS_LIST_EMPTY */ - _("Your access list is empty."), - /* NICK_ACCESS_LIST_X_EMPTY */ - _("Access list for %s is empty."), - /* NICK_AJOIN_SYNTAX */ - _("AJOIN {ADD | DEL | LIST} [\037channel\037] [\037key\037]"), - /* NICK_AJOIN_LIST_EMPTY */ - _("Your auto join list is empty."), - /* NICK_AJOIN_LIST_HEAD */ - _("Your auto join list:\n" - " Num Channel Key"), - /* NICK_AJOIN_LIST_FULL */ - _("Your auto join list is full."), - /* NICK_AJOIN_ADDED */ - _("Added %s to your auto join list."), - /* NICK_AJOIN_NOTFOUND */ - _("%s was not found on your auto join list."), - /* NICK_AJOIN_DELETED */ - _("%s was removed from your auto join list."), - /* NICK_STATUS_REPLY */ - _("STATUS %s %d %s"), - /* NICK_INFO_SYNTAX */ - _("INFO nick"), - /* NICK_INFO_REALNAME */ - _("%s is %s"), - /* NICK_INFO_SERVICES_OPERTYPE */ - _("%s is a services operator of type %s."), - /* NICK_INFO_ADDRESS */ - _("Last seen address: %s"), - /* NICK_INFO_ADDRESS_ONLINE */ - _(" Is online from: %s"), - /* NICK_INFO_ADDRESS_ONLINE_NOHOST */ - _("%s is currently online."), - /* NICK_INFO_TIME_REGGED */ - _(" Time registered: %s"), - /* NICK_INFO_LAST_SEEN */ - _(" Last seen time: %s"), - /* NICK_INFO_LAST_QUIT */ - _("Last quit message: %s"), - /* NICK_INFO_EMAIL */ - _(" E-mail address: %s"), - /* NICK_INFO_VHOST */ - _(" vhost: %s"), - /* NICK_INFO_VHOST2 */ - _(" vhost: %s@%s"), - /* NICK_INFO_GREET */ - _(" Greet message: %s"), - /* NICK_INFO_OPTIONS */ - _(" Options: %s"), - /* NICK_INFO_EXPIRE */ - _("Expires on: %s"), - /* NICK_INFO_OPT_KILL */ - _("Protection"), - /* NICK_INFO_OPT_SECURE */ - _("Security"), - /* NICK_INFO_OPT_PRIVATE */ - _("Private"), - /* NICK_INFO_OPT_MSG */ - _("Message mode"), - /* NICK_INFO_OPT_AUTOOP */ - _("Auto-op"), - /* NICK_INFO_OPT_NONE */ - _("None"), - /* NICK_INFO_NO_EXPIRE */ - _("This nickname will not expire."), - /* NICK_INFO_SUSPENDED */ - _("This nickname is currently suspended, reason: %s"), - /* NICK_INFO_SUSPENDED_NO_REASON */ - _("This nickname is currently suspended"), - /* NICK_LIST_SYNTAX */ - _("LIST pattern"), - /* NICK_LIST_SERVADMIN_SYNTAX */ - _("LIST pattern [FORBIDDEN] [SUSPENDED] [NOEXPIRE] [UNCONFIRMED]"), - /* NICK_LIST_HEADER */ - _("List of entries matching %s:"), - /* NICK_LIST_RESULTS */ - _("End of list - %d/%d matches shown."), - /* NICK_ALIST_HEADER */ - _("Channels that you have access on:\n" - " Num Channel Level Description"), - /* NICK_ALIST_HEADER_X */ - _("Channels that %s has access on:\n" - " Num Channel Level Description"), - /* NICK_ALIST_XOP_FORMAT */ - _(" %3d %c%-20s %-8s %s"), - /* NICK_ALIST_ACCESS_FORMAT */ - _(" %3d %c%-20s %-8d %s"), - /* NICK_ALIST_FOOTER */ - _("End of list - %d/%d channels shown."), - /* NICK_GLIST_HEADER */ - _("List of nicknames in your group:"), - /* NICK_GLIST_HEADER_X */ - _("List of nicknames in the group of %s:"), - /* NICK_GLIST_FOOTER */ - _("%d nicknames in the group."), - /* NICK_GLIST_REPLY */ - _(" %s (expires in %s)"), - /* NICK_GLIST_REPLY_NOEXPIRE */ - _(" %s (does not expire)"), - /* NICK_RECOVER_SYNTAX */ - _("RECOVER nickname [password]"), - /* NICK_NO_RECOVER_SELF */ - _("You can't recover yourself!"), - /* NICK_RECOVERED */ - _("User claiming your nick has been killed.\n" - "%R%s RELEASE %s to get it back before %s timeout."), - /* NICK_RELEASE_SYNTAX */ - _("RELEASE nickname [password]"), - /* NICK_RELEASE_NOT_HELD */ - _("Nick %s isn't being held."), - /* NICK_RELEASED */ - _("Services' hold on your nick has been released."), - /* NICK_GHOST_SYNTAX */ - _("GHOST nickname [password]"), - /* NICK_NO_GHOST_SELF */ - _("You can't ghost yourself!"), - /* NICK_GHOST_KILLED */ - _("Ghost with your nick has been killed."), - /* NICK_GHOST_UNIDENTIFIED */ - _("You may not ghost an unidentified user, use RECOVER instead."), - /* NICK_GETPASS_SYNTAX */ - _("GETPASS nickname"), - /* NICK_GETPASS_UNAVAILABLE */ - _("GETPASS command unavailable because encryption is in use."), - /* NICK_GETPASS_PASSWORD_IS */ - _("Password for %s is %s."), - /* NICK_GETEMAIL_SYNTAX */ - _("GETEMAIL user@email-host No WildCards!!"), - /* NICK_GETEMAIL_EMAILS_ARE */ - _("Emails Match %s to %s."), - /* NICK_GETEMAIL_NOT_USED */ - _("No Emails listed for %s."), - /* NICK_SENDPASS_SYNTAX */ - _("SENDPASS nickname"), - /* NICK_SENDPASS_UNAVAILABLE */ - _("SENDPASS command unavailable because encryption is in use."), - /* NICK_SENDPASS_SUBJECT */ - _("Nickname password (%s)"), - /* NICK_SENDPASS */ - _("Hi,\n" - " \n" - "You have requested to receive the password of nickname %s by e-mail.\n" - "The password is %s. For security purposes, you should change it as soon as you receive this mail.\n" - " \n" - "If you don't know why this mail was sent to you, please ignore it silently.\n" - " \n" - "%s administrators."), - /* NICK_SENDPASS_OK */ - _("Password of %s has been sent."), - /* NICK_RESETPASS_SYNTAX */ - _("RESETPASS nickname"), - /* NICK_RESETPASS_SUBJECT */ - _("Reset password request for %s"), - /* NICK_RESETPASS_MESSAGE */ - _("Hi,\n" - " \n" - "You have requested to have the password for %s reset.\n" - "To reset your password, type %R%s CONFIRM %s\n" - " \n" - "If you don't know why this mail was sent to you, please ignore it silently.\n" - " \n" - "%s administrators."), - /* NICK_RESETPASS_COMPLETE */ - _("Password reset email for %s has been sent."), - /* NICK_SUSPEND_SYNTAX */ - _("SUSPEND nickname reason"), - /* NICK_SUSPEND_SUCCEEDED */ - _("Nick %s is now suspended."), - /* NICK_UNSUSPEND_SYNTAX */ - _("UNSUSPEND nickname"), - /* NICK_UNSUSPEND_SUCCEEDED */ - _("Nick %s is now released."), - /* NICK_FORBID_SYNTAX */ - _("FORBID nickname [reason]"), - /* NICK_FORBID_SYNTAX_REASON */ - _("FORBID nickname reason"), - /* NICK_FORBID_SUCCEEDED */ - _("Nick %s is now forbidden."), - /* NICK_REQUESTED */ - _("This nick has already been requested, please check your e-mail address for the pass code"), - /* NICK_REG_RESENT */ - _("Your passcode has been re-sent to %s."), - /* NICK_REG_UNABLE */ - _("Nick NOT registered, please try again later."), - /* NICK_IS_PREREG */ - _("This nick is awaiting an e-mail verification code before completing registration."), - /* NICK_ENTER_REG_CODE */ - _("A passcode has been sent to %s, please type %R%s confirm <passcode> to complete registration.\n" - "If you need to cancel your registration, use \"%R%s drop <password>\"."), - /* NICK_GETPASS_PASSCODE_IS */ - _("Passcode for %s is %s."), - /* NICK_FORCE_REG */ - _("Nickname %s confirmed"), - /* NICK_REG_MAIL_SUBJECT */ - _("Nickname Registration (%s)"), - /* NICK_REG_MAIL */ - _("Hi,\n" - " \n" - "You have requested to register the nickname %s on %s.\n" - "Please type \" %R%s confirm %s \" to complete registration.\n" - " \n" - "If you don't know why this mail was sent to you, please ignore it silently.\n" - " \n" - "%s administrators."), - /* NICK_CONFIRM_NOT_FOUND */ - _("Registration step 1 may have expired, please use \"%R%s register <password> <email>\" first."), - /* NICK_CONFIRM_INVALID */ - _("Invalid passcode has been entered, please check the e-mail again, and retry"), - /* NICK_CONFIRM_EXPIRED */ - _("Your password reset request has expired."), - /* NICK_CONFIRM_SUCCESS */ - _("You are now identified for your nick. Change your password using \"%R%s SET PASSWORD newpassword\" now."), - /* CHAN_LEVEL_AUTOOP */ - _("Automatic channel operator status"), - /* CHAN_LEVEL_AUTOVOICE */ - _("Automatic mode +v"), - /* CHAN_LEVEL_AUTOHALFOP */ - _("Automatic mode +h"), - /* CHAN_LEVEL_AUTOPROTECT */ - _("Automatic mode +a"), - /* CHAN_LEVEL_NOJOIN */ - _("Not allowed to join channel"), - /* CHAN_LEVEL_INVITE */ - _("Allowed to use INVITE command"), - /* CHAN_LEVEL_AKICK */ - _("Allowed to use AKICK command"), - /* CHAN_LEVEL_SET */ - _("Allowed to use SET command (not FOUNDER/PASSWORD)"), - /* CHAN_LEVEL_CLEARUSERS */ - _("Allowed to use CLEARUSERS command"), - /* CHAN_LEVEL_UNBAN */ - _("Allowed to use UNBAN command"), - /* CHAN_LEVEL_OPDEOP */ - _("Allowed to use OP/DEOP commands"), - /* CHAN_LEVEL_ACCESS_LIST */ - _("Allowed to view the access list"), - /* CHAN_LEVEL_ACCESS_CHANGE */ - _("Allowed to modify the access list"), - /* CHAN_LEVEL_MEMO */ - _("Allowed to list/read channel memos"), - /* CHAN_LEVEL_ASSIGN */ - _("Allowed to assign/unassign a bot"), - /* CHAN_LEVEL_BADWORDS */ - _("Allowed to use BADWORDS command"), - /* CHAN_LEVEL_NOKICK */ - _("Never kicked by the bot's kickers"), - /* CHAN_LEVEL_FANTASIA */ - _("Allowed to use fantaisist commands"), - /* CHAN_LEVEL_SAY */ - _("Allowed to use SAY and ACT commands"), - /* CHAN_LEVEL_GREET */ - _("Greet message displayed"), - /* CHAN_LEVEL_VOICEME */ - _("Allowed to (de)voice him/herself"), - /* CHAN_LEVEL_VOICE */ - _("Allowed to use VOICE/DEVOICE commands"), - /* CHAN_LEVEL_GETKEY */ - _("Allowed to use GETKEY command"), - /* CHAN_LEVEL_OPDEOPME */ - _("Allowed to (de)op him/herself"), - /* CHAN_LEVEL_HALFOPME */ - _("Allowed to (de)halfop him/herself"), - /* CHAN_LEVEL_HALFOP */ - _("Allowed to use HALFOP/DEHALFOP commands"), - /* CHAN_LEVEL_PROTECTME */ - _("Allowed to (de)protect him/herself"), - /* CHAN_LEVEL_PROTECT */ - _("Allowed to use PROTECT/DEPROTECT commands"), - /* CHAN_LEVEL_KICKME */ - _("Allowed to kick him/herself"), - /* CHAN_LEVEL_KICK */ - _("Allowed to use KICK command"), - /* CHAN_LEVEL_SIGNKICK */ - _("No signed kick when SIGNKICK LEVEL is used"), - /* CHAN_LEVEL_BANME */ - _("Allowed to ban him/herself"), - /* CHAN_LEVEL_BAN */ - _("Allowed to use BAN command"), - /* CHAN_LEVEL_TOPIC */ - _("Allowed to use TOPIC command"), - /* CHAN_LEVEL_MODE */ - _("Allowed to use MODE command"), - /* CHAN_LEVEL_INFO */ - _("Allowed to use INFO command with ALL option"), - /* CHAN_LEVEL_AUTOOWNER */ - _("Automatic mode +q"), - /* CHAN_LEVEL_OWNER */ - _("Allowed to use OWNER command"), - /* CHAN_LEVEL_OWNERME */ - _("Allowed to (de)owner him/herself"), - /* CHAN_LEVEL_FOUNDER */ - _("Allowed to issue commands restricted to channel founders"), - /* CHAN_IS_REGISTERED */ - _("This channel has been registered with %s."), - /* CHAN_MAY_NOT_BE_USED */ - _("This channel may not be used."), - /* CHAN_NOT_ALLOWED_TO_JOIN */ - _("You are not permitted to be on this channel."), - /* CHAN_X_INVALID */ - _("Channel %s is not a valid channel."), - /* CHAN_REGISTER_SYNTAX */ - _("REGISTER channel description"), - /* CHAN_REGISTER_DISABLED */ - _("Sorry, channel registration is temporarily disabled."), - /* CHAN_REGISTER_NOT_LOCAL */ - _("Local channels cannot be registered."), - /* CHAN_MAY_NOT_BE_REGISTERED */ - _("Channel %s may not be registered."), - /* CHAN_ALREADY_REGISTERED */ - _("Channel %s is already registered!"), - /* CHAN_MUST_BE_CHANOP */ - _("You must be a channel operator to register the channel."), - /* CHAN_REACHED_CHANNEL_LIMIT */ - _("Sorry, you have already reached your limit of %d channels."), - /* CHAN_EXCEEDED_CHANNEL_LIMIT */ - _("Sorry, you have already exceeded your limit of %d channels."), - /* CHAN_REGISTERED */ - _("Channel %s registered under your nickname: %s"), - /* CHAN_SYMBOL_REQUIRED */ - _("Please use the symbol of # when attempting to register"), - /* CHAN_DROP_SYNTAX */ - _("DROP channel"), - /* CHAN_DROP_DISABLED */ - _("Sorry, channel de-registration is temporarily disabled."), - /* CHAN_DROPPED */ - _("Channel %s has been dropped."), - /* CHAN_SASET_SYNTAX */ - _("SASET channel option parameters"), - /* CHAN_SASET_KEEPTOPIC_SYNTAX */ - _("SASET channel KEEPTOPIC {ON | OFF}"), - /* CHAN_SASET_OPNOTICE_SYNTAX */ - _("SASET channel OPNOTICE {ON | OFF}"), - /* CHAN_SASET_PEACE_SYNTAX */ - _("SASET channel PEACE {ON | OFF}"), - /* CHAN_SASET_PERSIST_SYNTAX */ - _("SASET channel PERSIST {ON | OFF}"), - /* CHAN_SASET_PRIVATE_SYNTAX */ - _("SASET channel PRIVATE {ON | OFF}"), - /* CHAN_SASET_RESTRICTED_SYNTAX */ - _("SASET channel RESTRICTED {ON | OFF}"), - /* CHAN_SASET_SECURE_SYNTAX */ - _("SASET channel SECURE {ON | OFF}"), - /* CHAN_SASET_SECUREFOUNDER_SYNTAX */ - _("SASET channel SECUREFOUNDER {ON | OFF}"), - /* CHAN_SASET_SECUREOPS_SYNTAX */ - _("SASET channel SECUREOPS {ON | OFF}"), - /* CHAN_SASET_SIGNKICK_SYNTAX */ - _("SASET channel SIGNKICK {ON | OFF}"), - /* CHAN_SASET_TOPICLOCK_SYNTAX */ - _("SASET channel TOPICLOCK {ON | OFF}"), - /* CHAN_SASET_XOP_SYNTAX */ - _("SASET channel XOP {ON | OFF}"), - /* CHAN_SET_SYNTAX */ - _("SET channel option parameters"), - /* CHAN_SET_DISABLED */ - _("Sorry, channel option setting is temporarily disabled."), - /* CHAN_SETTING_CHANGED */ - _("%s for %s set to %s."), - /* CHAN_SETTING_UNSET */ - _("%s for %s unset."), - /* CHAN_SET_FOUNDER_TOO_MANY_CHANS */ - _("%s has too many channels registered."), - /* CHAN_FOUNDER_CHANGED */ - _("Founder of %s changed to %s."), - /* CHAN_SUCCESSOR_CHANGED */ - _("Successor for %s changed to %s."), - /* CHAN_SUCCESSOR_UNSET */ - _("Successor for %s unset."), - /* CHAN_SUCCESSOR_IS_FOUNDER */ - _("%s cannot be the successor on channel %s because he is its founder."), - /* CHAN_DESC_CHANGED */ - _("Description of %s changed to %s."), - /* CHAN_SET_BANTYPE_INVALID */ - _("%s is not a valid ban type."), - /* CHAN_SET_BANTYPE_CHANGED */ - _("Ban type for channel %s is now #%d."), - /* CHAN_SET_MLOCK_DEPRECATED */ - _("MLOCK is deprecated. Use \002%R%s HELP MODE\002 instead."), - /* CHAN_SET_KEEPTOPIC_SYNTAX */ - _("SET channel KEEPTOPIC {ON | OFF}"), - /* CHAN_SET_KEEPTOPIC_ON */ - _("Topic retention option for %s is now ON."), - /* CHAN_SET_KEEPTOPIC_OFF */ - _("Topic retention option for %s is now OFF."), - /* CHAN_SET_TOPICLOCK_SYNTAX */ - _("SET channel TOPICLOCK {ON | OFF}"), - /* CHAN_SET_TOPICLOCK_ON */ - _("Topic lock option for %s is now ON."), - /* CHAN_SET_TOPICLOCK_OFF */ - _("Topic lock option for %s is now OFF."), - /* CHAN_SET_PEACE_SYNTAX */ - _("SET channel PEACE {ON | OFF}"), - /* CHAN_SET_PEACE_ON */ - _("Peace option for %s is now ON."), - /* CHAN_SET_PEACE_OFF */ - _("Peace option for %s is now OFF."), - /* CHAN_SET_PRIVATE_SYNTAX */ - _("SET channel PRIVATE {ON | OFF}"), - /* CHAN_SET_PRIVATE_ON */ - _("Private option for %s is now ON."), - /* CHAN_SET_PRIVATE_OFF */ - _("Private option for %s is now OFF."), - /* CHAN_SET_SECUREOPS_SYNTAX */ - _("SET channel SECUREOPS {ON | OFF}"), - /* CHAN_SET_SECUREOPS_ON */ - _("Secure ops option for %s is now ON."), - /* CHAN_SET_SECUREOPS_OFF */ - _("Secure ops option for %s is now OFF."), - /* CHAN_SET_SECUREFOUNDER_SYNTAX */ - _("SET channel SECUREFOUNDER {ON | OFF}"), - /* CHAN_SET_SECUREFOUNDER_ON */ - _("Secure founder option for %s is now ON."), - /* CHAN_SET_SECUREFOUNDER_OFF */ - _("Secure founder option for %s is now OFF."), - /* CHAN_SET_RESTRICTED_SYNTAX */ - _("SET channel RESTRICTED {ON | OFF}"), - /* CHAN_SET_RESTRICTED_ON */ - _("Restricted access option for %s is now ON."), - /* CHAN_SET_RESTRICTED_OFF */ - _("Restricted access option for %s is now OFF."), - /* CHAN_SET_SECURE_SYNTAX */ - _("SET channel SECURE {ON | OFF}"), - /* CHAN_SET_SECURE_ON */ - _("Secure option for %s is now ON."), - /* CHAN_SET_SECURE_OFF */ - _("Secure option for %s is now OFF."), - /* CHAN_SET_SIGNKICK_SYNTAX */ - _("SET channel SIGNKICK {ON | LEVEL | OFF}"), - /* CHAN_SET_SIGNKICK_ON */ - _("Signed kick option for %s is now ON."), - /* CHAN_SET_SIGNKICK_LEVEL */ - _("Signed kick option for %s is now ON, but depends of the\n" - "level of the user that is using the command."), - /* CHAN_SET_SIGNKICK_OFF */ - _("Signed kick option for %s is now OFF."), - /* CHAN_SET_OPNOTICE_SYNTAX */ - _("SET channel OPNOTICE {ON | OFF}"), - /* CHAN_SET_OPNOTICE_ON */ - _("Op-notice option for %s is now ON."), - /* CHAN_SET_OPNOTICE_OFF */ - _("Op-notice option for %s is now OFF."), - /* CHAN_SET_XOP_SYNTAX */ - _("SET channel XOP {ON | OFF}"), - /* CHAN_SET_XOP_ON */ - _("xOP lists system for %s is now ON."), - /* CHAN_SET_XOP_OFF */ - _("xOP lists system for %s is now OFF."), - /* CHAN_SET_PERSIST_SYNTAX */ - _("SET channel PERSIST {ON | OFF}"), - /* CHAN_SET_PERSIST_ON */ - _("Channel %s is now persistant."), - /* CHAN_SET_PERSIST_OFF */ - _("Channel %s is no longer persistant."), - /* CHAN_SET_NOEXPIRE_SYNTAX */ - _("SET channel NOEXPIRE {ON | OFF}"), - /* CHAN_SET_NOEXPIRE_ON */ - _("Channel %s will not expire."), - /* CHAN_SET_NOEXPIRE_OFF */ - _("Channel %s will expire."), - /* CHAN_XOP_REACHED_LIMIT */ - _("Sorry, you can only have %d AOP/SOP/VOP entries on a channel."), - /* CHAN_XOP_LIST_FORMAT */ - _(" %3d %s"), - /* CHAN_XOP_ACCESS */ - _("You can't use this command. Use the ACCESS command instead.\n" - "Type %R%s HELP ACCESS for more information."), - /* CHAN_XOP_NOT_AVAILABLE */ - _("xOP system is not available."), - /* CHAN_QOP_SYNTAX */ - _("QOP channel {ADD|DEL|LIST|CLEAR} [nick | entry-list]"), - /* CHAN_QOP_DISABLED */ - _("Sorry, channel QOP list modification is temporarily disabled."), - /* CHAN_QOP_ADDED */ - _("%s added to %s QOP list."), - /* CHAN_QOP_MOVED */ |
