🤔

Laravelにおいて多言語化をする方法

2024/03/07に公開

はじめに

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によって言語を動的に変える方法もありますが今回は省略します。

参考

https://readouble.com/laravel/10.x/ja/localization.html

Discussion