Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package kf6-purpose for openSUSE:Factory 
checked in at 2026-07-15 16:32:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kf6-purpose (Old)
 and      /work/SRC/openSUSE:Factory/.kf6-purpose.new.1991 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kf6-purpose"

Wed Jul 15 16:32:26 2026 rev:29 rq:1365144 version:6.28.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/kf6-purpose/kf6-purpose.changes  2026-06-16 
13:57:53.464429956 +0200
+++ /work/SRC/openSUSE:Factory/.kf6-purpose.new.1991/kf6-purpose.changes        
2026-07-15 16:43:00.425345147 +0200
@@ -1,0 +2,12 @@
+Fri Jul 10 12:16:10 UTC 2026 - Christophe Marin <[email protected]>
+
+- Update to 6.28.0
+  * New feature release
+  * For more details please see:
+  * https://kde.org/announcements/frameworks/6/6.28.0
+- Changes since 6.27.0:
+  * Update dependency version to 6.28.0
+  * Fix constraints not being evaluated correctly (kde#521138)
+  * Update version to 6.28.0
+
+-------------------------------------------------------------------

Old:
----
  purpose-6.27.0.tar.xz
  purpose-6.27.0.tar.xz.sig

New:
----
  purpose-6.28.0.tar.xz
  purpose-6.28.0.tar.xz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kf6-purpose.spec ++++++
--- /var/tmp/diff_new_pack.wZ0378/_old  2026-07-15 16:43:04.169472450 +0200
+++ /var/tmp/diff_new_pack.wZ0378/_new  2026-07-15 16:43:04.173472587 +0200
@@ -22,11 +22,11 @@
 %define qt6_version 6.9.0
 
 %define rname purpose
-# Full KF6 version (e.g. 6.27.0)
+# Full KF6 version (e.g. 6.28.0)
 %{!?_kf6_version: %global _kf6_version %{version}}
 %bcond_without released
 Name:           kf6-purpose
-Version:        6.27.0
+Version:        6.28.0
 Release:        0
 Summary:        Framework to integrate services and actions in applications
 License:        LGPL-2.1-or-later


++++++ purpose-6.27.0.tar.xz -> purpose-6.28.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/CMakeLists.txt 
new/purpose-6.28.0/CMakeLists.txt
--- old/purpose-6.27.0/CMakeLists.txt   2026-06-05 17:52:07.000000000 +0200
+++ new/purpose-6.28.0/CMakeLists.txt   2026-07-03 13:04:43.000000000 +0200
@@ -2,7 +2,7 @@
 
 project(Purpose)
 
-find_package(ECM 6.27.0 REQUIRED NO_MODULE)
+find_package(ECM 6.28.0 REQUIRED NO_MODULE)
 
 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
 
@@ -40,8 +40,8 @@
   set(HAVE_DBUS ON)
 endif()
 
-set(KF_VERSION "6.27.0") # handled by release scripts
-set(KF_DEP_VERSION "6.27.0") # handled by release scripts
+set(KF_VERSION "6.28.0") # handled by release scripts
+set(KF_DEP_VERSION "6.28.0") # handled by release scripts
 
 find_package(KF6 ${KF_DEP_VERSION} REQUIRED COMPONENTS CoreAddons I18n Config 
Kirigami Notifications KIO Service)
 
@@ -63,7 +63,7 @@
 
 ecm_set_disabled_deprecation_versions(
     QT 6.11.0
-    KF 6.26.0
+    KF 6.27.0
 )
 
 add_subdirectory( src )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/autotests/CMakeLists.txt 
new/purpose-6.28.0/autotests/CMakeLists.txt
--- old/purpose-6.27.0/autotests/CMakeLists.txt 2026-06-05 17:52:07.000000000 
+0200
+++ new/purpose-6.28.0/autotests/CMakeLists.txt 2026-07-03 13:04:43.000000000 
+0200
@@ -1,6 +1,26 @@
-ecm_add_test(alternativesmodeltest.cpp
+if (HAVE_DBUS)
+    set(MAYBE_DBUS "Qt6::DBus")
+endif ()
+
+ecm_qt_declare_logging_category(external_process_debug_SRCS
+    HEADER purpose_external_process_debug.h
+    IDENTIFIER PURPOSE_EXTERNAL_PROCESS_LOG
+    CATEGORY_NAME kf.purpose.externalprocess
+    OLD_CATEGORY_NAMES kf5.purpose.externalprocess
+    DESCRIPTION "purpose external process"
+    EXPORT PURPOSE
+)
+
+ecm_add_test(alternativesmodeltest.cpp ../src/constrainthelpers.cpp 
${external_process_debug_SRCS}
     TEST_NAME alternativesmodeltest
-    LINK_LIBRARIES Qt6::Test KF6::Purpose KF6::ConfigCore)
+    LINK_LIBRARIES Qt6::Test ${MAYBE_DBUS} KF6::Purpose KF6::ConfigCore)
+
+if (HAVE_DBUS)
+    target_compile_definitions(alternativesmodeltest PRIVATE -DHAVE_QTDBUS=1)
+else()
+    target_compile_definitions(alternativesmodeltest PRIVATE -DHAVE_QTDBUS=0)
+endif()
+
 ecm_add_test(menutest.cpp
     TEST_NAME menutest
     LINK_LIBRARIES Qt6::Test KF6::PurposeWidgets)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/autotests/alternativesmodeltest.cpp 
new/purpose-6.28.0/autotests/alternativesmodeltest.cpp
--- old/purpose-6.27.0/autotests/alternativesmodeltest.cpp      2026-06-05 
17:52:07.000000000 +0200
+++ new/purpose-6.28.0/autotests/alternativesmodeltest.cpp      2026-07-03 
13:04:43.000000000 +0200
@@ -15,10 +15,13 @@
 #include <KSharedConfig>
 
 #include "alternativesmodeltest.h"
+#include "constrainthelpers.h"
 #include <purpose/alternativesmodel.h>
 #include <purpose/configuration.h>
 #include <purpose/job.h>
 
+using namespace Qt::StringLiterals;
+
 QTEST_GUILESS_MAIN(AlternativesModelTest)
 
 static int saveAsRow(Purpose::AlternativesModel *model)
@@ -209,4 +212,15 @@
     QCOMPARE(modelResetSpy.count(), 1);
 }
 
