Add upstream patch to load Qt catalogs

epel8
Dan Vrátil 10 years ago
parent c6095c6ae7
commit 03407d0f70

@ -0,0 +1,80 @@
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)

@ -2,7 +2,7 @@
Name: kf5-%{framework}
Version: 5.8.0
Release: 1%{?dist}
Release: 2%{?dist}
Summary: KDE Frameworks 5 Tier 1 addon for localization
License: LGPLv2+
@ -17,6 +17,10 @@ URL: http://www.kde.org
%endif
Source0: http://download.kde.org/%{stable}/frameworks/%{versiondir}/%{framework}-%{version}.tar.xz
# upstream patches
Patch1: 0001-preload-the-global-qt-catalog-when-using-i18n.patch
BuildRequires: perl
BuildRequires: kf5-rpm-macros
@ -40,7 +44,7 @@ The %{name}-devel package contains libraries and header files for
developing applications that use %{name}.
%prep
%setup -q -n %{framework}-%{version}
%autosetup -n %{framework}-%{version} -p1
%build
mkdir -p %{_target_platform}
@ -84,6 +88,9 @@ make %{?_smp_mflags} -C %{_target_platform}
%changelog
* Tue Mar 24 2015 Daniel Vrátil <dvratil@redhat.com> - 5.8.0-2
- add upstream patch to fix to load Qt catalogs too
* Mon Mar 16 2015 Daniel Vrátil <dvratil@redhat.com> - 5.8.0-1
- KDE Frameworks 5.8.0

Loading…
Cancel
Save