コンテナの概要

コンテナの概要 – さまざまな Translation2 コンテナの概要

概要

Translation2 はさまざまなストレージドライバを提供しています。 このページでは、それらの違いを説明します。

PEAR::DBPEAR::MDBPEAR::MDB2

Translation2 は、これらのデータベース抽象化レイヤーの いずれでも使用することができます。使用するには、適切な接続オプションを渡します。 これら 3 つのコンテナの挙動はどれもまったく同じです (Translation2 に関しても、当然同じです)。

<?php
// 接続オプション
$dbinfo = array(
    
'hostspec' => 'host',
    
'database' => 'dbname',
    
'phptype'  => 'mysql',
    
'username' => 'user',
    
'password' => 'pwd'
);
// お好みのドライバを選択します
$driver 'MDB2'// 必要に応じて 'DB' あるいは 'MDB' に変更します

require_once 'Translation2.php';
$tr =& Translation2::factory($driver$dbinfo$params);
?>

デフォルトの定義と異なるテーブルを使用している場合は、 $params でそれを指定しなければなりません。 array.

DB_DataObject

DB_DataObject を使用する場合は、dataobjectsimple コンテナを使用するのが最も自然な選択です。こらは、DAO と密接に結びついています。 このストレージドライバは、 PEAR::DB 抽象化レイヤーがサポートしているすべてのデータベースを使用することができます。

このコンテナを使用する場合は、独自のテーブル定義を指定することはできません。 まだその機能はサポートされていないからです。つまり、 必ず以下の構造のテーブルを作成しなければなりません。


// メタデータなどはサポートされません
table: translations
id          // not null primary key autoincrement..
string_id   // 翻訳の id
page        // indexed varchar eg. (mytemplate.html)
lang        // index varchar (eg. en|fr|.....)
translation // lang 言語の翻訳

テーブルを作成するための MySQL のクエリは次のようになります。


create table translations (
  id int(11) auto_increment not null primary key,
  string_id int(11), page varchar(128),
  lang varchar(10), translation text
);
alter table translations add index page (page);
alter table translations add index lang (lang);
alter table translations add index string_id (string_id);

そして、createtables スクリプトを実行します。

Gettext

これは gettext 系の関数のラッパーです。 File_Gettext のおかげで、 コマンドラインのコンパイラを使用せずに ドメイン全体を読み込んだりドメインに書き出したりできます。

gettext コンテナには PEAR::File_Gettext および PEAR::I18Nv2 の 0.9.1 以降が必要です。これらがインストールされていることを確認しましょう。

作成時のパラメータは db 系とは少し異なります。 できるだけ簡潔にするため、ドメイン定義と使用できる言語の一覧は INI ファイルから読み込むものとします。

langs.ini は次のようになります。



; ソースエンコーディングを指定しなかった場合は ISO-8859-1 が使用されます
; エンコーディングを間違うと gettext が正しく動作しないことに注意しましょう

[en]
name = English
encoding = iso-8859-1

[de]
name = Deutsch
encoding = iso-8859-1

[it]
name = italiano
encoding = iso-8859-1

domains.ini は次のようになります。


messages = /path/to/locale
2nddomain = /path/to/locale
3rddomain = /path/to/locale

Translation2 で gettext コンテナを使用する例です。

<?php
require_once 'Translation2.php';

$params = array(
    
'prefetch'          => false,
    
'langs_avail_file'  => 'path/to/langs.ini',
    
'domains_path_file' => 'path/to/domains.ini',
    
'default_domain'    => 'messages',
    
//'file_type'       => 'po',
);

// gettext コンテナでは prefetch を FALSE にするほうがよいです。
// これにより、リクエストのたびに File_Gettext が MO ファイルを
// 丸ごと読み込む必要がなくなります。
$tr =& Translation2::factory('gettext'$params);

$tr->setLang('en');

// 翻訳文字列がない場合は、gettext  コンテナは文字列の ID を
// 返すことに注意しましょう! これは、gettext 本来の挙動に習ったものです。
echo $tr->get('mystring');

print_r($tr->getPage('3rddomain'));
?>

XML

XML コンテナは PEAR::XML_Serializer 0.13.0 以降を必要とします。 インストールされていることを確認しておきましょう。

<?php
$driver 
'XML';
$options = array(
    
'filename'         => 'i18n.xml',
    
'save_on_shutdown' => true// FALSE にすると、即時に保存します
);
require_once 
'Translation2.php';
$tr =& Translation2::factory($driver$options);
?>
Translation2_Admin の使用法 (Previous) コンストラクタ (Next)
Last updated: Fri, 21 Nov 2014 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

There are no user contributed notes for this page.