i18n: Fix translation of --help [PR93759]
authorJakub Jelinek <jakub@redhat.com>
Fri, 21 Feb 2020 21:01:03 +0000 (22:01 +0100)
committerJakub Jelinek <jakub@redhat.com>
Fri, 21 Feb 2020 21:01:03 +0000 (22:01 +0100)
The first two hunks make sure we actually translate what has been marked
for translation, i.e. the cl_options[...].help strings, rather than those
strings ammended in various ways, like:
_("%s  Same as %s."), help, ...
or
"%s  %s", help, _(use_diagnosed_msg)

The exgettext changes attempt to make sure that the cl_options[...].help
strings are marked as no-c-format, because otherwise if they happen
to contain a % character, such as the 90% substring, they will be marked
as c-format, which they aren't.

2020-02-21  Jakub Jelinek  <jakub@redhat.com>

PR translation/93759
* opts.c (print_filtered_help): Translate help before appending
messages to it rather than after that.

* exgettext: For *.opt help texts, use __opt_help_text("...")
rather than _("...") in the $emsg file and pass options that
say that this implies no-c-format.

gcc/ChangeLog
gcc/opts.c
gcc/po/ChangeLog
gcc/po/exgettext

index 17c6587ff37ca7d9e8dad851fd8d41e33fd7824f..20e0b12927b00d560b3321dbfe55a767ae207b61 100644 (file)
@@ -1,3 +1,9 @@
+2020-02-21  Jakub Jelinek  <jakub@redhat.com>
+
+       PR translation/93759
+       * opts.c (print_filtered_help): Translate help before appending
+       messages to it rather than after that.
+
 2020-02-19  Richard Sandiford  <richard.sandiford@arm.com>
 
        PR rtl-optimization/PR92989
index 7affeb41a96a997232bfe898d7932f7c151cc46a..ac160ed8404e6b02e616b81a90bc12c9a5a5008f 100644 (file)
@@ -1309,10 +1309,13 @@ print_filtered_help (unsigned int include_flags,
          help = undocumented_msg;
        }
 
+      /* Get the translation.  */
+      help = _(help);
+
       if (option->alias_target < N_OPTS
          && cl_options [option->alias_target].help)
        {
-         if (help == undocumented_msg)
+         if (option->help == NULL)
            {
              /* For undocumented options that are aliases for other options
                 that are documented, point the reader to the other option in
@@ -1347,9 +1350,6 @@ print_filtered_help (unsigned int include_flags,
          help = new_help;
        }
 
-      /* Get the translation.  */
-      help = _(help);
-
       /* Find the gap between the name of the
         option and its descriptive text.  */
       tab = strchr (help, '\t');
index 9e763ea91b2b6ae809a6a9cbce5e235c4939889b..4fda0a4475b84f990e9e162347c3ab87631a5f69 100644 (file)
@@ -1,3 +1,10 @@
+2020-02-21  Jakub Jelinek  <jakub@redhat.com>
+
+       PR translation/93759
+       * exgettext: For *.opt help texts, use __opt_help_text("...")
+       rather than _("...") in the $emsg file and pass options that
+       say that this implies no-c-format.
+
 2020-02-20  Joseph Myers  <joseph@codesourcery.com>
 
        * de.po: Update.
index 7a86ed9a7f75f78896b519ec16ac7cd0fb93d988..d648bdb36eea3d5edde8500bc883fb8d966d305e 100644 (file)
@@ -227,6 +227,7 @@ END {
        }
     }
     print emsg > posr
+    print "--keyword=__opt_help_text\n--flag=__opt_help_text:1:no-c-format" >> kopt
 }'
 ) || exit
 
@@ -240,7 +241,7 @@ echo "scanning option files..." >&2
     while (getline < file) {
        if (/^[ \t]*(;|$)/ || !/^[^ \t]/) {
            if (field > 2)
-               printf("_(\"%s\")\n", line)
+               printf("__opt_help_text(\"%s\")\n", line)
            field = 0
        } else {
            if ((field == 1) && /MissingArgError/) {
@@ -287,7 +288,7 @@ echo "scanning option files..." >&2
        lineno++;
     }
     if (field > 2)
-       printf("_(\"%s\")\n", line)
+       printf("__opt_help_text(\"%s\")\n", line)
   }') >> $emsg
 
 # Run the xgettext commands, with temporary added as a file to scan.