カテゴリ: CodeIgniter 更新日: 2026/04/28

CodeIgniterのバリデーションを完全日本語化!エラーメッセージのカスタマイズ方法

CodeIgniterでエラーメッセージを日本語にカスタマイズする方法
CodeIgniterでエラーメッセージを日本語にカスタマイズする方法

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

生徒

「CodeIgniterでお問い合わせフォームを作っているのですが、入力エラーが英語で出てしまいます。これを日本語にする方法ってありますか?」

先生

「CodeIgniterにはバリデーションという入力チェック機能があります。デフォルトは英語ですが、設定を変えるだけで簡単に日本語に変えることができますよ。」

生徒

「バリデーション……?難しい言葉ですね。初心者でも一人で設定できますか?」

先生

「大丈夫です!バリデーションは、日本語で言うと『入力内容が正しいか確認する作業』のことです。その手順をこれから順番に解説しますね。」

1. バリデーションとエラーメッセージの基本

1. バリデーションとエラーメッセージの基本
1. バリデーションとエラーメッセージの基本

プログラミングの世界にはバリデーション(Validation)という言葉があります。これは、ユーザーが入力したデータが「決められたルールに合っているか」をチェックする仕組みのことです。例えば、メールアドレスの欄に名前が書いてあったり、数字を入れる場所に文字が入っていたりすると、プログラムが「それは違いますよ!」と教えてくれます。この教えてくれる文章をエラーメッセージと呼びます。

PHPの人気フレームワークであるCodeIgniter(コードイグナイター)は、最初からこのチェック機能が備わっています。しかし、世界中で使われているツールなので、標準の状態ではエラーメッセージがすべて「The Username field is required.」のように英語で表示されてしまいます。日本のユーザー向けにサイトを作るなら、これを「ユーザー名は必須入力です」のように日本語で表示させたいですよね。これが今回のメインテーマです。

2. 日本語化ファイルの準備と配置場所

2. 日本語化ファイルの準備と配置場所
2. 日本語化ファイルの準備と配置場所

CodeIgniterでメッセージを日本語にするには、まず「日本語の翻訳データ」を用意する必要があります。専門用語で言語パックランゲージファイルと言ったりします。このファイルは、システムの中にある特定のフォルダに配置します。

通常、CodeIgniterのフォルダ構成の中には system/language/english というフォルダがあり、そこに英語のメッセージが入っています。日本語にするには、新しく application/language/japanese というフォルダを作成し、その中に翻訳されたファイルを保存するのが一般的なルールです。パソコンの操作に慣れていない方は、フォルダを新しく作る作業を「新しい引き出しを準備する」イメージで捉えてみてください。

3. 翻訳用ファイルのコードを書いてみよう

3. 翻訳用ファイルのコードを書いてみよう
3. 翻訳用ファイルのコードを書いてみよう

では、実際に日本語のメッセージを定義するコードを書いてみましょう。このファイルは form_validation_lang.php という名前にする必要があります。以下のコードは、入力が空っぽだった時や、文字数が足りない時に表示されるメッセージを設定する例です。$langという変数(データを入れる箱のようなもの)に、日本語をどんどん詰め込んでいくイメージです。


// application/language/japanese/form_validation_lang.php として保存します
$lang['form_validation_required'] = '{field}は必ず入力してください。';
$lang['form_validation_valid_email'] = '{field}には正しいメールアドレスの形式を入力してください。';
$lang['form_validation_min_length'] = '{field}は{param}文字以上で入力してください。';
$lang['form_validation_numeric'] = '{field}には数字だけを入力してください。';

コードの中にある {field} という部分は、後から「名前」や「メールアドレス」といった項目名に自動的に置き換わる便利な魔法の記号です。このように設定しておけば、どんな入力項目でも使い回すことができます。

4. 設定ファイル(config.php)を書き換える

4. 設定ファイル(config.php)を書き換える
4. 設定ファイル(config.php)を書き換える

ファイルを置いただけでは、プログラムはまだ「英語のファイルを使おう」としたままです。そこで、システムの全体設定を決めるconfig.phpというファイルを編集して、「これからは日本語のファイルを見てね!」と命令を出します。これを設定の反映と呼びます。

設定ファイルを開くと、言語の設定をしている箇所があります。そこを 'english' から 'japanese' に書き換えるだけです。これで、システム全体が日本語モードに切り替わります。


// application/config/config.php の中身を探してください
// $config['language'] = 'english'; ←これを下のように書き換えます
$config['language'] = 'japanese';

この一行を変えるだけで、CodeIgniterは先ほど作った japanese フォルダの中身を探しに行ってくれるようになります。非常にシンプルで分かりやすい仕組みですね。

5. コントローラーでバリデーションを実行する

5. コントローラーでバリデーションを実行する
5. コントローラーでバリデーションを実行する

準備ができたら、実際に入力チェックを行うプログラム(コントローラー)を書いてみましょう。ここでは「名前」の入力が空っぽでないか、5文字以上入っているかをチェックする例を紹介します。コントローラーとは、ユーザーの操作を受け取って、どう動くかを決める「司令塔」の役割をするプログラムのことです。


public function register() {
    // 1. バリデーションのルールを決める(名前は必須、5文字以上)
    $this->form_validation->set_rules('username', 'ユーザー名', 'required|min_length[5]');

    if ($this->form_validation->run() == FALSE) {
        // 2. チェックに失敗した場合、入力画面に戻る
        $this->load->view('my_form_view');
    } else {
        // 3. チェックに成功した場合、完了画面へ
        $this->load->view('success_view');
    }
}

