X-Git-Url: https://git.novaco.in/?p=novacoin.git;a=blobdiff_plain;f=src%2Fqt%2Fbitcoin.cpp;h=e2b6904c35dafd4d4edae18f6910dbb12c6f068e;hp=f99ee0fe77a66f78b11f004b313f9953ec2fc770;hb=ecfb608bb8dd6719b80d097ec4e2755cd373777f;hpb=f0f3cf8e4b67fecaeafaf82b520d6c357c5aa1e8 diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index f99ee0f..e2b6904 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -11,7 +11,6 @@ #include "init.h" #include "ui_interface.h" #include "qtipcserver.h" -#include "intro.h" #include #include @@ -22,7 +21,6 @@ #include #include #include -#include #if defined(BITCOIN_NEED_QT_PLUGINS) && !defined(_BITCOIN_QT_PLUGINS_INCLUDED) #define _BITCOIN_QT_PLUGINS_INCLUDED @@ -39,39 +37,6 @@ Q_IMPORT_PLUGIN(qtaccessiblewidgets) static BitcoinGUI *guiref; static QSplashScreen *splashref; -/** Set up translations */ -static void initTranslations(QTranslator &qtTranslatorBase, QTranslator &qtTranslator, QTranslator &translatorBase, QTranslator &translator) -{ - QSettings settings; - // Get desired locale (e.g. "de_DE") - // 1) System default language - QString lang_territory = QLocale::system().name(); - // 2) Language from QSettings - QString lang_territory_qsettings = settings.value("language", "").toString(); - if(!lang_territory_qsettings.isEmpty()) - lang_territory = lang_territory_qsettings; - // 3) -lang command line argument - lang_territory = QString::fromStdString(GetArg("-lang", lang_territory.toStdString())); - // Convert to "de" only by truncating "_DE" - QString lang = lang_territory; - lang.truncate(lang_territory.lastIndexOf('_')); - // Load language files for configured locale: - // - First load the translator for the base language, without territory - // - Then load the more specific locale translator - // Load e.g. qt_de.qm - if (qtTranslatorBase.load("qt_" + lang, QLibraryInfo::location(QLibraryInfo::TranslationsPath))) - QApplication::installTranslator(&qtTranslatorBase); - // Load e.g. qt_de_DE.qm - if (qtTranslator.load("qt_" + lang_territory, QLibraryInfo::location(QLibraryInfo::TranslationsPath))) - QApplication::installTranslator(&qtTranslator); - // Load e.g. bitcoin_de.qm (shortcut "de" needs to be defined in bitcoin.qrc) - if (translatorBase.load(lang, ":/translations/")) - QApplication::installTranslator(&translatorBase); - // Load e.g. bitcoin_de_DE.qm (shortcut "de_DE" needs to be defined in bitcoin.qrc) - if (translator.load(lang_territory, ":/translations/")) - QApplication::installTranslator(&translator); -} - static void ThreadSafeMessageBox(const std::string& message, const std::string& caption, int style) { // Message from network thread @@ -160,39 +125,62 @@ int main(int argc, char *argv[]) Q_INIT_RESOURCE(bitcoin); QApplication app(argc, argv); - // Application identification (must be set before OptionsModel is initialized, - // as it is used to locate QSettings) - app.setOrganizationName("NovaCoin"); - app.setOrganizationDomain("novacoin.su"); - if(GetBoolArg("-testnet")) // Separate UI settings for testnet - app.setApplicationName("NovaCoin-Qt-testnet"); - else - app.setApplicationName("NovaCoin-Qt"); - // Now that QSettings are accessible, initialize translations - QTranslator qtTranslatorBase, qtTranslator, translatorBase, translator; - initTranslations(qtTranslatorBase, qtTranslator, translatorBase, translator); + // Install global event filter that makes sure that long tooltips can be word-wrapped + app.installEventFilter(new GUIUtil::ToolTipToRichTextFilter(TOOLTIP_WRAP_THRESHOLD, &app)); // Command-line options take precedence: ParseParameters(argc, argv); - // User language is set up: pick a data directory - Intro::pickDataDirectory(); - - // Install global event filter that makes sure that long tooltips can be word-wrapped - app.installEventFilter(new GUIUtil::ToolTipToRichTextFilter(TOOLTIP_WRAP_THRESHOLD, &app)); - // ... then bitcoin.conf: if (!boost::filesystem::is_directory(GetDataDir(false))) { + // This message can not be translated, as translation is not initialized yet + // (which not yet possible because lang=XX can be overridden in bitcoin.conf in the data directory) QMessageBox::critical(0, "NovaCoin", - QObject::tr("Error: Specified data directory \"%1\" does not exist.").arg(QString::fromStdString(mapArgs["-datadir"]))); + QString("Error: Specified data directory \"%1\" does not exist.").arg(QString::fromStdString(mapArgs["-datadir"]))); return 1; } ReadConfigFile(mapArgs, mapMultiArgs); + // Application identification (must be set before OptionsModel is initialized, + // as it is used to locate QSettings) + app.setOrganizationName("NovaCoin"); + app.setOrganizationDomain("novacoin.su"); + if(GetBoolArg("-testnet")) // Separate UI settings for testnet + app.setApplicationName("NovaCoin-Qt-testnet"); + else + app.setApplicationName("NovaCoin-Qt"); + // ... then GUI settings: OptionsModel optionsModel; + // Get desired locale (e.g. "de_DE") from command line or use system locale + QString lang_territory = QString::fromStdString(GetArg("-lang", QLocale::system().name().toStdString())); + QString lang = lang_territory; + // Convert to "de" only by truncating "_DE" + lang.truncate(lang_territory.lastIndexOf('_')); + + QTranslator qtTranslatorBase, qtTranslator, translatorBase, translator; + // Load language files for configured locale: + // - First load the translator for the base language, without territory + // - Then load the more specific locale translator + + // Load e.g. qt_de.qm + if (qtTranslatorBase.load("qt_" + lang, QLibraryInfo::location(QLibraryInfo::TranslationsPath))) + app.installTranslator(&qtTranslatorBase); + + // Load e.g. qt_de_DE.qm + if (qtTranslator.load("qt_" + lang_territory, QLibraryInfo::location(QLibraryInfo::TranslationsPath))) + app.installTranslator(&qtTranslator); + + // Load e.g. bitcoin_de.qm (shortcut "de" needs to be defined in bitcoin.qrc) + if (translatorBase.load(lang, ":/translations/")) + app.installTranslator(&translatorBase); + + // Load e.g. bitcoin_de_DE.qm (shortcut "de_DE" needs to be defined in bitcoin.qrc) + if (translator.load(lang_territory, ":/translations/")) + app.installTranslator(&translator); + // Subscribe to global signals from core uiInterface.ThreadSafeMessageBox.connect(ThreadSafeMessageBox); uiInterface.ThreadSafeAskFee.connect(ThreadSafeAskFee);