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
|
%changelog
|
||||||
* Wed Aug 19 2026 Carlo Baratto <carlo@carlobaratto.it> - 0.2.0-1
|
* Wed Aug 19 2026 Carlo Baratto <carlo@carlobaratto.it> - 0.2.0-1
|
||||||
- Selettore lingua nelle impostazioni (System/English/Italiano, applicata al
|
- 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)
|
- Fix 'Close book': pop fino alla prima pagina (popTo(null) non affidabile)
|
||||||
- Localizzazione: lingua di default inglese (qsTr ovunque), catalogo
|
- Localizzazione: lingua di default inglese (qsTr ovunque), catalogo
|
||||||
italiano harbour-calibreweb_it.ts/.qm installato in /usr/share/translations
|
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
|
install -m 0644 %{SOURCE1} %{buildroot}%{_datadir}/applications/%{name}.desktop
|
||||||
desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}.desktop || true
|
desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}.desktop || true
|
||||||
|
|
||||||
# Italian translation: installed from the spec, like the desktop file.
|
# Italian translation: installed in the app data dir (the RPM validator
|
||||||
mkdir -p %{buildroot}/usr/share/translations
|
# rejects /usr/share/translations); main.cpp loads it from there.
|
||||||
install -m 0644 %{_builddir}/%{name}_it.qm %{buildroot}/usr/share/translations/
|
mkdir -p %{buildroot}%{_datadir}/%{name}/translations
|
||||||
|
install -m 0644 %{_builddir}/%{name}_it.qm %{buildroot}%{_datadir}/%{name}/translations/
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%defattr(-,root,root,-)
|
%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/86x86/apps/%{name}.png
|
||||||
%{_datadir}/icons/hicolor/108x108/apps/%{name}.png
|
%{_datadir}/icons/hicolor/108x108/apps/%{name}.png
|
||||||
%{_datadir}/%{name}/qml
|
%{_datadir}/%{name}/qml
|
||||||
/usr/share/translations/%{name}*.qm
|
%{_datadir}/%{name}/translations/%{name}*.qm
|
||||||
|
|||||||
+13
-5
@@ -1,5 +1,6 @@
|
|||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QGuiApplication>
|
#include <QGuiApplication>
|
||||||
|
#include <QLocale>
|
||||||
#include <QQuickView>
|
#include <QQuickView>
|
||||||
#include <QQmlContext>
|
#include <QQmlContext>
|
||||||
#include <QTranslator>
|
#include <QTranslator>
|
||||||
@@ -16,10 +17,17 @@ Q_DECL_EXPORT int main(int argc, char *argv[])
|
|||||||
|
|
||||||
Settings settings;
|
Settings settings;
|
||||||
|
|
||||||
// User-chosen language (Settings -> Language). "system" = Sailfish UI
|
// User-chosen language (Settings -> Language). "system" = follow the
|
||||||
// language (libsailfishapp already installed its translator). "en" =
|
// Sailfish UI language. "en" = force English. "it" = force Italian.
|
||||||
// force English (remove all translators). "it" = force Italian.
|
// The .qm lives in the app data dir (the RPM validator rejects
|
||||||
const QString lang = settings.language();
|
// /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") {
|
if (lang == "en" || lang == "it") {
|
||||||
const QList<QTranslator *> trs = app->findChildren<QTranslator *>();
|
const QList<QTranslator *> trs = app->findChildren<QTranslator *>();
|
||||||
foreach (QTranslator *t, trs) {
|
foreach (QTranslator *t, trs) {
|
||||||
@@ -29,7 +37,7 @@ Q_DECL_EXPORT int main(int argc, char *argv[])
|
|||||||
if (lang == "it") {
|
if (lang == "it") {
|
||||||
QTranslator *translator = new QTranslator(app);
|
QTranslator *translator = new QTranslator(app);
|
||||||
if (translator->load(QStringLiteral("harbour-calibreweb_it"),
|
if (translator->load(QStringLiteral("harbour-calibreweb_it"),
|
||||||
QStringLiteral("/usr/share/translations"))) {
|
QStringLiteral("/usr/share/harbour-calibreweb/translations"))) {
|
||||||
app->installTranslator(translator);
|
app->installTranslator(translator);
|
||||||
} else {
|
} else {
|
||||||
qWarning() << "harbour-calibreweb: cannot load harbour-calibreweb_it.qm";
|
qWarning() << "harbour-calibreweb: cannot load harbour-calibreweb_it.qm";
|
||||||
|
|||||||
Reference in New Issue
Block a user