Load translations via qtutilities

This reduces the amount of code in Piano Booster and ensures
that all kinds of translations can be built-in.
This commit is contained in:
Martchus 2023-07-02 00:10:22 +02:00
parent 464b49d086
commit 3b703a6d48
3 changed files with 11 additions and 40 deletions

View File

@ -134,7 +134,7 @@ find_package(${PACKAGE_NAMESPACE_PREFIX}c++utilities${CONFIGURATION_PACKAGE_SUFF
use_cpp_utilities(VISIBILITY PUBLIC)
# find qtutilities
find_package(${PACKAGE_NAMESPACE_PREFIX}qtutilities${CONFIGURATION_PACKAGE_SUFFIX_QTUTILITIES} 6.11.0 REQUIRED)
find_package(${PACKAGE_NAMESPACE_PREFIX}qtutilities${CONFIGURATION_PACKAGE_SUFFIX_QTUTILITIES} 6.13.0 REQUIRED)
use_qt_utilities()
# configure prefix and data dir

View File

@ -31,6 +31,7 @@
#include <qtutilities/settingsdialog/optioncategorymodel.h>
#include <qtutilities/settingsdialog/qtsettings.h>
#include <qtutilities/settingsdialog/settingsdialog.h>
#include <qtutilities/resources/resources.h>
#include <QDebug>
#include <QSurfaceFormat>
@ -810,14 +811,8 @@ void QtWindow::loadTutorHtml(const QString & name)
}
void QtWindow::refreshTranslate(){
void QtWindow::refreshTranslate() {
#ifndef NO_LANGS
QString locale = m_settings->selectedLangauge();
qApp->removeTranslator(&translator);
qApp->removeTranslator(&translatorMusic);
qApp->removeTranslator(&qtTranslator);
// save original
if (listWidgetsRetranslateUi.size()==0){
QList<QWidget*> l2 = this->findChildren<QWidget *>();
@ -841,34 +836,14 @@ void QtWindow::refreshTranslate(){
}
}
const auto translationsDir = Util::dataDir(QStringLiteral("translations"));
ppLogInfo("Translations loaded from '%s'", qPrintable(translationsDir));
// set translator for app
auto ok = true;
if (!translator.load(QSTR_APPNAME + QString("_") + locale , translationsDir))
ok = ok & translator.load(QSTR_APPNAME + QString("_") + locale, QApplication::applicationDirPath());
qApp->installTranslator(&translator);
// set translator for music
if (!translatorMusic.load(QString("music_") + locale , translationsDir))
if (!translatorMusic.load(QString("music_") + locale, QApplication::applicationDirPath() + "/translations/"))
ok = ok & translatorMusic.load(QString("music_") + locale, QApplication::applicationDirPath());
qApp->installTranslator(&translatorMusic);
// set translator for default widget's text (for example: QMessageBox's buttons)
#ifdef __WIN32
ok = ok & qtTranslator.load("qt_"+locale, translationsDir);
#elif QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
ok = ok & qtTranslator.load("qt_"+locale, QLibraryInfo::path(QLibraryInfo::TranslationsPath));
#else
ok = ok & qtTranslator.load("qt_"+locale, QLibraryInfo::location(QLibraryInfo::TranslationsPath));
#endif
qApp->installTranslator(&qtTranslator);
if (!ok) {
qDebug() << "Unable to load all translations";
}
static const auto &translationsDir = [] {
return QtUtilities::TranslationFiles::additionalTranslationFilePath() = Util::dataDir(QStringLiteral("translations"));
}();
const auto locale = m_settings->selectedLangauge();
QtUtilities::TranslationFiles::clearTranslationFiles();
QtUtilities::TranslationFiles::loadApplicationTranslationFile(QString(), QSTR_APPNAME, locale);
QtUtilities::TranslationFiles::loadApplicationTranslationFile(QString(), QStringLiteral("music"), locale);
QtUtilities::TranslationFiles::loadQtTranslationFile({QStringLiteral("qtbase")}, locale);
// retranslate UI
QList<QWidget*> l2 = this->findChildren<QWidget *>();

View File

@ -207,10 +207,6 @@ private:
GuiTopBar *m_topBar;
QTextBrowser *m_tutorWindow;
QTranslator translator;
QTranslator translatorMusic;
QTranslator qtTranslator;
QMap<QWidget*,QMap<QString,QString>> listWidgetsRetranslateUi;
QMap<QAction*,QMap<QString,QString>> listActionsRetranslateUi;