diff --git a/rpm/harbour-calibreweb.spec b/rpm/harbour-calibreweb.spec index be2404a..9c5d134 100644 --- a/rpm/harbour-calibreweb.spec +++ b/rpm/harbour-calibreweb.spec @@ -26,7 +26,9 @@ in locale. %changelog * Wed Aug 19 2026 Carlo Baratto - 0.2.0-1 - Selettore lingua nelle impostazioni (System/English/Italiano, applicata al - riavvio; QTranslator in main.cpp, pattern quill) + riavvio; QTranslator in main.cpp, pattern quill). Catalogo .qm nel data dir + dell'app (/usr/share/harbour-calibreweb/translations, il validatore RPM + rifiuta /usr/share/translations) - Fix 'Close book': pop fino alla prima pagina (popTo(null) non affidabile) - Localizzazione: lingua di default inglese (qsTr ovunque), catalogo italiano harbour-calibreweb_it.ts/.qm installato in /usr/share/translations @@ -73,9 +75,10 @@ mkdir -p %{buildroot}%{_datadir}/applications install -m 0644 %{SOURCE1} %{buildroot}%{_datadir}/applications/%{name}.desktop desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}.desktop || true -# Italian translation: installed from the spec, like the desktop file. -mkdir -p %{buildroot}/usr/share/translations -install -m 0644 %{_builddir}/%{name}_it.qm %{buildroot}/usr/share/translations/ +# Italian translation: installed in the app data dir (the RPM validator +# rejects /usr/share/translations); main.cpp loads it from there. +mkdir -p %{buildroot}%{_datadir}/%{name}/translations +install -m 0644 %{_builddir}/%{name}_it.qm %{buildroot}%{_datadir}/%{name}/translations/ %files %defattr(-,root,root,-) @@ -84,4 +87,4 @@ install -m 0644 %{_builddir}/%{name}_it.qm %{buildroot}/usr/share/translations/ %{_datadir}/icons/hicolor/86x86/apps/%{name}.png %{_datadir}/icons/hicolor/108x108/apps/%{name}.png %{_datadir}/%{name}/qml -/usr/share/translations/%{name}*.qm +%{_datadir}/%{name}/translations/%{name}*.qm diff --git a/src/main.cpp b/src/main.cpp index ed04d35..c97f65d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,5 +1,6 @@ #include #include +#include #include #include #include @@ -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 trs = app->findChildren(); 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";