このプログラムの中で set_rules という命令を使っていますね。ここで「ユーザー名」という日本語を指定しています。もし入力が空だった場合、先ほどの翻訳ファイルと組み合わさって、「ユーザー名は必ず入力してください。」という完璧な日本語メッセージが生成されます。

6. 画面(ビュー)に日本語エラーを表示する

6. 画面(ビュー)に日本語エラーを表示する
6. 画面(ビュー)に日本語エラーを表示する

最後に、ユーザーが見る画面(ビュー)にエラーメッセージを表示させるHTMLを書きましょう。CodeIgniterには、発生したすべてのエラーをまとめて表示してくれる validation_errors() という便利な機能があります。これを使うだけで、難しい条件分岐を書かなくても画面に警告を出してくれます。


<!-- ビューファイル my_form_view.php -->
<div class="alert alert-danger">
    <?php echo validation_errors(); ?>
</div>

<form action="register" method="post">
    <label>ユーザー名</label>
    <input type="text" name="username" value="">
    <input type="submit" value="送信する">
</form>

もしユーザーが何も入力せずに「送信する」ボタンを押すと、画面には次のような結果が表示されます。パソコンを触ったことがない人でも、赤い文字で日本語の警告が出れば「あ、入力を忘れたんだな」とすぐに分かりますね。


ユーザー名は必ず入力してください。
ユーザー名は5文字以上で入力してください。

7. 個別にメッセージをカスタマイズする方法

7. 個別にメッセージをカスタマイズする方法
7. 個別にメッセージをカスタマイズする方法

「全体の設定は日本語にしたけれど、このフォームの時だけは特別なメッセージを出したい!」という場合もあります。例えば、会員登録の時だけは「名前を忘れずに入れてね!」という親しみやすい言葉にしたい時です。その場合は、プログラムの中で直接メッセージを指定することも可能です。


$this->form_validation->set_rules(
    'username', 
    'ユーザー名', 
    'required',
    array('required' => '%sを忘れずに入れてね!')
);

このように書くと、特定の項目だけオリジナルのメッセージに変えることができます。%s という記号は、項目名の「ユーザー名」に置き換わります。基本は一括で日本語化しておき、こだわりたい場所だけこの方法を使うのが、プロのエンジニアもよく使うテクニックです。

8. エラーメッセージの見た目を整える

8. エラーメッセージの見た目を整える
8. エラーメッセージの見た目を整える

メッセージの内容だけでなく、見た目も重要です。ただの文字が表示されるよりも、枠線で囲まれていたり、アイコンがついていたりする方がユーザーにとって親切です。CodeIgniterでは、エラーメッセージを囲むHTMLタグを自由に設定することができます。これをデリミタ(区切り文字)の設定と言います。


// メッセージの前後を <p> タグで囲み、赤文字にする設定
$this->form_validation->set_error_delimiters('<p class="text-danger">', '</p>');

このように設定すると、出力されるエラーメッセージが自動的に <p class="text-danger">~</p> で包まれます。CSSというデザインの知識を使えば、もっとキラキラさせたり目立たせたりすることも可能です。初心者の方は、まずはこの「自動で包んでくれる機能」があることだけ覚えておけば十分です。

9. 日本語化がうまくいかない時のチェックリスト

9. 日本語化がうまくいかない時のチェックリスト
9. 日本語化がうまくいかない時のチェックリスト

「設定したはずなのに、英語のまま変わらない!」というトラブルは、初心者の方によくあります。そんな時は、焦らずに次の3点を確認してみてください。まず、フォルダ名の japanese がスペルミスしていないか。次に、config.php の設定が正しく 'japanese' になっているか。最後に、ファイル名が form_validation_lang.php と一文字も間違えずに保存されているかです。

プログラミングは、たった一文字の間違い(例えば languge と書いてしまうなど)でも動かなくなってしまうほど繊細です。でも、裏を返せば、その間違いさえ直せば必ず動きます。もしエラーが出ても「自分には向いていないんだ」と思わずに、間違い探しゲームを楽しむくらいの気持ちで挑戦してみてください。日本語化ができるようになると、自分が作ったシステムが急に「日本で動く本物のアプリ」らしく見えてきて、とても感動しますよ。

関連記事:
カテゴリの一覧へ
新着記事
New2
Symfony
SymfonyでAPI向けにカスタムエラーメッセージを返す方法を解説!初心者でも安心のバリデーション基礎
New3
Symfony
Symfonyの動的フォームフィールド追加・削除を完全ガイド!初心者でもわかるフォーム操作入門
New4
Laravel
LaravelのMailableクラスの使い方を完全解説!初心者でもできるメール送信管理
人気記事
No.1
Java&Spring記事人気No1
CodeIgniter
CodeIgniterのセッション管理を徹底解説!値を保存・取得する基本操作
No.2
Java&Spring記事人気No2
Laravel
Laravelのnow()・today()関数の使い方完全ガイド!初心者でもわかる日時処理と日付操作
No.3
Java&Spring記事人気No3
Symfony
Symfony Twig入門|条件分岐とループをやさしく理解するテンプレート活用術
No.4
Java&Spring記事人気No4
Laravel
Laravelのabort()関数でエラーを返す方法!初心者向け完全ガイド
No.5
Java&Spring記事人気No5
Laravel
Laravelの日付バリデーションの使い方を完全解説!初心者でも安心の丁寧ガイド
No.6
Java&Spring記事人気No6
Laravel
Laravelのインストール方法まとめ!ComposerとLaravel Installerの使い方
No.7
Java&Spring記事人気No7
Laravel
Laravelの@eachディレクティブで簡単に繰り返しテンプレートを表示する方法
No.8
Java&Spring記事人気No8
Laravel
LaravelのThrottleミドルウェアでアクセス制限を実装する方法!初心者向け解説