0.4.0: interfaccia in italiano e inglese, scelta nelle impostazioni
L'inglese è la lingua sorgente delle stringhe; l'italiano sta nel catalogo translations/harbour-aira-it.ts (99 stringhe), che lupdate aggiorna e lrelease compila in build. Di serie la lingua del sistema, con ripiego sull'inglese. - nuova classe Translator: risolve la lingua prima di createView e allinea QLocale::setDefault, così anche i numeri seguono la lingua (23,0 °C in italiano, 23.0 °C in inglese) — le temperature passano da formatValue, non più dal toFixed() di JavaScript che metteva sempre il punto - Qt 5.6 non ha QQmlEngine::retranslate(): al cambio di lingua la radice QML viene ricaricata (setSource ricrea il componente anche a url invariata) - le etichette di stato in airajson.cpp usano QCoreApplication::translate per esteso: lupdate non riconosce una funzione wrapper e le avrebbe perse - selettore della lingua in Impostazioni (Sistema / English / Italiano) - test: 41/41, carica il .qm vero come fa main.cpp e verifica entrambe le lingue, il ripiego e i formati numerici - anteprime bilingui (docs/anteprima/ inglese, it/ italiano), README e PIANO aggiornati, spec RPM con i cataloghi in %files
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
#ifndef TRANSLATOR_H
|
||||
#define TRANSLATOR_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QPointer>
|
||||
#include <QTranslator>
|
||||
|
||||
class Settings;
|
||||
|
||||
// Lingua dell'interfaccia.
|
||||
//
|
||||
// "" (vuoto) -> lingua del sistema (QLocale::system(), non QLocale(), che e' il
|
||||
// locale predefinito e viene cambiato da setDefault), con ripiego
|
||||
// sull'inglese: l'inglese e' la lingua sorgente delle stringhe,
|
||||
// quindi se per il locale del telefono non esiste un catalogo Qt
|
||||
// lascia il testo originale inglese.
|
||||
// "it" -> italiano, dal catalogo installato in
|
||||
// /usr/share/harbour-aira/translations (i .qm li genera qmake in
|
||||
// build con CONFIG += sailfishapp_i18n).
|
||||
//
|
||||
// Qt 5.6 (Sailfish) non ha QQmlEngine::retranslate(): esiste da Qt 5.10, e prima
|
||||
// il QML non si ri-traduce da solo quando cambia il traduttore. Per questo
|
||||
// main.cpp collega languageChanged() alla ricarica della radice QML: l'effetto
|
||||
// visibile e' che l'app torna alla home, ma nella lingua nuova.
|
||||
class Translator : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
Q_PROPERTY(QString language READ language WRITE setLanguage NOTIFY languageChanged)
|
||||
|
||||
public:
|
||||
explicit Translator(Settings *settings, QObject *parent = 0);
|
||||
|
||||
QString language() const;
|
||||
void setLanguage(const QString &value); // salva nelle impostazioni e applica
|
||||
void applySaved(); // all'avvio, PRIMA di creare la view
|
||||
|
||||
signals:
|
||||
void languageChanged();
|
||||
|
||||
private:
|
||||
void apply(const QString &value);
|
||||
|
||||
Settings *m_settings;
|
||||
QPointer<QTranslator> m_translator;
|
||||
};
|
||||
|
||||
#endif // TRANSLATOR_H
|
||||
Reference in New Issue
Block a user