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

CodeIgniterの多言語対応を完全攻略!初心者でも翻訳文字列を表示できる基本ガイド

CodeIgniterで翻訳文字列を表示する基本的な書き方
CodeIgniterで翻訳文字列を表示する基本的な書き方

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

生徒

「CodeIgniterで作ったサイトを、日本語と英語の両方で表示させたいんです。どうすればいいですか?」

先生

「それは『多言語対応(Language)』という機能を使えば実現できますよ。画面に表示する文字を直接書かずに、翻訳用のファイルから呼び出す仕組みです。」

生徒

「難しそうですね…。具体的にはどうやって書き換えるんですか?」

先生

「基本さえ覚えれば簡単です。まずは翻訳文字列を表示する基本的な書き方から一緒に勉強していきましょう!」

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

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

CodeIgniter(コードイグナイター)には、ウェブサイトを複数の言語に対応させるための「Language(ランゲージ)機能」が備わっています。多言語対応とは、アクセスした人の設定やボタン一つで、日本語のサイトを英語や中国語に切り替えて表示する仕組みのことです。

通常、Webページを作るときは「こんにちは」といった文字を直接プログラムの中に書き込みます。しかし、これでは英語サイトを作りたいときに、すべてのファイルを書き直さなければなりません。そこで、文字の部分だけを「別ファイル」に切り出しておき、状況に応じて読み込むファイルを切り替えるのがこの機能の役割です。

プログラミングの世界では、この仕組みを「国際化(i18n)」と呼ぶこともあります。初心者の方には少し難しい言葉かもしれませんが、「辞書を入れ替えて表示を変える魔法」だと考えてください。

2. 翻訳の仕組みを「レストランのメニュー」で例えると?

2. 翻訳の仕組みを「レストランのメニュー」で例えると?
2. 翻訳の仕組みを「レストランのメニュー」で例えると?

パソコンを触ったことがない方でもイメージしやすいように、レストランのメニューで例えてみましょう。通常のプログラムは、メニュー表に「ハンバーグ 1000円」と直接マジックで書き込んでいる状態です。これでは外国人のお客さんが来たときに、新しいメニュー表を最初から作り直さなければなりません。

一方で、CodeIgniterの多言語対応は、メニュー表には「料理番号1番」とだけ書いておき、それとは別に「日本語の注文表」と「英語の注文表」を用意するイメージです。

  • 日本語の注文表: 1番 = ハンバーグ
  • 英語の注文表: 1番 = Hamburger Steak

このようにしておけば、お客さんが日本人のときは日本語の注文表を参照し、外国人のときは英語の注文表を参照するだけで、同じメニュー表を使い回すことができます。この「注文表」にあたるのが、CodeIgniterの言語ファイル(Language File)です。

3. 翻訳ファイルを準備する場所とルール

3. 翻訳ファイルを準備する場所とルール
3. 翻訳ファイルを準備する場所とルール

CodeIgniterで翻訳を行うには、まず「どの言語を話すか」を整理するためのフォルダを作る必要があります。初心者の方が最初につまずきやすいポイントですが、決まった場所にファイルを置くだけなので安心してください。

CodeIgniter 4の場合、設定は app/Language というフォルダの中に作ります。ここに「ja(日本語用)」や「en(英語用)」といったフォルダを作成し、その中に翻訳データを書き込んだPHPファイルを用意します。このファイルの中には、先ほどの「料理番号」と「料理名」のようなペアをたくさん書いていくことになります。

PHPファイルとは、プログラムが書かれたメモ帳のようなものだと考えてください。特別なソフトは必要なく、パソコン標準のテキストエディタでも編集可能です。ファイル名は、中身が何に関する翻訳なのかがわかるように「Success.php」や「Errors.php」のように名前をつけます。

4. 翻訳データの基本的な書き方

4. 翻訳データの基本的な書き方
4. 翻訳データの基本的な書き方

それでは、実際に翻訳ファイルの中身をどのように書くのか見ていきましょう。ここでは、日本語用の設定ファイルを作成する例を紹介します。コードの書き方には決まりがあり、return(リターン)という言葉を使って、リストを返してあげる形式をとります。

下記のコードは、システム内で使う「挨拶」や「説明」を定義したシンプルな例です。左側に「ラベル(名前)」、右側に「実際に表示したい文字」を並べて書きます。


// app/Language/ja/Welcome.php の中身
return [
    'hello'       => 'こんにちは、世界!',
    'instruction' => '多言語対応の学習を始めましょう。',
    'goodbye'     => 'さようなら!',
];

このコードの中にある => という記号は、「矢印の左側にある名前を、右側の言葉に置き換える」という意味を持っています。これで、プログラム側から「Welcomeファイルのhelloを表示して」と命令すれば、自動的に「こんにちは、世界!」が表示されるようになります。

5. 画面に翻訳文字列を表示する「lang関数」

5. 画面に翻訳文字列を表示する「lang関数」
5. 画面に翻訳文字列を表示する「lang関数」

翻訳ファイルの準備ができたら、次はそれを画面(ビュー)に表示させる番です。ここで登場するのが lang()(ラング関数)という命令です。関数とは、特定の作業をしてくれる「魔法の呪文」のことです。

lang() 関数を使うときは、かっこ () の中に「ファイル名.ラベル名」という形で指定します。これにより、CodeIgniterが自動的に適切な言語ファイルを探し出し、中身を取り出してくれます。

