blog

初めての Middleman シリーズ初めてのMiddleman:多言語化 - 言語ファイルの作成とヘルパーの埋め込み

    • Ryuichi Nonaka
    この記事は書かれてから1年以上経過しており、内容が古い場合があります。

    今回は多言語化について試してみたいと思います。Middlemanの多言語化は結構複雑なので何回かに分けて紹介していこう思います。まずはデフォルトの言語を設定し、翻訳ファイルをヘルパーから呼び出しについてです。

    多言語化の有効化

    Middlemanの多言語化は特にプラグイン等を入れずに利用することができます。

    ########################
    #
    # i18n setting
    #
    ########################
    activate :i18n
    

    翻訳ファイルの作成

    続いて翻訳ファイルを作ります。まずrootにlocalesというフォルダを作ります。このフォルダの中に<言語>.ymlファイルを作ります。今回は以下のようにja.ymlen.ymlの2つを用意します。

    ja.yml

    ja:
      blog: ブログ
    

    en.yml

    en:
      blog: Blog
    

    ヘルパーを使いテンプレートに埋め込む

    テンプレートに埋め込むには以下のようにヘルパーを使います。

    <h1><%= t(:blog) %></h1>
    

    このような書き方も可能です。

    <h1><%= t :blog %></h1>
    

    表示してみる

    $ middleman serverでプレビューしてみてください。

    == The Middleman is loading
    == Locales: en, ja (Default en)
    == LiveReload accepting connections from http://192.168.11.3:35729
    == The Middleman is standing watch at http://0.0.0.0:4567
    == Inspect your site configuration at http://0.0.0.0:4567/__middleman/
    

    コンソールを見るとLocales: en, ja (Default en)となっており英語がデフォルトになっています。表示もBlogと表示されているはずです。

    デフォルト言語を設定する

    デフォルト言語を設定するには設定に:mount_at_rootを加えます。

    ########################
    #
    # i18n setting
    #
    ########################
    activate :i18n do |options|
     options.mount_at_root = :ja
    end
    

    改めてプレビューしてみます。

    $ middleman server
    == The Middleman is loading
    == Locales: en, ja (Default ja)
    == LiveReload accepting connections from http://192.168.11.3:35729
    == The Middleman is standing watch at http://0.0.0.0:4567
    == Inspect your site configuration at http://0.0.0.0:4567/__middleman/
    

    サイトの表示もブログとなっているはずです。これで言語を切り替えられるようになりました。

    その他の設定

    今回の内容と直接関係ありませんが、その他の設定についてメモしておきます。

    :data = "locales"
    The directory holding your locale configurations
    
    :lang_map = {}
    Language shortname map
    
    :langs = nil
    List of langs, will autodiscover by default
    
    :mount_at_root = nil
    Mount a specific language at the root of the site
    
    :no_fallbacks = false
    Disable I18n fallbacks
    
    :path = "/:locale/"
    URL prefix path
    
    :templates_dir = "localizable"
    Location of templates to be localized
    

    今回はここまで。
    次回はテンプレートを用意して言語別のページを作ってみたいと思います。

    シリーズ

    1. 初めてのMiddleman:rbenv, bundler 環境でMiddlemanを使ったHello World
    2. 初めてのMiddleman:レイアウト機能でレイアウトとコンテンツを分離する
    3. 初めてのMiddleman:パーシャルを使ったコンテンツのモジュール化
    4. 初めてのMiddleman:SCSSのコンパイルとテンプレートの基礎
    5. 初めてのMiddleman:Sass MixinライブラリのBourbon, Neatを導入してみる
    6. 初めてのMiddleman:データファイルとデータファイルを使った動的ページ生成
    7. 初めてのMiddleman:サイトにブログ機能を追加する
    8. 初めてのMiddleman:Amazon S3にビルドされたファイルを同期する
    9. 初めてのMiddleman:HTML/CSS/JS/画像をビルド時に圧縮する
    10. 初めてのMiddleman:設定について
    11. 初めてのMiddleman:静的サイトのキャッシュとasset_hash拡張を使ったキャッシュのパージ
    12. 初めてのMiddleman:Middleman::S3Syncで使うAWS IAMユーザーのアクセスキー管理方法について
    13. 初めてのMiddleman:Helperを使ってGravatarのアイコンを表示する
    14. 初めてのMiddleman:アセットパイプラインを使った外部アセットファイルの読み込みと結合
    15. 初めてのMiddleman:Bowerを使ってjQueryなどのライブラリをロードする
    16. 初めてのMiddleman:スケルトンを自作する方法
    17. 初めてのMiddleman:Middleman Blogの記事データを使いやすく管理する方法
    18. 初めてのMiddleman:Middleman-blogのシングルブログを前提としたSkeletonを作った
    19. 初めてのMiddleman:Middleman-blogでマルチブログを試してSkeletonを作った
    20. 初めてのMiddleman:Markdown EngineをkramdownからRedcarpetに切り替える
    21. 初めてのMiddleman:RedcarpetとMiddleman::Rougeを使ったシンタックスハイライト
    22. 初めてのMiddleman:Middleman-Syntaxを使ったシンタックスハイライト
    23. 初めてのMiddleman:Middleman-Blogで記事毎に画像を管理する方法
    24. 初めてのMiddleman:Gulpを使ってサムネイル画像を生成する
    25. 初めてのMiddleman:Middleman-OGPのOGP画像指定を相対パスで設定する
    26. 初めてのMiddleman:Middleman-OGPでMiddleman-BLogにOGPを設定する
    27. 初めてのMiddleman:Middleman-Titleでタイトルタグを手軽に設定する
    28. 初めてのMiddleman:多言語化 - 言語ファイルの作成とヘルパーの埋め込み
    29. 初めてのMiddleman:Middleman-blogにカテゴリやシリーズなどのカスタムコレクションを追加する方法
    30. 初めてのMiddleman:Bowerで管理されているフォントファイルをインポートする

    コメント・フィードバック