при добавлении нового функциона добавляются новые языкые строки. При этом языковые пакеты, отличные от английского и русского не успевают обновиться вовремя
при загрузке языкового файла не из глобальной области видимости, загруженные значения потом недоступны в другом месте
В обоих случаях и мы видим 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.
аккаунт удален - не срослось с разработчиками
ушел на другой движок
Відредаговано: webitproff (20.03.2023 21:00, 2 року тому)