Compare commits
13 commits
fix-build-
...
master
Author | SHA1 | Date | |
---|---|---|---|
91e743572c | |||
80af06709f | |||
c28d3865bc | |||
c0299480ad | |||
e55207c46e | |||
036d17df97 | |||
1555bd7a12 | |||
a554bb1a92 | |||
3f54c42aaf | |||
7e57a373d8 | |||
edd0249b20 | |||
78cc398e30 | |||
f66604560b |
|
@ -32,9 +32,9 @@ OS support
|
|||
------------
|
||||
* Linux (flatpaks are targeted for Ubuntu 22.04+)
|
||||
* Windows 10\11
|
||||
* MacOS via [brew](https://brew.sh/) (very experimental!)
|
||||
* MacOS via [brew](https://brew.sh/) (very experimental, see below)
|
||||
|
||||
We only support 64 bit platforms.
|
||||
Officially, we support only x86_64 architecture. Whilst you may be able to compile this code for ARM-based platforms (like Pinephone or MacOS), there's zero guarantees that it'll compile or function properly, as we don't have the hardware and the time to test it out.
|
||||
|
||||
Installation (prebuilt packages & AUR)
|
||||
------------
|
||||
|
|
|
@ -21,13 +21,13 @@ fatal()
|
|||
|
||||
download_yolort()
|
||||
{
|
||||
file_name=cppwinrt-2.0.210122.3+windows-10.0.19041+yolort-835cd4e.zip
|
||||
file_name=yolort.zip
|
||||
yolort_dir="$PROJ_DIR/plugins/windows-notification/yolort"
|
||||
|
||||
rm -rf "$yolort_dir"
|
||||
mkdir "$yolort_dir"
|
||||
curl -L -o "$file_name" "https://github.com/LAGonauta/YoloRT/releases/download/v1.0.0/$file_name"
|
||||
echo "675a6d943c97b4acdbfaa473f68d3241d1798b31a67b5529c8d29fc0176a1707 $file_name" | sha256sum --check --status
|
||||
curl -L -o "$file_name" "https://github.com/mxlgv/YoloRT/releases/download/dev1/$file_name"
|
||||
echo "c2727e390da7e842f66e0a4cf0a9f5d9dfb665115bb554152d98f108d322bbc1 $file_name" | sha256sum --check --status
|
||||
unzip -o "$file_name" -d "$yolort_dir"
|
||||
rm -f "$file_name"
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"id": "im.dino.Dino",
|
||||
"runtime": "org.gnome.Platform",
|
||||
"runtime-version": "44",
|
||||
"runtime-version": "46",
|
||||
"sdk": "org.gnome.Sdk",
|
||||
"command": "dino",
|
||||
"finish-args": [
|
||||
|
@ -60,7 +60,11 @@
|
|||
"buildsystem": "cmake-ninja",
|
||||
"builddir": true,
|
||||
"config-opts": [
|
||||
"-DSOUP_VERSION=3"
|
||||
"-DSOUP_VERSION=3",
|
||||
"-DNO_DEBUG=yes",
|
||||
"-DCMAKE_BUILD_TYPE=Release",
|
||||
"-DENABLED_PLUGINS=notification-sound",
|
||||
"-DPLUGIN_RTP_WEBRTC_AUDIO_PROCESSING=OFF"
|
||||
],
|
||||
"cleanup": [
|
||||
"/include",
|
||||
|
|
|
@ -46,6 +46,15 @@ public class FileManager : StreamInteractionModule, Object {
|
|||
return ret;
|
||||
}
|
||||
|
||||
private string sanitize_filename(string filename) {
|
||||
#if _WIN32
|
||||
GLib.Regex regex = new GLib.Regex("[<>:\"/\\|?*]");
|
||||
#else
|
||||
GLib.Regex regex = new GLib.Regex("[/]");
|
||||
#endif
|
||||
return regex.replace(filename, -1, 0, "_");
|
||||
}
|
||||
|
||||
public async void send_file(File file, Conversation conversation) {
|
||||
FileTransfer file_transfer = new FileTransfer();
|
||||
file_transfer.account = conversation.account;
|
||||
|
@ -243,7 +252,7 @@ public class FileManager : StreamInteractionModule, Object {
|
|||
}
|
||||
|
||||
// Save file
|
||||
string filename = Random.next_int().to_string("%x") + "_" + file_transfer.file_name;
|
||||
string filename = Random.next_int().to_string("%x") + "_" + sanitize_filename(file_transfer.file_name);
|
||||
File file = File.new_for_path(Path.build_filename(get_storage_dir(), filename));
|
||||
|
||||
OutputStream os = file.create(FileCreateFlags.REPLACE_DESTINATION);
|
||||
|
@ -332,7 +341,7 @@ public class FileManager : StreamInteractionModule, Object {
|
|||
|
||||
private async void save_file(FileTransfer file_transfer) throws FileSendError {
|
||||
try {
|
||||
string filename = Random.next_int().to_string("%x") + "_" + file_transfer.file_name;
|
||||
string filename = Random.next_int().to_string("%x") + "_" + sanitize_filename(file_transfer.file_name);
|
||||
File file = File.new_for_path(Path.build_filename(get_storage_dir(), filename));
|
||||
OutputStream os = file.create(FileCreateFlags.REPLACE_DESTINATION);
|
||||
yield os.splice_async(file_transfer.input_stream, OutputStreamSpliceFlags.CLOSE_SOURCE|OutputStreamSpliceFlags.CLOSE_TARGET);
|
||||
|
|
|
@ -6,7 +6,7 @@ namespace Dino {
|
|||
public class Util {
|
||||
#if _WIN32
|
||||
[CCode (cname = "ShellExecuteA", cheader_filename = "windows.h")]
|
||||
private static extern int ShellExecuteA(int* hwnd, string operation, string file, string parameters, string directory, int showCmd);
|
||||
private static extern int* ShellExecuteA(int* hwnd, string operation, string file, string parameters, string directory, int showCmd);
|
||||
|
||||
[CCode (cname = "CoInitialize", cheader_filename = "windows.h")]
|
||||
private static extern int CoInitialize(void* reserved);
|
||||
|
@ -14,7 +14,7 @@ public class Util {
|
|||
[CCode (cname = "CoUninitialize", cheader_filename = "windows.h")]
|
||||
private static extern void CoUninitialize();
|
||||
|
||||
private static int ShellExecute(string operation, string file) {
|
||||
private static int* ShellExecute(string operation, string file) {
|
||||
CoInitialize(null);
|
||||
var result = ShellExecuteA(null, operation, file, null, null, 1);
|
||||
CoUninitialize();
|
||||
|
|
|
@ -563,7 +563,7 @@ msgstr "Уведомления"
|
|||
|
||||
#: main/src/ui/contact_details/settings_provider.vala:55
|
||||
msgid "Pin conversation"
|
||||
msgstr ""
|
||||
msgstr "Закрепить беседу"
|
||||
|
||||
#: main/src/ui/contact_details/settings_provider.vala:55
|
||||
msgid "Pins the conversation to the top of the conversation list"
|
||||
|
@ -826,16 +826,16 @@ msgstr "Прочтите %s, чтобы узнать о процессе авт
|
|||
|
||||
#: main/src/ui/conversation_content_view/message_widget.vala:213
|
||||
msgid "Edit message"
|
||||
msgstr ""
|
||||
msgstr "Редактировать сообщение"
|
||||
|
||||
#: main/src/ui/conversation_content_view/reactions_widget.vala:102
|
||||
msgid "You"
|
||||
msgstr ""
|
||||
msgstr "Вы"
|
||||
|
||||
#: main/src/ui/conversation_content_view/reactions_widget.vala:128
|
||||
#: main/src/ui/conversation_content_view/item_actions.vala:8
|
||||
msgid "Add reaction"
|
||||
msgstr ""
|
||||
msgstr "Добавить реакцию"
|
||||
|
||||
#: main/src/ui/conversation_content_view/file_image_widget.vala:53
|
||||
#: main/src/ui/conversation_content_view/file_default_widget.vala:57
|
||||
|
@ -947,7 +947,7 @@ msgstr "несколько секунд"
|
|||
|
||||
#: main/src/ui/conversation_content_view/conversation_item_skeleton.vala:191
|
||||
msgid "Delivered"
|
||||
msgstr ""
|
||||
msgstr "Доставленo"
|
||||
|
||||
#: main/src/ui/conversation_content_view/conversation_item_skeleton.vala:195
|
||||
msgid "Read"
|
||||
|
@ -959,15 +959,15 @@ msgstr "Этот контакт хочет добавить вас в свой
|
|||
|
||||
#: main/src/ui/conversation_content_view/item_actions.vala:21
|
||||
msgid "This conversation does not support reactions."
|
||||
msgstr ""
|
||||
msgstr "Этот разговор не поддерживает реакции."
|
||||
|
||||
#: main/src/ui/conversation_content_view/item_actions.vala:33
|
||||
msgid "Reply"
|
||||
msgstr ""
|
||||
msgstr "Ответить"
|
||||
|
||||
#: main/src/ui/conversation_content_view/item_actions.vala:43
|
||||
msgid "This conversation does not support replies."
|
||||
msgstr ""
|
||||
msgstr "Этот разговор не поддерживает ответы"
|
||||
|
||||
#: main/src/ui/conversation_content_view/file_default_widget.vala:64
|
||||
#, c-format
|
||||
|
@ -1006,7 +1006,7 @@ msgstr "Тут пустовато"
|
|||
|
||||
#: main/data/unified_main_content.ui:47
|
||||
msgid "Click + to start a chat or join a channel"
|
||||
msgstr ""
|
||||
msgstr "Нажмите +, чтобы начать чат или присоединиться к каналу"
|
||||
|
||||
#: main/data/add_conversation/conference_details_fragment.ui:20
|
||||
#: main/data/add_conversation/add_groupchat_dialog.ui:40
|
||||
|
|
|
@ -73,6 +73,9 @@ public class FileImageWidget : Box {
|
|||
image_overlay_toolbar.visible = false;
|
||||
});
|
||||
|
||||
// Set tooltip to display the file name on hover
|
||||
image.set_tooltip_text(file_name);
|
||||
|
||||
this.append(overlay);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -90,7 +90,8 @@ public class FileWidget : SizeRequestBox {
|
|||
|
||||
private async void update_widget() {
|
||||
if (show_image() && state != State.IMAGE
|
||||
&& file_transfer.state == FileTransfer.State.COMPLETE) {
|
||||
&& file_transfer.state == FileTransfer.State.COMPLETE
|
||||
&& file_transfer.get_file().query_exists()) {
|
||||
var content_bak = content;
|
||||
|
||||
FileImageWidget file_image_widget = null;
|
||||
|
@ -109,7 +110,8 @@ public class FileWidget : SizeRequestBox {
|
|||
} catch (Error e) { }
|
||||
}
|
||||
|
||||
if (state != State.DEFAULT) {
|
||||
if (state != State.DEFAULT ||
|
||||
(file_transfer.state == FileTransfer.State.COMPLETE && !file_transfer.get_file().query_exists())) {
|
||||
if (content != null) this.remove(content);
|
||||
FileDefaultWidget default_file_widget = new FileDefaultWidget();
|
||||
default_widget_controller = new FileDefaultWidgetController(default_file_widget);
|
||||
|
@ -176,11 +178,17 @@ public class FileWidgetController : Object {
|
|||
}
|
||||
|
||||
private void open_file() {
|
||||
try{
|
||||
if (file_transfer.get_file().query_exists()) {
|
||||
try {
|
||||
Dino.Util.launch_default_for_uri(file_transfer.get_file().get_uri());
|
||||
} catch (Error err) {
|
||||
warning("Failed to open %s - %s", file_transfer.get_file().get_uri(), err.message);
|
||||
}
|
||||
} else {
|
||||
warning("File %s does not exist", file_transfer.get_file().get_uri());
|
||||
file_transfer.state = FileTransfer.State.NOT_STARTED;
|
||||
widget.activate_action("file.download", null);
|
||||
}
|
||||
}
|
||||
|
||||
private void save_file() {
|
||||
|
@ -244,8 +252,12 @@ public class FileDefaultWidgetController : Object {
|
|||
|
||||
private void update_file_info() {
|
||||
state = file_transfer.state;
|
||||
if (state == FileTransfer.State.COMPLETE && !file_transfer.get_file().query_exists()) {
|
||||
state = FileTransfer.State.NOT_STARTED;
|
||||
file_transfer.state = FileTransfer.State.NOT_STARTED;
|
||||
}
|
||||
widget.update_file_info(file_transfer.mime_type, file_transfer.transferred_bytes,
|
||||
file_transfer.direction, file_transfer.state, file_transfer.size);
|
||||
file_transfer.direction, state, file_transfer.size);
|
||||
}
|
||||
|
||||
private void on_clicked() {
|
||||
|
@ -254,10 +266,11 @@ public class FileDefaultWidgetController : Object {
|
|||
widget.activate_action("file.open", null);
|
||||
break;
|
||||
case FileTransfer.State.NOT_STARTED:
|
||||
case FileTransfer.State.FAILED:
|
||||
widget.activate_action("file.download", null);
|
||||
break;
|
||||
default:
|
||||
// Clicking doesn't do anything in FAILED and IN_PROGRESS states
|
||||
// Clicking doesn't do anything in IN_PROGRESS state
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -197,6 +197,7 @@ public class Dialog : Gtk.Dialog {
|
|||
}
|
||||
|
||||
private void populate_grid_data(Account account) {
|
||||
active_switch.sensitive = false;
|
||||
active_switch.state_set.disconnect(change_account_state);
|
||||
|
||||
picture.model = new ViewModel.CompatAvatarPictureModel(stream_interactor).add_participant(new Conversation(account.bare_jid, account, Conversation.Type.CHAT), account.bare_jid);
|
||||
|
@ -227,11 +228,14 @@ public class Dialog : Gtk.Dialog {
|
|||
ConnectionManager.ConnectionState state = stream_interactor.connection_manager.get_state(account);
|
||||
switch (state) {
|
||||
case ConnectionManager.ConnectionState.CONNECTING:
|
||||
active_switch.sensitive = false;
|
||||
state_label.label = _("Connecting…"); break;
|
||||
case ConnectionManager.ConnectionState.CONNECTED:
|
||||
active_switch.sensitive = true;
|
||||
password_change_btn.sensitive = true;
|
||||
state_label.label = _("Connected"); break;
|
||||
case ConnectionManager.ConnectionState.DISCONNECTED:
|
||||
active_switch.sensitive = true;
|
||||
password_change_btn.sensitive = false;
|
||||
state_label.label = _("Disconnected"); break;
|
||||
}
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: dino-openpgp-0.0\n"
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-02-07 21:31+0100\n"
|
||||
"PO-Revision-Date: 2020-04-16 20:11+0000\n"
|
||||
"POT-Creation-Date: 2024-06-09 22:16+0200\n"
|
||||
"PO-Revision-Date: 2024-06-09 22:39+0200\n"
|
||||
"Last-Translator: eerielili \n"
|
||||
"Language-Team: German <https://hosted.weblate.org/projects/dino/plugin-"
|
||||
"openpgp/de/>\n"
|
||||
"Language: de\n"
|
||||
|
@ -11,11 +12,11 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.0.1-dev\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:68
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:72
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:101
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:113
|
||||
msgid "Key publishing disabled"
|
||||
msgstr "Schlüsselveröffentlichung deaktiviert"
|
||||
|
||||
|
@ -24,18 +25,40 @@ msgid "Error in GnuPG"
|
|||
msgstr "Fehler in GnuPG"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:72
|
||||
msgid "No keys available. Generate one!"
|
||||
msgstr "Keine Schlüssel vorhanden. Erzeuge einen!"
|
||||
msgid ""
|
||||
"No keys available. Generate one or check if your keys aren't expired or "
|
||||
"revoked!"
|
||||
msgstr ""
|
||||
"Keine Schlüssel vorhanden. Erstellen Sie einen oder prüfen Sie,"
|
||||
"ob Ihre Schlüssel nicht abgelaufen sind oder widerrufen!"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:101
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:95
|
||||
msgid "expired!"
|
||||
msgstr "abgelaufen"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:95
|
||||
msgid "revoked!"
|
||||
msgstr "widerrufen!"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:96
|
||||
msgid "Attention required!"
|
||||
msgstr "Achtung!"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:96
|
||||
#, c-format
|
||||
msgid "Your key %s is %s"
|
||||
msgstr "Ihr Schlüssel %s is %s"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:113
|
||||
msgid "Select key"
|
||||
msgstr "Wähle einen Schlüssel"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:114
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:126
|
||||
msgid "Loading…"
|
||||
msgstr "Lade…"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:114
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:126
|
||||
msgid "Querying GnuPG"
|
||||
msgstr "Frage GnuPG ab"
|
||||
|
||||
|
@ -46,6 +69,3 @@ msgstr "Schlüssel nicht im Schlüsselbund"
|
|||
#: plugins/openpgp/src/contact_details_provider.vala:30
|
||||
msgid "Encryption"
|
||||
msgstr "Verschlüsselung"
|
||||
|
||||
#~ msgid "OpenPGP"
|
||||
#~ msgstr "OpenPGP"
|
||||
|
|
|
@ -1,52 +1,68 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-02-07 21:31+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"Project-Id-Version: PACKAGE VERSION+\n"
|
||||
"POT-Creation-Date: 2024-06-09 22:16+0200\n"
|
||||
"PO-Revision-Date: 2024-06-09 22:18+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Dino+\n"
|
||||
"Language: en\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
"X-Poedit-Basepath: ../src\n"
|
||||
"X-Poedit-KeywordsList: _(\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:68
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:72
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:101
|
||||
#: account_settings_entry.vala:68 account_settings_entry.vala:72
|
||||
#: account_settings_entry.vala:113
|
||||
msgid "Key publishing disabled"
|
||||
msgstr ""
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:68
|
||||
#: account_settings_entry.vala:68
|
||||
msgid "Error in GnuPG"
|
||||
msgstr ""
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:72
|
||||
msgid "No keys available. Generate one!"
|
||||
#: account_settings_entry.vala:72
|
||||
msgid ""
|
||||
"No keys available. Generate one or check if your keys aren't expired or "
|
||||
"revoked!"
|
||||
msgstr ""
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:101
|
||||
#: account_settings_entry.vala:95
|
||||
msgid "expired!"
|
||||
msgstr ""
|
||||
|
||||
#: account_settings_entry.vala:95
|
||||
msgid "revoked!"
|
||||
msgstr ""
|
||||
|
||||
#: account_settings_entry.vala:96
|
||||
msgid "Attention required!"
|
||||
msgstr ""
|
||||
|
||||
#: account_settings_entry.vala:96
|
||||
#, c-format
|
||||
msgid "Your key %s is %s"
|
||||
msgstr ""
|
||||
|
||||
#: account_settings_entry.vala:113
|
||||
msgid "Select key"
|
||||
msgstr ""
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:114
|
||||
#: account_settings_entry.vala:126
|
||||
msgid "Loading…"
|
||||
msgstr ""
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:114
|
||||
#: account_settings_entry.vala:126
|
||||
msgid "Querying GnuPG"
|
||||
msgstr ""
|
||||
|
||||
#: plugins/openpgp/src/contact_details_provider.vala:28
|
||||
#: contact_details_provider.vala:28
|
||||
msgid "Key not in keychain"
|
||||
msgstr ""
|
||||
|
||||
#: plugins/openpgp/src/contact_details_provider.vala:30
|
||||
#: contact_details_provider.vala:30
|
||||
msgid "Encryption"
|
||||
msgstr ""
|
||||
|
|
|
@ -7,8 +7,9 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-02-07 21:31+0100\n"
|
||||
"PO-Revision-Date: 2020-11-12 17:21+0000\n"
|
||||
"POT-Creation-Date: 2024-06-09 22:16+0200\n"
|
||||
"PO-Revision-Date: 2024-06-09 22:22+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: French <https://hosted.weblate.org/projects/dino/plugin-"
|
||||
"openpgp/fr/>\n"
|
||||
"Language: fr\n"
|
||||
|
@ -16,11 +17,11 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 4.4-dev\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:68
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:72
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:101
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:113
|
||||
msgid "Key publishing disabled"
|
||||
msgstr "La publication des clés est désactivée"
|
||||
|
||||
|
@ -29,18 +30,39 @@ msgid "Error in GnuPG"
|
|||
msgstr "Erreur dans GnuPG"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:72
|
||||
msgid "No keys available. Generate one!"
|
||||
msgstr "Aucune clé n’est disponible. Générez-en une !"
|
||||
msgid ""
|
||||
"No keys available. Generate one or check if your keys aren't expired or "
|
||||
"revoked!"
|
||||
msgstr ""
|
||||
"Pas de clés disponibles. Générez-en une nouvelle ou vérifier si vos "
|
||||
"clés ne seraient pas expirées ou révoquées!"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:101
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:95
|
||||
msgid "expired!"
|
||||
msgstr "expirée!"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:95
|
||||
msgid "revoked!"
|
||||
msgstr "révoquée!"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:96
|
||||
msgid "Attention required!"
|
||||
msgstr "Attention requise!"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:96
|
||||
#, c-format
|
||||
msgid "Your key %s is %s"
|
||||
msgstr "Votre clé %s est %s"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:113
|
||||
msgid "Select key"
|
||||
msgstr "Choix d’une clé"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:114
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:126
|
||||
msgid "Loading…"
|
||||
msgstr "Chargement…"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:114
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:126
|
||||
msgid "Querying GnuPG"
|
||||
msgstr "Interrogation de GnuPG"
|
||||
|
||||
|
|
|
@ -7,8 +7,9 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-02-07 21:31+0100\n"
|
||||
"PO-Revision-Date: 2020-06-02 11:41+0000\n"
|
||||
"POT-Creation-Date: 2024-06-09 22:16+0200\n"
|
||||
"PO-Revision-Date: 2024-06-09 22:39+0200\n"
|
||||
"Last-Translator: eerielili\n"
|
||||
"Language-Team: Russian <https://hosted.weblate.org/projects/dino/plugin-"
|
||||
"openpgp/ru/>\n"
|
||||
"Language: ru\n"
|
||||
|
@ -17,11 +18,11 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 4.1-dev\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:68
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:72
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:101
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:113
|
||||
msgid "Key publishing disabled"
|
||||
msgstr "Публикация ключа отключена"
|
||||
|
||||
|
@ -30,18 +31,37 @@ msgid "Error in GnuPG"
|
|||
msgstr "Ошибка в GnuPG"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:72
|
||||
msgid "No keys available. Generate one!"
|
||||
msgid ""
|
||||
"No keys available. Generate one or check if your keys aren't expired or "
|
||||
"revoked!"
|
||||
msgstr "Нет доступных ключей. Создайте как минимум один, либо проверьте что уже существующие (ранее созданные) ключи не были отозваны или срок их действия не закончился!"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:101
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:95
|
||||
msgid "expired!"
|
||||
msgstr "истёк!"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:95
|
||||
msgid "revoked!"
|
||||
msgstr "отозван!"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:96
|
||||
msgid "Attention required!"
|
||||
msgstr "внимание!"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:96
|
||||
#, c-format
|
||||
msgid "Your key %s is %s"
|
||||
msgstr "Ваш ключ %s %s"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:113
|
||||
msgid "Select key"
|
||||
msgstr "Выбрать ключ"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:114
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:126
|
||||
msgid "Loading…"
|
||||
msgstr "Загрузка…"
|
||||
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:114
|
||||
#: plugins/openpgp/src/account_settings_entry.vala:126
|
||||
msgid "Querying GnuPG"
|
||||
msgstr "Запрос GnuPG"
|
||||
|
||||
|
|
|
@ -69,7 +69,7 @@ public class AccountSettingsEntry : Plugins.AccountSettingsEntry {
|
|||
return;
|
||||
}
|
||||
if (keys.size == 0) {
|
||||
label.set_markup(build_markup_string(_("Key publishing disabled"), _("No keys available. Generate one!")));
|
||||
label.set_markup(build_markup_string(_("Key publishing disabled"), _("No keys available. Generate one or check if your keys aren't expired or revoked!")));
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -88,6 +88,18 @@ public class AccountSettingsEntry : Plugins.AccountSettingsEntry {
|
|||
set_label_active(selected);
|
||||
|
||||
combobox.changed.connect(key_changed);
|
||||
if (account_key != null) {
|
||||
try {
|
||||
GPG.Key key_check = GPGHelper.get_public_key(account_key);
|
||||
if(key_check.expired || key_check.revoked) {
|
||||
string status_str = key_check.expired ? _("expired!") : _("revoked!");
|
||||
label.set_markup(build_markup_string(_("Attention required!"), _("Your key %s is %s").printf("<span color='red'><b>"+ key_check.fpr +"</b></span>", status_str) ) );
|
||||
}
|
||||
}
|
||||
catch {
|
||||
debug("Coudn't check GPG key status.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void populate_list_store() {
|
||||
|
|
Loading…
Reference in a new issue