Translation2_Admin は、 翻訳の管理 (言語の追加/削除、文字列の追加/削除) を補助するためのクラスです。
この例では、 MDB2 ドライバを使用して新しい言語を追加する [addLang()] 方法を示します。
<?php
// データベースに接続するためのパラメータを設定します
$dbinfo = array(
'hostspec' => 'host',
'database' => 'dbname',
'phptype' => 'mysql',
'username' => 'user',
'password' => 'pwd'
);
// デフォルト設定と異なる場合は、
// データベースのテーブル構成を Translation2 に教えます
$params = array(
'langs_avail_table' => 'langs_avail',
'lang_id_col' => 'id',
'lang_name_col' => 'name',
'lang_meta_col' => 'meta',
'lang_errmsg_col' => 'error_text',
'lang_encoding_col' => 'encoding',
'strings_tables' => array(
'it' => 'i18n',
'de' => 'i18n'
),
// あるいは、テーブルをひとつしか使用しないのなら
//'strings_default_table' => 'i18n',
'string_id_col' => 'id',
'string_page_id_col' => 'page_id',
'string_page_id_col_length' => 50, // db のフィールドサイズ
'string_text_col' => '%s' // '%s' は言語コードに置き換えられます
);
$driver = 'MDB2';
require_once 'Translation2/Admin.php';
$tr =& Translation2_Admin::factory($driver, $dbinfo, $params);
// 新しい言語についての情報を設定します
$newLang = array(
'lang_id' => 'en',
'table_name' => 'i18n',
'name' => 'english',
'meta' => 'some meta info',
'error_text' => 'not available',
'encoding' => 'iso-8859-1',
);
$tr->addLang($newLang);
?>
これだけです。新しいテーブルを指定した場合はそのテーブルが作成されます。 他の翻訳用のテーブルと同じ名前を指定した場合は、 新しい言語用にそのテーブルが ALTER されます。
この例では、既存の言語を更新する [updateLang()] 方法を示します。
<?php
// 新しい言語についての情報を設定します
$langData = array(
'lang_id' => 'en',
'table_name' => 'i18n',
'name' => 'English',
'meta' => 'some updated meta info',
'error_text' => 'this text is not available in English',
'encoding' => 'iso-8859-15',
);
$tr->updateLang($langData);
?>
ある言語についての翻訳とその情報をすべて削除したい場合は、
<?php
$tr->removeLang('fr');
?>
をコールすればいいだけです。
removeLang()
には 2 番目のパラメータ ($force
)
を指定することができます。もし文字列テーブルをすべて削除したい場合
(それが他の言語で使用されているかどうかにかかわらず)
は、このようにコールします。
<?php
$tr->removeLang('fr', true);
?>
これは、一切のチェックを行わないことに注意しましょう。 自己責任で使用してください ;-)
それでは、 add() を使用して新しい翻訳を追加する方法を見ていきましょう。
<?php
$stringArray = array(
'en' => 'sample',
'it' => 'esempio',
);
// stringID 'smallTest'、pageID 'testGroup' に対応する
// 英語とイタリア語の翻訳を追加します
$tr->add('smallTest', 'testGroup', $stringArray);
?>