+void AlternativesModelTest::constraintsTest()
+{
+#ifdef Q_OS_UNIX
+    QVERIFY(Purpose::constraintMatches({}, QJsonValue(u"exec:ls"_s), {}));
+#endif
+    QVERIFY(!Purpose::constraintMatches({}, 
QJsonValue(u"exec:binarythatdefinitelydoesnotexist"_s), {}));
+    QVERIFY(!Purpose::constraintMatches({}, QJsonValue(u"mime:text/foo"_s), 
{}));
+    QVERIFY(Purpose::constraintMatches({}, 
QJsonValue(u"mimeType:text/html"_s), {{u"mimeType"_s, u"text/html"_s}}));
+    QVERIFY(!Purpose::constraintMatches({}, 
QJsonValue(u"mimeType:image/png"_s), {{u"mimeType"_s, u"text/html"_s}}));
+}
+
 #include "moc_alternativesmodeltest.cpp"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/autotests/alternativesmodeltest.h 
new/purpose-6.28.0/autotests/alternativesmodeltest.h
--- old/purpose-6.27.0/autotests/alternativesmodeltest.h        2026-06-05 
17:52:07.000000000 +0200
+++ new/purpose-6.28.0/autotests/alternativesmodeltest.h        2026-07-03 
13:04:43.000000000 +0200
@@ -20,6 +20,7 @@
     void disablePluginTest();
     void blacklistTest();
     void bogusInputDataClearsModel();
+    void constraintsTest();
 
 private:
     QTemporaryDir m_tempDir;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/po/bg/libpurpose6_widgets.po 
new/purpose-6.28.0/po/bg/libpurpose6_widgets.po
--- old/purpose-6.27.0/po/bg/libpurpose6_widgets.po     2026-06-05 
17:52:07.000000000 +0200
+++ new/purpose-6.28.0/po/bg/libpurpose6_widgets.po     2026-07-03 
13:04:43.000000000 +0200
@@ -22,6 +22,3 @@
 #, kde-format
 msgid "Send File"
 msgstr "Изпращане на файл"
-
-#~ msgid "Configuration cancelled"
-#~ msgstr "Конфигурацията е отменена"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/po/bg/purpose6_kdeconnectsms.po 
new/purpose-6.28.0/po/bg/purpose6_kdeconnectsms.po
--- old/purpose-6.27.0/po/bg/purpose6_kdeconnectsms.po  2026-06-05 
17:52:07.000000000 +0200
+++ new/purpose-6.28.0/po/bg/purpose6_kdeconnectsms.po  2026-07-03 
13:04:43.000000000 +0200
@@ -21,6 +21,3 @@
 #, kde-format
 msgid "%1 – %2"
 msgstr "%1 – %2"
-
-#~ msgid "%1 - %2"
-#~ msgstr "%1 - %2"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/po/bg/purpose6_nextcloud.po 
new/purpose-6.28.0/po/bg/purpose6_nextcloud.po
--- old/purpose-6.27.0/po/bg/purpose6_nextcloud.po      2026-06-05 
17:52:07.000000000 +0200
+++ new/purpose-6.28.0/po/bg/purpose6_nextcloud.po      2026-07-03 
13:04:43.000000000 +0200
@@ -36,6 +36,3 @@
 #, kde-format
 msgid "Upload to folder:"
 msgstr "Качване в папка:"
-
-#~ msgid "Configure Accounts"
-#~ msgstr "Конфигуриране на профил"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/purpose-6.27.0/po/ca@valencia/purpose6_phabricator.po 
new/purpose-6.28.0/po/ca@valencia/purpose6_phabricator.po
--- old/purpose-6.27.0/po/ca@valencia/purpose6_phabricator.po   2026-06-05 
17:52:07.000000000 +0200
+++ new/purpose-6.28.0/po/ca@valencia/purpose6_phabricator.po   2026-07-03 
13:04:43.000000000 +0200
@@ -104,7 +104,7 @@
 "select one from the list below."
 msgstr ""
 "marqueu açò per a actualitzar una revisió existent,\n"
-"seleccioneu-ne una des en la llista a continuació."
+"seleccioneu-ne una des de la llista a continuació."
 
 #: phabricatorplugin_config.qml:107
 #, kde-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/po/ca@valencia/purpose6_saveas.po 
new/purpose-6.28.0/po/ca@valencia/purpose6_saveas.po
--- old/purpose-6.27.0/po/ca@valencia/purpose6_saveas.po        2026-06-05 
17:52:07.000000000 +0200
+++ new/purpose-6.28.0/po/ca@valencia/purpose6_saveas.po        2026-07-03 
13:04:43.000000000 +0200
@@ -35,4 +35,4 @@
 #: saveasplugin_config.qml:32
 #, kde-format
 msgid "Select a directory where to save your pictures and videos"
-msgstr "Trieu un directori on guardar les fotografies i vídeos"
+msgstr "Trieu una carpeta on guardar les fotografies i vídeos"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/po/hu/purpose6_kdeconnectsms.po 
new/purpose-6.28.0/po/hu/purpose6_kdeconnectsms.po
--- old/purpose-6.27.0/po/hu/purpose6_kdeconnectsms.po  2026-06-05 
17:52:07.000000000 +0200
+++ new/purpose-6.28.0/po/hu/purpose6_kdeconnectsms.po  2026-07-03 
13:04:43.000000000 +0200
@@ -1,26 +1,27 @@
-# Copyright (C) YEAR This file is copyright:
+# Copyright (C) 2026 This file is copyright:
 # This file is distributed under the same license as the purpose package.
 #
 # Kristóf Kiszel <[email protected]>, 2019.
+# SPDX-FileCopyrightText: 2026 Kristof Kiszel <[email protected]>
 msgid ""
 msgstr ""
 "Project-Id-Version: purpose\n"
 "Report-Msgid-Bugs-To: https://bugs.kde.org\n";
 "POT-Creation-Date: 2026-01-28 00:41+0000\n"
