Moodle 4.1 неправильное название месяцев на русском языке

Moodle 4.1 неправильное название месяцев на русском языке

от Дмитрий Курбатов -
Количество ответов: 10

Добрый день!

После обновления до актуальной версии 4.1 с 4.0.4 названия месяцев для русского языка отображаются некорректно (абра-кодабра😉).

Для других языков все верно: английский, узбекский.

Моя конфигурация:

Windows Server 2012 R2 Russian Edition
PHP 7.4

Сервер базы данных Oracle 19.16

Может быть кто-то уже столкнулся с этой проблемой и есть решение или workaround?

Спасибо заранее за любое содействие...

Приложение About User_ru.PNG
В ответ на Дмитрий Курбатов

Re: Moodle 4.1 неправильное название месяцев на русском языке

от Виталий Лавров -
Изображение пользователя Эксперт по Moodle
Есть похожий случай https://moodle.org/mod/forum/discuss.php?d=441223

Я думаю, что это проблема локализации moodle для windows платформы.
Думаю, что проблема в этом:

(1)
    if ($CFG->ostype == 'WINDOWS') {
        $calendartype = \core_calendar\type_factory::get_calendar_instance();
        $localewincharset = $calendartype->locale_win_charset();
    }
(2)
    if ($localewincharset) {
        $datestring = core_text::convert($datestring, $localewincharset, 'utf-8');
    }
(3)
    public function locale_win_charset() {
        return get_string('localewincharset', 'langconfig');
}
Нужно посмотреть что было в 4.0 и что стало в 4.1 для строки localewincharset . Перевод находится в файле langconfig.php

Я думаю, что в 4.1 'localewincharset' сделали 'utf-8' и вы получили лишнюю перекодировку utf-8 в utf-8
IMHO ''localewincharset' нужно оставить пустым.

Это явный косяк программистов, которые перекодируют текст даты даже если localewincharset utf-8
Было бы более корректно в  moodle/lib/moodlelib.php функции date_format_string()  сделать

    if ($localewincharset && $localewincharset != 'utf-8' ) {
        $datestring = core_text::convert($datestring, $localewincharset, 'utf-8');
    }

В ответ на Виталий Лавров

Re: Moodle 4.1 неправильное название месяцев на русском языке

от Дмитрий Курбатов -
Виталий, большое Вам спасибо.

Дефект устранен после внесения следующих изменений в moodle/lib/moodlelib.php :

/*
if ($localewincharset) {
$datestring = core_text::convert($datestring, $localewincharset, 'utf-8');
}
*/

if ($localewincharset && $localewincharset != 'utf-8' ) {
$format = core_text::convert($format, 'utf-8', $localewincharset);
}

P.S. Я ранее разместил запрос на исправление MDL-76598 и надеюсь, что разработчики Moodle устранят данный дефект в самое ближайшее время.
В ответ на Дмитрий Курбатов

Re: Moodle 4.1 неправильное название месяцев на русском языке

от Дмитрий Курбатов -
Прошу прощения, блок ниже нужно убрать из функции date_format_string, так как кодировка в UTF8 уже была произведена выше:

if ($localewincharset && $localewincharset != 'utf-8' ) {
$format = core_text::convert($format, 'utf-8', $localewincharset);
}
В ответ на Дмитрий Курбатов

Re: Moodle 4.1 неправильное название месяцев на русском языке

от Андрей Ли -
Ммм, подскажите так что изменилось то в тексте файла moodle/lib/moodlelib.php? У меня все так как вы написали, но календарь абракадабра)))
В ответ на Виталий Лавров

Re: Moodle 4.1 неправильное название месяцев на русском языке

от Эдуард Скуматов -
Здравствуйте.
Обновился до Версия 4.1+ (Build: 20221222). Косяк на том же месте улыбаюсь
В ответ на Эдуард Скуматов

Re: Moodle 4.1 неправильное название месяцев на русском языке

от Виталий Лавров -
Изображение пользователя Эксперт по Moodle
Moodle MDL-76537 Encoding problem in month names on Windows server
Type: Bug
Status: Development in progress
Priority: Major
Resolution: Unresolved

Я бы удивился если бы они уже пофиксили баг. В крупных открытых проектах мелкте баги могут исправлять долго при том, что само исправление - пара строк.
Сегодня пришло несколько сообщений от разработчиков. Они хотят вообще вынести все связанное с $localewincharset, т.к. в винде php наконец перешел на utf-8 и костыль в виде $localewincharset стал ненужным.
В ответ на Эдуард Скуматов

Re: Moodle 4.1 неправильное название месяцев на русском языке

от Виталий Лавров -
Изображение пользователя Эксперт по Moodle
И месяца не прошло улыбаюсь

Moodle / Bug MDL-76537
Encoding problem in month names on Windows server
Change By: CiBoT
Currently in integration: Yes
Integration date: 20/Jan/23
Resolution: Fixed
Status: Closed

В ответ на Виталий Лавров

Re: Moodle 4.1 неправильное название месяцев на русском языке

от Дмитрий Курбатов -
Да, подтверждаю, что после установки последнего обновления 4.1.1+ (Build: 20230120) , дефект был устранен.