Qt Локализация QMainWindow

0

В настоящее время моя папка проекта настроена следующим образом:

   -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 (я скопировал их в корневой папке вывода сборки)

Теги:
qt
localization

1 ответ

0
Лучший ответ

возможно, вы предоставили перевод, но он не обозначен как завершенный. Проверьте app_jp.ts (это xml), у вас будут записи с type="unfinished". Очистите этот флаг. Вероятно, вы можете сделать это также из инструмента Qt Linguist (я не помню, где этот параметр).

Проверьте этот учебник.

Также добавьте несколько журналов (чтобы убедиться, что переводчик был правильно загружен):

bool translatorLoaded = translator.load("app_jp");
if (!translatorLoaded)
    qWarrning("Problem loading translation file");
  • 0
    Я пометил их как завершенные, когда я добавил qWarning, я никогда не мог заставить его быть правдой: pastebin.com/L3L6TMTq
  • 0
    если он никогда не возвращает true, это означает, что эти * .qm файлы не могут быть найдены. Я предполагаю, что вы используете Qt Creator с опцией "Построить в другом месте". Убедитесь, что эти файлы находятся в том же месте, где находится исполняемый файл (или отключите «сборка в другом месте»).
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню