Вопрос или проблема
Я поменял язык WordPress на арабский. Теперь get_the_date()
возвращает يناير 30, 2020
(половина на арабском, половина на английском), но мне нужно, чтобы дата была полностью на арабском, например: يناير ٣٠, ٢٠٢٠
Как я могу это сделать?
WordPress имеет date_i18n для получения даты в локализованном формате на основе временной метки.
Попробуйте:
echo date_i18n("d F Y (H:i)",$date) ;
Если кому-то еще это нужно, эти две функции отображают дату и время поста на арабском для сайта на WordPress:
ДАТА:
functions.php
function single_post_arabic_date($postdate_d,$postdate_d2,$postdate_m,$postdate_y) {
$months = array("Jan" => "يناير", "Feb" => "فبراير", "Mar" => "مارس", "Apr" => "أبريل", "May" => "مايو", "Jun" => "يونيو", "Jul" => "يوليو", "Aug" => "أغسطس", "Sep" => "سبتمبر", "Oct" => "أكتوبر", "Nov" => "نوفمبر", "Dec" => "ديسمبر");
$en_month = $postdate_m;
foreach ($months as $en => $ar) {
if ($en == $en_month) { $ar_month = $ar; }
}
$find = array ("Sat", "Sun", "Mon", "Tue", "Wed" , "Thu", "Fri");
$replace = array ("السبت", "الأحد", "الإثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة");
$ar_day_format = $postdate_d2;
$ar_day = str_replace($find, $replace, $ar_day_format);
header('Content-Type: text/html; charset=utf-8');
$standard = array("0","1","2","3","4","5","6","7","8","9");
$eastern_arabic_symbols = array("٠","١","٢","٣","٤","٥","٦","٧","٨","٩");
$post_date = $ar_day.' '.$postdate_d.' '.$ar_month.' '.$postdate_y;
$arabic_date = str_replace($standard , $eastern_arabic_symbols , $post_date);
return $arabic_date;
}
<date>
<?php
$postdate_d = get_the_date('d');
$postdate_d2 = get_the_date('D');
$postdate_m = get_the_date('M');
$postdate_y = get_the_date('Y');
echo single_post_arabic_date($postdate_d,$postdate_d2, $postdate_m, $postdate_y);
?>
</date>
ВРЕМЯ:
functions.php
function single_post_arabic_time($posttime_h, $posttime_i, $posttime_a) {
$ampm = array("AM", "PM");
$ampmreplace = array("ق.ظ", "ب.ظ");
$ar_ampm = str_replace($ampm, $ampmreplace, $posttime_a);
header('Content-Type: text/html; charset=utf-8');
$standardletters = array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
$eastern_arabic_letters = array("٠", "١", "٢", "٣", "٤", "٥", "٦", "٧", "٨", "٩");
$post_time = $posttime_h . ':' . $posttime_i." ".$ar_ampm;
$arabic_time = str_replace($standardletters, $eastern_arabic_letters, $post_time);
return $arabic_time;
}
<time>
<?php
$posttime_h = get_the_date('h');
$posttime_i = get_the_date('i');
$posttime_s = get_the_date('d');
$posttime_a = get_the_date('A');
echo single_post_arabic_time($posttime_h,$posttime_i,$posttime_a);
?>
</time>
Ответ или решение
Вопрос о том, как сделать формат даты полностью на арабском языке в WordPress, затрагивает специфику работы с локализацией в этой платформе. На данный момент, функция get_the_date()
возвращает дату в комбинированном формате — часть на арабском, часть на английском. Если необходимо, чтобы дата отображалась полностью на арабском, включая арабские цифры, можно воспользоваться подходом, описанным ниже.
Решение:
-
Функция для локализации даты:
Разработка пользовательской функции в
functions.php
, которая преобразует месяц, день недели и числа в дату на арабском языке. -
Код функции:
Использование функции преобразования, чтобы все составные элементы даты были на арабском, включая замену стандартных арабских цифр.
function single_post_arabic_date($postdate_d, $postdate_d2, $postdate_m, $postdate_y) { // Перевод названий месяцев $months = [ "Jan" => "يناير", "Feb" => "فبراير", "Mar" => "مارس", "Apr" => "أبريل", "May" => "مايو", "Jun" => "يونيو", "Jul" => "يوليو", "Aug" => "أغسطس", "Sep" => "سبتمبر", "Oct" => "أكتوبر", "Nov" => "نوفمبر", "Dec" => "ديسمبر" ]; $en_month = $postdate_m; $ar_month = $months[$en_month] ?? $en_month; // Используем оператор ?? для безопасности // Перевод дней недели $find = ["Sat", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri"]; $replace = ["السبت", "الأحد", "الإثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة"]; $ar_day = str_replace($find, $replace, $postdate_d2); // Преобразование цифр $standard = ["0","1","2","3","4","5","6","7","8","9"]; $eastern_arabic_symbols = ["٠","١","٢","٣","٤","٥","٦","٧","٨","٩"]; $post_date = "$ar_day $postdate_d $ar_month $postdate_y"; $arabic_date = str_replace($standard, $eastern_arabic_symbols, $post_date); return $arabic_date; }
-
Вызов функции:
Используйте PHP-код в шаблонах WordPress для отображения даты. Это обеспечит отображение полностью на арабском языке:
<?php $postdate_d = get_the_date('d'); $postdate_d2 = get_the_date('D'); $postdate_m = get_the_date('M'); $postdate_y = get_the_date('Y'); echo single_post_arabic_date($postdate_d, $postdate_d2, $postdate_m, $postdate_y); ?>
-
Локализация времени:
Подобным образом, для отображения времени с использованием арабских цифр и обозначений времени суток, добавьте вторую функцию:
function single_post_arabic_time($posttime_h, $posttime_i, $posttime_a) { // Перевод обозначений времени суток $ampm = ["AM" => "ق.ظ", "PM" => "ب.ظ"]; $ar_ampm = $ampm[$posttime_a] ?? $posttime_a; // Преобразование цифр $standardletters = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]; $eastern_arabic_letters = ["٠", "١", "٢", "٣", "٤", "٥", "٦", "٧", "٨", "٩"]; $post_time = "$posttime_h:$posttime_i $ar_ampm"; $arabic_time = str_replace($standardletters, $eastern_arabic_letters, $post_time); return $arabic_time; }
Вызов функции для отображения времени:
<?php $posttime_h = get_the_date('h'); $posttime_i = get_the_date('i'); $posttime_a = get_the_date('A'); echo single_post_arabic_time($posttime_h, $posttime_i, $posttime_a); ?>
Вывод:
Полноценное отображение даты и времени на арабском языке требует создания пользовательских функций, которые преобразуют все структурные элементы даты в желаемый формат. Эти функции покажут дату и время в читаемом формате, удовлетворяя требованиям локализации и стилистики арабского языка.