Qt Localization QMainWindow

Qt Localization QMainWindow

本文关键字:QMainWindow Localization Qt      更新时间:2023-10-16

我的项目文件夹目前是这样设置的:

   -root
   ---[source files]
   ---Translations
   ------app_en.ts
   ------app_en.qm
   ------app_fr.ts
   ------app_fr.qm
   ------app_jp.ts
   ------app_jp.qm

我的。pro文件:

#-------------------------------------------------
#
# Project created by QtCreator 2014-03-18T15:15:40
#
#-------------------------------------------------
QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = TestApp
TEMPLATE = app

SOURCES += main.cpp
        mainwindow.cpp
TRANSLATIONS=Translations/app_en.ts
             Translations/app_fr.ts
             Translations/app_jp.ts
CODECFORSRC   = UTF-8
HEADERS  += mainwindow.h
FORMS    += mainwindow.ui

在我的main.cpp中,我试图强制翻译成JP:

#include "mainwindow.h"
#include <QApplication>
#include <QTranslator>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTranslator translator;
    translator.load("app_jp");
    a.installTranslator(&translator);
    MainWindow w;
    w.show();
    return a.exec();
}

但是主窗口仍然是英文的。也许我误解了文档,但是我们如何为应用程序强制使用特定的本地?我的构建输出文件夹中有.qm文件(我将它们复制到构建输出文件夹的根目录中)

可能您提供了翻译,但没有标记为完成。检查app_jp.ts(它是一个xml),您将有type="unfinished"的条目。清除这面旗帜。也许你也可以从Qt语言工具(我不记得这个选项在哪里)。

查看本教程

还要添加一些日志(以验证translator是否正确加载):

bool translatorLoaded = translator.load("app_jp");
if (!translatorLoaded)
    qWarrning("Problem loading translation file");