使用Qt创建者查找翻译目录

时间:2015-08-11 07:55:44

标签: c++ qt directory translation

我是Qt创作者的新手,最近我学会了如何使用Qt语言学家。 当我想加载翻译时,我需要指定一个在我的计算机上没有问题的目录。但是,当我将此Qt项目提供给其他人时,目录会发生变化,并且不会出现翻译。

我尝试使用不同的方法,例如QDir :: currentPath(),但它给了我包含app的build文件夹的路径。我需要访问的是项目与翻译文件和翻译后的二进制文件(file_fr.qm,file_es.qm)的文件夹。

提前感谢您的帮助: - )

2 个答案:

答案 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();
}

正如您所看到的,系统的语言已被检索并用于在文件夹资源中选择正确的翻译。

感谢您的建议: - )