laravel5.5多言語対応について調べてみた。
laravelは最初からバリデーションの多言語対応はついている。
resouces/lang/en/validation.php ←←← 英語のバリデーション文字列を記述しておく
resouces/lang/ja/validation.php ←←← 日本語のバリデーション文字列を記述しておく
bladeでも、同様な感じで記述できる(message.php以外のファイル名でも良い)
resouces/lang/en/message.php ←←← 英語のbladeに表示する文字列を記述しておく
resouces/lang/ja/message.php ←←← 日本語のbladeに表示する文字列を記述しておく
1 2 3 4 5 |
<?php return [ 'hello' => 'こんにちは', 'world' => '世界', ]; |
bladeファイルでは、ファイル名.要素名で呼び出せる。
1 |
@lang('message.hello') |
デフォルトの言語は config/app.phpで定義されている。
1 2 |
'locale' => 'ja' // 現在の言語 'fallback_locale' => 'ja', // 未定義の言語を指定された時にデフォルト言語 |
言語を切り替える時には、App::setLocale()を使う
http://example.com/lang/en
1 2 3 4 |
Route::get('lang/{locale}', function ($locale) { App::setLocale($locale); return view('test'); }); |
結論としては、resouces/lang/フォルダ以下に各言語のvalidation.phpやmessage.phpファイルを置いて、bladeで呼び出せばいい。