-"PO-Revision-Date: 2019-11-12 19:41+0100\n"
-"Last-Translator: Kristóf Kiszel <[email protected]>\n"
+"PO-Revision-Date: 2026-06-28 22:11+0200\n"
+"Last-Translator: Kristof Kiszel <[email protected]>\n"
 "Language-Team: Hungarian <[email protected]>\n"
 "Language: hu\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Lokalize 20.03.70\n"
+"X-Generator: Lokalize 26.04.2\n"
 
 #: kdeconnectsmsplugin.cpp:39
 #, kde-format
 msgid "%1 – %2"
-msgstr ""
+msgstr "%1 – %2"
 
 #~ msgid "%1 - %2"
 #~ msgstr "%1 - %2"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/po/hu/purpose6_nextcloud.po 
new/purpose-6.28.0/po/hu/purpose6_nextcloud.po
--- old/purpose-6.27.0/po/hu/purpose6_nextcloud.po      2026-06-05 
17:52:07.000000000 +0200
+++ new/purpose-6.28.0/po/hu/purpose6_nextcloud.po      2026-07-03 
13:04:43.000000000 +0200
@@ -1,21 +1,21 @@
-# Copyright (C) YEAR This file is copyright:
+# Copyright (C) 2026 This file is copyright:
 # This file is distributed under the same license as the purpose package.
 #
-# Kristof Kiszel <[email protected]>, 2018, 2021.
+# SPDX-FileCopyrightText: 2018, 2021, 2026 Kristof Kiszel 
<[email protected]>
 msgid ""
 msgstr ""
 "Project-Id-Version: purpose\n"
 "Report-Msgid-Bugs-To: https://bugs.kde.org\n";
 "POT-Creation-Date: 2026-04-22 00:41+0000\n"
-"PO-Revision-Date: 2021-01-13 20:23+0100\n"
-"Last-Translator: Kristóf Kiszel <[email protected]>\n"
+"PO-Revision-Date: 2026-06-28 22:11+0200\n"
+"Last-Translator: Kristof Kiszel <[email protected]>\n"
 "Language-Team: Hungarian <[email protected]>\n"
 "Language: hu\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Lokalize 21.03.70\n"
+"X-Generator: Lokalize 26.04.2\n"
 
 #: nextcloudplugin_config.qml:24
 #, kde-format
@@ -28,10 +28,9 @@
 msgstr "Nincs beállítva fiók"
 
 #: nextcloudplugin_config.qml:80
-#, fuzzy, kde-format
-#| msgid "Account:"
+#, kde-format
 msgid "Add New Account"
-msgstr "Fiók:"
+msgstr "Új fiók hozzáadása"
 
 #: nextcloudplugin_config.qml:87
 #, kde-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/po/nb/purpose6_reviewboard.po 
new/purpose-6.28.0/po/nb/purpose6_reviewboard.po
--- old/purpose-6.27.0/po/nb/purpose6_reviewboard.po    2026-06-05 
17:52:07.000000000 +0200
+++ new/purpose-6.28.0/po/nb/purpose6_reviewboard.po    2026-07-03 
13:04:43.000000000 +0200
@@ -8,7 +8,7 @@
 "POT-Creation-Date: 2025-11-17 11:49+0000\n"
 "PO-Revision-Date: 2011-12-08 17:59+0100\n"
 "Last-Translator: Bjørn Steensrud <[email protected]>\n"
-"Language-Team: Norwegian Bokmål <[email protected]>\n"
+"Language-Team: Norwegian Bokmål <[email protected]>\n"
 "Language: nb\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/po/nn/libpurpose6_quick.po 
new/purpose-6.28.0/po/nn/libpurpose6_quick.po
--- old/purpose-6.27.0/po/nn/libpurpose6_quick.po       2026-06-05 
17:52:07.000000000 +0200
+++ new/purpose-6.28.0/po/nn/libpurpose6_quick.po       2026-07-03 
13:04:43.000000000 +0200
@@ -8,7 +8,7 @@
 "POT-Creation-Date: 2026-05-08 00:40+0000\n"
 "PO-Revision-Date: 2023-03-04 17:11+0100\n"
 "Last-Translator: Karl Ove Hufthammer <[email protected]>\n"
-"Language-Team: Norwegian Nynorsk <[email protected]>\n"
+"Language-Team: Norwegian Nynorsk <[email protected]>\n"
 "Language: nn\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/po/nn/libpurpose6_widgets.po 
new/purpose-6.28.0/po/nn/libpurpose6_widgets.po
--- old/purpose-6.27.0/po/nn/libpurpose6_widgets.po     2026-06-05 
17:52:07.000000000 +0200
+++ new/purpose-6.28.0/po/nn/libpurpose6_widgets.po     2026-07-03 
13:04:43.000000000 +0200
@@ -8,7 +8,7 @@
 "POT-Creation-Date: 2026-05-08 00:40+0000\n"
 "PO-Revision-Date: 2023-03-04 17:11+0100\n"
 "Last-Translator: Karl Ove Hufthammer <[email protected]>\n"
-"Language-Team: Norwegian Nynorsk <[email protected]>\n"
+"Language-Team: Norwegian Nynorsk <[email protected]>\n"
 "Language: nn\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/po/nn/purpose6_barcode.po 
new/purpose-6.28.0/po/nn/purpose6_barcode.po
--- old/purpose-6.27.0/po/nn/purpose6_barcode.po        2026-06-05 
17:52:07.000000000 +0200
+++ new/purpose-6.28.0/po/nn/purpose6_barcode.po        2026-07-03 
13:04:43.000000000 +0200
@@ -7,7 +7,7 @@
 "POT-Creation-Date: 2025-11-17 11:49+0000\n"
 "PO-Revision-Date: 2024-08-26 22:08+0200\n"
 "Last-Translator: Karl Ove Hufthammer <[email protected]>\n"
-"Language-Team: Norwegian Nynorsk <[email protected]>\n"
+"Language-Team: Norwegian Nynorsk <[email protected]>\n"
 "Language: nn\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/po/nn/purpose6_bluetooth.po 
