Forums / National / Russian / The Release v0.9.22

Обсуждение релиза Cotonti Siena v0.9.22

webitproff
#46085 2023-03-20 19:52

Более подробная информация о релизе по ссылке.

Проделана довольно внушительная работа по адаптации и совместимости с PHP v. 8.1. Это впечатляет и радует.

но столкнулся с такой странностью

 Обновление Cotonti 0.9.19-01 — 0.9.19-01
Успешное обновление до версии 0.9.19-01
Выполнено !

при обновлении согласно инструкции.

хотя в админке как положено, - Cotonti Siena v.0.9.22

Добавлено 36 минут спустя:

хм... странно, может из-за дискового кеша

на другом сайте всё четко:

 Обновление Cotonti 0.9.19-01 — 0.9.22
Успешное обновление до версии 0.9.22
Выполнено !

    Установлен патч ./setup/siena/patch_0.9.22.sql: OK

 

Добавлено 18 минут спустя:

в ответ на пост

Недостающие языковые строки (решение)

Часто возникают ситуации

    при добавлении нового функциона добавляются новые языкые строки. При этом языковые пакеты, отличные от английского и русского не успевают обновиться вовремя

    при загрузке языкового файла не из глобальной области видимости, загруженные значения потом недоступны в другом месте

В обоих случаях и мы видим warning о том что обращаемся к несуществующему ключу массива

Решение:
В класс cot добавить методы:

    cot::loadLanguage()
    загрузка языковых файлов в глобальную переменную $L, независимо от того откуда он вызван:
    первым делом грузится файл для языка указанного в $cfg['fallBackLang'] (по умолчанию 'en' т.к. он явно заполнен на 100%), потом файл языка пользователя. Таким образом недостающие значения будут заполнены из fallback файла

    cot::loadResources()
    загрузка строк ресурсов в глобальную переменную $R, независимо от того откуда он вызван.

    cot::l(string $landString, mixed ...$values)
    вывод значения $L[$landString]. Если переданы $values с форматированием sprintf()
    Если $L[$landString] не определено, вывести что то вроде '{L:' . $landString . '}' как подсказку о том что нет значения в языковом массиве.
    Если в TPL файлах cot::l работать не будет, сделать для них функцию обертку cot_l() которая будет вызываться из шаблонов.

В cot::loadLanguage() и cot::loadResources() должно быть global $L, $Ls, $cfg, $R;

 

Если можно, по подробнее, с примерами и по-проще, для тех, кто "не есть разработчик"? или пост исключительно для разработчиков?

Как-то сам может эмпирическим путём (методом "тыка") я например разберусь, а вот кто-то даже не сможет задать вопрос, потому что не сможет его сформулировать, а чтобы его сформулировать - нужно выучить код движка, а таких здесь - ровно столько, сколько аудитория Cotonti.

аккаунт удален - не срослось с разработчиками
ушел на другой движок
This post was edited by webitproff (2023-03-20 21:00, 1 year ago)