実務にてコードリーディングをしている際に現れた__()という見慣れない記法。
どういう意味なのか、どう使うのかがわからなかったので、調べてまとめてみました!
__()が何を表すのか
__関数は、指定した翻訳文字列か翻訳キーをローカリゼーションファイルを使用し、翻訳します。
(Laravel 日本語ドキュメントを参照)
- __ヘルパ関数と呼ぶ
- Lang::getの省略形
現在設定中の言語ファイルから、指定したデータを呼び出すときに使用するみたいです!
使用前の準備
現在設定している言語
config > app.php の中のlocaleを参照
日本語の場合は以下のようになっている。
'locale' => 'ja'
言語ファイルの場所
resources > lang 配下
に上記のようにjaで設定されていれば、jaディレクトリを作成し、そこにファイルを置く
__()の使い方
例えば、言語設定が'local' => 'ja' のときに使うと、
jaディレクトリの指定したファイルのデータを取得することになる。
__('ファイル名')
ファイルの中のデータを全て取得
__('ファイル名.プロパティ名')
指定したプロパティのデータを取得
使用例 (翻訳文字列の取得)
resources/lang/ja/messages.phpのファイルが
'hello' => 'こんにちは'
となっている場合
echo __('messages.hello')
とすることで、「こんにちは」と出力される
使用例 (翻訳文字列の取得)
resources/lang/ja.json
{
'hello' => 'こんにちは'
}
となっている場合
echo __('hello')
とすることで、「こんにちは」と出力される
応用例
$authority_state = 'manager'
if(__('authority.'. $authority_state .'.is_writing') === "true")
{
//処理
}
という処理があり
resources/lang/ja/authority.phpのファイルが
return [
'manager' => [
'position' => '管理者',
'is_reading' => true,
'is_writing' => true,
]
]
となっている場合
__('authority.'. $authority_state .'.is_writing') // 返り値は、true
で取得したデータは、trueとなる
つまり
if(__('authority.'. $authority_state .'.is_writing') === "true")
この条件式がtrueになるので処理が実行される。