new/purpose-6.28.0/po/nn/purpose6_bluetooth.po
--- old/purpose-6.27.0/po/nn/purpose6_bluetooth.po      2026-06-05 
17:52:07.000000000 +0200
+++ new/purpose-6.28.0/po/nn/purpose6_bluetooth.po      2026-07-03 
13:04:43.000000000 +0200
@@ -8,7 +8,7 @@
 "POT-Creation-Date: 2025-11-17 11:49+0000\n"
 "PO-Revision-Date: 2019-07-19 10:31+0200\n"
 "Last-Translator: Karl Ove Hufthammer <[email protected]>\n"
-"Language-Team: Norwegian Nynorsk <[email protected]>\n"
+"Language-Team: Norwegian Nynorsk <[email protected]>\n"
 "Language: nn\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/po/nn/purpose6_fileitemaction.po 
new/purpose-6.28.0/po/nn/purpose6_fileitemaction.po
--- old/purpose-6.27.0/po/nn/purpose6_fileitemaction.po 2026-06-05 
17:52:07.000000000 +0200
+++ new/purpose-6.28.0/po/nn/purpose6_fileitemaction.po 2026-07-03 
13:04:43.000000000 +0200
@@ -8,7 +8,7 @@
 "POT-Creation-Date: 2025-11-17 11:49+0000\n"
 "PO-Revision-Date: 2019-03-09 23:08+0100\n"
 "Last-Translator: Karl Ove Hufthammer <[email protected]>\n"
-"Language-Team: Norwegian Nynorsk <[email protected]>\n"
+"Language-Team: Norwegian Nynorsk <[email protected]>\n"
 "Language: nn\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/po/nn/purpose6_imgur.po 
new/purpose-6.28.0/po/nn/purpose6_imgur.po
--- old/purpose-6.27.0/po/nn/purpose6_imgur.po  2026-06-05 17:52:07.000000000 
+0200
+++ new/purpose-6.28.0/po/nn/purpose6_imgur.po  2026-07-03 13:04:43.000000000 
+0200
@@ -7,7 +7,7 @@
 "POT-Creation-Date: 2025-11-17 11:49+0000\n"
 "PO-Revision-Date: 2026-04-18 16:09+0200\n"
 "Last-Translator: Karl Ove Hufthammer <[email protected]>\n"
-"Language-Team: Norwegian Nynorsk <[email protected]>\n"
+"Language-Team: Norwegian Nynorsk <[email protected]>\n"
 "Language: nn\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/po/nn/purpose6_kdeconnect.po 
new/purpose-6.28.0/po/nn/purpose6_kdeconnect.po
--- old/purpose-6.27.0/po/nn/purpose6_kdeconnect.po     2026-06-05 
17:52:07.000000000 +0200
+++ new/purpose-6.28.0/po/nn/purpose6_kdeconnect.po     2026-07-03 
13:04:43.000000000 +0200
@@ -8,7 +8,7 @@
 "POT-Creation-Date: 2025-11-17 11:49+0000\n"
 "PO-Revision-Date: 2018-05-28 22:24+0100\n"
 "Last-Translator: Karl Ove Hufthammer <[email protected]>\n"
-"Language-Team: Norwegian Nynorsk <[email protected]>\n"
+"Language-Team: Norwegian Nynorsk <[email protected]>\n"
 "Language: nn\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/po/nn/purpose6_kdeconnectsms.po 
new/purpose-6.28.0/po/nn/purpose6_kdeconnectsms.po
--- old/purpose-6.27.0/po/nn/purpose6_kdeconnectsms.po  2026-06-05 
17:52:07.000000000 +0200
+++ new/purpose-6.28.0/po/nn/purpose6_kdeconnectsms.po  2026-07-03 
13:04:43.000000000 +0200
@@ -7,7 +7,7 @@
 "POT-Creation-Date: 2026-01-28 00:41+0000\n"
 "PO-Revision-Date: 2026-04-18 16:09+0200\n"
 "Last-Translator: Karl Ove Hufthammer <[email protected]>\n"
-"Language-Team: Norwegian Nynorsk <[email protected]>\n"
+"Language-Team: Norwegian Nynorsk <[email protected]>\n"
 "Language: nn\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/po/nn/purpose6_nextcloud.po 
new/purpose-6.28.0/po/nn/purpose6_nextcloud.po
--- old/purpose-6.27.0/po/nn/purpose6_nextcloud.po      2026-06-05 
17:52:07.000000000 +0200
+++ new/purpose-6.28.0/po/nn/purpose6_nextcloud.po      2026-07-03 
13:04:43.000000000 +0200
@@ -7,7 +7,7 @@
 "POT-Creation-Date: 2026-04-22 00:41+0000\n"
 "PO-Revision-Date: 2026-04-26 13:14+0200\n"
 "Last-Translator: Karl Ove Hufthammer <[email protected]>\n"
-"Language-Team: Norwegian Nynorsk <[email protected]>\n"
+"Language-Team: Norwegian Nynorsk <[email protected]>\n"
 "Language: nn\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/po/nn/purpose6_pastebin.po 
new/purpose-6.28.0/po/nn/purpose6_pastebin.po
--- old/purpose-6.27.0/po/nn/purpose6_pastebin.po       2026-06-05 
17:52:07.000000000 +0200
+++ new/purpose-6.28.0/po/nn/purpose6_pastebin.po       2026-07-03 
13:04:43.000000000 +0200
@@ -8,7 +8,7 @@
 "POT-Creation-Date: 2025-11-17 11:49+0000\n"
 "PO-Revision-Date: 2018-02-12 20:37+0100\n"
 "Last-Translator: Karl Ove Hufthammer <[email protected]>\n"
-"Language-Team: Norwegian Nynorsk <[email protected]>\n"
+"Language-Team: Norwegian Nynorsk <[email protected]>\n"
 "Language: nn\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/po/nn/purpose6_phabricator.po 
new/purpose-6.28.0/po/nn/purpose6_phabricator.po
--- old/purpose-6.27.0/po/nn/purpose6_phabricator.po    2026-06-05 
17:52:07.000000000 +0200
+++ new/purpose-6.28.0/po/nn/purpose6_phabricator.po    2026-07-03 
13:04:43.000000000 +0200
@@ -8,7 +8,7 @@
 "POT-Creation-Date: 2025-11-17 11:49+0000\n"
 "PO-Revision-Date: 2018-05-30 20:30+0100\n"
 "Last-Translator: Karl Ove Hufthammer <[email protected]>\n"
