From 7813ac86bf5bfaeee3d4652b35dcfd8972775423 Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Tue, 8 Oct 2013 22:25:02 -0700 Subject: Load translations at run time This doesn't enable translation switching, but at least we try and load the correct translation at startup. We create two global pointers for the currently active translations. This also removes the remainders of the gettext()/glib based translation system. Signed-off-by: Dirk Hohndel --- qt-gui.cpp | 42 +++++++++++++++++------------------------- 1 file changed, 17 insertions(+), 25 deletions(-) (limited to 'qt-gui.cpp') diff --git a/qt-gui.cpp b/qt-gui.cpp index 08eb9d538..5127b7ba8 100644 --- a/qt-gui.cpp +++ b/qt-gui.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #include #define tr(arg) gettextFromC::instance()->tr(arg) @@ -45,31 +46,6 @@ const char *default_dive_computer_product; const char *default_dive_computer_device; DiveComputerList dcList; -#if 0 -class Translator: public QTranslator -{ - Q_OBJECT - -public: - Translator(QObject *parent = 0); - ~Translator() {} - - virtual QString translate(const char *context, const char *sourceText, - const char *disambiguation = NULL) const; -}; - -Translator::Translator(QObject *parent): - QTranslator(parent) -{ -} - -QString Translator::translate(const char *context, const char *sourceText, - const char *disambiguation) const -{ - return gettext(sourceText); -} -#endif - static QApplication *application = NULL; static MainWindow *window = NULL; @@ -108,6 +84,22 @@ void init_ui(int *argcp, char ***argvp) QCoreApplication::setApplicationName("Subsurface"); xslt_path = strdup(getSubsurfaceDataPath("xslt").toAscii().data()); + QLocale loc; + if (loc.uiLanguages().first() != "en-US") { + qtTranslator = new QTranslator; + if (qtTranslator->load(loc,"qt", "_", QLibraryInfo::location(QLibraryInfo::TranslationsPath))) { + application->installTranslator(qtTranslator); + } else { + qDebug() << "can't find Qt localization for locale" << loc.uiLanguages().first(); + } + ssrfTranslator = new QTranslator; + if (ssrfTranslator->load(loc,"subsurface", "_")) { + application->installTranslator(ssrfTranslator); + } else { + qDebug() << "can't find Subsurface localization for locale" << loc.uiLanguages().first(); + } + } + QSettings s; s.beginGroup("GeneralSettings"); prefs.default_filename = getSetting(s, "default_filename"); -- cgit v1.2.3-70-g09d2