parent
03407d0f70
commit
b963f1db9c
@ -1,80 +0,0 @@
|
||||
commit fded87b06de0c956131b0763716b1100e46e1408
|
||||
Author: Lukáš Tinkl <lukas@kde.org>
|
||||
Date: Thu Mar 19 16:35:07 2015 +0100
|
||||
|
||||
preload the global Qt catalog when using i18n()
|
||||
|
||||
tested with eg. systemsettings; without the patch, the fonts kcm dialogs
|
||||
(QFontDialog) are in English
|
||||
|
||||
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
|
||||
index 8c206f9..818595e 100644
|
||||
--- a/src/CMakeLists.txt
|
||||
+++ b/src/CMakeLists.txt
|
||||
@@ -4,6 +4,7 @@ set(libki18n_SRCS
|
||||
kcatalog.cpp
|
||||
kuitmarkup.cpp
|
||||
common_helpers.cpp
|
||||
+ main.cpp
|
||||
)
|
||||
|
||||
add_library(KF5I18n ${libki18n_SRCS})
|
||||
diff --git a/src/main.cpp b/src/main.cpp
|
||||
new file mode 100644
|
||||
index 0000000..6b46f41
|
||||
--- /dev/null
|
||||
+++ b/src/main.cpp
|
||||
@@ -0,0 +1,53 @@
|
||||
+/* This file is part of the KDE libraries
|
||||
+ Copyright (C) 2015 Lukáš Tinkl <ltinkl@redhat.com>
|
||||
+
|
||||
+ This library is free software; you can redistribute it and/or
|
||||
+ modify it under the terms of the GNU Library General Public
|
||||
+ License as published by the Free Software Foundation; either
|
||||
+ version 2 of the License, or (at your option) any later version.
|
||||
+
|
||||
+ This library is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ Library General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU Library General Public License
|
||||
+ along with this library; see the file COPYING.LIB. If not, write to
|
||||
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
+ Boston, MA 02110-1301, USA.
|
||||
+*/
|
||||
+
|
||||
+#include <QCoreApplication>
|
||||
+#include <QLocale>
|
||||
+#include <QLibraryInfo>
|
||||
+#include <QTranslator>
|
||||
+
|
||||
+// load global Qt translation, needed in KDE e.g. by lots of builtin dialogs (QColorDialog, QFontDialog) that we use
|
||||
+static bool loadTranslation(const QString &localeName)
|
||||
+{
|
||||
+ QTranslator *translator = new QTranslator(QCoreApplication::instance());
|
||||
+ if (!translator->load(QLocale(localeName), QStringLiteral("qt_"), QString(), QLibraryInfo::location(QLibraryInfo::TranslationsPath))) {
|
||||
+ delete translator;
|
||||
+ return false;
|
||||
+ }
|
||||
+ QCoreApplication::instance()->installTranslator(translator);
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
+static void load()
|
||||
+{
|
||||
+ // The way Qt translation system handles plural forms makes it necessary to
|
||||
+ // have a translation file which contains only plural forms for `en`. That's
|
||||
+ // why we load the `en` translation unconditionally, then load the
|
||||
+ // translation for the current locale to overload it.
|
||||
+ loadTranslation(QStringLiteral("en"));
|
||||
+
|
||||
+ QLocale locale = QLocale::system();
|
||||
+ if (locale.name() != QStringLiteral("en")) {
|
||||
+ if (!loadTranslation(locale.name())) {
|
||||
+ loadTranslation(locale.bcp47Name());
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+Q_COREAPP_STARTUP_FUNCTION(load)
|
Loading…
Reference in new issue