カテゴリ: Laravel 更新日: 2026/06/16

Laravelの多言語対応(ローカリゼーション)入門!言語ファイルの作成と使い方

Laravelで言語ファイルを作成する方法(`resources/lang/xx`)
Laravelで言語ファイルを作成する方法(`resources/lang/xx`)

先生と生徒の会話形式で理解しよう

生徒

「Webサイトを日本語だけでなく、英語でも表示させたいのですが、何か良い方法はありますか?」

先生

「Laravelにはローカリゼーションという機能があります。これを使えば、閲覧者の設定に合わせて表示する言葉を簡単に切り替えられますよ。」

生徒

「難しそうですね。プログラミングが初めてでも、自分でファイルを作って設定できるものなのでしょうか?」

先生

「大丈夫です。決まった場所に言葉のリストを作るだけなので、基本さえ覚えれば簡単です。一緒に進めていきましょう!」

1. 多言語対応(ローカリゼーション)とは?

1. 多言語対応(ローカリゼーション)とは?
1. 多言語対応(ローカリゼーション)とは?

Webサイトやアプリケーションを、日本語、英語、中国語など、複数の言語で表示できるようにすることを多言語対応、またはIT用語でローカリゼーション(Localization)と呼びます。略して「L10n」と書かれることもあります。

通常、HTMLに直接「こんにちは」と書いてしまうと、そのサイトは世界中の誰が見ても「こんにちは」としか表示されません。しかし、Laravelの機能を使うと、「この場所には『あいさつ』を表示してね」と予約しておくことができます。すると、日本人が見れば「こんにちは」、アメリカ人が見れば「Hello」と自動で切り替えて表示することが可能になります。

これを行うには、まず「どの単語をどの言葉に変換するか」をまとめた辞書のような役割を持つ言語ファイルを作成する必要があります。まずはこの仕組みの全体像を理解することから始めましょう。

2. 言語ファイルを保存する場所を確認しよう

2. 言語ファイルを保存する場所を確認しよう
2. 言語ファイルを保存する場所を確認しよう

Laravelで多言語対応を行う際、最も大切なのがファイルの保存場所です。パソコンの操作に慣れていない方でも、決まったフォルダの中にファイルを入れるだけなので安心してください。基本的には、プロジェクトの中にある resources/lang というフォルダの中に言語別のフォルダを作っていきます。

例えば、日本語用のファイルを作りたい場合は resources/lang/ja フォルダを作成し、英語用のファイルを作りたい場合は resources/lang/en フォルダを作成します。この jaen という名前は言語コードと呼ばれ、世界共通のルールで決まっています。

最近のLaravelのバージョンによっては、初期状態で lang フォルダが表に見えていない場合があります。その場合は、専用の命令を使ってフォルダを生成することもありますが、基本的にはこのフォルダ構成が多言語化の心臓部になると覚えておきましょう。

3. PHPファイル形式で言語リストを作成する方法

3. PHPファイル形式で言語リストを作成する方法
3. PHPファイル形式で言語リストを作成する方法

言語ファイルにはいくつか種類がありますが、最も一般的で使いやすいのが、PHPの配列(はいれつ)という仕組みを使った形式です。配列とは、複数のデータをまとめて管理するための箱のようなものです。

具体的な書き方は、まず return [ ] ; という枠組みを書き、その中に「キー(識別名)」と「値(表示したい文字)」をペアにして並べていきます。例えば、ログインボタンの文字を登録する場合は、 'login' => 'ログイン' のように書きます。左側がプログラムから呼び出すための名前で、右側が実際に画面に出る言葉です。

それでは、実際に resources/lang/ja/messages.php というファイルを作成したと仮定して、中身を書いてみましょう。


return [
    'welcome' => 'ようこそ、私たちのサイトへ!',
    'contact' => 'お問い合わせはこちら',
    'submit' => '送信する',
];

このように記述することで、プログラム側から welcome というキーワードを呼び出すだけで、自動的に「ようこそ、私たちのサイトへ!」という日本語が表示されるようになります。

4. 実際に画面で言葉を表示させてみよう

4. 実際に画面で言葉を表示させてみよう
4. 実際に画面で言葉を表示させてみよう

言語ファイルが準備できたら、次はそれをHTML(正確にはLaravelのBladeテンプレート)の中で表示させる方法を学びます。Laravelには、翻訳された文字を表示するための便利な記法が用意されています。

最もよく使われるのが __('ファイル名.キー') という形式です。アンダースコア( _ )を二つ続けて書くのがポイントです。例えば、先ほど作った messages.php の中の welcome を表示したい場合は、 __('messages.welcome') と記述します。

