Bug #76513 [Com]: locale for day of week

From: Date: Thu, 04 Mar 2021 09:38:27 +0000
Subject: Bug #76513 [Com]: locale for day of week
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-232532@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=76513&edit=1

 ID:                 76513
 Comment by:         jluc at no-log dot org
 Reported by:        jluc at no-log dot org
 Summary:            locale for day of week
 Status:             Not a bug
 Type:               Bug
 Package:            *General Issues
 Operating System:   linux
 PHP Version:        7.2.6
 Assigned To:        cmb
 Block user comment: N
 Private report:     N

 New Comment:

setlocale fails or is not consistent. 
It should be deprecated or fixed.


Previous Comments:
------------------------------------------------------------------------
[2018-06-24 10:53:23] cmb@php.net

From the docs[1]:

| If locale is an array or followed by additional parameters then
| each array element or parameter is tried to be set as new locale
| until success. This is useful if a locale is known under different
| names on different systems or for providing a fallback for a
| possibly not available locale.

Also check the return value of setlocale() to see whether it
failed, and act appropriately.

[1] <http://php.net/manual/en/function.setlocale.php>

------------------------------------------------------------------------
[2018-06-23 22:08:57] jluc at no-log dot org

I tried also on various php online sandboxes :

WRONG :
https://wtools.io/php-sandbox ->  7.2.3 in French
Saturday andbool(false)
http://sandbox.onlinephpfunctions.com/ ->
7.2.4 in French Saturday andbool(false)
https://3v4l.org/qfWTr-> 7.3.0alpha1 in French Saturday
andbool(false)

RIGHT :
http://www.writephponline.com/-> 7.0.30 in French
samedi andstring(5) "fr_FR"

If i understand well the issue is with setlocale's parameter.

Further tests on my local machine showed, i have to write setlocale("fr_FR.utf8"); 
This works. (instead of plain "fr_FR") 

This syntax is mentionned in some comments of https://secure.php.net/manual/fr/function.setlocale.php
but not in the official doc itself. 
Shouldnt that be explained ?

Is that a portable and safe way to go ?

------------------------------------------------------------------------
[2018-06-23 21:46:20] jluc at no-log dot org

On my locale machine here are the results :

$ locale -a | grep fr
fr_BE.utf8
fr_CA.utf8
fr_CH.utf8
fr_FR.utf8
fr_LU.utf8
$ php -f str.php
7.1.17-0ubuntu0.17.10.1 
in French Saturday andbool(false)

(i added echo phpversion() to your proposed script)

------------------------------------------------------------------------
[2018-06-21 14:50:26] danack@php.net

I can't reproduce this issue. Please could you run on the command line:

```
locale -a | grep fr
```

and also run
```
$result = setlocale(LC_TIME, "fr_FR");
echo strftime(" in French %A and");
var_dump($result);
```
and give the output for both.

The simplest explanation would be that the fr_FR locale is not available on your system for whatever
reason.

------------------------------------------------------------------------
[2018-06-21 14:07:19] jluc at no-log dot org

Description:
------------
---
From manual page: http://www.php.net/function.strftime
---

"Format the time and/or date according to locale settings. Month and weekday names and other
language-dependent strings respect the current locale set with setlocale()."

BUT day of week are allways english, whatever the locale

The given example is :
  setlocale(LC_TIME, "fr_FR");
  echo strftime(" in French %A and");

but the output is not displayed in http://www.php.net/function.strftime

AMOF, output is 
  in French Thursday and Thu

Which is not the expected : "in French Jeudi and Jeu"




Expected result:
----------------
Either documentation is wrong and setlocale is not efficient with dayofweeks names

Either this is a bug

Anyway, the output for this example should be included in the documentation (not only the PHP
source) as it's done for other examples.



------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=76513&edit=1


Thread (7 messages)

« previous php.bugs (#232532) next »