使用 Qt creator 查找翻译目录
Find the directory of a translation with Qt creator
我是Qt creator的新手,最近学习了如何使用Qt linguist。
当我想加载翻译时,我需要指定一个目录,这在我的计算机上不是问题。但是当我将这个 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 resource system, if you are looking for a short tutorial 做到了,您可以按照 link.
找到解释如何设置资源的方法
这也是我的代码,以防对你们中的某些人有所帮助:
#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();
}
如您所见,系统语言已被检索并用于在文件夹资源中选择正确的翻译。
感谢您的建议:-)
我是Qt creator的新手,最近学习了如何使用Qt linguist。 当我想加载翻译时,我需要指定一个目录,这在我的计算机上不是问题。但是当我将这个 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 resource system, if you are looking for a short tutorial 做到了,您可以按照 link.
找到解释如何设置资源的方法这也是我的代码,以防对你们中的某些人有所帮助:
#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();
}
如您所见,系统语言已被检索并用于在文件夹资源中选择正确的翻译。
感谢您的建议:-)