Previous Next

Zend_Translate のアダプタ

Zend_Translate は、さまざまなアダプタを使用して翻訳を行えます。 それぞれのアダプタによって利点や欠点があります。 以下に、翻訳の入力ファイルとしてサポートしているすべてのアダプタについてまとめます。

Zend_Translate のアダプタ
アダプタ 説明 備考
Array php の配列 小さめのページ。簡単に使用できる。プログラマしかさわれない。
Csv カンマ区切りファイル (*.csv/*.txt) シンプルなテキスト形式。非常に高速。Unicode 文字で問題が発生する可能性がある。
Gettext gettext のバイナリファイル (*.mo) linux における GNU の標準形式。非常に高速。スレッドセーフ。翻訳用ツールが必要。
Ini シンプルな ini ファイル (*.ini) シンプルなテキスト形式。非常に高速。Unicode 文字で問題が発生する可能性がある。
Tbx termbase 変換ファイル (*.tbx/*.xml) アプリケーション間で専門用語を変換するための業界標準。XML フォーマット。
Tmx tmx ファイル (*.tmx/*.xml) アプリケーション間での翻訳の業界標準。XML フォーマット。可読形式。
Qt qt 言語ファイル (*.ts) クロスプラットフォームなアプリケーションフレームワーク。XML フォーマット。可読形式。
Xliff xliff ファイル (*.xliff/*.xml) TMX に似ているが、よりシンプル。XML フォーマット。可読形式。
XmlTm xmltm ファイル (*.xml) XML ドキュメントの翻訳メモリの業界標準。XML フォーマット。可読形式。
その他 *.sql 今後、その他さまざまなアダプタを実装する予定です。

使用するアダプタを決める方法

Zend_Translate でどのアダプタを使用するのかを決める必要があります。 プロジェクトの制約や顧客からの要望などの外的要因でアダプタが決まることもよくありますが、 もしあなたに決定権があるのなら、以下のヒントを参考にしてください。

Note:

使用するアダプタを決めるにあたっては、 使用するエンコーディングを考慮しなければなりません。 Zend Framework では UTF-8 をデフォルトのエンコーディングとしていますが、 時には他のエンコーディングを使わなければならないこともあるでしょう。 Zend_Translate は、 ソースファイル内で定義されているエンコーディングを変更しません。 つまり、もし Gettext のソースが ISO-8859-1 で作られている場合は、 それをそのままのエンコーディングで返します。 ただ、ひとつだけ制限があります。

TMX や XLIFF といった XML ベースのソース形式を使用する場合は、 そのエンコーディングを XML ファイルのヘッダで定義しなければなりません。 エンコーディングの定義がない XML ファイルは、 デフォルトでは UTF-8 として扱われるからです。 また、もうひとつ注意すべき点は、XML ファイルのエンコーディングとして使用できるのは PHP がサポートしているエンコーディングのみであること、 つまり UTF-8、ISO-8859-1 および US-ASCII だけであるということです。

Zend_Translate_Adapter_Array

Array アダプタは、プログラマにとっては 一番シンプルに使えるアダプタです。 しかし、翻訳する文字列が大量にある場合や 多くの言語に翻訳する必要がある場合は、別のアダプタを使うようにしましょう。 たとえば、翻訳文字列が 5000 ほどある場合は Array アダプタは選択しないほうがいいでしょう。

このアダプタを使うのは、小さめのサイトで少なめの言語を扱い、 かつプログラマ自身で翻訳も行う場合だけにしましょう。

Zend_Translate_Adapter_Csv

Csv アダプタは、顧客にとっては最もシンプルに使えるアダプタです。 CSV ファイルは標準的なテキストエディタで読むことができますが、 エディタによっては utf8 文字セットをサポートしていないものもあります。

このアダプタを使うのは、 顧客が自分で翻訳を行いたいという場合だけにしましょう。

Zend_Translate_Adapter_Gettext

Gettext アダプタは、最もよく用いられるアダプタです。 Gettext は GNU が提供している翻訳フォーマットで、世界中で使用されています。 可読形式ではありませんが、便利なフリーウェア (» POEdit など) が公開されています。 Zend_Translate の Gettext アダプタは、PHP の gettext 拡張モジュールを使わずに実装しています。 PHP の gettext 拡張モジュールをインストールしていなくても Gettext アダプタを使用することが可能です。 また、このアダプタはスレッドセーフですが、PHP の gettext 拡張モジュールは現状ではスレッドセーフでありません。

ほとんどの人たちは、このアダプタを使うことになるでしょう。 便利なツールを使用することで、高品質な翻訳が簡単に作成できます。 しかし、gettext のデータは機械が読める形式で保存されるので、 何らかのツールがないと人間が読むことはできません。

Zend_Translate_Adapter_Ini

Ini アダプタは非常にシンプルなアダプタであり、 顧客が直接触ることができます。 INI ファイルは標準的なテキストエディタで読むことができますが、 エディタによっては utf8 文字セットをサポートしていないものもあります。

このアダプタを使うのは、 顧客が自分で翻訳を行いたいという場合だけにしましょう。 汎用的な翻訳ソースとしては使用しないようにしましょう。

Zend_Translate_Adapter_Tbx

Tbx アダプタは、内部ですでに TBX フォーマットの翻訳システムを使用している顧客などが使用します。 Tbx は標準の翻訳フォーマットではありませんが、 すでに多くの翻訳や翻訳済み文字列が存在します。 このアダプタを使用する場合は、 必要な文字列をすべて翻訳しなければならないことに気をつけましょう。 TBX は、まったく新しく作られた XML ベースのフォーマットです。 XML ファイルは人間が読むことも可能ですが、 パース速度は gettext ファイルより遅くなります。

このアダプタは、すでにこの形式の翻訳ファイルを持っている企業に最適です。 ファイルは可読形式で、システムに依存しない形式になります。

Zend_Translate_Adapter_Tmx

Tmx アダプタは、複数のシステムで同一の翻訳ソースを使用している顧客などが使用します。 また、翻訳ソースをシステムに依存しない形式にしたい場合にも使用します。 TMX は XML 形式のフォーマットで、業界標準になるといわれています。 XML ファイルは人間が読むことも可能ですが、 パース速度は gettext ファイルより遅くなります。

中規模から大規模の会社はこのアダプタを使用します。 ファイルは可読形式で、システムに依存しない形式になります。

Zend_Translate_Adapter_Qt

Qt アダプタは、QtLinguist で作成した TS ファイル形式の翻訳を使用している顧客が使用します。 QT は XML 形式のフォーマットです。 XML ファイルは人間が読むことも可能ですが、 パース速度は gettext ファイルより遅くなります。

大手企業の中には QT フレームワークを使用したソフトウェアを作成しているところがあります。 ファイルは可読形式で、システムに依存しない形式になります。

Zend_Translate_Adapter_Xliff

Xliff アダプタは、XML ファイルを使用したいけれど TMX 用のツールを持っていないという顧客などが使用します。 XLIFF は XML 形式のフォーマットで、 TMX と関連していますがもうすこしシンプルです。機能も一部限定されています。 XML ファイルは人間が読むことも可能ですが、 パース速度は gettext ファイルより遅くなります。

中規模の会社はこのアダプタを使用します。 ファイルは可読形式で、システムに依存しない形式になります。

Zend_Translate_Adapter_XmlTm

XmlTm アダプタは、すでにこのレイアウトを採用している顧客が使用するアダプタです。 XmlTm は、html ソース全体を翻訳ソースに含めることのできるフォーマットで、 翻訳とレイアウトがひとつにまとまります。 XLIFF は XML ベースのフォーマットです。XLIFF と関連していますが、それほど読みやすくはありません。

        このアダプタは、すでにソースファイルが存在する場合にのみ使用するようにしましょう。 ファイルは可読形式で、システムに依存しない形式になります。

自作のアダプタの組み込み

Zend_Translate に、自作のアダプタクラスを組み込むこともできます。 これは、Zend_Translate に組み込まれている標準のアダプタクラスと同様に使うことができます。

Zend_Translate で使用するアダプタクラスは、 Zend_Translate_Adapter のサブクラスでなければなりません。 Zend_Translate_Adapter は抽象クラスであり、翻訳に必要なものをすべて定義しています。 あなたがすべきことは、翻訳データの読み込み方法を定義することだけです。

名前の先頭に "Zend" をつけることができるのは Zend_Framework 内のパッケージだけです。Zend_Translate で使うためのアダプタを自作する場合は、 その名前はたとえば "Company_Translate_Adapter_MyFormat" のようにする必要があります。 次のコードは、独自のアダプタクラスを実装する例を示すものです。

 'myvalue'));
} catch (Exception $e) {
    // ファイルが見つからない、アダプタクラスが存在しない、……
    // などの一般的なエラー
}

全アダプタの高速化

Zend_Translate では、内部的に Zend_Cache を使用して翻訳ソースの読み込みを高速化することができます。 これは、多数の翻訳ソースを使用していたり XML ベースの複雑なソース形式を使用していたりする場合に非常に便利です。

キャッシュ機能を使用するには、キャッシュオブジェクトを Zend_Translate::setCache() メソッドで渡します。 このメソッドの唯一のパラメータには Zend_Cache のインスタンスを指定します。 また、任意のアダプタを直接使用するには setCache() メソッドを使用します。 利便性を考慮して、静的メソッド Zend_Translate::getCache() も用意されています。




        

Note:

キャッシュの設定は、アダプタや Zend_Translate のインスタンスを使用したり初期化したりする に行わなければなりません。 さもないと、新たなソースを addTranslation() メソッドで追加するまで 翻訳ソースのキャッシュは行われません。

Previous Next
Introduction to Zend Framework
概要
インストール
Zend_Acl
導入
アクセス制御の洗練
高度な使用法
Zend_Auth
導入
データベースのテーブルでの認証
ダイジェスト認証
HTTP 認証アダプタ
LDAP 認証
Open ID 認証
Zend_Cache
導入
キャッシュの仕組み
Zend_Cache のフロントエンド
Zend_Cache のバックエンド
Zend_Captcha
Introduction
Captcha Operation
Captcha Adapters
Zend_Config
導入
動作原理
Zend_Config_Ini
Zend_Config_Xml
Zend_Console_Getopt
Getopt について
Getopt の規則の宣言
オプションおよび引数の取得
Zend_Console_Getopt の設定
Zend_Controller
Zend_Controller クイックスタート
Zend_Controller の基本
フロントコントローラ
リクエストオブジェクト
標準のルータ: Zend_Controller_Router_Rewrite
ディスパッチャ
アクションコントローラ
アクションヘルパー
レスポンスオブジェクト
プラグイン
モジュラーディレクトリ構造の規約の使用
MVC での例外
以前のバージョンからの移行
Zend_Currency
Zend_Currency について
通貨の操作方法
以前のバージョンからの移行
Zend_Date
導入
動作原理
基本メソッド
Zend_Date API の概要
日付の作成
日付関数全般用の定数
動作例
Zend_Db
Zend_Db_Adapter
Zend_Db_Statement
Zend_Db_Profiler
Zend_Db_Select
Zend_Db_Table
Zend_Db_Table_Row
Zend_Db_Table_Rowset
導入
Zend_Debug
変数の出力
Zend_Dojo
Introduction
Zend_Dojo_Data: dojo.data Envelopes
Dojo View Helpers
Dojo Form Elements and Decorators
Zend_Dom
導入
Zend_Dom_Query
Zend_Exception
例外の使用法
Zend_Feed
導入
フィードの読み込み
ウェブページからのフィードの取得
RSS フィードの使用
Atom フィードの使用
単一の Atom エントリの処理
フィードおよびエントリの構造の変更
独自のフィードクラスおよびエントリクラス
Zend_File
Zend_File_Transfer
Validators for Zend_File_Transfer
Zend_Filter
導入
標準のフィルタクラス群
フィルタチェイン
フィルタの書き方
Zend_Filter_Input
Zend_Filter_Inflector
Zend_Form
Zend_Form
Zend_Form クイックスタート
Zend_Form_Element を用いたフォーム要素の作成
Zend_Form によるフォームの作成
Zend_Form_Decorator による独自のフォームマークアップの作成
Zend Framework に同梱されている標準のフォーム要素
Zend Framework に同梱されている標準のデコレータ
Zend_Form の国際化
Zend_Form の高度な使用法
Zend_Gdata
Gdata について
AuthSub による認証
ClientLogin による認証
Google Calendar の使用法
Google Documents List Data API の使用法
Google Spreadsheets の使用法
Google Apps Provisioning の使用法
Google Base の使用法
YouTube Data API の使用法
Picasa Web Albums の使用法
Gdata の例外処理
Zend_Http
Zend_Http_Client - 導入
Zend_Http_Client - 高度な使用法
Zend_Http_Client - 接続アダプタ
Zend_Http_Cookie および Zend_Http_CookieJar
Zend_Http_Response
Zend_InfoCard
導入
Zend_Json
導入
基本的な使用法
JSON オブジェクト
XML から JSON への変換
Zend_Json_Server - JSON-RPC server
Zend_Layout
導入
Zend_Layout クイックスタート
Zend_Layout の設定オプション
Zend_Layout の高度な使用法
Zend_Ldap
導入
Zend_Loader
ファイルやクラスの動的な読み込み
プラグインのロード
Zend_Locale
導入
Zend_Locale の使用法
正規化および地域化
日付および時刻の扱い
ロケールがサポートする言語
ロケールがサポートする地域
Zend_Log
概要
ライター
フォーマッタ
フィルタ
Zend_Mail
導入
SMTP 経由での送信
SMTP 接続による複数のメールの送信
異なる転送手段の使用
HTML メール
ファイルの添付
受信者の追加
MIME バウンダリの制御
追加のヘッダ
文字セット
エンコーディング
SMTP 認証
セキュアな SMTP トランスポート
メールメッセージの読み込み
Zend_Measure
導入
計測値の作成
計測値の出力
計測値の操作
計測値の型
Zend_Memory
概要
メモリマネージャ
メモリオブジェクト
Zend_Mime
Zend_Mime
Zend_Mime_Message
Zend_Mime_Part
Zend_OpenId
導入
Zend_OpenId_Consumer の基本
Zend_OpenId_Provider
Zend_Paginator
Introduction
Usage
Configuration
Advanced usage
Zend_Pdf
導入
PDF ドキュメントの作成および読み込み
PDF ドキュメントへの変更内容の保存
ドキュメントのページ
描画
ドキュメントの情報およびメタデータ
Zend_Pdf モジュールの使用例
Zend_Registry
レジストリの使用法
Zend_Rest
導入
Zend_Rest_Client
Zend_Rest_Server
Zend_Search_Lucene
概要
インデックスの構築
インデックスの検索
クエリ言語
クエリ作成用の API
文字セット
拡張性
Java Lucene との相互運用
応用
ベストプラクティス
Zend_Server
導入
Zend_Server_Reflection
Zend_Service
導入
Zend_Service_Akismet
Zend_Service_Amazon
Zend_Service_Audioscrobbler
Zend_Service_Delicious
Zend_Service_Flickr
Zend_Service_Nirvanix
Zend_Service_ReCaptcha
Zend_Service_Simpy
導入
Zend_Service_StrikeIron
Zend_Service_StrikeIron: バンドルされているサービス
Zend_Service_StrikeIron: 応用編
Zend_Service_Technorati
Zend_Service_Yahoo
Zend_Session
導入
基本的な使用法
高度な使用法
グローバルセッションの管理
Zend_Session_SaveHandler_DbTable
Zend_Soap
Zend_Soap_Server
Zend_Soap_Client
WSDL Accessor
AutoDiscovery. Introduction
Class autodiscovering.
Functions autodiscovering.
Autodiscovering. Datatypes.
Zend_Test
Introduction
Zend_Test_PHPUnit
Zend_Text
Zend_Text_Figlet
Zend_TimeSync
導入
Zend_TimeSync の動作
Zend_Translate
導入
Zend_Translate のアダプタ
翻訳アダプタの使用法
Zend_Uri
Zend_Uri
Zend_Validate
導入
標準のバリデーションクラス群
バリデータチェイン
バリデータの書き方
Zend_Version
Zend Framework のバージョンの取得
Zend_View
導入
コントローラスクリプト
ビュースクリプト
ビューヘルパー
Zend_View_Abstract
Zend_Wildfire
Zend_Wildfire
Zend_XmlRpc
導入
Zend_XmlRpc_Client
Zend_XmlRpc_Server
Zend Framework のシステム要件
PHP のバージョン
PHP の拡張モジュール
Zend Framework のコンポーネント
Zend Framework の依存性
Zend Framework PHP 標準コーディング規約
概要
PHP ファイルの書式
命名規約
コーディングスタイル
著作権に関する情報