翻訳アダプタの選択
先の例ではarrayを翻訳アダプタとしましたが、他にもいろいろな種類のアダプタがあります。以下の特徴を参考に、開発にあったアダプタを選択してください。
アダプタ名 | 翻訳ソースファイルの概要 | 特徴 |
array | phpの配列 | 翻訳対象が少ない場合に向いている。phpコード内に記述するため改修時は注意が必要。 |
csv | カンマ区切りファイル(*.csv,*.txt) | シンプルなテキストファイルで非常に高速。Unicode文字において問題が発生する可能性有り。 |
gettext | gettextのバイナリファイル(*.mo) | linuxのGNUが提供するライブラリ。非常に高速。他開発言語でも標準的に使用されている。moファイルはバイナリとなるため、翻訳ソース作成時には専用のツールが必要。 |
tmx | tmxファイル(*.tmx) | Translation Memory eXchange。翻訳アプリケーションのベンダに依存せずに翻訳メモリデータを交換するためのXML標準。XML形式のため専用ツール不要で作成できる。 |
qt | qt言語ファイル(*.ts) | さまざまなプラットフォームに対応できるアプリケーションフレームワーク。XMLフォーマット。 |
xliff | xliffファイル(*.xliff,*.mxl) | XML Localisation Interchange File Format。tmx同様、文書翻訳用のデータフォーマット。tmxよりもややシンプル。 |
以下主要なアダプタについて、作成方法を解説します。
csvアダプタ
csvの場合は言語ごとにcsvファイルを作成する必要があります。翻訳のインデックスと翻訳された語を「;(セミコロン)」で区切ります。区切り文字は後ほど解説するZend_Translate
オブジェクト生成時のオプションで変更することも可能です。
welcome;ようこそ time;今の時刻は %1$s です。
welcome;welcome time;It is %1$s now.
welcome;accueil time;C'est maintenant %1$s .
ただ、アダプタ一覧の表でも解説したように、Unicode文字で問題が発生する可能性があります。PHP自体のバグにより、CSVファイルのエンコードが開発環境のロケール設定と異なる場合に問題が発生します。このバグはPHP6.0で修正される予定です。
gettextアダプタ
getTextの場合はmoファイルというバイナリファイルが翻訳ソースとなります。これはカタログ(poファイルというテキスト編集可能なファイル)を専用のツールを使って変換したものとなります。
今回はpoEditというフリーのツールを利用し、moファイルを作成します。ただし、このツールでは翻訳された語を編集することはできますが、翻訳のインデックスキーを新規に追加することはできません。インデックスキー新規追加はpoファイルの編集で行うか、poEditのPHPソースから検出する機能を使って実施します。
[1]poEditをインストールする
公式サイトからダウンロードして適当な場所にインストールしてください。
[2]言語設定を行う
起動すると次のように言語選択画面となります。[Japanese]を選択しましょう。
[3]ヘッダー情報を入力する
初回のみカタログのヘッダーとなる情報の入力を行います。[OK]を押下します。
ヘッダ用情報入力欄です。ひとまず省略して[OK]を押下します。
poEditの画面が表示されます。
[4]プロジェクトの情報を入力する。
メニューバーから[ファイル]-[新規カタログ]を選択すると[プロジェクトの設定]画面が表示されます。これは先ほどのヘッダ初期設定と同様、これから作成するカタログのヘッダ情報となります。[情報]タブに必要な値を入力してください。[OK]を押下するとpoファイルの保存場所を聞かれますので適当な場所に保存します。
後から再度編集する場合は[カタログ]-[設定]で画面を開くことができます。
[パス]タブ、[キーワード]タブはPHPファイルから自動で翻訳のインデックスキーを抽出する際に使用します。ひとまず空欄のまま進んでください。