12,964
回編集
(→未完成の翻訳) |
|||
86行目: | 86行目: | ||
== Qt Linguistのマニュアル : 開発者向け == | == Qt Linguistのマニュアル : 開発者向け == | ||
==== 翻訳におけるオーバーヘッド ==== | ==== 翻訳におけるオーバーヘッド ==== | ||
Qtでは、各ウィンドウのフレーズを作成時に翻訳することにより、翻訳する時のパフォーマンスコストを最小限に抑えている。<br> | |||
多くのQtソフトウェアでは、ウィンドウおよびダイアログは1度だけ作成されて、必要に応じて表示または非表示にすることがよくある。<br> | |||
<br> | <br> | ||
最初の翻訳が行われる時、翻訳されたウィンドウのランタイムオーバーヘッドは無い。<br> | 最初の翻訳が行われる時、翻訳されたウィンドウのランタイムオーバーヘッドは無い。<br> | ||
94行目: | 94行目: | ||
実行時に言語を切り替えることができるソフトウェアを設計することもできるが、開発者の介入をある程度必要とするため、実行時のパフォーマンスも犠牲になる。<br> | 実行時に言語を切り替えることができるソフトウェアを設計することもできるが、開発者の介入をある程度必要とするため、実行時のパフォーマンスも犠牲になる。<br> | ||
<br> | <br> | ||
==== Qtプロジェクトファイルでの翻訳ファイルの指定 ==== | |||
自動的に<code>lrelease</code>コマンドおよび<code>lupdate</code>コマンドを使用するには、<br> | 自動的に<code>lrelease</code>コマンドおよび<code>lupdate</code>コマンドを使用するには、<br> | ||
Qtプロジェクトファイルにおいて、変数<code>TRANSLATIONS</code>に対して各言語のエントリーが必要となる。<br> | Qtプロジェクトファイルにおいて、変数<code>TRANSLATIONS</code>に対して各言語のエントリーが必要となる。<br> | ||
103行目: | 103行目: | ||
これは、Qtプロジェクトファイルを読み込み、どのソースファイルに翻訳されるテキストが含まれているかを特定する。<br> | これは、Qtプロジェクトファイルを読み込み、どのソースファイルに翻訳されるテキストが含まれているかを特定する。<br> | ||
<br> | <br> | ||
この時、翻訳するソースコードファイルがQtプロジェクトファイルの変数<code>SOURCES</code>、変数<code>HEADERS</code>、変数<code>RESOURCE</code>に記述している必要がある。<br> | |||
記述されていないファイルのテキストは検出されないため、翻訳対象外となる。<br> | 記述されていないファイルのテキストは検出されないため、翻訳対象外となる。<br> | ||
SOURCES += mainwindow.cpp \ | SOURCES += mainwindow.cpp \ | ||
119行目: | 119行目: | ||
<br> | <br> | ||
ただし、Visual Studio等のIDEでは、標準で異なる文字コードを使用する。<br> | ただし、Visual Studio等のIDEでは、標準で異なる文字コードを使用する。<br> | ||
文字コードの問題を回避する方法として、ソースコードの文字コードをASCIIにして、他の文字を含む翻訳可能な文字列にはエスケープシーケンスを使用する方法がある。<br> | |||
label->setText(tr("F\374r \310lise")); | label->setText(tr("F\374r \310lise")); | ||
<br> | <br> | ||
138行目: | 138行目: | ||
ツールは1つの結合された翻訳ファイルを作成するため、文字列はC++/QMLからアクセス可能である。<br> | ツールは1つの結合された翻訳ファイルを作成するため、文字列はC++/QMLからアクセス可能である。<br> | ||
<br> | <br> | ||
Qtソフトウェアの国際化をサポートするクラスは、[https://doc.qt.io/qt-5/internationalization.html Internationalization with Qt (Qt5向け)]を参照する。<br> | |||
また、ソースコードを翻訳可能にする手順は、[https://doc.qt.io/qt-5/i18n-source-translation.html Writing Source Code for Translation (Qt5向けi18n)]と[https://doc.qt.io/qt-5/qtquick-internationalization.html Internationalization and Localization with Qt Quick (Qt5向け)]を参照する。<br> | |||
<br> | <br> | ||
翻訳が必要な各ソースコードは、翻訳者がそのテキストがソフトウェアのどこに出てくるかを特定するための文脈を必要とする。<br> | 翻訳が必要な各ソースコードは、翻訳者がそのテキストがソフトウェアのどこに出てくるかを特定するための文脈を必要とする。<br> | ||
149行目: | 149行目: | ||
==== 翻訳の準備 ==== | ==== 翻訳の準備 ==== | ||
ソフトウェアに必要なQMファイルは、<code>QTranslator</code>クラスを使用するローダコードが位置する場所に配置する必要がある。<br> | ソフトウェアに必要なQMファイルは、<code>QTranslator</code>クラスを使用するローダコードが位置する場所に配置する必要がある。<br> | ||
これは、一般的に、<code>QCoreApplication::applicationDirPath</code>メソッドからの相対パスを指定することで行われる。<br> | |||
<br> | <br> | ||
ソフトウェアのQMファイルがあり、かつ、システムにインストールされていないバージョンのQtが使用されている場合、QtのQMファイルも配置する必要がある。<br> | ソフトウェアのQMファイルがあり、かつ、システムにインストールされていないバージョンのQtが使用されている場合、QtのQMファイルも配置する必要がある。<br> |