"Fossies" - the Fresh Open Source Software Archive

Member "tin-2.4.4/src/lang.c" (20 Nov 2019, 139426 Bytes) of package /linux/misc/tin-2.4.4.tar.xz:


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.3_vs_2.4.4.

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