では、実際のHTMLファイル(Bladeファイル)の中での書き方を見てみましょう。


<div class="container">
    <h1>{{ __('messages.welcome') }}</h1>
    <p>{{ __('messages.contact') }}</p>
    <button class="btn btn-primary">{{ __('messages.submit') }}</button>
</div>

このように {{ }} という波括弧で囲むことで、Laravelが自動的に言語ファイルを読み込み、適切な言葉に置き換えて画面に出力してくれます。プログラムに慣れていない人でも、この「キーワードを呼び出す」という感覚さえ掴めれば、自由にサイトの文字を管理できるようになります。

5. パラメータを使って文章の一部を変える方法

5. パラメータを使って文章の一部を変える方法
5. パラメータを使って文章の一部を変える方法

ときには「〇〇さん、こんにちは!」のように、文章の一部だけを状況に合わせて変えたいことがあります。これを実現するために、言語ファイルの中にパラメータ(変数)を埋め込むことができます。

言語ファイル内では、変えたい部分を :name のようにコロンをつけて記述します。そして、表示させる側でその :name に何を入れるかを指定します。これにより、一人ひとりの名前に合わせたメッセージを表示することが可能になります。

まずは言語ファイル( resources/lang/ja/messages.php )を以下のように編集します。


return [
    'greeting' => ':nameさん、こんにちは!',
    'items_count' => '現在、:count個の商品があります。',
];

次に、表示させる側のコードです。第二引数という場所に、置き換えたい情報をセットします。


// 「田中さん、こんにちは!」と表示されます
echo __('messages.greeting', ['name' => '田中']);

// 「現在、5個の商品があります。」と表示されます
echo __('messages.items_count', ['count' => 5]);

この仕組みを使えば、単なる固定の文章だけでなく、ユーザーのデータに基づいた柔軟な多言語対応サイトが作れるようになります。

6. JSON形式で言語ファイルを管理する

6. JSON形式で言語ファイルを管理する
6. JSON形式で言語ファイルを管理する

これまでは lang/ja/messages.php のようにフォルダを分けてファイルを作る方法を説明しましたが、Laravelにはもう一つJSON(ジェイソン)形式という管理方法もあります。これは特に、英語をベースとしたサイトで非常に便利です。

JSON形式では、 resources/lang/ja.json という一つのファイルに、全ての翻訳データをまとめて書きます。最大の特徴は、ソースコードの中に直接英語を書き、それを日本語に翻訳できる点です。例えば、プログラムの中に __('Login') と書いておき、JSONファイルの中で「Loginならログインと表示する」というルールを決めます。

実際の ja.json の中身は以下のようになります。


{
    "Login": "ログイン",
    "Register": "新規登録",
    "Logout": "ログアウト"
}

JSON形式は、小規模なサイトや、翻訳対象の単語が非常に多い場合に、ファイルの見通しを良くするために使われることがあります。PHP形式とJSON形式、自分にとって分かりやすい方を選んでみてください。

7. 現在の言語設定を切り替える仕組み

7. 現在の言語設定を切り替える仕組み
7. 現在の言語設定を切り替える仕組み

最後に、システムが「今は日本語を表示するのか、それとも英語なのか」をどうやって判断しているかを知っておきましょう。Laravelの設定ファイルである config/app.php の中に、 locale という項目があります。

ここが 'ja' になっていれば日本語、 'en' になっていれば英語の言語ファイルが優先的に読み込まれます。また、ユーザーがサイト上のボタンをクリックして言語を切り替えたときに、この設定を一時的に変更するプログラムを組むことで、動的な多言語サイトが完成します。

プログラミング未経験の方にとっては、まずは resources/lang の中にフォルダを作って、 return [ ] の中に言葉を並べるという作業が第一歩です。これができれば、世界中の人々に届くWebアプリケーションを作る準備が整ったと言えるでしょう。

まとめ

まとめ
まとめ

Laravelの多言語対応(ローカリゼーション)は、グローバルなWebアプリケーション開発において欠かせない強力な機能です。今回の内容を振り返ると、まず基本となるのは言語ファイルの配置場所でした。プロジェクトのディレクトリ構造にある resources/lang フォルダの中に、言語コードごとのフォルダ( jaen など)を作成し、その中に翻訳情報を管理するPHPファイルを設置するのが王道のスタイルです。

言語ファイルの使い分けとSEOへの影響

小規模なプロジェクトや、単純な単語置換であればJSON形式が手軽ですが、大規模なシステム開発や、機能ごとに翻訳を細かく管理したい場合は、PHPファイル形式による配列管理が非常に効果的です。特に、ファイル名を auth.phpvalidation.php のように分けることで、開発効率が飛躍的に向上します。

