1.はじめに
翻訳者を使用する利点
1. qtがmsvcコンパイラを使用する場合、中国語は文字化けした文字を表示します。これは、翻訳を使用することで効果的に解決できます。
2.インターフェイスのテキストプロンプトは、多くの場合、変更する必要があります。ソースコードを変更せずに、翻訳ファイルを再公開するだけで済みます。
2.翻訳プロセス
1.構成:ProjectproがTRANSLATIONSに追加されます
TRANSLATIONS += xxx_zh.ts \
xxx_en.ts
2.翻訳するテキストはtr()に含める必要があります
ui->ribbonTabWidget->addTab(tr("Project"));
ui->ribbonTabWidget->addTab(tr("Setting"));
ui->ribbonTabWidget->addTab(tr("Basic tools"));
ui->ribbonTabWidget->addTab(tr("Advanced tools"));
3.更新:cmdを開き、lupdate xxx.proを実行して、ソースコードから翻訳するテキストを抽出します
注:qtでcmdを使用する必要があります
4.翻訳:翻訳ツールQt Linguistを使用して、tsファイルを開き、翻訳作業を完了します
5.公開:Qt Linguist file = "公開、xxx.qmを生成
6.main.cppに翻訳ファイルをロードします
QTranslator appTranslator;
appTranslator.load(app_path + "/translations/czvision_zh.qm");
app.installTranslator(&appTranslator);
3.よくある質問
1.QDialogButtonBoxの変換は有効になりません
これはqtのバグです。https://bugreports.qt.io/browse/QTBUG-39180
解決策は次のとおりです。src/qttranslations/ translations / qt_zh_CN.tsを編集し、QDialogButtonBoxをQPlatformThemeに置き換えて、再公開します。
2.複数のプロプロジェクト、複数の翻訳の問題、翻訳者の定義が有効にならない
解決策:複数の翻訳者を定義する必要があり、1人を共有することはできません
QTranslator qtTranslator;
QTranslator appTranslator;
QTranslator coreTranslator;
qtTranslator.load(app_path + "/translations/qt_zh_CN.qm");
appTranslator.load(app_path + "/translations/czvision_zh.qm");
coreTranslator.load(app_path + "/translations/CZCore_zh.qm");
app.installTranslator(&qtTranslator);
app.installTranslator(&appTranslator);
app.installTranslator(&coreTranslator);
3. QObjectを継承するクラスのみがtr()関数を使用できます。Qt以外のクラスを変換するにはどうすればよいですか?
回避策:QCoreApplication :: tr()を使用し、
splash.showProgressMessage(1, QCoreApplication::tr("Load config file"));