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.94.2) (envelope-from ) id 1ujDXi-004YEn-9P for pgsql-docs@arkaria.postgresql.org; Tue, 05 Aug 2025 09:01:11 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1ujDXh-008bSR-7g for pgsql-docs@arkaria.postgresql.org; Tue, 05 Aug 2025 09:01:09 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1ujDXg-008bSI-Qy for pgsql-docs@lists.postgresql.org; Tue, 05 Aug 2025 09:01:08 +0000 Received: from mail.postgrespro.ru ([93.174.132.70]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1ujDXc-000qdF-1X for pgsql-docs@lists.postgresql.org; Tue, 05 Aug 2025 09:01:08 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1754384463; bh=3KSAl7Rxf+E+ftMXpbSsx/HWywW+suxV1vQX0vHbzTA=; h=Date:From:To:Cc:Subject:In-Reply-To:References:Message-ID:From; b=cKsyyyEfnWvCzG02Ek8ooGngiPVys9P5P/w25+Y01J2p1C3B7m8nwzty7RvTSMpMP DR6alTvEu3iO+C+12C4kvS0zWnSN+r+YyYxj4lGaamsaVl4ErdJbaLaGuOoXrtGYlW LcWWXDqJnm1alOWoTR4uciZu3pl3H7rrO6yJOW9F9hLLNkdCSf0huLlxik0MrmHTuC 6kx5TeUVW1IbYBCQO91U+nqqr1nLXi+djPbRcIRzmYUWMxEBqA3aeuq+gSKw+h30Lz 2+qlqT6yAU2fgfPI+8iLLb6VnM/Ni19VY1vfsqoyFej8qLWBkKUYDZAS4nDvYwei6u uODLCrIQQHB3A== Received: from mail.postgrespro.ru (webmail-master-mstn.l.postgrespro.ru [192.168.2.26]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: o.tselebrovskiy@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id F1B356018A; Tue, 5 Aug 2025 12:01:02 +0300 (MSK) MIME-Version: 1.0 Date: Tue, 05 Aug 2025 16:01:02 +0700 From: Oleg Tselebrovskiy To: Jeff Davis Cc: Alexander Korotkov , pgsql-docs@lists.postgresql.org Subject: Re: Initcap works differently with different locale providers In-Reply-To: References: <804cc10ef95d4d3b298e76b181fd9437@postgrespro.ru> <0658C8F0-5ED4-4962-A2A3-524B0D899982@gmail.com> <9247c1b9531136e15d83511270e8c43bf877c9ca.camel@j-davis.com> Message-ID: <31964db3672feeb6a527d8f7191d48e1@postgrespro.ru> X-Sender: o.tselebrovskiy@postgrespro.ru Organization: Postgres Pro Content-Type: multipart/mixed; boundary="=_ad17426a98905e0a08bd4fd87137b1f3" X-KSMG-AntiPhishing: NotDetected X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2025/08/05 08:07:00 #27631922 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_ad17426a98905e0a08bd4fd87137b1f3 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed Jeff Davis wrote at 2025-08-05 03:59: > One more thing: we should also change it to "... to upper case (or > title case) and the rest to lower case...". Title case is for scripts > that have characters like 'Dž' (U+01C5). Done based upon second version of previous patch. Again, there are two versions - the first one has a mention of digraphs, like 'Dž' (U+01C5), and the second one doesn't. And again, don't know which version is better - title case without mentioning digraphs could be interpreted as "don't capitalise articles and prepositions" or just "don't capitalize articles", since the definition of "title case" is vague. We have a "write your own function" clause, but still. Maybe we should add an example of a digraph to the first patch to make it more clear, if we go that path. --=_ad17426a98905e0a08bd4fd87137b1f3 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v3-0001-initcap-documentation.patch Content-Disposition: attachment; filename=v3-0001-initcap-documentation.patch; size=1367 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy5z Z21sCmluZGV4IDc0YTE2YWYwNGFkLi5iMzJlYzZlMmNlYSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2Z1bmMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCkBAIC0zMTQ3LDEyICsz MTQ3LDE1IEBAIFNFTEVDVCBOT1QoUk9XKHRhYmxlLiopIElTIE5PVCBOVUxMKSBGUk9NIFRBQkxF OyAtLSBkZXRlY3QgYXQgbGVhc3Qgb25lIG51bGwgaW4KICAgICAgICAgPHJldHVybnZhbHVlPnRl eHQ8L3JldHVybnZhbHVlPgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KLSAgICAgICAg Q29udmVydHMgdGhlIGZpcnN0IGxldHRlciBvZiBlYWNoIHdvcmQgdG8gdXBwZXIgY2FzZSBhbmQg dGhlCi0gICAgICAgIHJlc3QgdG8gbG93ZXIgY2FzZS4gV2hlbiB1c2luZyB0aGUgPGxpdGVyYWw+ bGliYzwvbGl0ZXJhbD4gbG9jYWxlCi0gICAgICAgIHByb3ZpZGVyLCB3b3JkcyBhcmUgc2VxdWVu Y2VzIG9mIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIHNlcGFyYXRlZAotICAgICAgICBieSBub24t YWxwaGFudW1lcmljIGNoYXJhY3RlcnM7IHdoZW4gdXNpbmcgdGhlIElDVSBsb2NhbGUgcHJvdmlk ZXIsCi0gICAgICAgIHdvcmRzIGFyZSBzZXBhcmF0ZWQgYWNjb3JkaW5nIHRvCi0gICAgICAgIDx1 bGluayB1cmw9Imh0dHBzOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIyOS8jV29yZF9Cb3Vu ZGFyaWVzIj5Vbmljb2RlIFN0YW5kYXJkIEFubmV4ICMyOTwvdWxpbms+LgorICAgICAgICBDb252 ZXJ0cyB0aGUgZmlyc3QgbGV0dGVyIG9mIGVhY2ggd29yZCB0byB1cHBlciBjYXNlIChvciB0aXRs ZSBjYXNlCisgICAgICAgIGlmIHRoZSBsZXR0ZXIgaXMgYSBkaWdyYXBoKSBhbmQgdGhlIHJlc3Qg dG8gbG93ZXIgY2FzZS4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRo aXMgZnVuY3Rpb24gaXMgcHJpbWFyaWx5IHVzZWQgZm9yIGNvbnZlbmllbnQKKyAgICAgICAgZGlz cGxheSwgYW5kIHRoZSBzcGVjaWZpYyByZXN1bHQgc2hvdWxkIG5vdCBiZSByZWxpZWQgdXBvbiBi ZWNhdXNlIG9mCisgICAgICAgIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGxvY2FsZSBwcm92aWRl cnMgYW5kIGJldHdlZW4gZGlmZmVyZW50CisgICAgICAgIElDVSB2ZXJzaW9ucy4gSWYgc3BlY2lm aWMgd29yZCBib3VuZGFyeSBydWxlcyBhcmUgZGVzaXJlZCwKKyAgICAgICAgaXQgaXMgcmVjb21l bmRlZCB0byB3cml0ZSBhIGN1c3RvbSBmdW5jdGlvbi4KICAgICAgICA8L3BhcmE+CiAgICAgICAg PHBhcmE+CiAgICAgICAgIDxsaXRlcmFsPmluaXRjYXAoJ2hpIFRIT01BUycpPC9saXRlcmFsPgo= --=_ad17426a98905e0a08bd4fd87137b1f3 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v3-0002-initcap-documentation.patch Content-Disposition: attachment; filename=v3-0002-initcap-documentation.patch; size=1340 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy5z Z21sCmluZGV4IDc0YTE2YWYwNGFkLi5mNzk5YjM0ZGNhNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2Z1bmMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCkBAIC0zMTQ3LDEyICsz MTQ3LDE1IEBAIFNFTEVDVCBOT1QoUk9XKHRhYmxlLiopIElTIE5PVCBOVUxMKSBGUk9NIFRBQkxF OyAtLSBkZXRlY3QgYXQgbGVhc3Qgb25lIG51bGwgaW4KICAgICAgICAgPHJldHVybnZhbHVlPnRl eHQ8L3JldHVybnZhbHVlPgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KLSAgICAgICAg Q29udmVydHMgdGhlIGZpcnN0IGxldHRlciBvZiBlYWNoIHdvcmQgdG8gdXBwZXIgY2FzZSBhbmQg dGhlCi0gICAgICAgIHJlc3QgdG8gbG93ZXIgY2FzZS4gV2hlbiB1c2luZyB0aGUgPGxpdGVyYWw+ bGliYzwvbGl0ZXJhbD4gbG9jYWxlCi0gICAgICAgIHByb3ZpZGVyLCB3b3JkcyBhcmUgc2VxdWVu Y2VzIG9mIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIHNlcGFyYXRlZAotICAgICAgICBieSBub24t YWxwaGFudW1lcmljIGNoYXJhY3RlcnM7IHdoZW4gdXNpbmcgdGhlIElDVSBsb2NhbGUgcHJvdmlk ZXIsCi0gICAgICAgIHdvcmRzIGFyZSBzZXBhcmF0ZWQgYWNjb3JkaW5nIHRvCi0gICAgICAgIDx1 bGluayB1cmw9Imh0dHBzOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIyOS8jV29yZF9Cb3Vu ZGFyaWVzIj5Vbmljb2RlIFN0YW5kYXJkIEFubmV4ICMyOTwvdWxpbms+LgorICAgICAgICBDb252 ZXJ0cyB0aGUgZmlyc3QgbGV0dGVyIG9mIGVhY2ggd29yZCB0byB1cHBlciBjYXNlIChvciB0aXRs ZSBjYXNlKQorICAgICAgICBhbmQgdGhlIHJlc3QgdG8gbG93ZXIgY2FzZS4KKyAgICAgICA8L3Bh cmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgcHJpbWFyaWx5IHVz ZWQgZm9yIGNvbnZlbmllbnQKKyAgICAgICAgZGlzcGxheSwgYW5kIHRoZSBzcGVjaWZpYyByZXN1 bHQgc2hvdWxkIG5vdCBiZSByZWxpZWQgdXBvbiBiZWNhdXNlIG9mCisgICAgICAgIHRoZSBkaWZm ZXJlbmNlcyBiZXR3ZWVuIGxvY2FsZSBwcm92aWRlcnMgYW5kIGJldHdlZW4gZGlmZmVyZW50Cisg ICAgICAgIElDVSB2ZXJzaW9ucy4gSWYgc3BlY2lmaWMgd29yZCBib3VuZGFyeSBydWxlcyBhcmUg ZGVzaXJlZCwKKyAgICAgICAgaXQgaXMgcmVjb21lbmRlZCB0byB3cml0ZSBhIGN1c3RvbSBmdW5j dGlvbi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIDxsaXRlcmFsPmlu aXRjYXAoJ2hpIFRIT01BUycpPC9saXRlcmFsPgo= --=_ad17426a98905e0a08bd4fd87137b1f3--