2019年10月03日
Jekyll テンプレートとして使用した dbyll が結構古いことに気づきました。日本語対応やライブラリのアップデートやら……メンドイ(ぉぃ
Jekyll の日付を日本語対応にする。
テンプレートのリストや記事の最初の部分の日付を日本語にする方法。
で、肝心なのがカテゴリーおよびタグの日本語対応。
- カテゴリーは各ページのURLの決定にも使用されるので英単語が望ましい。
- 複数カテゴリーを指定するとその並びで階層化される。日記の日付部分は
permalink: /:categories/:year-:month/:day_:title:output_ext
のように多少は弄ることができる。 - 上記仕様から、わかりやすい英語表記で多くても3つ程度に絞るべき。
- タグは分類に使用される。隔タグ毎に独立して集計され、URLにも反映されないので日本語などもそれなりに使える。
- ただし、タグ一覧ページに URI ハッシュとして渡され、タブページの遷移のための情報として扱われる。
- Bootstrap3 のタブ機能は、ハッシュにドット(
.
)や日本語が含まれていると正しく表示切り替えができない。
……以上の対応を行う必要がありました。 カテゴリーに関してはこちらの方法を採用。要は英単語に対応するカテゴリー名の辞書を準備して適時変換する、と。
タグの方も辞書を作っていくのが簡単なのでしょうが、比較的少数で落ち着くだろうカテゴリーとは違い、エントリ数が増えればどんどん増えていく可能性があるタグはできることなら自動生成したい。
多少面倒だけどノーマライズ処理を自前で実装。(重複するときはホワイトリストで対応)
module Jekyll
module Category2JapaneseConverter
def date_to_string(input)
input.is_a?(Time) ? input.strftime("%Y年%m月%d日") : input
end
def category_to_japanese(input)
names = @context.registers[:site].config['category_names'] || {}
pattern = names[input]
unless pattern
warn "\"#{input}\" に対応する日本語カテゴリ名が見つかりませんでした。(category_to_japanese)"
input
else
pattern
end
end
def tag_normalize(input)
names = @context.registers[:site].config['tag_names'] || {}
pattern if pattern = names[input]
URI.encode(input).gsub(/\%/, "").gsub(/\./, '_')
end
end
end
あとはコードのハイライト処理とか jquery とか、Lightbox を導入とか。
……もしかして、0からページデザインした方が楽だったかも(笑)