Qtアプリの翻訳

オープンソースのアプリケーションは、メッセージの国際化にgettextを利用している場合が多いのですが、Qtを利用して作られたアプリケーションはQt自体にgettext的な機能を持っており、メッセージを翻訳するにはgettextと違った手順で翻訳をする必要があります。

gettextとQtには以下のような違いがあります。

gettext Qt
メッセージファイル拡張子 po ts
翻訳バイナリファイル拡張子 mo qm
メッセージカタログの作成方法 potから lupdateを利用して生成
メッセージファイルのコンパイルコマンド msgfmt lrelease

Qtアプリの翻訳にはQt Linguistを利用します。

DebianではQt Linguistは qt4-linguist-tools というパッケージ名で用意されています。その他にQt開発パッケージも必要になるのでインストールするには以下のようになります。

sudo aptitude install qt4-linguist-tools qt4-dev-tools

gihyo.jpの情報によるとQt Linguistに含まれているlconvertを使いtsファイルをpoにコンバートすれば、gettext用のツールを利用して翻訳できるそうです。 (翻訳後、poファイルをtsファイルに戻す必要はあります。)

Qtアプリの翻訳をはじめるには、Qt翻訳ファイル(拡張子はts)が必要になります。 Qt翻訳ファイルを作成するには以下のようにします。

lupdate (プロジェクトファイル).pro -ts (メッセージカタログ).ts

Qt Linguistを使って翻訳します。

翻訳方法は画面を見ればわかると思うので省きますが、Qt Linguistの特徴のフレーズブックについて書いておきます。

フレーズブックというのはその名の通り、慣用句やよく使う言葉を集めた用語集です。あらかじめ用語などをフレーズブックに登録しておくと、翻訳中、登録してある言葉が出てくるとヒントとして出してくれます。またヒントだけでなく、フレーズブックの言葉を一括して翻訳、置換もできます。

これが結構便利なので、翻訳をはじめる前にはQt4のフレーズブックjapanese.qph(qt4-dev-toolsパッケージに入っていて、/usr/share/qt4/phrasebooks/japanese.qph にあります)と、自分用に作ったフレーズブック、2つを開いてから翻訳を始めるとよいと思います。

Qt翻訳ファイルのコンパイル方法はQt Linguistのツールバーの[ファイル]-[リリース]を選択するとqmファイルが作成されます。

コマンドの場合は lrelease を使います。

lrelease (メッセージカタログ).ts [-qm qm-file]

できあがったqmファイルは /usr/share/locale にコピーしアプリを起動すれば、メッセージは翻訳されているはずです。

PyQtアプリの場合

QtのPythonバインディングであるPyQtで作られたアプリもtsファイルを生成して翻訳をしますが、tsファイルの生成方法がlupdateではなくPython用のpylupdate4を使って生成します。 1)

Debianではpyqt4-dev-toolsパッケージにpylupdate4が含まれています。

$ sudo apt-get install pyqt4-dev-tools

tsファイルの生成は以下のようにします。

# プロジェクトファイルがない場合
pylupdate4 (Pythonアプリファイル) -ts (メッセージカタログ)
 
# プロジェクトファイルがある場合
pylupdate4 (プロジェクトファイル).pro