【メッセージファイルの管理】

はじめに

固定で頻繁に扱うようなメッセージは、あらかじめ決められた場所にメッセージファイルとして書き出す事が可能で、専用のコマンドを使ってスキャルフォールディングできます。
ファイル形式やメッセージを取得するヘルパー関数(__)はLaravel環境に合わせてあるので(多言語対応やプレースホルダにも対応)、Laravelとの連携も容易にできます。

※Laravelとの連携方法の詳細は▶Laravelと連携するのページを参照。

メッセージファイルは以下のコマンドで作成できます。
> php worker craft:locale test

[success] メッセージファイルの生成に成功しました (test)
                    

メッセージ管理のコマンドはsetting/app.php内のlocale設定項目と連動しますので多言語対応で管理できます。
例えばlocaleの項目がjaの場合で、test.phpというファイルを指定した場合は、locale/ja/test.phpというファイルが作成されます。

メッセージの使い方

作成されたファイルには次の通り、空の配列のリターン値のみコーディングされています。
return [

];
                    

例えばtest_messageという設定名のメッセージを管理する場合は、以下のように記載します。
return [
    'test_message' => 'テストメッセージ'
];
                    

そしてメッセージが必要な時に__ヘルパー関数を使って以下のように取得できます。
$message = __('test.test_message');
                    

メッセージファイル内のメッセージを取得するヘルパー関数(__)はLaravelと同様に使えるように以下の仕様で実装しています
【メソッド】__(string $p_key, array $p_placeholder = []): string

【パラメータ】
    $p_key         - string - 必須 - ファイル名を含めたキー名(ピリオド区切りで指定)
    $p_placeholder - array  - 任意 - プレースホルダに値を代入するための連想配列

【戻り値】string - 第一パラメータで指定されたキーに対応するメッセージ or メッセージが取得できなかった時は第一パラメータで指定されたキー名
                    

また、以下のようにプレースホルダも使えます。
例えば自己紹介の文章の中で、名前と年齢を置き換え可能にする場合、キーワードの先頭にコロン(:)を付けて以下のように記載します。
return [
    'test_message' => '私の名前は:nameです。年齢は:age歳です。'
];
                    
$message = __('test.test_message', ['name' => '山田太郎', 'age' => 20]);
                    

変数$messageには「私の名前は山田太郎です。年齢は20歳です。」という文字列が格納されます。