frameworkでは複数言語に対応したWebサイトを作ることもできます。(I18N)」という項目でその手順が記述してあるのですが、イマイチ具体例の記述がないので分かりにくい人も多いでしょう。そこで実例を交えながら方法を書いていきたいと思います。今回、店舗サイトを日本語ベースで構築すると想定して、店舗情報ページに「店舗へのアクセス」という日本語文字列をページ上に表示するということで考えてみましょう。その場合、日本語を「ターゲット言語」とします。ターゲット言語とは、ユーザーによって切り替えるための言語設定で、アプリケーション初期構成ファイル(/protected/config/main.php)に「language」プロパティで追加します。値は言語コード(ja)と国コード(jp)を組み合わせた、ロケール文字列で指定します。array(...'language'=>'ja_jp',...);実行中でも「Yii::app()->language=‘ja_jp’;」のように他のターゲット言語に切り替えできます。一つの言語設定は「ソース言語」といって、Webサイトの大元(おおもと)の言語設定を何にしておくかを設定しておくもので、対応するターゲット言語が見つからなかったら、ソース言語の言語文字列が使われます。ソース言語は英語(en_us)に設定しておくことが推奨されています。(英語ベースで作っておくと、日本語以外の言語への翻訳者が見つかりやすいため)ソース言語は「sourceLanguage」で設定します。言語設定ができたら、多言語対応で表示させたいビューファイルにソース言語の文字列を記述します。記述の仕方にいくつかルールがあります。今回ターゲット言語である日本語(ja_jp)用に「店舗へのアクセス」と表示させたいわけですが、ビューファイルにはソース言語である英語(en_us)で「access」と書き込んでおきます。<p>access</p>当たり前ですが、これではそのまま「access」が表示されるだけです。ターゲット言語によって変換されるようにするには「Yii::t()」を追加して、翻訳される状態にしておきます。?></p>あと、「Yii::t()」にはもうひとつ引数が必要で、それが「カテゴリー」です。カテゴリーっていうと何かYiiに最初から備わっている何かのようなイメージを持ってしまいそうですが、全くあなたが自由に決めることができます。Webアプリケーション全体に関わるような文字列(loginなど)は「appカテゴリ」としたり、ユーザー情報に属するような文字列(nicknameなど)は「userカテゴリ」として指定することができます。今回の例をカテゴライズするとなると、店舗情報に属する文字列ですから「shopinfo」カテゴリで定義しておきたいと思います。「access」は「店舗へのアクセス」に変換しとけばカテゴリをわざわざ指定しなくても十分だろうと考えますよね。いった場合はどうでしょう?店舗情報ページでは「access」を「店舗へのアクセス」と表示したいが、その他のページでは「access」を単に「アクセス」と表示したい。おや!?どちらも「access」を翻訳したいのですが、表示内容が違いますね。このような時に「店舗情報」カテゴリとして「shopinfo」、「共通」カテゴリとして「app」としておけば、異なる文字列で表示ができるわけです。?>3.翻訳用ファイルを作成する最後に翻訳用の配列定義ファイルを作成します。ファイル配置先やファイル名には規則があって、以下のようになっています。/messages/(ロケールID)/(カテゴリ名).php今回は日本語ロケール(ja_jp)で「shopinfo」カテゴリに属するので、次のようなファイル名でPHPファイルを作成します。するプログラムにします。array('access'=>'店舗へのアクセス',...);?>appカテゴリ用も用意したい場合は「/messages/ja_jp/app.php」を作成して上と同じような形式で翻訳用配列を定義します。ブラウザでアクセスすると、ちゃんと「店舗へのアクセス」で表示されるようになっているはずです。分かってしまえば実に簡単ですね。コメントをキャンセルメールアドレスが公開されることはありません。Webサイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。田舎に生まれ育ち東京へ。技術はDTPデザインからプログラミングまで、インフラはCD-ROM全盛からクラウドサーバーまで、いろいろなビジネスを作り、関わってきました(知見を生かして専門学校の講師も3年ほど)。今ではAWSで月間100万PVを超えるサービスを制作・運営しながらさらなるノウハウを蓄積中。このサイトではビジネスをITコンサルタント視点で考え、感じた知見や経験が世の中のお役に立てば、という視点で無料記事として公開しています。最近は機械学習による仕事の効率化を研究中。reserved.代表者のライフハックブログ。