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 <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2013-10-08 22:25:02 -07:00
parent c260ec5c16
commit 7813ac86bf
3 changed files with 23 additions and 36 deletions

View file

@ -36,6 +36,7 @@
#include <QNetworkProxy>
#include <QDateTime>
#include <QRegExp>
#include <QLibraryInfo>
#include <gettextfromc.h>
#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");