16 #include <QCoreApplication>
20 #include <QStandardPaths>
22 #include <QTranslator>
24 #if defined(KSeExpr_HAVE_I18N_FALLBACK_LANGUAGES_DETECTION)
25 #include <KLocalizedString>
33 QString subPath = QStringLiteral(
"locale/") + localeDirName + QStringLiteral(
"/LC_MESSAGES/seexpr2_qt.qm");
35 dbgSeExpr <<
"Attempting to load: " << subPath;
37 #if defined(Q_OS_ANDROID)
38 const QString fullPath = QStringLiteral(
"assets:/share/") + subPath;
39 if (!QFile::exists(fullPath)) {
44 QString fullPath = QStandardPaths::locate(QStandardPaths::DataLocation, subPath);
45 if (fullPath.isEmpty()) {
47 fullPath = QStandardPaths::locate(QStandardPaths::GenericDataLocation, subPath);
48 if (fullPath.isEmpty())
52 QTranslator *translator =
new QTranslator(QCoreApplication::instance());
53 if (!translator->load(fullPath)) {
57 #if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)
58 dbgSeExpr <<
"Installing translation for: " << fullPath <<
"(" << translator->language() <<
")";
60 dbgSeExpr <<
"Installing translation for: " << fullPath;
62 dbgSeExpr <<
"Test: " << translator->translate(
"ExprControlCollection",
"Add new variable");
64 QCoreApplication::instance()->installTranslator(translator);
70 #if defined(Q_OS_ANDROID)
71 const auto paths = QStringLiteral(
"assets:/share/");
73 auto paths = QStandardPaths::standardLocations(QStandardPaths::DataLocation);
74 paths << QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation);
76 dbgSeExpr <<
"Base paths for translations: " << paths;
78 #if defined(KSeExpr_HAVE_I18N_FALLBACK_LANGUAGES_DETECTION)
79 dbgSeExpr <<
"Qt UI languages: " << KLocalizedString::languages() << QLocale().uiLanguages() << qgetenv(
"LANG");
81 dbgSeExpr <<
"Qt UI languages: " << QLocale().uiLanguages() << qgetenv(
"LANG");
92 #if defined(KSeExpr_HAVE_I18N_FALLBACK_LANGUAGES_DETECTION)
93 const auto fallbackLanguages { KLocalizedString::languages()};
94 for (
auto it = fallbackLanguages.rbegin(); it != fallbackLanguages.rend(); ++it) {
96 const auto localeParts = it->split(
'@');
97 QLocale locale(localeParts.constFirst());
100 const int i = locale.name().indexOf(QLatin1Char(
'_'));
109 for (
const auto &locale : { QLocale() }) {
110 dbgSeExpr <<
"Attempting to load translations for locale: " << locale.name();
113 const int i = locale.name().indexOf(QLatin1Char(
'_'));
122 dbgSeExpr <<
"Test: " << QCoreApplication::translate(
"ExprControlCollection",
"Add new variable");
154 if (QThread::currentThread() == QCoreApplication::instance()->thread()) {
159 loader->moveToThread(QCoreApplication::instance()->thread());
160 QCoreApplication::instance()->postEvent(loader,
new QTimerEvent(0), Qt::HighEventPriority);
void timerEvent(QTimerEvent *) Q_DECL_OVERRIDE
bool loadTranslation(const QString &localeDirName)