26
26
#include <QTranslator>
28
#include <QLatin1String>
30
32
LanguageHandler::LanguageHandler(QObject *parent, QApplication *stApp, const char *name)
33
35
qmPath = QString(stopmotion::translationsDirectory);
35
37
translator = new QTranslator(this);
37
const char *localePtr = QLocale::system().name().toLatin1().constData();
38
const char *languagePref = PreferencesTool::get()->getPreference("language", localePtr);
39
QString locale(languagePref);
41
if ( !locale.startsWith("en") ) {
42
Logger::get().logDebug("Loading translator: ");
43
Logger::get().logDebug(locale.toLatin1().constData());
44
translator->load( "stopmotion_" + locale, qmPath);
40
QString locale = QLocale::system().name().toLower();
41
if (locale == QLatin1String("nb_no"))
42
locale = QLatin1String("no_nb");
43
else if (locale == QLatin1String("nn_no"))
44
locale = QLatin1String("no_nn");
45
else if (locale == QLatin1String("se_no"))
46
locale = QLatin1String("no_se");
50
// Put together a translation file based on the qmPath or keep
51
// it empty if the locale is english.
52
const bool englishLocale = (locale == QLatin1String("en"));
53
const QString prefix = qmPath + QLatin1Char('/') + QLatin1String("stopmotion_");
54
QString translationFile = englishLocale ? QString() : prefix + locale;
56
if (!englishLocale && !QFile::exists(translationFile + QLatin1String(".qm"))) {
57
// Was not able to find a translation file for the locale, so use the
58
// language saved in the preferences file, or use English as fall-back.
59
const QByteArray localeArray = locale.toLatin1();
60
const char *localePtr = localeArray.constData();
61
const char *languagePref = PreferencesTool::get()->getPreference("language", localePtr);
63
translationFile = prefix + QLatin1String(languagePref);
64
if (!QFile::exists(translationFile + QLatin1String(".qm")))
65
translationFile = QString();
66
if (strcmp(languagePref, localePtr) != 0)
67
xmlFree((xmlChar*)languagePref);
69
translationFile = QString();
72
PreferencesTool::get()->setPreference("language", locale.toLatin1().constData());
75
if (!translationFile.isEmpty()) {
76
Logger::get().logDebug("Loading translator: ");
77
Logger::get().logDebug(translationFile.toLatin1().constData());
78
translator->load(translationFile);
47
81
stApp->installTranslator(translator);
48
82
setObjectName(name);
50
if (strcmp(languagePref, localePtr) != 0) {
51
xmlFree((xmlChar*)languagePref);