実際のHTML(ウェブサイトの見た目を作るコード)の中では、次のように記述します。PHPの命令を実行するために、<?php ... ?> という記号で囲むのがルールです。


<div class="container">
    <h1><?php echo lang('Welcome.hello'); ?></h1>
    <p><?php echo lang('Welcome.instruction'); ?></p>
</div>

実行結果は以下のようになります。プログラムが自動的に日本語のファイルから文字を引っ張ってきてくれます。


<div class="container">
    <h1>こんにちは、世界!</h1>
    <p>多言語対応の学習を始めましょう。</p>
</div>

6. 翻訳の中に名前などを入れる「変数」の使い方

6. 翻訳の中に名前などを入れる「変数」の使い方
6. 翻訳の中に名前などを入れる「変数」の使い方

「こんにちは、〇〇さん!」のように、相手の名前によって一部の文字だけを変えたい場合もありますよね。これを動的な翻訳と呼びます。CodeIgniterでは、翻訳ファイルの中に「ここは後で入れ替えるよ」という目印を置くことができます。

目印には {0}{1} といった番号を使います。プログラミングでは、数字は0から数え始めるのが一般的なので、1番目は0、2番目は1となります。これを「プレースホルダー」と呼びます。プレースとは「場所」、ホルダーは「保持するもの」という意味です。


// app/Language/ja/User.php の中身
return [
    'greet' => 'ようこそ、{0}さん!あなたは{1}人目の訪問者です。',
];

表示するときは、lang() 関数の2番目の引数として、入れ替えたい文字のリストを渡してあげます。少し複雑に見えますが、パズルのピースをはめるような感覚です。


// 画面での表示コード
echo lang('User.greet', ['田中', 150]);

この結果、画面には次のように表示されます。田中さんという名前と、150という数字がうまく組み込まれましたね。


ようこそ、田中さん!あなたは150人目の訪問者です。

7. 言語を切り替える設定の基本

7. 言語を切り替える設定の基本
7. 言語を切り替える設定の基本

ここまで「表示する方法」を学びましたが、そもそもシステムが「今は日本語を表示すべきか、英語を表示すべきか」をどうやって判断しているのかを知る必要があります。CodeIgniterの設定ファイルには、標準で使用する言語を指定する項目があります。

設定は app/Config/App.php というファイルの中にあります。ここにある $defaultLocale という設定値を書き換えることで、サイト全体の基本言語を変更できます。例えば ja に設定すれば日本語、en に設定すれば英語が優先的に使われるようになります。

また、プログラムの途中で一時的に言語を切り替えることも可能です。例えば、ユーザーが「English」というボタンを押した瞬間に、表示を切り替える処理などを作ることができます。これを制御するのが Services::language() という機能です。初心者のうちは、「設定ファイルで大元の言語を決めているんだな」と覚えるだけで十分です。

8. 翻訳ファイルが見つからないときの動作

8. 翻訳ファイルが見つからないときの動作
8. 翻訳ファイルが見つからないときの動作

もし、翻訳ファイルに存在しないラベルを指定してしまったらどうなるでしょうか?プログラムがエラーで止まってしまうと困りますよね。CodeIgniterはとても賢いので、もし指定した翻訳が見つからない場合は、入力した「ファイル名.ラベル名」という文字列をそのまま画面に表示してくれます。

例えば、lang('Main.title') と書いたのに、ファイルに title が定義されていなかった場合、画面にはそのまま「Main.title」と表示されます。これにより、開発者は「あ、翻訳を書き忘れたな」とすぐに気づくことができます。

また、日本語のファイルにはあるけれど、英語のファイルには翻訳を書き忘れた、という場合もあります。その際は、システムが「フォールバック(代わりの手段)」として、デフォルトで設定されている言語の文字を探しに行ってくれます。非常に親切な設計になっています。

9. 多言語対応をマスターするための第一歩

9. 多言語対応をマスターするための第一歩
9. 多言語対応をマスターするための第一歩

プログラミング未経験の方が、多言語対応を使いこなすためのコツは、一気にすべてを覚えようとしないことです。まずは「直接文字を書かずに、lang関数を使う」という習慣をつけることから始めてみましょう。

最初から英語対応をする必要はありません。まずは日本語だけのサイトを作る場合でも、この機能を使って文字を別ファイルにまとめておくと、後から「サイトのタイトルを全部変えたい」と思ったときに、1箇所のファイルを直すだけで済むようになります。これを保守性(メンテナンスのしやすさ)が高いと言います。プロのエンジニアは、将来の修正を楽にするために、このような工夫を常に積み重ねています。

今回学んだ lang() 関数の使い方をマスターすれば、あなたの作るウェブサイトは世界中の人に届けられる準備が整ったことになります。焦らず、一つ一つのコードを実際に打ち込んで、文字が変わる楽しさを体験してみてください。

カテゴリの一覧へ
新着記事
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でルートに中間処理を追加する方法!ミドルウェア活用ガイド
No.4
Java&Spring記事人気No4
Laravel
Laravelでドメインルートを使う方法!マルチドメイン対応を初心者向けに解説
No.5
Java&Spring記事人気No5
Laravel
LaravelのFeatureテストとUnitテストの違いを理解しよう
No.6
Java&Spring記事人気No6
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.7
Java&Spring記事人気No7
CodeIgniter
CodeIgniterで多言語対応(Language)を徹底解説!言語切り替え機能を実装
No.8
Java&Spring記事人気No8
CodeIgniter
CodeIgniterでファイルアップロードとストレージ管理をマスター!初心者向け完全ガイド