3 #include "resources/config.h"
9 #include <QLibraryInfo>
13 #include <QStringBuilder>
14 #include <QTranslator>
15 #if defined(QT_UTILITIES_GUI_QTWIDGETS)
16 #include <QApplication>
17 #elif defined(QT_UTILITIES_GUI_QTQUICK)
18 #include <QGuiApplication>
20 #include <QCoreApplication>
28 inline void initResources()
30 Q_INIT_RESOURCE(qtutilsicons);
33 inline void cleanupResources()
35 Q_CLEANUP_RESOURCE(qtutilsicons);
45 namespace QtUtilitiesResources {
69 namespace TranslationFiles {
117 const auto debugTranslations = qEnvironmentVariableIsSet(
"QT_DEBUG_TRANSLATIONS");
118 for (
const auto &repoName : repositoryNames) {
119 auto *
const qtTranslator =
new QTranslator;
120 const auto fileName = QString(repoName % QChar(
'_') % localeName);
124 || qtTranslator->load(fileName, path = QLibraryInfo::location(QLibraryInfo::TranslationsPath))
125 || qtTranslator->load(fileName, path = QStringLiteral(
"../share/qt/translations"))
126 || qtTranslator->load(fileName, path = QStringLiteral(
":/translations"))) {
127 QCoreApplication::installTranslator(qtTranslator);
128 if (debugTranslations) {
129 cerr <<
"Loading translation file for Qt repository \"" << repoName.toLocal8Bit().data() <<
"\" and the locale \""
130 << localeName.toLocal8Bit().data() <<
"\" from \"" << path.toLocal8Bit().data() <<
"\"." << endl;
134 if (localeName.startsWith(QLatin1String(
"en"))) {
138 cerr <<
"Unable to load translation file for Qt repository \"" << repoName.toLocal8Bit().data() <<
"\" and locale "
139 << localeName.toLocal8Bit().data() <<
"." << endl;
168 const auto defaultLocale(QLocale().name());
169 if (defaultLocale != QLatin1String(
"en_US")) {
175 void logTranslationEvent(
176 const char *event,
const QString &configName,
const QString &applicationName,
const QString &localeName,
const QString &path = QString())
178 cerr <<
event <<
" translation file for \"" << applicationName.toLocal8Bit().data() <<
"\"";
179 if (!configName.isEmpty()) {
180 cerr <<
" (config \"" << configName.toLocal8Bit().data() <<
"\")";
182 cerr <<
" and locale \"" << localeName.toLocal8Bit().data() <<
'\"';
183 if (!path.isEmpty()) {
184 cerr <<
" from \"" << path.toLocal8Bit().data() <<
'\"';
212 auto *
const appTranslator =
new QTranslator;
213 const auto fileName = QString(applicationName % QChar(
'_') % localeName);
214 const auto directoryName = configName.isEmpty() ? applicationName : QString(applicationName % QChar(
'-') % configName);
218 || appTranslator->load(fileName, path = QStringLiteral(
".")) || appTranslator->load(fileName, path = QStringLiteral(
"../") % directoryName)
219 || appTranslator->load(fileName, path = QStringLiteral(
"../") % directoryName)
220 || appTranslator->load(fileName, path = QStringLiteral(
"../../") % directoryName)
221 || appTranslator->load(fileName, path = QStringLiteral(
"./translations"))
222 || appTranslator->load(fileName, path = QStringLiteral(
"../share/") % directoryName % QStringLiteral(
"/translations"))
223 || appTranslator->load(fileName, path = QStringLiteral(APP_INSTALL_PREFIX
"/share/") % directoryName % QStringLiteral(
"/translations"))
224 || appTranslator->load(fileName, path = QStringLiteral(
":/translations"))) {
225 QCoreApplication::installTranslator(appTranslator);
226 if (qEnvironmentVariableIsSet(
"QT_DEBUG_TRANSLATIONS")) {
227 logTranslationEvent(
"Loading", configName, applicationName, localeName, path);
230 delete appTranslator;
231 if (localeName.startsWith(QLatin1String(
"en"))) {
235 logTranslationEvent(
"Unable to load", configName, applicationName, localeName);
246 for (
const QString &applicationName : applicationNames) {
259 for (
const QString &applicationName : applicationNames) {
270 namespace ApplicationInstances {
272 #if defined(QT_UTILITIES_GUI_QTWIDGETS)
278 return qobject_cast<QApplication *>(QCoreApplication::instance()) !=
nullptr;
282 #if defined(QT_UTILITIES_GUI_QTWIDGETS) || defined(QT_UTILITIES_GUI_QTQUICK)
288 return qobject_cast<QGuiApplication *>(QCoreApplication::instance()) !=
nullptr;
297 return qobject_cast<QCoreApplication *>(QCoreApplication::instance()) !=
nullptr;