Zend_Translate は、さまざまなアダプタを使用して翻訳を行えます。 それぞれのアダプタによって利点や欠点があります。 以下に、翻訳の入力ファイルとしてサポートしているすべてのアダプタについてまとめます。
表 31.1. Zend_Translate のアダプタ
アダプタ | 説明 | 備考 |
---|---|---|
Array | php の配列 | 小さめのページ。簡単に使用できる。プログラマしかさわれない。 |
Csv | カンマ区切りファイル (*.csv/*.txt) | シンプルなテキスト形式。非常に高速。Unicode 文字で問題が発生する可能性がある。 |
Gettext | gettext のバイナリファイル (*.mo) | linux における GNU の標準形式。非常に高速。スレッドセーフ。翻訳用ツールが必要。 |
TMX | tmx ファイル (*.tmx/*.xml) | アプリケーション間での翻訳の業界標準。XML フォーマット。可読形式。 |
QT | qt 言語ファイル (*.ts) | クロスプラットフォームなアプリケーションフレームワーク。XML フォーマット。可読形式。 |
XLIFF | xliff ファイル (*.xliff/*.xml) | TMX に似ているが、よりシンプル。XML フォーマット。可読形式。 |
その他 | *.sql, *.tbx, *.qt | 今後、その他さまざまなアダプタを実装する予定です。 |
Zend_Translate でどのアダプタを使用するのかを決める必要があります。 プロジェクトの制約や顧客からの要望などの外的要因でアダプタが決まることもよくありますが、 もしあなたに決定権があるのなら、以下のヒントを参考にしてください。
Array アダプタは、プログラマにとっては 一番シンプルに使えるアダプタです。 しかし、翻訳する文字列が大量にある場合や 多くの言語に翻訳する必要がある場合は、別のアダプタを使うようにしましょう。 たとえば、翻訳文字列が 5000 ほどある場合は Array アダプタは選択しないほうがいいでしょう。
このアダプタを使うのは、小さめのサイトで少なめの言語を扱い、 かつプログラマ自身で翻訳も行う場合だけにしましょう。
Csv アダプタは、顧客にとっては最もシンプルに使えるアダプタです。 CSV ファイルは標準的なテキストエディタで読むことができますが、 エディタによっては utf8 文字セットをサポートしていないものもあります。
このアダプタを使うのは、 顧客が自分で翻訳を行いたいという場合だけにしましょう。
Gettext アダプタは、最もよく用いられるアダプタです。 Gettext は GNU が提供している翻訳フォーマットで、世界中で使用されています。 可読形式ではありませんが、便利なフリーウェア (POEdit など) が公開されています。 Zend_Translate の Gettext アダプタは、PHP の gettext 拡張モジュールを使わずに実装しています。 PHP の gettext 拡張モジュールをインストールしていなくても Gettext アダプタを使用することが可能です。 また、このアダプタはスレッドセーフですが、PHP の gettext 拡張モジュールは現状ではスレッドセーフでありません。
ほとんどの人たちは、このアダプタを使うことになるでしょう。 便利なツールを使用することで、高品質な翻訳が簡単に作成できます。 しかし、gettext のデータは機械が読める形式で保存されるので、 何らかのツールがないと人間が読むことはできません。
Tmx アダプタは、複数のシステムで同一の翻訳ソースを使用している顧客などが使用します。 また、翻訳ソースをシステムに依存しない形式にしたい場合にも使用します。 TMX は XML 形式のフォーマットで、業界標準になるといわれています。 XML ファイルは人間が読むことも可能ですが、 パース速度は gettext ファイルより遅くなります。
中規模から大規模の会社はこのアダプタを使用します。 ファイルは可読形式で、システムに依存しない形式になります。
Qt アダプタは、QtLinguist で作成した TS ファイル形式の翻訳を使用している顧客が使用します。 QT は XML 形式のフォーマットです。 XML ファイルは人間が読むことも可能ですが、 パース速度は gettext ファイルより遅くなります。
大手企業の中には QT フレームワークを使用したソフトウェアを作成しているところがあります。 ファイルは可読形式で、システムに依存しない形式になります。