Re: Preposition in IntlDateFormatter
| From: | Markus Fasselt | Date: | Wed, 22 Nov 2017 21:29:58 +0000 |
| Subject: | Re: Preposition in IntlDateFormatter | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-101147@lists.php.net to get a copy of this message | ||
Thank you Derick,
I will report it there.
Regards,
Markus
On 20.11.2017 11:03, Derick Rethans wrote:
On Sun, 19 Nov 2017, Markus Fasselt wrote:I just noticed an issue with PHP's DateFormatter and some locales. Consider this example code:The information used for this is not part of the PHP source or code, but comes out of ICU, which uses CLDR for its localisation information. CLDR doesn't include the "v" for Cs. From common/main/cs.xml:foreach (['en', 'de', 'da', 'pt', 'fr', 'cs'] as $locale) {which will output the following:$df = new IntlDateFormatter($locale, IntlDateFormatter::LONG,IntlDateFormatter::SHORT);var_dump($locale . ': ' . $df->format(new DateTime()));}string(33) "en: November 19, 2017 at 10:28 PM" string(30) "de: 19. November 2017 um 22:28" string(31) "da: 19. november 2017 kl. 22.28" string(32) "pt: 19 de novembro de 2017 22:28" string(29) "fr: 19 novembre 2017 à 22:28" string(28) "cs: 19. listopadu 2017 22:28"As you can see, the first examples all have a preposition before the time. But there is none for the Czech language - there should be a "v". Some other languages are missing their prepositions as well, e.g. pl and se (and probably more). Is this a bug? I am no native speaker in these languages, but got a bug report from a user and did some research. In my opinion, the prepositions are missing.<dateTimeFormats> <dateTimeFormatLength type="full"> <dateTimeFormat> <pattern>{1} {0}</pattern>From common/main/de.xml:<dateTimeFormats> <dateTimeFormatLength type="full"> <dateTimeFormat> <pattern>{1} 'um' {0}</pattern>CLDR can be downloaded at http://cldr.unicode.org/index/downloads, and bugs can be file at http://cldr.unicode.org/index/bug-reports cheers, Derick