From 8be0dfc9280abbee871486180d2e8f21c6b35d6b Mon Sep 17 00:00:00 2001 From: Aya Saad Date: Sun, 29 May 2022 12:04:48 +0200 Subject: [PATCH] MDL-74379 language: injecting am/pm in date string patching the date_format_string() function in moodlelib to add am/pm for languages that don't suuport it. --- lang/en/langconfig.php | 4 ++++ lib/moodlelib.php | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/lang/en/langconfig.php b/lang/en/langconfig.php index e4d6647c3f1..a396e87bc79 100644 --- a/lang/en/langconfig.php +++ b/lang/en/langconfig.php @@ -23,6 +23,8 @@ */ $string['alphabet'] = 'A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z'; +$string['am'] = 'am'; +$string['amcaps'] = 'AM'; $string['backupnameformat'] = '%Y%m%d-%H%M'; $string['dateintervaldayshoursmins'] = '%ad %hh %im'; // See https://www.php.net/manual/en/dateinterval.format.php for format. $string['decsep'] = '.'; @@ -37,6 +39,8 @@ $string['localewin'] = 'English_Australia.1252'; $string['localewincharset'] = ''; $string['oldcharset'] = 'ISO-8859-1'; $string['parentlanguage'] = ''; +$string['pm'] = 'pm'; +$string['pmcaps'] = 'PM'; $string['strftimedate'] = '%d %B %Y'; $string['strftimedatemonthabbr'] = '%d %b %Y'; $string['strftimedatefullshort'] = '%d/%m/%y'; diff --git a/lib/moodlelib.php b/lib/moodlelib.php index 1adab8de923..9e86c351509 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -2356,6 +2356,21 @@ function date_format_string($date, $format, $tz = 99) { } date_default_timezone_set(core_date::get_user_timezone($tz)); + + $datearray = getdate($date); + + if (nl_langinfo(AM_STR) == nl_langinfo(PM_STR)) { + + $format = str_replace([ + '%P', + '%p', + ], [ + $datearray['hours'] < 12 ? get_string('am', 'langconfig') : get_string('pm', 'langconfig'), + $datearray['hours'] < 12 ? get_string('amcaps', 'langconfig') : get_string('pmcaps', 'langconfig'), + ], + $format); + } + $datestring = strftime($format, $date); core_date::set_default_server_timezone();