#ifndef TRANSLATOR_H #define TRANSLATOR_H #include #include #include 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 m_translator; }; #endif // TRANSLATOR_H