また、多言語対応はSEO(検索エンジン最適化)の観点からも非常に重要です。検索エンジンは、ユーザーの地域や言語設定に合わせて最適なコンテンツを表示しようとします。Laravelを使って適切にローカリゼーションを行い、各言語で独自のメタタグや見出しを出力できるように設計することで、海外の検索ユーザーにもリーチできる、インデックスされやすいサイトを構築することが可能になります。

動的なメッセージと変数の活用

実際のアプリケーション運用では、静的なテキストだけでなく、ユーザー名や商品の個数といった動的な数値をメッセージに組み込む場面が多くあります。その際に役立つのがパラメータ機能です。言語ファイル側で :attribute 形式のプレースホルダを定義し、Bladeテンプレートやコントローラ側から配列で値を渡すことで、自然な文章を生成できます。

以下に、より実践的なサンプルコードを掲載します。これは、バリデーション(入力チェック)やエラーメッセージを多言語化する際の構成例です。


// resources/lang/ja/validation.php
return [
    'required' => ':attributeは必須項目です。',
    'max' => [
        'string' => ':attributeは:max文字以内で入力してください。',
    ],
    'attributes' => [
        'email' => 'メールアドレス',
        'username' => 'ユーザー名',
    ],
];

この設定を利用して、ユーザーに分かりやすいエラーメッセージを動的に表示させることができます。


メールアドレスは必須項目です。
ユーザー名は20文字以内で入力してください。

このように、Laravelのローカリゼーション機能を使いこなすことで、プログラムの修正を最小限に抑えつつ、表示内容を多言語に展開できる柔軟な設計が実現します。初心者の方は、まずは小さなメッセージから多言語化を始め、徐々にサイト全体へと広げていくと、その便利さをより深く実感できるでしょう。

先生と生徒の振り返り会話

生徒

「先生、まとめまで読んで多言語化のイメージがかなり具体的に湧いてきました!でも、実際に開発を始めるとき、一番最初に気をつけるべきポイントはどこでしょうか?」

先生

「素晴らしい意欲ですね!まずは、HTMLに直接日本語を書き込まない癖をつけることです。例えば、 <button>保存</button> と書く代わりに、必ず __('messages.save') のように書く習慣を持ちましょう。これが後から多言語化を楽にする最大のコツですよ。」

生徒

「なるほど。最初から『予約席』を作っておくような感覚ですね。PHPのファイル形式とJSON形式、どちらを使うか迷うのですが、先生のおすすめはありますか?」

先生

「初心者の方や、これから機能をどんどん増やしていく予定なら、PHPファイル形式の方が整理しやすくておすすめですよ。フォルダごとに日本語、英語と分けられるので、後から見返したときも分かりやすいんです。あと、SEOを意識するなら各言語でタイトルタグも切り替わるように設定すると、Googleなどの検索エンジンにも評価されやすくなりますよ。」

生徒

「SEOまで考慮できるなんて驚きです。パラメータを使って名前を入れる方法も、ユーザーに親切な設計になりそうですね。さっそく自分のプロジェクトで、言語ファイルを作って試してみます!」

先生

「その調子です!一度仕組みを作ってしまえば、あとは辞書に言葉を追加していくような作業になります。楽しみながら多言語対応サイトを完成させてくださいね。」

カテゴリの一覧へ
新着記事
New1
Laravel
Laravelでリダイレクトやフラッシュメッセージをテストする方法を完全解説!初心者向けLaravelテスト入門
New3
CodeIgniter
CodeIgniterのセキュリティ対策を完全ガイド!初心者が守るべき基本設定
New4
Symfony
SymfonyのEventSubscriberとEventListenerの違いを初心者向けにやさしく解説
人気記事
No.2
Java&Spring記事人気No2
Laravel
LaravelでReactコンポーネントを組み込む方法完全ガイド!JSX対応でフロントエンド連携を学ぼう
No.3
Java&Spring記事人気No3
Laravel
LaravelのRESTfulコントローラ設計のベストプラクティスを初心者向けにわかりやすく解説
No.4
Java&Spring記事人気No4
Symfony
Symfonyのインストール方法!CLIとComposerの導入手順まとめ
No.5
Java&Spring記事人気No5
Laravel
Laravelのold()関数でフォーム再表示時に値を保持する方法
No.6
Java&Spring記事人気No6
Laravel
LaravelをDockerで動かすメリットと導入の全体像を徹底解説!初心者向け入門ガイド
No.7
Java&Spring記事人気No7
Symfony
Symfonyでバリデーションをコントローラに組み込む方法を徹底解説!初心者にもやさしい入力チェックの基本
No.8
Java&Spring記事人気No8
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方