diff --git a/src/alternativesmodel.cpp b/src/alternativesmodel.cpp index 0df2b88..78af424 100644 --- a/src/alternativesmodel.cpp +++ b/src/alternativesmodel.cpp @@ -1,341 +1,341 @@ /* Copyright 2014 Aleix Pol Gonzalez This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . */ #include "alternativesmodel.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "helper.h" #include "configuration.h" #include "job.h" using namespace Purpose; 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('*'))) { return QRegExp(constraint, Qt::CaseInsensitive, QRegExp::Wildcard).exactMatch(value.toString()); } 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) return QDBusConnection::sessionBus().interface()->isServiceRegistered(constraint); } 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 s_matchFunctions = { { QStringLiteral("mimeType"), mimeTypeMatch }, { QStringLiteral("dbus"), dbusMatch }, { QStringLiteral("application"), desktopFilePresent }, { QStringLiteral("exec"), executablePresent } }; class Purpose::AlternativesModelPrivate { public: QVector m_plugins; QJsonObject m_inputData; 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 { const QJsonObject obj = meta.rawData(); if(!obj.value(QStringLiteral("X-Purpose-PluginTypes")).toArray().contains(m_pluginType)) { qDebug() << "discarding" << meta.name() << KPluginMetaData::readStringList(meta.rawData(), QStringLiteral("X-Purpose-PluginTypes")); return false; } if (disabledPlugins.contains(meta.pluginId()) || m_disabledPlugins.contains(meta.pluginId())) { //qDebug() << "disabled plugin" << meta.name() << meta.pluginId(); return false; } //All constraints must match const QJsonArray constraints = obj.value(QStringLiteral("X-Purpose-Constraints")).toArray(); for(const QJsonValue& constraint: constraints) { if (!constraintMatches(meta, constraint)) 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()) { qWarning() << "wrong constraint" << constraint.toString(); return false; } const QString propertyName = match.captured(1); const QString constrainedValue = match.captured(2); const bool acceptable = s_matchFunctions.value(propertyName, defaultMatch)(constrainedValue, m_inputData.value(propertyName)); if (!acceptable) { // qDebug() << "not accepted" << meta.name() << propertyName << constrainedValue << m_inputData[propertyName]; } return acceptable; } }; AlternativesModel::AlternativesModel(QObject* parent) : QAbstractListModel(parent) , d_ptr(new AlternativesModelPrivate) { } AlternativesModel::~AlternativesModel() { Q_D(AlternativesModel); delete d; } QHash AlternativesModel::roleNames() const { QHash roles = QAbstractListModel::roleNames(); roles.unite({ { IconNameRole, "iconName" }, { PluginIdRole, "pluginId" }, { ActionDisplayRole, "actionDisplay" } }); return roles; } void AlternativesModel::setInputData(const QJsonObject &input) { Q_D(AlternativesModel); if (input == d->m_inputData) return; d->m_inputData = input; initializeModel(); Q_EMIT inputDataChanged(); } void AlternativesModel::setPluginType(const QString& pluginType) { Q_D(AlternativesModel); if (pluginType == d->m_pluginType) return; d->m_pluginTypeData = Purpose::readPluginType(pluginType); d->m_pluginType = pluginType; Q_ASSERT(d->m_pluginTypeData.isEmpty() == d->m_pluginType.isEmpty()); initializeModel(); Q_EMIT pluginTypeChanged(); } QStringList AlternativesModel::disabledPlugins() const { Q_D(const AlternativesModel); return d->m_disabledPlugins; } void AlternativesModel::setDisabledPlugins(const QStringList &pluginIds) { Q_D(AlternativesModel); if (pluginIds == d->m_disabledPlugins) return; d->m_disabledPlugins = pluginIds; initializeModel(); Q_EMIT disabledPluginsChanged(); } QString AlternativesModel::pluginType() const { Q_D(const AlternativesModel); return d->m_pluginType; } QJsonObject AlternativesModel::inputData() const { Q_D(const AlternativesModel); return d->m_inputData; } Purpose::Configuration* AlternativesModel::configureJob(int row) { Q_D(AlternativesModel); const KPluginMetaData pluginData = d->m_plugins.at(row); return new Configuration(d->m_inputData, d->m_pluginType, d->m_pluginTypeData, pluginData); } int AlternativesModel::rowCount(const QModelIndex& parent) const { Q_D(const AlternativesModel); return parent.isValid() ? 0 : d->m_plugins.count(); } QVariant AlternativesModel::data(const QModelIndex& index, int role) const { Q_D(const AlternativesModel); if (!index.isValid() || index.row()>d->m_plugins.count()) return QVariant(); KPluginMetaData data = d->m_plugins[index.row()]; switch (role) { case Qt::DisplayRole: return data.name(); case Qt::ToolTip: return data.description(); case IconNameRole: return data.iconName(); case Qt::DecorationRole: return QIcon::fromTheme(data.iconName()); case PluginIdRole: return data.pluginId(); case ActionDisplayRole: { - QString action = data.value(QStringLiteral("X-Purpose-ActionDisplay")); + QString action = data.rawData()[QStringLiteral("KPlugin")].toObject()[QStringLiteral("X-Purpose-ActionDisplay")].toString(); return action.isEmpty() ? data.name() : action; } } return QVariant(); } static QVector findScriptedPackages(std::function filter) { QVector ret; QSet addedPlugins; const QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("kpackage/Purpose"), QStandardPaths::LocateDirectory); for (const QString &dir : dirs) { QDirIterator dirIt(dir, QDir::Dirs | QDir::NoDotAndDotDot); for(; dirIt.hasNext(); ) { QDir dir(dirIt.next()); Q_ASSERT(dir.exists()); if (!dir.exists(QStringLiteral("metadata.json"))) continue; const KPluginMetaData info = Purpose::createMetaData(dir.absoluteFilePath(QStringLiteral("metadata.json"))); if (!addedPlugins.contains(info.pluginId()) && filter(info)) { addedPlugins << info.pluginId(); ret += info; } } } return ret; } void AlternativesModel::initializeModel() { Q_D(AlternativesModel); if (d->m_pluginType.isEmpty()) { return; } const QJsonArray inbound = d->m_pluginTypeData.value(QStringLiteral("X-Purpose-InboundArguments")).toArray(); for (const QJsonValue& arg : inbound) { if(!d->m_inputData.contains(arg.toString())) { qWarning() << "Cannot initialize model with data" << d->m_inputData << ". missing:" << arg; return; } } const auto config = KSharedConfig::openConfig(QStringLiteral("purposerc")); const auto group = config->group("plugins"); const QStringList disabledPlugins = group.readEntry("disabled", QStringList()); auto pluginAcceptable = [d, disabledPlugins](const KPluginMetaData& meta) { return d->isPluginAcceptable(meta, disabledPlugins); }; beginResetModel(); d->m_plugins.clear(); const auto plugins = KPluginLoader::findPlugins(QStringLiteral("kf5/purpose")); QSet addedPlugins; for (const auto &metaData : plugins) { if (!addedPlugins.contains(metaData.pluginId()) && pluginAcceptable(metaData)) { addedPlugins << metaData.pluginId(); d->m_plugins << metaData; } } d->m_plugins += findScriptedPackages(pluginAcceptable); endResetModel(); } diff --git a/src/plugins/bluetooth/bluetoothplugin.json b/src/plugins/bluetooth/bluetoothplugin.json index 97d9050..54f58e8 100644 --- a/src/plugins/bluetooth/bluetoothplugin.json +++ b/src/plugins/bluetooth/bluetoothplugin.json @@ -1,77 +1,77 @@ { "KPlugin": { "Authors": [ { "Name": "Nicolas Fella", "Name[ar]": "Nicolas Fella", "Name[ca@valencia]": "Nicolas Fella", "Name[ca]": "Nicolas Fella", "Name[cs]": "Nicolas Fella", "Name[da]": "Nicolas Fella", "Name[de]": "Nicolas Fella", "Name[en_GB]": "Nicolas Fella", "Name[es]": "Nicolas Fella", "Name[eu]": "Nicolas Fella", "Name[fi]": "Nicolas Fella", "Name[fr]": "Nicolas Fella", "Name[gl]": "Nicolas Fella", "Name[hu]": "Nicolas Fella", "Name[id]": "Nicolas Fella", "Name[it]": "Nicolas Fella", "Name[ko]": "Nicolas Fella", "Name[nl]": "Nicolas Fella", "Name[nn]": "Nicolas Fella", "Name[pl]": "Nicolas Fella", "Name[pt]": "Nicolas Fella", "Name[pt_BR]": "Nicolas Fella", "Name[ru]": "Nicolas Fella", "Name[sk]": "Nicolas Fella", "Name[sv]": "Nicolas Fella", "Name[uk]": "Nicolas Fella", "Name[x-test]": "xxNicolas Fellaxx", "Name[zh_CN]": "Nicolas Fella", "Name[zh_TW]": "Nicolas Fella" } ], "Category": "Utilities", "Description": "Send via Bluetooth", "Description[ca@valencia]": "Envia per Bluetooth", "Description[ca]": "Envia per Bluetooth", "Description[cs]": "Poslat přes Bluetooth", "Description[da]": "Send via Bluetooth", "Description[de]": "Über Bluetooth versenden", "Description[en_GB]": "Send via Bluetooth", "Description[es]": "Enviar por Bluetooth", "Description[eu]": "Bidali bluetooth bidez", "Description[fi]": "Lähetä Bluetoothilla", "Description[fr]": "Envoyer via Bluetooth", "Description[gl]": "Enviar por Bluetooth…", "Description[hu]": "Küldés Bluetoothon", "Description[id]": "Mengirim via Bluetooth", "Description[it]": "Invia tramite Bluetooth", "Description[ko]": "블루투스로 보내기", "Description[nl]": "Verzenden over bluetooth", "Description[nn]": "Send over Bluetooth", "Description[pl]": "Prześlij przez Bluetooth", "Description[pt]": "Enviar por Bluetooth", "Description[pt_BR]": "Enviar por Bluetooth", "Description[ru]": "Отправка по Bluetooth", "Description[sk]": "Poslať cez Bluetooth", "Description[sv]": "Skicka via Blåtand", "Description[uk]": "Надсилання за допомогою Bluetooth", "Description[x-test]": "xxSend via Bluetoothxx", "Description[zh_CN]": "通过蓝牙发送", "Description[zh_TW]": "透過藍牙傳送", "Icon": "preferences-system-bluetooth", "License": "GPL", - "Name": "Send via Bluetooth" + "Name": "Send via Bluetooth", + "X-Purpose-ActionDisplay": "Send via Bluetooth..." }, - "X-Purpose-ActionDisplay": "Send via Bluetooth...", "X-Purpose-Configuration": [ "device" ], "X-Purpose-Constraints": [], "X-Purpose-PluginTypes": [ "Export" ] } diff --git a/src/plugins/email/emailplugin.json b/src/plugins/email/emailplugin.json index f18638e..d487055 100644 --- a/src/plugins/email/emailplugin.json +++ b/src/plugins/email/emailplugin.json @@ -1,79 +1,79 @@ { "KPlugin": { "Authors": [ { "Name": "Daniel Vrátil", "Name[ar]": "Daniel Vrátil", "Name[ca@valencia]": "Daniel Vrátil", "Name[ca]": "Daniel Vrátil", "Name[cs]": "Daniel Vrátil", "Name[da]": "Daniel Vrátil", "Name[de]": "Daniel Vrátil", "Name[en_GB]": "Daniel Vrátil", "Name[es]": "Daniel Vrátil", "Name[eu]": "Daniel Vrátil", "Name[fi]": "Daniel Vrátil", "Name[fr]": "Daniel Vrátil", "Name[gl]": "Daniel Vrátil", "Name[hu]": "Daniel Vrátil", "Name[id]": "Daniel Vrátil", "Name[it]": "Daniel Vrátil", "Name[ko]": "Daniel Vrátil", "Name[nl]": "Daniel Vrátil", "Name[nn]": "Daniel Vrátil", "Name[pl]": "Daniel Vrátil", "Name[pt]": "Daniel Vrátil", "Name[pt_BR]": "Daniel Vrátil", "Name[ru]": "Daniel Vrátil", "Name[sk]": "Daniel Vrátil", "Name[sv]": "Daniel Vrátil", "Name[tr]": "Daniel Vrátil", "Name[uk]": "Daniel Vrátil", "Name[x-test]": "xxDaniel Vrátilxx", "Name[zh_CN]": "Daniel Vrátil", "Name[zh_TW]": "Daniel Vrátil" } ], "Category": "Utilities", "Description": "Send via Email", "Description[ar]": "أرسِل عبر البريد الإلكتروني", "Description[ca@valencia]": "Envia per correu electrònic", "Description[ca]": "Envia per correu electrònic", "Description[cs]": "Poslat emailem", "Description[da]": "Send via e-mail", "Description[de]": "Als E-Mail senden", "Description[en_GB]": "Send via Email", "Description[es]": "Enviar por correo electrónico", "Description[eu]": "Bidali e-posta bidez", "Description[fi]": "Lähetä sähköpostitse", "Description[fr]": "Envoyer par courriel", "Description[gl]": "Enviar por correo electrónico", "Description[hu]": "Küldés e-mailben", "Description[id]": "Mengirim via Email", "Description[it]": "Invia per posta elettronica", "Description[ko]": "이메일로 보내기", "Description[nl]": "Verzenden via e-mail", "Description[nn]": "Send via e-post", "Description[pl]": "Wyślij pocztą", "Description[pt]": "Enviar por E-mail", "Description[pt_BR]": "Envia por e-mail", "Description[ru]": "Отправка по электронной почте", "Description[sk]": "Poslať cez Email", "Description[sv]": "Skicka med e-post", "Description[tr]": "Eposta olarak gönder", "Description[uk]": "Надсилання електронною поштою", "Description[x-test]": "xxSend via Emailxx", "Description[zh_CN]": "通过电子邮件发送", "Description[zh_TW]": "透過電子郵件傳送", "Icon": "mail-message", "License": "GPL", - "Name": "Send via Email" + "Name": "Send via Email", + "X-Purpose-ActionDisplay": "Send via Email..." }, - "X-Purpose-ActionDisplay": "Send via Email...", "X-Purpose-Configuration": [], "X-Purpose-Constraints": [], "X-Purpose-PluginTypes": [ "Export", "ShareUrl" ] } diff --git a/src/plugins/imgur/imgurplugin.json b/src/plugins/imgur/imgurplugin.json index 3a842a1..27f53b6 100644 --- a/src/plugins/imgur/imgurplugin.json +++ b/src/plugins/imgur/imgurplugin.json @@ -1,114 +1,114 @@ { "KPlugin": { "Authors": [ { "Name": "Aleix Pol", "Name[ar]": "Aleix Pol", "Name[ca@valencia]": "Aleix Pol", "Name[ca]": "Aleix Pol", "Name[cs]": "Aleix Pol", "Name[da]": "Aleix Pol", "Name[de]": "Aleix Pol", "Name[el]": "Aleix Pol", "Name[en_GB]": "Aleix Pol", "Name[es]": "Aleix Pol", "Name[eu]": "Aleix Pol", "Name[fi]": "Aleix Pol", "Name[fr]": "Aleix Pol", "Name[gl]": "Aleix Pol", "Name[hu]": "Aleix Pol", "Name[id]": "Aleix Pol", "Name[it]": "Aleix Pol", "Name[ko]": "Aleix Pol", "Name[nl]": "Aleix Pol", "Name[nn]": "Aleix Pol", "Name[pl]": "Aleix Pol", "Name[pt]": "Aleix Pol", "Name[pt_BR]": "Aleix Pol", "Name[ru]": "Aleix Pol", "Name[sk]": "Aleix Pol", "Name[sv]": "Aleix Pol", "Name[tr]": "Aleix Pol", "Name[uk]": "Aleix Pol", "Name[x-test]": "xxAleix Polxx", "Name[zh_CN]": "Aleix Pol", "Name[zh_TW]": "Aleix Pol" } ], "Category": "Utilities", "Description": "Upload pictures to Imgur", "Description[ar]": "ارفع الصور على Imgur", "Description[ca@valencia]": "Puja imatges a Imgur", "Description[ca]": "Puja imatges a Imgur", "Description[cs]": "Odeslat obrázky na Imgur", "Description[da]": "Upload billeder til Imgur", "Description[de]": "Bilder zu Imgur hochladen", "Description[el]": "Αποστολή εικόνων στο Imgur", "Description[en_GB]": "Upload pictures to Imgur", "Description[es]": "Enviar imágenes a imgur", "Description[eu]": "Igo irudia Imgur-rera", "Description[fi]": "Lähetä kuvia Imguriin", "Description[fr]": "Envoyer des images vers Imgur", "Description[gl]": "Enviar imaxes a Imgur.", "Description[hu]": "Képek feltöltése az Imgurre", "Description[id]": "Mengunggah gambar ke Imgur", "Description[it]": "Carica immagini su Imgur", "Description[ko]": "Imgur에 사진 업로드", "Description[nl]": "Afbeeldingen uploaden naar Imgur", "Description[nn]": "Last opp bilete til Imgur", "Description[pl]": "Wyślij zdjęcia na imgur", "Description[pt]": "Enviar as imagens para o Imgur", "Description[pt_BR]": "Envia imagens para Imgur", "Description[ru]": "Загрузка изображений на Imgur", "Description[sk]": "Nahrať obrázky na Imgur", "Description[sv]": "Ladda upp bilder till Imgur", "Description[tr]": "Resimleri Imgur'e yükle", "Description[uk]": "Вивантаження зображень на Imgur", "Description[x-test]": "xxUpload pictures to Imgurxx", "Description[zh_CN]": "将图片上传到 Imgur", "Description[zh_TW]": "上傳圖片到 Imgur", "Icon": "edit-paste", "License": "GPL", "Name": "Imgur", "Name[ar]": "Imgur", "Name[bs]": "Imgur", "Name[ca@valencia]": "Imgur", "Name[ca]": "Imgur", "Name[cs]": "Imgur", "Name[da]": "Imgur", "Name[de]": "Imgur", "Name[el]": "Imgur", "Name[en_GB]": "Imgur", "Name[es]": "Imgur", "Name[eu]": "Imgur", "Name[fi]": "Imgur", "Name[fr]": "Imgur", "Name[gl]": "Imgur", "Name[hu]": "Imgur", "Name[id]": "Imgur", "Name[it]": "Imgur", "Name[ko]": "Imgur", "Name[nl]": "Imgur", "Name[nn]": "Imgur", "Name[pl]": "Imgur", "Name[pt]": "Imgur", "Name[pt_BR]": "Imgur", "Name[ro]": "Imgur", "Name[ru]": "Imgur", "Name[sk]": "Imgur", "Name[sv]": "Imgur", "Name[tr]": "Imgur", "Name[uk]": "Imgur", "Name[x-test]": "xxImgurxx", "Name[zh_CN]": "Imgur", - "Name[zh_TW]": "Imgur" + "Name[zh_TW]": "Imgur", + "X-Purpose-ActionDisplay": "Imgur" }, - "X-Purpose-ActionDisplay": "Imgur", "X-Purpose-Configuration": [], "X-Purpose-Constraints": [ "mimeType:image/*" ], "X-Purpose-PluginTypes": [ "Export" ] } diff --git a/src/plugins/kdeconnect/kdeconnectplugin.json b/src/plugins/kdeconnect/kdeconnectplugin.json index 156e610..ba47d76 100644 --- a/src/plugins/kdeconnect/kdeconnectplugin.json +++ b/src/plugins/kdeconnect/kdeconnectplugin.json @@ -1,85 +1,85 @@ { "KPlugin": { "Authors": [ { "Name": "Aleix Pol", "Name[ar]": "Aleix Pol", "Name[ca@valencia]": "Aleix Pol", "Name[ca]": "Aleix Pol", "Name[cs]": "Aleix Pol", "Name[da]": "Aleix Pol", "Name[de]": "Aleix Pol", "Name[el]": "Aleix Pol", "Name[en_GB]": "Aleix Pol", "Name[es]": "Aleix Pol", "Name[eu]": "Aleix Pol", "Name[fi]": "Aleix Pol", "Name[fr]": "Aleix Pol", "Name[gl]": "Aleix Pol", "Name[hu]": "Aleix Pol", "Name[id]": "Aleix Pol", "Name[it]": "Aleix Pol", "Name[ko]": "Aleix Pol", "Name[nl]": "Aleix Pol", "Name[nn]": "Aleix Pol", "Name[pl]": "Aleix Pol", "Name[pt]": "Aleix Pol", "Name[pt_BR]": "Aleix Pol", "Name[ru]": "Aleix Pol", "Name[sk]": "Aleix Pol", "Name[sv]": "Aleix Pol", "Name[tr]": "Aleix Pol", "Name[uk]": "Aleix Pol", "Name[x-test]": "xxAleix Polxx", "Name[zh_CN]": "Aleix Pol", "Name[zh_TW]": "Aleix Pol" } ], "Category": "Utilities", "Description": "Send through KDE Connect", "Description[ar]": "أرسِل عبر «كدي المتّصل»", "Description[ca@valencia]": "Envia a través del KDE Connect", "Description[ca]": "Envia a través del KDE Connect", "Description[cs]": "Poslat přes KDE Connect", "Description[da]": "Send via KDE Connect", "Description[de]": "Mit KDE-Connect versenden", "Description[el]": "Αποστολή μέσω KDE Connect", "Description[en_GB]": "Send through KDE Connect", "Description[es]": "Enviar a través de KDE Connect", "Description[eu]": "Bidali KDE Connect bitartez", "Description[fi]": "Lähetä KDE Connectilla", "Description[fr]": "Envoyer via KDE Connect", "Description[gl]": "Enviar mediante KDE Connect.", "Description[hu]": "Küldés a KDE Connecttel", "Description[id]": "Pengiriman melalui KDE Connect", "Description[it]": "Invia tramite KDE Connect", "Description[ko]": "KDE Connect로 보내기", "Description[nl]": "Via KDE Connect verzenden", "Description[nn]": "Send via KDE Connect", "Description[pl]": "Wyślij przez KDE Connect", "Description[pt]": "Enviar pelo KDE Connect", "Description[pt_BR]": "Enviar através do KDE Connect", "Description[ru]": "Отправка через KDE Connect", "Description[sk]": "Poslať cez KDE Connect", "Description[sv]": "Skicka via KDE-anslut", "Description[tr]": "KDE Bağlantısı ile gönder", "Description[uk]": "Надіслати за допомогою KDE Connect", "Description[x-test]": "xxSend through KDE Connectxx", "Description[zh_CN]": "通过 KDE Connect 发送", "Description[zh_TW]": "透過 KDE Connect 傳送", "Icon": "kdeconnect", "License": "GPL", - "Name": "Send To Device" + "Name": "Send To Device", + "X-Purpose-ActionDisplay": "Send To Device..." }, - "X-Purpose-ActionDisplay": "Send To Device...", "X-Purpose-Configuration": [ "device" ], "X-Purpose-Constraints": [ "dbus:org.kde.kdeconnect" ], "X-Purpose-PluginTypes": [ "Export", "ShareUrl" ] } diff --git a/src/plugins/kdeconnect_sms/kdeconnectsmsplugin.json b/src/plugins/kdeconnect_sms/kdeconnectsmsplugin.json index f6de09e..ffe9bac 100644 --- a/src/plugins/kdeconnect_sms/kdeconnectsmsplugin.json +++ b/src/plugins/kdeconnect_sms/kdeconnectsmsplugin.json @@ -1,73 +1,73 @@ { "KPlugin": { "Authors": [ { "Name": "Nicolas Fella", "Name[ar]": "Nicolas Fella", "Name[ca@valencia]": "Nicolas Fella", "Name[ca]": "Nicolas Fella", "Name[cs]": "Nicolas Fella", "Name[da]": "Nicolas Fella", "Name[de]": "Nicolas Fella", "Name[en_GB]": "Nicolas Fella", "Name[es]": "Nicolas Fella", "Name[eu]": "Nicolas Fella", "Name[fi]": "Nicolas Fella", "Name[fr]": "Nicolas Fella", "Name[gl]": "Nicolas Fella", "Name[hu]": "Nicolas Fella", "Name[id]": "Nicolas Fella", "Name[it]": "Nicolas Fella", "Name[ko]": "Nicolas Fella", "Name[nl]": "Nicolas Fella", "Name[nn]": "Nicolas Fella", "Name[pl]": "Nicolas Fella", "Name[pt]": "Nicolas Fella", "Name[pt_BR]": "Nicolas Fella", "Name[ru]": "Nicolas Fella", "Name[sk]": "Nicolas Fella", "Name[sv]": "Nicolas Fella", "Name[uk]": "Nicolas Fella", "Name[x-test]": "xxNicolas Fellaxx", "Name[zh_CN]": "Nicolas Fella", "Name[zh_TW]": "Nicolas Fella" } ], "Category": "Utilities", "Description": "Send SMS via KDE Connect", "Description[ca@valencia]": "Envia un SMS a través del KDE Connect", "Description[ca]": "Envia un SMS a través del KDE Connect", "Description[da]": "Send sms via KDE Connect", "Description[de]": "SMS mit KDE-Connect versenden", "Description[en_GB]": "Send SMS via KDE Connect", "Description[es]": "Enviar SMS a través de KDE Connect", "Description[eu]": "Bidali SMS bat KDE Connect bitartez", "Description[fi]": "Lähetä KDE Connectilla tekstiviesti", "Description[fr]": "Envoyer un SMS via KDE Connect", "Description[gl]": "Enviar unha SMS mediante KDE Connect", "Description[id]": "Kirim SMS via KDE Connect", "Description[it]": "Invia SMS con KDE Connect", "Description[ko]": "KDE Connect로 문자 메시지 보내기", "Description[nl]": "SMS via KDE Connect verzenden", "Description[nn]": "Send SMS via KDE Connect", "Description[pl]": "Wyślij esemesa przez KDE Connect", "Description[pt]": "Enviar um SMS pelo KDE Connect", "Description[pt_BR]": "Enviar SMS via KDE Connect", "Description[sv]": "Skicka SMS via KDE-anslut", "Description[uk]": "Надсилання SMS за допомогою KDE Connect", "Description[x-test]": "xxSend SMS via KDE Connectxx", "Description[zh_CN]": "通过 KDE Connect 发送短信", "Description[zh_TW]": "透過 KDE 連線傳送簡訊", "Icon": "kdeconnect", "License": "GPL", - "Name": "Send SMS via KDE Connect" + "Name": "Send SMS via KDE Connect", + "X-Purpose-ActionDisplay": "Send SMS via KDE Connect..." }, - "X-Purpose-ActionDisplay": "Send SMS via KDE Connect...", "X-Purpose-Configuration": [], "X-Purpose-Constraints": [ "application:org.kde.kdeconnect.sms.desktop" ], "X-Purpose-PluginTypes": [ "ShareUrl" ] } diff --git a/src/plugins/ktp-sendfile/ktpsendfileplugin.json b/src/plugins/ktp-sendfile/ktpsendfileplugin.json index 23d1899..ddf067b 100644 --- a/src/plugins/ktp-sendfile/ktpsendfileplugin.json +++ b/src/plugins/ktp-sendfile/ktpsendfileplugin.json @@ -1,82 +1,82 @@ { "KPlugin": { "Authors": [ { "Name": "Aleix Pol", "Name[ar]": "Aleix Pol", "Name[ca@valencia]": "Aleix Pol", "Name[ca]": "Aleix Pol", "Name[cs]": "Aleix Pol", "Name[da]": "Aleix Pol", "Name[de]": "Aleix Pol", "Name[el]": "Aleix Pol", "Name[en_GB]": "Aleix Pol", "Name[es]": "Aleix Pol", "Name[eu]": "Aleix Pol", "Name[fi]": "Aleix Pol", "Name[fr]": "Aleix Pol", "Name[gl]": "Aleix Pol", "Name[hu]": "Aleix Pol", "Name[id]": "Aleix Pol", "Name[it]": "Aleix Pol", "Name[ko]": "Aleix Pol", "Name[nl]": "Aleix Pol", "Name[nn]": "Aleix Pol", "Name[pl]": "Aleix Pol", "Name[pt]": "Aleix Pol", "Name[pt_BR]": "Aleix Pol", "Name[ru]": "Aleix Pol", "Name[sk]": "Aleix Pol", "Name[sv]": "Aleix Pol", "Name[tr]": "Aleix Pol", "Name[uk]": "Aleix Pol", "Name[x-test]": "xxAleix Polxx", "Name[zh_CN]": "Aleix Pol", "Name[zh_TW]": "Aleix Pol" } ], "Category": "Utilities", "Description": "Send through Instant Messaging", "Description[ar]": "أرسِل عبر «التراسل الآني»", "Description[ca@valencia]": "Envia a través de missatgeria instantània", "Description[ca]": "Envia a través de missatgeria instantània", "Description[cs]": "Poslat skrz chat", "Description[da]": "Send via instant messaging", "Description[de]": "Mit Instant-Messaging versenden", "Description[el]": "Αποστολή με στιγμιαίο μήνυμα", "Description[en_GB]": "Send through Instant Messaging", "Description[es]": "Enviar por mensajería instantánea", "Description[eu]": "Bidali berehalako mezularitza bitartez", "Description[fi]": "Lähetä pikaviestinnän välityksellä", "Description[fr]": "Envoyer via messagerie instantanée", "Description[gl]": "Enviar por mensaxaría instantánea.", "Description[hu]": "Küldés azonnali üzenetküldéssel", "Description[id]": "Pengiriman melalui Instant Messaging", "Description[it]": "Invia tramite messaggistica istantanea", "Description[ko]": "인스턴트 메신저로 보내기", "Description[nl]": "Via Instant Messaging verzenden", "Description[nn]": "Send via lynmelding", "Description[pl]": "Wyślij przez komunikatora internetowego", "Description[pt]": "Enviar pelas Mensagens Instantâneas", "Description[pt_BR]": "Envia por mensagem instantânea", "Description[ru]": "Отправка в личном сообщении", "Description[sk]": "Poslať cez instantné správy", "Description[sv]": "Skicka via direktmeddelanden", "Description[tr]": "Anında Mesajlaşma ile Gönder", "Description[uk]": "Надіслати за допомогою служби обміну повідомленнями", "Description[x-test]": "xxSend through Instant Messagingxx", "Description[zh_CN]": "通过即时消息发送", "Description[zh_TW]": "透過即時訊息傳送", "Icon": "im-user", "License": "GPL", - "Name": "Send To Contact" + "Name": "Send To Contact", + "X-Purpose-ActionDisplay": "Send To Contact..." }, - "X-Purpose-ActionDisplay": "Send To Contact...", "X-Purpose-Configuration": "", "X-Purpose-Constraints": [ "exec:ktp-send-file" ], "X-Purpose-PluginTypes": [ "Export" ] } diff --git a/src/plugins/nextcloud/nextcloudplugin.json b/src/plugins/nextcloud/nextcloudplugin.json index e62d6f2..d0a178a 100644 --- a/src/plugins/nextcloud/nextcloudplugin.json +++ b/src/plugins/nextcloud/nextcloudplugin.json @@ -1,109 +1,109 @@ { "KPlugin": { "Authors": [ { "Name": "Lim Yuen Hoe", "Name[ar]": "Lim Yuen Hoe", "Name[ca@valencia]": "Lim Yuen Hoe", "Name[ca]": "Lim Yuen Hoe", "Name[cs]": "Lim Yuen Hoe", "Name[da]": "Lim Yuen Hoe", "Name[de]": "Lim Yuen Hoe", "Name[en_GB]": "Lim Yuen Hoe", "Name[es]": "Lim Yuen Hoe", "Name[eu]": "Lim Yuen Hoe", "Name[fi]": "Lim Yuen Hoe", "Name[fr]": "Lim Yuen Hoe", "Name[gl]": "Lim Yuen Hoe", "Name[hu]": "Lim Yuen Hoe", "Name[id]": "Lim Yuen Hoe", "Name[it]": "Lim Yuen Hoe", "Name[ko]": "Lim Yuen Hoe", "Name[nl]": "Lim Yuen Hoe", "Name[nn]": "Lim Yuen Hoe", "Name[pl]": "Lim Yuen Hoe", "Name[pt]": "Lim Yuen Hoe", "Name[pt_BR]": "Lim Yuen Hoe", "Name[ru]": "Lim Yuen Hoe", "Name[sk]": "Lim Yuen Hoe", "Name[sv]": "Lim Yuen Hoe", "Name[tr]": "Lim Yuen Hoe", "Name[uk]": "Lim Yuen Hoe", "Name[x-test]": "xxLim Yuen Hoexx", "Name[zh_CN]": "Lim Yuen Hoe", "Name[zh_TW]": "Lim Yuen Hoe" } ], "Category": "Utilities", "Description": "Upload files to Nextcloud", "Description[ar]": "ارفع الملفات على «نِكست‌كلاود»", "Description[ca@valencia]": "Puja els fitxers al Nextcloud", "Description[ca]": "Puja els fitxers al Nextcloud", "Description[cs]": "Odeslat soubory do Nextcloudu", "Description[da]": "Upload filer til Nextcloud", "Description[de]": "Dateien auf Nextcloud hochladen", "Description[en_GB]": "Upload files to Nextcloud", "Description[es]": "Enviar archivos a Nextcloud", "Description[eu]": "Igo fitxategiak NextCloud-era", "Description[fi]": "Lähetä Nextcloudiin tiedostoja", "Description[fr]": "Envoyer des fichiers vers Nextcloud", "Description[gl]": "Enviar ficheiros a NextCloud.", "Description[hu]": "Fájlok feltöltése Nextcloudba", "Description[id]": "Unggah file ke Nextcloud", "Description[it]": "Carica file su Nextcloud", "Description[ko]": "Nextcloud에 파일 업로드", "Description[nl]": "Bestanden naar Nextcloud uploaden", "Description[nn]": "Last opp filer til Nextcloud", "Description[pl]": "Wyślij pliki na Nextcloud", "Description[pt]": "Enviar os vídeos para o NextCloud", "Description[pt_BR]": "Envia arquivos para o Nextcloud", "Description[ru]": "Загрузка файлов в Nextcloud", "Description[sk]": "Nahrať súbory na Nextcloud", "Description[sv]": "Ladda upp filer till Nextcloud", "Description[tr]": "Dosyaları Nextcloud'a yükle", "Description[uk]": "Вивантаження відео на Nextcloud", "Description[x-test]": "xxUpload files to Nextcloudxx", "Description[zh_CN]": "将文件上传到 Nextcloud", "Description[zh_TW]": "上傳檔案到 Nextcloud", "Icon": "edit-paste", "License": "GPL", "Name": "NextCloud", "Name[ar]": "نِكست‌كلاود", "Name[ca@valencia]": "NextCloud", "Name[ca]": "NextCloud", "Name[cs]": "NextCloud", "Name[da]": "NextCloud", "Name[de]": "NextCloud", "Name[en_GB]": "NextCloud", "Name[es]": "NextCloud", "Name[eu]": "NextCloud", "Name[fi]": "NextCloud", "Name[fr]": "NextCloud", "Name[gl]": "NextCloud", "Name[hu]": "NextCloud", "Name[id]": "NextCloud", "Name[it]": "NextCloud", "Name[ko]": "NextCloud", "Name[nl]": "NextCloud", "Name[nn]": "NextCloud", "Name[pl]": "NextCloud", "Name[pt]": "NextCloud", "Name[pt_BR]": "NextCloud", "Name[ru]": "Nextcloud", "Name[sk]": "NextCloud", "Name[sv]": "Nextcloud", "Name[tr]": "NextCloud", "Name[uk]": "NextCloud", "Name[x-test]": "xxNextCloudxx", "Name[zh_CN]": "NextCloud", - "Name[zh_TW]": "NextCloud" + "Name[zh_TW]": "NextCloud", + "X-Purpose-ActionDisplay": "NextCloud..." }, - "X-Purpose-ActionDisplay": "NextCloud...", "X-Purpose-Configuration": [ "folder", "accountId" ], "X-Purpose-PluginTypes": [ "Export" ] } diff --git a/src/plugins/pastebin/pastebinplugin.json b/src/plugins/pastebin/pastebinplugin.json index 0a3bdb9..769966b 100644 --- a/src/plugins/pastebin/pastebinplugin.json +++ b/src/plugins/pastebin/pastebinplugin.json @@ -1,114 +1,114 @@ { "KPlugin": { "Authors": [ { "Name": "Aleix Pol", "Name[ar]": "Aleix Pol", "Name[ca@valencia]": "Aleix Pol", "Name[ca]": "Aleix Pol", "Name[cs]": "Aleix Pol", "Name[da]": "Aleix Pol", "Name[de]": "Aleix Pol", "Name[el]": "Aleix Pol", "Name[en_GB]": "Aleix Pol", "Name[es]": "Aleix Pol", "Name[eu]": "Aleix Pol", "Name[fi]": "Aleix Pol", "Name[fr]": "Aleix Pol", "Name[gl]": "Aleix Pol", "Name[hu]": "Aleix Pol", "Name[id]": "Aleix Pol", "Name[it]": "Aleix Pol", "Name[ko]": "Aleix Pol", "Name[nl]": "Aleix Pol", "Name[nn]": "Aleix Pol", "Name[pl]": "Aleix Pol", "Name[pt]": "Aleix Pol", "Name[pt_BR]": "Aleix Pol", "Name[ru]": "Aleix Pol", "Name[sk]": "Aleix Pol", "Name[sv]": "Aleix Pol", "Name[tr]": "Aleix Pol", "Name[uk]": "Aleix Pol", "Name[x-test]": "xxAleix Polxx", "Name[zh_CN]": "Aleix Pol", "Name[zh_TW]": "Aleix Pol" } ], "Category": "Utilities", "Description": "Upload text to Pastebin", "Description[ar]": "ارفع النص على «پيست‌بِن»", "Description[ca@valencia]": "Puja el text a Pastebin", "Description[ca]": "Puja el text a Pastebin", "Description[cs]": "Odeslat text na Pastebin", "Description[da]": "Upload tekst til Pastebin", "Description[de]": "Text zu Pastebin hochladen", "Description[el]": "Αποστολή κειμένου στο Pastebin", "Description[en_GB]": "Upload text to Pastebin", "Description[es]": "Enviar texto a Pastebin", "Description[eu]": "Igo testua Pastebin-era", "Description[fi]": "Lähetä Pastebiniin tekstiä", "Description[fr]": "Envoyer du texte vers Pastebin", "Description[gl]": "Enviar texto a Pastebin.", "Description[hu]": "Szöveg feltöltése a Pastebinre", "Description[id]": "Unggah teks ke Pastebin", "Description[it]": "Carica il testo su Pastebin", "Description[ko]": "Pastebin에 텍스트 업로드", "Description[nl]": "Tekst uploaden naar Pastebin", "Description[nn]": "Last opp tekst til Pastebin", "Description[pl]": "Wyślij tekst na Pastebin", "Description[pt]": "Enviar o texto para o Pastebin", "Description[pt_BR]": "Enviar o texto para o Pastebin", "Description[ru]": "Загрузка текста на Pastebin", "Description[sk]": "Nahrať text na Pastebin", "Description[sv]": "Ladda upp text till Pastebin", "Description[tr]": "Metni Pastebin'e yükle", "Description[uk]": "Вивантажити текст на Pastebin", "Description[x-test]": "xxUpload text to Pastebinxx", "Description[zh_CN]": "向 pastebin 上传文本", "Description[zh_TW]": "上傳文字到 Pastebin", "Icon": "edit-paste", "License": "GPL", "Name": "Pastebin", "Name[ar]": "پيست‌بِن", "Name[bs]": "Pastebin", "Name[ca@valencia]": "Pastebin", "Name[ca]": "Pastebin", "Name[cs]": "Pastebin", "Name[da]": "Pastebin", "Name[de]": "Pastebin", "Name[el]": "Pastebin", "Name[en_GB]": "Pastebin", "Name[es]": "Pastebin", "Name[eu]": "Pastebin", "Name[fi]": "Pastebin", "Name[fr]": "Pastebin", "Name[gl]": "Pastebin", "Name[hu]": "Pastebin", "Name[id]": "Pastebin", "Name[it]": "Pastebin", "Name[ko]": "Pastebin", "Name[nl]": "Pastebin", "Name[nn]": "Pastebin", "Name[pl]": "Pastebin", "Name[pt]": "Pastebin", "Name[pt_BR]": "Pastebin", "Name[ro]": "Pastebin", "Name[ru]": "Pastebin", "Name[sk]": "Pastebin", "Name[sv]": "Pastebin", "Name[tr]": "Pastebin", "Name[uk]": "Вставлячка", "Name[x-test]": "xxPastebinxx", "Name[zh_CN]": "Pastebin", - "Name[zh_TW]": "Pastebin" + "Name[zh_TW]": "Pastebin", + "X-Purpose-ActionDisplay": "Pastebin" }, - "X-Purpose-ActionDisplay": "Pastebin", "X-Purpose-Configuration": [], "X-Purpose-Constraints": [ "mimeType:text/plain" ], "X-Purpose-PluginTypes": [ "Export" ] } diff --git a/src/plugins/phabricator/phabricatorplugin.json b/src/plugins/phabricator/phabricatorplugin.json index e19d3c2..171b69f 100644 --- a/src/plugins/phabricator/phabricatorplugin.json +++ b/src/plugins/phabricator/phabricatorplugin.json @@ -1,114 +1,114 @@ { "KPlugin": { "Authors": [ { "Name": "René Bertin", "Name[ar]": "René Bertin", "Name[ca@valencia]": "René Bertin", "Name[ca]": "René Bertin", "Name[cs]": "René Bertin", "Name[da]": "René Bertin", "Name[de]": "René Bertin", "Name[en_GB]": "René Bertin", "Name[es]": "René Bertin", "Name[eu]": "René Bertin", "Name[fi]": "René Bertin", "Name[fr]": "René Bertin", "Name[gl]": "René Bertin", "Name[hu]": "René Bertin", "Name[id]": "René Bertin", "Name[it]": "René Bertin", "Name[ko]": "René Bertin", "Name[nl]": "René Bertin", "Name[nn]": "René Bertin", "Name[pl]": "René Bertin", "Name[pt]": "René Bertin", "Name[pt_BR]": "René Bertin", "Name[ru]": "René Bertin", "Name[sk]": "René Bertin", "Name[sv]": "René Bertin", "Name[tr]": "René Bertin", "Name[uk]": "René Bertin", "Name[x-test]": "xxRené Bertinxx", "Name[zh_CN]": "René Bertin", "Name[zh_TW]": "René Bertin" } ], "Category": "Utilities", "Description": "Upload patches to Phabricator", "Description[ar]": "ارفع الرُقع على «فابريكيتور»", "Description[ca@valencia]": "Puja els pedaços al Phabricator", "Description[ca]": "Puja els pedaços al Phabricator", "Description[cs]": "Odeslat soubory do Phabricatoru", "Description[da]": "Upload rettelser til Phabricator", "Description[de]": "Patch auf Phabricator hochladen", "Description[en_GB]": "Upload patches to Phabricator", "Description[es]": "Enviar parches a Phabricator", "Description[eu]": "Igo partxeak Phabricator-rera", "Description[fi]": "Lähetä Phabricatoriin paikkauksia", "Description[fr]": "Envoyer des correctifs vers Phabricator", "Description[gl]": "Enviar parches a Phabricator.", "Description[hu]": "Patchek feltöltése a Phabricatorra", "Description[id]": "Unggah tambalan ke Phabricator", "Description[it]": "Carica patch su Phabricator", "Description[ko]": "Phabricator에 패치 업로드", "Description[nl]": "Patches uploaden naar Phabricator", "Description[nn]": "Last opp patch-filer til Phabricator", "Description[pl]": "Wyślij łatę na Phabricator", "Description[pt]": "Enviar as modificações para o Phabricator", "Description[pt_BR]": "Envia correções para o Phabricator", "Description[ru]": "Отправка патчей в Phabricator", "Description[sk]": "Nahrať záplaty na Phabricator", "Description[sv]": "Ladda upp programfixar till Phabricator", "Description[tr]": "Yamaları Phabricator'e yükle", "Description[uk]": "Вивантажити латки на Phabricator", "Description[x-test]": "xxUpload patches to Phabricatorxx", "Description[zh_CN]": "将补丁上传到 Phabricator", "Description[zh_TW]": "上傳修補程式到 Phabricator", "Icon": "phabricator-purpose", "License": "GPL", "Name": "Phabricator", "Name[ar]": "فابريكيتور", "Name[ca@valencia]": "Phabricator", "Name[ca]": "Phabricator", "Name[cs]": "Phabricator", "Name[da]": "Phabricator", "Name[de]": "Phabricator", "Name[en_GB]": "Phabricator", "Name[es]": "Phabricator", "Name[eu]": "Phabricator", "Name[fi]": "Phabricator", "Name[fr]": "Phabricator", "Name[gl]": "Phabricator", "Name[hu]": "Phabricator", "Name[id]": "Phabricator", "Name[it]": "Phabricator", "Name[ko]": "Phabricator", "Name[nl]": "Phabricator", "Name[nn]": "Phabricator", "Name[pl]": "Phabricator", "Name[pt]": "Phabricator", "Name[pt_BR]": "Phabricator", "Name[ru]": "Phabricator", "Name[sk]": "Phabricator", "Name[sv]": "Phabricator", "Name[tr]": "Phabricator", "Name[uk]": "Phabricator", "Name[x-test]": "xxPhabricatorxx", "Name[zh_CN]": "Phabricator", - "Name[zh_TW]": "Phabricator" + "Name[zh_TW]": "Phabricator", + "X-Purpose-ActionDisplay": "Phabricator..." }, - "X-Purpose-ActionDisplay": "Phabricator...", "X-Purpose-Configuration": [ "updateDR", "doBrowse", "localBaseDir", "updateComment" ], "X-Purpose-Constraints": [ "mimeType:text/x-patch" ], "X-Purpose-PluginTypes": [ "Export" ] } diff --git a/src/plugins/reviewboard/reviewboardplugin.json b/src/plugins/reviewboard/reviewboardplugin.json index 3472e6e..4b3815b 100644 --- a/src/plugins/reviewboard/reviewboardplugin.json +++ b/src/plugins/reviewboard/reviewboardplugin.json @@ -1,119 +1,119 @@ { "KPlugin": { "Authors": [ { "Name": "Aleix Pol", "Name[ar]": "Aleix Pol", "Name[ca@valencia]": "Aleix Pol", "Name[ca]": "Aleix Pol", "Name[cs]": "Aleix Pol", "Name[da]": "Aleix Pol", "Name[de]": "Aleix Pol", "Name[el]": "Aleix Pol", "Name[en_GB]": "Aleix Pol", "Name[es]": "Aleix Pol", "Name[eu]": "Aleix Pol", "Name[fi]": "Aleix Pol", "Name[fr]": "Aleix Pol", "Name[gl]": "Aleix Pol", "Name[hu]": "Aleix Pol", "Name[id]": "Aleix Pol", "Name[it]": "Aleix Pol", "Name[ko]": "Aleix Pol", "Name[nl]": "Aleix Pol", "Name[nn]": "Aleix Pol", "Name[pl]": "Aleix Pol", "Name[pt]": "Aleix Pol", "Name[pt_BR]": "Aleix Pol", "Name[ru]": "Aleix Pol", "Name[sk]": "Aleix Pol", "Name[sv]": "Aleix Pol", "Name[tr]": "Aleix Pol", "Name[uk]": "Aleix Pol", "Name[x-test]": "xxAleix Polxx", "Name[zh_CN]": "Aleix Pol", "Name[zh_TW]": "Aleix Pol" } ], "Category": "Utilities", "Description": "Upload patches to reviewboard", "Description[ar]": "ارفع الرُقع إلى «لوحة المراجعة/Reviewboard»", "Description[ca@valencia]": "Puja els pedaços al «reviewboard»", "Description[ca]": "Puja els pedaços al «reviewboard»", "Description[da]": "Upload rettelser til reviewboard", "Description[de]": "Patch auf Reviewboard hochladen", "Description[el]": "Αποστολή διορθώσεων κώδικα στο reviewboard", "Description[en_GB]": "Upload patches to reviewboard", "Description[es]": "Enviar imágenes a reviewboard", "Description[eu]": "Igo partxeak reviewboard-era", "Description[fi]": "Lähetä Review Boardiin paikkauksia", "Description[fr]": "Envoyer des correctifs vers reviewboard", "Description[gl]": "Enviar parches a reviewboard.", "Description[hu]": "Patchek feltöltése a Review Boardra", "Description[id]": "Upload tambalan/patches ke reviewboard", "Description[it]": "Carica patch su reviewboard", "Description[ko]": "Review Board에 패치 업로드", "Description[nl]": "Patches uploaden naar reviewboard", "Description[nn]": "Last opp patch-filer til Review Board", "Description[pl]": "Wyślij łaty do rady opiniującej", "Description[pt]": "Enviar as modificações para o grupo de revisão", "Description[pt_BR]": "Enviar modificações para o painel de revisão", "Description[ru]": "Загрузка изображений на Imgur", "Description[sk]": "Nahrať záplaty na revíziu", "Description[sv]": "Ladda upp programfixar till Review Board", "Description[tr]": "Yamaları gözden geçirme panosuna yükle", "Description[uk]": "Вивантажує латки на reviewboard", "Description[x-test]": "xxUpload patches to reviewboardxx", "Description[zh_CN]": "向 reviewboard 上传补丁", "Description[zh_TW]": "上傳修補檔到 reviewboard", "Icon": "reviewboard-purpose", "License": "GPL", "Name": "Review Board", "Name[ar]": "لوحة المراجعات/Review Board", "Name[ca@valencia]": "Review Board", "Name[ca]": "Review Board", "Name[da]": "Review Board", "Name[de]": "Review Board", "Name[el]": "Review Board", "Name[en_GB]": "Review Board", "Name[es]": "Review Board", "Name[eu]": "Review Board", "Name[fi]": "Review Board", "Name[fr]": "Review Board", "Name[gl]": "Review Board", "Name[hu]": "Review Board", "Name[id]": "Review Board", "Name[it]": "Review Board", "Name[ko]": "Review Board", "Name[nl]": "Reviewboard", "Name[nn]": "Review Board", "Name[pl]": "Rada opiniująca", "Name[pt]": "Painel de Revisão", "Name[pt_BR]": "Painel de revisão", "Name[ru]": "Review Board", "Name[sk]": "Revízna komisia", "Name[sv]": "Review Board", "Name[tr]": "Gözden Geçirme Panosu", "Name[uk]": "Review Board", "Name[x-test]": "xxReview Boardxx", "Name[zh_CN]": "Review Board", - "Name[zh_TW]": "Review Board" + "Name[zh_TW]": "Review Board", + "X-Purpose-ActionDisplay": "Review Board..." }, - "X-Purpose-ActionDisplay": "Review Board", "X-Purpose-Configuration": [ "updateRR", "server", "username", "password", "baseDir", "repository", "extraData", "localBaseDir" ], "X-Purpose-Constraints": [ "mimeType:text/x-patch" ], "X-Purpose-PluginTypes": [ "Export" ] } diff --git a/src/plugins/saveas/saveasplugin.json b/src/plugins/saveas/saveasplugin.json index c1bc5cf..e6f9164 100644 --- a/src/plugins/saveas/saveasplugin.json +++ b/src/plugins/saveas/saveasplugin.json @@ -1,81 +1,81 @@ { "KPlugin": { "Authors": [ { "Name": "Aleix Pol", "Name[ar]": "Aleix Pol", "Name[ca@valencia]": "Aleix Pol", "Name[ca]": "Aleix Pol", "Name[cs]": "Aleix Pol", "Name[da]": "Aleix Pol", "Name[de]": "Aleix Pol", "Name[el]": "Aleix Pol", "Name[en_GB]": "Aleix Pol", "Name[es]": "Aleix Pol", "Name[eu]": "Aleix Pol", "Name[fi]": "Aleix Pol", "Name[fr]": "Aleix Pol", "Name[gl]": "Aleix Pol", "Name[hu]": "Aleix Pol", "Name[id]": "Aleix Pol", "Name[it]": "Aleix Pol", "Name[ko]": "Aleix Pol", "Name[nl]": "Aleix Pol", "Name[nn]": "Aleix Pol", "Name[pl]": "Aleix Pol", "Name[pt]": "Aleix Pol", "Name[pt_BR]": "Aleix Pol", "Name[ru]": "Aleix Pol", "Name[sk]": "Aleix Pol", "Name[sv]": "Aleix Pol", "Name[tr]": "Aleix Pol", "Name[uk]": "Aleix Pol", "Name[x-test]": "xxAleix Polxx", "Name[zh_CN]": "Aleix Pol", "Name[zh_TW]": "Aleix Pol" } ], "Category": "Utilities", "Description": "Saves the share into the chosen location.", "Description[ar]": "احفظ ما تريد مشاركته في مكان من اختيارك.", "Description[ca@valencia]": "Guarda la compartició a la ubicació escollida.", "Description[ca]": "Desa la compartició a la ubicació escollida.", "Description[da]": "Gemmer delingen til det valgte sted.", "Description[de]": "Speichert die Freigabe am ausgewählten Ort.", "Description[el]": "Αποθήκευση του διαμοιρασμένου στην επιλεγμένη τοποθεσία.", "Description[en_GB]": "Saves the share into the chosen location.", "Description[es]": "Guarda el recurso compartido en la ubicación elegida.", "Description[eu]": "Partekatua hautatutako kokapenean gordetzen du.", "Description[fi]": "Tallentaa jaettavan asian valittuun sijaintiin.", "Description[fr]": "Enregistre le partage à l'emplacement choisi.", "Description[gl]": "Garda a compartición no lugar escollido.", "Description[hu]": "Megosztás mentése a kiválasztott helyre.", "Description[id]": "Simpanan si berbagi ke dalam lokasi yang dipilih", "Description[it]": "Salva la condivisione nella posizione scelta.", "Description[ko]": "공유한 항목을 지정한 위치에 저장합니다.", "Description[nl]": "Slaat de share op in de gekozen locatie.", "Description[nn]": "Lagra til valt plassering.", "Description[pl]": "Zapisuje plik udostępniony w wybranym miejscu.", "Description[pt]": "Grava a partilha na localização indicada.", "Description[pt_BR]": "Salva o compartilhamento na localização indicada.", "Description[ru]": "Сохраняет общий файл в указанное расположение.", "Description[sk]": "Uloží zdieľanie do vybraného umiestnenia.", "Description[sv]": "Sparar delade objekt på vald plats.", "Description[tr]": "Paylaşımı seçilen konuma kaydeder.", "Description[uk]": "Зберігає спільний ресурс до вказаного каталогу.", "Description[x-test]": "xxSaves the share into the chosen location.xx", "Description[zh_CN]": "将共享保存到所选位置。", "Description[zh_TW]": "儲存分享到選定的位置。", "Icon": "document-save", "License": "GPL", - "Name": "Save as" + "Name": "Save as", + "X-Purpose-ActionDisplay": "Save as..." }, - "X-Purpose-ActionDisplay": "Save as...", "X-Purpose-Configuration": [ "destinationPath" ], "X-Purpose-Constraints": [], "X-Purpose-PluginTypes": [ "Export" ] } diff --git a/src/plugins/telegram/telegramplugin.json b/src/plugins/telegram/telegramplugin.json index e2079d1..cbbeb9b 100644 --- a/src/plugins/telegram/telegramplugin.json +++ b/src/plugins/telegram/telegramplugin.json @@ -1,81 +1,81 @@ { "KPlugin": { "Authors": [ { "Name": "Nicolas Fella", "Name[ar]": "Nicolas Fella", "Name[ca@valencia]": "Nicolas Fella", "Name[ca]": "Nicolas Fella", "Name[cs]": "Nicolas Fella", "Name[da]": "Nicolas Fella", "Name[de]": "Nicolas Fella", "Name[en_GB]": "Nicolas Fella", "Name[es]": "Nicolas Fella", "Name[eu]": "Nicolas Fella", "Name[fi]": "Nicolas Fella", "Name[fr]": "Nicolas Fella", "Name[gl]": "Nicolas Fella", "Name[hu]": "Nicolas Fella", "Name[id]": "Nicolas Fella", "Name[it]": "Nicolas Fella", "Name[ko]": "Nicolas Fella", "Name[nl]": "Nicolas Fella", "Name[nn]": "Nicolas Fella", "Name[pl]": "Nicolas Fella", "Name[pt]": "Nicolas Fella", "Name[pt_BR]": "Nicolas Fella", "Name[ru]": "Nicolas Fella", "Name[sk]": "Nicolas Fella", "Name[sv]": "Nicolas Fella", "Name[uk]": "Nicolas Fella", "Name[x-test]": "xxNicolas Fellaxx", "Name[zh_CN]": "Nicolas Fella", "Name[zh_TW]": "Nicolas Fella" } ], "Category": "Utilities", "Description": "Send via Telegram", "Description[ar]": "أرسِل عبر «تلغرام»", "Description[ca@valencia]": "Envia via Telegram", "Description[ca]": "Envia via Telegram", "Description[cs]": "Poslat přes Telegram", "Description[da]": "Send via Telegram", "Description[de]": "Mit Telegram senden", "Description[en_GB]": "Send via Telegram", "Description[es]": "Enviar por Telegram", "Description[eu]": "Bidali Telegram bidez", "Description[fi]": "Lähetä Telegramilla", "Description[fr]": "Envoyer par Telegram", "Description[gl]": "Enviar por Telegram", "Description[hu]": "Küldés Telegramon", "Description[id]": "Mengirim via Telegram", "Description[it]": "Invia con Telegram", "Description[ko]": "텔레그램으로 보내기", "Description[nl]": "Verzenden via Telegram", "Description[nn]": "Send via Telegram", "Description[pl]": "Wyślij przez Telegram", "Description[pt]": "Enviar por Telegram", "Description[pt_BR]": "Envia via Telegram", "Description[ru]": "Отправка в Telegram", "Description[sk]": "Poslať cez Telegram", "Description[sv]": "Skicka via Telegram", "Description[uk]": "Надсилання за допомогою Telegram", "Description[x-test]": "xxSend via Telegramxx", "Description[zh_CN]": "通过 Telegram 发送", "Description[zh_TW]": "透過 Telegram 傳送", "Icon": "telegram", "License": "GPL", - "Name": "Send via Telegram" + "Name": "Send via Telegram", + "X-Purpose-ActionDisplay": "Send via Telegram..." }, - "X-Purpose-ActionDisplay": "Send via Telegram...", "X-Purpose-Configuration": [], "X-Purpose-Constraints": [ [ "application:org.telegram.desktop.desktop", "application:telegramdesktop.desktop" ] ], "X-Purpose-PluginTypes": [ "Export" ] } diff --git a/src/plugins/twitter/metadata.json b/src/plugins/twitter/metadata.json index 749b973..170288c 100644 --- a/src/plugins/twitter/metadata.json +++ b/src/plugins/twitter/metadata.json @@ -1,117 +1,117 @@ { "KPlugin": { "Authors": [ { "Name": "Aleix Pol", "Name[ar]": "Aleix Pol", "Name[ca@valencia]": "Aleix Pol", "Name[ca]": "Aleix Pol", "Name[cs]": "Aleix Pol", "Name[da]": "Aleix Pol", "Name[de]": "Aleix Pol", "Name[el]": "Aleix Pol", "Name[en_GB]": "Aleix Pol", "Name[es]": "Aleix Pol", "Name[eu]": "Aleix Pol", "Name[fi]": "Aleix Pol", "Name[fr]": "Aleix Pol", "Name[gl]": "Aleix Pol", "Name[hu]": "Aleix Pol", "Name[id]": "Aleix Pol", "Name[it]": "Aleix Pol", "Name[ko]": "Aleix Pol", "Name[nl]": "Aleix Pol", "Name[nn]": "Aleix Pol", "Name[pl]": "Aleix Pol", "Name[pt]": "Aleix Pol", "Name[pt_BR]": "Aleix Pol", "Name[ru]": "Aleix Pol", "Name[sk]": "Aleix Pol", "Name[sv]": "Aleix Pol", "Name[tr]": "Aleix Pol", "Name[uk]": "Aleix Pol", "Name[x-test]": "xxAleix Polxx", "Name[zh_CN]": "Aleix Pol", "Name[zh_TW]": "Aleix Pol" } ], "Category": "Utilities", "Description": "Shares media on Twitter.", "Description[ar]": "شارِك الوسائط على «تويتر».", "Description[ca@valencia]": "Comparteix fitxers multimèdia al Twitter.", "Description[ca]": "Comparteix fitxers multimèdia al Twitter.", "Description[cs]": "Sdílí média na Twitteru.", "Description[da]": "Deler medier på Twitter.", "Description[de]": "Gibt die Medien auf Twitter frei.", "Description[el]": "Διαμοιρασμός πολυμέσων στο Twitter.", "Description[en_GB]": "Shares media on Twitter.", "Description[es]": "Comparte el medio en Twitter.", "Description[eu]": "Partekatu multimedia edukia Twitterren.", "Description[fi]": "Jakaa Twitteriin mediaa.", "Description[fr]": "Partager le contenu sur Twitter.", "Description[gl]": "Comparte contido en Twitter.", "Description[hu]": "Média megosztása Twitteren.", "Description[id]": "Media berbagi pada Twitter.", "Description[it]": "Condividi contenuto su Twitter.", "Description[ko]": "트위터로 미디어를 공유합니다.", "Description[nl]": "Deelt media op Twitter.", "Description[nn]": "Del mediefil på Twitter.", "Description[pl]": "Udostępnia multimedia na Twitterze.", "Description[pt]": "Partilha conteúdos no Twitter.", "Description[pt_BR]": "Compartilha mídias no Twitter.", "Description[ru]": "Отправка файлов в Twitter.", "Description[sk]": "Zdieľa médiu na Twitteri.", "Description[sv]": "Dela media på Twitter.", "Description[tr]": "Twitter'da medya dosyası paylaşır.", "Description[uk]": "Оприлюднює мультимедійні дані на Twitter.", "Description[x-test]": "xxShares media on Twitter.xx", "Description[zh_CN]": "在 Twitter 上分享媒体。", "Description[zh_TW]": "在 Twitter 上分想多媒體。", "Icon": "im-twitter", "Id": "twitterplugin", "License": "GPL", "Name": "Twitter", "Name[ar]": "تويتر", "Name[ca@valencia]": "Twitter", "Name[ca]": "Twitter", "Name[cs]": "Twitter", "Name[da]": "Twitter", "Name[de]": "Twitter", "Name[el]": "Twitter", "Name[en_GB]": "Twitter", "Name[es]": "Twitter", "Name[eu]": "Twitter", "Name[fi]": "Twitter", "Name[fr]": "Twitter", "Name[gl]": "Twitter", "Name[hu]": "Twitter", "Name[id]": "Twitter", "Name[it]": "Twitter", "Name[ko]": "트위터", "Name[nl]": "Twitter", "Name[nn]": "Twitter", "Name[pl]": "Twitter", "Name[pt]": "Twitter", "Name[pt_BR]": "Twitter", "Name[ru]": "Twitter", "Name[sk]": "Twitter", "Name[sv]": "Twitter", "Name[tr]": "Twitter", "Name[uk]": "Twitter", "Name[x-test]": "xxTwitterxx", "Name[zh_CN]": "Twitter", - "Name[zh_TW]": "Twitter" + "Name[zh_TW]": "Twitter", + "X-Purpose-ActionDisplay": "Twitter..." }, - "X-Purpose-ActionDisplay": "Twitter...", "X-Purpose-Configuration": [ "tweetText", "consumerKey", "consumerSecret", "accessToken", "accessTokenSecret" ], "X-Purpose-Constraints": [], "X-Purpose-PluginTypes": [ "Export" ] } diff --git a/src/plugins/youtube/youtubeplugin.json b/src/plugins/youtube/youtubeplugin.json index 972f632..3f9aaa6 100644 --- a/src/plugins/youtube/youtubeplugin.json +++ b/src/plugins/youtube/youtubeplugin.json @@ -1,117 +1,117 @@ { "KPlugin": { "Authors": [ { "Name": "Aleix Pol", "Name[ar]": "Aleix Pol", "Name[ca@valencia]": "Aleix Pol", "Name[ca]": "Aleix Pol", "Name[cs]": "Aleix Pol", "Name[da]": "Aleix Pol", "Name[de]": "Aleix Pol", "Name[el]": "Aleix Pol", "Name[en_GB]": "Aleix Pol", "Name[es]": "Aleix Pol", "Name[eu]": "Aleix Pol", "Name[fi]": "Aleix Pol", "Name[fr]": "Aleix Pol", "Name[gl]": "Aleix Pol", "Name[hu]": "Aleix Pol", "Name[id]": "Aleix Pol", "Name[it]": "Aleix Pol", "Name[ko]": "Aleix Pol", "Name[nl]": "Aleix Pol", "Name[nn]": "Aleix Pol", "Name[pl]": "Aleix Pol", "Name[pt]": "Aleix Pol", "Name[pt_BR]": "Aleix Pol", "Name[ru]": "Aleix Pol", "Name[sk]": "Aleix Pol", "Name[sv]": "Aleix Pol", "Name[tr]": "Aleix Pol", "Name[uk]": "Aleix Pol", "Name[x-test]": "xxAleix Polxx", "Name[zh_CN]": "Aleix Pol", "Name[zh_TW]": "Aleix Pol" } ], "Category": "Utilities", "Description": "Upload videos to YouTube", "Description[ar]": "ارفع الفديوهات على «يوتيوب»", "Description[ca@valencia]": "Puja vídeos a YouTube", "Description[ca]": "Puja vídeos a YouTube", "Description[cs]": "Odeslat videa na YouTube", "Description[da]": "Upload videoer til YouTube", "Description[de]": "Videos auf YouTube hochladen", "Description[el]": "Αποστολή βίντεο στο YouTube", "Description[en_GB]": "Upload videos to YouTube", "Description[es]": "Enviar vídeos a YouTube", "Description[eu]": "Igo bideoak YouTubera", "Description[fi]": "Lähetä YouTubeen videoita", "Description[fr]": "Envoyer des vidéos vers YouTube", "Description[gl]": "Enviar vídeos a YouTube.", "Description[hu]": "Videók feltöltése YouTube-ra", "Description[id]": "Upload video ke YouTube", "Description[it]": "Carica video su YouTube", "Description[ko]": "YouTube에 동영상 업로드", "Description[nl]": "Video's naar YouTube uploaden", "Description[nn]": "Last opp videoar til YouTube", "Description[pl]": "Wyślij film na YouTube", "Description[pt]": "Enviar os vídeos para o YouTube", "Description[pt_BR]": "Envia vídeos para o YouTube", "Description[ru]": "Загрузка видео на YouTube", "Description[sk]": "Nahrať videá na YouTube", "Description[sv]": "Ladda upp videor till YouTube", "Description[tr]": "Videoları YouTube'a yükle", "Description[uk]": "Вивантаження відео на YouTube", "Description[x-test]": "xxUpload videos to YouTubexx", "Description[zh_CN]": "上传视频到 YouTube", "Description[zh_TW]": "上傳影片到 YouTube", "Icon": "edit-paste", "License": "GPL", "Name": "YouTube", "Name[ar]": "يوتيوب", "Name[ca@valencia]": "YouTube", "Name[ca]": "YouTube", "Name[cs]": "YouTube", "Name[da]": "YouTube", "Name[de]": "YouTube", "Name[el]": "YouTube", "Name[en_GB]": "YouTube", "Name[es]": "YouTube", "Name[eu]": "YouTube", "Name[fi]": "YouTube", "Name[fr]": "YouTube", "Name[gl]": "YouTube", "Name[hu]": "YouTube", "Name[id]": "YouTube", "Name[it]": "YouTube", "Name[ko]": "YouTube", "Name[nl]": "YouTube", "Name[nn]": "YouTube", "Name[pl]": "YouTube", "Name[pt]": "YouTube", "Name[pt_BR]": "YouTube", "Name[ru]": "YouTube", "Name[sk]": "YouTube", "Name[sv]": "YouTube", "Name[tr]": "YouTube", "Name[uk]": "YouTube", "Name[x-test]": "xxYouTubexx", "Name[zh_CN]": "YouTube", - "Name[zh_TW]": "YouTube" + "Name[zh_TW]": "YouTube", + "X-Purpose-ActionDisplay": "Youtube..." }, - "X-Purpose-ActionDisplay": "Youtube...", "X-Purpose-Configuration": [ "videoDesc", "videoTitle", "videoTags", "accountId" ], "X-Purpose-Constraints": [ "mimeType:video/*" ], "X-Purpose-PluginTypes": [ "Export" ] }