"Fossies" - the Fresh Open Source Software Archive

Member "tin-2.4.1/src/lang.c" (12 Oct 2016, 138319 Bytes) of archive /linux/misc/tin-2.4.1.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "lang.c" see the Fossies "Dox" file reference documentation and the latest Fossies "Diffs" side-by-side code changes report: 2.4.0_vs_2.4.1.

    1 /*
    2  *  Project   : tin - a Usenet reader
    3  *  Module    : lang.c
    4  *  Author    : I. Lea
    5  *  Created   : 1991-04-01
    6  *  Updated   : 2016-07-29
    7  *  Notes     :
    8  *
    9  * Copyright (c) 1991-2017 Iain Lea <iain@bricbrac.de>
   10  * All rights reserved.
   11  *
   12  * Redistribution and use in source and binary forms, with or without
   13  * modification, are permitted provided that the following conditions
   14  * are met:
   15  * 1. Redistributions of source code must retain the above copyright
   16  *    notice, this list of conditions and the following disclaimer.
   17  * 2. Redistributions in binary form must reproduce the above copyright
   18  *    notice, this list of conditions and the following disclaimer in the
   19  *    documentation and/or other materials provided with the distribution.
   20  * 3. The name of the author may not be used to endorse or promote
   21  *    products derived from this software without specific prior written
   22  *    permission.
   23  *
   24  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
   25  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
   26  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   27  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
   28  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   29  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
   30  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   31  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
   32  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   33  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   34  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   35  */
   36 
   37 
   38 #ifndef TIN_H
   39 #   include "tin.h"
   40 #endif /* !TIN_H */
   41 
   42 constext txt_1_resp[] = N_("1 Response");
   43 constext txt_7bit[] = "7bit";
   44 constext txt_8bit[] = "8bit";
   45 
   46 constext txt_active_file_is_empty[] = N_("\n%s contains no newsgroups. Exiting.");
   47 constext txt_all[] = N_("all ");
   48 constext txt_all_groups[] = N_("All groups");
   49 constext txt_append_overwrite_quit[] = N_("File %s exists. %s=append, %s=overwrite, %s=quit: ");
   50 constext txt_art_cancel[] = N_("Article cancelled (deleted).");
   51 #ifndef FORGERY
   52     constext txt_art_cannot_cancel[] = N_("Article cannot be cancelled (deleted).");
   53 #endif /* !FORGERY */
   54 constext txt_art_deleted[] = N_("Article deleted.");
   55 constext txt_art_mailgroups[] = N_("\nYour article:\n  \"%s\"\nwill be mailed to the following address:\n  %s");
   56 constext txt_art_newsgroups[] = N_("\nYour article:\n  \"%s\"\nwill be posted to the following %s:\n");
   57 constext txt_art_not_posted[] = N_("Article not posted!");
   58 constext txt_art_not_saved[] = N_("Article not saved");
   59 constext txt_art_pager_com[] = N_("Article Level Commands");
   60 constext txt_art_parent_none[] = N_("Article has no parent");
   61 constext txt_art_parent_killed[] = N_("Parent article has been killed");
   62 constext txt_art_parent_unavail[] = N_("Parent article is unavailable");
   63 constext txt_art_posted[] = N_("Article posted: %s");
   64 constext txt_art_rejected[] = N_("Article rejected (saved to %s)");
   65 constext txt_art_thread_regex_tag[] = N_("%s=article, %s=thread, %s=range, %s=hot, %s=pattern, %s=tagged, %s=quit: ");
   66 constext txt_art_unavailable[] = N_("Article unavailable");
   67 constext txt_art_undeleted[] = N_("Article undeleted.");
   68 constext txt_art_x_of_n[] = N_("Article %4d of %4d");
   69 constext txt_article_cancelled[] = "Article cancelled by author.\n";
   70 constext txt_article_plural[] = N_("articles");
   71 constext txt_article_reposted[] = N_("This is a repost of the following article:");
   72 constext txt_article_singular[] = N_("article");
   73 constext txt_article_upper[] = N_("Article");
   74 constext txt_articles_mailed[] = N_("-- %d %s mailed --");
   75 constext txt_at_s[] = N_(" at %s");
   76 constext txt_attach[] = N_("%*s[-- %s/%s, encoding %s%s%s, %d lines%s%s --]\n");
   77 constext txt_attach_charset[] = N_(", charset: ");
   78 constext txt_attach_unsup_charset[] = N_("%*s[-- charset %s not supported --]\n");
   79 constext txt_attach_description[] = N_("%*s[-- Description: %s --]\n");
   80 constext txt_attachment_lines[] = N_("%d lines");
   81 constext txt_attachment_menu[] = N_("Attachment Menu");
   82 constext txt_attachment_menu_com[] = N_("Attachment Menu Commands");
   83 constext txt_attachment_no_name[] = N_("<no name>");
   84 constext txt_attachment_saved[] = N_("Attachment saved successfully. (%s)");
   85 constext txt_attachments_saved[] = N_("%d of %d attachments saved successfully.");
   86 constext txt_attachment_select[] = N_("Select attachment> ");
   87 constext txt_attachment_tagged[] = N_("Tagged attachment");
   88 constext txt_attachments_tagged[] = N_("%d attachments tagged");
   89 constext txt_attachment_untagged[] = N_("Untagged attachment");
   90 constext txt_attrib_menu_com[] = N_("Attributes Menu Commands");
   91 constext txt_attrib_no_scope[] = N_("attribute with no scope: %s");
   92 #ifdef NNTP_ABLE
   93     constext txt_auth_failed[] = N_("%d Authentication failed");
   94     constext txt_auth_failed_nopass[] = N_("NNTP authorization password not found for %s");
   95     constext txt_auth_needed[] = N_("Server expects authentication.\n");
   96     constext txt_auth_pass[] = N_("    Please enter password: ");
   97     constext txt_auth_user[] = N_("    Please enter username: ");
   98     constext txt_authorization_ok[] = N_("Authorized for user: %s\n");
   99     constext txt_authorization_fail[] = N_("Authorization failed for user: %s\n");
  100 #endif /* NNTP_ABLE */
  101 constext txt_author_search_backwards[] = N_("Author search backwards [%s]> ");
  102 constext txt_author_search_forwards[] = N_("Author search forwards [%s]> ");
  103 constext txt_autosubscribed[] = N_("\nAutosubscribed to %s");
  104 constext txt_autosubscribing_groups[] = N_("Autosubscribing groups...\n");
  105 constext txt_autoselecting_articles[] = N_("Autoselecting articles (use '%s' to see all unread) ...");
  106 
  107 constext txt_bad_active_file[] = N_("Active file corrupt - %s");
  108 constext txt_bad_article[] = N_("Article to be posted resulted in errors/warnings. %s=quit, %s=Menu, %s=edit: ");
  109 constext txt_bad_attrib[] = N_("Unrecognized attribute: %s");
  110 constext txt_bad_command[] = N_("Bad command. Type '%s' for help.");
  111 constext txt_base64[] = "base64";
  112 constext txt_base_article[] = N_("Base article");
  113 constext txt_base_article_range[] = N_("Base article range");
  114 constext txt_batch_update_unavail[] = N_("%s: Updating of index files not supported: cache_overview_files=%s");
  115 constext txt_begin_of_art[] = N_("*** Beginning of article ***");
  116 constext txt_begin_of_page[] = N_("*** Beginning of page ***");
  117 
  118 constext txt_cancel_article[] = N_("Cancel (delete) or supersede (overwrite) article [%%s]? (%s/%s/%s): ");
  119 constext txt_cancelling_art[] = N_("Cancelling article...");
  120 constext txt_cannot_create_uniq_name[] = "Can't create unique tempfile-name";
  121 constext txt_cannot_create[] = N_("Cannot create %s");
  122 constext txt_cannot_find_base_art[] = N_("Can't find base article %d");
  123 constext txt_cannot_open[] = N_("Can't open %s");
  124 constext txt_cannot_open_for_saving[] = N_("Couldn't open %s for saving");
  125 constext txt_cannot_post[] = N_("*** Posting not allowed ***");
  126 constext txt_cannot_post_group[] = N_("Posting is not allowed to %s");
  127 #ifdef NNTP_ABLE
  128     constext txt_cannot_retrieve[] = N_("Can't retrieve %s");
  129 #endif /* NNTP_ABLE */
  130 constext txt_cannot_write_to_directory[] = N_("%s is a directory");
  131 constext txt_catchup[] = N_("Catchup");
  132 constext txt_catchup_group[] = N_("Catchup %s...");
  133 constext txt_catchup_all_read_groups[] = N_("Catchup all groups entered during this session?");
  134 constext txt_catchup_despite_tags[] = N_("You have tagged articles in this group - catchup anyway?");
  135 constext txt_catchup_update_info[] = N_("%s %d %s in %lu seconds\n");
  136 constext txt_caughtup[] = N_("Caughtup");
  137 constext txt_check_article[] = N_("Check Prepared Article");
  138 constext txt_checking_new_groups[] = N_("Checking for new groups... ");
  139 constext txt_checking_for_news[] = N_("Checking for news...");
  140 constext txt_choose_post_process_type[] = N_("Post-process %s=no, %s=yes, %s=shar, %s=quit: ");
  141 #ifdef HAVE_COLOR
  142     constext txt_color_off[] = N_("ANSI color disabled");
  143     constext txt_color_on[] = N_("ANSI color enabled");
  144 #endif /* HAVE_COLOR */
  145 constext txt_command_failed[] = N_("Command failed: %s");
  146 constext txt_cook_article_failed_exiting[] = N_("Cook article failed, %s is exiting");
  147 constext txt_confirm_select_on_exit[] = N_("Mark not selected articles read?");
  148 #ifdef NNTP_ABLE
  149     constext txt_connecting[] = N_("Connecting to %s...");
  150 #endif /* NNTP_ABLE */
  151 constext txt_cr[] = N_("<CR>");
  152 constext txt_creating_active[] = N_("Creating active file for saved groups...\n");
  153 constext txt_creating_newsrc[] = N_("Creating newsrc file...\n");
  154 
  155 constext txt_default[] = N_("Default");
  156 constext txt_delete_processed_files[] = N_("Delete saved files that have been post processed?");
  157 constext txt_deleting[] = N_("Deleting temporary files...");
  158 
  159 constext txt_end_of_art[] = N_("*** End of article ***");
  160 constext txt_end_of_arts[] = N_("*** End of articles ***");
  161 constext txt_end_of_attachments[] = N_("*** End of attachments ***");
  162 constext txt_end_of_groups[] = N_("*** End of groups ***");
  163 constext txt_end_of_page[] = N_("*** End of page ***");
  164 constext txt_end_of_scopes[] = N_("*** End of scopes ***");
  165 constext txt_end_of_thread[] = N_("*** End of thread ***");
  166 constext txt_end_of_urls[] = N_("*** End of URLs ***");
  167 constext txt_enter_getart_limit[] = N_("Enter limit of articles to get> ");
  168 constext txt_enter_message_id[] = N_("Enter Message-ID to go to> ");
  169 constext txt_enter_next_thread[] = N_(" and enter next unread thread");
  170 constext txt_enter_next_unread_art[] = N_(" and enter next unread article");
  171 constext txt_enter_next_unread_group[] = N_(" and enter next unread group");
  172 constext txt_enter_option_num[] = N_("Enter option number> ");
  173 constext txt_enter_range[] = N_("Enter range [%s]> ");
  174 constext txt_error_approved[] = N_("\nWarning: Approved: header used.\n");
  175 constext txt_error_asfail[] = "%s: assertion failure: %s (%d): %s\n";
  176 constext txt_error_bad_approved[] = N_("\nError: Bad address in Approved: header.\n");
  177 constext txt_error_bad_from[] = N_("\nError: Bad address in From: header.\n");
  178 constext txt_error_bad_msgidfqdn[] = N_("\nError: Bad FQDN in Message-ID: header.\n");
  179 constext txt_error_bad_replyto[] = N_("\nError: Bad address in Reply-To: header.\n");
  180 constext txt_error_bad_to[] = N_("\nError: Bad address in To: header.\n");
  181 #ifndef NO_LOCKING
  182     constext txt_error_cant_unlock[] = N_("Can't unlock %s");
  183     constext txt_error_couldnt_dotlock[] = N_("Couldn't dotlock %s - article not appended!");
  184     constext txt_error_couldnt_lock[] = N_("Couldn't lock %s - article not appended!");
  185 #endif /* !NO_LOCKING */
  186 constext txt_error_copy_fp[] = "copy_fp() failed";
  187 constext txt_error_corrupted_file[] = N_("Corrupted file %s");
  188 constext txt_error_fseek[] = "fseek() error on [%s]";
  189 constext txt_error_followup_poster[] = N_("\nError: Followup-To \"poster\" and a newsgroup is not allowed!\n");
  190 constext txt_error_format_string[] = N_("Error: Custom format exceeds screen width. Using default \"%s\".");
  191 constext txt_error_gnksa_internal[] = N_("Internal error in GNKSA routine - send bug report.\n");
  192 constext txt_error_gnksa_langle[] = N_("Left angle bracket missing in route address.\n");
  193 constext txt_error_gnksa_lparen[] = N_("Left parenthesis missing in old-style address.\n");
  194 constext txt_error_gnksa_rparen[] = N_("Right parenthesis missing in old-style address.\n");
  195 constext txt_error_gnksa_atsign[] = N_("At-sign missing in mail address.\n");
  196 constext txt_error_gnksa_sgl_domain[] = N_("Single component FQDN is not allowed. Add your domain.\n");
  197 constext txt_error_gnksa_inv_domain[] = N_("Invalid domain. Send bug report if your top level domain really exists.\nUse .invalid as top level domain for munged addresses.\n");
  198 constext txt_error_gnksa_ill_domain[] = N_("Illegal domain. Send bug report if your top level domain really exists.\nUse .invalid as top level domain for munged addresses.\n");
  199 constext txt_error_gnksa_unk_domain[] = N_("Unknown domain. Send bug report if your top level domain really exists.\nUse .invalid as top level domain for munged addresses.\n");
  200 constext txt_error_gnksa_fqdn[] = N_("Illegal character in FQDN.\n");
  201 constext txt_error_gnksa_zero[] = N_("Zero length FQDN component not allowed.\n");
  202 constext txt_error_gnksa_length[] = N_("FQDN component exceeds maximum allowed length (63 chars).\n");
  203 constext txt_error_gnksa_hyphen[] = N_("FQDN component may not start or end with hyphen.\n");
  204 constext txt_error_gnksa_begnum[] = N_("FQDN component may not start with digit.\n");
  205 constext txt_error_gnksa_bad_lit[] = N_("Domain literal has impossible numeric value.\n");
  206 constext txt_error_gnksa_local_lit[] = N_("Domain literal is for private use only and not allowed for global use.\n");
  207 constext txt_error_gnksa_rbracket[] = N_("Right bracket missing in domain literal.\n");
  208 constext txt_error_gnksa_lp_missing[] = N_("Missing localpart of mail address.\n");
  209 constext txt_error_gnksa_lp_invalid[] = N_("Illegal character in localpart of mail address.\n");
  210 constext txt_error_gnksa_lp_zero[] = N_("Zero length localpart component not allowed.\n");
  211 constext txt_error_gnksa_rn_unq[] = N_("Illegal character in realname.\nUnquoted words may not contain '!()<>@,;:\\.[]' in route addresses.\n");
  212 constext txt_error_gnksa_rn_qtd[] = N_("Illegal character in realname.\nQuoted words may not contain '()<>\\'.\n");
  213 constext txt_error_gnksa_rn_enc[] = N_("Illegal character in realname.\nEncoded words may not contain '!()<>@,;:\"\\.[]/=' in parameter.\n");
  214 constext txt_error_gnksa_rn_encsyn[] = N_("Bad syntax in encoded word used in realname.\n");
  215 constext txt_error_gnksa_rn_paren[] = N_("Illegal character in realname.\nUnquoted words may not contain '()<>\\' in old-style addresses.\n");
  216 constext txt_error_gnksa_rn_invalid[] = N_("Illegal character in realname.\nControl characters and unencoded 8bit characters > 127 are not allowed.\n");
  217 constext txt_error_header_and_body_not_separate[] = N_("\nError: No blank line found after header.\n");
  218 constext txt_error_header_format[] = N_("\nError: Illegal formatted %s.\n");
  219 /* TODO: fixme, US-ASCII is not the only 7bit charset we know about */
  220 constext txt_error_header_line_bad_charset[] = N_("\n\
  221 Error: Posting contains non-ASCII characters but MM_CHARSET is set to\n\
  222        US-ASCII  - please change this setting to a suitable value for\n\
  223        your language  using the  M)enu of configurable  options or by\n\
  224        editing tinrc.\n");
  225 constext txt_error_header_line_bad_encoding[] = N_("\n\
  226 Error: Posting contains  non-ASCII characters  but the  MIME encoding\n\
  227        for news  messages  is set  to \"7bit\"  -  please change this\n\
  228        setting to \"8bit\" or \"quoted-printable\" depending  on what\n\
  229        is more common  in your part  of the world.  This can  be done\n\
  230        using the M)enu of configurable options or by editing tinrc.\n");
  231 constext txt_error_header_line_blank[] = N_("\nError: Article starts with blank line instead of header\n");
  232 constext txt_error_header_line_colon[] = N_("\nError: Header on line %d does not have a colon after the header name:\n%s\n");
  233 constext txt_error_header_line_empty[] = N_("\nError: The \"%s:\" line is empty.\n");
  234 constext txt_error_header_line_missing[] = N_("\nError: The \"%s:\" line is missing from the article header.\n");
  235 constext txt_error_header_line_not_7bit[] = N_("\nError: %s contains non 7bit chars.\n");
  236 constext txt_error_header_line_space[] = N_("\nError: Header on line %d does not have a space after the colon:\n%s\n");
  237 constext txt_error_header_duplicate[] = N_("\nError: There are multiple (%d) \"%s:\" lines in the header.\n");
  238 constext txt_error_insecure_permissions[] = N_("Insecure permissions of %s (%o)");
  239 #ifdef NNTP_ABLE
  240     constext txt_error_invalid_response_to_group[] = N_("Invalid response to GROUP command, %s");
  241 #endif /* NNTP_ABLE */
  242 #if defined(HAVE_SETLOCALE) && !defined(NO_LOCALE)
  243     constext txt_error_locale[] = "Can't set the specified locale!";
  244 #endif /* HAVE_SETLOCALE && !NO_LOCALE */
  245 constext txt_error_mime_end[] = N_("MIME parse error: Unexpected end of %s/%s article");
  246 constext txt_error_mime_start[] = N_("MIME parse error: Start boundary whilst reading headers");
  247 constext txt_error_newsgroups_poster[] = N_("\nError: \"poster\" is not allowed in Newsgroups!\n");
  248 constext txt_error_no_domain_name[] = N_("Can't get a (fully-qualified) domain-name!");
  249 constext txt_error_no_enter_permission[] = N_("No permissions to go into %s\n");
  250 #ifdef NNTP_INEWS
  251     constext txt_error_no_from[] = N_("\nError: From: line missing.\n");
  252 #endif /* NNTP_INEWS */
  253 constext txt_error_no_read_permission[] = N_("No read permissions for %s\n");
  254 constext txt_error_no_such_file[] = N_("File %s does not exist\n");
  255 constext txt_error_no_write_permission[] = N_("No write permissions for %s\n");
  256 constext txt_error_passwd_missing[] = N_("Can't get user information (/etc/passwd missing?)");
  257 constext txt_error_plural[] = N_("errors");
  258 #ifndef FORGERY
  259     constext txt_error_sender_in_header_not_allowed[] = N_("\nError on line %d: \"Sender:\" header not allowed (it will be added for you)\n");
  260 #endif /* !FORGERY */
  261 constext txt_error_server_has_no_listed_groups[] = N_("Server has non of the groups listed in %s");
  262 constext txt_error_singular[] = N_("error");
  263 constext txt_error_unknown_dlevel[] = N_("Unknown display level");
  264 constext txt_esc[] = N_("<ESC>");
  265 constext txt_exiting[] = N_("Exiting...");
  266 constext txt_external_mail_done[] = N_("leaving external mail-reader");
  267 constext txt_extracting_shar[] = N_("Extracting %s...");
  268 
  269 constext txt_filesystem_full[] = N_("Error writing %s file. Filesystem full? File reset to previous state.");
  270 constext txt_filesystem_full_backup[] = N_("Error making backup of %s file. Filesystem full?");
  271 constext txt_filter_global_rules[] = N_("Filtering global rules (%d/%d)...");
  272 constext txt_filter_rule_created[] = N_("Rule created by: ");
  273 constext txt_feed_pattern[] = N_("Enter pattern [%s]> ");
  274 constext txt_followup_newsgroups[] = N_("\nYou requested followups to your article to go to the following %s:\n");
  275 constext txt_followup_poster[] = N_("  %s\t Answers will be directed to you by mail.\n");
  276 constext txt_forwarded[] = N_("-- forwarded message --\n");
  277 constext txt_forwarded_end[] = N_("-- end of forwarded message --\n");
  278 constext txt_filter_file[] = N_("# Format:\n\
  279 #   comment=STRING    Optional. Multiple lines allowed. Comments must be placed\n\
  280 #                     at the beginning of a rule, or they will be moved to the\n\
  281 #                     next rule. '#' is not a valid keyword for a comment!\n\
  282 #   group=STRING      Mandatory. Newsgroups list (e.g. comp.*,!*sources*).\n\
  283 #   case=NUM          Mandatory. Compare=0 / ignore=1 case when filtering.\n\
  284 #   score=NUM|STRING  Mandatory. Score to give. Either:\n\
  285 #     score=NUM         A number (e.g. 70). Or:\n\
  286 #     score=STRING      One of the two keywords: 'hot' or 'kill'.\n\
  287 #   subj=STRING       Optional. Subject: line (e.g. How to be a wizard).\n\
  288 #   from=STRING       Optional. From: line (e.g. *Craig Shergold*).\n\
  289 #   msgid=STRING      Optional. Message-ID: line (e.g. <123@ether.net>) with\n\
  290 #                     full references.\n\
  291 #   msgid_last=STRING Optional. Like above, but with last reference only.\n\
  292 #   msgid_only=STRING Optional. Like above, but without references.\n\
  293 #   refs_only=STRING  Optional. References: line (e.g. <123@ether.net>) without\n\
  294 #                     Message-ID:\n\
  295 #   lines=[<>]?NUM    Optional. Lines: line. '<' or '>' are optional.\n\
  296 #   gnksa=[<>]?NUM    Optional. GNKSA parse_from() return code. '<' or '>' opt.\n\
  297 #   xref=PATTERN      Optional. Kill pattern (e.g. alt.flame*)\n\
  298 #   time=NUM          Optional. time_t value when rule expires\n#\n");
  299 constext txt_filter_score[] = N_("Enter score for rule (default=%d): ");
  300 constext txt_filter_score_help[] = N_("Enter the score weight (range 0 < score <= %d)"); /* SCORE_MAX */
  301 constext txt_full[] = N_("Full");
  302 constext txt_filter_comment[] = N_("Comment (optional)  : ");
  303 constext txt_filter_text_type[] = N_("Apply pattern to    : ");
  304 constext txt_from_line_only[] = N_("From: line (ignore case)      ");
  305 constext txt_from_line_only_case[] = N_("From: line (case sensitive)   ");
  306 #ifdef NNTP_ABLE
  307     constext txt_gethostbyname[] = N_("%s%s: Unknown host.\n");
  308 #endif /* NNTP_ABLE */
  309 constext txt_global[] = N_("global ");
  310 constext txt_group_aliased[] = N_("Please use %.100s instead");
  311 constext txt_group_bogus[] = N_("%s is bogus");
  312 constext txt_group_is_moderated[] = N_("Group %s is moderated. Continue?");
  313 constext txt_group_plural[] = N_("groups");
  314 constext txt_group_rereading[] = N_("Rereading %s...");
  315 constext txt_group_select_com[] = N_("Top Level Commands");
  316 constext txt_group_selection[] = N_("Group Selection");
  317 constext txt_group_singular[] = N_("group");
  318 constext txt_grpdesc_disabled[] = N_("*** Group descriptions are disabled according to current select_format ***");
  319 
  320 constext txt_help_filter_comment[] = N_("One or more lines of comment. <CR> to add a line or proceed if line is empty.");
  321 constext txt_help_filter_from[] = N_("From: line to add to filter file. <SPACE> toggles & <CR> sets.");
  322 constext txt_help_filter_lines[] = N_("Linecount of articles to be filtered. < for less, > for more, = for equal.");
  323 constext txt_help_filter_msgid[] = N_("Message-ID: line to add to filter file. <SPACE> toggles & <CR> sets.");
  324 constext txt_help_filter_subj[] = N_("Subject: line to add to filter file. <SPACE> toggles & <CR> sets.");
  325 constext txt_help_filter_text[] = N_("Enter text pattern to filter if Subject: & From: lines are not what you want.");
  326 constext txt_help_filter_text_type[] = N_("Select where text pattern should be applied. <SPACE> toggles & <CR> sets.");
  327 constext txt_help_filter_time[] = N_("Expiration time in days for the entered filter. <SPACE> toggles & <CR> sets.");
  328 constext txt_help_kill_scope[] = N_("Apply kill only to current group or all groups. <SPACE> toggles & <CR> sets.");
  329 constext txt_help_select_scope[] = N_("Apply select to current group or all groups. <SPACE> toggles & <CR> sets.");
  330 constext txt_help_article_autokill[] = N_("kill an article via a menu");
  331 constext txt_help_article_autoselect[] = N_("auto-select (hot) an article via a menu");
  332 constext txt_help_article_browse_urls[] = N_("Browse URLs in article");
  333 constext txt_help_article_by_num[] = N_("0 - 9\t  display article by number in current thread");
  334 #ifndef NO_POSTING
  335     constext txt_help_article_cancel[] = N_("cancel (delete) or supersede (overwrite) current article");
  336     constext txt_help_article_followup[] = N_("post followup to current article");
  337     constext txt_help_article_followup_no_quote[] = N_("post followup (don't copy text) to current article");
  338     constext txt_help_article_followup_with_header[] = N_("post followup to current article quoting complete headers");
  339     constext txt_help_article_repost[] = N_("repost chosen article to another group");
  340 #endif /* !NO_POSTING */
  341 constext txt_help_article_edit[] = N_("edit article (mail-groups only)");
  342 constext txt_help_article_first_in_thread[] = N_("display first article in current thread");
  343 constext txt_help_article_first_page[] = N_("display first page of article");
  344 constext txt_help_article_last_in_thread[] = N_("display last article in current thread");
  345 constext txt_help_article_last_page[] = N_("display last page of article");
  346 constext txt_help_article_mark_thread_read[] = N_("mark rest of thread as read and advance to next unread");
  347 constext txt_help_article_next[] = N_("display next article");
  348 constext txt_help_article_next_thread[] = N_("display first article in next thread");
  349 constext txt_help_article_next_unread[] = N_("display next unread article");
  350 constext txt_help_article_parent[] = N_("go to the article that this one followed up");
  351 constext txt_help_article_prev[] = N_("display previous article");
  352 constext txt_help_article_prev_unread[] = N_("display previous unread article");
  353 constext txt_help_article_quick_kill[] = N_("quickly kill an article using defaults");
  354 constext txt_help_article_quick_select[] = N_("quickly auto-select (hot) an article using defaults");
  355 constext txt_help_article_quit_to_select_level[] = N_("return to group selection level");
  356 constext txt_help_article_reply[] = N_("reply through mail to author");
  357 constext txt_help_article_reply_no_quote[] = N_("reply through mail (don't copy text) to author");
  358 constext txt_help_article_reply_with_header[] = N_("reply through mail to author quoting complete headers");
  359 constext txt_help_article_search_backwards[] = N_("search backwards within this article");
  360 constext txt_help_article_search_forwards[] = N_("search forwards within this article");
  361 constext txt_help_article_show_raw[] = N_("show article in raw-mode (including all headers)");
  362 constext txt_help_article_skip_quote[] = N_("skip next block of included text");
  363 constext txt_help_article_toggle_formfeed[] = N_("toggle display of sections hidden by a form-feed (^L) on/off");
  364 constext txt_help_article_toggle_headers[] = N_("toggle display of all headers");
  365 constext txt_help_article_toggle_highlight[] = N_("toggle word highlighting on/off");
  366 constext txt_help_article_toggle_rot13[] = N_("toggle ROT-13 (basic decode) for current article");
  367 constext txt_help_article_toggle_tabwidth[] = N_("toggle tabwidth 4 <-> 8");
  368 constext txt_help_article_toggle_tex2iso[] = N_("toggle german TeX style decoding for current article");
  369 constext txt_help_article_toggle_uue[] = N_("toggle display of uuencoded sections");
  370 constext txt_help_article_view_attachments[] = N_("View/pipe/save multimedia attachments");
  371 constext txt_help_attachment_first[] = N_("choose first attachment in list");
  372 constext txt_help_attachment_goto[] = N_("0 - 9\t  choose attachment by number");
  373 constext txt_help_attachment_last[] = N_("choose last attachment in list");
  374 #ifndef DONT_HAVE_PIPING
  375 constext txt_help_attachment_pipe[] = N_("pipe attachment into command");
  376 constext txt_help_attachment_pipe_raw[] = N_("pipe raw attachment into command");
  377 #endif /* !DONT_HAVE_PIPING */
  378 constext txt_help_attachment_save[] = N_("save attachment to disk");
  379 constext txt_help_attachment_search_forwards[] = N_("search for attachments forwards");
  380 constext txt_help_attachment_search_backwards[] = N_("search for attachments backwards");
  381 constext txt_help_attachment_select[] = N_("view attachment");
  382 constext txt_help_attachment_tag[] = N_("tag attachment");
  383 constext txt_help_attachment_tag_pattern[] = N_("tag attachments that match user specified pattern");
  384 constext txt_help_attachment_toggle_tagged[] = N_("reverse tagging on all attachments (toggle)");
  385 constext txt_help_attachment_untag[] = N_("untag all tagged attachments");
  386 constext txt_help_attachment_toggle_info_line[] = N_("toggle info message in last line (name/description of attachment)");
  387 constext txt_help_attrib_first_opt[] = N_("choose first attribute in list");
  388 constext txt_help_attrib_goto_opt[] = N_("0 - 9\t  choose attribute by number");
  389 constext txt_help_attrib_last_opt[] = N_("choose last attribute in list");
  390 constext txt_help_attrib_reset_attrib[] = N_("reset attribute to a default value");
  391 constext txt_help_attrib_search_opt_backwards[] = N_("search forwards for an attribute");
  392 constext txt_help_attrib_search_opt_forwards[] = N_("search backwards for an attribute");
  393 constext txt_help_attrib_select[] = N_("select attribute");
  394 constext txt_help_attrib_toggle_attrib[] = N_("toggle back to options menu when invoked from there");
  395 constext txt_help_bug[] = N_("report bug or comment via mail to %s");
  396 constext txt_help_config_first_opt[] = N_("choose first option in list");
  397 constext txt_help_config_goto_opt[] = N_("0 - 9\t  choose option by number");
  398 constext txt_help_config_last_opt[] = N_("choose last option in list");
  399 constext txt_help_config_scope_menu[] = N_("start scopes menu");
  400 constext txt_help_config_search_opt_backwards[] = N_("search forwards for an option");
  401 constext txt_help_config_search_opt_forwards[] = N_("search backwards for an option");
  402 constext txt_help_config_select[] = N_("select option");
  403 constext txt_help_config_toggle_attrib[] = N_("toggle to attributes menu");
  404 constext txt_help_global_article_range[] = N_("choose range of articles to be affected by next command");
  405 constext txt_help_global_esc[] = N_("escape from command prompt");
  406 constext txt_help_global_edit_filter[] = N_("edit filter file");
  407 constext txt_help_global_help[] = N_("get help");
  408 constext txt_help_global_last_art[] = N_("display last article viewed");
  409 constext txt_help_global_line_down[] = N_("down one line");
  410 constext txt_help_global_line_up[] = N_("up one line");
  411 constext txt_help_global_lookup_art[] = N_("go to article chosen by Message-ID");
  412 constext txt_help_global_mail[] = N_("mail article/thread/hot/pattern/tagged articles to someone");
  413 constext txt_help_global_option_menu[] = N_("menu of configurable options");
  414 constext txt_help_global_page_down[] = N_("down one page");
  415 constext txt_help_global_page_up[] = N_("up one page");
  416 #ifndef NO_POSTING
  417     constext txt_help_global_post[] = N_("post (write) article to current group");
  418     constext txt_help_global_post_postponed[] = N_("post postponed articles");
  419 #endif /* !NO_POSTING */
  420 constext txt_help_global_posting_history[] = N_("list articles posted by you (from posted file)");
  421 constext txt_help_global_previous_menu[] = N_("return to previous menu");
  422 constext txt_help_global_quit_tin[] = N_("quit tin immediately");
  423 constext txt_help_global_redraw_screen[] = N_("redraw page");
  424 constext txt_help_global_save[] = N_("save article/thread/hot/pattern/tagged articles to file");
  425 constext txt_help_global_auto_save[] = N_("save marked articles automatically without user prompts");
  426 constext txt_help_global_scroll_down[] = N_("scroll the screen one line down");
  427 constext txt_help_global_scroll_up[] = N_("scroll the screen one line up");
  428 constext txt_help_global_search_auth_backwards[] = N_("search for articles by author backwards");
  429 constext txt_help_global_search_auth_forwards[] = N_("search for articles by author forwards");
  430 constext txt_help_global_search_body[] = N_("search all articles for a given string (this may take some time)");
  431 constext txt_help_global_search_body_comment[] = N_(" \t  (searches are case-insensitive and wrap around to all articles)");
  432 constext txt_help_global_search_subj_backwards[] = N_("search for articles by Subject line backwards");
  433 constext txt_help_global_search_subj_forwards[] = N_("search for articles by Subject line forwards");
  434 constext txt_help_global_search_repeat[] = N_("repeat last search");
  435 constext txt_help_global_tag[] = N_("tag current article for reposting/mailing/piping/printing/saving");
  436 constext txt_help_global_toggle_info_line[] = N_("toggle info message in last line (subject/description)");
  437 constext txt_help_global_toggle_inverse_video[] = N_("toggle inverse video");
  438 constext txt_help_global_toggle_mini_help[] = N_("toggle mini help menu display");
  439 constext txt_help_global_toggle_subj_display[] = N_("cycle the display of authors email address, real name, both or neither");
  440 constext txt_help_global_version[] = N_("show version information");
  441 constext txt_help_group_catchup[] = N_("mark all articles as read and return to group selection menu");
  442 constext txt_help_group_catchup_next[] = N_("mark all articles as read and enter next group with unread articles");
  443 constext txt_help_group_first_thread[] = N_("choose first thread in list");
  444 constext txt_help_group_last_thread[] = N_("choose last thread in list");
  445 constext txt_help_group_list_thread[] = N_("list articles within current thread (bring up Thread sub-menu)");
  446 constext txt_help_group_mark_article_unread[] = N_("mark article as unread");
  447 constext txt_help_group_mark_thread_read[] = N_("mark current thread, range or tagged threads as read");
  448 constext txt_help_group_mark_thread_unread[] = N_("mark current thread, range or tagged threads as unread");
  449 constext txt_help_mark_feed_read[] = N_("mark current/range/selected/pattern/tagged as read after prompting");
  450 constext txt_help_mark_feed_unread[] = N_("mark current/range/selected/pattern/tagged as unread after prompting");
  451 constext txt_help_group_mark_unsel_art_read[] = N_("toggle display of all/selected articles");
  452 constext txt_help_group_next[] = N_("display next group");
  453 constext txt_help_group_prev[] = N_("display previous group");
  454 constext txt_help_group_reverse_thread_selection[] = N_("toggle all selections (all articles)");
  455 constext txt_help_group_select_all[] = N_("select group (make \"hot\")");
  456 constext txt_help_group_select_thread[] = N_("select thread");
  457 constext txt_help_group_select_thread_if_unread_selected[] = N_("select threads if at least one unread article is selected");
  458 constext txt_help_group_select_thread_pattern[] = N_("select threads that match user specified pattern");
  459 constext txt_help_group_tag_parts[] = N_("tag all parts of current multipart-message in order");
  460 constext txt_help_group_thread_by_num[] = N_("0 - 9\t  choose thread by number");
  461 constext txt_help_group_toggle_getart_limit[] = N_("toggle limit number of articles to get, and reload");
  462 constext txt_help_group_toggle_read_articles[] = N_("toggle display of all/unread articles");
  463 constext txt_help_group_toggle_thread_selection[] = N_("toggle selection of thread");
  464 constext txt_help_group_toggle_threading[] = N_("cycle through threading options available");
  465 constext txt_help_group_undo_thread_selection[] = N_("undo all selections (all articles)");
  466 constext txt_help_group_untag_thread[] = N_("untag all tagged threads");
  467 constext txt_help_scope_add[] = N_("add new scope");
  468 constext txt_help_scope_del[] = N_("delete scope");
  469 constext txt_help_scope_edit_attrib_file[] = N_("edit attributes file");
  470 constext txt_help_scope_first_scope[] = N_("choose first scope in list");
  471 constext txt_help_scope_goto_scope[] = N_("0 - 9\t  choose scope by number");
  472 constext txt_help_scope_last_scope[] = N_("choose last scope in list");
  473 constext txt_help_scope_move[] = N_("move scope");
  474 constext txt_help_scope_rename[] = N_("rename scope");
  475 constext txt_help_scope_select[] = N_("select scope");
  476 constext txt_help_select_catchup[] = N_("mark all articles in group as read");
  477 constext txt_help_select_catchup_next_unread[] = N_("mark all articles in group as read and move to next unread group");
  478 constext txt_help_select_first_group[] = N_("choose first group in list");
  479 constext txt_help_select_goto_group[] = N_("choose group by name");
  480 constext txt_help_select_group_by_num[] = N_("0 - 9\t  choose group by number");
  481 constext txt_help_select_group_range[] = N_("choose range of groups to be affected by next command");
  482 constext txt_help_select_last_group[] = N_("choose last group in list");
  483 #ifdef NNTP_ABLE
  484     constext txt_help_select_lookup_group[] = N_("list groups which an article has been posted to (by Message-ID)");
  485     constext txt_help_select_lookup_group_comment[] = N_(" \t  (go to article if at least one of the groups is available)");
  486 #endif /* NNTP_ABLE */
  487 constext txt_help_select_mark_group_unread[] = N_("mark all articles in chosen group unread");
  488 constext txt_help_select_move_group[] = N_("move chosen group within list");
  489 constext txt_help_select_next_unread_group[] = N_("choose next group with unread news");
  490 constext txt_help_select_quit[] = N_("quit");
  491 constext txt_help_select_quit_no_write[] = N_("quit without saving configuration changes");
  492 constext txt_help_select_read_group[] = N_("read chosen group");
  493 constext txt_help_select_reset_newsrc[] = N_("reset .newsrc (all available articles in groups marked unread)");
  494 constext txt_help_select_search_group_backwards[] = N_("search backwards for a group name");
  495 constext txt_help_select_search_group_comment[] = N_(" \t  (all searches are case-insensitive and wrap around)");
  496 constext txt_help_select_search_group_forwards[] = N_("search forwards for a group name");
  497 constext txt_help_select_subscribe[] = N_("subscribe to chosen group");
  498 constext txt_help_select_subscribe_pattern[] = N_("subscribe to groups that match pattern");
  499 constext txt_help_select_sync_with_active[] = N_("reread active file to check for any new news");
  500 constext txt_help_select_toggle_descriptions[] = N_("toggle display of group name only or group name plus description");
  501 constext txt_help_select_toggle_read_groups[] = N_("toggle display to show all/unread subscribed groups");
  502 constext txt_help_select_unsubscribe[] = N_("unsubscribe from chosen group");
  503 constext txt_help_select_unsubscribe_pattern[] = N_("unsubscribe from groups that match pattern");
  504 constext txt_help_select_sort_active[] = N_("sort the list of groups");
  505 constext txt_help_select_yank_active[] = N_("toggle display to show all/subscribed groups");
  506 constext txt_help_thread_article_by_num[] = N_("0 - 9\t  choose article by number");
  507 constext txt_help_thread_catchup[] = N_("mark thread as read and return to group index page");
  508 constext txt_help_thread_catchup_next_unread[] = N_("mark thread as read and enter next unread thread or group");
  509 constext txt_help_thread_first_article[] = N_("choose first article in list");
  510 constext txt_help_thread_last_article[] = N_("choose last article in list");
  511 constext txt_help_thread_mark_article_read[] = N_("mark art, range or tagged arts as read; move crsr to next unread art");
  512 constext txt_help_thread_mark_article_unread[] = N_("mark article, range or tagged articles as unread");
  513 constext txt_help_thread_mark_thread_unread[] = N_("mark current thread as unread");
  514 constext txt_help_thread_read_article[] = N_("read chosen article");
  515 constext txt_help_title_disp[] = N_("Display properties\n------------------");
  516 constext txt_help_title_misc[] = N_("Miscellaneous\n-------------");
  517 constext txt_help_title_navi[] = N_("Moving around\n-------------");
  518 constext txt_help_title_ops[] = N_("Group/thread/article operations\n-------------------------------");
  519 constext txt_help_title_attachment_ops[] = N_("Attachment operations\n---------------------");
  520 constext txt_help_title_attrib_ops[] = N_("Attribute operations\n--------------------");
  521 constext txt_help_title_config_ops[] = N_("Option operations\n-----------------");
  522 constext txt_help_title_scope_ops[] = N_("Scope operations\n----------------");
  523 constext txt_help_title_url_ops[] = N_("URL operations\n--------------");
  524 constext txt_help_url_first_url[] = N_("choose first URL in list");
  525 constext txt_help_url_goto_url[] = N_("0 - 9\t  choose URL by number");
  526 constext txt_help_url_last_url[] = N_("choose last URL in list");
  527 constext txt_help_url_search_forwards[] = N_("search for URLs forwards");
  528 constext txt_help_url_search_backwards[] = N_("search for URLs backwards");
  529 constext txt_help_url_select[] = N_("Open URL in browser");
  530 constext txt_help_url_toggle_info_line[] = N_("toggle info message in last line (URL)");
  531 
  532 constext txt_index_page_com[] = N_("Group Level Commands");
  533 constext txt_info_add_kill[] = N_("Kill filter added");
  534 constext txt_info_add_select[] = N_("Auto-selection filter added");
  535 constext txt_info_all_parts_tagged[] = N_("All parts tagged");
  536 constext txt_info_do_postpone[] = N_("Storing article for later posting");
  537 constext txt_info_enter_valid_character[] = N_("Please enter a valid character");
  538 constext txt_info_missing_part[] = N_("Missing part #%d");
  539 constext txt_info_nopostponed[] = N_("*** No postponed articles ***");
  540 constext txt_info_not_multipart_message[] = N_("Not a multi-part message");
  541 constext txt_info_not_subscribed[] = N_("You are not subscribed to this group");
  542 constext txt_info_no_previous_expression[] = N_("No previous expression");
  543 constext txt_info_no_write[] = N_("Operation disabled in no-overwrite mode");
  544 /* TODO: replace hardcoded key-name in txt_info_postponed */
  545 constext txt_info_postponed[] = N_("%d postponed %s, reuse with ^O...\n");
  546 constext txt_info_x_conversion_note[] = N_("X-Conversion-Note: multipart/alternative contents have been removed.\n\
  547   To get the whole article, turn alternative handling OFF in the Option Menu\n");
  548 constext txt_is_mailbox[] = N_("Save filename for %s/%s is a mailbox. Attachment not saved");
  549 constext txt_is_tex_encoded[] = N_("TeX2Iso encoded article");
  550 constext txt_incomplete[] = N_("incomplete ");
  551 /* TODO: replace hardcoded key-names */
  552 constext txt_intro_page[] = N_("\nWelcome to %s, a full screen threaded Netnews reader. It can read news locally\n\
  553 (ie. <spool>/news) or remotely (-r option)  from a NNTP (Network News Transport\n\
  554 Protocol) server. -h lists the available command line options.\n\n\
  555 %s  has four newsreading levels, the newsgroup selection page, the group index\n\
  556 page, the thread listing page and the article viewer. Help is available at each\n\
  557 level by pressing the 'h' command.\n\n\
  558 Move up/down by using the terminal arrow keys or 'j' and 'k'.  Use PgUp/PgDn or\n\
  559 Ctrl-U and Ctrl-D to page up/down. Enter a newsgroup by pressing RETURN/TAB.\n\n\
  560 Articles, threads, tagged articles or articles matching a pattern can be mailed\n\
  561 ('m' command), printed ('o' command), saved ('s' command), piped ('|' command).\n\
  562 Use  the 'w' command  to post a  news article,  the 'f'/'F' commands  to post a\n\
  563 follow-up to  an existing  news article  and the 'r'/'R' commands  to reply via\n\
  564 mail to an  existing news article author.  The 'M' command allows the operation\n\
  565 of %s to be configured via a menu.\n\n\
  566 For more information read the manual page, README, INSTALL, TODO and FTP files.\n\
  567 Please send bug-reports/comments to %s with the 'R' command.\n");
  568 constext txt_invalid_from[] = N_("Invalid  From: %s  line. Read the INSTALL file again.");
  569 #if defined(MULTIBYTE_ABLE) && !defined(NO_LOCALE)
  570     constext txt_invalid_multibyte_sequence[] = N_("Invalid multibyte sequence found\n");
  571 #endif /* MULTIBYTE_ABLE && !NO_LOCALE */
  572 #if defined(NNTP_INEWS) && !defined(FORGERY)
  573     constext txt_invalid_sender[] = N_("Invalid  Sender:-header %s");
  574 #endif /* NNTP_INEWS && !FORGERY */
  575 constext txt_inverse_off[] = N_("Inverse video disabled");
  576 constext txt_inverse_on[] = N_("Inverse video enabled");
  577 
  578 constext txt_keymap_missing_key[] = N_("Missing definition for %s\n");
  579 constext txt_keymap_invalid_key[] = N_("Invalid key definition '%s'\n");
  580 constext txt_keymap_invalid_name[] = N_("Invalid keyname '%s'\n");
  581 constext txt_keymap_upgraded[] = N_("Keymap file was upgraded to version %s\n");
  582 constext txt_kill_from[] = N_("Kill From:     [%s] (y/n): ");
  583 constext txt_kill_lines[] = N_("Kill Lines: (</>num): ");
  584 constext txt_kill_menu[] = N_("Kill Article Menu");
  585 constext txt_kill_msgid[] = N_("Kill Msg-Id:   [%s] (f/l/o/n): ");
  586 constext txt_kill_scope[] = N_("Kill pattern scope  : ");
  587 constext txt_kill_subj[] = N_("Kill Subject:  [%s] (y/n): ");
  588 constext txt_kill_text[] = N_("Kill text pattern   : ");
  589 constext txt_kill_time[] = N_("Kill time in days   : ");
  590 
  591 constext txt_last[] = N_("Last");
  592 constext txt_last_resp[] = N_("-- Last response --");
  593 constext txt_lines[] = N_("Lines %s  ");
  594 
  595 #ifdef NNTP_ABLE
  596     constext txt_lookup_func_not_available[] = N_("Function not available.");
  597     constext txt_lookup_func_not_nntp[] = N_("Not reading via NNTP.");
  598     constext txt_lookup_show_group[] = N_("Group: %s");
  599     constext txt_lookup_show_groups[] = N_("Groups: %s");
  600 #endif /* NNTP_ABLE */
  601 
  602 constext txt_mail[] = N_("Mail");
  603 constext txt_mailbox[] = N_("mailbox ");
  604 constext txt_mail_art_to[] = N_("Mail article(s) to [%.*s]> ");
  605 constext txt_mail_log_to[] = N_("Mailing log to %s\n");
  606 constext txt_mail_bug_report[] = N_("Mail bug report...");
  607 constext txt_mail_bug_report_confirm[] = N_("Mail BUG REPORT to %s?");
  608 constext txt_mailed[] = N_("Mailed");
  609 constext txt_mailing_to[] = N_("Mailing to %s...");
  610 constext txt_mail_save_active_head[] = N_("# [Mail/Save] active file. Format is like news active file:\n\
  611 #   groupname  max.artnum  min.artnum  /dir\n\
  612 # The 4th field is the basedir (ie. ~/Mail or ~/News)\n#\n");
  613 constext txt_marked_as_read[] = N_("%s marked as read");
  614 constext txt_marked_as_unread[] = N_("%s marked as unread");
  615 constext txt_marked_arts_as_read[] = N_("Marked %d of %d %s as read");
  616 constext txt_marked_arts_as_unread[] = N_("Marked %d of %d %s as unread");
  617 constext txt_mark[] = N_("Mark");
  618 constext txt_mark_arts_read[] = N_("Mark all articles as read%s?");
  619 constext txt_mark_art_read[] = N_("Mark article as read%s?");
  620 constext txt_mark_group_read[] = N_("Mark group %s as read?");
  621 constext txt_mark_thread_read[] = N_("Mark thread as read%s?");
  622 constext txt_matching_cmd_line_groups[] = N_("Matching %s groups...");
  623 constext txt_mini_attachment_1[] = N_("<n>=set current to n; %s=line down; %s=line up; %s=help; %s=quit");
  624 #ifndef DONT_HAVE_PIPING
  625 constext txt_mini_attachment_2[] = N_("%s=view; %s=pipe; %s=pipe raw; %s=save; %s=tag; %s=tag pattern; %s=untag all");
  626 #else
  627 constext txt_mini_attachment_2[] = N_("%s=view; %s=save; %s=tag; %s=tag pattern; %s=untag all");
  628 #endif /* !DONT_HAVE_PIPING */
  629 constext txt_mini_attachment_3[] = N_("%s=reverse tagging; %s=search forwards; %s=search backwards; %s=repeat search");
  630 constext txt_mini_group_1[] = N_("<n>=set current to n; %s=next unread; %s=search pattern; %s=kill/select");
  631 constext txt_mini_group_2[] = N_("%s=author search; %s=catchup; %s=line down; %s=line up; %s=mark read; %s=list thread");
  632 constext txt_mini_info_1[] = N_("%s=line up; %s=line down; %s=page up; %s=page down; %s=top; %s=bottom");
  633 constext txt_mini_info_2[] = N_("%s=search forwards; %s=search backwards; %s=quit");
  634 constext txt_mini_page_1[] = N_("<n>=set current to n; %s=next unread; %s=search pattern; %s=kill/select");
  635 constext txt_mini_page_2[] = N_("%s=author search; %s=body search; %s=catchup; %s=followup; %s=mark read");
  636 constext txt_mini_scope_1[] = N_("%s=add; %s=move; %s=rename; %s=delete");
  637 constext txt_mini_scope_2[] = N_("<n>=set current to n; %s=line down; %s=line up; %s=help; %s=quit");
  638 constext txt_mini_select_1[] = N_("<n>=set current to n; %s=next unread; %s,%s=search pattern; %s=catchup");
  639 constext txt_mini_select_2[] = N_("%s=line down; %s=line up; %s=help; %s=move; %s=quit; %s=toggle all/unread");
  640 constext txt_mini_select_3[] = N_("%s=subscribe; %s=sub pattern; %s=unsubscribe; %s=unsub pattern; %s=yank in/out");
  641 constext txt_mini_thread_1[] = N_("<n>=set current to n; %s=next unread; %s=catchup; %s=display toggle");
  642 constext txt_mini_thread_2[] = N_("%s=help; %s=line down; %s=line up; %s=quit; %s=tag; %s=mark unread");
  643 constext txt_mini_url_1[] = N_("<n>=set current to n; %s=line down; %s=line up; %s=help; %s=quit");
  644 constext txt_mini_url_2[] = N_("%s=search forwards; %s=search backwards; %s=repeat search");
  645 constext txt_more[] = N_("--More--");
  646 constext txt_moving[] = N_("Moving %s...");
  647 constext txt_msgid_line_last[] = N_("Message-ID: & last Reference  ");
  648 constext txt_msgid_line_only[] = N_("Message-ID: line              ");
  649 constext txt_msgid_refs_line[] = N_("Message-ID: & References: line");
  650 
  651 constext txt_name[] = N_(", name: ");
  652 constext txt_newsgroup[] = N_("Go to newsgroup [%s]> ");
  653 constext txt_newsgroup_plural[] = N_("newsgroups");
  654 constext txt_newsgroup_position[] = N_("Position %s in group list (1,2,..,$) [%d]> ");
  655 constext txt_newsgroup_singular[] = N_("newsgroup");
  656 constext txt_newsrc_again[] = N_("Try and save newsrc file again?");
  657 constext txt_newsrc_nogroups[] = N_("Warning: No newsgroups were written to your newsrc file. Save aborted.");
  658 constext txt_newsrc_saved[] = N_("newsrc file saved successfully.\n");
  659 constext txt_next_resp[] = N_("-- Next response --");
  660 constext txt_no[] = N_("No  ");
  661 constext txt_no_arts[] = N_("*** No articles ***");
  662 constext txt_no_arts_posted[] = N_("No articles have been posted");
  663 constext txt_no_attachments[] = N_("*** No attachments ***");
  664 constext txt_no_description[] = N_("*** No description ***");
  665 constext txt_no_filename[] = N_("No filename");
  666 constext txt_no_group[] = N_("No group");
  667 constext txt_no_groups[] = N_("*** No groups ***");
  668 constext txt_no_groups_to_read[] = N_("No more groups to read");
  669 constext txt_no_last_message[] = N_("No last message");
  670 constext txt_no_mail_address[] = N_("No mail address");
  671 constext txt_no_marked_arts[] = N_("No articles marked for saving");
  672 constext txt_no_match[] = N_("No match");
  673 constext txt_no_more_groups[] = N_("No more groups");
  674 constext txt_no_newsgroups[] = N_("No newsgroups");
  675 constext txt_no_next_unread_art[] = N_("No next unread article");
  676 constext txt_no_prev_group[] = N_("No previous group");
  677 constext txt_no_prev_search[] = N_("No previous search, nothing to repeat");
  678 constext txt_no_prev_unread_art[] = N_("No previous unread article");
  679 constext txt_no_responses[] = N_("No responses");
  680 constext txt_no_resps_in_thread[] = N_("No responses to list in current thread");
  681 constext txt_no_scopes[] = N_("*** No scopes ***");
  682 constext txt_no_search_string[] = N_("No search string");
  683 constext txt_no_subject[] = N_("No subject");
  684 #ifndef USE_CURSES
  685     constext txt_no_term_clear_eol[] = N_("%s: Terminal must have clear to end-of-line (ce)\n");
  686     constext txt_no_term_clear_eos[] = N_("%s: Terminal must have clear to end-of-screen (cd)\n");
  687     constext txt_no_term_clearscreen[] = N_("%s: Terminal must have clearscreen (cl) capability\n");
  688     constext txt_no_term_cursor_motion[] = N_("%s: Terminal must have cursor motion (cm)\n");
  689     constext txt_no_term_set[] = N_("%s: TERM variable must be set to use screen capabilities\n");
  690 #endif /* !USE_CURSES */
  691 constext txt_no_viewer_found[] = N_("No viewer found for %s/%s\n");
  692 constext txt_not_exist[] = N_("Newsgroup does not exist on this server");
  693 constext txt_not_in_active_file[] = N_("Group %s not found in active file");
  694 constext txt_nrctbl_create[] = N_("c)reate it, use a)lternative name, use d)efault .newsrc, q)uit tin: ");
  695 constext txt_nrctbl_default[] = N_("use a)lternative name, use d)efault .newsrc, q)uit tin: ");
  696 constext txt_nrctbl_info[] = N_("# NNTP-server -> newsrc translation table and NNTP-server\n\
  697 # shortname list for %s %s\n#\n# the format of this file is\n\
  698 #   <FQDN of NNTP-server> <newsrc file> <shortname> ...\n#\n\
  699 # if <newsrc file> is given without path, $HOME is assumed as its location\n\
  700 #\n# examples:\n#   news.tin.org      .newsrc-tin.org  tinorg\n\
  701 #   news.example.org  /tmp/nrc-ex      example    ex\n#\n");
  702 
  703 constext txt_only[] = N_("Only");
  704 constext txt_option_not_enabled[] = N_("Option not enabled. Recompile with %s.");
  705 constext txt_options_menu[] = N_("Options Menu");
  706 constext txt_options_menu_com[] = N_("Options Menu Commands");
  707 constext txt_out_of_memory[] = "%s: memory exhausted trying to allocate %lu bytes in file %s line %d";
  708 
  709 constext txt_pcre_error_at[] = N_("Error in regex: %s at pos. %d '%s'");
  710 constext txt_pcre_error_num[] = N_("Error in regex: pcre internal error %d");
  711 constext txt_pcre_error_text[] = N_("Error in regex: study - pcre internal error %s");
  712 constext txt_post_a_followup[] = N_("Post a followup...");
  713 /* TODO: replace hardcoded key-name in txt_post_error_ask_postpone */
  714 constext txt_post_error_ask_postpone[] = N_("An error has occurred while posting the article. If you think that this\n\
  715 error is temporary or otherwise correctable, you can postpone the article\n\
  716 and pick it up again with ^O later.\n");
  717 constext txt_post_history_menu[] = N_("Posted articles history");
  718 constext txt_post_newsgroups[] = N_("Post to newsgroup(s) [%s]> ");
  719 constext txt_post_processing[] = N_("-- post processing started --");
  720 constext txt_post_processing_finished[] = N_("-- post processing completed --");
  721 constext txt_post_subject[] = N_("Post subject [%s]> ");
  722 constext txt_posted_info_file[] = N_("# Summary of mailed/posted messages viewable by 'W' command from within tin.\n");
  723 constext txt_posting[] = N_("Posting article...");
  724 constext txt_postpone_repost[] = N_("Post postponed articles [%%s]? (%s/%s/%s/%s/%s): ");
  725 constext txt_prefix_hot[] = N_("Hot %s");
  726 constext txt_prefix_tagged[] = N_("Tagged %s");
  727 constext txt_prefix_untagged[] = N_("Untagged %s");
  728 constext txt_processing_mail_arts[] = N_("Processing mail messages marked for deletion.");
  729 constext txt_processing_saved_arts[] = N_("Processing saved articles marked for deletion.");
  730 constext txt_prompt_fup_ignore[] = N_("Accept Followup-To? %s=post, %s=ignore, %s=quit: ");
  731 constext txt_prompt_unchanged_mail[] = N_("Article unchanged, abort mailing?");
  732 constext txt_prompt_see_postponed[] = N_("Do you want to see postponed articles (%d)?");
  733 
  734 constext txt_quick_filter_kill[] = N_("Add quick kill filter?");
  735 constext txt_quick_filter_select[] = N_("Add quick selection filter?");
  736 constext txt_quit[] = N_("Do you really want to quit?");
  737 constext txt_quit_cancel[] = N_("%s=edit cancel message, %s=quit, %s=delete (cancel) [%%s]: ");
  738 constext txt_quit_despite_tags[] = N_("You have tagged articles in this group - quit anyway?");
  739 constext txt_quit_edit_postpone[] = N_("%s=quit, %s=edit, %s=postpone: ");
  740 constext txt_quit_edit_save_kill[] = N_("%s=quit %s=edit %s=save kill description: ");
  741 constext txt_quit_edit_save_select[] = N_("%s=quit %s=edit %s=save select description: ");
  742 constext txt_quit_no_write[] = N_("Do you really want to quit without saving your configuration?");
  743 constext txt_quoted_printable[] = "quoted-printable";
  744 
  745 constext txt_range_invalid[] = N_("Invalid range - valid are '0-9.$' eg. 1-$");
  746 #ifdef NNTP_ABLE
  747     constext txt_read_abort[] = N_("Do you want to abort this operation?");
  748     constext txt_read_exit[] = N_("Do you want to exit tin immediately?");
  749 #endif /* NNTP_ABLE */
  750 constext txt_reading_article[] = N_("Reading ('q' to quit)...");
  751 constext txt_reading_arts[] = N_("Reading %sarticles...");
  752 constext txt_reading_attributes_file[] = N_("Reading %sattributes file...\n");
  753 constext txt_reading_config_file[] = N_("Reading %sconfig file...\n");
  754 constext txt_reading_filter_file[] = N_("Reading filter file...\n");
  755 constext txt_reading_groups[] = N_("Reading %s groups...");
  756 constext txt_reading_input_history_file[] = N_("Reading input history file...\n");
  757 constext txt_reading_keymap_file[] = N_("Reading keymap file...\n");
  758 constext txt_reading_news_active_file[] = N_("Reading groups from active file... ");
  759 constext txt_reading_news_newsrc_file[] = N_("Reading groups from newsrc file... ");
  760 constext txt_reading_newsgroups_file[] = N_("Reading newsgroups file... ");
  761 constext txt_reading_newsrc[] = N_("Reading newsrc file...");
  762 constext txt_refs_line_only[] = N_("References: line              ");
  763 #ifdef HAVE_GETTIMEOFDAY
  764     constext txt_remaining[] = N_("(%d:%02d remaining)");
  765 #endif /* HAVE_GETTIMEOFDAY */
  766 constext txt_remove_bogus[] = N_("Bogus group %s removed.");
  767 constext txt_removed_rule[] = N_("Removed from the previous rule: ");
  768 constext txt_rename_error[] = N_("Error: rename %s to %s");
  769 constext txt_reply_to_author[] = N_("Reply to author...");
  770 constext txt_repost[] = N_("Repost");
  771 constext txt_repost_an_article[] = N_("Reposting article...");
  772 constext txt_repost_group[] = N_("Repost article(s) to group(s) [%s]> ");
  773 constext txt_reset_newsrc[] = N_("Reset newsrc?");
  774 constext txt_resp_redirect[] = N_("Responses have been directed to the following newsgroups");
  775 constext txt_resp_to_poster[] = N_("Responses have been directed to poster. %s=mail, %s=post, %s=quit: ");
  776 
  777 constext txt_return_key[] = N_("Press <RETURN> to continue...");
  778 
  779 constext txt_select_from[] = N_("Select From    [%s] (y/n): ");
  780 constext txt_select_lines[] = N_("Select Lines: (</>num): ");
  781 constext txt_select_menu[] = N_("Auto-select Article Menu");
  782 constext txt_select_msgid[] = N_("Select Msg-Id  [%s] (f/l/o/n): ");
  783 constext txt_select_scope[] = N_("Select pattern scope: ");
  784 constext txt_select_subj[] = N_("Select Subject [%s] (y/n): ");
  785 constext txt_select_text[] = N_("Select text pattern : ");
  786 constext txt_select_time[] = N_("Select time in days   : ");
  787 constext txt_serverconfig_header[] = N_("# %s server configuration file\n\
  788 # This file was automatically saved by %s %s %s (\"%s\")\n#\n\
  789 # Do not edit while %s is running, since all your changes to this file\n\
  790 # will be overwritten when you leave %s.\n\
  791 # Do not edit at all if you don't know what you do.\n\
  792 ############################################################################\n\n");
  793 constext txt_show_unread[] = N_("Showing unread groups only");
  794 constext txt_subj_line_only[] = N_("Subject: line (ignore case)   ");
  795 constext txt_subj_line_only_case[] = N_("Subject: line (case sensitive)");
  796 constext txt_save[] = N_("Save");
  797 constext txt_save_attachment[] = N_("Save '%s' (%s/%s)?");
  798 constext txt_save_config[] = N_("Save configuration before continuing?");
  799 constext txt_save_filename[] = N_("Save filename> ");
  800 constext txt_saved[] = N_("Saved");
  801 constext txt_saved_group[] = N_("%4d unread (%4d hot) %s in %s\n");
  802 constext txt_saved_groupname[] = N_("Saved %s...\n");
  803 constext txt_saved_nothing[] = N_("Nothing was saved");
  804 constext txt_saved_summary[] = N_("\n%s %d %s from %d %s\n");
  805 constext txt_saved_to[] = N_("-- %s saved to %s%s --");
  806 constext txt_saved_to_range[] = N_("-- %s saved to %s - %s --");
  807 constext txt_saving[] = N_("Saving...");
  808 constext txt_screen_init_failed[] = N_("%s: Screen initialization failed");
  809 #ifndef USE_CURSES
  810     constext txt_screen_too_small[] = N_("%s: screen is too small\n");
  811 #endif /* !USE_CURSES */
  812 constext txt_screen_too_small_exiting[] = N_("screen is too small, %s is exiting");
  813 constext txt_scope_delete[] = N_("Delete scope?");
  814 constext txt_scope_enter[] = N_("Enter scope> ");
  815 constext txt_scope_new_position[] = N_("Select new position> ");
  816 constext txt_scope_new_position_is_global[] = N_("New position cannot be a global scope");
  817 constext txt_scope_operation_not_allowed[] = N_("Global scope, operation not allowed");
  818 constext txt_scope_rename[] = N_("Rename scope> ");
  819 constext txt_scope_select[] = N_("Select scope> ");
  820 constext txt_scopes_menu[] = N_("Scopes Menu");
  821 constext txt_scopes_menu_com[] = N_("Scopes Menu Commands");
  822 constext txt_search_backwards[] = N_("Search backwards [%s]> ");
  823 constext txt_search_body[] = N_("Search body [%s]> ");
  824 constext txt_search_forwards[] = N_("Search forwards [%s]> ");
  825 constext txt_searching[] = N_("Searching...");
  826 constext txt_searching_body[] = N_("Searching article %d of %d ('q' to abort)...");
  827 constext txt_select_art[] = N_("Select article> ");
  828 constext txt_select_config_file_option[] = N_("Select option number before text or use arrow keys and <CR>. 'q' to quit.");
  829 constext txt_select_group[] = N_("Select group> ");
  830 constext txt_select_pattern[] = N_("Enter selection pattern [%s]> ");
  831 constext txt_select_thread[] = N_("Select thread> ");
  832 constext txt_send_bugreport[] = N_("%s %s %s (\"%s\") [%s]: send a DETAILED bug report to %s\n");
  833 constext txt_servers_active[] = N_("servers active-file");
  834 constext txt_skipping_newgroups[] = N_("Cannot move into new newsgroups. Subscribe first...");
  835 constext txt_space[] = N_("<SPACE>");
  836 constext txt_starting_command[] = N_("Starting: (%s)");
  837 constext txt_stp_list_thread[] = N_("List Thread (%d of %d)");
  838 constext txt_stp_thread[] = N_("Thread (%.*s)");
  839 constext txt_subscribe_pattern[] = N_("Enter wildcard subscribe pattern> ");
  840 constext txt_subscribed_num_groups[] = N_("subscribed to %d groups");
  841 constext txt_subscribed_to[] = N_("Subscribed to %s");
  842 constext txt_subscribing[] = N_("Subscribing... ");
  843 constext txt_supersede_article[] = N_("Repost or supersede article(s) [%%s]? (%s/%s/%s): ");
  844 constext txt_supersede_group[] = N_("Supersede article(s) to group(s) [%s]> ");
  845 constext txt_superseding_art[] = N_("Superseding article ...");
  846 constext txt_suspended_message[] = N_("\nStopped. Type 'fg' to restart %s\n");
  847 
  848 constext txt_time_default_days[] = N_("%d days");
  849 constext txt_tab[] = N_("<TAB>");
  850 constext txt_tex[] = N_("TeX ");
  851 constext txt_tinrc_defaults[] = N_("# Default action/prompt strings\n");
  852 constext txt_tinrc_filter[] = N_("# Defaults for quick (1 key) kill & auto-selection filters\n\
  853 # header=NUM  0,1=Subject: 2,3=From: 4=Message-ID: & full References: line\n\
  854 #             5=Message-ID: & last References: entry only\n\
  855 #             6=Message-ID: entry only 7=Lines:\n\
  856 # global=ON/OFF  ON=apply to all groups OFF=apply to current group\n\
  857 # case=ON/OFF    ON=filter case sensitive OFF=ignore case\n\
  858 # expire=ON/OFF  ON=limit to default_filter_days OFF=don't ever expire\n");
  859 /* do NOT localize the next string! */
  860 constext txt_tinrc_header[] = "# %s configuration file V%s\n\
  861 # This file was automatically saved by %s %s %s (\"%s\")\n#\n\
  862 # Do not edit while tin is running, since all your changes to this file\n\
  863 # will be overwritten when you leave tin.\n#\n\
  864 ############################################################################\n\n";
  865 constext txt_tinrc_info_in_last_line[] = N_("# If ON use print current subject or newsgroup description in the last line\n");
  866 constext txt_tinrc_newnews[] = N_("# Host & time info used for detecting new groups (don't touch)\n");
  867 constext txt_there_is_no_news[] = N_("There is no news\n");
  868 constext txt_thread_upper[] = N_("Thread");
  869 constext txt_thread_com[] = N_("Thread Level Commands");
  870 constext txt_thread_marked_as_deselected[] = N_("Thread deselected");
  871 constext txt_thread_marked_as_selected[] = N_("Thread selected");
  872 #if 0 /* unused */
  873     constext txt_thread_plural[] = N_("threads");
  874 #endif /* 0 */
  875 constext txt_thread_singular[] = N_("thread");
  876 constext txt_thread_x_of_n[] = N_("Thread %4s of %4s");
  877 constext txt_threading_arts[] = N_("Threading articles...");
  878 constext txt_toggled_high[] = N_("Toggled word highlighting %s");
  879 constext txt_toggled_rot13[] = N_("Toggled rot13 encoding");
  880 constext txt_toggled_tex2iso[] = N_("Toggled german TeX encoding %s");
  881 constext txt_toggled_tabwidth[] = N_("Toggled tab-width to %d");
  882 #ifndef NO_LOCKING
  883     constext txt_trying_dotlock[] = N_("%d Trying to dotlock %s");
  884     constext txt_trying_lock[] = N_("%d Trying to lock %s");
  885 #endif /* !NO_LOCKING */
  886 constext txt_type_h_for_help[] = N_("           h=help");
  887 
  888 constext txt_unlimited_time[] = N_("Unlimited");
  889 constext txt_unsubscribe_pattern[] = N_("Enter wildcard unsubscribe pattern> ");
  890 constext txt_uu_error_decode[] = N_("Error decoding %s : %s");
  891 constext txt_uu_error_no_end[] = N_("No end.");
  892 constext txt_uu_success[] = N_("%s successfully decoded.");
  893 constext txt_uue[] = N_("%*s[-- %s/%s, %suuencoded file, %d lines, name: %s --]\n\n");
  894 constext txt_unread[] = N_("unread ");
  895 constext txt_unsubscribed_num_groups[] = N_("unsubscribed from %d groups");
  896 constext txt_unsubscribed_to[] = N_("Unsubscribed from %s");
  897 constext txt_unsubscribing[] = N_("Unsubscribing... ");
  898 constext txt_unthreading_arts[] = N_("Unthreading articles...");
  899 constext txt_updated[] = N_("Updated");
  900 #ifdef NNTP_ABLE
  901     constext txt_unparseable_counts[] = N_("unparseable \"LIST COUNTS\" line: \"%s\"");
  902 #endif /* NNTP_ABLE */
  903 constext txt_updating[] = N_("Updating");
  904 constext txt_url_menu[] = N_("URL Menu");
  905 constext txt_url_menu_com[] = N_("URL Menu Commands");
  906 constext txt_url_open[] = N_("Opening %s");
  907 constext txt_url_select[] = N_("Select URL> ");
  908 constext txt_url_done[] = N_("No URLs in this article");
  909 constext txt_use_mime[] = N_("Use MIME display program for this message?");
  910 constext txt_usage_catchup[] = N_("  -c       mark all news as read in subscribed newsgroups (batch mode)");
  911 constext txt_usage_check_for_unread_news[] = N_("  -Z       return status indicating if any unread news (batch mode)");
  912 constext txt_usage_dont_check_new_newsgroups[] = N_("  -q       don't check for new newsgroups");
  913 constext txt_usage_dont_save_files_on_quit[] = N_("  -X       don't save any files on quit");
  914 constext txt_usage_dont_show_descriptions[] = N_("  -d       don't show newsgroup descriptions");
  915 constext txt_usage_getart_limit[] = N_("  -G limit get only limit articles/group");
  916 constext txt_usage_help_information[] = N_("  -H       help information about %s");
  917 constext txt_usage_help_message[] = N_("  -h       this help message");
  918 constext txt_usage_index_newsdir[] = N_("  -I dir   news index file directory [default=%s]");
  919 constext txt_usage_update_index_files[] = N_("  -u       update index files (batch mode)");
  920 constext txt_usage_maildir[] = N_("  -m dir   mailbox directory [default=%s]");
  921 constext txt_usage_mail_bugreport[] = N_("\nMail bug reports/comments to %s");
  922 constext txt_usage_mail_new_news[] = N_("  -N       mail new news to your posts (batch mode)");
  923 constext txt_usage_mail_new_news_to_user[] = N_("  -M user  mail new news to specified user (batch mode)");
  924 constext txt_usage_newsrc_file[] = N_("  -f file  subscribed to newsgroups file [default=%s]");
  925 constext txt_usage_no_posting[] = N_("  -x       no-posting mode");
  926 constext txt_usage_post_article[] = N_("  -w       post an article and exit");
  927 constext txt_usage_post_postponed_arts[] = N_("  -o       post all postponed articles and exit");
  928 constext txt_usage_read_saved_news[] = N_("  -R       read news saved by -S option");
  929 constext txt_usage_savedir[] = N_("  -s dir   save news directory [default=%s]");
  930 constext txt_usage_save_new_news[] = N_("  -S       save new news for later reading (batch mode)");
  931 constext txt_usage_start_if_unread_news[] = N_("  -z       start if any unread news");
  932 constext txt_usage_tin[] = N_("A Usenet reader.\n\nUsage: %s [options] [newsgroup[,...]]");
  933 constext txt_usage_verbose[] = N_("  -v       verbose output for batch mode options");
  934 constext txt_usage_version[] = N_("  -V       print version & date information");
  935 constext txt_useful_without_batch_mode[] = N_("%s only useful without batch mode operations\n");
  936 constext txt_useful_with_batch_mode[] = N_("%s only useful for batch mode operations\n");
  937 constext txt_useless_combination[] = N_("Useless combination %s and %s. Ignoring %s.\n");
  938 
  939 constext txt_value_out_of_range[] = N_("\n%s%d out of range (0 - %d). Reset to 0");
  940 constext txt_view_attachment[] = N_("View '%s' (%s/%s)?");
  941 
  942 constext txt_warn_art_line_too_long[] = N_("\nWarning: posting exceeds %d columns. Line %d is the first long one:\n%-100s\n");
  943 constext txt_warn_article_unchanged[] = N_("\nWarning: article unchanged after editing\n");
  944 constext txt_warn_blank_subject[] = N_("\nWarning: \"Subject:\" contains only whitespaces.\n");
  945 constext txt_warn_re_but_no_references[] = N_("\n\
  946 Warning: \"Subject:\" begins with \"Re: \" but there are no \"References:\".\n");
  947 constext txt_warn_references_but_no_re[] = N_("\n\
  948 Warning: Article has \"References:\" but \"Subject:\" does not begin\n\
  949          with \"Re: \" and does not contain \"(was:\".\n");
  950 constext txt_warn_cancel[] = N_("Read carefully!\n\n\
  951   You are about to cancel an article seemingly written by you. This will wipe\n\
  952   the article from most  news servers  throughout the world,  but there is no\n\
  953   guarantee that it will work.\n\nThis is the article you are about to cancel:\n\n");
  954 constext txt_warn_encoding_and_external_inews[] = N_("\n\
  955 Warning: You are using a non-plain transfer encoding (such as base64 or\n\
  956          quoted-printable) and an external inews program to submit your\n\
  957          article. If a signature is appended by that inews program it will\n\
  958          not be encoded properly.\n");
  959 constext txt_warn_example_hierarchy[] = N_("\nWarning: \"example\" is a reserved hierarchy!\n");
  960 constext txt_warn_update[] = N_("\n\nYou are upgrading to tin %s from an earlier version.\n\
  961 Some values in your %s file have changed!\nRead WHATSNEW, etc...\n");
  962 constext txt_warn_downgrade[] = N_("\n\nYou are downgrading to tin %s from a more recent version!\n\
  963 Some values in your %s file may be ignored, others might have changed!\n");
  964 constext txt_warn_unrecognized_version[] = "\n\nUnrecognized version string!\n";
  965 constext txt_warn_newsrc[] = N_("Warning: tin wrote fewer groups to your\n\t%s\n\
  966 than it read at startup. If you didn't unsubscribe from %ld %s during\n\
  967 this session this indicates an error and you should backup your %s\n\
  968 before you start tin once again!\n");
  969 constext txt_warn_multiple_sigs[] = N_("\nWarning: Found %d '-- \\n' lines, this may confuse some people.\n");
  970 constext txt_warn_not_all_arts_saved[] = N_("Warning: Only %d out of %d articles were saved");
  971 constext txt_warn_sig_too_long[] = N_("\n\
  972 Warning: Your signature  is longer than %d lines.  Since signatures usually do\n\
  973          not  transport any  useful information,  they should be as  short as\n\
  974          possible.\n");
  975 constext txt_warn_suspicious_mail[] = N_("Warning: this mail address may contain a spamtrap. %s=continue, %s=abort? ");
  976 constext txt_warn_wrong_sig_format[] = N_("\nWarning: Signatures should start with '-- \\n' not with '--\\n'.\n");
  977 constext txt_writing_attributes_file[] = N_("Writing attributes file...");
  978 
  979 constext txt_x_resp[] = N_("%d Responses");
  980 
  981 constext txt_yanked_groups[] = N_("Added %d %s");
  982 constext txt_yanked_none[] = N_("No unsubscribed groups to show");
  983 constext txt_yanked_sub_groups[] = N_("Showing subscribed to groups only");
  984 constext txt_yes[] = N_("Yes ");
  985 constext txt_you_have_mail[] = N_("    You have mail");
  986 
  987 
  988 /* TODO: cleanup */
  989 #ifdef CHARSET_CONVERSION
  990     constext txt_warn_charset_conversion[] = N_("\n\
  991 Warning: Posting is in %s and contains characters which are not\n\
  992          in your selected MM_NETWORK_CHARSET: %s.\n\
  993          These characters will be replaced by '?' if you post this\n\
  994          article unchanged. To avoid garbling your article please either\n\
  995          edit it and remove those characters or change the setting of\n\
  996          MM_NETWORK_CHARSET to a suitable value for your posting via the\n\
  997          M)enu option.\n");
  998 #endif /* CHARSET_CONVERSION */
  999 
 1000 #ifdef DEBUG
 1001     constext txt_usage_debug[] = N_("  -D mode  debug mode");
 1002 #endif /* DEBUG */
 1003 
 1004 #ifdef FORGERY
 1005     constext txt_warn_cancel_forgery[] = N_("Read carefully!\n\n\
 1006   You are about to cancel an article seemingly not written by you.  This will\n\
 1007   wipe the article from lots of news servers throughout the world;\n\
 1008   Usenet's majority  considers this  rather inappropriate,  to say the least.\n\
 1009   Only press 'd'  if you are  absolutely positive  that you are ready to take\n\
 1010   the rap.\n\nThis is the article you are about to cancel:\n\n");
 1011 #endif /* FORGERY */
 1012 
 1013 #ifdef HAVE_COLOR
 1014     constext txt_help_global_toggle_color[] = N_("toggle color");
 1015     constext txt_tinrc_colors[] = N_("# Changing colors of several screen parts\n\
 1016 # Possible values are:\n\
 1017 #  -1 = default (white for foreground and black for background)\n\
 1018 #   0 = black\n\
 1019 #   1 = red\n\
 1020 #   2 = green\n\
 1021 #   3 = brown\n\
 1022 #   4 = blue\n\
 1023 #   5 = pink\n\
 1024 #   6 = cyan\n\
 1025 #   7 = white\n\
 1026 # These are *only* for foreground:\n\
 1027 #   8 = gray\n\
 1028 #   9 = light red\n\
 1029 #  10 = light green\n\
 1030 #  11 = yellow\n\
 1031 #  12 = light blue\n\
 1032 #  13 = light pink\n\
 1033 #  14 = light cyan\n\
 1034 #  15 = light white\n\n");
 1035     constext txt_usage_toggle_color[] = N_("  -a       toggle color flag");
 1036 #endif /* HAVE_COLOR */
 1037 
 1038 #ifdef HAVE_FASCIST_NEWSADMIN
 1039     constext txt_error_followup_to_several_groups[] = N_("\nError: Followup-To set to more than one newsgroup!\n");
 1040     constext txt_error_grp_renamed[] = N_("\nError: \"%s\" is renamed, use \"%s\" instead!\n");
 1041     constext txt_error_missing_followup_to[] = N_("\nError: cross-posting to %d newsgroups and no Followup-To line!\n");
 1042     constext txt_error_not_valid_newsgroup[] = N_("\nError: \"%s\" is not a valid newsgroup!\n");
 1043 #else
 1044     constext txt_warn_followup_to_several_groups[] = N_("\nWarning: Followup-To set to more than one newsgroup!\n");
 1045     constext txt_warn_grp_renamed[] = N_("\nWarning: \"%s\" is renamed, you should use \"%s\" instead!\n");
 1046     constext txt_warn_missing_followup_to[] = N_("\nWarning: cross-posting to %d newsgroups and no Followup-To line!\n");
 1047     constext txt_warn_not_in_newsrc[] = N_("\nWarning: \"%s\" is not in your newsrc, it may be invalid at this site!\n");
 1048     constext txt_warn_not_valid_newsgroup[] = N_("\nWarning: \"%s\" is not a valid newsgroup at this site!\n");
 1049 #endif /* HAVE_FASCIST_NEWSADMIN */
 1050 
 1051 #ifdef HAVE_LIBUU
 1052     constext txt_libuu_saved[] = N_("%d files successfully written from %d articles. %d %s occurred.");
 1053     constext txt_libuu_error_missing[] = N_("Missing parts.");
 1054     constext txt_libuu_error_no_begin[] = N_("No beginning.");
 1055     constext txt_libuu_error_no_data[] = N_("No data.");
 1056     constext txt_libuu_error_unknown[] = N_("Unknown error.");
 1057 #else
 1058 #   if defined(M_UNIX) && defined(HAVE_SUM) && !defined(DONT_HAVE_PIPING)
 1059         constext txt_checksum_of_file[] = N_("\tChecksum of %s (%ld %s)");
 1060 #   endif /* M_UNIX && HAVE_SUM && !DONT_HAVE_PIPING */
 1061 #endif /* HAVE_LIBUU */
 1062 
 1063 #ifdef HAVE_MH_MAIL_HANDLING
 1064     constext txt_reading_mail_active_file[] = N_("Reading mail active file... ");
 1065     constext txt_reading_mailgroups_file[] = N_("Reading mailgroups file... ");
 1066 #endif /* HAVE_MH_MAIL_HANDLING */
 1067 
 1068 #ifdef HAVE_PGP_GPG
 1069     constext txt_help_article_pgp[] = N_("perform PGP operations on article");
 1070     constext txt_pgp_add[] = N_("Add key(s) to public keyring?");
 1071     constext txt_pgp_mail[] = N_("%s=encrypt, %s=sign, %s=both, %s=quit: ");
 1072     constext txt_pgp_news[] = N_("%s=sign, %s=sign & include public key, %s=quit: ");
 1073     constext txt_pgp_not_avail[] = N_("PGP has not been set up (can't open %s)");
 1074     constext txt_pgp_nothing[] = N_("Article not signed and no public keys found");
 1075 #   ifdef HAVE_ISPELL
 1076         constext txt_quit_edit_post[] = N_("%s=quit, %s=edit, %s=ispell, %s=pgp, %s=menu, %s=post, %s=postpone: ");
 1077         constext txt_quit_edit_send[] = N_("%s=quit, %s=edit, %s=ispell, %s=pgp, %s=send [%%s]: ");
 1078         constext txt_quit_edit_xpost[] = N_("%s=quit, %s=edit, %s=ispell, %s=pgp, %s=menu, %s=post, %s=postpone [%%s]: ");
 1079 #   else
 1080     constext txt_quit_edit_post[] = N_("%s=quit, %s=edit, %s=pgp, %s=menu, %s=post, %s=postpone: ");
 1081     constext txt_quit_edit_send[] = N_("%s=quit, %s=edit, %s=pgp, %s=send [%%s]: ");
 1082     constext txt_quit_edit_xpost[] = N_("%s=quit, %s=edit, %s=pgp, %s=menu, %s=post, %s=postpone [%%s]: ");
 1083 #   endif /* HAVE_ISPELL */
 1084 #else
 1085 #   ifdef HAVE_ISPELL
 1086         constext txt_quit_edit_post[] = N_("%s=quit, %s=edit, %s=ispell, %s=menu, %s=post, %s=postpone: ");
 1087         constext txt_quit_edit_send[] = N_("%s=quit, %s=edit, %s=ispell, %s=send [%%s]: ");
 1088         constext txt_quit_edit_xpost[] = N_("%s=quit, %s=edit, %s=ispell, %s=menu, %s=post, %s=postpone [%%s]: ");
 1089 #   else
 1090         constext txt_quit_edit_post[] = N_("%s=quit, %s=edit, %s=menu, %s=post, %s=postpone: ");
 1091         constext txt_quit_edit_send[] = N_("%s=quit, %s=edit, %s=send [%%s]: ");
 1092         constext txt_quit_edit_xpost[] = N_("%s=quit, %s=edit, %s=menu, %s=post, %s=postpone [%%s]: ");
 1093 #   endif /* HAVE_ISPELL */
 1094 #endif /* HAVE_PGP_GPG */
 1095 
 1096 #ifdef M_UNIX
 1097     constext txt_copyright_notice[] = "%s (c) Copyright 1991-2017 Iain Lea.";
 1098 #endif /* M_UNIX */
 1099 
 1100 #ifdef NNTP_ABLE
 1101     constext txt_caching_off[] = N_("Try cache_overview_files to speed up things.\n");
 1102     constext txt_caching_on[] = N_("Tin will use local index files instead.\n");
 1103     constext txt_cannot_get_nntp_server_name[] = N_("Cannot find NNTP server name");
 1104     constext txt_connecting_port[] = N_("Connecting to %s:%u...");
 1105     constext txt_disconnecting[] = N_("Disconnecting from server...\n");
 1106     constext txt_error_wrong_newsgroupname_in_group_response[] = N_("Wrong newsgroup name (\"%s\") in response of \"GROUP %s\" command: \"%s\"");
 1107     constext txt_failed_to_connect_to_server[] = N_("Failed to connect to NNTP server %s. Exiting...");
 1108     constext txt_nntp_ok_goodbye[] = N_("205  Closing connection");
 1109     constext txt_no_xover_support[] = N_("Your server does not support the NNTP XOVER or OVER command.\n");
 1110     constext txt_reconnect_to_news_server[] = N_("Connection to news server has timed out. Reconnect?");
 1111     constext txt_server_name_in_file_env_var[] = N_("Put the server name in the file %s,\nor set the environment variable NNTPSERVER");
 1112     constext txt_usage_force_authentication[] = N_("  -A       force authentication on connect");
 1113     constext txt_usage_newsserver[] = N_("  -g serv  read news from NNTP server serv [default=%s]");
 1114     constext txt_usage_port[] = N_("  -p port  use port as NNTP port [default=%d]");
 1115     constext txt_usage_quickstart[] = N_("  -Q       quick start. Same as -nqd");
 1116     constext txt_usage_read_news_remotely[] = N_("  -r       read news remotely from default NNTP server");
 1117     constext txt_usage_read_only_active[] = N_("  -l       use only LIST instead of GROUP (-n) command");
 1118     constext txt_usage_read_only_subscribed[] = N_("  -n       only read subscribed .newsrc groups from NNTP server");
 1119 #   ifdef INET6
 1120         constext txt_usage_force_ipv4[] = N_("  -4       force connecting via IPv4");
 1121         constext txt_usage_force_ipv6[] = N_("  -6       force connecting via IPv6");
 1122         constext txt_error_socket_or_connect_problem[] = N_("\nsocket or connect problem\n");
 1123 #   else
 1124         constext txt_connection_to[] = N_("\nConnection to %s: ");
 1125         constext txt_giving_up[] = N_("Giving up...\n");
 1126 #       ifdef HAVE_GETSERVBYNAME
 1127             constext txt_error_unknown_service[] = N_("%s/tcp: Unknown service.\n");
 1128 #       endif /* HAVE_GETSERVBYNAME */
 1129 #   endif /* INET6 */
 1130 #   ifdef XHDR_XREF
 1131         constext txt_warn_xref_not_supported[] = N_("Your server does not have Xref: in its XOVER information.\n\
 1132 Tin will try to use XHDR XREF instead (slows down things a bit).\n");
 1133 #   else
 1134         constext txt_warn_xref_not_supported[] = N_("Your server does not have Xref: in its XOVER information.\n");
 1135 #   endif /* XHDR_XREF */
 1136 #   ifndef NNTP_ONLY
 1137         constext txt_cannot_open_active_file[] = N_("Can't open %s. Try %s -r to read news via NNTP.");
 1138 #   endif /* !NNTP_ONLY */
 1139 #else
 1140     constext txt_usage_quickstart[] = N_("  -Q       quick start. Same as -qd");
 1141     constext txt_usage_read_only_active[] = N_("  -l       read only active file instead of scanning spool (-n) command");
 1142     constext txt_usage_read_only_subscribed[] = N_("  -n       only read subscribed .newsrc groups from spool");
 1143     constext txt_warn_xref_not_supported[] = N_("Your server does not have Xref: in its NOV-files.\n");
 1144 #endif /* NNTP_ABLE */
 1145 
 1146 #ifdef NNTP_INEWS
 1147     constext txt_post_via_builtin_inews[] = N_("Posting using external inews failed. Use built in inews instead?");
 1148     constext txt_post_via_builtin_inews_only[] = N_("It worked! Should I always use my built in inews from now on?");
 1149 #endif /* NNTP_INEWS */
 1150 
 1151 #ifndef DISABLE_PRINTING
 1152     constext txt_articles_printed[] = N_("%d %s printed");
 1153     constext txt_help_global_print[] = N_("output article/thread/hot/pattern/tagged articles to printer");
 1154     constext txt_print[] = N_("Print");
 1155     constext txt_printing[] = N_("Printing...");
 1156 #endif /* !DISABLE_PRINTING */
 1157 
 1158 #ifndef DONT_HAVE_PIPING
 1159     constext txt_articles_piped[] = N_("%d %s piped to \"%s\"");
 1160     constext txt_help_global_pipe[] = N_("pipe article/thread/hot/pattern/tagged articles into command");
 1161     constext txt_no_command[] = N_("No command");
 1162     constext txt_pipe[] = N_("Pipe");
 1163     constext txt_pipe_to_command[] = N_("Pipe to command [%.*s]> ");
 1164     constext txt_piping[] = N_("Piping...");
 1165 #else
 1166     constext txt_piping_not_enabled[] = N_("Piping not enabled.");
 1167 #endif /* !DONT_HAVE_PIPING */
 1168 
 1169 #ifndef FOLLOW_USEFOR_DRAFT
 1170     constext txt_error_header_line_comma[] = N_("\n\
 1171 Error: The \"%s:\" line has spaces  in it that MUST be removed.\n\
 1172        The only allowable  space is the one  separating the colon (:)\n\
 1173        from  the  contents.  Use a  comma  (,)  to separate  multiple\n\
 1174        newsgroup names.\n");
 1175     constext txt_error_header_line_groups_contd[] = N_("\n\
 1176 Error: The \"%s:\" line is  continued in  the next line.  Since\n\
 1177        the line  may not  contain  whitespace,  this is  not allowed.\n\
 1178        Please write all newsgroups into a single line.\n");
 1179 #else
 1180     constext txt_warn_header_line_groups_contd[] = N_("\n\
 1181 Warning: The \"%s:\" line is continued in the next line.\n\
 1182          This is a very new feature and may not be accepted by all servers.\n\
 1183          To avoid trouble please write all newsgroups into a single line.\n");
 1184     constext txt_warn_header_line_comma[] = N_("\n\
 1185 Warning: The \"%s:\" line has spaces in it that SHOULD be removed.\n");
 1186 #endif /* !FOLLOW_USEFOR_DRAFT */
 1187 
 1188 #ifndef NO_ETIQUETTE
 1189     constext txt_warn_posting_etiquette[] = N_("\n\
 1190   If your article contains quoted text  please take some time to pare it down\n\
 1191   to just the  key points to which you are  responding,  or people will think\n\
 1192   you are a dweeb!  Many people have the habit of skipping any article  whose\n\
 1193   first page is largely  quoted material.  Format your article to fit in less\n\
 1194   then 80 chars,  since that's the conventional size  (72 is a good choice as\n\
 1195   it allows quoting without exceeding the limit).  If your lines are too long\n\
 1196   they'll wrap  around  ugly and  people won't  read what you  write.  If you\n\
 1197   aren't  careful  and considerate  in  formatting  your posting, people  are\n\
 1198   likely to ignore it completely.  It's a crowded net out there.\n");
 1199 #endif /* !NO_ETIQUETTE */
 1200 
 1201 #ifndef NO_SHELL_ESCAPE
 1202     constext txt_help_global_shell_escape[] = N_("shell escape");
 1203     constext txt_shell_command[] = N_("Shell Command (%s)");
 1204     constext txt_shell_escape[] = N_("Enter shell command [%s]> ");
 1205 #endif /* !NO_SHELL_ESCAPE */
 1206 
 1207 #if !defined(USE_CURSES) && defined(M_UNIX) && !defined(USE_TERMINFO)
 1208     constext txt_cannot_get_term_entry[] = N_("%s: Can't get entry for TERM\n");
 1209 #endif /* !USE_CURSES && M_UNIX && !USE_TERMINFO */
 1210 
 1211 #if defined(HAVE_POLL) || defined(HAVE_SELECT)
 1212     constext txt_group[] = N_("Group %.*s ('q' to quit)...");
 1213 #else
 1214     constext txt_group[] = N_("Group %.*s...");
 1215 #endif /* HAVE_POLL || HAVE_SELECT */
 1216 
 1217 #if defined(NNTP_ABLE) && defined(TLI) && !defined(INET6)
 1218     constext txt_error_server_unavailable[] = N_("Server unavailable\n");
 1219     constext txt_error_topen[] = "t_open: can't t_open /dev/tcp";
 1220 #endif /* NNTP_ABLE && TLI && !INET6 */
 1221 
 1222 #ifndef DISABLE_PRINTING
 1223 #   ifndef DONT_HAVE_PIPING
 1224         constext txt_mini_group_3[] = N_("%s=pipe; %s=mail; %s=print; %s=quit; %s=toggle all/unread; %s=save; %s=tag; %s=post");
 1225         constext txt_mini_page_3[] = N_("%s=pipe; %s=mail; %s=print; %s=quit; %s=reply mail; %s=save; %s=tag; %s=post");
 1226 #   else
 1227         constext txt_mini_group_3[] = N_("%s=mail; %s=print; %s=quit; %s=toggle all/unread; %s=save; %s=tag; %s=post");
 1228         constext txt_mini_page_3[] = N_("%s=mail; %s=print; %s=quit; %s=reply mail; %s=save; %s=tag; %s=post");
 1229 #   endif /* !DONT_HAVE_PIPING */
 1230 #else
 1231 #   ifndef DONT_HAVE_PIPING
 1232         constext txt_mini_group_3[] = N_("%s=pipe; %s=mail; %s=quit; %s=toggle all/unread; %s=save; %s=tag; %s=post");
 1233         constext txt_mini_page_3[] = N_("%s=pipe; %s=mail; %s=quit; %s=reply mail; %s=save; %s=tag; %s=post");
 1234 #   else
 1235         constext txt_mini_group_3[] = N_("%s=mail; %s=quit; %s=toggle all/unread; %s=save; %s=tag; %s=post");
 1236         constext txt_mini_page_3[] = N_("%s=mail; %s=quit; %s=reply mail; %s=save; %s=tag; %s=post");
 1237 #   endif /* !DONT_HAVE_PIPING */
 1238 #endif /* !DISABLE_PRINTING */
 1239 
 1240 #ifdef HAVE_COLOR
 1241 #   ifdef USE_CURSES
 1242         constext txt_no_colorterm[] = N_("Terminal does not support color");
 1243 #   endif /* USE_CURSES */
 1244 #endif /* HAVE_COLOR */
 1245 
 1246 #if defined(NNTP_ABLE) && defined(HAVE_INET_NTOA) && !defined(INET6)
 1247     constext txt_trying[] = N_("Trying %s");
 1248 #endif /* NNTP_ABLE && HAVE_INET_NTOA && !INET6 */
 1249 
 1250 
 1251 /*
 1252  * OFF ~ FALSE, ON ~ TRUE
 1253  */
 1254 constext *txt_onoff[] = { "OFF", "ON" };
 1255 
 1256 /*
 1257  * NB: All the following arrays must match corresponding ordering in tin.h
 1258  * Threading types
 1259  */
 1260 constext *txt_threading[] = {
 1261     N_("None"),
 1262     N_("Subject"),
 1263     N_("References"),
 1264     N_("Both Subject and References"),
 1265     N_("Multipart Subject"),
 1266     N_("Percentage Match"),
 1267     NULL
 1268 };
 1269 
 1270 /*
 1271  * Whether to use wildmat() or regexec() for matching strings
 1272  */
 1273 constext *txt_wildcard_type[] = { "WILDMAT", "REGEX", NULL };
 1274 
 1275 /*
 1276  * Handling of uuencoded data in pager
 1277  */
 1278 constext *txt_hide_uue_type[] = {
 1279     N_("No"),
 1280     N_("Yes"),
 1281     N_("Hide All"),
 1282     NULL
 1283 };
 1284 
 1285 /*
 1286  * How the From: line is displayed.
 1287  */
 1288 constext *txt_show_from[] = {
 1289     N_("None"),
 1290     N_("Address"),
 1291     N_("Full Name"),
 1292     N_("Address and Name"),
 1293     NULL
 1294 };
 1295 
 1296 /*
 1297  * How the score of a thread is computed
 1298  */
 1299 constext *txt_thread_score_type[] = {
 1300     N_("Max"),
 1301     N_("Sum"),
 1302     N_("Average"),
 1303     NULL
 1304 };
 1305 
 1306 #ifdef HAVE_COLOR
 1307     /*
 1308      * Which colors can be used.
 1309      */
 1310     constext *txt_colors[] = {
 1311         N_("Default"),
 1312         N_("Black"),
 1313         N_("Red"),
 1314         N_("Green"),
 1315         N_("Brown"),
 1316         N_("Blue"),
 1317         N_("Pink"),
 1318         N_("Cyan"),
 1319         N_("White"),
 1320         N_("Gray"),
 1321         N_("Light Red"),
 1322         N_("Light Green"),
 1323         N_("Yellow"),
 1324         N_("Light Blue"),
 1325         N_("Light Pink"),
 1326         N_("Light Cyan"),
 1327         N_("Light White"),
 1328         NULL
 1329     };
 1330     constext *txt_backcolors[] = {
 1331         N_("Default"),
 1332         N_("Black"),
 1333         N_("Red"),
 1334         N_("Green"),
 1335         N_("Brown"),
 1336         N_("Blue"),
 1337         N_("Pink"),
 1338         N_("Cyan"),
 1339         N_("White"),
 1340         NULL
 1341     };
 1342 #endif /* HAVE_COLOR */
 1343 
 1344 /*
 1345  * Which mark types can be used.
 1346  */
 1347 constext *txt_marks[] = {
 1348     N_("Nothing"),
 1349     N_("Mark"),
 1350     N_("Space"),
 1351     NULL
 1352 };
 1353 
 1354 /*
 1355  * Which attributes can be used for highlighting
 1356  */
 1357 constext *txt_attrs[] = {
 1358     N_("Normal"),
 1359     N_("Best highlighting"),
 1360     N_("Underline"),
 1361     N_("Reverse video"),
 1362     N_("Blinking"),
 1363     N_("Half bright"),
 1364     N_("Bold"),
 1365     NULL
 1366 };
 1367 
 1368 /* different options for auto_cc_bcc */
 1369 constext *txt_auto_cc_bcc_options[] = {
 1370     N_("No"),
 1371     N_("Cc"),
 1372     N_("Bcc"),
 1373     N_("Cc and Bcc"),
 1374     NULL
 1375 };
 1376 
 1377 /* different confirm choices */
 1378 constext *txt_confirm_choices[] = {
 1379     N_("none"),
 1380     N_("commands"),
 1381     N_("select"),
 1382     N_("quit"),
 1383     N_("commands & quit"),
 1384     N_("commands & select"),
 1385     N_("quit & select"),
 1386     N_("commands & quit & select"),
 1387     NULL
 1388 };
 1389 
 1390 /* different options for goto_next_unread */
 1391 constext *txt_goto_next_unread_options[] = {
 1392     N_("none"),
 1393     N_("PageDown"),
 1394     N_("PageNextUnread"),
 1395     N_("PageDown or PageNextUnread"),
 1396     NULL
 1397 };
 1398 
 1399 /* different options for quick_kill_header / quick_select_header */
 1400 constext *txt_quick_ks_header_options[] = {
 1401     N_("Subject: (case sensitive)"),
 1402     N_("Subject: (ignore case)"),
 1403     N_("From: (case sensitive)"),
 1404     N_("From: (ignore case)"),
 1405     N_("Msg-ID: & full References: line"),
 1406     N_("Msg-ID: & last References: only"),
 1407     N_("Message-ID: entry only"),
 1408     N_("Lines:"),
 1409     NULL
 1410 };
 1411 
 1412 /* different options for trim_article_body */
 1413 constext *txt_trim_article_body_options[] = {
 1414     N_("Don't trim article body"),
 1415     N_("Skip leading blank lines"),
 1416     N_("Skip trailing blank lines"),
 1417     N_("Skip leading and trailing blank l."),
 1418     N_("Compact multiple between text"),
 1419     N_("Compact multiple and skip leading"),
 1420     N_("Compact multiple and skip trailing"),
 1421     N_("Compact mltpl., skip lead. & trai."),
 1422     NULL
 1423 };
 1424 
 1425 /*
 1426  * MIME-Content-Transfer-Encodings.
 1427  */
 1428 /* TODO: can any of this go away? */
 1429 constext *txt_mime_encodings[] = {
 1430     txt_8bit, txt_base64, txt_quoted_printable, txt_7bit,
 1431     NULL
 1432 };
 1433 
 1434 constext *content_encodings[] = {
 1435     "7bit", "quoted-printable", "base64", "8bit", "binary", "x-uuencode",
 1436     NULL
 1437 };
 1438 
 1439 constext *content_types[] = {
 1440     "text", "multipart", "application", "message", "image", "audio", "video",
 1441     NULL
 1442 };
 1443 
 1444 /*
 1445  * Array of possible post processing descriptions and short-keys
 1446  * This must match the ordering of the defines in tin.h
 1447  */
 1448 constext *txt_post_process_types[] = {
 1449         N_("No"),
 1450         N_("Shell archive"),
 1451         N_("Yes"),
 1452         NULL
 1453 };
 1454 
 1455 constext *txt_sort_a_type[] = {
 1456         N_("Nothing"),
 1457         N_("Subject: (descending)"),
 1458         N_("Subject: (ascending)"),
 1459         N_("From: (descending)"),
 1460         N_("From: (ascending)"),
 1461         N_("Date: (descending)"),
 1462         N_("Date: (ascending)"),
 1463         N_("Score (descending)"),
 1464         N_("Score (ascending)"),
 1465         N_("Lines: (descending)"),
 1466         N_("Lines: (ascending)"),
 1467         NULL
 1468 };
 1469 
 1470 constext *txt_sort_t_type[] = {
 1471         N_("Nothing"),
 1472         N_("Score (descending)"),
 1473         N_("Score (ascending)"),
 1474         N_("Last posting date (descending)"),
 1475         N_("Last posting date (ascending)"),
 1476         NULL
 1477 };
 1478 
 1479 #ifdef USE_HEAPSORT
 1480 constext *txt_sort_functions[] = {
 1481         N_("Quick-sort"),
 1482         N_("Heap-sort"),
 1483         NULL
 1484 };
 1485 #endif /* USE_HEAPSORT */
 1486 
 1487 /* Ways of handling bogus groups */
 1488 constext *txt_strip_bogus_type[] = {
 1489         N_("Always Keep"),
 1490         N_("Always Remove"),
 1491         N_("Mark with D on selection screen"),
 1492         NULL
 1493 };
 1494 
 1495 /* Ways of handling killed articles */
 1496 constext *txt_kill_level_type[] = {
 1497         N_("Kill only unread arts"),
 1498         N_("Kill all arts & show with K"), /* TODO: s/K/art_marked_killed/ */
 1499         N_("Kill all arts and never show"),
 1500         NULL
 1501 };
 1502 
 1503 /* Various quoting styles */
 1504 constext *txt_quote_style_type[] = {
 1505         N_("Nothing special"),
 1506         N_("Compress quotes"),
 1507         N_("Quote signatures"),
 1508         N_("Compress quotes, quote sigs"),
 1509         N_("Quote empty lines"),
 1510         N_("Compress quotes, quote empty lines"),
 1511         N_("Quote sigs & empty lines"),
 1512         N_("Comp. q., quote sigs & empty lines"),
 1513         NULL
 1514 };
 1515 
 1516 #ifdef CHARSET_CONVERSION
 1517 /* supported charsets */
 1518 constext *txt_mime_charsets[] = {
 1519     "US-ASCII",
 1520     "ISO-8859-1", "ISO-8859-2", "ISO-8859-3", "ISO-8859-4", "ISO-8859-5",
 1521     "ISO-8859-7", "ISO-8859-9", "ISO-8859-10", "ISO-8859-13", "ISO-8859-14",
 1522     "ISO-8859-15", "ISO-8859-16",
 1523     "KOI8-RU", "KOI8-R", "KOI8-U",
 1524     "EUC-CN", "EUC-JP", "EUC-KR", "EUC-TW",
 1525     "ISO-2022-CN", "ISO-2022-CN-EXT", "ISO-2022-JP", "ISO-2022-JP-1",
 1526     "ISO-2022-JP-2",
 1527     "Big5",
 1528     "UTF-8",
 1529     NULL
 1530 };
 1531 #endif /* CHARSET_CONVERSION */
 1532 
 1533 /* 7bit charsets, US-ASCII must be the first entry */
 1534 constext *txt_mime_7bit_charsets[] = {
 1535     "US-ASCII",
 1536     "ISO-2022-CN", "ISO-2022-CN-EXT", "ISO-2022-JP", "ISO-2022-JP-1",
 1537     "ISO-2022-JP-2", "ISO-2022-KR",
 1538     "HZ-GB-2312",
 1539     NULL
 1540 };
 1541 
 1542 /* different mailbox formats */
 1543 constext *txt_mailbox_formats[] = {
 1544     "MBOXO",
 1545     "MBOXRD",
 1546     "MMDF",
 1547     NULL
 1548 };
 1549 
 1550 /* interactive mailers */
 1551 constext *txt_interactive_mailers[] = {
 1552     N_("no"),
 1553     N_("with headers"),
 1554     N_("without headers"),
 1555     NULL
 1556 };
 1557 
 1558 #ifdef HAVE_UNICODE_NORMALIZATION
 1559 constext *txt_normalization_forms[] = {
 1560     N_("None"),
 1561     N_("NFKC"),
 1562 #   if (HAVE_UNICODE_NORMALIZATION >= 2)
 1563     N_("NFKD"),
 1564     N_("NFC"),
 1565     N_("NFD"),
 1566 #   endif /* HAVE_UNICODE_NORMALIZATION >= 2 */
 1567     NULL
 1568 };
 1569 #endif /* HAVE_UNICODE_NORMALIZATION */
 1570 
 1571 struct opttxt txt_display_options = {
 1572     NULL,
 1573     N_("Display Options"),
 1574     NULL
 1575 };
 1576 
 1577 #ifdef HAVE_COLOR
 1578 struct opttxt txt_color_options = {
 1579     NULL,
 1580     N_("Color Options"),
 1581     NULL
 1582 };
 1583 #else
 1584 struct opttxt txt_highlight_options = {
 1585     NULL,
 1586     N_("Highlight Options"),
 1587     NULL
 1588 };
 1589 #endif /* HAVE_COLOR */
 1590 
 1591 struct opttxt txt_getart_limit_options = {
 1592     NULL,
 1593     N_("Article-Limiting Options"),
 1594     NULL
 1595 };
 1596 
 1597 struct opttxt txt_posting_options = {
 1598     NULL,
 1599     N_("Posting/Mailing Options"),
 1600     NULL
 1601 };
 1602 
 1603 struct opttxt txt_saving_options = {
 1604     NULL,
 1605     N_("Saving/Printing Options"),
 1606     NULL
 1607 };
 1608 
 1609 struct opttxt txt_expert_options = {
 1610     NULL,
 1611     N_("Expert Options"),
 1612     NULL
 1613 };
 1614 
 1615 struct opttxt txt_filtering_options = {
 1616     NULL,
 1617     N_("Filtering Options"),
 1618     NULL
 1619 };
 1620 
 1621 struct opttxt txt_beginner_level = {
 1622     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 1623     N_("Show mini menu & posting etiquette"),
 1624     N_("# If ON show a mini menu of useful commands at each level\n\
 1625 # and posting etiquette after composing an article\n")
 1626 };
 1627 
 1628 struct opttxt txt_show_description = {
 1629     N_("Show short description for each newsgroup. <SPACE> toggles & <CR> sets."),
 1630     N_("Show description of each newsgroup"),
 1631     N_("# If ON show group description text after newsgroup name at\n\
 1632 # group selection level\n")
 1633 };
 1634 
 1635 struct opttxt txt_show_author = {
 1636     N_("Show From (author) fields in group & thread level. <SPACE> toggles & <CR> sets."),
 1637     N_("In group and thread level, show author by"),
 1638     N_("# Part of From field to display in group and thread level\n\
 1639 # Possible values are (the default is marked with *):\n\
 1640 #   0 = none\n\
 1641 #   1 = address\n\
 1642 # * 2 = full name\n\
 1643 #   3 = both\n")
 1644 };
 1645 
 1646 struct opttxt txt_draw_arrow = {
 1647     N_("Draw -> or highlighted bar for selection. <SPACE> toggles & <CR> sets."),
 1648     N_("Draw -> instead of highlighted bar"),
 1649     N_("# If ON use -> otherwise highlighted bar for selection\n")
 1650 };
 1651 
 1652 struct opttxt txt_inverse_okay = {
 1653     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 1654     N_("Use inverse video for page headers"),
 1655     N_("# If ON use inverse video for page headers at different levels\n")
 1656 };
 1657 
 1658 struct opttxt txt_thread_articles = {
 1659     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 1660     N_("Thread articles by"),
 1661     N_("# Thread articles by ...\n\
 1662 # Possible values are (the default is marked with *):\n\
 1663 #   0 = nothing\n\
 1664 #   1 = Subject\n\
 1665 #   2 = References\n\
 1666 # * 3 = Both (Subject and References)\n\
 1667 #   4 = Multipart Subject\n\
 1668 #   5 = Percentage Match\n")
 1669 };
 1670 
 1671 struct opttxt txt_thread_perc = {
 1672     N_("Enter percentage match required to thread together. <CR> sets."),
 1673     N_("Thread percentage match"),
 1674     /* xgettext:no-c-format */
 1675     N_("# Thread percentage match...\n\
 1676 # the percentage of characters in the subject of an article that must match\n\
 1677 # a base article for both those articles to be considered to belong to the\n\
 1678 # same thread. This option is an integer percentage, eg. 80, no decimals may\n\
 1679 # follow. If 80 is used here, then 80% of the characters must match exactly,\n\
 1680 # no insertion of a character, for the two articles to be put in the same\n\
 1681 # thread. eg. 'happy' and 'harpy' would match, but 'harpie', 'happie' and\n\
 1682 # 'harppy' would be threaded separately from 'happy'\n")
 1683 };
 1684 
 1685 struct opttxt txt_thread_score = {
 1686     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 1687     N_("Score of a thread"),
 1688     N_("# Thread score\n\
 1689 # Possible values are (the default is marked with *):\n\
 1690 # * 0 = max\n\
 1691 #   1 = sum\n\
 1692 #   2 = average\n")
 1693 };
 1694 
 1695 struct opttxt txt_sort_article_type = {
 1696     N_("Sort articles by Subject, From, Date or Score. <SPACE> toggles & <CR> sets."),
 1697     N_("Sort articles by"),
 1698     N_("# Sort articles by ...\n\
 1699 # Possible values are (the default is marked with *):\n\
 1700 #   0 = nothing\n\
 1701 #   1 = Subject descending\n\
 1702 #   2 = Subject ascending\n\
 1703 #   3 = From descending\n\
 1704 #   4 = From ascending\n\
 1705 #   5 = Date descending\n\
 1706 # * 6 = Date ascending\n\
 1707 #   7 = Score descending\n\
 1708 #   8 = Score ascending\n\
 1709 #   9 = Lines descending\n\
 1710 #  10 = Lines ascending\n")
 1711 };
 1712 
 1713 struct opttxt txt_sort_threads_type = {
 1714     N_("Sort threads by Nothing or Score. <SPACE> toggles & <CR> sets."),
 1715     N_("Sort threads by"),
 1716     N_("# Sort thread by ...\n\
 1717 # Possible values are (the default is marked with *):\n\
 1718 #   0 = nothing\n\
 1719 # * 1 = Score descending\n\
 1720 #   2 = Score ascending\n\
 1721 #   3 = Last posting date descending\n\
 1722 #   4 = Last posting date ascending\n")
 1723 };
 1724 
 1725 struct opttxt txt_pos_first_unread = {
 1726     N_("Put cursor at first/last unread art in groups. <SPACE> toggles & <CR> sets."),
 1727     N_("Go to first unread article in group"),
 1728     N_("# If ON put cursor at first unread art in group otherwise last art\n")
 1729 };
 1730 
 1731 struct opttxt txt_show_only_unread_arts = {
 1732     N_("Show all articles or only unread articles. <SPACE> toggles & <CR> sets."),
 1733     N_("Show only unread articles"),
 1734     N_("# If ON show only new/unread articles otherwise show all.\n")
 1735 };
 1736 
 1737 struct opttxt txt_show_only_unread_groups = {
 1738     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 1739     N_("Show only groups with unread arts"),
 1740     N_("# If ON show only subscribed to groups that contain unread articles.\n")
 1741 };
 1742 
 1743 struct opttxt txt_kill_level = {
 1744     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 1745     N_("Filter which articles"),
 1746     N_("# Filter which articles\n\
 1747 # Possible values are (the default is marked with *):\n\
 1748 # * 0 = only kill unread articles\n\
 1749 #   1 = kill all articles and show in threads marked with K\n\
 1750 #   2 = kill all articles and never show them\n")
 1751 };
 1752 
 1753 struct opttxt txt_goto_next_unread = {
 1754     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 1755     N_("Go to the next unread article with"),
 1756     N_("# Go to the unread article with following key(s)\n\
 1757 # Possible values are (the default is marked with *):\n\
 1758 #   0 = nothing\n\
 1759 #   1 = PAGE DOWN\n\
 1760 # * 2 = TAB\n\
 1761 #   3 = PAGE DOWN or TAB\n")
 1762 };
 1763 
 1764 struct opttxt txt_trim_article_body = {
 1765     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 1766     N_("How to treat blank lines"),
 1767     N_("# Trim the article body, remove unnecessary blank lines.\n\
 1768 # Possible values are (the default is marked with *):\n\
 1769 # * 0 = Nothing special\n\
 1770 #   1 = Skip leading blank lines\n\
 1771 #   2 = Skip trailing blank lines\n\
 1772 #   3 = Skip leading and trailing blank lines\n\
 1773 #   4 = Compact multiple blank lines between text blocks\n\
 1774 #   5 = Compact multiple blank lines between text blocks and skip\n\
 1775 #       leading blank lines\n\
 1776 #   6 = Compact multiple blank lines between text blocks and skip\n\
 1777 #       trailing blank lines\n\
 1778 #   7 = Compact multiple blank lines between text blocks and skip\n\
 1779 #       leading and trailing blank lines\n")
 1780 };
 1781 
 1782 struct opttxt txt_auto_list_thread = {
 1783     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 1784     N_("List thread using right arrow key"),
 1785     N_("# If ON automatically list thread when entering it using right arrow key.\n")
 1786 };
 1787 
 1788 struct opttxt txt_art_marked_deleted = {
 1789     N_("Enter character to indicate deleted articles. <CR> sets, <ESC> cancels."),
 1790     N_("Character to show deleted articles"),
 1791     N_("# Character used to show that an art was deleted (default 'D')\n\
 1792 # _ is turned into ' '\n")
 1793 };
 1794 
 1795 struct opttxt txt_art_marked_inrange = {
 1796     N_("Enter character to indicate articles in a range. <CR> sets, <ESC> cancels."),
 1797     N_("Character to show inrange articles"),
 1798     N_("# Character used to show that an art is in a range (default '#')\n\
 1799 # _ is turned into ' '\n")
 1800 };
 1801 
 1802 struct opttxt txt_art_marked_return = {
 1803     N_("Enter character to indicate that article will return. <CR> sets, <ESC> cancels."),
 1804     N_("Character to show returning arts"),
 1805     N_("# Character used to show that an art will return (default '-')\n\
 1806 # _ is turned into ' '\n")
 1807 };
 1808 
 1809 struct opttxt txt_art_marked_selected = {
 1810     N_("Enter character to indicate selected articles. <CR> sets, <ESC> cancels."),
 1811     N_("Character to show selected articles"),
 1812     N_("# Character used to show that an art was auto-selected (default '*')\n\
 1813 # _ is turned into ' '\n")
 1814 };
 1815 
 1816 struct opttxt txt_art_marked_recent = {
 1817     N_("Enter character to indicate recent articles. <CR> sets, <ESC> cancels."),
 1818     N_("Character to show recent articles"),
 1819     N_("# Character used to show that an art is recent (default 'o')\n\
 1820 # _ is turned into ' '\n")
 1821 };
 1822 
 1823 struct opttxt txt_art_marked_unread = {
 1824     N_("Enter character to indicate unread articles. <CR> sets, <ESC> cancels."),
 1825     N_("Character to show unread articles"),
 1826     N_("# Character used to show that an art is unread (default '+')\n\
 1827 # _ is turned into ' '\n")
 1828 };
 1829 
 1830 struct opttxt txt_art_marked_read = {
 1831     N_("Enter character to indicate read articles. <CR> sets, <ESC> cancels."),
 1832     N_("Character to show read articles"),
 1833     N_("# Character used to show that an art was read (default ' ')\n\
 1834 # _ is turned into ' '\n")
 1835 };
 1836 
 1837 struct opttxt txt_art_marked_killed = {
 1838     N_("Enter character to indicate killed articles. <CR> sets, <ESC> cancels."),
 1839     N_("Character to show killed articles"),
 1840     N_("# Character used to show that an art was killed (default 'K')\n\
 1841 # kill_level must be set accordingly, _ is turned into ' '\n")
 1842 };
 1843 
 1844 struct opttxt txt_art_marked_read_selected = {
 1845     N_("Enter character to indicate read selected articles. <CR> sets, <ESC> cancels."),
 1846     N_("Character to show readselected arts"),
 1847     N_("# Character used to show that an art was selected before read (default ':')\n\
 1848 # kill_level must be set accordingly, _ is turned into ' '\n")
 1849 };
 1850 
 1851 struct opttxt txt_abbreviate_groupname = {
 1852     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 1853     N_("Abbreviate long newsgroup names"),
 1854     N_("# If ON abbreviate (if necessary) long newsgroup names at group selection\n\
 1855 # level and article level like this:\n\
 1856 #   news.software.readers -> n.software.readers -> n.s.readers -> n.s.r.\n")
 1857 };
 1858 
 1859 struct opttxt txt_scroll_lines = {
 1860     N_("0 = full page scrolling, -1 = show previous last line as first on next page, -2 = half page"),
 1861     N_("Number of lines to scroll in pager"),
 1862     N_("# Number of lines that cursor-up/down will scroll in article pager\n\
 1863 # Possible values are (the default is marked with *):\n\
 1864 #  -2 = half-page scrolling\n\
 1865 #  -1 = the top/bottom line is carried over onto the next page\n\
 1866 #   0 = page-by-page (traditional behavior)\n\
 1867 # * 1 = line-by-line\n\
 1868 #   2 or greater = scroll by 2 or more lines (only in the pager)\n")
 1869 };
 1870 
 1871 struct opttxt txt_show_signatures = {
 1872     N_("Display signatures. <SPACE> toggles & <CR> sets."),
 1873     N_("Display signatures"),
 1874     N_("# If OFF don't show signatures when displaying articles\n")
 1875 };
 1876 
 1877 struct opttxt txt_hide_uue = {
 1878     N_("Display uuencoded data as tagged attachments. <SPACE> toggles & <CR> sets."),
 1879     N_("Display uue data as an attachment"),
 1880     N_("# Handling of uuencoded data in the pager\n\
 1881 # Possible values are (the default is marked with *):\n\
 1882 # * 0 = no, display raw uuencoded data\n\
 1883 #   1 = yes, uuencoded data will be condensed to a single tag line showing\n\
 1884 #       size and filename, similar to how MIME attachments are displayed\n\
 1885 #   2 = hide all, as for 1, but any line that looks like uuencoded data will\n\
 1886 #       be folded into a tag line.\n")
 1887 };
 1888 
 1889 struct opttxt txt_tex2iso_conv = {
 1890     N_("Decode German style TeX umlaut codes to ISO. <SPACE> toggles & <CR> sets."),
 1891     N_("Display \"a as Umlaut-a"),
 1892     N_("# If ON decode German style TeX umlaut codes to ISO and\n\
 1893 # show \"a as Umlaut-a, etc.\n")
 1894 };
 1895 
 1896 struct opttxt txt_news_headers_to_display = {
 1897     N_("Space separated list of header fields"),
 1898     N_("Display these header fields (or *)"),
 1899     N_("# Which news headers you wish to see. If you want to see _all_ the headers,\n\
 1900 # place an '*' as this value. This is the only way a wildcard can be used.\n\
 1901 # If you enter 'X-' as the value, you will see all headers beginning with\n\
 1902 # 'X-' (like X-Alan or X-Pape). You can list more than one by delimiting with\n\
 1903 # spaces. Not defining anything turns off this option.\n")
 1904 };
 1905 
 1906 struct opttxt txt_news_headers_to_not_display = {
 1907     N_("Space separated list of header fields"),
 1908     N_("Do not display these header fields"),
 1909     N_("# Same as 'news_headers_to_display' except it denotes the opposite.\n\
 1910 # An example of using both options might be if you thought X- headers were\n\
 1911 # A Good Thing(tm), but thought Alan and Pape were miscreants...well then you\n\
 1912 # would do something like this:\n\
 1913 # news_headers_to_display=X-\n\
 1914 # news_headers_to_not_display=X-Alan X-Pape\n\
 1915 # Not defining anything turns off this option.\n")
 1916 };
 1917 
 1918 struct opttxt txt_alternative_handling = {
 1919     N_("Do you want to enable automatic handling of multipart/alternative articles?"),
 1920     N_("Skip multipart/alternative parts"),
 1921     N_("# If ON strip multipart/alternative messages automatically\n")
 1922 };
 1923 
 1924 struct opttxt txt_verbatim_handling = {
 1925     N_("Enable detection of verbatim blocks? <SPACE> toggles & <CR> sets."),
 1926     N_("Detection of verbatim blocks"),
 1927     N_("# If ON detect verbatim blocks in articles\n")
 1928 };
 1929 
 1930 #ifdef HAVE_COLOR
 1931 struct opttxt txt_quote_regex = {
 1932     N_("A regex used to decide which lines to show in col_quote."),
 1933     N_("Regex used to show quoted lines"),
 1934     N_("# A regular expression that tin will use to decide which lines are\n\
 1935 # quoted when viewing articles. Quoted lines are shown in col_quote.\n\
 1936 # If you leave this blank, tin will use a built in default.\n")
 1937 };
 1938 
 1939 struct opttxt txt_quote_regex2 = {
 1940     N_("A regex used to decide which lines to show in col_quote2."),
 1941     N_("Regex used to show twice quoted l."),
 1942     N_("# A regular expression that tin will use to decide which lines are\n\
 1943 # quoted twice. Twice quoted lines are shown in col_quote2.\n\
 1944 # If you leave this blank, tin will use a built in default.\n")
 1945 };
 1946 
 1947 struct opttxt txt_quote_regex3 = {
 1948     N_("A regex used to decide which lines to show in col_quote3."),
 1949     N_("Regex used to show >= 3 times q.l."),
 1950     N_("# A regular expression that tin will use to decide which lines are\n\
 1951 # quoted >=3 times. >=3 times quoted lines are shown in col_quote3.\n\
 1952 # If you leave this blank, tin will use a built in default.\n")
 1953 };
 1954 
 1955 struct opttxt txt_extquote_handling = {
 1956     N_("Enable detection of external quotes? <SPACE> toggles & <CR> sets."),
 1957     N_("Detection of external quotes"),
 1958     N_("# If ON detect quoted text from external sources in articles\n")
 1959 };
 1960 
 1961 struct opttxt txt_extquote_regex = {
 1962     N_("A regex used to decide which lines to show in col_extquote."),
 1963     N_("Regex used to show quotes from external sources"),
 1964     N_("# A regular expression that tin will use to decide which lines are\n\
 1965 # external quotes. Text from external quotes is shown in col_extquote.\n\
 1966 # If you leave this blank, tin will use a built in default.\n")
 1967 };
 1968 #endif /* HAVE_COLOR */
 1969 
 1970 struct opttxt txt_slashes_regex = {
 1971     N_("A regex used to decide which words to show in col_markslashes."),
 1972     N_("Regex used to highlight /slashes/"),
 1973     N_("# A regular expression that tin will use to decide which words\n\
 1974 # bounded by '/' are to be shown in col_markslashes.\n\
 1975 # If you leave this blank, tin will use a built in default.\n")
 1976 };
 1977 
 1978 struct opttxt txt_stars_regex = {
 1979     N_("A regex used to decide which words to show in col_markstars."),
 1980     N_("Regex used to highlight *stars*"),
 1981     N_("# A regular expression that tin will use to decide which words\n\
 1982 # bounded by '*' are to be shown in col_markstars.\n\
 1983 # If you leave this blank, tin will use a built in default.\n")
 1984 };
 1985 
 1986 struct opttxt txt_strokes_regex = {
 1987     N_("A regex used to decide which words to show in col_markstroke."),
 1988     N_("Regex used to highlight -strokes-"),
 1989     N_("# A regular expression that tin will use to decide which words\n\
 1990 # bounded by '-' are to be shown in col_markstroke.\n\
 1991 # If you leave this blank, tin will use a built in default.\n")
 1992 };
 1993 
 1994 struct opttxt txt_underscores_regex = {
 1995     N_("A regex used to decide which words to show in col_markdash."),
 1996     N_("Regex used to highlight _underline_"),
 1997     N_("# A regular expression that tin will use to decide which words\n\
 1998 # bounded by '_' are to be shown in col_markdash.\n\
 1999 # If you leave this blank, tin will use a built in default.\n")
 2000 };
 2001 
 2002 struct opttxt txt_strip_re_regex = {
 2003     N_("A regex used to find Subject prefixes to remove.  Use '|' as separator."),
 2004     N_("Regex with Subject prefixes"),
 2005     N_("# A regular expression that tin will use to find Subject prefixes\n\
 2006 # which will be removed before showing the header.\n")
 2007 };
 2008 
 2009 struct opttxt txt_strip_was_regex = {
 2010     N_("A regex used to find Subject suffixes to remove.  Use '|' as separator."),
 2011     N_("Regex with Subject suffixes"),
 2012     N_("# A regular expression that tin will use to find Subject suffixes\n\
 2013 # which will be removed when replying or posting followup.\n")
 2014 };
 2015 
 2016 struct opttxt txt_verbatim_begin_regex = {
 2017     N_("A regex used to find the begin of a verbatim block."),
 2018     N_("Regex for begin of a verbatim block"),
 2019     N_("# A regular expression that tin will use to find the begin of\n\
 2020 # a verbatim block.\n")
 2021 };
 2022 
 2023 struct opttxt txt_verbatim_end_regex = {
 2024     N_("A regex used to find the end of a verbatim block."),
 2025     N_("Regex for end of a verbatim block"),
 2026     N_("# A regular expression that tin will use to find the end of\n\
 2027 # a verbatim block.\n")
 2028 };
 2029 
 2030 struct opttxt txt_metamail_prog = {
 2031     N_("Enter name and options for external MIME viewer, --internal for built-in viewer"),
 2032     N_("MIME binary content viewer"),
 2033     N_("# If --internal automatically use the built in MIME viewer for non-text\n\
 2034 # parts of articles.\n\
 2035 # Otherwise specify an external viewer program (eg, metamail) or leave blank\n\
 2036 # for no automatic viewing\n")
 2037 };
 2038 
 2039 struct opttxt txt_ask_for_metamail = {
 2040     N_("Confirm before starting non-text viewing program"),
 2041     N_("Ask before using MIME viewer"),
 2042     N_("# If ON tin will ask before using metamail to display MIME messages\n\
 2043 # this only happens if metamail_prog is set to something\n")
 2044 };
 2045 
 2046 struct opttxt txt_catchup_read_groups = {
 2047     N_("Ask to mark groups read when quitting. <SPACE> toggles & <CR> sets."),
 2048     N_("Catchup read groups when quitting"),
 2049     N_("# If ON ask user if read groups should all be marked read\n")
 2050 };
 2051 
 2052 struct opttxt txt_group_catchup_on_exit = {
 2053     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2054     N_("Catchup group using left key"),
 2055     N_("# If ON catchup group/thread when leaving with the left arrow key.\n")
 2056 };
 2057 
 2058 struct opttxt txt_thread_catchup_on_exit = {
 2059     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2060     N_("Catchup thread by using left key"),
 2061     ""
 2062 };
 2063 
 2064 struct opttxt txt_confirm_choice = {
 2065     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2066     N_("Which actions require confirmation"),
 2067     N_("# What should we ask confirmation for.\n")
 2068 };
 2069 
 2070 struct opttxt txt_mark_ignore_tags = {
 2071     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2072     N_("'Mark as (un)read' ignores tags"),
 2073     N_("# If ON the 'Mark as (un)read' function marks only the current article.\n")
 2074 };
 2075 
 2076 struct opttxt txt_url_handler = {
 2077     N_("Program to run to open URLs, <CR> sets, <ESC> cancels."),
 2078     N_("Program that opens URLs"),
 2079     N_("# The program used to open URLs. The actual URL will be appended\n")
 2080 };
 2081 
 2082 struct opttxt txt_use_mouse = {
 2083     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2084     N_("Use mouse in xterm"),
 2085     N_("# If ON enable mouse button support on xterm terminals\n")
 2086 };
 2087 
 2088 #ifdef HAVE_KEYPAD
 2089 struct opttxt txt_use_keypad = {
 2090     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2091     N_("Use scroll keys on keypad"),
 2092     N_("# If ON enable scroll keys on terminals that support it\n")
 2093 };
 2094 #endif /* HAVE_KEYPAD */
 2095 
 2096 struct opttxt txt_getart_limit = {
 2097     N_("Enter maximum number of article to get. <CR> sets."),
 2098     N_("Number of articles to get"),
 2099     N_("# Number of articles to get (0=no limit), if negative sets maximum number\n\
 2100 # of already read articles to be read before first unread one\n")
 2101 };
 2102 
 2103 struct opttxt txt_recent_time = {
 2104     N_("Enter number of days article is considered recent. <CR> sets."),
 2105     N_("Article recentness time limit"),
 2106     N_("# Number of days in which article is considered recent, (0=OFF)\n")
 2107 };
 2108 
 2109 struct opttxt txt_wildcard = {
 2110     N_("WILDMAT for normal wildcards, REGEX for full regular expression matching."),
 2111     N_("Wildcard matching"),
 2112     N_("# Wildcard matching\n\
 2113 # Possible values are (the default is marked with *):\n\
 2114 # * 0 = wildmat\n\
 2115 #   1 = regex\n")
 2116 };
 2117 
 2118 struct opttxt txt_score_limit_kill = {
 2119     N_("Enter minimal score before an article is marked killed. <CR> sets."),
 2120     N_("Score limit (kill)"),
 2121     N_("# Score limit before an article is marked killed\n")
 2122 };
 2123 
 2124 struct opttxt txt_score_kill = {
 2125     N_("Enter default score to kill articles. <CR> sets."),
 2126     N_("Default score to kill articles"),
 2127     N_("# Default score to kill articles\n")
 2128 };
 2129 
 2130 struct opttxt txt_score_limit_select = {
 2131     N_("Enter minimal score before an article is marked hot. <CR> sets."),
 2132     N_("Score limit (select)"),
 2133     N_("# Score limit before an article is marked hot\n")
 2134 };
 2135 
 2136 struct opttxt txt_score_select = {
 2137     N_("Enter default score to select articles. <CR> sets."),
 2138     N_("Default score to select articles"),
 2139     N_("# Default score to select articles\n")
 2140 };
 2141 
 2142 #ifdef XFACE_ABLE
 2143 struct opttxt txt_use_slrnface = {
 2144     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2145     N_("Use slrnface to show ''X-Face:''s"),
 2146     N_("# If ON using slrnface(1) to interpret the ''X-Face:'' header.\n\
 2147 # Only useful when running in an xterm.\n")
 2148 };
 2149 #endif /* XFACE_ABLE */
 2150 
 2151 #ifdef HAVE_COLOR
 2152 struct opttxt txt_use_color = {
 2153     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2154     N_("Use ANSI color"),
 2155     N_("# If ON using ANSI-color\n")
 2156 };
 2157 
 2158 struct opttxt txt_col_normal = {
 2159     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2160     N_("Standard foreground color"),
 2161     N_("# Standard foreground color\n\
 2162 # Default: -1 (default color)\n")
 2163 };
 2164 
 2165 struct opttxt txt_col_back = {
 2166     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2167     N_("Standard background color"),
 2168     N_("# Standard background color\n\
 2169 # Default: -1 (default color)\n")
 2170 };
 2171 
 2172 struct opttxt txt_col_invers_bg = {
 2173     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2174     N_("Color for inverse text (background)"),
 2175     N_("# Color of background for inverse text\n\
 2176 # Default: 4 (blue)\n")
 2177 };
 2178 
 2179 struct opttxt txt_col_invers_fg = {
 2180     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2181     N_("Color for inverse text (foreground)"),
 2182     N_("# Color of foreground for inverse text\n\
 2183 # Default: 7 (white)\n")
 2184 };
 2185 
 2186 struct opttxt txt_col_text = {
 2187     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2188     N_("Color of text lines"),
 2189     N_("# Color of text lines\n\
 2190 # Default: -1 (default color)\n")
 2191 };
 2192 
 2193 struct opttxt txt_col_minihelp = {
 2194     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2195     N_("Color of mini help menu"),
 2196     N_("# Color of mini help menu\n\
 2197 # Default: 3 (brown)\n")
 2198 };
 2199 
 2200 struct opttxt txt_col_help = {
 2201     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2202     N_("Color of help text"),
 2203     N_("# Color of help pages\n\
 2204 # Default: -1 (default color)\n")
 2205 };
 2206 
 2207 struct opttxt txt_col_message = {
 2208     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2209     N_("Color of status messages"),
 2210     N_("# Color of messages in last line\n\
 2211 # Default: 6 (cyan)\n")
 2212 };
 2213 
 2214 struct opttxt txt_col_quote = {
 2215     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2216     N_("Color of quoted lines"),
 2217     N_("# Color of quote-lines\n\
 2218 # Default: 2 (green)\n")
 2219 };
 2220 
 2221 struct opttxt txt_col_quote2 = {
 2222     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2223     N_("Color of twice quoted line"),
 2224     N_("# Color of twice quoted lines\n\
 2225 # Default: 3 (brown)\n")
 2226 };
 2227 
 2228 struct opttxt txt_col_quote3 = {
 2229     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2230     N_("Color of =>3 times quoted line"),
 2231     N_("# Color of >=3 times quoted lines\n\
 2232 # Default: 4 (blue)\n")
 2233 };
 2234 
 2235 struct opttxt txt_col_head = {
 2236     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2237     N_("Color of article header lines"),
 2238     N_("# Color of header-lines\n\
 2239 # Default: 2 (green)\n")
 2240 };
 2241 
 2242 struct opttxt txt_col_newsheaders = {
 2243     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2244     N_("Color of actual news header fields"),
 2245     N_("# Color of actual news header fields\n\
 2246 # Default: 9 (light red)\n")
 2247 };
 2248 
 2249 struct opttxt txt_col_subject = {
 2250     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2251     N_("Color of article subject lines"),
 2252     N_("# Color of article subject\n\
 2253 # Default: 6 (cyan)\n")
 2254 };
 2255 
 2256 struct opttxt txt_col_extquote = {
 2257     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2258     N_("Color of external quotes"),
 2259     N_("# Color of quoted text from external sources\n\
 2260 # Default: 5 (pink)\n")
 2261 };
 2262 
 2263 struct opttxt txt_col_response = {
 2264     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2265     N_("Color of response counter"),
 2266     N_("# Color of response counter\n\
 2267 # Default: 2 (green)\n")
 2268 };
 2269 
 2270 struct opttxt txt_col_from = {
 2271     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2272     N_("Color of sender (From:)"),
 2273     N_("# Color of sender (From:)\n\
 2274 # Default: 2 (green)\n")
 2275 };
 2276 
 2277 struct opttxt txt_col_title = {
 2278     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2279     N_("Color of help/mail sign"),
 2280     N_("# Color of Help/Mail-Sign\n\
 2281 # Default: 4 (blue)\n")
 2282 };
 2283 
 2284 struct opttxt txt_col_signature = {
 2285     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2286     N_("Color of signatures"),
 2287     N_("# Color of signature\n\
 2288 # Default: 4 (blue)\n")
 2289 };
 2290 
 2291 struct opttxt txt_col_urls = {
 2292     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2293     N_("Color of highlighted URLs"),
 2294     N_("# Color of highlighted URLs\n\
 2295 # Default: -1 (default color)\n")
 2296 };
 2297 
 2298 struct opttxt txt_col_verbatim = {
 2299     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2300     N_("Color of verbatim blocks"),
 2301     N_("# Color of verbatim blocks\n\
 2302 # Default: 5 (pink)\n")
 2303 };
 2304 
 2305 struct opttxt txt_col_markstar = {
 2306     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2307     N_("Color of highlighting with *stars*"),
 2308     N_("# Color of word highlighting with *stars*\n\
 2309 # Default: 11 (yellow)\n")
 2310 };
 2311 
 2312 struct opttxt txt_col_markdash = {
 2313     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2314     N_("Color of highlighting with _dash_"),
 2315     N_("# Color of word highlighting with _dash_\n\
 2316 # Default: 13 (light pink)\n")
 2317 };
 2318 
 2319 struct opttxt txt_col_markslash = {
 2320     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2321     N_("Color of highlighting with /slash/"),
 2322     N_("# Color of word highlighting with /slash/\n\
 2323 # Default: 14 (light cyan)\n")
 2324 };
 2325 
 2326 struct opttxt txt_col_markstroke = {
 2327     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2328     N_("Color of highlighting with -stroke-"),
 2329     N_("# Color of word highlighting with -stroke-\n\
 2330 # Default: 12 (light blue)\n")
 2331 };
 2332 #endif /* HAVE_COLOR */
 2333 
 2334 struct opttxt txt_mono_markstar = {
 2335     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2336     N_("Attr. of highlighting with *stars*"),
 2337     N_("# Attributes of word highlighting on mono terminals\n\
 2338 # Possible values are:\n\
 2339 #   0 = Normal\n\
 2340 #   1 = Underline\n\
 2341 #   2 = Best highlighting\n\
 2342 #   3 = Reverse video\n\
 2343 #   4 = Blinking\n\
 2344 #   5 = Half bright\n\
 2345 #   6 = Bold\n\n\
 2346 # Attribute of word highlighting with *stars*\n\
 2347 # Default: 6 (bold)\n")
 2348 };
 2349 
 2350 struct opttxt txt_mono_markdash = {
 2351     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2352     N_("Attr. of highlighting with _dash_"),
 2353     N_("# Attribute of word highlighting with _dash_\n\
 2354 # Default: 2 (best highlighting)\n")
 2355 };
 2356 
 2357 struct opttxt txt_mono_markslash = {
 2358     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2359     N_("Attr. of highlighting with /slash/"),
 2360     N_("# Attribute of word highlighting with /slash/\n\
 2361 # Default: 5 (half bright)\n")
 2362 };
 2363 
 2364 struct opttxt txt_mono_markstroke = {
 2365     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2366     N_("Attr. of highlighting with -stroke-"),
 2367     N_("# Attribute of word highlighting with -stroke-\n\
 2368 # Default: 3 (reverse video)\n")
 2369 };
 2370 
 2371 struct opttxt txt_url_highlight = {
 2372     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2373     N_("URL highlighting in message body"),
 2374     N_("# Enable URL highlighting?\n")
 2375 };
 2376 
 2377 struct opttxt txt_word_highlight = {
 2378     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2379     N_("Word highlighting in message body"),
 2380     N_("# Enable word highlighting?\n")
 2381 };
 2382 
 2383 struct opttxt txt_word_h_display_marks = {
 2384     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2385     N_("What to display instead of mark"),
 2386     N_("# Should the leading and ending stars and dashes also be displayed,\n\
 2387 # even when they are highlighting marks?\n\
 2388 # Possible values are (the default is marked with *):\n\
 2389 #   0 = no\n\
 2390 #   1 = yes, display mark\n\
 2391 # * 2 = print a space instead\n")
 2392 };
 2393 
 2394 struct opttxt txt_wrap_column = {
 2395     N_("Enter column number to wrap article lines to in the pager. <CR> sets."),
 2396     N_("Page line wrap column"),
 2397     N_("# Wrap article lines at column\n")
 2398 };
 2399 
 2400 struct opttxt txt_wrap_on_next_unread = {
 2401     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2402     N_("Wrap around threads on next unread"),
 2403     N_("# If ON wrap around threads on searching next unread article\n")
 2404 };
 2405 
 2406 struct opttxt txt_mail_address = {
 2407     N_("Enter default mail address (and fullname). <CR> sets."),
 2408     N_("Mail address (and fullname)"),
 2409     N_("# User's mail address (and fullname), if not username@host (fullname)\n")
 2410 };
 2411 
 2412 struct opttxt txt_prompt_followupto = {
 2413     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2414     N_("Show empty Followup-To in editor"),
 2415     N_("# If ON show empty Followup-To header when editing an article\n")
 2416 };
 2417 
 2418 struct opttxt txt_sigfile = {
 2419     N_("Enter path/! command/--none to create your default signature. <CR> sets."),
 2420     N_("Create signature from path/command"),
 2421     N_("# Signature path (random sigs)/file to be used when posting/replying\n\
 2422 # sigfile=file       appends file as signature\n\
 2423 # sigfile=!command   executes external command to generate a signature\n\
 2424 # sigfile=--none     don't append a signature\n")
 2425 };
 2426 
 2427 struct opttxt txt_sigdashes = {
 2428     N_("Prepend signature with \"-- \" on own line. <SPACE> toggles & <CR> sets."),
 2429     N_("Prepend signature with \"-- \""),
 2430     N_("# If ON prepend the signature with dashes '\\n-- \\n'\n")
 2431 };
 2432 
 2433 struct opttxt txt_signature_repost = {
 2434     N_("Add signature when reposting articles. <SPACE> toggles & <CR> sets."),
 2435     N_("Add signature when reposting"),
 2436     N_("# If ON add signature to reposted articles\n")
 2437 };
 2438 
 2439 struct opttxt txt_quote_chars = {
 2440     N_("Enter quotation marks, %s or %S for author's initials."),
 2441     N_("Characters used as quote-marks"),
 2442     N_("# Characters used in quoting to followups and replies.\n\
 2443 # '_' is replaced by ' ', %s, %S are replaced by author's initials.\n")
 2444 };
 2445 
 2446 struct opttxt txt_quote_style = {
 2447     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2448     N_("Quoting behavior"),
 2449     N_("# How quoting should be handled when following up or replying.\n\
 2450 # Possible values are (the default is marked with *):\n\
 2451 #   0 = Nothing special\n\
 2452 #   1 = Compress quotes\n\
 2453 #   2 = Quote signatures\n\
 2454 #   3 = Compress quotes, quote signatures\n\
 2455 #   4 = Quote empty lines\n\
 2456 # * 5 = Compress quotes, quote empty lines\n\
 2457 #   6 = Quote signatures, quote empty lines\n\
 2458 #   7 = Compress quotes, quote signatures, quote empty lines\n")
 2459 };
 2460 
 2461 struct opttxt txt_news_quote_format = {
 2462     N_("%A Addr %D Date %F Addr+Name %G Groupname %M Message-ID %N Name %C First Name"),
 2463     N_("Quote line when following up"),
 2464     N_("# Format of quote line when mailing/posting/following-up an article\n\
 2465 # %A Address    %D Date   %F Addr+Name   %G Groupname   %M Message-ID\n\
 2466 # %N Full Name  %C First Name   %I Initials\n")
 2467 };
 2468 
 2469 struct opttxt txt_xpost_quote_format = {
 2470     N_("%A Addr %D Date %F Addr+Name %G Groupname %M Message-ID %N Name %C First Name"),
 2471     N_("Quote line when cross-posting"),
 2472     ""
 2473 };
 2474 
 2475 struct opttxt txt_mail_quote_format = {
 2476     N_("%A Addr %D Date %F Addr+Name %G Groupname %M Message-ID %N Name %C First Name"),
 2477     N_("Quote line when mailing"),
 2478     ""
 2479 };
 2480 
 2481 struct opttxt txt_advertising = {
 2482     N_("If ON, include User-Agent: header. <SPACE> toggles & <CR> sets."),
 2483     N_("Insert 'User-Agent:' header"),
 2484     N_("# If ON include advertising User-Agent: header\n")
 2485 };
 2486 
 2487 #ifndef CHARSET_CONVERSION
 2488 struct opttxt txt_mm_charset = {
 2489     N_("Enter charset name for MIME (e.g. US-ASCII, ISO-8859-1, EUC-KR), <CR> to set."),
 2490     N_("MM_CHARSET"),
 2491     N_("# Charset supported locally which is also used for MIME header and\n\
 2492 # Content-Type header.\n\
 2493 # If not set, the value of the environment variable MM_CHARSET is used.\n\
 2494 # Set to US-ASCII or compile time default if neither of them is defined.\n\
 2495 # If MIME_STRICT_CHARSET is defined at compile-time, charset other than\n\
 2496 # mm_charset is considered not displayable and represented as '?'.\n")
 2497 };
 2498 #else
 2499 struct opttxt txt_mm_network_charset = {
 2500     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2501     N_("MM_NETWORK_CHARSET"),
 2502     N_("# Charset used for MIME (Content-Type) header in postings.\n")
 2503 };
 2504 #   ifdef NO_LOCALE
 2505 struct opttxt txt_mm_local_charset = {
 2506     N_("Enter local charset name (e.g. US-ASCII, ISO-8859-1, EUC-KR), <CR> to set."),
 2507     N_("MM_LOCAL_CHARSET"),
 2508     N_("# Charset supported locally.\n")
 2509 };
 2510 #   endif /* NO_LOCALE */
 2511 #endif /* !CHARSET_CONVERSION */
 2512 
 2513 struct opttxt txt_mailbox_format = {
 2514     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2515     N_("Mailbox format"),
 2516     N_("# Format of the mailbox.\n")
 2517 };
 2518 
 2519 struct opttxt txt_post_mime_encoding = {
 2520     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2521     N_("MIME encoding in news messages"),
 2522     N_("# MIME encoding (8bit, base64, quoted-printable, 7bit) of the body\n\
 2523 # for mails and posts, if necessary. QP is efficient for most European\n\
 2524 # character sets (ISO-8859-X) with small fraction of non-US-ASCII chars,\n\
 2525 # while Base64 is more efficient for most 8bit East Asian, Greek, and\n\
 2526 # Russian charsets with a lot of 8bit characters.\n")
 2527 };
 2528 
 2529 struct opttxt txt_post_8bit_header = {
 2530     N_("Don't change unless you know what you are doing. <ESC> cancels."),
 2531     N_("Use 8bit characters in news headers"),
 2532     N_("# If ON, 8bit characters in news headers are NOT encoded.\n\
 2533 # default is OFF. Thus 8bit characters are encoded by default.\n\
 2534 # 8bit chars in header are encoded regardless of the value of this\n\
 2535 # parameter unless post_mime_encoding is 8bit as well.\n")
 2536 };
 2537 
 2538 struct opttxt txt_post_process_view = {
 2539     N_("Auto-view post-processed files <SPACE> toggles, <CR> sets, <ESC> cancels."),
 2540     N_("View post-processed files"),
 2541     N_("# If set, post processed files will be opened in a viewer\n")
 2542 };
 2543 
 2544 struct opttxt txt_mail_mime_encoding = {
 2545     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2546     N_("MIME encoding in mail messages"),
 2547     ""
 2548 };
 2549 
 2550 struct opttxt txt_mail_8bit_header = {
 2551     N_("Don't change unless you know what you are doing. <ESC> cancels."),
 2552     N_("Use 8bit characters in mail headers"),
 2553     N_("# If ON, 8bit characters in mail headers are NOT encoded.\n\
 2554 # default is OFF. Thus 8bit characters are encoded by default.\n\
 2555 # 8bit chars in headers are encoded regardless of the value of this parameter\n\
 2556 # unless mail_mime_encoding is 8bit as well. Note that RFC 2822\n\
 2557 # prohibits 8bit characters in mail headers so that you are advised NOT to\n\
 2558 # turn it ON unless you have some compelling reason.\n")
 2559 };
 2560 
 2561 #ifndef USE_CURSES
 2562 struct opttxt txt_strip_blanks = {
 2563     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2564     N_("Strip blanks from ends of lines"),
 2565     N_("# If ON strip blanks from ends of lines for faster display on slow terminals.\n")
 2566 };
 2567 #endif /* !USE_CURSES */
 2568 
 2569 #ifdef HAVE_ICONV_OPEN_TRANSLIT
 2570 struct opttxt txt_translit = {
 2571     N_("If ON, use transliteration. <SPACE> toggles & <CR> sets."),
 2572     N_("Transliteration"),
 2573     N_("# If ON, use //TRANSLIT extension. This means that when a character cannot\n\
 2574 # be represented in the in the target character set, it can be approximated\n\
 2575 # through one or several similarly looking characters.\n")
 2576 };
 2577 #endif /* HAVE_ICONV_OPEN_TRANSLIT */
 2578 
 2579 struct opttxt txt_auto_cc_bcc = {
 2580     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2581     N_("Send you a Cc/Bcc automatically"),
 2582     N_("# Put your name in the Cc: and/or Bcc: field when mailing an article.\n\
 2583 # Possible values are (the default is marked with *):\n\
 2584 # * 0 = No\n\
 2585 #   1 = Cc\n\
 2586 #   2 = Bcc\n\
 2587 #   3 = Cc and Bcc\n")
 2588 };
 2589 
 2590 struct opttxt txt_spamtrap_warning_addresses = {
 2591     N_("Enter address elements about which you want to be warned. <CR> sets."),
 2592     N_("Spamtrap warning address parts"),
 2593     N_("# A comma-delimited list of address-parts you want to be warned\n\
 2594 # about when trying to reply by email.\n")
 2595 };
 2596 
 2597 struct opttxt txt_filter_days = {
 2598     N_("Enter default number of days a filter entry will be valid. <CR> sets."),
 2599     N_("No. of days a filter entry is valid"),
 2600     N_("# Number of days a short term filter will be active\n")
 2601 };
 2602 
 2603 struct opttxt txt_add_posted_to_filter = {
 2604     N_("Add posted articles to filter. <SPACE> toggles & <CR> sets."),
 2605     N_("Add posted articles to filter"),
 2606     N_("# If ON add posted articles which start a new thread to filter for\n# highlighting follow-ups\n")
 2607 };
 2608 
 2609 struct opttxt txt_maildir = {
 2610     N_("The directory where articles/threads are to be saved in mailbox format."),
 2611     N_("Mail directory"),
 2612     N_("# (-m) directory where articles/threads are saved in mailbox format\n")
 2613 };
 2614 
 2615 struct opttxt txt_batch_save = {
 2616     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2617     N_("Save articles in batch mode (-S)"),
 2618     N_("# If ON articles/threads will be saved in batch mode when save -S\n\
 2619 # or mail (-M/-N) is specified on the command line\n")
 2620 };
 2621 
 2622 struct opttxt txt_savedir = {
 2623     N_("The directory where you want articles/threads saved."),
 2624     N_("Directory to save arts/threads in"),
 2625     N_("# Directory where articles/threads are saved\n")
 2626 };
 2627 
 2628 struct opttxt txt_auto_save = {
 2629     N_("Auto save article/thread by Archive-name: header. <SPACE> toggles & <CR> sets."),
 2630     N_("Use Archive-name: header for save"),
 2631     N_("# If ON articles/threads with Archive-name: in mail header will\n\
 2632 # be automatically saved with the Archive-name & part/patch no.\n")
 2633 };
 2634 
 2635 struct opttxt txt_mark_saved_read = {
 2636     N_("Mark saved articles/threads as read. <SPACE> toggles, <CR> sets, <ESC> cancels."),
 2637     N_("Mark saved articles/threads as read"),
 2638     N_("# If ON mark articles that are saved as read\n")
 2639 };
 2640 
 2641 struct opttxt txt_post_process_type = {
 2642     N_("Do post processing (eg. extract attachments) for saved articles."),
 2643     N_("Post process saved articles"),
 2644     N_("# Perform post processing (saving binary attachments) from saved articles.\n\
 2645 # Possible values are (the default is marked with *):\n\
 2646 # * 0 = no\n\
 2647 #   1 = extract shell archives (shar) only\n\
 2648 #   2 = yes\n")
 2649 };
 2650 
 2651 struct opttxt txt_process_only_unread = {
 2652     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2653     N_("Process only unread articles"),
 2654     N_("# If ON only save/print/pipe/mail unread articles (tagged articles excepted)\n")
 2655 };
 2656 
 2657 #ifndef DISABLE_PRINTING
 2658 struct opttxt txt_print_header = {
 2659     N_("Print all or just part of header. <SPACE> toggles & <CR> sets."),
 2660     N_("Print all headers when printing"),
 2661     N_("# If ON print all of article header otherwise just the important lines\n")
 2662 };
 2663 
 2664 struct opttxt txt_printer = {
 2665     N_("The printer program with options that is to be used to print articles/threads."),
 2666     N_("Printer program with options"),
 2667     N_("# Print program with parameters used to print articles/threads\n"),
 2668 };
 2669 #endif /* !DISABLE_PRINTING */
 2670 
 2671 struct opttxt txt_force_screen_redraw = {
 2672     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2673     N_("Force redraw after certain commands"),
 2674     N_("# If ON a screen redraw will always be done after certain external commands\n")
 2675 };
 2676 
 2677 struct opttxt txt_start_editor_offset = {
 2678     N_("Start editor with line offset. <SPACE> toggles, <CR> sets, <ESC> cancels."),
 2679     N_("Start editor with line offset"),
 2680     N_("# If ON editor will be started with cursor offset into the file\n\
 2681 # otherwise the cursor will be positioned at the first line\n")
 2682 };
 2683 
 2684 struct opttxt txt_editor_format = {
 2685     N_("Enter %E for editor, %F for filename, %N for line-number, <CR> to set."),
 2686     N_("Invocation of your editor"),
 2687     N_("# Format of editor line including parameters\n\
 2688 # %E Editor  %F Filename  %N Linenumber\n")
 2689 };
 2690 
 2691 struct opttxt txt_inews_prog = {
 2692     N_("Enter name and options for external-inews, --internal for internal inews"),
 2693     N_("External inews"),
 2694     N_("# If --internal use the built in mini inews for posting via NNTP\n# otherwise use an external inews program\n"),
 2695 };
 2696 
 2697 struct opttxt txt_mailer_format = {
 2698     N_("Enter %M for mailer, %S for subject, %T for to, %F for filename, <CR> to set."),
 2699     N_("Invocation of your mail command"),
 2700     N_("# Format of mailer line including parameters\n\
 2701 # %M Mailer  %S Subject  %T To  %F Filename\n\
 2702 # ie. to use elm as your mailer:    elm -s \"%S\" \"%T\" < %F\n\
 2703 # ie. elm interactive          :    elm -i %F -s \"%S\" \"%T\"\n")
 2704 };
 2705 
 2706 struct opttxt txt_interactive_mailer = {
 2707     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2708     N_("Use interactive mail reader"),
 2709     N_("# Interactive mailreader\n\
 2710 # Possible values are (the default is marked with *):\n\
 2711 # * 0 = no interactive mailreader\n\
 2712 #   1 = use interactive mailreader with headers in file\n\
 2713 #   2 = use interactive mailreader without headers in file\n")
 2714 };
 2715 
 2716 struct opttxt txt_unlink_article = {
 2717     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2718     N_("Remove ~/.article after posting"),
 2719     N_("# If ON remove ~/.article after posting.\n")
 2720 };
 2721 
 2722 #if defined(MULTIBYTE_ABLE) && !defined(NO_LOCALE)
 2723 struct opttxt txt_utf8_graphics = {
 2724     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2725     N_("Use UTF-8 graphics (thread tree etc.)"),
 2726     N_("# If ON use UTF-8 characters for indicator '->', tree and ellipsis '...'.\n")
 2727 };
 2728 #endif /* MULTIBYTE_ABLE && !NO_LOCALE */
 2729 
 2730 struct opttxt txt_posted_articles_file = {
 2731     N_("Filename for all posted articles, <CR> sets, no filename=do not save."),
 2732     N_("Filename for posted articles"),
 2733     N_("# Filename where to keep all postings (default posted)\n\
 2734 # If no filename is set then postings will not be saved\n")
 2735 };
 2736 
 2737 struct opttxt txt_keep_dead_articles = {
 2738     N_("Keep all failed articles in ~/dead.articles. <SPACE> toggles & <CR> sets."),
 2739     N_("Keep failed arts in ~/dead.articles"),
 2740     N_("# If ON keep all failed postings in ~/dead.articles\n")
 2741 };
 2742 
 2743 struct opttxt txt_strip_newsrc = {
 2744     N_("Do you want to strip unsubscribed groups from .newsrc"),
 2745     N_("No unsubscribed groups in newsrc"),
 2746     N_("# If ON strip unsubscribed groups from newsrc\n")
 2747 };
 2748 
 2749 struct opttxt txt_strip_bogus = {
 2750     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2751     N_("Remove bogus groups from newsrc"),
 2752     N_("# What to do with bogus groups in newsrc file\n\
 2753 # Possible values are (the default is marked with *):\n\
 2754 # * 0 = keep\n\
 2755 #   1 = remove\n\
 2756 #   2 = highlight with D on selection screen\n")
 2757 };
 2758 
 2759 #if defined(HAVE_ALARM) && defined(SIGALRM)
 2760 struct opttxt txt_nntp_read_timeout_secs = {
 2761     N_("Enter number of seconds to wait for a response from the server. <CR> sets."),
 2762     N_("NNTP read timeout in seconds"),
 2763     N_("# Time in seconds to wait for a response from the server (0=no timeout)\n")
 2764 };
 2765 #endif /* HAVE_ALARM && SIGALRM */
 2766 
 2767 struct opttxt txt_reread_active_file_secs = {
 2768     N_("Enter number of seconds until active file will be reread. <CR> sets."),
 2769     N_("Interval in secs to reread active"),
 2770     N_("# Time interval in seconds between rereading the active file (0=never)\n")
 2771 };
 2772 
 2773 struct opttxt txt_auto_reconnect = {
 2774     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2775     N_("Reconnect to server automatically"),
 2776     N_("# If ON automatically reconnect to NNTP server if the connection is broken\n")
 2777 };
 2778 
 2779 struct opttxt txt_cache_overview_files = {
 2780     N_("Create local copies of NNTP overview files. <SPACE> toggles & <CR> sets."),
 2781     N_("Cache NNTP overview files locally"),
 2782     N_("# If ON, create local copies of NNTP overview files.\n")
 2783 };
 2784 
 2785 struct opttxt txt_select_format = {
 2786     N_("Enter format string. <CR> sets, <ESC> cancels."),
 2787     N_("Format string for selection level"),
 2788     N_("# Format string for selection level representation\n\
 2789 # Default: %f %n %U  %G  %d\n\
 2790 # Possible values are:\n\
 2791 #   %%              '%'\n\
 2792 #   %d              Description\n\
 2793 #   %f              Newsgroup flag: 'D' bogus, 'X' not postable,\n\
 2794 #                   'M' moderated, '=' renamed, 'N' new, 'u' unsubscribed\n\
 2795 #   %G              Group name\n\
 2796 #   %n              Number, linenumber on screen\n\
 2797 #   %U              Unread count\n")
 2798 };
 2799 
 2800 struct opttxt txt_group_format = {
 2801     N_("Enter format string. <CR> sets, <ESC> cancels."),
 2802     N_("Format string for group level"),
 2803     N_("# Format string for group level representation\n\
 2804 # Default: %n %m %R %L  %s  %F\n\
 2805 # Possible values are:\n\
 2806 #   %%              '%'\n\
 2807 #   %D              Date, like date_format\n\
 2808 #   %(formatstr)D   Date, formatstr gets passed to my_strftime()\n\
 2809 #   %F              From, name and/or address according to show_author\n\
 2810 #   %I              Initials\n\
 2811 #   %L              Line count\n\
 2812 #   %M              Message-ID\n\
 2813 #   %m              Article marks\n\
 2814 #   %n              Number, linenumber on screen\n\
 2815 #   %R              Count, number of responses in thread\n\
 2816 #   %s              Subject (only group level)\n\
 2817 #   %S              Score\n")
 2818 };
 2819 
 2820 struct opttxt txt_thread_format = {
 2821     N_("Enter format string. <CR> sets, <ESC> cancels."),
 2822     N_("Format string for thread level"),
 2823     N_("# Format string for thread level representation\n\
 2824 # Default: %n %m  [%L]  %T  %F\n\
 2825 # Possible values are:\n\
 2826 #   %%              '%'\n\
 2827 #   %D              Date, like date_format\n\
 2828 #   %(formatstr)D   Date, formatstr gets passed to my_strftime()\n\
 2829 #   %F              From, name and/or address according to show_author\n\
 2830 #   %I              Initials\n\
 2831 #   %L              Line count\n\
 2832 #   %M              Message-ID\n\
 2833 #   %m              Article marks\n\
 2834 #   %n              Number, linenumber on screen\n\
 2835 #   %S              Score\n\
 2836 #   %T              Thread tree (only thread level)\n")
 2837 };
 2838 
 2839 struct opttxt txt_date_format = {
 2840     N_("Enter format string. <CR> sets, <ESC> cancels."),
 2841     N_("Format string for display of dates"),
 2842     N_("# Format string for date representation\n")
 2843 };
 2844 
 2845 #ifdef HAVE_UNICODE_NORMALIZATION
 2846 struct opttxt txt_normalization_form = {
 2847     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2848     N_("Unicode normalization form"),
 2849     N_("# Unicode normalization form\n\
 2850 # Possible values are:\n\
 2851 #   0 = None\n\
 2852 #   1 = NFKC\n\
 2853 #   2 = NFKD\n\
 2854 #   3 = NFC\n\
 2855 #   4 = NFD\n")
 2856 };
 2857 #endif /* HAVE_UNICODE_NORMALIZATION */
 2858 
 2859 #if defined(HAVE_LIBICUUC) && defined(MULTIBYTE_ABLE) && defined(HAVE_UNICODE_UBIDI_H) && !defined(NO_LOCALE)
 2860 struct opttxt txt_render_bidi = {
 2861     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2862     N_("Render BiDi"),
 2863     N_("# If ON, bi-directional text is rendered by tin\n")
 2864 };
 2865 #endif /* HAVE_LIBICUUC && MULTIBYTE_ABLE && HAVE_UNICODE_UBIDI_H && !NO_LOCALE */
 2866 
 2867 #ifdef USE_HEAPSORT
 2868 struct opttxt txt_sort_function = {
 2869     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2870     N_("Function for sorting articles"),
 2871     N_("# Function for sorting articles\n\
 2872 # Possible values are (the default is marked with *):\n\
 2873 # * 0 = qsort\n\
 2874 #   1 = heapsort\n")
 2875 };
 2876 #endif /* USE_HEAPSORT */
 2877 
 2878 /*
 2879  * structs for the attributes menu below,
 2880  * no need for *tinrc text
 2881  */
 2882 struct opttxt txt_auto_select = {
 2883     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2884     N_("Automatically GroupMarkUnselArtRead"),
 2885     NULL
 2886 };
 2887 
 2888 struct opttxt txt_delete_tmp_files = {
 2889     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2890     N_("Delete post-process files"),
 2891     NULL
 2892 };
 2893 
 2894 struct opttxt txt_fcc = {
 2895     N_("Filename for all mailed articles, <CR> sets, no filename=do not save."),
 2896     N_("Mailbox to save sent mails"),
 2897     NULL
 2898 };
 2899 
 2900 struct opttxt txt_followup_to = {
 2901     N_("Set Followup-To: header to this group(s). <CR> sets, <ESC> cancels."),
 2902     N_("Followup-To: header"),
 2903     NULL
 2904 };
 2905 
 2906 struct opttxt txt_from = {
 2907     N_("Enter default mail address (and fullname). <CR> sets, <ESC> cancels."),
 2908     N_("Mail address (and fullname)"),
 2909     NULL
 2910 };
 2911 
 2912 #ifdef HAVE_ISPELL
 2913 struct opttxt txt_ispell = {
 2914     N_("Path and options for ispell-like spell-checker. <CR> sets, <ESC> cancels."),
 2915     N_("Ispell program"),
 2916     NULL
 2917 };
 2918 #endif /* HAVE_ISPELL */
 2919 
 2920 struct opttxt txt_mailing_list = {
 2921     N_("When group is a mailing list, send responses to this email address."),
 2922     N_("Mailing list address"),
 2923     NULL
 2924 };
 2925 
 2926 struct opttxt txt_mime_forward = {
 2927     N_("<SPACE> toggles, <CR> sets, <ESC> cancels."),
 2928     N_("Forward articles as attachment"),
 2929     NULL
 2930 };
 2931 
 2932 struct opttxt txt_mime_types_to_save = {
 2933     N_("A comma separated list of MIME major/minor Content-Types. <ESC> cancels."),
 2934     N_("Which MIME types will be saved"),
 2935     NULL
 2936 };
 2937 
 2938 struct opttxt txt_organization = {
 2939     N_("Value of the Organization: header. <CR> sets, <ESC> cancels."),
 2940     N_("Organization: header"),
 2941     NULL
 2942 };
 2943 
 2944 struct opttxt txt_savefile = {
 2945     N_("Filename for saved articles. <CR> sets, <ESC> cancels."),
 2946     N_("savefile"),
 2947     NULL
 2948 };
 2949 
 2950 struct opttxt txt_quick_select_scope = {
 2951     N_("Scope for the filter rule. <CR> sets, <ESC> cancels."),
 2952     N_("Quick (1 key) select filter scope"),
 2953     NULL
 2954 };
 2955 
 2956 struct opttxt txt_quick_select_header = {
 2957     N_("Header for filter rule. <CR> sets, <ESC> cancels."),
 2958     N_("Quick (1 key) select filter header"),
 2959     NULL
 2960 };
 2961 
 2962 struct opttxt txt_quick_select_case = {
 2963     N_("ON = case sensitive, OFF = ignore case. <CR> sets, <ESC> cancels."),
 2964     N_("Quick (1 key) select filter case"),
 2965     NULL
 2966 };
 2967 
 2968 struct opttxt txt_quick_select_expire = {
 2969     N_("ON = expire, OFF = don't ever expire. <CR> sets, <ESC> cancels."),
 2970     N_("Quick (1 key) select filter expire"),
 2971     NULL
 2972 };
 2973 
 2974 struct opttxt txt_quick_kill_scope = {
 2975     N_("Scope for the filter rule. <CR> sets, <ESC> cancels."),
 2976     N_("Quick (1 key) kill filter scope"),
 2977     NULL
 2978 };
 2979 
 2980 struct opttxt txt_quick_kill_header = {
 2981     N_("Header for filter rule. <CR> sets, <ESC> cancels."),
 2982     N_("Quick (1 key) kill filter header"),
 2983     NULL
 2984 };
 2985 
 2986 struct opttxt txt_quick_kill_case = {
 2987     N_("ON = case sensitive, OFF = ignore case. <CR> sets, <ESC> cancels."),
 2988     N_("Quick (1 key) kill filter case"),
 2989     NULL
 2990 };
 2991 
 2992 struct opttxt txt_quick_kill_expire = {
 2993     N_("ON = expire, OFF = don't ever expire. <CR> sets, <ESC> cancels."),
 2994     N_("Quick (1 key) kill filter expire"),
 2995     NULL
 2996 };
 2997 
 2998 #ifdef CHARSET_CONVERSION
 2999 struct opttxt txt_undeclared_charset = {
 3000     N_("Assume this charset if no charset declaration is present, <CR> to set."),
 3001     N_("UNDECLARED_CHARSET"),
 3002     NULL
 3003 };
 3004 #endif /* CHARSET_CONVERSION */
 3005 
 3006 struct opttxt txt_x_body = {
 3007     N_("Add this text at the start of the message body. <CR> sets, <ESC> cancels."),
 3008     N_("X_Body"),
 3009     NULL
 3010 };
 3011 
 3012 struct opttxt txt_x_headers = {
 3013     N_("Insert this header when posting. <CR> sets, <ESC> cancels."),
 3014     N_("X_Headers"),
 3015     NULL
 3016 };
 3017 
 3018 struct opttxt txt_x_comment_to = {
 3019     N_("Automatically insert an X-Comment-To: header? <SPACE> toggles & <CR> sets."),
 3020     N_("Insert 'X-Comment-To:' header"),
 3021     NULL
 3022 };