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最新事情2009:第5回 Qt Linguistの進化|gihyo.jp … 技術評論社: http://gihyo.jp/dev/serial/01/qt-2009/0005?page=2
Qt翻訳ファイルの作成
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翻訳ファイルのコンパイル方法は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