@半径とことこ60分

人間の認知範囲なんてそんなもんさと、鳥が囀った

さらに「Laravel4入門」言語ファイル

プログラマーじゃないけどLaravel4入門 」 なんて、わけも分からず Laravel4 について11回も書いてきたんですが、何とかブログらしきものができましたし、こうやって手探りでも、実際にやってみるとそれなりに理解できてくるものですね。


コードは ausnichts/laravel4-blog · GitHub にあります。

で、もう少し掘り下げてみようと思います。作った「Laravel4-blog」は、view ファイルの中に日本語を混在させていますし、バリデーションや Notification も英語のままです。Laravel は多言語化の機能を持っているようですのでプログラムと言語ファイルを分けてみようと思います。

ローカリゼーション

私が何か書くまでもなく、Laravel4ドキュメント「ローカリゼーション」に分かりやすく書かれていますので実践していくだけです。

デフォルト言語、フォールバック言語

初期設定ファイル app/config/app.php で指定します。

'locale' => 'ja',

'fallback_locale' => 'en',

フォールバック言語は、デフォルトに指定した言語ファイルに存在しないものが呼ばれた場合に使用されるようです。

デフォルト言語もプログラム内から変更できるようですので、ブログタイトルなどを管理画面で設定できるようにする場合の設定項目にしようと思います。

App::setLocale('ja');

言語ファイル

日本語ファイルは、app/lang に ja ディレクトリを作成し、 'key'=>'文字列' の配列ファイルを backend.php などと好きな名前で保存します。

<?php
return array(

  'dashboard' => '管理',
  'sign_out' => 'ログアウト',
  'article' => '記事',
  'category' => 'カテゴリ',
  'block' => 'ブロック',

で、

Lang::get('backend.dashboard')

とすれば、「管理」と表示されます。簡単です。

en ディレクトリにデフォルトで用意されている pagination、reminder、validation も日本語化すれば、'pagination.previous' などと自由に呼び出すことができます。

ところで、「Previous / Next」のナビゲーションはどう訳すと一番分かりやすいのでしょう? 「前へ / 次へ」って混乱しませんか? 「古い方へ / 新しい方へ」ですとダサイですので「過去 / 未来」とか? 

バリデーション言語ファイル

日本語化された validation.php が ishinao さんという方から配布されています。

http://ishinao.tumblr.com/
Laravel 4 app/lang/ja/validation.php バリデーションメッセージ日本語リソース。

ただ、このままですと、:attribute が日本語化されていませんので「username は必須です」などとフィールド名がそのまま表示されます。:attribute も日本語化したい場合は、attribute 配列にフィールド名に対応する日本語を登録しておきます。

'attributes' => array(
  'username' => 'ユーザーID',
  'password' => 'パスワード',
  'title' => 'タイトル',
  'category_id' => 'カテゴリ',
  'category' => 'カテゴリ',
  'contents' => '内容',
),

これで、「ユーザーIDは必須です」と表示されるようになります。