#背景
Laravelの日本語化(localization)について、記事がいっぱいあったのですが、
なぜか、凄く基本のメインページの”Register”を日本語化する記事がなくて困ったので、記事にしておきます。
#動作確認環境
- PHP 7.1
- Laravel 5.7
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
- PHP 7.2
- Laravel 6.0
でも動確済み(※)
※updateの際のTIPSを末尾に記載しておきます。
#設定
##Laravel全体の環境変数を日本語に変える
config/app.php ファイル内の変数値を変更
'locale' => 'ja',
##エラーメッセージの変更
この説明の記事はいっぱいある。
resources/lang/enの各ファイルを
resources/lang/jaフォルダを作って、そこにコピーし、翻訳していきましょう。
※更にGitHubとかに翻訳されたファイルを公開してくれている優しい方々がいるので、探すと効率的に作業ができます。
###なぜだ??
ここまできて、右上に鎮座し、一番目立って、気になる"Register"を直したいのにできない。
色々調べてやっと分かったので、こちらに記載しておきます。
##Registerの日本語化
resources/langにja.jsonファイルをjson-baseで作ればいいのでした。
ファイルの中身はこんな感じです。
{
"Register":"登録",
"Login":"ログイン"
}
###Laravelトラップ
Laravelの5.7で
php artisan make:auth
をして、認証周りを使うと思いますが、このとき、作られるnavbarとなる
views/layouts/app.blade.phpファイルはきちんとDouble Underscore (__) Helper Functionを使って記載してくれていますが、
@if (Route::has('register'))
<li class="nav-item">
<a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a>
</li>
@endif
views/welcome.blade.phpページは、なんと
@if (Route::has('register'))
<a href="{{ route('register') }}">Register</a>
@endif
となっていますので、気を付けてください。
ここは、設定では、変わらないので、__()に書き換えてからください。
@if (Route::has('register'))
<a href="{{ route('register') }}">{{ __('Register') }}</a>
@endif
#laravel 6.0へのUpdateの際のTips
日本語対応しているとLang::getFromJson()
関数を使っている(はず)。
これが、バージョンアップの際に、影響を受ける(※1)ので、プログラムコード自体の変更が必要になります(※2)。
※1 Laravel 6.x アップグレードガイド
※2 上記で記載したプログラムコードにおいては変更はない。
詳しくは、
https://qiita.com/shikigamix/items/438104f62f29b9876faa
を参照してください。
私も参考にさせて頂きました(ありがとうございます)。