国際化対応していないプロダクトを、PTSを使用して国際化するために必要な作業について説明します。
自分が作成したプロダクトをPTSに対応させて国際化するためには、ページテンプレートやDTMLで作成したコードを、修正する必要があります。
コードを修正するためには、まずドメイン名 domain を決める必要があります。ドメイン名には一般的にプロダクトの名前をそのまま使うようです。
次に、国際化対応させたい部分を i18n:tranlate 等の記述を行い、対象となる msgid を指定します。
なお、msgid の名前の付け方としては、以下のガイドラインに従って接頭辞をつけることをおすすめします。
(Guidelines for translators より)
<legend> タグに使用します。<label> と <a> タグです。<p> タグで囲まれます。 プロダクトのPTS対応が終わったら、次に.poファイルを作るための雛形となる
Portable Object Template(.pot)ファイルの作成を行ないます。
.potファイルのフォーマットは .po ファイルと同じですが、
翻訳した文字列(msgstr)が全て空の状態になっています。
PTSの動作上.potファイルは必ずしも作成する必要はありません。 しかし、自分が作成したプロダクトを公開して、他の言語圏の人に.poファイルを作ってもらうためには、.potファイルを作成する方がよりよいと思います。
PTSに付属する資料によると、.potファイルの作成にはいくつかの方法があるようです。
何もない状態からエディタ等を使用して、プロダクト用の .potファイルを作成します。msgid と msgstr を手作業で書き込んでいきます。
プロダクトの表示部分がZPT(Zope Page Template)で記述されている場合に、i18ndudeを使用してZPTファイルから .potファイルを作成することが出来ます。 なお、i18ndudeを使用するにはXMLパーサの pyXML が必要になります。
以下は、Fooプロダクト用のテンプレートファイルの一覧を TEMPLATES に設定し、 その後 i18ndude コマンドを使用して .pot ファイルを作成する手順を表しいています。
$ cd /var/lib/zope/Products/Foo $ TEMPLATES = `find . -name '*.?pt'` $ i18ndude rebuild-pot --pot /tmp/foo.pot --create foo $TEMPLATES
上記のどの手段も使えない場合には、PTSによって .pot ファイルを作成することができます。
その作業は以下の手順で行ないます。
i18n ディレクトリに、空の .poファイルを作成します。 まず最初に、english.po という名前の、中身が空の .poファイルを i18n ディレクトリに作成します。空といっても、最低限以下の内容を記述しておきます。
Domain には対象となるプロダクトのドメイン名を指定します。
msgid "" msgstr "" "Language-code: en\n" "Language-name: English\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Domain: MyProduct\n"
また、同じディレクトリに english.missing という空のファイルを作成しておきます。例えば、以下のようなファイルが作成されます。
/var/lib/zope/Products/MyProduct/i18n/english.po /var/lib/zope/Products/MyProduct/i18n/english.missing
english.po ファイルを読み込ませます。PTSが english.po を読み込む時にエラーメッセージが出力されていないことを確認します。english.missing に出力します。
(つまり、全画面を表示すれば全ての項目が出力されます。)english.po と english.missing を結合して、MyProduct.pot ファイルを作成します。english.po と english.missing ファイルを削除します。.potファイル(翻訳テンプレートファイル)を元に、翻訳を行なった.poファイルを作成します。
通常は、*.pot というファイル('*' にはプロダクト名が入る)が存在するはずなので、そのファイルを *-ja.po という名前でコピーして編集します。
編集の内容は翻訳した文字列(msgstr)を埋めていくことになります。
編集方法の詳細については プロダクトの日本語化 を参照してください。
作成した.poファイル(おそらく *-ja.po というファイル名になっていると思います。)を対象となるプロダクトの i18n ディレクトリに配置します。
その後、zopeサーバを再起動し、PTSに.poファイルを読み込ませます。
.poファイルが正しく記述できていれば、PTSによる変換が行なわれ日本語等で表示されるようになります。