Ну, прошло немного времени после того, как я опубликовал вопрос, чтобы понять, что все способы, которые я попробовал, были в порядке, с использованием caketime или strftime напрямую, проблема была с setlocale:
Изменено это:
setlocale("LC_ALL", "es_ES.UTF-8");
к этому:
setlocale(LC_TIME, 'es_ES.utf8','esp');
Итак, мои два результата:
echo ucfirst(strftime('%A '.$number_of_the_day.' %B %Y'));
//Viernes 31 agosto 2018
echo __('Today is ').CakeTime::nice();
//Hoy es vie, ago 31st 2018, 16:29
Это сработало как очарование, однако мне бы очень хотелось, чтобы таблица, где объясняются все эти языковые коды, чтобы мы могли использовать правильный синтаксис для каждого, а не угадывать, как я.