-"Language-Team: Norwegian Nynorsk <[email protected]>\n"
+"Language-Team: Norwegian Nynorsk <[email protected]>\n"
 "Language: nn\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/po/nn/purpose6_reviewboard.po 
new/purpose-6.28.0/po/nn/purpose6_reviewboard.po
--- old/purpose-6.27.0/po/nn/purpose6_reviewboard.po    2026-06-05 
17:52:07.000000000 +0200
+++ new/purpose-6.28.0/po/nn/purpose6_reviewboard.po    2026-07-03 
13:04:43.000000000 +0200
@@ -8,7 +8,7 @@
 "POT-Creation-Date: 2025-11-17 11:49+0000\n"
 "PO-Revision-Date: 2018-03-12 19:11+0100\n"
 "Last-Translator: Karl Ove Hufthammer <[email protected]>\n"
-"Language-Team: Norwegian Nynorsk <[email protected]>\n"
+"Language-Team: Norwegian Nynorsk <[email protected]>\n"
 "Language: nn\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/po/nn/purpose6_saveas.po 
new/purpose-6.28.0/po/nn/purpose6_saveas.po
--- old/purpose-6.27.0/po/nn/purpose6_saveas.po 2026-06-05 17:52:07.000000000 
+0200
+++ new/purpose-6.28.0/po/nn/purpose6_saveas.po 2026-07-03 13:04:43.000000000 
+0200
@@ -8,7 +8,7 @@
 "POT-Creation-Date: 2025-11-17 11:49+0000\n"
 "PO-Revision-Date: 2018-05-28 22:23+0100\n"
 "Last-Translator: Karl Ove Hufthammer <[email protected]>\n"
-"Language-Team: Norwegian Nynorsk <[email protected]>\n"
+"Language-Team: Norwegian Nynorsk <[email protected]>\n"
 "Language: nn\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/po/nn/purpose6_youtube.po 
new/purpose-6.28.0/po/nn/purpose6_youtube.po
--- old/purpose-6.27.0/po/nn/purpose6_youtube.po        2026-06-05 
17:52:07.000000000 +0200
+++ new/purpose-6.28.0/po/nn/purpose6_youtube.po        2026-07-03 
13:04:43.000000000 +0200
@@ -8,7 +8,7 @@
 "POT-Creation-Date: 2026-05-09 00:40+0000\n"
 "PO-Revision-Date: 2018-05-28 22:23+0100\n"
 "Last-Translator: Karl Ove Hufthammer <[email protected]>\n"
-"Language-Team: Norwegian Nynorsk <[email protected]>\n"
+"Language-Team: Norwegian Nynorsk <[email protected]>\n"
 "Language: nn\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/po/ru/purpose6_nextcloud.po 
new/purpose-6.28.0/po/ru/purpose6_nextcloud.po
--- old/purpose-6.27.0/po/ru/purpose6_nextcloud.po      2026-06-05 
17:52:07.000000000 +0200
+++ new/purpose-6.28.0/po/ru/purpose6_nextcloud.po      2026-07-03 
13:04:43.000000000 +0200
@@ -3,21 +3,22 @@
 #
 # Alexander Potashev <[email protected]>, 2017.
 # Alexander Yavorsky <[email protected]>, 2018, 2021.
+# SPDX-FileCopyrightText: 2026 Olesya Gerasimenko <[email protected]>
 msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: https://bugs.kde.org\n";
 "POT-Creation-Date: 2026-04-22 00:41+0000\n"
-"PO-Revision-Date: 2021-01-17 12:23+0300\n"
-"Last-Translator: Alexander Yavorsky <[email protected]>\n"
-"Language-Team: Russian <[email protected]>\n"
+"PO-Revision-Date: 2026-06-22 15:59+0300\n"
+"Last-Translator: Olesya Gerasimenko <[email protected]>\n"
+"Language-Team: Basealt Translation Team\n"
 "Language: ru\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n"
 "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Lokalize 20.12.1\n"
+"X-Generator: Lokalize 23.08.5\n"
 
 #: nextcloudplugin_config.qml:24
 #, kde-format
@@ -30,10 +31,9 @@
 msgstr "Отсутствуют настроенные учётные записи"
 
 #: nextcloudplugin_config.qml:80
-#, fuzzy, kde-format
-#| msgid "Account:"
+#, kde-format
 msgid "Add New Account"
-msgstr "Учётная запись:"
+msgstr "Добавить новую учётную запись"
 
 #: nextcloudplugin_config.qml:87
 #, kde-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/src/CMakeLists.txt 
new/purpose-6.28.0/src/CMakeLists.txt
--- old/purpose-6.27.0/src/CMakeLists.txt       2026-06-05 17:52:07.000000000 
+0200
+++ new/purpose-6.28.0/src/CMakeLists.txt       2026-07-03 13:04:43.000000000 
+0200
@@ -30,6 +30,7 @@
     job.cpp
     alternativesmodel.cpp
     configuration.cpp
+    constrainthelpers.cpp
     helper.cpp
     externalprocess/processjob.cpp
     jobcontroller.cpp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/src/alternativesmodel.cpp 
new/purpose-6.28.0/src/alternativesmodel.cpp
--- old/purpose-6.27.0/src/alternativesmodel.cpp        2026-06-05 
17:52:07.000000000 +0200
+++ new/purpose-6.28.0/src/alternativesmodel.cpp        2026-07-03 
13:04:43.000000000 +0200
@@ -6,19 +6,10 @@
 
 #include "alternativesmodel.h"
 
-#if HAVE_QTDBUS
-#include <QDBusConnection>
-#include <QDBusConnectionInterface>
-#endif
-
 #include <QDebug>
 #include <QDirIterator>
 #include <QIcon>
 #include <QJsonArray>
-#include <QMimeDatabase>
-#include <QMimeType>
-#include <QRegularExpression>
-#include <QStandardPaths>
 
 #include <KConfigGroup>
 #include <KJsonUtils>
