目次

はじめに

サンプルコード
注意
免責事項
表記関係について
底本について

第1章 Qtとは

1.1 Qtについて
1.2 Qtで作成できる GUI フレームワークについて

第2章 Qtでの多言語化の概要

2.1 多言語化の仕組みについて
2.2 lupdateの使い方
2.3 lreleaseの使い方
2.4 lconvertの使い方
2.5 翻訳ツールQt Linguistの使い方

第3章 翻訳ファイルのプロジェクトファイルへの追加と使用方法

3.1 Qtプロジェクトファイルへ出力する翻訳ファイルの指定を追加
3.2 Qt Creatorからの翻訳ファイル(拡張子.ts)の作成・更新
3.3 Qt翻訳バイナリファイル(.qm)をリソースファイルへ追加
3.4 起動時に各環境に応じた多言語化を行う。

第4章 Qt Linguistの使い方

4.1 翻訳ファイルの読み込み
4.2 Qt Linguistでの翻訳状況の表示
4.3 フレーズブックについて
4.4 文字の翻訳
4.5 翻訳時の画面と該当箇所のコード表示
4.6 翻訳の検証
4.7 翻訳ファイルの保存

第5章 コード内の文字列の多言語化

5.1 C++ Code内の文字列を多言語化
5.2 QML Code内の文字列を多言語化
5.3 Python Code内の文字列を多言語化

第6章 動的な言語表示の切り替え

6.1 Qt Widgetsでの動的な言語表示切り替え
6.2 Qt Quickでの動的な言語表示切り替え

第7章 翻訳ファイルの自動生成と翻訳対象文字列リテラルの自動補完機能

7.1 lrelease自動実行
7.2 lupdateの自動実行
7.3 Qt翻訳対象文字列の修飾

はじめに

 本書を手に取っていただき、ありがとうございます。

 趣味で作成したアプリケーションや、企業などで販売するアプリケーションをできるだけ多くの人に使ってもらいたいと考えた場合に、アプリケーションの多言語化に対応することが必要になってくると思います。

 本書では、クロスプラットフォームフレームワークであるQtを使用した多言語化に関する内容をまとめた一冊になっています。Qtの強みである、

 ・さまざまな言語を使用できる、ユニコードのサポート。

 ・ユーザーインターフェース画面の翻訳が簡単にできるTool。

 ・コード内の文字列を多言語化できる簡単な仕組み。

を中心に解説しています。


 本書が皆さんの開発の助けとなり、皆さんが作成するアプリケーションを世の中の多くの人に使用してもらう手助けになればと思っています。

 またQtを知らない方も、本書を読んでQtに興味を持って頂ければ幸いです。

サンプルコード

 本書のサンプルソースコードは、次のURLから取得することが可能です。

 https://github.com/KazuoASANO/make_multilanguage_application_with_qt

注意

 1.本書は著者が独自に調査した結果を著述したものです。

 2.できるかぎり内容に万全を期して作成しましたが、ご不審な点や誤り・記載漏れなどお気づきの点がありましたら、Twitterにて、ハッシュタグ#qtjpをつけてつぶやいてもらうと、ひょっとしたら著者が見る場合があります。しかしながらモノグサな著者の為、回答をすることは無いかもしれません。

 3.本書に記載されたURLやソフトウェアの内容は、将来予告なく変更される場合があります。

免責事項

 本書に記載する内容は筆者の所属する組織の公式見解ではありません。また、本書は可能な限り正確を期すように努めていますが、筆者がその内容を保証するものではありません。そのため、本書の記載内容に基づいた読者の行為、及び読者が被った損害について筆者はなんら責任を負うものではありません。

表記関係について

 本書に記載されている会社名、製品名などは、一般に各社の登録商標または商標、商品名です。会社名、製品名については、本文中ではc、R、?マークなどは表示していません。

底本について

 本書籍は、技術系同人誌即売会「技術書典」で頒布されたものを底本としています。

第1章 Qtとは

本章では、まず Qtについて知り、 QtのGUI作成で使用されるC++と親和性の高いQt Widgetsと、アニメーション動作が簡単に作成できるScriptベースのQt Quickの概要について紹介します。

多言語対応の前準備である、GUIアプリケーションの開発手法を理解していきましょう。

