| この記事の要点 |
|---|
|
Laravelの多言語化に関する記事です。
メッセージファイルの配置
以下は resources/lang を使用する旧構成の例です。Laravel 13 の新規構成ではプロジェクト直下の lang を使用します。既存プロジェクトを保守する場合は、使用中のLaravelと翻訳ファイルの配置を先に確認してください。
以下の構成を参考にして下さい。
|
/resources |
上記の例では「messages.php」としていますが、用途によりファイルを分割して任意の名前を付けて下さい。
メッセージファイルの中身は以下の様に連想配列として格納します。
|
<?php |
言語設定
デフォルトの言語は「config/app.php」の「locale」にて指定されていますが、今回はURLにより言語を分離させます。
以下のように実装してみましょう。
|
Route::get('index/{locale}', function ($locale) { |
「index」の後に指定されたロケールにより使用する言語が異なるようになります。
選択した言語に翻訳キーが見つからない場合のフォールバック言語は、config/app.php の fallback_locale で指定します。以下はその設定例です。
|
'fallback_locale' => 'en', |
言語の表示
Bladeテンプレートエンジンを使用している場合は以下の表記で翻訳文字を表示できます。
|
{{ __('messages.password') }} @lang('messages.password') |
Bladeテンプレートエンジンを使用していない場合は以下の表記を。
|
echo __('messages.password'); |
Laravel 13での設定と動作確認
旧例をそのまま新規プロジェクトへコピーせず、まず翻訳ファイルの配置を合わせます。Laravel 13の初期構成にはlangディレクトリがないため、次のコマンドで作成します。日本語の独自メッセージは自分でlang/jaに追加してください。
php artisan lang:publishlang/ja/messages.phpに、表示したいキーをPHP配列で定義します。既存のpassword/resetの例と同じ仕組みです。
<?php
return [
'welcome' => 'ようこそ',
];URLの言語指定を使う場合は、対応している値だけを許可してからロケールを切り替えます。次はroutes/web.phpに置く、ja/enだけを受け付ける例です。lang/en/messages.phpにもwelcomeを定義してから試してください。
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Route;
Route::get('/greeting/{locale}', function (string $locale) {
if (!in_array($locale, ['ja', 'en'], true)) {
abort(400);
}
App::setLocale($locale);
return __('messages.welcome');
});翻訳されないときの確認順
- /greeting/jaで「ようこそ」が表示されるか確認します。zzなど許可していない値は400になります。
- messages.welcomeがそのまま表示される場合は、ディレクトリの言語名・messages.phpというファイル名・welcomeというキーを照合します。日本語の例はjaで統一します。
- 英語だけにあるキーでfallback_localeの動作を確認します。fallbackは未対応のURL値を検証する仕組みではありません。
- App::setLocaleはそのリクエストの言語を変えます。次のリクエストにも言語を引き継ぐには、URLやセッションから読み取り、ミドルウェアなどで毎回設定する設計が必要です。
設定を変更したのに古い値が使われる場合は、設定キャッシュとデプロイ手順を確認します。Blade側の取得例や既存の翻訳ファイルは、上の節もあわせて参照してください。
仕様確認: Laravel 13公式ドキュメント: Localization(2026年10月確認)。
子ページはありません
- インストールと設定
- クイックスタート & チュートリアル(初心者向け)
- クイックスタート & チュートリアル(中級者向け)
- ルーティング
- Bladeテンプレート(ビュー/レイアウト)
- コントローラー
- マイグレーションとテーブル定義
- データベースの設定
- Eloquentモデル (ORM)
- SQLとクエリビルダー
- バリデーション
- .envファイルの設定値へのアクセス
- 動作環境による分岐処理
- configフォルダ配下の設定値へのアクセス
- assetヘルパーを利用したpublicフォルダへのアクセス
- storageフォルダへのアクセス
- アプリケーション名の変更
- メンテナンス
- ログイン画面(認証システム)の作成
- ログインの必須化
- ログインユーザー情報の取得
- ルートの認証化
- 本番サーバーへのデプロイ方法
- 多言語化
- csrf_field
- ファイルのダウンロード
- CSVのアップロードおよび読み込み(maatwebsite/excel)
- ページタイトルの設定
- コマンド一覧
- エラー一覧
- SQLの実行ログ出力方法
- キャッシュのクリア
- Selectの結果の最初もしくは最後に任意の値を追加する方法
- ajaxでPOST通信する際の注意点
- ソーシャルログインの実装
- セッション情報の確認
- ログイン、ユーザー登録、パスワードリセット後のリダイレクト先の変更方法
- redirectやreturn viewにメッセージを付与する方法
- クッキー(cookie)の設定と取得
- クラスの再読み込み
- csrfの有効時間を変更する方法
- ViewComposerを用いてviewに共通の値を付与する方法
- View::shareを用いて共通の値を各ビューに渡す方法
- ミドルウェアを用いた処理の共通化
- Middleware内でAuth::check()などを使用する方法
- Controller以外でリダイレクトする方法
- セッションの値の取得/保存/更新/削除
- $requestの値を変更する方法
- 常時SSL化
- ページング(ページネーション)をする方法
- vue.jsとの連携
- Vue.jsと連携するSPA実行環境構築
- .envの値をvue.jsで参照する方法
- vue.jsを本番環境にリリースする方法
- could not find driver(Windows, MySQL編)
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- プロジェクトをTomcatプロジェクトとして認識させる方法 2026-10-07 22:32:50
- MySQLの1366 Incorrect string value|Laravelの文字コード・絵文字エラー 2026-10-07 21:54:03
- curlの証明書ホスト名不一致|旧エラー51・現行60の確認と対処 2026-10-07 21:54:03
- LaravelのMassAssignmentException|fillableの原因と安全な対処 2026-10-07 21:54:03
- Eclipse で Tomcat の起動ログがコンソールに出ない時の確認手順 2026-10-07 21:54:02
- MySQLにおける中央値(Median)の導き方(バージョン8未満) 2026-10-07 13:49:45
- getInputForward 2026-10-07 13:41:15
- JSONから配列に変換 2026-10-07 13:41:15
- ビューから値をモデルに格納しコントローラーで受け取る方法 2026-10-07 13:23:41
- Laravelのテーブル作成と定義変更|マイグレーション・up/down・注意点 2026-10-07 13:23:41
- NumPy 配列に要素を追加する方法 (append / concatenate) 2026-10-07 13:23:41
- MariaDB・MySQLで現在日時を取得する方法|NOW・タイムゾーン・保存型 2026-10-07 13:13:36
- 【django】テンプレートで定数を使用する方法 2026-10-07 13:10:15
- Spring BootにおけるApplication.propertiesの環境依存設定の分割方法 2026-10-07 12:09:35
- Not supported for DML operations【Springエラー】 2026-10-07 11:09:38