我是Qt创作者的新手,最近我学会了如何使用Qt语言学家。 当我想加载翻译时,我需要指定一个在我的计算机上没有问题的目录。但是,当我将此Qt项目提供给其他人时,目录会发生变化,并且不会出现翻译。
我尝试使用不同的方法,例如QDir :: currentPath(),但它给了我包含app的build文件夹的路径。我需要访问的是项目与翻译文件和翻译后的二进制文件(file_fr.qm,file_es.qm)的文件夹。
提前感谢您的帮助: - )
答案 0 :(得分:1)
要获取可执行文件的路径,请使用以下方法:
QCoreApplication::applicationDirPath()
您正在部署位于可执行路径的lang
文件夹中的翻译文件:
const QString LANGPATH(QCoreApplication::applicationDirPath() + "/lang");
QTranslator *translator = new QTranslator(this);
translator->load("file_fr.qm", LANGPATH);
QCoreApplication::installTranslator(translator);
您使用的是QDir::currentPath()
,但其结果是当前的工作目录,而不是包含可执行文件的目录。
答案 1 :(得分:1)
我设法使用Qt resource system,如果您正在寻找简短的tutorial,可以通过点击链接找到解释如何设置资源的内容。
这也是我的代码,如果它可以帮助你们中的一些人:
#include <QApplication>
#include "ClassGenerator.h"
#include "ClassCode.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QString locale = QLocale::system().name().section('_', 0, 0);
QTranslator translator;
translator.load(":/Translation/TPClassGenerator_"+locale+".qm");
app.installTranslator(&translator);
ClassGenerator Window;
Window.show();
return app.exec();
}
正如您所看到的,系统的语言已被检索并用于在文件夹资源中选择正确的翻译。
感谢您的建议: - )