Laravelにおいて多言語化をする方法
はじめに
Laravelのバリデーションを実装時にエラー文が全て英語で表記されてしまうので、どうしたら日本語化できるのか調べたのでまとめておきます。
多言語化の導入
1. 設定ファイルのロケールを変更
デフォルトでは、en になっているためこれを変更していきます。
config/app.php ファイルを開きます。
ロケールに関することが書かれている一文があるので探し、en
から ja
に変更します。
英語
/*
|--------------------------------------------------------------------------
| 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' => 'en',
/*
|--------------------------------------------------------------------------
| Application Fallback Locale
|--------------------------------------------------------------------------
|
| The fallback locale determines the locale to use when the current one
| is not available. You may change the value to correspond to any of
| the language folders that are provided through your application.
|
*/
'fallback_locale' => 'en',
日本語
'locale' => 'ja',
'fallback_locale' => 'ja',
上記を設定することでロケールが日本語になります。
2. 多言語化用のディレクトリ/ファイルの作成
デフォルトでは、Laravelアプリケーションは、langディレクトリを用意していないため、Laravelの言語ファイルをカスタマイズしたい場合は、lang:publish Artisanコマンドでディレクトリとファイルを作成します。
php artisan lang:publish
これで、langディレクトリとその配下にenディレクトリが作成されます。
enディレクトリの配下には、auth、pagination、passwords、validation のファイルが作成されています。
今回は、バリデーションを日本語化していきたいので en/validation.php ファイルを開き、コードを全てコピーしておきます。
次に lang ディレクトリ配下に新しく ja ディレクトリを作成し、ja ディレクトリ配下に validation.php ファイルを作成して先ほどコピーしたコードをペーストします。ペーストしたコードの中で、required という部分のコードがあるのでそこを日本語化していきます。
英語
'required' => 'The :attribute field is required.'
日本語
'required' => ':attribute は必須項目です。'
※ :attribute の部分に validation を実装したタイトル名が自動的に入ってきます。
以上が多言語化をするための方法になります。
また、URLによって言語を動的に変える方法もありますが今回は省略します。
参考
Discussion