EGO-LOG

40代2児の父。主にプログラム学習と開発、仮想通貨、メタバース、たまに関係ないことを綴る。

Laravel.38 多言語対応(準備)

↓でログイン画面などのテキストを日本語化するにあたり、

気になっていた点があった。

tenomeuonome.hateblo.jp

 

テキストが「Login」のリンクボタンを表現するのに、

<x-button class="ml-3">
  {{ __('Log in') }}
</x-button>

となっている。

__('Log in') というのは何なのか?

今回の修正でリテラルに修正してしまったので気になってた。

qiita.com

__(アンダーバー2つ)はヘルパ関数の一つで、Laravelが用意した関数。

ヘルパ関数は自作も可能だとか。

 

__() は、翻訳してくれる関数?

readouble.com

__ヘルパ関数を使い、言語ファイルから翻訳文字列を取得できます。

翻訳文字列が存在しない場合、文字列をそのまま返す。

翻訳文字列はどこに定義するんでしょ?

 

ロケール設定

言語設定を確認

config\app.php

'locale' => 'en',

普通に英語になってたので、まずはここを

'locale' => 'jp',

に修正。

 

■言語ファイル作成

翻訳用文字列を定義する。

lang\ja.json

{
    "Log in": "ログイン",
    "Email": "メールアドレス",
    "Password": "パスワード",
    "Remember me": "パスワードを記憶",
    "Forgot your password?": "パスワードを忘れた場合",
    "Password": "パスワード"
}

blade.php側では、

{{ __('Log in') }}

などとすると、

リテラルと同じように表示されることが確認できた。

 

次回、英語と日本語を切替できたらいいかな。

 

続く