はじめに
Qt 4.5では,前回取り上げたQt Designerほどではありませんが,メッセージ翻訳ツールQt Linguistにも久しぶりにいろいろな改善が施されています。
- Qt 4.5 What's New in Qt 4.5
- URL:http://doc.trolltech.com/4.5/qt4-5-intro.html#qt-linguist-
improvements
Qt 4.5の説明の最後として,上記のページに書かれている内容を元に,補足をしながらQt Linguistの新機能と変更内容を説明します。
ファイルフォーマット関連
翻訳メッセージファイルである.tsファイルのバージョンは,表1のようになっています。Qt 4.5では機能追加に伴って,.tsファイルのXMLフォーマットが拡張され,バージョンも上がっています。また,Qt Linguistで扱えるファイルフォーマットにGNU gettext .poファイルが追加されています。
表1 .tsファイルと,対応するQtのバージョン
| .tsバージョン | 説明 |
|---|---|
| なし | Qt 4.1以前 ときどきフォーマットに機能追加されている |
| 1.1 | Qt 4.2~4.4 |
| 2.0 | Qt 4.5 |
表2 Qt Linguistが新たに扱うXML要素
| 新XML要素 | 説明 |
|---|---|
| extracomment | 参考情報としてだけのためのコメントを格納 |
| translatorcomment | 翻訳者のコメントを格納 |
| extra-* | ユーザ拡張 |
| oldsource | lupdateの推測マージで元の値を格納 |
| oldcomment | 同上 |
コマンドツール関連
メッセージ翻訳のためのGUIツールQt Linguistを中心とする表3のような翻訳用のツールがあります。
表3 翻訳ツール一覧
| ツール | 説明 |
|---|---|
| Qt Linguist | 翻訳ファイル(.ts)の翻訳のためのGUIツール |
| lupdate | ソースコードから翻訳対象のメッセージテキストを抽出する。 |
| lrelease | 翻訳ファイルからコンパイル済みQt翻訳バイナリファイル(.qm)を作成する。 |
| lconvert | Qt 4.5で追加。翻訳に関連するファイルの変換をする。 |
このQt Linguistツールチェーンのコマンドツールも改良されています。
lconvertコマンド
Qt 4.5で新たに追加されたコマンドラインプログラムlconvertは,翻訳関連のいろいろなファイルのフォーマット変換をするツールです。表4のファイルが扱えます。バイナリの.qmファイルがテキストフォーマットの.tsなどに変換できるようになったのは,内容を確かめるのにとても便利です。
表4 lconvertが扱えるファイル
| サフィックス | 入力 | 出力 | ファイルフォーマット |
|---|---|---|---|
| qm | ○ | ○ | コンパイル済みQt翻訳バイナリファイル |
| ts11 | ○ | ○ | Qt翻訳ファイル(フォーマット 1.1) |
| ts20 | ○ | ○ | Qt翻訳ファイル(フォーマット 2.0) |
| ts | ○ | ○ | Qt翻訳ファイル(最新フォーマット) |
| qph | ○ | ○ | Qt Linguistフレーズブック(翻訳対応表) |
| po | ○ | ○ | GNU gettextローカライゼーションファイル |
| ui | ○ | - | Qt Designerフォームファイル |
| jui | ○ | - | Qt Jambiフォームファイル |
| cpp | ○ | - | C++ソースファイル |
| java | ○ | - | Javaソースファイル |
| js | ○ | - | Qt Scriptソースファイル |
| xlf | ○ | ○ | XLIFFローカライゼーションファイル |
※ .juiや.javaはQt Jambiが製品終了となっているため,開発元のサポート対象ではありません。
リファレンスに使い方の説明が何もなく,lconvert -helpで表示されるメッセージのみが使い方の手がかりなのが残念です。この記事の後半で,実際に使ってみた例を説明します。
lupdateコマンド
20近くのバグ修正や改良がされている中からいくつか拾ってみました。
//: と /*: */ 形式のコメントが
タグに出力されるように 翻訳者への翻訳のヒントを開発者から伝えるために使われ,Qt Linguistのソーステキスト領域のDeveloper commentsに,開発者が記述したコメントが表示されます。
新しい形式の QT_TR*() マクロやQ_DECLARE_TR_FUNCTIONS への対応QT_TRANSLATE_NOOP_UTF8 マクロの追加。
QtScriptへの対応
オプション -disable-heuristic,-nosort,-target-language,-source-languageの追加。
とくに,-disable-heuristic によって,メッセージの変更を推測する機能を無効にできるようになったので,連番でメッセージを扱っている場合に,余計な推測が抑制されます。
オプション -locations が追加
ソースコードの参照行番号を相対番号にしたり,出力しないようにもできるようになりました。
UTF-16でエンコーディングされたソースファイルへの対応
ネームスペースエイリアスへの対応
同じメッセージの最後のソースコード位置しか記録しなかったのが,全ての位置を記録するようになった
複数言語の同時翻訳
複数言語の翻訳を同時に見比べながらできるようになりました。今までは別々にQt Linguistを起動していたので,並べて比較しながら操作できるようになったのは,翻訳のチェックにもよさそうです。図1は,日本語とフランス語の翻訳ファイルで操作をしているところです。
複数の翻訳ファイルを閉じて,1つの翻訳ファイルを新たに開いても,翻訳結果を表示するソーステキストの入力欄が複数の翻訳ファイルのままになってしまうという問題がありました。年末にリリース予定の4.6では,この問題が修正されています。
言語設定
翻訳ファイル設定で,翻訳先の言語に加えて,原文の言語の設定ができるようになり,どのように言語を翻訳するかを区別できるようになりました。
翻訳ファイル設定ダイアログ(図2)は,翻訳先の言語が設定されていない翻訳ファイルを開いたときに表示されます。また,「メニューバー」→「編集」→「Translation File Settings...」と操作しても表示できます。
「メニューバー」→「フレーズ」→「フレーズブックを編集」と辿ってフレーズブックを選択すると表示されるフレーズブックの編集画面に「Settings...」ボタンが追加され,言語設定ができるようにもなっています。

