Catalogo .qm nel data dir dell'app (/usr/share/harbour-calibreweb/translations) e caricamento esplicito in main.cpp con risoluzione lingua system via QLocale — il validatore RPM rifiuta /usr/share/translations

This commit is contained in:
2026-08-19 16:30:53 +02:00
parent d8584f2de4
commit 8b7af5c5e0
2 changed files with 21 additions and 10 deletions
+13 -5
View File
@@ -1,5 +1,6 @@
#include <QDebug>
#include <QGuiApplication>
#include <QLocale>
#include <QQuickView>
#include <QQmlContext>
#include <QTranslator>
@@ -16,10 +17,17 @@ Q_DECL_EXPORT int main(int argc, char *argv[])
Settings settings;
// User-chosen language (Settings -> Language). "system" = Sailfish UI
// language (libsailfishapp already installed its translator). "en" =
// force English (remove all translators). "it" = force Italian.
const QString lang = settings.language();
// User-chosen language (Settings -> Language). "system" = follow the
// Sailfish UI language. "en" = force English. "it" = force Italian.
// The .qm lives in the app data dir (the RPM validator rejects
// /usr/share/translations), so libsailfishapp's auto-load cannot be
// used: resolve the language here and install our own translator.
QString lang = settings.language();
if (lang == "system") {
const QString sys = QLocale::system().name();
lang = sys.startsWith(QLatin1String("it")) ? QStringLiteral("it")
: QStringLiteral("en");
}
if (lang == "en" || lang == "it") {
const QList<QTranslator *> trs = app->findChildren<QTranslator *>();
foreach (QTranslator *t, trs) {
@@ -29,7 +37,7 @@ Q_DECL_EXPORT int main(int argc, char *argv[])
if (lang == "it") {
QTranslator *translator = new QTranslator(app);
if (translator->load(QStringLiteral("harbour-calibreweb_it"),
QStringLiteral("/usr/share/translations"))) {
QStringLiteral("/usr/share/harbour-calibreweb/translations"))) {
app->installTranslator(translator);
} else {
qWarning() << "harbour-calibreweb: cannot load harbour-calibreweb_it.qm";