Laravel 5.6, 5.7 Voyager ユーザー毎に言語を選択させる(jaロケール追加)

Laravel 5.6, 5.7 Voyager ユーザー毎に言語を選択させる(jaロケール追加)

コンバンワ、のるぼるのんです。家族と筑波山に登ってきました。トレイルランニングってめちゃくちゃきついですね。明日は確実に筋肉痛だと思います。

さて、前回の記事では、Laravel 5.6, 5.7でvendorプラグインの言語ファイルを外部に設置し、オーバーライド(Voyagerを日本語化)を行いました。

 

しかし、最近のVoyagerはマルチリンガルサイトにも対応しており、ユーザーの選択した言語で管理画面が表示されるようになっています。しかし、ユーザー選択言語に、日本語はまだありません。。。。

つまり、Voyagerから新規にユーザーを作成しようとすると、日本語以外から言語選択することになるので、今まで行った日本語化が解除されてしまいます。

今回は、Voyagerデフォルト言語を日本語化(ここまで前回記事)したプロジェクトで、管理ユーザーの言語に日本語を選択出来るようにする、という内容です。

今回は前回記事で既にデフォルトローケルを日本語にしたところから始めます。

 

・仕様の確認

php artisan voyager:admin –createで作成したdefaultユーザーでログインしてみました。メニューボタンなど、ちまちま日本語化しています。defaultユーザーのLocaleにはnullが入っています。

English, Russianユーザーでもログインしてみましょう。

Englishユーザーです。操作メニューボタンがまた英語になってしまいました。

こちらはRussianユーザーですね。ロシア語で表示されています。前回記事でもロシア語ファイルはコピーしていないので、resourceに作成した外部ベンダー言語ファイル→見つからない時は元ファイル、と読み込んでくれています。

 

Voyagerでは、ユーザー作成の時にローケルを選択すれば、set_localeに関係なく、その言語で閲覧し、言語選択されていない場合はset_localeの言語で表示するようです。

 

それではユーザー追加、編集画面に飛んでみます。

先ほども申し上げたように、Voyagerは日本語対応しておりません(jaが選択出来ません)。voyagerではlocaleに、vendor以下の言語ファイル用ディレクトリを読込表示しているので、nullを選択出来ない仕様のようです。

修正するにはvoyagerディレクトリにlang/jaディレクトリを追加するか、bladeを修正するか。vendor以下は極力いじりたくないので、以前紹介した、Voyagerのコントローラー外出しをつかって、bladeレベルで変更します!

 

・Voyagerのコントローラー確認

まずはユーザー登録画面で使用しているコントローラー、リソースファイルを確認しましょう。

確認にはLaravel Debagbarを使用します。インストールはこちら

画面下部にコントローラーが表示されています。

ふむふむ、VoyagerBaseControllerをオーバーライドすれば良さそうですね。

それではコントローラーをvendor外に出し、オーバーライドしていきましょう。

 

・Voyagerコントローラー作成

Voyager.php

コントローラーの保存場所を設定します。

artisanコマンドからコントローラーを外部出力します。

・コントローラー編集

app/Http/Controllers/Voyager/users/edit-add.blade.php

resources/views/Voyager以下に対象のbladeがある時、$viewsを変更するようにします。edit, create関数に追記すればOK。

 

・Bladeを編集

Users画面で使用されているbladeをコピーします。

編集しましょう。

・resources/views/Voyager/users/edit-add.blade.php

編集は以上で終了です。ユーザー作成してみましょう。

 

無事ロケールにjaを選択出来るようになりました。ユーザーを作成して、ログインしてみます。

無事localeにjaが入り、ログイン後も日本語化されています。

これで管理ユーザーの選択言語に日本語を追加することが出来ました。お疲れ様でした。

Laravelカテゴリの最新記事