【问题标题】:Find the directory of a translation with Qt creator使用 Qt creator 查找翻译目录
【发布时间】:2015-11-03 08:22:16
【问题描述】:

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

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

提前感谢您的帮助:-)

【问题讨论】:

  • 你试过Qt资源系统了吗?它将诸如翻译之类的资源编译到您的二进制文件中,因此您不必为不同机器上的不同路径而苦苦挣扎。

标签: c++ qt directory translation


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

【讨论】:

  • 我尝试了这种方法,但翻译后发布的二进制文件位于项目文件夹中,与包含可执行文件的文件夹不同。所以这个解决方案在我的情况下不起作用。
  • 为什么不简单地将翻译复制到可执行目录?您还可以在 .pro 文件的 TRANSLATIONS 部分中指定翻译的输出路径。
【解决方案2】:

我设法通过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();
}

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

感谢您的建议:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 2014-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多