LaravelのBladeでメッセージファイル(Lang)を使ってみた

Laravel/PHP
スポンサーリンク

はじめに

Laravel Mixで開発中に、Bladeに日本語のメッセージ関連が散りばめられ、汚く、修正する際も探すのが手間でした。実務で日本語メッセージ関連は綺麗に纏められていたのを思い出し、同じようにやってみました。

開発状況(Version)

macOS Big Sur
Laravel Mix 6.0
Laravel 8.83.13
PHP 7.3.29
node.js 16.13.2
Vue.js 2.6.14

※ココから先のシェル名の「Bash」となっている箇所は全て「zsh」です。
ブログのコードエディターの言語設定に「zsh」がないため、「Bash」にしています。

結論

フォルダ構成

フォルダ構成は下記となっています。

src
 |_resources
 |  |_views
 |  |  |_list
 |  |    |_index.blade.php
 |  |
 |  |_lang
 |    |_ja
 |      |_list.php
 | 
 |_config 
    |_app.php

各フォルダに下記のように書けば、使用できます。

index.blade.php

----- 抜粋 -----

<div class="container">
   <div class="mt-5 mb-5">
       <h4>{{ __('list.search_title') }}</h4>
   </div>
</div>

----- 抜粋 -----

list.php

<?php
    return [

        'search_title' => '動画検索',
    ];
         

app.php

----- 抜粋 -----

 /*
    |--------------------------------------------------------------------------
    | Application Locale Configuration
    |--------------------------------------------------------------------------
    |
    | The application locale determines the default locale that will be used
    | by the translation service provider. You are free to set this value
    | to any of the locales which will be supported by the application.
    |
    */

    'locale' => 'ja',

----- 抜粋 -----

ブラウザ画面

元々の構造

元々、LaravelのBladeファイルに下記のように実装していまいした。

元々のフォルダ構成


src
 |_resources
    |_views
      |_list
        |_index.blade.php
   

元々のindex.blade.php

----- 抜粋 -----

<div class="container">
   <div class="mt-5 mb-5">
       <h4>動画検索</h4>
   </div>
</div>

----- 抜粋 -----

方法

メッセージファイルを作成する

resources/langの配下に、jaフォルダを作成します。

そのjaの配下に、linst.phpを作成します。

※今後、ページごとにメッセージ関連のファイルを分けたい場合は、同じように、jaフォルダの配下に作成します。

<?php
    return [

        'search_title' => '動画検索',
    ];

Bladeでメッセージを取得する

メッセージを取得する方法は2つあります。


その1:Langファサードを使って取得する。

その2:__を使って取得する。

今回は、その2の「 __ 」を使用して、実装します。

書き方は、

{{ __('ファイル名.配列のキー') }}

で、呼び出すことができます。

今回の場合は、下記のように書きます。

----- 抜粋 -----

<div class="container">
   <div class="mt-5 mb-5">
       <h4>{{ __('list.search_title') }}</h4>
   </div>
</div>

----- 抜粋 -----

言語設定を指定する

config/app.phpで’local’ => ‘en’の箇所があるので、下記に変更します。

----- 抜粋 -----

 /*
    |--------------------------------------------------------------------------
    | Application Locale Configuration
    |--------------------------------------------------------------------------
    |
    | The application locale determines the default locale that will be used
    | by the translation service provider. You are free to set this value
    | to any of the locales which will be supported by the application.
    |
    */

    'locale' => 'ja',

----- 抜粋 -----

※ここが「en」のままでも使用することはできますが、その場合は、list.phpを下記の階層に作成します。

src
 |_resources
 |  |_views
 |  |  |_list
 |  |    |_index.blade.php
 |  |
 |  |_lang
 |    |_en       ←ここ
 |      |_list.php
 | 
 |_config 
    |_app.php

最後に

こうすることにより、綺麗に纏められ見やすくなりました。今後も、メッセージが増えた際も、同様に追加していけばいいですし、修正も簡単になりました。
今後のために完全に備忘録です。

コメント