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:
@@ -26,7 +26,9 @@ in locale.
|
||||
%changelog
|
||||
* Wed Aug 19 2026 Carlo Baratto <carlo@carlobaratto.it> - 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
|
||||
|
||||
+13
-5
@@ -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";
|
||||
|
||||
Reference in New Issue
Block a user