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 1wG6w6-005tRG-1X for pgsql-hackers@arkaria.postgresql.org; Fri, 24 Apr 2026 03:10:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wG6w5-0042e1-1W for pgsql-hackers@arkaria.postgresql.org; Fri, 24 Apr 2026 03:10: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 1wG6w5-0042dm-0D for pgsql-hackers@lists.postgresql.org; Fri, 24 Apr 2026 03:10:33 +0000 Received: from mail-qt1-x82f.google.com ([2607:f8b0:4864:20::82f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wG6w2-00000002VnX-40hJ for pgsql-hackers@lists.postgresql.org; Fri, 24 Apr 2026 03:10:32 +0000 Received: by mail-qt1-x82f.google.com with SMTP id d75a77b69052e-50d6b9bca48so19950821cf.2 for ; Thu, 23 Apr 2026 20:10:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1777000230; cv=none; d=google.com; s=arc-20240605; b=Yh8V/KsyMtyE5naf0BNjTYa95e96VmO8gguWrLg3wro5JinpVwJJToGlpoGtAlOaIK z292yuAI/LWdVFs3H5kPpmxfVTPcxMT8CVf4az9neCak3klc8aw36i8kwdRXGlACqxcX 2Sskg16HSf99aabcIhwF9Qicgb/0B02V02kMI2mTv9Q8NOsV1moImXTgsYZb8NhtNAh9 +/H3vfWW2gNPXp/QSIIDTcn/IrR60HMdQ2MUdtSLidWpWxrVe2bQ3grMiD6sAo2lF7d/ Lhv6Q0ylPgqqaSO6RZmGKWlcATyegsVQXXBzwjhPwcHFED0NP8ZG995N5DNLEwuEPXNo Uc9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=uebN6cX20kUrOk+lRC3q4051qI46acaFM208Upzb7do=; fh=tvS4T4+oR2J2hxK5aNJGfORVVBBvqUJPnvm76ijROZw=; b=fC3qV+mJJHboP3gLnpgkkbhpXqErc73LtzRDD0IIZrkIVpwiZH+R/fjEgIs3ado1XJ i+Nb2rj0hKG++1NOxqxAaNRGgp6D9ZvYLnDQemjCszVGxRey0ToxWoJ1g9jdfkWqNY67 k9H40Pr10+yJU0Hf837f4Wy4uW1oB/Dk5Q/8+c/a4wa8nRwDQdA/KDPHOn9X3SHPhOFg j5eBjO4AcJ0E1nAE1PiOjKruztly1339ZP5uat7iHfbDbKCsZnEnp8/3nSbSrA1el4EK gKstMTOtNXxsmcTIxdM6uDFOOqNMSUQaXEYGLTtnk9jYntikZc/e/5bS8X5/nNCCpeIG txXQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777000230; x=1777605030; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=uebN6cX20kUrOk+lRC3q4051qI46acaFM208Upzb7do=; b=n1dg5fe3j2doPSsIyG8CQu+B18YCRtfZBH1RomjDLtftU/BOWfK4NlAHT3+7b4rGYH TuFo4388VcbIoImRSrf0XeEd46qvt+KbhVVL9MjZybhnZnTHTBkWx0KxqLRdB9WzDBtD Gq+5KDRoM2EcI3T83O9ri8G39qEOT/AjPNuCY273tu2VyvpCvopeKbmNGZT1jqKWiJZu 1TV//AjoHDhHPC4Zg0tzLz97FQWrcJCUJY2+wEcnEKU6ml65DvvxY5FGoZTxEgmDVbGk ljYx2KW6jlRtIPVkTiuLLBrkdlmq42pPj2HJOcNSXLRHU79sJvDnnPEUMtwFLWy8a2YB 338A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777000230; x=1777605030; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=uebN6cX20kUrOk+lRC3q4051qI46acaFM208Upzb7do=; b=JFq1Zy2EloWk8cPE0w3SlaR+EA/nOHw0YCqoborYDAdX5cZ2sT/wjTPn5Fjx/e/KJn 3ypV1GPJ9Pl9Zzo71tfMc5ZxpB15JVNwxnXvQ3aGL4qaSQtKfyMyXWnBJJOvfp1lWddX OGOeLCFEYDkiS+gLTqsWhADAnCBQcWmIWcWHIk7g5I0sb7cALRYREW/goXeorRrDOohg DZmNFF0kYj0BKT3I306lC7vtsFKoRmxCe6UDsgcaLUjSi9+tSFKFmUBY+XKqpxgaV3TF qC+UVjxz2isbkWIobjLa8wIeKooQwcfGsBS8M7LL5hm1JrPqwg04JwP50pJJ/krUBWzX VlSw== X-Gm-Message-State: AOJu0YyLTB/ylxHxV4pLsYEmifPP3o0suqsBTI1efSMaASAKThC1D/AE 1yARQW7PbUiwxS28T4kQQxnGgVzoOzEbTHJZjeNdw1ifPgT8EdyF4e9JN6MuDC5TazlOwfMTM5T E5msCzOICLQL2wxyPVH0/Qm9rTFeobNMyzRXb X-Gm-Gg: AeBDiesI5OhA9v2Gb+6KazypHedfCnmFDdDT+xv7EQp7hVePV/ShzPNC+UVx0fK5DpH DT5ajh4/GRrqWpDkHjn0gdwVioNzpBYygxIw9euK4RaHKklU5usvG86xXspi+m9cAnM8t/Am4Fo OBA7SKu6PtLtywxiXWV4sRejjjC3cz6QdQw95Vi9LG3TL7mZF/bH/h4jgJYHV5IRThClaBUK6PZ wcLhOBmEqS16ceblyO3+5n/NABF8OGI/6vgtWR8j6xAH5i388asAD6JMXUf+uTtheGfZJY98xz9 iR2Vnitqf1qPrNA8EQ== X-Received: by 2002:a05:622a:14c:b0:50b:1adf:89ba with SMTP id d75a77b69052e-50e36c4021emr459656951cf.40.1777000230314; Thu, 23 Apr 2026 20:10:30 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Peter Smith Date: Fri, 24 Apr 2026 13:10:03 +1000 X-Gm-Features: AQROBzBSqWtHdSgct97Lb4lgs2lx0Maz_XyAd83siOAfXmKPHWsOAs4JsoXRe9U Message-ID: Subject: Re: Redundant/mis-use of _(x) gettext macro? To: =?UTF-8?Q?=C3=81lvaro_Herrera?= Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000007ec96306502c1b58" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007ec96306502c1b58 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Apr 23, 2026 at 7:25=E2=80=AFPM =C3=81lvaro Herrera wrote: > > On 2026-Apr-23, Peter Smith wrote: > > > v2 removes translation of the comma separator, due to the discussion > > over at [1]. > > Hmm, at least Japanese uses a different character for commas, and > apparently French likes to add a space, so I think this is a bad move. > I think we could handle these things by including the comma together > with the literal in each element of the list being constructed, as in > the attached. > OK. Including the comma within a larger translated string seems like a better idea. Since you now have the list `length`, I wondered why not simplify further to use list_nth indexing? Then you can remove `foreach_current_index` and `lc`. PSA. ~~~~ Also, why did you choose to implement `last` versus `first` logic? e.g. How about this? ------ GetPublicationsStr(List *publications, StringInfo dest, bool quote_literal) { ListCell *lc; bool first =3D true; Assert(publications !=3D NIL); foreach(lc, publications) { char *pubname =3D strVal(lfirst(lc)); if (quote_literal) { if (!first) appendStringInfoString(dest, ", "); appendStringInfoString(dest, quote_literal_cstr(pubname)); } else { if (first) appendStringInfo(dest, _("\"%s\""), pubname); else appendStringInfo(dest, _(", \"%s\""), pubname); } first =3D false; } } ------ =3D=3D=3D=3D=3D=3D Kind Regards, Peter Smith. Fujitsu Australia --0000000000007ec96306502c1b58 Content-Type: application/octet-stream; name="0001-change-translation-markers-in-GetPublicationStr-PS.diff" Content-Disposition: attachment; filename="0001-change-translation-markers-in-GetPublicationStr-PS.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mocbzp4l0 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCmluZGV4IDVhNzMzNTg1NDkwLi43NzQ5 ZWMzODBkZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24u YworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCkBAIC00MSwzMSAr NDEsMzUgQEAgc3RhdGljIExpc3QgKnRleHRhcnJheV90b19zdHJpbmdsaXN0KEFycmF5VHlwZSAq dGV4dGFycmF5KTsKIAogLyoKICAqIEFkZCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHB1Ymxp Y2F0aW9uIG5hbWVzIHRvIHRoZSAnZGVzdCcgc3RyaW5nLgorICoKKyAqIElmIHF1b3RlX2xpdGVy YWwgaXMgdHJ1ZSwgdGhlIHJldHVybmVkIGxpc3QgY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGFu IFNRTAorICogY29tbWFuZCwgdGh1cyBubyB0cmFuc2xhdGlvbiBpcyBhcHBsaWVkLiAgT3RoZXJ3 aXNlLCB0aGUgc3RyaW5nIGNhbiBiZSB1c2VkCisgKiB0byBjcmVhdGUgYSB1c2VyLWZhY2luZyBt ZXNzYWdlLCBzbyB0cmFuc2xhdGFibGUgcXVvdGUgbWFya3MgYXJlIGFkZGVkLgogICovCiB2b2lk CiBHZXRQdWJsaWNhdGlvbnNTdHIoTGlzdCAqcHVibGljYXRpb25zLCBTdHJpbmdJbmZvIGRlc3Qs IGJvb2wgcXVvdGVfbGl0ZXJhbCkKIHsKLQlMaXN0Q2VsbCAgICpsYzsKLQlib29sCQlmaXJzdCA9 IHRydWU7CisJaW50CQkJbGVuZ3RoID0gbGlzdF9sZW5ndGgocHVibGljYXRpb25zKTsKIAogCUFz c2VydChwdWJsaWNhdGlvbnMgIT0gTklMKTsKIAotCWZvcmVhY2gobGMsIHB1YmxpY2F0aW9ucykK Kwlmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKQogCXsKLQkJY2hhcgkgICAqcHVibmFt ZSA9IHN0clZhbChsZmlyc3QobGMpKTsKLQotCQlpZiAoZmlyc3QpCi0JCQlmaXJzdCA9IGZhbHNl OwotCQllbHNlCi0JCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGRlc3QsICIsICIpOworCQljaGFy CSAgICpwdWJuYW1lID0gc3RyVmFsKGxpc3RfbnRoKHB1YmxpY2F0aW9ucywgaSkpOworCQlib29s CQlsYXN0ID0gaSA+PSBsZW5ndGggLSAxOwogCiAJCWlmIChxdW90ZV9saXRlcmFsKQorCQl7CiAJ CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGRlc3QsIHF1b3RlX2xpdGVyYWxfY3N0cihwdWJuYW1l KSk7CisJCQlpZiAoIWxhc3QpCisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhkZXN0LCAiLCAi KTsKKwkJfQogCQllbHNlCiAJCXsKLQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGRlc3QsICciJyk7 Ci0JCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGRlc3QsIHB1Ym5hbWUpOwotCQkJYXBwZW5kU3Ry aW5nSW5mb0NoYXIoZGVzdCwgJyInKTsKKwkJCWlmIChsYXN0KQorCQkJCWFwcGVuZFN0cmluZ0lu Zm8oZGVzdCwgXygiXCIlc1wiIiksIHB1Ym5hbWUpOworCQkJZWxzZQorCQkJCWFwcGVuZFN0cmlu Z0luZm8oZGVzdCwgXygiXCIlc1wiLCAiKSwgcHVibmFtZSk7CiAJCX0KIAl9CiB9Cg== --0000000000007ec96306502c1b58--