void UBApplication::setupTranslators(QStringList args) { QString forcedLanguage(""); if(args.contains("-lang")) forcedLanguage=args.at(args.indexOf("-lang") + 1); else{ QString setLanguage = UBSettings::settings()->appPreferredLanguage->get().toString(); if(!setLanguage.isEmpty()) forcedLanguage = setLanguage; } QString language(""); if(!forcedLanguage.isEmpty()) language = checkLanguageAvailabilityForSankore(forcedLanguage); if(language.isEmpty()){ QString systemLanguage = UBPlatformUtils::systemLanguage(); language = checkLanguageAvailabilityForSankore(systemLanguage); } if(language.isEmpty()){ language = "en_US"; //fallback if no translation are available } else{ mApplicationTranslator = new QTranslator(this); mQtGuiTranslator = new QTranslator(this); mApplicationTranslator->load(UBPlatformUtils::translationPath(QString("sankore_"),language)); installTranslator(mApplicationTranslator); QString qtGuiTranslationPath = UBPlatformUtils::translationPath("qt_", language); if(!QFile(qtGuiTranslationPath).exists()){ qtGuiTranslationPath = UBPlatformUtils::translationPath("qt_", language.left(2)); if(!QFile(qtGuiTranslationPath).exists()) qtGuiTranslationPath = ""; } if(!qtGuiTranslationPath.isEmpty()){ mQtGuiTranslator->load(qtGuiTranslationPath); installTranslator(mQtGuiTranslator); } else qDebug() << "Qt gui translation in " << language << " is not available"; } QLocale::setDefault(QLocale(language)); qDebug() << "Running application in:" << language; //Claudio: hack to avoid the lost of translations. UBSettings::settings()->init(); }
UBApplication::UBApplication(const QString &id, int &argc, char **argv) : QtSingleApplication(id, argc, argv) , mPreferencesController(NULL) , mApplicationTranslator(NULL) , mQtGuiTranslator(NULL) { staticMemoryCleaner = new QObject(0); // deleted in UBApplication destructor setOrganizationName("Sankore"); setOrganizationDomain("sankore.org"); setApplicationName("Open-Sankore"); setApplicationVersion(UBVERSION); #if defined(Q_WS_MAC) && !defined(QT_NO_DEBUG) CFStringRef shortVersion = (CFStringRef)CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), CFSTR("CFBundleShortVersionString")); const char *version = CFStringGetCStringPtr(shortVersion, kCFStringEncodingMacRoman); Q_ASSERT(version); setApplicationVersion(version); #endif QStringList args = arguments(); mIsVerbose = args.contains("-v") || args.contains("-verbose") || args.contains("verbose") || args.contains("-log") || args.contains("log"); UBResources::resources(); if (!undoStack) undoStack = new QUndoStack(staticMemoryCleaner); UBPlatformUtils::init(); UBSettings *settings = UBSettings::settings(); QString forcedLanguage(""); if(args.contains("-lang")) forcedLanguage=args.at(args.indexOf("-lang") + 1); else{ QString setLanguage = settings->appPreferredLanguage->get().toString(); if(!setLanguage.isEmpty()) forcedLanguage = setLanguage; } setupTranslator(forcedLanguage); connect(settings->appToolBarPositionedAtTop, SIGNAL(changed(QVariant)), this, SLOT(toolBarPositionChanged(QVariant))); connect(settings->appToolBarDisplayText, SIGNAL(changed(QVariant)), this, SLOT(toolBarDisplayTextChanged(QVariant))); updateProtoActionsState(); #ifndef Q_WS_MAC setWindowIcon(QIcon(":/images/uniboard.png")); #endif setStyle(new UBStyle()); // Style is owned and deleted by the application QString css = UBFileSystemUtils::readTextFile(UBPlatformUtils::applicationResourcesDirectory() + "/etc/Uniboard.css"); if (css.length() > 0) setStyleSheet(css); QApplication::setStartDragDistance(8); // default is 4, and is a bit small for tablets installEventFilter(this); }