Hi Paul,

Reviewing parse-datetime.y, I see that
  * 6 invocations of dbg_fputs don't use _(), while the others do.
  * The invocations of _() inside dbg_printf and dbg_fputs is
    useless, because at this point in the code the argument is
    not a string literal, thus 'xgettext' will not extract it
    when it creates gnulib-l10n.pot. Use of _() with non-literals
    makes only sense in combination with the N_() macro (a.k.a.
    gettext_noop).

Any objections to fixing it like in the attached proposed patch?

Bruno
>From d57bba3fa79fe62a96834eff4920029ca821d09f Mon Sep 17 00:00:00 2001
From: Bruno Haible <br...@clisp.org>
Date: Mon, 6 Jan 2025 00:04:56 +0100
Subject: [PATCH] parse-datetime: Internationalize 6 more strings.

* lib/parse-datetime.y (dbg_printf, dbg_fputs): Don't invoke _().
(parse_datetime_body): Internationalize 6 dbg_fputs invocations.
---
 ChangeLog            |  6 ++++++
 lib/parse-datetime.y | 17 +++++++++--------
 2 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 5e03fccad1..231c3df9be 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2025-01-05  Bruno Haible  <br...@clisp.org>
+
+	parse-datetime: Internationalize 6 more strings.
+	* lib/parse-datetime.y (dbg_printf, dbg_fputs): Don't invoke _().
+	(parse_datetime_body): Internationalize 6 dbg_fputs invocations.
+
 2025-01-05  Paul Eggert  <egg...@cs.ucla.edu>
 
 	parse-datetime: pacify gcc 14 -Wformat-security
diff --git a/lib/parse-datetime.y b/lib/parse-datetime.y
index ec4037ceeb..9ffd0993a6 100644
--- a/lib/parse-datetime.y
+++ b/lib/parse-datetime.y
@@ -123,7 +123,7 @@ dbg_printf (char const *msgid, ...)
   dbg_herald ();
   va_list args;
   va_start (args, msgid);
-  vfprintf (stderr, _(msgid), args);
+  vfprintf (stderr, msgid, args);
   va_end (args);
 }
 
@@ -131,7 +131,7 @@ static void
 dbg_fputs (char const *msgid)
 {
   dbg_herald ();
-  fputs (_(msgid), stderr);
+  fputs (msgid, stderr);
 }
 
 
@@ -1965,15 +1965,15 @@ parse_datetime_body (struct timespec *result, char const *p,
           if (debugging (&pc))
             {
               if (pc.times_seen > 1)
-                dbg_fputs ("error: seen multiple time parts\n");
+                dbg_fputs (_("error: seen multiple time parts\n"));
               if (pc.dates_seen > 1)
-                dbg_fputs ("error: seen multiple date parts\n");
+                dbg_fputs (_("error: seen multiple date parts\n"));
               if (pc.days_seen > 1)
-                dbg_fputs ("error: seen multiple days parts\n");
+                dbg_fputs (_("error: seen multiple days parts\n"));
               if (pc.dsts_seen > 1)
-                dbg_fputs ("error: seen multiple daylight-saving parts\n");
+                dbg_fputs (_("error: seen multiple daylight-saving parts\n"));
               if ((pc.J_zones_seen + pc.local_zones_seen + pc.zones_seen) > 1)
-                dbg_fputs ("error: seen multiple time-zone parts\n");
+                dbg_fputs (_("error: seen multiple time-zone parts\n"));
             }
           goto fail;
         }
@@ -2011,7 +2011,8 @@ parse_datetime_body (struct timespec *result, char const *p,
           tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
           pc.seconds.tv_nsec = 0;
           if (debugging (&pc))
-            dbg_fputs ("warning: using midnight as starting time: 00:00:00\n");
+            dbg_printf (_("warning: using midnight as starting time: %s\n"),
+                        "00:00:00");
         }
 
       /* Let mktime deduce tm_isdst if we have an absolute timestamp.  */
-- 
2.43.0

Reply via email to