多言語対応:英語と日本語を自動切り替え(前編)

Pocket

CakePHPにはユーザーのブラウザ言語設定に応じて自動的に言語表示を切り替える機能があります。ここでは多言語対応の仕組みについて解説します。

参考
サイトの国際化に向けての考慮点

まずはブラウザ言語設定の変更方法を参考に日本語と英語を切り替えながらこちらの多言語対応サイトを確認してください。英語でアクセスすれば英語、日本語でアクセスすれば日本語で表示されます。これはどのように実現されているのでしょうか。

多言語対応方法

多言語対応は、まず英語でサイトを作成して、その他の言語(日本語など)の対応翻訳をカタログ化する事で対応する。

  • 自動翻訳したい文字はローカライズ関数 __() を使って書く
  • メッセージカタログファイル「xxx.mo」で対応する訳を管理

これだけでOK。

CakePHPはブラウザの言語設定に従って、__()の文字列を切り替える。ブラウザが英語設定であれば、__()関数に記述した英語がそのままレンダーされる。逆に日本語設定であれば、.moファイルに登録された翻訳結果の日本語がレンダーされる。

ローカライズ関数 __() を使って書く

多言語対応サイト
多言語対応サイト

上記の様なコンテンツをViewで記述する場合にローカライズ関数である __() を使って記述する。

<h1><?= __('Jiuzhaigou Valley and its surroundings') ?></h1>
<p><?= __('Jiuzhaigou valley is One of the most beautiful landscape region located in Northan part of Sichuan province in China. And also there are many nearby sightseeing places in the neighbourhood.') ?></p>
<ul>
<li><?= $this->Html->link(__('Rizegou Valley'), '/jiuzhaigou/rizegou')?>
<li><?= $this->Html->link(__('Zezhawagou Valley'), '/jiuzhaigou/zezhawagou')?>
<li><?= $this->Html->link(__('Shuzhenggou Valley'), '/jiuzhaigou/shuzhenggou')?>
</ul>

これでまずブラウザに英語文字列が表示されるサイトができる。

メッセージカタログファイル「xxx.mo」で対応する訳を管理

__()関数の引数の英語に対応する日本語を登録した.moファイルを作成する。

.moファイルは翻訳後言語毎に作成する必要がある。例えば日本語のカタログファイルは以下

app/Locale/jpn/LC_MESSAGES/default.mo

※jpnの部分は翻訳したい言語毎に変わります。

.moファイルを作成する手順へ続く

 

記事が役に立ったらぜひシェアをお願いします。

Pocket

One thought on “多言語対応:英語と日本語を自動切り替え(前編)”

Leave a Reply

Your email address will not be published. Required fields are marked *