1.1 Qtについて

 Qt (キュート)とは、クロスプラットフォームのアプリケーションフレームワークであり、GUI (グラフィカルユーザーインターフェイス)と、さまざまな機能を含んだライブラリを有するC++開発フレームワークです。また、IDE (総合開発環境)としてQt Creatorが用意されており、効率よく開発できる環境が用意されています。

 継続的な機能Up/バグ修正が、積極的におこなわれているのも特徴で、約半年に1回のリリース周期で新しいバージョンが更新されています。現在のバージョンは、Qt 5.12.6がリリースされています1

 Qt 5.12の場合、LTS (長期サポート版)(Long Time Support)となっており、3年のサポートが適用されています。今使用するなら、Qt5.12.6LTSがお勧めとなっています。

 C++で書かれているフレームワークであるものの、Ruby、Python、Perlなどから使用できるようにしたさまざまな言語バインディングのAPIがオープンソース等により提供されており、最近では、オフィシャルサポートとして、Pythonのバインディングである Qt for Python がリリースされています。

1.2 Qtで作成できる GUI フレームワークについて

 Qtを使用したGUIを作成する場合、Qt WidgetsとQt Quickというふたつの開発手法があります。次にふたつの開発手法の違いを説明します(表1.1)。

表1.1: GUIの開発手法
GUI開発手法 UI作成Tool 記述言語 拡張子
Qt Widgets Qt Designer XML(ただし UI作成Toolが自動生成) .ui
Qt Quick Qt Quick Designer QML .qml

1.2.1 Qt Widgets について

 昔からあるQtの開発手法であり、古典的なデスクトップスタイルを中心としたUI要素のセットが提供されているモジュールです。2

 C++とQt for Pythonの両方に非常に親和性が強く、Qt Creatorの機能であるQt DesignerでGUIが容易に作成できることが特徴となっています。

1.2.2 Qt Quick について

 QML (Qt Meta-Object Language)言語という、UIを記述するためのプログラミング言語を使ってGUIを作成するモジュールです。QML言語はCSSに似たシンタックスを持ち、宣言的なJSON風の構文でUIを記述することができます。またロジックの記述には JavaScriptを使うこともできます。

 Androidで使用されているマテリアルデザインのような、ビジュアルGUIを作成するUI要素のセットが提供されており、ユーザー動作に対してアニメーション化されたUIオブジェクトを簡単に作成することができます。3

 どちらのモジュールについても、Qt Creatorの機能であるデザインモードでGUIを作成することができます。また、Qt Widgetの作成ツールであるQt Designerについては、Pythonのパッケージ管理システムであるpip (Pip Installs Packages)を使用してPySide2 (Qt for Pythonのパッケージ名)をインストールすることにより、 "designer" という名称でインストールされます。

第2章 Qtでの多言語化の概要

Qtの特徴的な多言語化の仕組みを紹介し、コードベースで確認しながら翻訳作業ができるQt Linguistを含めたTool群について説明していきます。

2.1 多言語化の仕組みについて

 継続してソフト開発をおこなうアプリケーションの場合、使用するフレームワークによっては、ユーザー側であらかじめ多言語化の仕組みをソフトウェアの作りとして入れ込むことが多いと思います。
Qtの場合は、あらかじめフレームワーク内に多言語化をおこなう仕組みが含まれており、

 ・ユーザーインターフェースを作成するUI作成ツールであるDesigner。

 ・ソースコードに翻訳されたTextを返すマクロ。

を使用することにより、継続した開発においても単純な手順で多言語化をおこなうことが可能な仕組みとなっています。またQt LinguistというToolも提供しており、コードを書けないユーザーであっても翻訳ができるようになっています。

Qtにおけるアプリケーションの翻訳フローを次に示します(図2.1)。

図2.1: Qtにおける翻訳フロー

 これ以外にも、翻訳のために開発されたXMLベースのファイル形式XLIFFから、Qt用の翻訳ファイルに変換できるlconvertなどのツールが用意されています。

 Qt Linguistについては、翻訳をおこなう作業が発生する為、自動化することはできませんが、

 ・ソースコードから翻訳対象のメッセージテキストを抽出。

 ・翻訳ファイルをコンパイル済みQt翻訳バイナリファイル(.qm)に変換。

に関しては、プロジェクトファイルにあらかじめ登録することにより自動化することが可能となっています。本章では、多言語化の作業で使用するさまざまなツールの説明をしていきます。

試し読みはここまでです。
この続きは、製品版でお楽しみください。