サイトアイコン IT NEWS

【Laravel】日本語化した翻訳文字列を__()ヘルパ関数で取得

laravel-helper-lang

Laravelには__()というヘルパ関数があることをご存じだろうか。(アンダーバー2つ)
例えば、以下のように日本語メッセージファイルを作ったとして、それを取得するには、Lang::get()メソッドを使用していました。

Laravelの多言語化

以前、Laravel日本語化する方法を紹介しましたので、今回は日本語化したメッセージを__()ヘルパ関数を利用して、便利に取得する方法をご紹介します。

日本語ファイルのディレクトリ構成

前回のおさらいになりますが、日本語ファイルを配置するディレクトリ構成も意味がありますので、少し復習しておきます。

/resources
    /lang
        /en
            messages.php
        /ja
            messages.php

日本語メッセージの取得

冒頭にも記述しましたが、__()を使う前は以下のように取得していました。

Lang::get('message.welcome');

しかし、そんなに長ったらしく書かなくても簡単に取得できることを知りました。
それが、__()というヘルパ関数です!
実際にはこのように取得します。

echo __('messages.welcome');

短っ!!
「短い=正義」です!

キーに文字列を使用する

さらに、resources/lang直下に、resources/lang/ja.jsonを作り、JSON形式で配列で言うキーに英文、値に日本語の翻訳文字列を設定して、

{
    "I love programming.": "私はプログラミングが大好きです。"
}

__()の引数に上記のキーを指定します。

echo __('I love programming.');

このように取得すると、キーと値が設定されていれば「私はプログラミングが大好きです。」と日本語化されて表示され、もし言語ファイルが存在しない場合でも「I love programming.」をそのまま表示してくれるという優れものです。

プレースホルダを定義する

さらに!コレだけではありません!
プレースホルダを定義して指定した文字列を置き換えることも簡単にできます。
例えば、以下のように[:name](名前)を:~(コロン~)と定義して、

'welcome' => 'ようこそ! :name さん',

使い方としては、変更したいプレースホルダ__()関数第2引数に配列で入れるだけです。

echo __('messages.welcome', ['name' => '佐藤']);

上記を出力すると「ようこそ! 佐藤 さん」となります。
便利すぎるぞLaravel

モバイルバージョンを終了