繁体   English   中英

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

[英]Find the directory of a translation with Qt creator

我是Qt创作者的新手,最近学习了如何使用Qt语言学家。 当我要加载翻译时,我需要指定一个在计算机上没有问题的目录。 但是,当我将这个Qt项目交给其他人时,目录已更改,翻译未出现。

我尝试使用诸如QDir :: currentPath()之类的不同方法,但它为我提供了包含应用程序的构建文件夹的路径。 我需要访问的是项目所在的文件夹,其中包含翻译后的文件和翻译后的二进制文件(file_fr.qm,file_es.qm)。

预先感谢您的帮助 :-)

解:

为了获取可执行文件的路径,请使用以下方法:

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() ,但是其结果是当前的工作目录,而不是包含可执行文件的目录。

我设法通过Qt资源系统做到这一点,如果您正在寻找一个简短的教程 ,则可以找到一个说明如何通过跟随链接来设置资源的教程

这也是我的代码,以防它对某些人有所帮助:

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

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

谢谢你的建议 :-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM