◀ 24.

多言語化

▶
この記事の要点
  • Laravel の多言語化(i18n)機能
  • メッセージ配置: lang/{ja,en}/messages.php(Laravel 13)。旧構成は resources/lang
  • 取得: __("messages.welcome") または @lang('...')
  • 言語切替: App::setLocale('en') / config: app.locale

 

Laravelの多言語化に関する記事です。

メッセージファイルの配置

以下は resources/lang を使用する旧構成の例です。Laravel 13 の新規構成ではプロジェクト直下の lang を使用します。既存プロジェクトを保守する場合は、使用中のLaravelと翻訳ファイルの配置を先に確認してください。

以下の構成を参考にして下さい。

/resources
    /lang
        /en
            messages.php
        /ja
            messages.php

上記の例では「messages.php」としていますが、用途によりファイルを分割して任意の名前を付けて下さい。

メッセージファイルの中身は以下の様に連想配列として格納します。

<?php
return [
    'password' => 'Passwords must be at least six characters and match the confirmation.',
    'reset' => 'Your password has been reset!',
];

 

言語設定

デフォルトの言語は「config/app.php」の「locale」にて指定されていますが、今回はURLにより言語を分離させます。

以下のように実装してみましょう。

Route::get('index/{locale}', function ($locale) {
    App::setLocale($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:publish

lang/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');
});

翻訳されないときの確認順

  1. /greeting/jaで「ようこそ」が表示されるか確認します。zzなど許可していない値は400になります。
  2. messages.welcomeがそのまま表示される場合は、ディレクトリの言語名・messages.phpというファイル名・welcomeというキーを照合します。日本語の例はjaで統一します。
  3. 英語だけにあるキーでfallback_localeの動作を確認します。fallbackは未対応のURL値を検証する仕組みではありません。
  4. App::setLocaleはそのリクエストの言語を変えます。次のリクエストにも言語を引き継ぐには、URLやセッションから読み取り、ミドルウェアなどで毎回設定する設計が必要です。

設定を変更したのに古い値が使われる場合は、設定キャッシュとデプロイ手順を確認します。Blade側の取得例や既存の翻訳ファイルは、上の節もあわせて参照してください。

仕様確認: Laravel 13公式ドキュメント: Localization(2026年10月確認)。

Post Share
子ページ

子ページはありません

同階層のページ
  1. インストールと設定
  2. クイックスタート & チュートリアル(初心者向け)
  3. クイックスタート & チュートリアル(中級者向け)
  4. ルーティング
  5. Bladeテンプレート(ビュー/レイアウト)
  6. コントローラー
  7. マイグレーションとテーブル定義
  8. データベースの設定
  9. Eloquentモデル (ORM)
  10. SQLとクエリビルダー
  11. バリデーション
  12. .envファイルの設定値へのアクセス
  13. 動作環境による分岐処理
  14. configフォルダ配下の設定値へのアクセス
  15. assetヘルパーを利用したpublicフォルダへのアクセス
  16. storageフォルダへのアクセス
  17. アプリケーション名の変更
  18. メンテナンス
  19. ログイン画面(認証システム)の作成
  20. ログインの必須化
  21. ログインユーザー情報の取得
  22. ルートの認証化
  23. 本番サーバーへのデプロイ方法
  24. 多言語化
  25. csrf_field
  26. ファイルのダウンロード
  27. CSVのアップロードおよび読み込み(maatwebsite/excel)
  28. ページタイトルの設定
  29. コマンド一覧
  30. エラー一覧
  31. SQLの実行ログ出力方法
  32. キャッシュのクリア
  33. Selectの結果の最初もしくは最後に任意の値を追加する方法
  34. ajaxでPOST通信する際の注意点
  35. ソーシャルログインの実装
  36. セッション情報の確認
  37. ログイン、ユーザー登録、パスワードリセット後のリダイレクト先の変更方法
  38. redirectやreturn viewにメッセージを付与する方法
  39. クッキー(cookie)の設定と取得
  40. クラスの再読み込み
  41. csrfの有効時間を変更する方法
  42. ViewComposerを用いてviewに共通の値を付与する方法
  43. View::shareを用いて共通の値を各ビューに渡す方法
  44. ミドルウェアを用いた処理の共通化
  45. Middleware内でAuth::check()などを使用する方法
  46. Controller以外でリダイレクトする方法
  47. セッションの値の取得/保存/更新/削除
  48. $requestの値を変更する方法
  49. 常時SSL化
  50. ページング(ページネーション)をする方法
  51. vue.jsとの連携
  52. Vue.jsと連携するSPA実行環境構築
  53. .envの値をvue.jsで参照する方法
  54. vue.jsを本番環境にリリースする方法
  55. could not find driver(Windows, MySQL編)