aboutsummaryrefslogtreecommitdiff
path: root/plugins/omemo
diff options
context:
space:
mode:
authorfrosty <frostinator33@airmail.cc>2026-10-26 10:21:57 -0400
committerfrosty <frostinator33@airmail.cc>2026-10-26 10:21:57 -0400
commit74aecd8b0986d07b50b7ce310d64e645b8b54e38 (patch)
tree560e6434f183eb54cd779936f3a4c9575146a066 /plugins/omemo
parent3d7e90d401da02d430a87db0ec7e1db3a6f1a68f (diff)
parent4436001bb361ad4f9e4e05819214ecf0ea77c063 (diff)
Merge 'upstream/master'
Diffstat (limited to 'plugins/omemo')
-rw-r--r--plugins/omemo/data/contact_details_dialog.ui251
-rw-r--r--plugins/omemo/data/encryption_preferences_entry.ui69
-rw-r--r--plugins/omemo/data/gresource.xml8
-rw-r--r--plugins/omemo/data/manage_key_dialog.ui153
-rw-r--r--plugins/omemo/meson.build92
-rw-r--r--plugins/omemo/po/LINGUAS44
-rw-r--r--plugins/omemo/po/ar.po366
-rw-r--r--plugins/omemo/po/ca.po339
-rw-r--r--plugins/omemo/po/cs.po315
-rw-r--r--plugins/omemo/po/da.po253
-rw-r--r--plugins/omemo/po/de.po398
-rw-r--r--plugins/omemo/po/dino-omemo.pot250
-rw-r--r--plugins/omemo/po/el.po320
-rw-r--r--plugins/omemo/po/en.po241
-rw-r--r--plugins/omemo/po/eo.po318
-rw-r--r--plugins/omemo/po/es.po405
-rw-r--r--plugins/omemo/po/et.po309
-rw-r--r--plugins/omemo/po/eu.po401
-rw-r--r--plugins/omemo/po/fa.po312
-rw-r--r--plugins/omemo/po/fi.po314
-rw-r--r--plugins/omemo/po/fr.po394
-rw-r--r--plugins/omemo/po/fur.po267
-rw-r--r--plugins/omemo/po/gl.po398
-rw-r--r--plugins/omemo/po/hi.po248
-rw-r--r--plugins/omemo/po/hu.po330
-rw-r--r--plugins/omemo/po/id.po318
-rw-r--r--plugins/omemo/po/ie.po360
-rw-r--r--plugins/omemo/po/isv.po254
-rw-r--r--plugins/omemo/po/it.po405
-rw-r--r--plugins/omemo/po/ja.po365
-rw-r--r--plugins/omemo/po/ka.po250
-rw-r--r--plugins/omemo/po/kab.po265
-rw-r--r--plugins/omemo/po/lb.po396
-rw-r--r--plugins/omemo/po/lt.po374
-rw-r--r--plugins/omemo/po/meson.build1
-rw-r--r--plugins/omemo/po/nb.po403
-rw-r--r--plugins/omemo/po/nl.po402
-rw-r--r--plugins/omemo/po/oc.po323
-rw-r--r--plugins/omemo/po/pl.po386
-rw-r--r--plugins/omemo/po/pt.po324
-rw-r--r--plugins/omemo/po/pt_BR.po379
-rw-r--r--plugins/omemo/po/ro.po406
-rw-r--r--plugins/omemo/po/ru.po386
-rw-r--r--plugins/omemo/po/sq.po318
-rw-r--r--plugins/omemo/po/sv.po371
-rw-r--r--plugins/omemo/po/ta.po304
-rw-r--r--plugins/omemo/po/th.po259
-rw-r--r--plugins/omemo/po/tr.po373
-rw-r--r--plugins/omemo/po/uk.po321
-rw-r--r--plugins/omemo/po/vi.po314
-rw-r--r--plugins/omemo/po/zh_CN.po349
-rw-r--r--plugins/omemo/po/zh_TW.po340
-rw-r--r--plugins/omemo/src/dtls_srtp_verification_draft.vala268
-rw-r--r--plugins/omemo/src/file_transfer/file_decryptor.vala90
-rw-r--r--plugins/omemo/src/file_transfer/file_encryptor.vala76
-rw-r--r--plugins/omemo/src/jingle/jet_omemo.vala114
-rw-r--r--plugins/omemo/src/jingle/jingle_helper.vala53
-rw-r--r--plugins/omemo/src/logic/database.vala284
-rw-r--r--plugins/omemo/src/logic/decrypt.vala210
-rw-r--r--plugins/omemo/src/logic/encrypt.vala131
-rw-r--r--plugins/omemo/src/logic/manager.vala429
-rw-r--r--plugins/omemo/src/logic/pre_key_store.vala45
-rw-r--r--plugins/omemo/src/logic/session_store.vala49
-rw-r--r--plugins/omemo/src/logic/signed_pre_key_store.vala45
-rw-r--r--plugins/omemo/src/logic/trust_manager.vala141
-rw-r--r--plugins/omemo/src/native/context.vala115
-rw-r--r--plugins/omemo/src/native/helper.c329
-rw-r--r--plugins/omemo/src/native/helper.h41
-rw-r--r--plugins/omemo/src/native/simple_iks.vala40
-rw-r--r--plugins/omemo/src/native/simple_pks.vala33
-rw-r--r--plugins/omemo/src/native/simple_spks.vala33
-rw-r--r--plugins/omemo/src/native/simple_ss.vala75
-rw-r--r--plugins/omemo/src/native/store.vala415
-rw-r--r--plugins/omemo/src/native/util.vala45
-rw-r--r--plugins/omemo/src/plugin.vala97
-rw-r--r--plugins/omemo/src/protocol/bundle.vala88
-rw-r--r--plugins/omemo/src/protocol/message_flag.vala23
-rw-r--r--plugins/omemo/src/protocol/stream_module.vala331
-rw-r--r--plugins/omemo/src/register_plugin.vala3
-rw-r--r--plugins/omemo/src/trust_level.vala15
-rw-r--r--plugins/omemo/src/ui/bad_messages_populator.vala198
-rw-r--r--plugins/omemo/src/ui/call_encryption_entry.vala57
-rw-r--r--plugins/omemo/src/ui/contact_details_provider.vala29
-rw-r--r--plugins/omemo/src/ui/device_notification_populator.vala90
-rw-r--r--plugins/omemo/src/ui/encryption_list_entry.vala77
-rw-r--r--plugins/omemo/src/ui/encryption_preferences_entry.vala323
-rw-r--r--plugins/omemo/src/ui/manage_key_dialog.vala177
-rw-r--r--plugins/omemo/src/ui/own_notifications.vala35
-rw-r--r--plugins/omemo/src/ui/util.vala40
-rw-r--r--plugins/omemo/tests/native/common.vala92
-rw-r--r--plugins/omemo/tests/native/curve25519.vala207
-rw-r--r--plugins/omemo/tests/native/hkdf.vala59
-rw-r--r--plugins/omemo/tests/native/session_builder.vala564
-rw-r--r--plugins/omemo/tests/native/testcase.vala80
-rw-r--r--plugins/omemo/vapi/libgcrypt.vapi0
-rw-r--r--plugins/omemo/vapi/libomemo-c.vapi694
-rw-r--r--plugins/omemo/vapi/libqrencode.vapi81
97 files changed, 0 insertions, 22162 deletions
diff --git a/plugins/omemo/data/contact_details_dialog.ui b/plugins/omemo/data/contact_details_dialog.ui
deleted file mode 100644
index 6c357175..00000000
--- a/plugins/omemo/data/contact_details_dialog.ui
+++ /dev/null
@@ -1,251 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
- <requires lib="gtk" version="4.0"/>
- <template class="DinoPluginsOmemoContactDetailsDialog">
- <property name="modal">True</property>
- <property name="resizable">False</property>
- <child internal-child="content_area">
- <object class="GtkBox">
- <property name="margin-start">12</property>
- <property name="margin-end">12</property>
- <property name="margin-top">12</property>
- <property name="margin-bottom">12</property>
- <property name="spacing">12</property>
- <child>
- <object class="GtkFrame">
- <property name="child">
- <object class="GtkListBox">
- <property name="selection-mode">none</property>
- <child>
- <object class="GtkListBoxRow">
- <property name="activatable">0</property>
- <property name="child">
- <object class="GtkBox">
- <property name="margin-start">20</property>
- <property name="margin-end">20</property>
- <property name="margin-top">14</property>
- <property name="margin-bottom">14</property>
- <property name="spacing">40</property>
- <child>
- <object class="GtkBox">
- <property name="orientation">vertical</property>
- <property name="hexpand">1</property>
- <child>
- <object class="GtkLabel" id="automatically_accept_new_label">
- <property name="halign">start</property>
- <attributes>
- <attribute name="scale" value="1.1"></attribute>
- </attributes>
- </object>
- </child>
- <child>
- <object class="GtkLabel" id="automatically_accept_new_descr">
- <property name="max_width_chars">1</property>
- <property name="hexpand">1</property>
- <property name="vexpand">1</property>
- <property name="xalign">0</property>
- <property name="wrap">1</property>
- <attributes>
- <attribute name="scale" value="0.8"></attribute>
- </attributes>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkSwitch" id="auto_accept_switch">
- <property name="halign">end</property>
- <property name="valign">center</property>
- </object>
- </child>
- </object>
- </property>
- </object>
- </child>
- </object>
- </property>
- </object>
- </child>
- <child>
- <object class="GtkBox" id="own_fingerprint_container">
- <property name="visible">0</property>
- <property name="orientation">vertical</property>
- <property name="spacing">2</property>
- <child>
- <object class="GtkLabel" id="own_key_label">
- <property name="halign">start</property>
- <attributes>
- <attribute name="weight" value="PANGO_WEIGHT_BOLD"></attribute>
- </attributes>
- </object>
- </child>
- <child>
- <object class="GtkFrame">
- <property name="child">
- <object class="GtkListBox">
- <property name="selection-mode">none</property>
- <child>
- <object class="GtkListBoxRow">
- <property name="activatable">0</property>
- <property name="hexpand">1</property>
- <property name="child">
- <object class="GtkBox">
- <property name="margin-start">20</property>
- <property name="margin-end">20</property>
- <property name="margin-top">14</property>
- <property name="spacing">40</property>
- <property name="margin-bottom">14</property>
- <property name="hexpand">1</property>
- <child>
- <object class="GtkLabel" id="own_fingerprint_label">
- <property name="halign">start</property>
- <property name="justify">right</property>
- <property name="hexpand">1</property>
- </object>
- </child>
- <child>
- <object class="GtkBox">
- <property name="hexpand">1</property>
- <property name="spacing">5</property>
- <child>
- <object class="GtkMenuButton" id="show_qrcode_button">
- <property name="icon-name">dino-qr-code-symbolic</property>
- <property name="halign">start</property>
- <property name="hexpand">1</property>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="copy_button">
- <property name="halign">end</property>
- <property name="hexpand">1</property>
- <child>
- <object class="GtkImage">
- <property name="icon-size">normal</property>
- <property name="icon-name">dino-edit-copy-symbolic</property>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- </object>
- </property>
- </object>
- </child>
- </object>
- </property>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkBox" id="new_keys_container">
- <property name="visible">0</property>
- <property name="orientation">vertical</property>
- <property name="spacing">2</property>
- <child>
- <object class="GtkLabel" id="new_keys_label">
- <property name="halign">start</property>
- <attributes>
- <attribute name="weight" value="PANGO_WEIGHT_BOLD"></attribute>
- </attributes>
- </object>
- </child>
- <child>
- <object class="GtkFrame">
- <property name="child">
- <object class="GtkScrolledWindow">
- <property name="hscrollbar_policy">never</property>
- <property name="propagate_natural_height">1</property>
- <property name="child">
- <object class="GtkListBox" id="new_keys_listbox">
- <property name="selection-mode">none</property>
- </object>
- </property>
- </object>
- </property>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkBox" id="keys_container">
- <property name="visible">0</property>
- <property name="orientation">vertical</property>
- <property name="spacing">2</property>
- <child>
- <object class="GtkLabel" id="associated_keys_label">
- <property name="halign">start</property>
- <attributes>
- <attribute name="weight" value="PANGO_WEIGHT_BOLD"></attribute>
- </attributes>
- </object>
- </child>
- <child>
- <object class="GtkFrame">
- <property name="child">
- <object class="GtkScrolledWindow">
- <property name="hscrollbar_policy">never</property>
- <property name="propagate_natural_height">1</property>
- <property name="child">
- <object class="GtkListBox" id="keys_listbox">
- <property name="selection-mode">none</property>
- </object>
- </property>
- </object>
- </property>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkExpander" id="inactive_keys_expander">
- <property name="visible">0</property>
- <child type="label">
- <object class="GtkLabel" id="inactive_expander_label">
- <attributes>
- <attribute name="weight" value="PANGO_WEIGHT_BOLD"></attribute>
- </attributes>
- </object>
- </child>
- <child>
- <object class="GtkFrame">
- <property name="margin-top">2</property>
- <property name="child">
- <object class="GtkScrolledWindow">
- <property name="hscrollbar_policy">never</property>
- <property name="propagate_natural_height">1</property>
- <property name="child">
- <object class="GtkListBox" id="inactive_keys_listbox">
- <property name="selection-mode">none</property>
- </object>
- </property>
- </object>
- </property>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- </template>
- <object class="GtkPopover" id="qrcode_popover">
- <property name="position">left</property>
- <property name="child">
- <object class="GtkBox">
- <property name="margin-start">10</property>
- <property name="margin-end">10</property>
- <property name="margin-top">10</property>
- <property name="margin-bottom">10</property>
- <child>
- <object class="GtkPicture" id="qrcode_picture">
- <property name="can-shrink">False</property>
- </object>
- </child>
- </object>
- </property>
- </object>
-</interface>
diff --git a/plugins/omemo/data/encryption_preferences_entry.ui b/plugins/omemo/data/encryption_preferences_entry.ui
deleted file mode 100644
index 1aa1a541..00000000
--- a/plugins/omemo/data/encryption_preferences_entry.ui
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
- <requires lib="gtk" version="4.0"/>
- <template class="DinoPluginsOmemoOmemoPreferencesWidget">
- <child>
- <object class="AdwPreferencesGroup" id="keys_preferences_group">
- <property name="title">OMEMO</property>
- <property name="description" translatable="yes">Each device has its own OMEMO key. Messages can only be decrypted by a device if they are encrypted to its key. Messages are only encrypted to accepted devices.</property>
- <property name="margin-bottom">12</property>
- </object>
- </child>
- <child>
- <object class="AdwPreferencesGroup">
- <child>
- <object class="AdwSwitchRow" id="encrypt_by_default_row" />
- </child>
- <child>
- <object class="AdwSwitchRow" id="automatically_accept_new_row" />
- </child>
- </object>
- </child>
- <child>
- <object class="GtkBox" id="new_keys_container">
- <property name="visible">0</property>
- <property name="orientation">vertical</property>
- <property name="spacing">2</property>
- <child>
- <object class="GtkLabel" id="new_keys_label">
- <property name="halign">start</property>
- <attributes>
- <attribute name="weight" value="PANGO_WEIGHT_BOLD"></attribute>
- </attributes>
- </object>
- </child>
- <child>
- <object class="GtkFrame">
- <property name="child">
- <object class="GtkScrolledWindow">
- <property name="hscrollbar_policy">never</property>
- <property name="propagate_natural_height">1</property>
- <property name="child">
- <object class="GtkListBox" id="new_keys_listbox">
- <property name="selection-mode">none</property>
- </object>
- </property>
- </object>
- </property>
- </object>
- </child>
- </object>
- </child>
- </template>
- <object class="GtkPopover" id="qrcode_popover">
- <property name="position">left</property>
- <property name="child">
- <object class="GtkBox">
- <property name="margin-start">10</property>
- <property name="margin-end">10</property>
- <property name="margin-top">10</property>
- <property name="margin-bottom">10</property>
- <child>
- <object class="GtkPicture" id="qrcode_picture">
- <property name="can-shrink">False</property>
- </object>
- </child>
- </object>
- </property>
- </object>
-</interface>
diff --git a/plugins/omemo/data/gresource.xml b/plugins/omemo/data/gresource.xml
deleted file mode 100644
index 673c3df5..00000000
--- a/plugins/omemo/data/gresource.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<gresources>
- <gresource prefix="/im/dino/Dino/omemo">
- <file>contact_details_dialog.ui</file>
- <file>encryption_preferences_entry.ui</file>
- <file>manage_key_dialog.ui</file>
- </gresource>
-</gresources>
diff --git a/plugins/omemo/data/manage_key_dialog.ui b/plugins/omemo/data/manage_key_dialog.ui
deleted file mode 100644
index 37f158da..00000000
--- a/plugins/omemo/data/manage_key_dialog.ui
+++ /dev/null
@@ -1,153 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
- <requires lib="gtk" version="4.0"/>
- <template class="DinoPluginsOmemoManageKeyDialog">
- <property name="modal">True</property>
- <property name="resizable">False</property>
- <child type="titlebar">
- <object class="GtkHeaderBar" id="headerbar">
- <property name="show_title_buttons">0</property>
- <child>
- <object class="GtkButton" id="cancel_button"/>
- </child>
- <child type="end">
- <object class="GtkButton" id="ok_button">
- <property name="sensitive">0</property>
- <style>
- <class name="suggested-action"/>
- </style>
- </object>
- </child>
- </object>
- </child>
- <child internal-child="content_area">
- <object class="GtkBox">
- <child>
- <object class="GtkStack" id="manage_stack">
- <property name="transition-type">slide-left-right</property>
- <child>
- <object class="GtkStackPage">
- <property name="name">main</property>
- <property name="child">
- <object class="GtkBox" id="main_screen">
- <property name="margin-start">12</property>
- <property name="margin-end">12</property>
- <property name="margin-top">12</property>
- <property name="margin-bottom">12</property>
- <property name="spacing">12</property>
- <property name="orientation">vertical</property>
- <property name="valign">center</property>
- <child>
- <object class="GtkLabel" id="main_desc_label">
- <property name="wrap">1</property>
- <property name="xalign">0</property>
- <property name="max-width-chars">1</property>
- </object>
- </child>
- <child>
- <object class="GtkFrame">
- <property name="child">
- <object class="GtkListBox" id="main_action_list">
- <property name="selection-mode">none</property>
- </object>
- </property>
- </object>
- </child>
- </object>
- </property>
- </object>
- </child>
- <child>
- <object class="GtkStackPage">
- <property name="name">verify</property>
- <property name="child">
- <object class="GtkBox" id="verify_screen">
- <property name="margin-start">12</property>
- <property name="margin-end">12</property>
- <property name="margin-top">12</property>
- <property name="margin-bottom">12</property>
- <property name="spacing">12</property>
- <property name="orientation">vertical</property>
- <property name="valign">center</property>
- <child>
- <object class="GtkLabel" id="compare_fingerprint_label">
- <property name="wrap">1</property>
- <property name="max-width-chars">45</property>
- </object>
- </child>
- <child>
- <object class="GtkBox">
- <property name="orientation">vertical</property>
- <property name="margin-start">12</property>
- <property name="margin-end">12</property>
- <property name="spacing">12</property>
- <property name="hexpand">0</property>
- <property name="halign">center</property>
- <child>
- <object class="GtkLabel" id="verify_label">
- <property name="margin-top">12</property>
- <property name="margin-bottom">12</property>
- <property name="justify">right</property>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="verify_no_button">
- <property name="hexpand">1</property>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="verify_yes_button">
- <property name="hexpand">1</property>
- </object>
- </child>
- </object>
- </child>
- </object>
- </property>
- </object>
- </child>
- <child>
- <object class="GtkStackPage">
- <property name="name">confirm</property>
- <property name="child">
- <object class="GtkBox" id="confirm_screen">
- <property name="margin-start">12</property>
- <property name="margin-end">12</property>
- <property name="margin-top">12</property>
- <property name="margin-bottom">12</property>
- <property name="spacing">12</property>
- <property name="orientation">vertical</property>
- <property name="valign">center</property>
- <child>
- <object class="GtkImage" id="confirm_image"/>
- </child>
- <child>
- <object class="GtkLabel" id="confirm_title_label">
- <attributes>
- <attribute name="scale" value="1.1"></attribute>
- </attributes>
- </object>
- </child>
- <child>
- <object class="GtkLabel" id="confirm_desc_label">
- <property name="justify">center</property>
- <property name="wrap">1</property>
- <property name="max-width-chars">40</property>
- <attributes>
- <attribute name="scale" value="0.8"></attribute>
- </attributes>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- </child>
- </object>
- </property>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- </template>
-</interface>
diff --git a/plugins/omemo/meson.build b/plugins/omemo/meson.build
deleted file mode 100644
index 4418dd23..00000000
--- a/plugins/omemo/meson.build
+++ /dev/null
@@ -1,92 +0,0 @@
-subdir('po')
-dependencies = [
- dep_libadwaita,
- dep_crypto_vala,
- dep_dino,
- dep_gee,
- dep_glib,
- dep_gmodule,
- dep_gtk4,
- dep_libgcrypt,
- dep_libqrencode,
- dep_libomemo_c,
- dep_m,
- dep_qlite,
- dep_xmpp_vala,
-]
-sources = files(
- 'src/dtls_srtp_verification_draft.vala',
- 'src/file_transfer/file_decryptor.vala',
- 'src/file_transfer/file_encryptor.vala',
- 'src/jingle/jet_omemo.vala',
- 'src/jingle/jingle_helper.vala',
- 'src/logic/database.vala',
- 'src/logic/decrypt.vala',
- 'src/logic/encrypt.vala',
- 'src/logic/manager.vala',
- 'src/logic/pre_key_store.vala',
- 'src/logic/session_store.vala',
- 'src/logic/signed_pre_key_store.vala',
- 'src/logic/trust_manager.vala',
- 'src/plugin.vala',
- 'src/protocol/bundle.vala',
- 'src/protocol/message_flag.vala',
- 'src/protocol/stream_module.vala',
- 'src/register_plugin.vala',
- 'src/native/context.vala',
- 'src/native/helper.c',
- 'src/native/simple_iks.vala',
- 'src/native/simple_pks.vala',
- 'src/native/simple_spks.vala',
- 'src/native/simple_ss.vala',
- 'src/native/store.vala',
- 'src/native/util.vala',
- 'src/trust_level.vala',
- 'src/ui/bad_messages_populator.vala',
- 'src/ui/call_encryption_entry.vala',
- 'src/ui/contact_details_provider.vala',
- 'src/ui/device_notification_populator.vala',
- 'src/ui/encryption_list_entry.vala',
- 'src/ui/encryption_preferences_entry.vala',
- 'src/ui/manage_key_dialog.vala',
- 'src/ui/own_notifications.vala',
- 'src/ui/util.vala',
-)
-sources += gnome.compile_resources(
- 'resources',
- 'data/gresource.xml',
- source_dir: 'data',
-)
-c_args = [
- '-DG_LOG_DOMAIN="OMEMO"',
- '-DGETTEXT_PACKAGE="dino-omemo"',
- '-DLOCALE_INSTALL_DIR="@0@"'.format(get_option('prefix') / get_option('localedir')),
-]
-vala_args = [
- '--vapidir', meson.current_source_dir() / 'vapi',
- # This is to build internal vapi for tests
- '--header', meson.current_build_dir() / 'omemo.h',
- '--internal-vapi', meson.current_build_dir() / 'omemo-internal.vapi',
- '--internal-header', meson.current_build_dir() / 'omemo-internal.h',
-]
-lib_omemo = shared_library('omemo', sources, name_prefix: '', c_args: c_args, vala_args: vala_args, include_directories: include_directories('src'), dependencies: dependencies, install: true, install_dir: get_option('libdir') / get_option('plugindir'), install_rpath: default_install_rpath)
-dep_omemo = declare_dependency(link_with: lib_omemo, include_directories: include_directories('.'))
-summary('End-to-end encryption using OMEMO (omemo)', dep_omemo.found(), bool_yn: true, section: 'Plugins')
-# This is to use the internal vapi instead of the regular
-vapi_omemo_internal = custom_target('omemo-internal-vapi', command: [find_program('touch'), meson.current_build_dir() / 'omemo-internal.vapi'], output: ['omemo-internal.vapi'], depends: lib_omemo)
-dep_omemo_internal = declare_dependency(link_args: [lib_omemo.full_path()], include_directories: include_directories('.', 'src'), sources: [vapi_omemo_internal])
-
-test_sources = [
- 'tests/native/common.vala',
- 'tests/native/testcase.vala',
-
- 'tests/native/curve25519.vala',
- 'tests/native/hkdf.vala',
- 'tests/native/session_builder.vala',
-]
-test_vala_args = [
- '--vapidir', meson.current_source_dir() / 'vapi',
-]
-
-exe_omemo_test = executable('omemo-test', test_sources, c_args: c_args, vala_args: test_vala_args, dependencies: dependencies + dep_omemo_internal, build_rpath: '$ORIGIN', install: false)
-test('Tests for omemo', exe_omemo_test)
diff --git a/plugins/omemo/po/LINGUAS b/plugins/omemo/po/LINGUAS
deleted file mode 100644
index 384e7d3b..00000000
--- a/plugins/omemo/po/LINGUAS
+++ /dev/null
@@ -1,44 +0,0 @@
-ar
-ca
-cs
-da
-de
-el
-en
-eo
-es
-et
-eu
-fa
-fi
-fr
-fur
-gl
-hi
-hu
-id
-ie
-isv
-it
-ja
-ka
-kab
-lb
-lt
-nb
-nl
-oc
-pl
-pt
-pt_BR
-ro
-ru
-sq
-sv
-ta
-th
-tr
-uk
-vi
-zh_CN
-zh_TW
diff --git a/plugins/omemo/po/ar.po b/plugins/omemo/po/ar.po
deleted file mode 100644
index ce019542..00000000
--- a/plugins/omemo/po/ar.po
+++ /dev/null
@@ -1,366 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2025-06-16 14:01+0000\n"
-"Language-Team: Arabic <https://hosted.weblate.org/projects/dino/plugin-omemo/"
-"ar/>\n"
-"Language: ar\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
-"X-Generator: Weblate 5.12-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr "يستخدم %s جهازًا غير موثوق به. لن ترى رسائل من أجهزة لا تثق بها."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "أدِر الأجهزة"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr "لا يثق %s بهذا الجهاز. هذا يعني أنك قد تفقد بعض الرسائل."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "إدارة المفتاح"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr "قارن البصمة حرفًا بحرف مع تلك التي تظهر على جهاز مُراسِلك."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "البصمات غير متطابقة"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "البصمات متطابقة"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "ألغِ"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "أكِّد"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "تحقق من المفتاح"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"ستميز الرسائل القادمة المرسلة بواسطة %s من الجهاز الذي يستخدم هذا المفتاح "
-"وفقًا لذلك في نافذة الدردشة."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "البصمات غير متطابقة"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"تحقق بأنك تقارن البصمة الصحيحة من فضلك. إن لم تكن البصمات متطابقة فإن حساب "
-"%s قد يكون مخترقًا، ومن المستحسن التفكير برفض هذا المفتاح."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "تحقق مِن بصمة المفتاح"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr "قارن بصمة هذا المفتاح مع البصمة المعروضة على جهاز مُراسِلك."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "ارفض المفتاح"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr "يحظر الاتصال المشفر مع جهاز المراسل الذي يستخدم هذا المفتاح."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "اقبل المفتاح"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr "يسمح بالاتصال المشفر بجهاز المراسل الذي يستخدم هذا المفتاح."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "هذا المفتاح %s حاليًا."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "مقبول"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr "ذلك يعني أنه بإمكان %s أن يستخدمه لتلقي وإرسال رسائل مشفرة."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "مُحَقَّق"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr "بالإضافة إلى ذلك، فقد تم التحقق من تطابق المفتاح على جهاز المُراسِل."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "مرفوض"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"هذا يعني أنه لن يكون بمقدور %s استخدامه لفك تشفير رسائلك، ولن ترى الرسائل "
-"المشفرة به."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"لن ترى الرسائل المشفرة من جهاز %s الذي يستخدم هذا المفتاح. وبخلاف ذلك، فلن "
-"يتمكن هذا الجهاز من فك تشفير رسائلك بعد الآن."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"سيكون بمقدورك تبادل الرسائل المشفرة مع جهاز %s الذي يستخدم هذا المفتاح."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "عُد"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "أدِر"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "لدى هذا المُراسِل أجهزة جديدة"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "قرار ثقة OMEMO إلزامي"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "هل قمت بإضافة جهاز جديد على حساب %s؟"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "OMEMO مبدئيًا"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "فَعِّل تعمية OMEMO للمحادثات الجديدة"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "شَفِّر للأجهزة الجديدة"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "شَفِّر تلقائيًا للأجهزة الجديدة من هذا المراسِل."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "المفاتيح الجديدة"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr "سَتُقبَل مفاتيح التشفير الجديدة من أجهزتك الأخرى تلقائيًا."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "هذا الجهاز"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "جهاز آخر"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "جهاز"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "قُبِل"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "رُفِض"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "مُحَقَّق"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "جهاز جديد"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"لكل جهاز مفتاح OMEMO خاص به. يمكن فك تعمية الرسائل على جهاز ما إذا كانت "
-"التعمية قد تمت بمفتاحه حصرًا. الرسائل معمَّاة للأجهزة المقبولة."
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "إدارة مفاتيح OMEMO"
-
-#~ msgid "Encryption"
-#~ msgstr "التعمية"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "لا أجهزة OMEMO"
-#~ msgstr[1] "جهاز OMEMO واحد"
-#~ msgstr[2] "جهازا OMEMO"
-#~ msgstr[3] "%d أجهزة OMEMO"
-#~ msgstr[4] "%d جهاز OMEMO"
-#~ msgstr[5] "%d جهاز OMEMO"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "اقبّل المفاتيح الجديدة تلقائيًا"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr "ستقبل مفاتيح التشفير الجديدة لهذا المراسل تلقائيًا."
-
-#~ msgid "Own key"
-#~ msgstr "مفتاحك الخاص"
-
-#~ msgid "Associated keys"
-#~ msgstr "المفاتيح المقترِنة"
-
-#~ msgid "Inactive keys"
-#~ msgstr "المفاتيح غير النشِطة"
-
-#~ msgid "Unused"
-#~ msgstr "غير مستخدَم"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "بصمتك الخاصة"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "سيتم توليدها عند أول اتصال"
-
-#~ msgid "Not matching"
-#~ msgstr "غير مطابقة"
-
-#~ msgid "Matching"
-#~ msgstr "مطابقة"
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "highlighted accordingly in the chat window."
-#~ msgstr ""
-#~ "بمجرد تأكيد ذلك ، سيتم تمييز أية رسائل مستقبلية مرسلة مِن %s باستخدام هذا "
-#~ "المفتاح وفقا لذلك في نافذة الدردشة."
-
-#~ msgid ""
-#~ "Stop accepting this key during communication with its associated contact."
-#~ msgstr "توقف عن قبول هذا المفتاح أثناء الاتصال مع المُراسِل المرتبط به."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact"
-#~ msgstr "ابدأ في قبول هذا المفتاح أثناء الاتصال مع المُراسِل المرتبط به"
-
-#~ msgid ""
-#~ "This means it cannot be used by %s to receive messages, and any messages "
-#~ "sent by it will be ignored."
-#~ msgstr ""
-#~ "هذا يعني أنه لا يمكن استخدامه مِن طرف %s لاستقبال الرسائل و سيتم تجاهل أية "
-#~ "رسائل بُعِثت به."
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "ignored and none of your messages will be readable using this key."
-#~ msgstr ""
-#~ "بمجرد التأكيد ، سيتم تجاهل أي رسائل مستقبلية يقوم بإرسالها %s باستخدام "
-#~ "هذا المفتاح ويتصبح كافة رسائلك غير قابلة للقراءة باستخدام هذا المفتاح."
-
-#~ msgid ""
-#~ "Once confirmed this key will be usable by %s to receive and send messages."
-#~ msgstr ""
-#~ "بمجرد تأكيد هذا المفتاح سوف يكون قابلا للاستخدام من قِبل %s لتلقي وإرسال "
-#~ "الرسائل."
-
-#~ msgid ""
-#~ "When this contact adds new encryption keys to their account, "
-#~ "automatically accept them."
-#~ msgstr ""
-#~ "عند قيام جهة الاتصال هذه باضافة مفاتيح تشفير جديدة إلى حسابها ، قم "
-#~ "بقبولها تلقائيا."
-
-#~ msgid ""
-#~ "When you add new encryption keys to your account, automatically accept "
-#~ "them."
-#~ msgstr "عند إضافة مفاتيح تشفير جديدة إلى حسابك ، اقبلها تلقائيا."
-
-#~ msgid "Unknown device (0x%.8x)"
-#~ msgstr "جهاز مجهول (0x%.8x)"
-
-#~ msgid "Other devices"
-#~ msgstr "أجهزة أخرى"
-
-#~ msgid "- None -"
-#~ msgstr "- لا شيء -"
diff --git a/plugins/omemo/po/ca.po b/plugins/omemo/po/ca.po
deleted file mode 100644
index 3a431776..00000000
--- a/plugins/omemo/po/ca.po
+++ /dev/null
@@ -1,339 +0,0 @@
-# Catalan translation for dino-omemo.
-# This file is distributed under the same license as the dino package.
-# Jordi Mallach <jordi@mallach.net>, 2018.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: dino-omemo 20180123\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2025-08-22 20:14+0000\n"
-"Language-Team: Catalan <ca@dodds.net>\n"
-"Language: ca\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: Weblate 5.13\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s ha estat utilitzant un dispositiu no verificat. No veureu missatges de "
-"dispositius en què no confieu."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Gestionar dispositius"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s no confia en aquest dispositiu. Això vol dir que és possible que us "
-"faltin missatges."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Gestiona la clau"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Compareu l'empremta, caràcter per caràcter, amb la que es mostra al vostre "
-"dispositiu de contactes."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Les empremtes són diferents"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Les empremtes coincideixen"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Cancel·la"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Confirma"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Comproveu la clau"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"Els missatges futurs enviats per %s des del dispositiu que utilitza aquesta "
-"clau es ressaltaran en conseqüència a la finestra de xat."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Les empremtes no es corresponen"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Cercioreu-vos que estigueu verificant l'empremta correcta. Si no en "
-"coincideixen, el compte de %s podria trobar-se en perill i heu de considerar "
-"rebutjar aquesta clau."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Verificar l'empremta de la clau"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Compareu l'empremta digital d'aquesta clau amb l'empremta digital que es "
-"mostra al dispositiu del contacte."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Rebutja la clau"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Bloqueja la comunicació xifrada amb el dispositiu del contacte que utilitza "
-"aquesta clau."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Accepta la clau"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Permet la comunicació xifrada amb el dispositiu del contacte que utilitza "
-"aquesta clau."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Actualment, aquesta clau ha estat %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "acceptada"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Això vol dir que %s pot utilitzar-la per rebre i enviar missatges xifrats."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "verificada"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-"A més, s'ha verificat que coincideix amb la clau del dispositiu del contacte."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "rebutjada"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Això vol dir que %s no pot utilitzar-la per desxifrar els vostres missatges "
-"i no veureu els missatges xifrats amb ella."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"No veureu missatges xifrats del dispositiu de %s que utilitza aquesta clau. "
-"Per contra, aquest dispositiu ja no podrà desxifrar els vostres missatges."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Podreu intercanviar missatges xifrats amb el dispositiu de %s que utilitza "
-"aquesta clau."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Enrere"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Gestiona"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Aquest contacte té dispositius nous"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "Cal una decisió de confiança d'OMEMO"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Heu afegit un dispositiu nou per al compte %s?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "OMEMO per defecte"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "Activa l'encriptació OMEMO per a converses noves"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Encripta a nous dispositius"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Encripta automàticament a dispositius nous des d'aquest contacte."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Claus noves"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Les claus de xifratge noves dels altres dispositius s'acceptaran "
-"automàticament."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "Aquest dispositiu"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "Un altre dispositiu"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "Dispositiu"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Acceptada"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Rebutjada"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Verificada"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Nou dispositiu"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"Cada dispositiu té la seva pròpia clau OMEMO. Un dispositiu només es pot "
-"desxifrar un missatge si ha estat xifrat per a la seva clau. Només es xifren "
-"els missatges per a dispositius acceptats."
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "Gestió de claus OMEMO"
-
-#~ msgid "Encryption"
-#~ msgstr "Xifratge"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d dispositiu OMEMO"
-#~ msgstr[1] "%d dispositius OMEMO"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Accepta claus noves automàticament"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr ""
-#~ "Les claus de xifratge noves d'aquest contacte s'acceptaran automàticament."
-
-#~ msgid "Own key"
-#~ msgstr "Clau pròpia"
-
-#~ msgid "Associated keys"
-#~ msgstr "Claus associades"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Claus inactives"
-
-#~ msgid "Unused"
-#~ msgstr "No utilitzada"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Empremta pròpia"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Es generarà durant la primera connexió"
-
-#~ msgid "Not matching"
-#~ msgstr "No coincideixen"
-
-#~ msgid "Matching"
-#~ msgstr "Coincideixen"
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "highlighted accordingly in the chat window."
-#~ msgstr ""
-#~ "Després de la confirmació, qualssevol missatges que enviï %s amb aquesta "
-#~ "clau es ressaltarà a la finestra del xat."
-
-#~ msgid "Unknown device (0x%.8x)"
-#~ msgstr "Dispositiu desconegut (0x%.8x)"
-
-#~ msgid "Other devices"
-#~ msgstr "Altres dispositius"
-
-#~ msgid "- None -"
-#~ msgstr "- Cap -"
diff --git a/plugins/omemo/po/cs.po b/plugins/omemo/po/cs.po
deleted file mode 100644
index f85a3781..00000000
--- a/plugins/omemo/po/cs.po
+++ /dev/null
@@ -1,315 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2026-03-18 01:44+0000\n"
-"Language-Team: none\n"
-"Language: cs\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n"
-"X-Generator: Weblate 5.17-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s používá nedůvěryhodné zařízení. Zprávy ze zařízení, kterým nedůvěřujete, "
-"se vám nezobrazí."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Spravovat zařízení"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s nedůvěřuje tomuto zařízení. Z tohoto důvodu nemusí vidět některé zprávy."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Spravovat klíč"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Porovnejte otisk klíče, znak po znaku, s tím, který je zobrazen na zařízení "
-"vašeho kontaktu."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Otisky klíčů se liší"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Otisky klíčů odpovídají"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Zrušit"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Potvrdit"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Ověřit klíč"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"Budoucí zprávy, s odesílatelem %s, ze zařízení, které používá tento klíč, "
-"budou odpovídajícím způsobem zvýrazněny v okně chatu."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Otisky klíčů se neshodují"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Ověřte, zda porovnáváte správný otisk klíče. Pokud se otisky neshodují, účet "
-"%s může být ohrožen a měli byste zvážit zamítnutí tohoto klíče."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Ověření otisku klíče"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Porovnejte otisk tohoto klíče s otiskem zobrazeným na zařízení kontaktu."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Odmítnout klíč"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Zablokujte šifrovanou komunikaci se zařízením kontaktu, které tento klíč "
-"používá."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Přijmout klíč"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Povolit šifrovanou komunikaci se zařízením kontaktu, které používá tento "
-"klíč."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Tento klíč je v současné době %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "akceptován"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"To znamená, že jej %s může používat k přijímání a odesílání šifrovaných "
-"zpráv."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "ověřen"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr "Navíc bylo ověřeno, že odpovídá klíči v zařízení kontaktu."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "odmítnut"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"To znamená, že jej %s nemůže použít k dešifrování zpráv a vy neuvidíte "
-"zprávy šifrované tímto klíčem."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"Ze zařízení %s, které používá tento klíč, se šifrované zprávy nezobrazí. "
-"Toto zařízení už také nebude schopno rozluštit vaše zprávy."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Budete si moci vyměňovat šifrované zprávy se zařízením %s, které tento klíč "
-"používá."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Zpět"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Spravovat"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Tento kontakt má nová zařízení"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "Vyžaduje se rozhodnutí o důvěře OMEMO"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Přidali jste nové zařízení pro účet %s?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "OMEMO ve výchozím stavu"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "Zapnout OMEMO šifrování pro nové konverzace"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Šifrovat novým zařízením"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Automaticky šifrovat novým zařízením od tohoto kontaktu."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Nové klíče"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Nové šifrovací klíče z vašich ostatních zařízení budou automaticky přijímány."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "Toto zařízení"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "Jiné zařízení"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "Zařízení"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Přijat"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Odmítnut"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Ověřen"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Nové zařízení"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"Každé zařízení má svůj vlastní OMEMO klíč. Pokud jsou tímto klíčem "
-"zašifrované, zprávy je možné rozšifrovat pouze daným zařízením. Zprávy jsou "
-"šifrovány pouze pro přijatá zařízení."
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "OMEMO Správa klíčů"
-
-#~ msgid "Encryption"
-#~ msgstr "Šifrování"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d OMEMO zařízení"
-#~ msgstr[1] "%d OMEMO zařízení"
-#~ msgstr[2] "%d OMEMO zařízení"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Automaticky přijímat nové klíče"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr ""
-#~ "Nové šifrovací klíče od tohoto kontaktu budou automaticky přijímány."
-
-#~ msgid "Own key"
-#~ msgstr "Vlastní klíč"
-
-#~ msgid "Associated keys"
-#~ msgstr "Přidružené klíče"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Neaktivní klíče"
-
-#~ msgid "Unused"
-#~ msgstr "Nepoužit"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Otisk vlastního klíče"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Budou generovány při prvním připojení"
diff --git a/plugins/omemo/po/da.po b/plugins/omemo/po/da.po
deleted file mode 100644
index 4689d6c0..00000000
--- a/plugins/omemo/po/da.po
+++ /dev/null
@@ -1,253 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2024-01-06 01:07+0000\n"
-"Language-Team: none\n"
-"Language: da\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: Weblate 5.4-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr ""
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr ""
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr ""
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr ""
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr ""
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr ""
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-
-#~ msgid "Encryption"
-#~ msgstr "Kryptering"
diff --git a/plugins/omemo/po/de.po b/plugins/omemo/po/de.po
deleted file mode 100644
index a3085e63..00000000
--- a/plugins/omemo/po/de.po
+++ /dev/null
@@ -1,398 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: dino-omemo-0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2025-04-10 11:50+0000\n"
-"Language-Team: German <https://hosted.weblate.org/projects/dino/plugin-omemo/"
-"de/>\n"
-"Language: de\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: Weblate 5.11-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s hat ein nicht akzeptiertes Gerät benutzt. Du wirst Nachrichten von nicht "
-"akzeptierten Geräten nicht sehen."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Geräte verwalten"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s akzeptiert dieses Gerät nicht. Deshalb verpasst du vielleicht Nachrichten."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Schlüssel verwalten"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Vergleiche den Fingerabdruck, Zeichen für Zeichen, mit dem der auf dem Gerät "
-"deines Kontakts angezeigt wird."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Fingerabdrücke unterscheiden sich"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Fingerabdrücke stimmen überein"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Abbrechen"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Bestätigen"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Schlüssel verifizieren"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"Zukünftige Nachrichten, die %s von dem Gerät sendet, welches diese Schlüssel "
-"verwendet, werden im Chatfenster entsprechend hervorgehoben."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Fingerabdrücke stimmen nicht überein"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Bitte überprüfe, ob du den richtigen Fingerabdruck vergleichst. Wenn die "
-"Fingerabdrücke nicht übereinstimmen, ist das Konto von %s möglicherweise "
-"kompromittiert und du solltest in Betracht ziehen, den Schlüssel abzulehnen."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Fingerabdruck überprüfen"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Diesen Fingerabdruck mit dem Fingerabdruck vergleichen, der auf dem Gerät "
-"des Kontaktes angezeigt wird."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Schlüssel ablehnen"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Blockiert die verschlüsselte Kommunikation mit dem Gerät des Kontakts, das "
-"diesen Schlüssel verwendet."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Schlüssel akzeptieren"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Erlaubt die verschlüsselte Kommunikation mit dem Gerät des Kontakts, das "
-"diesen Schlüssel verwendet."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Dieser Schlüssel ist aktuell %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "akzeptiert"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Das bedeutet, er kann von %s zum Empfangen und Senden verschlüsselter "
-"Nachrichten verwendet werden."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "überprüft"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-"Darüber hinaus wurde überprüft, dass er mit dem Schlüssel auf dem Gerät des "
-"Kontaktes übereinstimmt."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "abgelehnt"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Das bedeutet %s kann ihn nicht benutzen, um deine Nachrichten zu "
-"entschlüsseln, und du wirst damit verschlüsselte Nachrichten nicht sehen."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"Du wirst verschlüsselte Nachrichten von dem Gerät von %s, welches diesen "
-"Schlüssel benutzt nicht mehr sehen. Umgekehrt kann dieses Gerät deine "
-"Nachrichten nicht mehr entschlüsseln."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Du wirst verschlüsselte Nachrichten mit dem Gerät von %s, welches diesen "
-"Schlüssel verwendet, austauschen können."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Zurück"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Verwalten"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Dieser Kontakt hat neue Geräte"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "OMEMO-Vertrauensentscheidung erforderlich"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Hast du ein neues Gerät für dein Konto %s hinzugefügt?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "OMEMO als Standard"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "OMEMO-Verschlüsselung für neue Unterhaltungen aktivieren"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Verschlüsselung für neue Geräte"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Automatische Verschlüsselung für neue Geräte von diesem Kontakt."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Neue Schlüssel"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Neue Schlüssel von deinen anderen Geräten werden automatisch akzeptiert."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "Dieses Gerät"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "Anderes Gerät"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "Gerät"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Akzeptiert"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Zurückgewiesen"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Verifiziert"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Neues Gerät"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"Jedes Gerät hat seinen eigenen OMEMO-Schlüssel. Nachrichten können von einem "
-"Gerät nur entschlüsselt werden, wenn sie mit diesem Schlüssel verschlüsselt "
-"sind. Nachrichten werden nur an akzeptierte Geräte verschlüsselt."
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "OMEMO-Schlüssel Verwaltung"
-
-#~ msgid "Encryption"
-#~ msgstr "Verschlüsselung"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d OMEMO Gerät"
-#~ msgstr[1] "%d OMEMO Geräte"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Neue Schlüssel automatisch akzeptieren"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr "Neue Schlüssel von diesem Kontakt werden automatisch akzeptiert."
-
-#~ msgid "Own key"
-#~ msgstr "Eigener Schlüssel"
-
-#~ msgid "Associated keys"
-#~ msgstr "Zugehörige Schlüssel"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Inaktive Schlüssel"
-
-#~ msgid "Unused"
-#~ msgstr "Unbenutzt"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Eigener Fingerabdruck"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Wird beim ersten Verbinden erzeugt"
-
-#~ msgid "Your contact"
-#~ msgstr "Dein Kontakt"
-
-#~ msgid "Not matching"
-#~ msgstr "Nicht übereinstimmend"
-
-#~ msgid "Matching"
-#~ msgstr "Stimmt überein"
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "highlighted accordingly in the chat window."
-#~ msgstr ""
-#~ "Nach der Bestätigung werden alle mit diesem Schlüssel verschlüsselten "
-#~ "Nachrichten von %s hervorgehoben."
-
-#~ msgid ""
-#~ "Stop accepting this key during communication with its associated contact."
-#~ msgstr ""
-#~ "Diesen Schlüssel nicht mehr für die Kommunikation mit dem "
-#~ "Schlüsselbesitzer akzeptieren."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact"
-#~ msgstr ""
-#~ "Akzeptiere diesen Schlüssel für die Kommunikation mit dem zugehörigen "
-#~ "Kontakt"
-
-#~ msgid ""
-#~ "This means it cannot be used by %s to receive messages, and any messages "
-#~ "sent by it will be ignored."
-#~ msgstr ""
-#~ "Das bedeutet, dass es von %s nicht verwendet werden kann, um Nachrichten "
-#~ "zu empfangen und alle von ihm gesendeten Nachrichten werden ignoriert."
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "ignored and none of your messages will be readable using this key."
-#~ msgstr ""
-#~ "Nach der Bestätigung werden alle zukünftigen Nachrichten, die von %s mit "
-#~ "diesem Schlüssel gesendet werden, ignoriert und keine Ihrer Nachrichten "
-#~ "ist mit diesem Schlüssel lesbar."
-
-#~ msgid ""
-#~ "Once confirmed this key will be usable by %s to receive and send messages."
-#~ msgstr ""
-#~ "Sobald bestätigt, kann %s diesen Schlüssel zum Senden und Empfangen von "
-#~ "Nachrichten verwenden."
-
-#~ msgid ""
-#~ "When this contact adds new encryption keys to their account, "
-#~ "automatically accept them."
-#~ msgstr ""
-#~ "Wenn dieser Kontakt neue Verschlüsselungscodes zu seinem Konto hinzufügt, "
-#~ "werden sie automatisch akzeptiert."
-
-#~ msgid ""
-#~ "When you add new encryption keys to your account, automatically accept "
-#~ "them."
-#~ msgstr ""
-#~ "Wenn du einen neuen Schüssel zu deinem Account hinzufügst, wird dieser "
-#~ "automatisch akzeptiert."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact."
-#~ msgstr ""
-#~ "Diesen Schlüssel für die Kommunikation mit dem entsprechenden Kontakt "
-#~ "akzeptieren."
-
-#~ msgid "Unknown device (0x%.8x)"
-#~ msgstr "Unbekanntes Gerät (0x%.8x)"
-
-#~ msgid "Other devices"
-#~ msgstr "Andere Geräte"
-
-#~ msgid "- None -"
-#~ msgstr "- Keine -"
-
-#~ msgid "OMEMO"
-#~ msgstr "OMEMO"
-
-#~ msgid "Database error"
-#~ msgstr "Datenbank Fehler"
diff --git a/plugins/omemo/po/dino-omemo.pot b/plugins/omemo/po/dino-omemo.pot
deleted file mode 100644
index 9f5ff2d4..00000000
--- a/plugins/omemo/po/dino-omemo.pot
+++ /dev/null
@@ -1,250 +0,0 @@
-# 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: 2026-03-29 11:32+0200\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"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr ""
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr ""
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr ""
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr ""
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr ""
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr ""
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
diff --git a/plugins/omemo/po/el.po b/plugins/omemo/po/el.po
deleted file mode 100644
index 6a522bc6..00000000
--- a/plugins/omemo/po/el.po
+++ /dev/null
@@ -1,320 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2022-02-04 09:55+0000\n"
-"Language-Team: none\n"
-"Language: el\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: Weblate 4.11-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s χρησιμοποιεί μια μη αξιόπιστη συσκευή. Δεν θα βλέπετε μηνύματα από "
-"συσκευές που δεν εμπιστεύεστε."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Διαχείριση συσκευών"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s δεν εμπιστεύεται αυτήν τη συσκευή. Αυτό σημαίνει ότι μπορεί να χάσετε "
-"μηνύματα."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Διαχείριση Κλειδιού"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Συγκρίνετε το δακτυλικό αποτύπωμα (fingerprint), χαρακτήρα προς χαρακτήρα, "
-"με αυτό που εμφανίζεται στη συσκευή της επαφής σας."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Τα δακτυλικά αποτυπώματα (fingerprints) διαφέρουν"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Τα δακτυλικά αποτυπώματα (fingerprints) ταιριάζουν"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Ακύρωση"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Επιβεβαίωση"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Επαλήθευση κλειδιού"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"Μελλοντικά μηνύματα που αποστέλλονται από %s από τη συσκευή που χρησιμοποιεί "
-"αυτό το κλειδί θα επισημαίνονται ανάλογα στο παράθυρο συνομιλίας."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Τα δακτυλικά αποτυπώματα (fingerprints) δεν ταιριάζουν"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Επαληθεύστε ότι συγκρίνετε το σωστό δακτυλικό αποτύπωμα (fingerprint). Εάν "
-"τα δακτυλικά αποτυπώματα (fingerprints) δεν ταιριάζουν, ο λογαριασμός του %s "
-"μπορεί να παραβιαστεί και θα πρέπει να σκεφτείτε να απορρίψετε αυτό το "
-"κλειδί."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Επαλήθευση δακτυλικού αποτυπώματος (fingerprint) κλειδιού"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Συγκρίνετε το δακτυλικό αποτύπωμα (fingerprint) αυτού του κλειδιού με το "
-"δακτυλικό αποτύπωμα που εμφανίζεται στη συσκευή της επαφής."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Απόρριψη κλειδιού"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Αποκλεισμός κρυπτογραφημένης επικοινωνίας με τη συσκευή της επαφής που "
-"χρησιμοποιεί αυτό το κλειδί."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Αποδοχή κλειδιού"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Να επιτρέπεται η κρυπτογραφημένη επικοινωνία με τη συσκευή της επαφής που "
-"χρησιμοποιεί αυτό το κλειδί."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Αυτό το κλειδί είναι αυτή τη στιγμή %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "δεκτό"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Αυτό σημαίνει ότι μπορεί να χρησιμοποιηθεί από το %s για λήψη και αποστολή "
-"κρυπτογραφημένων μηνυμάτων."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "επαληθευμένο"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-"Επιπλέον, έχει επαληθευτεί ότι ταιριάζει με το κλειδί στη συσκευή της επαφής."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "απορριφθέν"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Αυτό σημαίνει ότι δεν μπορεί να χρησιμοποιηθεί από %s για την "
-"αποκρυπτογράφηση των μηνυμάτων σας και δεν θα βλέπετε μηνύματα "
-"κρυπτογραφημένα με αυτό."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"Δεν θα βλέπετε κρυπτογραφημένα μηνύματα από τη συσκευή των %s που "
-"χρησιμοποιούν αυτό το κλειδί. Αντίθετα, αυτή η συσκευή δεν θα μπορεί πλέον "
-"να αποκρυπτογραφήσει τα μηνύματά σας."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Θα μπορείτε να ανταλλάσσετε κρυπτογραφημένα μηνύματα με τη συσκευή των %s "
-"που χρησιμοποιούν αυτό το κλειδί."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Πίσω"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Διαχείρηση"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Αυτή η επαφή έχει νέες συσκευές"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "Απαιτείται απόφαση εμπιστοσύνης OMEMO"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Προσθέσατε νέα συσκευή για τον λογαριασμό %s;"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Νέα κλειδιά"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Τα νέα κλειδιά κρυπτογράφησης από τις άλλες συσκευές σας θα γίνονται δεκτά "
-"αυτόματα."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Αποδεκτά"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Απορριφθέντα"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Επαληθευμένα"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr ""
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "Διαχείριση κλειδιών OMEMO"
-
-#~ msgid "Encryption"
-#~ msgstr "Κρυπτογράφηση"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d OMEMO συσκευή"
-#~ msgstr[1] "%d OMEMO συσκευές"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Αυτόματη αποδοχή νέων κλειδιών"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr ""
-#~ "Τα νέα κλειδιά κρυπτογράφησης από αυτήν την επαφή θα γίνονται δεκτά "
-#~ "αυτόματα."
-
-#~ msgid "Own key"
-#~ msgstr "Το κλειδί μου"
-
-#~ msgid "Associated keys"
-#~ msgstr "Συσχετισμένα κλειδιά"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Ανενεργά κλειδιά"
-
-#~ msgid "Unused"
-#~ msgstr "Αχρησιμοποίητα"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Το δακτυλικό μου αποτύπωμα (fingerprint)"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Θα δημιουργηθεί με την πρώτη σύνδεση"
diff --git a/plugins/omemo/po/en.po b/plugins/omemo/po/en.po
deleted file mode 100644
index 630f63ea..00000000
--- a/plugins/omemo/po/en.po
+++ /dev/null
@@ -1,241 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: dino-omemo-0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"Language: en\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr ""
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr ""
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr ""
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr ""
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr ""
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr ""
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
diff --git a/plugins/omemo/po/eo.po b/plugins/omemo/po/eo.po
deleted file mode 100644
index e7541d32..00000000
--- a/plugins/omemo/po/eo.po
+++ /dev/null
@@ -1,318 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2026-03-24 17:09+0000\n"
-"Language-Team: none\n"
-"Language: eo\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: Weblate 5.17-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s uzas nefidatan aparaton. Vi ne vidos mesaĝojn el aparatoj, kiujn vi ne "
-"fidas."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Administri aparatojn"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s ne fidas ĉi tiun aparaton. Tio signifas, ke eble mankas al vi mesaĝoj."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Administri Ŝlosilon"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Komparu la fingropremaĵon, signon post signo, kun la fingropremaĵo montrata "
-"sur la aparato de via kontakto."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Fingropremaĵoj diferencas"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Fingropremaĵoj kongruas"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Nuligi"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Konfirmi"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Konfirmi ŝlosilon"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"Mesaĝoj sendotaj de %s per la aparato kiu uzas ĉi tiun ŝlosilon estos "
-"emfazitaj laŭe en la babila fenestro."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Fingropremaĵoj ne kongruas"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Bonvolu konfirmi, ke vi komparas la ĝustan fingropremaĵon. Se fingropremaĵoj "
-"ne kongruas, la konto de %s eble estas kompromitita, kaj vi konsideru "
-"rifuzon de ĉi tiu ŝlosilo."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Konfirmi ŝlosilan fingropremaĵon"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Komparu la fingropremaĵon de ĉi tiu ŝlosilo kun la fingropremaĵo montrata "
-"sur la aparato de la kontakto."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Rifuzi ŝlosilon"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Rifuzi ĉifritan komunikadon al la aparato de la kontakto, kiu uzas ĉi tiun "
-"ŝlosilon."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Akcepti ŝlosilon"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Akcepti ĉifritan komunikadon al la aparato de la kontakto, kiu uzas ĉi tiun "
-"ŝlosilon."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Ĉi tiu ŝlosilo estas aktuale %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "akceptata"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Ĉi tio signifas, ke ĝi povas esti uzata de %s por ricevi kaj sendi ĉifritajn "
-"mesaĝojn."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "konfirmita"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-"Krome ĝi estis kontrolita pri kongruo kun la ŝlosilo ĉe la aparato de la "
-"kontakto."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "rifuzita"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Tio signifas, ke ĝi ne povas esti uzata de %s por malĉifri viajn mesaĝojn, "
-"kaj vi ne vidos mesaĝojn ĉifritajn per ĝi."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"Vi ne vidos ĉifritajn mesaĝojn el la aparato de %s kiu uzas ĉi tiun "
-"ŝlosilon. Male, tiu aparato ne plu povos malĉifri viajn mesaĝojn."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Vi povos interŝanĝi ĉifritajn mesaĝojn kun la aparato de %s kiu uzas ĉi tiun "
-"ŝlosilon."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Reen"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Administri"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Ĉi tiu kontakto havas novajn aparatojn"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "Necesas OMEMO-decido pri fidindeco"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Ĉu vi aldonis novan aparaton por la konto %s?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "OMEMO defaŭlte"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "Ŝalti ĉifradon per OMEMO por novaj konversacioj"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Ĉifri por novaj aparatoj"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Aŭtomate ĉifri por novaj aparatoj de ĉi tiu kontakto."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Novaj ŝlosiloj"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Novaj ĉifraj ŝlosiloj de viaj aliaj aparatoj estos aŭtomate akceptitaj."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "Ĉi tiu aparato"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "Alia aparato"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "Aparato"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Akceptita"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Rifuzita"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Konfirmita"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Nova aparato"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"Ĉiu aparato havas sian OMEMO-ŝlosilon. Mesaĝoj povas esti deĉifritaj de "
-"aparato, nur se ĉifritaj per ĝia ŝlosilo. Mesaĝoj estas ĉifrataj nur por "
-"akceptitaj aparatoj."
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "Administrado de OMEMO-Ŝlosiloj"
-
-#, fuzzy
-#~ msgid "Encryption"
-#~ msgstr "Kodo"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d OMEMO-aparato"
-#~ msgstr[1] "%d OMEMO-aparatoj"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Aŭtomate akcepti novajn ŝlosilojn"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr "Novaj ĉifraj ŝlosiloj de ĉi tiu kontakto estos aŭtomate akceptitaj."
-
-#~ msgid "Own key"
-#~ msgstr "Propra ŝlosilo"
-
-#~ msgid "Associated keys"
-#~ msgstr "Asociitaj ŝlosiloj"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Neaktivaj ŝlosiloj"
-
-#~ msgid "Unused"
-#~ msgstr "Ne uzata"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Propra fingropremaĵo"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Estos farita dum unua konekto"
diff --git a/plugins/omemo/po/es.po b/plugins/omemo/po/es.po
deleted file mode 100644
index c4b0d353..00000000
--- a/plugins/omemo/po/es.po
+++ /dev/null
@@ -1,405 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2025-05-11 19:01+0000\n"
-"Language-Team: Spanish <https://hosted.weblate.org/projects/dino/plugin-"
-"omemo/es/>\n"
-"Language: es\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"<jaime.marquinez.ferrandiz@fastmail.net>\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 5.12-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s ha estado usando un dispositivo poco fiable. No verá mensajes de "
-"dispositivos en los que no confíe."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Gestionar dispositivos"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s no confía en este dispositivo. Eso significa que puede que te falten "
-"mensajes."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Gestionar Clave"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Compara la huella digital, carácter a carácter, con la huella digital "
-"mostrada en el dispositivo de tus contactos."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Las huellas digitales son diferente"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Las huellas digitales son idénticas"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Confirmar"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Verificar clave"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"Los mensajes futuros enviados por %s desde el dispositivo que usa esta clave "
-"serán resaltado en consecuencia en la ventana de conversación."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Huellas digitales no coinciden"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Por favor, verifica que estás comparando la huella digital correcta. Si la "
-"huella digital no coincide con la cuenta %s puede que la clave esté "
-"comprometida y deberías considerar rechazar esta clave."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Verificar Huella Digital"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Compara esta huella digital con la huella digital mostrada en el dispositivo "
-"de tu contacto."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Rechazar clave"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Bloquear comunicación cifrada con el dispositivo del contacto que usa esta "
-"clave."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Aceptar clave"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Permitir comunicación cifrada con el dispositivo del contacto que usa esta "
-"clave."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Esta clave está actualmente %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "aceptada"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Esto significa que puede ser usada por %s para recibir y enviar mensajes "
-"cifrados."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "verificada"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-"Además, ha sido verificado que las claves coinciden con la clave del "
-"dispositivo de tu contacto."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "rechazada"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Esto significa que no puede ser usada por %s para descifrar tus mensajes, y "
-"tú no verás los mensajes cifrados con ella."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"No verás los mensajes cifrados desde el dispositivo de %s que usa esta "
-"clave. A la inversa, ese dispositivo ya no podrá descifrar tus mensajes."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Tu podrás intercambiar mensajes cifrados con el dispositivo de %s que usa "
-"esta clave."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Volver"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Gestionar"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Este contacto tiene un nuevo dispositivo"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "Decisión de confianza requerida para clave OMEMO"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "¿Añadiste un nuevo dispositivo para la cuenta %s?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "OMEMO por defecto"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "Habilitar el cifrado de OMEMO para nuevas conversaciones"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Cifrar para nuevos dispositivos"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Cifrar automáticamente los nuevos dispositivos desde este contacto."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Nuevas claves"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Las nuevas claves de cifrado de tus otros dispositivos serán aceptadas "
-"automáticamente."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "Este dispositivo"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "Otro dispositivo"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "Dispositivo"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Aceptada"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Rechazada"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Verificada"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Dispositivo nuevo"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"Cada dispositivo tiene su propia clave OMEMO. Los mensajes solamente se "
-"pueden descifrar por un dispositivo si se han cifrado para su clave. Los "
-"mensajes solamente se cifran para dispositivos aceptados."
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "Huellas digitales OMEMO"
-
-#~ msgid "Encryption"
-#~ msgstr "Encriptación"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d dispositivo OMEMO"
-#~ msgstr[1] "%d dispositivos OMEMO"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Automáticamente aceptar nuevas claves"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr ""
-#~ "Las nuevas claves de cifrados para este contacto serán aceptadas "
-#~ "automáticamente."
-
-#~ msgid "Own key"
-#~ msgstr "Mi clave"
-
-#~ msgid "Associated keys"
-#~ msgstr "Claves asociadas"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Claves inactivas"
-
-#~ msgid "Unused"
-#~ msgstr "Sin usar"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Tu huella digital"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Será generada en la primera conexión"
-
-#~ msgid "Your contact"
-#~ msgstr "Tu contacto"
-
-#~ msgid "Not matching"
-#~ msgstr "No coincide"
-
-#~ msgid "Matching"
-#~ msgstr "Coincide"
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "highlighted accordingly in the chat window."
-#~ msgstr ""
-#~ "Una vez confirmada, cualquier futuro mensaje enviado por %s usando esta "
-#~ "clave será resaltado en el ventana de conversación."
-
-#~ msgid ""
-#~ "Stop accepting this key during communication with its associated contact."
-#~ msgstr ""
-#~ "Dejar de aceptar esta clave durante la comunicación con este contacto."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact"
-#~ msgstr "Aceptar esta clave durante la comunicación con este contacto"
-
-#~ msgid ""
-#~ "This means it cannot be used by %s to receive messages, and any messages "
-#~ "sent by it will be ignored."
-#~ msgstr ""
-#~ "Esto significa que no puede ser usada por %s para recibir mensajes, y "
-#~ "cualquier mensaje enviado con esta clave será ignorado."
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "ignored and none of your messages will be readable using this key."
-#~ msgstr ""
-#~ "Una vez confirmado, cualquier futuro mensaje enviado por %s usando esta "
-#~ "clave será ignorado y ninguno de tus mensajes será legible usando esta "
-#~ "clave."
-
-#~ msgid ""
-#~ "Once confirmed this key will be usable by %s to receive and send messages."
-#~ msgstr ""
-#~ "Una vez confirmada esta clave será usable por %s para recibir y enviar "
-#~ "mensajes."
-
-#~ msgid ""
-#~ "When this contact adds new encryption keys to their account, "
-#~ "automatically accept them."
-#~ msgstr ""
-#~ "Cuando este contacto añada nuevas claves de cifrado a su cuenta, "
-#~ "automáticamente aceptarlas."
-
-#~ msgid ""
-#~ "When you add new encryption keys to your account, automatically accept "
-#~ "them."
-#~ msgstr ""
-#~ "Cuando añades nuevas claves de cifrado a tu cuenta, aceptarlas "
-#~ "automáticamente."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact."
-#~ msgstr "Aceptar esta clave durante la comunicación con este contacto."
-
-#~ msgid "Reject Key"
-#~ msgstr "Rechazar clave"
-
-#~ msgid "Accept Key"
-#~ msgstr "Aceptar clave"
-
-#~ msgid "Unknown device (0x%.8x)"
-#~ msgstr "Dispositivo (0x%.8x) desconocido"
-
-#~ msgid "Other devices"
-#~ msgstr "Otros dispositivos"
-
-#~ msgid "- None -"
-#~ msgstr "- Ninguno -"
-
-#~ msgid "OMEMO"
-#~ msgstr "OMEMO"
diff --git a/plugins/omemo/po/et.po b/plugins/omemo/po/et.po
deleted file mode 100644
index db8a9be8..00000000
--- a/plugins/omemo/po/et.po
+++ /dev/null
@@ -1,309 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2025-04-10 11:50+0000\n"
-"Language-Team: none\n"
-"Language: et\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: Weblate 5.11-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s kasutab seadet, mille suhtes puudub usaldus. Sa ei näe sõnumeid "
-"seadmetest, mida sa ei usalda."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Halda seadmeid"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s ei usalda seda seadet. See tähendab, et sa ilmselt ei näe kõiki sõnumeid."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Halda võtmeid"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Võrdle tähemärkide haaval seda sõrmejälge tollega, mida näidatakse teise "
-"osapoole seadmes."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Sõrmejäljed erinevad"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Sõrmejäljed on samad"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Katkesta"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Kinnita"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Verifitseeri võtmed"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"Kui kasutaja %s saadab tulevikus sõnumeid seadmest, mis kasutab seda "
-"krüptovõtit, siis need on ka vestlusaknas vastavalt märgitud."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Sõrmejäljed on erinevad"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Palun kontrolli, et sa kindlasti võrdleid õigeid sõrmejälgi. Kui sõrmejäljed "
-"siiski ei klapi, siis võib %s kasutajakonto olla rääderdatud ja sa peaksid "
-"sellise võtme lubamisest keelduma."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Verifitseeri võtme sõrmejälge"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Võrdle seda sõrmejälge tollega, mida näidatakse teise osapoole seadmes."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Keeldu võtme kasutamisest"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Sellega sa keelad krüptitud suhtluse sinu vestluspartneri seadmega, mis "
-"kasutab seda krüptovõtit."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Nõustu võtme kasutamisega"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Sellega sa lubad krüptitud suhtluse sinu vestluspartneri seadmega, mis "
-"kasutab seda krüptovõtit."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "See krüptovõti on praegu %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "tunnustatud"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"See tähendab, et %s võib teda kasutada krüptitud sõnumite saatmisel ja "
-"vastuvõtmisel."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "verifitseeritud"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-"Lisaks oled sa kontrollinud, et ta vastab krüptovõtmele teise osapoole "
-"seadmes."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "keelatud"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"See tähendab, et %s ei saa teda kasutada sinu krüptitud sõnumite lugemisel "
-"ning ka sina ei näe selle võtmega krüptitud sõnumeid."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"Sa ei näe %s krüptitud sõnumeid seadmetest, mis kasutavad seda krüptovõtit. "
-"Ja teistpidi pole ka seal seadmes võimalik lugeda sinu krüptitud sõnumeid."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Sa saad nüüd vahetada krüptitud sõnumeid %s seadmetega, kus on kasutusel see "
-"krüptovõti."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Tagasi"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Halda"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Sellel kasutajal on uusi seadmeid"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "Pead otsustama OMEMO-põhise usalduse osas"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Kas sa lisasid uue seadme kasutajakontole %s?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "OMEMO kasutamine vaikimisi"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "Kasuta OMEMO krüptimist uute vestluste puhul"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Krüpti uute seadmete jaoks"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Krüpti automaatselt selle kasutaja uute seadmete puhul."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Uued krüptovõtmed"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr "Sinu muude seadmete uute krüptovõtmetega nõustutakse automaatselt."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "See seade"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "Muu seade"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "Seade"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Tunnustatud"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Keelatud"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Verifitseeritud"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Uus seade"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"Igal seadmel on oma OMEMO-võti. Sõnumeid on võimalik dekrüptida vaid "
-"konkreetse sihtvõtme jaoks. Sõnumeid on võimalik krüptida vaid seadmete "
-"jaoks, millega oled nõustunud."
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "OMEMO võtmehaldus"
-
-#~ msgid "Encryption"
-#~ msgstr "Krüptimine"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d OMEMO seade"
-#~ msgstr[1] "%d OMEMO seadet"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Nõustu uute võtmetega automaatselt"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr "Sa nõustud selle kasutaja uute krüptovõtmetega automaatselt."
-
-#~ msgid "Own key"
-#~ msgstr "Oma krüptovõti"
-
-#~ msgid "Associated keys"
-#~ msgstr "Seotud krüptovõtmed"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Mitteaktiivsed krüptovõtmed"
-
-#~ msgid "Unused"
-#~ msgstr "Kasutamata"
diff --git a/plugins/omemo/po/eu.po b/plugins/omemo/po/eu.po
deleted file mode 100644
index f7347c29..00000000
--- a/plugins/omemo/po/eu.po
+++ /dev/null
@@ -1,401 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2022-01-17 17:56+0000\n"
-"Language-Team: Basque <https://hosted.weblate.org/projects/dino/plugin-omemo/"
-"eu/>\n"
-"Language: eu\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: Weblate 4.11-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s erabiltzaileak fidagarritasun gutxiko gailu bat erabiltzen egon da. Ez "
-"duzu mezurik ikusiko konfiantza ematen ez dizuten gailuengandik."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Gailuak kudeatu"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s erabiltzailea ez da gailu honetaz fidatzen. Honek mezu batzuk gal "
-"ditzakezula esan nahi du."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Gakoa kudeatu"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Hatz marka konparatu, hizkiz hizki, zure kontaktuaren gailuan ageri "
-"denarekin."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Hatz markak ez datoz bat"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Hatz markak bat datoz"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Utzi"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Baieztatu"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Gakoa egiaztatu"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"%s erabiltzaileak etorkizunean gako hau erabiltzen duen gailutik bidalitako "
-"mezuak nabarmenduko dira txat leihoan."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Hatz markak ez datoz bat"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Mesedez egiaztatu ezazu hatz marka egokia konparatzen ari zarela. Hatz "
-"markak bat ez badatoz baliteke %s(e)ren kontua arriskuan egotea eta gako hau "
-"ez onartzea kontuan hartu beharko zenuke."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Gakoaren hatz marka egiaztatu"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Konpara ezazu gako honen hatz marka kontaktuaren gailuan agertzen den hatz "
-"markarekin."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Gakoa ukatu"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Enkriptatutako komunikazioa blokeatu gako hau erabiltzen duen kontaktuaren "
-"gailuarekin."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Gakoa onartu"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Enkriptatutako komunikazioa baimendu gako hau erabiltzen duen kontaktuaren "
-"gailuarekin."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Gako hau %s dago une honetan."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "onartuta"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Horrek esan nahi du %s-ek erabil dezakeela mezu zifratuak jasotzeko eta "
-"bidaltzeko."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "egiaztatuta"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-"Gainera zure kontaktuaren gailuan ageri den gakoarekin bat datorrela "
-"egiaztatu da."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "ukatuta"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Honek esan nahi du %s erabiltzaileak ezin duela erabili zure mezuak "
-"deszifratzeko, eta zuk ez dituzula gako honekin enkriptatutako mezuak "
-"ikusiko."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"Ez dituzu ikusiko gako hau erabiltzen duen %s kontaktuaren gailutik "
-"igorritako mezuak. Era berean, hemendik aurrera gailu horrek ez da zure "
-"mezuak deszifratzeko gai izango."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Gako hau erabiltzen duen %s kontaktuaren gailuarekin enkriptatutako mezuak "
-"elkar-trukatzeko gai izango zara."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Atzera"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Kudeatu"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Kontaktu honek gailu berriak ditu"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "OMEMO konfiantza erabakia behar da"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Gailu berri gehitu duzu %s konturako?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Gako berriak"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Zure beste gailuen enkriptatze gako berriak onartuak izango dira "
-"automatikoki."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Onartuta"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Ukatuta"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Egiaztatuta"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr ""
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "OMEMO gakoen kudeaketa"
-
-#~ msgid "Encryption"
-#~ msgstr "Enkriptazioa"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "OMEMO gailu %d"
-#~ msgstr[1] "%d OMEMO gailu"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Gako berriak automatikoki onartu"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr ""
-#~ "Kontaktu honen enkriptatze gako berriak onartuak izango dira automatikoki."
-
-#~ msgid "Own key"
-#~ msgstr "Norberaren gakoa"
-
-#~ msgid "Associated keys"
-#~ msgstr "Lotutako gakoak"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Gako ez aktiboak"
-
-#~ msgid "Unused"
-#~ msgstr "Ez erabilita"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Norberaren hatz marka"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Lehen konexioan sortuko da"
-
-#~ msgid "Not matching"
-#~ msgstr "Ez datoz bat"
-
-#~ msgid "Matching"
-#~ msgstr "Bat datoz"
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "highlighted accordingly in the chat window."
-#~ msgstr ""
-#~ "Egiaztatu ondoren, %s(e)k gako honekin etorkizunean bidalitako mezu "
-#~ "guztiak behar bezala nabarmenduko dira txat leihoan."
-
-#~ msgid ""
-#~ "Stop accepting this key during communication with its associated contact."
-#~ msgstr ""
-#~ "Utzi gako hau onartzeari lotuta dagoen kontaktuarekin hitz egiten duzun "
-#~ "bitartean."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact"
-#~ msgstr ""
-#~ "Hasi gako hau onartzen lotuta dagoen kontaktuarekin hitz egiten duzun "
-#~ "bitartean"
-
-#~ msgid ""
-#~ "This means it cannot be used by %s to receive messages, and any messages "
-#~ "sent by it will be ignored."
-#~ msgstr ""
-#~ "Honek esan nahi du %s(e)k ezin duela gakoa mezuak jasotzeko erabili, eta "
-#~ "berak bidalitako edozein mezu alde batera utziko da."
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "ignored and none of your messages will be readable using this key."
-#~ msgstr ""
-#~ "Egiaztatu ondoren, etorkizunean %s(e)k gako hau erabiliz bidalitako "
-#~ "edozein mezu alde batera utziko da eta zure mezuetako bat ere ez da "
-#~ "irakurgarria izango gako hau erabiliz."
-
-#~ msgid ""
-#~ "Once confirmed this key will be usable by %s to receive and send messages."
-#~ msgstr ""
-#~ "Egiaztatu ondoren %s(e)k gako hau mezuak jaso eta bidaltzeko erabili ahal "
-#~ "izango du."
-
-#~ msgid ""
-#~ "When this contact adds new encryption keys to their account, "
-#~ "automatically accept them."
-#~ msgstr ""
-#~ "Kontaktu honek enkriptatzeko gako berriak bere kontura gehitzen "
-#~ "dituenean, automatikoki onartu."
-
-#~ msgid ""
-#~ "When you add new encryption keys to your account, automatically accept "
-#~ "them."
-#~ msgstr ""
-#~ "Zure kontura enkriptazio gako berriak gehitzen dituzunean, automatikoki "
-#~ "onartu."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact."
-#~ msgstr ""
-#~ "Hasi gako hau onartzen lotuta dagoen kontaktuarekin hitz giten duzun "
-#~ "bitartean."
-
-#~ msgid "Reject Key"
-#~ msgstr "Gakoa baztertu"
-
-#~ msgid "Accept Key"
-#~ msgstr "Gakoa onartu"
-
-#~ msgid "Unknown device (0x%.8x)"
-#~ msgstr "Gailu ezezaguna (0x%.8x)"
-
-#~ msgid "Other devices"
-#~ msgstr "Beste gailuak"
-
-#~ msgid "- None -"
-#~ msgstr "- Bat ere ez -"
diff --git a/plugins/omemo/po/fa.po b/plugins/omemo/po/fa.po
deleted file mode 100644
index 83d56040..00000000
--- a/plugins/omemo/po/fa.po
+++ /dev/null
@@ -1,312 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2025-12-05 20:00+0000\n"
-"Language-Team: none\n"
-"Language: fa\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: Weblate 5.15-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s از دستگاهی استفاده می‌کند که اعتبارش را تأیید نکرده‌اید، پیام‌ها از چنین "
-"دستگاه‌هایی قابل مشاهده نیستند."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "مدیریت دستگاه‌ها"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s اعتبار این دستگاه را تأیید نکرده است. این یعنی، ممکن است پیام‌هایی را "
-"دریافت نکنید/نکرده باشید."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "مدیریت کلید"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"اثرانگشت را با آنی که در دستگاه مخاطبتان است مقایسه کنید، کاراکتر به کاراکتر."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "اثرانگشت‌ها متفاوت‌اند"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "اثرانگشت‌ها تطابق دارند"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "لغو"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "تأیید"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "تأیید صحت کلید"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"پیام‌های ارسالی توسط %s از دستگاهی که از این کلید استفاده می‌کند، مطابق آن در "
-"پنجرهٔ گپ مشخص می‌شوند."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "اثرانگشت‌ها تطابق ندارند"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"لطفاً مطمئن شوید که در حال مقایسهٔ اثرانگشت صحیح هستید. اگه اثرانگشت‌ها تطابق "
-"نداشته باشند، ممکن است اطلاعات حساب %s لو رفته باشد و باید رد کردن این کلید "
-"را در نظر بگیرید."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "تأیید صحت اثرانگشت کلید"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"اثرانگشت این کلید را با اثرانگشت نمایش‌داده‌شده در دستگاه مخاطب مقایسه کنید."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "رد کردن کلید"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"ارتباط رمزگذاری‌شده را با دستگاهی که از این کلید استفاده می‌کند، مسدود کنید."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "پذیرش کلید"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"اجازهٔ ارتباط رمزگذاری‌شده را با دستگاهی که از این کلید استفاده می‌کند، بدهید."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "این کلید در حال حاضر %s است."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "پذیرفته شده"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"این یعنی %s می‌تواند از آن برای ارسال و دریافت پیام رمزگذاری‌شده استفاده کند."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "تأیید صحت شده"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr "به علاوه تأیید شده که با کلید دستگاه مخاطب تطابق دارد."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "رد شده"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"این یعنی %s نمی‌تواند با آن پیام‌های شما را رمزگشایی کند، و شما پیام‌های "
-"رمزگذاری‌شده با آن را نخواهید دید."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"شما پیام‌های رمزگذاری‌شده را از آن دستگاهِ %s که از این کلید استفاده می‌کند، "
-"نخواهید دید. از سوی دیگر، آن دستگاه نیز پس از این قادر به رمزگشایی پیام‌های "
-"شما نخواهد بود."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"شما قادر به تبادل پیام‌های رمزگذاری‌شده با آن دستگاهِ %s که از این کلید استفاده "
-"می‌کند، هستید."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "بازگشت"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "مدیریت"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "این مخاطب دستگاه‌های جدیدی دارد"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "تصمیم اعتبار اُمیمو لازم است"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "آیا برای حساب %s یک دستگاه جدید اضافه کرده‌اید؟"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "فعال بودن اُمیمو به صورت پیشفرض"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "فعال کردن رمزگذاری اُمیمو برای مکالمات جدید"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "رمزگذاری با دستگاه های جدید"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "رمزگذاری خودکار با دستگاه های جدید این مخاطب."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "کلیدهای جدید"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"کلیدهای رمزگذاری جدید از دستگاه‌های دیگرتان به طور خودکار پذیرفته می‌شوند."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "این دستگاه"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "دستگاه دیگر"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "دستگاه"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "پذیرفته شده"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "رد شده"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "تأیید صحت شده"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "دستگاه جدید"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"هر دستگاه کلید اُمیمو خود را دارد. پیام ها تنها زمانی می توانند توسط یک "
-"دستگاه رمزگشایی شوند که با کلید همان دستگاه رمزگذاری شده باشند. پیام ها فقط "
-"برای دستگاه های پذیرفته شده رمزگذاری می شوند."
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "مدیریت کلید اُمیمو"
-
-#~ msgid "Encryption"
-#~ msgstr "رمزگذاری"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d دستگاه OMEMO"
-#~ msgstr[1] "%d دستگاه OMEMO"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "پذیرش خودکار کلیدهای جدید"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr "کلیدهای جدید این مخاطب به طور خودکار پذیرفته می‌شوند."
-
-#~ msgid "Own key"
-#~ msgstr "کلید خود"
-
-#~ msgid "Associated keys"
-#~ msgstr "کلیدهای مرتبط"
-
-#~ msgid "Inactive keys"
-#~ msgstr "کلیدهای غیرفعال"
-
-#~ msgid "Unused"
-#~ msgstr "استفاده نشده"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "اثرانگشت خود"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "در اولین اتصال تولید خواهد شد"
diff --git a/plugins/omemo/po/fi.po b/plugins/omemo/po/fi.po
deleted file mode 100644
index decad88b..00000000
--- a/plugins/omemo/po/fi.po
+++ /dev/null
@@ -1,314 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2025-06-26 14:01+0000\n"
-"Language-Team: none\n"
-"Language: fi\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: Weblate 5.13-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s on käyttänyt laitetta, johon ei luoteta. Et näe viestejä laitteilta, "
-"joihin et luota."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Hallitse laitteita"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s ei luota tähän laitteeseen. Sen seurauksena viestejä saattaa jäädä "
-"puuttumaan."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Hallitse avainta"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Vertaa sormenjälkeä merkki kerrallaan vastapuolen laitteella näkyvään "
-"sormenjälkeen."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Sormenjäljet eroavat"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Sormenjäljet vastaavat"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Peru"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Vahvista"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Vahvista avain"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"Tulevat viestit käyttäjän %s laitteelta, joka käyttää tätä avainta, "
-"korostetaan asianmukaisesti keskusteluikkunassa."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Sormenjäljet eivät vastaa toisiaan"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Varmista, että vertaat oikeita sormenjälkiä. Jos sormenjäljet eivät täsmää, "
-"käyttäjän %s tili saattaa olla vaarantunut, ja sinun tulisi hylätä tämä "
-"avain."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Vahvista avaimen sormenjälki"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Vertaa tämän avaimen sormenjälkeä vastapuolen laitteella näkyvään "
-"sormenjälkeen."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Hylkää avain"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Estä salattu yhteydenpito käyttäjän tätä avainta käyttävän laitteen kanssa."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Hyväksy avain"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Salli salattu yhteydenpito käyttäjän tätä avainta käyttävän laitteen kanssa."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Tämä avain on tällä hetkellä %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "hyväksytty"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Se tarkoittaa, että %s voi käyttää avainta salattujen viestien "
-"vastaanottamiseen ja lähettämiseen."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "vahvistettu"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr "Lisäksi sen on vahvistettu vastaavan vastapuolen laitteen avainta."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "hylätty"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Se tarkoittaa, ettei %s voi käyttää avainta viestien salauksen purkamiseksi, "
-"etkä sinä näe tällä avaimella salattuja viestejä."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"Et näe käyttäjän %s laitteelta, joka käyttää tätä avainta, lähetettyjä "
-"salattuja viestejä. Vastavuoroisesti kyseinen laite ei pysty enää purkamaan "
-"viestiesi salausta."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Pystyt viestimään salatuilla viesteillä käyttäjän %s tätä avainta käyttävän "
-"laitteen kanssa."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Takaisin"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Hallitse"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Tällä henkilöllä on uusia laitteita"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "OMEMO-luottamuspäätös vaaditaan"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Lisäsitkö uuden laitteen tilille %s?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "OMEMO oletuksena"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "Käytä OMEMO-salausta uusissa keskusteluissa"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Salaa uusille laitteille"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Salaa automaattisesti tämän henkilön uusille laitteille."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Uudet avaimet"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr "Uudet salausavaimet muilta laitteiltasi hyväksytään automaattisesti."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "Tämä laite"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "Toinen laite"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "Laite"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Hyväksytty"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Hylätty"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Vahvistettu"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Uusi laite"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"Jokaisella laitteella on oma OMEMO-avain. Viestien salauksen voi purkaa "
-"laitteella vain jos ne käyttävät sen avainta. Viestit salataan vain "
-"hyväksytyille laitteille."
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "OMEMO-avainhallinta"
-
-#~ msgid "Encryption"
-#~ msgstr "Salaus"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d OMEMO-laite"
-#~ msgstr[1] "%d OMEMO-laitetta"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Hyväksy uudet avaimet automaattisesti"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr "Uudet salausavaimet tältä henkilöltä hyväksytään automaattisesti."
-
-#~ msgid "Own key"
-#~ msgstr "Oma avain"
-
-#~ msgid "Associated keys"
-#~ msgstr "Liittyvät avaimet"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Epäaktiiviset avaimet"
-
-#~ msgid "Unused"
-#~ msgstr "Käyttämätön"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Oma sormenjälki"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Luodaan ensimmäisellä yhdistyskerralla"
diff --git a/plugins/omemo/po/fr.po b/plugins/omemo/po/fr.po
deleted file mode 100644
index 531149be..00000000
--- a/plugins/omemo/po/fr.po
+++ /dev/null
@@ -1,394 +0,0 @@
-# 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.
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2025-12-26 15:00+0000\n"
-"Language-Team: French <https://hosted.weblate.org/projects/dino/plugin-omemo/"
-"fr/>\n"
-"Language: fr\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: Weblate 5.15.1\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s a utilisé un appareil inconnu. Vous ne verrez pas les messages provenant "
-"d'appareils en lesquels vous n’avez pas confiance."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Gérer les appareils"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s n’accorde pas sa confiance à cet appareil. Cela signifie que vous manquez "
-"peut-être des messages."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Gérer la clé"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Comparez l’empreinte, lettre par lettre, avec celle affichée sur l'appareil "
-"de votre contact."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "L’empreinte ne correspond pas"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "L’empreinte correspond"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Annuler"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Confirmer"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Vérifier la clé"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"Les prochains messages envoyés par %s depuis l'appareil utilisant cette clé "
-"seront mis en valeur dans la fenêtre de discussion."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Les empreintes ne correspondent pas"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Veuillez vérifier que vous comparez la bonne empreinte. Si les empreintes ne "
-"correspondent pas, le compte de %s pourrait être compromis et vous devriez "
-"envisager de rejeter cette clé."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Vérifier l’empreinte de cette clé"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Comparez cette empreinte avec celle affichée sur l'appareil du contact."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Rejeter cette clé"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Bloquer les communications chiffrées avec l'appareil du contact qui utilise "
-"cette clé."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Accepter la clé"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Autoriser les communications chiffrées avec l'appareil du contact qui "
-"utilise cette clé."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Cette clé est actuellement %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "acceptée"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Cela signifie qu’elle peut être utilisée par %s pour recevoir et envoyer des "
-"messages."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "vérifiée"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-"De plus, vous avez précédemment vérifié que cette clé coïncide avec celle de "
-"l'appareil de ce contact."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "rejetée"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Cela signifie qu’elle ne peut pas être utilisée par %s pour déchiffrer vos "
-"messages, et que vous ne verrez pas les messages chiffrés avec."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"Vous ne verrez pas les messages de %s provenant de l'appareil qui utilise "
-"cette clé. En retour, ce client ne pourra plus déchiffrer vos messages."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Vous pourrez échanger des messages chiffrés avec l'appareil de %s qui "
-"utilise cette clé."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Retour"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Gérer"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Ce contact a de nouveaux appareils"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "Décision de confiance OMEMO requise"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Avez-vous ajouté un nouvel appareil pour le compte %s ?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "OMEMO par défaut"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "Activer le chiffrement OMEMO pour les nouvelles discussions"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Chiffrer pour les nouveaux appareils"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Chiffrer automatiquement pour les nouveaux appareils de ce contact."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Nouvelles clés"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Les nouvelles clés de chiffrement de vos autres appareils seront acceptées "
-"automatiquement."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "Cet appareil"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "Autre appareil"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "Appareil"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Acceptée"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Rejetée"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Vérifiée"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Nouvel appareil"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"Chaque appareil a sa propre clé OMEMO. Les messages ne peuvent être "
-"déchiffrés par un appareil que s’ils sont chiffrés pour sa clé. Les messages "
-"sont chiffrés uniquement pour les appareils acceptés."
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "Gestion des clés OMEMO"
-
-#~ msgid "Encryption"
-#~ msgstr "Chiffrement"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d appareil OMEMO"
-#~ msgstr[1] "%d appareils OMEMO"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Accepter automatiquement les nouvelles clés"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr ""
-#~ "Les nouvelles clés de chiffrement de ce contact seront acceptées "
-#~ "automatiquement."
-
-#~ msgid "Own key"
-#~ msgstr "Clé publique personnelle"
-
-#~ msgid "Associated keys"
-#~ msgstr "Clés associées"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Clés inactives"
-
-#~ msgid "Unused"
-#~ msgstr "Inutilisée"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Empreinte publique"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Sera générée lors de la première connexion"
-
-#~ msgid "Your contact"
-#~ msgstr "Votre contact"
-
-#~ msgid "Not matching"
-#~ msgstr "Ne correspond pas"
-
-#~ msgid "Matching"
-#~ msgstr "Correspond"
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "highlighted accordingly in the chat window."
-#~ msgstr ""
-#~ "Après confirmation, tout futur message envoyé par %s utilisant cette clé "
-#~ "sera surligné dans la fenêtre de conversation."
-
-#~ msgid ""
-#~ "Stop accepting this key during communication with its associated contact."
-#~ msgstr ""
-#~ "Arrêter d'accepter cette clé durant la communication avec son contact "
-#~ "associé."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact"
-#~ msgstr "Accepter cette clé durant la communication avec son contact associé"
-
-#~ msgid ""
-#~ "This means it cannot be used by %s to receive messages, and any messages "
-#~ "sent by it will be ignored."
-#~ msgstr ""
-#~ "Cela signifie qu'elle ne peut pas être utilisée par %s pour recevoir des "
-#~ "messages, et que les messages envoyés seront ignorés."
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "ignored and none of your messages will be readable using this key."
-#~ msgstr ""
-#~ "Après confirmation, tout futur message envoyé par %s utilisant cette clé "
-#~ "sera ignoré et vos messages ne seront pas lisibles en utilisant cette clé."
-
-#~ msgid ""
-#~ "Once confirmed this key will be usable by %s to receive and send messages."
-#~ msgstr ""
-#~ "Après confirmation, cette clé sera utilisable par %s pour recevoir et "
-#~ "envoyer des messages."
-
-#~ msgid ""
-#~ "When this contact adds new encryption keys to their account, "
-#~ "automatically accept them."
-#~ msgstr ""
-#~ "Quand ce contact ajoute une nouvelle clé de chiffrement à son compte, "
-#~ "l'accepter automatiquement."
-
-#~ msgid ""
-#~ "When you add new encryption keys to your account, automatically accept "
-#~ "them."
-#~ msgstr ""
-#~ "Accepter automatiquement les nouvelles clés de chiffrements que vous "
-#~ "ajoutez à votre compte."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact."
-#~ msgstr ""
-#~ "Accepter cette clé durant la communication avec son contact associé."
-
-#~ msgid "Unknown device (0x%.8x)"
-#~ msgstr "Périphérique inconnu (0x%.8x)"
-
-#~ msgid "Other devices"
-#~ msgstr "Autres périphériques"
-
-#~ msgid "- None -"
-#~ msgstr "- Aucun -"
diff --git a/plugins/omemo/po/fur.po b/plugins/omemo/po/fur.po
deleted file mode 100644
index 527d9018..00000000
--- a/plugins/omemo/po/fur.po
+++ /dev/null
@@ -1,267 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2026-03-24 17:09+0000\n"
-"Language-Team: none\n"
-"Language: fur\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: Weblate 5.17-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"Chel pandolo di %s al doprave un tramai che no si fidin. No tu iodarâs "
-"mesagjos di tramais che no si po fidasi."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Gjestis i tramais"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"Chel pandolo di %s no si fide di te. Cuindi tu podaresis pierditi mesagjos."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Dai po gjestis las clâs"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Controle las improntes digitâl, ogni latare, cun chês dal contat sul tramai."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Improntes difarent gnogno"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Brao, las improntes son compagnes"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Lasce sta"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Va ben"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Controlant la clâf"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"I mesagjos di chel taconele di %s sal dopre il stes tramai cun chist clâf a "
-"saran evidensiâs."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Las improntes no son compagnes totoloto"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Controle ben taconele. Las improntes no coincidin, chel borson di %s al "
-"podares no sei lui e tu varesis di mandalu affnacûl lui e la so clâf."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Controle la clâf dalas improntes digitâl"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr "Controle las improntes di chiste clâf cun chês tai contas dal tramai."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Mande affnacûl lui e la clâf"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr "Smet di cifrà la comunicasion cul pandolo cal dopre chiste clâf."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Va ben, dami la clâf"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr "Permet la comunicasion cifrade cul pandolo cal dopre chiste clâf."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "La clâf a è %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "acetade"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr "A voul dì ca si po doprà %s par ricevi e mandà mesagjos cifrâs."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "controlade"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr "In pui si è controlâtche la clâf a sevi che dal contat sul tramai."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "mandade indavour"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Al voul dì che %s nola po doprà par decifrà i toi mesagjos, e no tu iodarâs "
-"i mesagjos cifrâs cun che lì."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"No tu iodarâs i mesagjos cifrâs di %s cal dopre chiste clâf. E lui nol "
-"capirà un cai di ce che tu i mandis."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Tu podarâs mandà mesagjos cifrâs cul tramai di %s cal dopre chiste clâf."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Indavour"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Gjestis"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Chist gnogno al à un gnouf tramai"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "Bisugne acetà o no OMEMO"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Atu giontât un gnof tramai par il profîl %s?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "OMEMO tal met io"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "Permet cifradure OMEMO par las gnoves conversasions"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Cifre par i gnoufs tramais"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Cifres su dut par chistu taconele."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Gnoves clâs"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Las gnoves clâs par la cifradure di atris tramais a saran acetades cence "
-"diti un caj."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "Chist tramai"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "Atri tramai"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "Tramai"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "acetade"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Mandât affancûl"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "controlade"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Gnouf tramai"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"Ogni tramai al'à la so clâf OMEMO. I mesagjos a podin sei decifrâs nome dal "
-"tramai cun che clâf. E nome su tramais acetâs."
diff --git a/plugins/omemo/po/gl.po b/plugins/omemo/po/gl.po
deleted file mode 100644
index 6e0757d1..00000000
--- a/plugins/omemo/po/gl.po
+++ /dev/null
@@ -1,398 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2025-04-10 11:50+0000\n"
-"Language-Team: Galician <https://hosted.weblate.org/projects/dino/plugin-"
-"omemo/gl/>\n"
-"Language: gl\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: Weblate 5.11-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s estivo utilizando un dispositivo non verificado. Non verás mensaxes "
-"procedentes de dispositivos nos que non confiaches."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Xestionar dispositivos"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s non mostrou confianza neste dispositivo. Porén, poderías botar a faltar "
-"algunha mensaxe."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Xestionar Chave"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Comparar impresión dixital, caracter a caracter, coa mostrada no dispositivo "
-"do teu contacto."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "As impresións dixitais son diferentes"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "As impresións coinciden"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Confirmar"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Verificar chave"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"As mensaxes futuras enviadas por %s desde o dispositivo que usa esta chave "
-"será resaltadas na xanela da conversa."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Non coinciden as impresións dixitais"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Comproba que estás comparando a impresión correcta. Se as impresións "
-"dixitais non coinciden, a conta de %s podería estar comprometida e deberías "
-"considerar rexeitar esta chave."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Verificar a impresión dixital da chave"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Compara a impresión dixital desta chave coa impresión mostrada no "
-"dispositivo do contacto."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Rexeitar chave"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Bloquear a comunicación cifrada co dispositivo do contacto que usa esta "
-"chave."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Aceptar chave"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Permitir a comunicación cifrada co dispositivo do contacto que usa esta "
-"chave."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Esta chave está actualmente %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "aceptada"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Esto significa que pode ser utilizada por %s para recibir e enviar mensaxes "
-"cifradas."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "verficada"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-"Adicionalmente foi verificada e coincide coa chave no dispositivo do "
-"contacto."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "rexeitada"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Esto significa que non pode ser usada por %s para descifrar as túas "
-"mensaxes, e non verás as mensaxes cifradas con ela."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"Non verás as mensaxes cifradas desde o dispositivo de %s que usa esta chave. "
-"De xeito recíproco, ese dispositivo non poderá descifrar as túas."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Poderás intercambiar mensaxes cifradas co dispositivo de %s que usa esta "
-"chave."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Atrás"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Xestionar"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Este contacto ten novos dispositivos"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "Precisa decidir sobre a confianza OMEMO"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Engadiches un novo dispositivo para a conta %s?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "OMEMO por defecto"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "Activar cifraxe OMEMO para as novas conversas"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Cifrar para novos dispositivos"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Cifrar automaticamente para os novos dispositivos de este contacto."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Novas chaves"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Aceptaranse de xeito automático novas chaves de cifraxe do teus dispositivos."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "Este dispositivo"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "Outro dispositivo"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "Dispositivo"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Aceptada"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Rexeitada"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Verificada"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Novo dispositivo"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"Cada dispositivo ten a súa propia clave OMEMO. As mensaxes só se poden "
-"descifrar se están cifradas coas claves deles. As mensaxes só se cifran para "
-"os dispositivos aceptados."
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "Xestión das chaves OMEMO"
-
-#~ msgid "Encryption"
-#~ msgstr "Cifraxe"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d dispositivo OMEMO"
-#~ msgstr[1] "%d dispositivos OMEMO"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Aceptar automáticamente novas chaves"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr ""
-#~ "Serán aceptadas de xeito automático novas chaves de cifraxe deste "
-#~ "contacto."
-
-#~ msgid "Own key"
-#~ msgstr "Chave propia"
-
-#~ msgid "Associated keys"
-#~ msgstr "Chaves asociadas"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Chaves non activas"
-
-#~ msgid "Unused"
-#~ msgstr "Sen usar"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Impresión dixital propia"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Crearase na primeira conexión"
-
-#~ msgid "Your contact"
-#~ msgstr "O teu contacto"
-
-#~ msgid "Not matching"
-#~ msgstr "Non coinciden"
-
-#~ msgid "Matching"
-#~ msgstr "Coinciden"
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "highlighted accordingly in the chat window."
-#~ msgstr ""
-#~ "Unha vez confirmada, as futuras mensaxes enviadas por %s utilizando esta "
-#~ "chave será resaltada acorde na ventá de conversa."
-
-#~ msgid ""
-#~ "Stop accepting this key during communication with its associated contact."
-#~ msgstr ""
-#~ "Deixar de aceptar esta chave durante a comunicación co contacto asociado "
-#~ "a ela."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact"
-#~ msgstr ""
-#~ "Comezar aceptando esta chave durante a comunicación co seu contacto "
-#~ "asociado"
-
-#~ msgid ""
-#~ "This means it cannot be used by %s to receive messages, and any messages "
-#~ "sent by it will be ignored."
-#~ msgstr ""
-#~ "Esto significa que non pode ser utilizada por %s para recibir mensaxes, e "
-#~ "calquera mensaxe enviada con ela será ignorada."
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "ignored and none of your messages will be readable using this key."
-#~ msgstr ""
-#~ "Unha vez confirmada, calquera mensaxe futura enviada por %s utilizando "
-#~ "esta chave será ignorada e ningunha das súas mensaxes serán lexibles "
-#~ "usando esta chave."
-
-#~ msgid ""
-#~ "Once confirmed this key will be usable by %s to receive and send messages."
-#~ msgstr ""
-#~ "Unha vez confirmada esta chave será utilizable por %s para recibir e "
-#~ "enviar mensaxes."
-
-#~ msgid ""
-#~ "When this contact adds new encryption keys to their account, "
-#~ "automatically accept them."
-#~ msgstr ""
-#~ "Cando este contacto engade novas chaves de cifrado a súa conta, aceptalas "
-#~ "automáticamente."
-
-#~ msgid ""
-#~ "When you add new encryption keys to your account, automatically accept "
-#~ "them."
-#~ msgstr ""
-#~ "Cando engades novas chaves de cifrado a túa conta, aceptalas "
-#~ "automáticamente."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact."
-#~ msgstr ""
-#~ "Comezar a aceptar esta chave nas comunicacións co contacto asociado a ela."
-
-#~ msgid "Unknown device (0x%.8x)"
-#~ msgstr "Dispositivo descoñecido (0x%.8x)"
-
-#~ msgid "Other devices"
-#~ msgstr "Outros dispositivos"
-
-#~ msgid "- None -"
-#~ msgstr "-Nada-"
diff --git a/plugins/omemo/po/hi.po b/plugins/omemo/po/hi.po
deleted file mode 100644
index 34e2cd1d..00000000
--- a/plugins/omemo/po/hi.po
+++ /dev/null
@@ -1,248 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Language-Team: none\n"
-"Language: hi\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr ""
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr ""
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr ""
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr ""
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr ""
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr ""
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
diff --git a/plugins/omemo/po/hu.po b/plugins/omemo/po/hu.po
deleted file mode 100644
index 43e135ab..00000000
--- a/plugins/omemo/po/hu.po
+++ /dev/null
@@ -1,330 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2025-04-10 11:50+0000\n"
-"Language-Team: Hungarian <https://hosted.weblate.org/projects/dino/plugin-"
-"omemo/hu/>\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: Weblate 5.11-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s nem megbízható eszközt használt. Nem fogja látni az olyan eszközökről "
-"érkező üzeneteket, amelyekben nem bízik meg."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Eszközök kezelése"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s nem bízik meg ebben az eszközben. Ez azt jelenti, hogy lemaradhat néhány "
-"üzenetről."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Kulcs kezelése"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Hasonlítsa össze az ujjlenyomatot karakterről karakterre a partnere eszközén "
-"láthatóval."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Az ujjlenyomatok eltérnek"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Az ujjlenyomatok egyeznek"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Mégse"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Megerősítés"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Kulcs ellenőrzése"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"%s által az ezt a kulcsot használó eszközről küldött jövőbeli üzenetek ennek "
-"megfelelően lesznek kiemelve a csevegésablakban."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Az ujjlenyomatok nem egyeznek"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Ellenőrizze, hogy a megfelelő ujjlenyomatot hasonlítja-e össze. Ha az "
-"ujjlenyomatok nem egyeznek, akkor %s fiókja veszélybe kerülhetett, és "
-"fontolóra kellene vennie a kulcs elutasítását."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Kulcs ujjlenyomatának ellenőrzése"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Hasonlítsa össze ennek a kulcsnak az ujjlenyomatát a partner eszközén "
-"megjelenített ujjlenyomattal."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Kulcs elutasítása"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"A titkosított kommunikáció tiltása a partner eszközével, amely ezt a kulcsot "
-"használja."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Kulcs elfogadása"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"A titkosított kommunikáció engedélyezése a partner eszközével, amely ezt a "
-"kulcsot használja."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Ez a kulcs jelenleg %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "elfogadott"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Ez azt jelenti, hogy %s használhatja titkosított üzenetek fogadásához és "
-"küldéséhez."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "ellenőrzött"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr "Ezenkívül ellenőrizve lett, hogy a kulcs egyezik a partner eszközén."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "elutasított"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Ez azt jelenti, hogy %s nem használhatja az Ön üzeneteinek visszafejtésére, "
-"és Ön nem fogja látni az azzal titkosított üzeneteket."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"Nem fogja látni %s azon eszközéről érkező titkosított üzeneteket, amely ezt "
-"a kulcsot használja. Fordítva, a másik eszköz nem lesz képes többé "
-"visszafejteni az Ön üzeneteit."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Ön képes lesz titkosított üzeneteket váltani %s azon eszközével, amely ezt a "
-"kulcsot használja."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Vissza"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Kezelés"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Ennek a partnernek új eszközei vannak"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "OMEMO megbízhatósági döntés szükséges"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Hozzáadott egy új eszközt a(z) %s fiókhoz?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "OMEMO alapértelmezetten"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "OMEMO-titkosítás engedélyezése az új beszélgetésekhez"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Titkosítás az új eszközökre"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Automatikus titkosítás az ettől a partnertől származó új eszközökre."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Új kulcsok"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Az egyéb eszközeitől származó új titkosítási kulcsok automatikusan el "
-"lesznek fogadva."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "Ez az eszköz"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "Másik eszköz"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "Eszköz"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Elfogadva"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Elutasítva"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Ellenőrizve"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Új eszköz"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"Minden eszköznek saját OMEMO-kulcsa van. Egy eszköz csak akkor tudja "
-"visszafejteni az üzeneteket, ha azok a saját kulcsával lettek titkosítva. Az "
-"üzenetek csak az elfogadott eszközökre vannak titkosítva."
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "OMEMO kulcskezelés"
-
-#~ msgid "Encryption"
-#~ msgstr "Titkosítás"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d OMEMO-eszköz"
-#~ msgstr[1] "%d OMEMO eszköz"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Új kulcsok automatikus elfogadása"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr ""
-#~ "Az ettől a partnertől származó új titkosítási kulcsok automatikusan el "
-#~ "lesznek fogadva."
-
-#~ msgid "Own key"
-#~ msgstr "Saját kulcs"
-
-#~ msgid "Associated keys"
-#~ msgstr "Hozzárendelt kulcsok"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Inaktív kulcsok"
-
-#~ msgid "Unused"
-#~ msgstr "Nem használt"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Saját ujjlenyomat"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Az első kapcsolódáskor lesz előállítva"
-
-#~ msgid "Unknown device (0x%.8x)"
-#~ msgstr "Ismeretlen eszköz (0x%.8x)"
-
-#~ msgid "Other devices"
-#~ msgstr "További eszközök"
-
-#~ msgid "- None -"
-#~ msgstr "- Nincs -"
diff --git a/plugins/omemo/po/id.po b/plugins/omemo/po/id.po
deleted file mode 100644
index f2dcbf7d..00000000
--- a/plugins/omemo/po/id.po
+++ /dev/null
@@ -1,318 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2026-02-28 11:09+0000\n"
-"Language-Team: none\n"
-"Language: id\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 5.16.1-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s telah menggunakan perangkat tidak dikenal. Anda tidak akan melihat pesan "
-"dari perangkat yang tidak Anda kenal."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Atur perangkat"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s tidak mengenali perangkat ini. Artinya, Anda mungkin kehilangan pesan."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Atur kunci"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Bandingkan sidik jari karakter demi karakter, dengan yang tampil di "
-"perangkat kontak Anda."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Sidik jari berbeda"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Sidik jari cocok"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Batal"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Konfirmasi"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Verifikasi kunci"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"Pesan mendatang yang dikirim oleh %s dari perangkat yang menggunakan kunci "
-"ini akan ditandai di halaman percakapan."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Sidik jari tidak cocok"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Harap Anda memverifikasi sidik jari dengan benar. Jika sidik jari tidak "
-"cocok, akun %s mungkin telah disusupi dan pertimbangkan untuk menolak kunci "
-"ini."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Verifikasi sidik jari kunci"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Bandingkan sidik jari kunci ini dengan sidik jari yang ditampilkan perangkat "
-"kontak."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Tolak kunci"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Blokir komunikasi terenkripsi dengan perangkat kontak yang menggunakan kunci "
-"ini."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Terima kunci"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Izinkan komunikasi terenkripsi dengan perangkat kontak yang menggunakan "
-"kunci ini."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Status kunci saat ini %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "diterima"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Artinya dapat digunakan oleh %s untuk menerima dan mengirim pesan "
-"terenkripsi."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "Terverifikasi"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr "Telah terverifikasi dengan mencocokkan kunci pada perangkat kontak."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "ditolak"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Artinya tidak dapat digunakan oleh %s untuk menguraikan pesan Anda, dan Anda "
-"tidak akan melihat pesan dienkripsi dengannya."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"Anda tidak akan melihat pesan terenkripsi dari perangkat %s yang menggunakan "
-"kunci ini. Sebaliknya, perangkat itu tidak dapat lagi menguraikan pesan Anda."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Anda dapat bertukar pesan terenkripsi dengan perangkat %s yang menggunakan "
-"kunci ini."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Kembali"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Pengaturan"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Kontak memiliki perangkat baru"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "Memerlukan persetujuan atas OMEMO"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Apakah Anda menambahkan perangkat baru untuk akun %s?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "OMEMO secara default"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "Aktifkan enkripsi OMEMO untuk percakapan baru"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Enkripsi ke perangkat baru"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Enkripsi secara otomatis ke perangkat baru dari kontak ini."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Kunci baru"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Kunci enkripsi baru dari perangkat Anda yang lain akan diterima secara "
-"otomatis."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "Perangkat ini"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "Perangkat lain"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "Perangkat"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Diterima"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Ditolak"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Terverifikasi"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Perangkat baru"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"Setiap perangkat memiliki kunci OMEMO-nya sendiri. Pesan hanya dapat "
-"didekripsi oleh perangkat jika dienkripsi menggunakan kuncinya. Pesan hanya "
-"dienkripsi ke perangkat yang telah diterima."
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "Pengaturan kunci OMEMO"
-
-#~ msgid "Encryption"
-#~ msgstr "Enkripsi"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d OMEMO perangkat"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Otomatis mengkonfirmasi kunci baru"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr "Kunci enkripsi baru dari kontak ini akan diterima secara otomatis."
-
-#~ msgid "Own key"
-#~ msgstr "Kunci milik sendiri"
-
-#~ msgid "Associated keys"
-#~ msgstr "Kunci terkait"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Kunci non-aktif"
-
-#~ msgid "Unused"
-#~ msgstr "Tidak terpakai"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Sidik jari sendiri"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Akan dibuat pada koneksi pertama"
-
-#~ msgid "Your contact"
-#~ msgstr "Kontak anda"
diff --git a/plugins/omemo/po/ie.po b/plugins/omemo/po/ie.po
deleted file mode 100644
index 945956fc..00000000
--- a/plugins/omemo/po/ie.po
+++ /dev/null
@@ -1,360 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2021-03-01 10:50+0000\n"
-"Language-Team: none\n"
-"Language: ie\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: Weblate 4.5\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Gerer aparates"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr "%s ne have fide por ti-ci aparate. Vu fórsan manca alcun missages."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Gerer li clave"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Cuidosi compara li fingre-print con ti que es monstrat sur li aparate de vor "
-"contacte."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Fingre-printes difere"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Fingre-printes es identic"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Anullar"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Confirmar"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Verificar li clave"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Fingre-printes ne es egal"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Ples verificar que vu compara li just fingre-print. Si fingre-printes ne es "
-"egal, li conto de %s posse esser compromettet e vu deve rejecter ti-ci clave."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Verificar li fingre-print"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Comparar li fingre-print de ti-ci clave con clave que es monstrat sur li "
-"aparate del contacte."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Rejecter li clave"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Blocar ciffrat communication con li aparate del contacte quel usa ti-ci "
-"clave."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Acceptar li clave"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Permisser ciffrat communication con li aparate del contacte quel usa ti-ci "
-"clave."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Ti-ci clave es actualmen %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "acceptat"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr "To significa que %s posse usar it por reciver e inviar missages."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "verificat"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-"Adplu, it ha esset verificat corresponder con li clave sur li aparate del "
-"contacte."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "rejectet"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"To significa que %s posse usar it por deciffrar vor missages e que vu ne va "
-"vider li missages ciffrat med it."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Retro"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Gerer"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Ti-ci contacte have nov aparates"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "Un decision de confidentie OMEMO es besonat"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Esque vu ha adjuntet un nov aparate por li conto %s?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Nov claves"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Nov claves de ciffration de vor altri aparates va esser acceptat "
-"automaticmen."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Acceptat"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Rejectet"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Verificat"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr ""
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "Gerentie de claves OMEMO"
-
-#~ msgid "Encryption"
-#~ msgstr "Ciffration"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d aparate OMEMO"
-#~ msgstr[1] "%d aparates OMEMO"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Automaticmen acceptar nov claves"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr ""
-#~ "Nov claves de ciffration de ti-ci contacte va esser acceptat automaticmen."
-
-#~ msgid "Own key"
-#~ msgstr "Propri clave"
-
-#~ msgid "Associated keys"
-#~ msgstr "Associat claves"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Ínactiv claves"
-
-#~ msgid "Unused"
-#~ msgstr "Ínusat"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Propri fingre-print"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Va esser generat pos li prim conexion"
-
-#~ msgid "Not matching"
-#~ msgstr "Ne corresponde"
-
-#~ msgid "Matching"
-#~ msgstr "Corresponde"
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "highlighted accordingly in the chat window."
-#~ msgstr ""
-#~ "Pos li confirmation, omni futuri missages inviat per %s con ti-ci clave "
-#~ "va esser colorat correspondmen in li fenestre de conversation."
-
-#~ msgid ""
-#~ "Stop accepting this key during communication with its associated contact."
-#~ msgstr ""
-#~ "Cessar acceptar ti-ci clave por communication con su associat contacte."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact"
-#~ msgstr "Acceptar ti-ci clave por communication con su associat contacte"
-
-#~ msgid ""
-#~ "This means it cannot be used by %s to receive messages, and any messages "
-#~ "sent by it will be ignored."
-#~ msgstr ""
-#~ "To significa que %s ne posse usar it por reciver missages, e su missages "
-#~ "inviat va esser ignorat."
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "ignored and none of your messages will be readable using this key."
-#~ msgstr ""
-#~ "Pos confirmation, omni futuri missages inviat per %s con ti-ci clave va "
-#~ "esser ignorat, e null vor missages va esser leibil con ti-ci clave."
-
-#~ msgid ""
-#~ "Once confirmed this key will be usable by %s to receive and send messages."
-#~ msgstr ""
-#~ "Pos confirmation, ti-ci clave va esser usabil per %s por reciver e inviar "
-#~ "missages."
-
-#~ msgid ""
-#~ "When this contact adds new encryption keys to their account, "
-#~ "automatically accept them."
-#~ msgstr ""
-#~ "Quande ti-ci contacte adjunte nov ciffre-claves a su conto, acceptar les "
-#~ "automaticmen."
-
-#~ msgid ""
-#~ "When you add new encryption keys to your account, automatically accept "
-#~ "them."
-#~ msgstr ""
-#~ "Quande vu adjunte nov ciffre-claves a vor conto, acceptar les "
-#~ "automaticmen."
diff --git a/plugins/omemo/po/isv.po b/plugins/omemo/po/isv.po
deleted file mode 100644
index 477cace6..00000000
--- a/plugins/omemo/po/isv.po
+++ /dev/null
@@ -1,254 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2025-10-31 09:02+0000\n"
-"Language-Team: none\n"
-"Language: isv\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: Weblate 5.14.1-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s je upotrěbil(-a) nenadežny ustroj. Vy ne budete viděti soobčenja od "
-"ustrojev, ktore ne imajut dověrjenje."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Upravjenje ustrojami"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s ne dověrjaje tomu ustroju. To označaje, že vy možete ne viděti něktore "
-"soobčenja."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Upravjenje ključem"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Anulovati"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Potvrditi"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Potvrditi ključ"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Prijeti ključ"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Tutoj ključ v tutom momentu je %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr ""
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr ""
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr ""
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr ""
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr ""
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
diff --git a/plugins/omemo/po/it.po b/plugins/omemo/po/it.po
deleted file mode 100644
index 9d0aea21..00000000
--- a/plugins/omemo/po/it.po
+++ /dev/null
@@ -1,405 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: dino-omemo-0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2020-11-25 11:28+0000\n"
-"Language-Team: Italian <https://hosted.weblate.org/projects/dino/plugin-"
-"omemo/it/>\n"
-"Language: it\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: Weblate 4.4-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s sta usando un dispositivo non verificato. Non vedrai messaggi inviati da "
-"un dispositivo che non hai verificato."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Gestisci dispositivi"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s non ha verificato questo dispositivo. Ciò significa che potresti perdere "
-"dei messaggi."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Gestisci la chiave"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Confronta la fingerprint, carattere per carattere, con quella mostrata sul "
-"dispositivo del tuo contatto."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Le impronte non combaciano"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Le impronte combaciano"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Annulla"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Conferma"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Verifica la chiave"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"I messaggi futuri inviati da %s dal dispositivo che usa questa chiave "
-"saranno evidenziati di conseguenza nella finestra della chat."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Le impronte non corrispondono"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Si prega di verificare che si stia confrontanto la fingerprint corretta. Se "
-"le fingerprint non corrispondono, l'account di %s potrebbe essere "
-"compromesso e si dovrebbe rifiutare questa chiave."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Verifica la fingerprint della chiave"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Confronta la fingerprint di questa chiave con quella mostrata sul "
-"dispositivo del contatto."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Chiave rifiutata"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Blocca le comunicazioni crittografate con il dispositivo del contatto che "
-"sta usando questa chiave."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Chiave accettata"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Permetti la comunicazione crittografata con il dispositivo del contatto che "
-"sta usando questa chiave."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "La chiave attualmente è %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "accettata"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Questo vuol dire che può essere usata da %s per ricevere ed inviare messaggi."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "verificata"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-"Inoltre è stato verificato che corrisponda con la chiave sul dispositivo del "
-"contatto."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "rifiutata"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Questo vuol dire che non può essere usata da %s per decifrare i tuoi "
-"messaggi, e tu non vedrai i messaggi crittografati con essa."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"Non vedrai i messaggi crittografati dal dispositivo di %s che usa questa "
-"chiave. Al contrario, quel dispositivo non sarà più in grado di decifrare i "
-"tuoi messaggi."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Sarai in grado di scambiare messaggi crittografati con il dispositivo di %s "
-"che usa questa chiave."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Indietro"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Gestisci"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Questo contatto ha dei nuovi dispositivi"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "Una decisione sulla fiducia è necessaria per la chiave OMEMO"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Hai aggiunto un nuovo dispositivo per l'account %s?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Nuove chiavi"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Le nuove chiavi di crittografia dei tuoi altri dispositivi verranno "
-"accettate automaticamente."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Accettata"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Rifiutata"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Verificata"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr ""
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "Gestione delle chiavi OMEMO"
-
-#~ msgid "Encryption"
-#~ msgstr "Crittografia"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d dispositivo OMEMO"
-#~ msgstr[1] "%d dispositivi OMEMO"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Accetta automaticamente le nuove chiavi"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr ""
-#~ "Le nuove chiavi di crittografia di questo contatto verranno accettate "
-#~ "automaticamente."
-
-#~ msgid "Own key"
-#~ msgstr "Proprie chiavi"
-
-#~ msgid "Associated keys"
-#~ msgstr "Chiavi associate"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Chiavi inattive"
-
-#~ msgid "Unused"
-#~ msgstr "Inutilizzata"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Propria impronta"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Verrà generata alla prima connessione"
-
-#~ msgid "Your contact"
-#~ msgstr "Il tuo contatto"
-
-#~ msgid "Not matching"
-#~ msgstr "Non corrispondenti"
-
-#~ msgid "Matching"
-#~ msgstr "Corrispondenti"
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "highlighted accordingly in the chat window."
-#~ msgstr ""
-#~ "Una volta confermato, qualsiasi messaggio futuro inviato da %s usando "
-#~ "questa chiave sarà evidenziato di conseguenza nella finestra della "
-#~ "conversazione."
-
-#~ msgid ""
-#~ "Stop accepting this key during communication with its associated contact."
-#~ msgstr ""
-#~ "Smetti di accettare questa chiave durante le comunicazioni col contatto "
-#~ "associato."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact"
-#~ msgstr ""
-#~ "Inizia ad accettare questa chiave durante le comunicazioni con il "
-#~ "contatto ad essa associato"
-
-#~ msgid ""
-#~ "This means it cannot be used by %s to receive messages, and any messages "
-#~ "sent by it will be ignored."
-#~ msgstr ""
-#~ "Questo vuol dire che non può essere usata da %s per ricevere messaggi, ed "
-#~ "ogni messaggio inviato attraverso di essa sarà ignorato."
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "ignored and none of your messages will be readable using this key."
-#~ msgstr ""
-#~ "Una volta confermato, ogni messaggio futuro inviato da %s usando questa "
-#~ "chiave sarà ignorato e nessuno dei tuoi messaggi sarà leggibile usando "
-#~ "questa chiave."
-
-#~ msgid ""
-#~ "Once confirmed this key will be usable by %s to receive and send messages."
-#~ msgstr ""
-#~ "Una volta confermata questa chiave sarà utilizzabile da %s per ricevere "
-#~ "ed inviare messaggi."
-
-#~ msgid ""
-#~ "When this contact adds new encryption keys to their account, "
-#~ "automatically accept them."
-#~ msgstr ""
-#~ "Quando questo contatto aggiunge nuove chiavi di cifratura al proprio "
-#~ "account, accettale automaticamente."
-
-#~ msgid ""
-#~ "When you add new encryption keys to your account, automatically accept "
-#~ "them."
-#~ msgstr ""
-#~ "Quando aggiungi nuove chiavi di cifratura al tuo account, accettale "
-#~ "automaticamente."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact."
-#~ msgstr ""
-#~ "Inizia ad accettare questa chiave durante le comunicazioni col contatto "
-#~ "associato"
-
-#~ msgid "Reject Key"
-#~ msgstr "Rifiuta la chiave"
-
-#~ msgid "Accept Key"
-#~ msgstr "Accetta la chiave"
-
-#~ msgid "Unknown device (0x%.8x)"
-#~ msgstr "Dispositivo sconosciuto (0x%.8x)"
-
-#~ msgid "Other devices"
-#~ msgstr "Altri dispositivi"
-
-#~ msgid "- None -"
-#~ msgstr "- Nessuno -"
-
-#~ msgid "OMEMO"
-#~ msgstr "OMEMO"
-
-#~ msgid "Database error"
-#~ msgstr "Errore del database"
diff --git a/plugins/omemo/po/ja.po b/plugins/omemo/po/ja.po
deleted file mode 100644
index 6a7cbc6a..00000000
--- a/plugins/omemo/po/ja.po
+++ /dev/null
@@ -1,365 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2024-09-15 20:09+0000\n"
-"Language-Team: none\n"
-"Language: ja\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"<shirahara@users.noreply.hosted.weblate.org>\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 5.8-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s は信頼されていないデバイスを使用しています。信頼していないデバイスから送信"
-"されたメッセージは閲覧できません。"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "デバイスを管理"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s はこのデバイスを信頼していません。相手がメッセージを正しく受信できない可能"
-"性があります。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "キーを管理"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"以下のフィンガープリントと、お使いのデバイスに表示されているフィンガープリン"
-"トを、1文字ずつ比較してください。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "フィンガープリントが一致しません"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "フィンガープリントが一致します"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "キャンセル"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "確認"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "キーを確認"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"今後このキーを使ったデバイスから %s が送信するメッセージは、チャットウィンド"
-"ウでハイライト表示されます。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "フィンガープリントが一致しません"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"正しいフィンガープリントを比較しているか確認してください。フィンガープリント"
-"が一致しない場合、%s のアカウントはなりすましの可能性があるので、このキーを拒"
-"否することをおすすめします。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "キーのフィンガープリントを検証"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"このキーのフィンガープリントと、連絡先のデバイスに表示されたフィンガープリン"
-"トを比較します。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "キーを拒否"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr "このキーを使った連絡先のデバイスとの暗号化された会話をブロックします。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "キーを許可"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr "このキーを使った連絡先のデバイスとの暗号化された会話を許可します。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "このキーは現在%s。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "許可されています"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr "このキーを使って、%s は暗号化されたメッセージを送受信できます。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "検証済みです"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr "加えて、連絡先のデバイスのキーと一致することを検証済みです。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "拒否されています"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"このキーを使って、%s はあなたのメッセージを解読できなくなります。また、あなた"
-"は、このキーで暗号化されたメッセージを確認できなくなります。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"このキーを使った %s のデバイスから、暗号化されたメッセージを確認できなくなり"
-"ます。逆に、今後そのデバイスでは、あなたのメッセージを解読できなくなります。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"このキーを使った %s のデバイスと、暗号化されたメッセージをやり取りできるよう"
-"になります。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "戻る"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "管理"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "この連絡先に新しいデバイスが追加されました"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "OMEMO 信頼選択が必要です"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "アカウント %s に新しいデバイスを追加しましたか?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "既定でOMEMO"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "新しい会話にOMEMO暗号化を有効にする"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "新しいデバイスに対して暗号化"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "この連絡先から新しいデバイスに対して自動的に暗号化を行います。"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "新しいキー"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"あなたのほかのデバイスから発行された新しい暗号化キーが自動的に許可されます。"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "許可"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "拒否"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "検証済み"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "新しいデバイス"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "OMEMO キー管理"
-
-#~ msgid "Encryption"
-#~ msgstr "暗号化"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d 台の OMEMO デバイス"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "自動的に新しいキーを許可"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr "この連絡先から発行された新しい暗号化キーが自動的に許可されます。"
-
-#~ msgid "Own key"
-#~ msgstr "自身のキー"
-
-#~ msgid "Associated keys"
-#~ msgstr "関連付けられたキー"
-
-#~ msgid "Inactive keys"
-#~ msgstr "非アクティブなキー"
-
-#~ msgid "Unused"
-#~ msgstr "未使用"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "自身のフィンガープリント"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "最初の接続で生成されます"
-
-#~ msgid "Your contact"
-#~ msgstr "あなたの連絡先"
-
-#~ msgid "Not matching"
-#~ msgstr "一致しない"
-
-#~ msgid "Matching"
-#~ msgstr "一致"
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "highlighted accordingly in the chat window."
-#~ msgstr ""
-#~ "一度確認すると、今後このキーを使って %s から送信されるメッセージは、チャッ"
-#~ "トウィンドウでハイライト表示されます。"
-
-#~ msgid ""
-#~ "Stop accepting this key during communication with its associated contact."
-#~ msgstr ""
-#~ "関連付けられた連絡先とトークをする際に、このキーを許可しないようにします。"
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact"
-#~ msgstr ""
-#~ "関連付けられた連絡先とトークをする際に、このキーを許可するようにします"
-
-#~ msgid ""
-#~ "This means it cannot be used by %s to receive messages, and any messages "
-#~ "sent by it will be ignored."
-#~ msgstr ""
-#~ "このキーを使って %s からのメッセージを受信できません。また、当該アドレスか"
-#~ "らのメッセージはすべて無視されます。"
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "ignored and none of your messages will be readable using this key."
-#~ msgstr ""
-#~ "一度確認すると、今後このキーを使って %s から送信されるメッセージは無視さ"
-#~ "れ、このキーを使ったご自身のメッセージも読み取れなくなります。"
-
-#~ msgid ""
-#~ "Once confirmed this key will be usable by %s to receive and send messages."
-#~ msgstr ""
-#~ "一度確認すると、このキーを使って %s からのメッセージを送受信可能になりま"
-#~ "す。"
-
-#~ msgid ""
-#~ "When this contact adds new encryption keys to their account, "
-#~ "automatically accept them."
-#~ msgstr ""
-#~ "この連絡先の相手がアカウントに追加する新しい暗号化キーを自動的に許可しま"
-#~ "す。"
-
-#~ msgid ""
-#~ "When you add new encryption keys to your account, automatically accept "
-#~ "them."
-#~ msgstr "アカウントに追加した新しい暗号化キーを自動的に許可します。"
diff --git a/plugins/omemo/po/ka.po b/plugins/omemo/po/ka.po
deleted file mode 100644
index a2e53e86..00000000
--- a/plugins/omemo/po/ka.po
+++ /dev/null
@@ -1,250 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2026-02-21 20:09+0000\n"
-"Language-Team: none\n"
-"Language: ka\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: Weblate 5.16.1-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr ""
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "გაუქმება"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "დადასტურება"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "დადასტურებულია"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "გადამოწმებულია"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "უარყოფილია"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "უკან"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr ""
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr ""
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr ""
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr ""
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
diff --git a/plugins/omemo/po/kab.po b/plugins/omemo/po/kab.po
deleted file mode 100644
index 8a082bd6..00000000
--- a/plugins/omemo/po/kab.po
+++ /dev/null
@@ -1,265 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2026-02-23 06:09+0000\n"
-"Language-Team: none\n"
-"Language: kab\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: Weblate 5.16.1-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Sefrek obenkan"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%sur yettkil ara deg yibenk-a. Ayagi anamek-is d akken tzemreḍ ad tɛerqeḍ "
-"iznan."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Sefrek tasarut"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Snemhel adsil umḍin, s usekkil ɣer usekkil, s win i d-yettwaseknen deg ibenk "
-"n unermis-ik·im."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Adsil umḍinen mgaraden"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Adsil umḍinen mṣadan"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Semmet"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Serggeg"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Senqed tasarut"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"Iznan n yimal ara yettwaznen sɣur %s seg yibenk i yesseqdacen tasarut-agi ad "
-"ttwabrureqqren deg usfaylu n udiwenni."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Idsilen umḍinen ur mṣadan ara"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Selken adsil umḍin n tsarut"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Snemhel tasarut n udsil umḍin akked udsil umḍin i d-yettwaseknen deg yibenk "
-"n unermis."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Agi tasarut"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Sewḥel taɣwalt tawgelhant akked yibenk n unermis-agi i yesseqdacen tasarut-a."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Qbel tasarut"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr "Sireg taywalt uwgelhen s yibenk n unermis i yesseqdac tasarut-a."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Tasarut-agi %s tura."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "yettwaqbel"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Ayagi yebɣa ad d-yini dakken yezmer ad yettwaseqdec sɣur %s akken ad yeṭṭef "
-"u ad yazen iznan iwgelhanen."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "yettwasenqed"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "yettwagi"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Ad tizmireḍ ad tbeddeleḍ iznan iwgelhanen akked yibenk %s i yesseqdacen "
-"tasarut-agi."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Tuɣalin"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Sefrek"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Anermis-a ɣur-s ibenkan imaynuten"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "Tettwasra teɣtast n teflest OMEMO"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Terniḍ ibenk amaynut i umiḍan %s?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "OMEMO s wudem amezwer"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "Sermed awgelhen OMEMO i idiwenniyen imaynuten"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Wgelhen i yibenkan imaynuten"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Wgelhen s wudem awurman ɣer yibenkan imaynuten n unermis-a."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Tisura timaynutin"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Tisura n uwgelhen timaynutin seg yibenkan-ik nniḍen ad ttwaqeblent s wudem "
-"awurman."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "Ibenk-a"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "Ibenk nniḍen"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "Ibenk"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Yettwaqbel"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Yettwasenqed"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Ibenk amaynut"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
diff --git a/plugins/omemo/po/lb.po b/plugins/omemo/po/lb.po
deleted file mode 100644
index 3c2b6f0e..00000000
--- a/plugins/omemo/po/lb.po
+++ /dev/null
@@ -1,396 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: dino-omemo-0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2020-04-12 20:01+0000\n"
-"Language-Team: Luxembourgish <https://hosted.weblate.org/projects/dino/"
-"plugin-omemo/lb/>\n"
-"Language: lb\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: Weblate 4.0-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Geräter managen"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Schlëssel verwalten"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Vergläich de Fangerofdrock, Zeeche fir Zeechen, mat dem den um Gerät vum "
-"Kontakt ugewise gëtt."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Fangerofdréck stemmen net iwwerteneen"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Fangerofdréck stemmen iwwerteneen"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Ofbriechen"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Confirméieren"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Schlëssel verifizéieren"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"Zukünfteg Noriichten, déi vum Apparat vum %s, den dëse Schlëssel benotzt, "
-"geschéckt ginn, wäerten deementspriechend am Chatfenster ervirgehuewen ginn."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Fangerofdréck stëmmen net iwwerteneen"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Wann ech gelift iwwerpréif, ob's du mat dem "
-"korrekte Fangerofdrock vergläichs. Wann Fangerofdréck net iwwerteneestëmmen, "
-"dann ass dem %s säi Konto villäicht kompromettéiert an du solls dëse "
-"Schlëssel verweigeren."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Iwwerpréif Schlëssel Fangerofdrock"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Vergläich de Fangerofdrock vun dësem Schlëssel mam Fangerofdrock den um "
-"Gerät vun dësem Kontakt steet."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Schlëssel ofleenen"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Blockéiert verschlësselt Kommunikatioun mam Apparat vum Kontakt deen dëse "
-"Schlëssel benotzt."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Schlëssel acceptéieren"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Erlaabt verschlësselt Kommunikatioun mam Apparat vum Kontakt, deen dëse "
-"Schlëssel benotzt."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Den aktuelle Schlëssel ass %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "akzeptéiert"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Dat bedeit, dass et vum %s ka benotzt gi fir Messagen ze empfänken an ze "
-"verschécken."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "verifizéiert"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-"De Schlëssel ass zousätzlech iwwerpréift gi mam Schlëssel um Gerät vum "
-"Kontakt iwwerteneen ze stëmmen."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "ofgeleent"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Dëst bedeit datt et net vum %s ka benotzt ginn fir är Messagen ze "
-"entschlësselen, an Dir gesitt keng Messagen déi mat dësem verschlësselt sinn."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"Dir gesitt net verschlësselt Message vum Apparat vum %s deen dëse Schlëssel "
-"benotzt. Ëmgekéiert kann dëse Apparat net méi Är Messagen entschlësselen."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Dir kënnt verschlësselte Messagen austausche mat dem Apparat vum %s deen "
-"dësen Schlëssel benotzt."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Zeréck"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Verwalten"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Dëse Kontakt huet nei Geräter"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "OMEMO Vertrauens Entscheedung noutwenneg"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Hues du een neit Gerät fir %s dobäi gemaach?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Nei Schlësselen"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Nei Verschlësslungs Schlëssele vun ären aneren Apparater ginn automatesch "
-"akzeptéiert."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Akzeptéiert"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Ofgeleent"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Verifizéiert"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr ""
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "OMEMO Schlësselenverwaltung"
-
-#~ msgid "Encryption"
-#~ msgstr "Verschlësselung"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d OMEMO Gerät"
-#~ msgstr[1] "%d OMEMO Geräter"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Automatesch nei Schlësselen akzeptéieren"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr ""
-#~ "Nei Verschlësslungs Schlëssele vun dem Kontakt ginn automatesch "
-#~ "akzeptéiert."
-
-#~ msgid "Own key"
-#~ msgstr "Eegene Schlëssel"
-
-#~ msgid "Associated keys"
-#~ msgstr "Zougehéiereg Schlësselen"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Inaktiv Schlësselen"
-
-#~ msgid "Unused"
-#~ msgstr "Onbenotzt"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Eegene Fangerofdrock"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Gett bei der éischter Connectioun generéiert"
-
-#~ msgid "Not matching"
-#~ msgstr "Stemmt net iwwerteneen"
-
-#~ msgid "Matching"
-#~ msgstr "Stemmt iwwerteneen"
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "highlighted accordingly in the chat window."
-#~ msgstr ""
-#~ "Wann konforméiert, all zukünfteg Messagen déi vum %s mat dësem Schlëssel "
-#~ "geschéckt ginn, ginn deementspriechend am Chatfenster markéiert."
-
-#~ msgid ""
-#~ "Stop accepting this key during communication with its associated contact."
-#~ msgstr ""
-#~ "Dëse Schlëssel net méi akzeptéiere wärend der Kommunikatioun mat sengem "
-#~ "verbonnene Kontakt."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact"
-#~ msgstr "Dëse Schlëssel wärend de Conversatioun mat sengem Kontakt benotzen"
-
-#~ msgid ""
-#~ "This means it cannot be used by %s to receive messages, and any messages "
-#~ "sent by it will be ignored."
-#~ msgstr ""
-#~ "Dat bedeit, dass dëse Schlëssel net ka vum %s benotz gi fir Messagen ze "
-#~ "empfänken an all Message déi geschéckt gi ginn ignoréiert."
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "ignored and none of your messages will be readable using this key."
-#~ msgstr ""
-#~ "Wann confirméiert, all zukünfteg Message déi vum %s mat dësem Schlëssel "
-#~ "geschéckt ginn, ginn ignoréiert a keng vun dengem Messagë wäerte liesbar "
-#~ "sinn."
-
-#~ msgid ""
-#~ "Once confirmed this key will be usable by %s to receive and send messages."
-#~ msgstr ""
-#~ "Wann konforméiert ass de Schlëssel vum %s benotzbar fir Messagen ze "
-#~ "empfänken an ze schécken."
-
-#~ msgid ""
-#~ "When this contact adds new encryption keys to their account, "
-#~ "automatically accept them."
-#~ msgstr ""
-#~ "Wann dëse Kontakt néi Schlësselen zu sengem Konto bäifüügt, déi "
-#~ "automatesch akzeptéieren."
-
-#~ msgid ""
-#~ "When you add new encryption keys to your account, automatically accept "
-#~ "them."
-#~ msgstr ""
-#~ "Wann s du nei Schlëssele bei däin Account bäifüügs, déi automatesch "
-#~ "akzeptéieren."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact."
-#~ msgstr ""
-#~ "Dëse Schlëssel wärend der Kommunikatioun mat sengem verbonne Kontakt "
-#~ "akzeptéieren."
-
-#~ msgid "Reject Key"
-#~ msgstr "Schlëssel verweigeren"
-
-#~ msgid "Accept Key"
-#~ msgstr "Schlëssel acceptéieren"
-
-#~ msgid "Unknown device (0x%.8x)"
-#~ msgstr "Onbekannt Gerät (0x%.8x)"
-
-#~ msgid "Other devices"
-#~ msgstr "Aner Geräter"
-
-#~ msgid "- None -"
-#~ msgstr "- Keng -"
-
-#~ msgid "OMEMO"
-#~ msgstr "OMEMO"
-
-#~ msgid "Database error"
-#~ msgstr "Datebank Feeler"
diff --git a/plugins/omemo/po/lt.po b/plugins/omemo/po/lt.po
deleted file mode 100644
index 10d763fb..00000000
--- a/plugins/omemo/po/lt.po
+++ /dev/null
@@ -1,374 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2025-12-27 20:00+0000\n"
-"Language-Team: none\n"
-"Language: lt\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
-"(n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Weblate 5.15.1\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s naudoja nepatikimą įrenginį. Jūs nematysite žinučių iš įrenginių, kuriais "
-"nepasitikite."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Tvarkyti įrenginius"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s nepasitiki šiuo įrenginiu. Tai reiškia, kad galite nematyti žinučių."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Tvarkyti raktą"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Palyginkite kontrolinį kodą, simbolis po simbolio, su tuo, kuris yra rodomas "
-"jūsų adresato įrenginyje."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Kodas skiriasi"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Kodas atitinka"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Atsisakyti"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Patvirtinti"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Patikrinkite raktą"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"Nuo šiol žinutės nuo %s išsiųstos iš įrenginio naudojančio šį kontrolinį "
-"kodą bus atitinkamai paryškintos."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Kontroliniai kodai nesutampa"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Įsitikinkite, kad lyginate teisingą kontrolinį kodą. Jei kontroliniai kodai "
-"nesutampa, gali būti, kad %s paskyra yra sukompromituota ir turėtumėte "
-"apsvarstyti galimybę atmesti šį raktą."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Patikrinti rakto kontrolinį kodą"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Palyginti šio rakto kontrolinį kodą su adresato įrenginyje rodomu "
-"kontroliniu kodu."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Atmesti raktą"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Blokuoti šifruotą bendravimą su kontakto įrenginiu, kuris naudoja šį raktą."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Priimti raktą"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Leisti šifruotą bendravimą su kontakto įrenginiu, kuris naudoja šį raktą."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Šiuo metu šis raktas yra %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "priimtas"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Tai reiškia, kad %s gali jį naudoti šifruotų žinučių siuntimui ir gavimui."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "patikrintas"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-"Be to, jis buvo patikrintas ir sutampa su adresato įrenginyje rodomu raktu."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "atmestas"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Tai reiškia, kad %s negali jo naudoti jūsų žinučių iššifravimui ir jūs "
-"nematysite žinučiu užšifruotų šiuo raktu."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"Jūs nematysite šifruotų žinučių išsiustų iš %s įrenginio, kuris naudoją šį "
-"raktą. Tuo pačiu tas įrenginys nebegalės iššifruoti jūsų žinučių."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Jūs galite keistis šifruotomis žinutėmis su %s įrenginiu, kuris naudoja šį "
-"raktą."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Atgal"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Tvarkyti"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Šis adresatas turi naujų įrenginių"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "OMEMO reikia pasitikėjimo sprendimo"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Ar savo %s paskyrai pridėjote naują įrenginį?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "OMEMO pagal numatymą"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "Įjungti naujiems pokalbiams OMEMO šifravimą"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Šifruoti į naujus įrenginius"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Automatiškai šifruoti į naujus įrenginius iš šio adresato."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Nauji raktai"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Nauji šifravimo raktai iš jūsų kitų įrenginių bus priimti automatiškai."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "Šis įrenginys"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "Kitas įrenginys"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "Įrenginys"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Priimtas"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Atmestas"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Patikrintas"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Naujas įrenginys"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"Kiekvienas įrenginys turi savo nuosavą OMEMO raktą. Įrenginys gali "
-"iššifruoti žinutes tik tuo atveju, jeigu jos yra šifruotos naudojant jo "
-"raktą. Žinutės yra šifruojamos tik priimtiems įrenginiams."
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "OMEMO raktų tvarkymas"
-
-#~ msgid "Encryption"
-#~ msgstr "Šifravimas"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d OMEMO įrenginys"
-#~ msgstr[1] "%d OMEMO įrenginiai"
-#~ msgstr[2] "%d OMEMO įrenginių"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Automatiškai priimti naujus raktus"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr "Nauji šifravimo raktai iš šio kontakto bus priimti automatiškai."
-
-#~ msgid "Own key"
-#~ msgstr "Nuosavas raktas"
-
-#~ msgid "Associated keys"
-#~ msgstr "Susieti raktai"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Neaktyvūs raktai"
-
-#~ msgid "Unused"
-#~ msgstr "Nenaudojamas"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Nuosavas kontrolinis kodas"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Bus sugeneruotas pirmojo prisijungimo metu"
-
-#~ msgid "Your contact"
-#~ msgstr "Jūsų adresatas"
-
-#~ msgid "Not matching"
-#~ msgstr "Nesutampa"
-
-#~ msgid "Matching"
-#~ msgstr "Sutampa"
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "highlighted accordingly in the chat window."
-#~ msgstr ""
-#~ "Patikrinus, bet kokios būsimos žinutės, kurias %s išsiųs naudodamas šį "
-#~ "raktą, bus atitinkamai paryškintos pokalbių kambaryje."
-
-#~ msgid ""
-#~ "Stop accepting this key during communication with its associated contact."
-#~ msgstr "Nustoti priiminėti šį raktą bendravimo su susietu adresatu metu."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact"
-#~ msgstr "Pradėti priiminėti šį raktą bendravimo su susietu adresatu metu"
-
-#~ msgid ""
-#~ "This means it cannot be used by %s to receive messages, and any messages "
-#~ "sent by it will be ignored."
-#~ msgstr ""
-#~ "Tai reiškia, kad %s negali jo naudoti, kad gautų žinutes, o bet kurių "
-#~ "adresato siunčiamų žinučių bus nepaisoma."
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "ignored and none of your messages will be readable using this key."
-#~ msgstr ""
-#~ "Patvirtinus, bet kurių būsimų žinučių, kurias %s išsiųs naudodamas šį "
-#~ "raktą, bus nepaisoma ir jokių jūsų žinučių nebus įmanoma perskaityti "
-#~ "naudojant šį raktą."
-
-#~ msgid ""
-#~ "Once confirmed this key will be usable by %s to receive and send messages."
-#~ msgstr ""
-#~ "Patvirtinus, šis raktas taps tinkamu naudoti %s, kad gautų ir siųstų "
-#~ "žinutes."
-
-#~ msgid ""
-#~ "When this contact adds new encryption keys to their account, "
-#~ "automatically accept them."
-#~ msgstr ""
-#~ "Kai šis adresatas prie savo paskyros pridės naujus šifravimo raktus, "
-#~ "automatiškai juos priimti."
-
-#~ msgid ""
-#~ "When you add new encryption keys to your account, automatically accept "
-#~ "them."
-#~ msgstr ""
-#~ "Kai pridedate naujus šifravimo raktus prie savo paskyros, automatiškai "
-#~ "juos priimti."
diff --git a/plugins/omemo/po/meson.build b/plugins/omemo/po/meson.build
deleted file mode 100644
index fa22f211..00000000
--- a/plugins/omemo/po/meson.build
+++ /dev/null
@@ -1 +0,0 @@
-i18n.gettext('dino-omemo')
diff --git a/plugins/omemo/po/nb.po b/plugins/omemo/po/nb.po
deleted file mode 100644
index da8df8aa..00000000
--- a/plugins/omemo/po/nb.po
+++ /dev/null
@@ -1,403 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2026-03-14 10:09+0000\n"
-"Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/dino/"
-"plugin-omemo/nb_NO/>\n"
-"Language: nb\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: Weblate 5.17-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s har brukt en ubetrodd enhet. Du vil ikke se meldinger fra enheter du ikke "
-"har tiltro til."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Håndter enheter"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s har ikke tiltro til denne enheten. Det betyr at du kan gå glipp av "
-"meldinger."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Håndter nøkkel"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Sammenlign fingeravtrykket, tegn for tegn, med den vist på din kontakts "
-"enhet."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Fingeravtrykkene stemmer ikke overens"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Fingeravtrykkene stemmer overens"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Avbryt"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Bekreft"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Bekreft nøkkel"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"Fremtidige meldinger sendt av %s fra enheten som benytter denne nøkkelen vil "
-"framheves i så måte i sludrevinduet."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Fingeravtrykkene stemmer ikke overens"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Sjekk at du sammenligner riktig fingeravtrykk. Hvis de ikke stemmer overens, "
-"kan det hende %s sin konto har falt i gale hender, og du bør overveie å "
-"avvise denne nøkkelen."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Sjekk nøkkelfingeravtrykk"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Sammenlign dette fingeravtrykket med fingeravtrykket vist på kontaktens "
-"enhet."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Avslå nøkkel"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Blokker kryptert kommunikasjon med kontaktens enhet som benytter denne "
-"nøkkelen."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Godta nøkkel"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Tillat kryptert kommunikasjon med kontaktens enhet som benytter denne "
-"nøkkelen."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Denne nøkkelen er i øyeblikket %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "godtatt"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Dette betyr at den kan brukes av %s til å motta og sende krypterte meldinger."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "bekreftet"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-"I tillegg har den blitt bekreftet å samsvare med nøkkelen på kontaktens "
-"enhet."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "avslått"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Dette betyr den ikke kan brukes av %s for å fortolke meldingene dine, og du "
-"vil ikke kunne se meldinger kryptert med den."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"Du vil ikke se krypterte meldinger fra %s sin enhet som bruker denne "
-"nøkkelen. Denne enheten vil heller ikke kunne fortolke dine meldinger lenger."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Du vil kunne utveksle krypterte meldinger med %s sin enhet som benytter "
-"denne nøkkelen."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Tilbake"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Behandle"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Denne kontakten har nye enheter"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "OMEMO tillitsbeslutning kreves"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "La du til en ny enhet for kontoen %s?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "OMEMO som standard"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "Aktiver OMEMO-kryptering for nye samtaler"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Krypter til nye enheter"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Krypter automatisk til nye enheter fra denne kontakten."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Nye nøkler"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr "Nye krypteringsnøkler fra dine andre enheter vil godtas automatisk."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "Denne enheten"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "Annen enhet"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "Enhet"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Godtatt"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Avslått"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Bekreftet"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Ny enhet"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"Hver enhet har sin egen OMEMO-nøkkel. Meldinger kan bare dekrypteres av en "
-"enhet hvis de er kryptert til dens nøkkel. Meldinger blir bare kryptert til "
-"godkjente enheter."
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "OMEMO-nøkkelhåndtering"
-
-#~ msgid "Encryption"
-#~ msgstr "Kryptering"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d OMEMO-enhet"
-#~ msgstr[1] "%d OMEMO-enheter"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Godta nye nøkler automatisk"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr "Nye krypteringsnøkler fra denne kontakten vil godtas automatisk."
-
-#~ msgid "Own key"
-#~ msgstr "Egen nøkkel"
-
-#~ msgid "Associated keys"
-#~ msgstr "Tilknyttede nøkler"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Inaktive nøkler"
-
-#~ msgid "Unused"
-#~ msgstr "Ubrukt"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Eget fingeravtrykk"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Vil bli generert ved første tilkobling"
-
-#~ msgid "Your contact"
-#~ msgstr "Din kontakt"
-
-#~ msgid "Not matching"
-#~ msgstr "Samsvarer ikke"
-
-#~ msgid "Matching"
-#~ msgstr "Samsvarer"
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "highlighted accordingly in the chat window."
-#~ msgstr ""
-#~ "Når først bekreftet, vil fremtidige meldinger sendt av %s ved bruk av "
-#~ "denne nøkkelen bli fremhevet tilsvarende i sludrevinduet."
-
-#~ msgid ""
-#~ "Stop accepting this key during communication with its associated contact."
-#~ msgstr ""
-#~ "Slutt å godta denne nøkkelen under kommunikasjon med dens tilknyttede "
-#~ "kontakt."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact"
-#~ msgstr ""
-#~ "Aksepter heretter denne nøkkelen i kommunikasjon med dens tilhørende "
-#~ "kontakt"
-
-#~ msgid ""
-#~ "This means it cannot be used by %s to receive messages, and any messages "
-#~ "sent by it will be ignored."
-#~ msgstr ""
-#~ "Dette betyr at den ikke kan brukes av %s til å motta meldinger, og enhver "
-#~ "melding sendt på vegne av den vil bli ignorert."
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "ignored and none of your messages will be readable using this key."
-#~ msgstr ""
-#~ "Etter bekreftelsen vil fremtidige meldinger sendt av %s der denne "
-#~ "nøkkelen brukes bli ignorert, og ingen av dine meldinger vil kunne leses "
-#~ "med den."
-
-#~ msgid ""
-#~ "Once confirmed this key will be usable by %s to receive and send messages."
-#~ msgstr ""
-#~ "Når først bekreftet vil denne nøkkelen kunne brukes av %s til å motta og "
-#~ "sende meldinger."
-
-#~ msgid ""
-#~ "When this contact adds new encryption keys to their account, "
-#~ "automatically accept them."
-#~ msgstr ""
-#~ "Når denne kontakten legger nye krypteringsnøkler til kontoen sin, godta "
-#~ "dem automatisk."
-
-#~ msgid ""
-#~ "When you add new encryption keys to your account, automatically accept "
-#~ "them."
-#~ msgstr ""
-#~ "Godta dem automatisk når du legger nye krypteringsnøkler til kontoen din."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact."
-#~ msgstr ""
-#~ "Begynn å godta denne nøkkelen under kommunikasjon med dens tilknyttede "
-#~ "kontakt."
-
-#~ msgid "Reject Key"
-#~ msgstr "Avslå nøkkel"
-
-#~ msgid "Accept Key"
-#~ msgstr "Godta nøkkel"
-
-#~ msgid "Unknown device (0x%.8x)"
-#~ msgstr "Ukjent enhet (0x%.8x)"
-
-#~ msgid "Other devices"
-#~ msgstr "Andre enheter"
-
-#~ msgid "- None -"
-#~ msgstr "- Ingen -"
-
-#~ msgid "OMEMO"
-#~ msgstr "OMEMO"
diff --git a/plugins/omemo/po/nl.po b/plugins/omemo/po/nl.po
deleted file mode 100644
index 43468b40..00000000
--- a/plugins/omemo/po/nl.po
+++ /dev/null
@@ -1,402 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: dino-omemo-0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2026-03-23 16:27+0000\n"
-"Language-Team: Dutch <https://hosted.weblate.org/projects/dino/plugin-omemo/"
-"nl/>\n"
-"Language: nl\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: Weblate 5.17-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s is een onvertrouwd apparaat. Berichten van onvertrouwde apparaten worden "
-"niet getoond."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Apparaten beheren"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr "%s vertrouwt dit apparaat niet. Je mist hierdoor mogelijk berichten."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Sleutel beheren"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Vergelijk de vingerafdruk, letter voor letter, met die op het apparaat van "
-"je contactpersoon."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Vingerafdrukken wijken af"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Vingerafdrukken komen overeen"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Annuleren"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Bevestigen"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Sleutel verifiëren"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"Toekomstige berichten van %s van het apparaat dat deze sleutel gebruikt, "
-"worden gemarkeerd in het gespreksvenster."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Vingerafdrukken komen niet overeen"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Zorg dat je de juiste vingerafdrukken vergelijkt. Als de vingerafdrukken "
-"niet overeenkomen, kan het zijn dat het account van %s gehackt is. Overweeg "
-"in dat geval deze sleutel te weigeren."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Vingerafdruk van sleutel verifiëren"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Vergelijk de vingerafdruk van deze sleutel met de vingerafdruk die wordt "
-"getoond op het apparaat van je contactpersoon."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Sleutel weigeren"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Blokkeer versleutelde communicatie met het apparaat van deze contactpersoon "
-"dat deze sleutel gebruikt."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Sleutel accepteren"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Sta versleutelde communicatie toe met het apparaat van deze contactpersoon "
-"dat deze sleutel gebruikt."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Deze sleutel is momenteel %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "geaccepteerd"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Dit betekent dat %s deze kan gebruiken om berichten te ontvangen en "
-"versturen."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "geverifieerd"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-"Er is vastgesteld dat deze sleutel overeenkomt met de sleutel op het "
-"apparaat van de contactpersoon."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "geweigerd"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"De sleutel kan niet door %s worden gebruikt om berichten te ont- en "
-"versleutelen."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"Je ziet geen versleutelde berichten van het apparaat van %s dat deze sleutel "
-"gebruikt. Daarnaast kan het apparaat jouw berichten niet meer ontsleutelen."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Je kunt versleutelde berichten uitwisselen met het apparaat van %s dat deze "
-"sleutel gebruikt."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Terug"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Beheren"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Deze contactpersoon heeft nieuwe apparaten"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "OMEMO-vertrouwenskeuze vereist"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Heb je een nieuw apparaat toegevoegd aan %s?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "Standaard OMEMO"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "Zet OMEMO versleuteling aan voor nieuwe gesprekken"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Versleut nieuwe apparaten"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Automatisch versleutelen van nieuwe apparaten van dit contact."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Nieuwe sleutels"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Nieuwe sleutels van je andere apparaten worden automatisch geaccepteerd."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "Dit apparaat"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "Ander apparaat"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "Apparaat"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Geaccepteerd"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Geweigerd"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Geverifieerd"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Nieuwe apparaat"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"Ieder apparaat beschikt over een eigen OMEMO-sleutel. Berichten kunnen "
-"alleen worden ontsleuteld als beide versleuteld zijn met dezelfde sleutel, "
-"en alleen op goedgekeurde apparaten."
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "OMEMO-sleutelbeheer"
-
-#~ msgid "Encryption"
-#~ msgstr "Encryptie"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d OMEMO-apparaat"
-#~ msgstr[1] "%d OMEMO-apparaten"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Nieuwe sleutels automatisch accepteren"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr ""
-#~ "Nieuwe sleutels van deze contactpersoon worden automatisch geaccepteerd."
-
-#~ msgid "Own key"
-#~ msgstr "Mijn sleutel"
-
-#~ msgid "Associated keys"
-#~ msgstr "Geassocieerde sleutels"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Inactieve sleutels"
-
-#~ msgid "Unused"
-#~ msgstr "Ongebruikt"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Mijn vingerafdruk"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Wordt bij de eerste verbinding gegenereerd"
-
-#~ msgid "Your contact"
-#~ msgstr "Je contactpersoon"
-
-#~ msgid "Not matching"
-#~ msgstr "Komen niet overeen"
-
-#~ msgid "Matching"
-#~ msgstr "Komen overeen"
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "highlighted accordingly in the chat window."
-#~ msgstr ""
-#~ "Zodra bevestigd, worden nieuwe berichten verstuurd door %s met deze "
-#~ "sleutel uitgelicht in het chatvenster."
-
-#~ msgid ""
-#~ "Stop accepting this key during communication with its associated contact."
-#~ msgstr ""
-#~ "Accepteer niet langer deze sleutel tijdens communicatie met het "
-#~ "bijbehorende contact."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact"
-#~ msgstr ""
-#~ "Accepteer deze sleutel tijdens communicatie met het bijbehorende contact"
-
-#~ msgid ""
-#~ "This means it cannot be used by %s to receive messages, and any messages "
-#~ "sent by it will be ignored."
-#~ msgstr ""
-#~ "Dit betekent dat het niet gebruikt kan worden door %s om berichten te "
-#~ "ontvangen. Berichten die hiermee verstuurd worden worden genegeerd."
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "ignored and none of your messages will be readable using this key."
-#~ msgstr ""
-#~ "Zodra bevestigd, worden toekomstige berichten die verstuurd worden door "
-#~ "%s met deze sleutel genegeerd en zullen geen van je berichten leesbaar "
-#~ "zijn met deze sleutel."
-
-#~ msgid ""
-#~ "Once confirmed this key will be usable by %s to receive and send messages."
-#~ msgstr ""
-#~ "Zodra bevestigd kan deze sleutel gebruikt worden door %s om berichten te "
-#~ "ontvangen en te versturen."
-
-#~ msgid ""
-#~ "When this contact adds new encryption keys to their account, "
-#~ "automatically accept them."
-#~ msgstr ""
-#~ "Indien dit contact nieuwe encryptiesleutels toevoegt aan hun account, "
-#~ "automatisch accepteren."
-
-#~ msgid ""
-#~ "When you add new encryption keys to your account, automatically accept "
-#~ "them."
-#~ msgstr ""
-#~ "Nieuwe encryptiesleutels die aan het account worden toegevoegd "
-#~ "automatisch accepteren."
-
-#, fuzzy
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact."
-#~ msgstr ""
-#~ "Accepteer deze sleutel tijdens communicatie met het bijbehorende contact"
-
-#~ msgid "Reject Key"
-#~ msgstr "Sleutel Afwijzen"
-
-#~ msgid "Accept Key"
-#~ msgstr "Sleutel Aanvaarden"
-
-#~ msgid "Unknown device (0x%.8x)"
-#~ msgstr "Onbekend apparaat (0x%.8x)"
-
-#~ msgid "Other devices"
-#~ msgstr "Andere apparaten"
-
-#~ msgid "- None -"
-#~ msgstr "- Geen -"
-
-#~ msgid "OMEMO"
-#~ msgstr "OMEMO"
-
-#~ msgid "Database error"
-#~ msgstr "Databasefout"
diff --git a/plugins/omemo/po/oc.po b/plugins/omemo/po/oc.po
deleted file mode 100644
index 1a0b26bb..00000000
--- a/plugins/omemo/po/oc.po
+++ /dev/null
@@ -1,323 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2025-12-19 22:00+0000\n"
-"Language-Team: none\n"
-"Language: oc\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: Weblate 5.15.1\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s a utilizat un aparelh desconegut. Veiretz pas los messatges venents de "
-"client que vos fisatz pas."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Gerir los aparelhs"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s se fisa pas d’aqueste client. Significa que mancaretz benlèu de messatges."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Gestion de las claus"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Comparatz l’emprenta, caractèr per caractèr, amb aquela qu’es afichada al "
-"client de vòstre contacte."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "L’emprenta es diferenta"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Las emprentas correspondon"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Anullar"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Confirmar"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Verificar la clau"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"Los messatges venents enviat per %s a partir del client utilizant aquesta "
-"clau seràn meses en davant dins la fenèstra del chat."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Las emprentas correspondon pas"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Mercés de verificar que sètz a comparar l’emprenta corrècta. Se l’emprenta "
-"correspond pas, lo compte de %s pòt èsser compromés e deuriatz regetar "
-"aquesta clau."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Verificar l’emprenta d’aquesta clau"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Comparatz aquesta clau amb l’emprenta afichada sus l'aparelh de vòstre "
-"contacte."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Regetar la clau"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Blocar las comunicacion chifradas amb lo client del contacte qu’utiliza "
-"aquesta clau."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Acceptar la clau"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Autorizar las comunicacions chifradas amb lo client del contacte qu’utiliza "
-"aquesta clau."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "La clau es actualament %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "acceptada"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Aquò significa que èsser utilizada per %s per recebre e enviar de messatges."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "verificada"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-"Amai, la verificacion de la correspondéncia d’aquesta clau amb la del client "
-"del contacte es estada facha."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "regetada"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Aquò significa que pòt pas èsser utilizada per %s per deschifrar vòstres "
-"messatges, veiretz pas mai los messatges chifrats amb ela."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"Veiretz pas mai los messatges que venon de l’aparelh de %s qu’utiliza "
-"aquesta clau. Al contrari, aqueste aparelh poirà pas mai deschifrar vòstres "
-"messatges."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Poiretz escambiar de messatges chifrats amb l’aparelh de %s qu’utiliza "
-"aquesta clau."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Tornar"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Gerir"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Aqueste contacte a d’aparelhs novèls"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "Decision de fisança OMEMO requerida"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Avètz apondut un aparelh novèl pel compte de %s ?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "OMEMO per defaut"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "Activar lo chiframent OMEMO per las discussions novèlas"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Chifrar pels aparelhs novèls"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Chifrar automaticament pels aparelhs novèls d'aqueste contacte."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Claus novèlas"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Las claus novèlas de deschiframent de vòstres autres aparelhs seràn "
-"automaticament acceptadas."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "Aqueste aparelh"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "Un autre aparelh"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "Aparelh"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Acceptada"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Regetada"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Verificada"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Aparelh novèl"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"Cada aparelh a sa pròpria clau OMEMO. Los messatges pòdon èsser deschifrats "
-"per un aparelh solament se son chifrats amb sa clau. Los messatges son "
-"chifrats unicament pels aparelhs acceptats."
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "Gestion de las claus OMEMO"
-
-#~ msgid "Encryption"
-#~ msgstr "Chiframent"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d periferic OMEMO"
-#~ msgstr[1] "%d periferics OMEMO"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Acceptar automaticament las claus novèlas"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr ""
-#~ "Las claus novèlas de deschiframent d’aqueste contacte seràn "
-#~ "automaticament acceptadas."
-
-#~ msgid "Own key"
-#~ msgstr "Ma clau publica"
-
-#~ msgid "Associated keys"
-#~ msgstr "Claus associadas"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Claus inactivas"
-
-#~ msgid "Unused"
-#~ msgstr "Pas utilizada"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Emprenta publica"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Serà generat a la primièra connexion"
-
-#~ msgid "Your contact"
-#~ msgstr "Vòstre contacte"
diff --git a/plugins/omemo/po/pl.po b/plugins/omemo/po/pl.po
deleted file mode 100644
index b4a9e6c8..00000000
--- a/plugins/omemo/po/pl.po
+++ /dev/null
@@ -1,386 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2024-09-24 13:15+0000\n"
-"Language-Team: Polish <https://hosted.weblate.org/projects/dino/plugin-omemo/"
-"pl/>\n"
-"Language: pl\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
-"|| n%100>=20) ? 1 : 2);\n"
-"X-Generator: Weblate 5.8-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s używa niezaufanego urządzenia. Nie będziesz widzieć wiadomości wysłanych "
-"z urządzeń, którym nie ufasz."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Zarządzaj urządzeniami"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s nie ufa temu urządzeniu. Oznacza to, że wiadomości mogą do ciebie nie "
-"docierać."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Zarządzaj kluczem"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Porównaj odcisk klucza, znak po znaku, z tym pokazanym na urządzeniu twojego "
-"kontaktu."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Odcisk klucza różni się"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Odcisk klucza pasuje"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Anuluj"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Potwierdź"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Zweryfikuj klucz"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"Przyszłe wiadomości wysyłane przez %s z urządzenia używającego tego klucza "
-"zostaną odpowiednio podświetlone w oknie czatu."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Odcisk klucza nie zgadza się"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Proszę zweryfikować, że porównujesz prawidłowy odcisk klucza. Jeśli odciski "
-"nie zgadzają się, konto %s mogło być zaatakowane i należy rozważyć "
-"odrzucenie tego klucza."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Zweryfikuj odcisk klucza"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Porównaj odcisk tego klucza z odciskiem wyświetlonym na urządzeniu kontaktu."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Odrzuć klucz"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Blokuj szyfrowaną komunikację z urządzeniem kontaktu, które korzysta z tego "
-"klucza."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Zaakceptuj klucz"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Zezwól na szyfrowaną komunikację z urządzeniem kontaktu, które korzysta z "
-"tego klucza."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Ten klucz jest obecnie %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "zaakceptowany"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"To znaczy, że może być używany przez %s do odbierania i wysyłania "
-"szyfrowanych wiadomości."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "zweryfikowany"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-"Dodatkowo zostało sprawdzone, że zgadza się z kluczem na urządzeniu kontaktu."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "odrzucony"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Oznacza to, że %s nie może go użyć do odszyfrowania wiadomości i nie "
-"zobaczysz wiadomości zaszyfrowanych przy jego pomocy."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"Nie zobaczysz zaszyfrowanych wiadomości z urządzenia %s, które używa tego "
-"klucza. I odwrotnie, to urządzenie nie będzie już w stanie odszyfrować "
-"Twoich wiadomości."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Będziesz mógł wymieniać zaszyfrowane wiadomości z urządzeniem %s, które "
-"używa tego klucza."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Wstecz"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Zarządzaj"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Ten kontakt ma nowe urządzenia"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "Decyzja o zaufaniu OMEMO jest potrzebna"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Czy dodałeś nowe urządzenie dla konta %s?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "Domyślnie OMEMO"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "Włącz szyfrowanie za pomocą OMEMO dla nowych konwersacji"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Szyfrowanie nowych urządzeń"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Automatycznie szyfruj na nowych urządzeniach od tego kontaktu."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Nowe klucze"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Nowe klucze szyfrowania z innych urządzeń będą akceptowane automatycznie."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Zaakceptowany"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Odrzucony"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Zweryfikowany"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Nowe urządzenie"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "Zarządzanie kluczami OMEMO"
-
-#~ msgid "Encryption"
-#~ msgstr "Szyfrowanie"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d urządzenie OMEMO"
-#~ msgstr[1] "%d urządzenia OMEMO"
-#~ msgstr[2] "%d urządzeń OMEMO"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Automatycznie akceptuj nowe klucze"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr ""
-#~ "Nowe klucze szyfrowania od tego kontaktu będą akceptowane automatycznie."
-
-#~ msgid "Own key"
-#~ msgstr "Własny klucz"
-
-#~ msgid "Associated keys"
-#~ msgstr "Pozostałe klucze"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Nieaktywne klucze"
-
-#~ msgid "Unused"
-#~ msgstr "Nieużywany"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Własny odcisk klucza"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Zostanie wygenerowany przy pierwszym połączeniu"
-
-#~ msgid "Not matching"
-#~ msgstr "Odciski nie zgadzają się"
-
-#~ msgid "Matching"
-#~ msgstr "Odciski zgadzają się"
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "highlighted accordingly in the chat window."
-#~ msgstr ""
-#~ "Przyszłe wiadomości wysłane przez %s i szyfrowane tym kluczem będą "
-#~ "odpowiednio zaznaczone w oknie czatu."
-
-#~ msgid ""
-#~ "Stop accepting this key during communication with its associated contact."
-#~ msgstr ""
-#~ "Zablokuj szyfrowaną komunikację ze sprzętem kontaktu, który używa ten "
-#~ "klucz."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact"
-#~ msgstr ""
-#~ "Włącz szyfrowaną komunikację ze sprzętem kontaktu, który używa ten klucz."
-
-#~ msgid ""
-#~ "This means it cannot be used by %s to receive messages, and any messages "
-#~ "sent by it will be ignored."
-#~ msgstr ""
-#~ "To znaczy, że nie może być używany przez %s do rozszyfrowania twoich "
-#~ "wiadomości, a wiadomości szyfrowane nim nie będą u ciebie wyświetlane."
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "ignored and none of your messages will be readable using this key."
-#~ msgstr ""
-#~ "Wiadomości wysłane przez %s ze sprzętu używającego ten klucz nie będą "
-#~ "wyświetlane. Podobnie sprzęt tej osoby nie będzie mógł rozszyfrować "
-#~ "twoich wiadomości."
-
-#~ msgid ""
-#~ "Once confirmed this key will be usable by %s to receive and send messages."
-#~ msgstr ""
-#~ "To umożliwi wymianę szyfrowanych wiadomości ze sprzętem należącym do %s, "
-#~ "który używaja ten klucz."
-
-#~ msgid ""
-#~ "When this contact adds new encryption keys to their account, "
-#~ "automatically accept them."
-#~ msgstr ""
-#~ "Gdy ten kontakt doda nowe klucze szyfrowania do swojego konta, zaakceptuj "
-#~ "je automatycznie."
-
-#~ msgid ""
-#~ "When you add new encryption keys to your account, automatically accept "
-#~ "them."
-#~ msgstr ""
-#~ "Gdy dodam nowe klucze szyfrowania do mojego konta, zaakceptuj je "
-#~ "automatycznie."
-
-#~ msgid "Unknown device (0x%.8x)"
-#~ msgstr "Nieznane urządzenie (0x%.8x)"
-
-#~ msgid "Other devices"
-#~ msgstr "Pozostałe urządzenia"
-
-#~ msgid "- None -"
-#~ msgstr "- Wybierz -"
diff --git a/plugins/omemo/po/pt.po b/plugins/omemo/po/pt.po
deleted file mode 100644
index aafe2cc2..00000000
--- a/plugins/omemo/po/pt.po
+++ /dev/null
@@ -1,324 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2025-08-04 20:02+0000\n"
-"Language-Team: none\n"
-"Language: pt\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: Weblate 5.13-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s esteve a usar um aparelho não confiável. Não verá mensagens de aparelhos "
-"nos quais não confia."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Gerir aparelhos"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s não confia neste aparelho. Isso significa que pode estar a perder "
-"mensagens."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Gerir Chave"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Compare a impressão digital, caractere a caractere, com aquela mostrada no "
-"aparelho de seu contato."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "As impressões digitais não correspondem uma a outra"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "As impressões digitais correspondem uma a outra"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Confirmar"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Verificar chave"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"Mensagens futuras enviadas por %s do aparelho que usa essa chave serão "
-"destacadas no janela de bate papo."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Impressões digitais não correspondem"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Por favor verifique se está a comparar as impressões digitais corretas. Caso "
-"elas não correspondam, a conta do %s pode estar comprometida e deve "
-"considerar rejeitar essa chave."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Verificar impressão digital da chave"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Compare a impressão digital dessa chave com a impressão digital exibida no "
-"aparelho do contato."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Rejeitar chave"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Bloqueie comunicação criptografada com o aparelho do contato que usa essa "
-"chave."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Aceitar chave"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Permita comunicação criptografada com o aparelho do contato que usa essa "
-"chave."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Essa chave está atualmente %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "aceita"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Isso significa que ela pode ser usada por %s para enviar e receber mensagens "
-"criptografadas."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "verificada"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-"Além disso, verificou-se que ela corresponde com a chave no aparelho do "
-"contato."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "rejeitada"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Isso significa que ela não pode ser usada por %s para decifrar suas "
-"mensagens, e não irá visualizar mensagens criptografadas com ela."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"Não irá visualizar mensagens criptografas pelo aparelho de %s que usa essa "
-"chave. Além disso, esse aparelho não será mais capaz de decifrar suas "
-"mensagens."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Poderá trocar mensagem criptografadas com o aparelho de %s que usa essa "
-"chave."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Voltar"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Gerir"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Esse contato possui novos aparelhos"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "Decisão de confiança OMEMO necessária"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Adicionou um novo aparelho para a conta %s?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "OMEMO por padrão"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "Ativar a criptografia OMEMO em novas conversas"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Criptografar para novos dispositivos"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Automaticamente criptografar para novos dispositivos deste contacto."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Chaves novas"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Novas chaves de criptografia de seus outros aparelhos serão aceitas "
-"automaticamente."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "Este dispositivo"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "Outro dispositivo"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "Dispositivo"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Aceita"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Rejeitada"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Verificada"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Dispositivo novo"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"Cada dispositivo tem a sua própria chave OMEMO. Mensagens só podem ser "
-"descriptografadas pelo dispositivo se foram criptografadas para as suas "
-"chaves. Mensagens só são criptografadas para dispositivos aceites."
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "Gestão de chave OMEMO"
-
-#~ msgid "Encryption"
-#~ msgstr "Criptografia"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d aparelho OMEMO"
-#~ msgstr[1] "%d aparelhos OMEMO"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Aceitar novas chaves automaticamente"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr ""
-#~ "Novas chaves de criptografia desse contato serão aceitas automaticamente."
-
-#~ msgid "Own key"
-#~ msgstr "Chave própria"
-
-#~ msgid "Associated keys"
-#~ msgstr "Chaves associadas"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Chaves inativas"
-
-#~ msgid "Unused"
-#~ msgstr "Não usada"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Impressão digital própria"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Será gerada na primeira conexão"
-
-#~ msgid "Your contact"
-#~ msgstr "O seu contacto"
diff --git a/plugins/omemo/po/pt_BR.po b/plugins/omemo/po/pt_BR.po
deleted file mode 100644
index 123733fb..00000000
--- a/plugins/omemo/po/pt_BR.po
+++ /dev/null
@@ -1,379 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2025-04-12 07:32+0000\n"
-"Language-Team: none\n"
-"Language: pt_BR\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: Weblate 5.11-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s tem usado um dispositivo não confiável. Você não verá mensagens de "
-"dispositivos que você não confia."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Gerenciar dispositivos"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s não confia nesse dispositivo. Isso significa que você pode estar perdendo "
-"algumas mensagens."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Gerenciar Chave"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Compare a impressão digital, caractere a caractere, com aquela mostrada no "
-"dispositivo de seu contato."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "As impressões digitais não correspondem uma a outra"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "As impressões digitais correspondem uma a outra"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Confirmar"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Verificar chave"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"Mensagens futuras enviadas por %s do dispositivo que usa essa chave serão "
-"destacadas no janela de bate papo."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Impressões digitais não correspondem"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Por favor verifique se você está comparando as impressões digitais corretas. "
-"Caso elas não correspondam, a conta do %s pode estar comprometida e você "
-"deve considerar rejeitar essa chave."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Verificar impressão digital da chave"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Compare a impressão digital dessa chave com a impressão digital exibida no "
-"dispositivo do contato."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Rejeitar chave"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Bloqueie comunicação criptografada com o dispositivo do contato que usa essa "
-"chave."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Aceitar chave"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Permita comunicação criptografada com o dispositivo do contato que usa essa "
-"chave."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Essa chave está atualmente %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "aceita"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Isso significa que ela pode ser usada por %s para enviar e receber mensagens "
-"criptografadas."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "verificada"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-"Além disso, verificou-se que ela corresponde com a chave no dispositivo do "
-"contato."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "rejeitada"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Isso significa que ela não pode ser usada por %s para decifrar suas "
-"mensagens, e você não irá visualizar mensagens criptografadas com ela."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"Você não irá visualizar mensagens criptografas pelo dispositivo de %s que "
-"usa essa chave. Além disso, esse dispositivo não será mais capaz de decifrar "
-"suas mensagens."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Você poderá trocar mensagem criptografadas com o dispositivo de %s que usa "
-"essa chave."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Voltar"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Gerenciar"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Esse contato possui novos dispositivos"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "Decisão de confiança OMEMO necessária"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Você adicionou um novo dispositivo para a conta %s?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "OMEMO por padrão"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "Ativar a criptografia OMEMO em novas conversas"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Criptografar para novos dispositivos"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Automaticamente criptografar para novos dispositivos deste contato."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Chaves novas"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Novas chaves de criptografia de seus outros dispositivos serão aceitas "
-"automaticamente."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "Este dispositivo"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "Outro dispositivo"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "Dispositivo"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Aceita"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Rejeitada"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Verificada"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Dispositivo novo"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"Cada dispositivo tem sua própria chave OMEMO. Mensagens só podem ser "
-"descriptografadas pelo dispositivo se foram criptografadas para suas chaves. "
-"Mensagens só são criptografadas para dispositivos aceitos."
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "Gerenciamento de Chave OMEMO"
-
-#~ msgid "Encryption"
-#~ msgstr "Criptografia"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d dispositivo OMEMO"
-#~ msgstr[1] "%d dispositivos OMEMO"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Aceitar novas chaves automaticamente"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr ""
-#~ "Novas chaves de criptografia desse contato serão aceitas automaticamente."
-
-#~ msgid "Own key"
-#~ msgstr "Chave própria"
-
-#~ msgid "Associated keys"
-#~ msgstr "Chaves associadas"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Chaves inativas"
-
-#~ msgid "Unused"
-#~ msgstr "Não usada"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Impressão digital própria"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Será gerada na primeira conexão"
-
-#~ msgid "Your contact"
-#~ msgstr "Seu contato"
-
-#~ msgid "Not matching"
-#~ msgstr "Não correspondem"
-
-#~ msgid "Matching"
-#~ msgstr "Correspondem"
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "highlighted accordingly in the chat window."
-#~ msgstr ""
-#~ "Uma vez confirmada, toda mensagem enviada por %s no futuro será destacada "
-#~ "na janela da conversa."
-
-#~ msgid ""
-#~ "Stop accepting this key during communication with its associated contact."
-#~ msgstr "Pare de aceitar essa chave ao se comunicar com o contato associado."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact"
-#~ msgstr "Aceite essa chave ao se comunicar com o contato associado"
-
-#~ msgid ""
-#~ "This means it cannot be used by %s to receive messages, and any messages "
-#~ "sent by it will be ignored."
-#~ msgstr ""
-#~ "Isso significa que ela não pode ser usada por %s para receber mensagens e "
-#~ "qualquer mensagem enviada com ela será ignorada."
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "ignored and none of your messages will be readable using this key."
-#~ msgstr ""
-#~ "Uma vez confirmada, toda mensagem enviada por %s usando essa chave será "
-#~ "ignorada e nenhuma de suas mensagens com ela serão legíveis."
-
-#~ msgid ""
-#~ "Once confirmed this key will be usable by %s to receive and send messages."
-#~ msgstr ""
-#~ "Uma vez confirmada, essa chave poderá ser usada por %s para receber e "
-#~ "enviar mensagens."
-
-#~ msgid ""
-#~ "When this contact adds new encryption keys to their account, "
-#~ "automatically accept them."
-#~ msgstr ""
-#~ "Quando esse contato adicionar novas chaves de criptografia à conta, "
-#~ "aceite-as automaticamente."
-
-#~ msgid ""
-#~ "When you add new encryption keys to your account, automatically accept "
-#~ "them."
-#~ msgstr ""
-#~ "Quando você adicionar novas chaves de criptografia para sua conta, aceite-"
-#~ "as automaticamente."
diff --git a/plugins/omemo/po/ro.po b/plugins/omemo/po/ro.po
deleted file mode 100644
index 91e48bf4..00000000
--- a/plugins/omemo/po/ro.po
+++ /dev/null
@@ -1,406 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2025-04-10 11:50+0000\n"
-"Language-Team: Romanian <https://hosted.weblate.org/projects/dino/plugin-"
-"omemo/ro/>\n"
-"Language: ro\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
-"20)) ? 1 : 2;\n"
-"X-Generator: Weblate 5.11-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s a utilizat un dispozitiv care nu este de încredere. Nu veți vedea mesaje "
-"de pe dispozitive în care nu aveți încredere."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Gestionare dispozitive"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s nu are încredere în acest dispozitiv. Asta înseamnă că s-ar putea să-ți "
-"lipsească mesaje."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Gestionare cheie"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Comparați amprenta, caracter cu caracter, cu amprenta afișată pe "
-"dispozitivul contactului."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Amprentele diferă"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Amprentele se potrivesc"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Anulare"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Confirmare"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Verificare cheie"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"Mesajele viitoare trimise de %s de pe dispozitivul care utilizează această "
-"cheie vor fi evidențiate în mod corespunzător în fereastra de chat."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Amprentele nu se potrivesc"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Vă rugäm să verificați dacă se compară amprentele corecte. Dacă nu se "
-"potrivesc amprentele s-ar putea ca %s să aibä un cont compromis și ar trebui "
-"să luați în considerare respingerea acestei chei."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Verificare amprentă cheie"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Comparați amprenta cheii cu amprenta afișată pe dispozitivul contactului."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Respingere cheie"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Blocați comunicarea criptată cu dispozitivul persoanei de contact care "
-"utilizează această cheie."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Acceptare cheie"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Permiteți comunicarea criptată cu dispozitivul persoanei de contact care "
-"utilizează această cheie."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Cheia este în prezent %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "acceptată"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Aceasta înseamnă că poate fi utilizată de %s pentru a primi și a trimite "
-"mesaje criptate."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "verificată"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-"În plus, a fost verificată că se potrivește cu cheia de pe dispozitivul "
-"contactului."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "respinsă"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Aceasta înseamnă că nu poate fi utilizată de %s pentru a vă descifra "
-"mesajele și nu veți vedea mesajele criptate cu aceasta."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"Nu veți vedea mesaje criptate de la dispozitivul %s care utilizează această "
-"cheie. În schimb, dispozitivul respectiv nu va mai putea descifra mesajele "
-"dumneavoastră."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Veți putea schimba mesaje criptate cu dispozitivul %s care utilizează "
-"această cheie."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Înapoi"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Gestionare"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Acest contact are dispozitive noi"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "Este necesara luarea unei decizii în privința OMEMO"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Ați adăugat un nou dispozitiv pentru contul %s?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "OMEMO activat implicit"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "Activează criptarea OMEMO pentru conversațiile noi"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Criptează pentru dispozitive noi"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Criptează automat pentru dispozitivele noi ale acestui contact."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Chei noi"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Noile chei de criptare de pe celelalte dispozitive ale dumneavoastră vor fi "
-"acceptate automat."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "Acest dispozitiv"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "Alt dispozitiv"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "Dispozitiv"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Acceptată"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Respinsă"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Verificată"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Dispozitiv nou"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"Fiecare dispozitiv are propria cheie OMEMO. Mesajele pot fi decriptate de un "
-"dispozitiv numai dacă sunt criptate pentru cheia sa. Mesajele sunt criptate "
-"numai pentru dispozitivele acceptate."
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "Administrare chei OMEMO"
-
-#~ msgid "Encryption"
-#~ msgstr "Criptare"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d dispozitiv OMEMO"
-#~ msgstr[1] "%d dispozitive OMEMO"
-#~ msgstr[2] "%d de dispozitive OMEMO"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Acceptă automat chei noi"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr ""
-#~ "Noile chei de criptare de la această persoană de contact vor fi acceptate "
-#~ "automat."
-
-#~ msgid "Own key"
-#~ msgstr "Cheie proprie"
-
-#~ msgid "Associated keys"
-#~ msgstr "Chei asociate"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Chei inactive"
-
-#~ msgid "Unused"
-#~ msgstr "Neutilizatä"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Amprentă proprie"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Se va genera la prima conectare"
-
-#~ msgid "Your contact"
-#~ msgstr "Persoana de contact"
-
-#~ msgid "Not matching"
-#~ msgstr "Nu se potrivesc"
-
-#~ msgid "Matching"
-#~ msgstr "Se potrivesc"
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "highlighted accordingly in the chat window."
-#~ msgstr ""
-#~ "Odată confirmată, orice viitoare mesaje trimise de %s folosind această "
-#~ "cheie vor fi evidenţiate în consecință în fereastra de discuție."
-
-#~ msgid ""
-#~ "Stop accepting this key during communication with its associated contact."
-#~ msgstr ""
-#~ "Nu mai accepta această cheie în timpul comunicärii cu acest contact "
-#~ "asociat."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact"
-#~ msgstr ""
-#~ "Se va accepta această cheie în timpul comunicării cu acest contact asociat"
-
-#~ msgid ""
-#~ "This means it cannot be used by %s to receive messages, and any messages "
-#~ "sent by it will be ignored."
-#~ msgstr ""
-#~ "Aceasta înseamnă că nu poate fi folosită de %s ca să primească mesaje, "
-#~ "iar orice mesaj trimis cu ea v-a fi ignorat."
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "ignored and none of your messages will be readable using this key."
-#~ msgstr ""
-#~ "Odată confirmată, orice viitoare mesaje trimise de %s folosind această "
-#~ "cheie vor fi ignorate și nici un mesaj trimis de dumneavoastră nu se va "
-#~ "putea citii folosid aceastä cheie."
-
-#~ msgid ""
-#~ "Once confirmed this key will be usable by %s to receive and send messages."
-#~ msgstr ""
-#~ "Odată confirmată, aceastä cheie va fi utilizatä de %s pentru a primi și "
-#~ "trimite mesaje."
-
-#~ msgid ""
-#~ "When this contact adds new encryption keys to their account, "
-#~ "automatically accept them."
-#~ msgstr ""
-#~ "Când acest contact adäugă chei de criptare noi în contul lor, acestea vor "
-#~ "fi acceptate în mod automat."
-
-#~ msgid ""
-#~ "When you add new encryption keys to your account, automatically accept "
-#~ "them."
-#~ msgstr ""
-#~ "Când adäugați chei de criptare noi pentru acest cont, acestea vor fi "
-#~ "acceptate în mod automat."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact."
-#~ msgstr ""
-#~ "Acceptă această cheie în timpul comunicării cu acest contact asociat."
-
-#~ msgid "Reject Key"
-#~ msgstr "Respingere cheie"
-
-#~ msgid "Accept Key"
-#~ msgstr "Acceptare cheie"
-
-#~ msgid "Unknown device (0x%.8x)"
-#~ msgstr "Dispozitiv necunoscut (0x%.8x)"
-
-#~ msgid "Other devices"
-#~ msgstr "Alte dispozitive"
-
-#~ msgid "- None -"
-#~ msgstr "- Nici unul -"
diff --git a/plugins/omemo/po/ru.po b/plugins/omemo/po/ru.po
deleted file mode 100644
index 97c18960..00000000
--- a/plugins/omemo/po/ru.po
+++ /dev/null
@@ -1,386 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2025-05-06 13:05+0000\n"
-"Language-Team: Russian <https://hosted.weblate.org/projects/dino/plugin-"
-"omemo/ru/>\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=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 5.12-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s использовал(а) ненадёжное устройство. Вы не будете видеть сообщения от "
-"устройств, которым не доверяете."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Управление устройствами"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s не доверяет этому устройству. Это означает, что у вас могут отсутствовать "
-"сообщения."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Управление ключом"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Сравните отпечаток, символ за символом, с тем, который показан на устройстве "
-"вашего контакта."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Отпечатки отличаются"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Отпечатки схожи"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Отмена"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Подтвердить"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Подтвердить ключ"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"Будущие сообщения, отправленные %s с устройства, использующего этот ключ, "
-"будут соответствующим образом выделены в окне чата."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Отпечатки не совпадают"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Пожалуйста, проверьте совпадение отпечатков. Если они не совпадают, аккаунт "
-"\"%s\" может быть скомпрометирован, и вам стоит отклонить этот ключ."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Подтвердить отпечаток"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr "Сверить этот отпечаток с ключом, отображаемым у контакта."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Отклонить ключ"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Заблокировать зашифрованную связь с устройством контакта, использующего этот "
-"ключ."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Принять ключ"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Разрешает зашифрованную связь с устройством контакта, использующего этот "
-"ключ."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Ключ был успешно %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "принят"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Это означает, что %s теперь может отправлять и принимать зашифрованные "
-"сообщения."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "проверен"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr "Также была проведена проверка совпадения ключа."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "отклонён"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Это означает что он не сможетт использоваться %s для расшифровки ваших "
-"сообщений, и вы также не увидите сообщений зашифрованных им."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"Вы не увидите зашифрованных сообщений от устройства %s, которое использует "
-"этот ключ. И наоборот, это устройство больше не сможет расшифровывать ваши "
-"сообщения."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Вы сможете обмениваться зашифрованными сообщениями с устройством %s, которое "
-"использует этот ключ."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Назад"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Настроить"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Этот контакт воспользовался новым устройством"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "Требуется решение OMEMO о доверии"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Вы добавляли аккаунт %s на новое устройство?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "OMEMO по умолчанию"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "Включить OMEMO-шифрование для новых бесед"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Шифрование для новых устройств"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Автоматическое шифрование для новых устройств этого контакта."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Новые ключи"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Новые ключи шифрования от других ваших устройств будут приняты автоматически."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "Это устройство"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "Другое устройство"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "Устройство"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Принят"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Отклонён"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Подтверждён"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Новое устройство"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"Каждое устройство имеет свой собственный ключ OMEMO. Сообщения могут быть "
-"расшифрованы устройством только в том случае, если они зашифрованы его "
-"ключом. Сообщения зашифрованы только для одобренных устройств."
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "Управление ключами OMEMO"
-
-#~ msgid "Encryption"
-#~ msgstr "Шифрование"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d устройство OMEMO"
-#~ msgstr[1] "%d устройства OMEMO"
-#~ msgstr[2] "%d устройств OMEMO"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Автоматически принимать новые ключи"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr ""
-#~ "Новые ключи шифрования от этого контакта будут приняты автоматически."
-
-#~ msgid "Own key"
-#~ msgstr "Собственный ключ"
-
-#~ msgid "Associated keys"
-#~ msgstr "Связанные ключи"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Неактивные ключи"
-
-#~ msgid "Unused"
-#~ msgstr "Не используется"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Отпечаток этого устройства"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Будет сгенерирован при первом подключении"
-
-#~ msgid "Your contact"
-#~ msgstr "Ваш контакт"
-
-#~ msgid "Not matching"
-#~ msgstr "Не совпадает"
-
-#~ msgid "Matching"
-#~ msgstr "Совпадает"
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "highlighted accordingly in the chat window."
-#~ msgstr ""
-#~ "После подтверждения все последующие сообщения, отправленные с %s при "
-#~ "помощи этого ключа, будут соответственно подсвечены в окне чата."
-
-#~ msgid ""
-#~ "Stop accepting this key during communication with its associated contact."
-#~ msgstr "Не принимать ключ этого контакта."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact"
-#~ msgstr "Принять ключ этого контакта"
-
-#~ msgid ""
-#~ "This means it cannot be used by %s to receive messages, and any messages "
-#~ "sent by it will be ignored."
-#~ msgstr ""
-#~ "Это значит, что %s не может отправлять сообщения — все они будут "
-#~ "игнорироваться."
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "ignored and none of your messages will be readable using this key."
-#~ msgstr ""
-#~ "После подтверждения все будущие сообщения, отправленные %s с "
-#~ "использованием этого ключа, будут игнорироваться и ни одно из ваших "
-#~ "сообщений не сможет быть прочитано с использованием этого ключа."
-
-#~ msgid ""
-#~ "Once confirmed this key will be usable by %s to receive and send messages."
-#~ msgstr ""
-#~ "После подтверждения этот ключ будет использоваться %s для получения и "
-#~ "отправки сообщений."
-
-#~ msgid ""
-#~ "When this contact adds new encryption keys to their account, "
-#~ "automatically accept them."
-#~ msgstr ""
-#~ "Когда этот контакт добавляет новые ключи шифрования в свою учетную "
-#~ "запись, автоматически принимайте их."
-
-#~ msgid ""
-#~ "When you add new encryption keys to your account, automatically accept "
-#~ "them."
-#~ msgstr ""
-#~ "Когда вы добавляете новые ключи шифрования в свою учетную запись, "
-#~ "автоматически принимайте их."
-
-#~ msgid "Unknown device (0x%.8x)"
-#~ msgstr "Неизвестное устройство (0x%.8x)"
-
-#~ msgid "Other devices"
-#~ msgstr "Другие устройства"
-
-#~ msgid "- None -"
-#~ msgstr "- Нет -"
diff --git a/plugins/omemo/po/sq.po b/plugins/omemo/po/sq.po
deleted file mode 100644
index 374cb2f3..00000000
--- a/plugins/omemo/po/sq.po
+++ /dev/null
@@ -1,318 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2025-04-10 11:50+0000\n"
-"Language-Team: none\n"
-"Language: sq\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: Weblate 5.11-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s ka përdorur një pajisje jo të besuar. S’do të shihni mesazhe prej "
-"pajisjesh që nuk i besoni."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Administroni pajisje"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s nuk e beson këtë pajisje. Kjo do të thotë, mund të jeni duke humbur "
-"mesazhe."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Administroni Kyç"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Krahasoni shenjën e gishtave, shenjë pas shenje, me atë të shfaqur në "
-"pajisjen e kontaktit tuaj."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Shenjat e gishtave janë të ndryshme"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Shenjat e gishtave përputhen"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Anuloje"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Ripohojeni"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Verifikoni kyç"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"Mesazhe të ardhshme dërguar nga %s prej pajisjes që përdor këtë kyç do të "
-"theksohen te dritarja e fjalosjes."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Shenjat e gishtave s’përputhen"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Ju lutemi, verifikoni se po krahasoni shenjat e sakta të gishtave. Nëse "
-"shenjat e gishtave s’përputhen, llogaria e %s mund të komprometohet dhe "
-"duhet të shihni mundësinë e hedhjes poshtë të këtij kyçi."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Verifikoni shenja gishtash kyçi"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Krahasoni shenjën e gishtit të këtij kyçi me shenjën e gishtit të shfaqur në "
-"pajisjen e kontaktit."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Hidhe tej kyçin"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Blloko komunikim të fshehtëzuar me pajisjen e kontaktit që përdor këtë kyç."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Pranoje kyçin"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Lejo komunikim të fshehtëzuar me pajisjen e kontaktit që përdor këtë kyç."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Ky kyç aktualisht është %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "i pranuar"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Kjo do të thotë se mund të përdoret nga %s për të marrë dhe dërguar mesazhe "
-"të fshehtëzuara."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "i verifikuar"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-"Për më tepër, është verifikuar për t’u përputhur me kyçin në pajisjen e "
-"kontaktit."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "i hedhur poshtë"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Kjo do të thotë se s’mund të përdoret nga %s për të deshifruar mesazhet "
-"tuaja dhe s’do të shihni dot mesazhe të fshehtëzuara me të."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"S’do të shihni dot mesazhe të fshehtëzuar prej pajisjes së %s që përdor këtë "
-"kyç. Më anë tjetër, ajo pajisje s’do të jetë në gjendje të deshifrojë më "
-"mesazhet tuaja."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Do të jeni në gjendje të shkëmbeni mesazhe të fshehtëzuar me pajisjen e %s "
-"që përdor këtë kyç."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Mbrapsht"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Administroni"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Ky kontakt ka pajisje të reja"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "Lypset vendim besimi OMEMO"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Shtuat një pajisje të re për llogarinë %s?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "OMEMO, si parazgjedhje"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "Aktivizo fshehtëzim OMEMO për biseda të reja"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Fshehtëzo në pajisje të reja"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Fshehtëzo automatikisht në pajisje të reja nga ky kontakt."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Kyçe të rinj"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Kyçe të rinj fshehtëzimi prej pajisjesh tuaja të tjera do të pranohen "
-"automatikisht."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "Këtë pajisje"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "Tjetër pajisje"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "Pajisje"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Të pranuar"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Të hedhur tej"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Të verifikuar"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Pajisje e re"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"Çdo pajisje ka kyçin e vet OMEMO. Mesazhet mund të shfshehtëzohen vetëm nga "
-"një pajisje, nëse janë fshehtëzuar me kyçin e saj."
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "Administrim Kyçesh OMEMO"
-
-#~ msgid "Encryption"
-#~ msgstr "Fshehtëzim"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d pajisje OMEMO"
-#~ msgstr[1] "%d pajisje OMEMO"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Prano automatikisht kyçe të rinj"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr ""
-#~ "Kyçe të rinj fshehtëzimi nga ky kontakt do të pranohen automatikisht."
-
-#~ msgid "Own key"
-#~ msgstr "Kyç i vet"
-
-#~ msgid "Associated keys"
-#~ msgstr "Kyçe të përshoqëruar"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Kyçe jo aktivë"
-
-#~ msgid "Unused"
-#~ msgstr "Të papërdorur"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Shenjë e vet gishtash"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Do të prodhohet gjatë lidhjes së parë"
diff --git a/plugins/omemo/po/sv.po b/plugins/omemo/po/sv.po
deleted file mode 100644
index 7524058a..00000000
--- a/plugins/omemo/po/sv.po
+++ /dev/null
@@ -1,371 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2024-08-16 05:09+0000\n"
-"Language-Team: none\n"
-"Language: sv\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: Weblate 5.7\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s har använt en ej betrodd enhet. Du kommer inte se meddelanden från "
-"enheter du inte litar på."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Hantera enheter"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr "%s litar inte på den här enheten. Du kanske inte ser alla meddelanden."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Hantera nyckel"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Jämför fingeravtrycket, tecken för tecken, med det som visas i din kontakts "
-"enhet."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Fingeravtrycken matcher ej"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Fingeravtrycken matchar"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Avbryt"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Bekräfta"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Verifiera nyckel"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"Framtida meddelanden skickade av %s från enheten som använder denna nyckel "
-"kommer tydligt att markeras i chattfönstret."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Fingeravtrycken överensstämmer inte"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Kontrollera att du jämför rätt fingeravtryck. Om fingeravtrycken inte "
-"stämmer så kan %s konto vara underminerat och du bör överväga att avvisa "
-"denna nyckel."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Verifiera nyckelns fingeravtryck"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Jämför nyckelns fingeravtryck med det fingeravtryck som visas i kontaktens "
-"enhet."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Avvisa nyckeln"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Blockera krypterad kommunikation med kontaktens enhet som använder den här "
-"nyckeln."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Acceptera nyckeln"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Tillåt krypterad kommunikation med kontaktens enhet som använder den här "
-"nyckeln."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Denna nyckel är för närvarande %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "accepterad"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Det betyder att den kan användas av %s för att skicka och ta emot krypterade "
-"meddelanden."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "verifierad"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-"Dessutom har den verifierats så att den överensstämmer med nyckeln på "
-"kontaktens enhet."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "avvisad"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Det innebär att den inte kan användas av %s för att dechiffrera dina "
-"meddelanden och du ser inte meddelanden som krypterats med den."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"Du ser inte krypterade meddelanden från enheten %s som använder den här "
-"nyckeln. Omvänt kan den enheten inte dechiffrera dina meddelanden längre."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Du kommer att kunna utbyta krypterade meddelanden med enheten %s som "
-"använder den här nyckeln."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Tillbaka"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Hantera"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Denna kontakt har nya enheter"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "OMEMO-tillitsbeslut krävs"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Har du lagt till en ny enhet för kontot %s?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "OMEMO som standard"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "Aktivera OMEMO kryptering för nya konversationer"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Kryptera nya enheter"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Kryptera automatiskt för nya enheter från den här kontakten."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Ny nyckel"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr "Nya krypteringsnycklar från dina andra enheter accepteras automatiskt."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Accepterad"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Avvisad"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Verifierad"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Ny enhet"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "OMEMO-nyckelhantering"
-
-#~ msgid "Encryption"
-#~ msgstr "Kryptering"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d OMEMO-enhet"
-#~ msgstr[1] "%d OMEMO-enheter"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Acceptera automatiskt nya nycklar"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr ""
-#~ "Nya krypteringsnycklar från den här kontakten accepteras automatiskt."
-
-#~ msgid "Own key"
-#~ msgstr "Egen nyckel"
-
-#~ msgid "Associated keys"
-#~ msgstr "Kopplade nycklar"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Inaktiva nycklar"
-
-#~ msgid "Unused"
-#~ msgstr "Oanvänd"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Eget fingeravtryck"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Genereras vid första anslutningstillfället"
-
-#~ msgid "Your contact"
-#~ msgstr "Din kontakt"
-
-#~ msgid "Not matching"
-#~ msgstr "Stämmer ej"
-
-#~ msgid "Matching"
-#~ msgstr "Stämmer"
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "highlighted accordingly in the chat window."
-#~ msgstr ""
-#~ "Om du går vidare så kommer framtida meddelanden från %s med denna nyckel "
-#~ "att markeras i enlighet med nyckelns nya status."
-
-#~ msgid ""
-#~ "Stop accepting this key during communication with its associated contact."
-#~ msgstr ""
-#~ "Sluta acceptera denna nyckel vid kommunikation med den tillhörande "
-#~ "kontakten."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact"
-#~ msgstr ""
-#~ "Börja acceptera nyckeln för kommunikation med den tillhörande kontakten"
-
-#~ msgid ""
-#~ "This means it cannot be used by %s to receive messages, and any messages "
-#~ "sent by it will be ignored."
-#~ msgstr ""
-#~ "Det betyder att den inte kan användas av %s för att ta emot meddelanden, "
-#~ "och att alla skickade meddelanden kommer att ignoreras."
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "ignored and none of your messages will be readable using this key."
-#~ msgstr ""
-#~ "Om du går vidare så kommer framtida meddelanden från %s som använder "
-#~ "denna nyckel att ignoreras, och meddelanden från dig blir oläsbara med "
-#~ "denna nyckel."
-
-#~ msgid ""
-#~ "Once confirmed this key will be usable by %s to receive and send messages."
-#~ msgstr ""
-#~ "Om du går vidare så kommer nyckeln kunna användas av %s för att skicka "
-#~ "och ta emot meddelanden."
-
-#~ msgid ""
-#~ "When this contact adds new encryption keys to their account, "
-#~ "automatically accept them."
-#~ msgstr "Acceptera automatiskt nya nycklar som läggs till av denna kontakt."
-
-#~ msgid ""
-#~ "When you add new encryption keys to your account, automatically accept "
-#~ "them."
-#~ msgstr "Acceptera automatiskt nya nycklar som du läggs till ditt konto."
diff --git a/plugins/omemo/po/ta.po b/plugins/omemo/po/ta.po
deleted file mode 100644
index ac48e893..00000000
--- a/plugins/omemo/po/ta.po
+++ /dev/null
@@ -1,304 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2025-07-02 08:01+0000\n"
-"Language-Team: none\n"
-"Language: ta\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: Weblate 5.13-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s நம்பத்தகாத சாதனத்தைப் பயன்படுத்துகின்றன. நீங்கள் நம்பாத சாதனங்களிலிருந்து செய்திகளை "
-"நீங்கள் காண மாட்டீர்கள்."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "சாதனங்களை நிர்வகிக்கவும்"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr "இந்த சாதனத்தை %s நம்பவில்லை. அதாவது, நீங்கள் செய்திகளைக் காணவில்லை."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "விசையை நிர்வகிக்கவும்"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"உங்கள் தொடர்பின் சாதனத்தில் காட்டப்பட்டுள்ள கைரேகை, எழுத்துக்குறி எழுத்துக்குறியை ஒப்பிடுக."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "கைரேகைகள் வேறுபடுகின்றன"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "கைரேகைகள் பொருந்துகின்றன"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "ரத்துசெய்"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "உறுதிப்படுத்தவும்"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "விசையை சரிபார்க்கவும்"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"இந்த விசையைப் பயன்படுத்தும் சாதனத்திலிருந்து %s அனுப்பிய எதிர்கால செய்திகள் அரட்டை "
-"சாளரத்தில் அதற்கேற்ப முன்னிலைப்படுத்தப்படும்."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "கைரேகைகள் பொருந்தவில்லை"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"நீங்கள் சரியான கைரேகையை ஒப்பிடுகிறீர்கள் என்பதை சரிபார்க்கவும். கைரேகைகள் பொருந்தவில்லை "
-"என்றால், %s இன் கணக்கு வேறுபாடின்மை செய்யப்படலாம், மேலும் இந்த விசையை நிராகரிப்பதை நீங்கள் "
-"கருத்தில் கொள்ள வேண்டும்."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "முக்கிய கைரேகையை சரிபார்க்கவும்"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr "இந்த விசையின் கைரேகையை தொடர்பின் சாதனத்தில் காட்டப்படும் கைரேகையுடன் ஒப்பிடுக."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "விசையை நிராகரிக்கவும்"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"இந்த விசையைப் பயன்படுத்தும் தொடர்புகளின் சாதனத்துடன் மறைகுறியாக்கப்பட்ட தகவல்தொடர்புகளைத் "
-"தடுக்கவும்."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "சாவியை ஏற்றுக்கொள்"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"இந்த விசையைப் பயன்படுத்தும் தொடர்புகளின் சாதனத்துடன் மறைகுறியாக்கப்பட்ட தகவல்தொடர்புகளை "
-"அனுமதிக்கவும்."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "இந்த விசை தற்போது %s ஆகும்."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "ஏற்றுக்கொள்ளப்பட்டது"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"இதன் பொருள் மறைகுறியாக்கப்பட்ட செய்திகளைப் பெறுவதற்கும் அனுப்புவதற்கும் %s ஆல் "
-"பயன்படுத்தப்படலாம்."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "சரிபார்க்கப்பட்டது"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr "கூடுதலாக, தொடர்பின் சாதனத்தில் விசையுடன் பொருந்த இது சரிபார்க்கப்பட்டது."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "நிராகரிக்கப்பட்டது"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"இதன் பொருள் உங்கள் செய்திகளைப் புரிந்துகொள்ள %s ஆல் பயன்படுத்த முடியாது, மேலும் அதனுடன் "
-"குறியாக்கம் செய்யப்பட்ட செய்திகளை நீங்கள் காண மாட்டீர்கள்."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"இந்த விசையைப் பயன்படுத்தும் %s சாதனத்திலிருந்து மறைகுறியாக்கப்பட்ட செய்திகளை நீங்கள் காண "
-"மாட்டீர்கள். மாறாக, அந்த சாதனம் உங்கள் செய்திகளை இனி புரிந்துகொள்ள முடியாது."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"இந்த விசையைப் பயன்படுத்தும் %s சாதனத்துடன் மறைகுறியாக்கப்பட்ட செய்திகளை நீங்கள் "
-"பரிமாறிக்கொள்ள முடியும்."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "பின்"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "நிர்வகிக்கவும்"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "இந்த தொடர்புக்கு புதிய சாதனங்கள் உள்ளன"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "ஓம்மோ நம்பிக்கை முடிவு தேவை"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "கணக்கு %s க்கு புதிய சாதனத்தைச் சேர்த்தீர்களா?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "இயல்பாக ஓம்மோ"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "புதிய உரையாடல்களுக்கான ஓமமோ குறியாக்கத்தை இயக்கவும்"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "புதிய சாதனங்களுக்கு குறியாக்கம்"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "இந்த தொடர்பிலிருந்து புதிய சாதனங்களுக்கு தானாக குறியாக்கம் செய்யுங்கள்."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "புதிய விசைகள்"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr "உங்கள் பிற சாதனங்களிலிருந்து புதிய குறியாக்க விசைகள் தானாக ஏற்றுக்கொள்ளப்படும்."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "இந்தக் கருவி"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "பிற கருவி"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "கருவி"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "ஏற்றுக்கொள்ளப்பட்டது"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "நிராகரிக்கப்பட்டது"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "சரிபார்க்கப்பட்டது"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "புதிய சாதனம்"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"ஒவ்வொரு சாதனத்திற்கும் அதன் சொந்த ஓமமோ விசை உள்ளது. செய்திகளை அதன் விசைக்குக் குறியாக்கம் "
-"செய்தால் மட்டுமே அவை மறைகுறியாக்கப்படும். செய்திகள் ஏற்றுக்கொள்ளப்பட்ட சாதனங்களுக்கு மட்டுமே "
-"குறியாக்கம் செய்யப்படுகின்றன."
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "ஓமமோ முக்கிய மேலாண்மை"
-
-#~ msgid "Encryption"
-#~ msgstr "குறியாக்கம்"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d OMEMO சாதனம்"
-#~ msgstr[1] "%d OMEMO சாதனங்கள்"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "புதிய விசைகளை தானாக ஏற்றுக்கொள்ளுங்கள்"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr "இந்த தொடர்பிலிருந்து புதிய குறியாக்க விசைகள் தானாக ஏற்றுக்கொள்ளப்படும்."
-
-#~ msgid "Own key"
-#~ msgstr "சொந்த விசை"
-
-#~ msgid "Associated keys"
-#~ msgstr "தொடர்புடைய விசைகள்"
-
-#~ msgid "Inactive keys"
-#~ msgstr "செயலற்ற விசைகள்"
-
-#~ msgid "Unused"
-#~ msgstr "பயன்படுத்தப்படாதது"
diff --git a/plugins/omemo/po/th.po b/plugins/omemo/po/th.po
deleted file mode 100644
index 784f3aa0..00000000
--- a/plugins/omemo/po/th.po
+++ /dev/null
@@ -1,259 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2025-10-05 07:02+0000\n"
-"Language-Team: none\n"
-"Language: th\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 5.14-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr "%s ได้ใช้อุปกรณ์ที่ไม่น่าเชื่อถือ คุณจะไม่เห็นข้อความจากอุปกรณ์ที่คุณไม่น่าเชื่อถือ"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "จัดการอุปกรณ์"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr "%s ไม่เชื่อถืออุปกรณ์นี้ นั่นหมายความว่าคุณอาจพลาดข้อความ"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "จัดการกุญแจ"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr "เปรียบเทียบลายนิ้วมือแต่ละอักขระกับลายนิ้วมือที่แสดงบนอุปกรณ์ของผู้ติดต่อของคุณ"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "ลายนิ้วมือแตกต่างกัน"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "ลายนิ้วมือตรงกัน"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "ยกเลิก"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "ยืนยัน"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "ตรวจสอบคีย์"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr "ข้อความในอนาคตที่ส่งโดย %s จากอุปกรณ์ที่ใช้คีย์นี้จะถูกไฮไลท์ในหน้าต่างแชทตามลำดับ"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "ลายนิ้วมือไม่ตรงกัน"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"โปรดตรวจสอบให้แน่ใจว่าคุณกำลังเปรียบเทียบลายนิ้วมือที่ถูกต้อง หากลายนิ้วมือไม่ตรงกัน บัญชีของ %s "
-"อาจถูกบุกรุก และคุณควรพิจารณาปฏิเสธคีย์นี้"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "ตรวจสอบลายนิ้วมือคีย์"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr "เปรียบเทียบลายนิ้วมือของคีย์นี้กับลายนิ้วมือที่แสดงบนอุปกรณ์ของผู้ติดต่อ"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "ปฏิเสธคีย์"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr "บล็อกการสื่อสารที่เข้ารหัสกับอุปกรณ์ของผู้ติดต่อที่ใช้คีย์นี้"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "ยอมรับคีย์"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr "อนุญาตให้มีการสื่อสารแบบเข้ารหัสกับอุปกรณ์ของผู้ติดต่อที่ใช้คีย์นี้"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "คีย์นี้ปัจจุบันคือ %s"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "ได้รับการยอมรับ"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr "ซึ่งหมายความว่าสามารถใช้โดย %s เพื่อรับและส่งข้อความเข้ารหัสได้"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "ตรวจสอบแล้ว"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr "นอกจากนี้ ยังได้รับการตรวจสอบว่าตรงกับคีย์บนอุปกรณ์ของผู้ติดต่อแล้ว"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "ถูกปฏิเสธ"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"ซึ่งหมายความว่าไม่สามารถใช้ %s เพื่อถอดรหัสข้อความของคุณได้ "
-"และคุณจะไม่เห็นข้อความที่เข้ารหัสด้วยมัน"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"คุณจะไม่เห็นข้อความเข้ารหัสจากอุปกรณ์ของ %s ที่ใช้คีย์นี้ ในทางกลับกัน "
-"อุปกรณ์นั้นจะไม่สามารถถอดรหัสข้อความของคุณได้อีกต่อไป"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr "คุณจะสามารถแลกเปลี่ยนข้อความเข้ารหัสกับอุปกรณ์ %s ที่ใช้คีย์นี้ได้"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "กลับ"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "จัดการ"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "ผู้ติดต่อรายนี้มีอุปกรณ์ใหม่"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "จำเป็นต้องมีการตัดสินใจเกี่ยวกับความไว้วางใจของ OMEMO"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "คุณได้เพิ่มอุปกรณ์ใหม่สำหรับบัญชี %s แล้วหรือยัง?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "OMEMO ตามค่าเริ่มต้น"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "เปิดใช้งานการเข้ารหัส OMEMO สำหรับการสนทนาใหม่"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "เข้ารหัสไปยังอุปกรณ์ใหม่"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "เข้ารหัสไปยังอุปกรณ์ใหม่จากผู้ติดต่อนี้โดยอัตโนมัติ"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "กุญแจใหม่"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr "คีย์การเข้ารหัสใหม่จากอุปกรณ์อื่นของคุณจะได้รับการยอมรับโดยอัตโนมัติ"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "อุปกรณ์นี้"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "อุปกรณ์อื่น ๆ"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "อุปกรณ์"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "ได้รับการยอมรับ"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "ถูกปฏิเสธ"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "ได้รับการยืนยันแล้ว"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "อุปกรณ์ใหม่"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"แต่ละอุปกรณ์จะมีคีย์ OMEMO ของตัวเอง "
-"ข้อความสามารถถอดรหัสได้โดยอุปกรณ์เฉพาะเมื่อเข้ารหัสด้วยคีย์ของอุปกรณ์นั้นๆ เท่านั้น "
-"ข้อความจะถูกเข้ารหัสไปยังอุปกรณ์ที่ได้รับการยอมรับเท่านั้น"
diff --git a/plugins/omemo/po/tr.po b/plugins/omemo/po/tr.po
deleted file mode 100644
index e16b8961..00000000
--- a/plugins/omemo/po/tr.po
+++ /dev/null
@@ -1,373 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2025-10-11 15:07+0000\n"
-"Language-Team: none\n"
-"Language: tr\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: Weblate 5.14-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s güvenilmeyen bir cihaz kullanıyor. Güvenmediğiniz cihazlardan gelen "
-"mesajları görmezsiniz."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Cihazları yönet"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s bu cihaza güvenmiyor. Bu, eksik mesajlarınız olabileceği anlamına gelir."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Anahtarı Yönet"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Parmak izinin her bir karakterini, kişinizin cihazında gösterilen karakterle "
-"karşılaştırın."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Parmak izleri farklı"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Parmak izleri eşleşiyor"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "İptal"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Onayla"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Anahtarı doğrula"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"Bu anahtarı kullanan cihazdan %s tarafından gönderilen gelecekteki mesajlar, "
-"sohbet penceresinde vurgulanacaktır."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Parmak izleri uyuşmuyor"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Lütfen doğru parmak izini karşılaştırdığınızdan emin olun. Parmak izleri "
-"eşleşmezse, %s hesabının güvenliği ihlal edilmiş olabilir ve bu anahtarı "
-"reddetmenizi öneririz."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Anahtar parmak izini doğrulayın"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Bu anahtarın parmak izini, kişinin cihazında görüntülenen parmak izi ile "
-"karşılaştırın."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Anahtarı reddet"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr "Bu anahtarı kullanan kişinin cihazıyla şifreli iletişimi engelle."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Kabul"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr "Bu anahtarı kullanan kişinin cihazıyla şifreli iletişime izin ver."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Bu anahtar şu anda %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "kabul ediliyor"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Bu, şifreli mesajlar almak ve göndermek için %s tarafından kullanılabileceği "
-"anlamına gelir."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "onaylı"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr "Ayrıca, kişinin cihazındaki anahtarla eşleştiği doğrulandı."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "reddedildi"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Bu, mesajlarınızın şifresini çözmek için %s tarafından kullanılamayacağı ve "
-"onunla şifrelenmiş mesajları göremeyeceğiniz anlamına gelir."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"Bu anahtarı kullanan %s cihazından gelen şifreli mesajları görmeyeceksiniz. "
-"Diğer taraftan, o cihaz artık mesajlarınızın şifresini çözemeyecek."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Bu anahtarı kullanan %s cihazıyla şifreli mesaj alışverişi yapabileceksiniz."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Geri"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Yönet"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Bu kişinin yeni cihazları var"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "OMEMO güven kararı gerekli"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "%s hesabı için yeni bir cihaz eklediniz mi?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "Öntanımlı olarak OMEMO"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "Yeni sohbetler için OMEMO şifrelemesini etkinleştir"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Yeni aygıtlara şifrele"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Bu kişiden yeni aygıtlara otomatik olarak şifrele."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Yeni anahtarlar"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Diğer cihazlarınızdan gelen yeni şifreleme anahtarları otomatik olarak kabul "
-"edilecek."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "Bu aygıt"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "Diğer aygıt"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "Aygıt"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Kabul edildi"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Reddedildi"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Onaylandı"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Yeni aygıt"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"Her aygıtın kendi OMEMO anahtarı vardır. Mesajlar, yalnızca kendi "
-"anahtarıyla şifrelendiyse bir aygıt tarafından şifresi çözülebilir. Mesajlar "
-"yalnızca kabul edilen aygıtlara şifrelenir."
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "OMEMO Anahtar Yönetimi"
-
-#~ msgid "Encryption"
-#~ msgstr "Şifreleme"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d OMEMO aygıtı"
-#~ msgstr[1] "%d OMEMO aygıtı"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Yeni anahtarları otomatik olarak kabul et"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr ""
-#~ "Bu kişiden gelen yeni şifreleme anahtarları otomatik olarak kabul "
-#~ "edilecek."
-
-#~ msgid "Own key"
-#~ msgstr "Kendi anahtarınız"
-
-#~ msgid "Associated keys"
-#~ msgstr "İlişkili anahtarlar"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Etkin olmayan anahtarlar"
-
-#~ msgid "Unused"
-#~ msgstr "Kullanılmamış"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Kendi parmak iziniz"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "İlk bağlantıda oluşturulacak"
-
-#~ msgid "Your contact"
-#~ msgstr "Kişiniz"
-
-#~ msgid "Not matching"
-#~ msgstr "Eşleşmiyor"
-
-#~ msgid "Matching"
-#~ msgstr "Eşleşti"
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "highlighted accordingly in the chat window."
-#~ msgstr ""
-#~ "Onaylandıktan sonra, bu anahtarı kullanarak %s tarafından gönderilen "
-#~ "gelecek iletiler sohbet penceresinde buna göre vurgulanır."
-
-#~ msgid ""
-#~ "Stop accepting this key during communication with its associated contact."
-#~ msgstr ""
-#~ "İlişkili kişiyle iletişim kurarken bu anahtarı kabul etmeyi durdurun."
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact"
-#~ msgstr "İlişkili kişiyle iletişim için bu anahtarı kabul edin"
-
-#~ msgid ""
-#~ "This means it cannot be used by %s to receive messages, and any messages "
-#~ "sent by it will be ignored."
-#~ msgstr ""
-#~ "Bu, %s tarafından ileti almak için kullanılamayacağı ve gönderdiği "
-#~ "iletilerin yok sayılacağı anlamına gelir."
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "ignored and none of your messages will be readable using this key."
-#~ msgstr ""
-#~ "Onaylandıktan sonra, bu anahtarı kullanarak %s tarafından gönderilen "
-#~ "gelecek iletiler yok sayılır ve iletilerinizden hiçbiri bu anahtar "
-#~ "kullanılarak okunmaz."
-
-#~ msgid ""
-#~ "Once confirmed this key will be usable by %s to receive and send messages."
-#~ msgstr ""
-#~ "Onaylandıktan sonra bu anahtar %s tarafından mesaj almak ve göndermek "
-#~ "için kullanılabilir."
-
-#~ msgid ""
-#~ "When this contact adds new encryption keys to their account, "
-#~ "automatically accept them."
-#~ msgstr ""
-#~ "Bu kişi hesaplarına yeni şifreleme anahtarları eklediğinde, otomatik "
-#~ "olarak kabul edilir."
-
-#~ msgid ""
-#~ "When you add new encryption keys to your account, automatically accept "
-#~ "them."
-#~ msgstr ""
-#~ "Hesabınıza yeni şifreleme anahtarları eklediğinizde, bunları otomatik "
-#~ "olarak kabul edin."
diff --git a/plugins/omemo/po/uk.po b/plugins/omemo/po/uk.po
deleted file mode 100644
index 23d2636f..00000000
--- a/plugins/omemo/po/uk.po
+++ /dev/null
@@ -1,321 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2025-04-10 05:39+0000\n"
-"Language-Team: none\n"
-"Language: uk\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"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 5.11-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s використовував(ла) ненадійний пристрій. Ви не будете бачити повідомлення "
-"від пристроїв, яким не довіряєте."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Керування пристроями"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s не довіряє цьому пристрою. Це означає, що ви можете не отримувати "
-"повідомлення."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Керування ключем"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"Порівняйте відбиток, літеру за літерою з тим, що відібражається на пристрої "
-"вашого контакту."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Відбитки відрізняються"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Відбитки збігаються"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Скасувати"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Підтвердити"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Підтвердити ключ"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"Майбутні повідомлення надіслані %s з пристрія, який використовує цей ключ, "
-"будуть відповідно виделені у вікні чату."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Відбитки не збігаються"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Будьласка перевірте, що ви порівнюєте саме той відбиток. Якщо відбитки не "
-"збігаються, обліковий запис %s може бути скомпрометовано, і вам слід "
-"відхилити цей ключ."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Підтвердити відбиток ключа"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"Порівняйте цей відбиток ключа з відбитком, який відображається у пристрої "
-"контакта."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Відхилити ключ"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Заблокувати шифрований зв'язок з пристроєм контакта, який викорустовує цей "
-"ключ."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Прийняти ключ"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr ""
-"Дозволити шифрований зв'язок з пристроєм контакта, який викорустовує цей "
-"ключ."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Цей ключ зараз є %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "прийнято"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Це означає, що %s тепер може приймати та відсилати шифровані повідомлення."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "перевірено"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr "Додатково була підтверджена відповідність ключа на пристрої контакту."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "відхилено"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Це означає, що він не може бути задіян %s щоб дешифрувати ваші повідомлення "
-"і ви не зможете побачити повідомлень зашифрованих ним."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"Ви не побачете шифровані повідомлення з пристрія %s, що використовує цей "
-"ключ. І навпаки, цей пристрій більше не зможе розшифрувати ваші повідомлення."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Ви можете обмінюватися шифрованими повідомленнями з пристріем %s, що "
-"використовує цей ключ."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Назад"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Налаштувати"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "У цього контакту з'явилися нові пристрої"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "Потрібне рішення OMEMO про довіру"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Чи додавали ви новий пристрій до облікового запису %s?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "OMEMO за замовчуванням"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "Увімкнути шифрування OMEMO для нових розмов"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Шифрувати до нових пристроїв"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Одразу шифрувати до нових пристроїв цього контакту."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Нові ключи"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Нові ключи шифрування з ваших інших пристроїв будуть прийматися автоматично."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "Цей пристрій"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "Інший пристрій"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "Пристрій"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Прийнятий"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Відхилений"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Перевірений"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Новий пристрій"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"Кожен пристрій має власний ключ OMEMO. Повідомлення можуть бути розшифровані "
-"пристроєм, лише якщо вони зашифровані його ключем. Повідомлення шифруються "
-"лише для підтримуваних пристроїв."
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "Управління ключами OMEMO"
-
-#~ msgid "Encryption"
-#~ msgstr "Шифрування"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d пристрій OMEMO"
-#~ msgstr[1] "%d пристрої OMEMO"
-#~ msgstr[2] "%d пристроїв OMEMO"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Автоматично прийняти нові ключи"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr ""
-#~ "Нові ключи шифрування від цього контакта будуть прийматися автоматично."
-
-#~ msgid "Own key"
-#~ msgstr "Власний ключ"
-
-#~ msgid "Associated keys"
-#~ msgstr "Асоційовані ключі"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Неактивні ключи"
-
-#~ msgid "Unused"
-#~ msgstr "Невикористаний"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Власний відбиток"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Буде згенеровано при першому з'єднанні"
-
-#~ msgid "Your contact"
-#~ msgstr "Ваш контакт"
diff --git a/plugins/omemo/po/vi.po b/plugins/omemo/po/vi.po
deleted file mode 100644
index 9185dec4..00000000
--- a/plugins/omemo/po/vi.po
+++ /dev/null
@@ -1,314 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2025-08-02 17:02+0000\n"
-"Language-Team: none\n"
-"Language: vi\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 5.13-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr ""
-"%s đang sử dụng một thiết bị chưa được tin tưởng. Bạn sẽ không nhìn thấy tin "
-"nhắn từ các thiệt bị bạn không tin tưởng."
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "Quản lý thiết bị"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr ""
-"%s không tin tưởng thiết bị này. Điều đó có nghĩa là bạn có thể bị thiếu tin "
-"nhắn."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "Quản lý khóa"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr ""
-"So sánh chuỗi fingerprint từng ký tự một với chuỗi được hiển thị trên thiết "
-"bị của liên hệ của bạn."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "Fingerprints khác nhau"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "Fingerprints trùng khớp"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "Huỷ"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "Xác nhận"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "Xác thực khoá"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr ""
-"Tin nhắn được gửi trong tương lai bởi %s từ thiết bị sử dụng khoá này sẽ "
-"được làm nổi bật trong cửa sổ trò chuyện."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "Fingerprints không khớp"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"Vui lòng xác minh rằng bạn đang so sánh đúng chuỗi fingerprint. Nếu "
-"fingerprints không khớp, tài khoản của %s có thể đã bị xâm phạm và bạn nên "
-"cân nhắc từ chối khoá này."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "Xác thực khoá fingerprint"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr ""
-"So sáng chuỗi fingerprint của khoá này với chuỗi fingerprint được hiển thị "
-"trên thiết bị của người liên hệ."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "Từ chối khoá"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr "Chặn liên lạc được mã hóa với thiết bị của liên hệ sử dụng khóa này."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "Chấp nhận khóa"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr "Cho phép giao tiếp mã hóa với thiết bị của liên hệ sử dụng khóa này."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "Khoá này hiện %s."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "đã chấp nhận"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr ""
-"Điều này có nghĩa là nó có thể được sử dụng bởi %s để nhận và gửi tin nhắn "
-"được mã hóa."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "đã xác thực"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr ""
-"Ngoài ra, nó đã được xác thực trùng khớp với khóa trên thiết bị của người "
-"liên hệ."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "đã bị từ chối"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr ""
-"Điều này có nghĩa là %s không thể sử dụng nó để giải mã tin nhắn của bạn và "
-"bạn sẽ không thấy tin nhắn được mã hóa bằng nó."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"Bạn sẽ không thấy tin nhắn được mã hóa từ thiết bị của %s sử dụng khóa này. "
-"Ngược lại, thiết bị đó cũng sẽ không thể giải mã tin nhắn của bạn nữa."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr ""
-"Bạn sẽ có thể trao đổi tin nhắn được mã hóa với thiết bị của %s sử dụng khóa "
-"này."
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "Quay lại"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "Quản lý"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "Liên hệ này có thiết bị mới"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "Yêu cầu quyết định ủy thác OMEMO"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "Bạn đã thêm một thiết bị mới cho tài khoản %s à?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "Mặc định mã hoá OMEMO"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "Kích hoạt mã hoá OMEMO cho những cuộc hội thoại mới"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "Mã hoá cho các thiết bị mới"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "Tự động mã hóa sang các thiết bị mới từ liên hệ này."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "Khoá mới"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr ""
-"Khóa mã hóa mới từ các thiết bị khác của bạn sẽ được chấp nhận tự động."
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "Thiết bị này"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "Thiết bị khác"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "Thiết bị"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "Đã chấp nhận"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "Đã từ chối"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "Đã xác thực"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "Thiết bị mới"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-#, fuzzy
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"Mỗi thiết bị có một khoá mã hoá OMEMO riêng. Tin nhắn chỉ có thể được giải "
-"mã bởi một thiết bị nếu chúng được mã hóa bằng khóa của thiết bị đó. Tin "
-"nhắn chỉ được mã hóa bởi các thiết bị được chấp nhận."
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "Quản lý khóa OMEMO"
-
-#~ msgid "Encryption"
-#~ msgstr "Mã hoá"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d thiết bị OMEMO"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "Tự động chấp nhận khóa mới"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr "Các khóa mã hóa mới từ liên hệ này sẽ được chấp nhận tự động."
-
-#~ msgid "Own key"
-#~ msgstr "Khoá của bạn"
-
-#~ msgid "Associated keys"
-#~ msgstr "Các khóa đã liên kết"
-
-#~ msgid "Inactive keys"
-#~ msgstr "Các khoá không hoạt động"
-
-#~ msgid "Unused"
-#~ msgstr "Chưa được sử dụng"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "Fingerprint đang sở hữu"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "Sẽ được tạo trong lần kết nối đầu tiên"
diff --git a/plugins/omemo/po/zh_CN.po b/plugins/omemo/po/zh_CN.po
deleted file mode 100644
index ca059eaf..00000000
--- a/plugins/omemo/po/zh_CN.po
+++ /dev/null
@@ -1,349 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: dino-omemo-0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2025-04-10 05:39+0000\n"
-"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
-"dino/plugin-omemo/zh_Hans/>\n"
-"Language: zh_CN\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 5.11-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr "%s 正在使用未受信任的设备。您将无法查看来自您未信任的设备的消息。"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "管理设备"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr "%s 未信任此设备,这意味着您可能会丢失消息。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "管理密钥"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr "请将指纹逐个字符与对方设备上显示的指纹进行比对。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "指纹不匹配"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "指纹匹配"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "取消"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "确认"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "验证密钥"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr "%s 今后从使用此密钥的设备发送的消息将在聊天窗口中相应突出显示。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "指纹不匹配"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"请验证您正在比对的指纹是否正确。如果指纹不匹配,%s 的账号可能已被盗用,您应考"
-"虑拒绝此密钥。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "验证密钥指纹"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr "请将此密钥的指纹与对方设备上显示的指纹进行比对。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "拒绝密钥"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr "阻止与使用此密钥的对方设备进行加密通信。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "接受密钥"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr "允许与使用此密钥的对方设备进行加密通信。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "此密钥当前%s。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "已接受"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr "这意味着 %s 可以使用此密钥来接收和发送加密消息。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "已验证"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr "此外,已验证其与对方设备上的密钥匹配。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "已拒绝"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr "这意味着 %s 无法使用它来解密您的消息,您将无法查看用它加密的消息。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"您将无法查看来自 %s 的使用此密钥的设备的加密消息。反之,该设备将无法再解密您"
-"的消息。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr "您将能够与 %s 的使用此密钥的设备交换加密消息。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "返回"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "管理"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "此联系人有新设备"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "需要 OMEMO 信任决定"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "您是否为账号 %s 添加了新设备?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr "默认使用 OMEMO"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr "为新对话启用 OMEMO 加密"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr "加密新设备"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr "自动加密此联系人的新设备。"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "新密钥"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr "将自动接受来自您其他设备的新加密密钥。"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr "此设备"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr "其他设备"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr "设备"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "已接受"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "已拒绝"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "已验证"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr "新设备"
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-"每个设备都有自己的 OMEMO 密钥。设备只能解密对设备密钥加密的消息。消息仅对已接"
-"受的设备进行加密。"
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "OMEMO 密钥管理"
-
-#~ msgid "Encryption"
-#~ msgstr "加密"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d 个 OMEMO 设备"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "自动接受新密钥"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr "将自动接受来自此联系人的新加密密钥。"
-
-#~ msgid "Own key"
-#~ msgstr "自己的密钥"
-
-#~ msgid "Associated keys"
-#~ msgstr "关联的密钥"
-
-#~ msgid "Inactive keys"
-#~ msgstr "非活动密钥"
-
-#~ msgid "Unused"
-#~ msgstr "不再使用"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "自己的指纹"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "将在第一次连接时生成"
-
-#~ msgid "Your contact"
-#~ msgstr "您的联系人"
-
-#~ msgid "Not matching"
-#~ msgstr "不匹配"
-
-#~ msgid "Matching"
-#~ msgstr "匹配"
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "highlighted accordingly in the chat window."
-#~ msgstr ""
-#~ "一旦确认,未来由%s使用此密钥发送的任何消息将在聊天窗口中相应突出显示。"
-
-#~ msgid ""
-#~ "Stop accepting this key during communication with its associated contact."
-#~ msgstr "在与其关联的联系人通信期间停止接受此密钥。"
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact"
-#~ msgstr "在与其关联的联系人通信期间开始接受此密钥"
-
-#~ msgid ""
-#~ "This means it cannot be used by %s to receive messages, and any messages "
-#~ "sent by it will be ignored."
-#~ msgstr "这意味着%s不能使用它来接收消息, 它发送的任何消息都将被忽略。"
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "ignored and none of your messages will be readable using this key."
-#~ msgstr ""
-#~ "一旦确认,由%s使用此密钥发送的任何未来消息都将被忽略,并且使用此密钥将无法"
-#~ "读取任何消息。"
-
-#~ msgid ""
-#~ "Once confirmed this key will be usable by %s to receive and send messages."
-#~ msgstr "一旦确认,此密钥将被%s用于接收和发送消息。"
-
-#~ msgid ""
-#~ "When this contact adds new encryption keys to their account, "
-#~ "automatically accept them."
-#~ msgstr "当此联系人向其帐户添加新的加密密钥时,自动接受它们。"
-
-#~ msgid ""
-#~ "When you add new encryption keys to your account, automatically accept "
-#~ "them."
-#~ msgstr "当您向帐户添加新的加密密钥时,会自动接受它们。"
-
-#~ msgid "Unknown device (0x%.8x)"
-#~ msgstr "未知设备 (0x%.8x)"
-
-#~ msgid "Other devices"
-#~ msgstr "其他设备"
-
-#~ msgid "- None -"
-#~ msgstr "- 无 -"
-
-#~ msgid "Database error"
-#~ msgstr "数据库错误"
diff --git a/plugins/omemo/po/zh_TW.po b/plugins/omemo/po/zh_TW.po
deleted file mode 100644
index 9048ece6..00000000
--- a/plugins/omemo/po/zh_TW.po
+++ /dev/null
@@ -1,340 +0,0 @@
-# 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.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-29 11:32+0200\n"
-"PO-Revision-Date: 2020-11-24 05:28+0000\n"
-"Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/"
-"dino/plugin-omemo/zh_Hant/>\n"
-"Language: zh_TW\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 4.4-dev\n"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:168
-#, c-format
-msgid ""
-"%s has been using an untrusted device. You won't see messages from devices "
-"that you do not trust."
-msgstr "%s 使用了未信任的裝置。您不會看見來自未被您信任裝置的訊息。"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:169
-msgid "Manage devices"
-msgstr "管理裝置"
-
-#: plugins/omemo/src/ui/bad_messages_populator.vala:171
-#, c-format
-msgid ""
-"%s does not trust this device. That means, you might be missing messages."
-msgstr "%s 不信任這部裝置。這意味著您可能會遺漏訊息。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:34
-msgid "Manage Key"
-msgstr "管理金鑰"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:35
-msgid ""
-"Compare the fingerprint, character by character, with the one shown on your "
-"contact's device."
-msgstr "將指紋與顯示在聯絡人裝置上的指紋逐個字元地進行比較。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:36
-msgid "Fingerprints differ"
-msgstr "指紋不同"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:37
-msgid "Fingerprints match"
-msgstr "指紋吻合"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:38
-#: plugins/omemo/src/ui/manage_key_dialog.vala:81
-#: plugins/omemo/src/ui/manage_key_dialog.vala:87
-msgid "Cancel"
-msgstr "取消"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:39
-msgid "Confirm"
-msgstr "確定"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:59
-msgid "Verify key"
-msgstr "核驗金鑰"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:60
-#, c-format
-msgid ""
-"Future messages sent by %s from the device that uses this key will be "
-"highlighted accordingly in the chat window."
-msgstr "未來由 %s 從使用了此金鑰的裝置所傳送的訊息都將會在對話視窗內加亮顯示。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:70
-msgid "Fingerprints do not match"
-msgstr "指紋不吻合"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:71
-#, c-format
-msgid ""
-"Please verify that you are comparing the correct fingerprint. If "
-"fingerprints do not match, %s's account may be compromised and you should "
-"consider rejecting this key."
-msgstr ""
-"請確定您正在比較正確的指紋。如果指紋不吻合,%s 的帳號可能不安全,同時您應該考"
-"虑拒絕此金鑰。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid "Verify key fingerprint"
-msgstr "核驗金鑰指紋"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:123
-msgid ""
-"Compare this key's fingerprint with the fingerprint displayed on the "
-"contact's device."
-msgstr "將此金鑰的指紋與顯示在聯絡人裝置上的指紋進行比較。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-#: plugins/omemo/src/ui/manage_key_dialog.vala:151
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:288
-msgid "Reject key"
-msgstr "拒絕金鑰"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:125
-msgid ""
-"Block encrypted communication with the contact's device that uses this key."
-msgstr "封鎖與該聯絡人使用此金鑰的裝置之間的加密通訊。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-#: plugins/omemo/src/ui/manage_key_dialog.vala:159
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:283
-msgid "Accept key"
-msgstr "接收金鑰"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:127
-msgid ""
-"Allow encrypted communication with the contact's device that uses this key."
-msgstr "允許與該聯絡人使用此金鑰的裝置之間的加密通訊。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid "This key is currently %s."
-msgstr "此金鑰目前%s。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-msgid "accepted"
-msgstr "已接收"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:131
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-#, c-format
-msgid "This means it can be used by %s to receive and send encrypted messages."
-msgstr "這表示 %s 可以使用它來傳送及收受加密訊息。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid "verified"
-msgstr "已核驗"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:136
-msgid ""
-"Additionally it has been verified to match the key on the contact's device."
-msgstr "此外,已經核驗它與聯絡人裝置上的金鑰吻合。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-msgid "rejected"
-msgstr "已拒絕"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:140
-#, c-format
-msgid ""
-"This means it cannot be used by %s to decipher your messages, and you won't "
-"see messages encrypted with it."
-msgstr "這表示 %s 無法使用它來解密您的訊息,同時您不會看到使用它加密的訊息。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:152
-#, c-format
-msgid ""
-"You won't see encrypted messages from the device of %s that uses this key. "
-"Conversely, that device won't be able to decipher your messages anymore."
-msgstr ""
-"您不會看到從 %s 使用此金鑰的裝置所傳送的加密訊息。同時,該裝置亦無法再解密您"
-"的訊息。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:160
-#, c-format
-msgid ""
-"You will be able to exchange encrypted messages with the device of %s that "
-"uses this key."
-msgstr "您將能夠與 %s 所使用此金鑰的裝置互相傳送加密訊息。"
-
-#: plugins/omemo/src/ui/manage_key_dialog.vala:166
-msgid "Back"
-msgstr "返回"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:73
-msgid "Manage"
-msgstr "管理"
-
-#: plugins/omemo/src/ui/device_notification_populator.vala:80
-msgid "This contact has new devices"
-msgstr "此連絡人有新的裝置"
-
-#: plugins/omemo/src/ui/own_notifications.vala:29
-msgid "OMEMO trust decision required"
-msgstr "需要 OMEMO 信任決策"
-
-#: plugins/omemo/src/ui/own_notifications.vala:31
-#, c-format
-msgid "Did you add a new device for account %s?"
-msgstr "您是否有爲帳號 %s 增加新裝置?"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:52
-msgid "OMEMO by default"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:53
-msgid "Enable OMEMO encryption for new conversations"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:54
-msgid "Encrypt to new devices"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:55
-msgid "Automatically encrypt to new devices from this contact."
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:56
-msgid "New keys"
-msgstr "新金鑰"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:100
-msgid ""
-"New encryption keys from your other devices will be accepted automatically."
-msgstr "來自您其它裝置的新加密金鑰將會被自動接收。"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:160
-msgid "This device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Other device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:220
-msgid "Device"
-msgstr ""
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:222
-msgid "Accepted"
-msgstr "已接收"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:225
-msgid "Rejected"
-msgstr "已拒絕"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:228
-msgid "Verified"
-msgstr "已核驗"
-
-#: plugins/omemo/src/ui/encryption_preferences_entry.vala:277
-msgid "New device"
-msgstr ""
-
-#: plugins/omemo/data/encryption_preferences_entry.ui:8
-msgid ""
-"Each device has its own OMEMO key. Messages can only be decrypted by a "
-"device if they are encrypted to its key. Messages are only encrypted to "
-"accepted devices."
-msgstr ""
-
-#~ msgid "OMEMO Key Management"
-#~ msgstr "OMEMO 金鑰管理"
-
-#~ msgid "Encryption"
-#~ msgstr "加密"
-
-#, c-format
-#~ msgid "%d OMEMO device"
-#~ msgid_plural "%d OMEMO devices"
-#~ msgstr[0] "%d 個 OMEMO 裝置"
-
-#~ msgid "Automatically accept new keys"
-#~ msgstr "自動接收新金鑰"
-
-#~ msgid ""
-#~ "New encryption keys from this contact will be accepted automatically."
-#~ msgstr "新的來自此聯絡人的加密金鑰將會被自動接收。"
-
-#~ msgid "Own key"
-#~ msgstr "本裝置金鑰"
-
-#~ msgid "Associated keys"
-#~ msgstr "其它裝置上的金鑰"
-
-#~ msgid "Inactive keys"
-#~ msgstr "長時間未用過的金鑰"
-
-#~ msgid "Unused"
-#~ msgstr "不再使用"
-
-#~ msgid "Own fingerprint"
-#~ msgstr "本裝置指紋"
-
-#~ msgid "Will be generated on first connection"
-#~ msgstr "將會在第一次連線時產生"
-
-#~ msgid "Your contact"
-#~ msgstr "您的聯絡人"
-
-#~ msgid "Not matching"
-#~ msgstr "不吻合"
-
-#~ msgid "Matching"
-#~ msgstr "吻合"
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "highlighted accordingly in the chat window."
-#~ msgstr ""
-#~ "一經確定,所有未來由 %s 使用此金鑰傳送的訊息都會在對話視窗內被加亮。"
-
-#~ msgid ""
-#~ "Stop accepting this key during communication with its associated contact."
-#~ msgstr "在與其連結的聯絡人通訊期間停止接收此金鑰。"
-
-#~ msgid ""
-#~ "Start accepting this key during communication with its associated contact"
-#~ msgstr "在與其連結的聯絡人通訊期間開始接收此金鑰"
-
-#~ msgid ""
-#~ "This means it cannot be used by %s to receive messages, and any messages "
-#~ "sent by it will be ignored."
-#~ msgstr "這代表 %s 不能使用它來收受訊息,並且經它傳送的所有訊息都將被忽略。"
-
-#~ msgid ""
-#~ "Once confirmed, any future messages sent by %s using this key will be "
-#~ "ignored and none of your messages will be readable using this key."
-#~ msgstr ""
-#~ "一經確定,所有未來由 %s 使用此金鑰傳送的訊息都會被忽略,並且無法使用此金鑰"
-#~ "讀取您的任何訊息。"
-
-#~ msgid ""
-#~ "Once confirmed this key will be usable by %s to receive and send messages."
-#~ msgstr "一經確定,此金鑰將會被 %s 用於收受及傳送訊息。"
-
-#~ msgid ""
-#~ "When this contact adds new encryption keys to their account, "
-#~ "automatically accept them."
-#~ msgstr "當此聯絡人新增加密金鑰到其帳號時,自動接收它們。"
-
-#~ msgid ""
-#~ "When you add new encryption keys to your account, automatically accept "
-#~ "them."
-#~ msgstr "當您新增加密金鑰到您的帳號時,自動接收它們。"
diff --git a/plugins/omemo/src/dtls_srtp_verification_draft.vala b/plugins/omemo/src/dtls_srtp_verification_draft.vala
deleted file mode 100644
index 09617a2a..00000000
--- a/plugins/omemo/src/dtls_srtp_verification_draft.vala
+++ /dev/null
@@ -1,268 +0,0 @@
-using Omemo;
-using Gee;
-using Xmpp;
-
-namespace Dino.Plugins.Omemo.DtlsSrtpVerificationDraft {
- public const string NS_URI = "http://gultsch.de/xmpp/drafts/omemo/dlts-srtp-verification";
-
- public class StreamModule : XmppStreamModule {
-
- public static Xmpp.ModuleIdentity<StreamModule> IDENTITY = new Xmpp.ModuleIdentity<StreamModule>(NS_URI, "dtls_srtp_omemo_verification_draft");
-
- private VerificationSendListener send_listener = new VerificationSendListener();
- private HashMap<string, int> device_id_by_jingle_sid = new HashMap<string, int>();
- private HashMap<string, int> device_id_by_muji_member = new HashMap<string, int>();
- private HashMap<string, Gee.List<string>> content_names_by_jingle_sid = new HashMap<string, Gee.List<string>>();
-
- private void on_preprocess_incoming_iq_set_get(XmppStream stream, Xmpp.Iq.Stanza iq) {
- if (iq.type_ != Iq.Stanza.TYPE_SET) return;
-
- Gee.List<StanzaNode> content_nodes = iq.stanza.get_deep_subnodes(Xep.Jingle.NS_URI + ":jingle", Xep.Jingle.NS_URI + ":content");
- if (content_nodes.size == 0) return;
-
- string? jingle_sid = iq.stanza.get_deep_attribute(Xep.Jingle.NS_URI + ":jingle", "sid");
- if (jingle_sid == null) return;
-
- Xep.Omemo.OmemoDecryptor decryptor = stream.get_module(Xep.Omemo.OmemoDecryptor.IDENTITY);
-
- foreach (StanzaNode content_node in content_nodes) {
- string? content_name = content_node.get_attribute("name");
- if (content_name == null) continue;
- StanzaNode? transport_node = content_node.get_subnode("transport", Xep.JingleIceUdp.NS_URI);
- if (transport_node == null) continue;
- StanzaNode? fingerprint_node = transport_node.get_subnode("fingerprint", NS_URI);
- if (fingerprint_node == null) continue;
- StanzaNode? encrypted_node = fingerprint_node.get_subnode("encrypted", Omemo.NS_URI);
- if (encrypted_node == null) continue;
-
- Xep.Omemo.ParsedData? parsed_data = decryptor.parse_node(encrypted_node);
- if (parsed_data == null || parsed_data.ciphertext == null) continue;
-
- if (device_id_by_jingle_sid.has_key(jingle_sid) && device_id_by_jingle_sid[jingle_sid] != parsed_data.sid) {
- warning("Expected DTLS fingerprint to be OMEMO encrypted from %s %d, but it was from %d", iq.from.to_string(), device_id_by_jingle_sid[jingle_sid], parsed_data.sid);
- }
-
- foreach (Bytes encr_key in parsed_data.our_potential_encrypted_keys.keys) {
- parsed_data.is_prekey = parsed_data.our_potential_encrypted_keys[encr_key];
- parsed_data.encrypted_key = encr_key.get_data();
-
- try {
- uint8[] key = decryptor.decrypt_key(parsed_data, iq.from.bare_jid);
- string cleartext = decryptor.decrypt(parsed_data.ciphertext, key, parsed_data.iv);
-
- StanzaNode new_fingerprint_node = new StanzaNode.build("fingerprint", Xep.JingleIceUdp.DTLS_NS_URI).add_self_xmlns()
- .put_node(new StanzaNode.text(cleartext));
- string? hash_attr = fingerprint_node.get_attribute("hash", NS_URI);
- string? setup_attr = fingerprint_node.get_attribute("setup", NS_URI);
- if (hash_attr != null) new_fingerprint_node.put_attribute("hash", hash_attr);
- if (setup_attr != null) new_fingerprint_node.put_attribute("setup", setup_attr);
- transport_node.put_node(new_fingerprint_node);
-
- device_id_by_jingle_sid[jingle_sid] = parsed_data.sid;
- if (!content_names_by_jingle_sid.has_key(content_name)) {
- content_names_by_jingle_sid[content_name] = new ArrayList<string>();
- }
- content_names_by_jingle_sid[content_name].add(content_name);
-
- stream.get_flag(Xep.Jingle.Flag.IDENTITY).get_session.begin(jingle_sid, (_, res) => {
- Xep.Jingle.Session? session = stream.get_flag(Xep.Jingle.Flag.IDENTITY).get_session.end(res);
- if (session == null || !session.contents_map.has_key(content_name)) return;
- var encryption = new OmemoContentEncryption(NS_URI, "OMEMO", iq.from.bare_jid, device_id_by_jingle_sid[jingle_sid]);
- session.contents_map[content_name].encryptions[NS_URI] = encryption;
-
- if (iq.stanza.get_deep_attribute(Xep.Jingle.NS_URI + ":jingle", "action") == "session-accept") {
- session.additional_content_add_incoming.connect(on_content_add_received);
- }
- });
-
- break;
- } catch (Error e) {
- debug("Decrypting message from %s/%d failed: %s", iq.from.bare_jid.to_string(), parsed_data.sid, e.message);
- }
- }
- }
- }
-
- private void on_preprocess_outgoing_iq_set_get(XmppStream stream, Xmpp.Iq.Stanza iq) {
- if (iq.type_ != Iq.Stanza.TYPE_SET) return;
-
- StanzaNode? jingle_node = iq.stanza.get_subnode("jingle", Xep.Jingle.NS_URI);
- if (jingle_node == null) return;
-
- int device_id = -1;
- string? sid = jingle_node.get_attribute("sid", Xep.Jingle.NS_URI);
- if (sid != null && device_id_by_jingle_sid.has_key(sid)) {
- device_id = device_id_by_jingle_sid[sid];
- }
-
- StanzaNode? muji_node = jingle_node.get_subnode("muji", Xep.Muji.NS_URI);
- if (muji_node != null) {
- string muji_room = muji_node.get_attribute("room");
- try {
- Jid muji_jid = Jid.from_string(muji_room);
- if (device_id_by_muji_member.has_key(@"$(muji_jid.bare_jid)/$(iq.to)")) {
- device_id = device_id_by_muji_member[@"$(muji_jid.bare_jid)/$(iq.to)"];
- }
- } catch (InvalidJidError e) {
- // Ignore
- }
- }
-
- if (device_id == -1) return;
-
- Gee.List<StanzaNode> content_nodes = jingle_node.get_subnodes("content", Xep.Jingle.NS_URI);
- if (content_nodes.size == 0) return;
-
- foreach (StanzaNode content_node in content_nodes) {
- StanzaNode? transport_node = content_node.get_subnode("transport", Xep.JingleIceUdp.NS_URI);
- if (transport_node == null) continue;
- StanzaNode? fingerprint_node = transport_node.get_subnode("fingerprint", Xep.JingleIceUdp.DTLS_NS_URI);
- if (fingerprint_node == null) continue;
- string fingerprint = fingerprint_node.get_deep_string_content();
-
- StanzaNode? encrypted_node = null;
- try {
- Xep.Omemo.OmemoEncryptor encryptor = stream.get_module(Xep.Omemo.OmemoEncryptor.IDENTITY);
- Xep.Omemo.EncryptionData enc_data = encryptor.encrypt_plaintext(fingerprint);
- encryptor.encrypt_key(enc_data, iq.to.bare_jid, device_id);
- encrypted_node = enc_data.get_encrypted_node();
- } catch (Error e) {
- warning("Error while OMEMO-encrypting call keys: %s", e.message);
- return;
- }
-
- StanzaNode new_fingerprint_node = new StanzaNode.build("fingerprint", NS_URI).add_self_xmlns().put_node(encrypted_node);
- string? hash_attr = fingerprint_node.get_attribute("hash", Xep.JingleIceUdp.DTLS_NS_URI);
- string? setup_attr = fingerprint_node.get_attribute("setup", Xep.JingleIceUdp.DTLS_NS_URI);
- if (hash_attr != null) new_fingerprint_node.put_attribute("hash", hash_attr);
- if (setup_attr != null) new_fingerprint_node.put_attribute("setup", setup_attr);
- transport_node.put_node(new_fingerprint_node);
-
- transport_node.sub_nodes.remove(fingerprint_node);
- }
- }
-
- private void on_message_received(XmppStream stream, Xmpp.MessageStanza message) {
- StanzaNode? proceed_node = message.stanza.get_subnode("proceed", Xep.JingleMessageInitiation.NS_URI);
- if (proceed_node == null) return;
-
- string? jingle_sid = proceed_node.get_attribute("id");
- if (jingle_sid == null) return;
-
- StanzaNode? device_node = proceed_node.get_subnode("device", NS_URI);
- if (device_node == null) return;
-
- int device_id = device_node.get_attribute_int("id", -1);
- if (device_id == -1) return;
-
- device_id_by_jingle_sid[jingle_sid] = device_id;
- }
-
- private void on_session_initiate_received(XmppStream stream, Xep.Jingle.Session session) {
- if (device_id_by_jingle_sid.has_key(session.sid)) {
- foreach (Xep.Jingle.Content content in session.contents) {
- on_content_add_received(stream, content);
- }
- }
- session.additional_content_add_incoming.connect(on_content_add_received);
- }
-
- private void on_content_add_received(XmppStream stream, Xep.Jingle.Content content) {
- if (!content_names_by_jingle_sid.has_key(content.session.sid) || content_names_by_jingle_sid[content.session.sid].contains(content.content_name)) {
- var encryption = new OmemoContentEncryption(NS_URI, "OMEMO", content.peer_full_jid.bare_jid, device_id_by_jingle_sid[content.session.sid]);
- content.encryptions[encryption.encryption_ns] = encryption;
- }
- }
-
- private void on_pre_send_presence_stanza(XmppStream stream, Presence.Stanza presence) {
- StanzaNode? muji_node = presence.stanza.get_subnode("muji", Xep.Muji.NS_URI);
- if (muji_node == null) return;
-
- StanzaNode device_node = new StanzaNode.build("device", NS_URI).add_self_xmlns()
- .put_attribute("id", stream.get_module(Omemo.StreamModule.IDENTITY).store.local_registration_id.to_string());
- muji_node.put_node(device_node);
- }
-
- private void on_received_available(XmppStream stream, Presence.Stanza presence) {
- StanzaNode? muji_node = presence.stanza.get_subnode("muji", Xep.Muji.NS_URI);
- if (muji_node == null) return;
-
- StanzaNode? device_node = muji_node.get_subnode("device", NS_URI);
- if (device_node == null) return;
-
- int device_id = device_node.get_attribute_int("id", -1);
- if (device_id == -1) return;
-
- StanzaNode? muc_x_node = presence.stanza.get_subnode("x", "http://jabber.org/protocol/muc#user");
- if (muc_x_node == null) return;
-
- StanzaNode? item_node = muc_x_node.get_subnode("item");
- if (item_node == null) return;
-
- Jid? real_jid = null;
- try {
- string jid_attribute = item_node.get_attribute("jid");
- if (jid_attribute == null) return;
- real_jid = Jid.from_string(jid_attribute);
- } catch (InvalidJidError e) {
- // Ignore
- return;
- }
-
- device_id_by_muji_member[@"$(presence.from.bare_jid)/$(real_jid)"] = device_id;
- }
-
- public override void attach(XmppStream stream) {
- stream.get_module(Xmpp.MessageModule.IDENTITY).received_message.connect(on_message_received);
- stream.get_module(Xmpp.MessageModule.IDENTITY).send_pipeline.connect(send_listener);
- stream.get_module(Xmpp.Iq.Module.IDENTITY).preprocess_incoming_iq_set_get.connect(on_preprocess_incoming_iq_set_get);
- stream.get_module(Xmpp.Iq.Module.IDENTITY).preprocess_outgoing_iq_set_get.connect(on_preprocess_outgoing_iq_set_get);
- stream.get_module(Xep.Jingle.Module.IDENTITY).session_initiate_received.connect(on_session_initiate_received);
- stream.get_module(Xmpp.Presence.Module.IDENTITY).pre_send_presence_stanza.connect(on_pre_send_presence_stanza);
- stream.get_module(Xmpp.Presence.Module.IDENTITY).received_available.connect(on_received_available);
- }
-
- public override void detach(XmppStream stream) {
- stream.get_module(Xmpp.MessageModule.IDENTITY).received_message.disconnect(on_message_received);
- stream.get_module(Xmpp.MessageModule.IDENTITY).send_pipeline.disconnect(send_listener);
- stream.get_module(Xmpp.Iq.Module.IDENTITY).preprocess_incoming_iq_set_get.disconnect(on_preprocess_incoming_iq_set_get);
- stream.get_module(Xmpp.Iq.Module.IDENTITY).preprocess_outgoing_iq_set_get.disconnect(on_preprocess_outgoing_iq_set_get);
- stream.get_module(Xep.Jingle.Module.IDENTITY).session_initiate_received.disconnect(on_session_initiate_received);
- stream.get_module(Xmpp.Presence.Module.IDENTITY).received_available.disconnect(on_received_available);
- }
-
- public override string get_ns() { return NS_URI; }
-
- public override string get_id() { return IDENTITY.id; }
- }
-
- public class VerificationSendListener : StanzaListener<MessageStanza> {
-
- private string[] after_actions_const = {};
-
- public override string action_group { get { return "REWRITE_NODES"; } }
- public override string[] after_actions { get { return after_actions_const; } }
-
- public override async bool run(XmppStream stream, MessageStanza message) {
- StanzaNode? proceed_node = message.stanza.get_subnode("proceed", Xep.JingleMessageInitiation.NS_URI);
- if (proceed_node == null) return false;
-
- StanzaNode device_node = new StanzaNode.build("device", NS_URI).add_self_xmlns()
- .put_attribute("id", stream.get_module(Omemo.StreamModule.IDENTITY).store.local_registration_id.to_string());
- proceed_node.put_node(device_node);
- return false;
- }
- }
-
- public class OmemoContentEncryption : Xep.Jingle.ContentEncryption {
- public Jid jid { get; set; }
- public int sid { get; set; }
-
- public OmemoContentEncryption(string encryption_ns, string encryption_name, Jid jid, int sid) {
- base(encryption_ns, encryption_name);
- this.jid = jid;
- this.sid = sid;
- }
- }
-}
-
diff --git a/plugins/omemo/src/file_transfer/file_decryptor.vala b/plugins/omemo/src/file_transfer/file_decryptor.vala
deleted file mode 100644
index 80303789..00000000
--- a/plugins/omemo/src/file_transfer/file_decryptor.vala
+++ /dev/null
@@ -1,90 +0,0 @@
-using Dino.Entities;
-
-using Crypto;
-using Omemo;
-
-namespace Dino.Plugins.Omemo {
-
-public class OmemoHttpFileReceiveData : HttpFileReceiveData {
- public string original_url;
-}
-
-public class OmemoFileDecryptor : FileDecryptor, Object {
-
- private Regex url_regex = /^aesgcm:\/\/(.*)#(([A-Fa-f0-9]{2}){48}|([A-Fa-f0-9]{2}){44})$/;
-
- public Encryption get_encryption() {
- return Encryption.OMEMO;
- }
-
- public FileReceiveData prepare_get_meta_info(Conversation conversation, FileTransfer file_transfer, FileReceiveData receive_data) {
- HttpFileReceiveData? http_receive_data = receive_data as HttpFileReceiveData;
- if (http_receive_data == null) assert(false);
- if ((receive_data as OmemoHttpFileReceiveData) != null) return receive_data;
-
- var omemo_http_receive_data = new OmemoHttpFileReceiveData();
- omemo_http_receive_data.url = aesgcm_to_https_link(http_receive_data.url);
- omemo_http_receive_data.original_url = http_receive_data.url;
-
- return omemo_http_receive_data;
- }
-
- public FileMeta prepare_download_file(Conversation conversation, FileTransfer file_transfer, FileReceiveData receive_data, FileMeta file_meta) {
- if (file_meta.file_name != null) {
- file_meta.file_name = file_meta.file_name.split("#")[0];
- }
- return file_meta;
- }
-
- public bool can_decrypt_file(Conversation conversation, FileTransfer file_transfer, FileReceiveData receive_data) {
- HttpFileReceiveData? http_file_receive = receive_data as HttpFileReceiveData;
- if (http_file_receive == null) return false;
-
- return this.url_regex.match(http_file_receive.url) || (receive_data as OmemoHttpFileReceiveData) != null;
- }
-
- public async InputStream decrypt_file(InputStream encrypted_stream, Conversation conversation, FileTransfer file_transfer, FileReceiveData receive_data) throws FileReceiveError {
- const uint KEY_SIZE = 32;
- try {
- OmemoHttpFileReceiveData? omemo_http_receive_data = receive_data as OmemoHttpFileReceiveData;
- if (omemo_http_receive_data == null) assert(false);
-
- // Decode IV and key
- MatchInfo match_info;
- this.url_regex.match(omemo_http_receive_data.original_url, 0, out match_info);
- uint8[] iv_and_key = hex_to_bin(match_info.fetch(2).up());
- uint8[] iv = iv_and_key[0:iv_and_key.length-KEY_SIZE];
- uint8[] key = iv_and_key[iv_and_key.length-KEY_SIZE:iv_and_key.length];
-
- file_transfer.encryption = Encryption.OMEMO;
- debug("Decrypting file %s from %s", file_transfer.file_name, file_transfer.server_file_name);
-
- SymmetricCipher cipher = new SymmetricCipher("AES-GCM");
- cipher.set_key(key);
- cipher.set_iv(iv);
- return new ConverterInputStream(encrypted_stream, new SymmetricCipherDecrypter((owned) cipher, 16));
-
- } catch (Crypto.Error e) {
- throw new FileReceiveError.DECRYPTION_FAILED("OMEMO file decryption error: %s".printf(e.message));
- } catch (GLib.Error e) {
- throw new FileReceiveError.DECRYPTION_FAILED("OMEMO file decryption error: %s".printf(e.message));
- }
- }
-
- private uint8[] hex_to_bin(string hex) {
- uint8[] bin = new uint8[hex.length / 2];
- const string HEX = "0123456789ABCDEF";
- for (int i = 0; i < hex.length / 2; i++) {
- bin[i] = (uint8) (HEX.index_of_char(hex[i*2]) << 4) | HEX.index_of_char(hex[i*2+1]);
- }
- return bin;
- }
-
- private string aesgcm_to_https_link(string aesgcm_link) {
- MatchInfo match_info;
- this.url_regex.match(aesgcm_link, 0, out match_info);
- return "https://" + match_info.fetch(1);
- }
-}
-
-}
diff --git a/plugins/omemo/src/file_transfer/file_encryptor.vala b/plugins/omemo/src/file_transfer/file_encryptor.vala
deleted file mode 100644
index 58be7ef1..00000000
--- a/plugins/omemo/src/file_transfer/file_encryptor.vala
+++ /dev/null
@@ -1,76 +0,0 @@
-using Gee;
-using Gtk;
-
-using Crypto;
-using Dino.Entities;
-using Xmpp;
-using Omemo;
-
-namespace Dino.Plugins.Omemo {
-
-public class OmemoHttpFileMeta : HttpFileMeta {
- public uint8[] iv;
- public uint8[] key;
-}
-
-public class OmemoFileEncryptor : Dino.FileEncryptor, Object {
-
- public bool can_encrypt_file(Conversation conversation, FileTransfer file_transfer) {
- return file_transfer.encryption == Encryption.OMEMO;
- }
-
- public FileMeta encrypt_file(Conversation conversation, FileTransfer file_transfer) throws FileSendError {
- const uint KEY_SIZE = 32;
- const uint IV_SIZE = 12;
- var omemo_http_file_meta = new OmemoHttpFileMeta();
-
- try {
- //Create a key and use it to encrypt the file
- uint8[] iv = new uint8[IV_SIZE];
- Plugin.get_context().randomize(iv);
- uint8[] key = new uint8[KEY_SIZE];
- Plugin.get_context().randomize(key);
-
- SymmetricCipher cipher = new SymmetricCipher("AES-GCM");
- cipher.set_key(key);
- cipher.set_iv(iv);
-
- omemo_http_file_meta.iv = iv;
- omemo_http_file_meta.key = key;
- omemo_http_file_meta.size = file_transfer.size + 16;
- omemo_http_file_meta.content_type = new FileContentType.from_mime_type("application/octet-stream");
- file_transfer.input_stream = new ConverterInputStream(file_transfer.input_stream, new SymmetricCipherEncrypter((owned) cipher, 16));
- } catch (Crypto.Error error) {
- throw new FileSendError.ENCRYPTION_FAILED("OMEMO file encryption error: %s".printf(error.message));
- } catch (GLib.Error error) {
- throw new FileSendError.ENCRYPTION_FAILED("OMEMO file encryption error: %s".printf(error.message));
- }
-
- debug("Encrypting file %s as %s", file_transfer.file_name, file_transfer.server_file_name);
-
- return omemo_http_file_meta;
- }
-
- public FileSendData? preprocess_send_file(Conversation conversation, FileTransfer file_transfer, FileSendData file_send_data, FileMeta file_meta) {
- HttpFileSendData? send_data = file_send_data as HttpFileSendData;
- if (send_data == null) return null;
-
- OmemoHttpFileMeta? omemo_http_file_meta = file_meta as OmemoHttpFileMeta;
- if (omemo_http_file_meta == null) return null;
-
- // Convert iv and key to hex
- string iv_and_key = "";
- foreach (uint8 byte in omemo_http_file_meta.iv) iv_and_key += byte.to_string("%02x");
- foreach (uint8 byte in omemo_http_file_meta.key) iv_and_key += byte.to_string("%02x");
-
- string aesgcm_link = send_data.url_down + "#" + iv_and_key;
- aesgcm_link = "aesgcm://" + aesgcm_link.substring(8); // replace https:// by aesgcm://
-
- send_data.url_down = aesgcm_link;
- send_data.encrypt_message = true;
-
- return file_send_data;
- }
-}
-
-}
diff --git a/plugins/omemo/src/jingle/jet_omemo.vala b/plugins/omemo/src/jingle/jet_omemo.vala
deleted file mode 100644
index 2c364625..00000000
--- a/plugins/omemo/src/jingle/jet_omemo.vala
+++ /dev/null
@@ -1,114 +0,0 @@
-using Crypto;
-using Dino;
-using Dino.Entities;
-using Gee;
-using Omemo;
-using Xmpp;
-using Xmpp.Xep;
-
-namespace Dino.Plugins.JetOmemo {
-
-private const string NS_URI = "urn:xmpp:jingle:jet-omemo:0";
-private const string AES_128_GCM_URI = "urn:xmpp:ciphers:aes-128-gcm-nopadding";
-
-public class Module : XmppStreamModule, Jet.EnvelopEncoding {
- public static Xmpp.ModuleIdentity<Module> IDENTITY = new Xmpp.ModuleIdentity<Module>(NS_URI, "0396_jet_omemo");
- const uint KEY_SIZE = 16;
- const uint IV_SIZE = 12;
-
- public override void attach(XmppStream stream) {
- if (stream.get_module(Jet.Module.IDENTITY) != null) {
- stream.get_module(ServiceDiscovery.Module.IDENTITY).add_feature(stream, NS_URI);
- stream.get_module(Jet.Module.IDENTITY).register_envelop_encoding(this);
- stream.get_module(Jet.Module.IDENTITY).register_cipher(new AesGcmCipher(KEY_SIZE, IV_SIZE, AES_128_GCM_URI));
- }
- }
-
- public override void detach(XmppStream stream) {
- stream.get_module(ServiceDiscovery.Module.IDENTITY).remove_feature(stream, NS_URI);
- }
-
- public async bool is_available(XmppStream stream, Jid full_jid) {
- bool? has_feature = yield stream.get_module(ServiceDiscovery.Module.IDENTITY).has_entity_feature(stream, full_jid, NS_URI);
- if (has_feature == null || !(!)has_feature) {
- return false;
- }
- return yield stream.get_module(Xep.Jet.Module.IDENTITY).is_available(stream, full_jid);
- }
-
- public string get_type_uri() {
- return Omemo.NS_URI;
- }
-
- public Jet.TransportSecret decode_envolop(XmppStream stream, Jid local_full_jid, Jid peer_full_jid, StanzaNode security) throws Jingle.IqError {
- StanzaNode? encrypted = security.get_subnode("encrypted", Omemo.NS_URI);
- if (encrypted == null) throw new Jingle.IqError.BAD_REQUEST("Invalid JET-OMEMO envelop: missing encrypted element");
-
- Xep.Omemo.OmemoDecryptor decryptor = stream.get_module(Xep.Omemo.OmemoDecryptor.IDENTITY);
-
- Xmpp.Xep.Omemo.ParsedData? data = decryptor.parse_node(encrypted);
- if (data == null) throw new Jingle.IqError.BAD_REQUEST("Invalid JET-OMEMO envelop: bad encrypted element");
-
- foreach (Bytes encr_key in data.our_potential_encrypted_keys.keys) {
- data.is_prekey = data.our_potential_encrypted_keys[encr_key];
- data.encrypted_key = encr_key.get_data();
-
- try {
- uint8[] key = decryptor.decrypt_key(data, peer_full_jid.bare_jid);
- return new Jet.TransportSecret(key, data.iv);
- } catch (GLib.Error e) {
- debug("Decrypting JET key from %s/%d failed: %s", peer_full_jid.bare_jid.to_string(), data.sid, e.message);
- }
- }
- throw new Jingle.IqError.NOT_ACCEPTABLE("Not encrypted for targeted device");
- }
-
- public void encode_envelop(XmppStream stream, Jid local_full_jid, Jid peer_full_jid, Jet.SecurityParameters security_params, StanzaNode security) {
- Store store = stream.get_module(Omemo.StreamModule.IDENTITY).store;
-
- var encryption_data = new Xep.Omemo.EncryptionData(store.local_registration_id);
- encryption_data.iv = security_params.secret.initialization_vector;
- encryption_data.keytag = security_params.secret.transport_key;
- Xep.Omemo.OmemoEncryptor encryptor = stream.get_module(Xep.Omemo.OmemoEncryptor.IDENTITY);
- encryptor.encrypt_key_to_recipient(stream, encryption_data, peer_full_jid.bare_jid);
-
- security.put_node(encryption_data.get_encrypted_node());
- }
-
- public override string get_ns() { return NS_URI; }
- public override string get_id() { return IDENTITY.id; }
-}
-
-public class AesGcmCipher : Jet.Cipher, Object {
- private uint key_size;
- private uint default_iv_size;
- private string uri;
- public AesGcmCipher(uint key_size, uint default_iv_size, string uri) {
- this.key_size = key_size;
- this.default_iv_size = default_iv_size;
- this.uri = uri;
- }
- public string get_cipher_uri() {
- return uri;
- }
- public Jet.TransportSecret generate_random_secret() {
- uint8[] iv = new uint8[default_iv_size];
- Omemo.Plugin.get_context().randomize(iv);
- uint8[] key = new uint8[key_size];
- Omemo.Plugin.get_context().randomize(key);
- return new Jet.TransportSecret(key, iv);
- }
- public InputStream wrap_input_stream(InputStream input, Jet.TransportSecret secret) requires (secret.transport_key.length == key_size) {
- SymmetricCipher cipher = new SymmetricCipher("AES-GCM");
- cipher.set_key(secret.transport_key);
- cipher.set_iv(secret.initialization_vector);
- return new ConverterInputStream(input, new SymmetricCipherDecrypter((owned) cipher, 16));
- }
- public OutputStream wrap_output_stream(OutputStream output, Jet.TransportSecret secret) requires (secret.transport_key.length == key_size) {
- Crypto.SymmetricCipher cipher = new SymmetricCipher("AES-GCM");
- cipher.set_key(secret.transport_key);
- cipher.set_iv(secret.initialization_vector);
- return new ConverterOutputStream(output, new SymmetricCipherEncrypter((owned) cipher, 16));
- }
-}
-}
diff --git a/plugins/omemo/src/jingle/jingle_helper.vala b/plugins/omemo/src/jingle/jingle_helper.vala
deleted file mode 100644
index ec6c0eca..00000000
--- a/plugins/omemo/src/jingle/jingle_helper.vala
+++ /dev/null
@@ -1,53 +0,0 @@
-using Dino.Entities;
-using Xmpp;
-
-namespace Dino.Plugins.JetOmemo {
-public class EncryptionHelper : JingleFileEncryptionHelper, Object {
- private StreamInteractor stream_interactor;
-
- public EncryptionHelper(StreamInteractor stream_interactor) {
- this.stream_interactor = stream_interactor;
- }
-
- public bool can_transfer(Conversation conversation) {
- return true;
- }
-
- public async bool can_encrypt(Conversation conversation, FileTransfer file_transfer, Jid? full_jid) {
- XmppStream? stream = stream_interactor.get_stream(conversation.account);
- if (stream == null) return false;
-
- Gee.List<Jid>? resources = stream.get_flag(Presence.Flag.IDENTITY).get_resources(conversation.counterpart);
- if (resources == null) return false;
-
- if (full_jid == null) {
- foreach (Jid test_jid in resources) {
- if (yield stream.get_module(Module.IDENTITY).is_available(stream, test_jid)) {
- return true;
- }
- }
- } else {
- if (yield stream.get_module(Module.IDENTITY).is_available(stream, full_jid)) {
- return true;
- }
- }
- return false;
- }
-
- public string? get_precondition_name(Conversation conversation, FileTransfer file_transfer) {
- return Xep.Jet.NS_URI;
- }
-
- public Object? get_precondition_options(Conversation conversation, FileTransfer file_transfer) {
- return new Xep.Jet.Options(Omemo.NS_URI, AES_128_GCM_URI);
- }
-
- public Encryption get_encryption(Xmpp.Xep.JingleFileTransfer.FileTransfer jingle_transfer) {
- Xep.Jet.SecurityParameters? security = jingle_transfer.security as Xep.Jet.SecurityParameters;
- if (security != null && security.encoding.get_type_uri() == Omemo.NS_URI) {
- return Encryption.OMEMO;
- }
- return Encryption.NONE;
- }
-}
-}
diff --git a/plugins/omemo/src/logic/database.vala b/plugins/omemo/src/logic/database.vala
deleted file mode 100644
index ec5a0924..00000000
--- a/plugins/omemo/src/logic/database.vala
+++ /dev/null
@@ -1,284 +0,0 @@
-using Gee;
-using Qlite;
-
-using Dino.Entities;
-
-namespace Dino.Plugins.Omemo {
-
-public class Database : Qlite.Database {
- private const int VERSION = 5;
-
- public class IdentityMetaTable : Table {
- //Default to provide backwards compatability
- public Column<int> identity_id = new Column.Integer("identity_id") { not_null = true, min_version = 2, default = "-1" };
- public Column<string> address_name = new Column.Text("address_name") { not_null = true };
- public Column<int> device_id = new Column.Integer("device_id") { not_null = true };
- public Column<string?> identity_key_public_base64 = new Column.Text("identity_key_public_base64");
- public Column<bool> trusted_identity = new Column.BoolInt("trusted_identity") { default = "0", max_version = 1 };
- public Column<int> trust_level = new Column.Integer("trust_level") { default = TrustLevel.UNKNOWN.to_string(), min_version = 2 };
- public Column<bool> now_active = new Column.BoolInt("now_active") { default = "1" };
- public Column<long> last_active = new Column.Long("last_active");
- public Column<long> last_message_untrusted = new Column.Long("last_message_untrusted") { min_version = 5 };
- public Column<long> last_message_undecryptable = new Column.Long("last_message_undecryptable") { min_version = 5 };
-
- internal IdentityMetaTable(Database db) {
- base(db, "identity_meta");
- init({identity_id, address_name, device_id, identity_key_public_base64, trusted_identity, trust_level, now_active, last_active, last_message_untrusted, last_message_undecryptable});
- index("identity_meta_idx", {identity_id, address_name, device_id}, true);
- index("identity_meta_list_idx", {identity_id, address_name});
- }
-
- public QueryBuilder with_address(int identity_id, string address_name) {
- return select().with(this.identity_id, "=", identity_id).with(this.address_name, "=", address_name);
- }
-
- public QueryBuilder get_with_device_id(int identity_id, int device_id) {
- return select().with(this.identity_id, "=", identity_id).with(this.device_id, "=", device_id);
- }
-
- public void insert_device_list(int32 identity_id, string address_name, ArrayList<int32> devices) {
- update().with(this.identity_id, "=", identity_id).with(this.address_name, "=", address_name).set(now_active, false).perform();
- foreach (int32 device_id in devices) {
- upsert()
- .value(this.identity_id, identity_id, true)
- .value(this.address_name, address_name, true)
- .value(this.device_id, device_id, true)
- .value(this.now_active, true)
- .value(this.last_active, (long) new DateTime.now_utc().to_unix())
- .perform();
- }
- }
-
- public int64 insert_device_bundle(int32 identity_id, string address_name, int device_id, Bundle bundle, TrustLevel trust) {
- if (bundle == null || bundle.identity_key == null) return -1;
- // Do not replace identity_key if it was known before, it should never change!
- string identity_key = Base64.encode(bundle.identity_key.serialize());
- RowOption row = with_address(identity_id, address_name).with(this.device_id, "=", device_id).single().row();
- if (row.is_present() && row[identity_key_public_base64] != null && row[identity_key_public_base64] != identity_key) {
- critical("Tried to change the identity key for a known device id. Likely an attack.");
- return -1;
- }
- return upsert()
- .value(this.identity_id, identity_id, true)
- .value(this.address_name, address_name, true)
- .value(this.device_id, device_id, true)
- .value(this.identity_key_public_base64, identity_key)
- .value(this.trust_level, trust).perform();
- }
-
- public int64 insert_device_session(int32 identity_id, string address_name, int device_id, string identity_key, TrustLevel trust) {
- RowOption row = with_address(identity_id, address_name).with(this.device_id, "=", device_id).single().row();
- if (row.is_present() && row[identity_key_public_base64] != null && row[identity_key_public_base64] != identity_key) {
- critical("Tried to change the identity key for a known device id. Likely an attack.");
- return -1;
- }
- return upsert()
- .value(this.identity_id, identity_id, true)
- .value(this.address_name, address_name, true)
- .value(this.device_id, device_id, true)
- .value(this.identity_key_public_base64, identity_key)
- .value(this.trust_level, trust).perform();
- }
-
- public void update_last_message_untrusted(int identity_id, int device_id, DateTime? time) {
- var stmt = update()
- .with(this.identity_id, "=", identity_id)
- .with(this.device_id, "=", device_id);
- if (time != null) {
- stmt.set(last_message_untrusted, (long)time.to_unix());
- } else {
- stmt.set_null(last_message_untrusted);
- }
- stmt.perform();
- }
-
- public void update_last_message_undecryptable(int identity_id, int device_id, DateTime? time) {
- var stmt = update()
- .with(this.identity_id, "=", identity_id)
- .with(this.device_id, "=", device_id);
- if (time != null) {
- stmt.set(last_message_undecryptable, (long)time.to_unix());
- } else {
- stmt.set_null(last_message_undecryptable);
- }
- stmt.perform();
- }
-
- public QueryBuilder get_trusted_devices(int identity_id, string address_name) {
- return this.with_address(identity_id, address_name)
- .with(this.trust_level, "!=", TrustLevel.UNTRUSTED)
- .with(this.now_active, "=", true);
- }
-
- public QueryBuilder get_known_devices(int identity_id, string address_name) {
- return this.with_address(identity_id, address_name)
- .with(this.trust_level, "!=", TrustLevel.UNKNOWN)
- .without_null(this.identity_key_public_base64);
- }
-
- public QueryBuilder get_unknown_devices(int identity_id, string address_name) {
- return this.with_address(identity_id, address_name)
- .with_null(this.identity_key_public_base64);
- }
-
- public QueryBuilder get_new_devices(int identity_id, string address_name) {
- return this.with_address(identity_id, address_name)
- .with(this.trust_level, "=", TrustLevel.UNKNOWN)
- .without_null(this.identity_key_public_base64);
- }
-
- public Row? get_device(int identity_id, string address_name, int device_id) {
- return this.with_address(identity_id, address_name)
- .with(this.device_id, "=", device_id).single().row().inner;
- }
- }
-
-
- public class TrustTable : Table {
- public Column<int> identity_id = new Column.Integer("identity_id") { not_null = true };
- public Column<string> address_name = new Column.Text("address_name");
- public Column<bool> blind_trust = new Column.BoolInt("blind_trust") { default = "1" } ;
-
- internal TrustTable(Database db) {
- base(db, "trust");
- init({identity_id, address_name, blind_trust});
- index("trust_idx", {identity_id, address_name}, true);
- }
-
- public bool get_blind_trust(int32 identity_id, string address_name, bool def = false) {
- RowOption row = this.select().with(this.identity_id, "=", identity_id)
- .with(this.address_name, "=", address_name).single().row();
- if (row.is_present()) return row[blind_trust];
- return def;
- }
- }
-
- public class IdentityTable : Table {
- public Column<int> id = new Column.Integer("id") { primary_key = true, auto_increment = true };
- public Column<int> account_id = new Column.Integer("account_id") { unique = true, not_null = true };
- public Column<int> device_id = new Column.Integer("device_id") { not_null = true };
- public Column<string> identity_key_private_base64 = new Column.NonNullText("identity_key_private_base64");
- public Column<string> identity_key_public_base64 = new Column.NonNullText("identity_key_public_base64");
-
- internal IdentityTable(Database db) {
- base(db, "identity");
- init({id, account_id, device_id, identity_key_private_base64, identity_key_public_base64});
- }
-
- public int get_id(int account_id) {
- int id = -1;
- Row? row = this.row_with(this.account_id, account_id).inner;
- if (row != null) id = ((!)row)[this.id];
- return id;
- }
- }
-
- public class SignedPreKeyTable : Table {
- public Column<int> identity_id = new Column.Integer("identity_id") { not_null = true };
- public Column<int> signed_pre_key_id = new Column.Integer("signed_pre_key_id") { not_null = true };
- public Column<string> record_base64 = new Column.NonNullText("record_base64");
-
- internal SignedPreKeyTable(Database db) {
- base(db, "signed_pre_key");
- init({identity_id, signed_pre_key_id, record_base64});
- unique({identity_id, signed_pre_key_id});
- index("signed_pre_key_idx", {identity_id, signed_pre_key_id}, true);
- }
- }
-
- public class PreKeyTable : Table {
- public Column<int> identity_id = new Column.Integer("identity_id") { not_null = true };
- public Column<int> pre_key_id = new Column.Integer("pre_key_id") { not_null = true };
- public Column<string> record_base64 = new Column.NonNullText("record_base64");
-
- internal PreKeyTable(Database db) {
- base(db, "pre_key");
- init({identity_id, pre_key_id, record_base64});
- unique({identity_id, pre_key_id});
- index("pre_key_idx", {identity_id, pre_key_id}, true);
- }
- }
-
- public class SessionTable : Table {
- public Column<int> identity_id = new Column.Integer("identity_id") { not_null = true };
- public Column<string> address_name = new Column.NonNullText("name");
- public Column<int> device_id = new Column.Integer("device_id") { not_null = true };
- public Column<string> record_base64 = new Column.NonNullText("record_base64");
-
- internal SessionTable(Database db) {
- base(db, "session");
- init({identity_id, address_name, device_id, record_base64});
- unique({identity_id, address_name, device_id});
- index("session_idx", {identity_id, address_name, device_id}, true);
- }
- }
-
- public class ContentItemMetaTable : Table {
- public Column<int> content_item_id = new Column.Integer("message_id") { primary_key = true };
- public Column<int> identity_id = new Column.Integer("identity_id") { not_null = true };
- public Column<string> address_name = new Column.Text("address_name") { not_null = true };
- public Column<int> device_id = new Column.Integer("device_id") { not_null = true };
- public Column<bool> trusted_when_received = new Column.BoolInt("trusted_when_received") { not_null = true, default = "1" };
-
- internal ContentItemMetaTable(Database db) {
- base(db, "content_item_meta");
- init({content_item_id, identity_id, address_name, device_id, trusted_when_received});
- index("content_item_meta_device_idx", {identity_id, device_id, address_name});
- }
-
- public RowOption with_content_item(ContentItem item) {
- return row_with(content_item_id, item.id);
- }
-
- public QueryBuilder with_device(int identity_id, string address_name, int device_id) {
- return select()
- .with(this.identity_id, "=", identity_id)
- .with(this.address_name, "=", address_name)
- .with(this.device_id, "=", device_id);
- }
- }
-
- public IdentityMetaTable identity_meta { get; private set; }
- public TrustTable trust { get; private set; }
- public IdentityTable identity { get; private set; }
- public SignedPreKeyTable signed_pre_key { get; private set; }
- public PreKeyTable pre_key { get; private set; }
- public SessionTable session { get; private set; }
- public ContentItemMetaTable content_item_meta { get; private set; }
-
- public Database(string fileName) {
- base(fileName, VERSION);
- identity_meta = new IdentityMetaTable(this);
- trust = new TrustTable(this);
- identity = new IdentityTable(this);
- signed_pre_key = new SignedPreKeyTable(this);
- pre_key = new PreKeyTable(this);
- session = new SessionTable(this);
- content_item_meta = new ContentItemMetaTable(this);
- init({identity_meta, trust, identity, signed_pre_key, pre_key, session, content_item_meta});
-
- try {
- exec("PRAGMA journal_mode = WAL");
- exec("PRAGMA synchronous = NORMAL");
- exec("PRAGMA secure_delete = ON");
- } catch (Error e) {
- error("Failed to set OMEMO database properties: %s", e.message);
- }
- }
-
- public override void migrate(long oldVersion) {
- if(oldVersion == 1) {
- try {
- exec("DROP INDEX identity_meta_idx");
- exec("DROP INDEX identity_meta_list_idx");
- exec("CREATE UNIQUE INDEX identity_meta_idx ON identity_meta (identity_id, address_name, device_id)");
- exec("CREATE INDEX identity_meta_list_idx ON identity_meta (identity_id, address_name)");
- } catch (Error e) {
- stderr.printf("Failed to migrate OMEMO database\n");
- Process.exit(-1);
- }
- }
- }
-}
-
-}
diff --git a/plugins/omemo/src/logic/decrypt.vala b/plugins/omemo/src/logic/decrypt.vala
deleted file mode 100644
index 2861b42f..00000000
--- a/plugins/omemo/src/logic/decrypt.vala
+++ /dev/null
@@ -1,210 +0,0 @@
-using Dino.Entities;
-using Qlite;
-using Gee;
-using Omemo;
-using Xmpp;
-
-namespace Dino.Plugins.Omemo {
-
- public class OmemoDecryptor : Xep.Omemo.OmemoDecryptor {
-
- private Account account;
- private Store store;
- private Database db;
- private StreamInteractor stream_interactor;
- private TrustManager trust_manager;
-
- public override uint32 own_device_id { get { return store.local_registration_id; }}
-
- public OmemoDecryptor(Account account, StreamInteractor stream_interactor, TrustManager trust_manager, Database db, Store store) {
- this.account = account;
- this.stream_interactor = stream_interactor;
- this.trust_manager = trust_manager;
- this.db = db;
- this.store = store;
- }
-
- public bool decrypt_message(Entities.Message message, Xmpp.MessageStanza stanza, Conversation conversation) {
- StanzaNode? encrypted_node = stanza.stanza.get_subnode("encrypted", NS_URI);
- if (encrypted_node == null || MessageFlag.get_flag(stanza) != null || stanza.from == null) return false;
-
- if (!Plugin.ensure_context()) return false;
- int identity_id = db.identity.get_id(conversation.account.id);
-
- MessageFlag flag = new MessageFlag();
- stanza.add_flag(flag);
-
- Xep.Omemo.ParsedData? data = parse_node(encrypted_node);
- if (data == null) return false;
-
-
- foreach (Bytes encr_key in data.our_potential_encrypted_keys.keys) {
- data.is_prekey = data.our_potential_encrypted_keys[encr_key];
- data.encrypted_key = encr_key.get_data();
- Gee.List<Jid> possible_jids = get_potential_message_jids(message, data, identity_id);
- if (possible_jids.size == 0) {
- debug("Received message from unknown entity with device id %d", data.sid);
- }
-
- foreach (Jid possible_jid in possible_jids) {
- try {
- uint8[] key = decrypt_key(data, possible_jid);
- if (data.ciphertext != null) {
- string cleartext = arr_to_str(aes_decrypt(Cipher.AES_GCM_NOPADDING, key, data.iv, data.ciphertext));
- message.body = cleartext;
- }
-
- // If we figured out which real jid a message comes from due to decryption working, save it
- if (conversation.type_ == Conversation.Type.GROUPCHAT && message.real_jid == null) {
- message.real_jid = possible_jid;
- }
-
- message.encryption = Encryption.OMEMO;
-
- trust_manager.message_device_id_map[message] = data.sid;
- return true;
- } catch (Error e) {
- debug("Decrypting message from %s/%d failed: %s", possible_jid.to_string(), data.sid, e.message);
- }
- }
- }
-
- if (
- data.ciphertext != null && // Ratchet forwarding doesn't contain payload and might not include us, which is ok
- data.our_potential_encrypted_keys.size == 0 && // The message was not encrypted to us
- stream_interactor.module_manager.get_module(message.account, StreamModule.IDENTITY).store.local_registration_id != data.sid // Message from this device. Never encrypted to itself.
- ) {
- db.identity_meta.update_last_message_undecryptable(identity_id, data.sid, message.time);
- trust_manager.bad_message_state_updated(conversation.account, message.from, data.sid);
- }
-
- debug("Received OMEMO encryped message that could not be decrypted.");
- return false;
- }
-
- public Gee.List<Jid> get_potential_message_jids(Entities.Message message, Xmpp.Xep.Omemo.ParsedData data, int identity_id) {
- Gee.List<Jid> possible_jids = new ArrayList<Jid>();
- if (message.type_ == Message.Type.CHAT) {
- possible_jids.add(message.from.bare_jid);
- } else {
- if (message.real_jid != null) {
- possible_jids.add(message.real_jid.bare_jid);
- } else if (data.is_prekey) {
- // pre key messages do store the identity key, so we can use that to find the real jid
- PreKeyOmemoMessage msg = Plugin.get_context().deserialize_signal_pre_key_message(data.encrypted_key);
- string identity_key = Base64.encode(msg.identity_key.serialize());
- foreach (Row row in db.identity_meta.get_with_device_id(identity_id, data.sid).with(db.identity_meta.identity_key_public_base64, "=", identity_key)) {
- try {
- possible_jids.add(Jid.from_string(row[db.identity_meta.address_name]));
- } catch (InvalidJidError e) {
- warning("Ignoring invalid jid from database: %s", e.message);
- }
- }
- } else {
- // If we don't know the device name (MUC history w/o MAM), test decryption with all keys with fitting device id
- foreach (Row row in db.identity_meta.get_with_device_id(identity_id, data.sid)) {
- try {
- possible_jids.add(Jid.from_string(row[db.identity_meta.address_name]));
- } catch (InvalidJidError e) {
- warning("Ignoring invalid jid from database: %s", e.message);
- }
- }
- }
- }
- return possible_jids;
- }
-
- public override uint8[] decrypt_key(Xmpp.Xep.Omemo.ParsedData data, Jid from_jid) throws GLib.Error {
- int sid = data.sid;
- uint8[] ciphertext = data.ciphertext;
- uint8[] encrypted_key = data.encrypted_key;
-
- Address address = new Address(from_jid.to_string(), sid);
- uint8[] key;
-
- if (data.is_prekey) {
- int identity_id = db.identity.get_id(account.id);
- PreKeyOmemoMessage msg = Plugin.get_context().deserialize_signal_pre_key_message(encrypted_key);
- string identity_key = Base64.encode(msg.identity_key.serialize());
-
- bool ok = update_db_for_prekey(identity_id, identity_key, from_jid, sid);
- if (!ok) throw new GLib.Error(-1, 0, "Failed updating db for prekey");
-
- debug("Starting new session for decryption with device from %s/%d", from_jid.to_string(), sid);
- SessionCipher cipher = store.create_session_cipher(address);
- key = cipher.decrypt_pre_key_message(msg);
- // TODO: Finish session
- } else {
- debug("Continuing session for decryption with device from %s/%d", from_jid.to_string(), sid);
- OmemoMessage msg = Plugin.get_context().deserialize_signal_message(encrypted_key);
- SessionCipher cipher = store.create_session_cipher(address);
- key = cipher.decrypt_message(msg);
- }
-
- if (key.length >= 32) {
- int authtaglength = key.length - 16;
- uint8[] new_ciphertext = new uint8[ciphertext.length + authtaglength];
- uint8[] new_key = new uint8[16];
- Memory.copy(new_ciphertext, ciphertext, ciphertext.length);
- Memory.copy((uint8*)new_ciphertext + ciphertext.length, (uint8*)key + 16, authtaglength);
- Memory.copy(new_key, key, 16);
- data.ciphertext = new_ciphertext;
- key = new_key;
- }
-
- return key;
- }
-
- public override string decrypt(uint8[] ciphertext, uint8[] key, uint8[] iv) throws GLib.Error {
- return arr_to_str(aes_decrypt(Cipher.AES_GCM_NOPADDING, key, iv, ciphertext));
- }
-
- private bool update_db_for_prekey(int identity_id, string identity_key, Jid from_jid, int sid) {
- Row? device = db.identity_meta.get_device(identity_id, from_jid.to_string(), sid);
- if (device != null && device[db.identity_meta.identity_key_public_base64] != null) {
- if (device[db.identity_meta.identity_key_public_base64] != identity_key) {
- critical("Tried to use a different identity key for a known device id.");
- return false;
- }
- } else {
- debug("Learn new device from incoming message from %s/%d", from_jid.to_string(), sid);
- bool blind_trust = db.trust.get_blind_trust(identity_id, from_jid.to_string(), true);
- if (db.identity_meta.insert_device_session(identity_id, from_jid.to_string(), sid, identity_key, blind_trust ? TrustLevel.TRUSTED : TrustLevel.UNKNOWN) < 0) {
- critical("Failed learning a device.");
- return false;
- }
-
- XmppStream? stream = stream_interactor.get_stream(account);
- if (device == null && stream != null) {
- stream.get_module(StreamModule.IDENTITY).request_user_devicelist.begin(stream, from_jid);
- }
- }
- return true;
- }
-
- private string arr_to_str(uint8[] arr) {
- // null-terminate the array
- uint8[] rarr = new uint8[arr.length+1];
- Memory.copy(rarr, arr, arr.length);
- return (string)rarr;
- }
- }
-
- public class DecryptMessageListener : MessageListener {
- public string[] after_actions_const = new string[]{ };
- public override string action_group { get { return "DECRYPT"; } }
- public override string[] after_actions { get { return after_actions_const; } }
-
- private HashMap<Account, OmemoDecryptor> decryptors;
-
- public DecryptMessageListener(HashMap<Account, OmemoDecryptor> decryptors) {
- this.decryptors = decryptors;
- }
-
- public override async bool run(Entities.Message message, Xmpp.MessageStanza stanza, Conversation conversation) {
- decryptors[message.account].decrypt_message(message, stanza, conversation);
- return false;
- }
- }
-}
-
diff --git a/plugins/omemo/src/logic/encrypt.vala b/plugins/omemo/src/logic/encrypt.vala
deleted file mode 100644
index e5d11c69..00000000
--- a/plugins/omemo/src/logic/encrypt.vala
+++ /dev/null
@@ -1,131 +0,0 @@
-using Gee;
-using Omemo;
-using Dino.Entities;
-using Xmpp;
-using Xmpp.Xep.Omemo;
-
-namespace Dino.Plugins.Omemo {
-
- public class OmemoEncryptor : Xep.Omemo.OmemoEncryptor {
-
- private Account account;
- private Store store;
- private TrustManager trust_manager;
-
- public override uint32 own_device_id { get { return store.local_registration_id; }}
-
- public OmemoEncryptor(Account account, TrustManager trust_manager, Store store) {
- this.account = account;
- this.trust_manager = trust_manager;
- this.store = store;
- }
-
- public override Xep.Omemo.EncryptionData encrypt_plaintext(string plaintext) throws GLib.Error {
- const uint KEY_SIZE = 16;
- const uint IV_SIZE = 12;
-
- //Create a key and use it to encrypt the message
- uint8[] key = new uint8[KEY_SIZE];
- Plugin.get_context().randomize(key);
- uint8[] iv = new uint8[IV_SIZE];
- Plugin.get_context().randomize(iv);
-
- uint8[] aes_encrypt_result = aes_encrypt(Cipher.AES_GCM_NOPADDING, key, iv, plaintext.data);
- uint8[] ciphertext = aes_encrypt_result[0:aes_encrypt_result.length - 16];
- uint8[] tag = aes_encrypt_result[aes_encrypt_result.length - 16:aes_encrypt_result.length];
- uint8[] keytag = new uint8[key.length + tag.length];
- Memory.copy(keytag, key, key.length);
- Memory.copy((uint8*)keytag + key.length, tag, tag.length);
-
- var ret = new Xep.Omemo.EncryptionData(own_device_id);
- ret.ciphertext = ciphertext;
- ret.keytag = keytag;
- ret.iv = iv;
- return ret;
- }
-
- public EncryptState encrypt(MessageStanza message, Jid self_jid, Gee.List<Jid> recipients, XmppStream stream) {
-
- EncryptState status = new EncryptState();
- if (!Plugin.ensure_context()) return status;
- if (message.to == null) return status;
-
- try {
- EncryptionData enc_data = encrypt_plaintext(message.body);
- status = encrypt_key_to_recipients(enc_data, self_jid, recipients, stream);
-
- message.stanza.put_node(enc_data.get_encrypted_node());
- Xep.ExplicitEncryption.add_encryption_tag_to_message(message, NS_URI, "OMEMO");
- message.body = "[This message is OMEMO encrypted]";
- status.encrypted = true;
- } catch (Error e) {
- warning(@"error while encrypting message: $(e.message)\n");
- message.body = "[OMEMO encryption failed]";
- status.encrypted = false;
- }
- return status;
- }
-
- internal EncryptState encrypt_key_to_recipients(EncryptionData enc_data, Jid self_jid, Gee.List<Jid> recipients, XmppStream stream) throws Error {
- EncryptState status = new EncryptState();
-
- //Check we have the bundles and device lists needed to send the message
- if (!trust_manager.is_known_address(account, self_jid)) return status;
- status.own_list = true;
- status.own_devices = trust_manager.get_trusted_devices(account, self_jid).size;
- status.other_waiting_lists = 0;
- status.other_devices = 0;
- foreach (Jid recipient in recipients) {
- if (!trust_manager.is_known_address(account, recipient)) {
- status.other_waiting_lists++;
- }
- if (status.other_waiting_lists > 0) return status;
- status.other_devices += trust_manager.get_trusted_devices(account, recipient).size;
- }
- if (status.own_devices == 0 || status.other_devices == 0) return status;
-
-
- //Encrypt the key for each recipient's device individually
- foreach (Jid recipient in recipients) {
- EncryptionResult enc_res = encrypt_key_to_recipient(stream, enc_data, recipient);
- status.add_result(enc_res, false);
- }
-
- // Encrypt the key for each own device
- EncryptionResult enc_res = encrypt_key_to_recipient(stream, enc_data, self_jid);
- status.add_result(enc_res, true);
-
- return status;
- }
-
- public override EncryptionResult encrypt_key_to_recipient(XmppStream stream, Xep.Omemo.EncryptionData enc_data, Jid recipient) throws GLib.Error {
- var result = new EncryptionResult();
- StreamModule module = stream.get_module(StreamModule.IDENTITY);
-
- foreach(int32 device_id in trust_manager.get_trusted_devices(account, recipient)) {
- if (module.is_ignored_device(recipient, device_id)) {
- result.lost++;
- continue;
- }
- try {
- encrypt_key(enc_data, recipient, device_id);
- result.success++;
- } catch (Error e) {
- if (e.code == ErrorCode.UNKNOWN) result.unknown++;
- else result.failure++;
- }
- }
- return result;
- }
-
- public override void encrypt_key(Xep.Omemo.EncryptionData encryption_data, Jid jid, int32 device_id) throws GLib.Error {
- Address address = new Address(jid.to_string(), device_id);
- SessionCipher cipher = store.create_session_cipher(address);
- CiphertextMessage device_key = cipher.encrypt(encryption_data.keytag);
- address.device_id = 0;
- debug("Created encrypted key for %s/%d", jid.to_string(), device_id);
-
- encryption_data.add_device_key(device_id, device_key.serialized, device_key.type == CiphertextType.PREKEY);
- }
- }
-} \ No newline at end of file
diff --git a/plugins/omemo/src/logic/manager.vala b/plugins/omemo/src/logic/manager.vala
deleted file mode 100644
index 71f17aae..00000000
--- a/plugins/omemo/src/logic/manager.vala
+++ /dev/null
@@ -1,429 +0,0 @@
-using Dino.Entities;
-using Omemo;
-using Qlite;
-using Xmpp;
-using Gee;
-
-namespace Dino.Plugins.Omemo {
-
-public class Manager : StreamInteractionModule, Object {
- public static ModuleIdentity<Manager> IDENTITY = new ModuleIdentity<Manager>("omemo_manager");
- public string id { get { return IDENTITY.id; } }
-
- private StreamInteractor stream_interactor;
- private Database db;
- private TrustManager trust_manager;
- private HashMap<Account, OmemoEncryptor> encryptors;
- private Map<Entities.Message, MessageState> message_states = new HashMap<Entities.Message, MessageState>(Entities.Message.hash_func, Entities.Message.equals_func);
-
- private class MessageState {
- public Entities.Message msg { get; private set; }
- public Xep.Omemo.EncryptState last_try { get; private set; }
- public int waiting_other_sessions { get; set; }
- public int waiting_own_sessions { get; set; }
- public bool waiting_own_devicelist { get; set; }
- public int waiting_other_devicelists { get; set; }
- public bool force_next_attempt { get; set; }
- public bool will_send_now { get; private set; }
- public bool active_send_attempt { get; set; }
-
- public MessageState(Entities.Message msg, Xep.Omemo.EncryptState last_try) {
- update_from_encrypt_status(msg, last_try);
- }
-
- public void update_from_encrypt_status(Entities.Message msg, Xep.Omemo.EncryptState new_try) {
- this.msg = msg;
- this.last_try = new_try;
- this.waiting_other_sessions = new_try.other_unknown;
- this.waiting_own_sessions = new_try.own_unknown;
- this.waiting_own_devicelist = !new_try.own_list;
- this.waiting_other_devicelists = new_try.other_waiting_lists;
- this.active_send_attempt = false;
- will_send_now = false;
- if (new_try.other_failure > 0 || (new_try.other_lost == new_try.other_devices && new_try.other_devices > 0)) {
- msg.marked = Entities.Message.Marked.WONTSEND;
- } else if (new_try.other_unknown > 0 || new_try.own_unknown > 0 || new_try.other_waiting_lists > 0 || !new_try.own_list || new_try.own_devices == 0) {
- msg.marked = Entities.Message.Marked.UNSENT;
- } else if (!new_try.encrypted) {
- msg.marked = Entities.Message.Marked.WONTSEND;
- } else {
- will_send_now = true;
- }
- }
-
- public bool should_retry_now() {
- return !waiting_own_devicelist && waiting_other_devicelists <= 0 && waiting_other_sessions <= 0 && waiting_own_sessions <= 0 && !active_send_attempt;
- }
-
- public string to_string() {
- return @"MessageState (msg=$(msg.stanza_id), send=$will_send_now, $last_try)";
- }
- }
-
- private Manager(StreamInteractor stream_interactor, Database db, TrustManager trust_manager, HashMap<Account, OmemoEncryptor> encryptors) {
- this.stream_interactor = stream_interactor;
- this.db = db;
- this.trust_manager = trust_manager;
- this.encryptors = encryptors;
-
- stream_interactor.account_added.connect(on_account_added);
- stream_interactor.stream_negotiated.connect(on_stream_negotiated);
- stream_interactor.get_module(MessageProcessor.IDENTITY).pre_message_send.connect(on_pre_message_send);
- stream_interactor.get_module(RosterManager.IDENTITY).mutual_subscription.connect(on_mutual_subscription);
- }
-
- public void clear_device_list(Account account) {
- XmppStream? stream = stream_interactor.get_stream(account);
- if (stream == null) return;
-
- stream.get_module(StreamModule.IDENTITY).clear_device_list(stream);
- }
-
- private Gee.List<Jid> get_occupants(Jid jid, Account account){
- Gee.List<Jid> occupants = new ArrayList<Jid>(Jid.equals_bare_func);
- if(!stream_interactor.get_module(MucManager.IDENTITY).is_groupchat(jid, account)){
- occupants.add(jid);
- }
- Gee.List<Jid>? occupant_jids = stream_interactor.get_module(MucManager.IDENTITY).get_offline_members(jid, account);
- if(occupant_jids == null) {
- return occupants;
- }
- foreach (Jid occupant in occupant_jids) {
- if(!occupant.equals(account.bare_jid)){
- occupants.add(occupant.bare_jid);
- }
- }
- return occupants;
- }
-
- private void on_pre_message_send(Entities.Message message, Xmpp.MessageStanza message_stanza, Conversation conversation) {
- if (message.encryption == Encryption.OMEMO) {
- if (message.type_ == Message.Type.GROUPCHAT_PM) {
- message.marked = Message.Marked.WONTSEND;
- return;
- }
- XmppStream? stream = stream_interactor.get_stream(conversation.account);
- if (stream == null) {
- message.marked = Entities.Message.Marked.UNSENT;
- return;
- }
- StreamModule? module_ = ((!)stream).get_module(StreamModule.IDENTITY);
- if (module_ == null) {
- message.marked = Entities.Message.Marked.UNSENT;
- return;
- }
- StreamModule module = (!)module_;
-
- //Get a list of everyone for whom the message should be encrypted
- Gee.List<Jid> recipients;
- if (message_stanza.type_ == MessageStanza.TYPE_GROUPCHAT) {
- recipients = get_occupants((!)message.to.bare_jid, conversation.account);
- if (recipients.size == 0) {
- message.marked = Entities.Message.Marked.WONTSEND;
- return;
- }
- } else {
- recipients = new ArrayList<Jid>(Jid.equals_bare_func);
- recipients.add(message_stanza.to);
- }
-
- //Attempt to encrypt the message
- Xep.Omemo.EncryptState enc_state = encryptors[conversation.account].encrypt(message_stanza, conversation.account.bare_jid, recipients, stream);
- MessageState state;
- lock (message_states) {
- if (message_states.has_key(message)) {
- state = message_states.get(message);
- state.update_from_encrypt_status(message, enc_state);
- if (state.will_send_now) {
- debug("sending message delayed: %s", state.to_string());
- }
- } else {
- state = new MessageState(message, enc_state);
- message_states[message] = state;
- }
- if (state.will_send_now) {
- message_states.unset(message);
- }
- }
-
- //Encryption failed - need to fetch more information
- if (!state.will_send_now) {
- if (message.marked == Entities.Message.Marked.WONTSEND) {
- debug("retracting message %s", state.to_string());
- message_states.unset(message);
- } else {
- debug("delaying message %s", state.to_string());
-
- if (state.waiting_own_sessions > 0) {
- module.fetch_bundles((!)stream, conversation.account.bare_jid, trust_manager.get_trusted_devices(conversation.account, conversation.account.bare_jid));
- }
- if (state.waiting_other_sessions > 0 && message.counterpart != null) {
- foreach(Jid jid in get_occupants(((!)message.counterpart).bare_jid, conversation.account)) {
- module.fetch_bundles((!)stream, jid, trust_manager.get_trusted_devices(conversation.account, jid));
- }
- }
- if (state.waiting_other_devicelists > 0 && message.counterpart != null) {
- foreach(Jid jid in get_occupants(((!)message.counterpart).bare_jid, conversation.account)) {
- module.request_user_devicelist.begin((!)stream, jid);
- }
- }
- }
- }
- }
- }
-
- private void on_mutual_subscription(Account account, Jid jid) {
- XmppStream? stream = stream_interactor.get_stream(account);
- if(stream == null) return;
-
- stream_interactor.module_manager.get_module(account, StreamModule.IDENTITY).request_user_devicelist.begin((!)stream, jid);
- }
-
- private void on_stream_negotiated(Account account, XmppStream stream) {
- StreamModule module = stream_interactor.module_manager.get_module(account, StreamModule.IDENTITY);
- if (module != null) {
- module.request_user_devicelist.begin(stream, account.bare_jid);
- }
- }
-
- private void on_account_added(Account account) {
- StreamModule module = stream_interactor.module_manager.get_module(account, StreamModule.IDENTITY);
- if (module != null) {
- module.device_list_loaded.connect((jid, devices) => on_device_list_loaded(account, jid, devices));
- module.bundle_fetched.connect((jid, device_id, bundle) => on_bundle_fetched(account, jid, device_id, bundle));
- module.bundle_fetch_failed.connect((jid) => continue_message_sending(account, jid));
- }
- initialize_store.begin(account);
- }
-
- private void on_device_list_loaded(Account account, Jid jid, ArrayList<int32> device_list) {
- debug("received device list for %s from %s", account.bare_jid.to_string(), jid.to_string());
-
- XmppStream? stream = stream_interactor.get_stream(account);
- if (stream == null) {
- return;
- }
- StreamModule? module = ((!)stream).get_module(StreamModule.IDENTITY);
- if (module == null) {
- return;
- }
-
- int identity_id = db.identity.get_id(account.id);
- if (identity_id < 0) return;
-
- //Update meta database
- db.identity_meta.insert_device_list(identity_id, jid.bare_jid.to_string(), device_list);
-
- //Fetch the bundle for each new device
- int inc = 0;
- foreach (Row row in db.identity_meta.get_unknown_devices(identity_id, jid.bare_jid.to_string())) {
- try {
- module.fetch_bundle(stream, Jid.from_string(row[db.identity_meta.address_name]), row[db.identity_meta.device_id], false);
- inc++;
- } catch (InvalidJidError e) {
- warning("Ignoring device with invalid Jid: %s", e.message);
- }
- }
- if (inc > 0) {
- debug("new bundles %i/%i for %s", inc, device_list.size, jid.to_string());
- }
-
- //Create an entry for the jid in the account table if one does not exist already
- if (db.trust.select().with(db.trust.identity_id, "=", identity_id).with(db.trust.address_name, "=", jid.bare_jid.to_string()).count() == 0) {
- db.trust.insert().value(db.trust.identity_id, identity_id).value(db.trust.address_name, jid.bare_jid.to_string()).value(db.trust.blind_trust, true).perform();
- }
-
- //Get all messages that needed the devicelist and determine if we can now send them
- HashSet<Entities.Message> send_now = new HashSet<Entities.Message>();
- lock (message_states) {
- foreach (Entities.Message msg in message_states.keys) {
- if (!msg.account.equals(account)) continue;
- Gee.List<Jid> occupants = get_occupants(msg.counterpart.bare_jid, account);
- MessageState state = message_states[msg];
- if (account.bare_jid.equals(jid)) {
- state.waiting_own_devicelist = false;
- } else if (msg.counterpart != null && occupants.contains(jid)) {
- state.waiting_other_devicelists--;
- }
- if (state.should_retry_now()) {
- send_now.add(msg);
- state.active_send_attempt = true;
- }
- }
- }
- foreach (Entities.Message msg in send_now) {
- if (msg.counterpart == null) continue;
- Entities.Conversation? conv = stream_interactor.get_module(ConversationManager.IDENTITY).get_conversation(((!)msg.counterpart), account);
- if (conv == null) continue;
- stream_interactor.get_module(MessageProcessor.IDENTITY).send_xmpp_message(msg, (!)conv, true);
- }
-
- }
-
- private void on_bundle_fetched(Account account, Jid jid, int32 device_id, Bundle bundle) {
- int identity_id = db.identity.get_id(account.id);
- if (identity_id < 0) return;
-
- bool blind_trust = db.trust.get_blind_trust(identity_id, jid.bare_jid.to_string(), true);
-
- //If we don't blindly trust new devices and we haven't seen this key before then don't trust it
- bool untrust = !(blind_trust || db.identity_meta.with_address(identity_id, jid.bare_jid.to_string())
- .with(db.identity_meta.device_id, "=", device_id)
- .with(db.identity_meta.identity_key_public_base64, "=", Base64.encode(bundle.identity_key.serialize()))
- .single().row().is_present());
-
- //Get trust information from the database if the device id is known
- Row device = db.identity_meta.get_device(identity_id, jid.bare_jid.to_string(), device_id);
- TrustLevel trusted = TrustLevel.UNKNOWN;
- if (device != null) {
- trusted = (TrustLevel) device[db.identity_meta.trust_level];
- }
-
- if(untrust) {
- trusted = TrustLevel.UNKNOWN;
- } else if (blind_trust && trusted == TrustLevel.UNKNOWN) {
- trusted = TrustLevel.TRUSTED;
- }
-
- //Update the database with the appropriate trust information
- db.identity_meta.insert_device_bundle(identity_id, jid.bare_jid.to_string(), device_id, bundle, trusted);
-
- if (should_start_session(account, jid)) {
- XmppStream? stream = stream_interactor.get_stream(account);
- if (stream != null) {
- StreamModule? module = ((!)stream).get_module(StreamModule.IDENTITY);
- if (module != null) {
- module.start_session(stream, jid, device_id, bundle);
- }
- }
- }
- continue_message_sending(account, jid);
- }
-
- private bool should_start_session(Account account, Jid jid) {
- lock (message_states) {
- foreach (Entities.Message msg in message_states.keys) {
- if (!msg.account.equals(account)) continue;
- Gee.List<Jid> occupants = get_occupants(msg.counterpart.bare_jid, account);
- if (account.bare_jid.equals(jid) || (msg.counterpart != null && (msg.counterpart.equals_bare(jid) || occupants.contains(jid)))) {
- return true;
- }
- }
- }
- return false;
- }
-
- private void continue_message_sending(Account account, Jid jid) {
- //Get all messages waiting and determine if they can now be sent
- HashSet<Entities.Message> send_now = new HashSet<Entities.Message>();
- lock (message_states) {
- foreach (Entities.Message msg in message_states.keys) {
- if (!msg.account.equals(account)) continue;
- Gee.List<Jid> occupants = get_occupants(msg.counterpart.bare_jid, account);
-
- MessageState state = message_states[msg];
-
- if (account.bare_jid.equals(jid)) {
- state.waiting_own_sessions--;
- } else if (msg.counterpart != null && (msg.counterpart.equals_bare(jid) || occupants.contains(jid))) {
- state.waiting_other_sessions--;
- }
- if (state.should_retry_now()){
- send_now.add(msg);
- state.active_send_attempt = true;
- }
- }
- }
- foreach (Entities.Message msg in send_now) {
- if (msg.counterpart == null) continue;
- Entities.Conversation? conv = stream_interactor.get_module(ConversationManager.IDENTITY).get_conversation((!)msg.counterpart, account);
- if (conv == null) continue;
- stream_interactor.get_module(MessageProcessor.IDENTITY).send_xmpp_message(msg, (!)conv, true);
- }
- }
-
- private async void initialize_store(Account account) {
- // If the account is not yet persisted, wait for that and then continue - without identity.account_id the entry isn't worth much.
- if (account.id == -1) {
- account.notify["id"].connect(() => initialize_store.callback());
- yield;
- }
- StreamModule? module = stream_interactor.module_manager.get_module(account, StreamModule.IDENTITY);
- if (module == null) return;
- Store store = module.store;
- Qlite.Row? row = db.identity.row_with(db.identity.account_id, account.id).inner;
- int identity_id = -1;
- bool publish_identity = false;
-
- if (row == null) {
- // OMEMO not yet initialized, starting with empty base
- publish_identity = true;
- try {
- store.identity_key_store.local_registration_id = Random.int_range(1, int32.MAX);
-
- ECKeyPair key_pair = Plugin.get_context().generate_key_pair();
- store.identity_key_store.identity_key_private = new Bytes(key_pair.private.serialize());
- store.identity_key_store.identity_key_public = new Bytes(key_pair.public.serialize());
-
- identity_id = (int) db.identity.upsert()
- .value(db.identity.account_id, account.id, true)
- .value(db.identity.device_id, (int) store.local_registration_id)
- .value(db.identity.identity_key_private_base64, Base64.encode(store.identity_key_store.identity_key_private.get_data()))
- .value(db.identity.identity_key_public_base64, Base64.encode(store.identity_key_store.identity_key_public.get_data()))
- .perform();
- } catch (Error e) {
- // Ignore error
- }
- } else {
- store.identity_key_store.local_registration_id = ((!)row)[db.identity.device_id];
- store.identity_key_store.identity_key_private = new Bytes(Base64.decode(((!)row)[db.identity.identity_key_private_base64]));
- store.identity_key_store.identity_key_public = new Bytes(Base64.decode(((!)row)[db.identity.identity_key_public_base64]));
- identity_id = ((!)row)[db.identity.id];
- }
-
- if (identity_id >= 0) {
- store.signed_pre_key_store = new BackedSignedPreKeyStore(db, identity_id);
- store.pre_key_store = new BackedPreKeyStore(db, identity_id);
- store.session_store = new BackedSessionStore(db, identity_id);
- } else {
- warning("store for %s is not persisted!", account.bare_jid.to_string());
- }
-
- // Generated new device ID, ensure this gets added to the devicelist
- XmppStream? stream = stream_interactor.get_stream(account);
- if (stream != null) {
- module.request_user_devicelist.begin((!)stream, account.bare_jid);
- }
- }
-
- public async bool ensure_get_keys_for_conversation(Conversation conversation) {
- if (stream_interactor.get_module(MucManager.IDENTITY).is_private_room(conversation.account, conversation.counterpart)) {
- foreach (Jid offline_member in stream_interactor.get_module(MucManager.IDENTITY).get_offline_members(conversation.counterpart, conversation.account)) {
- bool ok = yield ensure_get_keys_for_jid(conversation.account, offline_member);
- if (!ok) {
- return false;
- }
- }
- return true;
- }
-
- return yield ensure_get_keys_for_jid(conversation.account, conversation.counterpart.bare_jid);
- }
-
- public async bool ensure_get_keys_for_jid(Account account, Jid jid) {
- if (trust_manager.is_known_address(account, jid)) return true;
- XmppStream? stream = stream_interactor.get_stream(account);
- if (stream != null) {
- var device_list = yield stream_interactor.module_manager.get_module(account, StreamModule.IDENTITY).request_user_devicelist(stream, jid);
- return device_list.size > 0;
- }
- return true; // TODO wait for stream?
- }
-
- public static void start(StreamInteractor stream_interactor, Database db, TrustManager trust_manager, HashMap<Account, OmemoEncryptor> encryptors) {
- Manager m = new Manager(stream_interactor, db, trust_manager, encryptors);
- stream_interactor.add_module(m);
- }
-}
-
-}
diff --git a/plugins/omemo/src/logic/pre_key_store.vala b/plugins/omemo/src/logic/pre_key_store.vala
deleted file mode 100644
index c15acc84..00000000
--- a/plugins/omemo/src/logic/pre_key_store.vala
+++ /dev/null
@@ -1,45 +0,0 @@
-using Omemo;
-using Qlite;
-
-namespace Dino.Plugins.Omemo {
-
-private class BackedPreKeyStore : SimplePreKeyStore {
- private Database db;
- private int identity_id;
-
- public BackedPreKeyStore(Database db, int identity_id) {
- this.db = db;
- this.identity_id = identity_id;
- init();
- }
-
- private void init() {
- try {
- foreach (Row row in db.pre_key.select().with(db.pre_key.identity_id, "=", identity_id)) {
- store_pre_key(row[db.pre_key.pre_key_id], Base64.decode(row[db.pre_key.record_base64]));
- }
- } catch (Error e) {
- warning("Error while initializing pre key store: %s", e.message);
- }
-
- pre_key_stored.connect(on_pre_key_stored);
- pre_key_deleted.connect(on_pre_key_deleted);
- }
-
- public void on_pre_key_stored(PreKeyStore.Key key) {
- db.pre_key.upsert()
- .value(db.pre_key.identity_id, identity_id, true)
- .value(db.pre_key.pre_key_id, (int) key.key_id, true)
- .value(db.pre_key.record_base64, Base64.encode(key.record))
- .perform();
- }
-
- public void on_pre_key_deleted(PreKeyStore.Key key) {
- db.pre_key.delete()
- .with(db.pre_key.identity_id, "=", identity_id)
- .with(db.pre_key.pre_key_id, "=", (int) key.key_id)
- .perform();
- }
-}
-
-}
diff --git a/plugins/omemo/src/logic/session_store.vala b/plugins/omemo/src/logic/session_store.vala
deleted file mode 100644
index ea5738fd..00000000
--- a/plugins/omemo/src/logic/session_store.vala
+++ /dev/null
@@ -1,49 +0,0 @@
-using Omemo;
-using Qlite;
-
-namespace Dino.Plugins.Omemo {
-
-private class BackedSessionStore : SimpleSessionStore {
- private Database db;
- private int identity_id;
-
- public BackedSessionStore(Database db, int identity_id) {
- this.db = db;
- this.identity_id = identity_id;
- init();
- }
-
- private void init() {
- try {
- foreach (Row row in db.session.select().with(db.session.identity_id, "=", identity_id)) {
- Address addr = new Address(row[db.session.address_name], row[db.session.device_id]);
- store_session(addr, Base64.decode(row[db.session.record_base64]));
- addr.device_id = 0;
- }
- } catch (Error e) {
- print("Error while initializing session store: %s", e.message);
- }
-
- session_stored.connect(on_session_stored);
- session_removed.connect(on_session_deleted);
- }
-
- public void on_session_stored(SessionStore.Session session) {
- db.session.upsert()
- .value(db.session.identity_id, identity_id, true)
- .value(db.session.address_name, session.name, true)
- .value(db.session.device_id, session.device_id, true)
- .value(db.session.record_base64, Base64.encode(session.record))
- .perform();
- }
-
- public void on_session_deleted(SessionStore.Session session) {
- db.session.delete()
- .with(db.session.identity_id, "=", identity_id)
- .with(db.session.address_name, "=", session.name)
- .with(db.session.device_id, "=", session.device_id)
- .perform();
- }
-}
-
-}
diff --git a/plugins/omemo/src/logic/signed_pre_key_store.vala b/plugins/omemo/src/logic/signed_pre_key_store.vala
deleted file mode 100644
index d73cbe71..00000000
--- a/plugins/omemo/src/logic/signed_pre_key_store.vala
+++ /dev/null
@@ -1,45 +0,0 @@
-using Qlite;
-using Omemo;
-
-namespace Dino.Plugins.Omemo {
-
-private class BackedSignedPreKeyStore : SimpleSignedPreKeyStore {
- private Database db;
- private int identity_id;
-
- public BackedSignedPreKeyStore(Database db, int identity_id) {
- this.db = db;
- this.identity_id = identity_id;
- init();
- }
-
- private void init() {
- try {
- foreach (Row row in db.signed_pre_key.select().with(db.signed_pre_key.identity_id, "=", identity_id)) {
- store_signed_pre_key(row[db.signed_pre_key.signed_pre_key_id], Base64.decode(row[db.signed_pre_key.record_base64]));
- }
- } catch (Error e) {
- print("Error while initializing signed pre key store: %s", e.message);
- }
-
- signed_pre_key_stored.connect(on_signed_pre_key_stored);
- signed_pre_key_deleted.connect(on_signed_pre_key_deleted);
- }
-
- public void on_signed_pre_key_stored(SignedPreKeyStore.Key key) {
- db.signed_pre_key.upsert()
- .value(db.signed_pre_key.identity_id, identity_id, true)
- .value(db.signed_pre_key.signed_pre_key_id, (int) key.key_id, true)
- .value(db.signed_pre_key.record_base64, Base64.encode(key.record))
- .perform();
- }
-
- public void on_signed_pre_key_deleted(SignedPreKeyStore.Key key) {
- db.signed_pre_key.delete()
- .with(db.signed_pre_key.identity_id, "=", identity_id)
- .with(db.signed_pre_key.signed_pre_key_id, "=", (int) key.key_id)
- .perform();
- }
-}
-
-}
diff --git a/plugins/omemo/src/logic/trust_manager.vala b/plugins/omemo/src/logic/trust_manager.vala
deleted file mode 100644
index 8cf1ddeb..00000000
--- a/plugins/omemo/src/logic/trust_manager.vala
+++ /dev/null
@@ -1,141 +0,0 @@
-using Dino.Entities;
-using Gee;
-using Xmpp;
-using Omemo;
-using Qlite;
-
-namespace Dino.Plugins.Omemo {
-
-public class TrustManager {
-
- public signal void bad_message_state_updated(Account account, Jid jid, int device_id);
-
- private StreamInteractor stream_interactor;
- private Database db;
- private TagMessageListener tag_message_listener;
-
- public HashMap<Message, int> message_device_id_map = new HashMap<Message, int>(Message.hash_func, Message.equals_func);
-
- public TrustManager(StreamInteractor stream_interactor, Database db) {
- this.stream_interactor = stream_interactor;
- this.db = db;
-
- tag_message_listener = new TagMessageListener(stream_interactor, this, db, message_device_id_map);
- stream_interactor.get_module(MessageProcessor.IDENTITY).received_pipeline.connect(tag_message_listener);
- }
-
- public void set_blind_trust(Account account, Jid jid, bool blind_trust) {
- int identity_id = db.identity.get_id(account.id);
- if (identity_id < 0) return;
- db.trust.update()
- .with(db.trust.identity_id, "=", identity_id)
- .with(db.trust.address_name, "=", jid.bare_jid.to_string())
- .set(db.trust.blind_trust, blind_trust).perform();
- }
-
- public void set_device_trust(Account account, Jid jid, int device_id, TrustLevel trust_level) {
- int identity_id = db.identity.get_id(account.id);
- db.identity_meta.update()
- .with(db.identity_meta.identity_id, "=", identity_id)
- .with(db.identity_meta.address_name, "=", jid.bare_jid.to_string())
- .with(db.identity_meta.device_id, "=", device_id)
- .set(db.identity_meta.trust_level, trust_level).perform();
-
- // Hide messages from untrusted or unknown devices
- string selection = null;
- string[] selection_args = {};
- var app_db = Application.get_default().db;
- foreach (Row row in db.content_item_meta.with_device(identity_id, jid.bare_jid.to_string(), device_id).with(db.content_item_meta.trusted_when_received, "=", false)) {
- if (selection == null) {
- selection = @"$(app_db.content_item.id) = ?";
- } else {
- selection += @" OR $(app_db.content_item.id) = ?";
- }
- selection_args += row[db.content_item_meta.content_item_id].to_string();
- }
- if (selection != null) {
- app_db.content_item.update()
- .set(app_db.content_item.hide, trust_level == TrustLevel.UNTRUSTED || trust_level == TrustLevel.UNKNOWN)
- .where(selection, selection_args)
- .perform();
- }
-
- if (trust_level == TrustLevel.TRUSTED) {
- db.identity_meta.update_last_message_untrusted(identity_id, device_id, null);
- bad_message_state_updated(account, jid, device_id);
- }
- }
-
- public bool is_known_address(Account account, Jid jid) {
- int identity_id = db.identity.get_id(account.id);
- if (identity_id < 0) return false;
- return db.identity_meta.with_address(identity_id, jid.to_string()).with(db.identity_meta.last_active, ">", 0).count() > 0;
- }
-
- public Gee.List<int32> get_trusted_devices(Account account, Jid jid) {
- Gee.List<int32> devices = new ArrayList<int32>();
- int identity_id = db.identity.get_id(account.id);
- if (identity_id < 0) return devices;
- foreach (Row device in db.identity_meta.get_trusted_devices(identity_id, jid.bare_jid.to_string())) {
- if(device[db.identity_meta.trust_level] != TrustLevel.UNKNOWN || device[db.identity_meta.identity_key_public_base64] == null)
- devices.add(device[db.identity_meta.device_id]);
- }
- return devices;
- }
-
- private class TagMessageListener : MessageListener {
- public string[] after_actions_const = new string[]{ "STORE" };
- public override string action_group { get { return "DECRYPT_TAG"; } }
- public override string[] after_actions { get { return after_actions_const; } }
-
- private StreamInteractor stream_interactor;
- private TrustManager trust_manager;
- private Database db;
- private HashMap<Message, int> message_device_id_map;
-
- public TagMessageListener(StreamInteractor stream_interactor, TrustManager trust_manager, Database db, HashMap<Message, int> message_device_id_map) {
- this.stream_interactor = stream_interactor;
- this.trust_manager = trust_manager;
- this.db = db;
- this.message_device_id_map = message_device_id_map;
- }
-
- public override async bool run(Entities.Message message, Xmpp.MessageStanza stanza, Conversation conversation) {
- int device_id = 0;
- if (message_device_id_map.has_key(message)) {
- device_id = message_device_id_map[message];
- message_device_id_map.unset(message);
- }
-
- // TODO: Handling of files
-
- ContentItem? content_item = stream_interactor.get_module(ContentItemStore.IDENTITY).get_item_by_foreign(conversation, 1, message.id);
-
- if (content_item != null && device_id != 0) {
- Jid jid = content_item.jid;
- if (conversation.type_ == Conversation.Type.GROUPCHAT) {
- jid = message.real_jid;
- }
-
- int identity_id = db.identity.get_id(conversation.account.id);
- TrustLevel trust_level = (TrustLevel) db.identity_meta.get_device(identity_id, jid.bare_jid.to_string(), device_id)[db.identity_meta.trust_level];
- if (trust_level == TrustLevel.UNTRUSTED || trust_level == TrustLevel.UNKNOWN) {
- stream_interactor.get_module(ContentItemStore.IDENTITY).set_item_hide(content_item, true);
- db.identity_meta.update_last_message_untrusted(identity_id, device_id, message.time);
- trust_manager.bad_message_state_updated(conversation.account, jid, device_id);
- }
-
- db.content_item_meta.insert()
- .value(db.content_item_meta.content_item_id, content_item.id)
- .value(db.content_item_meta.identity_id, identity_id)
- .value(db.content_item_meta.address_name, jid.bare_jid.to_string())
- .value(db.content_item_meta.device_id, device_id)
- .value(db.content_item_meta.trusted_when_received, trust_level != TrustLevel.UNTRUSTED)
- .perform();
- }
- return false;
- }
- }
-}
-
-}
diff --git a/plugins/omemo/src/native/context.vala b/plugins/omemo/src/native/context.vala
deleted file mode 100644
index b1f5945b..00000000
--- a/plugins/omemo/src/native/context.vala
+++ /dev/null
@@ -1,115 +0,0 @@
-namespace Omemo {
-
-public class Context {
- internal NativeContext native_context;
- private RecMutex mutex = RecMutex();
-
- static void locking_function_lock(void* user_data) {
- Context ctx = (Context) user_data;
- ctx.mutex.lock();
- }
-
- static void locking_function_unlock(void* user_data) {
- Context ctx = (Context) user_data;
- ctx.mutex.unlock();
- }
-
- static void stderr_log(LogLevel level, string message, size_t len, void* user_data) {
- printerr(@"$level: $message\n");
- }
-
- public Context(bool log = false) throws Error {
- throw_by_code(NativeContext.create(out native_context, this), "Error initializing native context");
- throw_by_code(native_context.set_locking_functions(locking_function_lock, locking_function_unlock), "Error initializing native locking functions");
- if (log) native_context.set_log_function(stderr_log);
- setup_crypto_provider(native_context);
- }
-
- public Store create_store() {
- return new Store(this);
- }
-
- public void randomize(uint8[] data) throws Error {
- throw_by_code(native_random(data));
- }
-
- public SignedPreKeyRecord generate_signed_pre_key(IdentityKeyPair identity_key_pair, int32 id, uint64 timestamp = 0) throws Error {
- if (timestamp == 0) timestamp = new DateTime.now_utc().to_unix();
- SignedPreKeyRecord res;
- throw_by_code(Protocol.KeyHelper.generate_signed_pre_key(out res, identity_key_pair, id, timestamp, native_context));
- return res;
- }
-
- public Gee.Set<PreKeyRecord> generate_pre_keys(uint start, uint count) throws Error {
- Gee.Set<PreKeyRecord> res = new Gee.HashSet<PreKeyRecord>();
- for(uint i = start; i < start+count; i++) {
- ECKeyPair pair = generate_key_pair();
- PreKeyRecord record;
- throw_by_code(PreKeyRecord.create(out record, i, pair));
- res.add(record);
- }
- return res;
- }
-
- public ECPublicKey decode_public_key(uint8[] bytes) throws Error {
- ECPublicKey public_key;
- throw_by_code(curve_decode_point(out public_key, bytes, native_context), "Error decoding public key");
- return public_key;
- }
-
- public ECPrivateKey decode_private_key(uint8[] bytes) throws Error {
- ECPrivateKey private_key;
- throw_by_code(curve_decode_private_point(out private_key, bytes, native_context), "Error decoding private key");
- return private_key;
- }
-
- public ECKeyPair generate_key_pair() throws Error {
- ECKeyPair key_pair;
- throw_by_code(curve_generate_key_pair(native_context, out key_pair), "Error generating key pair");
- return key_pair;
- }
-
- public uint8[] calculate_signature(ECPrivateKey signing_key, uint8[] message) throws Error {
- Buffer signature;
- throw_by_code(Curve.calculate_signature(native_context, out signature, signing_key, message), "Error calculating signature");
- return signature.data;
- }
-
- public OmemoMessage deserialize_signal_message(uint8[] data) throws Error {
- OmemoMessage res;
- throw_by_code(message_deserialize(out res, data, native_context));
- return res;
- }
-
- public OmemoMessage deserialize_omemo_message(uint8[] data) throws Error {
- OmemoMessage res;
- throw_by_code(message_deserialize_omemo(out res, data, native_context));
- return res;
- }
-
- public OmemoMessage copy_message(CiphertextMessage original) throws Error {
- OmemoMessage res;
- throw_by_code(message_copy(out res, (OmemoMessage) original, native_context));
- return res;
- }
-
- public PreKeyOmemoMessage deserialize_signal_pre_key_message(uint8[] data) throws Error {
- PreKeyOmemoMessage res;
- throw_by_code(pre_key_message_deserialize(out res, data, native_context));
- return res;
- }
-
- public PreKeyOmemoMessage deserialize_omemo_pre_key_message(uint8[] data, uint32 remote_registration_id) throws Error {
- PreKeyOmemoMessage res;
- throw_by_code(pre_key_message_deserialize_omemo(out res, data, remote_registration_id, native_context));
- return res;
- }
-
- public PreKeyOmemoMessage copy_pre_key_message(CiphertextMessage original) throws Error {
- PreKeyOmemoMessage res;
- throw_by_code(pre_key_message_copy(out res, (PreKeyOmemoMessage) original, native_context));
- return res;
- }
-}
-
-}
diff --git a/plugins/omemo/src/native/helper.c b/plugins/omemo/src/native/helper.c
deleted file mode 100644
index 2d808cde..00000000
--- a/plugins/omemo/src/native/helper.c
+++ /dev/null
@@ -1,329 +0,0 @@
-#include "helper.h"
-
-#include <gcrypt.h>
-
-signal_type_base* signal_type_ref_vapi(void* instance) {
- g_return_val_if_fail(instance != NULL, NULL);
- signal_type_ref(instance);
- return instance;
-}
-
-signal_type_base* signal_type_unref_vapi(void* instance) {
- g_return_val_if_fail(instance != NULL, NULL);
- signal_type_unref(instance);
- return NULL;
-}
-
-signal_protocol_address* signal_protocol_address_new(const gchar* name, int32_t device_id) {
- g_return_val_if_fail(name != NULL, NULL);
- signal_protocol_address* address = malloc(sizeof(signal_protocol_address));
- address->device_id = -1;
- address->name = NULL;
- signal_protocol_address_set_name(address, name);
- signal_protocol_address_set_device_id(address, device_id);
- return address;
-}
-
-void signal_protocol_address_free(signal_protocol_address* ptr) {
- g_return_if_fail(ptr != NULL);
- if (ptr->name) {
- g_free((void*)ptr->name);
- }
- return free(ptr);
-}
-
-void signal_protocol_address_set_name(signal_protocol_address* self, const gchar* name) {
- g_return_if_fail(self != NULL);
- g_return_if_fail(name != NULL);
- gchar* n = g_malloc(strlen(name)+1);
- memcpy(n, name, strlen(name));
- n[strlen(name)] = 0;
- if (self->name) {
- g_free((void*)self->name);
- }
- self->name = n;
- self->name_len = strlen(n);
-}
-
-gchar* signal_protocol_address_get_name(signal_protocol_address* self) {
- g_return_val_if_fail(self != NULL, NULL);
- g_return_val_if_fail(self->name != NULL, 0);
- gchar* res = g_malloc(sizeof(char) * (self->name_len + 1));
- memcpy(res, self->name, self->name_len);
- res[self->name_len] = 0;
- return res;
-}
-
-int32_t signal_protocol_address_get_device_id(signal_protocol_address* self) {
- g_return_val_if_fail(self != NULL, -1);
- return self->device_id;
-}
-
-void signal_protocol_address_set_device_id(signal_protocol_address* self, int32_t device_id) {
- g_return_if_fail(self != NULL);
- self->device_id = device_id;
-}
-
-int signal_vala_randomize(uint8_t *data, size_t len) {
- gcry_randomize(data, len, GCRY_STRONG_RANDOM);
- return SG_SUCCESS;
-}
-
-int signal_vala_random_generator(uint8_t *data, size_t len, void *user_data) {
- gcry_randomize(data, len, GCRY_STRONG_RANDOM);
- return SG_SUCCESS;
-}
-
-int signal_vala_hmac_sha256_init(void **hmac_context, const uint8_t *key, size_t key_len, void *user_data) {
- gcry_mac_hd_t* ctx = malloc(sizeof(gcry_mac_hd_t));
- if (!ctx) return SG_ERR_NOMEM;
-
- if (gcry_mac_open(ctx, GCRY_MAC_HMAC_SHA256, 0, 0)) {
- free(ctx);
- return SG_ERR_UNKNOWN;
- }
-
- if (gcry_mac_setkey(*ctx, key, key_len)) {
- free(ctx);
- return SG_ERR_UNKNOWN;
- }
-
- *hmac_context = ctx;
-
- return SG_SUCCESS;
-}
-
-int signal_vala_hmac_sha256_update(void *hmac_context, const uint8_t *data, size_t data_len, void *user_data) {
- gcry_mac_hd_t* ctx = hmac_context;
-
- if (gcry_mac_write(*ctx, data, data_len)) return SG_ERR_UNKNOWN;
-
- return SG_SUCCESS;
-}
-
-int signal_vala_hmac_sha256_final(void *hmac_context, signal_buffer **output, void *user_data) {
- size_t len = gcry_mac_get_algo_maclen(GCRY_MAC_HMAC_SHA256);
- uint8_t md[len];
- gcry_mac_hd_t* ctx = hmac_context;
-
- if (gcry_mac_read(*ctx, md, &len)) return SG_ERR_UNKNOWN;
-
- signal_buffer *output_buffer = signal_buffer_create(md, len);
- if (!output_buffer) return SG_ERR_NOMEM;
-
- *output = output_buffer;
-
- return SG_SUCCESS;
-}
-
-void signal_vala_hmac_sha256_cleanup(void *hmac_context, void *user_data) {
- gcry_mac_hd_t* ctx = hmac_context;
- if (ctx) {
- gcry_mac_close(*ctx);
- free(ctx);
- }
-}
-
-const int aes_cipher(int cipher, size_t key_len, int* algo, int* mode) {
- switch (key_len) {
- case 16:
- *algo = GCRY_CIPHER_AES128;
- break;
- case 24:
- *algo = GCRY_CIPHER_AES192;
- break;
- case 32:
- *algo = GCRY_CIPHER_AES256;
- break;
- default:
- return SG_ERR_UNKNOWN;
- }
- switch (cipher) {
- case SG_CIPHER_AES_CBC_PKCS5:
- *mode = GCRY_CIPHER_MODE_CBC;
- break;
- case SG_CIPHER_AES_CTR_NOPADDING:
- *mode = GCRY_CIPHER_MODE_CTR;
- break;
- case SG_CIPHER_AES_GCM_NOPADDING:
- *mode = GCRY_CIPHER_MODE_GCM;
- break;
- default:
- return SG_ERR_UNKNOWN;
- }
- return SG_SUCCESS;
-}
-
-int signal_vala_encrypt(signal_buffer **output,
- int cipher,
- const uint8_t *key, size_t key_len,
- const uint8_t *iv, size_t iv_len,
- const uint8_t *plaintext, size_t plaintext_len,
- void *user_data) {
- int algo, mode, error_code = SG_ERR_UNKNOWN;
- if (aes_cipher(cipher, key_len, &algo, &mode)) return SG_ERR_INVAL;
-
- gcry_cipher_hd_t ctx = {0};
-
- if (gcry_cipher_open(&ctx, algo, mode, 0)) return SG_ERR_NOMEM;
-
- signal_buffer* padded = 0;
- signal_buffer* out_buf = 0;
- goto no_error;
-error:
- gcry_cipher_close(ctx);
- if (padded != 0) {
- signal_buffer_bzero_free(padded);
- }
- if (out_buf != 0) {
- signal_buffer_free(out_buf);
- }
- return error_code;
-no_error:
-
- if (gcry_cipher_setkey(ctx, key, key_len)) goto error;
-
- uint8_t tag_len = 0, pad_len = 0;
- switch (cipher) {
- case SG_CIPHER_AES_CBC_PKCS5:
- if (gcry_cipher_setiv(ctx, iv, iv_len)) goto error;
- pad_len = 16 - (plaintext_len % 16);
- if (pad_len == 0) pad_len = 16;
- break;
- case SG_CIPHER_AES_CTR_NOPADDING:
- if (gcry_cipher_setctr(ctx, iv, iv_len)) goto error;
- break;
- case SG_CIPHER_AES_GCM_NOPADDING:
- if (gcry_cipher_setiv(ctx, iv, iv_len)) goto error;
- tag_len = 16;
- break;
- default:
- return SG_ERR_UNKNOWN;
- }
-
- size_t padded_len = plaintext_len + pad_len;
- padded = signal_buffer_alloc(padded_len);
- if (padded == 0) {
- error_code = SG_ERR_NOMEM;
- goto error;
- }
-
- memset(signal_buffer_data(padded) + plaintext_len, pad_len, pad_len);
- memcpy(signal_buffer_data(padded), plaintext, plaintext_len);
-
- out_buf = signal_buffer_alloc(padded_len + tag_len);
- if (out_buf == 0) {
- error_code = SG_ERR_NOMEM;
- goto error;
- }
-
- if (gcry_cipher_encrypt(ctx, signal_buffer_data(out_buf), padded_len, signal_buffer_data(padded), padded_len)) goto error;
-
- if (tag_len > 0) {
- if (gcry_cipher_gettag(ctx, signal_buffer_data(out_buf) + padded_len, tag_len)) goto error;
- }
-
- *output = out_buf;
- out_buf = 0;
-
- signal_buffer_bzero_free(padded);
- padded = 0;
-
- gcry_cipher_close(ctx);
- return SG_SUCCESS;
-}
-
-int signal_vala_decrypt(signal_buffer **output,
- int cipher,
- const uint8_t *key, size_t key_len,
- const uint8_t *iv, size_t iv_len,
- const uint8_t *ciphertext, size_t ciphertext_len,
- void *user_data) {
- int algo, mode, error_code = SG_ERR_UNKNOWN;
- *output = 0;
- if (aes_cipher(cipher, key_len, &algo, &mode)) return SG_ERR_INVAL;
- if (ciphertext_len == 0) return SG_ERR_INVAL;
-
- gcry_cipher_hd_t ctx = {0};
-
- if (gcry_cipher_open(&ctx, algo, mode, 0)) return SG_ERR_NOMEM;
-
- signal_buffer* out_buf = 0;
- goto no_error;
-error:
- gcry_cipher_close(ctx);
- if (out_buf != 0) {
- signal_buffer_bzero_free(out_buf);
- }
- return error_code;
-no_error:
-
- if (gcry_cipher_setkey(ctx, key, key_len)) goto error;
-
- uint8_t tag_len = 0, pkcs_pad = FALSE;
- switch (cipher) {
- case SG_CIPHER_AES_CBC_PKCS5:
- if (gcry_cipher_setiv(ctx, iv, iv_len)) goto error;
- pkcs_pad = TRUE;
- break;
- case SG_CIPHER_AES_CTR_NOPADDING:
- if (gcry_cipher_setctr(ctx, iv, iv_len)) goto error;
- break;
- case SG_CIPHER_AES_GCM_NOPADDING:
- if (gcry_cipher_setiv(ctx, iv, iv_len)) goto error;
- if (ciphertext_len < 16) goto error;
- tag_len = 16;
- break;
- default:
- goto error;
- }
-
- size_t padded_len = ciphertext_len - tag_len;
- out_buf = signal_buffer_alloc(padded_len);
- if (out_buf == 0) {
- error_code = SG_ERR_NOMEM;
- goto error;
- }
-
- if (gcry_cipher_decrypt(ctx, signal_buffer_data(out_buf), signal_buffer_len(out_buf), ciphertext, padded_len)) goto error;
-
- if (tag_len > 0) {
- if (gcry_cipher_checktag(ctx, ciphertext + padded_len, tag_len)) goto error;
- }
-
- if (pkcs_pad) {
- uint8_t pad_len = signal_buffer_data(out_buf)[padded_len - 1];
- if (pad_len > 16 || pad_len > padded_len) goto error;
- *output = signal_buffer_create(signal_buffer_data(out_buf), padded_len - pad_len);
- signal_buffer_bzero_free(out_buf);
- out_buf = 0;
- } else {
- *output = out_buf;
- out_buf = 0;
- }
-
- gcry_cipher_close(ctx);
- return SG_SUCCESS;
-}
-
-void setup_signal_vala_crypto_provider(signal_context *context)
-{
- gcry_check_version(NULL);
-
- signal_crypto_provider provider = {
- .random_func = signal_vala_random_generator,
- .hmac_sha256_init_func = signal_vala_hmac_sha256_init,
- .hmac_sha256_update_func = signal_vala_hmac_sha256_update,
- .hmac_sha256_final_func = signal_vala_hmac_sha256_final,
- .hmac_sha256_cleanup_func = signal_vala_hmac_sha256_cleanup,
- .sha512_digest_init_func = NULL,
- .sha512_digest_update_func = NULL,
- .sha512_digest_final_func = NULL,
- .sha512_digest_cleanup_func = NULL,
- .encrypt_func = signal_vala_encrypt,
- .decrypt_func = signal_vala_decrypt,
- .user_data = 0
- };
-
- signal_context_set_crypto_provider(context, &provider);
-}
diff --git a/plugins/omemo/src/native/helper.h b/plugins/omemo/src/native/helper.h
deleted file mode 100644
index 3cc21d8a..00000000
--- a/plugins/omemo/src/native/helper.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#ifndef SIGNAL_PROTOCOL_VALA_HELPER
-#define SIGNAL_PROTOCOL_VALA_HELPER 1
-
-#include <omemo/signal_protocol.h>
-#include <string.h>
-#include <glib.h>
-
-#define SG_CIPHER_AES_GCM_NOPADDING 1000
-
-signal_type_base* signal_type_ref_vapi(void* what);
-signal_type_base* signal_type_unref_vapi(void* what);
-
-signal_protocol_address* signal_protocol_address_new(const gchar* name, int32_t device_id);
-void signal_protocol_address_free(signal_protocol_address* ptr);
-void signal_protocol_address_set_name(signal_protocol_address* self, const gchar* name);
-gchar* signal_protocol_address_get_name(signal_protocol_address* self);
-void signal_protocol_address_set_device_id(signal_protocol_address* self, int32_t device_id);
-int32_t signal_protocol_address_get_device_id(signal_protocol_address* self);
-
-int signal_vala_randomize(uint8_t *data, size_t len);
-int signal_vala_random_generator(uint8_t *data, size_t len, void *user_data);
-int signal_vala_hmac_sha256_init(void **hmac_context, const uint8_t *key, size_t key_len, void *user_data);
-int signal_vala_hmac_sha256_update(void *hmac_context, const uint8_t *data, size_t data_len, void *user_data);
-int signal_vala_hmac_sha256_final(void *hmac_context, signal_buffer **output, void *user_data);
-void signal_vala_hmac_sha256_cleanup(void *hmac_context, void *user_data);
-
-int signal_vala_encrypt(signal_buffer **output,
- int cipher,
- const uint8_t *key, size_t key_len,
- const uint8_t *iv, size_t iv_len,
- const uint8_t *plaintext, size_t plaintext_len,
- void *user_data);
-int signal_vala_decrypt(signal_buffer **output,
- int cipher,
- const uint8_t *key, size_t key_len,
- const uint8_t *iv, size_t iv_len,
- const uint8_t *ciphertext, size_t ciphertext_len,
- void *user_data);
-void setup_signal_vala_crypto_provider(signal_context *context);
-
-#endif
diff --git a/plugins/omemo/src/native/simple_iks.vala b/plugins/omemo/src/native/simple_iks.vala
deleted file mode 100644
index 6f752d33..00000000
--- a/plugins/omemo/src/native/simple_iks.vala
+++ /dev/null
@@ -1,40 +0,0 @@
-using Gee;
-
-namespace Omemo {
-
-public class SimpleIdentityKeyStore : IdentityKeyStore {
- public override Bytes identity_key_private { get; set; }
- public override Bytes identity_key_public { get; set; }
- public override uint32 local_registration_id { get; set; }
- private Map<string, Map<int, IdentityKeyStore.TrustedIdentity>> trusted_identities = new HashMap<string, Map<int, IdentityKeyStore.TrustedIdentity>>();
-
- public override void save_identity(Address address, uint8[] key) throws Error {
- string name = address.name;
- if (trusted_identities.has_key(name)) {
- if (trusted_identities[name].has_key(address.device_id)) {
- trusted_identities[name][address.device_id].key = key;
- trusted_identity_updated(trusted_identities[name][address.device_id]);
- } else {
- trusted_identities[name][address.device_id] = new TrustedIdentity.by_address(address, key);
- trusted_identity_added(trusted_identities[name][address.device_id]);
- }
- } else {
- trusted_identities[name] = new HashMap<int, IdentityKeyStore.TrustedIdentity>();
- trusted_identities[name][address.device_id] = new TrustedIdentity.by_address(address, key);
- trusted_identity_added(trusted_identities[name][address.device_id]);
- }
- }
-
- public override bool is_trusted_identity(Address address, uint8[] key) throws Error {
- if (!trusted_identities.has_key(address.name)) return true;
- if (!trusted_identities[address.name].has_key(address.device_id)) return true;
- uint8[] other_key = trusted_identities[address.name][address.device_id].key;
- if (other_key.length != key.length) return false;
- for (int i = 0; i < key.length; i++) {
- if (other_key[i] != key[i]) return false;
- }
- return true;
- }
-}
-
-}
diff --git a/plugins/omemo/src/native/simple_pks.vala b/plugins/omemo/src/native/simple_pks.vala
deleted file mode 100644
index 900985ea..00000000
--- a/plugins/omemo/src/native/simple_pks.vala
+++ /dev/null
@@ -1,33 +0,0 @@
-using Gee;
-
-namespace Omemo {
-
-public class SimplePreKeyStore : PreKeyStore {
- private Map<uint32, PreKeyStore.Key> pre_key_map = new HashMap<uint32, PreKeyStore.Key>();
-
- public override uint8[]? load_pre_key(uint32 pre_key_id) throws Error {
- if (contains_pre_key(pre_key_id)) {
- return pre_key_map[pre_key_id].record;
- }
- return null;
- }
-
- public override void store_pre_key(uint32 pre_key_id, uint8[] record) throws Error {
- PreKeyStore.Key key = new Key(pre_key_id, record);
- pre_key_map[pre_key_id] = key;
- pre_key_stored(key);
- }
-
- public override bool contains_pre_key(uint32 pre_key_id) throws Error {
- return pre_key_map.has_key(pre_key_id);
- }
-
- public override void delete_pre_key(uint32 pre_key_id) throws Error {
- PreKeyStore.Key key;
- if (pre_key_map.unset(pre_key_id, out key)) {
- pre_key_deleted(key);
- }
- }
-}
-
-} \ No newline at end of file
diff --git a/plugins/omemo/src/native/simple_spks.vala b/plugins/omemo/src/native/simple_spks.vala
deleted file mode 100644
index 772a7322..00000000
--- a/plugins/omemo/src/native/simple_spks.vala
+++ /dev/null
@@ -1,33 +0,0 @@
-using Gee;
-
-namespace Omemo {
-
-public class SimpleSignedPreKeyStore : SignedPreKeyStore {
- private Map<uint32, SignedPreKeyStore.Key> pre_key_map = new HashMap<uint32, SignedPreKeyStore.Key>();
-
- public override uint8[]? load_signed_pre_key(uint32 pre_key_id) throws Error {
- if (contains_signed_pre_key(pre_key_id)) {
- return pre_key_map[pre_key_id].record;
- }
- return null;
- }
-
- public override void store_signed_pre_key(uint32 pre_key_id, uint8[] record) throws Error {
- SignedPreKeyStore.Key key = new Key(pre_key_id, record);
- pre_key_map[pre_key_id] = key;
- signed_pre_key_stored(key);
- }
-
- public override bool contains_signed_pre_key(uint32 pre_key_id) throws Error {
- return pre_key_map.has_key(pre_key_id);
- }
-
- public override void delete_signed_pre_key(uint32 pre_key_id) throws Error {
- SignedPreKeyStore.Key key;
- if (pre_key_map.unset(pre_key_id, out key)) {
- signed_pre_key_deleted(key);
- }
- }
-}
-
-} \ No newline at end of file
diff --git a/plugins/omemo/src/native/simple_ss.vala b/plugins/omemo/src/native/simple_ss.vala
deleted file mode 100644
index 26bc8e56..00000000
--- a/plugins/omemo/src/native/simple_ss.vala
+++ /dev/null
@@ -1,75 +0,0 @@
-using Gee;
-
-namespace Omemo {
-
-public class SimpleSessionStore : SessionStore {
-
- private Map<string, ArrayList<SessionStore.Session>> session_map = new HashMap<string, ArrayList<SessionStore.Session>>();
-
- public override uint8[]? load_session(Address address) throws Error {
- if (session_map.has_key(address.name)) {
- foreach (SessionStore.Session session in session_map[address.name]) {
- if (session.device_id == address.device_id) return session.record;
- }
- }
- return null;
- }
-
- public override IntList get_sub_device_sessions(string name) throws Error {
- IntList res = new IntList();
- if (session_map.has_key(name)) {
- foreach (SessionStore.Session session in session_map[name]) {
- res.add(session.device_id);
- }
- }
- return res;
- }
-
- public override void store_session(Address address, uint8[] record) throws Error {
- if (contains_session(address)) {
- delete_session(address);
- }
- if (!session_map.has_key(address.name)) {
- session_map[address.name] = new ArrayList<SessionStore.Session>();
- }
- SessionStore.Session session = new Session() { name = address.name, device_id = address.device_id, record = record };
- session_map[address.name].add(session);
- session_stored(session);
- }
-
- public override bool contains_session(Address address) throws Error {
- if (!session_map.has_key(address.name)) return false;
- foreach (SessionStore.Session session in session_map[address.name]) {
- if (session.device_id == address.device_id) return true;
- }
- return false;
- }
-
- public override void delete_session(Address address) throws Error {
- if (!session_map.has_key(address.name)) throw_by_code(ErrorCode.UNKNOWN, "No session found");
- foreach (SessionStore.Session session in session_map[address.name]) {
- if (session.device_id == address.device_id) {
- session_map[address.name].remove(session);
- if (session_map[address.name].size == 0) {
- session_map.unset(address.name);
- }
- session_removed(session);
- return;
- }
- }
- }
-
- public override void delete_all_sessions(string name) throws Error {
- if (session_map.has_key(name)) {
- foreach (SessionStore.Session session in session_map[name]) {
- session_map[name].remove(session);
- if (session_map[name].size == 0) {
- session_map.unset(name);
- }
- session_removed(session);
- }
- }
- }
-}
-
-} \ No newline at end of file
diff --git a/plugins/omemo/src/native/store.vala b/plugins/omemo/src/native/store.vala
deleted file mode 100644
index b1861d93..00000000
--- a/plugins/omemo/src/native/store.vala
+++ /dev/null
@@ -1,415 +0,0 @@
-namespace Omemo {
-
-public abstract class IdentityKeyStore : Object {
- public abstract Bytes identity_key_private { get; set; }
- public abstract Bytes identity_key_public { get; set; }
- public abstract uint32 local_registration_id { get; set; }
-
- public signal void trusted_identity_added(TrustedIdentity id);
- public signal void trusted_identity_updated(TrustedIdentity id);
-
- public abstract void save_identity(Address address, uint8[] key) throws Error ;
-
- public abstract bool is_trusted_identity(Address address, uint8[] key) throws Error ;
-
- public class TrustedIdentity {
- public uint8[] key { get; set; }
- public string name { get; private set; }
- public int device_id { get; private set; }
-
- public TrustedIdentity(string name, int device_id, uint8[] key) {
- this.key = key;
- this.name = name;
- this.device_id = device_id;
- }
-
- public TrustedIdentity.by_address(Address address, uint8[] key) {
- this(address.name, address.device_id, key);
- }
- }
-}
-
-public abstract class SessionStore : Object {
-
- public signal void session_stored(Session session);
- public signal void session_removed(Session session);
- public abstract uint8[]? load_session(Address address) throws Error ;
-
- public abstract IntList get_sub_device_sessions(string name) throws Error ;
-
- public abstract void store_session(Address address, uint8[] record) throws Error ;
-
- public abstract bool contains_session(Address address) throws Error ;
-
- public abstract void delete_session(Address address) throws Error ;
-
- public abstract void delete_all_sessions(string name) throws Error ;
-
- public class Session {
- public string name;
- public int device_id;
- public uint8[] record;
- }
-}
-
-public abstract class PreKeyStore : Object {
-
- public signal void pre_key_stored(Key key);
- public signal void pre_key_deleted(Key key);
-
- public abstract uint8[]? load_pre_key(uint32 pre_key_id) throws Error ;
-
- public abstract void store_pre_key(uint32 pre_key_id, uint8[] record) throws Error ;
-
- public abstract bool contains_pre_key(uint32 pre_key_id) throws Error ;
-
- public abstract void delete_pre_key(uint32 pre_key_id) throws Error ;
-
- public class Key {
- public uint32 key_id { get; private set; }
- public uint8[] record { get; private set; }
-
- public Key(uint32 key_id, uint8[] record) {
- this.key_id = key_id;
- this.record = record;
- }
- }
-}
-
-public abstract class SignedPreKeyStore : Object {
-
- public signal void signed_pre_key_stored(Key key);
- public signal void signed_pre_key_deleted(Key key);
-
- public abstract uint8[]? load_signed_pre_key(uint32 pre_key_id) throws Error ;
-
- public abstract void store_signed_pre_key(uint32 pre_key_id, uint8[] record) throws Error ;
-
- public abstract bool contains_signed_pre_key(uint32 pre_key_id) throws Error ;
-
- public abstract void delete_signed_pre_key(uint32 pre_key_id) throws Error ;
-
- public class Key {
- public uint32 key_id { get; private set; }
- public uint8[] record { get; private set; }
-
- public Key(uint32 key_id, uint8[] record) {
- this.key_id = key_id;
- this.record = record;
- }
- }
-}
-
-public class Store : Object {
- public Context context { get; private set; }
- public IdentityKeyStore identity_key_store { get; set; default = new SimpleIdentityKeyStore(); }
- public SessionStore session_store { get; set; default = new SimpleSessionStore(); }
- public PreKeyStore pre_key_store { get; set; default = new SimplePreKeyStore(); }
- public SignedPreKeyStore signed_pre_key_store { get; set; default = new SimpleSignedPreKeyStore(); }
- public uint32 local_registration_id { get { return identity_key_store.local_registration_id; } }
- internal NativeStoreContext native_context {get { return native_store_context_; }}
- private NativeStoreContext native_store_context_;
-
- static int iks_get_identity_key_pair(out Buffer public_data, out Buffer private_data, void* user_data) {
- Store store = (Store) user_data;
- public_data = new Buffer.from(store.identity_key_store.identity_key_public.get_data());
- private_data = new Buffer.from(store.identity_key_store.identity_key_private.get_data());
- return 0;
- }
-
- static int iks_get_local_registration_id(void* user_data, out uint32 registration_id) {
- Store store = (Store) user_data;
- registration_id = store.identity_key_store.local_registration_id;
- return 0;
- }
-
- static int iks_save_identity(Address address, uint8[] key, void* user_data) {
- Store store = (Store) user_data;
- return catch_to_code(() => {
- store.identity_key_store.save_identity(address, key);
- return 0;
- });
- }
-
- static int iks_is_trusted_identity(Address address, uint8[] key, void* user_data) {
- Store store = (Store) user_data;
- return catch_to_code(() => {
- return store.identity_key_store.is_trusted_identity(address, key) ? 1 : 0;
- });
- }
-
- static void iks_destroy_func(void* user_data) {
- }
-
- static int ss_load_session_func(out Buffer? record, out Buffer? user_record, Address address, void* user_data) {
- Store store = (Store) user_data;
- user_record = null; // No support for user_record
- uint8[]? res = null;
- try {
- res = store.session_store.load_session(address);
- } catch (Error e) {
- record = null;
- return e.code;
- }
- if (res == null) {
- record = null;
- return 0;
- }
- record = new Buffer.from((!)res);
- if (record == null) return ErrorCode.NOMEM;
- return 1;
- }
-
- static int ss_get_sub_device_sessions_func(out IntList? sessions, char[] name, void* user_data) {
- Store store = (Store) user_data;
- try {
- sessions = store.session_store.get_sub_device_sessions(carr_to_string(name));
- } catch (Error e) {
- sessions = null;
- return e.code;
- }
- return 0;
- }
-
- static int ss_store_session_func(Address address, uint8[] record, uint8[] user_record, void* user_data) {
- // Ignoring user_record
- Store store = (Store) user_data;
- return catch_to_code(() => {
- store.session_store.store_session(address, record);
- return 0;
- });
- }
-
- static int ss_contains_session_func(Address address, void* user_data) {
- Store store = (Store) user_data;
- return catch_to_code(() => {
- return store.session_store.contains_session(address) ? 1 : 0;
- });
- }
-
- static int ss_delete_session_func(Address address, void* user_data) {
- Store store = (Store) user_data;
- return catch_to_code(() => {
- store.session_store.delete_session(address);
- return 0;
- });
- }
-
- static int ss_delete_all_sessions_func(char[] name, void* user_data) {
- Store store = (Store) user_data;
- return catch_to_code(() => {
- store.session_store.delete_all_sessions(carr_to_string(name));
- return 0;
- });
- }
-
- static void ss_destroy_func(void* user_data) {
- }
-
- static int pks_load_pre_key(out Buffer? record, uint32 pre_key_id, void* user_data) {
- Store store = (Store) user_data;
- uint8[]? res = null;
- try {
- res = store.pre_key_store.load_pre_key(pre_key_id);
- } catch (Error e) {
- record = null;
- return e.code;
- }
- if (res == null) {
- record = new Buffer(0);
- return 0;
- }
- record = new Buffer.from((!)res);
- if (record == null) return ErrorCode.NOMEM;
- return 1;
- }
-
- static int pks_store_pre_key(uint32 pre_key_id, uint8[] record, void* user_data) {
- Store store = (Store) user_data;
- return catch_to_code(() => {
- store.pre_key_store.store_pre_key(pre_key_id, record);
- return 0;
- });
- }
-
- static int pks_contains_pre_key(uint32 pre_key_id, void* user_data) {
- Store store = (Store) user_data;
- return catch_to_code(() => {
- return store.pre_key_store.contains_pre_key(pre_key_id) ? 1 : 0;
- });
- }
-
- static int pks_remove_pre_key(uint32 pre_key_id, void* user_data) {
- Store store = (Store) user_data;
- return catch_to_code(() => {
- store.pre_key_store.delete_pre_key(pre_key_id);
- return 0;
- });
- }
-
- static void pks_destroy_func(void* user_data) {
- }
-
- static int spks_load_signed_pre_key(out Buffer? record, uint32 pre_key_id, void* user_data) {
- Store store = (Store) user_data;
- uint8[]? res = null;
- try {
- res = store.signed_pre_key_store.load_signed_pre_key(pre_key_id);
- } catch (Error e) {
- record = null;
- return e.code;
- }
- if (res == null) {
- record = new Buffer(0);
- return 0;
- }
- record = new Buffer.from((!)res);
- if (record == null) return ErrorCode.NOMEM;
- return 1;
- }
-
- static int spks_store_signed_pre_key(uint32 pre_key_id, uint8[] record, void* user_data) {
- Store store = (Store) user_data;
- return catch_to_code(() => {
- store.signed_pre_key_store.store_signed_pre_key(pre_key_id, record);
- return 0;
- });
- }
-
- static int spks_contains_signed_pre_key(uint32 pre_key_id, void* user_data) {
- Store store = (Store) user_data;
- return catch_to_code(() => {
- return store.signed_pre_key_store.contains_signed_pre_key(pre_key_id) ? 1 : 0;
- });
- }
-
- static int spks_remove_signed_pre_key(uint32 pre_key_id, void* user_data) {
- Store store = (Store) user_data;
- return catch_to_code(() => {
- store.signed_pre_key_store.delete_signed_pre_key(pre_key_id);
- return 0;
- });
- }
-
- static void spks_destroy_func(void* user_data) {
- }
-
- internal Store(Context context) {
- this.context = context;
- NativeStoreContext.create(out native_store_context_, context.native_context);
-
- NativeIdentityKeyStore iks = NativeIdentityKeyStore() {
- get_identity_key_pair = iks_get_identity_key_pair,
- get_local_registration_id = iks_get_local_registration_id,
- save_identity = iks_save_identity,
- is_trusted_identity = iks_is_trusted_identity,
- destroy_func = iks_destroy_func,
- user_data = this
- };
- native_context.set_identity_key_store(iks);
-
- NativeSessionStore ss = NativeSessionStore() {
- load_session_func = ss_load_session_func,
- get_sub_device_sessions_func = ss_get_sub_device_sessions_func,
- store_session_func = ss_store_session_func,
- contains_session_func = ss_contains_session_func,
- delete_session_func = ss_delete_session_func,
- delete_all_sessions_func = ss_delete_all_sessions_func,
- destroy_func = ss_destroy_func,
- user_data = this
- };
- native_context.set_session_store(ss);
-
- NativePreKeyStore pks = NativePreKeyStore() {
- load_pre_key = pks_load_pre_key,
- store_pre_key = pks_store_pre_key,
- contains_pre_key = pks_contains_pre_key,
- remove_pre_key = pks_remove_pre_key,
- destroy_func = pks_destroy_func,
- user_data = this
- };
- native_context.set_pre_key_store(pks);
-
- NativeSignedPreKeyStore spks = NativeSignedPreKeyStore() {
- load_signed_pre_key = spks_load_signed_pre_key,
- store_signed_pre_key = spks_store_signed_pre_key,
- contains_signed_pre_key = spks_contains_signed_pre_key,
- remove_signed_pre_key = spks_remove_signed_pre_key,
- destroy_func = spks_destroy_func,
- user_data = this
- };
- native_context.set_signed_pre_key_store(spks);
- }
-
- public SessionBuilder create_session_builder(Address other) throws Error {
- SessionBuilder builder;
- throw_by_code(session_builder_create(out builder, native_context, other, context.native_context), "Error creating session builder");
- return builder;
- }
-
- public SessionCipher create_session_cipher(Address other) throws Error {
- SessionCipher cipher;
- throw_by_code(session_cipher_create(out cipher, native_context, other, context.native_context));
- return cipher;
- }
-
- public IdentityKeyPair identity_key_pair {
- owned get {
- IdentityKeyPair pair;
- Protocol.Identity.get_key_pair(native_context, out pair);
- return pair;
- }
- }
-
- public bool is_trusted_identity(Address address, ECPublicKey key) throws Error {
- return throw_by_code(Protocol.Identity.is_trusted_identity(native_context, address, key)) == 1;
- }
-
- public void save_identity(Address address, ECPublicKey key) throws Error {
- throw_by_code(Protocol.Identity.save_identity(native_context, address, key));
- }
-
- public bool contains_session(Address other) throws Error {
- return throw_by_code(Protocol.Session.contains_session(native_context, other)) == 1;
- }
-
- public void delete_session(Address address) throws Error {
- throw_by_code(Protocol.Session.delete_session(native_context, address));
- }
-
- public SessionRecord load_session(Address other) throws Error {
- SessionRecord record;
- throw_by_code(Protocol.Session.load_session(native_context, out record, other));
- return record;
- }
-
- public bool contains_pre_key(uint32 pre_key_id) throws Error {
- return throw_by_code(Protocol.PreKey.contains_key(native_context, pre_key_id)) == 1;
- }
-
- public void store_pre_key(PreKeyRecord record) throws Error {
- throw_by_code(Protocol.PreKey.store_key(native_context, record));
- }
-
- public PreKeyRecord load_pre_key(uint32 pre_key_id) throws Error {
- PreKeyRecord res;
- throw_by_code(Protocol.PreKey.load_key(native_context, out res, pre_key_id));
- return res;
- }
-
- public bool contains_signed_pre_key(uint32 pre_key_id) throws Error {
- return throw_by_code(Protocol.SignedPreKey.contains_key(native_context, pre_key_id)) == 1;
- }
-
- public void store_signed_pre_key(SignedPreKeyRecord record) throws Error {
- throw_by_code(Protocol.SignedPreKey.store_key(native_context, record));
- }
-
- public SignedPreKeyRecord load_signed_pre_key(uint32 pre_key_id) throws Error {
- SignedPreKeyRecord res;
- throw_by_code(Protocol.SignedPreKey.load_key(native_context, out res, pre_key_id));
- return res;
- }
-}
-
-}
diff --git a/plugins/omemo/src/native/util.vala b/plugins/omemo/src/native/util.vala
deleted file mode 100644
index be43668d..00000000
--- a/plugins/omemo/src/native/util.vala
+++ /dev/null
@@ -1,45 +0,0 @@
-namespace Omemo {
-
-public ECPublicKey generate_public_key(ECPrivateKey private_key) throws Error {
- ECPublicKey public_key;
- throw_by_code(ECPublicKey.generate(out public_key, private_key), "Error generating public key");
-
- return public_key;
-}
-
-public uint8[] calculate_agreement(ECPublicKey public_key, ECPrivateKey private_key) throws Error {
- uint8[] res;
- int len = Curve.calculate_agreement(out res, public_key, private_key);
- throw_by_code(len, "Error calculating agreement");
- res.length = len;
- return res;
-}
-
-public bool verify_signature(ECPublicKey signing_key, uint8[] message, uint8[] signature) throws Error {
- return throw_by_code(Curve.verify_signature(signing_key, message, signature)) == 1;
-}
-
-public PreKeyBundle create_pre_key_bundle(uint32 registration_id, int device_id, uint32 pre_key_id, ECPublicKey? pre_key_public,
- uint32 signed_pre_key_id, ECPublicKey? signed_pre_key_public, uint8[]? signed_pre_key_signature, ECPublicKey? identity_key) throws Error {
- PreKeyBundle res;
- throw_by_code(PreKeyBundle.create(out res, registration_id, device_id, pre_key_id, pre_key_public, signed_pre_key_id, signed_pre_key_public, signed_pre_key_signature, identity_key), "Error creating PreKeyBundle");
- return res;
-}
-
-internal string carr_to_string(char[] carr) {
- char[] nu = new char[carr.length + 1];
- Memory.copy(nu, carr, carr.length);
- return (string) nu;
-}
-
-internal delegate int CodeErroringFunc() throws Error;
-
-internal int catch_to_code(CodeErroringFunc func) {
- try {
- return func();
- } catch (Error e) {
- return e.code;
- }
-}
-
-} \ No newline at end of file
diff --git a/plugins/omemo/src/plugin.vala b/plugins/omemo/src/plugin.vala
deleted file mode 100644
index 7b7034c8..00000000
--- a/plugins/omemo/src/plugin.vala
+++ /dev/null
@@ -1,97 +0,0 @@
-using Gee;
-using Dino.Entities;
-using Omemo;
-
-extern const string GETTEXT_PACKAGE;
-extern const string LOCALE_INSTALL_DIR;
-
-namespace Dino.Plugins.Omemo {
-
-public class Plugin : RootInterface, Object {
- public const bool DEBUG = false;
- private static Context? _context;
- public static Context get_context() {
- assert(_context != null);
- return (!)_context;
- }
- public static bool ensure_context() {
- lock(_context) {
- try {
- if (_context == null) {
- _context = new Context(DEBUG);
- }
- return true;
- } catch (Error e) {
- warning("Error initializing libomemo-c Context %s", e.message);
- return false;
- }
- }
- }
-
- public Dino.Application app;
- public Database db;
- public EncryptionListEntry list_entry;
- public ContactDetailsProvider contact_details_provider;
- public DeviceNotificationPopulator device_notification_populator;
- public OwnNotifications own_notifications;
- public TrustManager trust_manager;
- public HashMap<Account, OmemoDecryptor> decryptors = new HashMap<Account, OmemoDecryptor>(Account.hash_func, Account.equals_func);
- public HashMap<Account, OmemoEncryptor> encryptors = new HashMap<Account, OmemoEncryptor>(Account.hash_func, Account.equals_func);
-
- public void registered(Dino.Application app) {
- ensure_context();
- this.app = app;
- this.db = new Database(Path.build_filename(Application.get_storage_dir(), "omemo.db"));
- this.list_entry = new EncryptionListEntry(this);
- this.contact_details_provider = new ContactDetailsProvider(this);
- this.device_notification_populator = new DeviceNotificationPopulator(this, this.app.stream_interactor);
- this.trust_manager = new TrustManager(this.app.stream_interactor, this.db);
-
- this.app.plugin_registry.register_encryption_list_entry(list_entry);
- this.app.plugin_registry.register_encryption_preferences_entry(new OmemoPreferencesEntry(this));
- this.app.plugin_registry.register_contact_details_entry(contact_details_provider);
- this.app.plugin_registry.register_notification_populator(device_notification_populator);
- this.app.plugin_registry.register_conversation_addition_populator(new BadMessagesPopulator(this.app.stream_interactor, this));
- this.app.plugin_registry.register_call_entryption_entry(DtlsSrtpVerificationDraft.NS_URI, new CallEncryptionEntry(db));
-
- this.app.stream_interactor.module_manager.initialize_account_modules.connect((account, list) => {
- Store store = Plugin.get_context().create_store();
- list.add(new StreamModule(store));
- decryptors[account] = new OmemoDecryptor(account, app.stream_interactor, trust_manager, db, store);
- list.add(decryptors[account]);
- encryptors[account] = new OmemoEncryptor(account, trust_manager, store);
- list.add(encryptors[account]);
- list.add(new JetOmemo.Module());
- list.add(new DtlsSrtpVerificationDraft.StreamModule());
- this.own_notifications = new OwnNotifications(this, this.app.stream_interactor, account);
- });
-
- app.stream_interactor.get_module(MessageProcessor.IDENTITY).received_pipeline.connect(new DecryptMessageListener(decryptors));
- app.stream_interactor.get_module(FileManager.IDENTITY).add_file_decryptor(new OmemoFileDecryptor());
- app.stream_interactor.get_module(FileManager.IDENTITY).add_file_encryptor(new OmemoFileEncryptor());
- JingleFileHelperRegistry.instance.add_encryption_helper(Encryption.OMEMO, new JetOmemo.EncryptionHelper(app.stream_interactor));
-
- Manager.start(this.app.stream_interactor, db, trust_manager, encryptors);
-
- string locales_dir;
- if (app.search_path_generator != null) {
- locales_dir = ((!)app.search_path_generator).get_locale_path(GETTEXT_PACKAGE, LOCALE_INSTALL_DIR);
- } else {
- locales_dir = LOCALE_INSTALL_DIR;
- }
- internationalize(GETTEXT_PACKAGE, locales_dir);
- }
-
- public void shutdown() {
- // Nothing to do
- }
-
- public bool has_new_devices(Account account, Xmpp.Jid jid) {
- int identity_id = db.identity.get_id(account.id);
- if (identity_id < 0) return false;
-
- return db.identity_meta.get_new_devices(identity_id, jid.bare_jid.to_string()).count() > 0;
- }
-}
-
-}
diff --git a/plugins/omemo/src/protocol/bundle.vala b/plugins/omemo/src/protocol/bundle.vala
deleted file mode 100644
index b7e2b9cf..00000000
--- a/plugins/omemo/src/protocol/bundle.vala
+++ /dev/null
@@ -1,88 +0,0 @@
-using Gee;
-using Omemo;
-using Xmpp;
-
-namespace Dino.Plugins.Omemo {
-
-public class Bundle {
- public StanzaNode? node;
-
- public Bundle(StanzaNode? node) {
- this.node = node;
- assert(Plugin.ensure_context());
- }
-
- public int32 signed_pre_key_id { get {
- if (node == null) return -1;
- string? id = ((!)node).get_deep_attribute("signedPreKeyPublic", "signedPreKeyId");
- if (id == null) return -1;
- return int.parse((!)id);
- }}
-
- public ECPublicKey? signed_pre_key { owned get {
- if (node == null) return null;
- string? key = ((!)node).get_deep_string_content("signedPreKeyPublic");
- if (key == null) return null;
- try {
- return Plugin.get_context().decode_public_key(Base64.decode((!)key));
- } catch (Error e) {
- return null;
- }
- }}
-
- public uint8[]? signed_pre_key_signature { owned get {
- if (node == null) return null;
- string? sig = ((!)node).get_deep_string_content("signedPreKeySignature");
- if (sig == null) return null;
- return Base64.decode((!)sig);
- }}
-
- public ECPublicKey? identity_key { owned get {
- if (node == null) return null;
- string? key = ((!)node).get_deep_string_content("identityKey");
- if (key == null) return null;
- try {
- return Plugin.get_context().decode_public_key(Base64.decode((!)key));
- } catch (Error e) {
- return null;
- }
- }}
-
- public ArrayList<PreKey> pre_keys { owned get {
- ArrayList<PreKey> list = new ArrayList<PreKey>();
- if (node == null || ((!)node).get_subnode("prekeys") == null) return list;
- ((!)node).get_deep_subnodes("prekeys", "preKeyPublic")
- .filter((node) => ((!)node).get_attribute("preKeyId") != null)
- .map<PreKey>(PreKey.create)
- .foreach((key) => list.add(key));
- return list;
- }}
-
- public class PreKey {
- private StanzaNode node;
-
- public static PreKey create(owned StanzaNode node) {
- return new PreKey(node);
- }
-
- public PreKey(StanzaNode node) {
- this.node = node;
- }
-
- public int32 key_id { get {
- return int.parse(node.get_attribute("preKeyId") ?? "-1");
- }}
-
- public ECPublicKey? key { owned get {
- string? key = node.get_string_content();
- if (key == null) return null;
- try {
- return Plugin.get_context().decode_public_key(Base64.decode((!)key));
- } catch (Error e) {
- return null;
- }
- }}
- }
-}
-
-}
diff --git a/plugins/omemo/src/protocol/message_flag.vala b/plugins/omemo/src/protocol/message_flag.vala
deleted file mode 100644
index ba9ea16e..00000000
--- a/plugins/omemo/src/protocol/message_flag.vala
+++ /dev/null
@@ -1,23 +0,0 @@
-using Xmpp;
-
-namespace Dino.Plugins.Omemo {
-
-public class MessageFlag : Xmpp.MessageFlag {
- public const string id = "omemo";
-
- public bool decrypted = false;
-
- public static MessageFlag? get_flag(MessageStanza message) {
- return (MessageFlag) message.get_flag(NS_URI, id);
- }
-
- public override string get_ns() {
- return NS_URI;
- }
-
- public override string get_id() {
- return id;
- }
-}
-
-} \ No newline at end of file
diff --git a/plugins/omemo/src/protocol/stream_module.vala b/plugins/omemo/src/protocol/stream_module.vala
deleted file mode 100644
index cb68d4b4..00000000
--- a/plugins/omemo/src/protocol/stream_module.vala
+++ /dev/null
@@ -1,331 +0,0 @@
-using Gee;
-using Xmpp;
-using Xmpp.Xep;
-using Omemo;
-
-namespace Dino.Plugins.Omemo {
-
-internal const string NS_URI = "eu.siacs.conversations.axolotl";
-private const string NODE_DEVICELIST = NS_URI + ".devicelist";
-private const string NODE_BUNDLES = NS_URI + ".bundles";
-private const string NODE_VERIFICATION = NS_URI + ".verification";
-
-private const int NUM_KEYS_TO_PUBLISH = 100;
-
-public class StreamModule : XmppStreamModule {
- public static Xmpp.ModuleIdentity<StreamModule> IDENTITY = new Xmpp.ModuleIdentity<StreamModule>(NS_URI, "omemo_module");
- private static TimeSpan IGNORE_TIME = TimeSpan.MINUTE;
-
- public Store store { public get; private set; }
- private ConcurrentSet<string> active_bundle_requests = new ConcurrentSet<string>();
- private HashMap<Jid, Future<ArrayList<int32>>> active_devicelist_requests = new HashMap<Jid, Future<ArrayList<int32>>>(Jid.hash_func, Jid.equals_func);
- private Map<string, DateTime> device_ignore_time = new HashMap<string, DateTime>();
-
- public signal void device_list_loaded(Jid jid, ArrayList<int32> devices);
- public signal void bundle_fetched(Jid jid, int device_id, Bundle bundle);
- public signal void bundle_fetch_failed(Jid jid, int device_id);
-
- public StreamModule(Store store) {
- this.store = store;
- }
-
- public override void attach(XmppStream stream) {
- stream.get_module(Pubsub.Module.IDENTITY).add_filtered_notification(stream, NODE_DEVICELIST,
- (stream, jid, id, node) => parse_device_list(stream, jid, id, node), null, null);
- }
-
- public override void detach(XmppStream stream) {
- stream.get_module(Pubsub.Module.IDENTITY).remove_filtered_notification(stream, NODE_DEVICELIST);
- }
-
- public async ArrayList<int32> request_user_devicelist(XmppStream stream, Jid jid) {
- var future = active_devicelist_requests[jid];
- if (future == null) {
- var promise = new Promise<ArrayList<int32>?>();
- future = promise.future;
- active_devicelist_requests[jid] = future;
-
- stream.get_module(Pubsub.Module.IDENTITY).request(stream, jid, NODE_DEVICELIST, (stream, jid, id, node) => {
- ArrayList<int32> device_list = parse_device_list(stream, jid, id, node);
- promise.set_value(device_list);
- active_devicelist_requests.unset(jid);
- });
- }
-
- try {
- ArrayList<int32> device_list = yield future.wait_async();
- return device_list;
- } catch (FutureError error) {
- warning("Future error when waiting for device list: %s", error.message);
- return new ArrayList<int32>();
- }
- }
-
- public ArrayList<int32> parse_device_list(XmppStream stream, Jid jid, string? id, StanzaNode? node_) {
- ArrayList<int32> device_list = new ArrayList<int32>();
-
- StanzaNode node = node_ ?? new StanzaNode.build("list", NS_URI).add_self_xmlns();
- Jid? my_jid = stream.get_flag(Bind.Flag.IDENTITY).my_jid;
- if (my_jid == null) return device_list;
- if (jid.equals_bare(my_jid) && store.local_registration_id != 0) {
- bool am_on_devicelist = false;
- foreach (StanzaNode device_node in node.get_subnodes("device")) {
- int device_id = device_node.get_attribute_int("id");
- if (store.local_registration_id == device_id) {
- am_on_devicelist = true;
- }
- }
- if (!am_on_devicelist) {
- debug("Not on device list, adding id");
- node.put_node(new StanzaNode.build("device", NS_URI).put_attribute("id", store.local_registration_id.to_string()));
- stream.get_module(Pubsub.Module.IDENTITY).publish.begin(stream, jid, NODE_DEVICELIST, id, node, null, true, () => {
- try_make_node_public.begin(stream, NODE_DEVICELIST);
- });
- }
- publish_bundles_if_needed(stream, jid);
- }
-
- foreach (StanzaNode device_node in node.get_subnodes("device")) {
- device_list.add(device_node.get_attribute_int("id"));
- }
- device_list_loaded(jid, device_list);
-
- return device_list;
- }
-
- public void fetch_bundles(XmppStream stream, Jid jid, Gee.List<int32> devices) {
- Address address = new Address(jid.bare_jid.to_string(), 0);
- foreach(int32 device_id in devices) {
- if (!is_ignored_device(jid, device_id)) {
- address.device_id = device_id;
- try {
- if (!store.contains_session(address)) {
- fetch_bundle(stream, jid, device_id);
- }
- } catch (Error e) {
- // Ignore
- }
- }
- }
- address.device_id = 0; // TODO: Hack to have address obj live longer
- }
-
- public void fetch_bundle(XmppStream stream, Jid jid, int device_id, bool ignore_if_non_present = true) {
- if (active_bundle_requests.add(jid.bare_jid.to_string() + @":$device_id")) {
- debug("Asking for bundle for %s/%d", jid.bare_jid.to_string(), device_id);
- stream.get_module(Pubsub.Module.IDENTITY).request(stream, jid.bare_jid, @"$NODE_BUNDLES:$device_id", (stream, jid, id, node) => {
- on_other_bundle_result(stream, jid, device_id, id, node, ignore_if_non_present);
- });
- }
- }
-
- public void ignore_device(Jid jid, int32 device_id) {
- if (device_id <= 0) return;
- lock (device_ignore_time) {
- device_ignore_time[jid.bare_jid.to_string() + @":$device_id"] = new DateTime.now_utc();
- }
- }
-
- public void unignore_device(Jid jid, int32 device_id) {
- if (device_id <= 0) return;
- lock (device_ignore_time) {
- device_ignore_time.unset(jid.bare_jid.to_string() + @":$device_id");
- }
- }
-
- public bool is_ignored_device(Jid jid, int32 device_id) {
- if (device_id <= 0) return true;
- lock (device_ignore_time) {
- string id = jid.bare_jid.to_string() + @":$device_id";
- if (device_ignore_time.has_key(id)) {
- return new DateTime.now_utc().difference(device_ignore_time[id]) < IGNORE_TIME;
- }
- }
- return false;
- }
-
- public void clear_device_list(XmppStream stream) {
- stream.get_module(Pubsub.Module.IDENTITY).delete_node(stream, null, NODE_DEVICELIST);
- }
-
- private void on_other_bundle_result(XmppStream stream, Jid jid, int device_id, string? id, StanzaNode? node, bool ignore_if_non_present) {
- if (node == null) {
- // Device not registered, shouldn't exist
- if (ignore_if_non_present) {
- debug("Ignoring device %s/%d: No bundle", jid.bare_jid.to_string(), device_id);
- stream.get_module(IDENTITY).ignore_device(jid, device_id);
- }
- bundle_fetch_failed(jid, device_id);
- } else {
- Bundle bundle = new Bundle(node);
- stream.get_module(IDENTITY).unignore_device(jid, device_id);
- debug("Received bundle for %s/%d: %s", jid.bare_jid.to_string(), device_id, Base64.encode(bundle.identity_key.serialize()));
- bundle_fetched(jid, device_id, bundle);
- }
- stream.get_module(IDENTITY).active_bundle_requests.remove(jid.bare_jid.to_string() + @":$device_id");
- }
-
- public bool start_session(XmppStream stream, Jid jid, int32 device_id, Bundle bundle) {
- bool fail = false;
- int32 signed_pre_key_id = bundle.signed_pre_key_id;
- ECPublicKey? signed_pre_key = bundle.signed_pre_key;
- uint8[] signed_pre_key_signature = bundle.signed_pre_key_signature;
- ECPublicKey? identity_key = bundle.identity_key;
-
- ArrayList<Bundle.PreKey> pre_keys = bundle.pre_keys;
- if (signed_pre_key_id < 0 || signed_pre_key == null || identity_key == null || pre_keys.size == 0) {
- fail = true;
- } else {
- int pre_key_idx = Random.int_range(0, pre_keys.size);
- int32 pre_key_id = pre_keys[pre_key_idx].key_id;
- ECPublicKey? pre_key = pre_keys[pre_key_idx].key;
- if (pre_key_id < 0 || pre_key == null) {
- fail = true;
- } else {
- Address address = new Address(jid.bare_jid.to_string(), device_id);
- try {
- if (store.contains_session(address)) {
- return false;
- }
- debug("Starting new session for encryption with %s/%d", jid.bare_jid.to_string(), device_id);
- SessionBuilder builder = store.create_session_builder(address);
- builder.process_pre_key_bundle(create_pre_key_bundle(device_id, device_id, pre_key_id, pre_key, signed_pre_key_id, signed_pre_key, signed_pre_key_signature, identity_key));
- } catch (Error e) {
- debug("Can't create session with %s/%d: %s", jid.bare_jid.to_string(), device_id, e.message);
- fail = true;
- }
- address.device_id = 0; // TODO: Hack to have address obj live longer
- }
- }
- if (fail) {
- debug("Ignoring device %s/%d: Bad bundle: %s", jid.bare_jid.to_string(), device_id, bundle.node.to_string());
- stream.get_module(IDENTITY).ignore_device(jid, device_id);
- }
- return true;
- }
-
- public void publish_bundles_if_needed(XmppStream stream, Jid jid) {
- if (active_bundle_requests.add(jid.bare_jid.to_string() + @":$(store.local_registration_id)")) {
- stream.get_module(Pubsub.Module.IDENTITY).request(stream, jid, @"$NODE_BUNDLES:$(store.local_registration_id)", on_self_bundle_result);
- }
- }
-
- private void on_self_bundle_result(XmppStream stream, Jid jid, string? id, StanzaNode? node) {
- if (!Plugin.ensure_context()) return;
- Map<int, ECPublicKey> keys = new HashMap<int, ECPublicKey>();
- ECPublicKey? identity_key = null;
- int32 signed_pre_key_id = -1;
- ECPublicKey? signed_pre_key = null;
- SignedPreKeyRecord? signed_pre_key_record = null;
- bool changed = false;
- if (node == null) {
- identity_key = store.identity_key_pair.public;
- changed = true;
- } else {
- Bundle bundle = new Bundle(node);
- foreach (Bundle.PreKey prekey in bundle.pre_keys) {
- ECPublicKey? key = prekey.key;
- if (key != null) {
- keys[prekey.key_id] = (!)key;
- }
- }
- identity_key = bundle.identity_key;
- signed_pre_key_id = bundle.signed_pre_key_id;
- signed_pre_key = bundle.signed_pre_key;
- }
-
- try {
- // Validate IdentityKey
- if (identity_key == null || store.identity_key_pair.public.compare((!)identity_key) != 0) {
- changed = true;
- }
- IdentityKeyPair identity_key_pair = store.identity_key_pair;
-
- // Validate signedPreKeyRecord + ID
- if (signed_pre_key == null || signed_pre_key_id == -1 || !store.contains_signed_pre_key(signed_pre_key_id) || store.load_signed_pre_key(signed_pre_key_id).key_pair.public.compare((!)signed_pre_key) != 0) {
- signed_pre_key_id = Random.int_range(1, int32.MAX); // TODO: No random, use ordered number
- signed_pre_key_record = Plugin.get_context().generate_signed_pre_key(identity_key_pair, signed_pre_key_id);
- store.store_signed_pre_key((!)signed_pre_key_record);
- changed = true;
- } else {
- signed_pre_key_record = store.load_signed_pre_key(signed_pre_key_id);
- }
-
- // Validate PreKeys
- Set<PreKeyRecord> pre_key_records = new HashSet<PreKeyRecord>();
- foreach (var entry in keys.entries) {
- if (store.contains_pre_key(entry.key)) {
- PreKeyRecord record = store.load_pre_key(entry.key);
- if (record.key_pair.public.compare(entry.value) == 0) {
- pre_key_records.add(record);
- }
- }
- }
- int new_keys = NUM_KEYS_TO_PUBLISH - pre_key_records.size;
- if (new_keys > 0) {
- int32 next_id = Random.int_range(1, int32.MAX); // TODO: No random, use ordered number
- Set<PreKeyRecord> new_records = Plugin.get_context().generate_pre_keys((uint)next_id, (uint)new_keys);
- pre_key_records.add_all(new_records);
- foreach (PreKeyRecord record in new_records) {
- store.store_pre_key(record);
- }
- changed = true;
- }
-
- if (changed) {
- publish_bundles.begin(stream, (!)signed_pre_key_record, identity_key_pair, pre_key_records, (int32) store.local_registration_id);
- }
- } catch (Error e) {
- warning(@"Unexpected error while publishing bundle: $(e.message)\n");
- }
- stream.get_module(IDENTITY).active_bundle_requests.remove(jid.bare_jid.to_string() + @":$(store.local_registration_id)");
- }
-
- public async void publish_bundles(XmppStream stream, SignedPreKeyRecord signed_pre_key_record, IdentityKeyPair identity_key_pair, Set<PreKeyRecord> pre_key_records, int32 device_id) throws Error {
- ECKeyPair tmp;
- StanzaNode bundle = new StanzaNode.build("bundle", NS_URI)
- .add_self_xmlns()
- .put_node(new StanzaNode.build("signedPreKeyPublic", NS_URI)
- .put_attribute("signedPreKeyId", signed_pre_key_record.id.to_string())
- .put_node(new StanzaNode.text(Base64.encode((tmp = signed_pre_key_record.key_pair).public.serialize()))))
- .put_node(new StanzaNode.build("signedPreKeySignature", NS_URI)
- .put_node(new StanzaNode.text(Base64.encode(signed_pre_key_record.signature))))
- .put_node(new StanzaNode.build("identityKey", NS_URI)
- .put_node(new StanzaNode.text(Base64.encode(identity_key_pair.public.serialize()))));
- StanzaNode prekeys = new StanzaNode.build("prekeys", NS_URI);
- foreach (PreKeyRecord pre_key_record in pre_key_records) {
- prekeys.put_node(new StanzaNode.build("preKeyPublic", NS_URI)
- .put_attribute("preKeyId", pre_key_record.id.to_string())
- .put_node(new StanzaNode.text(Base64.encode(pre_key_record.key_pair.public.serialize()))));
- }
- bundle.put_node(prekeys);
-
- string node_id = @"$NODE_BUNDLES:$device_id";
- yield stream.get_module(Pubsub.Module.IDENTITY).publish(stream, null, node_id, "1", bundle);
- yield try_make_node_public(stream, node_id);
-
- }
-
- private async void try_make_node_public(XmppStream stream, string node_id) {
- DataForms.DataForm? data_form = yield stream.get_module(Pubsub.Module.IDENTITY).request_node_config(stream, null, node_id);
- if (data_form == null) return;
-
- foreach (DataForms.DataForm.Field field in data_form.fields) {
- if (field.var == "pubsub#access_model" && field.get_value_string() != Pubsub.ACCESS_MODEL_OPEN) {
- field.set_value_string(Pubsub.ACCESS_MODEL_OPEN);
- yield stream.get_module(Pubsub.Module.IDENTITY).submit_node_config(stream, data_form, node_id);
- break;
- }
- }
- }
-
- public override string get_ns() {
- return NS_URI;
- }
-
- public override string get_id() {
- return IDENTITY.id;
- }
-}
-
-}
diff --git a/plugins/omemo/src/register_plugin.vala b/plugins/omemo/src/register_plugin.vala
deleted file mode 100644
index 0d0e1c3e..00000000
--- a/plugins/omemo/src/register_plugin.vala
+++ /dev/null
@@ -1,3 +0,0 @@
-public Type register_plugin(Module module) {
- return typeof (Dino.Plugins.Omemo.Plugin);
-}
diff --git a/plugins/omemo/src/trust_level.vala b/plugins/omemo/src/trust_level.vala
deleted file mode 100644
index afcfb0fb..00000000
--- a/plugins/omemo/src/trust_level.vala
+++ /dev/null
@@ -1,15 +0,0 @@
-namespace Dino.Plugins.Omemo {
-
-public enum TrustLevel {
- VERIFIED,
- TRUSTED,
- UNTRUSTED,
- UNKNOWN;
-
- public string to_string() {
- int val = this;
- return val.to_string();
- }
-}
-
-}
diff --git a/plugins/omemo/src/ui/bad_messages_populator.vala b/plugins/omemo/src/ui/bad_messages_populator.vala
deleted file mode 100644
index 9dacba95..00000000
--- a/plugins/omemo/src/ui/bad_messages_populator.vala
+++ /dev/null
@@ -1,198 +0,0 @@
-using Gee;
-using Gtk;
-using Qlite;
-
-using Dino.Entities;
-using Xmpp;
-
-namespace Dino.Plugins.Omemo {
-
-public enum BadnessType {
- UNTRUSTED,
- UNDECRYPTABLE
-}
-
-public class BadMessagesPopulator : Plugins.ConversationItemPopulator, Plugins.ConversationAdditionPopulator, Object {
-
- public string id { get { return "bad_omemo_messages"; } }
-
- private StreamInteractor stream_interactor;
- private Plugin plugin;
- private Database db;
-
- private Conversation? current_conversation;
- private Plugins.ConversationItemCollection? item_collection;
-
- private Gee.List<BadMessageItem> bad_items = new ArrayList<BadMessageItem>();
-
- public BadMessagesPopulator(StreamInteractor stream_interactor, Plugin plugin) {
- this.stream_interactor = stream_interactor;
- this.plugin = plugin;
- this.db = plugin.db;
-
- plugin.trust_manager.bad_message_state_updated.connect((account, jid, device_id) => {
- clear_state();
- init_state();
- });
- }
-
- private void init_state() {
- if (current_conversation == null) return;
- if (current_conversation.type_ == Conversation.Type.GROUPCHAT_PM) return;
-
- var qry = db.identity_meta.select()
- .join_with(db.identity, db.identity.id, db.identity_meta.identity_id)
- .with(db.identity.account_id, "=", current_conversation.account.id)
- .where("last_message_untrusted is not NULL OR last_message_undecryptable is not NULL");
-
- switch (current_conversation.type_) {
- case Conversation.Type.CHAT:
- qry.with(db.identity_meta.address_name, "=", current_conversation.counterpart.to_string());
- break;
- case Conversation.Type.GROUPCHAT:
- bool is_private = stream_interactor.get_module(MucManager.IDENTITY).is_private_room(current_conversation.account, current_conversation.counterpart);
- if (!is_private) return;
-
- var list = stream_interactor.get_module(MucManager.IDENTITY).get_offline_members(current_conversation.counterpart, current_conversation.account);
- if (list == null || list.is_empty) return;
-
- var selection = new StringBuilder();
- string[] selection_args = {};
- foreach (Jid jid in list) {
- if (selection.len == 0) {
- selection.append(@" ($(db.identity_meta.address_name) = ?");
- } else {
- selection.append(@" OR $(db.identity_meta.address_name) = ?");
- }
- selection_args += jid.to_string();
- }
- selection.append(")");
- qry.where(selection.str, selection_args);
- break;
- case Conversation.Type.GROUPCHAT_PM:
- break;
- }
-
- foreach (Row row in qry) {
- Jid jid = Jid.from_string(row[db.identity_meta.address_name]);
- if (!db.identity_meta.last_message_untrusted.is_null(row)) {
- DateTime time = new DateTime.from_unix_utc(row[db.identity_meta.last_message_untrusted]);
- var item = new BadMessageItem(plugin, current_conversation, jid, time, BadnessType.UNTRUSTED);
- bad_items.add(item);
- item_collection.insert_item(item);
- }
- if (!db.identity_meta.last_message_undecryptable.is_null(row)) {
- DateTime time = new DateTime.from_unix_utc(row[db.identity_meta.last_message_undecryptable]);
- var item = new BadMessageItem(plugin, current_conversation, jid, time, BadnessType.UNDECRYPTABLE);
- bad_items.add(item);
- item_collection.insert_item(item);
- }
- }
- }
-
- private void clear_state() {
- foreach (BadMessageItem bad_item in bad_items) {
- item_collection.remove_item(bad_item);
- }
- bad_items.clear();
- }
-
- public void init(Conversation conversation, Plugins.ConversationItemCollection item_collection, Plugins.WidgetType type) {
- current_conversation = conversation;
- this.item_collection = item_collection;
-
- init_state();
- }
-
- public void close(Conversation conversation) {
- clear_state();
- }
-
- public void populate_timespan(Conversation conversation, DateTime after, DateTime before) { }
-}
-
-public class BadMessageItem : Plugins.MetaConversationItem {
-
- private Plugin plugin;
- private Conversation conversation;
- private Jid problem_jid;
- private BadnessType badness_type;
-
- public BadMessageItem(Plugin plugin, Conversation conversation, Jid jid, DateTime date, BadnessType badness_type) {
- this.plugin = plugin;
- this.conversation = conversation;
- this.problem_jid = jid;
- this.time = date;
- this.badness_type = badness_type;
- }
-
- public override Object? get_widget(Plugins.ConversationItemWidgetInterface outer, Plugins.WidgetType widget_type) {
- return new BadMessagesWidget(plugin, conversation, problem_jid, badness_type);
- }
-
- public override Gee.List<Plugins.MessageAction>? get_item_actions(Plugins.WidgetType type) { return null; }
-}
-
-public class BadMessagesWidget : Box {
- private Plugin plugin;
- private Conversation conversation;
- private Jid jid;
- private Label label;
-
- public BadMessagesWidget(Plugin plugin, Conversation conversation, Jid jid, BadnessType badness_type) {
- Object(orientation:Orientation.HORIZONTAL, spacing:5);
-
- this.plugin = plugin;
- this.conversation = conversation;
- this.jid = jid;
- this.halign = Align.CENTER;
- this.visible = true;
-
- string who = "";
- if (conversation.type_ == Conversation.Type.CHAT) {
- who = Dino.get_participant_display_name(plugin.app.stream_interactor, conversation, jid);
- } else if (conversation.type_ == Conversation.Type.GROUPCHAT) {
- who = jid.to_string();
- // `jid` is a real JID. In MUCs, try to show nicks instead (given that the JID is currently online)
- var occupants = plugin.app.stream_interactor.get_module(MucManager.IDENTITY).get_occupants(conversation.counterpart, conversation.account);
- if (occupants == null) return;
- foreach (Jid occupant in occupants) {
- if (jid.equals_bare(plugin.app.stream_interactor.get_module(MucManager.IDENTITY).get_real_jid(occupant, conversation.account))) {
- who = occupant.resourcepart;
- }
- }
- }
-
- string warning_text = "";
- if (badness_type == BadnessType.UNTRUSTED) {
- warning_text = _("%s has been using an untrusted device. You won't see messages from devices that you do not trust.").printf(who) +
- " <a href=\"\">%s</a>".printf(_("Manage devices"));
- } else {
- warning_text += _("%s does not trust this device. That means, you might be missing messages.").printf(who);
- }
- label = new Label(warning_text) { margin_start=70, margin_end=70, justify=Justification.CENTER, use_markup=true, selectable=true, wrap=true, wrap_mode=Pango.WrapMode.WORD_CHAR, hexpand=true };
- label.add_css_class("dim-label");
- this.append(label);
-
- if (badness_type == BadnessType.UNTRUSTED) {
- label.activate_link.connect(on_label_activate_link);
- }
- }
-
- private bool on_label_activate_link() {
- var variant = new Variant.tuple(new Variant[] {new Variant.int32(conversation.id), new Variant.string("encryption")});
- GLib.Application.get_default().activate_action("open-conversation-details", variant);
- return false;
- }
-
- public override void dispose() {
- if (label != null) {
- label.unparent();
- label.dispose();
- label = null;
- }
- base.dispose();
- }
-}
-
-}
diff --git a/plugins/omemo/src/ui/call_encryption_entry.vala b/plugins/omemo/src/ui/call_encryption_entry.vala
deleted file mode 100644
index 69b7b686..00000000
--- a/plugins/omemo/src/ui/call_encryption_entry.vala
+++ /dev/null
@@ -1,57 +0,0 @@
-using Dino.Entities;
-using Gtk;
-using Qlite;
-using Xmpp;
-
-namespace Dino.Plugins.Omemo {
-
- public class CallEncryptionEntry : Plugins.CallEncryptionEntry, Object {
- private Database db;
-
- public CallEncryptionEntry(Database db) {
- this.db = db;
- }
-
- public Plugins.CallEncryptionWidget? get_widget(Account account, Xmpp.Xep.Jingle.ContentEncryption encryption) {
- DtlsSrtpVerificationDraft.OmemoContentEncryption? omemo_encryption = encryption as DtlsSrtpVerificationDraft.OmemoContentEncryption;
- if (omemo_encryption == null) return null;
-
- int identity_id = db.identity.get_id(account.id);
- Row? device = db.identity_meta.get_device(identity_id, omemo_encryption.jid.to_string(), omemo_encryption.sid);
- if (device == null) return null;
- TrustLevel trust = (TrustLevel) device[db.identity_meta.trust_level];
-
- return new CallEncryptionWidget(trust);
- }
- }
-
- public class CallEncryptionWidget : Plugins.CallEncryptionWidget, Object {
-
- string? title = null;
- string? icon = null;
- bool should_show_keys = false;
-
- public CallEncryptionWidget(TrustLevel trust) {
- if (trust == TrustLevel.VERIFIED) {
- title = "This call is <b>encrypted and verified</b> with OMEMO.";
- icon = "dino-security-high-symbolic";
- should_show_keys = false;
- } else {
- title = "This call is encrypted with OMEMO.";
- should_show_keys = true;
- }
- }
-
- public string? get_title() {
- return title;
- }
-
- public string? get_icon_name() {
- return icon;
- }
-
- public bool show_keys() {
- return should_show_keys;
- }
- }
-}
diff --git a/plugins/omemo/src/ui/contact_details_provider.vala b/plugins/omemo/src/ui/contact_details_provider.vala
deleted file mode 100644
index 7c733cd7..00000000
--- a/plugins/omemo/src/ui/contact_details_provider.vala
+++ /dev/null
@@ -1,29 +0,0 @@
-using Gtk;
-using Gee;
-using Qlite;
-using Dino.Entities;
-
-namespace Dino.Plugins.Omemo {
-
-public class ContactDetailsProvider : Plugins.ContactDetailsProvider, Object {
- public string id { get { return "omemo_info"; } }
- public string tab { get { return "encryption"; } }
-
- private Plugin plugin;
-
- public ContactDetailsProvider(Plugin plugin) {
- this.plugin = plugin;
- }
-
- public void populate(Conversation conversation, Plugins.ContactDetails contact_details, WidgetType type) { }
-
- public Object? get_widget(Conversation conversation) {
- if (conversation.type_ != Conversation.Type.CHAT) return null;
-
- var widget = new OmemoPreferencesWidget(plugin);
- widget.set_jid(conversation.account, conversation.counterpart);
- return widget;
- }
-}
-
-}
diff --git a/plugins/omemo/src/ui/device_notification_populator.vala b/plugins/omemo/src/ui/device_notification_populator.vala
deleted file mode 100644
index 7829d89c..00000000
--- a/plugins/omemo/src/ui/device_notification_populator.vala
+++ /dev/null
@@ -1,90 +0,0 @@
-using Dino.Entities;
-using Xmpp;
-using Gtk;
-
-namespace Dino.Plugins.Omemo {
-
-public class DeviceNotificationPopulator : NotificationPopulator, Object {
-
- public string id { get { return "device_notification"; } }
-
- private StreamInteractor? stream_interactor;
- private Plugin plugin;
- private Conversation? current_conversation;
- private NotificationCollection? notification_collection;
- private ConversationNotification notification;
-
- public DeviceNotificationPopulator(Plugin plugin, StreamInteractor stream_interactor) {
- this.stream_interactor = stream_interactor;
- this.plugin = plugin;
-
- stream_interactor.account_added.connect(on_account_added);
- }
-
- public void init(Conversation conversation, NotificationCollection notification_collection, Plugins.WidgetType type) {
- current_conversation = conversation;
- this.notification_collection = notification_collection;
- if (plugin.has_new_devices(conversation.account, conversation.counterpart) && conversation.type_ == Conversation.Type.CHAT) {
- display_notification();
- }
- }
-
- public void close(Conversation conversation) {
- notification = null;
- }
-
- private void display_notification() {
- if (notification == null) {
- notification = new ConversationNotification(plugin, current_conversation);
- notification.should_hide.connect(should_hide);
- notification_collection.add_meta_notification(notification);
- }
- }
-
- public void should_hide() {
- if (!plugin.has_new_devices(current_conversation.account, current_conversation.counterpart) && notification != null){
- notification_collection.remove_meta_notification(notification);
- notification = null;
- }
- }
-
- private void on_account_added(Account account) {
- stream_interactor.module_manager.get_module(account, StreamModule.IDENTITY).bundle_fetched.connect_after((jid, device_id, bundle) => {
- if (current_conversation != null && jid.equals(current_conversation.counterpart) && plugin.has_new_devices(current_conversation.account, current_conversation.counterpart)) {
- display_notification();
- }
- });
- }
-}
-
-private class ConversationNotification : MetaConversationNotification {
- private Widget widget;
- private Plugin plugin;
- private Jid jid;
- private Account account;
- public signal void should_hide();
-
- public ConversationNotification(Plugin plugin, Conversation conversation) {
- this.plugin = plugin;
- this.jid = jid;
- this.account = account;
-
- Box box = new Box(Orientation.HORIZONTAL, 5);
- Button manage_button = new Button.with_label(_("Manage"));
- manage_button.clicked.connect(() => {
- manage_button.activate();
-
- var variant = new Variant.tuple(new Variant[] {new Variant.int32(conversation.id), new Variant.string("encryption")});
- GLib.Application.get_default().activate_action("open-conversation-details", variant);
- });
- box.append(new Label(_("This contact has new devices")) { margin_end=10 });
- box.append(manage_button);
- widget = box;
- }
-
- public override Object? get_widget(WidgetType type) {
- return widget;
- }
-}
-
-}
diff --git a/plugins/omemo/src/ui/encryption_list_entry.vala b/plugins/omemo/src/ui/encryption_list_entry.vala
deleted file mode 100644
index 3bb76c52..00000000
--- a/plugins/omemo/src/ui/encryption_list_entry.vala
+++ /dev/null
@@ -1,77 +0,0 @@
-using Dino.Entities;
-using Gtk;
-using Qlite;
-using Xmpp;
-
-namespace Dino.Plugins.Omemo {
-
-public class EncryptionListEntry : Plugins.EncryptionListEntry, Object {
- private Plugin plugin;
- private Database db;
-
- public EncryptionListEntry(Plugin plugin) {
- this.plugin = plugin;
- this.db = plugin.db;
- }
-
- public Entities.Encryption encryption { get {
- return Entities.Encryption.OMEMO;
- }}
-
- public string name { get {
- return "OMEMO";
- }}
-
- public Object? get_encryption_icon(Entities.Conversation conversation, ContentItem content_item) {
- return null;
- }
-
- public string? get_encryption_icon_name(Entities.Conversation conversation, ContentItem content_item) {
- if (content_item.encryption != encryption) return null;
-
- RowOption row = db.content_item_meta.select( { db.identity_meta.trust_level } ).with(db.content_item_meta.content_item_id, "=", content_item.id)
- .join_on(db.identity_meta, @"$(db.identity_meta.address_name)=$(db.content_item_meta.address_name) AND $(db.identity_meta.device_id)=$(db.content_item_meta.device_id)")
- .single().row();
-
-
- if (row.is_present() && (TrustLevel) row[db.identity_meta.trust_level] == TrustLevel.VERIFIED) {
- return "dino-security-high-symbolic";
- }
- return null;
- }
-
- public void encryption_activated(Entities.Conversation conversation, Plugins.SetInputFieldStatus input_status_callback) {
- encryption_activated_async.begin(conversation, input_status_callback);
- }
-
- public async void encryption_activated_async(Entities.Conversation conversation, Plugins.SetInputFieldStatus input_status_callback) {
- if (conversation.type_ == Conversation.Type.GROUPCHAT_PM) {
- input_status_callback(new Plugins.InputFieldStatus("Can't use encryption in a groupchat private message.", Plugins.InputFieldStatus.MessageType.ERROR, Plugins.InputFieldStatus.InputState.NO_SEND));
- return;
- }
- MucManager muc_manager = plugin.app.stream_interactor.get_module(MucManager.IDENTITY);
- Manager omemo_manager = plugin.app.stream_interactor.get_module(Manager.IDENTITY);
-
- if (muc_manager.is_private_room(conversation.account, conversation.counterpart)) {
- var offline_members = muc_manager.get_offline_members(conversation.counterpart, conversation.account);
- if (offline_members == null) {
- // We don't store offline members yet, and it'll be null if we're offline
- return;
- }
- foreach (Jid offline_member in offline_members) {
- bool ok = yield omemo_manager.ensure_get_keys_for_jid(conversation.account, offline_member);
- if (!ok) {
- input_status_callback(new Plugins.InputFieldStatus("A member does not support OMEMO: %s".printf(offline_member.to_string()), Plugins.InputFieldStatus.MessageType.ERROR, Plugins.InputFieldStatus.InputState.NO_SEND));
- return;
- }
- }
- return;
- }
-
- if (!(yield omemo_manager.ensure_get_keys_for_jid(conversation.account, conversation.counterpart.bare_jid))) {
- input_status_callback(new Plugins.InputFieldStatus("This contact does not support %s encryption".printf("OMEMO"), Plugins.InputFieldStatus.MessageType.ERROR, Plugins.InputFieldStatus.InputState.NO_SEND));
- }
- }
-
-}
-}
diff --git a/plugins/omemo/src/ui/encryption_preferences_entry.vala b/plugins/omemo/src/ui/encryption_preferences_entry.vala
deleted file mode 100644
index f0aedb6a..00000000
--- a/plugins/omemo/src/ui/encryption_preferences_entry.vala
+++ /dev/null
@@ -1,323 +0,0 @@
-using Qlite;
-using Qrencode;
-using Gee;
-using Xmpp;
-using Dino.Entities;
-using Gtk;
-using Omemo;
-
-namespace Dino.Plugins.Omemo {
-
-public class OmemoPreferencesEntry : Plugins.EncryptionPreferencesEntry {
-
- OmemoPreferencesWidget widget;
- Plugin plugin;
-
- public OmemoPreferencesEntry(Plugin plugin) {
- this.plugin = plugin;
- }
-
- public override Object? get_widget(Account account, WidgetType type) {
- if (type != WidgetType.GTK4) return null;
- var widget = new OmemoPreferencesWidget(plugin);
- widget.set_jid(account, account.bare_jid);
- return widget;
- }
-
- public override string id { get { return "omemo_preferences_entryption"; }}
-}
-
-[GtkTemplate (ui = "/im/dino/Dino/omemo/encryption_preferences_entry.ui")]
-public class OmemoPreferencesWidget : Adw.PreferencesGroup {
- private Plugin plugin;
- private Account account;
- private Jid jid;
- private int identity_id = 0;
- private Store store;
- private Set<uint32> displayed_ids = new HashSet<uint32>();
-
- [GtkChild] private unowned Adw.SwitchRow automatically_accept_new_row;
- [GtkChild] private unowned Adw.SwitchRow encrypt_by_default_row;
- [GtkChild] private unowned Label new_keys_label;
-
- [GtkChild] private unowned Adw.PreferencesGroup keys_preferences_group;
- [GtkChild] private unowned ListBox new_keys_listbox;
- [GtkChild] private unowned Picture qrcode_picture;
- [GtkChild] private unowned Popover qrcode_popover;
-
- private ArrayList<Widget> keys_preferences_group_children = new ArrayList<Widget>();
-
- construct {
- // If we set the strings in the .ui file, they don't get translated
- encrypt_by_default_row.title = _("OMEMO by default");
- encrypt_by_default_row.subtitle = _("Enable OMEMO encryption for new conversations");
- automatically_accept_new_row.title = _("Encrypt to new devices");
- automatically_accept_new_row.subtitle = _("Automatically encrypt to new devices from this contact.");
- new_keys_label.label = _("New keys");
- }
-
- public OmemoPreferencesWidget(Plugin plugin) {
- this.plugin = plugin;
- }
-
- public void set_jid(Account account, Jid jid) {
- this.account = account;
- this.jid = jid;
- this.identity_id = plugin.db.identity.get_id(account.id);
- if (identity_id <= 0) {
- warning("OmemoPreferencesWidget missing identity_id");
- return;
- }
-
- automatically_accept_new_row.active = plugin.db.trust.get_blind_trust(identity_id, jid.bare_jid.to_string(), true);
- automatically_accept_new_row.notify["active"].connect((obj, _) => { on_auto_accept_toggled(((Adw.SwitchRow) obj).active); });
-
- encrypt_by_default_row.visible = account.bare_jid.equals_bare(jid);
- encrypt_by_default_row.active = plugin.app.settings.get_default_encryption(account) != Encryption.NONE;
- encrypt_by_default_row.notify["active"].connect((obj, _) => { on_omemo_by_default_toggled(((Adw.SwitchRow) obj).active); });
-
- Dino.Application? app = Application.get_default() as Dino.Application;
- if (app != null) {
- store = app.stream_interactor.module_manager.get_module(account, StreamModule.IDENTITY).store;
- }
-
- redraw_key_list();
-
- // Check for unknown devices
- fetch_unknown_bundles();
- }
-
- private void redraw_key_list() {
- // Remove current widgets
- foreach (var widget in keys_preferences_group_children) {
- keys_preferences_group.remove(widget);
- }
- keys_preferences_group_children.clear();
-
- // Dialog opened from the account settings menu
- // Show the fingerprint for this device separately with buttons for a qrcode and to copy
- if(jid.equals(account.bare_jid)) {
- automatically_accept_new_row.subtitle = _("New encryption keys from your other devices will be accepted automatically.");
- add_own_fingerprint();
- }
-
- //Show the normal devicelist
- var own_id = plugin.db.identity.row_with(plugin.db.identity.account_id, account.id)[plugin.db.identity.device_id];
- foreach (Row device in plugin.db.identity_meta.get_known_devices(identity_id, jid.to_string())) {
- if(jid.equals(account.bare_jid) && device[plugin.db.identity_meta.device_id] == own_id) {
- // If this is our own account, don't show this device twice (did it separately already)
- continue;
- }
- add_fingerprint(device, (TrustLevel) device[plugin.db.identity_meta.trust_level]);
- }
-
- //Show any new devices for which the user must decide whether to accept or reject
- foreach (Row device in plugin.db.identity_meta.get_new_devices(identity_id, jid.to_string())) {
- add_new_fingerprint(device);
- }
- }
-
- private static string escape_for_iri_path_segment(string s) {
- // from RFC 3986, 2.2. Reserved Characters:
- string SUB_DELIMS = "!$&'()*+,;=";
- // from RFC 3986, 3.3. Path (pchar without unreserved and pct-encoded):
- string ALLOWED_RESERVED_CHARS = SUB_DELIMS + ":@";
- return GLib.Uri.escape_string(s, ALLOWED_RESERVED_CHARS, true);
- }
-
- private void fetch_unknown_bundles() {
- Dino.Application app = Application.get_default() as Dino.Application;
- XmppStream? stream = app.stream_interactor.get_stream(account);
- if (stream == null) return;
- StreamModule? module = stream.get_module(StreamModule.IDENTITY);
- if (module == null) return;
- module.bundle_fetched.connect_after((bundle_jid, device_id, bundle) => {
- if (bundle_jid.equals(jid) && !displayed_ids.contains(device_id)) {
- redraw_key_list();
- }
- });
- foreach (Row device in plugin.db.identity_meta.get_unknown_devices(identity_id, jid.to_string())) {
- try {
- module.fetch_bundle(stream, Jid.from_string(device[plugin.db.identity_meta.address_name]), device[plugin.db.identity_meta.device_id], false);
- } catch (InvalidJidError e) {
- warning("Ignoring device with invalid Jid: %s", e.message);
- }
- }
- }
-
- private void add_own_fingerprint() {
- string own_b64 = plugin.db.identity.row_with(plugin.db.identity.account_id, account.id)[plugin.db.identity.identity_key_public_base64];
- string fingerprint = fingerprint_from_base64(own_b64);
-
- var own_action_box = new Box(Orientation.HORIZONTAL, 6);
- var show_qrcode_button = new MenuButton() { icon_name="dino-qr-code-symbolic", valign=Align.CENTER };
- own_action_box.append(show_qrcode_button);
- var copy_button = new Button() { icon_name="dino-edit-copy-symbolic", valign=Align.CENTER };
- copy_button.clicked.connect(() => { copy_button.get_clipboard().set_text(fingerprint); });
- own_action_box.append(copy_button);
-
- Adw.ActionRow action_row = new Adw.ActionRow() { use_markup = true };
- action_row.title = _("This device");
- action_row.subtitle = fingerprint_markup(fingerprint_from_base64(own_b64));
- action_row.add_suffix(own_action_box);
- add_key_row(action_row);
-
- // Create and set QR code popover
- int sid = plugin.db.identity.row_with(plugin.db.identity.account_id, account.id)[plugin.db.identity.device_id];
- var iri_query = @"omemo-sid-$(sid)=$(fingerprint)";
-#if GLIB_2_66 && VALA_0_50
- string iri = GLib.Uri.join(UriFlags.NONE, "xmpp", null, null, 0, jid.to_string(), iri_query, null);
-#else
- var iri_path_seg = escape_for_iri_path_segment(jid.to_string());
- var iri = @"xmpp:$(iri_path_seg)?$(iri_query)";
-#endif
-
- const int QUIET_ZONE_MODULES = 4; // MUST be at least 4
- const int MODULE_SIZE_PX = 4; // arbitrary
- var qr_paintable = new QRcode(iri, 2)
- .to_paintable(MODULE_SIZE_PX * qrcode_picture.scale_factor);
- qrcode_picture.paintable = qr_paintable;
- qrcode_picture.margin_top = qrcode_picture.margin_end =
- qrcode_picture.margin_bottom = qrcode_picture.margin_start = QUIET_ZONE_MODULES * MODULE_SIZE_PX;
- qrcode_popover.add_css_class("qrcode-container");
-
- show_qrcode_button.popover = qrcode_popover;
- }
-
- private void add_fingerprint(Row device, TrustLevel trust) {
- string key_base64 = device[plugin.db.identity_meta.identity_key_public_base64];
- bool key_active = device[plugin.db.identity_meta.now_active];
- if (store != null) {
- try {
- Address address = new Address(jid.to_string(), device[plugin.db.identity_meta.device_id]);
- SessionRecord? session = null;
- if (store.contains_session(address)) {
- session = store.load_session(address);
- string session_key_base64 = Base64.encode(session.state.remote_identity_key.serialize());
- if (key_base64 != session_key_base64) {
- critical("Session and database identity key mismatch!");
- key_base64 = session_key_base64;
- }
- }
- } catch (Error e) {
- print("Error while reading session store: %s", e.message);
- }
- }
-
- if (device[plugin.db.identity_meta.now_active]) {
- Adw.ActionRow action_row = new Adw.ActionRow() { use_markup = true };
- action_row.activated.connect(() => {
- Row updated_device = plugin.db.identity_meta.get_device(device[plugin.db.identity_meta.identity_id], device[plugin.db.identity_meta.address_name], device[plugin.db.identity_meta.device_id]);
- ManageKeyDialog manage_dialog = new ManageKeyDialog(updated_device, plugin.db);
- manage_dialog.set_transient_for((Gtk.Window) get_root());
- manage_dialog.present();
- manage_dialog.response.connect((response) => {
- update_stored_trust(response, updated_device);
- redraw_key_list();
- });
- });
- action_row.activatable = true;
- action_row.title = account.bare_jid.equals_bare(jid) ? _("Other device") : _("Device");
- action_row.subtitle = fingerprint_markup(fingerprint_from_base64(key_base64));
- string trust_str = _("Accepted");
- switch(trust) {
- case TrustLevel.UNTRUSTED:
- trust_str = _("Rejected");
- break;
- case TrustLevel.VERIFIED:
- trust_str = _("Verified");
- break;
- }
-
- action_row.add_suffix(new Label(trust_str));
- add_key_row(action_row);
- }
- displayed_ids.add(device[plugin.db.identity_meta.device_id]);
- }
-
- private bool on_auto_accept_toggled(bool active) {
- plugin.trust_manager.set_blind_trust(account, jid, active);
-
- if (active) {
- int identity_id = plugin.db.identity.get_id(account.id);
- if (identity_id < 0) return false;
-
- foreach (Row device in plugin.db.identity_meta.get_new_devices(identity_id, jid.to_string())) {
- plugin.trust_manager.set_device_trust(account, jid, device[plugin.db.identity_meta.device_id], TrustLevel.TRUSTED);
- add_fingerprint(device, TrustLevel.TRUSTED);
- }
- }
- return false;
- }
-
- private bool on_omemo_by_default_toggled(bool active) {
- var encryption_value = active ? Encryption.OMEMO : Encryption.NONE;
- plugin.app.settings.set_default_encryption(account, encryption_value);
- return false;
- }
-
- private void update_stored_trust(int response, Row device) {
- switch (response) {
- case TrustLevel.TRUSTED:
- plugin.trust_manager.set_device_trust(account, jid, device[plugin.db.identity_meta.device_id], TrustLevel.TRUSTED);
- break;
- case TrustLevel.UNTRUSTED:
- plugin.trust_manager.set_device_trust(account, jid, device[plugin.db.identity_meta.device_id], TrustLevel.UNTRUSTED);
- break;
- case TrustLevel.VERIFIED:
- plugin.trust_manager.set_device_trust(account, jid, device[plugin.db.identity_meta.device_id], TrustLevel.VERIFIED);
- plugin.trust_manager.set_blind_trust(account, jid, false);
- automatically_accept_new_row.active = false;
- break;
- }
- }
-
- private void add_new_fingerprint(Row device) {
- Adw.ActionRow action_row = new Adw.ActionRow() { use_markup = true };
- action_row.title = _("New device");
- action_row.subtitle = fingerprint_markup(fingerprint_from_base64(device[plugin.db.identity_meta.identity_key_public_base64]));
-
- Button accept_button = new Button() { visible = true, valign = Align.CENTER, hexpand = true };
- accept_button.set_icon_name("dino-check-plain-symbolic"); // using .image = sets .image-button. Together with .suggested/destructive action that breaks the button Adwaita
- accept_button.add_css_class("suggested-action");
- accept_button.tooltip_text = _("Accept key");
-
- Button reject_button = new Button() { visible = true, valign = Align.CENTER, hexpand = true };
- reject_button.set_icon_name("action-unavailable-symbolic");
- reject_button.add_css_class("destructive-action");
- reject_button.tooltip_text = _("Reject key");
-
- accept_button.clicked.connect(() => {
- plugin.trust_manager.set_device_trust(account, jid, device[plugin.db.identity_meta.device_id], TrustLevel.TRUSTED);
- add_fingerprint(device, TrustLevel.TRUSTED);
- remove_key_row(action_row);
- });
-
- reject_button.clicked.connect(() => {
- plugin.trust_manager.set_device_trust(account, jid, device[plugin.db.identity_meta.device_id], TrustLevel.UNTRUSTED);
- add_fingerprint(device, TrustLevel.UNTRUSTED);
- remove_key_row(action_row);
- });
-
- Box control_box = new Box(Gtk.Orientation.HORIZONTAL, 0) { visible = true, hexpand = true };
- control_box.append(accept_button);
- control_box.append(reject_button);
- control_box.add_css_class("linked"); // .linked: Visually link the accept / reject buttons
-
- action_row.add_suffix(control_box);
-
- add_key_row(action_row);
- displayed_ids.add(device[plugin.db.identity_meta.device_id]);
- }
-
- private void add_key_row(Adw.PreferencesRow widget) {
- keys_preferences_group.add(widget);
- keys_preferences_group_children.add(widget);
- }
-
- private void remove_key_row(Adw.PreferencesRow widget) {
- keys_preferences_group.remove(widget);
- keys_preferences_group_children.remove(widget);
- }
-}
-} \ No newline at end of file
diff --git a/plugins/omemo/src/ui/manage_key_dialog.vala b/plugins/omemo/src/ui/manage_key_dialog.vala
deleted file mode 100644
index ac8896a5..00000000
--- a/plugins/omemo/src/ui/manage_key_dialog.vala
+++ /dev/null
@@ -1,177 +0,0 @@
-using Gtk;
-using Qlite;
-
-namespace Dino.Plugins.Omemo {
-
-[GtkTemplate (ui = "/im/dino/Dino/omemo/manage_key_dialog.ui")]
-public class ManageKeyDialog : Gtk.Dialog {
-
- [GtkChild] private unowned Stack manage_stack;
-
- [GtkChild] private unowned Button cancel_button;
- [GtkChild] private unowned Button ok_button;
-
- [GtkChild] private unowned Label main_desc_label;
- [GtkChild] private unowned ListBox main_action_list;
-
- [GtkChild] private unowned Image confirm_image;
- [GtkChild] private unowned Label confirm_title_label;
- [GtkChild] private unowned Label confirm_desc_label;
-
- [GtkChild] private unowned Label verify_label;
- [GtkChild] private unowned Label compare_fingerprint_label;
- [GtkChild] private unowned Button verify_yes_button;
- [GtkChild] private unowned Button verify_no_button;
-
- private Row device;
- private Database db;
-
- private bool return_to_main;
- private int current_response;
-
- construct {
- // If we set the strings in the .ui file, they don't get translated
- this.title = _("Manage Key");
- compare_fingerprint_label.label = _("Compare the fingerprint, character by character, with the one shown on your contact's device.");
- verify_no_button.label = _("Fingerprints differ");
- verify_yes_button.label = _("Fingerprints match");
- cancel_button.label = _("Cancel");
- ok_button.label = _("Confirm");
- }
-
- public ManageKeyDialog(Row device, Database db) {
- Object(use_header_bar : 1);
-
- this.device = device;
- this.db = db;
-
- setup_main_screen();
- setup_verify_screen();
-
- cancel_button.clicked.connect(handle_cancel);
- ok_button.clicked.connect(() => {
- response(current_response);
- close();
- });
-
- verify_yes_button.clicked.connect(() => {
- confirm_image.set_from_icon_name("security-high-symbolic");
- confirm_title_label.label = _("Verify key");
- confirm_desc_label.set_markup(_("Future messages sent by %s from the device that uses this key will be highlighted accordingly in the chat window.").printf(@"<b>$(device[db.identity_meta.address_name])</b>"));
- manage_stack.set_visible_child_name("confirm");
- ok_button.sensitive = true;
- return_to_main = false;
- current_response = TrustLevel.VERIFIED;
- });
-
- verify_no_button.clicked.connect(() => {
- return_to_main = false;
- confirm_image.set_from_icon_name("dino-dialog-warning-symbolic");
- confirm_title_label.label = _("Fingerprints do not match");
- confirm_desc_label.set_markup(_("Please verify that you are comparing the correct fingerprint. If fingerprints do not match, %s's account may be compromised and you should consider rejecting this key.").printf(@"<b>$(device[db.identity_meta.address_name])</b>"));
- manage_stack.set_visible_child_name("confirm");
- });
- }
-
- private void handle_cancel() {
- if (manage_stack.get_visible_child_name() == "main") close();
-
- if (manage_stack.get_visible_child_name() == "verify") {
- manage_stack.set_visible_child_name("main");
- cancel_button.label = _("Cancel");
- }
-
- if (manage_stack.get_visible_child_name() == "confirm") {
- if (return_to_main) {
- manage_stack.set_visible_child_name("main");
- cancel_button.label = _("Cancel");
- } else {
- manage_stack.set_visible_child_name("verify");
- }
- }
-
- ok_button.sensitive = false;
- }
-
- private Box make_action_box(string title, string desc){
- Box box = new Box(Orientation.VERTICAL, 0) { visible = true, margin_start = 20, margin_end = 20, margin_top = 14, margin_bottom = 14 };
- Label lbl_title = new Label(title) { visible = true, halign = Align.START };
- Label lbl_desc = new Label(desc) { visible = true, xalign = 0, wrap = true, max_width_chars = 40 };
-
- Pango.AttrList title_attrs = new Pango.AttrList();
- title_attrs.insert(Pango.attr_scale_new(1.1));
- lbl_title.attributes = title_attrs;
- Pango.AttrList desc_attrs = new Pango.AttrList();
- desc_attrs.insert(Pango.attr_scale_new(0.8));
- lbl_desc.attributes = desc_attrs;
- lbl_desc.add_css_class("dim-label");
-
- box.append(lbl_title);
- box.append(lbl_desc);
-
- return box;
- }
-
- private void setup_main_screen() {
- main_action_list.set_header_func((row, before_row) => {
- if (row.get_header() == null && before_row != null) {
- row.set_header(new Separator(Orientation.HORIZONTAL));
- }
- });
-
- ListBoxRow verify_row = new ListBoxRow() { visible = true };
- verify_row.set_child(make_action_box(_("Verify key fingerprint"), _("Compare this key's fingerprint with the fingerprint displayed on the contact's device.")));
- ListBoxRow reject_row = new ListBoxRow() { visible = true };
- reject_row.set_child(make_action_box(_("Reject key"), _("Block encrypted communication with the contact's device that uses this key.")));
- ListBoxRow accept_row = new ListBoxRow() {visible = true };
- accept_row.set_child(make_action_box(_("Accept key"), _("Allow encrypted communication with the contact's device that uses this key.")));
-
- switch((TrustLevel) device[db.identity_meta.trust_level]) {
- case TrustLevel.TRUSTED:
- main_desc_label.set_markup(_("This key is currently %s.").printf("<span color='#1A63D9'>"+_("accepted")+"</span>")+" "+_("This means it can be used by %s to receive and send encrypted messages.").printf(@"<b>$(device[db.identity_meta.address_name])</b>"));
- main_action_list.append(verify_row);
- main_action_list.append(reject_row);
- break;
- case TrustLevel.VERIFIED:
- main_desc_label.set_markup(_("This key is currently %s.").printf("<span color='#1A63D9'>"+_("verified")+"</span>")+" "+_("This means it can be used by %s to receive and send encrypted messages.").printf(@"<b>$(device[db.identity_meta.address_name])</b>") + " " + _("Additionally it has been verified to match the key on the contact's device."));
- main_action_list.append(reject_row);
- break;
- case TrustLevel.UNTRUSTED:
- main_desc_label.set_markup(_("This key is currently %s.").printf("<span color='#D91900'>"+_("rejected")+"</span>")+" "+_("This means it cannot be used by %s to decipher your messages, and you won't see messages encrypted with it.").printf(@"<b>$(device[db.identity_meta.address_name])</b>"));
- main_action_list.append(accept_row);
- break;
- }
-
- //Row clicked - go to appropriate screen
- main_action_list.row_activated.connect((row) => {
- if(row == verify_row) {
- manage_stack.set_visible_child_name("verify");
- } else if (row == reject_row) {
- confirm_image.set_from_icon_name("action-unavailable-symbolic");
- confirm_title_label.label = _("Reject key");
- confirm_desc_label.set_markup(_("You won't see encrypted messages from the device of %s that uses this key. Conversely, that device won't be able to decipher your messages anymore.").printf(@"<b>$(device[db.identity_meta.address_name])</b>"));
- manage_stack.set_visible_child_name("confirm");
- ok_button.sensitive = true;
- return_to_main = true;
- current_response = TrustLevel.UNTRUSTED;
- } else if (row == accept_row) {
- confirm_image.set_from_icon_name("dino-check-plain-symbolic");
- confirm_title_label.label = _("Accept key");
- confirm_desc_label.set_markup(_("You will be able to exchange encrypted messages with the device of %s that uses this key.").printf(@"<b>$(device[db.identity_meta.address_name])</b>"));
- manage_stack.set_visible_child_name("confirm");
- ok_button.sensitive = true;
- return_to_main = true;
- current_response = TrustLevel.TRUSTED;
- }
- cancel_button.label = _("Back");
- });
-
- manage_stack.set_visible_child_name("main");
- }
-
- private void setup_verify_screen() {
- verify_label.set_markup(fingerprint_markup(fingerprint_from_base64(device[db.identity_meta.identity_key_public_base64])));
- }
-}
-
-}
diff --git a/plugins/omemo/src/ui/own_notifications.vala b/plugins/omemo/src/ui/own_notifications.vala
deleted file mode 100644
index 7ff10e30..00000000
--- a/plugins/omemo/src/ui/own_notifications.vala
+++ /dev/null
@@ -1,35 +0,0 @@
-using Dino.Entities;
-using Xmpp;
-using Gtk;
-
-namespace Dino.Plugins.Omemo {
-
-public class OwnNotifications {
-
- private StreamInteractor stream_interactor;
- private Plugin plugin;
- private Account account;
-
- public OwnNotifications (Plugin plugin, StreamInteractor stream_interactor, Account account) {
- this.stream_interactor = (!)stream_interactor;
- this.plugin = plugin;
- this.account = account;
- stream_interactor.module_manager.get_module(account, StreamModule.IDENTITY).bundle_fetched.connect_after((jid, device_id, bundle) => {
- if (jid.equals(account.bare_jid) && plugin.has_new_devices(account, account.bare_jid)) {
- display_notification();
- }
- });
-
- if (plugin.has_new_devices(account, account.bare_jid)) {
- display_notification();
- }
- }
-
- private void display_notification() {
- Notification notification = new Notification(_("OMEMO trust decision required"));
- notification.set_default_action_and_target_value("app.own-keys", new Variant.int32(account.id));
- notification.set_body(_("Did you add a new device for account %s?").printf(@"$(account.bare_jid.to_string())"));
- plugin.app.send_notification(account.id.to_string()+"-new-device", notification);
- }
-}
-}
diff --git a/plugins/omemo/src/ui/util.vala b/plugins/omemo/src/ui/util.vala
deleted file mode 100644
index e250ff4d..00000000
--- a/plugins/omemo/src/ui/util.vala
+++ /dev/null
@@ -1,40 +0,0 @@
-using Xmpp.Util;
-
-namespace Dino.Plugins.Omemo {
-
-public static string fingerprint_from_base64(string b64) {
- uint8[] arr = Base64.decode(b64);
-
- arr = arr[1:arr.length];
- string s = "";
- foreach (uint8 i in arr) {
- string tmp = i.to_string("%x");
- if (tmp.length == 1) tmp = "0" + tmp;
- s = s + tmp;
- }
-
- return s;
-}
-
-public static string fingerprint_markup(string s) {
- return "<span font_family='monospace' font='9'>" + format_fingerprint(s) + "</span>";
-}
-
-public static string format_fingerprint(string s) {
- string markup = "";
- for (int i = 0; i < s.length; i += 4) {
- string four_chars = s.substring(i, 4).down();
-
- if (i % 32 == 0 && i != 0) markup += "\n";
- markup += four_chars;
- if (i % 16 == 12 && i % 32 != 28) {
- markup += " ";
- }
- if (i % 8 == 4 && i % 16 != 12) {
- markup += "\u00a0"; // Non-breaking space
- }
- }
- return markup;
-}
-
-}
diff --git a/plugins/omemo/tests/native/common.vala b/plugins/omemo/tests/native/common.vala
deleted file mode 100644
index af0f7250..00000000
--- a/plugins/omemo/tests/native/common.vala
+++ /dev/null
@@ -1,92 +0,0 @@
-namespace Omemo.Test {
-
-int main(string[] args) {
- GLib.Test.init(ref args);
- GLib.Test.set_nonfatal_assertions();
- TestSuite.get_root().add_suite(new Curve25519().get_suite());
- TestSuite.get_root().add_suite(new SessionBuilderTest().get_suite());
- TestSuite.get_root().add_suite(new HKDF().get_suite());
- return GLib.Test.run();
-}
-
-Store setup_test_store_context(Context global_context) {
- Store store = global_context.create_store();
- try {
- store.identity_key_store.local_registration_id = (Random.next_int() % 16380) + 1;
-
- ECKeyPair key_pair = global_context.generate_key_pair();
- store.identity_key_store.identity_key_private = new Bytes(key_pair.private.serialize());
- store.identity_key_store.identity_key_public = new Bytes(key_pair.public.serialize());
- } catch (Error e) {
- fail_if_reached();
- }
- return store;
-}
-
-ECPublicKey? create_test_ec_public_key(Context context) {
- try {
- return context.generate_key_pair().public;
- } catch (Error e) {
- fail_if_reached();
- return null;
- }
-}
-
-bool fail_if(bool exp, string? reason = null) {
- if (exp) {
- if (reason != null) GLib.Test.message(reason);
- GLib.Test.fail();
- return true;
- }
- return false;
-}
-
-void fail_if_reached(string? reason = null) {
- fail_if(true, reason);
-}
-
-delegate void ErrorFunc() throws Error;
-
-void fail_if_not_error_code(ErrorFunc func, int expectedCode, string? reason = null) {
- try {
- func();
- fail_if_reached(@"$(reason + ": " ?? "")no error thrown");
- } catch (Error e) {
- fail_if_not_eq_int(e.code, expectedCode, @"$(reason + ": " ?? "")caught unexpected error");
- }
-}
-
-bool fail_if_not(bool exp, string? reason = null) {
- return fail_if(!exp, reason);
-}
-
-bool fail_if_eq_int(int left, int right, string? reason = null) {
- return fail_if(left == right, @"$(reason + ": " ?? "")$left == $right");
-}
-
-bool fail_if_not_eq_int(int left, int right, string? reason = null) {
- return fail_if_not(left == right, @"$(reason + ": " ?? "")$left != $right");
-}
-
-bool fail_if_not_eq_str(string left, string right, string? reason = null) {
- return fail_if_not(left == right, @"$(reason + ": " ?? "")$left != $right");
-}
-
-bool fail_if_not_eq_uint8_arr(uint8[] left, uint8[] right, string? reason = null) {
- if (fail_if_not_eq_int(left.length, right.length, @"$(reason + ": " ?? "")array length not equal")) return true;
- return fail_if_not_eq_str(Base64.encode(left), Base64.encode(right), reason);
-}
-
-bool fail_if_not_zero_int(int zero, string? reason = null) {
- return fail_if_not_eq_int(zero, 0, reason);
-}
-
-bool fail_if_zero_int(int zero, string? reason = null) {
- return fail_if_eq_int(zero, 0, reason);
-}
-
-bool fail_if_null(void* what, string? reason = null) {
- return fail_if(what == null || (size_t)what == 0, reason);
-}
-
-}
diff --git a/plugins/omemo/tests/native/curve25519.vala b/plugins/omemo/tests/native/curve25519.vala
deleted file mode 100644
index 84c244d2..00000000
--- a/plugins/omemo/tests/native/curve25519.vala
+++ /dev/null
@@ -1,207 +0,0 @@
-namespace Omemo.Test {
-
-class Curve25519 : Gee.TestCase {
-
- public Curve25519() {
- base("Curve25519");
- add_test("agreement", test_curve25519_agreement);
- add_test("generate_public", test_curve25519_generate_public);
- add_test("random_agreements", test_curve25519_random_agreements);
- add_test("signature", test_curve25519_signature);
- }
-
- private Context global_context;
-
- public override void set_up() {
- try {
- global_context = new Context();
- } catch (Error e) {
- fail_if_reached();
- }
- }
-
- public override void tear_down() {
- global_context = null;
- }
-
- void test_curve25519_agreement() {
- try {
- uint8[] alicePublic = {
- 0x05, 0x1b, 0xb7, 0x59, 0x66,
- 0xf2, 0xe9, 0x3a, 0x36, 0x91,
- 0xdf, 0xff, 0x94, 0x2b, 0xb2,
- 0xa4, 0x66, 0xa1, 0xc0, 0x8b,
- 0x8d, 0x78, 0xca, 0x3f, 0x4d,
- 0x6d, 0xf8, 0xb8, 0xbf, 0xa2,
- 0xe4, 0xee, 0x28};
-
- uint8[] alicePrivate = {
- 0xc8, 0x06, 0x43, 0x9d, 0xc9,
- 0xd2, 0xc4, 0x76, 0xff, 0xed,
- 0x8f, 0x25, 0x80, 0xc0, 0x88,
- 0x8d, 0x58, 0xab, 0x40, 0x6b,
- 0xf7, 0xae, 0x36, 0x98, 0x87,
- 0x90, 0x21, 0xb9, 0x6b, 0xb4,
- 0xbf, 0x59};
-
- uint8[] bobPublic = {
- 0x05, 0x65, 0x36, 0x14, 0x99,
- 0x3d, 0x2b, 0x15, 0xee, 0x9e,
- 0x5f, 0xd3, 0xd8, 0x6c, 0xe7,
- 0x19, 0xef, 0x4e, 0xc1, 0xda,
- 0xae, 0x18, 0x86, 0xa8, 0x7b,
- 0x3f, 0x5f, 0xa9, 0x56, 0x5a,
- 0x27, 0xa2, 0x2f};
-
- uint8[] bobPrivate = {
- 0xb0, 0x3b, 0x34, 0xc3, 0x3a,
- 0x1c, 0x44, 0xf2, 0x25, 0xb6,
- 0x62, 0xd2, 0xbf, 0x48, 0x59,
- 0xb8, 0x13, 0x54, 0x11, 0xfa,
- 0x7b, 0x03, 0x86, 0xd4, 0x5f,
- 0xb7, 0x5d, 0xc5, 0xb9, 0x1b,
- 0x44, 0x66};
-
- uint8[] shared = {
- 0x32, 0x5f, 0x23, 0x93, 0x28,
- 0x94, 0x1c, 0xed, 0x6e, 0x67,
- 0x3b, 0x86, 0xba, 0x41, 0x01,
- 0x74, 0x48, 0xe9, 0x9b, 0x64,
- 0x9a, 0x9c, 0x38, 0x06, 0xc1,
- 0xdd, 0x7c, 0xa4, 0xc4, 0x77,
- 0xe6, 0x29};
-
- ECPublicKey alice_public_key = global_context.decode_public_key(alicePublic);
- ECPrivateKey alice_private_key = global_context.decode_private_key(alicePrivate);
- ECPublicKey bob_public_key = global_context.decode_public_key(bobPublic);
- ECPrivateKey bob_private_key = global_context.decode_private_key(bobPrivate);
-
- uint8[] shared_one = calculate_agreement(alice_public_key, bob_private_key);
- uint8[] shared_two = calculate_agreement(bob_public_key, alice_private_key);
-
- fail_if_not_eq_int(shared_one.length, 32);
- fail_if_not_eq_int(shared_two.length, 32);
- fail_if_not_eq_uint8_arr(shared, shared_one);
- fail_if_not_eq_uint8_arr(shared_one, shared_two);
- } catch (Error e) {
- fail_if_reached();
- }
- }
-
- void test_curve25519_generate_public() {
- try {
- uint8[] alicePublic = {
- 0x05, 0x1b, 0xb7, 0x59, 0x66,
- 0xf2, 0xe9, 0x3a, 0x36, 0x91,
- 0xdf, 0xff, 0x94, 0x2b, 0xb2,
- 0xa4, 0x66, 0xa1, 0xc0, 0x8b,
- 0x8d, 0x78, 0xca, 0x3f, 0x4d,
- 0x6d, 0xf8, 0xb8, 0xbf, 0xa2,
- 0xe4, 0xee, 0x28};
-
- uint8[] alicePrivate = {
- 0xc8, 0x06, 0x43, 0x9d, 0xc9,
- 0xd2, 0xc4, 0x76, 0xff, 0xed,
- 0x8f, 0x25, 0x80, 0xc0, 0x88,
- 0x8d, 0x58, 0xab, 0x40, 0x6b,
- 0xf7, 0xae, 0x36, 0x98, 0x87,
- 0x90, 0x21, 0xb9, 0x6b, 0xb4,
- 0xbf, 0x59};
-
- ECPrivateKey alice_private_key = global_context.decode_private_key(alicePrivate);
- ECPublicKey alice_expected_public_key = global_context.decode_public_key(alicePublic);
- ECPublicKey alice_public_key = generate_public_key(alice_private_key);
-
- fail_if_not_zero_int(alice_expected_public_key.compare(alice_public_key));
- } catch (Error e) {
- fail_if_reached();
- }
- }
-
- void test_curve25519_random_agreements() {
- try {
- ECKeyPair alice_key_pair = null;
- ECPublicKey alice_public_key = null;
- ECPrivateKey alice_private_key = null;
- ECKeyPair bob_key_pair = null;
- ECPublicKey bob_public_key = null;
- ECPrivateKey bob_private_key = null;
- uint8[] shared_alice = null;
- uint8[] shared_bob = null;
-
- for (int i = 0; i < 50; i++) {
- fail_if_null(alice_key_pair = global_context.generate_key_pair());
- fail_if_null(alice_public_key = alice_key_pair.public);
- fail_if_null(alice_private_key = alice_key_pair.private);
-
- fail_if_null(bob_key_pair = global_context.generate_key_pair());
- fail_if_null(bob_public_key = bob_key_pair.public);
- fail_if_null(bob_private_key = bob_key_pair.private);
-
- shared_alice = calculate_agreement(bob_public_key, alice_private_key);
- fail_if_not_eq_int(shared_alice.length, 32);
-
- shared_bob = calculate_agreement(alice_public_key, bob_private_key);
- fail_if_not_eq_int(shared_bob.length, 32);
-
- fail_if_not_eq_uint8_arr(shared_alice, shared_bob);
- }
- } catch (Error e) {
- fail_if_reached();
- }
- }
-
- void test_curve25519_signature() {
- try {
- uint8[] aliceIdentityPrivate = {
- 0xc0, 0x97, 0x24, 0x84, 0x12, 0xe5, 0x8b, 0xf0,
- 0x5d, 0xf4, 0x87, 0x96, 0x82, 0x05, 0x13, 0x27,
- 0x94, 0x17, 0x8e, 0x36, 0x76, 0x37, 0xf5, 0x81,
- 0x8f, 0x81, 0xe0, 0xe6, 0xce, 0x73, 0xe8, 0x65};
-
- uint8[] aliceIdentityPublic = {
- 0x05, 0xab, 0x7e, 0x71, 0x7d, 0x4a, 0x16, 0x3b,
- 0x7d, 0x9a, 0x1d, 0x80, 0x71, 0xdf, 0xe9, 0xdc,
- 0xf8, 0xcd, 0xcd, 0x1c, 0xea, 0x33, 0x39, 0xb6,
- 0x35, 0x6b, 0xe8, 0x4d, 0x88, 0x7e, 0x32, 0x2c,
- 0x64};
-
- uint8[] aliceEphemeralPublic = {
- 0x05, 0xed, 0xce, 0x9d, 0x9c, 0x41, 0x5c, 0xa7,
- 0x8c, 0xb7, 0x25, 0x2e, 0x72, 0xc2, 0xc4, 0xa5,
- 0x54, 0xd3, 0xeb, 0x29, 0x48, 0x5a, 0x0e, 0x1d,
- 0x50, 0x31, 0x18, 0xd1, 0xa8, 0x2d, 0x99, 0xfb,
- 0x4a};
-
- uint8[] aliceSignature = {
- 0x5d, 0xe8, 0x8c, 0xa9, 0xa8, 0x9b, 0x4a, 0x11,
- 0x5d, 0xa7, 0x91, 0x09, 0xc6, 0x7c, 0x9c, 0x74,
- 0x64, 0xa3, 0xe4, 0x18, 0x02, 0x74, 0xf1, 0xcb,
- 0x8c, 0x63, 0xc2, 0x98, 0x4e, 0x28, 0x6d, 0xfb,
- 0xed, 0xe8, 0x2d, 0xeb, 0x9d, 0xcd, 0x9f, 0xae,
- 0x0b, 0xfb, 0xb8, 0x21, 0x56, 0x9b, 0x3d, 0x90,
- 0x01, 0xbd, 0x81, 0x30, 0xcd, 0x11, 0xd4, 0x86,
- 0xce, 0xf0, 0x47, 0xbd, 0x60, 0xb8, 0x6e, 0x88};
-
- global_context.decode_private_key(aliceIdentityPrivate);
- global_context.decode_public_key(aliceEphemeralPublic);
- ECPublicKey alice_public_key = global_context.decode_public_key(aliceIdentityPublic);
-
- fail_if(!verify_signature(alice_public_key, aliceEphemeralPublic, aliceSignature), "signature verification failed");
-
- uint8[] modifiedSignature = new uint8[aliceSignature.length];
-
- for (int i = 0; i < aliceSignature.length; i++) {
- Memory.copy(modifiedSignature, aliceSignature, aliceSignature.length);
- modifiedSignature[i] ^= 0x01;
-
- fail_if(verify_signature(alice_public_key, aliceEphemeralPublic, modifiedSignature), "invalid signature verification succeeded");
- }
- } catch (Error e) {
- fail_if_reached();
- }
- }
-
-}
-
-} \ No newline at end of file
diff --git a/plugins/omemo/tests/native/hkdf.vala b/plugins/omemo/tests/native/hkdf.vala
deleted file mode 100644
index 84257054..00000000
--- a/plugins/omemo/tests/native/hkdf.vala
+++ /dev/null
@@ -1,59 +0,0 @@
-namespace Omemo.Test {
-
-class HKDF : Gee.TestCase {
-
- public HKDF() {
- base("HKDF");
- add_test("vector_v3", test_hkdf_vector_v3);
- }
-
- private Context global_context;
-
- public override void set_up() {
- try {
- global_context = new Context();
- } catch (Error e) {
- fail_if_reached();
- }
- }
-
- public override void tear_down() {
- global_context = null;
- }
-
- public void test_hkdf_vector_v3() {
- uint8[] ikm = {
- 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
- 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
- 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b};
-
- uint8[] salt = {
- 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
- 0x08, 0x09, 0x0a, 0x0b, 0x0c};
-
- uint8[] info = {
- 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
- 0xf8, 0xf9};
-
- uint8[] okm = {
- 0x3c, 0xb2, 0x5f, 0x25, 0xfa, 0xac, 0xd5, 0x7a,
- 0x90, 0x43, 0x4f, 0x64, 0xd0, 0x36, 0x2f, 0x2a,
- 0x2d, 0x2d, 0x0a, 0x90, 0xcf, 0x1a, 0x5a, 0x4c,
- 0x5d, 0xb0, 0x2d, 0x56, 0xec, 0xc4, 0xc5, 0xbf,
- 0x34, 0x00, 0x72, 0x08, 0xd5, 0xb8, 0x87, 0x18,
- 0x58, 0x65};
-
- NativeHkdfContext context = null;
- fail_if_not_zero_int(NativeHkdfContext.create(out context, 3, global_context.native_context));
-
- uint8[] output = null;
- int result = (int) context.derive_secrets(out output, ikm, salt, info, 42);
- fail_if_not_eq_int(result, okm.length);
- output.length = result;
-
- fail_if_not_eq_uint8_arr(output, okm);
- }
-
-}
-
-} \ No newline at end of file
diff --git a/plugins/omemo/tests/native/session_builder.vala b/plugins/omemo/tests/native/session_builder.vala
deleted file mode 100644
index 2215db86..00000000
--- a/plugins/omemo/tests/native/session_builder.vala
+++ /dev/null
@@ -1,564 +0,0 @@
-namespace Omemo.Test {
-
-class SessionBuilderTest : Gee.TestCase {
- Address alice_address;
- Address bob_address;
-
- public SessionBuilderTest() {
- base("SessionBuilder");
-
- add_test("basic_pre_key_v2", test_basic_pre_key_v2);
- add_test("basic_pre_key_v3", test_basic_pre_key_v3);
- add_test("basic_pre_key_omemo", test_basic_pre_key_omemo);
- add_test("bad_signed_pre_key_signature", test_bad_signed_pre_key_signature);
- add_test("repeat_bundle_message_v2", test_repeat_bundle_message_v2);
- }
-
- private Context global_context;
-
- public override void set_up() {
- try {
- global_context = new Context();
- alice_address = new Address("+14151111111", 1);
- bob_address = new Address("+14152222222", 1);
- } catch (Error e) {
- fail_if_reached(@"Unexpected error: $(e.message)");
- }
- }
-
- public override void tear_down() {
- global_context = null;
- alice_address = null;
- bob_address = null;
- }
-
- void test_basic_pre_key_v2() {
- try {
- /* Create Alice's data store and session builder */
- Store alice_store = setup_test_store_context(global_context);
- SessionBuilder alice_session_builder = alice_store.create_session_builder(bob_address);
-
- /* Create Bob's data store and pre key bundle */
- Store bob_store = setup_test_store_context(global_context);
- uint32 bob_local_registration_id = bob_store.local_registration_id;
- IdentityKeyPair bob_identity_key_pair = bob_store.identity_key_pair;
- ECKeyPair bob_pre_key_pair = global_context.generate_key_pair();
-
- PreKeyBundle bob_pre_key = create_pre_key_bundle(bob_local_registration_id, 1, 31337, bob_pre_key_pair.public, 0, null, null, bob_identity_key_pair.public);
-
- /*
- * Have Alice process Bob's pre key bundle, which should fail due to a
- * missing unsigned pre key.
- */
- fail_if_not_error_code(() => alice_session_builder.process_pre_key_bundle(bob_pre_key), ErrorCode.INVALID_KEY);
- } catch(Error e) {
- fail_if_reached(@"Unexpected error: $(e.message)");
- }
- }
-
- void test_basic_pre_key_v3() {
- try {
- /* Create Alice's data store and session builder */
- Store alice_store = setup_test_store_context(global_context);
- SessionBuilder alice_session_builder = alice_store.create_session_builder(bob_address);
-
- /* Create Bob's data store and pre key bundle */
- Store bob_store = setup_test_store_context(global_context);
- uint32 bob_local_registration_id = bob_store.local_registration_id;
- ECKeyPair bob_pre_key_pair = global_context.generate_key_pair();
- ECKeyPair bob_signed_pre_key_pair = global_context.generate_key_pair();
- IdentityKeyPair bob_identity_key_pair = bob_store.identity_key_pair;
-
- uint8[] bob_signed_pre_key_signature = global_context.calculate_signature(bob_identity_key_pair.private, bob_signed_pre_key_pair.public.serialize());
-
- PreKeyBundle bob_pre_key = create_pre_key_bundle(bob_local_registration_id, 1, 31337, bob_pre_key_pair.public, 22, bob_signed_pre_key_pair.public, bob_signed_pre_key_signature, bob_identity_key_pair.public);
-
- /* Have Alice process Bob's pre key bundle */
- alice_session_builder.process_pre_key_bundle(bob_pre_key);
-
- /* Check that we can load the session state and verify its version */
- fail_if_not(alice_store.contains_session(bob_address));
-
- SessionRecord loaded_record = alice_store.load_session(bob_address);
- fail_if_not_eq_int((int)loaded_record.state.session_version, 3);
-
- /* Encrypt an outgoing message to send to Bob */
- string original_message = "L'homme est condamné à être libre";
- SessionCipher alice_session_cipher = alice_store.create_session_cipher(bob_address);
-
- CiphertextMessage outgoing_message = alice_session_cipher.encrypt(original_message.data);
- fail_if_not_eq_int(outgoing_message.type, CiphertextType.PREKEY);
-
- /* Convert to an incoming message for Bob */
- PreKeyOmemoMessage incoming_message = global_context.deserialize_signal_pre_key_message(outgoing_message.serialized);
-
- /* Save the pre key and signed pre key in Bob's data store */
- PreKeyRecord bob_pre_key_record;
- throw_by_code(PreKeyRecord.create(out bob_pre_key_record, bob_pre_key.pre_key_id, bob_pre_key_pair));
- bob_store.store_pre_key(bob_pre_key_record);
-
- SignedPreKeyRecord bob_signed_pre_key_record;
- throw_by_code(SignedPreKeyRecord.create(out bob_signed_pre_key_record, 22, new DateTime.now_utc().to_unix(), bob_signed_pre_key_pair, bob_signed_pre_key_signature, null));
- bob_store.store_signed_pre_key(bob_signed_pre_key_record);
-
- /* Create Bob's session cipher and decrypt the message from Alice */
- SessionCipher bob_session_cipher = bob_store.create_session_cipher(alice_address);
-
- /* Prepare the data for the callback test */
- //int callback_context = 1234;
- //bob_session_cipher.user_data =
- //bob_session_cipher.decryption_callback =
- uint8[] plaintext = bob_session_cipher.decrypt_pre_key_message(incoming_message);
-
- /* Clean up callback data */
- bob_session_cipher.user_data = null;
- bob_session_cipher.decryption_callback = null;
-
- /* Verify Bob's session state and the decrypted message */
- fail_if_not(bob_store.contains_session(alice_address));
-
- SessionRecord alice_recipient_session_record = bob_store.load_session(alice_address);
-
- SessionState alice_recipient_session_state = alice_recipient_session_record.state;
- fail_if_not_eq_int((int)alice_recipient_session_state.session_version, 3);
- fail_if_null(alice_recipient_session_state.alice_base_key);
-
- fail_if_not_eq_uint8_arr(original_message.data, plaintext);
-
- /* Have Bob send a reply to Alice */
- CiphertextMessage bob_outgoing_message = bob_session_cipher.encrypt(original_message.data);
- fail_if_not_eq_int(bob_outgoing_message.type, CiphertextType.SIGNAL);
-
- /* Verify that Alice can decrypt it */
- OmemoMessage bob_outgoing_message_copy = global_context.copy_message(bob_outgoing_message);
-
- uint8[] alice_plaintext = alice_session_cipher.decrypt_message(bob_outgoing_message_copy);
-
- fail_if_not_eq_uint8_arr(original_message.data, alice_plaintext);
-
- GLib.Test.message("Pre-interaction tests complete");
-
- /* Interaction tests */
- run_interaction(alice_store, bob_store);
-
- /* Cleanup state from previous tests that we need to replace */
- alice_store = null;
- bob_pre_key_pair = null;
- bob_signed_pre_key_pair = null;
- bob_identity_key_pair = null;
- bob_signed_pre_key_signature = null;
- bob_pre_key_record = null;
- bob_signed_pre_key_record = null;
-
- /* Create Alice's new session data */
- alice_store = setup_test_store_context(global_context);
- alice_session_builder = alice_store.create_session_builder(bob_address);
- alice_session_cipher = alice_store.create_session_cipher(bob_address);
-
- /* Create Bob's new pre key bundle */
- bob_pre_key_pair = global_context.generate_key_pair();
- bob_signed_pre_key_pair = global_context.generate_key_pair();
- bob_identity_key_pair = bob_store.identity_key_pair;
- bob_signed_pre_key_signature = global_context.calculate_signature(bob_identity_key_pair.private, bob_signed_pre_key_pair.public.serialize());
- bob_pre_key = create_pre_key_bundle(bob_local_registration_id, 1, 31338, bob_pre_key_pair.public, 23, bob_signed_pre_key_pair.public, bob_signed_pre_key_signature, bob_identity_key_pair.public);
-
- /* Save the new pre key and signed pre key in Bob's data store */
- throw_by_code(PreKeyRecord.create(out bob_pre_key_record, bob_pre_key.pre_key_id, bob_pre_key_pair));
- bob_store.store_pre_key(bob_pre_key_record);
-
- throw_by_code(SignedPreKeyRecord.create(out bob_signed_pre_key_record, 23, new DateTime.now_utc().to_unix(), bob_signed_pre_key_pair, bob_signed_pre_key_signature, null));
- bob_store.store_signed_pre_key(bob_signed_pre_key_record);
-
- /* Have Alice process Bob's pre key bundle */
- alice_session_builder.process_pre_key_bundle(bob_pre_key);
-
- /* Have Alice encrypt a message for Bob */
- outgoing_message = alice_session_cipher.encrypt(original_message.data);
- fail_if_not_eq_int(outgoing_message.type, CiphertextType.PREKEY);
-
- /* Have Bob try to decrypt the message */
- PreKeyOmemoMessage outgoing_message_copy = global_context.copy_pre_key_message(outgoing_message);
-
- /* The decrypt should fail with a specific error */
- fail_if_not_error_code(() => bob_session_cipher.decrypt_pre_key_message(outgoing_message_copy), ErrorCode.UNTRUSTED_IDENTITY);
-
- outgoing_message_copy = global_context.copy_pre_key_message(outgoing_message);
-
- /* Save the identity key to Bob's store */
- bob_store.save_identity(alice_address, outgoing_message_copy.identity_key);
-
- /* Try the decrypt again, this time it should succeed */
- outgoing_message_copy = global_context.copy_pre_key_message(outgoing_message);
- plaintext = bob_session_cipher.decrypt_pre_key_message(outgoing_message_copy);
-
- fail_if_not_eq_uint8_arr(original_message.data, plaintext);
-
- /* Create a new pre key for Bob */
- ECPublicKey test_public_key = create_test_ec_public_key(global_context);
-
- IdentityKeyPair alice_identity_key_pair = alice_store.identity_key_pair;
-
- bob_pre_key = create_pre_key_bundle(bob_local_registration_id, 1, 31337, test_public_key, 23, bob_signed_pre_key_pair.public, bob_signed_pre_key_signature, alice_identity_key_pair.public);
-
- /* Have Alice process Bob's new pre key bundle, which should fail */
- fail_if_not_error_code(() => alice_session_builder.process_pre_key_bundle(bob_pre_key), ErrorCode.UNTRUSTED_IDENTITY);
-
- GLib.Test.message("Post-interaction tests complete");
- } catch(Error e) {
- fail_if_reached(@"Unexpected error: $(e.message)");
- }
- }
-
-
- void test_basic_pre_key_omemo() {
- try {
- /* Create Alice's data store and session builder */
- Store alice_store = setup_test_store_context(global_context);
- SessionBuilder alice_session_builder = alice_store.create_session_builder(bob_address);
- alice_session_builder.version = 4;
-
- /* Create Bob's data store and pre key bundle */
- Store bob_store = setup_test_store_context(global_context);
- uint32 bob_local_registration_id = bob_store.local_registration_id;
- ECKeyPair bob_pre_key_pair = global_context.generate_key_pair();
- ECKeyPair bob_signed_pre_key_pair = global_context.generate_key_pair();
- IdentityKeyPair bob_identity_key_pair = bob_store.identity_key_pair;
-
- uint8[] bob_signed_pre_key_signature = global_context.calculate_signature(bob_identity_key_pair.private, bob_signed_pre_key_pair.public.serialize_omemo());
-
- PreKeyBundle bob_pre_key = create_pre_key_bundle(bob_local_registration_id, 1, 31337, bob_pre_key_pair.public, 22, bob_signed_pre_key_pair.public, bob_signed_pre_key_signature, bob_identity_key_pair.public);
-
- /* Have Alice process Bob's pre key bundle */
- alice_session_builder.process_pre_key_bundle(bob_pre_key);
-
- /* Check that we can load the session state and verify its version */
- fail_if_not(alice_store.contains_session(bob_address));
-
- SessionRecord loaded_record = alice_store.load_session(bob_address);
- fail_if_not_eq_int((int)loaded_record.state.session_version, 4);
-
- /* Encrypt an outgoing message to send to Bob */
- string original_message = "L'homme est condamné à être libre";
- SessionCipher alice_session_cipher = alice_store.create_session_cipher(bob_address);
- alice_session_cipher.version = 4;
-
- CiphertextMessage outgoing_message = alice_session_cipher.encrypt(original_message.data);
- fail_if_not_eq_int(outgoing_message.type, CiphertextType.PREKEY);
-
- /* Convert to an incoming message for Bob */
- PreKeyOmemoMessage incoming_message = global_context.deserialize_omemo_pre_key_message(outgoing_message.serialized, bob_local_registration_id);
-
- /* Save the pre key and signed pre key in Bob's data store */
- PreKeyRecord bob_pre_key_record;
- throw_by_code(PreKeyRecord.create(out bob_pre_key_record, bob_pre_key.pre_key_id, bob_pre_key_pair));
- bob_store.store_pre_key(bob_pre_key_record);
-
- SignedPreKeyRecord bob_signed_pre_key_record;
- throw_by_code(SignedPreKeyRecord.create(out bob_signed_pre_key_record, 22, new DateTime.now_utc().to_unix(), bob_signed_pre_key_pair, new uint8[1], bob_signed_pre_key_signature));
- bob_store.store_signed_pre_key(bob_signed_pre_key_record);
-
- /* Create Bob's session cipher and decrypt the message from Alice */
- SessionCipher bob_session_cipher = bob_store.create_session_cipher(alice_address);
- bob_session_cipher.version = 4;
-
- /* Prepare the data for the callback test */
- //int callback_context = 1234;
- //bob_session_cipher.user_data =
- //bob_session_cipher.decryption_callback =
- uint8[] plaintext = bob_session_cipher.decrypt_pre_key_message(incoming_message);
-
- /* Clean up callback data */
- bob_session_cipher.user_data = null;
- bob_session_cipher.decryption_callback = null;
-
- /* Verify Bob's session state and the decrypted message */
- fail_if_not(bob_store.contains_session(alice_address));
-
- SessionRecord alice_recipient_session_record = bob_store.load_session(alice_address);
-
- SessionState alice_recipient_session_state = alice_recipient_session_record.state;
- fail_if_not_eq_int((int)alice_recipient_session_state.session_version, 4);
- fail_if_null(alice_recipient_session_state.alice_base_key);
-
- fail_if_not_eq_uint8_arr(original_message.data, plaintext);
-
- /* Have Bob send a reply to Alice */
- CiphertextMessage bob_outgoing_message = bob_session_cipher.encrypt(original_message.data);
- fail_if_not_eq_int(bob_outgoing_message.type, CiphertextType.SIGNAL);
-
- /* Verify that Alice can decrypt it */
- OmemoMessage bob_outgoing_message_copy = global_context.copy_message(bob_outgoing_message);
-
- uint8[] alice_plaintext = alice_session_cipher.decrypt_message(bob_outgoing_message_copy);
-
- fail_if_not_eq_uint8_arr(original_message.data, alice_plaintext);
-
- GLib.Test.message("Pre-interaction tests complete");
-
- /* Interaction tests */
- run_interaction(alice_store, bob_store, 4);
-
- /* Cleanup state from previous tests that we need to replace */
- alice_store = null;
- bob_pre_key_pair = null;
- bob_signed_pre_key_pair = null;
- bob_identity_key_pair = null;
- bob_signed_pre_key_signature = null;
- bob_pre_key_record = null;
- bob_signed_pre_key_record = null;
-
- /* Create Alice's new session data */
- alice_store = setup_test_store_context(global_context);
- alice_session_builder = alice_store.create_session_builder(bob_address);
- alice_session_builder.version = 4;
- alice_session_cipher = alice_store.create_session_cipher(bob_address);
- alice_session_cipher.version = 4;
-
- /* Create Bob's new pre key bundle */
- bob_pre_key_pair = global_context.generate_key_pair();
- bob_signed_pre_key_pair = global_context.generate_key_pair();
- bob_identity_key_pair = bob_store.identity_key_pair;
- bob_signed_pre_key_signature = global_context.calculate_signature(bob_identity_key_pair.private, bob_signed_pre_key_pair.public.serialize_omemo());
- bob_pre_key = create_pre_key_bundle(bob_local_registration_id, 1, 31338, bob_pre_key_pair.public, 23, bob_signed_pre_key_pair.public, bob_signed_pre_key_signature, bob_identity_key_pair.public);
-
- /* Save the new pre key and signed pre key in Bob's data store */
- throw_by_code(PreKeyRecord.create(out bob_pre_key_record, bob_pre_key.pre_key_id, bob_pre_key_pair));
- bob_store.store_pre_key(bob_pre_key_record);
-
- throw_by_code(SignedPreKeyRecord.create(out bob_signed_pre_key_record, 23, new DateTime.now_utc().to_unix(), bob_signed_pre_key_pair, new uint8[1], bob_signed_pre_key_signature));
- bob_store.store_signed_pre_key(bob_signed_pre_key_record);
-
- /* Have Alice process Bob's pre key bundle */
- alice_session_builder.process_pre_key_bundle(bob_pre_key);
-
- /* Have Alice encrypt a message for Bob */
- outgoing_message = alice_session_cipher.encrypt(original_message.data);
- fail_if_not_eq_int(outgoing_message.type, CiphertextType.PREKEY);
-
- /* Have Bob try to decrypt the message */
- PreKeyOmemoMessage outgoing_message_copy = global_context.copy_pre_key_message(outgoing_message);
-
- /* The decrypt should fail with a specific error */
- fail_if_not_error_code(() => bob_session_cipher.decrypt_pre_key_message(outgoing_message_copy), ErrorCode.UNTRUSTED_IDENTITY);
-
- outgoing_message_copy = global_context.copy_pre_key_message(outgoing_message);
-
- /* Save the identity key to Bob's store */
- bob_store.save_identity(alice_address, outgoing_message_copy.identity_key);
-
- /* Try the decrypt again, this time it should succeed */
- outgoing_message_copy = global_context.copy_pre_key_message(outgoing_message);
- plaintext = bob_session_cipher.decrypt_pre_key_message(outgoing_message_copy);
-
- fail_if_not_eq_uint8_arr(original_message.data, plaintext);
-
- /* Create a new pre key for Bob */
- ECPublicKey test_public_key = create_test_ec_public_key(global_context);
-
- IdentityKeyPair alice_identity_key_pair = alice_store.identity_key_pair;
-
- bob_pre_key = create_pre_key_bundle(bob_local_registration_id, 1, 31337, test_public_key, 23, bob_signed_pre_key_pair.public, bob_signed_pre_key_signature, alice_identity_key_pair.public);
-
- /* Have Alice process Bob's new pre key bundle, which should fail */
- fail_if_not_error_code(() => alice_session_builder.process_pre_key_bundle(bob_pre_key), ErrorCode.UNTRUSTED_IDENTITY);
-
- GLib.Test.message("Post-interaction tests complete");
- } catch(Error e) {
- fail_if_reached(@"Unexpected error: $(e.message)");
- }
- }
-
- void test_bad_signed_pre_key_signature() {
- try {
- /* Create Alice's data store and session builder */
- Store alice_store = setup_test_store_context(global_context);
- SessionBuilder alice_session_builder = alice_store.create_session_builder(bob_address);
-
- /* Create Bob's data store */
- Store bob_store = setup_test_store_context(global_context);
-
- /* Create Bob's regular and signed pre key pairs */
- ECKeyPair bob_pre_key_pair = global_context.generate_key_pair();
- ECKeyPair bob_signed_pre_key_pair = global_context.generate_key_pair();
-
- /* Create Bob's signed pre key signature */
- IdentityKeyPair bob_identity_key_pair = bob_store.identity_key_pair;
- uint8[] bob_signed_pre_key_signature = global_context.calculate_signature(bob_identity_key_pair.private, bob_signed_pre_key_pair.public.serialize());
-
- for (int i = 0; i < bob_signed_pre_key_signature.length * 8; i++) {
- uint8[] modified_signature = bob_signed_pre_key_signature[0:bob_signed_pre_key_signature.length];
-
- /* Intentionally corrupt the signature data */
- modified_signature[i/8] ^= (1 << ((uint8)i % 8));
-
- /* Create a pre key bundle */
- PreKeyBundle bob_pre_key = create_pre_key_bundle(bob_store.local_registration_id,1,31137,bob_pre_key_pair.public,22,bob_signed_pre_key_pair.public,modified_signature,bob_identity_key_pair.public);
-
- /* Process the bundle and make sure we fail with an invalid key error */
- fail_if_not_error_code(() => alice_session_builder.process_pre_key_bundle(bob_pre_key), ErrorCode.INVALID_KEY);
- }
-
- /* Create a correct pre key bundle */
- PreKeyBundle bob_pre_key = create_pre_key_bundle(bob_store.local_registration_id,1,31137,bob_pre_key_pair.public,22,bob_signed_pre_key_pair.public,bob_signed_pre_key_signature,bob_identity_key_pair.public);
-
- /* Process the bundle and make sure we do not fail */
- alice_session_builder.process_pre_key_bundle(bob_pre_key);
- } catch(Error e) {
- fail_if_reached(@"Unexpected error: $(e.message)");
- }
- }
-
- void test_repeat_bundle_message_v2() {
- try {
- /* Create Alice's data store and session builder */
- Store alice_store = setup_test_store_context(global_context);
- SessionBuilder alice_session_builder = alice_store.create_session_builder(bob_address);
-
- /* Create Bob's data store and pre key bundle */
- Store bob_store = setup_test_store_context(global_context);
- ECKeyPair bob_pre_key_pair = global_context.generate_key_pair();
- ECKeyPair bob_signed_pre_key_pair = global_context.generate_key_pair();
- uint8[] bob_signed_pre_key_signature = global_context.calculate_signature(bob_store.identity_key_pair.private, bob_signed_pre_key_pair.public.serialize());
- PreKeyBundle bob_pre_key = create_pre_key_bundle(bob_store.local_registration_id,1,31337,bob_pre_key_pair.public,0,null,null,bob_store.identity_key_pair.public);
-
- /* Add Bob's pre keys to Bob's data store */
- PreKeyRecord bob_pre_key_record;
- throw_by_code(PreKeyRecord.create(out bob_pre_key_record, bob_pre_key.pre_key_id, bob_pre_key_pair));
- bob_store.store_pre_key(bob_pre_key_record);
- SignedPreKeyRecord bob_signed_pre_key_record;
- throw_by_code(SignedPreKeyRecord.create(out bob_signed_pre_key_record, 22, new DateTime.now_utc().to_unix(), bob_signed_pre_key_pair, bob_signed_pre_key_signature, null));
- bob_store.store_signed_pre_key(bob_signed_pre_key_record);
-
- /*
- * Have Alice process Bob's pre key bundle, which should fail due to a
- * missing signed pre key.
- */
- fail_if_not_error_code(() => alice_session_builder.process_pre_key_bundle(bob_pre_key), ErrorCode.INVALID_KEY);
- } catch(Error e) {
- fail_if_reached(@"Unexpected error: $(e.message)");
- }
- }
-
- class Holder {
- public uint8[] data { get; private set; }
-
- public Holder(uint8[] data) {
- this.data = data;
- }
- }
-
- void run_interaction(Store alice_store, Store bob_store, uint32 version = 3) throws Error {
-
- /* Create the session ciphers */
- SessionCipher alice_session_cipher = alice_store.create_session_cipher(bob_address);
- alice_session_cipher.version = version;
- SessionCipher bob_session_cipher = bob_store.create_session_cipher(alice_address);
- bob_session_cipher.version = version;
-
- /* Create a test message */
- string original_message = "smert ze smert";
-
- /* Simulate Alice sending a message to Bob */
- CiphertextMessage alice_message = alice_session_cipher.encrypt(original_message.data);
- fail_if_not_eq_int(alice_message.type, CiphertextType.SIGNAL);
-
- OmemoMessage alice_message_copy = global_context.copy_message(alice_message);
- uint8[] plaintext = bob_session_cipher.decrypt_message(alice_message_copy);
- fail_if_not_eq_uint8_arr(original_message.data, plaintext);
-
- GLib.Test.message("Interaction complete: Alice -> Bob");
-
- /* Simulate Bob sending a message to Alice */
- CiphertextMessage bob_message = bob_session_cipher.encrypt(original_message.data);
- fail_if_not_eq_int(alice_message.type, CiphertextType.SIGNAL);
-
- OmemoMessage bob_message_copy = global_context.copy_message(bob_message);
- plaintext = alice_session_cipher.decrypt_message(bob_message_copy);
- fail_if_not_eq_uint8_arr(original_message.data, plaintext);
-
- GLib.Test.message("Interaction complete: Bob -> Alice");
-
- /* Looping Alice -> Bob */
- for (int i = 0; i < 10; i++) {
- uint8[] looping_message = create_looping_message(i);
- CiphertextMessage alice_looping_message = alice_session_cipher.encrypt(looping_message);
- OmemoMessage alice_looping_message_copy = global_context.copy_message(alice_looping_message);
- uint8[] looping_plaintext = bob_session_cipher.decrypt_message(alice_looping_message_copy);
- fail_if_not_eq_uint8_arr(looping_message, looping_plaintext);
- }
- GLib.Test.message("Interaction complete: Alice -> Bob (looping)");
-
- /* Looping Bob -> Alice */
- for (int i = 0; i < 10; i++) {
- uint8[] looping_message = create_looping_message(i);
- CiphertextMessage bob_looping_message = bob_session_cipher.encrypt(looping_message);
- OmemoMessage bob_looping_message_copy = global_context.copy_message(bob_looping_message);
- uint8[] looping_plaintext = alice_session_cipher.decrypt_message(bob_looping_message_copy);
- fail_if_not_eq_uint8_arr(looping_message, looping_plaintext);
- }
- GLib.Test.message("Interaction complete: Bob -> Alice (looping)");
-
- /* Generate a shuffled list of encrypted messages for later use */
- Holder[] alice_ooo_plaintext = new Holder[10];
- Holder[] alice_ooo_ciphertext = new Holder[10];
- for (int i = 0; i < 10; i++) {
- alice_ooo_plaintext[i] = new Holder(create_looping_message(i));
- alice_ooo_ciphertext[i] = new Holder(alice_session_cipher.encrypt(alice_ooo_plaintext[i].data).serialized);
- }
-
- for (int i = 0; i < 10; i++) {
- uint32 s = Random.next_int() % 10;
- Holder tmp = alice_ooo_plaintext[s];
- alice_ooo_plaintext[s] = alice_ooo_plaintext[i];
- alice_ooo_plaintext[i] = tmp;
- tmp = alice_ooo_ciphertext[s];
- alice_ooo_ciphertext[s] = alice_ooo_ciphertext[i];
- alice_ooo_ciphertext[i] = tmp;
- }
- GLib.Test.message("Shuffled Alice->Bob messages created");
-
- /* Looping Alice -> Bob (repeated) */
- for (int i = 0; i < 10; i++) {
- uint8[] looping_message = create_looping_message(i);
- CiphertextMessage alice_looping_message = alice_session_cipher.encrypt(looping_message);
- OmemoMessage alice_looping_message_copy = global_context.copy_message(alice_looping_message);
- uint8[] looping_plaintext = bob_session_cipher.decrypt_message(alice_looping_message_copy);
- fail_if_not_eq_uint8_arr(looping_message, looping_plaintext);
- }
- GLib.Test.message("Interaction complete: Alice -> Bob (looping, repeated)");
-
- /* Looping Bob -> Alice (repeated) */
- for (int i = 0; i < 10; i++) {
- uint8[] looping_message = create_looping_message(i);
- CiphertextMessage bob_looping_message = bob_session_cipher.encrypt(looping_message);
- OmemoMessage bob_looping_message_copy = global_context.copy_message(bob_looping_message);
- uint8[] looping_plaintext = alice_session_cipher.decrypt_message(bob_looping_message_copy);
- fail_if_not_eq_uint8_arr(looping_message, looping_plaintext);
- }
- GLib.Test.message("Interaction complete: Bob -> Alice (looping, repeated)");
-
- /* Shuffled Alice -> Bob */
- for (int i = 0; i < 10; i++) {
- OmemoMessage ooo_message_deserialized = version >= 4
- ? global_context.deserialize_omemo_message(alice_ooo_ciphertext[i].data)
- : global_context.deserialize_signal_message(alice_ooo_ciphertext[i].data);
- uint8[] ooo_plaintext = bob_session_cipher.decrypt_message(ooo_message_deserialized);
- fail_if_not_eq_uint8_arr(alice_ooo_plaintext[i].data, ooo_plaintext);
- }
- GLib.Test.message("Interaction complete: Alice -> Bob (shuffled)");
- }
-
- uint8[] create_looping_message(int index) {
- return (@"You can only desire based on what you know: $index").data;
- }
-
- /*
- uint8[] create_looping_message_short(int index) {
- return ("What do we mean by saying that existence precedes essence? " +
- "We mean that man first of all exists, encounters himself, " +
- @"surges up in the world--and defines himself aftward. $index").data;
- }
- */
-}
-
-}
diff --git a/plugins/omemo/tests/native/testcase.vala b/plugins/omemo/tests/native/testcase.vala
deleted file mode 100644
index 59fcf193..00000000
--- a/plugins/omemo/tests/native/testcase.vala
+++ /dev/null
@@ -1,80 +0,0 @@
-/* testcase.vala
- *
- * Copyright (C) 2009 Julien Peeters
- *
- * 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, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Author:
- * Julien Peeters <contact@julienpeeters.fr>
- */
-
-public abstract class Gee.TestCase : Object {
-
- private GLib.TestSuite suite;
- private Adaptor[] adaptors = new Adaptor[0];
-
- public delegate void TestMethod ();
-
- protected TestCase (string name) {
- this.suite = new GLib.TestSuite (name);
- }
-
- public void add_test (string name, owned TestMethod test) {
- var adaptor = new Adaptor (name, (owned)test, this);
- this.adaptors += adaptor;
-
- this.suite.add (new GLib.TestCase (adaptor.name,
- adaptor.set_up,
- adaptor.run,
- adaptor.tear_down ));
- }
-
- public virtual void set_up () {
- }
-
- public virtual void tear_down () {
- }
-
- public GLib.TestSuite get_suite () {
- return (owned) this.suite;
- }
-
- private class Adaptor {
- [CCode (notify = false)]
- public string name { get; private set; }
- private TestMethod test;
- private TestCase test_case;
-
- public Adaptor (string name,
- owned TestMethod test,
- TestCase test_case) {
- this.name = name;
- this.test = (owned)test;
- this.test_case = test_case;
- }
-
- public void set_up (void* fixture) {
- this.test_case.set_up ();
- }
-
- public void run (void* fixture) {
- this.test ();
- }
-
- public void tear_down (void* fixture) {
- this.test_case.tear_down ();
- }
- }
-}
diff --git a/plugins/omemo/vapi/libgcrypt.vapi b/plugins/omemo/vapi/libgcrypt.vapi
deleted file mode 100644
index e69de29b..00000000
--- a/plugins/omemo/vapi/libgcrypt.vapi
+++ /dev/null
diff --git a/plugins/omemo/vapi/libomemo-c.vapi b/plugins/omemo/vapi/libomemo-c.vapi
deleted file mode 100644
index 34bb0202..00000000
--- a/plugins/omemo/vapi/libomemo-c.vapi
+++ /dev/null
@@ -1,694 +0,0 @@
-namespace Omemo {
-
- [CCode (cname = "int", cprefix = "SG_ERR_", cheader_filename = "omemo/signal_protocol.h", has_type_id = false)]
- public enum ErrorCode {
- [CCode (cname = "SG_SUCCESS")]
- SUCCESS,
- NOMEM,
- INVAL,
- UNKNOWN,
- DUPLICATE_MESSAGE,
- INVALID_KEY,
- INVALID_KEY_ID,
- INVALID_MAC,
- INVALID_MESSAGE,
- INVALID_VERSION,
- LEGACY_MESSAGE,
- NO_SESSION,
- STALE_KEY_EXCHANGE,
- UNTRUSTED_IDENTITY,
- VRF_SIG_VERIF_FAILED,
- INVALID_PROTO_BUF,
- FP_VERSION_MISMATCH,
- FP_IDENT_MISMATCH;
- }
-
- [CCode (cname = "SG_ERR_MINIMUM", cheader_filename = "omemo/signal_protocol.h")]
- public const int MIN_ERROR_CODE;
-
- [CCode (cname = "int", cprefix = "SG_LOG_", cheader_filename = "omemo/signal_protocol.h", has_type_id = false)]
- public enum LogLevel {
- ERROR,
- WARNING,
- NOTICE,
- INFO,
- DEBUG
- }
-
- [CCode (cname = "signal_throw_gerror_by_code_", cheader_filename = "omemo/signal_protocol.h")]
- private int throw_by_code(int code, string? message = null) throws GLib.Error {
- if (code < 0 && code > MIN_ERROR_CODE) {
- throw new GLib.Error(-1, code, "%s: %s", message ?? "libomemo-c error", ((ErrorCode)code).to_string());
- }
- return code;
- }
-
- [CCode (cname = "int", cprefix = "SG_CIPHER_", cheader_filename = "omemo/signal_protocol.h", has_type_id = false)]
- public enum Cipher {
- AES_CTR_NOPADDING,
- AES_CBC_PKCS5,
- AES_GCM_NOPADDING
- }
-
- [Compact]
- [CCode (cname = "signal_type_base", ref_function="signal_type_ref_vapi", unref_function="signal_type_unref_vapi", cheader_filename="omemo/signal_protocol_types.h,native/helper.h")]
- public class TypeBase {
- }
-
- [Compact]
- [CCode (cname = "signal_buffer", cprefix = "signal_buffer_", cheader_filename = "omemo/signal_protocol_types.h", free_function="signal_buffer_free")]
- public class Buffer {
- [CCode (cname = "signal_buffer_alloc")]
- public Buffer(size_t len);
- [CCode (cname = "signal_buffer_create")]
- public Buffer.from(uint8[] data);
-
- public Buffer copy();
- public Buffer append(uint8[] data);
- public int compare(Buffer other);
-
- public uint8 get(int i) { return data[i]; }
- public void set(int i, uint8 val) { data[i] = val; }
-
- public uint8[] data { get { int x = (int)len(); unowned uint8[] res = _data(); res.length = x; return res; } }
-
- [CCode (array_length = false, cname = "signal_buffer_data")]
- private unowned uint8[] _data();
- private size_t len();
- }
-
- [Compact]
- [CCode (cname = "signal_int_list", cheader_filename = "omemo/signal_protocol_types.h", free_function="signal_int_list_free")]
- public class IntList {
- [CCode (cname = "signal_int_list_alloc")]
- public IntList();
- [CCode (cname = "signal_int_list_push_back")]
- public int add(int value);
- public uint size { [CCode (cname = "signal_int_list_size")] get; }
- [CCode (cname = "signal_int_list_at")]
- public int get(uint index);
- }
-
- [Compact]
- [CCode (cname = "session_builder", cprefix = "session_builder_", free_function="session_builder_free", cheader_filename = "omemo/session_builder.h")]
- public class SessionBuilder {
- [CCode (cname = "session_builder_process_pre_key_bundle")]
- private int process_pre_key_bundle_(PreKeyBundle pre_key_bundle);
- [CCode (cname = "session_builder_process_pre_key_bundle_")]
- public void process_pre_key_bundle(PreKeyBundle pre_key_bundle) throws GLib.Error {
- throw_by_code(process_pre_key_bundle_(pre_key_bundle));
- }
- public int version { get; set; }
- }
-
- [Compact]
- [CCode (cname = "session_pre_key_bundle", cprefix = "session_pre_key_bundle_", cheader_filename = "omemo/session_pre_key.h")]
- public class PreKeyBundle : TypeBase {
- public static int create(out PreKeyBundle bundle, uint32 registration_id, int device_id, uint32 pre_key_id, ECPublicKey? pre_key_public,
- uint32 signed_pre_key_id, ECPublicKey? signed_pre_key_public, uint8[]? signed_pre_key_signature, ECPublicKey? identity_key);
- public uint32 registration_id { get; }
- public int device_id { get; }
- public uint32 pre_key_id { get; }
- public ECPublicKey pre_key { owned get; }
- public uint32 signed_pre_key_id { get; }
- public ECPublicKey signed_pre_key { owned get; }
- public Buffer signed_pre_key_signature { owned get; }
- public ECPublicKey identity_key { owned get; }
- }
-
- [Compact]
- [CCode (cname = "session_pre_key", cprefix = "session_pre_key_", cheader_filename = "omemo/session_pre_key.h,native/helper.h")]
- public class PreKeyRecord : TypeBase {
- public static int create(out PreKeyRecord pre_key, uint32 id, ECKeyPair key_pair);
- //public static int deserialize(out PreKeyRecord pre_key, uint8[] data, NativeContext global_context);
- [CCode (instance_pos = 2)]
- public int serialze(out Buffer buffer);
- public uint32 id { get; }
- public ECKeyPair key_pair { get; }
- }
-
- [Compact]
- [CCode (cname = "session_record", cprefix = "session_record_", cheader_filename = "omemo/signal_protocol_types.h")]
- public class SessionRecord : TypeBase {
- public SessionState state { get; }
- public Buffer user_record { get; }
- }
-
- [Compact]
- [CCode (cname = "session_state", cprefix = "session_state_", cheader_filename = "omemo/session_state.h")]
- public class SessionState : TypeBase {
- //public static int create(out SessionState state, NativeContext context);
- //public static int deserialize(out SessionState state, uint8[] data, NativeContext context);
- //public static int copy(out SessionState state, SessionState other_state, NativeContext context);
- [CCode (instance_pos = 2)]
- public int serialze(out Buffer buffer);
-
- public uint32 session_version { get; set; }
- public ECPublicKey local_identity_key { get; set; }
- public ECPublicKey remote_identity_key { get; set; }
- //public Ratchet.RootKey root_key { get; set; }
- public uint32 previous_counter { get; set; }
- public ECPublicKey sender_ratchet_key { get; }
- public ECKeyPair sender_ratchet_key_pair { get; }
- //public Ratchet.ChainKey sender_chain_key { get; set; }
- public uint32 remote_registration_id { get; set; }
- public uint32 local_registration_id { get; set; }
- public int needs_refresh { get; set; }
- public ECPublicKey alice_base_key { get; set; }
- }
-
- [Compact]
- [CCode (cname = "session_signed_pre_key", cprefix = "session_signed_pre_key_", cheader_filename = "omemo/session_pre_key.h")]
- public class SignedPreKeyRecord : TypeBase {
- public static int create(out SignedPreKeyRecord pre_key, uint32 id, uint64 timestamp, ECKeyPair key_pair, uint8[] signature, uint8[]? signature_omemo);
- [CCode (instance_pos = 2)]
- public int serialize(out Buffer buffer);
-
- public uint32 id { get; }
- public uint64 timestamp { get; }
- public ECKeyPair key_pair { get; }
- public uint8[] signature { [CCode (cname = "session_signed_pre_key_get_signature_")] get { int x = (int)get_signature_len(); unowned uint8[] res = get_signature(); res.length = x; return res; } }
- public uint8[] signature_omemo { [CCode (cname = "session_signed_pre_key_get_signature_omemo_")] get { int x = (int)get_signature_omemo_len(); unowned uint8[] res = get_signature_omemo(); res.length = x; return res; } }
-
- [CCode (array_length = false, cname = "session_signed_pre_key_get_signature")]
- private unowned uint8[] get_signature();
- private size_t get_signature_len();
- [CCode (array_length = false, cname = "session_signed_pre_key_get_signature_omemo")]
- private unowned uint8[] get_signature_omemo();
- private size_t get_signature_omemo_len();
- }
-
- /**
- * Address of an OMEMO message recipient
- */
- [Compact]
- [CCode (cname = "signal_protocol_address", cprefix = "signal_protocol_address_", cheader_filename = "omemo/signal_protocol.h,native/helper.h")]
- public class Address {
- public Address(string name, int32 device_id);
- public int32 device_id { get; set; }
- public string name { owned get; set; }
- }
-
- /**
- * A representation of a (group + sender + device) tuple
- */
- [Compact]
- [CCode (cname = "signal_protocol_sender_key_name")]
- public class SenderKeyName {
- [CCode (cname = "group_id", array_length_cname="group_id_len")]
- private char* group_id_;
- private size_t group_id_len;
- public Address sender;
- }
-
- [Compact]
- [CCode (cname = "ec_public_key", cprefix = "ec_public_key_", cheader_filename = "omemo/curve.h,native/helper.h")]
- public class ECPublicKey : TypeBase {
- [CCode (cname = "curve_generate_public_key")]
- public static int generate(out ECPublicKey public_key, ECPrivateKey private_key);
- [CCode (instance_pos = 1, cname = "ec_public_key_serialize")]
- private int serialize_([CCode (pos = 0)] out Buffer buffer);
- [CCode (cname = "ec_public_key_serialize_")]
- public uint8[] serialize() {
- Buffer buffer;
- int code = serialize_(out buffer);
- if (code < 0 && code > MIN_ERROR_CODE) {
- // Can only throw for invalid arguments or out of memory.
- GLib.assert_not_reached();
- }
- return buffer.data;
- }
- [CCode (instance_pos = 1, cname = "ec_public_key_serialize_omemo")]
- private int serialize_omemo_([CCode (pos = 0)] out Buffer buffer);
- [CCode (cname = "ec_public_key_serialize_omemo_")]
- public uint8[] serialize_omemo() {
- Buffer buffer;
- int code = serialize_omemo_(out buffer);
- if (code < 0 && code > MIN_ERROR_CODE) {
- // Can only throw for invalid arguments or out of memory.
- GLib.assert_not_reached();
- }
- return buffer.data;
- }
- public Buffer ed { owned get; }
- public Buffer mont { owned get; }
- public int compare(ECPublicKey other);
- public int memcmp(ECPublicKey other);
- }
-
- [Compact]
- [CCode (cname = "ec_private_key", cprefix = "ec_private_key_", cheader_filename = "omemo/curve.h,native/helper.h")]
- public class ECPrivateKey : TypeBase {
- [CCode (instance_pos = 1, cname = "ec_private_key_serialize")]
- private int serialize_([CCode (pos = 0)] out Buffer buffer);
- [CCode (cname = "ec_private_key_serialize_")]
- public uint8[] serialize() throws GLib.Error {
- Buffer buffer;
- int code = serialize_(out buffer);
- if (code < 0 && code > MIN_ERROR_CODE) {
- // Can only throw for invalid arguments or out of memory.
- GLib.assert_not_reached();
- }
- return buffer.data;
- }
- public int compare(ECPublicKey other);
- }
-
- [Compact]
- [CCode (cname = "ec_key_pair", cprefix="ec_key_pair_", cheader_filename = "omemo/curve.h,native/helper.h")]
- public class ECKeyPair : TypeBase {
- public static int create(out ECKeyPair key_pair, ECPublicKey public_key, ECPrivateKey private_key);
- public ECPublicKey public { get; }
- public ECPrivateKey private { get; }
- }
-
- [CCode (cname = "ratchet_message_keys", cheader_filename = "omemo/ratchet.h")]
- public class MessageKeys {
- }
-
- [Compact]
- [CCode (cname = "ratchet_identity_key_pair", cprefix = "ratchet_identity_key_pair_", cheader_filename = "omemo/ratchet.h,native/helper.h")]
- public class IdentityKeyPair : TypeBase {
- public static int create(out IdentityKeyPair key_pair, ECPublicKey public_key, ECPrivateKey private_key);
- public int serialze(out Buffer buffer);
- public ECPublicKey public { get; }
- public ECPrivateKey private { get; }
- }
-
- [Compact]
- [CCode (cname = "ec_public_key_list")]
- public class PublicKeyList {}
-
- /**
- * The main entry point for OMEMO encrypt/decrypt operations.
- *
- * Once a session has been established with session_builder,
- * this class can be used for all encrypt/decrypt operations within
- * that session.
- */
- [Compact]
- [CCode (cname = "session_cipher", cprefix = "session_cipher_", cheader_filename = "omemo/session_cipher.h", free_function = "session_cipher_free")]
- public class SessionCipher {
- public void* user_data { get; set; }
- public DecryptionCallback decryption_callback { set; }
- [CCode (cname = "session_cipher_encrypt")]
- private int encrypt_(uint8[] padded_message, out CiphertextMessage encrypted_message);
- [CCode (cname = "session_cipher_encrypt_")]
- public CiphertextMessage encrypt(uint8[] padded_message) throws GLib.Error {
- CiphertextMessage res;
- throw_by_code(encrypt_(padded_message, out res));
- return res;
- }
- [CCode (cname = "session_cipher_decrypt_pre_key_signal_message")]
- private int decrypt_pre_key_message_(PreKeyOmemoMessage ciphertext, void* decrypt_context, out Buffer plaintext);
- [CCode (cname = "session_cipher_decrypt_pre_key_signal_message_")]
- public uint8[] decrypt_pre_key_message(PreKeyOmemoMessage ciphertext, void* decrypt_context = null) throws GLib.Error {
- Buffer res;
- throw_by_code(decrypt_pre_key_message_(ciphertext, decrypt_context, out res));
- return res.data;
- }
- [CCode (cname = "session_cipher_decrypt_signal_message")]
- private int decrypt_message_(OmemoMessage ciphertext, void* decrypt_context, out Buffer plaintext);
- [CCode (cname = "session_cipher_decrypt_signal_message_")]
- public uint8[] decrypt_message(OmemoMessage ciphertext, void* decrypt_context = null) throws GLib.Error {
- Buffer res;
- throw_by_code(decrypt_message_(ciphertext, decrypt_context, out res));
- return res.data;
- }
- public int get_remote_registration_id(out uint32 remote_id);
- [CCode (cname = "session_cipher_get_session_version")]
- private int get_session_version_(out uint32 version);
- [CCode (cname = "session_cipher_get_session_version_")]
- public uint32 get_session_version() throws GLib.Error {
- uint32 res;
- throw_by_code(get_session_version_(out res));
- return res;
- }
- public uint32 version { get; set; }
-
- [CCode (has_target = false)]
- public delegate int DecryptionCallback(SessionCipher cipher, Buffer plaintext, void* decrypt_context);
- }
-
- [CCode (cname = "int", cheader_filename = "omemo/protocol.h", has_type_id = false)]
- public enum CiphertextType {
- [CCode (cname = "CIPHERTEXT_SIGNAL_TYPE")]
- SIGNAL,
- [CCode (cname = "CIPHERTEXT_PREKEY_TYPE")]
- PREKEY,
- [CCode (cname = "CIPHERTEXT_SENDERKEY_TYPE")]
- SENDERKEY,
- [CCode (cname = "CIPHERTEXT_SENDERKEY_DISTRIBUTION_TYPE")]
- SENDERKEY_DISTRIBUTION
- }
-
- [Compact]
- [CCode (cname = "ciphertext_message", cprefix = "ciphertext_message_", cheader_filename = "omemo/protocol.h,native/helper.h")]
- public abstract class CiphertextMessage : TypeBase {
- public CiphertextType type { get; }
- [CCode (cname = "ciphertext_message_get_serialized")]
- private unowned Buffer get_serialized_();
- public uint8[] serialized { [CCode (cname = "ciphertext_message_get_serialized_")] get {
- return get_serialized_().data;
- }}
- }
- [Compact]
- [CCode (cname = "signal_message", cprefix = "signal_message_", cheader_filename = "omemo/protocol.h,native/helper.h")]
- public class OmemoMessage : CiphertextMessage {
- public ECPublicKey sender_ratchet_key { get; }
- public uint8 message_version { get; }
- public uint32 counter { get; }
- public Buffer body { get; }
- //public int verify_mac(uint8 message_version, ECPublicKey sender_identity_key, ECPublicKey receiver_identity_key, uint8[] mac, NativeContext global_context);
- public static int is_legacy(uint8[] data);
- }
- [Compact]
- [CCode (cname = "pre_key_signal_message", cprefix = "pre_key_signal_message_", cheader_filename = "omemo/protocol.h,native/helper.h")]
- public class PreKeyOmemoMessage : CiphertextMessage {
- public uint8 message_version { get; }
- public ECPublicKey identity_key { get; }
- public uint32 registration_id { get; }
- public uint32 pre_key_id { get; }
- public uint32 signed_pre_key_id { get; }
- public ECPublicKey base_key { get; }
- public OmemoMessage message { get; }
- }
- [Compact]
- [CCode (cname = "sender_key_message", cprefix = "sender_key_message_", cheader_filename = "omemo/protocol.h,native/helper.h")]
- public class SenderKeyMessage : CiphertextMessage {
- public uint32 key_id { get; }
- public uint32 iteration { get; }
- public Buffer ciphertext { get; }
- }
- [Compact]
- [CCode (cname = "sender_key_distribution_message", cprefix = "sender_key_distribution_message_", cheader_filename = "omemo/protocol.h,native/helper.h")]
- public class SenderKeyDistributionMessage : CiphertextMessage {
- public uint32 id { get; }
- public uint32 iteration { get; }
- public Buffer chain_key { get; }
- public ECPublicKey signature_key { get; }
- }
-
- [CCode (cname = "signal_vala_encrypt", cheader_filename = "native/helper.h")]
- private static int aes_encrypt_(out Buffer output, int cipher, uint8[] key, uint8[] iv, uint8[] plaintext, void *user_data);
-
- [CCode (cname = "signal_vala_encrypt_")]
- public uint8[] aes_encrypt(int cipher, uint8[] key, uint8[] iv, uint8[] plaintext) throws GLib.Error {
- Buffer buf;
- throw_by_code(aes_encrypt_(out buf, cipher, key, iv, plaintext, null));
- return buf.data;
- }
-
- [CCode (cname = "signal_vala_decrypt", cheader_filename = "native/helper.h")]
- private static int aes_decrypt_(out Buffer output, int cipher, uint8[] key, uint8[] iv, uint8[] ciphertext, void *user_data);
-
- [CCode (cname = "signal_vala_decrypt_")]
- public uint8[] aes_decrypt(int cipher, uint8[] key, uint8[] iv, uint8[] ciphertext) throws GLib.Error {
- Buffer buf;
- throw_by_code(aes_decrypt_(out buf, cipher, key, iv, ciphertext, null));
- return buf.data;
- }
-
- [Compact]
- [CCode (cname = "signal_context", cprefix="signal_context_", free_function="signal_context_destroy", cheader_filename = "omemo/signal_protocol.h")]
- public class NativeContext {
- public static int create(out NativeContext context, void* user_data);
- public int set_crypto_provider(NativeCryptoProvider crypto_provider);
- public int set_locking_functions(LockingFunc lock, LockingFunc unlock);
- public int set_log_function(LogFunc log);
- }
- [CCode (has_target = false)]
- public delegate void LockingFunc(void* user_data);
- [CCode (has_target = false)]
- public delegate void LogFunc(LogLevel level, string message, size_t len, void* user_data);
-
- [Compact]
- [CCode (cname = "signal_crypto_provider", cheader_filename = "omemo/signal_protocol.h")]
- public struct NativeCryptoProvider {
- public RandomFunc random_func;
- public HmacSha256Init hmac_sha256_init_func;
- public HmacSha256Update hmac_sha256_update_func;
- public HmacSha256Final hmac_sha256_final_func;
- public HmacSha256Cleanup hmac_sha256_cleanup_func;
- public Sha512DigestInit sha512_digest_init_func;
- public Sha512DigestUpdate sha512_digest_update_func;
- public Sha512DigestFinal sha512_digest_final_func;
- public Sha512DigestCleanup sha512_digest_cleanup_func;
- public CryptFunc encrypt_func;
- public CryptFunc decrypt_func;
- public void* user_data;
- }
- [CCode (has_target = false)]
- public delegate int RandomFunc(uint8[] data, void* user_data);
- [CCode (has_target = false)]
- public delegate int HmacSha256Init(out void* hmac_context, uint8[] key, void* user_data);
- [CCode (has_target = false)]
- public delegate int HmacSha256Update(void* hmac_context, uint8[] data, void* user_data);
- [CCode (has_target = false)]
- public delegate int HmacSha256Final(void* hmac_context, out Buffer buffer, void* user_data);
- [CCode (has_target = false)]
- public delegate int HmacSha256Cleanup(void* hmac_context, void* user_data);
- [CCode (has_target = false)]
- public delegate int Sha512DigestInit(out void* digest_context, void* user_data);
- [CCode (has_target = false)]
- public delegate int Sha512DigestUpdate(void* digest_context, uint8[] data, void* user_data);
- [CCode (has_target = false)]
- public delegate int Sha512DigestFinal(void* digest_context, out Buffer buffer, void* user_data);
- [CCode (has_target = false)]
- public delegate int Sha512DigestCleanup(void* digest_context, void* user_data);
- [CCode (has_target = false)]
- public delegate int CryptFunc(out Buffer output, Cipher cipher, uint8[] key, uint8[] iv, uint8[] content, void* user_data);
-
- [Compact]
- [CCode (cname = "signal_protocol_session_store", cheader_filename = "omemo/signal_protocol.h")]
- public struct NativeSessionStore {
- public LoadSessionFunc load_session_func;
- public GetSubDeviceSessionsFunc get_sub_device_sessions_func;
- public StoreSessionFunc store_session_func;
- public ContainsSessionFunc contains_session_func;
- public DeleteSessionFunc delete_session_func;
- public DeleteAllSessionsFunc delete_all_sessions_func;
- public DestroyFunc destroy_func;
- public void* user_data;
- }
- [CCode (has_target = false)]
- public delegate int LoadSessionFunc(out Buffer record, out Buffer user_record, Address address, void* user_data);
- [CCode (has_target = false)]
- public delegate int GetSubDeviceSessionsFunc(out IntList sessions, [CCode (array_length_type = "size_t")] char[] name, void* user_data);
- [CCode (has_target = false)]
- public delegate int StoreSessionFunc(Address address, [CCode (array_length_type = "size_t")] uint8[] record, [CCode (array_length_type = "size_t")] uint8[] user_record, void* user_data);
- [CCode (has_target = false)]
- public delegate int ContainsSessionFunc(Address address, void* user_data);
- [CCode (has_target = false)]
- public delegate int DeleteSessionFunc(Address address, void* user_data);
- [CCode (has_target = false)]
- public delegate int DeleteAllSessionsFunc([CCode (array_length_type = "size_t")] char[] name, void* user_data);
-
- [Compact]
- [CCode (cname = "signal_protocol_identity_key_store", cheader_filename = "omemo/signal_protocol.h")]
- public struct NativeIdentityKeyStore {
- GetIdentityKeyPairFunc get_identity_key_pair;
- GetLocalRegistrationIdFunc get_local_registration_id;
- SaveIdentityFunc save_identity;
- IsTrustedIdentityFunc is_trusted_identity;
- DestroyFunc destroy_func;
- void* user_data;
- }
- [CCode (has_target = false)]
- public delegate int GetIdentityKeyPairFunc(out Buffer public_data, out Buffer private_data, void* user_data);
- [CCode (has_target = false)]
- public delegate int GetLocalRegistrationIdFunc(void* user_data, out uint32 registration_id);
- [CCode (has_target = false)]
- public delegate int SaveIdentityFunc(Address address, [CCode (array_length_type = "size_t")] uint8[] key, void* user_data);
- [CCode (has_target = false)]
- public delegate int IsTrustedIdentityFunc(Address address, [CCode (array_length_type = "size_t")] uint8[] key, void* user_data);
-
- [Compact]
- [CCode (cname = "signal_protocol_pre_key_store", cheader_filename = "omemo/signal_protocol.h")]
- public struct NativePreKeyStore {
- LoadPreKeyFunc load_pre_key;
- StorePreKeyFunc store_pre_key;
- ContainsPreKeyFunc contains_pre_key;
- RemovePreKeyFunc remove_pre_key;
- DestroyFunc destroy_func;
- void* user_data;
- }
- [CCode (has_target = false)]
- public delegate int LoadPreKeyFunc(out Buffer record, uint32 pre_key_id, void* user_data);
- [CCode (has_target = false)]
- public delegate int StorePreKeyFunc(uint32 pre_key_id, [CCode (array_length_type = "size_t")] uint8[] record, void* user_data);
- [CCode (has_target = false)]
- public delegate int ContainsPreKeyFunc(uint32 pre_key_id, void* user_data);
- [CCode (has_target = false)]
- public delegate int RemovePreKeyFunc(uint32 pre_key_id, void* user_data);
-
-
- [Compact]
- [CCode (cname = "signal_protocol_signed_pre_key_store", cheader_filename = "omemo/signal_protocol.h")]
- public struct NativeSignedPreKeyStore {
- LoadPreKeyFunc load_signed_pre_key;
- StorePreKeyFunc store_signed_pre_key;
- ContainsPreKeyFunc contains_signed_pre_key;
- RemovePreKeyFunc remove_signed_pre_key;
- DestroyFunc destroy_func;
- void* user_data;
- }
-
-
- [Compact]
- [CCode (cname = "signal_protocol_sender_key_store")]
- public struct NativeSenderKeyStore {
- StoreSenderKeyFunc store_sender_key;
- LoadSenderKeyFunc load_sender_key;
- DestroyFunc destroy_func;
- void* user_data;
- }
- [CCode (has_target = false)]
- public delegate int StoreSenderKeyFunc(SenderKeyName sender_key_name, [CCode (array_length_type = "size_t")] uint8[] record, [CCode (array_length_type = "size_t")] uint8[] user_record, void* user_data);
- [CCode (has_target = false)]
- public delegate int LoadSenderKeyFunc(out Buffer record, out Buffer user_record, SenderKeyName sender_key_name, void* user_data);
-
- [CCode (has_target = false)]
- public delegate void DestroyFunc(void* user_data);
-
- [Compact]
- [CCode (cname = "signal_protocol_store_context", cprefix = "signal_protocol_store_context_", free_function="signal_protocol_store_context_destroy", cheader_filename = "omemo/signal_protocol.h")]
- public class NativeStoreContext {
- public static int create(out NativeStoreContext context, NativeContext global_context);
- public int set_session_store(NativeSessionStore store);
- public int set_pre_key_store(NativePreKeyStore store);
- public int set_signed_pre_key_store(NativeSignedPreKeyStore store);
- public int set_identity_key_store(NativeIdentityKeyStore store);
- public int set_sender_key_store(NativeSenderKeyStore store);
- }
-
-
- [CCode (cheader_filename = "omemo/signal_protocol.h")]
- namespace Protocol {
-
- /**
- * Interface to the pre-key store.
- * These functions will use the callbacks in the provided
- * signal_protocol_store_context instance and operate in terms of higher level
- * library data structures.
- */
- [CCode (lower_case_cprefix = "signal_protocol_pre_key_")]
- namespace PreKey {
- public int load_key(NativeStoreContext context, out PreKeyRecord pre_key, uint32 pre_key_id);
- public int store_key(NativeStoreContext context, PreKeyRecord pre_key);
- public int contains_key(NativeStoreContext context, uint32 pre_key_id);
- public int remove_key(NativeStoreContext context, uint32 pre_key_id);
- }
-
- [CCode (lower_case_cprefix = "signal_protocol_signed_pre_key_")]
- namespace SignedPreKey {
- public int load_key(NativeStoreContext context, out SignedPreKeyRecord pre_key, uint32 pre_key_id);
- public int store_key(NativeStoreContext context, SignedPreKeyRecord pre_key);
- public int contains_key(NativeStoreContext context, uint32 pre_key_id);
- public int remove_key(NativeStoreContext context, uint32 pre_key_id);
- }
-
- /**
- * Interface to the session store.
- * These functions will use the callbacks in the provided
- * signal_protocol_store_context instance and operate in terms of higher level
- * library data structures.
- */
- [CCode (lower_case_cprefix = "signal_protocol_session_")]
- namespace Session {
- public int load_session(NativeStoreContext context, out SessionRecord record, Address address, int32 version = 3);
- public int get_sub_device_sessions(NativeStoreContext context, out IntList sessions, char[] name);
- public int store_session(NativeStoreContext context, Address address, SessionRecord record);
- public int contains_session(NativeStoreContext context, Address address);
- public int delete_session(NativeStoreContext context, Address address);
- public int delete_all_sessions(NativeStoreContext context, char[] name);
- }
-
- [CCode (lower_case_cprefix = "signal_protocol_identity_")]
- namespace Identity {
- public int get_key_pair(NativeStoreContext store_context, out IdentityKeyPair key_pair);
- public int get_local_registration_id(NativeStoreContext store_context, out uint32 registration_id);
- public int save_identity(NativeStoreContext store_context, Address address, ECPublicKey identity_key);
- public int is_trusted_identity(NativeStoreContext store_context, Address address, ECPublicKey identity_key);
- }
-
- [CCode (cheader_filename = "omemo/key_helper.h", lower_case_cprefix = "signal_protocol_key_helper_")]
- namespace KeyHelper {
- [Compact]
- [CCode (cname = "signal_protocol_key_helper_pre_key_list_node", cprefix = "signal_protocol_key_helper_key_list_", free_function="signal_protocol_key_helper_key_list_free")]
- public class PreKeyListNode {
- public PreKeyRecord element();
- public PreKeyListNode next();
- }
-
- public int generate_identity_key_pair(out IdentityKeyPair key_pair, NativeContext global_context);
- public int generate_registration_id(out int32 registration_id, int extended_range, NativeContext global_context);
- public int get_random_sequence(out int value, int max, NativeContext global_context);
- public int generate_pre_keys(out PreKeyListNode head, uint start, uint count, NativeContext global_context);
- public int generate_last_resort_pre_key(out PreKeyRecord pre_key, NativeContext global_context);
- public int generate_signed_pre_key(out SignedPreKeyRecord signed_pre_key, IdentityKeyPair identity_key_pair, uint32 signed_pre_key_id, uint64 timestamp, NativeContext global_context);
- public int upgrade_signed_pre_key(ref SignedPreKeyRecord signed_pre_key, IdentityKeyPair identity_key_pair, NativeContext global_context);
- public int generate_sender_signing_key(out ECKeyPair key_pair, NativeContext global_context);
- public int generate_sender_key(out Buffer key_buffer, NativeContext global_context);
- public int generate_sender_key_id(out int32 key_id, NativeContext global_context);
- }
- }
-
- [CCode (cheader_filename = "omemo/curve.h")]
- namespace Curve {
- [CCode (cname = "curve_calculate_agreement")]
- public int calculate_agreement([CCode (array_length = false)] out uint8[] shared_key_data, ECPublicKey public_key, ECPrivateKey private_key);
- [CCode (cname = "curve_calculate_signature")]
- public int calculate_signature(NativeContext context, out Buffer signature, ECPrivateKey signing_key, uint8[] message);
- [CCode (cname = "curve_verify_signature")]
- public int verify_signature(ECPublicKey signing_key, uint8[] message, uint8[] signature);
- }
-
- [CCode (cname = "session_builder_create", cheader_filename = "omemo/session_builder.h")]
- public static int session_builder_create(out SessionBuilder builder, NativeStoreContext store, Address remote_address, NativeContext global_context);
- [CCode (cname = "session_cipher_create", cheader_filename = "omemo/session_cipher.h")]
- public static int session_cipher_create(out SessionCipher cipher, NativeStoreContext store, Address remote_address, NativeContext global_context);
- [CCode (cname = "pre_key_signal_message_deserialize", cheader_filename = "omemo/protocol.h")]
- public static int pre_key_message_deserialize(out PreKeyOmemoMessage message, uint8[] data, NativeContext global_context);
- [CCode (cname = "pre_key_signal_message_deserialize_omemo", cheader_filename = "omemo/protocol.h")]
- public static int pre_key_message_deserialize_omemo(out PreKeyOmemoMessage message, uint8[] data, uint32 remote_registration_id, NativeContext global_context);
- [CCode (cname = "pre_key_signal_message_copy", cheader_filename = "omemo/protocol.h")]
- public static int pre_key_message_copy(out PreKeyOmemoMessage message, PreKeyOmemoMessage other_message, NativeContext global_context);
- [CCode (cname = "signal_message_create", cheader_filename = "omemo/protocol.h")]
- public static int message_create(out OmemoMessage message, uint8 message_version, uint8[] mac_key, ECPublicKey sender_ratchet_key, uint32 counter, uint32 previous_counter, uint8[] ciphertext, ECPublicKey sender_identity_key, ECPublicKey receiver_identity_key, NativeContext global_context);
- [CCode (cname = "signal_message_deserialize", cheader_filename = "omemo/protocol.h")]
- public static int message_deserialize(out OmemoMessage message, uint8[] data, NativeContext global_context);
- [CCode (cname = "signal_message_deserialize_omemo", cheader_filename = "omemo/protocol.h")]
- public static int message_deserialize_omemo(out OmemoMessage message, uint8[] data, NativeContext global_context);
- [CCode (cname = "signal_message_copy", cheader_filename = "omemo/protocol.h")]
- public static int message_copy(out OmemoMessage message, OmemoMessage other_message, NativeContext global_context);
- [CCode (cname = "curve_generate_key_pair", cheader_filename = "omemo/curve.h")]
- public static int curve_generate_key_pair(NativeContext context, out ECKeyPair key_pair);
- [CCode (cname = "curve_decode_private_point", cheader_filename = "omemo/curve.h")]
- public static int curve_decode_private_point(out ECPrivateKey public_key, uint8[] key, NativeContext global_context);
- [CCode (cname = "curve_decode_point", cheader_filename = "omemo/curve.h")]
- public static int curve_decode_point(out ECPublicKey public_key, uint8[] key, NativeContext global_context);
- [CCode (cname = "curve_decode_point_ed", cheader_filename = "omemo/curve.h")]
- public static int curve_decode_point_ed(out ECPublicKey public_key, uint8[] key, NativeContext global_context);
- [CCode (cname = "curve_decode_point_mont", cheader_filename = "omemo/curve.h")]
- public static int curve_decode_point_mont(out ECPublicKey public_key, uint8[] key, NativeContext global_context);
- [CCode (cname = "curve_generate_private_key", cheader_filename = "omemo/curve.h")]
- public static int curve_generate_private_key(NativeContext context, out ECPrivateKey private_key);
- [CCode (cname = "ratchet_identity_key_pair_deserialize", cheader_filename = "omemo/ratchet.h")]
- public static int ratchet_identity_key_pair_deserialize(out IdentityKeyPair key_pair, uint8[] data, NativeContext global_context);
- [CCode (cname = "session_signed_pre_key_deserialize", cheader_filename = "omemo/signed_pre_key.h")]
- public static int session_signed_pre_key_deserialize(out SignedPreKeyRecord pre_key, uint8[] data, NativeContext global_context);
-
- [Compact]
- [CCode (cname = "hkdf_context", cprefix = "hkdf_", free_function = "hkdf_destroy", cheader_filename = "omemo/hkdf.h")]
- public class NativeHkdfContext {
- public static int create(out NativeHkdfContext context, int message_version, NativeContext global_context);
- public int compare(NativeHkdfContext other);
- public ssize_t derive_secrets([CCode (array_length = false)] out uint8[] output, uint8[] input_key_material, uint8[] salt, uint8[] info, size_t output_len);
- }
-
- [CCode (cname = "setup_signal_vala_crypto_provider", cheader_filename = "native/helper.h")]
- public static void setup_crypto_provider(NativeContext context);
- [CCode (cname = "signal_vala_randomize", cheader_filename = "native/helper.h")]
- public static int native_random(uint8[] data);
-}
diff --git a/plugins/omemo/vapi/libqrencode.vapi b/plugins/omemo/vapi/libqrencode.vapi
deleted file mode 100644
index 360f74a5..00000000
--- a/plugins/omemo/vapi/libqrencode.vapi
+++ /dev/null
@@ -1,81 +0,0 @@
-[CCode (cheader_filename = "qrencode.h")]
-namespace Qrencode {
-
- [CCode (cname = "QRecLevel", cprefix = "QR_ECLEVEL_")]
- public enum ECLevel {
- L,
- M,
- Q,
- H
- }
-
- [CCode (cname = "QRencodeMode", cprefix = "QR_MODE_")]
- public enum EncodeMode {
- NUL,
- NUM,
- AN,
- [CCode (cname = "QR_MODE_8")]
- EIGHT_BIT,
- KANJI,
- STRUCTURE,
- ECI,
- FNC1FIRST,
- FNC1SECOND
- }
-
- [CCode (cname = "QRcode", free_function = "QRcode_free", has_type_id = false)]
- [Compact]
- public class QRcode {
- private int version;
- private int width;
- [CCode (array_length = false)]
- private uint8[] data;
-
- [CCode (cname = "QRcode_encodeString")]
- public QRcode (string str, int version = 0, ECLevel level = ECLevel.L, EncodeMode hint = EncodeMode.EIGHT_BIT, bool casesensitive = true);
-
- public Gdk.Paintable to_paintable(int module_size) {
- GLib.assert(module_size > 0);
- var dst_width = width*module_size;
- var dst_data = new uint8[dst_width*dst_width*3];
- expand_and_upsample(data,width,width, dst_data,dst_width,dst_width);
- return new Gdk.MemoryTexture(dst_width, dst_width, Gdk.MemoryFormat.R8G8B8,
- new GLib.Bytes.take((owned) dst_data), dst_width*3);
-
- }
-
- /** Does 2D nearest-neighbor upsampling of an array of single-byte
- * samples, while expanding the least significant bit of each sample
- * to three 0-or-255 bytes.
- */
- private void expand_and_upsample(
- uint8[] src, uint src_w, uint src_h,
- uint8[] dst, uint dst_w, uint dst_h) {
- GLib.assert(dst_w % src_w == 0);
- GLib.assert(dst_h % src_h == 0);
- var scale_x = dst_w/src_w,
- scale_y = dst_h/src_h;
- /* Doing the iteration in the order of destination samples for
- * improved cache-friendliness (dst is 48 times larger than src in
- * the typical case of scaling by 4x4).
- * The choice of multiple nested loops over a single one is for
- * avoiding a ton of divisions by non-constants.
- */
- for (uint src_y = 0; src_y < src_h; ++src_y) {
- for (uint repeat_y = 0; repeat_y < scale_y; ++repeat_y) {
- var dst_y = src_y*scale_y + repeat_y;
- for (uint src_x = 0; src_x < src_w; ++src_x) {
- uint8 value = (src[src_y*src_w + src_x] & 1)==1 ? 0:255;
- for (uint repeat_x = 0; repeat_x < scale_x; ++repeat_x){
- var dst_x = src_x*scale_x + repeat_x;
- var dst_idx = dst_y*dst_w + dst_x;
- dst[dst_idx*3+0] = value;
- dst[dst_idx*3+1] = value;
- dst[dst_idx*3+2] = value;
- }
- }
- }
- }
- }
- }
-}