Subject: bug#39248: closed (Re: bug#39248: format-time-string ignores user's preferred locale)

From: [email-masked] (GNU bug Tracking System)
Date: Sun, 26 Jan 2020 08:36:01 +0000

Your bug report

#39248: format-time-string ignores user's preferred locale

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
39248: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=39248
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#39248: format-time-string ignores user's preferred locale
From: Paul Eggert <[email-masked]>
To: Alan Third <[email-masked]>
Cc: Glenn Morris <[email-masked]>, "Paul W. Rankin" <[email-masked]>, [email-masked], Eli Zaretskii <[email-masked]>
Date: Sun, 26 Jan 2020 00:35:31 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

On 1/25/20 3:18 AM, Alan Third wrote:
> On Thu, Jan 23, 2020 at 11:35:20PM -0800, Paul Eggert wrote:
>>   #ifdef HAVE_NS
>>     ns_pool = ns_alloc_autorelease_pool ();
>> -#ifdef NS_IMPL_GNUSTEP
>> -  /* GNUstep stupidly resets our locale settings after we made them.  */
>> -  fixup_locale ();
>> -#endif
> 
> Hi Paul, this LGTM, but I’m just curious if you’re sure we don’t need
> that code above any more?

Although I don't use GNUstep and haven't tested the code, as I recall GNUstep 
initializes itself on its first call (which is why the fixup_locale call was 
there, as ns_alloc_autorelease_pool was the first call to GNUstep), and if so 
then we don't need fixup_locale there anymore since we now call fixup_locale 
earlier, just after calling ns_init_locale which calls NSLocale currentlocale 
should cause GNUstep to initialize itself.

If I'm wrong feel free to put that code back in, but in the meantime I installed 
the patch as-is, as Paul R. reports that it works for him.

Subject: format-time-string ignores user's preferred locale
From: "Paul W. Rankin" <[email-masked]>
To: [email-masked]
Date: Thu, 23 Jan 2020 13:48:16 +1000
List-Id: <debbugs-submit.debbugs.gnu.org>

Calling function (format-time-string "%x") will output incorrect time
string, ignoring user's preferred locale.

* Steps to reproduce:

1. ensure locale is correct with M-x getenv RET LANG RET
    -> en_AU.UTF-8
2. M-: (format-time-string "%x") RET
    -> "01/23/20"
3. repeat for env LC_TIME

* Expected results:

The format for %x as per the docs:
    %x is the locale’s "preferred" date format.

en_AU locale's "preferred" date format should be DD/MM/YYYY:
"23/01/2020"

i.e. the same as output from shell:
    $ locale
    LANG="en_AU.UTF-8"
    LC_COLLATE="en_AU.UTF-8"
    LC_CTYPE="en_AU.UTF-8"
    LC_MESSAGES="en_AU.UTF-8"
    LC_MONETARY="en_AU.UTF-8"
    LC_NUMERIC="en_AU.UTF-8"
    LC_TIME="en_AU.UTF-8"
    LC_ALL=
    $ date +%x
    23/01/2020

* Actual results:

"01/23/20"

GNU Emacs 27.0.60 (build 1, x86_64-apple-darwin19.2.0, NS appkit-1894.20
Version 10.15.2 (Build 19C57)) of 2020-01-18