Qtを使用していて、Qtウィジェットで表示されている「ネイティブ」のテキストを翻訳したいと思っています。 「ネイティブに表示されたテキスト」では、テキストの編集(コピー、貼り付けなど)のコンテキストメニューに表示されているものを参照しています。ここでQt - 組み込みの翻訳を使用する
は、私がすでにやったです:
#include <QApplication>
#include <QDebug>
#include <QTranslator>
#include <QFile>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTranslator translator;
if(translator.load("qt_fr.qm", QApplication::applicationDirPath())) {
qDebug() << a.installTranslator(&translator);
}
qDebug() << QFile::exists(QApplication::applicationDirPath() + "/qt_fr.qm"); // just to debug file existence
// MainWindow w; // not related to my question
// w.showMaximized(); // neither is this
return a.exec();
}
qt_fr.qmファイルはQt5.6.2とMinGWのユーザーのためのpath_to_qt/Qt5.6.2/5.6/mingw49_32 /翻訳に位置しています。上記のファイルを実行中のソフトウェアディレクトリにコピーしますが、トランスレータは常にそのファイルをロードできません。しかし、自分自身のqmファイル(Qt lupdateとlreleaseツールを使って.tsファイルから構築)を使用すると、qmファイルが適切に読み込まれ、インストールされます。
私に行方不明または間違っていることがありますか?
Qtは最初に接尾辞(デフォルトでは '.qm')を追加するので、ファイル名の引数から削除することをお勧めします。ドキュメントでは、第1引数として 'QLocale'を受け付けるオーバーロードを使用することを推奨しています。たとえば、 'translator.load(QLocale :: French、" qt "、QApplication :: applicationDirPath())'などです。 –
確かにそうです。ファイル名に拡張子が追加されていなければ、ロードプロセスは簡単です。しかし、ロードが失敗したときにQtがバックトラックして再試行するので、.qm拡張を追加しても失敗することはありません。 QLocaleでバージョンも試しましたが、それでも動作しません。他の提案は歓迎されるでしょう。 – misterFad
さらに、QLocaleを使用すると、ロードするqmファイルが、ソフトウェアを実行しているOSにインストールされている言語と一致することが前提となります。しかし、[ときどき](https://camo.githubusercontent.com/8e48efe46e756e80f900584241c5c108ebc7fcef/68747470733a2f2f757365722e6f632d7374617469632e636f6d2f75706c6f61642f323031372f30312f32362f31343835343536393833393335385f696d6734372e706e67)(例えば)ドイツ語でありながら、私たちは英語を選択することができます。 私の独自の.qmファイル(lupdate&lrelease)を使用すると、上記の私のスニペットがうまく動作しますが、Qtの組み込み.qmファイルの読み込みには、読み込みプロセスが失敗します。 – misterFad