進化するQt-Qt最新事情2009

第5回 Qt Linguistの進化

この記事を読むのに必要な時間:およそ 3 分

はじめに

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.1Qt 4.2~4.4
2.0Qt 4.5

表2 Qt Linguistが新たに扱うXML要素

新XML要素説明
extracomment参考情報としてだけのためのコメントを格納
translatorcomment翻訳者のコメントを格納
extra-*ユーザ拡張
oldsourcelupdateの推測マージで元の値を格納
oldcomment同上

コマンドツール関連

メッセージ翻訳のためのGUIツールQt Linguistを中心とする表3のような翻訳用のツールがあります。

表3 翻訳ツール一覧

ツール説明
Qt Linguist翻訳ファイル(.ts)の翻訳のためのGUIツール
lupdateソースコードから翻訳対象のメッセージテキストを抽出する。
lrelease翻訳ファイルからコンパイル済みQt翻訳バイナリファイル(.qm)を作成する。
lconvertQt 4.5で追加。翻訳に関連するファイルの変換をする。

このQt Linguistツールチェーンのコマンドツールも改良されています。

lconvertコマンド

Qt 4.5で新たに追加されたコマンドラインプログラムlconvertは,翻訳関連のいろいろなファイルのフォーマット変換をするツールです。表4のファイルが扱えます。バイナリの.qmファイルがテキストフォーマットの.tsなどに変換できるようになったのは,内容を確かめるのにとても便利です。

表4 lconvertが扱えるファイル

サフィックス入力出力ファイルフォーマット
qmコンパイル済みQt翻訳バイナリファイル
ts11Qt翻訳ファイル(フォーマット 1.1)
ts20Qt翻訳ファイル(フォーマット 2.0)
tsQt翻訳ファイル(最新フォーマット)
qphQt Linguistフレーズブック(翻訳対応表)
poGNU gettextローカライゼーションファイル
uiQt Designerフォームファイル
juiQt Jambiフォームファイル
cppC++ソースファイル
javaJavaソースファイル
jsQt Scriptソースファイル
xlfXLIFFローカライゼーションファイル

 .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 日本語とフランス語のメニュー見出しを同時に開く

図1 日本語とフランス語のメニュー見出しを同時に開く

複数の翻訳ファイルを閉じて,1つの翻訳ファイルを新たに開いても,翻訳結果を表示するソーステキストの入力欄が複数の翻訳ファイルのままになってしまうという問題がありました。年末にリリース予定の4.6では,この問題が修正されています。

言語設定

翻訳ファイル設定で,翻訳先の言語に加えて,原文の言語の設定ができるようになり,どのように言語を翻訳するかを区別できるようになりました。

翻訳ファイル設定ダイアログ図2は,翻訳先の言語が設定されていない翻訳ファイルを開いたときに表示されます。また,「メニューバー」「編集」「Translation File Settings...」と操作しても表示できます。

図2 翻訳ファイル設定ダイアログ

図2 翻訳ファイル設定ダイアログ

「メニューバー」「フレーズ」「フレーズブックを編集」と辿ってフレーズブックを選択すると表示されるフレーズブックの編集画面に「Settings...」ボタンが追加され,言語設定ができるようにもなっています。

著者プロフィール

杉田研治(すぎたけんじ)

1955年生まれ。東京都出身。株式会社SRAに勤務。プログラマ。

仕事のほとんどをMac OS XとKubuntu KDE 4でQtと供に過ごす。

コメント

コメントの記入