"Fossies" - the Fresh Open Source Software Archive

Member "tin-2.6.2/src/lang.c" (9 Dec 2022, 141784 Bytes) of package /linux/misc/tin-2.6.2.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.6.1_vs_2.6.2.

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