@@ -26,77 +17,15 @@
 #include <KSharedConfig>
 
 #include "configuration.h"
+#include "constrainthelpers.h"
 #include "helper.h"
 #include "purpose_external_process_debug.h"
 
 using namespace Purpose;
+using namespace Qt::StringLiterals;
 
 static const QStringList s_defaultDisabledPlugins = 
{QStringLiteral("saveasplugin")};
 
-typedef bool (*matchFunction)(const QString &constraint, const QJsonValue 
&value);
-
-static bool defaultMatch(const QString &constraint, const QJsonValue &value)
-{
-    return value == QJsonValue(constraint);
-}
-
-static bool mimeTypeMatch(const QString &constraint, const QJsonValue &value)
-{
-    if (value.isArray()) {
-        const auto array = value.toArray();
-        for (const QJsonValue &val : array) {
-            if (mimeTypeMatch(constraint, val)) {
-                return true;
-            }
-        }
-        return false;
-    } else if (value.isObject()) {
-        for (const QJsonValue &val : value.toObject()) {
-            if (mimeTypeMatch(constraint, val)) {
-                return true;
-            }
-        }
-        return false;
-    } else if (constraint.contains(QLatin1Char('*'))) {
-        const QRegularExpression 
re(QRegularExpression::wildcardToRegularExpression(constraint), 
QRegularExpression::CaseInsensitiveOption);
-        return re.match(value.toString()).hasMatch();
-    } else {
-        QMimeDatabase db;
-        QMimeType mime = db.mimeTypeForName(value.toString());
-        return mime.inherits(constraint);
-    }
-}
-
-static bool dbusMatch(const QString &constraint, const QJsonValue &value)
-{
-    Q_UNUSED(value)
-#if HAVE_QTDBUS
-    return 
QDBusConnection::sessionBus().interface()->isServiceRegistered(constraint);
-#else
-    Q_UNUSED(constraint)
-    return false;
-#endif
-}
-
-static bool executablePresent(const QString &constraint, const QJsonValue 
&value)
-{
-    Q_UNUSED(value)
-    return !QStandardPaths::findExecutable(constraint).isEmpty();
-}
-
-static bool desktopFilePresent(const QString &constraint, const QJsonValue 
&value)
-{
-    Q_UNUSED(value)
-    return !QStandardPaths::locate(QStandardPaths::ApplicationsLocation, 
constraint).isEmpty();
-}
-
-static QMap<QString, matchFunction> s_matchFunctions = {
-    {QStringLiteral("mimeType"), mimeTypeMatch},
-    {QStringLiteral("dbus"), dbusMatch},
-    {QStringLiteral("application"), desktopFilePresent},
-    {QStringLiteral("exec"), executablePresent},
-};
-
 class Purpose::AlternativesModelPrivate
 {
 public:
@@ -105,7 +34,6 @@
     QString m_pluginType;
     QStringList m_disabledPlugins = s_defaultDisabledPlugins;
     QJsonObject m_pluginTypeData;
-    const QRegularExpression constraintRx{QStringLiteral("(\\w+):(.*)")};
 
     bool isPluginAcceptable(const KPluginMetaData &meta, const QStringList 
&disabledPlugins) const
     {
@@ -124,46 +52,12 @@
         // All constraints must match
         const QJsonArray constraints = 
obj.value(QLatin1String("X-Purpose-Constraints")).toArray();
         for (const QJsonValue &constraint : constraints) {
-            if (!constraintMatches(meta, constraint)) {
+            if (!constraintMatches(meta, constraint, m_inputData)) {
                 return false;
             }
         }
         return true;
     }
-
-    bool constraintMatches(const KPluginMetaData &meta, const QJsonValue 
&constraint) const
-    {
-        // Treat an array as an OR
-        if (constraint.isArray()) {
-            const QJsonArray options = constraint.toArray();
-            for (const auto &option : options) {
-                if (constraintMatches(meta, option)) {
-                    return true;
-                }
-            }
-            return false;
-        }
-        Q_ASSERT(constraintRx.isValid());
-        QRegularExpressionMatch match = 
constraintRx.match(constraint.toString());
-        if (!match.isValid() || !match.hasMatch()) {
-            qCWarning(PURPOSE_EXTERNAL_PROCESS_LOG) << "wrong constraint" << 
constraint.toString();
-            return false;
-        }
-        const QString propertyName = match.captured(1);
-        const QString constrainedValue = match.captured(2);
-
-        const auto it = m_inputData.constFind(propertyName);
-        if (it == m_inputData.end()) {
-            // The constraint doesn't pertain to this data type
-            return true;
-        }
-
-        const bool acceptable = s_matchFunctions.value(propertyName, 
defaultMatch)(constrainedValue, *it);
-        if (!acceptable) {
-            // qCDebug(PURPOSE_EXTERNAL_PROCESS_LOG) << "not accepted" << 
meta.name() << propertyName << constrainedValue << *it;
-        }
-        return acceptable;
-    }
 };
 
 AlternativesModel::AlternativesModel(QObject *parent)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/src/constrainthelpers.cpp 
new/purpose-6.28.0/src/constrainthelpers.cpp
--- old/purpose-6.27.0/src/constrainthelpers.cpp        1970-01-01 
01:00:00.000000000 +0100
+++ new/purpose-6.28.0/src/constrainthelpers.cpp        2026-07-03 
13:04:43.000000000 +0200
@@ -0,0 +1,121 @@
+/*
+ *  SPDX-FileCopyrightText: 2014 Aleix Pol Gonzalez <[email protected]>
+ *
+ *  SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "constrainthelpers.h"
+
+#include <QJsonArray>
+#include <QJsonObject>
+#include <QJsonValue>
+#include <QMimeDatabase>
+#include <QStandardPaths>
+
+#if HAVE_QTDBUS
+#include <QDBusConnection>
+#include <QDBusConnectionInterface>
+#endif
+
+#include "purpose_external_process_debug.h"
+
+using namespace Qt::StringLiterals;
+
+typedef bool (*matchFunction)(const QString &constraint, const QJsonValue 
&value);
+
+static bool defaultMatch(const QString &constraint, const QJsonValue &value)
+{
+    return value == QJsonValue(constraint);
+}
+
+static bool mimeTypeMatch(const QString &constraint, const QJsonValue &value)
+{
+    if (value.isArray()) {
+        const auto array = value.toArray();
+        for (const QJsonValue &val : array) {
+            if (mimeTypeMatch(constraint, val)) {
+                return true;
+            }
+        }
+        return false;
+    } else if (value.isObject()) {
+        for (const QJsonValue &val : value.toObject()) {
+            if (mimeTypeMatch(constraint, val)) {
+                return true;
+            }
+        }
+        return false;
+    } else if (constraint.contains(QLatin1Char('*'))) {
+        const QRegularExpression 
re(QRegularExpression::wildcardToRegularExpression(constraint), 
QRegularExpression::CaseInsensitiveOption);
+        return re.match(value.toString()).hasMatch();
+    } else {
+        QMimeDatabase db;
+        QMimeType mime = db.mimeTypeForName(value.toString());
+        return mime.inherits(constraint);
+    }
+}
+
+static bool dbusMatch(const QString &constraint, const QJsonValue &value)
+{
+    Q_UNUSED(value)
+#if HAVE_QTDBUS
+    return 
QDBusConnection::sessionBus().interface()->isServiceRegistered(constraint);
+#else
+    Q_UNUSED(constraint)
+    return false;
+#endif
+}
+
+static bool executablePresent(const QString &constraint, const QJsonValue 
&value)
+{
+    Q_UNUSED(value)
+    return !QStandardPaths::findExecutable(constraint).isEmpty();
+}
+
+static bool desktopFilePresent(const QString &constraint, const QJsonValue 
&value)
+{
+    Q_UNUSED(value)
+    return !QStandardPaths::locate(QStandardPaths::ApplicationsLocation, 
constraint).isEmpty();
+}
+
+static QMap<QString, matchFunction> s_matchFunctions = {
+    {QStringLiteral("mimeType"), mimeTypeMatch},
+    {QStringLiteral("dbus"), dbusMatch},
+    {QStringLiteral("application"), desktopFilePresent},
+    {QStringLiteral("exec"), executablePresent},
+};
+
+const QRegularExpression constraintRx{QStringLiteral("(\\w+):(.*)")};
+
+bool Purpose::constraintMatches(const KPluginMetaData &meta, const QJsonValue 
&constraint, const QJsonObject &inputData)
+{
+    // Treat an array as an OR
+    if (constraint.isArray()) {
+        const QJsonArray options = constraint.toArray();
+        for (const auto &option : options) {
+            if (constraintMatches(meta, option, inputData)) {
+                return true;
+            }
+        }
+        return false;
+    }
+    Q_ASSERT(constraintRx.isValid());
+    QRegularExpressionMatch match = constraintRx.match(constraint.toString());
+    if (!match.isValid() || !match.hasMatch()) {
+        qCWarning(PURPOSE_EXTERNAL_PROCESS_LOG) << "wrong constraint" << 
constraint.toString();
+        return false;
+    }
+    const QString propertyName = match.captured(1);
+    const QString constrainedValue = match.captured(2);
+
+    if (propertyName == u"mimeType"_s && !inputData.contains(propertyName)) {
+        // The constraint doesn't pertain to this data type
+        return true;
+    }
+
+    const bool acceptable = s_matchFunctions.value(propertyName, 
defaultMatch)(constrainedValue, inputData.value(propertyName));
+    if (!acceptable) {
+        // qCDebug(PURPOSE_EXTERNAL_PROCESS_LOG) << "not accepted" << 
meta.name() << propertyName << constrainedValue << *it;
+    }
+    return acceptable;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purpose-6.27.0/src/constrainthelpers.h 
new/purpose-6.28.0/src/constrainthelpers.h
--- old/purpose-6.27.0/src/constrainthelpers.h  1970-01-01 01:00:00.000000000 
+0100
+++ new/purpose-6.28.0/src/constrainthelpers.h  2026-07-03 13:04:43.000000000 
+0200
@@ -0,0 +1,12 @@
+/*
+ *  SPDX-FileCopyrightText: 2014 Aleix Pol Gonzalez <[email protected]>
+ *
+ *  SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include <KPluginMetaData>
+
+namespace Purpose
+{
+bool constraintMatches(const KPluginMetaData &meta, const QJsonValue 
&constraint, const QJsonObject &inputData);
+};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/purpose-6.27.0/src/plugins/pastebin/pastebinplugin.json 
new/purpose-6.28.0/src/plugins/pastebin/pastebinplugin.json
--- old/purpose-6.27.0/src/plugins/pastebin/pastebinplugin.json 2026-06-05 
17:52:07.000000000 +0200
+++ new/purpose-6.28.0/src/plugins/pastebin/pastebinplugin.json 2026-07-03 
13:04:43.000000000 +0200
@@ -54,65 +54,80 @@
         ],
         "Category": "Utilities",
         "Description": "Upload text to Pastebin.com",
+        "Description[ar]": "ارفع النص على Pastebin.com",
         "Description[bg]": "Качване на текст в Pastebin.com",
         "Description[ca@valencia]": "Puja el text a Pastebin.com",
         "Description[ca]": "Puja el text a Pastebin.com",
         "Description[es]": "Enviar texto a Pastebin.com",
         "Description[fr]": "Envoyer du texte vers Pastebin",
         "Description[he]": "העלאת טקסט ל־Pastebin.com",
+        "Description[hu]": "Szöveg feltöltése a Pastebin.com-ra",
         "Description[ia]": "Incarga texto a Pastebin.com",
         "Description[it]": "Carica il testo su Pastebin.com",
         "Description[ka]": "ტექსტის ატვირთვა Pastebin.com-ზე",
         "Description[ko]": "Pastebin.com에 텍스트 업로드",
         "Description[lt]": "Išsiųsti tekstą į „Pastebin.com“",
         "Description[nl]": "Tekst uploaden naar Pastebin.com",
+        "Description[nn]": "Last opp tekst til Pastebin.com",
         "Description[pt_BR]": "Enviar o texto para o Pastebin.com",
+        "Description[ru]": "Отправка текста на Pastebin.com",
         "Description[sk]": "Nahrať text na Pastebin.com",
         "Description[sl]": "Prenesi besedilo na Pastebin.com",
         "Description[tr]": "Metni Pastebin.com’a yükle",
         "Description[uk]": "Вивантажити текст на Pastebin.com",
         "Description[zh_CN]": "上传文本到 Pastebin.com",
+        "Description[zh_TW]": "上傳文字到 Pastebin.com",
         "Icon": "edit-paste",
         "License": "GPL",
         "Name": "Upload Publicly to Pastebin.com",
+        "Name[ar]": "ارفع بشكل علني على Pastebin.com",
         "Name[bg]": "Публично качване в Pastebin.com",
         "Name[ca@valencia]": "Puja públicament a Pastebin.com",
         "Name[ca]": "Puja públicament a Pastebin.com",
         "Name[es]": "Enviar públicamente a Pastebin.com",
         "Name[fr]": "Envoyer de façon publique à Pastebin",
         "Name[he]": "העלאה ציבורית ל־Pastebin.com",
+        "Name[hu]": "Nyilvános feltöltés a Pastebin.com-ra",
         "Name[ia]": "Incarga publicamente a Pastebin.com",
         "Name[it]": "Carica pubblicamente su Pastebin.com",
         "Name[ka]": "საჯაროდ ატვირთვა Pastebin.com-ზე",
         "Name[ko]": "Pastebin.com에 공개 업로드",
         "Name[lt]": "Išsiųsti viešai į „Pastebin.com“",
         "Name[nl]": "Publiek uploaden naar Pastebin.com",
+        "Name[nn]": "Last opp offentleg til Pastebin.com",
         "Name[pt_BR]": "Enviar publicamente para o Pastebin.com",
+        "Name[ru]": "Публикация на Pastebin.com",
         "Name[sk]": "Verejne nahrať na Pastebin.com",
         "Name[sl]": "Prenesi Javno na Pastebin.com",
         "Name[tr]": "Herkese Açık Olarak Pastebin.com’a Yükle",
         "Name[uk]": "Вивантажити відкрито на Pastebin.com",
-        "Name[zh_CN]": "上传到 Pastebin.com (公开)"
+        "Name[zh_CN]": "上传到 Pastebin.com (公开)",
+        "Name[zh_TW]": "公開上傳到 Pastebin.com"
     },
     "X-Purpose-ActionDisplay": "Upload Publicly to Pastebin.com",
+    "X-Purpose-ActionDisplay[ar]": "ارفع بشكل علني على Pastebin.com",
     "X-Purpose-ActionDisplay[bg]": "Публично качване в Pastebin,com",
     "X-Purpose-ActionDisplay[ca@valencia]": "Puja públicament a Pastebin.com",
     "X-Purpose-ActionDisplay[ca]": "Puja públicament a Pastebin.com",
     "X-Purpose-ActionDisplay[es]": "Enviar públicamente a Pastebin.com",
     "X-Purpose-ActionDisplay[fr]": "Envoyer publiquement vers Pastebin",
     "X-Purpose-ActionDisplay[he]": "העלאה ציבורית ל־Pastebin.com",
+    "X-Purpose-ActionDisplay[hu]": "Nyilvános feltöltés a Pastebin.com-ra",
     "X-Purpose-ActionDisplay[ia]": "Incarga publicamente a Pastebin.com",
     "X-Purpose-ActionDisplay[it]": "Carica pubblicamente su Pastebin.com",
     "X-Purpose-ActionDisplay[ka]": "საჯაროდ ატვირთვა Pastebin.com-ზე",
     "X-Purpose-ActionDisplay[ko]": "Pastebin.com에 공개 업로드",
     "X-Purpose-ActionDisplay[lt]": "Išsiųsti viešai į „Pastebin.com“",
     "X-Purpose-ActionDisplay[nl]": "Publiek uploaden naar Pastebin.com",
+    "X-Purpose-ActionDisplay[nn]": "Last opp offentleg til Pastebin.com",
     "X-Purpose-ActionDisplay[pt_BR]": "Enviar publicamente para o 
Pastebin.com",
+    "X-Purpose-ActionDisplay[ru]": "Опубликовать на Pastebin.com",
     "X-Purpose-ActionDisplay[sk]": "Verejne nahrať na Pastebin.com",
     "X-Purpose-ActionDisplay[sl]": "Prenesi Javno na Pastebin.com",
     "X-Purpose-ActionDisplay[tr]": "Metni Herkes için Pastebin.com’a Yükle",
     "X-Purpose-ActionDisplay[uk]": "Вивантажити відкрито на Pastebin.com",
     "X-Purpose-ActionDisplay[zh_CN]": "上传到 Pastebin.com (公开)",
+    "X-Purpose-ActionDisplay[zh_TW]": "公開上傳到 Pastebin.com",
     "X-Purpose-Configuration": [],
     "X-Purpose-Constraints": [
         "mimeType:text/plain"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/purpose-6.27.0/src/plugins/youtube/youtubeplugin.json 
new/purpose-6.28.0/src/plugins/youtube/youtubeplugin.json
--- old/purpose-6.27.0/src/plugins/youtube/youtubeplugin.json   2026-06-05 
17:52:07.000000000 +0200
+++ new/purpose-6.28.0/src/plugins/youtube/youtubeplugin.json   2026-07-03 
13:04:43.000000000 +0200
@@ -148,6 +148,7 @@
     "X-Purpose-ActionDisplay[eu]": "Zama-igo YouTubera…",
     "X-Purpose-ActionDisplay[fr]": "Envoyer vers YouTube...",
     "X-Purpose-ActionDisplay[he]": "העלאה ל־YouTube…",
+    "X-Purpose-ActionDisplay[hu]": "Feltöltés a YouTube-ra…",
     "X-Purpose-ActionDisplay[ia]": "Incarga a YouTube…",
     "X-Purpose-ActionDisplay[is]": "Senda inn á YouTube…",
     "X-Purpose-ActionDisplay[it]": "Carica su YouTube…",

Reply via email to