カテゴリ: CodeIgniter 更新日: 2026/06/03

CodeIgniter 4で多言語対応!日本語と英語を簡単に切り替える方法を徹底解説

CodeIgniterで日本語・英語を切り替える方法
CodeIgniterで日本語・英語を切り替える方法

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

生徒

「CodeIgniterで作ったWebサイトを、日本語だけじゃなくて英語でも表示できるようにしたいです!どうすればいいですか?」

先生

「それは『多言語対応』という機能を使えば実現できますよ。CodeIgniterには、表示するメッセージを言語ごとに自動で切り替える便利な仕組みが備わっています。」

生徒

「難しそうに聞こえますが、初心者でも設定できますか?」

先生

「大丈夫です。設定ファイルの書き方や、言葉を保存する場所の決まりを覚えれば、誰でも簡単に切り替えられるようになります。一緒に見ていきましょう!」

1. CodeIgniterの多言語対応(Language)とは?

1. CodeIgniterの多言語対応(Language)とは?
1. CodeIgniterの多言語対応(Language)とは?

Webサイトを見ていると、ボタン一つで「日本語」から「English」に切り替わるサイトがありますよね。これをプログラミングの世界では「多言語対応(たげんごたいおう)」「国際化(i18n)」と呼びます。CodeIgniter(コードイグナイター)というPHPのフレームワークには、この機能を簡単に実装するための「Language(ランゲージ)機能」が標準で備わっています。

フレームワークとは、Webアプリを効率よく作るための「道具箱」のようなものです。CodeIgniterはその中でも軽量で、初心者にも扱いやすいのが特徴です。多言語対応を使うと、例えば「こんにちは」という言葉をプログラムの中に直接書くのではなく、専用の辞書ファイルに「日本語なら『こんにちは』、英語なら『Hello』」と登録しておき、状況に合わせて自動で呼び出すことができるようになります。

2. まずは基本の設定!「今何語なのか」を決めよう

2. まずは基本の設定!「今何語なのか」を決めよう
2. まずは基本の設定!「今何語なのか」を決めよう

プログラムが「今は日本語で表示すべきか、英語で表示すべきか」を判断するためには、まず設定ファイルを編集する必要があります。CodeIgniter 4では、app/Config/App.php というファイルがその役割を担っています。

このファイルの中にある $defaultLocale という項目を探してみましょう。ここがWebサイトの「標準の言語」になります。日本向けのサイトであれば、ここを「ja(日本語)」に設定するのが一般的です。


// app/Config/App.php の中身を書き換えます
public string $defaultLocale = 'ja'; // 初期設定を日本語にする

public array $supportedLocales = ['ja', 'en']; // 対応する言語を登録する

ロケール(Locale)とは、言語や地域の設定を指す言葉です。日本語は「ja」、英語は「en」という短い記号で表されます。このように設定しておくことで、システム全体が「まずは日本語を基本として動くんだな」と理解してくれます。

3. 言葉の辞書「言語ファイル」を作ってみよう

3. 言葉の辞書「言語ファイル」を作ってみよう
3. 言葉の辞書「言語ファイル」を作ってみよう

設定が終わったら、次は実際に表示したい言葉をまとめた「辞書」を作ります。CodeIgniterでは、app/Language というフォルダの中に言語ごとのフォルダを作って管理します。

例えば、日本語用の辞書は app/Language/ja、英語用の辞書は app/Language/en という場所に保存します。その中に、PHPのファイルを作成します。今回は「メッセージ」を管理する Msg.php というファイルを作ってみましょう。

日本語用ファイルの内容(app/Language/ja/Msg.php):


return [
    'welcome' => 'ようこそ!私たちのサイトへ',
    'login'   => 'ログインしてください',
    'logout'  => 'ログアウト',
];

英語用ファイルの内容(app/Language/en/Msg.php):


return [
    'welcome' => 'Welcome to our website!',
    'login'   => 'Please login',
    'logout'  => 'Logout',
];

このように、「キー(名前)」「値(実際の言葉)」をセットにして書くのがルールです。'welcome' という名前を呼べば、日本語なら「ようこそ!」、英語なら「Welcome!」が取り出せるという仕組みです。パソコンを初めて触る方でも、エクセルの表のように左側に名前、右側に言葉を書くと考えれば分かりやすいはずです。

4. 画面に翻訳された言葉を表示する方法(lang関数)

4. 画面に翻訳された言葉を表示する方法(lang関数)
4. 画面に翻訳された言葉を表示する方法(lang関数)

辞書ができたら、いよいよ画面(ビュー)にその言葉を表示させてみましょう。CodeIgniterでは lang() という特別な命令を使います。これを関数(かんすう)と呼び、特定の仕事をしてくれる便利な魔法のようなものです。

使い方はとても簡単です。lang('ファイル名.キー名') という形式で書きます。先ほど作った Msg.phpwelcome を表示したい場合は、次のようになります。


<h1><?= lang('Msg.welcome') ?></h1>
<p><?= lang('Msg.login') ?></p>

このコードを書いてブラウザで実行すると、現在の設定が日本語なら「ようこそ!」と表示されます。HTML(エイチティーエムエル)はWebページの骨組みを作る言葉で、その中に というPHPの書き方を混ぜることで、中身を動的に変えることができます。

5. 言語を切り替えるプログラムの仕組み

5. 言語を切り替えるプログラムの仕組み
5. 言語を切り替えるプログラムの仕組み

