CodeIgniterで多言語対応!言語ファイル作成と管理の初心者ガイド
生徒
「先生、Webサイトを日本語だけじゃなくて、英語でも表示させたいんです。CodeIgniter(コードイグナイター)でそういうことってできますか?」
先生
「もちろんです。CodeIgniterには『Language(言語)ライブラリ』という便利な機能があって、表示するメッセージを簡単に切り替えることができるんですよ。」
生徒
「多言語対応って、プログラムを全部書き直さないといけないから大変そうなイメージがあります……。」
先生
「そんなことはありません。言語専用のファイルを作って管理するだけなので、初心者の方でも仕組みさえわかればすぐに使いこなせます。一緒に学んでいきましょう!」
1. CodeIgniterの「多言語対応」とは?
Webサイトを見ていると、ボタン一つで日本語と英語が切り替わるサイトがありますよね。これを実現するのが多言語対応(マルチリンガル)です。CodeIgniterでは、画面に表示する「こんにちは」や「送信ボタン」といった文字を、直接プログラムに書くのではなく、専用の「辞書」のようなファイルに保存しておきます。
この辞書のようなファイルのプログラミング用語を言語ファイル(Language Files)と呼びます。ユーザーが日本語を選べば日本語の辞書を引き、英語を選べば英語の辞書を引く。この仕組みを使うことで、一つのプログラムで世界中の言語に対応したサイトが作れるようになるのです。初心者の方でも、まずは「文字を別ファイルに分けるだけ」というイメージを持てば大丈夫です。
2. 言語ファイルを保存する場所(ディレクトリ構造)
パソコンを触ったことがない方にとって、ファイルがどこにあるかを理解するのはとても重要です。CodeIgniterでは、言語ファイルを保存する場所が決まっています。基本的には app/Language というフォルダの中に作成します。
ここでポイントなのが、言語ごとにフォルダを分けることです。例えば、日本語なら ja というフォルダ、英語なら en というフォルダを作ります。このように整理整頓することで、後から「あの言葉を修正したい!」と思ったときに、迷わずファイルを見つけることができます。フォルダ分けは、本棚のラベル付けのようなものだと考えてください。
3. 実際に言語ファイルを作ってみよう
それでは、具体的な作り方を解説します。言語ファイルはPHPという言葉で書かれますが、中身はとてもシンプルです。今回は、サイトの挨拶を管理する Messages.php というファイルを作ってみましょう。ファイルの中身は「キー」と「翻訳される言葉」のセットで書きます。
例えば、「welcome」というキーワードに対して、日本語ファイルでは「ようこそ」と書き、英語ファイルでは「Welcome」と書きます。こうすることで、プログラム側で「welcome」を呼び出すだけで、自動的に適切な言葉が表示されるようになります。
// app/Language/ja/Messages.php の中身
return [
'greeting' => 'こんにちは、CodeIgniterの世界へ!',
'logout' => 'ログアウトしました。',
'error' => 'エラーが発生しました。もう一度お試しください。',
];
4. 多言語対応の魔法の言葉「lang関数」
言語ファイルを作ったら、次はそれを画面に表示させる必要があります。ここで登場するのが lang() という特別な命令(関数)です。プログラミングにおいて関数とは、何かを入れると何かを返してくれる魔法の箱のようなものです。
lang() 関数の中に、「ファイル名.キーワード」という形で指定します。例えば、先ほど作った Messages.php の中にある greeting という言葉を表示したいときは、lang('Messages.greeting') と書きます。これだけで、現在設定されている言語に合わせて、正しい文字が画面に飛び出してきます。とても簡単ですね!
// 画面にメッセージを表示する例
echo lang('Messages.greeting');
こんにちは、CodeIgniterの世界へ!
5. 言語を切り替える設定方法
サイト全体の基本となる言語を何にするかは、設定ファイルで決めます。これは、テレビの初期設定で「日本語」を選ぶのと同じ作業です。設定ファイルは app/Config/App.php という場所にあります。このファイルの中にある $defaultLocale という項目を探して、値を書き換えます。
ここを 'ja' にすれば日本語が標準になり、 'en' にすれば英語が標準になります。プログラムはこの設定を見て、「今は日本語の辞書を使えばいいんだな」と判断します。初心者のうちは、ここを一度設定してしまえば、あとは言語ファイルの中身を増やすことに集中するだけでOKです。
6. 変数を使ってメッセージを動的に変える方法
ときには「田中さん、こんにちは」のように、名前の部分だけ変えたい場合がありますよね。毎回全員分のメッセージを作るのは大変です。そんな時に便利なのが、メッセージの中にプレースホルダ(仮の置き場所)を作っておく方法です。
言語ファイルの中で {0} や {1} と書いておくと、そこに好きな言葉を後から入れ込むことができます。これを活用すれば、ユーザーごとにパーソナライズされた(その人専用の)温かみのあるサイトを作ることができます。
// app/Language/ja/Messages.php
return [
'hello' => '{0}さん、今日は{1}ですね!',
];
// 実行するとき
echo lang('Messages.hello', ['田中', '良い天気']);
田中さん、今日は良い天気ですね!
7. 複数形の対応についても知っておこう
日本語にはあまり馴染みがありませんが、英語などの外国語では、物が1つのとき(単数)と、2つ以上のとき(複数)で言葉の形が変わることがあります。例えば「1 apple」と「2 apples」の違いです。CodeIgniterの言語機能は、この複雑なルールにも対応しています。
条件によって言葉を使い分ける機能を使えば、プログラミングの知識が深くなくても、文法的に正しい多言語サイトが構築できます。これはプログラミング未経験の方には少し難しく感じるかもしれませんが、「CodeIgniterは海外の言葉のルールもしっかり守れる賢い道具なんだ」と覚えておけば十分です。
8. 言語ファイルの管理を楽にするコツ
開発が進むと、言語ファイルの中身はどんどん増えていきます。数千行にも及ぶ辞書ファイルになると、管理が大変になります。コツとしては、機能ごとにファイルを細かく分けることです。例えば、ログイン関係の言葉は Auth.php、商品の説明は Products.php といった具合です。
このようにファイルを小分けにすることで、修正したい場所がすぐに見つかるようになり、ミスも減ります。これは、キッチンの引き出しを「スプーン」「フォーク」「ナイフ」で分けるのと同じ感覚です。整理整頓こそが、プログラミング上達の近道と言えるでしょう。
9. ブラウザの言語設定を自動で読み込む
最後に、少しだけ高度なテクニックを紹介します。CodeIgniterは、サイトを訪れた人が使っているブラウザ(Google ChromeやSafariなど)の設定を見て、自動的に言語を切り替える機能も持っています。これをコンテンツ・ネゴシエーションと呼びます。
アメリカからアクセスした人には最初から英語のページを、日本からアクセスした人には日本語のページを自動で見せることができます。ユーザーの手間を省く「おもてなし」の心ですね。こうした機能も、設定ファイルを一箇所書き換えるだけで有効にできるのがCodeIgniterの素晴らしいところです。
// app/Config/App.php で自動検知を有効にするイメージ
public $negotiateLocale = true;
public $supportedLocales = ['en', 'ja'];
10. 多言語化で広がるあなたのWebサイト
多言語対応ができるようになると、あなたの作ったサイトを届ける相手が日本中から世界中に広がります。最初は難しいと感じるかもしれませんが、まずは日本語のファイルを一つ作り、それを lang() 関数で表示させることから始めてみてください。文字が画面に出た時の感動は、プログラミングの醍醐味です。
コードを書くことは、新しい言葉を覚えるのと似ています。少しずつ慣れていけば、誰でも素敵なWebアプリケーションが作れるようになります。今回の言語ファイルの仕組みは、PHPや他のフレームワークでも共通する考え方が多いので、しっかり身につけておきましょう!