Задать вопрос
@timka92
Новичок

Не работает локализация setlocale в PHP?

Доброе время суток. Подскажите почему не работает функция setlocale(LC_ALL, "russian") в php? Мне надо вывести название недели не на английском а на русском. Делаю все как в книге, но оно не работает...

<?php 

    setlocale(LC_ALL, "russian");

    $day_m = date('l');
    $day = date('d');
    $mon = date('m');
    $year = date('Y');
?>


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Текущее время</title>
</head>
<body>
    <h1>Добро пожаловать!</h1>
    <blockquote>
        <!-- <?php 
            setlocale(LC_ALL, 'Russian');
            echo 'Текущая дата: ',  date('d-m-Y-l');
        ?> -->

        <table>
            <h2>Cегодня у нас: <span style="color: red;"><?php echo $day_m; ?></span></h2>
            <tr>
                <td>День: <?php echo $day; ?></td>

            </tr>
            <tr>
                <td>Месяц: <?php echo $mon; ?></td>
            </tr>
            <tr>
                <td>Год: <?php echo $year; ?></td>
            </tr>
        </table>
    </blockquote>
</body>
</html>


64566a384ac26572630250.jpeg
  • Вопрос задан
  • 220 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
$fmt = new IntlDateFormatter(
    locale: "ru_RU",
    timezone: 'Europe/Moscow',
    pattern: 'EEEE, d MMMM yyyy'
);
print $fmt->format(new DateTimeImmutable());
// суббота, 6 мая 2023
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@rPman
функция date умеет только англоязычные названия (формат 'F'). Для русских подменяй сам, заведи константу массив (нулевой элемент пустой, так как нумерация месяцев с нуля) типа $month_names=['','Январь','Февраль',... и для вывода пользуйся $month_names[$mon]

Формат в date для месяца бери 'n', он выдаст номер без дополнительного символа 0 в начале (если оставишь 'm' то в массиве имен не будут найдены значения по ключу '01'...)

p.s. есть strftime, оно умеет разные языки, но русский не умеет (хотя в системе все прописано и настроено)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы