LoginSignup
0
0

More than 1 year has passed since last update.

Laravel 翻訳関数__()

Posted at

実務にてコードリーディングをしている際に現れた__()という見慣れない記法。

どういう意味なのか、どう使うのかがわからなかったので、調べてまとめてみました!

__()が何を表すのか

__関数は、指定した翻訳文字列か翻訳キーをローカリゼーションファイルを使用し、翻訳します。
(Laravel 日本語ドキュメントを参照)

  • __ヘルパ関数と呼ぶ
  • Lang::getの省略形

現在設定中の言語ファイルから、指定したデータを呼び出すときに使用するみたいです!

使用前の準備

現在設定している言語

config > app.php の中のlocaleを参照

日本語の場合は以下のようになっている。

'locale' => 'ja'

言語ファイルの場所

resources > lang 配下
に上記のようにjaで設定されていれば、jaディレクトリを作成し、そこにファイルを置く

__()の使い方

例えば、言語設定が'local' => 'ja' のときに使うと、
jaディレクトリの指定したファイルのデータを取得することになる。

__('ファイル名')
ファイルの中のデータを全て取得

__('ファイル名.プロパティ名')
指定したプロパティのデータを取得

使用例 (翻訳文字列の取得)

resources/lang/ja/messages.phpのファイルが

resources/lang/ja/messages.php
'hello' => 'こんにちは'

となっている場合

echo __('messages.hello')

とすることで、「こんにちは」と出力される

使用例 (翻訳文字列の取得)

resources/lang/ja.json

resources/lang/ja.json
{
    'hello' => 'こんにちは'
}

となっている場合

echo __('hello')

とすることで、「こんにちは」と出力される

応用例

  
$authority_state = 'manager' 

if(__('authority.'. $authority_state .'.is_writing') === "true")
{
  //処理
}

という処理があり

resources/lang/ja/authority.phpのファイルが

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になるので処理が実行される。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0