メインコンテンツにスキップ
  • Middleman ホームページ
  • サポート
  • コミュニティ
  • ドキュメント

基礎

  • インストール
  • v4 へのアップグレード
  • 新しいサイトの作成
  • ディレクトリ構造
  • 開発サイクル
  • ビルド & デプロイ
  • Frontmatter
  • テンプレート言語
  • ヘルパーメソッド
  • レイアウト
  • パーシャル
  • リダイレクト
  • ブログ機能

高度な機能

  • 設定
  • プロジェクトテンプレート
  • 動的ページ
  • データファイル
  • 多言語化 (i18n)
  • アセットパイプライン
  • 外部パイプライン
  • Rack ミドルウェア
  • サイトマップ
  • きれいな URL (ディレクトリインデックス)
  • キャッシュ機能の改善
  • ファイルサイズ最適化
  • カスタム拡張
  • テンプレートエンジンオプション

多言語化 (i18n)

:i18n 拡張はサイトに多言語化対応機能を提供します。config.rb で 次のように有効化します:

activate :i18n

デフォルト設定では, この拡張機能は対応したい言語のロケール名を表す名前の YAML ファイルをプロジェクトルートの locales フォルダから探します。 YAML ファイルは多言語化する必要がある文字列ごとのキーと値のセットです。 テンプレートで文字列を表示するため参照されるキーの値は言語ごとに異なるでしょうが, ロケールごとに同じ内容を書かなければなりません。 2 つの YAML ファイルの例です:

locales/en.yml:

---
en:
  hello: "Hello"

locales/es.yml:

---
es:
  hello: "Hola"

多言語化対象のテンプレートは, デフォルト設定では source/localizable フォルダの 中に置きます (このオプションの変更方法はページ下部で)。

mymiddlemansite/
  +-- ...
  +-- locales
  |   +-- en.yml
  |   +-- es.yml
  +-- source
  |   +-- images
  |   +-- javascripts
  |   +-- layouts
  |   +-- localizable
  |   |   +-- hello_world.html.erb
  |   |   +-- hello_world.es.html.erb
  |   +-- stylesheets
  +-- ...

このフォルダにあるテンプレートごとに I18n ヘルパにアクセスします。 このヘルパを使うと, YAMLファイルからキーを参照し, 言語固有の値をテンプレートに差し込みます。 簡単な source/localizable/hello_world.html.erb テンプレートの例です:

<%= I18n.t(:hello) %> World

この場合 2 つのファイルが出力されます:

  • /hello_world.html の内容は: "Hello World"
  • /es/hello_world.html の内容は: "Hola World"

テンプレートで I18n.t のショートカットとして t を使うこともできます:

<%= t(:hello) %> World

多言語化された場合のパス

それぞれ個別の言語表示にはその言語の名前空間のパスでアクセスできます。デフォルト 設定では, 第一言語はサイトのルートに置かれます (このオプションの変更方法はページ 下部で)。デフォルトのパス設定ではパスの中で単純に言語名 ( YAML ファイル名) を 使用します:

/en/index.html
/es/index.html
/fr/index.html

:path オプションで変更できますが, URL は YAML ファイルの名前を含むことを 覚えておいてください:

activate :i18n, :path => "/langs/:locale/"

パスは次のようになります:

/langs/en/index.html
/langs/es/index.html
/langs/fr/index.html

パスの一部に YAML ファイル名を使いたくない場合, 違う値で書き換えることができます。

activate :i18n, :path => "/langs/:locale/",
  :lang_map => { :en => :english, :es => :spanish, :fr => :french }

パスは次のようになります:

/langs/english/index.html
/langs/spanish/index.html
/langs/french/index.html

パスの多言語化

ページの内容に加えファイル名も多言語化したい場合があります。 言語固有の URL 書き換えを行う場合 YAML ファイルの中で paths キーを使うことで 対応できます。

source/localizable/hello.html.erb があるとします。デフォルト設定では, 次のように出力されます:

/hello.html
/es/hello.html

スペイン語の場合に限りファイル名を hola.html に書き換えたい場合, locales/es.yml の中で paths キーを使うことができます:

---
es:
  hello: "Hola"
  paths:
    hello: "hola"

次のように出力されます:

/hello.html
/es/hola.html

ディレクトリ名を多言語化したい場合, パスを分ける必要があります。例えば, /services/software-development.html を /es/servicios/desarrollo-de-software.html に変更したい場合, locales/es.yml に次のように書くことができます:

---
es:
  paths:
    services: "servicios"
    "software-development": "desarrollo-de-software"

多言語化対象のテンプレート

デフォルト設定では, source/localizable の中身が複数の言語でビルドされ, その他のテンプレートはそのままビルドされます。 このフォルダの名前を :templates_dir オプションで変更できます:

# `source/language_specific` を探す設定
activate :i18n, :templates_dir => "language_specific"

多言語化対象の指定

locales/ フォルダのファイルを自動で探し出す方法よりも, 対応する言語のリストを指定したい場合, :langs オプションを指定できます:

activate :i18n, :langs => [:en] # :en 以外のすべての言語を無視

デフォルト (ルート) 言語

デフォルト設定では, 第一言語 ( :langs で指定されるか, locales/ フォルダに あるもの) が "標準の" 言語になり, サイトのルートに置かれます。2 つの言語が 与えられた場合, :en で多言語化されるファイルが ルートに置かれます:

  • source/localizable/index.html.erb
    • build/index.html は英語
    • build/es/index.html はスペイン語

:mount_at_root を使うことで, この設定を変更したり 特定言語のルート指定を無効化できます:

activate :i18n, :mount_at_root => :es # スペイン語をルートに設定
# または
activate :i18n, :mount_at_root => false # すべての言語ファイル URL に prefix がつく

完全に多言語化されたテンプレート

ロケールごとの YAML ファイルに大きなテキストブロックを書くのは非効率です この問題に対応するため, Middleman にはテンプレート全体を多言語化する方法があります。 例えば, index.html を作りたいとして, index.en.html.erb と index.es.html.erb 2 つのテンプレートを作ることができます。サイトがビルドされると, 次のように出力されます:

build/index.html は英語
build/es/index.html はスペイン語

この多言語化の方法を使う場合, localizable フォルダの中にファイルを 置くようにしてください。

© 2011–2022 Thomas Reynolds

コントリビュータ の助けを借りて コアチーム によって メンテナンスされています。

  • Twitter
  • GitHub