Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1x5xxi-000O7C-2W for pgsql-hackers@arkaria.postgresql.org; Mon, 14 Sep 2026 04:06:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1x5xxh-00BD1a-2I for pgsql-hackers@arkaria.postgresql.org; Mon, 14 Sep 2026 04:06:33 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1x5xxh-00BD1Q-1N for pgsql-hackers@lists.postgresql.org; Mon, 14 Sep 2026 04:06:33 +0000 Received: from mail-pz2-x0f.google.com ([2607:f8b0:4864:3b::f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1x5xxf-00000000H9d-1nDj for pgsql-hackers@lists.postgresql.org; Mon, 14 Sep 2026 04:06:32 +0000 Received: by mail-pz2-x0f.google.com with SMTP id d2e1a72fcca58-85469d249c5so1469094b3a.3 for ; Sun, 13 Sep 2026 21:06:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789358791; x=1789963591; darn=lists.postgresql.org; h=content-transfer-encoding:content-type:mime-version:user-agent :references:in-reply-to:from:subject:to:message-id:date:from:to:cc :subject:date:message-id:reply-to:content-type; bh=BWtzTW7nXhUZvfeFSa2/iMHz1Q9iOsTlBK5CsN7547o=; b=BOpyvqjD7gnE7WhCg5OCanuLYN9Akv88sVVhP4s4YD9yxiBypMRHQGcGpgLkYjzGnW q0WDJYm/mPpL4YB+5gm4QqnpnP1NRxVF3N6fVBZfsE5AqutYeLrMmVeYteiVsLYEguxC Yr9KLhmlK6OnuOkkdjW7p8gNZodW2obIGQKuyeHDBqa6y+DgOb+eZJBwaVwpP6I3wqgh kWZMVsuWgz1jY2H2jscN2tYnhvI+ihtjyEGfxLPrzv5n4Z0ADpiaKVtNoyK7eklkTILi BmHEH/KNii6ZpqvmUopfgJbHZopitRs6oxajlme4g/YWyptKM5Zn9ak0yBvnasl/GWFL O5Aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789358791; x=1789963591; h=content-transfer-encoding:content-type:mime-version:user-agent :references:in-reply-to:from:subject:to:message-id:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=BWtzTW7nXhUZvfeFSa2/iMHz1Q9iOsTlBK5CsN7547o=; b=iRlUM0R+4gsII4WrhiErV5/wWKZPePb9wQJO58fr9+4w6M8vEQP+/w/heDUMCXSB9c 4l+4dhzplt32mNPZ4xOD6wWdfcJJsqDSpEqZtnDAlmcRhDM8cVwaNXNYvxlDEWSbiQqr sxbYjLKmNMQysSwPqIVgDEg64Ozubf0Snvb1sB9qorxZL21X31118w/EKa5jy0i5TV42 eBrh5qESdfOSDl4jGW7wKBGnQSPxGrFbyLTdCu4nt0V4DlPJE6fpD6UW+3epcZxUTwZU MR+5U+AaZ3TRb9qb554LjZjtYx8zMXwxa9pmHQZByu/7w/XoMAGchaOlI8TEEqy5kFdL CYSw== X-Gm-Message-State: AFuF++ldwIevFmgeLmFuAemGKX+sce4DkCFGXiCxBIH5jKDsAOmVtxQW 6ohCxPOy5+Rap+UodIXPmhvQ2rBY1RX+AqTH7NdIL/UhFNSuGrwH83uO0dZtIQ== X-Gm-Gg: AYBFou2n5sNJMXfCr6zv+B3jBsmRGlM9jFMzo3Yum8edgIR1OJBgPgB93mAATLbSPJd pDGMB7OBAfyMXusey4WYrlR4uXLPtCs+Su/9CfguGfLlCFhQKJI3UsUZQ+LoNKMnsAfF4nJuFzd vNqJryjrBNrB8A7i5Lm/K/3yiWAp+ohsZQtHMhIcIJXwRx1RMLPZ+svhhj97ngEhdVwnEeINuPN yFJ2ac8Z5NpYhHNAKs+JX60qyac5lMi8ajUXoYGTCpl/bSFlUa2IsXvYvx3Vzn4nrYLoz2kC3uI ENlq/TZs6125I81u4BaWx0HIFmF8c5nFC8mIuYKShYAjHhAs6ruoFRZz9DD0wPs8y4ItEFyROu4 jgBM5WE2n3BCLhWI0Ed4cG24XCzZ0H5V/tM5CcWsMMqKmmvNg1H4VuGVJ6vL8TubhdcXpmB24sW /LGnlyQx+GylLCtQXuK6C9LFwgYF/4nr5d+LX6+fWEElkhJrqmmLTAZ/KMXiMKW092kB1MTMiT9 uPk1QYe3n9T8HcmKXXE30XBkny51BP22tCYEhtRWLoe5bc= X-Received: by 2002:a05:6a00:a8f:b0:848:4754:28e5 with SMTP id d2e1a72fcca58-86f84d0d98bmr1907832b3a.16.1789358790520; Sun, 13 Sep 2026 21:06:30 -0700 (PDT) Received: from localhost (KD036014041111.ppp-bb.dion.ne.jp. [36.14.41.111]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-86b291c1601sm4010041b3a.31.2026.09.13.21.06.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Sep 2026 21:06:29 -0700 (PDT) Date: Mon, 14 Sep 2026 13:06:28 +0900 (JST) Message-Id: <20260914.130628.526629644748606842.horikyota.ntt@gmail.com> To: pgsql-hackers@lists.postgresql.org Subject: Re: Translation of the NextOID message in pg_controldata From: Kyotaro Horiguchi In-Reply-To: <20260914.124645.2220219320843846932.horikyota.ntt@gmail.com> References: <20260914.124645.2220219320843846932.horikyota.ntt@gmail.com> User-Agent: Mew version 6.8 on Emacs 29.4 Mime-Version: 1.0 Content-Type: Multipart/Mixed; boundary="--Next_Part(Mon_Sep_14_13_06_28_2026_082)--" Content-Transfer-Encoding: 7bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk ----Next_Part(Mon_Sep_14_13_06_28_2026_082)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Oops! At Mon, 14 Sep 2026 12:46:45 +0900 (JST), Kyotaro Horiguchi wrote in > I confirmed that, with the attached patch, the complete string is I accidentally attached a broken patch. The attached patch is the corrected version. Sorry for the mistake. Regards, -- Kyotaro Horiguchi NTT Open Source Software Center ----Next_Part(Mon_Sep_14_13_06_28_2026_082)-- Content-Type: Text/X-Patch; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="v2-0001-Fix-translation-of-pg_controldata-s-NextOID-outpu.patch" From ed2132b4a963dfd04098af8b753f1a7b8218606f Mon Sep 17 00:00:00 2001 From: Kyotaro Horiguchi Date: Mon, 14 Sep 2026 12:34:35 +0900 Subject: [PATCH v2] Fix translation of pg_controldata's NextOID output xgettext does not recognize OID8_FORMAT and therefore extracts an incomplete message. Use PRIu64 instead, and document that the *_FORMAT macros should not be used in translatable strings. --- src/bin/pg_controldata/pg_controldata.c | 3 ++- src/include/c.h | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/bin/pg_controldata/pg_controldata.c b/src/bin/pg_controldata/pg_controldata.c index b785f7f4070..616df997d42 100644 --- a/src/bin/pg_controldata/pg_controldata.c +++ b/src/bin/pg_controldata/pg_controldata.c @@ -269,7 +269,8 @@ main(int argc, char *argv[]) printf(_("Latest checkpoint's NextXID: %u:%u\n"), EpochFromFullTransactionId(ControlFile->checkPointCopy.nextXid), XidFromFullTransactionId(ControlFile->checkPointCopy.nextXid)); - printf(_("Latest checkpoint's NextOID: " OID8_FORMAT "\n"), + /* Use PRIu64 because xgettext does not recognize OID8_FORMAT. */ + printf(_("Latest checkpoint's NextOID: %" PRIu64 "\n"), ControlFile->checkPointCopy.nextOid); printf(_("Latest checkpoint's NextMultiXactId: %u\n"), ControlFile->checkPointCopy.nextMulti); diff --git a/src/include/c.h b/src/include/c.h index 20cfbac54e7..219346e8fae 100644 --- a/src/include/c.h +++ b/src/include/c.h @@ -689,7 +689,12 @@ typedef uint64_t uint64; #define INT64CONST(x) INT64_C(x) #define UINT64CONST(x) UINT64_C(x) -/* snprintf format strings to use for 64-bit integers */ +/* + * snprintf format strings to use for 64-bit integers + * xgettext does not recognize these macros, resulting in incomplete + * msgids in PO files. Use the corresponding PRI* macros directly in + * translatable strings instead. + */ #define INT64_FORMAT "%" PRId64 #define UINT64_FORMAT "%" PRIu64 #define OID8_FORMAT "%" PRIu64 -- 2.52.0 ----Next_Part(Mon_Sep_14_13_06_28_2026_082)----