В интернете есть несколько записей о русификации дат в Octopress, например, на сегодня доступны Rinat’s Blog и maximmikheev.ru. Забавно, что оба они ссылаются на одного и того же немца. Просто повторяться я бы, конечно, не стал, однако упомянутые записи написаны более 3-х лет назад (24 мая и 13 июля 2012 соответственно), за это время время Jekyll обновился и перестал работать с некоторыми конструкциями из ruby. Мне удалось разобраться, как с этим бороться, о чём и расскажу.
Датами управляет плагин plugins/date.rb
. Приведите его к такому виду:
1 | # encoding: utf-8 |
Отличие от процитированных записей здесь в строках 48–65: там используется deep_merge
, на который Jekyll старше 2.0 ругается. Оказалось, что его нужно заменить на Utils.deep_merge_hashes
. Я так и не смог проделать это самостоятельно (обожаю ruby!), но мне ответили на stackoverflow.
В _config.yml
укажите:
date_format: "ordinal"
Менять формат вывода даты надо в самом date.rb
в строке №21. Подробнее о форматировании даты см. на ruby-doc.
Сразу же после изменения date.rb
попробуйте собрать блог: rake generate
. Даты пока не изменятся, просто проверьте, что всё собирается. Теперь нам осталось заменить в некоторых файлах date
на date_ru
. Переменная date
может встречаться в разных файлах в зависимости от темы. Обычно она находится в source/_includes/archive_post.html
. В теме Octostrap3, например, она встречается 7 раз в source/_includes/post/date.html
. После замены файл выглядит так:
1 | {% capture date_ru %}{{ page.date }}{{ post.date }}{% endcapture %} |
В процитированных блогах указан такой вариант:
1 |
|
Но ещё раз повторю, всё зависит от темы. Обратите внимание: менять на date_ru
нужно только отдельно стоящее date
, а post.date
, например, трогать не надо.
А чтобы найти фразы типа «Posted by, Comments, Recent Posts, Categories, Previous post» и т.д., воспользуйтесь командой
grep -irl 'posted by' /path/to/octopress/source
Затем вручную редактируйте найденные файлы. Или можно делать замены с помощью потокового редактора sed, например (сделайте backup сначала):
find /path/to/octopress/source -type f -exec sed -i 's:recent posts:Последние записи:gI' {} +
Флаг -i означает менять оригинальный файл, s — замена, далее через двоеточие что и на что менять, g
— менять все вхождения в строке, I — нечувствительно к регистру.
Вот и всё, Октопресс локализован. Если что-то не сработало, обязательно дайте знать в комментариях.