Compare commits

..

21 Commits

Author SHA1 Message Date
Evgeny Poberezkin 72b903812a buffering 2024-12-06 16:57:23 +00:00
Evgeny Poberezkin 9933ce3186 log more 2024-12-06 16:53:51 +00:00
Evgeny Poberezkin 8e1681505a simplexmq 2024-12-06 16:08:59 +00:00
Evgeny Poberezkin afd526afe2 remove StrictData 2024-12-06 12:55:59 +00:00
Evgeny Poberezkin 94775fd541 more logs 2 2024-12-06 12:28:38 +00:00
Evgeny Poberezkin 3b4b444f6f more logs 2024-12-06 09:01:56 +00:00
Evgeny Poberezkin 94a10dc971 log when sending commands 2024-12-06 00:36:00 +00:00
Evgeny Poberezkin 744c796981 Merge branch 'master' into av/core-loglevel 2024-12-05 23:47:52 +00:00
Evgeny Poberezkin 5ef14ca95e 6.2-beta.6: ios 253, android 258, desktop 81 2024-12-05 23:30:05 +00:00
Evgeny Poberezkin 886dc56de8 ui: update business chat info type 2024-12-05 23:01:37 +00:00
Evgeny Poberezkin bd2ca74987 ui: update "server operators privacy" in onboarding 2024-12-05 22:22:03 +00:00
Evgeny 586671c307 website: translations (#5331)
* Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (258 of 258 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/zh_Hans/

* Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (258 of 258 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/zh_Hans/

* Translated using Weblate (Italian)

Currently translated at 100.0% (258 of 258 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/it/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (258 of 258 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/hu/

---------

Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: Random <random-r@users.noreply.hosted.weblate.org>
Co-authored-by: Ghost of Sparta <makesocialfoss32@keemail.me>
2024-12-05 21:46:35 +00:00
Evgeny ff504702de ui: translations (#5330)
* Translated using Weblate (German)

Currently translated at 97.5% (2155 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/

* Translated using Weblate (French)

Currently translated at 93.2% (2060 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fr/

* Translated using Weblate (Italian)

Currently translated at 97.5% (2155 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Spanish)

Currently translated at 97.6% (2157 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/

* Translated using Weblate (Dutch)

Currently translated at 97.5% (2154 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 92.3% (2041 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pt_BR/

* Translated using Weblate (Arabic)

Currently translated at 97.4% (2153 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/

* Translated using Weblate (Ukrainian)

Currently translated at 97.5% (2155 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/uk/

* Translated using Weblate (Polish)

Currently translated at 93.2% (2059 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pl/

* Translated using Weblate (Russian)

Currently translated at 93.2% (2061 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ru/

* Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 97.4% (2154 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/

* Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (1932 of 1932 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/nl/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1932 of 1932 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Italian)

Currently translated at 98.9% (2187 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Italian)

Currently translated at 99.5% (2201 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Russian)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ru/

* Translated using Weblate (Russian)

Currently translated at 96.6% (1868 of 1932 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/

* Translated using Weblate (Italian)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Italian)

Currently translated at 100.0% (1932 of 1932 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/it/

* Translated using Weblate (Indonesian)

Currently translated at 60.0% (1326 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/id/

* Translated using Weblate (Russian)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ru/

* Translated using Weblate (Russian)

Currently translated at 100.0% (1932 of 1932 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/

* Translated using Weblate (German)

Currently translated at 97.5% (2155 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/

* Translated using Weblate (French)

Currently translated at 93.2% (2060 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fr/

* Translated using Weblate (Italian)

Currently translated at 97.5% (2155 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Spanish)

Currently translated at 97.6% (2157 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/

* Translated using Weblate (Dutch)

Currently translated at 97.5% (2154 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 92.3% (2041 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pt_BR/

* Translated using Weblate (Arabic)

Currently translated at 97.4% (2153 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/

* Translated using Weblate (Ukrainian)

Currently translated at 97.5% (2155 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/uk/

* Translated using Weblate (Polish)

Currently translated at 93.2% (2059 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pl/

* Translated using Weblate (Russian)

Currently translated at 93.2% (2061 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ru/

* Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 97.4% (2154 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/

* Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (1932 of 1932 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/nl/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1932 of 1932 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Italian)

Currently translated at 98.9% (2187 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Italian)

Currently translated at 99.5% (2201 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Russian)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ru/

* Translated using Weblate (Russian)

Currently translated at 96.6% (1868 of 1932 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/

* Translated using Weblate (Italian)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Italian)

Currently translated at 100.0% (1932 of 1932 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/it/

* Translated using Weblate (Indonesian)

Currently translated at 60.0% (1326 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/id/

* Translated using Weblate (Russian)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ru/

* Translated using Weblate (Russian)

Currently translated at 100.0% (1932 of 1932 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/

* process localizations

* update translations

---------

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: M1K4 <oomikaoo@gmail.com>
Co-authored-by: summoner001 <summoner@vivaldi.net>
Co-authored-by: Random <random-r@users.noreply.hosted.weblate.org>
Co-authored-by: Rafi <rafimuhmad90@gmail.com>
2024-12-05 21:42:53 +00:00
spaced4ndy 69e23ad58f android, desktop: don't show unwanted notifications (#5328)
* android, desktop: don't show unwanted notifications

* format

* fix

* code style

---------

Co-authored-by: Avently <7953703+avently@users.noreply.github.com>
2024-12-05 18:45:19 +00:00
Evgeny Poberezkin e9bf229a9d core: 6.2.0.6 2024-12-05 18:36:07 +00:00
Evgeny 60e0e454e8 core: only update business chat preferences (#5325)
* core: only update business chat preferences

* rework

* migration

* test, bump protocol version

* fix tests
2024-12-05 18:32:00 +00:00
Stanislav Dmitrenko de76e271a8 android, desktop: displaying deleted message with file in chat list (#5329) 2024-12-05 18:10:36 +00:00
Diogo 5f66c29dbd ios: fix open from notification and connected directly chat item chat loading (#5326)
* ios: fix opening from notification and connected directly chat item chat loading

* better fix
2024-12-05 16:15:24 +00:00
spaced4ndy 97cd2682d7 core: take address lock before reading contact request data (to prevent possible race condition if user quickly accepts request several times in a row); android, desktop: show error context in agent CMD errors (#5324) 2024-12-05 20:10:44 +04:00
Stanislav Dmitrenko 4f8a70a6c1 android, desktop: allow to scan QR multiple times after fail (#5323) 2024-12-05 15:52:45 +00:00
Avently 784e135873 core: log level for mobile 2024-12-05 15:14:01 +07:00
104 changed files with 3491 additions and 1905 deletions
+5 -1
View File
@@ -26,6 +26,7 @@ enum NtfCallAction {
class NtfManager: NSObject, UNUserNotificationCenterDelegate, ObservableObject {
static let shared = NtfManager()
public var navigatingToChat = false
private var granted = false
private var prevNtfTime: Dictionary<ChatId, Date> = [:]
@@ -74,7 +75,10 @@ class NtfManager: NSObject, UNUserNotificationCenterDelegate, ObservableObject {
}
} else {
if let chatId = content.targetContentIdentifier {
ItemsModel.shared.loadOpenChat(chatId)
self.navigatingToChat = true
ItemsModel.shared.loadOpenChat(chatId) {
self.navigatingToChat = false
}
}
}
}
+2 -1
View File
@@ -143,7 +143,8 @@ struct SimpleXApp: App {
let chats = try await apiGetChatsAsync()
await MainActor.run { chatModel.updateChats(chats) }
if let id = chatModel.chatId,
let chat = chatModel.getChat(id) {
let chat = chatModel.getChat(id),
!NtfManager.shared.navigatingToChat {
Task { await loadChat(chat: chat, clearItems: false) }
}
if let ncr = chatModel.ntfContactRequest {
@@ -23,7 +23,7 @@ struct CIMemberCreatedContactView: View {
.onTapGesture {
dismissAllSheets(animated: true)
DispatchQueue.main.async {
m.chatId = "@\(contactId)"
ItemsModel.shared.loadOpenChat("@\(contactId)")
}
}
} else {
@@ -323,7 +323,7 @@ struct ChooseServerOperators: View {
VStack(alignment: .leading, spacing: 20) {
if !operatorsWithConditionsAccepted.isEmpty {
Text("Conditions are already accepted for following operator(s): **\(operatorsWithConditionsAccepted.map { $0.legalName_ }.joined(separator: ", "))**.")
Text("Same conditions will apply to operator(s): **\(acceptForOperators.map { $0.legalName_ }.joined(separator: ", "))**.")
Text("The same conditions will apply to operator(s): **\(acceptForOperators.map { $0.legalName_ }.joined(separator: ", "))**.")
} else {
Text("Conditions will be accepted for operator(s): **\(acceptForOperators.map { $0.legalName_ }.joined(separator: ", "))**.")
}
@@ -19,7 +19,7 @@ struct SetNotificationsMode: View {
GeometryReader { g in
ScrollView {
VStack(alignment: .center, spacing: 20) {
Text("Push Notifications")
Text("Push notifications")
.font(.largeTitle)
.bold()
.padding(.top, 50)
@@ -119,6 +119,7 @@ struct NtfModeSelector: View {
Text(ntfModeShortDescription(mode))
.lineLimit(2)
.font(.callout)
.fixedSize(horizontal: false, vertical: true)
}
}
.padding(.vertical, 12)
@@ -450,7 +450,7 @@ struct SingleOperatorUsageConditionsView: View {
Group {
viewHeader()
Text("Conditions are already accepted for following operator(s): **\(operatorsWithConditionsAccepted.map { $0.legalName_ }.joined(separator: ", "))**.")
Text("Same conditions will apply to operator **\(userServers[operatorIndex].operator_.legalName_)**.")
Text("The same conditions will apply to operator **\(userServers[operatorIndex].operator_.legalName_)**.")
conditionsAppliedToOtherOperatorsText()
usageConditionsNavLinkButton()
@@ -197,7 +197,7 @@ struct UserProfilesView: View {
action()
} else {
authenticate(
reason: NSLocalizedString("Change user profiles", comment: "authentication reason")
reason: NSLocalizedString("Change chat profiles", comment: "authentication reason")
) { laResult in
switch laResult {
case .success, .unavailable:
@@ -1288,6 +1288,10 @@
<target>Промени</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Промяна на паролата на базата данни?</target>
@@ -1334,10 +1338,6 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<note>No comment provided by engineer.</note>
@@ -5344,10 +5344,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>Proxy requires password</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Push известия</target>
@@ -5752,14 +5748,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>По-безопасни групи</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Запази</target>
@@ -6850,6 +6838,14 @@ It can happen because of some bug or when the connection is compromised.</source
<target>Профилът се споделя само с вашите контакти.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<note>No comment provided by engineer.</note>
@@ -1247,6 +1247,10 @@
<target>Změnit</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Změnit přístupovou frázi databáze?</target>
@@ -1293,10 +1297,6 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<note>No comment provided by engineer.</note>
@@ -5166,10 +5166,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>Proxy requires password</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Nabízená oznámení</target>
@@ -5562,14 +5558,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>Safer groups</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Uložit</target>
@@ -6638,6 +6626,14 @@ Může se to stát kvůli nějaké chybě, nebo pokud je spojení kompromitován
<target>Profil je sdílen pouze s vašimi kontakty.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<note>No comment provided by engineer.</note>
@@ -1341,6 +1341,11 @@
<target>Ändern</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<target>Chat-Profile wechseln</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Datenbank-Passwort ändern?</target>
@@ -1387,11 +1392,6 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<target>Chat-Profile wechseln</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<note>No comment provided by engineer.</note>
@@ -5590,11 +5590,6 @@ Aktivieren Sie es in den *Netzwerk &amp; Server* Einstellungen.</target>
<target>Der Proxy benötigt ein Passwort</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<target>Push-Benachrichtigungen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Push-Benachrichtigungen</target>
@@ -6021,16 +6016,6 @@ Aktivieren Sie es in den *Netzwerk &amp; Server* Einstellungen.</target>
<target>Sicherere Gruppen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<target>Dieselben Nutzungsbedingungen gelten auch für den Betreiber **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<target>Dieselben Nutzungsbedingungen gelten auch für den/die Betreiber: **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Speichern</target>
@@ -7191,6 +7176,16 @@ Dies kann passieren, wenn es einen Fehler gegeben hat oder die Verbindung kompro
<target>Das Profil wird nur mit Ihren Kontakten geteilt.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<target>Dieselben Nutzungsbedingungen gelten auch für den Betreiber **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<target>Dieselben Nutzungsbedingungen gelten auch für den/die Betreiber: **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<target>Der zweite voreingestellte Netzwerk-Betreiber in der App!</target>
@@ -1346,6 +1346,11 @@
<target>Change</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<target>Change chat profiles</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Change database passphrase?</target>
@@ -1392,11 +1397,6 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<target>Change user profiles</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<target>Chat</target>
@@ -5611,11 +5611,6 @@ Enable in *Network &amp; servers* settings.</target>
<target>Proxy requires password</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<target>Push Notifications</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Push notifications</target>
@@ -6042,16 +6037,6 @@ Enable in *Network &amp; servers* settings.</target>
<target>Safer groups</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<target>Same conditions will apply to operator **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<target>Same conditions will apply to operator(s): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Save</target>
@@ -7213,6 +7198,16 @@ It can happen because of some bug or when the connection is compromised.</target
<target>The profile is only shared with your contacts.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<target>The same conditions will apply to operator **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<target>The same conditions will apply to operator(s): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<target>The second preset operator in the app!</target>
@@ -1341,6 +1341,11 @@
<target>Cambiar</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<target>Cambiar perfil de usuario</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>¿Cambiar contraseña de la base de datos?</target>
@@ -1387,11 +1392,6 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<target>Cambiar perfil de usuario</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<note>No comment provided by engineer.</note>
@@ -5590,14 +5590,9 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
<target>El proxy requiere contraseña</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<target>Notificaciones push</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Notificaciones automáticas</target>
<target>Notificaciones push</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push server" xml:space="preserve">
@@ -6021,16 +6016,6 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
<target>Grupos más seguros</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<target>Las mismas condiciones se aplicarán al operador **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<target>Las mismas condiciones se aplicarán a el/los operador(es) **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Guardar</target>
@@ -7191,6 +7176,16 @@ Puede ocurrir por algún bug o cuando la conexión está comprometida.</target>
<target>El perfil sólo se comparte con tus contactos.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<target>Las mismas condiciones se aplicarán al operador **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<target>Las mismas condiciones se aplicarán a el/los operador(es) **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<target>El segundo operador predefinido!</target>
@@ -1240,6 +1240,10 @@
<target>Muuta</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Muutetaanko tietokannan tunnuslause?</target>
@@ -1286,10 +1290,6 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<note>No comment provided by engineer.</note>
@@ -5154,10 +5154,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>Proxy requires password</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Push-ilmoitukset</target>
@@ -5550,14 +5546,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>Safer groups</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Tallenna</target>
@@ -6624,6 +6612,14 @@ Tämä voi johtua jostain virheestä tai siitä, että yhteys on vaarantunut.</t
<target>Profiili jaetaan vain kontaktiesi kanssa.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<note>No comment provided by engineer.</note>
@@ -1329,6 +1329,10 @@
<target>Changer</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Changer la phrase secrète de la base de données ?</target>
@@ -1375,10 +1379,6 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<note>No comment provided by engineer.</note>
@@ -5530,10 +5530,6 @@ Activez-le dans les paramètres *Réseau et serveurs*.</target>
<target>Le proxy est protégé par un mot de passe</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Notifications push</target>
@@ -5958,14 +5954,6 @@ Activez-le dans les paramètres *Réseau et serveurs*.</target>
<target>Groupes plus sûrs</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Enregistrer</target>
@@ -7113,6 +7101,14 @@ Cela peut se produire en raison d'un bug ou lorsque la connexion est compromise.
<target>Le profil n'est partagé qu'avec vos contacts.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<note>No comment provided by engineer.</note>
@@ -637,6 +637,7 @@
</trans-unit>
<trans-unit id="Add friends" xml:space="preserve">
<source>Add friends</source>
<target>Barátok hozzáadása</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add profile" xml:space="preserve">
@@ -656,6 +657,7 @@
</trans-unit>
<trans-unit id="Add team members" xml:space="preserve">
<source>Add team members</source>
<target>Csapattagok hozzáadása</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add to another device" xml:space="preserve">
@@ -670,6 +672,7 @@
</trans-unit>
<trans-unit id="Add your team members to the conversations." xml:space="preserve">
<source>Add your team members to the conversations.</source>
<target>Adja hozzá csapattagjait a beszélgetésekhez.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Added media &amp; file servers" xml:space="preserve">
@@ -1209,7 +1212,7 @@
</trans-unit>
<trans-unit id="Blur media" xml:space="preserve">
<source>Blur media</source>
<target>Média elhomályosítása</target>
<target>Médiatartalom elhomályosítása</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Both you and your contact can add message reactions." xml:space="preserve">
@@ -1244,10 +1247,12 @@
</trans-unit>
<trans-unit id="Business address" xml:space="preserve">
<source>Business address</source>
<target>Üzleti cím</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Business chats" xml:space="preserve">
<source>Business chats</source>
<target>Üzleti csevegések</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." xml:space="preserve">
@@ -1341,6 +1346,11 @@
<target>Változtatás</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<target>Felhasználói profilok megváltoztatása</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Adatbázis-jelmondat megváltoztatása?</target>
@@ -1387,21 +1397,19 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<target>Felhasználói profilok megváltoztatása</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<target>Csevegés</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat already exists" xml:space="preserve">
<source>Chat already exists</source>
<target>A csevegés már létezik</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat already exists!" xml:space="preserve">
<source>Chat already exists!</source>
<target>A csevegés már létezik!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat colors" xml:space="preserve">
@@ -1481,10 +1489,12 @@
</trans-unit>
<trans-unit id="Chat will be deleted for all members - this cannot be undone!" xml:space="preserve">
<source>Chat will be deleted for all members - this cannot be undone!</source>
<target>A csevegés minden tag számára törlésre kerül - ezt a műveletet nem lehet visszavonni!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat will be deleted for you - this cannot be undone!" xml:space="preserve">
<source>Chat will be deleted for you - this cannot be undone!</source>
<target>A csevegés törlésre kerül az Ön számára - ezt a műveletet nem lehet visszavonni!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chats" xml:space="preserve">
@@ -2243,6 +2253,7 @@ Ez az Ön egyszer használható meghívó-hivatkozása!</target>
</trans-unit>
<trans-unit id="Delete chat" xml:space="preserve">
<source>Delete chat</source>
<target>Csevegés törlése</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete chat profile" xml:space="preserve">
@@ -2257,6 +2268,7 @@ Ez az Ön egyszer használható meghívó-hivatkozása!</target>
</trans-unit>
<trans-unit id="Delete chat?" xml:space="preserve">
<source>Delete chat?</source>
<target>Csevegés törlése?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete connection" xml:space="preserve">
@@ -2526,6 +2538,7 @@ Ez az Ön egyszer használható meghívó-hivatkozása!</target>
</trans-unit>
<trans-unit id="Direct messages between members are prohibited in this chat." xml:space="preserve">
<source>Direct messages between members are prohibited in this chat.</source>
<target>A tagok közötti közvetlen üzenetek le vannak tiltva ebben a csevegésben.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Direct messages between members are prohibited." xml:space="preserve">
@@ -4101,6 +4114,7 @@ További fejlesztések hamarosan!</target>
</trans-unit>
<trans-unit id="Invite to chat" xml:space="preserve">
<source>Invite to chat</source>
<target>Meghívás a csevegésbe</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invite to group" xml:space="preserve">
@@ -4263,10 +4277,12 @@ Ez az Ön hivatkozása a(z) %@ nevű csoporthoz!</target>
</trans-unit>
<trans-unit id="Leave chat" xml:space="preserve">
<source>Leave chat</source>
<target>Csevegés elhagyása</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Leave chat?" xml:space="preserve">
<source>Leave chat?</source>
<target>Csevegés elhagyása?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
@@ -4401,6 +4417,7 @@ Ez az Ön hivatkozása a(z) %@ nevű csoporthoz!</target>
</trans-unit>
<trans-unit id="Member role will be changed to &quot;%@&quot;. All chat members will be notified." xml:space="preserve">
<source>Member role will be changed to "%@". All chat members will be notified.</source>
<target>A tag szerepeköre meg fog változni a következőre: "%@". A csevegés tagjai értesítést fognak kapni.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Member role will be changed to &quot;%@&quot;. All group members will be notified." xml:space="preserve">
@@ -4415,6 +4432,7 @@ Ez az Ön hivatkozása a(z) %@ nevű csoporthoz!</target>
</trans-unit>
<trans-unit id="Member will be removed from chat - this cannot be undone!" xml:space="preserve">
<source>Member will be removed from chat - this cannot be undone!</source>
<target>A tag el lesz távolítva a csevegésből - ezt a műveletet nem lehet visszavonni!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Member will be removed from group - this cannot be undone!" xml:space="preserve">
@@ -5032,6 +5050,7 @@ VPN engedélyezése szükséges.</target>
</trans-unit>
<trans-unit id="Only chat owners can change preferences." xml:space="preserve">
<source>Only chat owners can change preferences.</source>
<target>Csak a csevegés tulajdonosai módosíthatják a beállításokat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only client devices store user profiles, contacts, groups, and messages." xml:space="preserve">
@@ -5166,6 +5185,7 @@ VPN engedélyezése szükséges.</target>
</trans-unit>
<trans-unit id="Or import archive file" xml:space="preserve">
<source>Or import archive file</source>
<target>Vagy archívumfájl importálása</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or paste archive link" xml:space="preserve">
@@ -5431,6 +5451,7 @@ Hiba: %@</target>
</trans-unit>
<trans-unit id="Privacy for your customers." xml:space="preserve">
<source>Privacy for your customers.</source>
<target>Az Ön ügyfeleinek adatvédelme.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Privacy redefined" xml:space="preserve">
@@ -5590,11 +5611,6 @@ Engedélyezze a „Beállítások -&gt; Hálózat és kiszolgálók” menüben.
<target>A proxy jelszót igényel</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<target>Push értesítések</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Push-értesítések</target>
@@ -6021,16 +6037,6 @@ Engedélyezze a „Beállítások -&gt; Hálózat és kiszolgálók” menüben.
<target>Biztonságosabb csoportok</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<target>Ugyanezek a feltételek vonatkoznak a következő üzemeltetőre is: **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<target>Ugyanezek a feltételek lesznek elfogadva a következő üzemeltető(k)re is: **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Mentés</target>
@@ -6119,7 +6125,7 @@ Engedélyezze a „Beállítások -&gt; Hálózat és kiszolgálók” menüben.
</trans-unit>
<trans-unit id="Saved from" xml:space="preserve">
<source>Saved from</source>
<target>Mentve innen:</target>
<target>Elmentve innen:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Saved message" xml:space="preserve">
@@ -7017,6 +7023,7 @@ Engedélyezze a „Beállítások -&gt; Hálózat és kiszolgálók” menüben.
</trans-unit>
<trans-unit id="Tap Create SimpleX address in the menu to create it later." xml:space="preserve">
<source>Tap Create SimpleX address in the menu to create it later.</source>
<target>Koppintson a SimpleX-cím létrehozása menüpontra a későbbi létrehozáshoz.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap button " xml:space="preserve">
@@ -7191,6 +7198,16 @@ Ez valamilyen hiba, vagy sérült kapcsolat esetén fordulhat elő.</target>
<target>A profilja csak az ismerőseivel kerül megosztásra.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<target>Ugyanezek a feltételek vonatkoznak a következő üzemeltetőre is: **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<target>Ugyanezek a feltételek lesznek elfogadva a következő üzemeltető(k)re is: **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<target>A második előre beállított üzemeltető az alkalmazásban!</target>
@@ -8057,6 +8074,7 @@ A kapcsolódáshoz kérje meg az ismerősét, hogy hozzon létre egy másik kapc
</trans-unit>
<trans-unit id="You are already connected with %@." xml:space="preserve">
<source>You are already connected with %@.</source>
<target>Ön már kapcsolódva van vele: %@.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You are already connecting to %@." xml:space="preserve">
@@ -8335,6 +8353,7 @@ Kapcsolatkérés megismétlése?</target>
</trans-unit>
<trans-unit id="You will stop receiving messages from this chat. Chat history will be preserved." xml:space="preserve">
<source>You will stop receiving messages from this chat. Chat history will be preserved.</source>
<target>Ön nem fog több üzenetet kapni ebből a csevegésből, de a csevegés előzményei megmaradnak.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You will stop receiving messages from this group. Chat history will be preserved." xml:space="preserve">
@@ -9211,7 +9230,7 @@ Kapcsolatkérés megismétlése?</target>
</trans-unit>
<trans-unit id="saved from %@" xml:space="preserve">
<source>saved from %@</source>
<target>mentve innen: %@</target>
<target>elmentve innen: %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="search" xml:space="preserve">
@@ -637,6 +637,7 @@
</trans-unit>
<trans-unit id="Add friends" xml:space="preserve">
<source>Add friends</source>
<target>Aggiungi amici</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add profile" xml:space="preserve">
@@ -656,6 +657,7 @@
</trans-unit>
<trans-unit id="Add team members" xml:space="preserve">
<source>Add team members</source>
<target>Aggiungi membri del team</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add to another device" xml:space="preserve">
@@ -670,6 +672,7 @@
</trans-unit>
<trans-unit id="Add your team members to the conversations." xml:space="preserve">
<source>Add your team members to the conversations.</source>
<target>Aggiungi i membri del tuo team alle conversazioni.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Added media &amp; file servers" xml:space="preserve">
@@ -1244,10 +1247,12 @@
</trans-unit>
<trans-unit id="Business address" xml:space="preserve">
<source>Business address</source>
<target>Indirizzo di lavoro</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Business chats" xml:space="preserve">
<source>Business chats</source>
<target>Chat di lavoro</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." xml:space="preserve">
@@ -1341,6 +1346,11 @@
<target>Cambia</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<target>Modifica profili utente</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Cambiare password del database?</target>
@@ -1387,21 +1397,19 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<target>Modifica profili utente</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<target>Chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat already exists" xml:space="preserve">
<source>Chat already exists</source>
<target>La chat esiste già</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat already exists!" xml:space="preserve">
<source>Chat already exists!</source>
<target>La chat esiste già!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat colors" xml:space="preserve">
@@ -1481,10 +1489,12 @@
</trans-unit>
<trans-unit id="Chat will be deleted for all members - this cannot be undone!" xml:space="preserve">
<source>Chat will be deleted for all members - this cannot be undone!</source>
<target>La chat verrà eliminata per tutti i membri, non è reversibile!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat will be deleted for you - this cannot be undone!" xml:space="preserve">
<source>Chat will be deleted for you - this cannot be undone!</source>
<target>La chat verrà eliminata solo per te, non è reversibile!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chats" xml:space="preserve">
@@ -2243,6 +2253,7 @@ Questo è il tuo link una tantum!</target>
</trans-unit>
<trans-unit id="Delete chat" xml:space="preserve">
<source>Delete chat</source>
<target>Elimina chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete chat profile" xml:space="preserve">
@@ -2257,6 +2268,7 @@ Questo è il tuo link una tantum!</target>
</trans-unit>
<trans-unit id="Delete chat?" xml:space="preserve">
<source>Delete chat?</source>
<target>Eliminare la chat?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete connection" xml:space="preserve">
@@ -2526,6 +2538,7 @@ Questo è il tuo link una tantum!</target>
</trans-unit>
<trans-unit id="Direct messages between members are prohibited in this chat." xml:space="preserve">
<source>Direct messages between members are prohibited in this chat.</source>
<target>I messaggi diretti tra i membri sono vietati in questa chat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Direct messages between members are prohibited." xml:space="preserve">
@@ -4101,6 +4114,7 @@ Altri miglioramenti sono in arrivo!</target>
</trans-unit>
<trans-unit id="Invite to chat" xml:space="preserve">
<source>Invite to chat</source>
<target>Invita in chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invite to group" xml:space="preserve">
@@ -4263,10 +4277,12 @@ Questo è il tuo link per il gruppo %@!</target>
</trans-unit>
<trans-unit id="Leave chat" xml:space="preserve">
<source>Leave chat</source>
<target>Esci dalla chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Leave chat?" xml:space="preserve">
<source>Leave chat?</source>
<target>Uscire dalla chat?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
@@ -4401,6 +4417,7 @@ Questo è il tuo link per il gruppo %@!</target>
</trans-unit>
<trans-unit id="Member role will be changed to &quot;%@&quot;. All chat members will be notified." xml:space="preserve">
<source>Member role will be changed to "%@". All chat members will be notified.</source>
<target>Il ruolo del membro verrà cambiato in "%@". Verranno notificati tutti i membri della chat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Member role will be changed to &quot;%@&quot;. All group members will be notified." xml:space="preserve">
@@ -4415,6 +4432,7 @@ Questo è il tuo link per il gruppo %@!</target>
</trans-unit>
<trans-unit id="Member will be removed from chat - this cannot be undone!" xml:space="preserve">
<source>Member will be removed from chat - this cannot be undone!</source>
<target>Il membro verrà rimosso dalla chat, non è reversibile!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Member will be removed from group - this cannot be undone!" xml:space="preserve">
@@ -5032,6 +5050,7 @@ Richiede l'attivazione della VPN.</target>
</trans-unit>
<trans-unit id="Only chat owners can change preferences." xml:space="preserve">
<source>Only chat owners can change preferences.</source>
<target>Solo i proprietari della chat possono modificarne le preferenze.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only client devices store user profiles, contacts, groups, and messages." xml:space="preserve">
@@ -5166,6 +5185,7 @@ Richiede l'attivazione della VPN.</target>
</trans-unit>
<trans-unit id="Or import archive file" xml:space="preserve">
<source>Or import archive file</source>
<target>O importa file archivio</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or paste archive link" xml:space="preserve">
@@ -5431,6 +5451,7 @@ Errore: %@</target>
</trans-unit>
<trans-unit id="Privacy for your customers." xml:space="preserve">
<source>Privacy for your customers.</source>
<target>Privacy per i tuoi clienti.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Privacy redefined" xml:space="preserve">
@@ -5590,11 +5611,6 @@ Attivalo nelle impostazioni *Rete e server*.</target>
<target>Il proxy richiede una password</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<target>Notifiche push</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Notifiche push</target>
@@ -6021,16 +6037,6 @@ Attivalo nelle impostazioni *Rete e server*.</target>
<target>Gruppi più sicuri</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<target>Le stesse condizioni si applicheranno all'operatore **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<target>Le stesse condizioni si applicheranno agli operatori **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Salva</target>
@@ -7017,6 +7023,7 @@ Attivalo nelle impostazioni *Rete e server*.</target>
</trans-unit>
<trans-unit id="Tap Create SimpleX address in the menu to create it later." xml:space="preserve">
<source>Tap Create SimpleX address in the menu to create it later.</source>
<target>Tocca "Crea indirizzo SimpleX" nel menu per crearlo più tardi.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap button " xml:space="preserve">
@@ -7191,6 +7198,16 @@ Può accadere a causa di qualche bug o quando la connessione è compromessa.</ta
<target>Il profilo è condiviso solo con i tuoi contatti.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<target>Le stesse condizioni si applicheranno all'operatore **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<target>Le stesse condizioni si applicheranno agli operatori **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<target>Il secondo operatore preimpostato nell'app!</target>
@@ -8057,6 +8074,7 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e
</trans-unit>
<trans-unit id="You are already connected with %@." xml:space="preserve">
<source>You are already connected with %@.</source>
<target>Sei già connesso/a con %@.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You are already connecting to %@." xml:space="preserve">
@@ -8335,6 +8353,7 @@ Ripetere la richiesta di connessione?</target>
</trans-unit>
<trans-unit id="You will stop receiving messages from this chat. Chat history will be preserved." xml:space="preserve">
<source>You will stop receiving messages from this chat. Chat history will be preserved.</source>
<target>Non riceverai più messaggi da questa chat. La cronologia della chat verrà conservata.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You will stop receiving messages from this group. Chat history will be preserved." xml:space="preserve">
@@ -1264,6 +1264,10 @@
<target>変更</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>データベースのパスフレーズを更新しますか?</target>
@@ -1310,10 +1314,6 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<note>No comment provided by engineer.</note>
@@ -5204,10 +5204,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>Proxy requires password</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>プッシュ通知</target>
@@ -5599,14 +5595,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>Safer groups</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>保存</target>
@@ -6667,6 +6655,14 @@ It can happen because of some bug or when the connection is compromised.</source
<target>プロフィールは連絡先にしか共有されません。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<note>No comment provided by engineer.</note>
@@ -637,6 +637,7 @@
</trans-unit>
<trans-unit id="Add friends" xml:space="preserve">
<source>Add friends</source>
<target>Vrienden toevoegen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add profile" xml:space="preserve">
@@ -656,6 +657,7 @@
</trans-unit>
<trans-unit id="Add team members" xml:space="preserve">
<source>Add team members</source>
<target>Teamleden toevoegen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add to another device" xml:space="preserve">
@@ -670,6 +672,7 @@
</trans-unit>
<trans-unit id="Add your team members to the conversations." xml:space="preserve">
<source>Add your team members to the conversations.</source>
<target>Voeg uw teamleden toe aan de gesprekken.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Added media &amp; file servers" xml:space="preserve">
@@ -829,7 +832,7 @@
</trans-unit>
<trans-unit id="Allow irreversible message deletion only if your contact allows it to you. (24 hours)" xml:space="preserve">
<source>Allow irreversible message deletion only if your contact allows it to you. (24 hours)</source>
<target>Sta het onomkeerbaar verwijderen van berichten alleen toe als uw contact dit toestaat. (24 uur)</target>
<target>Sta het definitief verwijderen van berichten alleen toe als uw contact dit toestaat. (24 uur)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow message reactions only if your contact allows them." xml:space="preserve">
@@ -859,7 +862,7 @@
</trans-unit>
<trans-unit id="Allow to irreversibly delete sent messages. (24 hours)" xml:space="preserve">
<source>Allow to irreversibly delete sent messages. (24 hours)</source>
<target>Sta toe om verzonden berichten onomkeerbaar te verwijderen. (24 uur)</target>
<target>Sta toe om verzonden berichten definitief te verwijderen. (24 uur)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow to send SimpleX links." xml:space="preserve">
@@ -899,7 +902,7 @@
</trans-unit>
<trans-unit id="Allow your contacts to irreversibly delete sent messages. (24 hours)" xml:space="preserve">
<source>Allow your contacts to irreversibly delete sent messages. (24 hours)</source>
<target>Laat uw contacten verzonden berichten onomkeerbaar verwijderen. (24 uur)</target>
<target>Laat uw contacten verzonden berichten definitief verwijderen. (24 uur)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow your contacts to send disappearing messages." xml:space="preserve">
@@ -1054,7 +1057,7 @@
</trans-unit>
<trans-unit id="Audio/video calls are prohibited." xml:space="preserve">
<source>Audio/video calls are prohibited.</source>
<target>Audio/video gesprekken zijn verboden.</target>
<target>Audio/video gesprekken zijn niet toegestaan.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Authentication cancelled" xml:space="preserve">
@@ -1244,10 +1247,12 @@
</trans-unit>
<trans-unit id="Business address" xml:space="preserve">
<source>Business address</source>
<target>Zakelijk adres</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Business chats" xml:space="preserve">
<source>Business chats</source>
<target>Zakelijke chats</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." xml:space="preserve">
@@ -1267,7 +1272,7 @@
</trans-unit>
<trans-unit id="Calls prohibited!" xml:space="preserve">
<source>Calls prohibited!</source>
<target>Bellen verboden!</target>
<target>Bellen niet toegestaan!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Camera not available" xml:space="preserve">
@@ -1341,6 +1346,11 @@
<target>Veranderen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<target>Gebruikersprofielen wijzigen</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Wachtwoord database wijzigen?</target>
@@ -1387,21 +1397,19 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<target>Gebruikersprofielen wijzigen</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<target>Chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat already exists" xml:space="preserve">
<source>Chat already exists</source>
<target>Chat bestaat al</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat already exists!" xml:space="preserve">
<source>Chat already exists!</source>
<target>Chat bestaat al!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat colors" xml:space="preserve">
@@ -1481,10 +1489,12 @@
</trans-unit>
<trans-unit id="Chat will be deleted for all members - this cannot be undone!" xml:space="preserve">
<source>Chat will be deleted for all members - this cannot be undone!</source>
<target>De chat wordt voor alle leden verwijderd - dit kan niet ongedaan worden gemaakt!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat will be deleted for you - this cannot be undone!" xml:space="preserve">
<source>Chat will be deleted for you - this cannot be undone!</source>
<target>De chat wordt voor je verwijderd - dit kan niet ongedaan worden gemaakt!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chats" xml:space="preserve">
@@ -2243,6 +2253,7 @@ Dit is uw eigen eenmalige link!</target>
</trans-unit>
<trans-unit id="Delete chat" xml:space="preserve">
<source>Delete chat</source>
<target>Chat verwijderen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete chat profile" xml:space="preserve">
@@ -2257,6 +2268,7 @@ Dit is uw eigen eenmalige link!</target>
</trans-unit>
<trans-unit id="Delete chat?" xml:space="preserve">
<source>Delete chat?</source>
<target>Chat verwijderen?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete connection" xml:space="preserve">
@@ -2526,11 +2538,12 @@ Dit is uw eigen eenmalige link!</target>
</trans-unit>
<trans-unit id="Direct messages between members are prohibited in this chat." xml:space="preserve">
<source>Direct messages between members are prohibited in this chat.</source>
<target>Directe berichten tussen leden zijn in deze chat niet toegestaan.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Direct messages between members are prohibited." xml:space="preserve">
<source>Direct messages between members are prohibited.</source>
<target>Directe berichten tussen leden zijn verboden in deze groep.</target>
<target>Directe berichten tussen leden zijn niet toegestaan.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Disable (keep overrides)" xml:space="preserve">
@@ -2565,12 +2578,12 @@ Dit is uw eigen eenmalige link!</target>
</trans-unit>
<trans-unit id="Disappearing messages are prohibited in this chat." xml:space="preserve">
<source>Disappearing messages are prohibited in this chat.</source>
<target>Verdwijnende berichten zijn verboden in dit gesprek.</target>
<target>Verdwijnende berichten zijn niet toegestaan in dit gesprek.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Disappearing messages are prohibited." xml:space="preserve">
<source>Disappearing messages are prohibited.</source>
<target>Verdwijnende berichten zijn verboden in deze groep.</target>
<target>Verdwijnende berichten zijn niet toegestaan.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Disappears at" xml:space="preserve">
@@ -3428,7 +3441,7 @@ Dit is uw eigen eenmalige link!</target>
</trans-unit>
<trans-unit id="Files and media are prohibited." xml:space="preserve">
<source>Files and media are prohibited.</source>
<target>Bestanden en media zijn verboden in deze groep.</target>
<target>Bestanden en media zijn niet toegestaan.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Files and media not allowed" xml:space="preserve">
@@ -3438,7 +3451,7 @@ Dit is uw eigen eenmalige link!</target>
</trans-unit>
<trans-unit id="Files and media prohibited!" xml:space="preserve">
<source>Files and media prohibited!</source>
<target>Bestanden en media verboden!</target>
<target>Bestanden en media niet toegestaan!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Filter unread and favorite chats." xml:space="preserve">
@@ -3842,7 +3855,7 @@ Fout: %2$@</target>
</trans-unit>
<trans-unit id="If you enter this passcode when opening the app, all app data will be irreversibly removed!" xml:space="preserve">
<source>If you enter this passcode when opening the app, all app data will be irreversibly removed!</source>
<target>Als u deze toegangscode invoert bij het openen van de app, worden alle app-gegevens onomkeerbaar verwijderd!</target>
<target>Als u deze toegangscode invoert bij het openen van de app, worden alle app-gegevens definitief verwijderd!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="If you enter your self-destruct passcode while opening the app:" xml:space="preserve">
@@ -4101,6 +4114,7 @@ Binnenkort meer verbeteringen!</target>
</trans-unit>
<trans-unit id="Invite to chat" xml:space="preserve">
<source>Invite to chat</source>
<target>Uitnodigen voor een chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invite to group" xml:space="preserve">
@@ -4115,12 +4129,12 @@ Binnenkort meer verbeteringen!</target>
</trans-unit>
<trans-unit id="Irreversible message deletion is prohibited in this chat." xml:space="preserve">
<source>Irreversible message deletion is prohibited in this chat.</source>
<target>Het onomkeerbaar verwijderen van berichten is verboden in dit gesprek.</target>
<target>Het definitief verwijderen van berichten is niet toegestaan in dit gesprek.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Irreversible message deletion is prohibited." xml:space="preserve">
<source>Irreversible message deletion is prohibited.</source>
<target>Het onomkeerbaar verwijderen van berichten is verboden in deze groep.</target>
<target>Het definitief verwijderen van berichten is verbHet definitief verwijderen van berichten is niet toegestaan..</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It allows having many anonymous connections without any shared data between them in a single chat profile." xml:space="preserve">
@@ -4263,10 +4277,12 @@ Dit is jouw link voor groep %@!</target>
</trans-unit>
<trans-unit id="Leave chat" xml:space="preserve">
<source>Leave chat</source>
<target>Chat verlaten</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Leave chat?" xml:space="preserve">
<source>Leave chat?</source>
<target>Chat verlaten?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
@@ -4401,6 +4417,7 @@ Dit is jouw link voor groep %@!</target>
</trans-unit>
<trans-unit id="Member role will be changed to &quot;%@&quot;. All chat members will be notified." xml:space="preserve">
<source>Member role will be changed to "%@". All chat members will be notified.</source>
<target>De rol van het lid wordt gewijzigd naar "%@". Alle chatleden worden op de hoogte gebracht.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Member role will be changed to &quot;%@&quot;. All group members will be notified." xml:space="preserve">
@@ -4415,6 +4432,7 @@ Dit is jouw link voor groep %@!</target>
</trans-unit>
<trans-unit id="Member will be removed from chat - this cannot be undone!" xml:space="preserve">
<source>Member will be removed from chat - this cannot be undone!</source>
<target>Lid wordt verwijderd uit de chat - dit kan niet ongedaan worden gemaakt!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Member will be removed from group - this cannot be undone!" xml:space="preserve">
@@ -4504,12 +4522,12 @@ Dit is jouw link voor groep %@!</target>
</trans-unit>
<trans-unit id="Message reactions are prohibited in this chat." xml:space="preserve">
<source>Message reactions are prohibited in this chat.</source>
<target>Reacties op berichten zijn verboden in deze chat.</target>
<target>Reacties op berichten zijn niet toegestaan in deze chat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message reactions are prohibited." xml:space="preserve">
<source>Message reactions are prohibited.</source>
<target>Reacties op berichten zijn verboden in deze groep.</target>
<target>Reacties op berichten zijn niet toegestaan.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message reception" xml:space="preserve">
@@ -5032,6 +5050,7 @@ Vereist het inschakelen van VPN.</target>
</trans-unit>
<trans-unit id="Only chat owners can change preferences." xml:space="preserve">
<source>Only chat owners can change preferences.</source>
<target>Alleen chateigenaren kunnen voorkeuren wijzigen.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only client devices store user profiles, contacts, groups, and messages." xml:space="preserve">
@@ -5066,7 +5085,7 @@ Vereist het inschakelen van VPN.</target>
</trans-unit>
<trans-unit id="Only you can irreversibly delete messages (your contact can mark them for deletion). (24 hours)" xml:space="preserve">
<source>Only you can irreversibly delete messages (your contact can mark them for deletion). (24 hours)</source>
<target>Alleen jij kunt berichten onomkeerbaar verwijderen (je contact kan ze markeren voor verwijdering). (24 uur)</target>
<target>Alleen jij kunt berichten definitief verwijderen (je contact kan ze markeren voor verwijdering). (24 uur)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only you can make calls." xml:space="preserve">
@@ -5166,6 +5185,7 @@ Vereist het inschakelen van VPN.</target>
</trans-unit>
<trans-unit id="Or import archive file" xml:space="preserve">
<source>Or import archive file</source>
<target>Of importeer archiefbestand</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or paste archive link" xml:space="preserve">
@@ -5431,6 +5451,7 @@ Fout: %@</target>
</trans-unit>
<trans-unit id="Privacy for your customers." xml:space="preserve">
<source>Privacy for your customers.</source>
<target>Privacy voor uw klanten.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Privacy redefined" xml:space="preserve">
@@ -5505,7 +5526,7 @@ Fout: %@</target>
</trans-unit>
<trans-unit id="Prohibit irreversible message deletion." xml:space="preserve">
<source>Prohibit irreversible message deletion.</source>
<target>Verbied het onomkeerbaar verwijderen van berichten.</target>
<target>Verbied het definitief verwijderen van berichten.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Prohibit message reactions." xml:space="preserve">
@@ -5590,11 +5611,6 @@ Schakel dit in in *Netwerk en servers*-instellingen.</target>
<target>Proxy vereist wachtwoord</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<target>Pushmeldingen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Push meldingen</target>
@@ -6021,16 +6037,6 @@ Schakel dit in in *Netwerk en servers*-instellingen.</target>
<target>Veiligere groepen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<target>Dezelfde voorwaarden gelden voor operator **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<target>Dezelfde voorwaarden gelden voor operator(s): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Opslaan</target>
@@ -6765,7 +6771,7 @@ Schakel dit in in *Netwerk en servers*-instellingen.</target>
</trans-unit>
<trans-unit id="SimpleX links are prohibited." xml:space="preserve">
<source>SimpleX links are prohibited.</source>
<target>SimpleX-links zijn in deze groep verboden.</target>
<target>SimpleX-links zijn niet toegestaan.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SimpleX links not allowed" xml:space="preserve">
@@ -7017,6 +7023,7 @@ Schakel dit in in *Netwerk en servers*-instellingen.</target>
</trans-unit>
<trans-unit id="Tap Create SimpleX address in the menu to create it later." xml:space="preserve">
<source>Tap Create SimpleX address in the menu to create it later.</source>
<target>Tik op SimpleX-adres maken in het menu om het later te maken.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap button " xml:space="preserve">
@@ -7191,6 +7198,16 @@ Het kan gebeuren vanwege een bug of wanneer de verbinding is aangetast.</target>
<target>Het profiel wordt alleen gedeeld met uw contacten.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<target>Dezelfde voorwaarden gelden voor operator **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<target>Dezelfde voorwaarden gelden voor operator(s): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<target>De tweede vooraf ingestelde operator in de app!</target>
@@ -7258,7 +7275,7 @@ Het kan gebeuren vanwege een bug of wanneer de verbinding is aangetast.</target>
</trans-unit>
<trans-unit id="This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost." xml:space="preserve">
<source>This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost.</source>
<target>Deze actie kan niet ongedaan worden gemaakt. Uw profiel, contacten, berichten en bestanden gaan onomkeerbaar verloren.</target>
<target>Deze actie kan niet ongedaan worden gemaakt. Uw profiel, contacten, berichten en bestanden gaan definitief verloren.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="This chat is protected by end-to-end encryption." xml:space="preserve">
@@ -7857,12 +7874,12 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak
</trans-unit>
<trans-unit id="Voice messages are prohibited in this chat." xml:space="preserve">
<source>Voice messages are prohibited in this chat.</source>
<target>Spraak berichten zijn verboden in deze chat.</target>
<target>Spraak berichten zijn niet toegestaan in dit gesprek.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Voice messages are prohibited." xml:space="preserve">
<source>Voice messages are prohibited.</source>
<target>Spraak berichten zijn verboden in deze groep.</target>
<target>Spraak berichten zijn niet toegestaan.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Voice messages not allowed" xml:space="preserve">
@@ -7872,7 +7889,7 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak
</trans-unit>
<trans-unit id="Voice messages prohibited!" xml:space="preserve">
<source>Voice messages prohibited!</source>
<target>Spraak berichten verboden!</target>
<target>Spraak berichten niet toegestaan!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Voice message…" xml:space="preserve">
@@ -8057,6 +8074,7 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak
</trans-unit>
<trans-unit id="You are already connected with %@." xml:space="preserve">
<source>You are already connected with %@.</source>
<target>U bent al verbonden met %@.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You are already connecting to %@." xml:space="preserve">
@@ -8335,6 +8353,7 @@ Verbindingsverzoek herhalen?</target>
</trans-unit>
<trans-unit id="You will stop receiving messages from this chat. Chat history will be preserved." xml:space="preserve">
<source>You will stop receiving messages from this chat. Chat history will be preserved.</source>
<target>U ontvangt geen berichten meer van deze chat. De chatgeschiedenis blijft bewaard.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You will stop receiving messages from this group. Chat history will be preserved." xml:space="preserve">
@@ -1324,6 +1324,10 @@
<target>Zmień</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Zmienić hasło bazy danych?</target>
@@ -1370,10 +1374,6 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<note>No comment provided by engineer.</note>
@@ -5520,10 +5520,6 @@ Włącz w ustawianiach *Sieć i serwery* .</target>
<target>Proxy wymaga hasła</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Powiadomienia push</target>
@@ -5948,14 +5944,6 @@ Włącz w ustawianiach *Sieć i serwery* .</target>
<target>Bezpieczniejsze grupy</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Zapisz</target>
@@ -7100,6 +7088,14 @@ Może się to zdarzyć z powodu jakiegoś błędu lub gdy połączenie jest skom
<target>Profil jest udostępniany tylko Twoim kontaktom.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<note>No comment provided by engineer.</note>
@@ -114,10 +114,12 @@
</trans-unit>
<trans-unit id="%@ server" xml:space="preserve">
<source>%@ server</source>
<target>%@ сервер</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ servers" xml:space="preserve">
<source>%@ servers</source>
<target>%@ серверы</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ uploaded" xml:space="preserve">
@@ -382,6 +384,7 @@
</trans-unit>
<trans-unit id="**Scan / Paste link**: to connect via a link you received." xml:space="preserve">
<source>**Scan / Paste link**: to connect via a link you received.</source>
<target>**Сканировать / Вставить ссылку**: чтобы соединится через полученную ссылку.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Warning**: Instant push notifications require passphrase saved in Keychain." xml:space="preserve">
@@ -492,10 +495,12 @@
</trans-unit>
<trans-unit id="1-time link" xml:space="preserve">
<source>1-time link</source>
<target>Одноразовая ссылка</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="1-time link can be used *with one contact only* - share in person or via any messenger." xml:space="preserve">
<source>1-time link can be used *with one contact only* - share in person or via any messenger.</source>
<target>Одноразовая ссылка может быть использована *только с одним контактом* - поделитесь при встрече или через любой мессенджер.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="5 minutes" xml:space="preserve">
@@ -586,6 +591,7 @@
</trans-unit>
<trans-unit id="Accept conditions" xml:space="preserve">
<source>Accept conditions</source>
<target>Принять условия</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Accept connection request?" xml:space="preserve">
@@ -606,6 +612,7 @@
</trans-unit>
<trans-unit id="Accepted conditions" xml:space="preserve">
<source>Accepted conditions</source>
<target>Принятые условия</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Acknowledged" xml:space="preserve">
@@ -630,6 +637,7 @@
</trans-unit>
<trans-unit id="Add friends" xml:space="preserve">
<source>Add friends</source>
<target>Добавить друзей</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add profile" xml:space="preserve">
@@ -649,6 +657,7 @@
</trans-unit>
<trans-unit id="Add team members" xml:space="preserve">
<source>Add team members</source>
<target>Добавить сотрудников</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add to another device" xml:space="preserve">
@@ -663,14 +672,17 @@
</trans-unit>
<trans-unit id="Add your team members to the conversations." xml:space="preserve">
<source>Add your team members to the conversations.</source>
<target>Добавьте сотрудников в разговор.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Added media &amp; file servers" xml:space="preserve">
<source>Added media &amp; file servers</source>
<target>Дополнительные серверы файлов и медиа</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Added message servers" xml:space="preserve">
<source>Added message servers</source>
<target>Дополнительные серверы сообщений</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Additional accent" xml:space="preserve">
@@ -700,10 +712,12 @@
</trans-unit>
<trans-unit id="Address or 1-time link?" xml:space="preserve">
<source>Address or 1-time link?</source>
<target>Адрес или одноразовая ссылка?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Address settings" xml:space="preserve">
<source>Address settings</source>
<target>Настройки адреса</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Admins can block a member for all." xml:space="preserve">
@@ -1233,10 +1247,12 @@
</trans-unit>
<trans-unit id="Business address" xml:space="preserve">
<source>Business address</source>
<target>Бизнес адрес</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Business chats" xml:space="preserve">
<source>Business chats</source>
<target>Бизнес разговоры</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." xml:space="preserve">
@@ -1330,6 +1346,11 @@
<target>Поменять</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<target>Поменять профили</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Поменять пароль базы данных?</target>
@@ -1376,20 +1397,19 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<target>Разговор</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat already exists" xml:space="preserve">
<source>Chat already exists</source>
<target>Разговор уже существует</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat already exists!" xml:space="preserve">
<source>Chat already exists!</source>
<target>Разговор уже существует!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat colors" xml:space="preserve">
@@ -1469,10 +1489,12 @@
</trans-unit>
<trans-unit id="Chat will be deleted for all members - this cannot be undone!" xml:space="preserve">
<source>Chat will be deleted for all members - this cannot be undone!</source>
<target>Разговор будет удален для всех участников - это действие нельзя отменить!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat will be deleted for you - this cannot be undone!" xml:space="preserve">
<source>Chat will be deleted for you - this cannot be undone!</source>
<target>Разговор будет удален для Вас - это действие нельзя отменить!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chats" xml:space="preserve">
@@ -1482,10 +1504,12 @@
</trans-unit>
<trans-unit id="Check messages every 20 min." xml:space="preserve">
<source>Check messages every 20 min.</source>
<target>Проверять сообщения каждые 20 минут.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Check messages when allowed." xml:space="preserve">
<source>Check messages when allowed.</source>
<target>Проверять сообщения по возможности.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Check server address and try again." xml:space="preserve">
@@ -1580,38 +1604,47 @@
</trans-unit>
<trans-unit id="Conditions accepted on: %@." xml:space="preserve">
<source>Conditions accepted on: %@.</source>
<target>Условия приняты: %@.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions are accepted for the operator(s): **%@**." xml:space="preserve">
<source>Conditions are accepted for the operator(s): **%@**.</source>
<target>Условия приняты для оператора(ов): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions are already accepted for following operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for following operator(s): **%@**.</source>
<target>Условия уже приняты для следующих оператора(ов): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions of use" xml:space="preserve">
<source>Conditions of use</source>
<target>Условия использования</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions will be accepted for enabled operators after 30 days." xml:space="preserve">
<source>Conditions will be accepted for enabled operators after 30 days.</source>
<target>Условия будут приняты для включенных операторов через 30 дней.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions will be accepted for operator(s): **%@**." xml:space="preserve">
<source>Conditions will be accepted for operator(s): **%@**.</source>
<target>Условия будут приняты для оператора(ов): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions will be accepted for the operator(s): **%@**." xml:space="preserve">
<source>Conditions will be accepted for the operator(s): **%@**.</source>
<target>Условия будут приняты для оператора(ов): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions will be accepted on: %@." xml:space="preserve">
<source>Conditions will be accepted on: %@.</source>
<target>Условия будут приняты: %@.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions will be automatically accepted for enabled operators on: %@." xml:space="preserve">
<source>Conditions will be automatically accepted for enabled operators on: %@.</source>
<target>Условия будут автоматически приняты для включенных операторов: %@.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Configure ICE servers" xml:space="preserve">
@@ -1810,6 +1843,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Connection security" xml:space="preserve">
<source>Connection security</source>
<target>Безопасность соединения</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection terminated" xml:space="preserve">
@@ -1929,6 +1963,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Create 1-time link" xml:space="preserve">
<source>Create 1-time link</source>
<target>Создать одноразовую ссылку</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Create SimpleX address" xml:space="preserve">
@@ -2018,6 +2053,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Current conditions text couldn't be loaded, you can review conditions via this link:" xml:space="preserve">
<source>Current conditions text couldn't be loaded, you can review conditions via this link:</source>
<target>Текст условий использования не может быть показан, вы можете посмотреть их через ссылку:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Current passphrase…" xml:space="preserve">
@@ -2217,6 +2253,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Delete chat" xml:space="preserve">
<source>Delete chat</source>
<target>Удалить разговор</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete chat profile" xml:space="preserve">
@@ -2231,6 +2268,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Delete chat?" xml:space="preserve">
<source>Delete chat?</source>
<target>Удалить разговор?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete connection" xml:space="preserve">
@@ -2395,6 +2433,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Delivered even when Apple drops them." xml:space="preserve">
<source>Delivered even when Apple drops them.</source>
<target>Доставляются даже тогда, когда Apple их теряет.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delivery" xml:space="preserve">
@@ -2499,6 +2538,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Direct messages between members are prohibited in this chat." xml:space="preserve">
<source>Direct messages between members are prohibited in this chat.</source>
<target>Прямые сообщения между членами запрещены в этом разговоре.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Direct messages between members are prohibited." xml:space="preserve">
@@ -2684,6 +2724,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="E2E encrypted notifications." xml:space="preserve">
<source>E2E encrypted notifications.</source>
<target>E2E зашифрованные нотификации.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Edit" xml:space="preserve">
@@ -2708,6 +2749,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Enable Flux" xml:space="preserve">
<source>Enable Flux</source>
<target>Включить Flux</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable SimpleX Lock" xml:space="preserve">
@@ -2917,6 +2959,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Error accepting conditions" xml:space="preserve">
<source>Error accepting conditions</source>
<target>Ошибка приема условий</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Error accepting contact request" xml:space="preserve">
@@ -2931,6 +2974,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Error adding server" xml:space="preserve">
<source>Error adding server</source>
<target>Ошибка добавления сервера</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Error changing address" xml:space="preserve">
@@ -3075,6 +3119,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Error loading servers" xml:space="preserve">
<source>Error loading servers</source>
<target>Ошибка загрузки серверов</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Error migrating settings" xml:space="preserve">
@@ -3134,6 +3179,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Error saving servers" xml:space="preserve">
<source>Error saving servers</source>
<target>Ошибка сохранения серверов</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Error saving settings" xml:space="preserve">
@@ -3208,6 +3254,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Error updating server" xml:space="preserve">
<source>Error updating server</source>
<target>Ошибка сохранения сервера</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Error updating settings" xml:space="preserve">
@@ -3257,6 +3304,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Errors in servers configuration." xml:space="preserve">
<source>Errors in servers configuration.</source>
<target>Ошибки в настройках серверов.</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="Even when disabled in the conversation." xml:space="preserve">
@@ -3463,6 +3511,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="For chat profile %@:" xml:space="preserve">
<source>For chat profile %@:</source>
<target>Для профиля чата %@:</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="For console" xml:space="preserve">
@@ -3472,14 +3521,17 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="For example, if your contact receives messages via a SimpleX Chat server, your app will deliver them via a Flux server." xml:space="preserve">
<source>For example, if your contact receives messages via a SimpleX Chat server, your app will deliver them via a Flux server.</source>
<target>Например, если Ваш контакт получает сообщения через сервер SimpleX Chat, Ваше приложение доставит их через сервер Flux.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="For private routing" xml:space="preserve">
<source>For private routing</source>
<target>Для доставки сообщений</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="For social media" xml:space="preserve">
<source>For social media</source>
<target>Для социальных сетей</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Forward" xml:space="preserve">
@@ -3758,10 +3810,12 @@ Error: %2$@</source>
</trans-unit>
<trans-unit id="How it affects privacy" xml:space="preserve">
<source>How it affects privacy</source>
<target>Как это влияет на конфиденциальность</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="How it helps privacy" xml:space="preserve">
<source>How it helps privacy</source>
<target>Как это улучшает конфиденциальность</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="How to" xml:space="preserve">
@@ -4059,6 +4113,7 @@ More improvements are coming soon!</source>
</trans-unit>
<trans-unit id="Invite to chat" xml:space="preserve">
<source>Invite to chat</source>
<target>Пригласить в разговор</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invite to group" xml:space="preserve">
@@ -4221,10 +4276,12 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Leave chat" xml:space="preserve">
<source>Leave chat</source>
<target>Покинуть разговор</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Leave chat?" xml:space="preserve">
<source>Leave chat?</source>
<target>Покинуть разговор?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
@@ -4359,6 +4416,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Member role will be changed to &quot;%@&quot;. All chat members will be notified." xml:space="preserve">
<source>Member role will be changed to "%@". All chat members will be notified.</source>
<target>Роль участника будет изменена на "%@". Все участники разговора получат уведомление.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Member role will be changed to &quot;%@&quot;. All group members will be notified." xml:space="preserve">
@@ -4373,6 +4431,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Member will be removed from chat - this cannot be undone!" xml:space="preserve">
<source>Member will be removed from chat - this cannot be undone!</source>
<target>Член будет удален из разговора - это действие нельзя отменить!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Member will be removed from group - this cannot be undone!" xml:space="preserve">
@@ -4637,6 +4696,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="More reliable notifications" xml:space="preserve">
<source>More reliable notifications</source>
<target>Более надежные уведомления</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Most likely this connection is deleted." xml:space="preserve">
@@ -4676,6 +4736,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Network decentralization" xml:space="preserve">
<source>Network decentralization</source>
<target>Децентрализация сети</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Network issues - message expired after many attempts to send it." xml:space="preserve">
@@ -4690,6 +4751,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Network operator" xml:space="preserve">
<source>Network operator</source>
<target>Оператор сети</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Network settings" xml:space="preserve">
@@ -4749,6 +4811,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="New events" xml:space="preserve">
<source>New events</source>
<target>Новые события</target>
<note>notification</note>
</trans-unit>
<trans-unit id="New in %@" xml:space="preserve">
@@ -4778,6 +4841,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="New server" xml:space="preserve">
<source>New server</source>
<target>Новый сервер</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="No" xml:space="preserve">
@@ -4837,10 +4901,12 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="No media &amp; file servers." xml:space="preserve">
<source>No media &amp; file servers.</source>
<target>Нет серверов файлов и медиа.</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="No message servers." xml:space="preserve">
<source>No message servers.</source>
<target>Нет серверов сообщений.</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="No network connection" xml:space="preserve">
@@ -4875,18 +4941,22 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="No servers for private message routing." xml:space="preserve">
<source>No servers for private message routing.</source>
<target>Нет серверов для доставки сообщений.</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="No servers to receive files." xml:space="preserve">
<source>No servers to receive files.</source>
<target>Нет серверов для приема файлов.</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="No servers to receive messages." xml:space="preserve">
<source>No servers to receive messages.</source>
<target>Нет серверов для приема сообщений.</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="No servers to send files." xml:space="preserve">
<source>No servers to send files.</source>
<target>Нет серверов для отправки файлов.</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="No user identifiers." xml:space="preserve">
@@ -4921,6 +4991,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Notifications privacy" xml:space="preserve">
<source>Notifications privacy</source>
<target>Конфиденциальность уведомлений</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Now admins can:&#10;- delete members' messages.&#10;- disable members (&quot;observer&quot; role)" xml:space="preserve">
@@ -4978,6 +5049,7 @@ Requires compatible VPN.</source>
</trans-unit>
<trans-unit id="Only chat owners can change preferences." xml:space="preserve">
<source>Only chat owners can change preferences.</source>
<target>Только владельцы разговора могут поменять предпочтения.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only client devices store user profiles, contacts, groups, and messages." xml:space="preserve">
@@ -5067,6 +5139,7 @@ Requires compatible VPN.</source>
</trans-unit>
<trans-unit id="Open changes" xml:space="preserve">
<source>Open changes</source>
<target>Открыть изменения</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Open chat" xml:space="preserve">
@@ -5081,6 +5154,7 @@ Requires compatible VPN.</source>
</trans-unit>
<trans-unit id="Open conditions" xml:space="preserve">
<source>Open conditions</source>
<target>Открыть условия</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Open group" xml:space="preserve">
@@ -5100,14 +5174,17 @@ Requires compatible VPN.</source>
</trans-unit>
<trans-unit id="Operator" xml:space="preserve">
<source>Operator</source>
<target>Оператор</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Operator server" xml:space="preserve">
<source>Operator server</source>
<target>Сервер оператора</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Or import archive file" xml:space="preserve">
<source>Or import archive file</source>
<target>Или импортировать файл архива</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or paste archive link" xml:space="preserve">
@@ -5132,6 +5209,7 @@ Requires compatible VPN.</source>
</trans-unit>
<trans-unit id="Or to share privately" xml:space="preserve">
<source>Or to share privately</source>
<target>Или поделиться конфиденциально</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Other" xml:space="preserve">
@@ -5352,6 +5430,7 @@ Error: %@</source>
</trans-unit>
<trans-unit id="Preset servers" xml:space="preserve">
<source>Preset servers</source>
<target>Серверы по умолчанию</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Preview" xml:space="preserve">
@@ -5371,6 +5450,7 @@ Error: %@</source>
</trans-unit>
<trans-unit id="Privacy for your customers." xml:space="preserve">
<source>Privacy for your customers.</source>
<target>Конфиденциальность для ваших покупателей.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Privacy redefined" xml:space="preserve">
@@ -5530,10 +5610,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>Прокси требует пароль</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Доставка уведомлений</target>
@@ -5907,10 +5983,12 @@ Enable in *Network &amp; servers* settings.</source>
</trans-unit>
<trans-unit id="Review conditions" xml:space="preserve">
<source>Review conditions</source>
<target>Посмотреть условия</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Review later" xml:space="preserve">
<source>Review later</source>
<target>Посмотреть позже</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Revoke" xml:space="preserve">
@@ -5958,14 +6036,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>Более безопасные группы</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Сохранить</target>
@@ -6369,6 +6439,7 @@ Enable in *Network &amp; servers* settings.</source>
</trans-unit>
<trans-unit id="Server added to operator %@." xml:space="preserve">
<source>Server added to operator %@.</source>
<target>Сервер добавлен к оператору %@.</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="Server address" xml:space="preserve">
@@ -6388,14 +6459,17 @@ Enable in *Network &amp; servers* settings.</source>
</trans-unit>
<trans-unit id="Server operator changed." xml:space="preserve">
<source>Server operator changed.</source>
<target>Оператор серверов изменен.</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Server operators" xml:space="preserve">
<source>Server operators</source>
<target>Операторы серверов</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Server protocol changed." xml:space="preserve">
<source>Server protocol changed.</source>
<target>Протокол сервера изменен.</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Server requires authorization to create queues, check password" xml:space="preserve">
@@ -6526,10 +6600,12 @@ Enable in *Network &amp; servers* settings.</source>
</trans-unit>
<trans-unit id="Share 1-time link with a friend" xml:space="preserve">
<source>Share 1-time link with a friend</source>
<target>Поделитесь одноразовой ссылкой с другом</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share SimpleX address on social media." xml:space="preserve">
<source>Share SimpleX address on social media.</source>
<target>Поделитесь SimpleX адресом в социальных сетях.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share address" xml:space="preserve">
@@ -6539,6 +6615,7 @@ Enable in *Network &amp; servers* settings.</source>
</trans-unit>
<trans-unit id="Share address publicly" xml:space="preserve">
<source>Share address publicly</source>
<target>Поделитесь адресом</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share address with contacts?" xml:space="preserve">
@@ -6663,10 +6740,12 @@ Enable in *Network &amp; servers* settings.</source>
</trans-unit>
<trans-unit id="SimpleX address and 1-time links are safe to share via any messenger." xml:space="preserve">
<source>SimpleX address and 1-time links are safe to share via any messenger.</source>
<target>Адрес SimpleX и одноразовые ссылки безопасно отправлять через любой мессенджер.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SimpleX address or 1-time link?" xml:space="preserve">
<source>SimpleX address or 1-time link?</source>
<target>Адрес SimpleX или одноразовая ссылка?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SimpleX contact address" xml:space="preserve">
@@ -6762,6 +6841,8 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Some servers failed the test:&#10;%@" xml:space="preserve">
<source>Some servers failed the test:
%@</source>
<target>Серверы не прошли тест:
%@</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="Somebody" xml:space="preserve">
@@ -6941,6 +7022,7 @@ Enable in *Network &amp; servers* settings.</source>
</trans-unit>
<trans-unit id="Tap Create SimpleX address in the menu to create it later." xml:space="preserve">
<source>Tap Create SimpleX address in the menu to create it later.</source>
<target>Нажмите Создать адрес SimpleX в меню, чтобы создать его позже.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap button " xml:space="preserve">
@@ -7032,6 +7114,7 @@ It can happen because of some bug or when the connection is compromised.</source
</trans-unit>
<trans-unit id="The app protects your privacy by using different operators in each conversation." xml:space="preserve">
<source>The app protects your privacy by using different operators in each conversation.</source>
<target>Приложение улучшает конфиденциальность используя разных операторов в каждом разговоре.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The app will ask to confirm downloads from unknown file servers (except .onion)." xml:space="preserve">
@@ -7051,6 +7134,7 @@ It can happen because of some bug or when the connection is compromised.</source
</trans-unit>
<trans-unit id="The connection reached the limit of undelivered messages, your contact may be offline." xml:space="preserve">
<source>The connection reached the limit of undelivered messages, your contact may be offline.</source>
<target>Соединение достигло предела недоставленных сообщений. Возможно, Ваш контакт не в сети.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The connection you accepted will be cancelled!" xml:space="preserve">
@@ -7113,8 +7197,19 @@ It can happen because of some bug or when the connection is compromised.</source
<target>Профиль отправляется только Вашим контактам.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<target>Те же самые условия будут приняты для оператора **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<target>Те же самые условия будут приняты для оператора(ов): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<target>Второй оператор серверов в приложении!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second tick we missed! ✅" xml:space="preserve">
@@ -7134,6 +7229,7 @@ It can happen because of some bug or when the connection is compromised.</source
</trans-unit>
<trans-unit id="The servers for new files of your current chat profile **%@**." xml:space="preserve">
<source>The servers for new files of your current chat profile **%@**.</source>
<target>Серверы для новых файлов Вашего текущего профиля **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The text you pasted is not a SimpleX link." xml:space="preserve">
@@ -7153,6 +7249,7 @@ It can happen because of some bug or when the connection is compromised.</source
</trans-unit>
<trans-unit id="These conditions will also apply for: **%@**." xml:space="preserve">
<source>These conditions will also apply for: **%@**.</source>
<target>Эти условия также будут применены к: **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="These settings are for your current profile **%@**." xml:space="preserve">
@@ -7257,6 +7354,7 @@ It can happen because of some bug or when the connection is compromised.</source
</trans-unit>
<trans-unit id="To protect against your link being replaced, you can compare contact security codes." xml:space="preserve">
<source>To protect against your link being replaced, you can compare contact security codes.</source>
<target>Чтобы защитить Вашу ссылку от замены, Вы можете сравнить код безопасности.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="To protect timezone, image/voice files use UTC." xml:space="preserve">
@@ -7283,6 +7381,7 @@ You will be prompted to complete authentication before this feature is enabled.<
</trans-unit>
<trans-unit id="To receive" xml:space="preserve">
<source>To receive</source>
<target>Для получения</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="To record speech please grant permission to use Microphone." xml:space="preserve">
@@ -7307,6 +7406,7 @@ You will be prompted to complete authentication before this feature is enabled.<
</trans-unit>
<trans-unit id="To send" xml:space="preserve">
<source>To send</source>
<target>Для оправки</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="To support instant push notifications the chat database has to be migrated." xml:space="preserve">
@@ -7316,6 +7416,7 @@ You will be prompted to complete authentication before this feature is enabled.<
</trans-unit>
<trans-unit id="To use the servers of **%@**, accept conditions of use." xml:space="preserve">
<source>To use the servers of **%@**, accept conditions of use.</source>
<target>Чтобы использовать серверы оператора **%@**, примите условия использования.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="To verify end-to-end encryption with your contact compare (or scan) the code on your devices." xml:space="preserve">
@@ -7410,6 +7511,7 @@ You will be prompted to complete authentication before this feature is enabled.<
</trans-unit>
<trans-unit id="Undelivered messages" xml:space="preserve">
<source>Undelivered messages</source>
<target>Недоставленные сообщения</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Unexpected migration state" xml:space="preserve">
@@ -7571,6 +7673,7 @@ To connect, please ask your contact to create another connection link and check
</trans-unit>
<trans-unit id="Use %@" xml:space="preserve">
<source>Use %@</source>
<target>Использовать %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use .onion hosts" xml:space="preserve">
@@ -7600,10 +7703,12 @@ To connect, please ask your contact to create another connection link and check
</trans-unit>
<trans-unit id="Use for files" xml:space="preserve">
<source>Use for files</source>
<target>Использовать для файлов</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use for messages" xml:space="preserve">
<source>Use for messages</source>
<target>Использовать для сообщений</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use for new connections" xml:space="preserve">
@@ -7648,6 +7753,7 @@ To connect, please ask your contact to create another connection link and check
</trans-unit>
<trans-unit id="Use servers" xml:space="preserve">
<source>Use servers</source>
<target>Использовать серверы</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use the app while in the call." xml:space="preserve">
@@ -7742,6 +7848,7 @@ To connect, please ask your contact to create another connection link and check
</trans-unit>
<trans-unit id="View conditions" xml:space="preserve">
<source>View conditions</source>
<target>Посмотреть условия</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="View security code" xml:space="preserve">
@@ -7751,6 +7858,7 @@ To connect, please ask your contact to create another connection link and check
</trans-unit>
<trans-unit id="View updated conditions" xml:space="preserve">
<source>View updated conditions</source>
<target>Посмотреть измененные условия</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Visible history" xml:space="preserve">
@@ -7865,6 +7973,7 @@ To connect, please ask your contact to create another connection link and check
</trans-unit>
<trans-unit id="When more than one operator is enabled, none of them has metadata to learn who communicates with whom." xml:space="preserve">
<source>When more than one operator is enabled, none of them has metadata to learn who communicates with whom.</source>
<target>Когда больше чем один оператор включен, ни один из них не видит метаданные, чтобы определить, кто соединен с кем.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="When you share an incognito profile with somebody, this profile will be used for the groups they invite you to." xml:space="preserve">
@@ -7964,6 +8073,7 @@ To connect, please ask your contact to create another connection link and check
</trans-unit>
<trans-unit id="You are already connected with %@." xml:space="preserve">
<source>You are already connected with %@.</source>
<target>Вы уже соединены с %@.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You are already connecting to %@." xml:space="preserve">
@@ -8030,10 +8140,12 @@ Repeat join request?</source>
</trans-unit>
<trans-unit id="You can configure operators in Network &amp; servers settings." xml:space="preserve">
<source>You can configure operators in Network &amp; servers settings.</source>
<target>Вы можете настроить операторов в настройках Сеть и серверы.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can configure servers via settings." xml:space="preserve">
<source>You can configure servers via settings.</source>
<target>Вы можете сконфигурировать серверы через настройки.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can create it later" xml:space="preserve">
@@ -8078,6 +8190,7 @@ Repeat join request?</source>
</trans-unit>
<trans-unit id="You can set connection name, to remember who the link was shared with." xml:space="preserve">
<source>You can set connection name, to remember who the link was shared with.</source>
<target>Вы можете установить имя соединения, чтобы запомнить кому Вы отправили ссылку.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can set lock screen notification preview via settings." xml:space="preserve">
@@ -8239,6 +8352,7 @@ Repeat connection request?</source>
</trans-unit>
<trans-unit id="You will stop receiving messages from this chat. Chat history will be preserved." xml:space="preserve">
<source>You will stop receiving messages from this chat. Chat history will be preserved.</source>
<target>Вы прекратите получать сообщения в этом разговоре. История будет сохранена.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You will stop receiving messages from this group. Chat history will be preserved." xml:space="preserve">
@@ -8383,6 +8497,7 @@ Repeat connection request?</source>
</trans-unit>
<trans-unit id="Your servers" xml:space="preserve">
<source>Your servers</source>
<target>Ваши серверы</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your settings" xml:space="preserve">
@@ -8807,6 +8922,7 @@ Repeat connection request?</source>
</trans-unit>
<trans-unit id="for better metadata privacy." xml:space="preserve">
<source>for better metadata privacy.</source>
<target>для лучшей конфиденциальности метаданных.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="forwarded" xml:space="preserve">
@@ -9438,22 +9554,27 @@ last received msg: %2$@</source>
<body>
<trans-unit id="%d new events" xml:space="preserve">
<source>%d new events</source>
<target>%d новых сообщений</target>
<note>notification body</note>
</trans-unit>
<trans-unit id="From: %@" xml:space="preserve">
<source>From: %@</source>
<target>От: %@</target>
<note>notification body</note>
</trans-unit>
<trans-unit id="New events" xml:space="preserve">
<source>New events</source>
<target>Новые события</target>
<note>notification</note>
</trans-unit>
<trans-unit id="New messages" xml:space="preserve">
<source>New messages</source>
<target>Новые сообщения</target>
<note>notification</note>
</trans-unit>
<trans-unit id="New messages in %d chats" xml:space="preserve">
<source>New messages in %d chats</source>
<target>Новые сообщения в %d разговоре(ах)</target>
<note>notification body</note>
</trans-unit>
</body>
@@ -1232,6 +1232,10 @@
<target>เปลี่ยน</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>เปลี่ยนรหัสผ่านฐานข้อมูล?</target>
@@ -1278,10 +1282,6 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<note>No comment provided by engineer.</note>
@@ -5133,10 +5133,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>Proxy requires password</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>การแจ้งเตือนแบบทันที</target>
@@ -5527,14 +5523,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>Safer groups</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>บันทึก</target>
@@ -6598,6 +6586,14 @@ It can happen because of some bug or when the connection is compromised.</source
<target>โปรไฟล์นี้แชร์กับผู้ติดต่อของคุณเท่านั้น</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<note>No comment provided by engineer.</note>
@@ -1329,6 +1329,10 @@
<target>Değiştir</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Veritabanı parolasını değiştir?</target>
@@ -1375,10 +1379,6 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<note>No comment provided by engineer.</note>
@@ -5530,10 +5530,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>Proxy şifre gerektirir</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Anında bildirimler</target>
@@ -5958,14 +5954,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>Daha güvenli gruplar</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Kaydet</target>
@@ -7113,6 +7101,14 @@ Bazı hatalar nedeniyle veya bağlantı tehlikeye girdiğinde meydana gelebilir.
<target>Profil sadece kişilerinle paylaşılacak.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<note>No comment provided by engineer.</note>
@@ -1341,6 +1341,11 @@
<target>Зміна</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<target>Зміна профілів користувачів</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Змінити пароль до бази даних?</target>
@@ -1387,11 +1392,6 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<target>Зміна профілів користувачів</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<note>No comment provided by engineer.</note>
@@ -5590,14 +5590,9 @@ Enable in *Network &amp; servers* settings.</source>
<target>Проксі вимагає пароль</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<target>Push-сповіщення</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Push-повідомлення</target>
<target>Push-сповіщення</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push server" xml:space="preserve">
@@ -6021,16 +6016,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>Безпечніші групи</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<target>Такі ж умови діятимуть і для оператора **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<target>Такі ж умови будуть застосовуватися до оператора(ів): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Зберегти</target>
@@ -7191,6 +7176,16 @@ It can happen because of some bug or when the connection is compromised.</source
<target>Профіль доступний лише вашим контактам.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<target>Такі ж умови діятимуть і для оператора **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<target>Такі ж умови будуть застосовуватися до оператора(ів): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<target>Другий попередньо встановлений оператор у застосунку!</target>
@@ -1316,6 +1316,10 @@
<target>更改</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>更改数据库密码?</target>
@@ -1362,10 +1366,6 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<note>No comment provided by engineer.</note>
@@ -5485,10 +5485,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>Proxy requires password</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>推送通知</target>
@@ -5911,14 +5907,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>更安全的群组</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>保存</target>
@@ -7055,6 +7043,14 @@ It can happen because of some bug or when the connection is compromised.</source
<target>该资料仅与您的联系人共享。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<note>No comment provided by engineer.</note>
@@ -1,7 +1,15 @@
/*
Localizable.strings
SimpleX
/* notification body */
"%d new events" = "%d новых сообщений";
/* notification body */
"From: %@" = "От: %@";
/* notification */
"New events" = "Новые события";
/* notification */
"New messages" = "Новые сообщения";
/* notification body */
"New messages in %d chats" = "Новые сообщения в %d разговоре(ах)";
Created by EP on 30/07/2024.
Copyright © 2024 SimpleX Chat. All rights reserved.
*/
+18 -28
View File
@@ -156,11 +156,6 @@
6442E0BE2880182D00CEC0F9 /* GroupChatInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6442E0BD2880182D00CEC0F9 /* GroupChatInfoView.swift */; };
64466DCC29FFE3E800E3D48D /* MailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64466DCB29FFE3E800E3D48D /* MailView.swift */; };
6448BBB628FA9D56000D2AB9 /* GroupLinkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6448BBB528FA9D56000D2AB9 /* GroupLinkView.swift */; };
6449333A2AF8E51000AC506E /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 644933352AF8E51000AC506E /* libgmpxx.a */; };
6449333B2AF8E51000AC506E /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 644933362AF8E51000AC506E /* libgmp.a */; };
6449333C2AF8E51000AC506E /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 644933372AF8E51000AC506E /* libffi.a */; };
6449333D2AF8E51000AC506E /* libHSsimplex-chat-5.4.0.3-EnhmkSQK6HvJ11g1uZERg8-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 644933382AF8E51000AC506E /* libHSsimplex-chat-5.4.0.3-EnhmkSQK6HvJ11g1uZERg8-ghc9.6.3.a */; };
6449333E2AF8E51000AC506E /* libHSsimplex-chat-5.4.0.3-EnhmkSQK6HvJ11g1uZERg8.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 644933392AF8E51000AC506E /* libHSsimplex-chat-5.4.0.3-EnhmkSQK6HvJ11g1uZERg8.a */; };
644EFFDE292BCD9D00525D5B /* ComposeVoiceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 644EFFDD292BCD9D00525D5B /* ComposeVoiceView.swift */; };
644EFFE0292CFD7F00525D5B /* CIVoiceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 644EFFDF292CFD7F00525D5B /* CIVoiceView.swift */; };
644EFFE2292D089800525D5B /* FramedCIVoiceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 644EFFE1292D089800525D5B /* FramedCIVoiceView.swift */; };
@@ -172,9 +167,9 @@
648010AB281ADD15009009B9 /* CIFileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 648010AA281ADD15009009B9 /* CIFileView.swift */; };
648679AB2BC96A74006456E7 /* ChatItemForwardingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 648679AA2BC96A74006456E7 /* ChatItemForwardingView.swift */; };
649B28DD2CFE07CF00536B68 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28D82CFE07CF00536B68 /* libffi.a */; };
649B28DE2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.5-592uBhlQO6KIf70TJf5KpP-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28D92CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.5-592uBhlQO6KIf70TJf5KpP-ghc9.6.3.a */; };
649B28DE2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28D92CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo-ghc9.6.3.a */; };
649B28DF2CFE07CF00536B68 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28DA2CFE07CF00536B68 /* libgmpxx.a */; };
649B28E02CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.5-592uBhlQO6KIf70TJf5KpP.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28DB2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.5-592uBhlQO6KIf70TJf5KpP.a */; };
649B28E02CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28DB2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo.a */; };
649B28E12CFE07CF00536B68 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28DC2CFE07CF00536B68 /* libgmp.a */; };
649BCDA0280460FD00C3A862 /* ComposeImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649BCD9F280460FD00C3A862 /* ComposeImageView.swift */; };
649BCDA22805D6EF00C3A862 /* CIImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649BCDA12805D6EF00C3A862 /* CIImageView.swift */; };
@@ -509,11 +504,6 @@
6442E0BD2880182D00CEC0F9 /* GroupChatInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupChatInfoView.swift; sourceTree = "<group>"; };
64466DCB29FFE3E800E3D48D /* MailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MailView.swift; sourceTree = "<group>"; };
6448BBB528FA9D56000D2AB9 /* GroupLinkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupLinkView.swift; sourceTree = "<group>"; };
644933352AF8E51000AC506E /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = "<group>"; };
644933362AF8E51000AC506E /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = "<group>"; };
644933372AF8E51000AC506E /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = "<group>"; };
644933382AF8E51000AC506E /* libHSsimplex-chat-5.4.0.3-EnhmkSQK6HvJ11g1uZERg8-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.4.0.3-EnhmkSQK6HvJ11g1uZERg8-ghc9.6.3.a"; sourceTree = "<group>"; };
644933392AF8E51000AC506E /* libHSsimplex-chat-5.4.0.3-EnhmkSQK6HvJ11g1uZERg8.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.4.0.3-EnhmkSQK6HvJ11g1uZERg8.a"; sourceTree = "<group>"; };
644EFFDD292BCD9D00525D5B /* ComposeVoiceView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeVoiceView.swift; sourceTree = "<group>"; };
644EFFDF292CFD7F00525D5B /* CIVoiceView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIVoiceView.swift; sourceTree = "<group>"; };
644EFFE1292D089800525D5B /* FramedCIVoiceView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FramedCIVoiceView.swift; sourceTree = "<group>"; };
@@ -526,9 +516,9 @@
648679AA2BC96A74006456E7 /* ChatItemForwardingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatItemForwardingView.swift; sourceTree = "<group>"; };
6493D667280ED77F007A76FB /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
649B28D82CFE07CF00536B68 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = "<group>"; };
649B28D92CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.5-592uBhlQO6KIf70TJf5KpP-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.2.0.5-592uBhlQO6KIf70TJf5KpP-ghc9.6.3.a"; sourceTree = "<group>"; };
649B28D92CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo-ghc9.6.3.a"; sourceTree = "<group>"; };
649B28DA2CFE07CF00536B68 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = "<group>"; };
649B28DB2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.5-592uBhlQO6KIf70TJf5KpP.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.2.0.5-592uBhlQO6KIf70TJf5KpP.a"; sourceTree = "<group>"; };
649B28DB2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo.a"; sourceTree = "<group>"; };
649B28DC2CFE07CF00536B68 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = "<group>"; };
649BCD9F280460FD00C3A862 /* ComposeImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeImageView.swift; sourceTree = "<group>"; };
649BCDA12805D6EF00C3A862 /* CIImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIImageView.swift; sourceTree = "<group>"; };
@@ -681,9 +671,9 @@
5CE2BA93284534B000EC33A6 /* libiconv.tbd in Frameworks */,
649B28E12CFE07CF00536B68 /* libgmp.a in Frameworks */,
5CE2BA94284534BB00EC33A6 /* libz.tbd in Frameworks */,
649B28E02CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.5-592uBhlQO6KIf70TJf5KpP.a in Frameworks */,
649B28E02CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo.a in Frameworks */,
CE38A29C2C3FCD72005ED185 /* SwiftyGif in Frameworks */,
649B28DE2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.5-592uBhlQO6KIf70TJf5KpP-ghc9.6.3.a in Frameworks */,
649B28DE2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo-ghc9.6.3.a in Frameworks */,
649B28DD2CFE07CF00536B68 /* libffi.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -764,8 +754,8 @@
649B28D82CFE07CF00536B68 /* libffi.a */,
649B28DC2CFE07CF00536B68 /* libgmp.a */,
649B28DA2CFE07CF00536B68 /* libgmpxx.a */,
649B28D92CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.5-592uBhlQO6KIf70TJf5KpP-ghc9.6.3.a */,
649B28DB2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.5-592uBhlQO6KIf70TJf5KpP.a */,
649B28D92CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo-ghc9.6.3.a */,
649B28DB2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo.a */,
);
path = Libraries;
sourceTree = "<group>";
@@ -1941,7 +1931,7 @@
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 251;
CURRENT_PROJECT_VERSION = 253;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
@@ -1990,7 +1980,7 @@
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 251;
CURRENT_PROJECT_VERSION = 253;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
@@ -2031,7 +2021,7 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 251;
CURRENT_PROJECT_VERSION = 253;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
@@ -2051,7 +2041,7 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 251;
CURRENT_PROJECT_VERSION = 253;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
@@ -2076,7 +2066,7 @@
CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 251;
CURRENT_PROJECT_VERSION = 253;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
GCC_OPTIMIZATION_LEVEL = s;
@@ -2113,7 +2103,7 @@
CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 251;
CURRENT_PROJECT_VERSION = 253;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
ENABLE_CODE_COVERAGE = NO;
@@ -2150,7 +2140,7 @@
CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES;
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 251;
CURRENT_PROJECT_VERSION = 253;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
DYLIB_COMPATIBILITY_VERSION = 1;
@@ -2201,7 +2191,7 @@
CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES;
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 251;
CURRENT_PROJECT_VERSION = 253;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
DYLIB_COMPATIBILITY_VERSION = 1;
@@ -2252,7 +2242,7 @@
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CODE_SIGN_ENTITLEMENTS = "SimpleX SE/SimpleX SE.entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 251;
CURRENT_PROJECT_VERSION = 253;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
@@ -2286,7 +2276,7 @@
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CODE_SIGN_ENTITLEMENTS = "SimpleX SE/SimpleX SE.entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 251;
CURRENT_PROJECT_VERSION = 253;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
+2 -1
View File
@@ -1962,8 +1962,9 @@ public struct GroupProfile: Codable, NamedChat, Hashable {
}
public struct BusinessChatInfo: Decodable, Hashable {
public var memberId: String
public var chatType: BusinessChatType
public var businessId: String
public var customerId: String
}
public enum BusinessChatType: String, Codable, Hashable {
+21 -21
View File
@@ -1905,27 +1905,6 @@
/* No comment provided by engineer. */
"Group links" = "Групови линкове";
/* No comment provided by engineer. */
"Members can add message reactions." = "Членовете на групата могат да добавят реакции към съобщенията.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Членовете на групата могат необратимо да изтриват изпратените съобщения. (24 часа)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Членовете на групата могат да изпращат лични съобщения.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Членовете на групата могат да изпращат изчезващи съобщения.";
/* No comment provided by engineer. */
"Members can send files and media." = "Членовете на групата могат да изпращат файлове и медия.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Членовете на групата могат да изпращат SimpleX линкове.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Членовете на групата могат да изпращат гласови съобщения.";
/* notification */
"Group message:" = "Групово съобщение:";
@@ -2376,6 +2355,27 @@
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "Членът ще бъде премахнат от групата - това не може да бъде отменено!";
/* No comment provided by engineer. */
"Members can add message reactions." = "Членовете на групата могат да добавят реакции към съобщенията.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Членовете на групата могат необратимо да изтриват изпратените съобщения. (24 часа)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Членовете на групата могат да изпращат лични съобщения.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Членовете на групата могат да изпращат изчезващи съобщения.";
/* No comment provided by engineer. */
"Members can send files and media." = "Членовете на групата могат да изпращат файлове и медия.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Членовете на групата могат да изпращат SimpleX линкове.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Членовете на групата могат да изпращат гласови съобщения.";
/* item status text */
"Message delivery error" = "Грешка при доставката на съобщението";
+18 -18
View File
@@ -1544,24 +1544,6 @@
/* No comment provided by engineer. */
"Group links" = "Odkazy na skupiny";
/* No comment provided by engineer. */
"Members can add message reactions." = "Členové skupin mohou přidávat reakce na zprávy.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Členové skupiny mohou nevratně mazat odeslané zprávy. (24 hodin)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Členové skupiny mohou posílat přímé zprávy.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Členové skupiny mohou posílat mizící zprávy.";
/* No comment provided by engineer. */
"Members can send files and media." = "Členové skupiny mohou posílat soubory a média.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Členové skupiny mohou posílat hlasové zprávy.";
/* notification */
"Group message:" = "Skupinová zpráva:";
@@ -1934,6 +1916,24 @@
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "Člen bude odstraněn ze skupiny - toto nelze vzít zpět!";
/* No comment provided by engineer. */
"Members can add message reactions." = "Členové skupin mohou přidávat reakce na zprávy.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Členové skupiny mohou nevratně mazat odeslané zprávy. (24 hodin)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Členové skupiny mohou posílat přímé zprávy.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Členové skupiny mohou posílat mizící zprávy.";
/* No comment provided by engineer. */
"Members can send files and media." = "Členové skupiny mohou posílat soubory a média.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Členové skupiny mohou posílat hlasové zprávy.";
/* item status text */
"Message delivery error" = "Chyba doručení zprávy";
+24 -27
View File
@@ -892,7 +892,7 @@
"Change self-destruct passcode" = "Selbstzerstörungs-Zugangscode ändern";
/* authentication reason */
"Change user profiles" = "Chat-Profile wechseln";
"Change chat profiles" = "Chat-Profile wechseln";
/* chat item text */
"changed address for you" = "Wechselte die Empfängeradresse von Ihnen";
@@ -2424,27 +2424,6 @@
/* No comment provided by engineer. */
"Group links" = "Gruppen-Links";
/* No comment provided by engineer. */
"Members can add message reactions." = "Gruppenmitglieder können eine Reaktion auf Nachrichten geben.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Gruppenmitglieder können gesendete Nachrichten unwiederbringlich löschen. (24 Stunden)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Gruppenmitglieder können Direktnachrichten versenden.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Gruppenmitglieder können verschwindende Nachrichten senden.";
/* No comment provided by engineer. */
"Members can send files and media." = "Gruppenmitglieder können Dateien und Medien senden.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Gruppenmitglieder können SimpleX-Links senden.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Gruppenmitglieder können Sprachnachrichten versenden.";
/* notification */
"Group message:" = "Grppennachricht:";
@@ -2934,6 +2913,27 @@
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "Das Mitglied wird aus der Gruppe entfernt. Dies kann nicht rückgängig gemacht werden!";
/* No comment provided by engineer. */
"Members can add message reactions." = "Gruppenmitglieder können eine Reaktion auf Nachrichten geben.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Gruppenmitglieder können gesendete Nachrichten unwiederbringlich löschen. (24 Stunden)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Gruppenmitglieder können Direktnachrichten versenden.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Gruppenmitglieder können verschwindende Nachrichten senden.";
/* No comment provided by engineer. */
"Members can send files and media." = "Gruppenmitglieder können Dateien und Medien senden.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Gruppenmitglieder können SimpleX-Links senden.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Gruppenmitglieder können Sprachnachrichten versenden.";
/* No comment provided by engineer. */
"Menus" = "Menüs";
@@ -3671,9 +3671,6 @@
/* No comment provided by engineer. */
"Push notifications" = "Push-Benachrichtigungen";
/* No comment provided by engineer. */
"Push Notifications" = "Push-Benachrichtigungen";
/* No comment provided by engineer. */
"Push server" = "Push-Server";
@@ -3949,10 +3946,10 @@
"Safer groups" = "Sicherere Gruppen";
/* No comment provided by engineer. */
"Same conditions will apply to operator **%@**." = "Dieselben Nutzungsbedingungen gelten auch für den Betreiber **%@**.";
"The same conditions will apply to operator **%@**." = "Dieselben Nutzungsbedingungen gelten auch für den Betreiber **%@**.";
/* No comment provided by engineer. */
"Same conditions will apply to operator(s): **%@**." = "Dieselben Nutzungsbedingungen gelten auch für den/die Betreiber: **%@**.";
"The same conditions will apply to operator(s): **%@**." = "Dieselben Nutzungsbedingungen gelten auch für den/die Betreiber: **%@**.";
/* alert button
chat item action */
+25 -28
View File
@@ -892,7 +892,7 @@
"Change self-destruct passcode" = "Cambiar código autodestrucción";
/* authentication reason */
"Change user profiles" = "Cambiar perfil de usuario";
"Change chat profiles" = "Cambiar perfil de usuario";
/* chat item text */
"changed address for you" = "ha cambiado tu servidor de envío";
@@ -2424,27 +2424,6 @@
/* No comment provided by engineer. */
"Group links" = "Enlaces de grupo";
/* No comment provided by engineer. */
"Members can add message reactions." = "Los miembros pueden añadir reacciones a los mensajes.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Los miembros del grupo pueden eliminar mensajes de forma irreversible. (24 horas)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Los miembros del grupo pueden enviar mensajes directos.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Los miembros del grupo pueden enviar mensajes temporales.";
/* No comment provided by engineer. */
"Members can send files and media." = "Los miembros del grupo pueden enviar archivos y multimedia.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Los miembros del grupo pueden enviar enlaces SimpleX.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Los miembros del grupo pueden enviar mensajes de voz.";
/* notification */
"Group message:" = "Mensaje de grupo:";
@@ -2934,6 +2913,27 @@
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "El miembro será expulsado del grupo. ¡No podrá deshacerse!";
/* No comment provided by engineer. */
"Members can add message reactions." = "Los miembros pueden añadir reacciones a los mensajes.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Los miembros del grupo pueden eliminar mensajes de forma irreversible. (24 horas)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Los miembros del grupo pueden enviar mensajes directos.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Los miembros del grupo pueden enviar mensajes temporales.";
/* No comment provided by engineer. */
"Members can send files and media." = "Los miembros del grupo pueden enviar archivos y multimedia.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Los miembros del grupo pueden enviar enlaces SimpleX.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Los miembros del grupo pueden enviar mensajes de voz.";
/* No comment provided by engineer. */
"Menus" = "Menus";
@@ -3669,10 +3669,7 @@
"Proxy requires password" = "El proxy requiere contraseña";
/* No comment provided by engineer. */
"Push notifications" = "Notificaciones automáticas";
/* No comment provided by engineer. */
"Push Notifications" = "Notificaciones push";
"Push notifications" = "Notificaciones push";
/* No comment provided by engineer. */
"Push server" = "Servidor push";
@@ -3949,10 +3946,10 @@
"Safer groups" = "Grupos más seguros";
/* No comment provided by engineer. */
"Same conditions will apply to operator **%@**." = "Las mismas condiciones se aplicarán al operador **%@**.";
"The same conditions will apply to operator **%@**." = "Las mismas condiciones se aplicarán al operador **%@**.";
/* No comment provided by engineer. */
"Same conditions will apply to operator(s): **%@**." = "Las mismas condiciones se aplicarán a el/los operador(es) **%@**.";
"The same conditions will apply to operator(s): **%@**." = "Las mismas condiciones se aplicarán a el/los operador(es) **%@**.";
/* alert button
chat item action */
+18 -18
View File
@@ -1520,24 +1520,6 @@
/* No comment provided by engineer. */
"Group links" = "Ryhmälinkit";
/* No comment provided by engineer. */
"Members can add message reactions." = "Ryhmän jäsenet voivat lisätä viestireaktioita.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Ryhmän jäsenet voivat poistaa lähetetyt viestit peruuttamattomasti. (24 tuntia)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Ryhmän jäsenet voivat lähettää suoraviestejä.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Ryhmän jäsenet voivat lähettää katoavia viestejä.";
/* No comment provided by engineer. */
"Members can send files and media." = "Ryhmän jäsenet voivat lähettää tiedostoja ja mediaa.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Ryhmän jäsenet voivat lähettää ääniviestejä.";
/* notification */
"Group message:" = "Ryhmäviesti:";
@@ -1910,6 +1892,24 @@
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "Jäsen poistetaan ryhmästä - tätä ei voi perua!";
/* No comment provided by engineer. */
"Members can add message reactions." = "Ryhmän jäsenet voivat lisätä viestireaktioita.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Ryhmän jäsenet voivat poistaa lähetetyt viestit peruuttamattomasti. (24 tuntia)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Ryhmän jäsenet voivat lähettää suoraviestejä.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Ryhmän jäsenet voivat lähettää katoavia viestejä.";
/* No comment provided by engineer. */
"Members can send files and media." = "Ryhmän jäsenet voivat lähettää tiedostoja ja mediaa.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Ryhmän jäsenet voivat lähettää ääniviestejä.";
/* item status text */
"Message delivery error" = "Viestin toimitusvirhe";
+21 -21
View File
@@ -2301,27 +2301,6 @@
/* No comment provided by engineer. */
"Group links" = "Liens de groupe";
/* No comment provided by engineer. */
"Members can add message reactions." = "Les membres du groupe peuvent ajouter des réactions aux messages.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Les membres du groupe peuvent supprimer de manière irréversible les messages envoyés. (24 heures)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Les membres du groupe peuvent envoyer des messages directs.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Les membres du groupes peuvent envoyer des messages éphémères.";
/* No comment provided by engineer. */
"Members can send files and media." = "Les membres du groupe peuvent envoyer des fichiers et des médias.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Les membres du groupe peuvent envoyer des liens SimpleX.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Les membres du groupe peuvent envoyer des messages vocaux.";
/* notification */
"Group message:" = "Message du groupe:";
@@ -2805,6 +2784,27 @@
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "Ce membre sera retiré du groupe - impossible de revenir en arrière!";
/* No comment provided by engineer. */
"Members can add message reactions." = "Les membres du groupe peuvent ajouter des réactions aux messages.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Les membres du groupe peuvent supprimer de manière irréversible les messages envoyés. (24 heures)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Les membres du groupe peuvent envoyer des messages directs.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Les membres du groupes peuvent envoyer des messages éphémères.";
/* No comment provided by engineer. */
"Members can send files and media." = "Les membres du groupe peuvent envoyer des fichiers et des médias.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Les membres du groupe peuvent envoyer des liens SimpleX.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Les membres du groupe peuvent envoyer des messages vocaux.";
/* No comment provided by engineer. */
"Menus" = "Menus";
+99 -30
View File
@@ -388,6 +388,9 @@
/* No comment provided by engineer. */
"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Cím hozzáadása a profilhoz, hogy az ismerősei megoszthassák másokkal. A profilfrissítés elküldésre kerül az ismerősei számára.";
/* No comment provided by engineer. */
"Add friends" = "Barátok hozzáadása";
/* No comment provided by engineer. */
"Add profile" = "Profil hozzáadása";
@@ -397,12 +400,18 @@
/* No comment provided by engineer. */
"Add servers by scanning QR codes." = "Kiszolgáló hozzáadása QR-kód beolvasásával.";
/* No comment provided by engineer. */
"Add team members" = "Csapattagok hozzáadása";
/* No comment provided by engineer. */
"Add to another device" = "Hozzáadás egy másik eszközhöz";
/* No comment provided by engineer. */
"Add welcome message" = "Üdvözlőüzenet hozzáadása";
/* No comment provided by engineer. */
"Add your team members to the conversations." = "Adja hozzá csapattagjait a beszélgetésekhez.";
/* No comment provided by engineer. */
"Added media & file servers" = "Hozzáadott média- és fájlkiszolgálók";
@@ -770,7 +779,7 @@
"Blur for better privacy." = "Elhomályosítás a jobb adatvédelemért.";
/* No comment provided by engineer. */
"Blur media" = "Média elhomályosítása";
"Blur media" = "Médiatartalom elhomályosítása";
/* No comment provided by engineer. */
"bold" = "félkövér";
@@ -793,6 +802,12 @@
/* No comment provided by engineer. */
"Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Bolgár, finn, thai és ukrán köszönet a felhasználóknak és a [Weblate-nek](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!";
/* No comment provided by engineer. */
"Business address" = "Üzleti cím";
/* No comment provided by engineer. */
"Business chats" = "Üzleti csevegések";
/* No comment provided by engineer. */
"By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." = "A csevegési profillal (alapértelmezett), vagy a [kapcsolattal] (https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BÉTA).";
@@ -892,7 +907,7 @@
"Change self-destruct passcode" = "Önmegsemmisító jelkód megváltoztatása";
/* authentication reason */
"Change user profiles" = "Felhasználói profilok megváltoztatása";
"Change chat profiles" = "Felhasználói profilok megváltoztatása";
/* chat item text */
"changed address for you" = "cím megváltoztatva";
@@ -909,6 +924,15 @@
/* chat item text */
"changing address…" = "cím megváltoztatása…";
/* No comment provided by engineer. */
"Chat" = "Csevegés";
/* No comment provided by engineer. */
"Chat already exists" = "A csevegés már létezik";
/* No comment provided by engineer. */
"Chat already exists!" = "A csevegés már létezik!";
/* No comment provided by engineer. */
"Chat colors" = "Csevegés színei";
@@ -954,6 +978,12 @@
/* No comment provided by engineer. */
"Chat theme" = "Csevegés témája";
/* No comment provided by engineer. */
"Chat will be deleted for all members - this cannot be undone!" = "A csevegés minden tag számára törlésre kerül - ezt a műveletet nem lehet visszavonni!";
/* No comment provided by engineer. */
"Chat will be deleted for you - this cannot be undone!" = "A csevegés törlésre kerül az Ön számára - ezt a műveletet nem lehet visszavonni!";
/* No comment provided by engineer. */
"Chats" = "Csevegések";
@@ -1475,12 +1505,18 @@
/* No comment provided by engineer. */
"Delete and notify contact" = "Törlés, és az ismerős értesítése";
/* No comment provided by engineer. */
"Delete chat" = "Csevegés törlése";
/* No comment provided by engineer. */
"Delete chat profile" = "Csevegési profil törlése";
/* No comment provided by engineer. */
"Delete chat profile?" = "Csevegési profil törlése?";
/* No comment provided by engineer. */
"Delete chat?" = "Csevegés törlése?";
/* No comment provided by engineer. */
"Delete connection" = "Kapcsolat törlése";
@@ -1655,6 +1691,9 @@
/* chat feature */
"Direct messages" = "Közvetlen üzenetek";
/* No comment provided by engineer. */
"Direct messages between members are prohibited in this chat." = "A tagok közötti közvetlen üzenetek le vannak tiltva ebben a csevegésben.";
/* No comment provided by engineer. */
"Direct messages between members are prohibited." = "A közvetlen üzenetek küldése a tagok között le van tiltva ebben a csoportban.";
@@ -2424,27 +2463,6 @@
/* No comment provided by engineer. */
"Group links" = "Csoporthivatkozások";
/* No comment provided by engineer. */
"Members can add message reactions." = "Csoporttagok üzenetreakciókat adhatnak hozzá.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "A csoport tagjai véglegesen törölhetik az elküldött üzeneteiket. (24 óra)";
/* No comment provided by engineer. */
"Members can send direct messages." = "A csoport tagjai küldhetnek egymásnak közvetlen üzeneteket.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "A csoport tagjai küldhetnek eltűnő üzeneteket.";
/* No comment provided by engineer. */
"Members can send files and media." = "A csoport tagjai küldhetnek fájlokat és médiatartalmakat.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "A csoport tagjai küldhetnek SimpleX-hivatkozásokat.";
/* No comment provided by engineer. */
"Members can send voice messages." = "A csoport tagjai küldhetnek hangüzeneteket.";
/* notification */
"Group message:" = "Csoport üzenet:";
@@ -2715,6 +2733,9 @@
/* No comment provided by engineer. */
"Invite members" = "Tagok meghívása";
/* No comment provided by engineer. */
"Invite to chat" = "Meghívás a csevegésbe";
/* No comment provided by engineer. */
"Invite to group" = "Meghívás a csoportba";
@@ -2829,6 +2850,12 @@
/* swipe action */
"Leave" = "Elhagyás";
/* No comment provided by engineer. */
"Leave chat" = "Csevegés elhagyása";
/* No comment provided by engineer. */
"Leave chat?" = "Csevegés elhagyása?";
/* No comment provided by engineer. */
"Leave group" = "Csoport elhagyása";
@@ -2925,15 +2952,42 @@
/* item status text */
"Member inactive" = "Inaktív tag";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". All chat members will be notified." = "A tag szerepeköre meg fog változni a következőre: \"%@\". A csevegés tagjai értesítést fognak kapni.";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". All group members will be notified." = "A tag szerepköre meg fog változni erre: „%@”. A csoportban az összes tag értesítve lesz.";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". The member will receive a new invitation." = "A tag szerepköre meg fog változni erre: „%@”. A tag új meghívást fog kapni.";
/* No comment provided by engineer. */
"Member will be removed from chat - this cannot be undone!" = "A tag el lesz távolítva a csevegésből - ezt a műveletet nem lehet visszavonni!";
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "A tag eltávolítása a csoportból - ez a művelet nem vonható vissza!";
/* No comment provided by engineer. */
"Members can add message reactions." = "Csoporttagok üzenetreakciókat adhatnak hozzá.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "A csoport tagjai véglegesen törölhetik az elküldött üzeneteiket. (24 óra)";
/* No comment provided by engineer. */
"Members can send direct messages." = "A csoport tagjai küldhetnek egymásnak közvetlen üzeneteket.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "A csoport tagjai küldhetnek eltűnő üzeneteket.";
/* No comment provided by engineer. */
"Members can send files and media." = "A csoport tagjai küldhetnek fájlokat és médiatartalmakat.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "A csoport tagjai küldhetnek SimpleX-hivatkozásokat.";
/* No comment provided by engineer. */
"Members can send voice messages." = "A csoport tagjai küldhetnek hangüzeneteket.";
/* No comment provided by engineer. */
"Menus" = "Menük";
@@ -3329,6 +3383,9 @@
/* No comment provided by engineer. */
"Onion hosts will not be used." = "Onion-kiszolgálók nem lesznek használva.";
/* No comment provided by engineer. */
"Only chat owners can change preferences." = "Csak a csevegés tulajdonosai módosíthatják a beállításokat.";
/* No comment provided by engineer. */
"Only client devices store user profiles, contacts, groups, and messages." = "Csak az eszközök alkalmazásai tárolják a felhasználó-profilokat, névjegyeket, csoportokat és a **2 rétegű végpontok közötti titkosítással** küldött üzeneteket.";
@@ -3407,6 +3464,9 @@
/* alert title */
"Operator server" = "Kiszolgáló üzemeltető";
/* No comment provided by engineer. */
"Or import archive file" = "Vagy archívumfájl importálása";
/* No comment provided by engineer. */
"Or paste archive link" = "Vagy az archívum hivatkozásának beillesztése";
@@ -3575,6 +3635,9 @@
/* No comment provided by engineer. */
"Privacy & security" = "Adatvédelem és biztonság";
/* No comment provided by engineer. */
"Privacy for your customers." = "Az Ön ügyfeleinek adatvédelme.";
/* No comment provided by engineer. */
"Privacy redefined" = "Adatvédelem újraértelmezve";
@@ -3671,9 +3734,6 @@
/* No comment provided by engineer. */
"Push notifications" = "Push-értesítések";
/* No comment provided by engineer. */
"Push Notifications" = "Push értesítések";
/* No comment provided by engineer. */
"Push server" = "Push-kiszolgáló";
@@ -3949,10 +4009,10 @@
"Safer groups" = "Biztonságosabb csoportok";
/* No comment provided by engineer. */
"Same conditions will apply to operator **%@**." = "Ugyanezek a feltételek vonatkoznak a következő üzemeltetőre is: **%@**.";
"The same conditions will apply to operator **%@**." = "Ugyanezek a feltételek vonatkoznak a következő üzemeltetőre is: **%@**.";
/* No comment provided by engineer. */
"Same conditions will apply to operator(s): **%@**." = "Ugyanezek a feltételek lesznek elfogadva a következő üzemeltető(k)re is: **%@**.";
"The same conditions will apply to operator(s): **%@**." = "Ugyanezek a feltételek lesznek elfogadva a következő üzemeltető(k)re is: **%@**.";
/* alert button
chat item action */
@@ -4007,10 +4067,10 @@
"Saved" = "Mentett";
/* No comment provided by engineer. */
"Saved from" = "Mentve innen:";
"Saved from" = "Elmentve innen:";
/* No comment provided by engineer. */
"saved from %@" = "mentve innen: %@";
"saved from %@" = "elmentve innen: %@";
/* message info title */
"Saved message" = "Mentett üzenet";
@@ -4580,6 +4640,9 @@
/* No comment provided by engineer. */
"Tap button " = "Koppintson a ";
/* No comment provided by engineer. */
"Tap Create SimpleX address in the menu to create it later." = "Koppintson a SimpleX-cím létrehozása menüpontra a későbbi létrehozáshoz.";
/* No comment provided by engineer. */
"Tap to activate profile." = "A profil aktiválásához koppintson az ikonra.";
@@ -5282,6 +5345,9 @@
/* No comment provided by engineer. */
"You are already connected to %@." = "Ön már kapcsolódva van ehhez: %@.";
/* No comment provided by engineer. */
"You are already connected with %@." = "Ön már kapcsolódva van vele: %@.";
/* No comment provided by engineer. */
"You are already connecting to %@." = "Már folyamatban van a kapcsolódás ehhez: %@.";
@@ -5480,6 +5546,9 @@
/* No comment provided by engineer. */
"You will still receive calls and notifications from muted profiles when they are active." = "Továbbra is kap hívásokat és értesítéseket a némított profiloktól, ha azok aktívak.";
/* No comment provided by engineer. */
"You will stop receiving messages from this chat. Chat history will be preserved." = "Ön nem fog több üzenetet kapni ebből a csevegésből, de a csevegés előzményei megmaradnak.";
/* No comment provided by engineer. */
"You will stop receiving messages from this group. Chat history will be preserved." = "Ettől a csoporttól nem fog értesítéseket kapni. A csevegési előzmények megmaradnak.";
+96 -27
View File
@@ -388,6 +388,9 @@
/* No comment provided by engineer. */
"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Aggiungi l'indirizzo al tuo profilo, in modo che i tuoi contatti possano condividerlo con altre persone. L'aggiornamento del profilo verrà inviato ai tuoi contatti.";
/* No comment provided by engineer. */
"Add friends" = "Aggiungi amici";
/* No comment provided by engineer. */
"Add profile" = "Aggiungi profilo";
@@ -397,12 +400,18 @@
/* No comment provided by engineer. */
"Add servers by scanning QR codes." = "Aggiungi server scansionando codici QR.";
/* No comment provided by engineer. */
"Add team members" = "Aggiungi membri del team";
/* No comment provided by engineer. */
"Add to another device" = "Aggiungi ad un altro dispositivo";
/* No comment provided by engineer. */
"Add welcome message" = "Aggiungi messaggio di benvenuto";
/* No comment provided by engineer. */
"Add your team members to the conversations." = "Aggiungi i membri del tuo team alle conversazioni.";
/* No comment provided by engineer. */
"Added media & file servers" = "Server di multimediali e file aggiunti";
@@ -793,6 +802,12 @@
/* No comment provided by engineer. */
"Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Bulgaro, finlandese, tailandese e ucraino - grazie agli utenti e a [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!";
/* No comment provided by engineer. */
"Business address" = "Indirizzo di lavoro";
/* No comment provided by engineer. */
"Business chats" = "Chat di lavoro";
/* No comment provided by engineer. */
"By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." = "Per profilo di chat (predefinito) o [per connessione](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).";
@@ -892,7 +907,7 @@
"Change self-destruct passcode" = "Cambia codice di autodistruzione";
/* authentication reason */
"Change user profiles" = "Modifica profili utente";
"Change chat profiles" = "Modifica profili utente";
/* chat item text */
"changed address for you" = "indirizzo cambiato per te";
@@ -909,6 +924,15 @@
/* chat item text */
"changing address…" = "cambio indirizzo…";
/* No comment provided by engineer. */
"Chat" = "Chat";
/* No comment provided by engineer. */
"Chat already exists" = "La chat esiste già";
/* No comment provided by engineer. */
"Chat already exists!" = "La chat esiste già!";
/* No comment provided by engineer. */
"Chat colors" = "Colori della chat";
@@ -954,6 +978,12 @@
/* No comment provided by engineer. */
"Chat theme" = "Tema della chat";
/* No comment provided by engineer. */
"Chat will be deleted for all members - this cannot be undone!" = "La chat verrà eliminata per tutti i membri, non è reversibile!";
/* No comment provided by engineer. */
"Chat will be deleted for you - this cannot be undone!" = "La chat verrà eliminata solo per te, non è reversibile!";
/* No comment provided by engineer. */
"Chats" = "Chat";
@@ -1475,12 +1505,18 @@
/* No comment provided by engineer. */
"Delete and notify contact" = "Elimina e avvisa il contatto";
/* No comment provided by engineer. */
"Delete chat" = "Elimina chat";
/* No comment provided by engineer. */
"Delete chat profile" = "Elimina il profilo di chat";
/* No comment provided by engineer. */
"Delete chat profile?" = "Eliminare il profilo di chat?";
/* No comment provided by engineer. */
"Delete chat?" = "Eliminare la chat?";
/* No comment provided by engineer. */
"Delete connection" = "Elimina connessione";
@@ -1655,6 +1691,9 @@
/* chat feature */
"Direct messages" = "Messaggi diretti";
/* No comment provided by engineer. */
"Direct messages between members are prohibited in this chat." = "I messaggi diretti tra i membri sono vietati in questa chat.";
/* No comment provided by engineer. */
"Direct messages between members are prohibited." = "I messaggi diretti tra i membri sono vietati in questo gruppo.";
@@ -2424,27 +2463,6 @@
/* No comment provided by engineer. */
"Group links" = "Link del gruppo";
/* No comment provided by engineer. */
"Members can add message reactions." = "I membri del gruppo possono aggiungere reazioni ai messaggi.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "I membri del gruppo possono eliminare irreversibilmente i messaggi inviati. (24 ore)";
/* No comment provided by engineer. */
"Members can send direct messages." = "I membri del gruppo possono inviare messaggi diretti.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "I membri del gruppo possono inviare messaggi a tempo.";
/* No comment provided by engineer. */
"Members can send files and media." = "I membri del gruppo possono inviare file e contenuti multimediali.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "I membri del gruppo possono inviare link di Simplex.";
/* No comment provided by engineer. */
"Members can send voice messages." = "I membri del gruppo possono inviare messaggi vocali.";
/* notification */
"Group message:" = "Messaggio del gruppo:";
@@ -2715,6 +2733,9 @@
/* No comment provided by engineer. */
"Invite members" = "Invita membri";
/* No comment provided by engineer. */
"Invite to chat" = "Invita in chat";
/* No comment provided by engineer. */
"Invite to group" = "Invita al gruppo";
@@ -2829,6 +2850,12 @@
/* swipe action */
"Leave" = "Esci";
/* No comment provided by engineer. */
"Leave chat" = "Esci dalla chat";
/* No comment provided by engineer. */
"Leave chat?" = "Uscire dalla chat?";
/* No comment provided by engineer. */
"Leave group" = "Esci dal gruppo";
@@ -2925,15 +2952,42 @@
/* item status text */
"Member inactive" = "Membro inattivo";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". All chat members will be notified." = "Il ruolo del membro verrà cambiato in \"%@\". Verranno notificati tutti i membri della chat.";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". All group members will be notified." = "Il ruolo del membro verrà cambiato in \"%@\". Tutti i membri del gruppo verranno avvisati.";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". The member will receive a new invitation." = "Il ruolo del membro verrà cambiato in \"%@\". Il membro riceverà un invito nuovo.";
/* No comment provided by engineer. */
"Member will be removed from chat - this cannot be undone!" = "Il membro verrà rimosso dalla chat, non è reversibile!";
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "Il membro verrà rimosso dal gruppo, non è reversibile!";
/* No comment provided by engineer. */
"Members can add message reactions." = "I membri del gruppo possono aggiungere reazioni ai messaggi.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "I membri del gruppo possono eliminare irreversibilmente i messaggi inviati. (24 ore)";
/* No comment provided by engineer. */
"Members can send direct messages." = "I membri del gruppo possono inviare messaggi diretti.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "I membri del gruppo possono inviare messaggi a tempo.";
/* No comment provided by engineer. */
"Members can send files and media." = "I membri del gruppo possono inviare file e contenuti multimediali.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "I membri del gruppo possono inviare link di Simplex.";
/* No comment provided by engineer. */
"Members can send voice messages." = "I membri del gruppo possono inviare messaggi vocali.";
/* No comment provided by engineer. */
"Menus" = "Menu";
@@ -3329,6 +3383,9 @@
/* No comment provided by engineer. */
"Onion hosts will not be used." = "Gli host Onion non verranno usati.";
/* No comment provided by engineer. */
"Only chat owners can change preferences." = "Solo i proprietari della chat possono modificarne le preferenze.";
/* No comment provided by engineer. */
"Only client devices store user profiles, contacts, groups, and messages." = "Solo i dispositivi client archiviano profili utente, i contatti, i gruppi e i messaggi inviati con la **crittografia end-to-end a 2 livelli**.";
@@ -3407,6 +3464,9 @@
/* alert title */
"Operator server" = "Server dell'operatore";
/* No comment provided by engineer. */
"Or import archive file" = "O importa file archivio";
/* No comment provided by engineer. */
"Or paste archive link" = "O incolla il link dell'archivio";
@@ -3575,6 +3635,9 @@
/* No comment provided by engineer. */
"Privacy & security" = "Privacy e sicurezza";
/* No comment provided by engineer. */
"Privacy for your customers." = "Privacy per i tuoi clienti.";
/* No comment provided by engineer. */
"Privacy redefined" = "Privacy ridefinita";
@@ -3671,9 +3734,6 @@
/* No comment provided by engineer. */
"Push notifications" = "Notifiche push";
/* No comment provided by engineer. */
"Push Notifications" = "Notifiche push";
/* No comment provided by engineer. */
"Push server" = "Server push";
@@ -3949,10 +4009,10 @@
"Safer groups" = "Gruppi più sicuri";
/* No comment provided by engineer. */
"Same conditions will apply to operator **%@**." = "Le stesse condizioni si applicheranno all'operatore **%@**.";
"The same conditions will apply to operator **%@**." = "Le stesse condizioni si applicheranno all'operatore **%@**.";
/* No comment provided by engineer. */
"Same conditions will apply to operator(s): **%@**." = "Le stesse condizioni si applicheranno agli operatori **%@**.";
"The same conditions will apply to operator(s): **%@**." = "Le stesse condizioni si applicheranno agli operatori **%@**.";
/* alert button
chat item action */
@@ -4580,6 +4640,9 @@
/* No comment provided by engineer. */
"Tap button " = "Tocca il pulsante ";
/* No comment provided by engineer. */
"Tap Create SimpleX address in the menu to create it later." = "Tocca \"Crea indirizzo SimpleX\" nel menu per crearlo più tardi.";
/* No comment provided by engineer. */
"Tap to activate profile." = "Tocca per attivare il profilo.";
@@ -5282,6 +5345,9 @@
/* No comment provided by engineer. */
"You are already connected to %@." = "Sei già connesso/a a %@.";
/* No comment provided by engineer. */
"You are already connected with %@." = "Sei già connesso/a con %@.";
/* No comment provided by engineer. */
"You are already connecting to %@." = "Ti stai già connettendo a %@.";
@@ -5480,6 +5546,9 @@
/* No comment provided by engineer. */
"You will still receive calls and notifications from muted profiles when they are active." = "Continuerai a ricevere chiamate e notifiche da profili silenziati quando sono attivi.";
/* No comment provided by engineer. */
"You will stop receiving messages from this chat. Chat history will be preserved." = "Non riceverai più messaggi da questa chat. La cronologia della chat verrà conservata.";
/* No comment provided by engineer. */
"You will stop receiving messages from this group. Chat history will be preserved." = "Non riceverai più messaggi da questo gruppo. La cronologia della chat verrà conservata.";
+18 -18
View File
@@ -1661,24 +1661,6 @@
/* No comment provided by engineer. */
"Group links" = "グループのリンク";
/* No comment provided by engineer. */
"Members can add message reactions." = "グループメンバーはメッセージへのリアクションを追加できます。";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "グループのメンバーがメッセージを完全削除することができます。(24時間)";
/* No comment provided by engineer. */
"Members can send direct messages." = "グループのメンバーがダイレクトメッセージを送信できます。";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "グループのメンバーが消えるメッセージを送信できます。";
/* No comment provided by engineer. */
"Members can send files and media." = "グループメンバーはファイルやメディアを送信できます。";
/* No comment provided by engineer. */
"Members can send voice messages." = "グループのメンバーが音声メッセージを送信できます。";
/* notification */
"Group message:" = "グループメッセージ:";
@@ -2051,6 +2033,24 @@
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "メンバーをグループから除名する (※元に戻せません※)!";
/* No comment provided by engineer. */
"Members can add message reactions." = "グループメンバーはメッセージへのリアクションを追加できます。";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "グループのメンバーがメッセージを完全削除することができます。(24時間)";
/* No comment provided by engineer. */
"Members can send direct messages." = "グループのメンバーがダイレクトメッセージを送信できます。";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "グループのメンバーが消えるメッセージを送信できます。";
/* No comment provided by engineer. */
"Members can send files and media." = "グループメンバーはファイルやメディアを送信できます。";
/* No comment provided by engineer. */
"Members can send voice messages." = "グループのメンバーが音声メッセージを送信できます。";
/* item status text */
"Message delivery error" = "メッセージ送信エラー";
+118 -49
View File
@@ -388,6 +388,9 @@
/* No comment provided by engineer. */
"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Voeg een adres toe aan uw profiel, zodat uw contacten het met andere mensen kunnen delen. Profiel update wordt naar uw contacten verzonden.";
/* No comment provided by engineer. */
"Add friends" = "Vrienden toevoegen";
/* No comment provided by engineer. */
"Add profile" = "Profiel toevoegen";
@@ -397,12 +400,18 @@
/* No comment provided by engineer. */
"Add servers by scanning QR codes." = "Servers toevoegen door QR-codes te scannen.";
/* No comment provided by engineer. */
"Add team members" = "Teamleden toevoegen";
/* No comment provided by engineer. */
"Add to another device" = "Toevoegen aan een ander apparaat";
/* No comment provided by engineer. */
"Add welcome message" = "Welkom bericht toevoegen";
/* No comment provided by engineer. */
"Add your team members to the conversations." = "Voeg uw teamleden toe aan de gesprekken.";
/* No comment provided by engineer. */
"Added media & file servers" = "Media- en bestandsservers toegevoegd";
@@ -512,7 +521,7 @@
"Allow downgrade" = "Downgraden toestaan";
/* No comment provided by engineer. */
"Allow irreversible message deletion only if your contact allows it to you. (24 hours)" = "Sta het onomkeerbaar verwijderen van berichten alleen toe als uw contact dit toestaat. (24 uur)";
"Allow irreversible message deletion only if your contact allows it to you. (24 hours)" = "Sta het definitief verwijderen van berichten alleen toe als uw contact dit toestaat. (24 uur)";
/* No comment provided by engineer. */
"Allow message reactions only if your contact allows them." = "Sta bericht reacties alleen toe als uw contact dit toestaat.";
@@ -530,7 +539,7 @@
"Allow sharing" = "Delen toestaan";
/* No comment provided by engineer. */
"Allow to irreversibly delete sent messages. (24 hours)" = "Sta toe om verzonden berichten onomkeerbaar te verwijderen. (24 uur)";
"Allow to irreversibly delete sent messages. (24 hours)" = "Sta toe om verzonden berichten definitief te verwijderen. (24 uur)";
/* No comment provided by engineer. */
"Allow to send files and media." = "Sta toe om bestanden en media te verzenden.";
@@ -554,7 +563,7 @@
"Allow your contacts to call you." = "Sta toe dat uw contacten u bellen.";
/* No comment provided by engineer. */
"Allow your contacts to irreversibly delete sent messages. (24 hours)" = "Laat uw contacten verzonden berichten onomkeerbaar verwijderen. (24 uur)";
"Allow your contacts to irreversibly delete sent messages. (24 hours)" = "Laat uw contacten verzonden berichten definitief verwijderen. (24 uur)";
/* No comment provided by engineer. */
"Allow your contacts to send disappearing messages." = "Sta toe dat uw contacten verdwijnende berichten verzenden.";
@@ -659,7 +668,7 @@
"Audio/video calls" = "Audio/video oproepen";
/* No comment provided by engineer. */
"Audio/video calls are prohibited." = "Audio/video gesprekken zijn verboden.";
"Audio/video calls are prohibited." = "Audio/video gesprekken zijn niet toegestaan.";
/* PIN entry */
"Authentication cancelled" = "Verificatie geannuleerd";
@@ -793,6 +802,12 @@
/* No comment provided by engineer. */
"Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Bulgaars, Fins, Thais en Oekraïens - dankzij de gebruikers en [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!";
/* No comment provided by engineer. */
"Business address" = "Zakelijk adres";
/* No comment provided by engineer. */
"Business chats" = "Zakelijke chats";
/* No comment provided by engineer. */
"By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." = "Via chatprofiel (standaard) of [via verbinding](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).";
@@ -815,7 +830,7 @@
"Calls" = "Oproepen";
/* No comment provided by engineer. */
"Calls prohibited!" = "Bellen verboden!";
"Calls prohibited!" = "Bellen niet toegestaan!";
/* No comment provided by engineer. */
"Camera not available" = "Camera niet beschikbaar";
@@ -892,7 +907,7 @@
"Change self-destruct passcode" = "Zelfvernietigings code wijzigen";
/* authentication reason */
"Change user profiles" = "Gebruikersprofielen wijzigen";
"Change chat profiles" = "Gebruikersprofielen wijzigen";
/* chat item text */
"changed address for you" = "adres voor u gewijzigd";
@@ -909,6 +924,15 @@
/* chat item text */
"changing address…" = "adres wijzigen…";
/* No comment provided by engineer. */
"Chat" = "Chat";
/* No comment provided by engineer. */
"Chat already exists" = "Chat bestaat al";
/* No comment provided by engineer. */
"Chat already exists!" = "Chat bestaat al!";
/* No comment provided by engineer. */
"Chat colors" = "Chat kleuren";
@@ -954,6 +978,12 @@
/* No comment provided by engineer. */
"Chat theme" = "Chat thema";
/* No comment provided by engineer. */
"Chat will be deleted for all members - this cannot be undone!" = "De chat wordt voor alle leden verwijderd - dit kan niet ongedaan worden gemaakt!";
/* No comment provided by engineer. */
"Chat will be deleted for you - this cannot be undone!" = "De chat wordt voor je verwijderd - dit kan niet ongedaan worden gemaakt!";
/* No comment provided by engineer. */
"Chats" = "Chats";
@@ -1475,12 +1505,18 @@
/* No comment provided by engineer. */
"Delete and notify contact" = "Verwijderen en contact op de hoogte stellen";
/* No comment provided by engineer. */
"Delete chat" = "Chat verwijderen";
/* No comment provided by engineer. */
"Delete chat profile" = "Chatprofiel verwijderen";
/* No comment provided by engineer. */
"Delete chat profile?" = "Chatprofiel verwijderen?";
/* No comment provided by engineer. */
"Delete chat?" = "Chat verwijderen?";
/* No comment provided by engineer. */
"Delete connection" = "Verbinding verwijderen";
@@ -1656,7 +1692,10 @@
"Direct messages" = "Directe berichten";
/* No comment provided by engineer. */
"Direct messages between members are prohibited." = "Directe berichten tussen leden zijn verboden in deze groep.";
"Direct messages between members are prohibited in this chat." = "Directe berichten tussen leden zijn in deze chat niet toegestaan.";
/* No comment provided by engineer. */
"Direct messages between members are prohibited." = "Directe berichten tussen leden zijn niet toegestaan.";
/* No comment provided by engineer. */
"Disable (keep overrides)" = "Uitschakelen (overschrijvingen behouden)";
@@ -1680,10 +1719,10 @@
"Disappearing messages" = "Verdwijnende berichten";
/* No comment provided by engineer. */
"Disappearing messages are prohibited in this chat." = "Verdwijnende berichten zijn verboden in dit gesprek.";
"Disappearing messages are prohibited in this chat." = "Verdwijnende berichten zijn niet toegestaan in dit gesprek.";
/* No comment provided by engineer. */
"Disappearing messages are prohibited." = "Verdwijnende berichten zijn verboden in deze groep.";
"Disappearing messages are prohibited." = "Verdwijnende berichten zijn niet toegestaan.";
/* No comment provided by engineer. */
"Disappears at" = "Verdwijnt op";
@@ -2254,13 +2293,13 @@
"Files and media" = "Bestanden en media";
/* No comment provided by engineer. */
"Files and media are prohibited." = "Bestanden en media zijn verboden in deze groep.";
"Files and media are prohibited." = "Bestanden en media zijn niet toegestaan.";
/* No comment provided by engineer. */
"Files and media not allowed" = "Bestanden en media niet toegestaan";
/* No comment provided by engineer. */
"Files and media prohibited!" = "Bestanden en media verboden!";
"Files and media prohibited!" = "Bestanden en media niet toegestaan!";
/* No comment provided by engineer. */
"Filter unread and favorite chats." = "Filter ongelezen en favoriete chats.";
@@ -2424,27 +2463,6 @@
/* No comment provided by engineer. */
"Group links" = "Groep links";
/* No comment provided by engineer. */
"Members can add message reactions." = "Groepsleden kunnen bericht reacties toevoegen.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Groepsleden kunnen verzonden berichten onherroepelijk verwijderen. (24 uur)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Groepsleden kunnen directe berichten sturen.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Groepsleden kunnen verdwijnende berichten sturen.";
/* No comment provided by engineer. */
"Members can send files and media." = "Groepsleden kunnen bestanden en media verzenden.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Groepsleden kunnen SimpleX-links verzenden.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Groepsleden kunnen spraak berichten verzenden.";
/* notification */
"Group message:" = "Groep bericht:";
@@ -2533,7 +2551,7 @@
"If you can't meet in person, show QR code in a video call, or share the link." = "Als je elkaar niet persoonlijk kunt ontmoeten, laat dan de QR-code zien in een videogesprek of deel de link.";
/* No comment provided by engineer. */
"If you enter this passcode when opening the app, all app data will be irreversibly removed!" = "Als u deze toegangscode invoert bij het openen van de app, worden alle app-gegevens onomkeerbaar verwijderd!";
"If you enter this passcode when opening the app, all app data will be irreversibly removed!" = "Als u deze toegangscode invoert bij het openen van de app, worden alle app-gegevens definitief verwijderd!";
/* No comment provided by engineer. */
"If you enter your self-destruct passcode while opening the app:" = "Als u uw zelfvernietigings wachtwoord invoert tijdens het openen van de app:";
@@ -2715,6 +2733,9 @@
/* No comment provided by engineer. */
"Invite members" = "Nodig leden uit";
/* No comment provided by engineer. */
"Invite to chat" = "Uitnodigen voor een chat";
/* No comment provided by engineer. */
"Invite to group" = "Uitnodigen voor groep";
@@ -2743,10 +2764,10 @@
"Irreversible message deletion" = "Onomkeerbare berichtverwijdering";
/* No comment provided by engineer. */
"Irreversible message deletion is prohibited in this chat." = "Het onomkeerbaar verwijderen van berichten is verboden in dit gesprek.";
"Irreversible message deletion is prohibited in this chat." = "Het definitief verwijderen van berichten is niet toegestaan in dit gesprek.";
/* No comment provided by engineer. */
"Irreversible message deletion is prohibited." = "Het onomkeerbaar verwijderen van berichten is verboden in deze groep.";
"Irreversible message deletion is prohibited." = "Het definitief verwijderen van berichten is verbHet definitief verwijderen van berichten is niet toegestaan..";
/* No comment provided by engineer. */
"It allows having many anonymous connections without any shared data between them in a single chat profile." = "Het maakt het mogelijk om veel anonieme verbindingen te hebben zonder enige gedeelde gegevens tussen hen in een enkel chatprofiel.";
@@ -2829,6 +2850,12 @@
/* swipe action */
"Leave" = "Verlaten";
/* No comment provided by engineer. */
"Leave chat" = "Chat verlaten";
/* No comment provided by engineer. */
"Leave chat?" = "Chat verlaten?";
/* No comment provided by engineer. */
"Leave group" = "Groep verlaten";
@@ -2925,15 +2952,42 @@
/* item status text */
"Member inactive" = "Lid inactief";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". All chat members will be notified." = "De rol van het lid wordt gewijzigd naar \"%@\". Alle chatleden worden op de hoogte gebracht.";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". All group members will be notified." = "De rol van lid wordt gewijzigd in \"%@\". Alle groepsleden worden op de hoogte gebracht.";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". The member will receive a new invitation." = "De rol van lid wordt gewijzigd in \"%@\". Het lid ontvangt een nieuwe uitnodiging.";
/* No comment provided by engineer. */
"Member will be removed from chat - this cannot be undone!" = "Lid wordt verwijderd uit de chat - dit kan niet ongedaan worden gemaakt!";
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "Lid wordt uit de groep verwijderd, dit kan niet ongedaan worden gemaakt!";
/* No comment provided by engineer. */
"Members can add message reactions." = "Groepsleden kunnen bericht reacties toevoegen.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Groepsleden kunnen verzonden berichten onherroepelijk verwijderen. (24 uur)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Groepsleden kunnen directe berichten sturen.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Groepsleden kunnen verdwijnende berichten sturen.";
/* No comment provided by engineer. */
"Members can send files and media." = "Groepsleden kunnen bestanden en media verzenden.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Groepsleden kunnen SimpleX-links verzenden.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Groepsleden kunnen spraak berichten verzenden.";
/* No comment provided by engineer. */
"Menus" = "Menu's";
@@ -2965,10 +3019,10 @@
"Message reactions" = "Reacties op berichten";
/* No comment provided by engineer. */
"Message reactions are prohibited in this chat." = "Reacties op berichten zijn verboden in deze chat.";
"Message reactions are prohibited in this chat." = "Reacties op berichten zijn niet toegestaan in deze chat.";
/* No comment provided by engineer. */
"Message reactions are prohibited." = "Reacties op berichten zijn verboden in deze groep.";
"Message reactions are prohibited." = "Reacties op berichten zijn niet toegestaan.";
/* notification */
"message received" = "bericht ontvangen";
@@ -3329,6 +3383,9 @@
/* No comment provided by engineer. */
"Onion hosts will not be used." = "Onion hosts worden niet gebruikt.";
/* No comment provided by engineer. */
"Only chat owners can change preferences." = "Alleen chateigenaren kunnen voorkeuren wijzigen.";
/* No comment provided by engineer. */
"Only client devices store user profiles, contacts, groups, and messages." = "Alleen client apparaten slaan gebruikers profielen, contacten, groepen en berichten op die zijn verzonden met **2-laags end-to-end-codering**.";
@@ -3348,7 +3405,7 @@
"Only you can add message reactions." = "Alleen jij kunt bericht reacties toevoegen.";
/* No comment provided by engineer. */
"Only you can irreversibly delete messages (your contact can mark them for deletion). (24 hours)" = "Alleen jij kunt berichten onomkeerbaar verwijderen (je contact kan ze markeren voor verwijdering). (24 uur)";
"Only you can irreversibly delete messages (your contact can mark them for deletion). (24 hours)" = "Alleen jij kunt berichten definitief verwijderen (je contact kan ze markeren voor verwijdering). (24 uur)";
/* No comment provided by engineer. */
"Only you can make calls." = "Alleen jij kunt bellen.";
@@ -3407,6 +3464,9 @@
/* alert title */
"Operator server" = "Operatorserver";
/* No comment provided by engineer. */
"Or import archive file" = "Of importeer archiefbestand";
/* No comment provided by engineer. */
"Or paste archive link" = "Of plak de archief link";
@@ -3575,6 +3635,9 @@
/* No comment provided by engineer. */
"Privacy & security" = "Privacy en beveiliging";
/* No comment provided by engineer. */
"Privacy for your customers." = "Privacy voor uw klanten.";
/* No comment provided by engineer. */
"Privacy redefined" = "Privacy opnieuw gedefinieerd";
@@ -3618,7 +3681,7 @@
"Prohibit audio/video calls." = "Audio/video gesprekken verbieden.";
/* No comment provided by engineer. */
"Prohibit irreversible message deletion." = "Verbied het onomkeerbaar verwijderen van berichten.";
"Prohibit irreversible message deletion." = "Verbied het definitief verwijderen van berichten.";
/* No comment provided by engineer. */
"Prohibit message reactions." = "Bericht reacties verbieden.";
@@ -3671,9 +3734,6 @@
/* No comment provided by engineer. */
"Push notifications" = "Push meldingen";
/* No comment provided by engineer. */
"Push Notifications" = "Pushmeldingen";
/* No comment provided by engineer. */
"Push server" = "Push server";
@@ -3949,10 +4009,10 @@
"Safer groups" = "Veiligere groepen";
/* No comment provided by engineer. */
"Same conditions will apply to operator **%@**." = "Dezelfde voorwaarden gelden voor operator **%@**.";
"The same conditions will apply to operator **%@**." = "Dezelfde voorwaarden gelden voor operator **%@**.";
/* No comment provided by engineer. */
"Same conditions will apply to operator(s): **%@**." = "Dezelfde voorwaarden gelden voor operator(s): **%@**.";
"The same conditions will apply to operator(s): **%@**." = "Dezelfde voorwaarden gelden voor operator(s): **%@**.";
/* alert button
chat item action */
@@ -4416,7 +4476,7 @@
"SimpleX links" = "SimpleX links";
/* No comment provided by engineer. */
"SimpleX links are prohibited." = "SimpleX-links zijn in deze groep verboden.";
"SimpleX links are prohibited." = "SimpleX-links zijn niet toegestaan.";
/* No comment provided by engineer. */
"SimpleX links not allowed" = "SimpleX-links zijn niet toegestaan";
@@ -4580,6 +4640,9 @@
/* No comment provided by engineer. */
"Tap button " = "Tik op de knop ";
/* No comment provided by engineer. */
"Tap Create SimpleX address in the menu to create it later." = "Tik op SimpleX-adres maken in het menu om het later te maken.";
/* No comment provided by engineer. */
"Tap to activate profile." = "Tik hier om profiel te activeren.";
@@ -4734,7 +4797,7 @@
"This action cannot be undone - the messages sent and received earlier than selected will be deleted. It may take several minutes." = "Deze actie kan niet ongedaan worden gemaakt, de berichten die eerder zijn verzonden en ontvangen dan geselecteerd, worden verwijderd. Het kan enkele minuten duren.";
/* No comment provided by engineer. */
"This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost." = "Deze actie kan niet ongedaan worden gemaakt. Uw profiel, contacten, berichten en bestanden gaan onomkeerbaar verloren.";
"This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost." = "Deze actie kan niet ongedaan worden gemaakt. Uw profiel, contacten, berichten en bestanden gaan definitief verloren.";
/* E2EE info chat item */
"This chat is protected by end-to-end encryption." = "Deze chat is beveiligd met end-to-end codering.";
@@ -5145,16 +5208,16 @@
"Voice messages" = "Spraak berichten";
/* No comment provided by engineer. */
"Voice messages are prohibited in this chat." = "Spraak berichten zijn verboden in deze chat.";
"Voice messages are prohibited in this chat." = "Spraak berichten zijn niet toegestaan in dit gesprek.";
/* No comment provided by engineer. */
"Voice messages are prohibited." = "Spraak berichten zijn verboden in deze groep.";
"Voice messages are prohibited." = "Spraak berichten zijn niet toegestaan.";
/* No comment provided by engineer. */
"Voice messages not allowed" = "Spraakberichten niet toegestaan";
/* No comment provided by engineer. */
"Voice messages prohibited!" = "Spraak berichten verboden!";
"Voice messages prohibited!" = "Spraak berichten niet toegestaan!";
/* No comment provided by engineer. */
"waiting for answer…" = "wachten op antwoord…";
@@ -5282,6 +5345,9 @@
/* No comment provided by engineer. */
"You are already connected to %@." = "U bent al verbonden met %@.";
/* No comment provided by engineer. */
"You are already connected with %@." = "U bent al verbonden met %@.";
/* No comment provided by engineer. */
"You are already connecting to %@." = "U maakt al verbinding met %@.";
@@ -5480,6 +5546,9 @@
/* No comment provided by engineer. */
"You will still receive calls and notifications from muted profiles when they are active." = "U ontvangt nog steeds oproepen en meldingen van gedempte profielen wanneer deze actief zijn.";
/* No comment provided by engineer. */
"You will stop receiving messages from this chat. Chat history will be preserved." = "U ontvangt geen berichten meer van deze chat. De chatgeschiedenis blijft bewaard.";
/* No comment provided by engineer. */
"You will stop receiving messages from this group. Chat history will be preserved." = "Je ontvangt geen berichten meer van deze groep. Je gesprek geschiedenis blijft behouden.";
+21 -21
View File
@@ -2277,27 +2277,6 @@
/* No comment provided by engineer. */
"Group links" = "Linki grupowe";
/* No comment provided by engineer. */
"Members can add message reactions." = "Członkowie grupy mogą dodawać reakcje wiadomości.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Członkowie grupy mogą nieodwracalnie usuwać wysłane wiadomości. (24 godziny)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Członkowie grupy mogą wysyłać bezpośrednie wiadomości.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Członkowie grupy mogą wysyłać znikające wiadomości.";
/* No comment provided by engineer. */
"Members can send files and media." = "Członkowie grupy mogą wysyłać pliki i media.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Członkowie grupy mogą wysyłać linki SimpleX.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Członkowie grupy mogą wysyłać wiadomości głosowe.";
/* notification */
"Group message:" = "Wiadomość grupowa:";
@@ -2778,6 +2757,27 @@
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "Członek zostanie usunięty z grupy - nie można tego cofnąć!";
/* No comment provided by engineer. */
"Members can add message reactions." = "Członkowie grupy mogą dodawać reakcje wiadomości.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Członkowie grupy mogą nieodwracalnie usuwać wysłane wiadomości. (24 godziny)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Członkowie grupy mogą wysyłać bezpośrednie wiadomości.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Członkowie grupy mogą wysyłać znikające wiadomości.";
/* No comment provided by engineer. */
"Members can send files and media." = "Członkowie grupy mogą wysyłać pliki i media.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Członkowie grupy mogą wysyłać linki SimpleX.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Członkowie grupy mogą wysyłać wiadomości głosowe.";
/* No comment provided by engineer. */
"Menus" = "Menu";
+378 -21
View File
@@ -82,6 +82,9 @@
/* No comment provided by engineer. */
"**Recommended**: device token and end-to-end encrypted notifications are sent to SimpleX Chat push server, but it does not see the message content, size or who it is from." = "**Рекомендовано**: токен устройства и уведомления отправляются на сервер SimpleX Chat, но сервер не получает сами сообщения, их размер или от кого они.";
/* No comment provided by engineer. */
"**Scan / Paste link**: to connect via a link you received." = "**Сканировать / Вставить ссылку**: чтобы соединится через полученную ссылку.";
/* No comment provided by engineer. */
"**Warning**: Instant push notifications require passphrase saved in Keychain." = "**Внимание**: для работы мгновенных уведомлений пароль должен быть сохранен в Keychain.";
@@ -142,6 +145,12 @@
/* No comment provided by engineer. */
"%@ is verified" = "%@ подтверждён";
/* No comment provided by engineer. */
"%@ server" = "%@ сервер";
/* No comment provided by engineer. */
"%@ servers" = "%@ серверы";
/* No comment provided by engineer. */
"%@ uploaded" = "%@ загружено";
@@ -295,6 +304,12 @@
/* time interval */
"1 week" = "1 неделю";
/* No comment provided by engineer. */
"1-time link" = "Одноразовая ссылка";
/* No comment provided by engineer. */
"1-time link can be used *with one contact only* - share in person or via any messenger." = "Одноразовая ссылка может быть использована *только с одним контактом* - поделитесь при встрече или через любой мессенджер.";
/* No comment provided by engineer. */
"5 minutes" = "5 минут";
@@ -342,6 +357,9 @@
swipe action */
"Accept" = "Принять";
/* No comment provided by engineer. */
"Accept conditions" = "Принять условия";
/* No comment provided by engineer. */
"Accept connection request?" = "Принять запрос?";
@@ -355,6 +373,9 @@
/* call status */
"accepted call" = "принятый звонок";
/* No comment provided by engineer. */
"Accepted conditions" = "Принятые условия";
/* No comment provided by engineer. */
"Acknowledged" = "Подтверждено";
@@ -367,6 +388,9 @@
/* No comment provided by engineer. */
"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Добавьте адрес в свой профиль, чтобы Ваши контакты могли поделиться им. Профиль будет отправлен Вашим контактам.";
/* No comment provided by engineer. */
"Add friends" = "Добавить друзей";
/* No comment provided by engineer. */
"Add profile" = "Добавить профиль";
@@ -376,12 +400,24 @@
/* No comment provided by engineer. */
"Add servers by scanning QR codes." = "Добавить серверы через QR код.";
/* No comment provided by engineer. */
"Add team members" = "Добавить сотрудников";
/* No comment provided by engineer. */
"Add to another device" = "Добавить на другое устройство";
/* No comment provided by engineer. */
"Add welcome message" = "Добавить приветственное сообщение";
/* No comment provided by engineer. */
"Add your team members to the conversations." = "Добавьте сотрудников в разговор.";
/* No comment provided by engineer. */
"Added media & file servers" = "Дополнительные серверы файлов и медиа";
/* No comment provided by engineer. */
"Added message servers" = "Дополнительные серверы сообщений";
/* No comment provided by engineer. */
"Additional accent" = "Дополнительный акцент";
@@ -397,6 +433,12 @@
/* No comment provided by engineer. */
"Address change will be aborted. Old receiving address will be used." = "Изменение адреса будет прекращено. Будет использоваться старый адрес.";
/* No comment provided by engineer. */
"Address or 1-time link?" = "Адрес или одноразовая ссылка?";
/* No comment provided by engineer. */
"Address settings" = "Настройки адреса";
/* member role */
"admin" = "админ";
@@ -760,6 +802,12 @@
/* No comment provided by engineer. */
"Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Болгарский, финский, тайский и украинский - благодаря пользователям и [Weblate] (https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!";
/* No comment provided by engineer. */
"Business address" = "Бизнес адрес";
/* No comment provided by engineer. */
"Business chats" = "Бизнес разговоры";
/* No comment provided by engineer. */
"By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." = "По профилю чата или [по соединению](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (БЕТА).";
@@ -858,6 +906,9 @@
set passcode view */
"Change self-destruct passcode" = "Изменить код самоуничтожения";
/* authentication reason */
"Change chat profiles" = "Поменять профили";
/* chat item text */
"changed address for you" = "поменял(а) адрес для Вас";
@@ -873,6 +924,15 @@
/* chat item text */
"changing address…" = "смена адреса…";
/* No comment provided by engineer. */
"Chat" = "Разговор";
/* No comment provided by engineer. */
"Chat already exists" = "Разговор уже существует";
/* No comment provided by engineer. */
"Chat already exists!" = "Разговор уже существует!";
/* No comment provided by engineer. */
"Chat colors" = "Цвета чата";
@@ -918,9 +978,21 @@
/* No comment provided by engineer. */
"Chat theme" = "Тема чата";
/* No comment provided by engineer. */
"Chat will be deleted for all members - this cannot be undone!" = "Разговор будет удален для всех участников - это действие нельзя отменить!";
/* No comment provided by engineer. */
"Chat will be deleted for you - this cannot be undone!" = "Разговор будет удален для Вас - это действие нельзя отменить!";
/* No comment provided by engineer. */
"Chats" = "Чаты";
/* No comment provided by engineer. */
"Check messages every 20 min." = "Проверять сообщения каждые 20 минут.";
/* No comment provided by engineer. */
"Check messages when allowed." = "Проверять сообщения по возможности.";
/* alert title */
"Check server address and try again." = "Проверьте адрес сервера и попробуйте снова.";
@@ -981,6 +1053,33 @@
/* No comment provided by engineer. */
"Completed" = "Готово";
/* No comment provided by engineer. */
"Conditions accepted on: %@." = "Условия приняты: %@.";
/* No comment provided by engineer. */
"Conditions are accepted for the operator(s): **%@**." = "Условия приняты для оператора(ов): **%@**.";
/* No comment provided by engineer. */
"Conditions are already accepted for following operator(s): **%@**." = "Условия уже приняты для следующих оператора(ов): **%@**.";
/* No comment provided by engineer. */
"Conditions of use" = "Условия использования";
/* No comment provided by engineer. */
"Conditions will be accepted for enabled operators after 30 days." = "Условия будут приняты для включенных операторов через 30 дней.";
/* No comment provided by engineer. */
"Conditions will be accepted for operator(s): **%@**." = "Условия будут приняты для оператора(ов): **%@**.";
/* No comment provided by engineer. */
"Conditions will be accepted for the operator(s): **%@**." = "Условия будут приняты для оператора(ов): **%@**.";
/* No comment provided by engineer. */
"Conditions will be accepted on: %@." = "Условия будут приняты: %@.";
/* No comment provided by engineer. */
"Conditions will be automatically accepted for enabled operators on: %@." = "Условия будут автоматически приняты для включенных операторов: %@.";
/* No comment provided by engineer. */
"Configure ICE servers" = "Настройка ICE серверов";
@@ -1128,6 +1227,9 @@
/* No comment provided by engineer. */
"Connection request sent!" = "Запрос на соединение отправлен!";
/* No comment provided by engineer. */
"Connection security" = "Безопасность соединения";
/* No comment provided by engineer. */
"Connection terminated" = "Подключение прервано";
@@ -1209,6 +1311,9 @@
/* No comment provided by engineer. */
"Create" = "Создать";
/* No comment provided by engineer. */
"Create 1-time link" = "Создать одноразовую ссылку";
/* No comment provided by engineer. */
"Create a group using a random profile." = "Создайте группу, используя случайный профиль.";
@@ -1260,6 +1365,9 @@
/* No comment provided by engineer. */
"creator" = "создатель";
/* No comment provided by engineer. */
"Current conditions text couldn't be loaded, you can review conditions via this link:" = "Текст условий использования не может быть показан, вы можете посмотреть их через ссылку:";
/* No comment provided by engineer. */
"Current Passcode" = "Текущий Код";
@@ -1397,12 +1505,18 @@
/* No comment provided by engineer. */
"Delete and notify contact" = "Удалить и уведомить контакт";
/* No comment provided by engineer. */
"Delete chat" = "Удалить разговор";
/* No comment provided by engineer. */
"Delete chat profile" = "Удалить профиль чата";
/* No comment provided by engineer. */
"Delete chat profile?" = "Удалить профиль?";
/* No comment provided by engineer. */
"Delete chat?" = "Удалить разговор?";
/* No comment provided by engineer. */
"Delete connection" = "Удалить соединение";
@@ -1508,6 +1622,9 @@
/* No comment provided by engineer. */
"Deletion errors" = "Ошибки удаления";
/* No comment provided by engineer. */
"Delivered even when Apple drops them." = "Доставляются даже тогда, когда Apple их теряет.";
/* No comment provided by engineer. */
"Delivery" = "Доставка";
@@ -1574,6 +1691,9 @@
/* chat feature */
"Direct messages" = "Прямые сообщения";
/* No comment provided by engineer. */
"Direct messages between members are prohibited in this chat." = "Прямые сообщения между членами запрещены в этом разговоре.";
/* No comment provided by engineer. */
"Direct messages between members are prohibited." = "Прямые сообщения между членами группы запрещены.";
@@ -1695,6 +1815,9 @@
/* No comment provided by engineer. */
"e2e encrypted" = "e2e зашифровано";
/* No comment provided by engineer. */
"E2E encrypted notifications." = "E2E зашифрованные нотификации.";
/* chat item action */
"Edit" = "Редактировать";
@@ -1713,6 +1836,9 @@
/* No comment provided by engineer. */
"Enable camera access" = "Включить доступ к камере";
/* No comment provided by engineer. */
"Enable Flux" = "Включить Flux";
/* No comment provided by engineer. */
"Enable for all" = "Включить для всех";
@@ -1872,12 +1998,18 @@
/* No comment provided by engineer. */
"Error aborting address change" = "Ошибка при прекращении изменения адреса";
/* alert title */
"Error accepting conditions" = "Ошибка приема условий";
/* No comment provided by engineer. */
"Error accepting contact request" = "Ошибка при принятии запроса на соединение";
/* No comment provided by engineer. */
"Error adding member(s)" = "Ошибка при добавлении членов группы";
/* alert title */
"Error adding server" = "Ошибка добавления сервера";
/* No comment provided by engineer. */
"Error changing address" = "Ошибка при изменении адреса";
@@ -1962,6 +2094,9 @@
/* No comment provided by engineer. */
"Error joining group" = "Ошибка при вступлении в группу";
/* alert title */
"Error loading servers" = "Ошибка загрузки серверов";
/* No comment provided by engineer. */
"Error migrating settings" = "Ошибка миграции настроек";
@@ -1995,6 +2130,9 @@
/* No comment provided by engineer. */
"Error saving passphrase to keychain" = "Ошибка сохранения пароля в Keychain";
/* alert title */
"Error saving servers" = "Ошибка сохранения серверов";
/* when migrating */
"Error saving settings" = "Ошибка сохранения настроек";
@@ -2037,6 +2175,9 @@
/* No comment provided by engineer. */
"Error updating message" = "Ошибка при обновлении сообщения";
/* alert title */
"Error updating server" = "Ошибка сохранения сервера";
/* No comment provided by engineer. */
"Error updating settings" = "Ошибка при сохранении настроек сети";
@@ -2064,6 +2205,9 @@
/* No comment provided by engineer. */
"Errors" = "Ошибки";
/* servers error */
"Errors in servers configuration." = "Ошибки в настройках серверов.";
/* No comment provided by engineer. */
"Even when disabled in the conversation." = "Даже когда они выключены в разговоре.";
@@ -2190,9 +2334,24 @@
/* No comment provided by engineer. */
"Fix not supported by group member" = "Починка не поддерживается членом группы";
/* No comment provided by engineer. */
"for better metadata privacy." = "для лучшей конфиденциальности метаданных.";
/* servers error */
"For chat profile %@:" = "Для профиля чата %@:";
/* No comment provided by engineer. */
"For console" = "Для консоли";
/* No comment provided by engineer. */
"For example, if your contact receives messages via a SimpleX Chat server, your app will deliver them via a Flux server." = "Например, если Ваш контакт получает сообщения через сервер SimpleX Chat, Ваше приложение доставит их через сервер Flux.";
/* No comment provided by engineer. */
"For private routing" = "Для доставки сообщений";
/* No comment provided by engineer. */
"For social media" = "Для социальных сетей";
/* chat item action */
"Forward" = "Переслать";
@@ -2304,27 +2463,6 @@
/* No comment provided by engineer. */
"Group links" = "Ссылки групп";
/* No comment provided by engineer. */
"Members can add message reactions." = "Члены группы могут добавлять реакции на сообщения.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Члены группы могут необратимо удалять отправленные сообщения. (24 часа)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Члены группы могут посылать прямые сообщения.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Члены группы могут посылать исчезающие сообщения.";
/* No comment provided by engineer. */
"Members can send files and media." = "Члены группы могут слать файлы и медиа.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Члены группы могут отправлять ссылки SimpleX.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Члены группы могут отправлять голосовые сообщения.";
/* notification */
"Group message:" = "Групповое сообщение:";
@@ -2385,6 +2523,12 @@
/* time unit */
"hours" = "часов";
/* No comment provided by engineer. */
"How it affects privacy" = "Как это влияет на конфиденциальность";
/* No comment provided by engineer. */
"How it helps privacy" = "Как это улучшает конфиденциальность";
/* No comment provided by engineer. */
"How SimpleX works" = "Как SimpleX работает";
@@ -2589,6 +2733,9 @@
/* No comment provided by engineer. */
"Invite members" = "Пригласить членов группы";
/* No comment provided by engineer. */
"Invite to chat" = "Пригласить в разговор";
/* No comment provided by engineer. */
"Invite to group" = "Пригласить в группу";
@@ -2703,6 +2850,12 @@
/* swipe action */
"Leave" = "Выйти";
/* No comment provided by engineer. */
"Leave chat" = "Покинуть разговор";
/* No comment provided by engineer. */
"Leave chat?" = "Покинуть разговор?";
/* No comment provided by engineer. */
"Leave group" = "Выйти из группы";
@@ -2799,15 +2952,42 @@
/* item status text */
"Member inactive" = "Член неактивен";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". All chat members will be notified." = "Роль участника будет изменена на \"%@\". Все участники разговора получат уведомление.";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". All group members will be notified." = "Роль члена группы будет изменена на \"%@\". Все члены группы получат сообщение.";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". The member will receive a new invitation." = "Роль члена группы будет изменена на \"%@\". Будет отправлено новое приглашение.";
/* No comment provided by engineer. */
"Member will be removed from chat - this cannot be undone!" = "Член будет удален из разговора - это действие нельзя отменить!";
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "Член группы будет удален - это действие нельзя отменить!";
/* No comment provided by engineer. */
"Members can add message reactions." = "Члены группы могут добавлять реакции на сообщения.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Члены группы могут необратимо удалять отправленные сообщения. (24 часа)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Члены группы могут посылать прямые сообщения.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Члены группы могут посылать исчезающие сообщения.";
/* No comment provided by engineer. */
"Members can send files and media." = "Члены группы могут слать файлы и медиа.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Члены группы могут отправлять ссылки SimpleX.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Члены группы могут отправлять голосовые сообщения.";
/* No comment provided by engineer. */
"Menus" = "Меню";
@@ -2961,6 +3141,9 @@
/* No comment provided by engineer. */
"More reliable network connection." = "Более надежное соединение с сетью.";
/* No comment provided by engineer. */
"More reliable notifications" = "Более надежные уведомления";
/* item status description */
"Most likely this connection is deleted." = "Скорее всего, соединение удалено.";
@@ -2985,12 +3168,18 @@
/* No comment provided by engineer. */
"Network connection" = "Интернет-соединение";
/* No comment provided by engineer. */
"Network decentralization" = "Децентрализация сети";
/* snd error text */
"Network issues - message expired after many attempts to send it." = "Ошибка сети - сообщение не было отправлено после многократных попыток.";
/* No comment provided by engineer. */
"Network management" = "Статус сети";
/* No comment provided by engineer. */
"Network operator" = "Оператор сети";
/* No comment provided by engineer. */
"Network settings" = "Настройки сети";
@@ -3018,6 +3207,9 @@
/* No comment provided by engineer. */
"New display name" = "Новое имя";
/* notification */
"New events" = "Новые события";
/* No comment provided by engineer. */
"New in %@" = "Новое в %@";
@@ -3039,6 +3231,9 @@
/* No comment provided by engineer. */
"New passphrase…" = "Новый пароль…";
/* No comment provided by engineer. */
"New server" = "Новый сервер";
/* No comment provided by engineer. */
"New SOCKS credentials will be used every time you start the app." = "Новые учетные данные SOCKS будут использоваться при каждом запуске приложения.";
@@ -3084,6 +3279,12 @@
/* No comment provided by engineer. */
"No info, try to reload" = "Нет информации, попробуйте перезагрузить";
/* servers error */
"No media & file servers." = "Нет серверов файлов и медиа.";
/* servers error */
"No message servers." = "Нет серверов сообщений.";
/* No comment provided by engineer. */
"No network connection" = "Нет интернет-соединения";
@@ -3102,6 +3303,18 @@
/* No comment provided by engineer. */
"No received or sent files" = "Нет полученных или отправленных файлов";
/* servers error */
"No servers for private message routing." = "Нет серверов для доставки сообщений.";
/* servers error */
"No servers to receive files." = "Нет серверов для приема файлов.";
/* servers error */
"No servers to receive messages." = "Нет серверов для приема сообщений.";
/* servers error */
"No servers to send files." = "Нет серверов для отправки файлов.";
/* copied message info in history */
"no text" = "нет текста";
@@ -3123,6 +3336,9 @@
/* No comment provided by engineer. */
"Notifications are disabled!" = "Уведомления выключены";
/* No comment provided by engineer. */
"Notifications privacy" = "Конфиденциальность уведомлений";
/* No comment provided by engineer. */
"Now admins can:\n- delete members' messages.\n- disable members (\"observer\" role)" = "Теперь админы могут:\n- удалять сообщения членов.\n- приостанавливать членов (роль \"наблюдатель\")";
@@ -3167,6 +3383,9 @@
/* No comment provided by engineer. */
"Onion hosts will not be used." = "Onion хосты не используются.";
/* No comment provided by engineer. */
"Only chat owners can change preferences." = "Только владельцы разговора могут поменять предпочтения.";
/* No comment provided by engineer. */
"Only client devices store user profiles, contacts, groups, and messages." = "Только пользовательские устройства хранят контакты, группы и сообщения.";
@@ -3215,12 +3434,18 @@
/* No comment provided by engineer. */
"Open" = "Открыть";
/* No comment provided by engineer. */
"Open changes" = "Открыть изменения";
/* No comment provided by engineer. */
"Open chat" = "Открыть чат";
/* authentication reason */
"Open chat console" = "Открыть консоль";
/* No comment provided by engineer. */
"Open conditions" = "Открыть условия";
/* No comment provided by engineer. */
"Open group" = "Открыть группу";
@@ -3233,6 +3458,15 @@
/* No comment provided by engineer. */
"Opening app…" = "Приложение отрывается…";
/* No comment provided by engineer. */
"Operator" = "Оператор";
/* alert title */
"Operator server" = "Сервер оператора";
/* No comment provided by engineer. */
"Or import archive file" = "Или импортировать файл архива";
/* No comment provided by engineer. */
"Or paste archive link" = "Или вставьте ссылку архива";
@@ -3245,6 +3479,9 @@
/* No comment provided by engineer. */
"Or show this code" = "Или покажите этот код";
/* No comment provided by engineer. */
"Or to share privately" = "Или поделиться конфиденциально";
/* No comment provided by engineer. */
"other" = "другое";
@@ -3386,6 +3623,9 @@
/* No comment provided by engineer. */
"Preset server address" = "Адрес сервера по умолчанию";
/* No comment provided by engineer. */
"Preset servers" = "Серверы по умолчанию";
/* No comment provided by engineer. */
"Preview" = "Просмотр";
@@ -3395,6 +3635,9 @@
/* No comment provided by engineer. */
"Privacy & security" = "Конфиденциальность";
/* No comment provided by engineer. */
"Privacy for your customers." = "Конфиденциальность для ваших покупателей.";
/* No comment provided by engineer. */
"Privacy redefined" = "Более конфиденциальный";
@@ -3738,6 +3981,12 @@
/* chat item action */
"Reveal" = "Показать";
/* No comment provided by engineer. */
"Review conditions" = "Посмотреть условия";
/* No comment provided by engineer. */
"Review later" = "Посмотреть позже";
/* No comment provided by engineer. */
"Revoke" = "Отозвать";
@@ -3759,6 +4008,12 @@
/* No comment provided by engineer. */
"Safer groups" = "Более безопасные группы";
/* No comment provided by engineer. */
"The same conditions will apply to operator **%@**." = "Те же самые условия будут приняты для оператора **%@**.";
/* No comment provided by engineer. */
"The same conditions will apply to operator(s): **%@**." = "Те же самые условия будут приняты для оператора(ов): **%@**.";
/* alert button
chat item action */
"Save" = "Сохранить";
@@ -4024,6 +4279,9 @@
/* No comment provided by engineer. */
"Server" = "Сервер";
/* alert message */
"Server added to operator %@." = "Сервер добавлен к оператору %@.";
/* No comment provided by engineer. */
"Server address" = "Адрес сервера";
@@ -4033,6 +4291,15 @@
/* srv error text. */
"Server address is incompatible with network settings." = "Адрес сервера несовместим с настройками сети.";
/* alert title */
"Server operator changed." = "Оператор серверов изменен.";
/* No comment provided by engineer. */
"Server operators" = "Операторы серверов";
/* alert title */
"Server protocol changed." = "Протокол сервера изменен.";
/* queue info */
"server queue info: %@\n\nlast received msg: %@" = "информация сервера об очереди: %1$@\n\nпоследнее полученное сообщение: %2$@";
@@ -4118,9 +4385,15 @@
/* No comment provided by engineer. */
"Share 1-time link" = "Поделиться одноразовой ссылкой";
/* No comment provided by engineer. */
"Share 1-time link with a friend" = "Поделитесь одноразовой ссылкой с другом";
/* No comment provided by engineer. */
"Share address" = "Поделиться адресом";
/* No comment provided by engineer. */
"Share address publicly" = "Поделитесь адресом";
/* alert title */
"Share address with contacts?" = "Поделиться адресом с контактами?";
@@ -4133,6 +4406,9 @@
/* No comment provided by engineer. */
"Share profile" = "Поделиться профилем";
/* No comment provided by engineer. */
"Share SimpleX address on social media." = "Поделитесь SimpleX адресом в социальных сетях.";
/* No comment provided by engineer. */
"Share this 1-time invite link" = "Поделиться одноразовой ссылкой-приглашением";
@@ -4178,6 +4454,12 @@
/* No comment provided by engineer. */
"SimpleX Address" = "Адрес SimpleX";
/* No comment provided by engineer. */
"SimpleX address and 1-time links are safe to share via any messenger." = "Адрес SimpleX и одноразовые ссылки безопасно отправлять через любой мессенджер.";
/* No comment provided by engineer. */
"SimpleX address or 1-time link?" = "Адрес SimpleX или одноразовая ссылка?";
/* No comment provided by engineer. */
"SimpleX Chat security was audited by Trail of Bits." = "Безопасность SimpleX Chat была проверена Trail of Bits.";
@@ -4253,6 +4535,9 @@
/* No comment provided by engineer. */
"Some non-fatal errors occurred during import:" = "Во время импорта произошли некоторые ошибки:";
/* alert message */
"Some servers failed the test:\n%@" = "Серверы не прошли тест:\n%@";
/* notification title */
"Somebody" = "Контакт";
@@ -4355,6 +4640,9 @@
/* No comment provided by engineer. */
"Tap button " = "Нажмите кнопку ";
/* No comment provided by engineer. */
"Tap Create SimpleX address in the menu to create it later." = "Нажмите Создать адрес SimpleX в меню, чтобы создать его позже.";
/* No comment provided by engineer. */
"Tap to activate profile." = "Нажмите, чтобы сделать профиль активным.";
@@ -4415,6 +4703,9 @@
/* No comment provided by engineer. */
"The app can notify you when you receive messages or contact requests - please open settings to enable." = "Приложение может посылать Вам уведомления о сообщениях и запросах на соединение - уведомления можно включить в Настройках.";
/* No comment provided by engineer. */
"The app protects your privacy by using different operators in each conversation." = "Приложение улучшает конфиденциальность используя разных операторов в каждом разговоре.";
/* No comment provided by engineer. */
"The app will ask to confirm downloads from unknown file servers (except .onion)." = "Приложение будет запрашивать подтверждение загрузки с неизвестных серверов (за исключением .onion адресов).";
@@ -4424,6 +4715,9 @@
/* No comment provided by engineer. */
"The code you scanned is not a SimpleX link QR code." = "Этот QR код не является SimpleX-ccылкой.";
/* No comment provided by engineer. */
"The connection reached the limit of undelivered messages, your contact may be offline." = "Соединение достигло предела недоставленных сообщений. Возможно, Ваш контакт не в сети.";
/* No comment provided by engineer. */
"The connection you accepted will be cancelled!" = "Подтвержденное соединение будет отменено!";
@@ -4463,6 +4757,9 @@
/* No comment provided by engineer. */
"The profile is only shared with your contacts." = "Профиль отправляется только Вашим контактам.";
/* No comment provided by engineer. */
"The second preset operator in the app!" = "Второй оператор серверов в приложении!";
/* No comment provided by engineer. */
"The second tick we missed! ✅" = "Вторая галочка - знать, что доставлено! ✅";
@@ -4472,6 +4769,9 @@
/* No comment provided by engineer. */
"The servers for new connections of your current chat profile **%@**." = "Серверы для новых соединений Вашего текущего профиля чата **%@**.";
/* No comment provided by engineer. */
"The servers for new files of your current chat profile **%@**." = "Серверы для новых файлов Вашего текущего профиля **%@**.";
/* No comment provided by engineer. */
"The text you pasted is not a SimpleX link." = "Вставленный текст не является SimpleX-ссылкой.";
@@ -4481,6 +4781,9 @@
/* No comment provided by engineer. */
"Themes" = "Темы";
/* No comment provided by engineer. */
"These conditions will also apply for: **%@**." = "Эти условия также будут применены к: **%@**.";
/* No comment provided by engineer. */
"These settings are for your current profile **%@**." = "Установки для Вашего активного профиля **%@**.";
@@ -4544,6 +4847,9 @@
/* No comment provided by engineer. */
"To make a new connection" = "Чтобы соединиться";
/* No comment provided by engineer. */
"To protect against your link being replaced, you can compare contact security codes." = "Чтобы защитить Вашу ссылку от замены, Вы можете сравнить код безопасности.";
/* No comment provided by engineer. */
"To protect timezone, image/voice files use UTC." = "Чтобы защитить Ваш часовой пояс, файлы картинок и голосовых сообщений используют UTC.";
@@ -4556,6 +4862,9 @@
/* No comment provided by engineer. */
"To protect your privacy, SimpleX uses separate IDs for each of your contacts." = "Чтобы защитить Вашу конфиденциальность, SimpleX использует разные идентификаторы для каждого Вашeго контакта.";
/* No comment provided by engineer. */
"To receive" = "Для получения";
/* No comment provided by engineer. */
"To record speech please grant permission to use Microphone." = "Для записи речи, пожалуйста, дайте разрешение на использование микрофона.";
@@ -4568,9 +4877,15 @@
/* No comment provided by engineer. */
"To reveal your hidden profile, enter a full password into a search field in **Your chat profiles** page." = "Чтобы показать Ваш скрытый профиль, введите его пароль в поле поиска на странице **Ваши профили чата**.";
/* No comment provided by engineer. */
"To send" = "Для оправки";
/* No comment provided by engineer. */
"To support instant push notifications the chat database has to be migrated." = "Для поддержки мгновенный доставки уведомлений данные чата должны быть перемещены.";
/* No comment provided by engineer. */
"To use the servers of **%@**, accept conditions of use." = "Чтобы использовать серверы оператора **%@**, примите условия использования.";
/* No comment provided by engineer. */
"To verify end-to-end encryption with your contact compare (or scan) the code on your devices." = "Чтобы подтвердить end-to-end шифрование с Вашим контактом сравните (или сканируйте) код безопасности на Ваших устройствах.";
@@ -4628,6 +4943,9 @@
/* rcv group event chat item */
"unblocked %@" = "%@ разблокирован";
/* No comment provided by engineer. */
"Undelivered messages" = "Недоставленные сообщения";
/* No comment provided by engineer. */
"Unexpected migration state" = "Неожиданная ошибка при перемещении данных чата";
@@ -4745,12 +5063,21 @@
/* No comment provided by engineer. */
"Use .onion hosts" = "Использовать .onion хосты";
/* No comment provided by engineer. */
"Use %@" = "Использовать %@";
/* No comment provided by engineer. */
"Use chat" = "Использовать чат";
/* No comment provided by engineer. */
"Use current profile" = "Использовать активный профиль";
/* No comment provided by engineer. */
"Use for files" = "Использовать для файлов";
/* No comment provided by engineer. */
"Use for messages" = "Использовать для сообщений";
/* No comment provided by engineer. */
"Use for new connections" = "Использовать для новых соединений";
@@ -4775,6 +5102,9 @@
/* No comment provided by engineer. */
"Use server" = "Использовать сервер";
/* No comment provided by engineer. */
"Use servers" = "Использовать серверы";
/* No comment provided by engineer. */
"Use SimpleX Chat servers?" = "Использовать серверы предосталенные SimpleX Chat?";
@@ -4859,9 +5189,15 @@
/* No comment provided by engineer. */
"Videos and files up to 1gb" = "Видео и файлы до 1гб";
/* No comment provided by engineer. */
"View conditions" = "Посмотреть условия";
/* No comment provided by engineer. */
"View security code" = "Показать код безопасности";
/* No comment provided by engineer. */
"View updated conditions" = "Посмотреть измененные условия";
/* chat feature */
"Visible history" = "Доступ к истории";
@@ -4943,6 +5279,9 @@
/* No comment provided by engineer. */
"when IP hidden" = "когда IP защищен";
/* No comment provided by engineer. */
"When more than one operator is enabled, none of them has metadata to learn who communicates with whom." = "Когда больше чем один оператор включен, ни один из них не видит метаданные, чтобы определить, кто соединен с кем.";
/* No comment provided by engineer. */
"When you share an incognito profile with somebody, this profile will be used for the groups they invite you to." = "Когда Вы соединены с контактом инкогнито, тот же самый инкогнито профиль будет использоваться для групп с этим контактом.";
@@ -5006,6 +5345,9 @@
/* No comment provided by engineer. */
"You are already connected to %@." = "Вы уже соединены с контактом %@.";
/* No comment provided by engineer. */
"You are already connected with %@." = "Вы уже соединены с %@.";
/* No comment provided by engineer. */
"You are already connecting to %@." = "Вы уже соединяетесь с %@.";
@@ -5051,6 +5393,12 @@
/* No comment provided by engineer. */
"You can change it in Appearance settings." = "Вы можете изменить это в настройках Интерфейса.";
/* No comment provided by engineer. */
"You can configure operators in Network & servers settings." = "Вы можете настроить операторов в настройках Сеть и серверы.";
/* No comment provided by engineer. */
"You can configure servers via settings." = "Вы можете настроить серверы позже.";
/* No comment provided by engineer. */
"You can create it later" = "Вы можете создать его позже";
@@ -5075,6 +5423,9 @@
/* No comment provided by engineer. */
"You can send messages to %@ from Archived contacts." = "Вы можете отправлять сообщения %@ из Архивированных контактов.";
/* No comment provided by engineer. */
"You can set connection name, to remember who the link was shared with." = "Вы можете установить имя соединения, чтобы запомнить кому Вы отправили ссылку.";
/* No comment provided by engineer. */
"You can set lock screen notification preview via settings." = "Вы можете установить просмотр уведомлений на экране блокировки в настройках.";
@@ -5195,6 +5546,9 @@
/* No comment provided by engineer. */
"You will still receive calls and notifications from muted profiles when they are active." = "Вы все равно получите звонки и уведомления в профилях без звука, когда они активные.";
/* No comment provided by engineer. */
"You will stop receiving messages from this chat. Chat history will be preserved." = "Вы прекратите получать сообщения в этом разговоре. История будет сохранена.";
/* No comment provided by engineer. */
"You will stop receiving messages from this group. Chat history will be preserved." = "Вы перестанете получать сообщения от этой группы. История чата будет сохранена.";
@@ -5276,6 +5630,9 @@
/* No comment provided by engineer. */
"Your server address" = "Адрес Вашего сервера";
/* No comment provided by engineer. */
"Your servers" = "Ваши серверы";
/* No comment provided by engineer. */
"Your settings" = "Настройки";
+18 -18
View File
@@ -1469,24 +1469,6 @@
/* No comment provided by engineer. */
"Group links" = "ลิงค์กลุ่ม";
/* No comment provided by engineer. */
"Members can add message reactions." = "สมาชิกกลุ่มสามารถเพิ่มการแสดงปฏิกิริยาต่อข้อความได้";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "สมาชิกกลุ่มสามารถลบข้อความที่ส่งแล้วอย่างถาวร";
/* No comment provided by engineer. */
"Members can send direct messages." = "สมาชิกกลุ่มสามารถส่งข้อความโดยตรงได้";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "สมาชิกกลุ่มสามารถส่งข้อความที่จะหายไปหลังจากเวลาที่กำหนดหลังการอ่าน (disappearing messages) ได้";
/* No comment provided by engineer. */
"Members can send files and media." = "สมาชิกกลุ่มสามารถส่งไฟล์และสื่อ";
/* No comment provided by engineer. */
"Members can send voice messages." = "สมาชิกกลุ่มสามารถส่งข้อความเสียง";
/* notification */
"Group message:" = "ข้อความกลุ่ม:";
@@ -1853,6 +1835,24 @@
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "สมาชิกจะถูกลบออกจากกลุ่ม - ไม่สามารถยกเลิกได้!";
/* No comment provided by engineer. */
"Members can add message reactions." = "สมาชิกกลุ่มสามารถเพิ่มการแสดงปฏิกิริยาต่อข้อความได้";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "สมาชิกกลุ่มสามารถลบข้อความที่ส่งแล้วอย่างถาวร";
/* No comment provided by engineer. */
"Members can send direct messages." = "สมาชิกกลุ่มสามารถส่งข้อความโดยตรงได้";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "สมาชิกกลุ่มสามารถส่งข้อความที่จะหายไปหลังจากเวลาที่กำหนดหลังการอ่าน (disappearing messages) ได้";
/* No comment provided by engineer. */
"Members can send files and media." = "สมาชิกกลุ่มสามารถส่งไฟล์และสื่อ";
/* No comment provided by engineer. */
"Members can send voice messages." = "สมาชิกกลุ่มสามารถส่งข้อความเสียง";
/* item status text */
"Message delivery error" = "ข้อผิดพลาดในการส่งข้อความ";
+21 -21
View File
@@ -2301,27 +2301,6 @@
/* No comment provided by engineer. */
"Group links" = "Grup bağlantıları";
/* No comment provided by engineer. */
"Members can add message reactions." = "Grup üyeleri mesaj tepkileri ekleyebilir.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Grup üyeleri, gönderilen mesajları kalıcı olarak silebilir. (24 saat içinde)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Grup üyeleri doğrudan mesajlar gönderebilir.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Grup üyeleri kaybolan mesajlar gönderebilir.";
/* No comment provided by engineer. */
"Members can send files and media." = "Grup üyeleri dosyalar ve medya gönderebilir.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Grup üyeleri SimpleX bağlantıları gönderebilir.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Grup üyeleri sesli mesajlar gönderebilir.";
/* notification */
"Group message:" = "Grup mesajı:";
@@ -2805,6 +2784,27 @@
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "Üye gruptan çıkarılacaktır - bu geri alınamaz!";
/* No comment provided by engineer. */
"Members can add message reactions." = "Grup üyeleri mesaj tepkileri ekleyebilir.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Grup üyeleri, gönderilen mesajları kalıcı olarak silebilir. (24 saat içinde)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Grup üyeleri doğrudan mesajlar gönderebilir.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Grup üyeleri kaybolan mesajlar gönderebilir.";
/* No comment provided by engineer. */
"Members can send files and media." = "Grup üyeleri dosyalar ve medya gönderebilir.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Grup üyeleri SimpleX bağlantıları gönderebilir.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Grup üyeleri sesli mesajlar gönderebilir.";
/* No comment provided by engineer. */
"Menus" = "Menüler";
+25 -25
View File
@@ -892,7 +892,7 @@
"Change self-destruct passcode" = "Змінити пароль самознищення";
/* authentication reason */
"Change user profiles" = "Зміна профілів користувачів";
"Change chat profiles" = "Зміна профілів користувачів";
/* chat item text */
"changed address for you" = "змінили для вас адресу";
@@ -2424,27 +2424,6 @@
/* No comment provided by engineer. */
"Group links" = "Групові посилання";
/* No comment provided by engineer. */
"Members can add message reactions." = "Учасники групи можуть додавати реакції на повідомлення.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Учасники групи можуть безповоротно видаляти надіслані повідомлення. (24 години)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Учасники групи можуть надсилати прямі повідомлення.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Учасники групи можуть надсилати зникаючі повідомлення.";
/* No comment provided by engineer. */
"Members can send files and media." = "Учасники групи можуть надсилати файли та медіа.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Учасники групи можуть надсилати посилання SimpleX.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Учасники групи можуть надсилати голосові повідомлення.";
/* notification */
"Group message:" = "Групове повідомлення:";
@@ -2934,6 +2913,27 @@
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "Учасник буде видалений з групи - це неможливо скасувати!";
/* No comment provided by engineer. */
"Members can add message reactions." = "Учасники групи можуть додавати реакції на повідомлення.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Учасники групи можуть безповоротно видаляти надіслані повідомлення. (24 години)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Учасники групи можуть надсилати прямі повідомлення.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Учасники групи можуть надсилати зникаючі повідомлення.";
/* No comment provided by engineer. */
"Members can send files and media." = "Учасники групи можуть надсилати файли та медіа.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Учасники групи можуть надсилати посилання SimpleX.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Учасники групи можуть надсилати голосові повідомлення.";
/* No comment provided by engineer. */
"Menus" = "Меню";
@@ -3672,7 +3672,7 @@
"Push notifications" = "Push-повідомлення";
/* No comment provided by engineer. */
"Push Notifications" = "Push-сповіщення";
"Push notifications" = "Push-сповіщення";
/* No comment provided by engineer. */
"Push server" = "Push-сервер";
@@ -3949,10 +3949,10 @@
"Safer groups" = "Безпечніші групи";
/* No comment provided by engineer. */
"Same conditions will apply to operator **%@**." = "Такі ж умови діятимуть і для оператора **%@**.";
"The same conditions will apply to operator **%@**." = "Такі ж умови діятимуть і для оператора **%@**.";
/* No comment provided by engineer. */
"Same conditions will apply to operator(s): **%@**." = "Такі ж умови будуть застосовуватися до оператора(ів): **%@**.";
"The same conditions will apply to operator(s): **%@**." = "Такі ж умови будуть застосовуватися до оператора(ів): **%@**.";
/* alert button
chat item action */
+21 -21
View File
@@ -2214,27 +2214,6 @@
/* No comment provided by engineer. */
"Group links" = "群组链接";
/* No comment provided by engineer. */
"Members can add message reactions." = "群组成员可以添加信息回应。";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "群组成员可以不可撤回地删除已发送的消息";
/* No comment provided by engineer. */
"Members can send direct messages." = "群组成员可以私信。";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "群组成员可以发送限时消息。";
/* No comment provided by engineer. */
"Members can send files and media." = "群组成员可以发送文件和媒体。";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "群成员可发送 SimpleX 链接。";
/* No comment provided by engineer. */
"Members can send voice messages." = "群组成员可以发送语音消息。";
/* notification */
"Group message:" = "群组消息:";
@@ -2712,6 +2691,27 @@
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "成员将被移出群组——此操作无法撤消!";
/* No comment provided by engineer. */
"Members can add message reactions." = "群组成员可以添加信息回应。";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "群组成员可以不可撤回地删除已发送的消息";
/* No comment provided by engineer. */
"Members can send direct messages." = "群组成员可以私信。";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "群组成员可以发送限时消息。";
/* No comment provided by engineer. */
"Members can send files and media." = "群组成员可以发送文件和媒体。";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "群成员可发送 SimpleX 链接。";
/* No comment provided by engineer. */
"Members can send voice messages." = "群组成员可以发送语音消息。";
/* No comment provided by engineer. */
"Menus" = "菜单";
@@ -33,6 +33,7 @@ import com.google.accompanist.permissions.rememberPermissionState
import com.google.common.util.concurrent.ListenableFuture
import dev.icerock.moko.resources.compose.painterResource
import dev.icerock.moko.resources.compose.stringResource
import kotlinx.coroutines.delay
import java.util.concurrent.*
// Adapted from learntodroid - https://gist.github.com/learntodroid/8f839be0b29d0378f843af70607bd7f5
@@ -41,13 +42,13 @@ import java.util.concurrent.*
actual fun QRCodeScanner(
showQRCodeScanner: MutableState<Boolean>,
padding: PaddingValues,
onBarcode: (String) -> Unit
onBarcode: suspend (String) -> Boolean
) {
val context = LocalContext.current
val lifecycleOwner = LocalLifecycleOwner.current
var preview by remember { mutableStateOf<Preview?>(null) }
var lastAnalyzedTimeStamp = 0L
var contactLink = ""
val preview = remember { mutableStateOf<Preview?>(null) }
val contactLink = remember { mutableStateOf("") }
val checkingLink = remember { mutableStateOf(false) }
val cameraProviderFuture by produceState<ListenableFuture<ProcessCameraProvider>?>(initialValue = null) {
value = ProcessCameraProvider.getInstance(context)
@@ -86,28 +87,33 @@ actual fun QRCodeScanner(
.build()
val cameraExecutor: ExecutorService = Executors.newSingleThreadExecutor()
cameraProviderFuture?.addListener({
preview = Preview.Builder().build().also {
preview.value = Preview.Builder().build().also {
it.setSurfaceProvider(previewView.surfaceProvider)
}
val detector: QrCodeDetector<GrayU8> = FactoryFiducial.qrcode(null, GrayU8::class.java)
fun getQR(imageProxy: ImageProxy) {
val currentTimeStamp = System.currentTimeMillis()
if (currentTimeStamp - lastAnalyzedTimeStamp >= TimeUnit.SECONDS.toMillis(1)) {
detector.process(imageProxyToGrayU8(imageProxy))
val found = detector.detections
val qr = found.firstOrNull()
if (qr != null) {
if (qr.message != contactLink) {
// Make sure link is new and not a repeat
contactLink = qr.message
onBarcode(contactLink)
suspend fun getQR(imageProxy: ImageProxy) {
if (checkingLink.value) return
checkingLink.value = true
detector.process(imageProxyToGrayU8(imageProxy))
val found = detector.detections
val qr = found.firstOrNull()
if (qr != null) {
if (qr.message != contactLink.value) {
// Make sure link is new and not a repeat if that link was handled successfully
if (onBarcode(qr.message)) {
contactLink.value = qr.message
}
// just some delay to not spam endlessly with alert in case the user scan something wrong, and it fails fast
// (for example, scan user's address while verifying contact code - it prevents alert spam)
delay(1000)
}
}
checkingLink.value = false
imageProxy.close()
}
val imageAnalyzer = ImageAnalysis.Analyzer { proxy -> getQR(proxy) }
val imageAnalyzer = ImageAnalysis.Analyzer { proxy -> withApi { getQR(proxy) } }
val imageAnalysis: ImageAnalysis = ImageAnalysis.Builder()
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
.setImageQueueDepth(1)
@@ -115,7 +121,7 @@ actual fun QRCodeScanner(
.also { it.setAnalyzer(cameraExecutor, imageAnalyzer) }
try {
cameraProviderFuture?.get()?.unbindAll()
cameraProviderFuture?.get()?.bindToLifecycle(lifecycleOwner, cameraSelector, preview, imageAnalysis)
cameraProviderFuture?.get()?.bindToLifecycle(lifecycleOwner, cameraSelector, preview.value, imageAnalysis)
} catch (e: Exception) {
Log.d(TAG, "CameraPreview: ${e.localizedMessage}")
}
@@ -71,7 +71,7 @@ if(NOT APPLE)
else()
# Without direct linking it can't find hs_init in linking step
add_library( rts SHARED IMPORTED )
FILE(GLOB RTSLIB ${CMAKE_SOURCE_DIR}/libs/${OS_LIB_PATH}-${OS_LIB_ARCH}/deps/libHSrts*_thr-*.${OS_LIB_EXT})
FILE(GLOB RTSLIB ${CMAKE_SOURCE_DIR}/libs/${OS_LIB_PATH}-${OS_LIB_ARCH}/libHSrts*_thr-*.${OS_LIB_EXT})
set_target_properties( rts PROPERTIES IMPORTED_LOCATION ${RTSLIB})
target_link_libraries(app-lib rts simplex)
@@ -1546,8 +1546,9 @@ data class GroupProfile (
@Serializable
data class BusinessChatInfo (
val memberId: String,
val chatType: BusinessChatType
val chatType: BusinessChatType,
val businessId: String,
val customerId: String,
)
@Serializable
@@ -2436,9 +2436,7 @@ object ChatController {
) {
receiveFile(rhId, r.user, file.fileId, auto = true)
}
if (cItem.showNotification && (allowedToShowNotification() || chatModel.chatId.value != cInfo.id || chatModel.remoteHostId() != rhId)) {
ntfManager.notifyMessageReceived(r.user, cInfo, cItem)
}
ntfManager.notifyMessageReceived(rhId, r.user, cInfo, cItem)
}
}
is CR.ChatItemsStatusesUpdated ->
@@ -2452,7 +2450,7 @@ object ChatController {
}
}
is CR.ChatItemUpdated ->
chatItemSimpleUpdate(rhId, r.user, r.chatItem)
chatItemUpdateNotify(rhId, r.user, r.chatItem)
is CR.ChatItemReaction -> {
if (active(r.user)) {
withChats {
@@ -2950,9 +2948,17 @@ object ChatController {
}
private suspend fun chatItemSimpleUpdate(rh: Long?, user: UserLike, aChatItem: AChatItem) {
if (activeUser(rh, user)) {
val cInfo = aChatItem.chatInfo
val cItem = aChatItem.chatItem
withChats { upsertChatItem(rh, cInfo, cItem) }
}
}
private suspend fun chatItemUpdateNotify(rh: Long?, user: UserLike, aChatItem: AChatItem) {
val cInfo = aChatItem.chatInfo
val cItem = aChatItem.chatItem
val notify = { ntfManager.notifyMessageReceived(user, cInfo, cItem) }
val notify = { ntfManager.notifyMessageReceived(rh, user, cInfo, cItem) }
if (!activeUser(rh, user)) {
notify()
} else if (withChats { upsertChatItem(rh, cInfo, cItem) }) {
@@ -6498,7 +6504,7 @@ sealed class SQLiteError {
@Serializable
sealed class AgentErrorType {
val string: String get() = when (this) {
is CMD -> "CMD ${cmdErr.string}"
is CMD -> "CMD ${cmdErr.string} $errContext"
is CONN -> "CONN ${connErr.string}"
is SMP -> "SMP ${smpErr.string}"
// is NTF -> "NTF ${ntfErr.string}"
@@ -6511,7 +6517,7 @@ sealed class AgentErrorType {
is CRITICAL -> "CRITICAL $offerRestart $criticalErr"
is INACTIVE -> "INACTIVE"
}
@Serializable @SerialName("CMD") class CMD(val cmdErr: CommandErrorType): AgentErrorType()
@Serializable @SerialName("CMD") class CMD(val cmdErr: CommandErrorType, val errContext: String): AgentErrorType()
@Serializable @SerialName("CONN") class CONN(val connErr: ConnectionErrorType): AgentErrorType()
@Serializable @SerialName("SMP") class SMP(val serverAddress: String, val smpErr: SMPErrorType): AgentErrorType()
// @Serializable @SerialName("NTF") class NTF(val ntfErr: SMPErrorType): AgentErrorType()
@@ -36,9 +36,17 @@ abstract class NtfManager {
)
)
fun notifyMessageReceived(user: UserLike, cInfo: ChatInfo, cItem: ChatItem) {
if (!cInfo.ntfsEnabled) return
displayNotification(user = user, chatId = cInfo.id, displayName = cInfo.displayName, msgText = hideSecrets(cItem))
fun notifyMessageReceived(rhId: Long?, user: UserLike, cInfo: ChatInfo, cItem: ChatItem) {
if (
cItem.showNotification &&
cInfo.ntfsEnabled &&
(
allowedToShowNotification() ||
chatModel.chatId.value != cInfo.id ||
chatModel.remoteHostId() != rhId)
) {
displayNotification(user = user, chatId = cInfo.id, displayName = cInfo.displayName, msgText = hideSecrets(cItem))
}
}
fun acceptContactRequestAction(userId: Long?, incognito: Boolean, chatId: ChatId) {
@@ -13,19 +13,19 @@ import chat.simplex.res.MR
import dev.icerock.moko.resources.compose.stringResource
@Composable
fun ScanCodeView(verifyCode: (String?, cb: (Boolean) -> Unit) -> Unit, close: () -> Unit) {
fun ScanCodeView(verifyCode: suspend (String?) -> Boolean, close: () -> Unit) {
ColumnWithScrollBar {
AppBarTitle(stringResource(MR.strings.scan_code))
QRCodeScanner { text ->
verifyCode(text) {
if (it) {
close()
} else {
AlertManager.shared.showAlertMsg(
title = generalGetString(MR.strings.incorrect_code)
)
}
val success = verifyCode(text)
if (success) {
close()
} else {
AlertManager.shared.showAlertMsg(
title = generalGetString(MR.strings.incorrect_code)
)
}
success
}
Text(stringResource(MR.strings.scan_code_from_contacts_app), Modifier.padding(horizontal = DEFAULT_PADDING))
SectionBottomSpacer()
@@ -35,14 +35,14 @@ fun VerifyCodeView(
displayName,
connectionCode,
connectionVerified,
verifyCode = { newCode, cb ->
withBGApi {
val res = verify(newCode)
if (res != null) {
val (verified) = res
cb(verified)
if (verified) close()
}
verifyCode = { newCode ->
val res = verify(newCode)
if (res != null) {
val (verified) = res
if (verified) close()
verified
} else {
false
}
}
)
@@ -54,7 +54,7 @@ private fun VerifyCodeLayout(
displayName: String,
connectionCode: String,
connectionVerified: Boolean,
verifyCode: (String?, cb: (Boolean) -> Unit) -> Unit,
verifyCode: suspend (String?) -> Boolean,
) {
ColumnWithScrollBar(Modifier.padding(horizontal = DEFAULT_PADDING)) {
AppBarTitle(stringResource(MR.strings.security_code), withPadding = false)
@@ -100,7 +100,7 @@ private fun VerifyCodeLayout(
) {
if (connectionVerified) {
SimpleButton(generalGetString(MR.strings.clear_verification), painterResource(MR.images.ic_shield)) {
verifyCode(null) {}
withApi { verifyCode(null) }
}
} else {
if (appPlatform.isAndroid) {
@@ -111,7 +111,8 @@ private fun VerifyCodeLayout(
}
}
SimpleButton(generalGetString(MR.strings.mark_code_verified), painterResource(MR.images.ic_verified_user)) {
verifyCode(connectionCode) { verified ->
withApi {
val verified = verifyCode(connectionCode)
if (!verified) {
AlertManager.shared.showAlertMsg(
title = generalGetString(MR.strings.incorrect_code)
@@ -347,7 +347,7 @@ fun ChatPreviewView(
chatItemContentPreview(chat, ci)
}
if (mc !is MsgContent.MCVoice || !showContentPreview || mc.text.isNotEmpty() || chatModelDraftChatId == chat.id) {
Box(Modifier.offset(x = if (mc is MsgContent.MCFile) -15.sp.toDp() else 0.dp)) {
Box(Modifier.offset(x = if (mc is MsgContent.MCFile && ci.meta.itemDeleted == null) -15.sp.toDp() else 0.dp)) {
chatPreviewText()
}
}
@@ -203,7 +203,7 @@ private fun MutableState<MigrationToState?>.PasteOrScanLinkView(close: () -> Uni
if (appPlatform.isAndroid) {
SectionView(stringResource(MR.strings.scan_QR_code).replace('\n', ' ').uppercase()) {
QRCodeScanner(showQRCodeScanner = remember { mutableStateOf(true) }) { text ->
withBGApi { checkUserLink(text) }
checkUserLink(text)
}
}
SectionSpacer()
@@ -518,8 +518,8 @@ private fun ProgressView() {
DefaultProgressView(null)
}
private suspend fun MutableState<MigrationToState?>.checkUserLink(link: String) {
if (strHasSimplexFileLink(link.trim())) {
private suspend fun MutableState<MigrationToState?>.checkUserLink(link: String): Boolean {
return if (strHasSimplexFileLink(link.trim())) {
val data = MigrationFileLinkData.readFromLink(link)
val hasProxyConfigured = data?.networkConfig?.hasProxyConfigured() ?: false
val networkConfig = data?.networkConfig?.transformToPlatformSupported()
@@ -537,11 +537,13 @@ private suspend fun MutableState<MigrationToState?>.checkUserLink(link: String)
networkProxy = null
)
}
true
} else {
AlertManager.shared.showAlertMsg(
title = generalGetString(MR.strings.invalid_file_link),
text = generalGetString(MR.strings.the_text_you_pasted_is_not_a_link)
)
false
}
}
@@ -12,6 +12,7 @@ import chat.simplex.common.platform.*
import chat.simplex.common.views.chatlist.*
import chat.simplex.common.views.helpers.*
import chat.simplex.res.MR
import kotlinx.coroutines.*
import java.net.URI
enum class ConnectionLinkType {
@@ -26,8 +27,18 @@ suspend fun planAndConnect(
cleanup: (() -> Unit)? = null,
filterKnownContact: ((Contact) -> Unit)? = null,
filterKnownGroup: ((GroupInfo) -> Unit)? = null,
) {
val connectionPlan = chatModel.controller.apiConnectPlan(rhId, uri.toString())
): CompletableDeferred<Boolean> {
val completable = CompletableDeferred<Boolean>()
val close: (() -> Unit)? = {
close?.invoke()
// if close was called, it means the connection was created
completable.complete(true)
}
val cleanup: (() -> Unit)? = {
cleanup?.invoke()
completable.complete(!completable.isActive)
}
val connectionPlan = chatModel.controller.apiConnectPlan(rhId, uri)
if (connectionPlan != null) {
val link = strHasSingleSimplexLink(uri.trim())
val linkText = if (link?.format is Format.SimplexLink)
@@ -333,6 +344,7 @@ suspend fun planAndConnect(
)
}
}
return completable
}
suspend fun connectViaUri(
@@ -343,7 +355,7 @@ suspend fun connectViaUri(
connectionPlan: ConnectionPlan?,
close: (() -> Unit)?,
cleanup: (() -> Unit)?,
) {
): Boolean {
val pcc = chatModel.controller.apiConnect(rhId, incognito, uri)
val connLinkType = if (connectionPlan != null) planToConnectionLinkType(connectionPlan) else ConnectionLinkType.INVITATION
if (pcc != null) {
@@ -363,6 +375,7 @@ suspend fun connectViaUri(
)
}
cleanup?.invoke()
return pcc != null
}
fun planToConnectionLinkType(connectionPlan: ConnectionPlan): ConnectionLinkType {
@@ -38,8 +38,7 @@ import chat.simplex.common.views.chat.topPaddingToContent
import chat.simplex.common.views.helpers.*
import chat.simplex.common.views.usersettings.*
import chat.simplex.res.MR
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.*
import java.net.URI
enum class NewChatOption {
@@ -559,15 +558,14 @@ private fun ConnectView(rhId: Long?, showQRCodeScanner: MutableState<Boolean>, p
SectionView(stringResource(MR.strings.or_scan_qr_code).uppercase(), headerBottomPadding = 5.dp) {
QRCodeScanner(showQRCodeScanner) { text ->
withBGApi {
val res = verify(rhId, text, close)
if (!res) {
AlertManager.shared.showAlertMsg(
title = generalGetString(MR.strings.invalid_qr_code),
text = generalGetString(MR.strings.code_you_scanned_is_not_simplex_link_qr_code)
)
}
val linkVerified = verifyOnly(text)
if (!linkVerified) {
AlertManager.shared.showAlertMsg(
title = generalGetString(MR.strings.invalid_qr_code),
text = generalGetString(MR.strings.code_you_scanned_is_not_simplex_link_qr_code)
)
}
verifyAndConnect(rhId, text, close)
}
}
}
@@ -656,23 +654,25 @@ private fun filteredProfiles(users: List<User>, searchTextOrPassword: String): L
}
}
private suspend fun verify(rhId: Long?, text: String?, close: () -> Unit): Boolean {
private fun verifyOnly(text: String?): Boolean = text != null && strIsSimplexLink(text)
private suspend fun verifyAndConnect(rhId: Long?, text: String?, close: () -> Unit): Boolean {
if (text != null && strIsSimplexLink(text)) {
connect(rhId, text, close)
return true
return withContext(Dispatchers.Default) {
connect(rhId, text, close)
}
}
return false
}
private suspend fun connect(rhId: Long?, link: String, close: () -> Unit, cleanup: (() -> Unit)? = null) {
private suspend fun connect(rhId: Long?, link: String, close: () -> Unit, cleanup: (() -> Unit)? = null): Boolean =
planAndConnect(
rhId,
link,
close = close,
cleanup = cleanup,
incognito = null
)
}
).await()
private fun createInvitation(
rhId: Long?,
@@ -10,5 +10,5 @@ import chat.simplex.common.ui.theme.DEFAULT_PADDING_HALF
expect fun QRCodeScanner(
showQRCodeScanner: MutableState<Boolean> = remember { mutableStateOf(true) },
padding: PaddingValues = PaddingValues(horizontal = DEFAULT_PADDING * 2f, vertical = DEFAULT_PADDING_HALF),
onBarcode: (String) -> Unit
onBarcode: suspend (String) -> Boolean
)
@@ -342,6 +342,7 @@ private fun ChooseServerOperatorsInfoView() {
ColumnWithScrollBar(Modifier.padding(horizontal = DEFAULT_PADDING)) {
AppBarTitle(stringResource(MR.strings.onboarding_network_operators), withPadding = false)
ReadableText(stringResource(MR.strings.onboarding_network_operators_app_will_use_different_operators))
ReadableText(stringResource(MR.strings.onboarding_network_operators_cant_see_who_talks_to_whom))
ReadableText(stringResource(MR.strings.onboarding_network_operators_app_will_use_for_routing))
SectionBottomSpacer()
}
@@ -181,7 +181,7 @@ fun OnboardingInformationButton(
.clip(CircleShape)
.clickable { onClick() }
) {
Row(Modifier.padding(8.dp), horizontalArrangement = Arrangement.spacedBy(4.dp) ) {
Row(Modifier.padding(8.dp), horizontalArrangement = Arrangement.spacedBy(4.dp)) {
Icon(
painterResource(MR.images.ic_info),
null,
@@ -40,6 +40,8 @@ import chat.simplex.res.MR
import dev.icerock.moko.resources.ImageResource
import dev.icerock.moko.resources.compose.painterResource
import dev.icerock.moko.resources.compose.stringResource
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
@Composable
fun ConnectDesktopView(close: () -> Unit) {
@@ -233,7 +235,7 @@ private fun FoundDesktop(
SectionSpacer()
if (compatible) {
SectionItemView({ confirmKnownDesktop(sessionAddress, rc) }) {
SectionItemView({ withBGApi { confirmKnownDesktop(sessionAddress, rc) } }) {
Icon(painterResource(MR.images.ic_check), generalGetString(MR.strings.connect_button), tint = MaterialTheme.colors.secondary)
TextIconSpaced(false)
Text(generalGetString(MR.strings.connect_button))
@@ -356,7 +358,7 @@ private fun ScanDesktopAddressView(sessionAddress: MutableState<String>) {
SectionView(stringResource(MR.strings.scan_qr_code_from_desktop).uppercase()) {
QRCodeScanner { text ->
sessionAddress.value = text
processDesktopQRCode(sessionAddress, text)
connectDesktopAddress(sessionAddress, text)
}
}
}
@@ -398,7 +400,7 @@ private fun DesktopAddressView(sessionAddress: MutableState<String>) {
stringResource(MR.strings.connect_to_desktop),
disabled = sessionAddress.value.isEmpty(),
click = {
connectDesktopAddress(sessionAddress, sessionAddress.value)
withBGApi { connectDesktopAddress(sessionAddress, sessionAddress.value) }
},
)
}
@@ -461,10 +463,6 @@ private suspend fun updateRemoteCtrls(remoteCtrls: SnapshotStateList<RemoteCtrlI
}
}
private fun processDesktopQRCode(sessionAddress: MutableState<String>, resp: String) {
connectDesktopAddress(sessionAddress, resp)
}
private fun findKnownDesktop(showConnectScreen: MutableState<Boolean>) {
withBGApi {
if (controller.findKnownRemoteCtrl()) {
@@ -478,45 +476,48 @@ private fun findKnownDesktop(showConnectScreen: MutableState<Boolean>) {
}
}
private fun confirmKnownDesktop(sessionAddress: MutableState<String>, rc: RemoteCtrlInfo) {
connectDesktop(sessionAddress) {
controller.confirmRemoteCtrl(rc.remoteCtrlId)
private suspend fun confirmKnownDesktop(sessionAddress: MutableState<String>, rc: RemoteCtrlInfo): Boolean {
return withContext(Dispatchers.Default) {
connectDesktop(sessionAddress) {
controller.confirmRemoteCtrl(rc.remoteCtrlId)
}
}
}
private fun connectDesktopAddress(sessionAddress: MutableState<String>, addr: String) {
connectDesktop(sessionAddress) {
controller.connectRemoteCtrl(addr)
private suspend fun connectDesktopAddress(sessionAddress: MutableState<String>, addr: String): Boolean {
return withContext(Dispatchers.Default) {
connectDesktop(sessionAddress) {
controller.connectRemoteCtrl(addr)
}
}
}
private fun connectDesktop(sessionAddress: MutableState<String>, connect: suspend () -> Pair<SomeRemoteCtrl?, CR.ChatCmdError?>) {
withBGApi {
val res = connect()
if (res.first != null) {
val (rc_, ctrlAppInfo, v) = res.first!!
sessionAddress.value = ""
chatModel.remoteCtrlSession.value = RemoteCtrlSession(
ctrlAppInfo = ctrlAppInfo,
appVersion = v,
sessionState = UIRemoteCtrlSessionState.Connecting(remoteCtrl_ = rc_)
)
} else {
val e = res.second ?: return@withBGApi
when {
e.chatError is ChatError.ChatErrorRemoteCtrl && e.chatError.remoteCtrlError is RemoteCtrlError.BadInvitation -> showBadInvitationErrorAlert()
e.chatError is ChatError.ChatErrorChat && e.chatError.errorType is ChatErrorType.CommandError -> showBadInvitationErrorAlert()
e.chatError is ChatError.ChatErrorRemoteCtrl && e.chatError.remoteCtrlError is RemoteCtrlError.BadVersion -> showBadVersionAlert(v = e.chatError.remoteCtrlError.appVersion)
e.chatError is ChatError.ChatErrorAgent && e.chatError.agentError is AgentErrorType.RCP && e.chatError.agentError.rcpErr is RCErrorType.VERSION -> showBadVersionAlert(v = null)
e.chatError is ChatError.ChatErrorAgent && e.chatError.agentError is AgentErrorType.RCP && e.chatError.agentError.rcpErr is RCErrorType.CTRL_AUTH -> showDesktopDisconnectedErrorAlert()
else -> {
val errMsg = "${e.responseType}: ${e.details}"
Log.e(TAG, "bad response: $errMsg")
AlertManager.shared.showAlertMsg(generalGetString(MR.strings.error), errMsg)
}
private suspend fun connectDesktop(sessionAddress: MutableState<String>, connect: suspend () -> Pair<SomeRemoteCtrl?, CR.ChatCmdError?>): Boolean {
val res = connect()
if (res.first != null) {
val (rc_, ctrlAppInfo, v) = res.first!!
sessionAddress.value = ""
chatModel.remoteCtrlSession.value = RemoteCtrlSession(
ctrlAppInfo = ctrlAppInfo,
appVersion = v,
sessionState = UIRemoteCtrlSessionState.Connecting(remoteCtrl_ = rc_)
)
} else {
val e = res.second ?: return false
when {
e.chatError is ChatError.ChatErrorRemoteCtrl && e.chatError.remoteCtrlError is RemoteCtrlError.BadInvitation -> showBadInvitationErrorAlert()
e.chatError is ChatError.ChatErrorChat && e.chatError.errorType is ChatErrorType.CommandError -> showBadInvitationErrorAlert()
e.chatError is ChatError.ChatErrorRemoteCtrl && e.chatError.remoteCtrlError is RemoteCtrlError.BadVersion -> showBadVersionAlert(v = e.chatError.remoteCtrlError.appVersion)
e.chatError is ChatError.ChatErrorAgent && e.chatError.agentError is AgentErrorType.RCP && e.chatError.agentError.rcpErr is RCErrorType.VERSION -> showBadVersionAlert(v = null)
e.chatError is ChatError.ChatErrorAgent && e.chatError.agentError is AgentErrorType.RCP && e.chatError.agentError.rcpErr is RCErrorType.CTRL_AUTH -> showDesktopDisconnectedErrorAlert()
else -> {
val errMsg = "${e.responseType}: ${e.details}"
Log.e(TAG, "bad response: $errMsg")
AlertManager.shared.showAlertMsg(generalGetString(MR.strings.error), errMsg)
}
}
}
return res.first != null
}
private fun verifyDesktopSessionCode(remoteCtrls: SnapshotStateList<RemoteCtrlInfo>, sessCode: String) {
@@ -26,6 +26,7 @@ fun ScanProtocolServerLayout(rhId: Long?, onNext: (UserServer) -> Unit) {
text = generalGetString(MR.strings.smp_servers_check_address)
)
}
res != null
}
}
}
@@ -15,8 +15,7 @@
<string name="delete_chat_profile_action_cannot_be_undone_warning">لا يمكن التراجع عن هذا الإجراء - سيتم فقد ملف التعريف وجهات الاتصال والرسائل والملفات الخاصة بك بشكل نهائي.</string>
<string name="alert_message_no_group">هذه المجموعة لم تعد موجودة.</string>
<string name="this_QR_code_is_not_a_link">رمز QR هذا ليس رابطًا!</string>
<string name="next_generation_of_private_messaging">الجيل القادم من
\nالرسائل الخاصة</string>
<string name="next_generation_of_private_messaging">الجيل القادم من \nالرسائل الخاصة</string>
<string name="delete_files_and_media_desc">لا يمكن التراجع عن هذا الإجراء - سيتم حذف جميع الملفات والوسائط المستلمة والمرسلة. ستبقى الصور منخفضة الدقة.</string>
<string name="enable_automatic_deletion_message">لا يمكن التراجع عن هذا الإجراء - سيتم حذف الرسائل المرسلة والمستلمة قبل التحديد. قد تأخذ عدة دقائق.</string>
<string name="messages_section_description">ينطبق هذا الإعداد على الرسائل الموجودة في ملف تعريف الدردشة الحالي الخاص بك</string>
@@ -1075,8 +1075,9 @@
<!-- ChooseServerOperators.kt -->
<string name="onboarding_choose_server_operators">Server operators</string>
<string name="onboarding_network_operators">Network operators</string>
<string name="onboarding_network_operators_app_will_use_different_operators">When more than one network operator is enabled, the app will use the servers of different operators for each conversation.</string>
<string name="onboarding_network_operators_app_will_use_for_routing">For example, if you receive messages via SimpleX Chat server, the app will use one of Flux servers for private routing.</string>
<string name="onboarding_network_operators_app_will_use_different_operators">The app protects your privacy by using different operators in each conversation.</string>
<string name="onboarding_network_operators_cant_see_who_talks_to_whom">When more than one operator is enabled, none of them has metadata to learn who communicates with whom.</string>
<string name="onboarding_network_operators_app_will_use_for_routing">For example, if your contact receives messages via a SimpleX Chat server, your app will deliver them via a Flux server.</string>
<string name="onboarding_select_network_operators_to_use">Select network operators to use.</string>
<string name="how_it_helps_privacy">How it helps privacy</string>
<string name="onboarding_network_operators_configure_via_settings">You can configure servers via settings.</string>
@@ -1745,10 +1746,10 @@
<string name="use_servers_of_operator_x">Use %s</string>
<string name="operator_conditions_failed_to_load">Current conditions text couldn\'t be loaded, you can review conditions via this link:</string>
<string name="operator_conditions_accepted_for_some"><![CDATA[Conditions are already accepted for following operator(s): <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[Same conditions will apply to operator <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[Same conditions will apply to operator(s): <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[The same conditions will apply to operator <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[The same conditions will apply to operator(s): <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_applied"><![CDATA[These conditions will also apply for: <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[Same conditions will apply to operator: <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[The same conditions will apply to operator: <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[Conditions will be accepted for operator(s): <b>%s</b>.]]></string>
<string name="operators_conditions_will_also_apply"><![CDATA[These conditions will also apply for: <b>%s</b>.]]></string>
<string name="view_conditions">View conditions</string>
@@ -462,8 +462,7 @@
<string name="callstate_connected">Verbunden</string>
<string name="callstate_ended">Beendet</string>
<!-- SimpleXInfo -->
<string name="next_generation_of_private_messaging">Die nächste Generation
\ndes privaten Messagings</string>
<string name="next_generation_of_private_messaging">Die nächste Generation \ndes privaten Messagings</string>
<string name="privacy_redefined">Datenschutz neu definiert</string>
<string name="first_platform_without_user_ids">Keine Benutzerkennungen.</string>
<string name="immune_to_spam_and_abuse">Immun gegen Spam</string>
@@ -737,8 +737,7 @@
<string name="connection_you_accepted_will_be_cancelled">¡La conexión que has aceptado se cancelará!</string>
<string name="database_initialization_error_desc">La base de datos no funciona correctamente. Pulsa para conocer más</string>
<string name="moderate_message_will_be_marked_warning">El mensaje será marcado como moderado para todos los miembros.</string>
<string name="next_generation_of_private_messaging">La nueva generación
\nde mensajería privada</string>
<string name="next_generation_of_private_messaging">La nueva generación \nde mensajería privada</string>
<string name="delete_files_and_media_desc">Esta acción es irreversible. Se eliminarán todos los archivos y multimedia recibidos y enviados. Las imágenes de baja resolución permanecerán.</string>
<string name="enable_automatic_deletion_message">Esta acción es irreversible. Los mensajes enviados y recibidos anteriores a la selección serán eliminados. Podría tardar varios minutos.</string>
<string name="messages_section_description">Esta configuración se aplica a los mensajes del perfil actual</string>
@@ -438,8 +438,7 @@
<string name="callstate_waiting_for_confirmation">en attente de confirmation…</string>
<string name="callstate_connected">connecté</string>
<string name="callstate_ended">terminé</string>
<string name="next_generation_of_private_messaging">La nouvelle génération
\nde messagerie privée</string>
<string name="next_generation_of_private_messaging">La nouvelle génération \nde messagerie privée</string>
<string name="privacy_redefined">La vie privée redéfinie</string>
<string name="first_platform_without_user_ids">Aucun identifiant d\'utilisateur.</string>
<string name="immune_to_spam_and_abuse">Protégé du spam</string>
@@ -156,7 +156,7 @@
<string name="allow_disappearing_messages_only_if">Az eltűnő üzenetek küldése csak abban az esetben van engedélyezve, ha az ismerőse is engedélyezi.</string>
<string name="icon_descr_audio_off">Hang kikapcsolva</string>
<string name="allow_direct_messages">A közvetlen üzenetek küldése a tagok között engedélyezve van.</string>
<string name="settings_section_title_app">Alkalmazás</string>
<string name="settings_section_title_app">ALKALMAZÁS</string>
<string name="icon_descr_call_progress">Hívás folyamatban</string>
<string name="both_you_and_your_contact_can_add_message_reactions">Mindkét fél küldhet üzenetreakciókat.</string>
<string name="both_you_and_your_contact_can_make_calls">Mindkét fél tud hívásokat kezdeményezni.</string>
@@ -360,7 +360,7 @@
<string name="receipts_groups_disable_for_all">Letiltás az összes csoport számára</string>
<string name="receipts_groups_enable_for_all">Engedélyezés az összes csoport számára</string>
<string name="feature_enabled_for_contact">engedélyezve az ismerős számára</string>
<string name="disappearing_messages_are_prohibited">Az eltűnő üzenetek küldése le van tiltva ebben a csoportban.</string>
<string name="disappearing_messages_are_prohibited">Az eltűnő üzenetek küldése le van tiltva.</string>
<string name="delete_address">Cím törlése</string>
<string name="ttl_week">%d hét</string>
<string name="desktop_address">Számítógép címe</string>
@@ -547,15 +547,15 @@
<string name="from_gallery_button">A galériából</string>
<string name="receipts_groups_enable_keep_overrides">Engedélyezés (csoport felülírások megtartásával)</string>
<string name="error_deleting_contact">Hiba az ismerős törlésekor</string>
<string name="group_members_can_delete">A csoport tagjai véglegesen törölhetik az elküldött üzeneteiket. (24 óra)</string>
<string name="group_members_can_delete">A tagok véglegesen törölhetik az elküldött üzeneteiket. (24 óra)</string>
<string name="error_changing_role">Hiba a szerepkör megváltoztatásakor</string>
<string name="fix_connection_confirm">Javítás</string>
<string name="group_members_can_send_disappearing">A csoport tagjai küldhetnek eltűnő üzeneteket.</string>
<string name="group_members_can_send_disappearing">A tagok küldhetnek eltűnő üzeneteket.</string>
<string name="fix_connection">Kapcsolat javítása</string>
<string name="failed_to_create_user_title">Hiba a profil létrehozásakor!</string>
<string name="error_adding_members">Hiba a tag(ok) hozzáadásakor</string>
<string name="icon_descr_file">Fájl</string>
<string name="group_members_can_send_files">A csoport tagjai küldhetnek fájlokat és médiatartalmakat.</string>
<string name="group_members_can_send_files">A tagok küldhetnek fájlokat és médiatartalmakat.</string>
<string name="delete_after">Törlés ennyi idő után</string>
<string name="error_changing_message_deletion">Hiba a beállítás megváltoztatásakor</string>
<string name="error_updating_link_for_group">Hiba a csoporthivatkozás frissítésekor</string>
@@ -565,7 +565,7 @@
<string name="error_importing_database">Hiba a csevegési adatbázis importálásakor</string>
<string name="error_enabling_delivery_receipts">Hiba a kézbesítési jelentések engedélyezésekor!</string>
<string name="error_saving_xftp_servers">Hiba az XFTP-kiszolgálók mentésekor</string>
<string name="group_members_can_send_dms">A csoport tagjai küldhetnek egymásnak közvetlen üzeneteket.</string>
<string name="group_members_can_send_dms">A tagok küldhetnek egymásnak közvetlen üzeneteket.</string>
<string name="error_removing_member">Hiba a tag eltávolításakor</string>
<string name="callstate_ended">befejeződött</string>
<string name="v4_6_group_welcome_message">A csoport üdvözlőüzenete</string>
@@ -589,7 +589,7 @@
<string name="fix_connection_not_supported_by_contact">Ismerős általi javítás nem támogatott</string>
<string name="file_not_found">Fájl nem található</string>
<string name="smp_server_test_disconnect">Kapcsolat bontása</string>
<string name="group_members_can_add_message_reactions">A csoport tagjai üzenetreakciókat adhatnak hozzá.</string>
<string name="group_members_can_add_message_reactions">A tagok reakciókat adhatnak hozzá az üzenetekhez.</string>
<string name="export_database">Adatbázis exportálása</string>
<string name="full_name__field">Teljes név:</string>
<string name="v4_6_reduced_battery_usage">Tovább csökkentett akkumulátor-használat</string>
@@ -600,7 +600,7 @@
<string name="error_deleting_database">Hiba a csevegési adatbázis törlésekor</string>
<string name="simplex_link_mode_full">Teljes hivatkozás</string>
<string name="error_changing_address">Hiba a cím megváltoztatásakor</string>
<string name="group_members_can_send_voice">A csoport tagjai küldhetnek hangüzeneteket.</string>
<string name="group_members_can_send_voice">A tagok küldhetnek hangüzeneteket.</string>
<string name="group_preferences">Csoportbeállítások</string>
<string name="error_with_info">Hiba: %s</string>
<string name="v4_4_disappearing_messages">Eltűnő üzenetek</string>
@@ -614,7 +614,7 @@
<string name="conn_event_ratchet_sync_required">titkosítás-újraegyeztetés szükséges</string>
<string name="v4_6_hidden_chat_profiles">Rejtett csevegési profilok</string>
<string name="files_and_media_section">Fájlok és médiatartalmak</string>
<string name="image_saved">A kép mentve a „Galériába”</string>
<string name="image_saved">A kép elmentve a „Galériába”</string>
<string name="hide_notification">Elrejtés</string>
<string name="la_immediately">Azonnal</string>
<string name="files_and_media_prohibited">A fájlok- és a médiatartalmak küldése le van tiltva!</string>
@@ -657,7 +657,7 @@
<string name="service_notifications_disabled">Az azonnali értesítések le vannak tiltva!</string>
<string name="service_notifications">Azonnali értesítések!</string>
<string name="image_descr">Kép</string>
<string name="files_are_prohibited_in_group">A fájlok- és a médiatartalmak le vannak tiltva ebben a csoportban.</string>
<string name="files_are_prohibited_in_group">A fájlok- és a médiatartalmak küldése le van tiltva.</string>
<string name="how_it_works">Hogyan működik</string>
<string name="hide_dev_options">Elrejtés:</string>
<string name="error_creating_member_contact">Hiba az ismerőssel történő kapcsolat létrehozásában</string>
@@ -721,11 +721,11 @@
<string name="v5_3_new_desktop_app">Új számítógép-alkalmazás!</string>
<string name="v4_6_group_moderation_descr">Most már az adminisztrátorok is:\n- törölhetik a tagok üzeneteit.\n- letilthatnak tagokat (megfigyelő szerepkör)</string>
<string name="rcv_group_event_member_added">meghívta őt: %1$s</string>
<string name="message_reactions_are_prohibited">Az üzenetreakciók küldése le van tiltva ebben a csoportban.</string>
<string name="message_reactions_are_prohibited">A reakciók küldése az üzenetekre le van tiltva.</string>
<string name="network_use_onion_hosts_no">Nem</string>
<string name="item_info_no_text">nincs szöveg</string>
<string name="member_info_section_title_member">TAG</string>
<string name="onboarding_notifications_mode_subtitle">Ez később a beállításokon keresztül módosítható.</string>
<string name="onboarding_notifications_mode_subtitle">Hogyan befolyásolja az akkumulátort</string>
<string name="new_member_role">Új tag szerepköre</string>
<string name="la_mode_off">Kikapcsolva</string>
<string name="invalid_contact_link">Érvénytelen hivatkozás!</string>
@@ -751,7 +751,7 @@
<string name="moderate_verb">Moderálás</string>
<string name="chat_preferences_on">bekapcsolva</string>
<string name="v5_1_japanese_portuguese_interface">Japán és portugál kezelőfelület</string>
<string name="message_deletion_prohibited_in_chat">Az üzenetek végleges törlése le van tiltva ebben a csoportban.</string>
<string name="message_deletion_prohibited_in_chat">Az üzenetek végleges törlése le van tiltva.</string>
<string name="remote_host_was_disconnected_toast"><![CDATA[Kapcsolat bontva a(z) <b>%s</b> nevű hordozható eszközzel]]></string>
<string name="custom_time_unit_months">hónap</string>
<string name="privacy_message_draft">Üzenetvázlat</string>
@@ -793,7 +793,7 @@
<string name="link_a_mobile">Hordozható eszköz társítása</string>
<string name="settings_notifications_mode_title">Értesítési szolgáltatás</string>
<string name="only_group_owners_can_enable_voice">Csak a csoporttulajdonosok engedélyezhetik a hangüzenetek küldését.</string>
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages"><![CDATA[Csak az alkalmazások tárolják a felhasználó-profilokat, ismerősöket, csoportokat és a <b>2 rétegű végpontok közötti titkosítással</b> küldött üzeneteket.]]></string>
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages">A felhasználói profilok, névjegyek, csoportok és üzenetek csak az eszközön kerülnek tárolásra a kliensen belül.</string>
<string name="invalid_migration_confirmation">Érvénytelen átköltöztetési visszaigazolás</string>
<string name="only_group_owners_can_change_prefs">Csak a csoporttulajdonosok módosíthatják a csoportbeállításokat.</string>
<string name="no_history">Nincsenek előzmények</string>
@@ -801,7 +801,7 @@
<string name="mark_read">Megjelölés olvasottként</string>
<string name="live">ÉLŐ</string>
<string name="mark_unread">Megjelölés olvasatlanként</string>
<string name="icon_descr_more_button">Több</string>
<string name="icon_descr_more_button">Továbbiak</string>
<string name="auth_log_in_using_credential">Bejelentkezés hitelesítőadatokkal</string>
<string name="invalid_message_format">érvénytelen üzenet formátum</string>
<string name="join_group_button">Csatlakozás</string>
@@ -1163,7 +1163,7 @@
<string name="prohibit_sending_voice_messages">A hangüzenetek küldése le van tiltva.</string>
<string name="set_contact_name">Ismerős nevének beállítása</string>
<string name="only_you_can_send_disappearing">Csak Ön tud eltűnő üzeneteket küldeni.</string>
<string name="share_image">Média megosztása…</string>
<string name="share_image">Médiatartalom megosztása…</string>
<string name="group_info_member_you">Ön: %1$s</string>
<string name="your_preferences">Beállítások</string>
<string name="reset_color">Színek visszaállítása</string>
@@ -1272,7 +1272,7 @@
<string name="database_downgrade_warning">Figyelmeztetés: néhány adat elveszhet!</string>
<string name="tap_to_start_new_chat">Koppintson ide az új csevegés indításához</string>
<string name="waiting_for_desktop">Várakozás a számítógépre…</string>
<string name="next_generation_of_private_messaging">A privát üzenetküldés\nkövetkező generációja</string>
<string name="next_generation_of_private_messaging">Az üzenetküldés jövője</string>
<string name="update_network_settings_question">Hálózati beállítások megváltoztatása?</string>
<string name="waiting_for_mobile_to_connect">Várakozás a hordozható eszköz társítására:</string>
<string name="v4_4_verify_connection_security">Biztonságos kapcsolat hitelesítése</string>
@@ -1287,7 +1287,7 @@
<string name="periodic_notifications_desc">Az új üzenetek rendszeresen letöltésre kerülnek az alkalmazás által naponta néhány százalékot használ az akkumulátorból. Az alkalmazás nem használ push-értesítéseket az eszközről származó adatok nem kerülnek elküldésre a kiszolgálóknak.</string>
<string name="paste_desktop_address">Számítógép címének beillesztése</string>
<string name="description_via_contact_address_link">kapcsolattartási cím-hivatkozáson keresztül</string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Az adatvédelem megőrzése érdekében a push-értesítési rendszer helyett az alkalmazás a <b>SimpleX-háttérszolgáltatást</b> használja - az akkumulátornak csak néhány százalékát használja naponta.]]></string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Az adatvédelem növelése érdekében <b> a SimpleX a háttérben fut</b> a push értesítések használata helyett.]]></string>
<string name="alert_text_connection_pending_they_need_to_be_online_can_delete_and_retry">Az ismerősének online kell lennie ahhoz, hogy a kapcsolat létrejöjjön.\nVisszavonhatja ezt az ismerőskérelmet és eltávolíthatja az ismerőst (ezt később ismét megpróbálhatja egy új hivatkozással).</string>
<string name="restore_passphrase_not_found_desc">A jelszó nem található a Keystore-ban, ezért kézzel szükséges megadni. Ez akkor történhetett meg, ha visszaállította az alkalmazás adatait egy biztonságimentési eszközzel. Ha nem így történt, akkor lépjen kapcsolatba a fejlesztőkkel.</string>
<string name="your_contacts_will_remain_connected">Az ismerősei továbbra is kapcsolódva maradnak.</string>
@@ -1306,7 +1306,7 @@
<string name="profile_will_be_sent_to_contact_sending_link">A profilja elküldésre kerül az ismerőse számára, akitől ezt a hivatkozást kapta.</string>
<string name="system_restricted_background_in_call_desc">Az alkalmazás 1 perc után bezárható a háttérben.</string>
<string name="group_preview_you_are_invited">meghívást kapott a csoportba</string>
<string name="turn_off_battery_optimization"><![CDATA[Használatához <b>engedélyezze a SimpleX háttérben történő futását</b> a következő párbeszédpanelen. Ellenkező esetben az értesítések letiltásra kerülnek.]]></string>
<string name="turn_off_battery_optimization"><![CDATA[<b>Engedélyezze</b> a következő párbeszédpanelen az azonnali értesítések fogadásához.]]></string>
<string name="error_smp_test_server_auth">A kiszolgálónak engedélyre van szüksége a sorbaállítás létrehozásához, ellenőrizze jelszavát</string>
<string name="you_will_join_group">Kapcsolódni fog a csoport összes tagjához.</string>
<string name="error_smp_test_certificate">Lehetséges, hogy a kiszolgáló címében szereplő tanúsítvány-ujjlenyomat helytelen</string>
@@ -1349,7 +1349,7 @@
<string name="alert_title_cant_invite_contacts_descr">Inkognitóprofilt használ ehhez a csoporthoz - fő profilja megosztásának elkerülése érdekében a meghívók küldése le van tiltva</string>
<string name="v4_5_transport_isolation">Átvitel-izoláció</string>
<string name="you_will_be_connected_when_your_connection_request_is_accepted">Akkor lesz kapcsolódva, ha a kapcsolatkérése elfogadásra kerül, várjon, vagy ellenőrizze később!</string>
<string name="voice_messages_are_prohibited">A hangüzenetek küldése le van tiltva ebben a csoportban.</string>
<string name="voice_messages_are_prohibited">A hangüzenetek küldése le van tiltva.</string>
<string name="system_restricted_background_in_call_warn"><![CDATA[A háttérben való hívásokhoz válassza ki az <b>Alkalmazás akkumulátor-használata</b> / <b>Korlátlan</b> módot az alkalmazás beállításaiban.]]></string>
<string name="v5_4_link_mobile_desktop_descr">Biztonságos kvantumrezisztens-protokollon keresztül.</string>
<string name="v5_1_better_messages_descr">- 5 perc hosszúságú hangüzenetek.\n- egyéni üzenet-eltűnési időkorlát.\n- előzmények szerkesztése.</string>
@@ -1363,7 +1363,7 @@
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">A profilja az eszközén van tárolva és csak az ismerőseivel kerül megosztásra. A SimpleX-kiszolgálók nem láthatják a profilját.</string>
<string name="snd_group_event_changed_member_role">Ön megváltoztatta %s szerepkörét erre: %s</string>
<string name="you_rejected_group_invitation">Csoportmeghívó elutasítva</string>
<string name="to_protect_privacy_simplex_has_ids_for_queues">Az adatvédelem érdekében (a más csevegési platformokon megszokott felhasználó-azonosítók helyett) a SimpleX csak az üzenetek sorbaállításához használ azonosítókat, az összes ismerőséhez különbözőt.</string>
<string name="to_protect_privacy_simplex_has_ids_for_queues">Az Ön adatainak védelme érdekében a SimpleX külön üzenet-azonosítókat használ minden egyes kapcsolatához.</string>
<string name="to_share_with_your_contact">(a megosztáshoz az ismerősével)</string>
<string name="you_sent_group_invitation">Csoportmeghívó elküldve</string>
<string name="update_network_session_mode_question">Átvitel-izoláció módjának frissítése?</string>
@@ -1450,7 +1450,7 @@
<string name="v4_5_message_draft_descr">Az utolsó üzenet tervezetének megőrzése a mellékletekkel együtt.</string>
<string name="saved_ICE_servers_will_be_removed">A mentett WebRTC ICE-kiszolgálók eltávolításra kerülnek.</string>
<string name="receipts_groups_override_enabled">A kézbesítési jelentések engedélyezve vannak %d csoportban</string>
<string name="member_role_will_be_changed_with_notification">A szerepkör meg fog változni erre: %s. A csoportban az összes tag értesítve lesz.</string>
<string name="member_role_will_be_changed_with_notification">A szerepkör meg fog változni erre: %s. A csoport tagjai értesítést fognak kapni.</string>
<string name="users_delete_with_connections">Profil és kiszolgálókapcsolatok</string>
<string name="the_messaging_and_app_platform_protecting_your_privacy_and_security">Egy üzenetküldő- és alkalmazásplatform, amely védi az adatait és biztonságát.</string>
<string name="tap_to_activate_profile">A profil aktiválásához koppintson az ikonra.</string>
@@ -1685,23 +1685,23 @@
<string name="network_type_network_wifi">Wi-Fi</string>
<string name="forwarded_description">továbbított</string>
<string name="simplex_links_not_allowed">A SimpleX-hivatkozások küldése le van tiltva</string>
<string name="group_members_can_send_simplex_links">A csoport tagjai küldhetnek SimpleX-hivatkozásokat.</string>
<string name="group_members_can_send_simplex_links">A tagok küldhetnek SimpleX-hivatkozásokat.</string>
<string name="feature_roles_owners">tulajdonosok</string>
<string name="feature_roles_admins">adminisztrátorok</string>
<string name="feature_roles_all_members">összes tag</string>
<string name="simplex_links">SimpleX-hivatkozások</string>
<string name="voice_messages_not_allowed">A hangüzenetek küldése le van tiltva</string>
<string name="simplex_links_are_prohibited_in_group">A SimpleX-hivatkozások küldése le van tiltva ebben a csoportban.</string>
<string name="simplex_links_are_prohibited_in_group">A SimpleX-hivatkozások küldése le van tiltva.</string>
<string name="prohibit_sending_simplex_links">A SimpleX-hivatkozások küldése le van tiltva</string>
<string name="files_and_media_not_allowed">A fájlok- és médiatartalmak nincsenek engedélyezve</string>
<string name="allow_to_send_simplex_links">A SimpleX-hivatkozások küldése engedélyezve van.</string>
<string name="feature_enabled_for">Számukra engedélyezve:</string>
<string name="saved_description">mentett</string>
<string name="saved_from_description">mentve innen: %s</string>
<string name="saved_from_description">elmentve innen: %s</string>
<string name="forwarded_from_chat_item_info_title">Továbbítva innen:</string>
<string name="recipients_can_not_see_who_message_from">A címzett(ek) nem látja(k), hogy kitől származik ez az üzenet.</string>
<string name="saved_chat_item_info_tab">Mentett</string>
<string name="saved_from_chat_item_info_title">Mentve innen:</string>
<string name="saved_from_chat_item_info_title">Elmentve innen:</string>
<string name="download_file">Letöltés</string>
<string name="forward_chat_item">Továbbítás</string>
<string name="forwarded_chat_item_info_tab">Továbbított</string>
@@ -1790,7 +1790,7 @@
<string name="color_primary_variant2">További kiemelés 2</string>
<string name="theme_destination_app_theme">Alkalmazás téma</string>
<string name="v5_8_persian_ui">Perzsa kezelőfelület</string>
<string name="v5_8_private_routing_descr">Védje IP-címét az ismerősei által kiválasztott üzenet-közvetítő-kiszolgálókkal szemben.\nEngedélyezze a „Beállítások / Hálózat és kiszolgálók menüben.</string>
<string name="v5_8_private_routing_descr">Védje IP-címét az ismerősei által kiválasztott üzenet-közvetítő-kiszolgálókkal szemben.\nEngedélyezze a *Hálózat és kiszolgálók* menüben.</string>
<string name="v5_8_safe_files_descr">Ismeretlen kiszolgálókról származó fájlok megerősítése.</string>
<string name="v5_8_message_delivery">Javított üzenetkézbesítés</string>
<string name="chat_theme_reset_to_app_theme">Alkalmazás témájának visszaállítása</string>
@@ -1938,7 +1938,7 @@
<string name="proxy_destination_error_broker_version">A(z) %1$s célkiszolgáló verziója nem kompatibilis a(z) %2$s továbbító kiszolgálóval.</string>
<string name="proxy_destination_error_failed_to_connect">A(z) %1$s továbbító-kiszolgáló nem tudott csatlakozni a(z) %2$s célkiszolgálóhoz. Próbálja meg később.</string>
<string name="proxy_destination_error_broker_host">A(z) %1$s célkiszolgáló címe nem kompatibilis a(z) %2$s továbbító-kiszolgáló beállításaival.</string>
<string name="privacy_media_blur_radius">Média elhomályosítása</string>
<string name="privacy_media_blur_radius">Médiatartalom elhomályosítása</string>
<string name="privacy_media_blur_radius_medium">Közepes</string>
<string name="privacy_media_blur_radius_off">Kikapcsolva</string>
<string name="privacy_media_blur_radius_soft">Enyhe</string>
@@ -1966,7 +1966,7 @@
<string name="keep_conversation">Beszélgetés megtartása</string>
<string name="confirm_delete_contact_question">Biztosan törli az ismerőst?</string>
<string name="info_view_connect_button">kapcsolódás</string>
<string name="one_hand_ui">Könnyen elérhető eszköztár</string>
<string name="one_hand_ui">Könnyen elérhető alkalmazás-eszköztárak</string>
<string name="delete_without_notification">Törlés értesítés nélkül</string>
<string name="toolbar_settings">Beállítások</string>
<string name="info_view_search_button">keresés</string>
@@ -2108,7 +2108,7 @@
<string name="or_to_share_privately">Vagy a privát megosztáshoz</string>
<string name="simplex_address_or_1_time_link">SimpleX-cím vagy egyszer használható meghívó-hivatkozás?</string>
<string name="create_1_time_link">Egyszer használható meghívó-hivatkozás létrehozása</string>
<string name="onboarding_choose_server_operators">Üzemeltetők kiválasztása</string>
<string name="onboarding_choose_server_operators">Kiszolgáló-üzemeltetők</string>
<string name="onboarding_network_operators">Hálózati üzemeltetők</string>
<string name="onboarding_network_operators_app_will_use_different_operators">Amikor egynél több hálózati üzemeltető van engedélyezve, akkor az alkalmazás minden egyes beszélgetéshez a különböző üzemeltetők kiszolgálóit használja.</string>
<string name="onboarding_network_operators_app_will_use_for_routing">Ha például a SimpleX Chat kiszolgálón keresztül fogadja az üzeneteket, az alkalmazás a Flux egyik kiszolgálóját használja a privát útválasztáshoz.</string>
@@ -2170,4 +2170,39 @@
<string name="xftp_servers_per_user">Az Ön jelenlegi csevegőprofiljához tartozó új fájlok kiszolgálói</string>
<string name="chat_archive">Vagy archívumfájl importálása</string>
<string name="remote_hosts_section">Távoli hordozható eszközök</string>
<string name="xiaomi_ignore_battery_optimization"><![CDATA[<b>Xiaomi eszközök</b>: engedélyezze az automatikus indítást a rendszerbeállításokban, hogy az értesítések működjenek.]]></string>
<string name="maximum_message_size_reached_forwarding">A küldéshez másolhatja és csökkentheti az üzenet méretét.</string>
<string name="add_your_team_members_to_conversations">Adja hozzá csapattagjait a beszélgetésekhez.</string>
<string name="business_address">Üzleti cím</string>
<string name="all_message_and_files_e2e_encrypted"><![CDATA[Az összes üzenet és fájl <b>végpontok közötti titkosítással</b>, a közvetlen üzenetek továbbá kvantumrezisztens titkosítással is rendelkeznek.]]></string>
<string name="how_it_helps_privacy">Hogyan segíti az adatvédelmet</string>
<string name="onboarding_notifications_mode_off_desc_short">Nincs háttérszolgáltatás</string>
<string name="onboarding_notifications_mode_battery">Értesítések és akkumulátor</string>
<string name="onboarding_notifications_mode_service_desc_short">Az alkalmazás mindig fut a háttérben</string>
<string name="leave_chat_question">Csevegés elhagyása?</string>
<string name="you_will_stop_receiving_messages_from_this_chat_chat_history_will_be_preserved">Ön nem fog több üzenetet kapni ebből a csevegésből, de a csevegés előzményei megmaradnak.</string>
<string name="button_delete_chat">Csevegés törlése</string>
<string name="invite_to_chat_button">Meghívás a csevegésbe</string>
<string name="button_add_friends">Barátok hozzáadása</string>
<string name="button_add_team_members">Csapattagok hozzáadása</string>
<string name="delete_chat_for_all_members_cannot_undo_warning">A csevegés minden tag számára törlésre kerül - ezt a műveletet nem lehet visszavonni!</string>
<string name="delete_chat_for_self_cannot_undo_warning">A csevegés törlésre kerül az Ön számára - ezt a műveletet nem lehet visszavonni!</string>
<string name="delete_chat_question">Csevegés törlése?</string>
<string name="button_leave_chat">Csevegés elhagyása</string>
<string name="only_chat_owners_can_change_prefs">Csak a csevegés tulajdonosai módosíthatják a beállításokat.</string>
<string name="chat_bottom_bar">Könnyen elérhető csevegési eszköztár</string>
<string name="member_will_be_removed_from_chat_cannot_be_undone">A tag el lesz távolítva a csevegésből - ezt a műveletet nem lehet visszavonni!</string>
<string name="info_row_chat">Csevegés</string>
<string name="member_role_will_be_changed_with_notification_chat">A szerepkör meg fog változni a következőre: %s. A csevegés tagjai értesítést fognak kapni.</string>
<string name="chat_main_profile_sent">Az Ön csevegési profilja el lesz küldve a csevegésben résztvevő tagok számára</string>
<string name="direct_messages_are_prohibited">A tagok közötti közvetlen üzenetek le vannak tiltva.</string>
<string name="v6_2_business_chats">Üzleti csevegések</string>
<string name="v6_2_business_chats_descr">Az Ön ügyfeleinek adatvédelme.</string>
<string name="connect_plan_you_are_already_connected_with_vName"><![CDATA[Ön már kapcsolódva van vele: <b>%1$s</b>.]]></string>
<string name="connect_plan_chat_already_exists">A csevegés már létezik!</string>
<string name="maximum_message_size_reached_text">Csökkentse az üzenet méretét, és küldje el újra.</string>
<string name="onboarding_notifications_mode_periodic_desc_short">Üzenetek ellenőrzése 10 percenként</string>
<string name="maximum_message_size_title">Az üzenet túl nagy!</string>
<string name="maximum_message_size_reached_non_text">Csökkentse az üzenet méretét vagy távolítsa el a médiát, és küldje el újra.</string>
<string name="direct_messages_are_prohibited_in_chat">A tagok közötti közvetlen üzenetek le vannak tiltva ebben a csevegésben.</string>
</resources>
@@ -1294,4 +1294,57 @@
<string name="button_remove_member_question">Hapus anggota?</string>
<string name="button_remove_member">Hapus anggota</string>
<string name="saved_message_title">Pesan tersimpan</string>
<string name="cant_call_member_alert_title">Tak dapat memanggil anggota grup</string>
<string name="operators_conditions_accepted_for"><![CDATA[Ketentuan diterima untuk operator: <b>%s</b>.]]></string>
<string name="operators_conditions_will_be_accepted_for"><![CDATA[Ketentuan akan diterima untuk operator: <b>%s</b>.]]></string>
<string name="operator">Operator</string>
<string name="operator_use_operator_toggle_description">Gunakan server</string>
<string name="use_servers_of_operator_x">Gunakan %s</string>
<string name="cant_send_message_to_member_alert_title">Tak dapat kirim pesan ke anggota grup</string>
<string name="group_welcome_title">Pesan sambutan</string>
<string name="save_welcome_message_question">Simpan pesan sambutan?</string>
<string name="fix_connection_not_supported_by_group_member">Perbaikan tidak didukung oleh anggota grup</string>
<string name="create_secret_group_title">Buat grup rahasia</string>
<string name="renegotiate_encryption">Negosiasi ulang enkripsi</string>
<string name="group_display_name_field">Masukkan nama grup:</string>
<string name="group_welcome_preview">Pratinjau</string>
<string name="cant_call_member_send_message_alert_text">Kirim pesan untuk aktifkan panggilan.</string>
<string name="cant_call_contact_deleted_alert_text">Kontak dihapus.</string>
<string name="cant_call_contact_alert_title">Tak dapat memanggil kontak</string>
<string name="fix_connection_confirm">Perbaiki</string>
<string name="group_is_decentralized">Sepenuhnya terdesentralisasi hanya terlihat oleh anggota.</string>
<string name="fix_connection">Perbaiki koneksi</string>
<string name="fix_connection_question">Perbaiki koneksi?</string>
<string name="operator_review_conditions">Tinjau ketentuan</string>
<string name="network_preset_servers_title">Server prasetel</string>
<string name="operator_conditions_accepted">Ketentuan diterima</string>
<string name="operator_conditions_accepted_for_enabled_operators_on">Ketentuan akan otomatis diterima untuk operator yang diaktifkan pada: %s.</string>
<string name="you_need_to_allow_calls">Anda perlu izinkan kontak Anda agar dapat memanggilnya.</string>
<string name="message_too_large">Pesan terlalu besar</string>
<string name="enter_welcome_message">Masukkan pesan sambutan…</string>
<string name="save_and_update_group_profile">Simpan dan perbarui profil grup</string>
<string name="welcome_message_is_too_long">Pesan sambutan terlalu panjang</string>
<string name="fix_connection_not_supported_by_contact">Perbaikan tidak didukung oleh kontak</string>
<string name="info_row_chat">Obrolan</string>
<string name="accept_conditions">Terima kondisi</string>
<string name="conn_stats_section_title_servers">SERVER</string>
<string name="create_group_button">Buat grup</string>
<string name="group_full_name_field">Nama lengkap grup:</string>
<string name="save_group_profile">Simpan profil grup</string>
<string name="operator_website">Peramban</string>
<string name="your_servers">Server Anda</string>
<string name="error_saving_group_profile">Gagal simpan profil grup</string>
<string name="operator_servers_title">%s server</string>
<string name="operator_info_title">Operator jaringan</string>
<string name="operator_conditions_accepted_on">Ketentuan diterima pada: %s.</string>
<string name="operator_conditions_will_be_accepted_on">Ketentuan akan diterima pada: %s.</string>
<string name="info_row_connection">Koneksi</string>
<string name="role_in_group">Rol</string>
<string name="change_role">Ganti rol</string>
<string name="group_main_profile_sent">Profil obrolan Anda akan dikirim ke anggota grup</string>
<string name="chat_main_profile_sent">Profil obrolan Anda akan dikirim ke anggota obrolan</string>
<string name="group_profile_is_stored_on_members_devices">Profil grup disimpan di perangkat anggota, bukan di server.</string>
<string name="conn_level_desc_direct">langsung</string>
<string name="sending_via">Kirim via</string>
<string name="receiving_via">Terima via</string>
</resources>
@@ -211,8 +211,8 @@
<string name="connection_error_auth_desc">A meno che il tuo contatto non abbia eliminato la connessione o che questo link non sia già stato usato, potrebbe essere un errore; per favore segnalalo.
\nPer connetterti, chiedi al tuo contatto di creare un altro link di connessione e controlla di avere una connessione di rete stabile.</string>
<string name="error_smp_test_certificate">Probabilmente l\'impronta del certificato nell\'indirizzo del server è sbagliata</string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Per rispettare la tua privacy, invece delle notifiche push l\'app ha un <b>servizio SimpleX in secondo piano</b>; usa una piccola percentuale di batteria al giorno.]]></string>
<string name="turn_off_battery_optimization"><![CDATA[Per usarlo, <b>consenti a SimpleX di funzionare in secondo piano</b> nella prossima schermata. Altrimenti le notifiche saranno disattivate.]]></string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Per migliorare la privacy, <b>SimpleX funziona in secondo piano</b> invece di usare le notifiche push.]]></string>
<string name="turn_off_battery_optimization"><![CDATA[<b>Consentilo</b> nella prossima schermata per ricevere le notifiche immediatamente.]]></string>
<string name="simplex_service_notification_title">Servizio SimpleX Chat</string>
<string name="notifications_mode_service_desc">Servizio in secondo piano sempre attivo. Le notifiche verranno mostrate appena i messaggi saranno disponibili.</string>
<string name="la_notice_title_simplex_lock">SimpleX Lock</string>
@@ -478,7 +478,7 @@
<string name="ttl_h">%do</string>
<string name="ttl_hour">%d ora</string>
<string name="ttl_hours">%d ore</string>
<string name="disappearing_messages_are_prohibited">I messaggi a tempo sono vietati in questo gruppo.</string>
<string name="disappearing_messages_are_prohibited">I messaggi a tempo sono vietati.</string>
<string name="ttl_m">%dm</string>
<string name="ttl_min">%d min</string>
<string name="ttl_month">%d mese</string>
@@ -490,10 +490,10 @@
<string name="ttl_week">%d settimana</string>
<string name="ttl_weeks">%d settimane</string>
<string name="v4_2_group_links">Link del gruppo</string>
<string name="group_members_can_delete">I membri del gruppo possono eliminare irreversibilmente i messaggi inviati. (24 ore)</string>
<string name="group_members_can_send_dms">I membri del gruppo possono inviare messaggi diretti.</string>
<string name="group_members_can_send_disappearing">I membri del gruppo possono inviare messaggi a tempo.</string>
<string name="group_members_can_send_voice">I membri del gruppo possono inviare messaggi vocali.</string>
<string name="group_members_can_delete">I membri possono eliminare irreversibilmente i messaggi inviati. (24 ore)</string>
<string name="group_members_can_send_dms">I membri possono inviare messaggi diretti.</string>
<string name="group_members_can_send_disappearing">I membri possono inviare messaggi a tempo.</string>
<string name="group_members_can_send_voice">I membri possono inviare messaggi vocali.</string>
<string name="v4_4_verify_connection_security_desc">Confronta i codici di sicurezza con i tuoi contatti.</string>
<string name="v4_4_disappearing_messages">Messaggi a tempo</string>
<string name="v4_3_improved_privacy_and_security_desc">Nascondi la schermata dell\'app nelle app recenti.</string>
@@ -648,9 +648,9 @@
<string name="incoming_audio_call">Chiamata in arrivo</string>
<string name="incoming_video_call">Videochiamata in arrivo</string>
<string name="onboarding_notifications_mode_service">Istantaneo</string>
<string name="onboarding_notifications_mode_subtitle">Può essere cambiato in seguito via impostazioni.</string>
<string name="onboarding_notifications_mode_subtitle">Come influisce sulla batteria</string>
<string name="make_private_connection">Crea una connessione privata</string>
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages"><![CDATA[Solo i dispositivi client memorizzano i profili utente, i contatti, i gruppi e i messaggi inviati con <b>crittografia end-to-end a 2 livelli</b>.]]></string>
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages">Solo i dispositivi client memorizzano i profili utente, i contatti, i gruppi e i messaggi.</string>
<string name="opensource_protocol_and_code_anybody_can_run_servers">Chiunque può installare i server.</string>
<string name="paste_the_link_you_received">Incolla il link che hai ricevuto</string>
<string name="people_can_connect_only_via_links_you_share">Sei tu a decidere chi può connettersi.</string>
@@ -660,9 +660,8 @@
<string name="read_more_in_github_with_link"><![CDATA[Maggiori informazioni nel nostro <font color="#0088ff">repository GitHub</font>.]]></string>
<string name="reject">Rifiuta</string>
<string name="first_platform_without_user_ids">Nessun identificatore utente.</string>
<string name="next_generation_of_private_messaging">La nuova generazione
\ndi messaggistica privata</string>
<string name="to_protect_privacy_simplex_has_ids_for_queues">Per proteggere la privacy, invece degli ID utente usati da tutte le altre piattaforme, SimpleX dispone di identificatori per le code dei messaggi, separati per ciascuno dei tuoi contatti.</string>
<string name="next_generation_of_private_messaging">Il futuro dei messaggi</string>
<string name="to_protect_privacy_simplex_has_ids_for_queues">Per proteggere la tua privacy, SimpleX usa ID separati per ciascuno dei tuoi contatti.</string>
<string name="use_chat">Usa la chat</string>
<string name="icon_descr_video_call">videochiamata</string>
<string name="video_call_no_encryption">videochiamata (non crittografata e2e)</string>
@@ -843,7 +842,7 @@
<string name="your_preferences">Le tue preferenze</string>
<string name="v4_3_improved_server_configuration">Configurazione del server migliorata</string>
<string name="v4_3_irreversible_message_deletion">Eliminazione irreversibile del messaggio</string>
<string name="message_deletion_prohibited_in_chat">L\'eliminazione irreversibile dei messaggi è vietata in questo gruppo.</string>
<string name="message_deletion_prohibited_in_chat">L\'eliminazione irreversibile dei messaggi è vietata.</string>
<string name="v4_3_voice_messages_desc">Max 40 secondi, ricevuto istantaneamente.</string>
<string name="new_in_version">Novità nella %s</string>
<string name="only_you_can_send_voice">Solo tu puoi inviare messaggi vocali.</string>
@@ -856,7 +855,7 @@
<string name="v4_2_security_assessment_desc">La sicurezza di SimpleX Chat è stata verificata da Trail of Bits.</string>
<string name="v4_3_voice_messages">Messaggi vocali</string>
<string name="voice_prohibited_in_this_chat">I messaggi vocali sono vietati in questa chat.</string>
<string name="voice_messages_are_prohibited">I messaggi vocali sono vietati in questo gruppo.</string>
<string name="voice_messages_are_prohibited">I messaggi vocali sono vietati.</string>
<string name="whats_new">Novità</string>
<string name="v4_2_auto_accept_contact_requests_desc">Con messaggio di benvenuto facoltativo.</string>
<string name="v4_3_irreversible_message_deletion_desc">I tuoi contatti possono consentire l\'eliminazione completa dei messaggi.</string>
@@ -1171,7 +1170,7 @@
<string name="change_self_destruct_passcode">Cambia codice di autodistruzione</string>
<string name="message_reactions">Reazioni ai messaggi</string>
<string name="message_reactions_prohibited_in_this_chat">Le reazioni ai messaggi sono vietate in questa chat.</string>
<string name="message_reactions_are_prohibited">Le reazioni ai messaggi sono vietate in questo gruppo.</string>
<string name="message_reactions_are_prohibited">Le reazioni ai messaggi sono vietate.</string>
<string name="only_you_can_add_message_reactions">Solo tu puoi aggiungere reazioni ai messaggi.</string>
<string name="prohibit_message_reactions">Proibisci le reazioni ai messaggi.</string>
<string name="prohibit_message_reactions_group">Proibisci le reazioni ai messaggi.</string>
@@ -1180,7 +1179,7 @@
<string name="only_your_contact_can_add_message_reactions">Solo il tuo contatto può aggiungere reazioni ai messaggi.</string>
<string name="allow_your_contacts_adding_message_reactions">Consenti ai tuoi contatti di aggiungere reazioni ai messaggi.</string>
<string name="allow_message_reactions_only_if">Consenti reazioni ai messaggi solo se il tuo contatto le consente.</string>
<string name="group_members_can_add_message_reactions">I membri del gruppo possono aggiungere reazioni ai messaggi.</string>
<string name="group_members_can_add_message_reactions">I membri possono aggiungere reazioni ai messaggi.</string>
<string name="send_disappearing_message_30_seconds">30 secondi</string>
<string name="send_disappearing_message_send">Invia</string>
<string name="send_disappearing_message">Invia messaggio a tempo</string>
@@ -1244,10 +1243,10 @@
<string name="error_aborting_address_change">Errore nell\'interruzione del cambio di indirizzo</string>
<string name="only_owners_can_enable_files_and_media">Solo i proprietari del gruppo possono attivare file e contenuti multimediali.</string>
<string name="files_and_media">File e multimediali</string>
<string name="group_members_can_send_files">I membri del gruppo possono inviare file e contenuti multimediali.</string>
<string name="group_members_can_send_files">I membri possono inviare file e contenuti multimediali.</string>
<string name="prohibit_sending_files">Proibisci l\'invio di file e contenuti multimediali.</string>
<string name="abort_switch_receiving_address_desc">Il cambio di indirizzo verrà interrotto. Verrà usato il vecchio indirizzo di ricezione.</string>
<string name="files_are_prohibited_in_group">File e contenuti multimediali sono vietati in questo gruppo.</string>
<string name="files_are_prohibited_in_group">File e contenuti multimediali sono vietati.</string>
<string name="files_and_media_prohibited">File e contenuti multimediali vietati!</string>
<string name="la_mode_off">Off</string>
<string name="no_filtered_chats">Nessuna chat filtrata</string>
@@ -1723,11 +1722,11 @@
<string name="allow_to_send_simplex_links">Consenti di inviare link di SimpleX.</string>
<string name="prohibit_sending_simplex_links">Vieta l\'invio di link di SimpleX</string>
<string name="feature_enabled_for">Attivo per</string>
<string name="group_members_can_send_simplex_links">I membri del gruppo possono inviare link di Simplex.</string>
<string name="group_members_can_send_simplex_links">I membri possono inviare link di Simplex.</string>
<string name="feature_roles_owners">proprietari</string>
<string name="feature_roles_admins">amministratori</string>
<string name="feature_roles_all_members">tutti i membri</string>
<string name="simplex_links_are_prohibited_in_group">I link di SimpleX sono vietati in questo gruppo.</string>
<string name="simplex_links_are_prohibited_in_group">I link di SimpleX sono vietati.</string>
<string name="saved_description">salvato</string>
<string name="saved_from_chat_item_info_title">Salvato da</string>
<string name="forward_message">Inoltra messaggio…</string>
@@ -1999,7 +1998,7 @@
<string name="no_filtered_contacts">Nessun contatto filtrato</string>
<string name="paste_link">Incolla link</string>
<string name="contact_list_header_title">I tuoi contatti</string>
<string name="one_hand_ui">Barra degli strumenti di chat accessibile</string>
<string name="one_hand_ui">Barre degli strumenti dell\'app accessibili</string>
<string name="action_button_add_members">Invita</string>
<string name="allow_calls_question">Consentire le chiamate?</string>
<string name="calls_prohibited_alert_title">Chiamate proibite!</string>
@@ -2135,7 +2134,7 @@
<string name="onboarding_network_operators">Operatori di rete</string>
<string name="onboarding_network_operators_app_will_use_different_operators">Quando più di un operatore di rete è attivato, l\'app userà i server di diversi operatori per ogni conversazione.</string>
<string name="onboarding_network_operators_conditions_you_can_configure">Puoi configurare gli operatori nelle impostazioni di rete e server.</string>
<string name="onboarding_choose_server_operators">Scegli gli operatori</string>
<string name="onboarding_choose_server_operators">Operatori del server</string>
<string name="onboarding_select_network_operators_to_use">Seleziona gli operatori di rete da usare.</string>
<string name="onboarding_network_operators_continue">Continua</string>
<string name="onboarding_network_operators_update">Aggiorna</string>
@@ -2213,4 +2212,39 @@
<string name="share_simplex_address_on_social_media">Condividi indirizzo SimpleX sui social media.</string>
<string name="chat_archive">O importa file archivio</string>
<string name="remote_hosts_section">Telefoni remoti</string>
<string name="direct_messages_are_prohibited_in_chat">I messaggi diretti tra i membri sono vietati in questa chat.</string>
<string name="xiaomi_ignore_battery_optimization"><![CDATA[<b>Dispositivi Xiaomi</b>: attiva l\'avvio automatico nelle impostazioni di sistema per fare funzionare le notifiche.]]></string>
<string name="add_your_team_members_to_conversations">Aggiungi i membri del tuo team alle conversazioni.</string>
<string name="business_address">Indirizzo di lavoro</string>
<string name="all_message_and_files_e2e_encrypted"><![CDATA[Tutti i messaggi e i file sono <b>cifrati end-to-end</b>, con sicurezza quantistica nei messaggi diretti.]]></string>
<string name="onboarding_notifications_mode_periodic_desc_short">Controlla i messaggi ogni 10 minuti</string>
<string name="how_it_helps_privacy">Come aiuta la privacy</string>
<string name="invite_to_chat_button">Invita in chat</string>
<string name="button_add_team_members">Aggiungi membri del team</string>
<string name="info_row_chat">Chat</string>
<string name="direct_messages_are_prohibited">I messaggi diretti tra i membri sono vietati.</string>
<string name="connect_plan_chat_already_exists">La chat esiste già!</string>
<string name="connect_plan_you_are_already_connected_with_vName"><![CDATA[Sei già connesso/a con <b>%1$s</b>.]]></string>
<string name="leave_chat_question">Uscire dalla chat?</string>
<string name="delete_chat_for_self_cannot_undo_warning">La chat verrà eliminata solo per te, non è reversibile!</string>
<string name="button_leave_chat">Esci dalla chat</string>
<string name="v6_2_business_chats">Chat di lavoro</string>
<string name="delete_chat_for_all_members_cannot_undo_warning">La chat verrà eliminata per tutti i membri, non è reversibile!</string>
<string name="button_add_friends">Aggiungi amici</string>
<string name="onboarding_notifications_mode_service_desc_short">L\'app funziona sempre in secondo piano</string>
<string name="button_delete_chat">Elimina chat</string>
<string name="delete_chat_question">Eliminare la chat?</string>
<string name="maximum_message_size_title">Il messaggio è troppo grande!</string>
<string name="maximum_message_size_reached_text">Riduci la dimensione del messaggio e invialo di nuovo.</string>
<string name="maximum_message_size_reached_non_text">Riduci la dimensione del messaggio o rimuovi i media e invialo di nuovo.</string>
<string name="onboarding_notifications_mode_off_desc_short">Nessun servizio in secondo piano</string>
<string name="member_will_be_removed_from_chat_cannot_be_undone">Il membro verrà rimosso dalla chat, non è reversibile!</string>
<string name="v6_2_business_chats_descr">Privacy per i tuoi clienti.</string>
<string name="chat_bottom_bar">Barra degli strumenti di chat accessibile</string>
<string name="only_chat_owners_can_change_prefs">Solo i proprietari della chat possono modificarne le preferenze.</string>
<string name="onboarding_notifications_mode_battery">Notifiche e batteria</string>
<string name="maximum_message_size_reached_forwarding">Puoi copiare e ridurre la dimensione del messaggio per inviarlo.</string>
<string name="member_role_will_be_changed_with_notification_chat">Il ruolo verrà cambiato in %s. Verrà notificato a tutti nella chat.</string>
<string name="chat_main_profile_sent">Il tuo profilo di chat verrà inviato ai membri della chat</string>
<string name="you_will_stop_receiving_messages_from_this_chat_chat_history_will_be_preserved">Non riceverai più messaggi da questa chat. La cronologia della chat verrà conservata.</string>
</resources>
@@ -19,7 +19,7 @@
<string name="network_enable_socks_info">Toegang tot de servers via SOCKS proxy op poort %d\? De proxy moet worden gestart voordat u deze optie inschakelt.</string>
<string name="alert_title_cant_invite_contacts">Kan geen contacten uitnodigen!</string>
<string name="allow_direct_messages">Sta het verzenden van directe berichten naar leden toe.</string>
<string name="allow_to_delete_messages">Sta toe om verzonden berichten onomkeerbaar te verwijderen. (24 uur)</string>
<string name="allow_to_delete_messages">Sta toe om verzonden berichten definitief te verwijderen. (24 uur)</string>
<string name="allow_to_send_voice">Sta toe om spraak berichten te verzenden.</string>
<string name="chat_is_running">Chat is actief</string>
<string name="clear_chat_menu_action">Wissen</string>
@@ -57,7 +57,7 @@
<string name="v4_2_auto_accept_contact_requests">Contact verzoeken automatisch accepteren</string>
<string name="bold_text">vetgedrukt</string>
<string name="attach">Bijvoegen</string>
<string name="allow_irreversible_message_deletion_only_if">Sta het onomkeerbaar verwijderen van berichten alleen toe als uw contact dit toestaat. (24 uur)</string>
<string name="allow_irreversible_message_deletion_only_if">Sta het definitief verwijderen van berichten alleen toe als uw contact dit toestaat. (24 uur)</string>
<string name="allow_to_send_disappearing">Sta toe om verdwijnende berichten te verzenden.</string>
<string name="allow_your_contacts_to_send_voice_messages">Sta toe dat uw contacten spraak berichten verzenden.</string>
<string name="all_your_contacts_will_remain_connected">Al uw contacten blijven verbonden.</string>
@@ -74,7 +74,7 @@
<string name="clear_chat_warning">Alle berichten worden verwijderd, dit kan niet ongedaan worden gemaakt! De berichten worden ALLEEN voor jou verwijderd.</string>
<string name="allow_disappearing_messages_only_if">Sta verdwijnende berichten alleen toe als uw contact dit toestaat.</string>
<string name="allow_voice_messages_only_if">Sta spraak berichten alleen toe als uw contact ze toestaat.</string>
<string name="allow_your_contacts_irreversibly_delete">Laat uw contacten verzonden berichten onomkeerbaar verwijderen. (24 uur)</string>
<string name="allow_your_contacts_irreversibly_delete">Laat uw contacten verzonden berichten definitief verwijderen. (24 uur)</string>
<string name="allow_your_contacts_to_send_disappearing_messages">Sta toe dat uw contacten verdwijnende berichten verzenden.</string>
<string name="chat_preferences_always">altijd</string>
<string name="icon_descr_audio_off">Geluid uit</string>
@@ -95,7 +95,7 @@
<string name="turning_off_service_and_periodic">Batterijoptimalisatie is actief, waardoor achtergrondservice en periodieke verzoeken om nieuwe berichten worden uitgeschakeld. Je kunt ze weer inschakelen via instellingen.</string>
<string name="onboarding_notifications_mode_off_desc"><![CDATA[<b>Het beste voor de batterij</b>. U ontvangt alleen meldingen wanneer de app wordt uitgevoerd (GEEN achtergrondservice).]]></string>
<string name="it_can_disabled_via_settings_notifications_still_shown"><![CDATA[<b>Het kan worden uitgeschakeld via instellingen</b>, meldingen worden nog steeds weergegeven terwijl de app actief is.]]></string>
<string name="both_you_and_your_contacts_can_delete">Zowel u als uw contact kunnen verzonden berichten onomkeerbaar verwijderen. (24 uur)</string>
<string name="both_you_and_your_contacts_can_delete">Zowel u als uw contact kunnen verzonden berichten definitief verwijderen. (24 uur)</string>
<string name="both_you_and_your_contact_can_send_disappearing">Zowel jij als je contact kunnen verdwijnende berichten sturen.</string>
<string name="both_you_and_your_contact_can_send_voice">Zowel jij als je contact kunnen spraak berichten verzenden.</string>
<string name="impossible_to_recover_passphrase"><![CDATA[<b>Let op</b>: u kunt het wachtwoord NIET herstellen of wijzigen als u het kwijt raakt.]]></string>
@@ -254,12 +254,12 @@
<string name="auth_device_authentication_is_disabled_turning_off">Apparaatverificatie is uitgeschakeld. SimpleX Vergrendelen uitschakelen.</string>
<string name="display_name">Vul uw naam in:</string>
<string name="auth_device_authentication_is_not_enabled_you_can_turn_on_in_settings_once_enabled">Apparaatverificatie is niet ingeschakeld. Je kunt SimpleX Vergrendelen inschakelen via Instellingen zodra je apparaatverificatie hebt ingeschakeld.</string>
<string name="direct_messages_are_prohibited_in_group">Directe berichten tussen leden zijn verboden in deze groep.</string>
<string name="direct_messages_are_prohibited_in_group">Directe berichten tussen leden zijn niet toegestaan in deze groep.</string>
<string name="total_files_count_and_size">%d bestand(en) met een totale grootte van %s</string>
<string name="ttl_hour">%d uur</string>
<string name="no_call_on_lock_screen">Uitzetten</string>
<string name="v4_4_disappearing_messages">Verdwijnende berichten</string>
<string name="disappearing_prohibited_in_this_chat">Verdwijnende berichten zijn verboden in dit gesprek.</string>
<string name="disappearing_prohibited_in_this_chat">Verdwijnende berichten zijn niet toegestaan in dit gesprek.</string>
<string name="auth_disable_simplex_lock">SimpleX Vergrendelen uitschakelen</string>
<string name="timed_messages">Verdwijnende berichten</string>
<string name="smp_server_test_disconnect">Verbinding verbreken</string>
@@ -272,7 +272,7 @@
<string name="ttl_s">%ds</string>
<string name="button_delete_contact">Verwijder contact</string>
<string name="smp_servers_delete_server">Server verwijderen</string>
<string name="disappearing_messages_are_prohibited">Verdwijnende berichten zijn verboden in deze groep.</string>
<string name="disappearing_messages_are_prohibited">Verdwijnende berichten zijn niet toegestaan.</string>
<string name="ttl_sec">%d sec</string>
<string name="ttl_m">%dm</string>
<string name="ttl_mth">%dmth</string>
@@ -338,9 +338,9 @@
<string name="feature_enabled">ingeschakeld</string>
<string name="feature_enabled_for_contact">ingeschakeld voor contact</string>
<string name="feature_enabled_for_you">voor u ingeschakeld</string>
<string name="group_members_can_delete">Groepsleden kunnen verzonden berichten onomkeerbaar verwijderen. (24 uur)</string>
<string name="group_members_can_send_dms">Groepsleden kunnen directe berichten sturen</string>
<string name="group_members_can_send_voice">Groepsleden kunnen spraak berichten verzenden.</string>
<string name="group_members_can_delete">Leden kunnen verzonden berichten definitief verwijderen. (24 uur)</string>
<string name="group_members_can_send_dms">Leden kunnen directe berichten sturen.</string>
<string name="group_members_can_send_voice">Leden kunnen spraak berichten verzenden.</string>
<string name="v4_5_transport_isolation_descr">Per chatprofiel (standaard) of per verbinding (BETA).</string>
<string name="v4_5_multiple_chat_profiles_descr">Verschillende namen, avatars en transportisolatie.</string>
<string name="v4_4_french_interface">Franse interface</string>
@@ -373,7 +373,7 @@
<string name="gallery_video_button">Video</string>
<string name="error_saving_ICE_servers">Fout bij opslaan van ICE servers</string>
<string name="callstate_ended">geëindigd</string>
<string name="group_members_can_send_disappearing">Groepsleden kunnen verdwijnende berichten sturen.</string>
<string name="group_members_can_send_disappearing">Leden kunnen verdwijnende berichten sturen.</string>
<string name="ttl_week">%d week</string>
<string name="ttl_w">%dw</string>
<string name="ttl_weeks">%d weken</string>
@@ -396,7 +396,7 @@
<string name="icon_descr_image_snd_complete">Afbeelding verzonden</string>
<string name="live_message">Live bericht!</string>
<string name="if_you_received_simplex_invitation_link_you_can_open_in_browser">Als je een uitnodiging link voor SimpleX Chat hebt ontvangen, kun je deze in je browser openen:</string>
<string name="onboarding_notifications_mode_subtitle">Dit kan later worden gewijzigd via instellingen.</string>
<string name="onboarding_notifications_mode_subtitle">Hoe dit de batterij beïnvloedt</string>
<string name="join_group_question">Deelnemen aan groep\?</string>
<string name="icon_descr_add_members">Nodig leden uit</string>
<string name="no_contacts_selected">Geen contacten geselecteerd</string>
@@ -439,7 +439,7 @@
<string name="button_leave_group">Groep verlaten</string>
<string name="info_row_local_name">Lokale naam</string>
<string name="users_delete_data_only">Alleen lokale profielgegevens</string>
<string name="message_deletion_prohibited_in_chat">Het onomkeerbaar verwijderen van berichten is verboden in deze groep.</string>
<string name="message_deletion_prohibited_in_chat">Het definitief verwijderen van berichten is niet toegestaan.</string>
<string name="v4_3_improved_privacy_and_security_desc">App scherm verbergen in de recente apps.</string>
<string name="settings_section_title_incognito">Incognito modus</string>
<string name="messages_section_title">Berichten</string>
@@ -458,7 +458,7 @@
<string name="v4_5_reduced_battery_usage_descr">Meer verbeteringen volgen snel!</string>
<string name="button_add_members">Nodig leden uit</string>
<string name="notification_display_mode_hidden_desc">Verberg contact en bericht</string>
<string name="turn_off_battery_optimization"><![CDATA[Om het te gebruiken, kunt u Simplex in het volgende dialoogvenster \u0020<b>op de achtergrond uitvoeren</b>. Anders worden de meldingen uitgeschakeld.]]></string>
<string name="turn_off_battery_optimization"><![CDATA[<b>Sta dit toe</b> in het volgende dialoogvenster om direct meldingen te ontvangen.]]></string>
<string name="if_you_choose_to_reject_the_sender_will_not_be_notified">Als u ervoor kiest om te weigeren, wordt de afzender NIET op de hoogte gesteld.</string>
<string name="onboarding_notifications_mode_service">Onmiddellijk</string>
<string name="rcv_group_event_member_added">heeft %1$s uitgenodigd</string>
@@ -508,7 +508,7 @@
<string name="network_use_onion_hosts_no">Nee</string>
<string name="immune_to_spam_and_abuse">Immuun voor spam</string>
<string name="make_private_connection">Maak een privéverbinding</string>
<string name="message_deletion_prohibited">Het onomkeerbaar verwijderen van berichten is verboden in dit gesprek.</string>
<string name="message_deletion_prohibited">Het definitief verwijderen van berichten is niet toegestaan in dit gesprek.</string>
<string name="new_in_version">Nieuw in %s</string>
<string name="v4_3_voice_messages_desc">Max 40 seconden, direct ontvangen.</string>
<string name="v4_3_improved_server_configuration">Verbeterde serverconfiguratie</string>
@@ -552,7 +552,7 @@
<string name="chat_preferences_on">aan</string>
<string name="only_you_can_send_disappearing">Alleen jij kunt verdwijnende berichten verzenden.</string>
<string name="only_your_contact_can_send_disappearing">Alleen uw contact kan verdwijnende berichten verzenden.</string>
<string name="only_you_can_delete_messages">Alleen u kunt berichten onomkeerbaar verwijderen (uw contact kan ze markeren voor verwijdering). (24 uur)</string>
<string name="only_you_can_delete_messages">Alleen u kunt berichten definitief verwijderen (uw contact kan ze markeren voor verwijdering). (24 uur)</string>
<string name="feature_offered_item_with_param">voorgesteld %s: %2s</string>
<string name="old_database_archive">Oud database archief</string>
<string name="enter_correct_current_passphrase">Voer het juiste huidige wachtwoord in.</string>
@@ -581,7 +581,7 @@
<string name="only_your_contact_can_delete">Alleen uw contact kan berichten onherroepelijk verwijderen (u kunt ze markeren voor verwijdering). (24 uur)</string>
<string name="only_you_can_send_voice">Alleen jij kunt spraak berichten verzenden.</string>
<string name="only_your_contact_can_send_voice">Alleen uw contact kan spraak berichten verzenden.</string>
<string name="prohibit_message_deletion">Verbied het onomkeerbaar verwijderen van berichten.</string>
<string name="prohibit_message_deletion">Verbied het definitief verwijderen van berichten.</string>
<string name="feature_offered_item">voorgesteld %s</string>
<string name="store_passphrase_securely_without_recover">Sla het wachtwoord veilig op. Als u deze kwijtraakt, heeft u GEEN toegang tot de chats.</string>
<string name="store_passphrase_securely">Bewaar het wachtwoord veilig, u kunt deze NIET wijzigen als u deze kwijtraakt.</string>
@@ -590,7 +590,7 @@
<string name="icon_descr_call_pending_sent">Oproep in behandeling</string>
<string name="simplex_link_mode_browser_warning">Het openen van de link in de browser kan de privacy en beveiliging van de verbinding verminderen. Niet vertrouwde SimpleX links worden rood weergegeven.</string>
<string name="contact_developers">Werk de app bij en neem contact op met de ontwikkelaars.</string>
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages"><![CDATA[Alleen client apparaten slaan gebruikers profielen, contacten, groepen en berichten op die zijn verzonden met <b>2-laags end-to-end codering</b>.]]></string>
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages">Alleen clientapparaten slaan gebruikersprofielen, contacten, groepen en berichten op.</string>
<string name="sender_may_have_deleted_the_connection_request">De afzender heeft mogelijk het verbindingsverzoek verwijderd.</string>
<string name="la_notice_to_protect_your_information_turn_on_simplex_lock_you_will_be_prompted_to_complete_authentication_before_this_feature_is_enabled">Schakel SimpleX Vergrendelen in om uw informatie te beschermen.
\nU wordt gevraagd de authenticatie te voltooien voordat deze functie wordt ingeschakeld.</string>
@@ -611,7 +611,7 @@
<string name="your_profile_is_stored_on_your_device">Uw profiel, contacten en afgeleverde berichten worden op uw apparaat opgeslagen.</string>
<string name="callstate_starting">beginnen…</string>
<string name="icon_descr_video_on">Video aan</string>
<string name="delete_chat_profile_action_cannot_be_undone_warning">Deze actie kan niet ongedaan worden gemaakt. Uw profiel, contacten, berichten en bestanden gaan onomkeerbaar verloren.</string>
<string name="delete_chat_profile_action_cannot_be_undone_warning">Deze actie kan niet ongedaan worden gemaakt. Uw profiel, contacten, berichten en bestanden gaan definitief verloren.</string>
<string name="messages_section_description">Deze instelling is van toepassing op berichten in uw huidige chatprofiel</string>
<string name="rcv_group_event_updated_group_profile">bijgewerkt groep profiel</string>
<string name="group_member_status_removed">verwijderd</string>
@@ -710,10 +710,9 @@
<string name="you_can_use_markdown_to_format_messages__prompt">U kunt markdown gebruiken voor opmaak in berichten:</string>
<string name="callstatus_rejected">geweigerde oproep</string>
<string name="secret_text">geheim</string>
<string name="next_generation_of_private_messaging">De volgende generatie
\nprivéberichten</string>
<string name="next_generation_of_private_messaging">De toekomst van berichtenuitwisseling</string>
<string name="callstate_waiting_for_answer">wachten op antwoord…</string>
<string name="to_protect_privacy_simplex_has_ids_for_queues">Om de privacy te beschermen, heeft SimpleX in plaats van gebruikers-ID\'s die door alle andere platforms worden gebruikt, ID\'s voor berichten wachtrijen, afzonderlijk voor elk van uw contacten.</string>
<string name="to_protect_privacy_simplex_has_ids_for_queues">Om uw privacy te beschermen, gebruikt SimpleX voor elk van uw contacten afzonderlijke ID\'s.</string>
<string name="use_chat">Gebruik chat</string>
<string name="onboarding_notifications_mode_off">Wanneer de app actief is</string>
<string name="video_call_no_encryption">video gesprek (niet e2e versleuteld)</string>
@@ -764,7 +763,7 @@
<string name="group_is_decentralized">Volledig gedecentraliseerd alleen zichtbaar voor leden.</string>
<string name="network_option_tcp_connection_timeout">Timeout van TCP-verbinding</string>
<string name="voice_messages">Spraak berichten</string>
<string name="voice_prohibited_in_this_chat">Spraak berichten zijn verboden in dit gesprek.</string>
<string name="voice_prohibited_in_this_chat">Spraak berichten zijn niet toegestaan in dit gesprek.</string>
<string name="prohibit_sending_disappearing">Verbied het verzenden van verdwijnende berichten.</string>
<string name="v4_5_reduced_battery_usage">Verminderd batterijgebruik</string>
<string name="v4_5_private_filenames_descr">Om de tijdzone te beschermen, gebruiken afbeeldings-/spraakbestanden UTC.</string>
@@ -804,7 +803,7 @@
<string name="reset_color">Kleuren resetten</string>
<string name="theme_system">Systeem</string>
<string name="chat_preferences_yes">ja</string>
<string name="feature_received_prohibited">gekregen, verboden</string>
<string name="feature_received_prohibited">gekregen, niet toegestaan</string>
<string name="your_preferences">Jouw voorkeuren</string>
<string name="accept_feature_set_1_day">Stel 1 dag in</string>
<string name="whats_new">Wat is er nieuw</string>
@@ -824,7 +823,7 @@
<string name="voice_message_send_text">Spraakbericht…</string>
<string name="voice_message_with_duration">Spraakbericht (%1$s)</string>
<string name="text_field_set_contact_placeholder">Contactnaam instellen…</string>
<string name="voice_messages_prohibited">Spraak berichten verboden!</string>
<string name="voice_messages_prohibited">Spraak berichten niet toegestaan!</string>
<string name="reset_verb">Resetten</string>
<string name="send_verb">Verstuur</string>
<string name="send_live_message_desc">Stuur een live bericht, het wordt bijgewerkt voor de ontvanger(s) terwijl u het typt</string>
@@ -886,21 +885,20 @@
<string name="this_string_is_not_a_connection_link">Deze string is geen verbinding link!</string>
<string name="enable_automatic_deletion_message">Deze actie kan niet ongedaan worden gemaakt, de berichten die eerder zijn verzonden en ontvangen dan geselecteerd, worden verwijderd. Het kan enkele minuten duren.</string>
<string name="switch_receiving_address_desc">Het ontvangstadres wordt gewijzigd naar een andere server. Adres wijziging wordt voltooid nadat de afzender online is.</string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Om je privacy te behouden, heeft de app in plaats van push meldingen een <b>SimpleX achtergrond service</b> - deze gebruikt een paar procent van de batterij per dag.]]></string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Om de privacy te verbeteren, <b>draait SimpleX op de achtergrond</b> in plaats van pushmeldingen te gebruiken.]]></string>
<string name="chat_preferences_you_allow">Jij staat toe</string>
<string name="you_are_invited_to_group">Je bent uitgenodigd voor de groep</string>
<string name="you_can_connect_to_simplex_chat_founder"><![CDATA[U kunt <font color="#0088ff">verbinding maken met SimpleX Chat ontwikkelaars om vragen te stellen en updates te ontvangen</font>.]]></string>
<string name="connection_error_auth_desc">Tenzij uw contact de verbinding heeft verwijderd of deze link al is gebruikt, kan het een bug zijn. Meld het alstublieft.
\nOm verbinding te maken, vraagt u uw contact om een andere verbinding link te maken en te controleren of u een stabiele netwerkverbinding heeft.</string>
<string name="use_simplex_chat_servers__question">SimpleX Chat servers gebruiken\?</string>
<string name="voice_messages_are_prohibited">Spraak berichten zijn verboden in deze groep.</string>
<string name="voice_messages_are_prohibited">Spraak berichten zijn niet toegestaan.</string>
<string name="personal_welcome">Welkom %1$s!</string>
<string name="you_can_start_chat_via_setting_or_by_restarting_the_app">U kunt de chat starten via app Instellingen / Database of door de app opnieuw op te starten.</string>
<string name="snd_conn_event_switch_queue_phase_completed_for_member">je hebt het adres gewijzigd voor %s</string>
<string name="snd_group_event_member_deleted">je hebt %1$s verwijderd</string>
<string name="contact_sent_large_file">Je contact heeft een bestand verzonden dat groter is dan de momenteel ondersteunde maximale grootte (%1$s).</string>
<string name="your_current_chat_database_will_be_deleted_and_replaced_with_the_imported_one">Uw huidige chatdatabase wordt VERWIJDERD en VERVANGEN door de geïmporteerde.
\nDeze actie kan niet ongedaan worden gemaakt. Uw profiel, contacten, berichten en bestanden gaan onomkeerbaar verloren.</string>
<string name="your_current_chat_database_will_be_deleted_and_replaced_with_the_imported_one">Uw huidige chatdatabase wordt VERWIJDERD en VERVANGEN door de geïmporteerde. \nDeze actie kan niet ongedaan worden gemaakt. Uw profiel, contacten, berichten en bestanden gaan definitief verloren.</string>
<string name="invite_prohibited_description">Je probeert een contact met wie je een incognito profiel hebt gedeeld uit te nodigen voor de groep waarin je je hoofdprofiel gebruikt</string>
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Uw profiel wordt op uw apparaat opgeslagen en alleen gedeeld met uw contacten. SimpleX servers kunnen uw profiel niet zien.</string>
<string name="auth_you_will_be_required_to_authenticate_when_you_start_or_resume">U moet zich authenticeren wanneer u de app na 30 seconden op de achtergrond start of hervat.</string>
@@ -1090,7 +1088,7 @@
<string name="available_in_v51">"
\nBeschikbaar in v5.1"</string>
<string name="prohibit_calls">Audio/video gesprekken verbieden.</string>
<string name="calls_prohibited_with_this_contact">Audio/video gesprekken zijn verboden.</string>
<string name="calls_prohibited_with_this_contact">Audio/video gesprekken zijn niet toegestaan.</string>
<string name="v5_0_large_files_support_descr">Snel en niet wachten tot de afzender online is!</string>
<string name="v5_0_app_passcode">App toegangscode</string>
<string name="v5_0_app_passcode_descr">Stel het in in plaats van systeemverificatie.</string>
@@ -1165,19 +1163,19 @@
<string name="self_destruct_passcode_enabled">Zelfvernietigings wachtwoord ingeschakeld!</string>
<string name="app_passcode_replaced_with_self_destruct">De app-toegangscode wordt vervangen door een zelfvernietigings wachtwoord.</string>
<string name="if_you_enter_self_destruct_code">Als u uw zelfvernietigings wachtwoord invoert tijdens het openen van de app:</string>
<string name="if_you_enter_passcode_data_removed">Als u deze toegangscode invoert bij het openen van de app, worden alle app-gegevens onomkeerbaar verwijderd!</string>
<string name="if_you_enter_passcode_data_removed">Als u deze toegangscode invoert bij het openen van de app, worden alle app-gegevens definitief verwijderd!</string>
<string name="set_passcode">Toegangscode instellen</string>
<string name="prohibit_message_reactions">Bericht reacties verbieden.</string>
<string name="only_you_can_add_message_reactions">Alleen jij kunt bericht reacties toevoegen.</string>
<string name="message_reactions_are_prohibited">Reacties op berichten zijn verboden in deze groep.</string>
<string name="message_reactions_are_prohibited">Reacties op berichten zijn niet toegestaan.</string>
<string name="prohibit_message_reactions_group">Berichten reacties verbieden.</string>
<string name="allow_message_reactions_only_if">Sta bericht reacties alleen toe als uw contact dit toestaat.</string>
<string name="allow_your_contacts_adding_message_reactions">Sta uw contactpersonen toe om bericht reacties toe te voegen.</string>
<string name="allow_message_reactions">Sta bericht reacties toe.</string>
<string name="group_members_can_add_message_reactions">Groepsleden kunnen bericht reacties toevoegen.</string>
<string name="group_members_can_add_message_reactions">Leden kunnen reacties op berichten toevoegen.</string>
<string name="both_you_and_your_contact_can_add_message_reactions">Zowel u als uw contact kunnen bericht reacties toevoegen.</string>
<string name="message_reactions">Reacties op berichten</string>
<string name="message_reactions_prohibited_in_this_chat">Reacties op berichten zijn verboden in deze chat.</string>
<string name="message_reactions_prohibited_in_this_chat">Reacties op berichten zijn niet toegestaan in deze chat.</string>
<string name="only_your_contact_can_add_message_reactions">Alleen uw contact kan bericht reacties toevoegen.</string>
<string name="custom_time_unit_days">dagen</string>
<string name="custom_time_unit_hours">uren</string>
@@ -1241,14 +1239,14 @@
<string name="abort_switch_receiving_address_confirm">Afbreken</string>
<string name="no_filtered_chats">Geen gefilterde chats</string>
<string name="only_owners_can_enable_files_and_media">Alleen groep eigenaren kunnen bestanden en media inschakelen.</string>
<string name="files_are_prohibited_in_group">Bestanden en media zijn verboden in deze groep.</string>
<string name="files_are_prohibited_in_group">Bestanden en media zijn niet toegestaan.</string>
<string name="favorite_chat">Favoriet</string>
<string name="files_and_media_prohibited">Bestanden en media verboden!</string>
<string name="files_and_media_prohibited">Bestanden en media niet toegestaan!</string>
<string name="unfavorite_chat">Niet favoriet</string>
<string name="files_and_media">Bestanden en media</string>
<string name="prohibit_sending_files">Verbied het verzenden van bestanden en media.</string>
<string name="allow_to_send_files">Sta toe om bestanden en media te verzenden.</string>
<string name="group_members_can_send_files">Groepsleden kunnen bestanden en media verzenden.</string>
<string name="group_members_can_send_files">Leden kunnen bestanden en media verzenden.</string>
<string name="search_verb">Zoeken</string>
<string name="la_mode_off">Uit</string>
<string name="network_option_protocol_timeout_per_kb">Protocol timeout per KB</string>
@@ -1722,10 +1720,10 @@
<string name="feature_roles_admins">beheerders</string>
<string name="feature_roles_all_members">alle leden</string>
<string name="feature_roles_owners">eigenaren</string>
<string name="simplex_links_are_prohibited_in_group">SimpleX-links zijn in deze groep verboden.</string>
<string name="simplex_links_are_prohibited_in_group">SimpleX-links zijn niet toegestaan.</string>
<string name="feature_enabled_for">Ingeschakeld voor</string>
<string name="allow_to_send_simplex_links">Sta het verzenden van SimpleX-links toe.</string>
<string name="group_members_can_send_simplex_links">Groepsleden kunnen SimpleX-links verzenden.</string>
<string name="group_members_can_send_simplex_links">Leden kunnen SimpleX-links verzenden.</string>
<string name="saved_description">opgeslagen</string>
<string name="saved_from_description">opgeslagen van %s</string>
<string name="forward_chat_item">Doorsturen</string>
@@ -1988,7 +1986,7 @@
<string name="allow_calls_question">Oproepen toestaan?</string>
<string name="info_view_call_button">bellen</string>
<string name="cant_call_member_alert_title">Kan geen groepslid bellen</string>
<string name="calls_prohibited_alert_title">Bellen verboden!</string>
<string name="calls_prohibited_alert_title">Bellen niet toegestaan!</string>
<string name="confirm_delete_contact_question">Contact verwijderen bevestigen?</string>
<string name="conversation_deleted">Gesprek verwijderd!</string>
<string name="delete_without_notification">Verwijderen zonder melding</string>
@@ -2009,7 +2007,7 @@
<string name="info_view_open_button">open</string>
<string name="paste_link">Plak de link</string>
<string name="action_button_add_members">Uitnodiging</string>
<string name="one_hand_ui">Toegankelijke chatwerkbalk</string>
<string name="one_hand_ui">Bereikbare app-toolbars</string>
<string name="calls_prohibited_ask_to_enable_calls_alert_text">Vraag uw contactpersoon om oproepen in te schakelen.</string>
<string name="no_filtered_contacts">Geen gefilterde contacten</string>
<string name="select_verb">Selecteer</string>
@@ -2144,7 +2142,7 @@
<string name="or_to_share_privately">Of om privé te delen</string>
<string name="address_settings">Adres instellingen</string>
<string name="create_1_time_link">Eenmalige link maken</string>
<string name="onboarding_choose_server_operators">Operators kiezen</string>
<string name="onboarding_choose_server_operators">Serverbeheerders</string>
<string name="onboarding_network_operators_conditions_will_be_accepted">Voor ingeschakelde operators worden de voorwaarden na 30 dagen geaccepteerd.</string>
<string name="onboarding_network_operators">Netwerkbeheerders</string>
<string name="onboarding_network_operators_review_later">Later beoordelen</string>
@@ -2209,4 +2207,40 @@
<string name="operator_use_for_sending">Om te verzenden</string>
<string name="onboarding_network_operators_configure_via_settings">U kunt servers configureren via instellingen.</string>
<string name="chat_archive">Of importeer archiefbestand</string>
<string name="direct_messages_are_prohibited_in_chat">Directe berichten tussen leden zijn in deze chat niet toegestaan.</string>
<string name="remote_hosts_section">Externe mobiele telefoons</string>
<string name="xiaomi_ignore_battery_optimization"><![CDATA[<b>Xiaomi-apparaten</b>: schakel Automatisch starten in de systeeminstellingen in om meldingen te laten werken.]]></string>
<string name="maximum_message_size_title">Bericht is te groot!</string>
<string name="maximum_message_size_reached_text">Verklein het bericht en verstuur het opnieuw.</string>
<string name="maximum_message_size_reached_forwarding">U kunt het bericht kopiëren en verkleinen om het te verzenden.</string>
<string name="add_your_team_members_to_conversations">Voeg uw teamleden toe aan de gesprekken.</string>
<string name="business_address">Zakelijk adres</string>
<string name="all_message_and_files_e2e_encrypted"><![CDATA[Alle berichten en bestanden worden <b>end-to-end-versleuteld</b> verzonden, met post-kwantumbeveiliging in directe berichten.]]></string>
<string name="onboarding_notifications_mode_service_desc_short">App draait altijd op de achtergrond</string>
<string name="onboarding_notifications_mode_periodic_desc_short">Controleer berichten elke 10 minuten</string>
<string name="onboarding_notifications_mode_battery">Meldingen en batterij</string>
<string name="how_it_helps_privacy">Hoe het de privacy helpt</string>
<string name="you_will_stop_receiving_messages_from_this_chat_chat_history_will_be_preserved">U ontvangt geen berichten meer van deze chat. De chatgeschiedenis blijft bewaard.</string>
<string name="leave_chat_question">Chat verlaten?</string>
<string name="button_add_friends">Vrienden toevoegen</string>
<string name="button_add_team_members">Teamleden toevoegen</string>
<string name="invite_to_chat_button">Uitnodigen voor een chat</string>
<string name="delete_chat_for_self_cannot_undo_warning">De chat wordt voor je verwijderd - dit kan niet ongedaan worden gemaakt!</string>
<string name="info_row_chat">Chat</string>
<string name="direct_messages_are_prohibited">Directe berichten tussen leden zijn niet toegestaan.</string>
<string name="connect_plan_chat_already_exists">Chat bestaat al!</string>
<string name="button_delete_chat">Chat verwijderen</string>
<string name="delete_chat_question">Chat verwijderen?</string>
<string name="button_leave_chat">Chat verlaten</string>
<string name="member_will_be_removed_from_chat_cannot_be_undone">Lid wordt verwijderd uit de chat - dit kan niet ongedaan worden gemaakt!</string>
<string name="member_role_will_be_changed_with_notification_chat">De rol wordt gewijzigd naar %s. Iedereen in de chat wordt op de hoogte gebracht.</string>
<string name="chat_main_profile_sent">Uw chatprofiel wordt naar chatleden verzonden</string>
<string name="v6_2_business_chats_descr">Privacy voor uw klanten.</string>
<string name="connect_plan_you_are_already_connected_with_vName"><![CDATA[U bent al verbonden met <b>%1$s</b>.]]></string>
<string name="delete_chat_for_all_members_cannot_undo_warning">De chat wordt voor alle leden verwijderd - dit kan niet ongedaan worden gemaakt!</string>
<string name="chat_bottom_bar">Bereikbare chat-toolbar</string>
<string name="v6_2_business_chats">Zakelijke chats</string>
<string name="onboarding_notifications_mode_off_desc_short">Geen achtergrondservice</string>
<string name="only_chat_owners_can_change_prefs">Alleen chateigenaren kunnen voorkeuren wijzigen.</string>
<string name="maximum_message_size_reached_non_text">Verklein de berichtgrootte of verwijder de media en verzend het bericht opnieuw.</string>
</resources>
@@ -420,8 +420,7 @@
<string name="callstate_starting">uruchamianie…</string>
<string name="strikethrough_text">strajk</string>
<string name="first_platform_without_user_ids">Brak identyfikatorów użytkownika.</string>
<string name="next_generation_of_private_messaging">Następna generacja
\nprywatnych wiadomości</string>
<string name="next_generation_of_private_messaging">Następna generacja \nprywatnych wiadomości</string>
<string name="callstate_waiting_for_answer">oczekiwanie na odpowiedź…</string>
<string name="callstate_waiting_for_confirmation">oczekiwanie na potwierdzenie…</string>
<string name="you_can_use_markdown_to_format_messages__prompt">Możesz używać markdown do formatowania wiadomości:</string>
@@ -849,8 +849,7 @@
<string name="to_start_a_new_chat_help_header">Para começar um novo bate-papo</string>
<string name="la_notice_turn_on">Ligar</string>
<string name="welcome">Bem-vindo(a)!</string>
<string name="next_generation_of_private_messaging">A próxima geração
\nde mensageiros privados</string>
<string name="next_generation_of_private_messaging">A próxima geração \nde mensageiros privados</string>
<string name="settings_section_title_socks">PROXY SOCKS</string>
<string name="database_backup_can_be_restored">A tentativa de alterar a senha do banco de dados não foi concluída.</string>
<string name="stop_chat_to_export_import_or_delete_chat_database">Pare o bate-papo para exportar, importar ou excluir o banco de dados do chat. Você não poderá receber e enviar mensagens enquanto o chat estiver interrompido.</string>
@@ -88,9 +88,9 @@
<string name="icon_descr_instant_notifications">Мгновенные уведомления</string>
<string name="service_notifications">Мгновенные уведомления!</string>
<string name="service_notifications_disabled">Мгновенные уведомления выключены!</string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Чтобы защитить Ваши личные данные, вместо уведомлений от сервера приложение запускает <b>фоновый сервис SimpleX</b>, который потребляет несколько процентов батареи в день.]]></string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Чтобы улучшить конфиденциальность, <b>SimpleX выполняется в фоне</b> вместо уведомлений через сервер.]]></string>
<string name="it_can_disabled_via_settings_notifications_still_shown"><![CDATA[<b>Он может быть выключен через Настройки</b> – Вы продолжите получать уведомления о сообщениях пока приложение запущено.]]></string>
<string name="turn_off_battery_optimization"><![CDATA[Для использования этой функции, <b>разрешите SimpleX выполняться в фоне</b> в следующем диалоге. Иначе уведомления будут выключены.]]></string>
<string name="turn_off_battery_optimization"><![CDATA[<b>Разрешите это</b> в следующем окне чтобы получать нотификации мгновенно.]]></string>
<string name="turning_off_service_and_periodic">Оптимизация батареи включена, поэтому сервис уведомлений выключен. Вы можете снова включить его через Настройки.</string>
<string name="periodic_notifications">Периодические уведомления</string>
<string name="periodic_notifications_disabled">Периодические уведомления выключены!</string>
@@ -463,7 +463,7 @@
<string name="callstate_connected">соединено</string>
<string name="callstate_ended">завершен</string>
<!-- SimpleXInfo -->
<string name="next_generation_of_private_messaging">Новое поколение\nприватных сообщений</string>
<string name="next_generation_of_private_messaging">Будущее коммуникаций</string>
<string name="privacy_redefined">Более конфиденциальный</string>
<string name="first_platform_without_user_ids">Без идентификаторов пользователей.</string>
<string name="immune_to_spam_and_abuse">Защищен от спама</string>
@@ -475,8 +475,8 @@
<string name="how_it_works">Как это работает</string>
<!-- How SimpleX Works -->
<string name="how_simplex_works">Как SimpleX работает</string>
<string name="to_protect_privacy_simplex_has_ids_for_queues">Чтобы защитить Вашу конфиденциальность, вместо ID пользователей, которые есть в других платформах, SimpleX использует ID для очередей сообщений, разные для каждого контакта.</string>
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages"><![CDATA[Только пользовательские устройства хранят контакты, группы и сообщения, которые отправляются <b>с двухуровневым end-to-end шифрованием</b>.]]></string>
<string name="to_protect_privacy_simplex_has_ids_for_queues">Чтобы защитить Вашу конфиденциальность, SimpleX использует разные ID для всех ваших контактов.</string>
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages">Только пользовательские устройства хранят контакты, группы и сообщения.</string>
<string name="read_more_in_github_with_link"><![CDATA[Узнайте больше из нашего <font color="#0088ff">GitHub репозитория</font>.]]></string>
<!-- SetNotificationsMode.kt -->
<string name="use_chat">Использовать чат</string>
@@ -878,12 +878,12 @@
<string name="prohibit_message_deletion">Запретить необратимое удаление сообщений.</string>
<string name="allow_to_send_voice">Разрешить отправлять голосовые сообщения.</string>
<string name="prohibit_sending_voice">Запретить отправлять голосовые сообщений.</string>
<string name="group_members_can_send_dms">Члены группы могут посылать прямые сообщения.</string>
<string name="group_members_can_send_dms">Члены могут посылать прямые сообщения.</string>
<string name="direct_messages_are_prohibited_in_group">Прямые сообщения между членами группы запрещены.</string>
<string name="group_members_can_delete">Члены группы могут необратимо удалять отправленные сообщения. (24 часа)</string>
<string name="message_deletion_prohibited_in_chat">Необратимое удаление сообщений запрещено в этой группе.</string>
<string name="group_members_can_send_voice">Члены группы могут отправлять голосовые сообщения.</string>
<string name="voice_messages_are_prohibited">Голосовые сообщения запрещены в этой группе.</string>
<string name="group_members_can_delete">Члены могут необратимо удалять отправленные сообщения. (24 часа)</string>
<string name="message_deletion_prohibited_in_chat">Необратимое удаление сообщений запрещено.</string>
<string name="group_members_can_send_voice">Члены могут отправлять голосовые сообщения.</string>
<string name="voice_messages_are_prohibited">Голосовые сообщения запрещены.</string>
<string name="onboarding_notifications_mode_off_desc"><![CDATA[<b>Минимальный расход батареи</b>. Вы получите уведомления только когда приложение запущено, без фонового сервиса.]]></string>
<string name="onboarding_notifications_mode_title">Уведомления</string>
<string name="onboarding_notifications_mode_off">Когда приложение запущено</string>
@@ -891,7 +891,7 @@
<string name="onboarding_notifications_mode_service">Мгновенно</string>
<string name="onboarding_notifications_mode_service_desc"><![CDATA[<b>Больше расход батареи</b>! Приложение постоянно запущено в фоне - уведомления будут показаны сразу же.]]></string>
<string name="onboarding_notifications_mode_periodic_desc"><![CDATA[<b>Меньше расход батареи</b>. Приложение проверяет сообщения каждые 10 минут. Вы можете пропустить звонки и срочные сообщения.]]></string>
<string name="onboarding_notifications_mode_subtitle">Можно изменить позже в настройках.</string>
<string name="onboarding_notifications_mode_subtitle">Как это влияет на потребление энергии</string>
<string name="live">LIVE</string>
<string name="send_live_message">Отправить живое сообщение</string>
<string name="live_message">Живое сообщение!</string>
@@ -927,7 +927,7 @@
<string name="send_live_message_desc">Отправить живое сообщение — оно будет обновляться для получателей по мере того, как Вы его вводите</string>
<string name="create_group_link">Создать ссылку группы</string>
<string name="prohibit_sending_disappearing_messages">Запретить отправлять исчезающие сообщения.</string>
<string name="disappearing_messages_are_prohibited">Исчезающие сообщения запрещены в этой группе.</string>
<string name="disappearing_messages_are_prohibited">Исчезающие сообщения запрещены.</string>
<string name="ttl_w">%dнед</string>
<string name="ttl_d">%dд</string>
<string name="ttl_weeks">%d нед.</string>
@@ -940,7 +940,7 @@
<string name="clear_verification">Сбросить подтверждение</string>
<string name="allow_disappearing_messages_only_if">Разрешить исчезающие сообщения, только если Ваш контакт разрешает их Вам.</string>
<string name="prohibit_sending_disappearing">Запретить посылать исчезающие сообщения.</string>
<string name="group_members_can_send_disappearing">Члены группы могут посылать исчезающие сообщения.</string>
<string name="group_members_can_send_disappearing">Члены могут посылать исчезающие сообщения.</string>
<string name="whats_new">Что нового</string>
<string name="new_in_version">Новое в %s</string>
<string name="v4_2_security_assessment">Аудит безопасности</string>
@@ -1193,7 +1193,7 @@
<string name="set_passcode">Установить код доступа</string>
<string name="edit_history">История</string>
<string name="info_menu">Информация</string>
<string name="auth_open_chat_profiles">Открыть профили чата</string>
<string name="auth_open_chat_profiles">Изменить профили чата</string>
<string name="received_message">Полученное сообщение</string>
<string name="sent_message">Отправленное сообщение</string>
<string name="disappearing_message">Исчезающее сообщение</string>
@@ -1227,9 +1227,9 @@
<string name="allow_message_reactions">Разрешить реакции на сообщения.</string>
<string name="allow_message_reactions_only_if">Разрешить реакции на сообщения, только если ваш контакт разрешает их.</string>
<string name="allow_your_contacts_adding_message_reactions">Разрешить контактам добавлять реакции на сообщения.</string>
<string name="group_members_can_add_message_reactions">Члены группы могут добавлять реакции на сообщения.</string>
<string name="group_members_can_add_message_reactions">Члены могут добавлять реакции на сообщения.</string>
<string name="message_reactions_prohibited_in_this_chat">Реакции на сообщения в этом чате запрещены.</string>
<string name="message_reactions_are_prohibited">Реакции на сообщения запрещены в этой группе.</string>
<string name="message_reactions_are_prohibited">Реакции на сообщения запрещены.</string>
<string name="only_your_contact_can_add_message_reactions">Только Ваш контакт может добавлять реакции на сообщения.</string>
<string name="prohibit_message_reactions">Запретить реакции на сообщения.</string>
<string name="prohibit_message_reactions_group">Запретить реакции на сообщения.</string>
@@ -1348,8 +1348,8 @@
<string name="shutdown_alert_desc">Нотификации перестанут работать, пока вы не перезапустите приложение</string>
<string name="network_option_protocol_timeout_per_kb">Таймаут протокола на KB</string>
<string name="allow_to_send_files">Разрешить посылать файлы и медиа.</string>
<string name="group_members_can_send_files">Члены группы могут слать файлы и медиа.</string>
<string name="files_are_prohibited_in_group">Файлы и медиа запрещены в этой группе.</string>
<string name="group_members_can_send_files">Члены могут слать файлы и медиа.</string>
<string name="files_are_prohibited_in_group">Файлы и медиа запрещены.</string>
<string name="files_and_media_prohibited">Файлы и медиа запрещены!</string>
<string name="only_owners_can_enable_files_and_media">Только владельцы группы могут разрешить файлы и медиа.</string>
<string name="files_and_media">Файлы и медиа</string>
@@ -1818,7 +1818,7 @@
<string name="simplex_links">Ссылки SimpleX</string>
<string name="allow_to_send_simplex_links">Разрешить отправлять ссылки SimpleX.</string>
<string name="prohibit_sending_simplex_links">Запретить отправку ссылок SimpleX</string>
<string name="group_members_can_send_simplex_links">Члены группы могут отправлять ссылки SimpleX</string>
<string name="group_members_can_send_simplex_links">Члены могут отправлять ссылки SimpleX</string>
<string name="feature_roles_admins">админы</string>
<string name="feature_roles_all_members">все члены</string>
<string name="feature_roles_owners">владельцы</string>
@@ -1828,7 +1828,7 @@
<string name="feature_enabled_for">Включено для</string>
<string name="forward_chat_item">Переслать</string>
<string name="v5_7_forward">Переслать и сохранить сообщение</string>
<string name="simplex_links_are_prohibited_in_group">Ссылки SimpleX запрещены в этой группе.</string>
<string name="simplex_links_are_prohibited_in_group">Ссылки SimpleX запрещены.</string>
<string name="forward_message">Переслать сообщение…</string>
<string name="v5_7_new_interface_languages">Литовский интерфейс</string>
<string name="v5_7_forward_descr">Источник сообщения остаётся конфиденциальным.</string>
@@ -2021,7 +2021,7 @@
<string name="privacy_media_blur_radius_soft">Слабое</string>
<string name="privacy_media_blur_radius_medium">Среднее</string>
<string name="privacy_media_blur_radius_off">Выключено</string>
<string name="one_hand_ui">Доступная панель чата</string>
<string name="one_hand_ui">Доступная панель приложения</string>
<string name="current_user">Текущий профиль</string>
<string name="servers_info_missing">Нет информации, попробуйте перезагрузить</string>
<string name="servers_info">Информация о серверах</string>
@@ -2199,4 +2199,135 @@
<string name="network_proxy_auth_mode_username_password">Ваши учетные данные могут быть отправлены в незашифрованном виде.</string>
<string name="migrate_from_device_remove_archive_question">Удалить архив?</string>
<string name="migrate_from_device_uploaded_archive_will_be_removed">Загруженный архив базы данных будет навсегда удален с серверов.</string>
<string name="operator_conditions_accepted">Принятые условия</string>
<string name="accept_conditions">Принять условия</string>
<string name="no_message_servers_configured">Нет серверов сообщений.</string>
<string name="no_message_servers_configured_for_receiving">Нет серверов для приема сообщений.</string>
<string name="errors_in_servers_configuration">Ошибки в настройках серверов.</string>
<string name="for_chat_profile">Для профиля %s:</string>
<string name="no_media_servers_configured">Нет серверов файлов и медиа.</string>
<string name="no_media_servers_configured_for_private_routing">Нет серверов для приема файлов.</string>
<string name="no_media_servers_configured_for_sending">Нет серверов для отправки файлов.</string>
<string name="connection_error_quota">Недоставленные сообщения</string>
<string name="address_creation_instruction">Нажмите Создать адрес SimpleX в меню, чтобы создать его позже.</string>
<string name="address_or_1_time_link">Адрес или одноразовая ссылка?</string>
<string name="connection_security">Безопасность соединения</string>
<string name="onboarding_choose_server_operators">Операторы серверов</string>
<string name="your_servers">Ваши серверы</string>
<string name="view_conditions">Посмотреть условия</string>
<string name="operator_review_conditions">Посмотреть условия</string>
<string name="operators_conditions_accepted_for"><![CDATA[Условия приняты для оператора(ов): <b>%s</b>.]]></string>
<string name="operator_conditions_accepted_for_enabled_operators_on">Условия будут автоматически приняты для включенных операторов: %s</string>
<string name="operator_conditions_accepted_on">Условия приняты: %s.</string>
<string name="operator_website">Вебсайт</string>
<string name="operator_conditions_accepted_for_some"><![CDATA[Условия уже приняты для следующих операторов: <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_applied"><![CDATA[Эти условия также будут применены к: <b>%s</b>.]]></string>
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[Чтобы использовать серверы оператора <b>%s</b>, примите условия использования.]]></string>
<string name="operator_use_for_sending">Для оправки</string>
<string name="operator_added_message_servers">Дополнительные серверы сообщений</string>
<string name="operator_use_for_files">Использовать для файлов</string>
<string name="operator_open_conditions">Открыть условия</string>
<string name="error_adding_server">Ошибка добавления сервера</string>
<string name="operator_server_alert_title">Сервер оператора</string>
<string name="server_added_to_operator__name">Сервер добавлен к оператору %s.</string>
<string name="appearance_app_toolbars">Тулбары приложения</string>
<string name="appearance_in_app_bars_alpha">Прозрачность</string>
<string name="v6_2_network_decentralization">Децентрализация сети</string>
<string name="v6_2_network_decentralization_descr">Второй оператор серверов в приложении!</string>
<string name="v6_2_network_decentralization_enable_flux">Включить Flux</string>
<string name="v6_2_network_decentralization_enable_flux_reason">для лучшей конфиденциальности метаданных.</string>
<string name="v6_2_improved_chat_navigation">Улучшенная навигация в разговоре</string>
<string name="view_updated_conditions">Посмотреть измененные условия</string>
<string name="xiaomi_ignore_battery_optimization"><![CDATA[<b>Устройства Xiaomi</b>: пожалуйста, включите опцию Autostart в системных настройках для работы нотификаций.]]></string>
<string name="message_deleted_or_not_received_error_title">Нет сообщения</string>
<string name="message_deleted_or_not_received_error_desc">Это сообщение было удалено или еще не получено.</string>
<string name="maximum_message_size_title">Сообщение слишком большое!</string>
<string name="maximum_message_size_reached_text">Пожалуйста, уменьшите размер сообщения и отправьте снова.</string>
<string name="maximum_message_size_reached_non_text">Пожалуйста, уменьшите размер сообщения или уберите медиа и отправьте снова.</string>
<string name="maximum_message_size_reached_forwarding">Чтобы отправить сообщение, скопируйте и уменьшите его размер.</string>
<string name="share_1_time_link_with_a_friend">Поделитесь одноразовой ссылкой с другом</string>
<string name="share_address_publicly">Поделитесь адресом</string>
<string name="share_simplex_address_on_social_media">Поделитесь SimpleX адресом в социальных сетях.</string>
<string name="simplex_address_and_1_time_links_are_safe_to_share">Адрес SimpleX и одноразовые ссылки безопасно отправлять через любой мессенджер.</string>
<string name="you_can_set_connection_name_to_remember">Вы можете установить имя соединения, чтобы запомнить кому Вы отправили ссылку.</string>
<string name="smp_servers_new_server">Новый сервер</string>
<string name="create_1_time_link">Создать одноразовую ссылку</string>
<string name="for_social_media">Для социальных сетей</string>
<string name="or_to_share_privately">Или поделиться конфиденциально</string>
<string name="simplex_address_or_1_time_link">Адрес SimpleX или одноразовая ссылка?</string>
<string name="address_settings">Настройки адреса</string>
<string name="add_your_team_members_to_conversations">Добавьте сотрудников в разговор.</string>
<string name="business_address">Бизнес адрес</string>
<string name="all_message_and_files_e2e_encrypted"><![CDATA[Все сообщения и файлы отправляются с <b>end-to-end шифрованием</b>, с пост-квантовой безопасностью в прямых разговорах.]]></string>
<string name="onboarding_notifications_mode_service_desc_short">Приложение всегда выполняется в фоне</string>
<string name="onboarding_notifications_mode_periodic_desc_short">Проверять сообщения каждые 10 минут</string>
<string name="onboarding_notifications_mode_off_desc_short">Без фонового сервиса</string>
<string name="onboarding_notifications_mode_battery">Нотификации и батарейка</string>
<string name="how_it_helps_privacy">Как это улучшает конфиденциальность</string>
<string name="onboarding_network_operators">Операторы серверов</string>
<string name="onboarding_select_network_operators_to_use">Выберите операторов сети.</string>
<string name="onboarding_network_operators_conditions_you_can_configure">Вы можете настроить операторов в настройках Сеть и серверы.</string>
<string name="onboarding_network_operators_continue">Продолжить</string>
<string name="onboarding_network_operators_review_later">Посмотреть позже</string>
<string name="onboarding_network_operators_update">Обновить</string>
<string name="remote_hosts_section">Связанные мобильные устройства</string>
<string name="leave_chat_question">Покинуть разговор?</string>
<string name="you_will_stop_receiving_messages_from_this_chat_chat_history_will_be_preserved">Вы прекратите получать сообщения в этом разговоре. История будет сохранена.</string>
<string name="button_add_friends">Добавить друзей</string>
<string name="button_add_team_members">Добавить сотрудников</string>
<string name="button_delete_chat">Удалить разговор</string>
<string name="delete_chat_question">Удалить разговор?</string>
<string name="invite_to_chat_button">Пригласить в разговор</string>
<string name="delete_chat_for_all_members_cannot_undo_warning">Разговор будет удален для всех участников - это действие нельзя отменить!</string>
<string name="operator">Оператор</string>
<string name="operator_servers_title">%s серверы</string>
<string name="operators_conditions_will_be_accepted_for"><![CDATA[Условия будут приняты для оператора(ов): <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_accepted_on">Условия будут приняты: %s</string>
<string name="operator_info_title">Оператор сети</string>
<string name="use_servers_of_operator_x">Использовать %s</string>
<string name="operator_use_operator_toggle_description">Использовать серверы</string>
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[Условия будут приняты для оператора(ов): <b>%s</b>.]]></string>
<string name="operators_conditions_will_also_apply"><![CDATA[Эти условия также будут применены к: <b>%s</b>.]]></string>
<string name="chat_archive">Или импортировать файл архива</string>
<string name="chat_bottom_bar">Доступная панель чата</string>
<string name="delete_chat_for_self_cannot_undo_warning">Разговор будет удален для Вас - это действие нельзя отменить!</string>
<string name="button_leave_chat">Покинуть разговор</string>
<string name="only_chat_owners_can_change_prefs">Только владельцы разговора могут поменять предпочтения.</string>
<string name="operator_conditions_failed_to_load">Текст условий использования не может быть показан, вы можете посмотреть их через ссылку:</string>
<string name="info_row_chat">Разговор</string>
<string name="member_will_be_removed_from_chat_cannot_be_undone">Член будет удален из разговора - это действие нельзя отменить!</string>
<string name="network_preset_servers_title">Серверы по умолчанию</string>
<string name="member_role_will_be_changed_with_notification_chat">Роль будет изменена на %s. Все участники разговора получат уведомление.</string>
<string name="chat_main_profile_sent">Ваш профиль будет отправлен участникам разговора.</string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[Те же самые условия будут приняты для оператора <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[Те же самые условия будут приняты для оператора(ов): <b>%s</b>.]]></string>
<string name="operator_conditions_of_use">Условия использования</string>
<string name="operator_added_xftp_servers">Дополнительные серверы файлов и медиа</string>
<string name="error_updating_server_title">Ошибка сохранения сервера</string>
<string name="operator_use_for_messages_private_routing">Для доставки сообщений</string>
<string name="operator_open_changes">Открыть изменения</string>
<string name="error_server_operator_changed">Оператор серверов изменен.</string>
<string name="error_server_protocol_changed">Протокол сервера изменен.</string>
<string name="xftp_servers_per_user">Серверы для новых файлов Вашего текущего профиля</string>
<string name="operator_use_for_messages_receiving">Для получения</string>
<string name="operator_use_for_messages">Использовать для сообщений</string>
<string name="appearance_bars_blur_radius">Размыть</string>
<string name="direct_messages_are_prohibited">Прямые сообщения между членами запрещены.</string>
<string name="v6_2_business_chats">Бизнес разговоры</string>
<string name="v6_2_improved_chat_navigation_descr">- Открывает разговор на первом непрочитанном сообщении.\n- Перейти к цитируемому сообщению.</string>
<string name="v6_2_business_chats_descr">Конфиденциальность для ваших покупателей.</string>
<string name="connect_plan_you_are_already_connected_with_vName"><![CDATA[Вы уже соединены с <b>%1$s</b>.]]></string>
<string name="connect_plan_chat_already_exists">Разговор уже существует!</string>
<string name="one_time_link_can_be_used_with_one_contact_only"><![CDATA[Одноразовая ссылка может быть использована <i>только с одним контактом</i> - поделитесь при встрече или через любой мессенджер.]]></string>
<string name="no_message_servers_configured_for_private_routing">Нет серверов для доставки сообщений.</string>
<string name="onboarding_network_operators_configure_via_settings">Вы можете настроить серверы позже.</string>
<string name="onboarding_network_operators_app_will_use_different_operators">Приложение улучшает конфиденциальность используя разных операторов в каждом разговоре.</string>
<string name="onboarding_network_operators_cant_see_who_talks_to_whom">Когда больше чем один оператор включен, ни один из них не видит метаданные, чтобы определить, кто соединен с кем.</string>
<string name="failed_to_save_servers">Ошибка сохранения серверов</string>
<string name="onboarding_network_operators_conditions_will_be_accepted">Условия будут приняты для включенных операторов через 30 дней.</string>
<string name="error_accepting_operator_conditions">Ошибка приема условий</string>
<string name="connection_error_quota_desc">Соединение достигло предела недоставленных сообщений. Возможно, Ваш контакт не в сети.</string>
<string name="to_protect_against_your_link_replaced_compare_codes">Чтобы защитить Вашу ссылку от замены, Вы можете сравнить код безопасности.</string>
<string name="onboarding_network_operators_app_will_use_for_routing">Например, если Ваш контакт получает сообщения через сервер SimpleX Chat, Ваше приложение доставит их через сервер Flux.</string>
<string name="direct_messages_are_prohibited_in_chat">Прямые сообщения между членами запрещены в этом разговоре.</string>
</resources>
@@ -1162,8 +1162,7 @@
<string name="colored_text">кольоровий</string>
<string name="callstatus_ended">дзвінок завершено %1$s</string>
<string name="callstatus_error">помилка дзвінка</string>
<string name="next_generation_of_private_messaging">Наступне покоління
\nприватних повідомлень</string>
<string name="next_generation_of_private_messaging">Наступне покоління \nприватних повідомлень</string>
<string name="opensource_protocol_and_code_anybody_can_run_servers">Кожен може хостити сервери.</string>
<string name="settings_developer_tools">Інструменти розробника</string>
<string name="settings_experimental_features">Експериментальні функції</string>
File diff suppressed because it is too large Load Diff
@@ -7,7 +7,7 @@ import androidx.compose.runtime.*
actual fun QRCodeScanner(
showQRCodeScanner: MutableState<Boolean>,
padding: PaddingValues,
onBarcode: (String) -> Unit
onBarcode: suspend (String) -> Boolean
) {
//LALAL
}
+4 -4
View File
@@ -24,11 +24,11 @@ android.nonTransitiveRClass=true
kotlin.mpp.androidSourceSetLayoutVersion=2
kotlin.jvm.target=11
android.version_name=6.2-beta.5
android.version_code=256
android.version_name=6.2-beta.6
android.version_code=258
desktop.version_name=6.2-beta.5
desktop.version_code=80
desktop.version_name=6.2-beta.6
desktop.version_code=81
kotlin.version=1.9.23
gradle.plugin.version=8.2.0
+1 -1
View File
@@ -12,7 +12,7 @@ constraints: zip +disable-bzip2 +disable-zstd
source-repository-package
type: git
location: https://github.com/simplex-chat/simplexmq.git
tag: 966b9990e0bf5fdb701f79b6efd722baddd1ee1d
tag: 3f177b8c8a91de124dfe871af82bd7433f275efb
source-repository-package
type: git
Generated
+281 -469
View File
@@ -16,21 +16,6 @@
"type": "github"
}
},
"blank": {
"locked": {
"lastModified": 1625557891,
"narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=",
"owner": "divnix",
"repo": "blank",
"rev": "5a5d2684073d9f563072ed07c871d577a6c614a8",
"type": "github"
},
"original": {
"owner": "divnix",
"repo": "blank",
"type": "github"
}
},
"cabal-32": {
"flake": false,
"locked": {
@@ -98,64 +83,6 @@
"type": "github"
}
},
"devshell": {
"inputs": {
"flake-utils": [
"haskellNix",
"tullia",
"std",
"flake-utils"
],
"nixpkgs": [
"haskellNix",
"tullia",
"std",
"nixpkgs"
]
},
"locked": {
"lastModified": 1663445644,
"narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=",
"owner": "numtide",
"repo": "devshell",
"rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "devshell",
"type": "github"
}
},
"dmerge": {
"inputs": {
"nixlib": [
"haskellNix",
"tullia",
"std",
"nixpkgs"
],
"yants": [
"haskellNix",
"tullia",
"std",
"yants"
]
},
"locked": {
"lastModified": 1659548052,
"narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=",
"owner": "divnix",
"repo": "data-merge",
"rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497",
"type": "github"
},
"original": {
"owner": "divnix",
"repo": "data-merge",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
@@ -173,74 +100,34 @@
"type": "github"
}
},
"flake-compat_2": {
"flake": false,
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1650374568,
"narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "b4a34015c698c7793d592d66adbab377907a2be8",
"lastModified": 1698579227,
"narHash": "sha256-KVWjFZky+gRuWennKsbo6cWyo7c/z/VgCte5pR9pEKg=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "f76e870d64779109e41370848074ac4eaa1606ec",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"locked": {
"lastModified": 1676283394,
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
"type": "github"
"inputs": {
"systems": "systems"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"locked": {
"lastModified": 1667395993,
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_3": {
"locked": {
"lastModified": 1653893745,
"narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_4": {
"locked": {
"lastModified": 1659877975,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
@@ -266,33 +153,51 @@
"type": "github"
}
},
"gomod2nix": {
"inputs": {
"nixpkgs": "nixpkgs_2",
"utils": "utils"
},
"ghc98X": {
"flake": false,
"locked": {
"lastModified": 1655245309,
"narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=",
"owner": "tweag",
"repo": "gomod2nix",
"rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58",
"type": "github"
"lastModified": 1715066704,
"narHash": "sha256-F0EVR8x/fcpj1st+hz96Wdsz5uwVIOziGKAwRxLOYJw=",
"ref": "ghc-9.8",
"rev": "78a253543d466ac511a1664a3e6aff032ca684d5",
"revCount": 61757,
"submodules": true,
"type": "git",
"url": "https://gitlab.haskell.org/ghc/ghc"
},
"original": {
"owner": "tweag",
"repo": "gomod2nix",
"type": "github"
"ref": "ghc-9.8",
"submodules": true,
"type": "git",
"url": "https://gitlab.haskell.org/ghc/ghc"
}
},
"ghc99": {
"flake": false,
"locked": {
"lastModified": 1726585445,
"narHash": "sha256-IdwQBex4boY6s0Plj5+ixf36rfYSUyMdTWrztKvZH30=",
"ref": "refs/heads/master",
"rev": "7fd9e5e29ab54eb406880077463e8552e2ddd39a",
"revCount": 67238,
"submodules": true,
"type": "git",
"url": "https://gitlab.haskell.org/ghc/ghc"
},
"original": {
"submodules": true,
"type": "git",
"url": "https://gitlab.haskell.org/ghc/ghc"
}
},
"hackage": {
"flake": false,
"locked": {
"lastModified": 1702340598,
"narHash": "sha256-CC0HI+6iKPtH+8r/ZfcpW5v/OYvL7zMwpr0xfkXV1zU=",
"lastModified": 1702513363,
"narHash": "sha256-kloro9uEe8aYhPMoMjVNq2rfrXNgMOZhOPwVH5DH2K0=",
"owner": "input-output-hk",
"repo": "hackage.nix",
"rev": "24617c569995e38bf3b83b48eec6628a50fdb4fb",
"rev": "a9d931d0398da67846fa257922a924829233cb91",
"type": "github"
},
"original": {
@@ -309,33 +214,43 @@
"cabal-36": "cabal-36",
"cardano-shell": "cardano-shell",
"flake-compat": "flake-compat",
"flake-utils": "flake-utils_2",
"ghc-8.6.5-iohk": "ghc-8.6.5-iohk",
"ghc98X": "ghc98X",
"ghc99": "ghc99",
"hackage": [
"hackage"
],
"hls-1.10": "hls-1.10",
"hls-2.0": "hls-2.0",
"hls-2.2": "hls-2.2",
"hls-2.3": "hls-2.3",
"hls-2.4": "hls-2.4",
"hls-2.5": "hls-2.5",
"hls-2.6": "hls-2.6",
"hpc-coveralls": "hpc-coveralls",
"hydra": "hydra",
"iserv-proxy": "iserv-proxy",
"nixpkgs": [
"nixpkgs"
"haskellNix",
"nixpkgs-unstable"
],
"nixpkgs-2003": "nixpkgs-2003",
"nixpkgs-2105": "nixpkgs-2105",
"nixpkgs-2111": "nixpkgs-2111",
"nixpkgs-2205": "nixpkgs-2205",
"nixpkgs-2211": "nixpkgs-2211",
"nixpkgs-2305": "nixpkgs-2305",
"nixpkgs-2311": "nixpkgs-2311",
"nixpkgs-unstable": "nixpkgs-unstable",
"old-ghc-nix": "old-ghc-nix",
"stackage": "stackage",
"tullia": "tullia"
"stackage": "stackage"
},
"locked": {
"lastModified": 1677975916,
"narHash": "sha256-dbe8lEEPyfzjdRwpePClv7J9p9lQg7BwbBqAMCw4RLw=",
"lastModified": 1705833500,
"narHash": "sha256-rUIr6JNbCedt1g4gVYVvE9t0oFU6FUspCA0DS5cA8Bg=",
"owner": "input-output-hk",
"repo": "haskell.nix",
"rev": "ab5efd87ce3fd8ade38a01d97693d29a4f1ae7e4",
"rev": "d0c35e75cbbc6858770af42ac32b0b85495fbd71",
"type": "github"
},
"original": {
@@ -345,6 +260,125 @@
"type": "github"
}
},
"hls-1.10": {
"flake": false,
"locked": {
"lastModified": 1680000865,
"narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=",
"owner": "haskell",
"repo": "haskell-language-server",
"rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9",
"type": "github"
},
"original": {
"owner": "haskell",
"ref": "1.10.0.0",
"repo": "haskell-language-server",
"type": "github"
}
},
"hls-2.0": {
"flake": false,
"locked": {
"lastModified": 1687698105,
"narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=",
"owner": "haskell",
"repo": "haskell-language-server",
"rev": "783905f211ac63edf982dd1889c671653327e441",
"type": "github"
},
"original": {
"owner": "haskell",
"ref": "2.0.0.1",
"repo": "haskell-language-server",
"type": "github"
}
},
"hls-2.2": {
"flake": false,
"locked": {
"lastModified": 1693064058,
"narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=",
"owner": "haskell",
"repo": "haskell-language-server",
"rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85",
"type": "github"
},
"original": {
"owner": "haskell",
"ref": "2.2.0.0",
"repo": "haskell-language-server",
"type": "github"
}
},
"hls-2.3": {
"flake": false,
"locked": {
"lastModified": 1695910642,
"narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=",
"owner": "haskell",
"repo": "haskell-language-server",
"rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be",
"type": "github"
},
"original": {
"owner": "haskell",
"ref": "2.3.0.0",
"repo": "haskell-language-server",
"type": "github"
}
},
"hls-2.4": {
"flake": false,
"locked": {
"lastModified": 1699862708,
"narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=",
"owner": "haskell",
"repo": "haskell-language-server",
"rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57",
"type": "github"
},
"original": {
"owner": "haskell",
"ref": "2.4.0.1",
"repo": "haskell-language-server",
"type": "github"
}
},
"hls-2.5": {
"flake": false,
"locked": {
"lastModified": 1701080174,
"narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=",
"owner": "haskell",
"repo": "haskell-language-server",
"rev": "27f8c3d3892e38edaef5bea3870161815c4d014c",
"type": "github"
},
"original": {
"owner": "haskell",
"ref": "2.5.0.0",
"repo": "haskell-language-server",
"type": "github"
}
},
"hls-2.6": {
"flake": false,
"locked": {
"lastModified": 1705325287,
"narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=",
"owner": "haskell",
"repo": "haskell-language-server",
"rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e",
"type": "github"
},
"original": {
"owner": "haskell",
"ref": "2.6.0.0",
"repo": "haskell-language-server",
"type": "github"
}
},
"hpc-coveralls": {
"flake": false,
"locked": {
@@ -384,37 +418,14 @@
"type": "indirect"
}
},
"incl": {
"inputs": {
"nixlib": [
"haskellNix",
"tullia",
"std",
"nixpkgs"
]
},
"locked": {
"lastModified": 1669263024,
"narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=",
"owner": "divnix",
"repo": "incl",
"rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca",
"type": "github"
},
"original": {
"owner": "divnix",
"repo": "incl",
"type": "github"
}
},
"iserv-proxy": {
"flake": false,
"locked": {
"lastModified": 1670983692,
"narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=",
"lastModified": 1707968597,
"narHash": "sha256-C53NqToxl+n9s1pQ0iLtiH6P5vX3rM+NW/mFt4Ykpsk=",
"ref": "hkm/remote-iserv",
"rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300",
"revCount": 10,
"rev": "1b7f8aeb37bbc7c00f04e44d9379aa15a4409e8b",
"revCount": 18,
"type": "git",
"url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git"
},
@@ -440,32 +451,22 @@
"type": "github"
}
},
"n2c": {
"mac2ios": {
"inputs": {
"flake-utils": [
"haskellNix",
"tullia",
"std",
"flake-utils"
],
"nixpkgs": [
"haskellNix",
"tullia",
"std",
"nixpkgs"
]
"flake-parts": "flake-parts",
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1665039323,
"narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=",
"owner": "nlewo",
"repo": "nix2container",
"rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a",
"lastModified": 1699767871,
"narHash": "sha256-kxeCUfwC/Vgh2FvVMlBUq0eVx1JvfHyN+5MPKUik9mE=",
"owner": "zw3rk",
"repo": "mobile-core-tools",
"rev": "4dcb77d5ea896d749381806dfab5358851b08951",
"type": "github"
},
"original": {
"owner": "nlewo",
"repo": "nix2container",
"owner": "zw3rk",
"repo": "mobile-core-tools",
"type": "github"
}
},
@@ -490,95 +491,6 @@
"type": "github"
}
},
"nix-nomad": {
"inputs": {
"flake-compat": "flake-compat_2",
"flake-utils": [
"haskellNix",
"tullia",
"nix2container",
"flake-utils"
],
"gomod2nix": "gomod2nix",
"nixpkgs": [
"haskellNix",
"tullia",
"nixpkgs"
],
"nixpkgs-lib": [
"haskellNix",
"tullia",
"nixpkgs"
]
},
"locked": {
"lastModified": 1658277770,
"narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=",
"owner": "tristanpemble",
"repo": "nix-nomad",
"rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70",
"type": "github"
},
"original": {
"owner": "tristanpemble",
"repo": "nix-nomad",
"type": "github"
}
},
"nix2container": {
"inputs": {
"flake-utils": "flake-utils_3",
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1658567952,
"narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=",
"owner": "nlewo",
"repo": "nix2container",
"rev": "60bb43d405991c1378baf15a40b5811a53e32ffa",
"type": "github"
},
"original": {
"owner": "nlewo",
"repo": "nix2container",
"type": "github"
}
},
"nixago": {
"inputs": {
"flake-utils": [
"haskellNix",
"tullia",
"std",
"flake-utils"
],
"nixago-exts": [
"haskellNix",
"tullia",
"std",
"blank"
],
"nixpkgs": [
"haskellNix",
"tullia",
"std",
"nixpkgs"
]
},
"locked": {
"lastModified": 1661824785,
"narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=",
"owner": "nix-community",
"repo": "nixago",
"rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixago",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1657693803,
@@ -645,11 +557,11 @@
},
"nixpkgs-2205": {
"locked": {
"lastModified": 1672580127,
"narHash": "sha256-3lW3xZslREhJogoOkjeZtlBtvFMyxHku7I/9IVehhT8=",
"lastModified": 1685573264,
"narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0874168639713f547c05947c76124f78441ea46c",
"rev": "380be19fbd2d9079f677978361792cb25e8a3635",
"type": "github"
},
"original": {
@@ -661,11 +573,11 @@
},
"nixpkgs-2211": {
"locked": {
"lastModified": 1675730325,
"narHash": "sha256-uNvD7fzO5hNlltNQUAFBPlcEjNG5Gkbhl/ROiX+GZU4=",
"lastModified": 1688392541,
"narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b7ce17b1ebf600a72178f6302c77b6382d09323f",
"rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b",
"type": "github"
},
"original": {
@@ -675,6 +587,56 @@
"type": "github"
}
},
"nixpkgs-2305": {
"locked": {
"lastModified": 1705033721,
"narHash": "sha256-K5eJHmL1/kev6WuqyqqbS1cdNnSidIZ3jeqJ7GbrYnQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a1982c92d8980a0114372973cbdfe0a307f1bdea",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-23.05-darwin",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-2311": {
"locked": {
"lastModified": 1719957072,
"narHash": "sha256-gvFhEf5nszouwLAkT9nWsDzocUTqLWHuL++dvNjMp9I=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "7144d6241f02d171d25fba3edeaf15e0f2592105",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-23.11-darwin",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"dir": "lib",
"lastModified": 1696019113,
"narHash": "sha256-X3+DKYWJm93DRSdC5M6K5hLqzSya9BjibtBsuARoPco=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "f5892ddac112a1e9b3612c39af1b72987ee5783a",
"type": "github"
},
"original": {
"dir": "lib",
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-regression": {
"locked": {
"lastModified": 1643052045,
@@ -693,98 +655,36 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1675758091,
"narHash": "sha256-7gFSQbSVAFUHtGCNHPF7mPc5CcqDk9M2+inlVPZSneg=",
"lastModified": 1694822471,
"narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "747927516efcb5e31ba03b7ff32f61f6d47e7d87",
"rev": "47585496bcb13fb72e4a90daeea2f434e2501998",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"rev": "47585496bcb13fb72e4a90daeea2f434e2501998",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1653581809,
"narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=",
"lastModified": 1698434055,
"narHash": "sha256-Phxi5mUKSoL7A0IYUiYtkI9e8NcGaaV5PJEaJApU1Ko=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "83658b28fe638a170a19b8933aa008b30640fbd1",
"rev": "1a3c95e3b23b3cdb26750621c08cc2f1560cb883",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"ref": "nixos-23.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1654807842,
"narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "fc909087cc3386955f21b4665731dbdaceefb1d8",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1665087388,
"narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1676726892,
"narHash": "sha256-M7OYVR6dKmzmlebIjybFf3l18S2uur8lMyWWnHQooLY=",
"owner": "angerman",
"repo": "nixpkgs",
"rev": "729469087592bdea58b360de59dadf6d58714c42",
"type": "github"
},
"original": {
"owner": "angerman",
"ref": "release-22.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nosys": {
"locked": {
"lastModified": 1667881534,
"narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=",
"owner": "divnix",
"repo": "nosys",
"rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f",
"type": "github"
},
"original": {
"owner": "divnix",
"repo": "nosys",
"type": "github"
}
},
"old-ghc-nix": {
"flake": false,
"locked": {
@@ -807,17 +707,21 @@
"flake-utils": "flake-utils",
"hackage": "hackage",
"haskellNix": "haskellNix",
"nixpkgs": "nixpkgs_5"
"mac2ios": "mac2ios",
"nixpkgs": [
"haskellNix",
"nixpkgs-2305"
]
}
},
"stackage": {
"flake": false,
"locked": {
"lastModified": 1677888571,
"narHash": "sha256-YkhRNOaN6QVagZo1cfykYV8KqkI8/q6r2F5+jypOma4=",
"lastModified": 1726532152,
"narHash": "sha256-LRXbVY3M2S8uQWdwd2zZrsnVPEvt2GxaHGoy8EFFdJA=",
"owner": "input-output-hk",
"repo": "stackage.nix",
"rev": "cb50e6fabdfb2d7e655059039012ad0623f06a27",
"rev": "c77b3530cebad603812cb111c6f64968c2d2337d",
"type": "github"
},
"original": {
@@ -826,110 +730,18 @@
"type": "github"
}
},
"std": {
"inputs": {
"arion": [
"haskellNix",
"tullia",
"std",
"blank"
],
"blank": "blank",
"devshell": "devshell",
"dmerge": "dmerge",
"flake-utils": "flake-utils_4",
"incl": "incl",
"makes": [
"haskellNix",
"tullia",
"std",
"blank"
],
"microvm": [
"haskellNix",
"tullia",
"std",
"blank"
],
"n2c": "n2c",
"nixago": "nixago",
"nixpkgs": "nixpkgs_4",
"nosys": "nosys",
"yants": "yants"
},
"systems": {
"locked": {
"lastModified": 1674526466,
"narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=",
"owner": "divnix",
"repo": "std",
"rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826",
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "divnix",
"repo": "std",
"type": "github"
}
},
"tullia": {
"inputs": {
"nix-nomad": "nix-nomad",
"nix2container": "nix2container",
"nixpkgs": [
"haskellNix",
"nixpkgs"
],
"std": "std"
},
"locked": {
"lastModified": 1675695930,
"narHash": "sha256-B7rEZ/DBUMlK1AcJ9ajnAPPxqXY6zW2SBX+51bZV0Ac=",
"owner": "input-output-hk",
"repo": "tullia",
"rev": "621365f2c725608f381b3ad5b57afef389fd4c31",
"type": "github"
},
"original": {
"owner": "input-output-hk",
"repo": "tullia",
"type": "github"
}
},
"utils": {
"locked": {
"lastModified": 1653893745,
"narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"yants": {
"inputs": {
"nixpkgs": [
"haskellNix",
"tullia",
"std",
"nixpkgs"
]
},
"locked": {
"lastModified": 1667096281,
"narHash": "sha256-wRRec6ze0gJHmGn6m57/zhz/Kdvp9HS4Nl5fkQ+uIuA=",
"owner": "divnix",
"repo": "yants",
"rev": "d18f356ec25cb94dc9c275870c3a7927a10f8c3c",
"type": "github"
},
"original": {
"owner": "divnix",
"repo": "yants",
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
+278 -24
View File
@@ -1,15 +1,15 @@
{
description = "nix flake for simplex-chat";
inputs.nixpkgs.url = "github:angerman/nixpkgs/release-22.11";
inputs.haskellNix.url = "github:input-output-hk/haskell.nix/armv7a";
inputs.haskellNix.inputs.nixpkgs.follows = "nixpkgs";
inputs.nixpkgs.follows = "haskellNix/nixpkgs-2305";
inputs.mac2ios.url = "github:zw3rk/mobile-core-tools";
inputs.hackage = {
url = "github:input-output-hk/hackage.nix";
flake = false;
};
inputs.haskellNix.inputs.hackage.follows = "hackage";
inputs.flake-utils.url = "github:numtide/flake-utils";
outputs = { self, haskellNix, nixpkgs, flake-utils, ... }:
outputs = { self, haskellNix, nixpkgs, flake-utils, mac2ios, ... }:
let systems = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ]; in
flake-utils.lib.eachSystem systems (system:
# this android26 overlay makes the pkgsCross.{aarch64-android,armv7a-android-prebuilt} to set stdVer to 26 (Android 8).
@@ -30,7 +30,7 @@
# `appendOverlays` with a singleton is identical to `extend`.
let pkgs = haskellNix.legacyPackages.${system}.appendOverlays [android26]; in
let drv' = { extra-modules, pkgs', ... }: pkgs'.haskell-nix.project {
compiler-nix-name = "ghc8107";
compiler-nix-name = "ghc963";
index-state = "2023-12-12T00:00:00Z";
# We need this, to specify we want the cabal project.
# If the stack.yaml was dropped, this would not be necessary.
@@ -40,9 +40,12 @@
src = ./.;
};
sha256map = import ./scripts/nix/sha256map.nix;
modules = [{
modules = [
({ pkgs, lib, ...}: lib.mkIf (!pkgs.stdenv.hostPlatform.isWindows) {
# This patch adds `dl` as an extra-library to direct-sqlciper, which is needed
# on pretty much all unix platforms, but then blows up on windows m(
packages.direct-sqlcipher.patches = [ ./scripts/nix/direct-sqlcipher-2.3.27.patch ];
}
})
({ pkgs,lib, ... }: lib.mkIf (pkgs.stdenv.hostPlatform.isAndroid) {
packages.simplex-chat.components.library.ghcOptions = [ "-pie" ];
})] ++ extra-modules;
@@ -64,6 +67,9 @@
}); in
let iosPostInstall = bundleName: ''
${pkgs.tree}/bin/tree $out
mkdir tmp
find ./dist -name "libHS*-ghc*.a" -exec cp {} tmp \;
(cd tmp; ${pkgs.tree}/bin/tree .; ar x libHS*.a; for o in *.o; do if /usr/bin/otool -xv $o|grep ldadd ; then echo $o; fi; done; cd ..; rm -fR tmp)
mkdir -p $out/_pkg
# copy over includes, we might want those, but maybe not.
# cp -r $out/lib/*/*/include $out/_pkg/
@@ -74,6 +80,18 @@
find ${pkgs.gmp6.override { withStatic = true; }}/lib -name "*.a" -exec cp {} $out/_pkg \;
# There is no static libc
${pkgs.tree}/bin/tree $out/_pkg
for pkg in $out/_pkg/*.a; do
chmod +w $pkg
${mac2ios.packages.${system}.mac2ios}/bin/mac2ios $pkg
chmod -w $pkg
done
mkdir tmp
find $out/_pkg -name "libHS*-ghc*.a" -exec cp {} tmp \;
(cd tmp; ${pkgs.tree}/bin/tree .; ar x libHS*.a; for o in *.o; do if /usr/bin/otool -xv $o|grep ldadd ; then echo $o; fi; done; cd ..; rm -fR tmp)
sha256sum $out/_pkg/*.a
(cd $out/_pkg; ${pkgs.zip}/bin/zip -r -9 $out/${bundleName}.zip *)
rm -fR $out/_pkg
mkdir -p $out/nix-support
@@ -119,13 +137,150 @@
hardeningDisable = [ "fortify" ];
}
);in {
# STATIC x86_64-linux
"${pkgs.pkgsCross.musl64.hostPlatform.system}-static:exe:simplex-chat" = (drv pkgs.pkgsCross.musl64).simplex-chat.components.exes.simplex-chat;
"${pkgs.pkgsCross.musl32.hostPlatform.system}-static:exe:simplex-chat" = (drv pkgs.pkgsCross.musl32).simplex-chat.components.exes.simplex-chat;
# STATIC i686-linux
"${pkgs.pkgsCross.musl32.hostPlatform.system}-static:exe:simplex-chat" = (drv' {
pkgs' = pkgs.pkgsCross.musl32;
extra-modules = [{
# 32 bit patches
packages.basement.patches = [
./scripts/nix/basement-pr-573.patch
];
packages.memory.patches = [
./scripts/nix/memory-pr-99.patch
];
}];
}).simplex-chat.components.exes.simplex-chat;
# WINDOWS x86_64-mingwW64
"${pkgs.pkgsCross.mingwW64.hostPlatform.system}:exe:simplex-chat" = (drv' {
pkgs' = pkgs.pkgsCross.mingwW64;
extra-modules = [{
packages.direct-sqlcipher.flags.openssl = true;
packages.bitvec.flags.simd = false;
packages.direct-sqlcipher.patches = [
./scripts/nix/direct-sqlcipher-2.3.27-win.patch
];
packages.direct-sqlcipher.components.library.libs = pkgs.lib.mkForce [
(pkgs.pkgsCross.mingwW64.openssl) #.override) # { static = true; enableKTLS = false; })
];
packages.simplexmq.components.library.libs = pkgs.lib.mkForce [
(pkgs.pkgsCross.mingwW64.openssl) #.override) # { static = true; enableKTLS = false; })
];
packages.unix-time.postPatch = ''
sed -i 's/mingwex//g' unix-time.cabal
'';
}];
}).simplex-chat.components.exes.simplex-chat.override {
postInstall = ''
set -x
${pkgs.tree}/bin/tree $out
mkdir -p $out/_pkg
cp $out/bin/* $out/_pkg
${pkgs.tree}/bin/tree $out/_pkg
(cd $out/_pkg; ${pkgs.zip}/bin/zip -r -9 $out/${pkgs.pkgsCross.mingwW64.hostPlatform.system}-simplex-chat.zip *)
rm -fR $out/_pkg
mkdir -p $out/nix-support
echo "file binary-dist \"$(echo $out/*.zip)\"" \
> $out/nix-support/hydra-build-products
'';
};
"${pkgs.pkgsCross.mingwW64.hostPlatform.system}:lib:simplex-chat" = (drv' rec {
pkgs' = pkgs.pkgsCross.mingwW64;
extra-modules = [{
packages.direct-sqlcipher.flags.openssl = true;
# simd will try to read __cpu_model, which we don't expose
# from the rts (yet!).
packages.bitvec.flags.simd = false;
packages.direct-sqlcipher.patches = [
./scripts/nix/direct-sqlcipher-2.3.27-win.patch
];
packages.direct-sqlcipher.components.library.libs = pkgs.lib.mkForce [
pkgs.pkgsCross.mingwW64.openssl
];
packages.simplexmq.flags.client_library = true;
packages.simplexmq.components.library.libs = pkgs.lib.mkForce [
pkgs.pkgsCross.mingwW64.openssl
];
packages.unix-time.postPatch = ''
sed -i 's/mingwex//g' unix-time.cabal
'';
}];
}).simplex-chat.components.library
.override (p: {
# enableShared = false;
setupBuildFlags = p.component.setupBuildFlags ++ map (x: "--ghc-option=${x}") [
"-shared"
"-threaded"
"-o" "libsimplex.dll"
# "-optl-lHSrts_thr"
"-optl-lffi"
# "-optl-static-libgcc"
# We can't do -optl-static-libstdc++ with gcc. g++ might
# but then we are chaning the compiler altogether.
"${./libsimplex.dll.def}"
];
postInstall = ''
set -x
function deps() {
${pkgs.binutils}/bin/strings "$1" | grep '.\.dll'|grep -v -E 'Winsock|ADVAPI32|dbghelp|KERNEL32|msvcrt|ntdll|ole32|RPCRT4|SHELL32|USER32|WINMM|WS2_32|kernel32|GDI32'|grep -v "$1"
}
${pkgs.tree}/bin/tree $out
mkdir -p $out/_pkg
cp libsimplex.dll $out/_pkg
cp libsimplex.dll.a $out/_pkg
mkdir $out/libs
find ${pkgs.lib.getBin pkgs.pkgsCross.mingwW64.openssl} -name "*.dll" -exec cp {} $out/libs \;
find ${pkgs.lib.getBin pkgs.pkgsCross.mingwW64.libffi} -name "*.dll" -exec cp {} $out/libs \;
find ${pkgs.lib.getBin pkgs.pkgsCross.mingwW64.gmp} -name "*.dll" -exec cp {} $out/libs \;
find ${pkgs.lib.getBin pkgs.pkgsCross.mingwW64.stdenv.cc.cc} -name "*.dll" -exec cp {} $out/libs \;
find ${pkgs.lib.getBin pkgs.pkgsCross.mingwW64.windows.mcfgthreads} -name "*.dll" -exec cp {} $out/libs \;
pushd $out/_pkg
function copyDeps() {
for dep in $(deps "$1"); do
if [ ! -f "$dep" ]; then
if [ ! -f ../libs/"$dep" ]; then
echo "WARN: $1 -> $dep not found!"
else
cp ../libs/"$dep" .
copyDeps "$dep"
fi
fi
done
}
copyDeps libsimplex.dll
popd
${pkgs.tree}/bin/tree $out/_pkg
(cd $out/_pkg; ${pkgs.zip}/bin/zip -r -9 $out/pkg-${pkgs.pkgsCross.mingwW64.hostPlatform.system}-libsimplex.zip *)
rm -fR $out/_pkg
mkdir -p $out/nix-support
echo "file binary-dist \"$(echo $out/*.zip)\"" \
> $out/nix-support/hydra-build-products
'';
});
# "${pkgs.pkgsCross.muslpi.hostPlatform.system}-static:exe:simplex-chat" = (drv pkgs.pkgsCross.muslpi).simplex-chat.components.exes.simplex-chat;
# STATIC aarch64-linux
"${pkgs.pkgsCross.aarch64-multiplatform-musl.hostPlatform.system}-static:exe:simplex-chat" = (drv pkgs.pkgsCross.aarch64-multiplatform-musl).simplex-chat.components.exes.simplex-chat;
"armv7a-android:lib:support" = (drv android32Pkgs).android-support.components.library.override {
smallAddressSpace = true; enableShared = false;
setupBuildFlags = map (x: "--ghc-option=${x}") [ "-shared" "-o" "libsupport.so" ];
"armv7a-android:lib:support" = (drv android32Pkgs).android-support.components.library.override (p: {
smallAddressSpace = true;
# we won't want -dyamic (see aarch64-android:lib:simplex-chat)
enableShared = false;
# we also do not want to have any dependencies listed (especially no rts!)
enableStatic = false;
# This used to work with 8.10.7...
# setupBuildFlags = p.component.setupBuildFlags ++ map (x: "--ghc-option=${x}") [ "-shared" "-o" "libsupport.so" ];
# ... but now with 9.6+
# we have to do the -shared thing by hand.
postBuild = ''
armv7a-unknown-linux-androideabi-ghc -shared -o libsupport.so \
-optl-Wl,-u,setLineBuffering \
-optl-Wl,-u,pipe_std_to_socket \
dist/build/*.a
'';
postInstall = ''
mkdir -p $out/_pkg
@@ -138,14 +293,29 @@
echo "file binary-dist \"$(echo $out/*.zip)\"" \
> $out/nix-support/hydra-build-products
'';
};
"aarch64-android:lib:support" = (drv androidPkgs).android-support.components.library.override {
smallAddressSpace = true; enableShared = false;
setupBuildFlags = map (x: "--ghc-option=${x}") [ "-shared" "-o" "libsupport.so" ];
});
# The android-support package is at
# https://github.com/simplex-chat/android-support
"aarch64-android:lib:support" = (drv androidPkgs).android-support.components.library.override (p: {
smallAddressSpace = true;
# no -dynamic
enableShared = false;
# but also no -staticlib
enableStatic = false;
# we have to do the -shared thing by hand.
postBuild = ''
aarch64-unknown-linux-android-ghc -shared -o libsupport.so \
-optl-Wl,-u,setLineBuffering \
-optl-Wl,-u,pipe_std_to_socket \
dist/build/*.a
'';
postInstall = ''
mkdir -p $out/_pkg
cp libsupport.so $out/_pkg
ls -lah $out/_pkg/*
${pkgs.patchelf}/bin/patchelf --remove-needed libunwind.so.1 $out/_pkg/libsupport.so
(cd $out/_pkg; ${pkgs.zip}/bin/zip -r -9 $out/pkg-aarch64-android-libsupport.zip *)
rm -fR $out/_pkg
@@ -154,10 +324,11 @@
echo "file binary-dist \"$(echo $out/*.zip)\"" \
> $out/nix-support/hydra-build-products
'';
};
});
"armv7a-android:lib:simplex-chat" = (drv' {
pkgs' = android32Pkgs;
extra-modules = [{
packages.text.flags.simdutf = false;
packages.direct-sqlcipher.flags.openssl = true;
packages.direct-sqlcipher.components.library.libs = pkgs.lib.mkForce [
(android32Pkgs.openssl.override { static = true; enableKTLS = false; })
@@ -169,13 +340,56 @@
packages.simplexmq.components.library.libs = pkgs.lib.mkForce [
(android32Pkgs.openssl.override { static = true; enableKTLS = false; })
];
# 32 bit patches
packages.basement.patches = [
./scripts/nix/basement-pr-573.patch
];
packages.memory.patches = [
./scripts/nix/memory-pr-99.patch
];
}];
}).simplex-chat.components.library.override {
smallAddressSpace = true; enableShared = false;
}).simplex-chat.components.library.override (p: {
smallAddressSpace = true;
# we want -shared, but not -dyanmic, hence `enableShared = false`.
enableShared = false;
# we _do_ want rts, and other libs. Hence `enableStatic = true`.
enableStatic = true;
# for android we build a shared library, passing these arguments is a bit tricky, as
# we want only the threaded rts (HSrts_thr) and ffi to be linked, but not fed into iserv for
# template haskell cross compilation. Thus we just pass them as linker options (-optl).
setupBuildFlags = map (x: "--ghc-option=${x}") [ "-shared" "-o" "libsimplex.so" "-optl-lHSrts_thr" "-optl-lffi"];
setupBuildFlags = p.component.setupBuildFlags
# flags to tell GHC we want to produce a -shared object, and we want to also link
# - the ffi library (ffi)
++ map (x: "--ghc-option=${x}") [
"-shared" "-o" "libsimplex.so"
"-threaded"
# "-debug"
"-optl-lffi"
]
# This is fairly idiotic. LLD will strip out foreign exported
# symbols (a GHC bug? Codegen bug?). So we need to pass `-u <sym>`
# to ensure they stay in the produced library. Having them
# _undefined_ and _lazy_ (lld will tell with -y <sym> that the
# symbol is lazy), makes them _defined_. m(
++ map (sym: "--ghc-option=-optl-Wl,-u,${sym}") [
"chat_close_store"
"chat_decrypt_file"
"chat_decrypt_media"
"chat_encrypt_file"
"chat_encrypt_media"
"chat_migrate_init"
"chat_parse_markdown"
"chat_parse_server"
"chat_password_hash"
"chat_read_file"
"chat_recv_msg"
"chat_recv_msg_wait"
"chat_send_cmd"
"chat_send_remote_cmd"
"chat_valid_name"
"chat_json_length"
"chat_write_file"
];
postInstall = ''
set -x
${pkgs.tree}/bin/tree $out
@@ -219,10 +433,11 @@
echo "file binary-dist \"$(echo $out/*.zip)\"" \
> $out/nix-support/hydra-build-products
'';
};
});
"aarch64-android:lib:simplex-chat" = (drv' {
pkgs' = androidPkgs;
extra-modules = [{
packages.text.flags.simdutf = false;
packages.direct-sqlcipher.flags.openssl = true;
packages.direct-sqlcipher.components.library.libs = pkgs.lib.mkForce [
(androidPkgs.openssl.override { static = true; })
@@ -235,12 +450,50 @@
(androidPkgs.openssl.override { static = true; })
];
}];
}).simplex-chat.components.library.override {
smallAddressSpace = true; enableShared = false;
}).simplex-chat.components.library.override (p: {
smallAddressSpace = true;
# we do not want a dynamically linked object, even though we _do_
# want to produce a _shared_ object. But `shared` implied -dyanmic
# with cabal, so we disable and pass `-shared` explicitly.
enableShared = false;
# we do want static (e.g. pass all dependencies in, so we get -staticlib)
enableStatic = true;
# for android we build a shared library, passing these arguments is a bit tricky, as
# we want only the threaded rts (HSrts_thr) and ffi to be linked, but not fed into iserv for
# template haskell cross compilation. Thus we just pass them as linker options (-optl).
setupBuildFlags = map (x: "--ghc-option=${x}") [ "-shared" "-o" "libsimplex.so" "-optl-lHSrts_thr" "-optl-lffi"];
setupBuildFlags = p.component.setupBuildFlags
# flags to tell GHC we want to produce a -shared object, and we want to also link
# - the ffi library (ffi)
++ map (x: "--ghc-option=${x}") [
"-shared" "-o" "libsimplex.so"
"-threaded"
# "-debug"
"-optl-lffi"
]
# This is fairly idiotic. LLD will strip out foreign exported
# symbols (a GHC bug? Codegen bug?). So we need to pass `-u <sym>`
# to ensure they stay in the produced library. Having them
# _undefined_ and _lazy_ (lld will tell with -y <sym> that the
# symbol is lazy), makes them _defined_. m(
++ map (sym: "--ghc-option=-optl-Wl,-u,${sym}") [
"chat_close_store"
"chat_decrypt_file"
"chat_decrypt_media"
"chat_encrypt_file"
"chat_encrypt_media"
"chat_migrate_init"
"chat_parse_markdown"
"chat_parse_server"
"chat_password_hash"
"chat_read_file"
"chat_recv_msg"
"chat_recv_msg_wait"
"chat_send_cmd"
"chat_send_remote_cmd"
"chat_valid_name"
"chat_json_length"
"chat_write_file"
];
postInstall = ''
set -x
${pkgs.tree}/bin/tree $out
@@ -284,7 +537,7 @@
echo "file binary-dist \"$(echo $out/*.zip)\"" \
> $out/nix-support/hydra-build-products
'';
};
});
};
# builds for iOS and iOS simulator
@@ -299,7 +552,8 @@
packages.entropy.flags.DoNotGetEntropy = true;
packages.simplexmq.flags.client_library = true;
packages.simplexmq.components.library.libs = pkgs.lib.mkForce [
(pkgs.openssl.override { static = true; })
# TODO: have a cross override for iOS, that sets this.
((pkgs.openssl.override { static = true; }).overrideDerivation (old: { CFLAGS = "-mcpu=apple-a7 -march=armv8-a+norcpc" ;}))
];
}];
}).simplex-chat.components.library.override (
+1 -4
View File
@@ -1,5 +1,5 @@
name: simplex-chat
version: 6.2.0.5
version: 6.2.0.6
#synopsis:
#description:
homepage: https://github.com/simplex-chat/simplex-chat#readme
@@ -181,6 +181,3 @@ ghc-options:
- -Wredundant-constraints
- -Wincomplete-record-updates
- -Wunused-type-patterns
default-extensions:
- StrictData
@@ -2,7 +2,7 @@
set -e
trap "rm apps/multiplatform/local.properties || true; rm local.properties || true; rm /tmp/simplex.keychain || true" EXIT
trap "rm apps/multiplatform/local.properties 2> /dev/null || true; rm local.properties 2> /dev/null || true; rm /tmp/simplex.keychain" EXIT
echo "desktop.mac.signing.identity=Developer ID Application: SimpleX Chat Ltd (5NN7GUYB6T)" >> apps/multiplatform/local.properties
echo "desktop.mac.signing.keychain=/tmp/simplex.keychain" >> apps/multiplatform/local.properties
echo "desktop.mac.notarization.apple_id=$APPLE_SIMPLEX_NOTARIZATION_APPLE_ID" >> apps/multiplatform/local.properties
@@ -10,6 +10,10 @@ echo "desktop.mac.notarization.password=$APPLE_SIMPLEX_NOTARIZATION_PASSWORD" >>
echo "desktop.mac.notarization.team_id=5NN7GUYB6T" >> apps/multiplatform/local.properties
echo "$APPLE_SIMPLEX_SIGNING_KEYCHAIN" | base64 --decode -o /tmp/simplex.keychain
security unlock-keychain -p "" /tmp/simplex.keychain
# Adding keychain to the list of keychains.
# Otherwise, it can find cert but exits while signing with "error: The specified item could not be found in the keychain."
security list-keychains -s `security list-keychains | xargs` /tmp/simplex.keychain
scripts/desktop/build-lib-mac.sh
cd apps/multiplatform
./gradlew packageDmg
+10
View File
@@ -0,0 +1,10 @@
#!/bin/bash
security create-keychain -p "" simplex.keychain
security set-keychain-settings -u simplex.keychain
security add-certificates -k simplex.keychain "Developer ID Application: SimpleX Chat Ltd (5NN7GUYB6T).cer"
security add-certificates -k simplex.keychain "Developer ID Certification Authority.cer"
# Private key with access from any app
security import "SimpleX Chat.p12" -P "" -k simplex.keychain -A
# Public key
security import "SimpleX Chat.pem" -k simplex.keychain
+2 -2
View File
@@ -8,7 +8,7 @@ function readlink() {
OS=linux
ARCH=${1:-`uname -a | rev | cut -d' ' -f2 | rev`}
GHC_VERSION=8.10.7
GHC_VERSION=9.6.3
if [ "$ARCH" == "aarch64" ]; then
COMPOSE_ARCH=arm64
@@ -25,7 +25,7 @@ for elem in "${exports[@]}"; do count=$(grep -R "$elem$" libsimplex.dll.def | wc
for elem in "${exports[@]}"; do count=$(grep -R "\"$elem\"" flake.nix | wc -l); if [ $count -ne 2 ]; then echo Wrong exports in flake.nix. Add \"$elem\" in two places of the file; exit 1; fi ; done
rm -rf $BUILD_DIR
cabal build lib:simplex-chat --ghc-options='-optl-Wl,-rpath,$ORIGIN' --ghc-options="-optl-L$(ghc --print-libdir)/rts -optl-Wl,--as-needed,-lHSrts_thr-ghc$GHC_VERSION" --constraint 'simplexmq +client_library'
cabal build lib:simplex-chat --ghc-options='-optl-Wl,-rpath,$ORIGIN -flink-rts -threaded' --constraint 'simplexmq +client_library'
cd $BUILD_DIR/build
#patchelf --add-needed libHSrts_thr-ghc${GHC_VERSION}.so libHSsimplex-chat-*-inplace-ghc${GHC_VERSION}.so
#patchelf --add-rpath '$ORIGIN' libHSsimplex-chat-*-inplace-ghc${GHC_VERSION}.so
+19 -3
View File
@@ -5,13 +5,14 @@ set -e
OS=mac
ARCH="${1:-`uname -a | rev | cut -d' ' -f1 | rev`}"
COMPOSE_ARCH=$ARCH
GHC_VERSION=8.10.7
GHC_VERSION=9.6.3
if [ "$ARCH" == "arm64" ]; then
ARCH=aarch64
else
COMPOSE_ARCH=x64
fi
LIB_EXT=dylib
LIB=libHSsimplex-chat-*-inplace-ghc*.$LIB_EXT
GHC_LIBS_DIR=$(ghc --print-libdir)
@@ -23,13 +24,26 @@ for elem in "${exports[@]}"; do count=$(grep -R "$elem$" libsimplex.dll.def | wc
for elem in "${exports[@]}"; do count=$(grep -R "\"$elem\"" flake.nix | wc -l); if [ $count -ne 2 ]; then echo Wrong exports in flake.nix. Add \"$elem\" in two places of the file; exit 1; fi ; done
rm -rf $BUILD_DIR
cabal build lib:simplex-chat lib:simplex-chat --ghc-options="-optl-Wl,-rpath,@loader_path -optl-Wl,-L$GHC_LIBS_DIR/rts -optl-lHSrts_thr-ghc8.10.7 -optl-lffi" --constraint 'simplexmq +client_library'
cabal build lib:simplex-chat lib:simplex-chat --ghc-options="-optl-Wl,-rpath,@loader_path -optl-Wl,-L$GHC_LIBS_DIR/$ARCH-osx-ghc-$GHC_VERSION -optl-lHSrts_thr-ghc$GHC_VERSION -optl-lffi" --constraint 'simplexmq +client_library'
cd $BUILD_DIR/build
mkdir deps 2> /dev/null || true
# It's not included by default for some reason. Compiled lib tries to find system one but it's not always available
cp $GHC_LIBS_DIR/rts/libffi.dylib ./deps
#cp $GHC_LIBS_DIR/libffi.dylib ./deps
(
BUILD=$PWD
cp /tmp/libffi-3.4.4/*-apple-darwin*/.libs/libffi.dylib $BUILD/deps || \
( \
cd /tmp && \
curl --tlsv1.2 "https://gitlab.haskell.org/ghc/libffi-tarballs/-/raw/libffi-3.4.4/libffi-3.4.4.tar.gz?inline=false" -o libffi.tar.gz && \
tar -xzvf libffi.tar.gz && \
cd "libffi-3.4.4" && \
./configure && \
make && \
cp *-apple-darwin*/.libs/libffi.dylib $BUILD/deps \
)
)
DYLIBS=`otool -L $LIB | grep @rpath | tail -n +2 | cut -d' ' -f 1 | cut -d'/' -f2`
RPATHS=`otool -l $LIB | grep "path "| cut -d' ' -f11`
@@ -70,6 +84,8 @@ function copy_deps() {
}
copy_deps $LIB
# Special case
cp $(ghc --print-libdir)/$ARCH-osx-ghc-$GHC_VERSION/libHSghc-boot-th-$GHC_VERSION-ghc$GHC_VERSION.dylib deps
rm deps/`basename $LIB`
cd -
+242
View File
@@ -0,0 +1,242 @@
From 38be2c93acb6f459d24ed6c626981c35ccf44095 Mon Sep 17 00:00:00 2001
From: Sylvain Henry <sylvain@haskus.fr>
Date: Thu, 16 Feb 2023 15:40:45 +0100
Subject: [PATCH] Fix build on 32-bit architectures
---
Basement/Bits.hs | 4 ++++
Basement/From.hs | 24 -----------------------
Basement/Numerical/Additive.hs | 4 ++++
Basement/Numerical/Conversion.hs | 20 +++++++++++++++++++
Basement/PrimType.hs | 6 +++++-
Basement/Types/OffsetSize.hs | 22 +++++++++++++++++++--
6 files changed, 53 insertions(+), 27 deletions(-)
diff --git a/Basement/Bits.hs b/Basement/Bits.hs
index 7eeea0f5..24520ed7 100644
--- a/Basement/Bits.hs
+++ b/Basement/Bits.hs
@@ -54,8 +54,12 @@ import GHC.Int
import Basement.Compat.Primitive
#if WORD_SIZE_IN_BITS < 64
+#if __GLASGOW_HASKELL__ >= 904
+import GHC.Exts
+#else
import GHC.IntWord64
#endif
+#endif
-- | operation over finite bits
class FiniteBitsOps bits where
diff --git a/Basement/From.hs b/Basement/From.hs
index 7bbe141c..80014b3e 100644
--- a/Basement/From.hs
+++ b/Basement/From.hs
@@ -272,23 +272,11 @@ instance (NatWithinBound (CountOf ty) n, KnownNat n, PrimType ty)
tryFrom = BlockN.toBlockN . UArray.toBlock . BoxArray.mapToUnboxed id
instance (KnownNat n, NatWithinBound Word8 n) => From (Zn64 n) Word8 where
-#if __GLASGOW_HASKELL__ >= 904
- from = narrow . unZn64 where narrow (W64# w) = W8# (wordToWord8# (word64ToWord# (GHC.Prim.word64ToWord# w)))
-#else
from = narrow . unZn64 where narrow (W64# w) = W8# (wordToWord8# (word64ToWord# w))
-#endif
instance (KnownNat n, NatWithinBound Word16 n) => From (Zn64 n) Word16 where
-#if __GLASGOW_HASKELL__ >= 904
- from = narrow . unZn64 where narrow (W64# w) = W16# (wordToWord16# (word64ToWord# (GHC.Prim.word64ToWord# w)))
-#else
from = narrow . unZn64 where narrow (W64# w) = W16# (wordToWord16# (word64ToWord# w))
-#endif
instance (KnownNat n, NatWithinBound Word32 n) => From (Zn64 n) Word32 where
-#if __GLASGOW_HASKELL__ >= 904
- from = narrow . unZn64 where narrow (W64# w) = W32# (wordToWord32# (word64ToWord# (GHC.Prim.word64ToWord# w)))
-#else
from = narrow . unZn64 where narrow (W64# w) = W32# (wordToWord32# (word64ToWord# w))
-#endif
instance From (Zn64 n) Word64 where
from = unZn64
instance From (Zn64 n) Word128 where
@@ -297,23 +285,11 @@ instance From (Zn64 n) Word256 where
from = from . unZn64
instance (KnownNat n, NatWithinBound Word8 n) => From (Zn n) Word8 where
-#if __GLASGOW_HASKELL__ >= 904
- from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W8# (wordToWord8# (word64ToWord# (GHC.Prim.word64ToWord# w)))
-#else
from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W8# (wordToWord8# (word64ToWord# w))
-#endif
instance (KnownNat n, NatWithinBound Word16 n) => From (Zn n) Word16 where
-#if __GLASGOW_HASKELL__ >= 904
- from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W16# (wordToWord16# (word64ToWord# (GHC.Prim.word64ToWord# w)))
-#else
from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W16# (wordToWord16# (word64ToWord# w))
-#endif
instance (KnownNat n, NatWithinBound Word32 n) => From (Zn n) Word32 where
-#if __GLASGOW_HASKELL__ >= 904
- from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W32# (wordToWord32# (word64ToWord# (GHC.Prim.word64ToWord# w)))
-#else
from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W32# (wordToWord32# (word64ToWord# w))
-#endif
instance (KnownNat n, NatWithinBound Word64 n) => From (Zn n) Word64 where
from = naturalToWord64 . unZn
instance (KnownNat n, NatWithinBound Word128 n) => From (Zn n) Word128 where
diff --git a/Basement/Numerical/Additive.hs b/Basement/Numerical/Additive.hs
index d0dfb973..8ab65aa0 100644
--- a/Basement/Numerical/Additive.hs
+++ b/Basement/Numerical/Additive.hs
@@ -30,8 +30,12 @@ import qualified Basement.Types.Word128 as Word128
import qualified Basement.Types.Word256 as Word256
#if WORD_SIZE_IN_BITS < 64
+#if __GLASGOW_HASKELL__ >= 904
+import GHC.Exts
+#else
import GHC.IntWord64
#endif
+#endif
-- | Represent class of things that can be added together,
-- contains a neutral element and is commutative.
diff --git a/Basement/Numerical/Conversion.hs b/Basement/Numerical/Conversion.hs
index db502c07..fddc8232 100644
--- a/Basement/Numerical/Conversion.hs
+++ b/Basement/Numerical/Conversion.hs
@@ -26,8 +26,12 @@ import GHC.Word
import Basement.Compat.Primitive
#if WORD_SIZE_IN_BITS < 64
+#if __GLASGOW_HASKELL__ >= 904
+import GHC.Exts
+#else
import GHC.IntWord64
#endif
+#endif
intToInt64 :: Int -> Int64
#if WORD_SIZE_IN_BITS == 64
@@ -96,11 +100,22 @@ int64ToWord64 (I64# i) = W64# (int64ToWord64# i)
#endif
#if WORD_SIZE_IN_BITS == 64
+#if __GLASGOW_HASKELL__ >= 904
+word64ToWord# :: Word64# -> Word#
+word64ToWord# i = word64ToWord# i
+#else
word64ToWord# :: Word# -> Word#
word64ToWord# i = i
+#endif
{-# INLINE word64ToWord# #-}
#endif
+#if WORD_SIZE_IN_BITS < 64
+word64ToWord32# :: Word64# -> Word32#
+word64ToWord32# i = wordToWord32# (word64ToWord# i)
+{-# INLINE word64ToWord32# #-}
+#endif
+
-- | 2 Word32s
data Word32x2 = Word32x2 {-# UNPACK #-} !Word32
{-# UNPACK #-} !Word32
@@ -113,9 +128,14 @@ word64ToWord32s (W64# w64) = Word32x2 (W32# (wordToWord32# (uncheckedShiftRL# (G
word64ToWord32s (W64# w64) = Word32x2 (W32# (wordToWord32# (uncheckedShiftRL# w64 32#))) (W32# (wordToWord32# w64))
#endif
#else
+#if __GLASGOW_HASKELL__ >= 904
+word64ToWord32s :: Word64 -> Word32x2
+word64ToWord32s (W64# w64) = Word32x2 (W32# (word64ToWord32# (uncheckedShiftRL64# w64 32#))) (W32# (word64ToWord32# w64))
+#else
word64ToWord32s :: Word64 -> Word32x2
word64ToWord32s (W64# w64) = Word32x2 (W32# (word64ToWord# (uncheckedShiftRL64# w64 32#))) (W32# (word64ToWord# w64))
#endif
+#endif
wordToChar :: Word -> Char
wordToChar (W# word) = C# (chr# (word2Int# word))
diff --git a/Basement/PrimType.hs b/Basement/PrimType.hs
index f8ca2926..a888ec91 100644
--- a/Basement/PrimType.hs
+++ b/Basement/PrimType.hs
@@ -54,7 +54,11 @@ import Basement.Nat
import qualified Prelude (quot)
#if WORD_SIZE_IN_BITS < 64
-import GHC.IntWord64
+#if __GLASGOW_HASKELL__ >= 904
+import GHC.Exts
+#else
+import GHC.IntWord64
+#endif
#endif
#ifdef FOUNDATION_BOUNDS_CHECK
diff --git a/Basement/Types/OffsetSize.hs b/Basement/Types/OffsetSize.hs
index cd944927..1ea80dad 100644
--- a/Basement/Types/OffsetSize.hs
+++ b/Basement/Types/OffsetSize.hs
@@ -70,8 +70,12 @@ import Data.List (foldl')
import qualified Prelude
#if WORD_SIZE_IN_BITS < 64
+#if __GLASGOW_HASKELL__ >= 904
+import GHC.Exts
+#else
import GHC.IntWord64
#endif
+#endif
-- | File size in bytes
newtype FileSize = FileSize Word64
@@ -225,20 +229,26 @@ countOfRoundUp alignment (CountOf n) = CountOf ((n + (alignment-1)) .&. compleme
csizeOfSize :: CountOf Word8 -> CSize
#if WORD_SIZE_IN_BITS < 64
+#if __GLASGOW_HASKELL__ >= 904
+csizeOfSize (CountOf (I# sz)) = CSize (W32# (wordToWord32# (int2Word# sz)))
+#else
csizeOfSize (CountOf (I# sz)) = CSize (W32# (int2Word# sz))
+#endif
#else
#if __GLASGOW_HASKELL__ >= 904
csizeOfSize (CountOf (I# sz)) = CSize (W64# (wordToWord64# (int2Word# sz)))
-
#else
csizeOfSize (CountOf (I# sz)) = CSize (W64# (int2Word# sz))
-
#endif
#endif
csizeOfOffset :: Offset8 -> CSize
#if WORD_SIZE_IN_BITS < 64
+#if __GLASGOW_HASKELL__ >= 904
+csizeOfOffset (Offset (I# sz)) = CSize (W32# (wordToWord32# (int2Word# sz)))
+#else
csizeOfOffset (Offset (I# sz)) = CSize (W32# (int2Word# sz))
+#endif
#else
#if __GLASGOW_HASKELL__ >= 904
csizeOfOffset (Offset (I# sz)) = CSize (W64# (wordToWord64# (int2Word# sz)))
@@ -250,7 +260,11 @@ csizeOfOffset (Offset (I# sz)) = CSize (W64# (int2Word# sz))
sizeOfCSSize :: CSsize -> CountOf Word8
sizeOfCSSize (CSsize (-1)) = error "invalid size: CSSize is -1"
#if WORD_SIZE_IN_BITS < 64
+#if __GLASGOW_HASKELL__ >= 904
+sizeOfCSSize (CSsize (I32# sz)) = CountOf (I# (int32ToInt# sz))
+#else
sizeOfCSSize (CSsize (I32# sz)) = CountOf (I# sz)
+#endif
#else
#if __GLASGOW_HASKELL__ >= 904
sizeOfCSSize (CSsize (I64# sz)) = CountOf (I# (int64ToInt# sz))
@@ -261,7 +275,11 @@ sizeOfCSSize (CSsize (I64# sz)) = CountOf (I# sz)
sizeOfCSize :: CSize -> CountOf Word8
#if WORD_SIZE_IN_BITS < 64
+#if __GLASGOW_HASKELL__ >= 904
+sizeOfCSize (CSize (W32# sz)) = CountOf (I# (word2Int# (word32ToWord# sz)))
+#else
sizeOfCSize (CSize (W32# sz)) = CountOf (I# (word2Int# sz))
+#endif
#else
#if __GLASGOW_HASKELL__ >= 904
sizeOfCSize (CSize (W64# sz)) = CountOf (I# (word2Int# (word64ToWord# sz)))
@@ -0,0 +1,12 @@
diff --git a/direct-sqlcipher.cabal b/direct-sqlcipher.cabal
index 728ba3e..c63745e 100644
--- a/direct-sqlcipher.cabal
+++ b/direct-sqlcipher.cabal
@@ -84,6 +84,8 @@ library
cc-options: -DSQLITE_TEMP_STORE=2
-DSQLITE_HAS_CODEC
+ extra-libraries: ws2_32
+
if !os(windows) && !os(android)
extra-libraries: pthread
+36
View File
@@ -0,0 +1,36 @@
From 2738929ce15b4c8704bbbac24a08539b5d4bf30e Mon Sep 17 00:00:00 2001
From: sternenseemann <sternenseemann@systemli.org>
Date: Mon, 14 Aug 2023 10:51:30 +0200
Subject: [PATCH] Data.Memory.Internal.CompatPrim64: fix 32 bit with GHC >= 9.4
Since 9.4, GHC.Prim exports Word64# operations like timesWord64# even on
i686 whereas GHC.IntWord64 no longer exists. Therefore, we can just use
the ready made solution.
Closes #98, as it should be the better solution.
---
Data/Memory/Internal/CompatPrim64.hs | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/Data/Memory/Internal/CompatPrim64.hs b/Data/Memory/Internal/CompatPrim64.hs
index b9eef8a..a134c88 100644
--- a/Data/Memory/Internal/CompatPrim64.hs
+++ b/Data/Memory/Internal/CompatPrim64.hs
@@ -150,6 +150,7 @@ w64# :: Word# -> Word# -> Word# -> Word64#
w64# w _ _ = w
#elif WORD_SIZE_IN_BITS == 32
+#if __GLASGOW_HASKELL__ < 904
import GHC.IntWord64
import GHC.Prim (Word#)
@@ -158,6 +159,9 @@ timesWord64# a b =
let !ai = word64ToInt64# a
!bi = word64ToInt64# b
in int64ToWord64# (timesInt64# ai bi)
+#else
+import GHC.Prim
+#endif
w64# :: Word# -> Word# -> Word# -> Word64#
w64# _ hw lw =
+1 -1
View File
@@ -1,5 +1,5 @@
{
"https://github.com/simplex-chat/simplexmq.git"."966b9990e0bf5fdb701f79b6efd722baddd1ee1d" = "0gmycrmyrgy5wbhr3f7qy6hbpppsamfypq7y650dinpbqyrfs9fb";
"https://github.com/simplex-chat/simplexmq.git"."3f177b8c8a91de124dfe871af82bd7433f275efb" = "18lhllv1w6wnvvphpqcib4fa7fqiyqf01swix2afs80mnxjip01v";
"https://github.com/simplex-chat/hs-socks.git"."a30cc7a79a08d8108316094f8f2f82a0c5e1ac51" = "0yasvnr7g91k76mjkamvzab2kvlb1g5pspjyjn2fr6v83swjhj38";
"https://github.com/simplex-chat/direct-sqlcipher.git"."f814ee68b16a9447fbb467ccc8f29bdd3546bfd9" = "1ql13f4kfwkbaq7nygkxgw84213i0zm7c1a8hwvramayxl38dq5d";
"https://github.com/simplex-chat/sqlcipher-simple.git"."a46bd361a19376c5211f1058908fc0ae6bf42446" = "1z0r78d8f0812kxbgsm735qf6xx8lvaz27k1a0b4a2m0sshpd5gl";
+2 -15
View File
@@ -5,7 +5,7 @@ cabal-version: 1.12
-- see: https://github.com/sol/hpack
name: simplex-chat
version: 6.2.0.5
version: 6.2.0.6
category: Web, System, Services, Cryptography
homepage: https://github.com/simplex-chat/simplex-chat#readme
author: simplex.chat
@@ -154,6 +154,7 @@ library
Simplex.Chat.Migrations.M20241027_server_operators
Simplex.Chat.Migrations.M20241125_indexes
Simplex.Chat.Migrations.M20241128_business_chats
Simplex.Chat.Migrations.M20241205_business_chat_members
Simplex.Chat.Mobile
Simplex.Chat.Mobile.File
Simplex.Chat.Mobile.Shared
@@ -200,8 +201,6 @@ library
Paths_simplex_chat
hs-source-dirs:
src
default-extensions:
StrictData
ghc-options: -O2 -Weverything -Wno-missing-exported-signatures -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-local-signatures -Wno-missing-kind-signatures -Wno-missing-deriving-strategies -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -Wno-unused-packages -Wno-implicit-prelude -Wno-missing-safe-haskell-mode -Wno-missing-export-lists -Wno-partial-fields -Wcompat -Werror=incomplete-record-updates -Werror=incomplete-patterns -Werror=missing-methods -Werror=incomplete-uni-patterns -Werror=tabs -Wredundant-constraints -Wincomplete-record-updates -Wunused-type-patterns
build-depends:
aeson ==2.2.*
@@ -265,8 +264,6 @@ executable simplex-bot
Paths_simplex_chat
hs-source-dirs:
apps/simplex-bot
default-extensions:
StrictData
ghc-options: -O2 -Weverything -Wno-missing-exported-signatures -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-local-signatures -Wno-missing-kind-signatures -Wno-missing-deriving-strategies -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -Wno-unused-packages -Wno-implicit-prelude -Wno-missing-safe-haskell-mode -Wno-missing-export-lists -Wno-partial-fields -Wcompat -Werror=incomplete-record-updates -Werror=incomplete-patterns -Werror=missing-methods -Werror=incomplete-uni-patterns -Werror=tabs -Wredundant-constraints -Wincomplete-record-updates -Wunused-type-patterns -threaded
build-depends:
aeson ==2.2.*
@@ -331,8 +328,6 @@ executable simplex-bot-advanced
Paths_simplex_chat
hs-source-dirs:
apps/simplex-bot-advanced
default-extensions:
StrictData
ghc-options: -O2 -Weverything -Wno-missing-exported-signatures -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-local-signatures -Wno-missing-kind-signatures -Wno-missing-deriving-strategies -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -Wno-unused-packages -Wno-implicit-prelude -Wno-missing-safe-haskell-mode -Wno-missing-export-lists -Wno-partial-fields -Wcompat -Werror=incomplete-record-updates -Werror=incomplete-patterns -Werror=missing-methods -Werror=incomplete-uni-patterns -Werror=tabs -Wredundant-constraints -Wincomplete-record-updates -Wunused-type-patterns -threaded
build-depends:
aeson ==2.2.*
@@ -396,8 +391,6 @@ executable simplex-broadcast-bot
hs-source-dirs:
apps/simplex-broadcast-bot
apps/simplex-broadcast-bot/src
default-extensions:
StrictData
other-modules:
Broadcast.Bot
Broadcast.Options
@@ -467,8 +460,6 @@ executable simplex-chat
Paths_simplex_chat
hs-source-dirs:
apps/simplex-chat
default-extensions:
StrictData
ghc-options: -O2 -Weverything -Wno-missing-exported-signatures -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-local-signatures -Wno-missing-kind-signatures -Wno-missing-deriving-strategies -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -Wno-unused-packages -Wno-implicit-prelude -Wno-missing-safe-haskell-mode -Wno-missing-export-lists -Wno-partial-fields -Wcompat -Werror=incomplete-record-updates -Werror=incomplete-patterns -Werror=missing-methods -Werror=incomplete-uni-patterns -Werror=tabs -Wredundant-constraints -Wincomplete-record-updates -Wunused-type-patterns -threaded
build-depends:
aeson ==2.2.*
@@ -533,8 +524,6 @@ executable simplex-directory-service
hs-source-dirs:
apps/simplex-directory-service
apps/simplex-directory-service/src
default-extensions:
StrictData
other-modules:
Directory.Events
Directory.Options
@@ -640,8 +629,6 @@ test-suite simplex-chat-test
tests
apps/simplex-broadcast-bot/src
apps/simplex-directory-service/src
default-extensions:
StrictData
ghc-options: -O2 -Weverything -Wno-missing-exported-signatures -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-local-signatures -Wno-missing-kind-signatures -Wno-missing-deriving-strategies -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -Wno-unused-packages -Wno-implicit-prelude -Wno-missing-safe-haskell-mode -Wno-missing-export-lists -Wno-partial-fields -Wcompat -Werror=incomplete-record-updates -Werror=incomplete-patterns -Werror=missing-methods -Werror=incomplete-uni-patterns -Werror=tabs -Wredundant-constraints -Wincomplete-record-updates -Wunused-type-patterns -threaded
build-depends:
QuickCheck ==2.14.*
+71 -27
View File
@@ -1423,8 +1423,9 @@ processChatCommand' vr = \case
CTContactConnection -> pure $ chatCmdError (Just user) "not supported"
CTContactRequest -> pure $ chatCmdError (Just user) "not supported"
APIAcceptContact incognito connReqId -> withUser $ \_ -> do
(user@User {userId}, cReq@UserContactRequest {userContactLinkId}) <- withFastStore $ \db -> getContactRequest' db connReqId
userContactLinkId <- withFastStore $ \db -> getUserContactLinkIdByCReq db connReqId
withUserContactLock "acceptContact" userContactLinkId $ do
(user@User {userId}, cReq) <- withFastStore $ \db -> getContactRequest' db connReqId
(ct, conn@Connection {connId}, sqSecured) <- acceptContactRequest user cReq incognito
ucl <- withFastStore $ \db -> getUserContactLinkById db userId userContactLinkId
let contactUsed = (\(_, groupId_, _) -> isNothing groupId_) ucl
@@ -1438,11 +1439,12 @@ processChatCommand' vr = \case
pure ct {contactUsed, activeConn = Just conn'}
pure $ CRAcceptingContactRequest user ct'
APIRejectContact connReqId -> withUser $ \user -> do
cReq@UserContactRequest {userContactLinkId, agentContactConnId = AgentConnId connId, agentInvitationId = AgentInvId invId} <-
withFastStore $ \db ->
getContactRequest db user connReqId
`storeFinally` liftIO (deleteContactRequest db user connReqId)
userContactLinkId <- withFastStore $ \db -> getUserContactLinkIdByCReq db connReqId
withUserContactLock "rejectContact" userContactLinkId $ do
cReq@UserContactRequest {agentContactConnId = AgentConnId connId, agentInvitationId = AgentInvId invId} <-
withFastStore $ \db ->
getContactRequest db user connReqId
`storeFinally` liftIO (deleteContactRequest db user connReqId)
withAgent $ \a -> rejectContact a connId invId
pure $ CRContactRequestRejected user cReq
APISendCallInvitation contactId callType -> withUser $ \user -> do
@@ -2870,19 +2872,27 @@ processChatCommand' vr = \case
updateProfile_ user@User {profile = p@LocalProfile {displayName = n}} p'@Profile {displayName = n'} updateUser
| p' == fromLocalProfile p = pure $ CRUserProfileNoChange user
| otherwise = do
liftIO $ putStrLn $ "*** updateProfile_ profile: " <> show p'
when (n /= n') $ checkValidName n'
-- read contacts before user update to correctly merge preferences
contacts <- withFastStore' $ \db -> getUserContacts db vr user
liftIO $ putStrLn $ "*** updateProfile_ contacts: " <> show contacts
user' <- updateUser
asks currentUser >>= atomically . (`writeTVar` Just user')
withChatLock "updateProfile" . procCmd $ do
let changedCts_ = L.nonEmpty $ foldr (addChangedProfileContact user') [] contacts
summary <- case changedCts_ of
Nothing -> pure $ UserProfileUpdateSummary 0 0 []
Nothing -> do
liftIO $ putStrLn $ "*** updateProfile_ no changed contacts"
pure $ UserProfileUpdateSummary 0 0 []
Just changedCts -> do
liftIO $ putStrLn $ "*** updateProfile_ changed contacts: " <> show changedCts_
let idsEvts = L.map ctSndEvent changedCts
liftIO $ putStrLn $ "*** updateProfile_ before sending"
msgReqs_ <- lift $ L.zipWith ctMsgReq changedCts <$> createSndMessages idsEvts
liftIO $ putStrLn $ "*** updateProfile_ created messages"
(errs, cts) <- partitionEithers . L.toList . L.zipWith (second . const) changedCts <$> deliverMessagesB msgReqs_
liftIO $ putStrLn $ "*** updateProfile_ delivered messages to contacts: " <> show (length cts) <> ", errors: " <> show errs
unless (null errs) $ toView $ CRChatErrors (Just user) errs
let changedCts' = filter (\ChangedProfileContact {ct, ct'} -> directOrUsed ct' && mergedPreferences ct' /= mergedPreferences ct) cts
lift $ createContactsSndFeatureItems user' changedCts'
@@ -2890,7 +2900,7 @@ processChatCommand' vr = \case
UserProfileUpdateSummary
{ updateSuccesses = length cts,
updateFailures = length errs,
changedContacts = map (\ChangedProfileContact {ct'} -> ct') changedCts'
changedContacts = map (\ChangedProfileContact {ct'} -> ct') $ L.toList changedCts
}
pure $ CRUserProfileUpdated user' (fromLocalProfile p) p' summary
where
@@ -2927,11 +2937,22 @@ processChatCommand' vr = \case
lift . when (directOrUsed ct') $ createSndFeatureItems user ct ct'
pure $ CRContactPrefsUpdated user ct ct'
runUpdateGroupProfile :: User -> Group -> GroupProfile -> CM ChatResponse
runUpdateGroupProfile user (Group g@GroupInfo {groupProfile = p@GroupProfile {displayName = n}} ms) p'@GroupProfile {displayName = n'} = do
runUpdateGroupProfile user (Group g@GroupInfo {businessChat, groupProfile = p@GroupProfile {displayName = n}} ms) p'@GroupProfile {displayName = n'} = do
assertUserGroupRole g GROwner
when (n /= n') $ checkValidName n'
g' <- withStore $ \db -> updateGroupProfile db user g p'
msg <- sendGroupMessage user g' ms (XGrpInfo p')
msg <- case businessChat of
Just BusinessChatInfo {businessId} -> do
let (newMs, oldMs) = partition (\m -> maxVersion (memberChatVRange m) >= businessChatPrefsVersion) ms
-- this is a fallback to send the members with the old version correct profile of the business when preferences change
unless (null oldMs) $ do
GroupMember {memberProfile = LocalProfile {displayName, fullName, image}} <-
withStore $ \db -> getGroupMemberByMemberId db vr user g businessId
let p'' = p' {displayName, fullName, image} :: GroupProfile
void $ sendGroupMessage user g' oldMs (XGrpInfo p'')
let ps' = fromMaybe defaultBusinessGroupPrefs $ groupPreferences p'
sendGroupMessage user g' newMs $ XGrpPrefs ps'
Nothing -> sendGroupMessage user g' ms (XGrpInfo p')
let cd = CDGroupSnd g'
unless (sameGroupProfileInfo p p') $ do
ci <- saveSndChatItem user cd msg (CISndGroupEvent $ SGEGroupUpdated p')
@@ -3024,7 +3045,7 @@ processChatCommand' vr = \case
invitedMember = MemberIdRole memberId memRole,
connRequest = cReq,
groupProfile,
businessChat,
business = businessChat,
groupLinkId = Nothing,
groupSize = Just currentMemCount
}
@@ -3492,6 +3513,7 @@ data ChangedProfileContact = ChangedProfileContact
mergedProfile' :: Profile,
conn :: Connection
}
deriving (Show)
prepareGroupMsg :: User -> GroupInfo -> MsgContent -> Maybe ChatItemId -> Maybe CIForwardedFrom -> Maybe FileInvitation -> Maybe CITimed -> Bool -> CM (MsgContainer, Maybe (CIQuote 'CTGroup))
prepareGroupMsg user GroupInfo {groupId, membership} mc quotedItemId_ itemForwarded fInv_ timed_ live = case (quotedItemId_, itemForwarded) of
@@ -4001,7 +4023,7 @@ acceptGroupJoinRequestAsync
fromMemberName = displayName,
invitedMember = MemberIdRole memberId gLinkMemRole,
groupProfile,
businessChat,
business = businessChat,
groupSize = Just currentMemCount
}
subMode <- chatReadVar subscriptionMode
@@ -4036,7 +4058,7 @@ acceptBusinessJoinRequestAsync
-- This refers to the "title member" that defines the group name and profile.
-- This coincides with fromMember to be current user when accepting the connecting user,
-- but it will be different when inviting somebody else.
businessChat = Just $ BusinessChatInfo userMemberId BCBusiness,
business = Just $ BusinessChatInfo {chatType = BCBusiness, businessId = userMemberId, customerId = memberId},
groupSize = Just 1
}
subMode <- chatReadVar subscriptionMode
@@ -5040,7 +5062,7 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage =
invitedMember = MemberIdRole memberId memRole,
connRequest = cReq,
groupProfile,
businessChat = Nothing,
business = Nothing,
groupLinkId = groupLinkId,
groupSize = Just currentMemCount
}
@@ -5297,6 +5319,7 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage =
XGrpLeave -> xGrpLeave gInfo m' msg brokerTs
XGrpDel -> xGrpDel gInfo m' msg brokerTs
XGrpInfo p' -> xGrpInfo gInfo m' p' msg brokerTs
XGrpPrefs ps' -> xGrpPrefs gInfo m' ps'
XGrpDirectInv connReq mContent_ -> memberCanSend m' $ xGrpDirectInv gInfo m' conn' connReq mContent_ msg brokerTs
XGrpMsgForward memberId msg' msgTs -> xGrpMsgForward gInfo m' memberId msg' msgTs
XInfoProbe probe -> xInfoProbe (COMGroupMember m') probe
@@ -5414,8 +5437,8 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage =
let GroupInfo {businessChat} = gInfo
GroupMember {memberId = joiningMemberId} = m
case businessChat of
Just BusinessChatInfo {memberId, chatType = BCCustomer}
| joiningMemberId == memberId -> useReply <$> withStore (`getUserAddress` user)
Just BusinessChatInfo {customerId, chatType = BCCustomer}
| joiningMemberId == customerId -> useReply <$> withStore (`getUserAddress` user)
where
useReply UserContactLink {autoAccept} = case autoAccept of
Just AutoAccept {businessAddress, autoReply} | businessAddress -> autoReply
@@ -6463,7 +6486,7 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage =
processMemberProfileUpdate :: GroupInfo -> GroupMember -> Profile -> Bool -> Maybe UTCTime -> CM GroupMember
processMemberProfileUpdate gInfo m@GroupMember {memberProfile = p, memberContactId} p' createItems itemTs_
| redactedMemberProfile (fromLocalProfile p) /= redactedMemberProfile p' = do
updateBusinessChatProfile gInfo m
updateBusinessChatProfile gInfo
case memberContactId of
Nothing -> do
m' <- withStore $ \db -> updateMemberProfile db user m p'
@@ -6489,11 +6512,14 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage =
| otherwise =
pure m
where
updateBusinessChatProfile g@GroupInfo {businessChat} GroupMember {memberId} = case businessChat of
Just BusinessChatInfo {memberId = mId} | mId == memberId -> do
updateBusinessChatProfile g@GroupInfo {businessChat} = case businessChat of
Just bc | isMainBusinessMember bc m -> do
g' <- withStore $ \db -> updateGroupProfileFromMember db user g p'
toView $ CRGroupUpdated user g g' (Just m)
_ -> pure ()
isMainBusinessMember BusinessChatInfo {chatType, businessId, customerId} GroupMember {memberId} = case chatType of
BCBusiness -> businessId == memberId
BCCustomer -> customerId == memberId
createProfileUpdatedItem m' =
when createItems $ do
let ciContent = CIRcvGroupEvent $ RGEMemberProfileUpdated (fromLocalProfile p) p'
@@ -7006,16 +7032,31 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage =
toView $ CRGroupDeleted user gInfo {membership = membership {memberStatus = GSMemGroupDeleted}} m
xGrpInfo :: GroupInfo -> GroupMember -> GroupProfile -> RcvMessage -> UTCTime -> CM ()
xGrpInfo g@GroupInfo {groupProfile = p} m@GroupMember {memberRole} p' msg brokerTs
xGrpInfo g@GroupInfo {groupProfile = p, businessChat} m@GroupMember {memberRole} p' msg brokerTs
| memberRole < GROwner = messageError "x.grp.info with insufficient member permissions"
| otherwise = unless (p == p') $ do
g' <- withStore $ \db -> updateGroupProfile db user g p'
toView $ CRGroupUpdated user g g' (Just m)
let cd = CDGroupRcv g' m
unless (sameGroupProfileInfo p p') $ do
ci <- saveRcvChatItem user cd msg brokerTs (CIRcvGroupEvent $ RGEGroupUpdated p')
groupMsgToView g' ci
createGroupFeatureChangedItems user cd CIRcvGroupFeature g g'
| otherwise = case businessChat of
Nothing -> unless (p == p') $ do
g' <- withStore $ \db -> updateGroupProfile db user g p'
toView $ CRGroupUpdated user g g' (Just m)
let cd = CDGroupRcv g' m
unless (sameGroupProfileInfo p p') $ do
ci <- saveRcvChatItem user cd msg brokerTs (CIRcvGroupEvent $ RGEGroupUpdated p')
groupMsgToView g' ci
createGroupFeatureChangedItems user cd CIRcvGroupFeature g g'
Just _ -> updateGroupPrefs_ g m $ fromMaybe defaultBusinessGroupPrefs $ groupPreferences p'
xGrpPrefs :: GroupInfo -> GroupMember -> GroupPreferences -> CM ()
xGrpPrefs g m@GroupMember {memberRole} ps'
| memberRole < GROwner = messageError "x.grp.prefs with insufficient member permissions"
| otherwise = updateGroupPrefs_ g m ps'
updateGroupPrefs_ :: GroupInfo -> GroupMember -> GroupPreferences -> CM ()
updateGroupPrefs_ g@GroupInfo {groupProfile = p} m ps' =
unless (groupPreferences p == Just ps') $ do
g' <- withStore' $ \db -> updateGroupPreferences db user g ps'
toView $ CRGroupUpdated user g g' (Just m)
let cd = CDGroupRcv g' m
createGroupFeatureChangedItems user cd CIRcvGroupFeature g g'
xGrpDirectInv :: GroupInfo -> GroupMember -> Connection -> ConnReqInvitation -> Maybe MsgContent -> RcvMessage -> UTCTime -> CM ()
xGrpDirectInv g m mConn connReq mContent_ msg brokerTs = do
@@ -7096,6 +7137,7 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage =
XGrpLeave -> xGrpLeave gInfo author rcvMsg msgTs
XGrpDel -> xGrpDel gInfo author rcvMsg msgTs
XGrpInfo p' -> xGrpInfo gInfo author p' rcvMsg msgTs
XGrpPrefs ps' -> xGrpPrefs gInfo author ps'
_ -> messageError $ "x.grp.msg.forward: unsupported forwarded event " <> T.pack (show $ toCMEventTag event)
createUnknownMember :: GroupInfo -> MemberId -> CM GroupMember
@@ -7601,7 +7643,9 @@ deliverMessages msgs = deliverMessagesB $ L.map Right msgs
deliverMessagesB :: NonEmpty (Either ChatError ChatMsgReq) -> CM (NonEmpty (Either ChatError ([Int64], PQEncryption)))
deliverMessagesB msgReqs = do
msgReqs' <- liftIO compressBodies
liftIO $ putStrLn "deliverMessagesB"
sent <- L.zipWith prepareBatch msgReqs' <$> withAgent (`sendMessagesB` snd (mapAccumL toAgent Nothing msgReqs'))
liftIO $ putStrLn $ "deliverMessagesB sent: " <> show sent
lift . void $ withStoreBatch' $ \db -> map (updatePQSndEnabled db) (rights . L.toList $ sent)
lift . withStoreBatch $ \db -> L.map (bindRight $ createDelivery db) sent
where
@@ -0,0 +1,18 @@
{-# LANGUAGE QuasiQuotes #-}
module Simplex.Chat.Migrations.M20241205_business_chat_members where
import Database.SQLite.Simple (Query)
import Database.SQLite.Simple.QQ (sql)
m20241205_business_chat_members :: Query
m20241205_business_chat_members =
[sql|
ALTER TABLE groups ADD COLUMN customer_member_id BLOB NULL;
|]
down_m20241205_business_chat_members :: Query
down_m20241205_business_chat_members =
[sql|
ALTER TABLE groups DROP COLUMN customer_member_id;
|]
+2 -1
View File
@@ -130,7 +130,8 @@ CREATE TABLE groups(
ui_themes TEXT,
business_member_id BLOB NULL,
business_chat TEXT NULL,
business_xcontact_id BLOB NULL, -- received
business_xcontact_id BLOB NULL,
customer_member_id BLOB NULL, -- received
FOREIGN KEY(user_id, local_display_name)
REFERENCES display_names(user_id, local_display_name)
ON DELETE CASCADE
+7 -3
View File
@@ -10,6 +10,7 @@ module Simplex.Chat.Mobile where
import Control.Concurrent.STM
import Control.Exception (SomeException, catch)
import Control.Logger.Simple
import Control.Monad.Except
import Control.Monad.Reader
import qualified Data.Aeson as J
@@ -53,7 +54,7 @@ import Simplex.Messaging.Encoding.String
import Simplex.Messaging.Parsers (defaultJSON, dropPrefix, sumTypeJSON)
import Simplex.Messaging.Protocol (AProtoServerWithAuth (..), AProtocolType (..), BasicAuth (..), CorrId (..), ProtoServerWithAuth (..), ProtocolServer (..))
import Simplex.Messaging.Util (catchAll, liftEitherWith, safeDecodeUtf8)
import System.IO (utf8)
import System.IO (BufferMode (..), hSetBuffering, stderr, stdout, utf8)
import System.Timeout (timeout)
data DBMigrationResult
@@ -220,7 +221,7 @@ defaultMobileConfig :: ChatConfig
defaultMobileConfig =
defaultChatConfig
{ confirmMigrations = MCYesUp,
logLevel = CLLError,
logLevel = CLLDebug,
coreApi = True,
deviceNameForRemote = "Mobile"
}
@@ -266,7 +267,10 @@ handleErr :: IO () -> IO String
handleErr a = (a $> "") `catch` (pure . show @SomeException)
chatSendCmd :: ChatController -> B.ByteString -> IO JSONByteString
chatSendCmd cc = chatSendRemoteCmd cc Nothing
chatSendCmd cc cmd = withGlobalLogging logCfg $ do
hSetBuffering stdout LineBuffering
hSetBuffering stderr LineBuffering
chatSendRemoteCmd cc Nothing cmd
chatSendRemoteCmd :: ChatController -> Maybe RemoteHostId -> B.ByteString -> IO JSONByteString
chatSendRemoteCmd cc rh s = J.encode . APIResponse Nothing rh <$> runReaderT (execChatCommand rh s) cc
+15 -1
View File
@@ -46,6 +46,7 @@ import Database.SQLite.Simple.FromField (FromField (..))
import Database.SQLite.Simple.ToField (ToField (..))
import Simplex.Chat.Call
import Simplex.Chat.Types
import Simplex.Chat.Types.Preferences
import Simplex.Chat.Types.Shared
import Simplex.Messaging.Agent.Protocol (VersionSMPA, pqdrSMPAgentVersion)
import Simplex.Messaging.Compression (Compressed, compress1, decompress1)
@@ -67,12 +68,13 @@ import Simplex.Messaging.Version hiding (version)
-- 8 - compress messages and PQ e2e encryption (2024-03-08)
-- 9 - batch sending in direct connections (2024-07-24)
-- 10 - business chats (2024-11-29)
-- 11 - fix profile update in business chats (2024-12-05)
-- This should not be used directly in code, instead use `maxVersion chatVRange` from ChatConfig.
-- This indirection is needed for backward/forward compatibility testing.
-- Testing with real app versions is still needed, as tests use the current code with different version ranges, not the old code.
currentChatVersion :: VersionChat
currentChatVersion = VersionChat 10
currentChatVersion = VersionChat 11
-- This should not be used directly in code, instead use `chatVRange` from ChatConfig (see comment above)
supportedChatVRange :: VersionRangeChat
@@ -115,6 +117,10 @@ batchSend2Version = VersionChat 9
businessChatsVersion :: VersionChat
businessChatsVersion = VersionChat 10
-- support updating preferences in business chats (XGrpPrefs message)
businessChatPrefsVersion :: VersionChat
businessChatPrefsVersion = VersionChat 11
agentToChatVersion :: VersionSMPA -> VersionChat
agentToChatVersion v
| v < pqdrSMPAgentVersion = initialChatVersion
@@ -299,6 +305,7 @@ data ChatMsgEvent (e :: MsgEncoding) where
XGrpLeave :: ChatMsgEvent 'Json
XGrpDel :: ChatMsgEvent 'Json
XGrpInfo :: GroupProfile -> ChatMsgEvent 'Json
XGrpPrefs :: GroupPreferences -> ChatMsgEvent 'Json
XGrpDirectInv :: ConnReqInvitation -> Maybe MsgContent -> ChatMsgEvent 'Json
XGrpMsgForward :: MemberId -> ChatMessage 'Json -> UTCTime -> ChatMsgEvent 'Json
XInfoProbe :: Probe -> ChatMsgEvent 'Json
@@ -339,6 +346,7 @@ isForwardedGroupMsg ev = case ev of
XGrpLeave -> True
XGrpDel -> True -- TODO there should be a special logic - host should forward before deleting connections
XGrpInfo _ -> True
XGrpPrefs _ -> True
_ -> False
forwardedGroupMsg :: forall e. MsgEncodingI e => ChatMessage e -> Maybe (ChatMessage 'Json)
@@ -721,6 +729,7 @@ data CMEventTag (e :: MsgEncoding) where
XGrpLeave_ :: CMEventTag 'Json
XGrpDel_ :: CMEventTag 'Json
XGrpInfo_ :: CMEventTag 'Json
XGrpPrefs_ :: CMEventTag 'Json
XGrpDirectInv_ :: CMEventTag 'Json
XGrpMsgForward_ :: CMEventTag 'Json
XInfoProbe_ :: CMEventTag 'Json
@@ -771,6 +780,7 @@ instance MsgEncodingI e => StrEncoding (CMEventTag e) where
XGrpLeave_ -> "x.grp.leave"
XGrpDel_ -> "x.grp.del"
XGrpInfo_ -> "x.grp.info"
XGrpPrefs_ -> "x.grp.prefs"
XGrpDirectInv_ -> "x.grp.direct.inv"
XGrpMsgForward_ -> "x.grp.msg.forward"
XInfoProbe_ -> "x.info.probe"
@@ -822,6 +832,7 @@ instance StrEncoding ACMEventTag where
"x.grp.leave" -> XGrpLeave_
"x.grp.del" -> XGrpDel_
"x.grp.info" -> XGrpInfo_
"x.grp.prefs" -> XGrpPrefs_
"x.grp.direct.inv" -> XGrpDirectInv_
"x.grp.msg.forward" -> XGrpMsgForward_
"x.info.probe" -> XInfoProbe_
@@ -869,6 +880,7 @@ toCMEventTag msg = case msg of
XGrpLeave -> XGrpLeave_
XGrpDel -> XGrpDel_
XGrpInfo _ -> XGrpInfo_
XGrpPrefs _ -> XGrpPrefs_
XGrpDirectInv _ _ -> XGrpDirectInv_
XGrpMsgForward {} -> XGrpMsgForward_
XInfoProbe _ -> XInfoProbe_
@@ -969,6 +981,7 @@ appJsonToCM AppMessageJson {v, msgId, event, params} = do
XGrpLeave_ -> pure XGrpLeave
XGrpDel_ -> pure XGrpDel
XGrpInfo_ -> XGrpInfo <$> p "groupProfile"
XGrpPrefs_ -> XGrpPrefs <$> p "groupPreferences"
XGrpDirectInv_ -> XGrpDirectInv <$> p "connReq" <*> opt "content"
XGrpMsgForward_ -> XGrpMsgForward <$> p "memberId" <*> p "msg" <*> p "msgTs"
XInfoProbe_ -> XInfoProbe <$> p "probe"
@@ -1030,6 +1043,7 @@ chatToAppMessage ChatMessage {chatVRange, msgId, chatMsgEvent} = case encoding @
XGrpLeave -> JM.empty
XGrpDel -> JM.empty
XGrpInfo p -> o ["groupProfile" .= p]
XGrpPrefs p -> o ["groupPreferences" .= p]
XGrpDirectInv connReq content -> o $ ("content" .=? content) ["connReq" .= connReq]
XGrpMsgForward memberId msg msgTs -> o ["memberId" .= memberId, "msg" .= msg, "msgTs" .= msgTs]
XInfoProbe probe -> o ["probe" .= probe]
+1 -1
View File
@@ -123,7 +123,7 @@ getConnectionEntity db vr user@User {userId, userContactId} agentConnId = do
-- GroupInfo
g.group_id, g.local_display_name, gp.display_name, gp.full_name, gp.description, gp.image,
g.host_conn_custom_user_profile_id, g.enable_ntfs, g.send_rcpts, g.favorite, gp.preferences,
g.created_at, g.updated_at, g.chat_ts, g.user_member_profile_sent_at, g.business_member_id, g.business_chat, g.ui_themes, g.custom_data,
g.created_at, g.updated_at, g.chat_ts, g.user_member_profile_sent_at, g.business_chat, g.business_member_id, g.customer_member_id, g.ui_themes, g.custom_data,
-- GroupInfo {membership}
mu.group_member_id, mu.group_id, mu.member_id, mu.peer_chat_min_version, mu.peer_chat_max_version, mu.member_role, mu.member_category,
mu.member_status, mu.show_messages, mu.member_restriction, mu.invited_by, mu.invited_by_group_member_id, mu.local_display_name, mu.contact_id, mu.contact_profile_id, pu.contact_profile_id,
+14 -3
View File
@@ -57,6 +57,7 @@ module Simplex.Chat.Store.Direct
setQuotaErrCounter,
getUserContacts,
createOrUpdateContactRequest,
getUserContactLinkIdByCReq,
getContactRequest',
getContactRequest,
getContactRequestIdByName,
@@ -84,7 +85,7 @@ where
import Control.Monad
import Control.Monad.Except
import Control.Monad.IO.Class
import Data.Either (rights)
import Data.Either (partitionEithers, rights)
import Data.Functor (($>))
import Data.Int (Int64)
import Data.Maybe (fromMaybe, isJust, isNothing)
@@ -589,8 +590,13 @@ getContactByName db vr user localDisplayName = do
getUserContacts :: DB.Connection -> VersionRangeChat -> User -> IO [Contact]
getUserContacts db vr user@User {userId} = do
contactIds <- map fromOnly <$> DB.query db "SELECT contact_id FROM contacts WHERE user_id = ? AND deleted = 0" (Only userId)
contacts <- rights <$> mapM (runExceptT . getContact db vr user) contactIds
pure $ filter (\Contact {activeConn} -> isJust activeConn) contacts
putStrLn $ "*** getUserContacts contactIds" <> show contactIds
(errs, contacts) <- partitionEithers <$> mapM (runExceptT . getContact db vr user) contactIds
putStrLn $ "*** getUserContacts contacts" <> show contacts
putStrLn $ "*** getUserContacts errors" <> show errs
r <- pure $ filter (\Contact {activeConn} -> isJust activeConn) contacts
putStrLn $ "*** getUserContacts filtered contacts" <> show r
pure r
createOrUpdateContactRequest :: DB.Connection -> VersionRangeChat -> User -> Int64 -> InvitationId -> VersionRangeChat -> Profile -> Maybe XContactId -> PQSupport -> ExceptT StoreError IO ChatOrRequest
createOrUpdateContactRequest db vr user@User {userId, userContactId} userContactLinkId invId (VersionRange minV maxV) Profile {displayName, fullName, image, contactLink, preferences} xContactId_ pqSup =
@@ -727,6 +733,11 @@ createOrUpdateContactRequest db vr user@User {userId, userContactId} userContact
|]
(displayName, fullName, image, contactLink, currentTs, userId, cReqId)
getUserContactLinkIdByCReq :: DB.Connection -> Int64 -> ExceptT StoreError IO Int64
getUserContactLinkIdByCReq db contactRequestId =
ExceptT . firstRow fromOnly (SEContactRequestNotFound contactRequestId) $
DB.query db "SELECT user_contact_link_id FROM contact_requests WHERE contact_request_id = ?" (Only contactRequestId)
getContactRequest' :: DB.Connection -> Int64 -> ExceptT StoreError IO (User, UserContactRequest)
getContactRequest' db contactRequestId = do
user <- getUserByContactRequestId db contactRequestId
+35 -17
View File
@@ -39,6 +39,7 @@ module Simplex.Chat.Store.Groups
getGroupInfoByUserContactLinkConnReq,
getGroupInfoByGroupLinkHash,
updateGroupProfile,
updateGroupPreferences,
updateGroupProfileFromMember,
getGroupIdByName,
getGroupMemberIdByName,
@@ -257,7 +258,7 @@ getGroupAndMember db User {userId, userContactId} groupMemberId vr =
-- GroupInfo
g.group_id, g.local_display_name, gp.display_name, gp.full_name, gp.description, gp.image,
g.host_conn_custom_user_profile_id, g.enable_ntfs, g.send_rcpts, g.favorite, gp.preferences,
g.created_at, g.updated_at, g.chat_ts, g.user_member_profile_sent_at, g.business_member_id, g.business_chat, g.ui_themes, g.custom_data,
g.created_at, g.updated_at, g.chat_ts, g.user_member_profile_sent_at, g.business_chat, g.business_member_id, g.customer_member_id, g.ui_themes, g.custom_data,
-- GroupInfo {membership}
mu.group_member_id, mu.group_id, mu.member_id, mu.peer_chat_min_version, mu.peer_chat_max_version, mu.member_role, mu.member_category,
mu.member_status, mu.show_messages, mu.member_restriction, mu.invited_by, mu.invited_by_group_member_id, mu.local_display_name, mu.contact_id, mu.contact_profile_id, pu.contact_profile_id,
@@ -339,7 +340,7 @@ createNewGroup db vr gVar user@User {userId} groupProfile incognitoProfile = Exc
-- | creates a new group record for the group the current user was invited to, or returns an existing one
createGroupInvitation :: DB.Connection -> VersionRangeChat -> User -> Contact -> GroupInvitation -> Maybe ProfileId -> ExceptT StoreError IO (GroupInfo, GroupMemberId)
createGroupInvitation _ _ _ Contact {localDisplayName, activeConn = Nothing} _ _ = throwError $ SEContactNotReady localDisplayName
createGroupInvitation db vr user@User {userId} contact@Contact {contactId, activeConn = Just Connection {customUserProfileId, peerChatVRange}} GroupInvitation {fromMember, invitedMember, connRequest, groupProfile, businessChat} incognitoProfileId = do
createGroupInvitation db vr user@User {userId} contact@Contact {contactId, activeConn = Just Connection {customUserProfileId, peerChatVRange}} GroupInvitation {fromMember, invitedMember, connRequest, groupProfile, business} incognitoProfileId = do
liftIO getInvitationGroupId_ >>= \case
Nothing -> createGroupInvitation_
Just gId -> do
@@ -377,10 +378,10 @@ createGroupInvitation db vr user@User {userId} contact@Contact {contactId, activ
[sql|
INSERT INTO groups
(group_profile_id, local_display_name, inv_queue_info, host_conn_custom_user_profile_id, user_id, enable_ntfs,
created_at, updated_at, chat_ts, user_member_profile_sent_at, business_member_id, business_chat)
VALUES (?,?,?,?,?,?,?,?,?,?,?,?)
created_at, updated_at, chat_ts, user_member_profile_sent_at, business_chat, business_member_id, customer_member_id)
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)
|]
((profileId, localDisplayName, connRequest, customUserProfileId, userId, True, currentTs, currentTs, currentTs, currentTs) :. businessChatTuple businessChat)
((profileId, localDisplayName, connRequest, customUserProfileId, userId, True, currentTs, currentTs, currentTs, currentTs) :. businessChatInfoRow business)
insertedRowId db
let hostVRange = adjustedMemberVRange vr peerChatVRange
GroupMember {groupMemberId} <- createContactMemberInv_ db user groupId Nothing contact fromMember GCHostMember GSMemInvited IBUnknown Nothing currentTs hostVRange
@@ -406,10 +407,10 @@ createGroupInvitation db vr user@User {userId} contact@Contact {contactId, activ
groupMemberId
)
businessChatTuple :: Maybe BusinessChatInfo -> (Maybe MemberId, Maybe BusinessChatType)
businessChatTuple = \case
Just BusinessChatInfo {memberId, chatType} -> (Just memberId, Just chatType)
Nothing -> (Nothing, Nothing)
businessChatInfoRow :: Maybe BusinessChatInfo -> BusinessChatInfoRow
businessChatInfoRow = \case
Just BusinessChatInfo {chatType, businessId, customerId} -> (Just chatType, Just businessId, Just customerId)
Nothing -> (Nothing, Nothing, Nothing)
adjustedMemberVRange :: VersionRangeChat -> VersionRangeChat -> VersionRangeChat
adjustedMemberVRange chatVR vr@(VersionRange minV maxV) =
@@ -497,7 +498,7 @@ createGroupInvitedViaLink
vr
user@User {userId, userContactId}
Connection {connId, customUserProfileId}
GroupLinkInvitation {fromMember, fromMemberName, invitedMember, groupProfile, businessChat} = do
GroupLinkInvitation {fromMember, fromMemberName, invitedMember, groupProfile, business} = do
currentTs <- liftIO getCurrentTime
groupId <- insertGroup_ currentTs
hostMemberId <- insertHost_ currentTs groupId
@@ -521,10 +522,10 @@ createGroupInvitedViaLink
[sql|
INSERT INTO groups
(group_profile_id, local_display_name, host_conn_custom_user_profile_id, user_id, enable_ntfs,
created_at, updated_at, chat_ts, user_member_profile_sent_at, business_member_id, business_chat)
VALUES (?,?,?,?,?,?,?,?,?,?,?)
created_at, updated_at, chat_ts, user_member_profile_sent_at, business_chat, business_member_id, customer_member_id)
VALUES (?,?,?,?,?,?,?,?,?,?,?,?)
|]
((profileId, localDisplayName, customUserProfileId, userId, True, currentTs, currentTs, currentTs, currentTs) :. businessChatTuple businessChat)
((profileId, localDisplayName, customUserProfileId, userId, True, currentTs, currentTs, currentTs, currentTs) :. businessChatInfoRow business)
insertedRowId db
insertHost_ currentTs groupId = do
let fromMemberProfile = profileFromName fromMemberName
@@ -631,7 +632,7 @@ getUserGroupDetails db vr User {userId, userContactId} _contactId_ search_ =
SELECT
g.group_id, g.local_display_name, gp.display_name, gp.full_name, gp.description, gp.image,
g.host_conn_custom_user_profile_id, g.enable_ntfs, g.send_rcpts, g.favorite, gp.preferences,
g.created_at, g.updated_at, g.chat_ts, g.user_member_profile_sent_at, g.business_member_id, g.business_chat, g.ui_themes, g.custom_data,
g.created_at, g.updated_at, g.chat_ts, g.user_member_profile_sent_at, g.business_chat, g.business_member_id, g.customer_member_id, g.ui_themes, g.custom_data,
mu.group_member_id, g.group_id, mu.member_id, mu.peer_chat_min_version, mu.peer_chat_max_version, mu.member_role, mu.member_category, mu.member_status, mu.show_messages, mu.member_restriction,
mu.invited_by, mu.invited_by_group_member_id, mu.local_display_name, mu.contact_id, mu.contact_profile_id, pu.contact_profile_id, pu.display_name, pu.full_name, pu.image, pu.contact_link, pu.local_alias, pu.preferences
FROM groups g
@@ -918,9 +919,9 @@ createBusinessRequestGroup
UserContactRequest {cReqChatVRange, xContactId, profile = Profile {displayName, fullName, image, contactLink, preferences}}
groupPreferences = do
currentTs <- liftIO getCurrentTime
(groupId, membership) <- insertGroup_ currentTs
(groupId, membership@GroupMember {memberId = userMemberId}) <- insertGroup_ currentTs
(groupMemberId, memberId) <- insertClientMember_ currentTs groupId membership
liftIO $ DB.execute db "UPDATE groups SET business_member_id = ? WHERE group_id = ?" (memberId, groupId)
liftIO $ DB.execute db "UPDATE groups SET business_member_id = ?, customer_member_id = ? WHERE group_id = ?" (userMemberId, memberId, groupId)
groupInfo <- getGroupInfo db vr user groupId
clientMember <- getGroupMemberById db vr user groupMemberId
pure (groupInfo, clientMember)
@@ -1370,7 +1371,7 @@ getViaGroupMember db vr User {userId, userContactId} Contact {contactId} =
-- GroupInfo
g.group_id, g.local_display_name, gp.display_name, gp.full_name, gp.description, gp.image,
g.host_conn_custom_user_profile_id, g.enable_ntfs, g.send_rcpts, g.favorite, gp.preferences,
g.created_at, g.updated_at, g.chat_ts, g.user_member_profile_sent_at, g.business_member_id, g.business_chat, g.ui_themes, g.custom_data,
g.created_at, g.updated_at, g.chat_ts, g.user_member_profile_sent_at, g.business_chat, g.business_member_id, g.customer_member_id, g.ui_themes, g.custom_data,
-- GroupInfo {membership}
mu.group_member_id, mu.group_id, mu.member_id, mu.peer_chat_min_version, mu.peer_chat_max_version, mu.member_role, mu.member_category,
mu.member_status, mu.show_messages, mu.member_restriction, mu.invited_by, mu.invited_by_group_member_id, mu.local_display_name, mu.contact_id, mu.contact_profile_id, pu.contact_profile_id,
@@ -1456,6 +1457,23 @@ updateGroupProfile db user@User {userId} g@GroupInfo {groupId, localDisplayName,
(ldn, currentTs, userId, groupId)
safeDeleteLDN db user localDisplayName
updateGroupPreferences :: DB.Connection -> User -> GroupInfo -> GroupPreferences -> IO GroupInfo
updateGroupPreferences db User {userId} g@GroupInfo {groupId, groupProfile = p} ps = do
currentTs <- getCurrentTime
DB.execute
db
[sql|
UPDATE group_profiles
SET preferences = ?, updated_at = ?
WHERE group_profile_id IN (
SELECT group_profile_id
FROM groups
WHERE user_id = ? AND group_id = ?
)
|]
(ps, currentTs, userId, groupId)
pure (g :: GroupInfo) {groupProfile = p {groupPreferences = Just ps}}
updateGroupProfileFromMember :: DB.Connection -> User -> GroupInfo -> Profile -> ExceptT StoreError IO GroupInfo
updateGroupProfileFromMember db user g@GroupInfo {groupId} Profile {displayName = n, fullName = fn, image = img} = do
p <- getGroupProfile -- to avoid any race conditions with UI
+3 -1
View File
@@ -118,6 +118,7 @@ import Simplex.Chat.Migrations.M20241023_chat_item_autoincrement_id
import Simplex.Chat.Migrations.M20241027_server_operators
import Simplex.Chat.Migrations.M20241125_indexes
import Simplex.Chat.Migrations.M20241128_business_chats
import Simplex.Chat.Migrations.M20241205_business_chat_members
import Simplex.Messaging.Agent.Store.SQLite.Migrations (Migration (..))
schemaMigrations :: [(String, Query, Maybe Query)]
@@ -235,7 +236,8 @@ schemaMigrations =
("20241023_chat_item_autoincrement_id", m20241023_chat_item_autoincrement_id, Just down_m20241023_chat_item_autoincrement_id),
("20241027_server_operators", m20241027_server_operators, Just down_m20241027_server_operators),
("20241125_indexes", m20241125_indexes, Just down_m20241125_indexes),
("20241128_business_chats", m20241128_business_chats, Just down_m20241128_business_chats)
("20241128_business_chats", m20241128_business_chats, Just down_m20241128_business_chats),
("20241205_business_chat_members", m20241205_business_chat_members, Just down_m20241205_business_chat_members)
]
-- | The list of migrations in ascending order by date
+33 -7
View File
@@ -22,7 +22,7 @@ import qualified Data.Aeson.TH as J
import qualified Data.ByteString.Base64 as B64
import Data.ByteString.Char8 (ByteString)
import Data.Int (Int64)
import Data.Maybe (fromMaybe, isJust, listToMaybe)
import Data.Maybe (fromMaybe, isJust, isNothing, listToMaybe)
import Data.Text (Text)
import qualified Data.Text as T
import Data.Time.Clock (UTCTime (..), getCurrentTime)
@@ -46,6 +46,7 @@ import Simplex.Messaging.Parsers (dropPrefix, sumTypeJSON)
import Simplex.Messaging.Protocol (SubscriptionMode (..))
import Simplex.Messaging.Util (allFinally)
import Simplex.Messaging.Version
import System.IO.Unsafe (unsafePerformIO)
import UnliftIO.STM
data ChatLockEntity
@@ -210,7 +211,26 @@ toConnection vr ((connId, acId, connLevel, viaContact, viaUserContactLink, viaGr
toMaybeConnection :: VersionRangeChat -> MaybeConnectionRow -> Maybe Connection
toMaybeConnection vr ((Just connId, Just agentConnId, Just connLevel, viaContact, viaUserContactLink, Just viaGroupLink, groupLinkId, customUserProfileId, Just connStatus, Just connType, Just contactConnInitiated, Just localAlias) :. (contactId, groupMemberId, sndFileId, rcvFileId, userContactLinkId) :. (Just createdAt, code_, verifiedAt_, Just pqSupport, Just pqEncryption, pqSndEnabled_, pqRcvEnabled_, Just authErrCounter, Just quotaErrCounter, connChatVersion, Just minVer, Just maxVer)) =
Just $ toConnection vr ((connId, agentConnId, connLevel, viaContact, viaUserContactLink, viaGroupLink, groupLinkId, customUserProfileId, connStatus, connType, contactConnInitiated, localAlias) :. (contactId, groupMemberId, sndFileId, rcvFileId, userContactLinkId) :. (createdAt, code_, verifiedAt_, pqSupport, pqEncryption, pqSndEnabled_, pqRcvEnabled_, authErrCounter, quotaErrCounter, connChatVersion, minVer, maxVer))
toMaybeConnection _ _ = Nothing
toMaybeConnection _ ((connId_, agentConnId_, connLevel_, viaContact, viaUserContactLink, viaGroupLink_, groupLinkId, customUserProfileId, connStatus_, connType_, contactConnInitiated_, localAlias_) :. (contactId, groupMemberId, sndFileId, rcvFileId, userContactLinkId) :. (createdAt_, code_, verifiedAt_, pqSupport_, pqEncryption_, pqSndEnabled_, pqRcvEnabled_, authErrCounter_, quotaErrCounter_, connChatVersion, minVer_, maxVer_)) =
unsafePerformIO logRow `seq` Nothing
where
logRow = do
putStrLn $ "connId_ = " <> show connId_
when (isNothing agentConnId_) $ putStrLn "agentConnId_ = Nothing"
when (isNothing connLevel_) $ putStrLn "connLevel_ = Nothing"
when (isNothing viaGroupLink_) $ putStrLn "viaGroupLink_ = Nothing"
when (isNothing connStatus_) $ putStrLn "connStatus_ = Nothing"
when (isNothing connType_) $ putStrLn "connType_ = Nothing"
when (isNothing contactConnInitiated_) $ putStrLn "contactConnInitiated_ = Nothing"
when (isNothing localAlias_) $ putStrLn "localAlias_ = Nothing"
when (isNothing contactId) $ putStrLn "contactId = Nothing"
when (isNothing createdAt_) $ putStrLn "createdAt_ = Nothing"
when (isNothing pqSupport_) $ putStrLn "pqSupport_ = Nothing"
when (isNothing pqEncryption_) $ putStrLn "pqEncryption_ = Nothing"
when (isNothing authErrCounter_) $ putStrLn "authErrCounter_ = Nothing"
when (isNothing quotaErrCounter_) $ putStrLn "quotaErrCounter_ = Nothing"
when (isNothing minVer_) $ putStrLn "minVer_ = Nothing"
when (isNothing maxVer_) $ putStrLn "maxVer_ = Nothing"
createConnection_ :: DB.Connection -> UserId -> ConnType -> Maybe Int64 -> ConnId -> ConnStatus -> VersionChat -> VersionRangeChat -> Maybe ContactId -> Maybe Int64 -> Maybe ProfileId -> Int -> UTCTime -> SubscriptionMode -> PQSupport -> IO Connection
createConnection_ db userId connType entityId acId connStatus connChatVersion peerChatVRange@(VersionRange minV maxV) viaContact viaUserContactLink customUserProfileId connLevel currentTs subMode pqSup = do
@@ -394,7 +414,7 @@ type ContactRow = Only ContactId :. ContactRow'
toContact :: VersionRangeChat -> User -> ContactRow :. MaybeConnectionRow -> Contact
toContact vr user ((Only contactId :. (profileId, localDisplayName, viaGroup, displayName, fullName, image, contactLink, localAlias, contactUsed, contactStatus) :. (enableNtfs_, sendRcpts, favorite, preferences, userPreferences, createdAt, updatedAt, chatTs) :. (contactGroupMemberId, contactGrpInvSent, uiThemes, chatDeleted, customData)) :. connRow) =
let profile = LocalProfile {profileId, displayName, fullName, image, contactLink, preferences, localAlias}
activeConn = toMaybeConnection vr connRow
activeConn = unsafePerformIO (putStrLn $ "contactId " <> show contactId) `seq` toMaybeConnection vr connRow
chatSettings = ChatSettings {enableNtfs = fromMaybe MFAll enableNtfs_, sendRcpts, favorite}
incognito = maybe False connIncognito activeConn
mergedPreferences = contactUserPreferences user userPreferences preferences incognito
@@ -546,17 +566,19 @@ safeDeleteLDN db User {userId} localDisplayName = do
|]
(userId, localDisplayName, userId)
type GroupInfoRow = (Int64, GroupName, GroupName, Text, Maybe Text, Maybe ImageData, Maybe ProfileId, Maybe MsgFilter, Maybe Bool, Bool, Maybe GroupPreferences) :. (UTCTime, UTCTime, Maybe UTCTime, Maybe UTCTime, Maybe MemberId, Maybe BusinessChatType, Maybe UIThemeEntityOverrides, Maybe CustomData) :. GroupMemberRow
type BusinessChatInfoRow = (Maybe BusinessChatType, Maybe MemberId, Maybe MemberId)
type GroupInfoRow = (Int64, GroupName, GroupName, Text, Maybe Text, Maybe ImageData, Maybe ProfileId, Maybe MsgFilter, Maybe Bool, Bool, Maybe GroupPreferences) :. (UTCTime, UTCTime, Maybe UTCTime, Maybe UTCTime) :. BusinessChatInfoRow :. (Maybe UIThemeEntityOverrides, Maybe CustomData) :. GroupMemberRow
type GroupMemberRow = ((Int64, Int64, MemberId, VersionChat, VersionChat, GroupMemberRole, GroupMemberCategory, GroupMemberStatus, Bool, Maybe MemberRestrictionStatus) :. (Maybe Int64, Maybe GroupMemberId, ContactName, Maybe ContactId, ProfileId, ProfileId, ContactName, Text, Maybe ImageData, Maybe ConnReqContact, LocalAlias, Maybe Preferences))
toGroupInfo :: VersionRangeChat -> Int64 -> GroupInfoRow -> GroupInfo
toGroupInfo vr userContactId ((groupId, localDisplayName, displayName, fullName, description, image, hostConnCustomUserProfileId, enableNtfs_, sendRcpts, favorite, groupPreferences) :. (createdAt, updatedAt, chatTs, userMemberProfileSentAt, businessMemberId, businessChatType, uiThemes, customData) :. userMemberRow) =
toGroupInfo vr userContactId ((groupId, localDisplayName, displayName, fullName, description, image, hostConnCustomUserProfileId, enableNtfs_, sendRcpts, favorite, groupPreferences) :. (createdAt, updatedAt, chatTs, userMemberProfileSentAt) :. businessRow :. (uiThemes, customData) :. userMemberRow) =
let membership = (toGroupMember userContactId userMemberRow) {memberChatVRange = vr}
chatSettings = ChatSettings {enableNtfs = fromMaybe MFAll enableNtfs_, sendRcpts, favorite}
fullGroupPreferences = mergeGroupPreferences groupPreferences
groupProfile = GroupProfile {displayName, fullName, description, image, groupPreferences}
businessChat = BusinessChatInfo <$> businessMemberId <*> businessChatType
businessChat = toBusinessChatInfo businessRow
in GroupInfo {groupId, localDisplayName, groupProfile, businessChat, fullGroupPreferences, membership, hostConnCustomUserProfileId, chatSettings, createdAt, updatedAt, chatTs, userMemberProfileSentAt, uiThemes, customData}
toGroupMember :: Int64 -> GroupMemberRow -> GroupMember
@@ -569,6 +591,10 @@ toGroupMember userContactId ((groupMemberId, groupId, memberId, minVer, maxVer,
memberChatVRange = fromMaybe (versionToRange maxVer) $ safeVersionRange minVer maxVer
in GroupMember {..}
toBusinessChatInfo :: BusinessChatInfoRow -> Maybe BusinessChatInfo
toBusinessChatInfo (Just chatType, Just businessId, Just customerId) = Just BusinessChatInfo {chatType, businessId, customerId}
toBusinessChatInfo _ = Nothing
groupInfoQuery :: Query
groupInfoQuery =
[sql|
@@ -576,7 +602,7 @@ groupInfoQuery =
-- GroupInfo
g.group_id, g.local_display_name, gp.display_name, gp.full_name, gp.description, gp.image,
g.host_conn_custom_user_profile_id, g.enable_ntfs, g.send_rcpts, g.favorite, gp.preferences,
g.created_at, g.updated_at, g.chat_ts, g.user_member_profile_sent_at, g.business_member_id, g.business_chat, g.ui_themes, g.custom_data,
g.created_at, g.updated_at, g.chat_ts, g.user_member_profile_sent_at, g.business_chat, g.business_member_id, g.customer_member_id, g.ui_themes, g.custom_data,
-- GroupMember - membership
mu.group_member_id, mu.group_id, mu.member_id, mu.peer_chat_min_version, mu.peer_chat_max_version, mu.member_role, mu.member_category,
mu.member_status, mu.show_messages, mu.member_restriction, mu.invited_by, mu.invited_by_group_member_id, mu.local_display_name, mu.contact_id, mu.contact_profile_id, pu.contact_profile_id,
+5 -4
View File
@@ -617,7 +617,7 @@ data GroupInvitation = GroupInvitation
invitedMember :: MemberIdRole,
connRequest :: ConnReqInvitation,
groupProfile :: GroupProfile,
businessChat :: Maybe BusinessChatInfo,
business :: Maybe BusinessChatInfo,
groupLinkId :: Maybe GroupLinkId,
groupSize :: Maybe Int
}
@@ -628,7 +628,7 @@ data GroupLinkInvitation = GroupLinkInvitation
fromMemberName :: ContactName,
invitedMember :: MemberIdRole,
groupProfile :: GroupProfile,
businessChat :: Maybe BusinessChatInfo,
business :: Maybe BusinessChatInfo,
groupSize :: Maybe Int
}
deriving (Eq, Show)
@@ -654,8 +654,9 @@ data MemberInfo = MemberInfo
deriving (Eq, Show)
data BusinessChatInfo = BusinessChatInfo
{ memberId :: MemberId,
chatType :: BusinessChatType
{ chatType :: BusinessChatType,
businessId :: MemberId,
customerId :: MemberId
}
deriving (Eq, Show)
+54 -5
View File
@@ -734,8 +734,8 @@ testBusinessAddress = testChat3 businessProfile aliceProfile {fullName = "Alice
(biz <# "#bob bob_1> hey there")
testBusinessUpdateProfiles :: HasCallStack => FilePath -> IO ()
testBusinessUpdateProfiles = testChat3 businessProfile aliceProfile bobProfile $
\biz alice bob -> do
testBusinessUpdateProfiles = testChat4 businessProfile aliceProfile bobProfile cathProfile $
\biz alice bob cath -> do
biz ##> "/ad"
cLink <- getContactLink biz True
biz ##> "/auto_accept on business text Welcome"
@@ -794,9 +794,37 @@ testBusinessUpdateProfiles = testChat3 businessProfile aliceProfile bobProfile $
bob #> "#biz hi there" -- profile update is sent to group with message
alice <# "#biz robert> hi there"
biz <# "#alisa robert> hi there"
-- add business team member
connectUsers biz cath
biz ##> "/a #alisa cath"
biz <## "invitation to join the group #alisa sent to cath"
cath <## "#alisa: biz invites you to join the group as member"
cath <## "use /j alisa to accept"
cath ##> "/j alisa"
concurrentlyN_
[ do
cath <## "#alisa: you joined the group"
cath
<###
[ WithTime "#alisa biz> Welcome [>>]",
WithTime "#alisa biz> hi [>>]",
WithTime "#alisa alisa_1> hello [>>]",
WithTime "#alisa alisa_1> hello again [>>]",
WithTime "#alisa robert> hi there [>>]"
]
cath <## "#alisa: member alisa_1 is connected"
cath <## "#alisa: member robert is connected",
biz <## "#alisa: cath joined the group",
do
alice <## "#biz: biz_1 added cath (Catherine) to the group (connecting...)"
alice <## "#biz: new member cath is connected",
do
bob <## "#biz: biz_1 added cath (Catherine) to the group (connecting...)"
bob <## "#biz: new member cath is connected"
]
-- both customers receive business profile change
biz ##> "/p business"
biz <## "user profile is changed to business (your 0 contacts are notified)"
biz <## "user profile is changed to business (your 1 contacts are notified)"
biz #> "#alisa hey"
concurrentlyN_
[ do
@@ -806,7 +834,28 @@ testBusinessUpdateProfiles = testChat3 businessProfile aliceProfile bobProfile $
do
bob <## "biz_1 updated group #biz:"
bob <## "changed to #business"
bob <# "#business business_1> hey"
bob <# "#business business_1> hey",
do
cath <## "contact biz changed to business"
cath <## "use @business <message> to send messages"
cath <# "#alisa business> hey"
]
biz ##> "/set voice #alisa on"
biz <## "updated group preferences:"
biz <## "Voice messages: on"
concurrentlyN_
[ do
alice <## "business_1 updated group #business:"
alice <## "updated group preferences:"
alice <## "Voice messages: on",
do
bob <## "business_1 updated group #business:"
bob <## "updated group preferences:"
bob <## "Voice messages: on",
do
cath <## "business updated group #alisa:"
cath <## "updated group preferences:"
cath <## "Voice messages: on"
]
testPlanAddressOkKnown :: HasCallStack => FilePath -> IO ()
@@ -2512,7 +2561,7 @@ testSetUITheme =
a <## "you've shared main profile with this contact"
a <## "connection not verified, use /code command to see security code"
a <## "quantum resistant end-to-end encryption"
a <## "peer chat protocol version range: (Version 1, Version 10)"
a <## "peer chat protocol version range: (Version 1, Version 11)"
groupInfo a = do
a <## "group ID: 1"
a <## "current members: 1"

Some files were not shown because too many files have changed in this diff Show More