pootle セットアップ
po ファイルの翻訳を web でよってたかって行うシステム pootle というものがあることを知ったので、セットアップしてみます。
目次
- インストール[install]
- 設定ファイル[prefs]
- apache の proxy 経由でアクセス[proxy]
- PootleServer 起動[server]
- po ファイルを配置[pofiles]
- 関連サイト[site]
インストール[install]
まず最初に、Pootle をインストールするのに必要な、Translate Toolkit, jToolit と Kid, ElementTree をダウンロードしてインストールします。
# wget http://translate.sourceforge.net/snapshots/jToolkit-0.7.8/jToolkit-0.7.8.tar.gz # tar xfz jToolkit-0.7.8.tar.gz # cd jToolkit-0.7.8 # python jToolkitSetup.py install # cd .. # wget http://translate.sourceforge.net/snapshots/translate-toolkit-0.10rc1/translate-toolkit-0.10rc1.tar.gz # tar xfz translate-toolkit-0.10rc1.tar.gz # cd translate-toolkit-0.10rc1 # python setup.py install # cd .. # wget http://effbot.org/downloads/elementtree-1.2.6-20050316.tar.gz # tar xfz elementtree-1.2.6-20050316.tar.gz # cd elementtree-1.2.6-20050316 # python setup.py install # cd .. # wget http://www.kid-templating.org/dist/0.9.3/kid-0.9.3.tar.gz # tar xfz kid-0.9.3.tar.gz # cd kid-0.9.3 # python setup.py install
次に Pootle 本体をインストールします。
ここでは 0.10rc1 というバージョンをインストールします。
なお、これらのツールはデフォルトでは python の site-packages の下にインストールされます。また、PootleServer コマンドが /usr/bin にインストールされます。
# wget http://translate.sourceforge.net/snapshots/Pootle-0.10rc1/Pootle-0.10rc1.tar.gz # tar xfz Pootle-0.10rc1.tar.gz # cd Pootle-0.10rc1 # python pootlesetup.py install
インストールが正常に終了すると、PootlerServer コマンドが実行できるようになります。
また、PootleServer --help とすることでヘルプが表示されます。
設定ファイル[prefs]
実際に PootleServer を動かす前に、設定ファイルを編集します。
設定ファイルには以下の二つがあります。
- pootle.prefs 立ち上げる Pootle サーバ全体に対する設定ファイルです。
- users.prefs Pootle を利用するユーザに関する設定ファイルです。
このうち主に pootle.prefs を編集する必要があります。
具体的な編集の箇所としては、以下の部分になると思います。
- title, description サイトの名前や説明などを指定します。
- defaultlanguage デフォルトの言語を英語以外にしたい場合は指定します。
- fromaddress ユーザ登録するときの From となるメールアドレスを指定します。
- smtpserver ユーザ登録するときのメールを送るためのサーバを指定します。
- projects 翻訳を行うプロジェクトの情報を指定します。
- languages 利用可能な言語を指定します。
ちなみに私が使っている設定ファイルから重要な部分を抜粋するとこんな感じです。:
title = "Pootle in takanory.net"
description = "Pootle server for plone 2.1 japanese translation"
defaultlanguage = "ja"
registration:
fromaddress = "XXXXXX@takanory.net"
smtpserver = "localhost"
podirectory = "po"
projects:
pootle:
fullname = "Pootle"
description = "Web translation software"
checkstyle = "standard"
plone:
fullname = "Plone"
description = ""
checkstyle = "standard"
languages:
templates.fullname = 'Templates'
en.fullname = 'English'
ja.fullname = 'Japanese'
apache の proxy 経由でアクセス[proxy]
Pootle サーバを立ち上げるとデフォルトでは8080番ポートを使って立ち上がります。
(ここでは -p オプションでポート番号を 8180 に変更しています。)
それはいまいちなので、apache のバーチャルホスト機能と proxy 機能を使って、 http://pootle.takanory.net/ でアクセスできるようにします。
そのために、httpd.conf に以下のように記述します。:
<VirtualHost *>
ServerName pootle.takanory.net
ProxyPass /images !
ProxyPass /js !
ProxyPass /pootle.css !
ProxyPass /favicon.ico !
ProxyPass / http://localhost:8180/
ProxyPassReverse / http://localhost:8180/
<Directory proxy:http://localhost:8180/*>
Order deny,allow
Allow from all
</Directory>
ErrorLog logs/pootle_error_log
CustomLog logs/pootle_log combined
# Fallback for static html content
DocumentRoot "/usr/lib/python2.3/site-packages/Pootle/html/"
<Directory "/usr/lib/python2.3/site-packages/Pootle/html/">
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
PootleServer 起動[server]
さて、ここまできたら PootleServer を起動します。
ここではバックグラウンドで実行、ポート番号を 8180 に変更、ログファイルを出力、また標準出力をファイルに書き出すようにして起動しています。
# PootleServer -B -p8180 -o/var/log/pootle.log > /var/log/pootle.out 2>&1
po ファイルを配置[pofiles]
しかしこれだけでは翻訳を行うことはできません。
設定ファイルに指定したプロジェクト用の po ファイルを配置する必要があります。
po ファイルは po/プロジェクト/言語 というディレクトリを作成して、そこに配置しなければなりません。
例えば plone-ja.po というファイルは po/plone/ja というディレクトリに配置することによって初めて翻訳できるようになります。
実際に http://pootle.takanory.net/ にアクセスして、試しに翻訳してみてください。 なお、翻訳を行うためにはユーザの登録が必要です。
最初に各プロジェクトのページにアクセスしたときは、po ファイルの中身を解析して、どのくらい翻訳されているか調べたりするので少し表示に時間がかかります。気長に待ってあげてください。
関連サイト[site]
pootle に関連する(参考にした)サイトです。
- translate.sourceforge.net 翻訳プロジェクトの大元
- TranslateWiki 上記サイトのドキュメントはこちらに移行しつつあるようです。
- http://pootle.wordforge.org/ Pootle の実際の利用例 Firefox, GNOME, KDE, OpenOffice.org などもここが使われているようです。
AttributeError等の対応
AttributeError:
tupleobject has no attributesplitの件pootlefile.pyの85行目くらい for failure in failures: + try: ! functionname = failure.split(":",2)[0] + except: + functionname = failure[0]
-o のログが効かない件
PootleServer -p9999 -B -opootle.log --autorestart > log.pootle 2>&1
とかやって乱暴に対応(麦