した方法を紹介します。Quickについての記述はありません。筆者は趣味でQtを使っている個人開発者です。出来る限り間違いなどがないよう検証や調査を行った上で記事にしていますが、誤りやわかりにくい点などを見つけられましたら、お気軽にコメントやTwitterにてご指摘頂けると嬉しいです。周辺知識Qtマルチプラットフォームアプリケーション開発のためのフレームワークです。基本的にはC++ですが、PythonからQtを使えるpyqtというものもかなり人気があります。Quick)等を持ちます。LinguistとはQtアプリケーションを翻訳するための仕組みです。アプリケーション側に多少の手を加える必要はありますが、アプリケーション上に表示する文字列を手軽に翻訳することが可能です。以下にQtアプリケーション国際化の概要図を示します。緑色の矢印・文字部分が、今回主に解説する範囲です。翻訳の流れを以下箇条書きにします。アプリケーションを開発する。Linguistを使って、翻訳作業を行う(tsファイルへの追記)lreleaseコマンドで、qmファイルを生成する「日本語(ja)」「フランス語(fr)」の翻訳を作る場合を想定して、具体的な手順、詳細について以下で見ていきます。アプリケーションを開発プロジェクトファイルの設定lupdateが生成するtsファイルの種類と場所を指定するため、*.proファイルに、以下の行を追加します。translate/qcss_fr.tsqcss_にあたる部分は、なんでも構いません。アプリケーション名からとるとよいでしょう。実は.tsという拡張子もなんでも良いのですが、慣例として.tsというファイル名がとられることが多いようです。ファイル構成をきれいにするために、tsファイルの配置先をtranslate/フォルダ以下にしていますが、これもどこでもOKです。翻訳用の数行のコードを初期化部分に記述するアプリケーションのすみずみまで翻訳するために、QApplication::installTranslator()を用います。ここで注意が必要なのは、translator.load()する対象の指定方法です。日本語ならtranslate/qcss_ja、フランス語ならtranslate/qcss_frというように、拡張子部分は付けずに指定するようにしましょう。a.exec();}ちなみに、この例ではloadする対象をtranslate/qcss_jaのように固定しているため、このままでは言語切替にビルドが必要になってしまいます。起動時に一度だけ設定ファイルから読み込むようにするなら、再ビルドの必要はなくダイナミックに言語切替が可能です。筆者のアプリケーションのこのあたりを見て頂けるとわかりやすいかと思います。起動中に言語切替を行いたい場合、やや複雑になります。言語切替のイベントをキャッチする等すればできなくはないようですが、どうしても必要なわけではないのであれば、無難に再起動しましょう。多言語化したい文字列をtr()で囲む他言語に翻訳したい文字列は、すべてtr()で囲みます。lupdateは、tr()を目印にして文字列を集めます。tr()の内容は、かならず文字列リテラルになるようにしましょう。以下の例のようにしてください。何もしなくてOKlupdateは、*.uiファイルに含まれる文字列を自動的に翻訳対象としてみなします。*.uiファイルの文字列をわざわざtr()で囲んだりする必要はありません。QObjectの外で翻訳したい:Q_DECLARE_TR_FUNCTIONStr()はQObjectのメンバであるため、そのままではQObjectを継承しないクラスでは使えません。そんなクラスでも、ヘッダに以下のように追記するだけで、tr()を使った要翻訳指定を行うことができます。lreleaseを使って翻訳作業を行っていきます。GUI上で以下のメニュー階層から起動することもできます。Linguistが並ぶはずなのですが、筆者の環境ではそのようになっていません...その場合、Qtのbinフォルダにあるlinguist.exeから起動しましょう。アプリケーション中の文字列の抽出[ツール]→[外部]→[Linguist]→[lupdate]でlupdateを実行できます。「全体メッセージ」ペイン(Alt+6で開きます)に実行結果が表示されます。translate/フォルダに、qcss_ja.tsとqcss_fr.tsが生成されていれば成功です。Linguistを起動します。[ファイル]→[開く]で、生成したtsファイルを開きます。すると、このような画面となります。非常に直感的でわかりやすいですね。これはフォームクラス(*.ui)の翻訳画面なので、対応する画面のモックが表示されています。翻訳対象がフォームをもたないクラスの場合、対象部分のソースコードが表示されます。文脈を加味して翻訳が行えるのは非常に便利ですね。訳」の部分に翻訳を記入し、チェックマークを押すと翻訳完了となり、次のフレーズに移動します。翻訳の必要がない場合は、そのままチェックマークを押しましょう。これをtsファイルの数だけ繰り返せば、翻訳作業は完了です。翻訳のリリース[ツール]→[外部]→[Linguist]→[lrelease]でtsファイルからqmファイルへの変換が行えます。翻訳作業後、これを忘れないようにしましょう。これで翻訳作業は完了です。言語を切り替えて遊んでみましょう。追加・修正への対応lupdateは自動マージ機能付き画面に追加項目が発生した場合や、文言の変更が発生した場合、lupdateを再度行います。「これまで翻訳したtsファイルが上書きされてしまうのでは?」と心配になるかもしれませんが、問題ありません。追加された文言はちゃんと追加されますし、変更されたものについては、変更前の文言も併せて掲載されます。Linguistで開くと、以下のようにわかりやすく未翻訳部分が表示されます。開発作業→lupdate→Linguistで翻訳→lreleaseというサイクルをまわしていくことで、つねに翻訳を最新に保つことができます。tr()で囲むという手間はありますが、周辺ツールが充実しているため、そのあとはカンタンです。挑戦してみてください。アプリケーションの紹介ブログに挿入するスクリーンショットを作成するためのC++アプリです。アプリケーションにしました。よければ参考にどうぞ。日本語コードGitHub上のリポジトリにて公開しています。コメントをキャンセルメールアドレスが公開されることはありません。