gettextを使用してPHPを多国語対応(windows版)

gettextは様々な環境、言語に対応した多国語対応のライブラリ。
PHPも拡張機能として標準で提供されている。
※PHPのextディレクトリにあるphp_gettext.dllが実装
※php.iniのphp_gettext.dllのコメントを予め外して置く
※PHPファイルはUTF-8に設定

カタログファイルについて
gettextでは各言語ごとに辞書ファイル(gettextではカタログと呼ぶ)を用意する。
※拡張子はpo
カタログは全て共通のファイル名。(カタログのファイル名はドメインとして後ほど設定)
カタログファイルの作成方法は後述する。

カタログファイルのディレクトリ構成
実行環境(ここではWindowsサーバー、IISを想定)では各カタログのファイルを以下に従って配置する。
例)
c:¥temp¥locale¥言語¥LC_MESSAGES¥カタログファイル
※1.c:¥temp¥localeは任意のパスを設定可能。(ドメインのパスと呼ぶ)
※2.言語は言語コード_国コード。(日本はja_JP、英語は)

PHPでの実装
PHPでは以下を各PHPの最初に挿入する。


多国語対応の文字は以下のように埋め込む

カタログの作成
カタログはpoEditで作成する。
poEditをダウンロードサイトよりダウンロード
poEditはソースファイルを解析してカタログファイルを作成する

poEditを使用してカタログファイルを作成する際には実行環境とは別に以下のディレクトリ構成で作業することを前提に説明。
c:¥workにカタログファイルを保存
c:¥work¥root以下にソースファイル(*.php)を配置

poEditを起動
スクリーンショット 2014-04-18 05.25.19

メニューの新規作成を選択
言語にカタログ作成対象の言語を指定(最初は日本語)
poedit1

カタログの設定メニューで以下を設定
「プロジェクトの名前とバージョン」任意の名称
「文字符号化法」UTF-8
「ソースコードの文字符号化法」UTF-8
それ以外はデフォルト値
poedit2

ファイルを保存
一旦、ファイルを上述のC:¥workに保存。
ファイル名はdic.poとする。(既に述べた通り、ファイル名=ドメイン名)
poedit3

カタログの設定メニューで以下を設定
「ソースの検索パスーベースのパス」ピリオド(=C:¥work)を指定。
「ソースの検索パスーパス」各ソースのフォルダの絶対パス(=root)
「ソース中のキーワード」アンダーバーを指定
poedit3

poedit4

翻訳を入力
スクリーンショット 2014-04-18 07.10.19

カタログの更新を実行するとカタログファイル「dic.mo」に反映される。

カタログファイルを以下にコピー
c:¥temp¥locale¥jp_JA¥LC_MESSAGES¥dic.mo

以上