サイトを訪れた人が「英語で見たい!」と思った時、どうやって切り替えればいいのでしょうか。一番簡単な方法は、URL(サイトの住所)に言語の情報を混ぜることです。例えば example.com/en/home のように、先頭に「en」を付ける方法です。

プログラムの中で一時的に言語を切り替えたい場合は、サービスロケールを操作します。これをコントローラーという、全体の司令塔の役割をするファイルで行います。コントローラーは、ユーザーからの命令を受け取って、どの画面を出すか判断する重要な場所です。


// 言語を強制的に切り替える例
$language = \Config\Services::language();
$language->setLocale('en'); // ここで英語にセット!

echo lang('Msg.welcome'); // 出力結果は「Welcome to our website!」

実行結果は以下のようになります。


Welcome to our website!

このように setLocale(セット・ロケール)という命令を使うと、その瞬間からプログラムが参照する辞書が英語に切り替わります。スイッチをパチっと切り替えるようなイメージですね。

6. 複雑な文章に対応する「変数」の使い方

6. 複雑な文章に対応する「変数」の使い方
6. 複雑な文章に対応する「変数」の使い方

時には、「〇〇さん、こんにちは!」のように、一部だけ名前を入れたい場合もありますよね。多言語対応では、文章の中に変数(へんすう)を埋め込むこともできます。変数とは、値を入れておくための「箱」のことです。

まず、辞書ファイルの方に {0} という記号を書いておきます。これが「ここに後で何か入れるよ」という目印になります。


// app/Language/ja/Msg.php の中に追記
'hello_user' => '{0}さん、こんにちは!',

// app/Language/en/Msg.php の中に追記
'hello_user' => 'Hello, {0}!',

表示する時は、lang() 関数の2番目の引数に、入れたい名前を渡します。プログラミングでは、カンマ , で区切って情報を追加することを「引数(ひきすう)を渡す」と言います。


// 「田中さん」という名前を入れて表示する
echo lang('Msg.hello_user', ['田中']);

実行結果(日本語設定の場合):


田中さん、こんにちは!

これなら、ユーザーごとに名前を変えつつ、言語も自動で切り替えることができるので、とてもスマートなプログラムになります。

7. ブラウザの言語を自動で判別する機能

7. ブラウザの言語を自動で判別する機能
7. ブラウザの言語を自動で判別する機能

最新のWebサイトでは、ユーザーが何も設定しなくても、ブラウザの設定を見て自動で「この人は英語圏の人だな」と判断してくれることがあります。CodeIgniter 4にもその機能があります。

再び app/Config/App.php を開いてみましょう。その中にある $negotiateLocale という項目を true に書き換えるだけです。Boolean(ブーリアン)という型で、true は「はい(有効)」、false は「いいえ(無効)」を意味します。


// ブラウザの言語設定を自動で読み取る
public bool $negotiateLocale = true;

これを有効にすると、アメリカのブラウザを使っている人には英語、日本のブラウザを使っている人には日本語が、最初から選ばれた状態で表示されます。おもてなしの心が詰まった機能ですね!

8. フォルダ構造を整理してミスを防ごう

8. フォルダ構造を整理してミスを防ごう
8. フォルダ構造を整理してミスを防ごう

最後に、多言語対応を進める上での注意点をお話しします。多言語サイトは、ページ数が増えるほど管理が大変になります。ファイル名やフォルダ名が一文字でも違うと、パソコンは「辞書が見つかりません!」と機嫌を損ねてエラーを出してしまいます。

ディレクトリ(フォルダ)の構造をもう一度確認しましょう。

  • app/Language/ja/ (日本語用のファイル置き場)
  • app/Language/en/ (英語用のファイル置き場)
  • app/Language/zh-CN/ (中国語など、他の言語を増やす時も同様)

このように、決められた場所に正しく配置することが、プログラミング未経験から上達するための第一歩です。パソコン操作に慣れていない方は、まず「大文字と小文字を間違えない」「半角英数字で書く」という基本を意識してみてください。これだけで、エラーの半分以上は防ぐことができます。CodeIgniterのLanguage機能を使って、世界中の人に届くWebサイト制作に挑戦してみましょう!

カテゴリの一覧へ
新着記事
New1
Laravel
Laravelのルーティングでサブドメインを使う方法!初心者向けにやさしく解説
New2
Laravel
Laravelでマルチ言語ルートを設定する方法!ロケールごとのprefixで簡単管理
New4
Laravel
Laravelのインストール方法まとめ!ComposerとLaravel Installerの使い方
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのインストール方法まとめ!ComposerとLaravel Installerの使い方
No.2
Java&Spring記事人気No2
Symfony
SymfonyのRemember Me機能を完全解説!初心者でもわかるログイン保持の仕組み
No.3
Java&Spring記事人気No3
Laravel
LaravelのFeatureテストとUnitテストの違いを理解しよう
No.4
Java&Spring記事人気No4
Laravel
Laravelでルートに中間処理を追加する方法!ミドルウェア活用ガイド
No.5
Java&Spring記事人気No5
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.6
Java&Spring記事人気No6
Laravel
Laravelでドメインルートを使う方法!マルチドメイン対応を初心者向けに解説
No.7
Java&Spring記事人気No7
CodeIgniter
CodeIgniterで多言語対応(Language)を徹底解説!言語切り替え機能を実装
No.8
Java&Spring記事人気No8
CodeIgniter
CodeIgniterでファイルアップロードとストレージ管理をマスター!初心者向け完全ガイド