summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main.cpp13
-rw-r--r--qt-gui.cpp42
-rw-r--r--qthelper.h4
3 files changed, 23 insertions, 36 deletions
diff --git a/main.cpp b/main.cpp
index c7d916c9c..0d53a5acf 100644
--- a/main.cpp
+++ b/main.cpp
@@ -13,22 +13,13 @@
#include <QStringList>
+QTranslator *qtTranslator, *ssrfTranslator;
+
int main(int argc, char **argv)
{
int i;
bool no_filenames = true;
-#if 0
- const char *path;
- /* set up l18n - the search directory needs to change
- * so that it uses the correct system directory when
- * subsurface isn't run from the local directory */
- path = subsurface_gettext_domainpath(argv[0]);
- setlocale(LC_ALL, "");
- bindtextdomain("subsurface", path);
- bind_textdomain_codeset("subsurface", "utf-8");
- textdomain("subsurface");
-#endif
setup_system_prefs();
prefs = default_prefs;
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 <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");
diff --git a/qthelper.h b/qthelper.h
index 0ab184b78..cd0d8affa 100644
--- a/qthelper.h
+++ b/qthelper.h
@@ -5,6 +5,10 @@
#include <QString>
#include <stdint.h>
#include "dive.h"
+#include <QTranslator>
+
+// global pointers for our translation
+extern QTranslator *qtTranslator, *ssrfTranslator;
class DiveComputerNode {
public: