Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
QTranslator检查_Qt - Fatal编程技术网

QTranslator检查

QTranslator检查,qt,Qt,如何检查加载了哪个带有翻译的文件?(当前加载的翻译) 我在main.c中加载了翻译,我想在MainWindow类中检查加载了哪个翻译。我认为使用Qt的方法无法做到这一点 最好的方法是在QTranslator周围编写一个包装器,并将所有加载的翻译文件存储在其中(一次可以加载多个翻译文件) 更糟糕的是,更简单的方法是使用假译文。大概是这样的: const QString check = tr("lang"); if (check == "en") { // it's english } el

如何检查加载了哪个带有翻译的文件?(当前加载的翻译)
我在main.c中加载了翻译,我想在MainWindow类中检查加载了哪个翻译。

我认为使用Qt的方法无法做到这一点

最好的方法是在
QTranslator
周围编写一个包装器,并将所有加载的翻译文件存储在其中(一次可以加载多个翻译文件)

更糟糕的是,更简单的方法是使用假译文。大概是这样的:

const QString check = tr("lang");
if (check == "en") {
    // it's english
} else if (check == "fr") {
    // it's french
}
...
根据,您仍然可以获取系统区域设置以加载相应的翻译文件。只需检查区域设置字符串的值:

#include <QLocale>

QString locale = QLocale::system().name();
#包括
QString locale=QLocale::system().name();

例如,英语是“en”,德语是“de”。

这真是个好主意!我在文件中有信息,但我只在main.c中打开并读取它。我不想在MainWindow类中打开该文件以及如何将信息转发到MainWindow类您可以更改MainWindow的构造函数。不幸的是,它不起作用,因为我有locale EN,但我想在DE中使用应用程序。