aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorsaturneric <[email protected]>2026-09-13 18:22:49 +0200
committersaturneric <[email protected]>2026-09-13 18:24:32 +0200
commit8e38d1ee9a6841a62ef0bebe4e16cbf1b9712e52 (patch)
treee6e1048022504576d5fdf9e4c86223a2aae341c0 /src
parentstyle(email): clarify email UI messages (diff)
downloadmodules-8e38d1ee9a6841a62ef0bebe4e16cbf1b9712e52.tar.gz
modules-8e38d1ee9a6841a62ef0bebe4e16cbf1b9712e52.zip
style(i18n): normalize Russian translation XML
- add the Russian locale declaration and TS doctype - normalize XML declaration, indentation, and empty tag formatting - add a trailing newline to the translation file
Diffstat (limited to 'src')
-rw-r--r--src/m_gpg_info/ts/ModuleGnuPGInfoGathering.it_iT.ts129
-rw-r--r--src/m_gpg_info/ts/ModuleGnuPGInfoGathering.ru_RU.ts249
-rw-r--r--src/m_key_server_sync/ts/ModuleKeyServerSync.ru_RU.ts646
-rw-r--r--src/m_ver_check/ts/ModuleVersionChecking.ru_RU.ts291
4 files changed, 723 insertions, 592 deletions
diff --git a/src/m_gpg_info/ts/ModuleGnuPGInfoGathering.it_iT.ts b/src/m_gpg_info/ts/ModuleGnuPGInfoGathering.it_iT.ts
deleted file mode 100644
index e2321c5..0000000
--- a/src/m_gpg_info/ts/ModuleGnuPGInfoGathering.it_iT.ts
+++ /dev/null
@@ -1,129 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.1" language="it_IT">
-<context>
- <name>GTrC</name>
- <message>
- <location filename="../GnuPGInfoGatheringModule.cpp" line="103"/>
- <location filename="../GnuPGInfoGatheringModule.cpp" line="173"/>
- <source>GnuPG</source>
- <translation type="unfinished">GnuPG</translation>
- </message>
- <message>
- <location filename="../GnuPGInfoGatheringModule.cpp" line="175"/>
- <source>Information about GnuPG</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>GnuPGInfo</name>
- <message>
- <location filename="../GnuPGInfo.ui" line="14"/>
- <source>GnuPG Info</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../GnuPGInfo.ui" line="71"/>
- <source>Version</source>
- <translation type="unfinished">Versione</translation>
- </message>
- <message>
- <location filename="../GnuPGInfo.ui" line="119"/>
- <source>Components</source>
- <translation type="unfinished">Componenti</translation>
- </message>
- <message>
- <location filename="../GnuPGInfo.ui" line="151"/>
- <source>Directories</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../GnuPGInfo.ui" line="180"/>
- <source>Options</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>GnupgTab</name>
- <message>
- <location filename="../GnupgTab.cpp" line="49"/>
- <source>Name</source>
- <translation type="unfinished">Nome</translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="49"/>
- <location filename="../GnupgTab.cpp" line="96"/>
- <source>Description</source>
- <translation type="unfinished">Descrizione</translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="49"/>
- <source>Version</source>
- <translation type="unfinished">Versione</translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="50"/>
- <source>Checksum</source>
- <translation type="unfinished">Somma di controllo</translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="50"/>
- <source>Binary Path</source>
- <translation type="unfinished">Percorso binario</translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="52"/>
- <source>Components</source>
- <translation type="unfinished">Componenti</translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="53"/>
- <source>Directories</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="54"/>
- <source>Options</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="74"/>
- <source>Directory Type</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="74"/>
- <source>Path</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Configurations</source>
- <translation type="obsolete">Configurazioni</translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="95"/>
- <source>Component</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="95"/>
- <source>Group</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="95"/>
- <source>Key</source>
- <translation type="unfinished">Chiave</translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="96"/>
- <source>Default Value</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="97"/>
- <source>Value</source>
- <translation type="unfinished">Valore</translation>
- </message>
-</context>
-</TS>
diff --git a/src/m_gpg_info/ts/ModuleGnuPGInfoGathering.ru_RU.ts b/src/m_gpg_info/ts/ModuleGnuPGInfoGathering.ru_RU.ts
index 31b1229..1c003ce 100644
--- a/src/m_gpg_info/ts/ModuleGnuPGInfoGathering.ru_RU.ts
+++ b/src/m_gpg_info/ts/ModuleGnuPGInfoGathering.ru_RU.ts
@@ -1,124 +1,125 @@
-<?xml version='1.0' encoding='utf-8'?>
-<TS version="2.1">
- <context>
- <name>GTrC</name>
- <message>
- <location filename="../GnuPGInfoGatheringModule.cpp" line="103" />
- <location filename="../GnuPGInfoGatheringModule.cpp" line="173" />
- <source>GnuPG</source>
- <translation>GnuPG</translation>
- </message>
- <message>
- <location filename="../GnuPGInfoGatheringModule.cpp" line="175" />
- <source>Information about GnuPG</source>
- <translation>Информация о GnuPG</translation>
- </message>
- </context>
- <context>
- <name>GnuPGInfo</name>
- <message>
- <location filename="../GnuPGInfo.ui" line="14" />
- <source>GnuPG Info</source>
- <translation>Сведения о GnuPG</translation>
- </message>
- <message>
- <location filename="../GnuPGInfo.ui" line="71" />
- <source>Version</source>
- <translation>Версия</translation>
- </message>
- <message>
- <location filename="../GnuPGInfo.ui" line="119" />
- <source>Components</source>
- <translation>Компоненты</translation>
- </message>
- <message>
- <location filename="../GnuPGInfo.ui" line="151" />
- <source>Directories</source>
- <translation>Каталоги</translation>
- </message>
- <message>
- <location filename="../GnuPGInfo.ui" line="180" />
- <source>Options</source>
- <translation>Параметры</translation>
- </message>
- </context>
- <context>
- <name>GnupgTab</name>
- <message>
- <location filename="../GnupgTab.cpp" line="49" />
- <source>Name</source>
- <translation>Имя</translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="49" />
- <location filename="../GnupgTab.cpp" line="96" />
- <source>Description</source>
- <translation>Описание</translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="49" />
- <source>Version</source>
- <translation>Версия</translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="50" />
- <source>Checksum</source>
- <translation>Контрольная сумма</translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="50" />
- <source>Binary Path</source>
- <translation>Путь к двоичному файлу</translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="52" />
- <source>Components</source>
- <translation>Компоненты</translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="53" />
- <source>Directories</source>
- <translation>Каталоги</translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="54" />
- <source>Options</source>
- <translation>Параметры</translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="74" />
- <source>Directory Type</source>
- <translation>Тип каталога</translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="74" />
- <source>Path</source>
- <translation>Путь</translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="95" />
- <source>Component</source>
- <translation>Компонент</translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="95" />
- <source>Group</source>
- <translation>Группа</translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="95" />
- <source>Key</source>
- <translation>Ключ</translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="96" />
- <source>Default Value</source>
- <translation>Значение по умолчанию</translation>
- </message>
- <message>
- <location filename="../GnupgTab.cpp" line="97" />
- <source>Value</source>
- <translation>Значение</translation>
- </message>
- </context>
-</TS> \ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="ru_RU">
+<context>
+ <name>GTrC</name>
+ <message>
+ <location filename="../GnuPGInfoGatheringModule.cpp" line="103"/>
+ <location filename="../GnuPGInfoGatheringModule.cpp" line="173"/>
+ <source>GnuPG</source>
+ <translation>GnuPG</translation>
+ </message>
+ <message>
+ <location filename="../GnuPGInfoGatheringModule.cpp" line="175"/>
+ <source>Information about GnuPG</source>
+ <translation>Информация о GnuPG</translation>
+ </message>
+</context>
+<context>
+ <name>GnuPGInfo</name>
+ <message>
+ <location filename="../GnuPGInfo.ui" line="14"/>
+ <source>GnuPG Info</source>
+ <translation>Сведения о GnuPG</translation>
+ </message>
+ <message>
+ <location filename="../GnuPGInfo.ui" line="71"/>
+ <source>Version</source>
+ <translation>Версия</translation>
+ </message>
+ <message>
+ <location filename="../GnuPGInfo.ui" line="119"/>
+ <source>Components</source>
+ <translation>Компоненты</translation>
+ </message>
+ <message>
+ <location filename="../GnuPGInfo.ui" line="151"/>
+ <source>Directories</source>
+ <translation>Каталоги</translation>
+ </message>
+ <message>
+ <location filename="../GnuPGInfo.ui" line="180"/>
+ <source>Options</source>
+ <translation>Параметры</translation>
+ </message>
+</context>
+<context>
+ <name>GnupgTab</name>
+ <message>
+ <location filename="../GnupgTab.cpp" line="49"/>
+ <source>Name</source>
+ <translation>Имя</translation>
+ </message>
+ <message>
+ <location filename="../GnupgTab.cpp" line="49"/>
+ <location filename="../GnupgTab.cpp" line="96"/>
+ <source>Description</source>
+ <translation>Описание</translation>
+ </message>
+ <message>
+ <location filename="../GnupgTab.cpp" line="49"/>
+ <source>Version</source>
+ <translation>Версия</translation>
+ </message>
+ <message>
+ <location filename="../GnupgTab.cpp" line="50"/>
+ <source>Checksum</source>
+ <translation>Контрольная сумма</translation>
+ </message>
+ <message>
+ <location filename="../GnupgTab.cpp" line="50"/>
+ <source>Binary Path</source>
+ <translation>Путь к двоичному файлу</translation>
+ </message>
+ <message>
+ <location filename="../GnupgTab.cpp" line="52"/>
+ <source>Components</source>
+ <translation>Компоненты</translation>
+ </message>
+ <message>
+ <location filename="../GnupgTab.cpp" line="53"/>
+ <source>Directories</source>
+ <translation>Каталоги</translation>
+ </message>
+ <message>
+ <location filename="../GnupgTab.cpp" line="54"/>
+ <source>Options</source>
+ <translation>Параметры</translation>
+ </message>
+ <message>
+ <location filename="../GnupgTab.cpp" line="74"/>
+ <source>Directory Type</source>
+ <translation>Тип каталога</translation>
+ </message>
+ <message>
+ <location filename="../GnupgTab.cpp" line="74"/>
+ <source>Path</source>
+ <translation>Путь</translation>
+ </message>
+ <message>
+ <location filename="../GnupgTab.cpp" line="95"/>
+ <source>Component</source>
+ <translation>Компонент</translation>
+ </message>
+ <message>
+ <location filename="../GnupgTab.cpp" line="95"/>
+ <source>Group</source>
+ <translation>Группа</translation>
+ </message>
+ <message>
+ <location filename="../GnupgTab.cpp" line="95"/>
+ <source>Key</source>
+ <translation>Ключ</translation>
+ </message>
+ <message>
+ <location filename="../GnupgTab.cpp" line="96"/>
+ <source>Default Value</source>
+ <translation>Значение по умолчанию</translation>
+ </message>
+ <message>
+ <location filename="../GnupgTab.cpp" line="97"/>
+ <source>Value</source>
+ <translation>Значение</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/m_key_server_sync/ts/ModuleKeyServerSync.ru_RU.ts b/src/m_key_server_sync/ts/ModuleKeyServerSync.ru_RU.ts
index c70fda3..c6c684a 100644
--- a/src/m_key_server_sync/ts/ModuleKeyServerSync.ru_RU.ts
+++ b/src/m_key_server_sync/ts/ModuleKeyServerSync.ru_RU.ts
@@ -1,215 +1,473 @@
-<?xml version='1.0' encoding='utf-8'?>
-<TS version="2.1">
- <context>
- <name>GTrC</name>
- <message>
- <location filename="../KeyServerSyncModule.cpp" line="88" />
- <source>The following email addresses have status:
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="ru_RU">
+<context>
+ <name>GTrC</name>
+ <message>
+ <location filename="../KeyServerSyncModule.cpp" line="252"/>
+ <source>The following email addresses have status:
</source>
- <translation>Статус следующих адресов электронной почты:</translation>
- </message>
- <message>
- <location filename="../KeyServerSyncModule.cpp" line="98" />
- <source>Could not parse status information.</source>
- <translation>Не удалось обработать информацию о статусе.</translation>
- </message>
- <message>
- <location filename="../KeyServerSyncModule.cpp" line="105" />
- <source>Public Key Upload Successful</source>
- <translation>Открытый ключ успешно загружен</translation>
- </message>
- <message>
- <location filename="../KeyServerSyncModule.cpp" line="106" />
- <source>The public key was successfully uploaded to the key server keys.openpgp.org.
+ <translation>Статус следующих адресов электронной почты:</translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSyncModule.cpp" line="262"/>
+ <source>Could not parse status information.</source>
+ <translation>Не удалось обработать информацию о статусе.</translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSyncModule.cpp" line="230"/>
+ <location filename="../KeyServerSyncModule.cpp" line="273"/>
+ <source>Public Key Upload Successful</source>
+ <translation>Открытый ключ успешно загружен</translation>
+ </message>
+ <message>
+ <source>The public key was successfully uploaded to the key server keys.openpgp.org.
Fingerprint: %1
%2
Please check your email (%3) for further verification from keys.openpgp.org.
Note: For verification, you can find more information here: https://keys.openpgp.org/about</source>
- <translation>Открытый ключ успешно загружен на сервер ключей keys.openpgp.org.
+ <translation type="vanished">Открытый ключ успешно загружен на сервер ключей keys.openpgp.org.
Отпечаток: %1
%2
Пожалуйста, проверьте вашу электронную почту (%3) на наличие дальнейшего подтверждения от keys.openpgp.org.
Примечание: дополнительную информацию о проверке можно найти здесь: https://keys.openpgp.org/about</translation>
- </message>
- <message>
- <location filename="../KeyServerSyncModule.cpp" line="124" />
- <source>Key Upload Failed</source>
- <translation>Ошибка загрузки ключа</translation>
- </message>
- <message>
- <location filename="../KeyServerSyncModule.cpp" line="125" />
- <source>Failed to upload public key to the server.
+ </message>
+ <message>
+ <location filename="../KeyServerSyncModule.cpp" line="189"/>
+ <location filename="../KeyServerSyncModule.cpp" line="217"/>
+ <location filename="../KeyServerSyncModule.cpp" line="289"/>
+ <source>Key Upload Failed</source>
+ <translation>Ошибка загрузки ключа</translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSyncModule.cpp" line="218"/>
+ <location filename="../KeyServerSyncModule.cpp" line="290"/>
+ <source>Failed to upload public key to the server.
Fingerprint: %1
Error: %2</source>
- <translation>Не удалось загрузить открытый ключ на сервер.
+ <translation>Не удалось загрузить открытый ключ на сервер.
Отпечаток: %1
Ошибка: %2</translation>
- </message>
- <message>
- <location filename="../KeyServerSyncModule.cpp" line="157" />
- <source>Key Update Failed</source>
- <translation>Ошибка обновления ключа</translation>
- </message>
- <message>
- <location filename="../KeyServerSyncModule.cpp" line="158" />
- <source>Failed to retrieve public key from the server.
+ </message>
+ <message>
+ <location filename="../KeyServerSyncModule.cpp" line="325"/>
+ <source>Key Update Failed</source>
+ <translation>Ошибка обновления ключа</translation>
+ </message>
+ <message>
+ <source>Failed to retrieve public key from the server.
Key ID: %1
Error: %2</source>
- <translation>Не удалось получить открытый ключ с сервера.
+ <translation type="vanished">Не удалось получить открытый ключ с сервера.
Идентификатор ключа: %1
Ошибка: %2</translation>
- </message>
- <message>
- <location filename="../KeyServerSyncModule.cpp" line="210" />
- <source>Key Server</source>
- <translation>Сервер ключей</translation>
- </message>
- <message>
- <location filename="../KeyServerSyncModule.cpp" line="211" />
- <source>Import public keys from a trusted key server.</source>
- <translation>Импортировать открытые ключи с доверенного сервера ключей.</translation>
- </message>
- <message>
- <location filename="../KeyServerSyncModule.cpp" line="259" />
- <source>Key Server Operations</source>
- <translation>Операции с сервером ключей</translation>
- </message>
- <message>
- <location filename="../KeyServerSyncModule.cpp" line="264" />
- <source>Publish Public Key to Key Server</source>
- <translation>Опубликовать открытый ключ на сервере ключей</translation>
- </message>
- <message>
- <location filename="../KeyServerSyncModule.cpp" line="272" />
- <source>Refresh Public Key From Key Server</source>
- <translation>Обновить открытый ключ с сервера ключей</translation>
- </message>
- </context>
- <context>
- <name>SearchKeyDialog</name>
- <message>
- <location filename="../SearchKeyDialog.ui" line="14" />
- <source>Search Keys</source>
- <translation>Поиск ключей</translation>
- </message>
- <message>
- <location filename="../SearchKeyDialog.ui" line="36" />
- <source>Key Server</source>
- <translation>Сервер ключей</translation>
- </message>
- <message>
- <location filename="../SearchKeyDialog.ui" line="56" />
- <source>Search Type</source>
- <translation>Тип поиска</translation>
- </message>
- <message>
- <location filename="../SearchKeyDialog.ui" line="66" />
- <source>Search Value</source>
- <translation>Искомое значение</translation>
- </message>
- <message>
- <location filename="../SearchKeyDialog.ui" line="85" />
- <source>Search</source>
- <translation>Найти</translation>
- </message>
- <message>
- <location filename="../SearchKeyDialog.ui" line="105" />
- <source>Tips: double click to import the selected key.</source>
- <translation>Совет: дважды щёлкните, чтобы импортировать выбранный ключ.</translation>
- </message>
- <message>
- <location filename="../SearchKeyDialog.cpp" line="66" />
- <source>Key ID</source>
- <translation>Идентификатор ключа</translation>
- </message>
- <message>
- <location filename="../SearchKeyDialog.cpp" line="66" />
- <source>UID</source>
- <translation>UID</translation>
- </message>
- <message>
- <location filename="../SearchKeyDialog.cpp" line="66" />
- <source>Creation Date</source>
- <translation>Дата создания</translation>
- </message>
- <message>
- <location filename="../SearchKeyDialog.cpp" line="67" />
- <source>Expiration Date</source>
- <translation>Дата истечения срока</translation>
- </message>
- <message>
- <location filename="../SearchKeyDialog.cpp" line="67" />
- <source>Algorithm</source>
- <translation>Алгоритм</translation>
- </message>
- <message>
- <location filename="../SearchKeyDialog.cpp" line="67" />
- <source>Key Size</source>
- <translation>Размер ключа</translation>
- </message>
- <message>
- <location filename="../SearchKeyDialog.cpp" line="68" />
- <source>Status</source>
- <translation>Статус</translation>
- </message>
- <message>
- <location filename="../SearchKeyDialog.cpp" line="71" />
- <source>By Key ID</source>
- <translation>По идентификатору ключа</translation>
- </message>
- <message>
- <location filename="../SearchKeyDialog.cpp" line="72" />
- <source>By Email</source>
- <translation>По электронной почте</translation>
- </message>
- <message>
- <location filename="../SearchKeyDialog.cpp" line="73" />
- <source>By Fingerprint</source>
- <translation>По отпечатку</translation>
- </message>
- <message>
- <location filename="../SearchKeyDialog.cpp" line="108" />
- <source>Search value is empty.</source>
- <translation>Значение поиска не введено.</translation>
- </message>
- <message>
- <location filename="../SearchKeyDialog.cpp" line="124" />
- <source>Key server URL is empty.</source>
- <translation>Адрес сервера ключей не указан.</translation>
- </message>
- <message>
- <location filename="../SearchKeyDialog.cpp" line="133" />
- <source>Invalid key server URL format.</source>
- <translation>Неверный формат адреса сервера ключей.</translation>
- </message>
- <message>
- <location filename="../SearchKeyDialog.cpp" line="146" />
- <source>Invalid email format.</source>
- <translation>Неверный формат адреса электронной почты.</translation>
- </message>
- <message>
- <location filename="../SearchKeyDialog.cpp" line="159" />
- <source>Invalid fingerprint format. It should be a hex string of length 16 or 40.</source>
- <translation>Неверный формат отпечатка. Он должен быть шестнадцатеричной строкой длиной 16 или 40 символов.</translation>
- </message>
- <message>
- <location filename="../SearchKeyDialog.cpp" line="173" />
- <source>Invalid Key ID format. It should be a hex string of length 8 or 16.</source>
- <translation>Неверный формат идентификатора ключа. Он должен быть шестнадцатеричной строкой длиной 8 или 16 символов.</translation>
- </message>
- <message>
- <location filename="../SearchKeyDialog.cpp" line="179" />
- <source>Unknown search type.</source>
- <translation>Неизвестный тип поиска.</translation>
- </message>
- <message>
- <location filename="../SearchKeyDialog.cpp" line="289" />
- <source>No GPG context is available.</source>
- <translation>Контекст GPG недоступен.</translation>
- </message>
- </context>
-</TS> \ No newline at end of file
+ </message>
+ <message>
+ <location filename="../KeyServerSyncModule.cpp" line="101"/>
+ <source>The key server did not return a key.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSyncModule.cpp" line="127"/>
+ <source>Publish Without Verification?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSyncModule.cpp" line="129"/>
+ <source>%1 does not support verified publishing (VKS), so the key would be uploaded over HKP instead.
+
+The server will not confirm your email address, and the upload cannot be undone — HKP key servers do not let keys be removed.
+
+Publish to %1 anyway?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSyncModule.cpp" line="190"/>
+ <source>Failed to export the public key before uploading.
+Key: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSyncModule.cpp" line="232"/>
+ <source>The public key was uploaded to the key server %2 over HKP.
+Fingerprint: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSyncModule.cpp" line="274"/>
+ <source>The public key was successfully uploaded to the key server %4.
+Fingerprint: %1
+
+%2
+Please check your email (%3) for further verification from %4.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSyncModule.cpp" line="326"/>
+ <source>Failed to retrieve public key from %3.
+Key ID: %1
+Error: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSyncModule.cpp" line="375"/>
+ <source>Key Server</source>
+ <translation>Сервер ключей</translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSyncModule.cpp" line="376"/>
+ <source>Import public keys from a trusted key server.</source>
+ <translation>Импортировать открытые ключи с доверенного сервера ключей.</translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSyncModule.cpp" line="424"/>
+ <source>Key Server Operations</source>
+ <translation>Операции с сервером ключей</translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSyncModule.cpp" line="429"/>
+ <source>Publish Public Key to Key Server</source>
+ <translation>Опубликовать открытый ключ на сервере ключей</translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSyncModule.cpp" line="436"/>
+ <source>Refresh Public Key From Key Server</source>
+ <translation>Обновить открытый ключ с сервера ключей</translation>
+ </message>
+ <message>
+ <location filename="../KeyServerProbe.cpp" line="247"/>
+ <source>The server could not be reached.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerProbe.cpp" line="249"/>
+ <source>The server responded, but not as a key server: it supports neither the HKP nor the VKS interface.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>KeyServerSettingsPage</name>
+ <message>
+ <location filename="../KeyServerSettingsPage.ui" line="17"/>
+ <location filename="../KeyServerSettingsPage.cpp" line="58"/>
+ <source>Key Server List</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.ui" line="49"/>
+ <location filename="../KeyServerSettingsPage.cpp" line="59"/>
+ <source>Add a Key Server</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.ui" line="60"/>
+ <location filename="../KeyServerSettingsPage.cpp" line="62"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.ui" line="82"/>
+ <location filename="../KeyServerSettingsPage.cpp" line="60"/>
+ <source>Operations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.ui" line="88"/>
+ <location filename="../KeyServerSettingsPage.cpp" line="63"/>
+ <source>Set As Default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.ui" line="95"/>
+ <location filename="../KeyServerSettingsPage.cpp" line="64"/>
+ <source>Test Selected</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.ui" line="102"/>
+ <location filename="../KeyServerSettingsPage.cpp" line="65"/>
+ <source>Delete Selected</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.cpp" line="67"/>
+ <source>https://keys.example.org</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.cpp" line="68"/>
+ <source>A new key server is tested against the HKP and VKS interfaces before it is added. Searching uses HKP. Publishing and refreshing always use the default server: over VKS where it offers it, over HKP otherwise.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.cpp" line="75"/>
+ <source>Default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.cpp" line="75"/>
+ <source>Address</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.cpp" line="75"/>
+ <source>HKP</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.cpp" line="75"/>
+ <source>VKS</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.cpp" line="75"/>
+ <source>Status</source>
+ <translation type="unfinished">Статус</translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.cpp" line="76"/>
+ <source>Last Tested</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.cpp" line="108"/>
+ <source>yes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.cpp" line="109"/>
+ <source>no</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.cpp" line="127"/>
+ <source>Verified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.cpp" line="127"/>
+ <source>Unverified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.cpp" line="136"/>
+ <source>never</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.cpp" line="162"/>
+ <source>Invalid Address</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.cpp" line="163"/>
+ <source>&quot;%1&quot; is not a valid key server address.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.cpp" line="173"/>
+ <source>Already Listed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.cpp" line="174"/>
+ <source>%1 is already in the key server list.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.cpp" line="180"/>
+ <source>Insecure Key Server Address</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.cpp" line="181"/>
+ <source>%1 uses plain HTTP, so anyone on the network can see and change what you look up or publish. Add it anyway?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.cpp" line="229"/>
+ <source>No Verified Publishing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.cpp" line="230"/>
+ <source>%1 does not support the VKS interface, so publishing and refreshing will use HKP instead.
+
+Over HKP the server does not confirm your email address, and an uploaded key cannot be removed again.
+
+Use %1 as the default anyway?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.cpp" line="291"/>
+ <source>Key Server Not Verified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../KeyServerSettingsPage.cpp" line="292"/>
+ <source>%1 did not answer as a key server.
+
+%2
+
+It has been added and marked unverified; use Test Selected to try again.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>SearchKeyDialog</name>
+ <message>
+ <location filename="../SearchKeyDialog.ui" line="14"/>
+ <source>Search Keys</source>
+ <translation>Поиск ключей</translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.ui" line="36"/>
+ <source>Key Server</source>
+ <translation>Сервер ключей</translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.ui" line="56"/>
+ <source>Search Type</source>
+ <translation>Тип поиска</translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.ui" line="66"/>
+ <source>Search Value</source>
+ <translation>Искомое значение</translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.ui" line="85"/>
+ <source>Search</source>
+ <translation>Найти</translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.ui" line="105"/>
+ <source>Tips: double click to import the selected key.</source>
+ <translation>Совет: дважды щёлкните, чтобы импортировать выбранный ключ.</translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.cpp" line="110"/>
+ <source>Key ID</source>
+ <translation>Идентификатор ключа</translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.cpp" line="110"/>
+ <source>UID</source>
+ <translation>UID</translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.cpp" line="110"/>
+ <source>Creation Date</source>
+ <translation>Дата создания</translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.cpp" line="111"/>
+ <source>Expiration Date</source>
+ <translation>Дата истечения срока</translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.cpp" line="111"/>
+ <source>Algorithm</source>
+ <translation>Алгоритм</translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.cpp" line="111"/>
+ <source>Key Size</source>
+ <translation>Размер ключа</translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.cpp" line="112"/>
+ <source>Status</source>
+ <translation>Статус</translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.cpp" line="115"/>
+ <source>By Key ID</source>
+ <translation>По идентификатору ключа</translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.cpp" line="116"/>
+ <source>By Email</source>
+ <translation>По электронной почте</translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.cpp" line="117"/>
+ <source>By Fingerprint</source>
+ <translation>По отпечатку</translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.cpp" line="120"/>
+ <source>Enter a value, then press Enter or Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.cpp" line="163"/>
+ <source>Search value is empty.</source>
+ <translation>Значение поиска не введено.</translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.cpp" line="179"/>
+ <source>Key server URL is empty.</source>
+ <translation>Адрес сервера ключей не указан.</translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.cpp" line="188"/>
+ <source>Invalid key server URL format.</source>
+ <translation>Неверный формат адреса сервера ключей.</translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.cpp" line="201"/>
+ <source>Invalid email format.</source>
+ <translation>Неверный формат адреса электронной почты.</translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.cpp" line="216"/>
+ <source>Invalid fingerprint format. It should be a hex string of length 16, 40 or 64.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid fingerprint format. It should be a hex string of length 16 or 40.</source>
+ <translation type="vanished">Неверный формат отпечатка. Он должен быть шестнадцатеричной строкой длиной 16 или 40 символов.</translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.cpp" line="230"/>
+ <source>Invalid Key ID format. It should be a hex string of length 8 or 16.</source>
+ <translation>Неверный формат идентификатора ключа. Он должен быть шестнадцатеричной строкой длиной 8 или 16 символов.</translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.cpp" line="236"/>
+ <source>Unknown search type.</source>
+ <translation>Неизвестный тип поиска.</translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.cpp" line="273"/>
+ <location filename="../SearchKeyDialog.cpp" line="283"/>
+ <source>No keys found matching your search.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.cpp" line="302"/>
+ <source>(no user ID published)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.cpp" line="306"/>
+ <source>Unknown</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.cpp" line="310"/>
+ <source>Never</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../SearchKeyDialog.cpp" line="374"/>
+ <source>No GPG context is available.</source>
+ <translation>Контекст GPG недоступен.</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/m_ver_check/ts/ModuleVersionChecking.ru_RU.ts b/src/m_ver_check/ts/ModuleVersionChecking.ru_RU.ts
index 4d5df42..2eb6e1b 100644
--- a/src/m_ver_check/ts/ModuleVersionChecking.ru_RU.ts
+++ b/src/m_ver_check/ts/ModuleVersionChecking.ru_RU.ts
@@ -1,145 +1,146 @@
-<?xml version='1.0' encoding='utf-8'?>
-<TS version="2.1">
- <context>
- <name>GTrC</name>
- <message>
- <location filename="../VersionCheckingModule.cpp" line="109" />
- <location filename="../VersionCheckingModule.cpp" line="171" />
- <source>Check for Updates</source>
- <translation>Проверить обновления</translation>
- </message>
- <message>
- <location filename="../VersionCheckingModule.cpp" line="172" />
- <source>Check for updates from the Internet.</source>
- <translation>Проверить обновления в интернете.</translation>
- </message>
- <message>
- <location filename="../VersionCheckingModule.cpp" line="292" />
- <source>Checking for version updates when the application starts.</source>
- <translation>Проверка обновлений версии при запуске приложения.</translation>
- </message>
- <message>
- <location filename="../VersionCheckingModule.cpp" line="304" />
- <source>GitHub</source>
- <translation>GitHub</translation>
- </message>
- <message>
- <location filename="../VersionCheckingModule.cpp" line="307" />
- <source>BKTUS.com</source>
- <translation>BKTUS.com</translation>
- </message>
- <message>
- <location filename="../VersionCheckingModule.cpp" line="312" />
- <source>Update Checking API:</source>
- <translation>API проверки обновлений:</translation>
- </message>
- </context>
- <context>
- <name>UpdateTab</name>
- <message>
- <location filename="../UpdateTab.cpp" line="44" />
- <source>Current Version Information</source>
- <translation>Информация о текущей версии</translation>
- </message>
- <message>
- <location filename="../UpdateTab.cpp" line="47" />
- <source>Current Version</source>
- <translation>Текущая версия</translation>
- </message>
- <message>
- <location filename="../UpdateTab.cpp" line="48" />
- <source>: </source>
- <translation>:</translation>
- </message>
- <message>
- <location filename="../UpdateTab.cpp" line="56" />
- <source>Upgrade Information</source>
- <translation>Информация об обновлении</translation>
- </message>
- <message>
- <location filename="../UpdateTab.cpp" line="70" />
- <source>Check for Updates</source>
- <translation>Проверить обновления</translation>
- </message>
- <message>
- <location filename="../UpdateTab.cpp" line="74" />
- <source>Release Notes</source>
- <translation>Список изменений</translation>
- </message>
- <message>
- <location filename="../UpdateTab.cpp" line="116" />
- <source>Unable to retrieve the latest version information. This may be due to a network issue or the server being unavailable.</source>
- <translation>Не удалось получить информацию о последней версии. Возможно, это связано с проблемами сети или недоступностью сервера.</translation>
- </message>
- <message>
- <location filename="../UpdateTab.cpp" line="119" />
- <source>Please check your internet connection or try again later.</source>
- <translation>Проверьте подключение к интернету или повторите попытку позже.</translation>
- </message>
- <message>
- <location filename="../UpdateTab.cpp" line="120" />
- <source>Alternatively, you can visit the</source>
- <translation>Также вы можете перейти на</translation>
- </message>
- <message>
- <location filename="../UpdateTab.cpp" line="123" />
- <source>official download page</source>
- <translation>официальную страницу загрузки</translation>
- </message>
- <message>
- <location filename="../UpdateTab.cpp" line="124" />
- <source>to check for the latest version.</source>
- <translation>для проверки последней версии.</translation>
- </message>
- <message>
- <location filename="../UpdateTab.cpp" line="154" />
- <source>Latest Version From %1</source>
- <translation>Последняя версия с %1</translation>
- </message>
- <message>
- <location filename="../UpdateTab.cpp" line="160" />
- <source>Your current version is outdated.</source>
- <translation>Ваша текущая версия устарела.</translation>
- </message>
- <message>
- <location filename="../UpdateTab.cpp" line="161" />
- <location filename="../UpdateTab.cpp" line="175" />
- <location filename="../UpdateTab.cpp" line="186" />
- <source>Click</source>
- <translation>Нажмите</translation>
- </message>
- <message>
- <location filename="../UpdateTab.cpp" line="164" />
- <location filename="../UpdateTab.cpp" line="177" />
- <location filename="../UpdateTab.cpp" line="189" />
- <source>here</source>
- <translation>здесь</translation>
- </message>
- <message>
- <location filename="../UpdateTab.cpp" line="164" />
- <location filename="../UpdateTab.cpp" line="177" />
- <source>to download the latest version.</source>
- <translation>чтобы скачать последнюю версию.</translation>
- </message>
- <message>
- <location filename="../UpdateTab.cpp" line="172" />
- <source>This version is either withdrawn due to critical issues or is an unreleased build. Please stop using it and download the latest version.</source>
- <translation>Эта версия была отозвана из-за критических ошибок или является невыпущенной сборкой. Пожалуйста, прекратите её использование и скачайте последнюю версию.</translation>
- </message>
- <message>
- <location filename="../UpdateTab.cpp" line="184" />
- <source>The commit hash for this build was not found in the official repository. This may indicate a modified or unofficial version.</source>
- <translation>Хэш коммита для этой сборки не найден в официальном репозитории. Это может указывать на изменённую или неофициальную версию.</translation>
- </message>
- <message>
- <location filename="../UpdateTab.cpp" line="190" />
- <source>to verify your installation or download the official build.</source>
- <translation>чтобы проверить установку или скачать официальную сборку.</translation>
- </message>
- <message>
- <location filename="../UpdateTab.cpp" line="196" />
- <source>You are using the latest version. No action is required.</source>
- <translation>Вы используете последнюю версию. Никаких действий не требуется.</translation>
- </message>
- </context>
-</TS> \ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="ru_RU">
+<context>
+ <name>GTrC</name>
+ <message>
+ <location filename="../VersionCheckingModule.cpp" line="109"/>
+ <location filename="../VersionCheckingModule.cpp" line="171"/>
+ <source>Check for Updates</source>
+ <translation>Проверить обновления</translation>
+ </message>
+ <message>
+ <location filename="../VersionCheckingModule.cpp" line="172"/>
+ <source>Check for updates from the Internet.</source>
+ <translation>Проверить обновления в интернете.</translation>
+ </message>
+ <message>
+ <location filename="../VersionCheckingModule.cpp" line="292"/>
+ <source>Checking for version updates when the application starts.</source>
+ <translation>Проверка обновлений версии при запуске приложения.</translation>
+ </message>
+ <message>
+ <location filename="../VersionCheckingModule.cpp" line="304"/>
+ <source>GitHub</source>
+ <translation>GitHub</translation>
+ </message>
+ <message>
+ <location filename="../VersionCheckingModule.cpp" line="307"/>
+ <source>BKTUS.com</source>
+ <translation>BKTUS.com</translation>
+ </message>
+ <message>
+ <location filename="../VersionCheckingModule.cpp" line="312"/>
+ <source>Update Checking API:</source>
+ <translation>API проверки обновлений:</translation>
+ </message>
+</context>
+<context>
+ <name>UpdateTab</name>
+ <message>
+ <location filename="../UpdateTab.cpp" line="44"/>
+ <source>Current Version Information</source>
+ <translation>Информация о текущей версии</translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="47"/>
+ <source>Current Version</source>
+ <translation>Текущая версия</translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="48"/>
+ <source>: </source>
+ <translation>:</translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="56"/>
+ <source>Upgrade Information</source>
+ <translation>Информация об обновлении</translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="70"/>
+ <source>Check for Updates</source>
+ <translation>Проверить обновления</translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="74"/>
+ <source>Release Notes</source>
+ <translation>Список изменений</translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="116"/>
+ <source>Unable to retrieve the latest version information. This may be due to a network issue or the server being unavailable.</source>
+ <translation>Не удалось получить информацию о последней версии. Возможно, это связано с проблемами сети или недоступностью сервера.</translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="119"/>
+ <source>Please check your internet connection or try again later.</source>
+ <translation>Проверьте подключение к интернету или повторите попытку позже.</translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="120"/>
+ <source>Alternatively, you can visit the</source>
+ <translation>Также вы можете перейти на</translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="123"/>
+ <source>official download page</source>
+ <translation>официальную страницу загрузки</translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="124"/>
+ <source>to check for the latest version.</source>
+ <translation>для проверки последней версии.</translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="154"/>
+ <source>Latest Version From %1</source>
+ <translation>Последняя версия с %1</translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="160"/>
+ <source>Your current version is outdated.</source>
+ <translation>Ваша текущая версия устарела.</translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="161"/>
+ <location filename="../UpdateTab.cpp" line="175"/>
+ <location filename="../UpdateTab.cpp" line="186"/>
+ <source>Click</source>
+ <translation>Нажмите</translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="164"/>
+ <location filename="../UpdateTab.cpp" line="177"/>
+ <location filename="../UpdateTab.cpp" line="189"/>
+ <source>here</source>
+ <translation>здесь</translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="164"/>
+ <location filename="../UpdateTab.cpp" line="177"/>
+ <source>to download the latest version.</source>
+ <translation>чтобы скачать последнюю версию.</translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="172"/>
+ <source>This version is either withdrawn due to critical issues or is an unreleased build. Please stop using it and download the latest version.</source>
+ <translation>Эта версия была отозвана из-за критических ошибок или является невыпущенной сборкой. Пожалуйста, прекратите её использование и скачайте последнюю версию.</translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="184"/>
+ <source>The commit hash for this build was not found in the official repository. This may indicate a modified or unofficial version.</source>
+ <translation>Хэш коммита для этой сборки не найден в официальном репозитории. Это может указывать на изменённую или неофициальную версию.</translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="190"/>
+ <source>to verify your installation or download the official build.</source>
+ <translation>чтобы проверить установку или скачать официальную сборку.</translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="196"/>
+ <source>You are using the latest version. No action is required.</source>
+ <translation>Вы используете последнюю версию. Никаких действий не требуется.</translation>
+ </message>
+</context>
+</TS>