Сейчас у меня FreeBSD и там это работает следующим образом:
strftime %B возвращает «мая» в расчёте на то что оно будет использовано с числом, если нужно «май» — добавляется стандартный флаг %O (alternative format)
$ perl -e 'use POSIX (strftime); print strftime("%B%n", 0, 0, 0, 1, 4, 0);'
мая
$ perl -e 'use POSIX (strftime); print strftime("%OB%n", 0, 0, 0, 1, 4, 0);'
май
$ perl -e 'use POSIX (strftime); print strftime("%OB%n", 0, 0, 0, 1, 4, 0);'
%OB
$ perl -e 'use POSIX (strftime); print strftime("%B%n", 0, 0, 0, 1, 4, 0);'
Май
ps: можно написать массив из 12 строк, но это не спортивно.