メモ用サブブログ

子曰わく學びて時にこれを習う。

jekyll カテゴリをURLは英語のままに日本語化する方法

jekyllのカテゴリは不便なことにカテゴリ名がそのままURLになってしまう。
WordPressのようにURLとしてのカテゴリ名と表示名としてのカテゴリ名を分けることができない。

故に日本語でカテゴリを名づけたい時に困ったことになる。

Capistranoでデプロイを自動化しているのだが、手動でアップの時はいいのだがCapistranoを使ってSSHでアップしようとすると日本語のカテゴリが入ってるとうまく作動してくれない。

ということで、やはり日本語のカテゴリを使いたい場合でもURLは英語のままのほうが無難ということになる。

そこで根本的な解決ではないが以下のような方法を考えた。

フィルタで表示だけ日本語化してしまう対策。

# カテゴリを日本語にする
module CustomFilter
  def toja(input)
    patternes = {
        "test" => "テスト",
        "dogs" => "犬のこと",
        "money" => "お金のこと",
        "cats"  => "猫たち"
    }
    
    if patternes[input] != nil
        patternes[input]
    else
        input
    end
    
  end
end

Liquid::Template.register_filter(CustomFilter)

このようなファイルを作り適当な名前.rb_pluginsディレクトリ以下に配置する。

そしてVIEW側で

<h2>{{page.category | toja}}</h2>

のようにすれば無事、URLは英語のままにカテゴリ名を日本語化することに成功した。

patternesの対応表を増やして自分好みにアレンジしてくだされい。

参考

Liquid フィルタの書き方 - 情報と音楽