В настоящее время моя папка проекта настроена следующим образом:
-root
---[source files]
---Translations
------app_en.ts
------app_en.qm
------app_fr.ts
------app_fr.qm
------app_jp.ts
------app_jp.qm
Мой профайл:
#-------------------------------------------------
#
# 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 Linguist (я не помню, где этот параметр).
Проверьте этот учебник.
Также добавьте несколько журналов (чтобы убедиться, что переводчик был правильно загружен):
bool translatorLoaded = translator.load("app_jp");
if (!translatorLoaded)
qWarrning("Problem loading translation file");