Compare commits

...

27 commits

Author SHA1 Message Date
Evgeny
16cf91902c
blog: update v6.3 blog post (#5735) 2025-03-09 20:18:58 +00:00
Evgeny Poberezkin
ed625347bd
ios: v6.3, build 269 2025-03-09 16:08:49 +00:00
Stanislav Dmitrenko
4bd95c8e4e
ios: fix random crashes in chat on iOS 18 (#5734) 2025-03-09 11:22:47 +00:00
Evgeny
9dfa68bf57
blog: update v6.3 release post (#5733)
* blog: update v6.3 release post

* update post, server page

* update

* headers
2025-03-08 23:28:33 +00:00
sh
3188d9f087
docs: add reproducibility section (#5732) 2025-03-08 20:53:27 +00:00
Evgeny Poberezkin
89dddab060
6.3: ios 268, android 279, desktop 96 2025-03-07 18:18:43 +00:00
Stanislav Dmitrenko
f31372a771
android, desktop: fix link preview (#5725)
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2025-03-07 17:10:57 +00:00
Stanislav Dmitrenko
3412ceba01
android, desktop: fix group members duplicates (#5727)
* android, desktop: fix group members duplicates

* optimization

* use groupMemberId as key

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2025-03-07 16:49:55 +00:00
Stanislav Dmitrenko
27f63dafaa
ui: option to remove messages of removed members (#5717)
* ui: removing messages of removed members

* android

* fix android

* fix ios and refactor

* refactor android

* update

* update2

* remove ts

* android new logic

* refactor

* remove spaghetti

* if

* android

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2025-03-07 15:08:00 +00:00
Evgeny Poberezkin
e2d488266c
core: 6.3.0.8 (simplexmq 6.3.0.8) 2025-03-07 14:59:00 +00:00
spaced4ndy
430e212a9e
core: name limit (#5724)
* core: name limit

* ios

* trim spaces, test
2025-03-07 14:38:06 +00:00
spaced4ndy
47adbe2813
ui: fix strings, update translations (#5718)
* ios: fix strings

* update translations

* update report ru translations

* remove unnecessary localizations

* update ru translations

* update android translations

* import translations

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2025-03-07 12:50:44 +00:00
Stanislav Dmitrenko
cc2a45bdaf
android, desktop: expand moderated messages (#5722) 2025-03-07 11:16:56 +00:00
Stanislav Dmitrenko
ad4adf66ec
ios: fix small scroll on new message (#5721)
* ios: fix small scroll on new message

* added inset in calculation of offset
2025-03-07 09:19:37 +00:00
Evgeny
f53b21f8c6
ui: translations (#5719)
* Translated using Weblate (Portuguese)

Currently translated at 40.5% (946 of 2334 strings)

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

* Translated using Weblate (Italian)

Currently translated at 100.0% (2334 of 2334 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% (2065 of 2065 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2334 of 2334 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% (2065 of 2065 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (2334 of 2334 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (2065 of 2065 strings)

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

* Translated using Weblate (Czech)

Currently translated at 99.7% (2328 of 2334 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2334 of 2334 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% (2065 of 2065 strings)

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

* Translated using Weblate (Czech)

Currently translated at 99.8% (2331 of 2334 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (2334 of 2334 strings)

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

* Translated using Weblate (Arabic)

Currently translated at 27.2% (563 of 2065 strings)

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

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

Currently translated at 100.0% (2334 of 2334 strings)

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

* Translated using Weblate (Russian)

Currently translated at 98.6% (2302 of 2334 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% (2334 of 2334 strings)

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

* Translated using Weblate (Italian)

Currently translated at 100.0% (2342 of 2342 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2342 of 2342 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% (2065 of 2065 strings)

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

* Translated using Weblate (Arabic)

Currently translated at 100.0% (2342 of 2342 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 100.0% (2342 of 2342 strings)

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

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

Currently translated at 100.0% (2342 of 2342 strings)

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

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 92.5% (2167 of 2342 strings)

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

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 92.5% (2168 of 2342 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 28.7% (593 of 2065 strings)

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

* Translated using Weblate (Arabic)

Currently translated at 29.5% (610 of 2065 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (2342 of 2342 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2342 of 2342 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% (2065 of 2065 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2342 of 2342 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% (2065 of 2065 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2342 of 2342 strings)

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

* Translated using Weblate (Russian)

Currently translated at 100.0% (2342 of 2342 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.9% (2002 of 2065 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2065 of 2065 strings)

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

* Translated using Weblate (Russian)

Currently translated at 100.0% (2342 of 2342 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% (2065 of 2065 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2342 of 2342 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% (2065 of 2065 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 99.8% (2339 of 2342 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 99.8% (2061 of 2065 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 100.0% (2342 of 2342 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 100.0% (2065 of 2065 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2342 of 2342 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% (2065 of 2065 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 100.0% (2342 of 2342 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 100.0% (2065 of 2065 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2065 of 2065 strings)

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

* process localizations

---------

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Random <random-r@users.noreply.hosted.weblate.org>
Co-authored-by: summoner001 <summoner@vivaldi.net>
Co-authored-by: mlanp <github@lang.xyz>
Co-authored-by: zenobit <zenobit@disroot.org>
Co-authored-by: Gholamy-Muh <Algholamym@gmail.com>
Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: noname <zhuk2@duck.com>
Co-authored-by: jonnysemon <jonnysemon@users.noreply.hosted.weblate.org>
Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: João Moreira <jyj@gmx.ie>
Co-authored-by: J R <jr@simplex.chat>
Co-authored-by: No name <CertainBot@users.noreply.hosted.weblate.org>
2025-03-07 08:21:17 +00:00
Evgeny
2d203c1a18
Translated using Weblate (Russian) (#5720)
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/ru/

Co-authored-by: noname <zhuk2@duck.com>
2025-03-07 08:04:16 +00:00
Evgeny
a6631ce629
core: delete members with messages (#5711)
* core: delete members with messages (WIP)

* remove messages

* fix, test

* update query plans
2025-03-07 07:47:32 +00:00
spaced4ndy
5bef7349d8
ios: fix crash on migration to device (#5716)
* ios: fix crash on migration to device

* fix

* remove logs

* changes

* logs

* changes

---------

Co-authored-by: Avently <7953703+avently@users.noreply.github.com>
2025-03-07 07:06:39 +00:00
Evgeny Poberezkin
37050a99c9
android, desktop: add Catalan UI languages 2025-03-06 23:02:47 +00:00
Evgeny
ca31c9a5e9
blog: v6.3 announcement (#5714) 2025-03-06 22:59:32 +00:00
Stanislav Dmitrenko
a0560a5ad0
ios: fix search (#5715) 2025-03-06 11:28:26 +00:00
Stanislav Dmitrenko
a3a27b250c
ios: small fixes (#5712)
* ios: small fixes

* main thread

* fix crash

* fix member opening

* dismissing sheets in order

* theoretical fix of some crashes

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2025-03-06 10:31:05 +00:00
Stanislav Dmitrenko
7a3663f1e0
android, desktop: hovered item in chat (#5684)
* android, desktop: hovered item in chat

* circle background for button

* icon size

* change

* change

* comment

* refactor
2025-03-06 09:42:14 +00:00
Stanislav Dmitrenko
9dac472191
android, desktop: bulk actions with group members (#5708)
* android, desktop: bulk actions with group members

* fix layout

* fix update

* fix responsivenes when closing selecting bar

* events

* unused

* role
2025-03-05 15:01:44 +00:00
Evgeny
8c7df76c24
directory: command to disable all spam filters (#5709)
* directory: command to disable all spam filters

* correct syntax

* move deviceName to core opts
2025-03-05 11:20:30 +00:00
spaced4ndy
3425bd0826
ui: fix "View conditions" view on onboarding offering to accept conditions when no operators are selected (#5710)
* ios: fix "View conditions" view on onboarding

* kotlin
2025-03-05 07:42:59 +00:00
Stanislav Dmitrenko
257208a99b
ios: fix toolbar in chatList on iOS 15 (#5707) 2025-03-04 11:20:14 +00:00
145 changed files with 3712 additions and 2320 deletions

View file

@ -234,6 +234,10 @@ You can use SimpleX with your own servers and still communicate with people usin
Recent and important updates:
[Mar 8, 2025. SimpleX Chat v6.3: new user experience and safety in public groups](./blog/20250308-simplex-chat-v6-3-new-user-experience-safety-in-public-groups.md)
[Jan 14, 2025. SimpleX network: large groups and privacy-preserving content moderation](./blog/20250114-simplex-network-large-groups-privacy-preserving-content-moderation.md)
[Dec 10, 2024. SimpleX network: preset servers operated by Flux, business chats and more with v6.2 of the apps](./20241210-simplex-network-v6-2-servers-by-flux-business-chats.md)
[Oct 14, 2024. SimpleX network: security review of protocols design by Trail of Bits, v6.1 released with better calls and user experience.](./blog/20241014-simplex-network-v6-1-security-review-better-calls-user-experience.md)
@ -305,12 +309,13 @@ What is already implemented:
15. Manual messaging queue rotations to move conversation to another SMP relay.
16. Sending end-to-end encrypted files using [XFTP protocol](https://simplex.chat/blog/20230301-simplex-file-transfer-protocol.html).
17. Local files encryption.
18. [Reproducible server builds](./docs/SERVER.md#reproduce-builds).
We plan to add:
1. Automatic message queue rotation and redundancy. Currently the queues created between two users are used until the queue is manually changed by the user or contact is deleted. We are planning to add automatic queue rotation to make these identifiers temporary and rotate based on some schedule TBC (e.g., every X messages, or every X hours/days).
2. Message "mixing" - adding latency to message delivery, to protect against traffic correlation by message time.
3. Reproducible builds this is the limitation of the development stack, but we will be investing into solving this problem. Users can still build all applications and services from the source code.
3. Reproducible clients builds this is a complex problem, but we are aiming to have it in 2025 at least partially.
4. Recipients' XFTP relays to reduce traffic and conceal IP addresses from the relays chosen, and potentially controlled, by another party.
## For developers

View file

@ -303,8 +303,7 @@ struct ContentView: View {
case .updatedConditions:
UsageConditionsView(
currUserServers: Binding.constant([]),
userServers: Binding.constant([]),
updated: true
userServers: Binding.constant([])
)
.modifier(ThemedBackground(grouped: true))
.task { await setConditionsNotified_() }

View file

@ -624,6 +624,45 @@ final class ChatModel: ObservableObject {
VoiceItemState.stopVoiceInChatView(cInfo, cItem)
}
func removeMemberItems(_ removedMember: GroupMember, byMember: GroupMember, _ groupInfo: GroupInfo) {
// this should not happen, only another member can "remove" user, user can only "leave" (another event).
if byMember.groupMemberId == groupInfo.membership.groupMemberId {
logger.debug("exiting removeMemberItems")
return
}
if chatId == groupInfo.id {
for i in 0..<im.reversedChatItems.count {
if let updatedItem = removedUpdatedItem(im.reversedChatItems[i]) {
_updateChatItem(at: i, with: updatedItem)
}
}
} else if let chat = getChat(groupInfo.id),
chat.chatItems.count > 0,
let updatedItem = removedUpdatedItem(chat.chatItems[0]) {
chat.chatItems = [updatedItem]
}
func removedUpdatedItem(_ item: ChatItem) -> ChatItem? {
let newContent: CIContent
if case .groupSnd = item.chatDir, removedMember.groupMemberId == groupInfo.membership.groupMemberId {
newContent = .sndModerated
} else if case let .groupRcv(groupMember) = item.chatDir, groupMember.groupMemberId == removedMember.groupMemberId {
newContent = .rcvModerated
} else {
return nil
}
var updatedItem = item
updatedItem.meta.itemDeleted = .moderated(deletedTs: Date.now, byGroupMember: byMember)
if groupInfo.fullGroupPreferences.fullDelete.on {
updatedItem.content = newContent
}
if item.isActiveReport {
decreaseGroupReportsCounter(groupInfo.id)
}
return updatedItem
}
}
func nextChatItemData<T>(_ chatItemId: Int64, previous: Bool, map: @escaping (ChatItem) -> T?) -> T? {
guard var i = im.reversedChatItems.firstIndex(where: { $0.id == chatItemId }) else { return nil }
if previous {

View file

@ -341,9 +341,9 @@ func loadChat(chat: Chat, search: String = "", clearItems: Bool = true) async {
func loadChat(chatId: ChatId, search: String = "", openAroundItemId: ChatItem.ID? = nil, clearItems: Bool = true) async {
let m = ChatModel.shared
let im = ItemsModel.shared
m.chatItemStatuses = [:]
if clearItems {
await MainActor.run {
await MainActor.run {
m.chatItemStatuses = [:]
if clearItems {
im.reversedChatItems = []
ItemsModel.shared.chatItemsChangesListener.cleared()
}
@ -1588,9 +1588,9 @@ func apiJoinGroup(_ groupId: Int64) async throws -> JoinGroupResult {
}
}
func apiRemoveMembers(_ groupId: Int64, _ memberIds: [Int64]) async throws -> [GroupMember] {
let r = await chatSendCmd(.apiRemoveMembers(groupId: groupId, memberIds: memberIds), bgTask: false)
if case let .userDeletedMembers(_, _, members) = r { return members }
func apiRemoveMembers(_ groupId: Int64, _ memberIds: [Int64], _ withMessages: Bool = false) async throws -> [GroupMember] {
let r = await chatSendCmd(.apiRemoveMembers(groupId: groupId, memberIds: memberIds, withMessages: withMessages), bgTask: false)
if case let .userDeletedMembers(_, _, members, withMessages) = r { return members }
throw r
}
@ -2187,16 +2187,22 @@ func processReceivedMsg(_ res: ChatResponse) async {
_ = m.upsertGroupMember(groupInfo, member)
}
}
case let .deletedMemberUser(user, groupInfo, _): // TODO update user member
case let .deletedMemberUser(user, groupInfo, member, withMessages): // TODO update user member
if active(user) {
await MainActor.run {
m.updateGroup(groupInfo)
if withMessages {
m.removeMemberItems(groupInfo.membership, byMember: member, groupInfo)
}
}
}
case let .deletedMember(user, groupInfo, _, deletedMember):
case let .deletedMember(user, groupInfo, byMember, deletedMember, withMessages):
if active(user) {
await MainActor.run {
_ = m.upsertGroupMember(groupInfo, deletedMember)
if withMessages {
m.removeMemberItems(deletedMember, byMember: byMember, groupInfo)
}
}
}
case let .leftMember(user, groupInfo, member):

View file

@ -361,7 +361,7 @@ struct ActiveCallOverlay: View {
HStack {
Text(call.encryptionStatus)
if let connInfo = call.connectionInfo {
Text("(") + Text(connInfo.text) + Text(")")
Text(verbatim: "(") + Text(connInfo.text) + Text(verbatim: ")")
}
}
}
@ -390,7 +390,7 @@ struct ActiveCallOverlay: View {
HStack {
Text(call.encryptionStatus)
if let connInfo = call.connectionInfo {
Text("(") + Text(connInfo.text) + Text(")")
Text(verbatim: "(") + Text(connInfo.text) + Text(verbatim: ")")
}
}
}

View file

@ -21,9 +21,8 @@ struct CIMemberCreatedContactView: View {
if let contactId = groupMember.memberContactId {
memberCreatedContactView(openText: "Open")
.onTapGesture {
dismissAllSheets(animated: true)
DispatchQueue.main.async {
ItemsModel.shared.loadOpenChat("@\(contactId)")
ItemsModel.shared.loadOpenChat("@\(contactId)") {
dismissAllSheets(animated: true)
}
}
} else {

View file

@ -161,13 +161,13 @@ struct CIRcvDecryptionError: View {
let why = Text(decryptErrorReason)
switch msgDecryptError {
case .ratchetHeader:
message = Text("\(msgCount) messages failed to decrypt.") + Text("\n") + why
message = Text("\(msgCount) messages failed to decrypt.") + textNewLine + why
case .tooManySkipped:
message = Text("\(msgCount) messages skipped.") + Text("\n") + why
message = Text("\(msgCount) messages skipped.") + textNewLine + why
case .ratchetEarlier:
message = Text("\(msgCount) messages failed to decrypt.") + Text("\n") + why
message = Text("\(msgCount) messages failed to decrypt.") + textNewLine + why
case .other:
message = Text("\(msgCount) messages failed to decrypt.") + Text("\n") + why
message = Text("\(msgCount) messages failed to decrypt.") + textNewLine + why
case .ratchetSync:
message = Text("Encryption re-negotiation failed.")
}

View file

@ -31,8 +31,8 @@ struct IntegrityErrorItemView: View {
case .msgBadHash:
AlertManager.shared.showAlert(Alert(
title: Text("Bad message hash"),
message: Text("The hash of the previous message is different.") + Text("\n") +
Text(decryptErrorReason) + Text("\n") +
message: Text("The hash of the previous message is different.") + textNewLine +
Text(decryptErrorReason) + textNewLine +
Text("Please report it to the developers.")
))
case .msgBadId: msgBadIdAlert()
@ -47,7 +47,7 @@ struct IntegrityErrorItemView: View {
message: Text("""
The ID of the next message is incorrect (less or equal to the previous).
It can happen because of some bug or when the connection is compromised.
""") + Text("\n") +
""") + textNewLine +
Text("Please report it to the developers.")
))
}

View file

@ -21,7 +21,7 @@ private let typingIndicators: [Text] = [
]
private func typing(_ w: Font.Weight = .light) -> Text {
Text(".").fontWeight(w)
Text(verbatim: ".").fontWeight(w)
}
struct MsgContentView: View {
@ -88,7 +88,7 @@ struct MsgContentView: View {
}
private func reserveSpaceForMeta(_ mt: CIMeta) -> Text {
(rightToLeft ? Text("\n") : Text(verbatim: " ")) + ciMetaText(mt, chatTTL: chat.chatInfo.timedMessagesTTL, encrypted: nil, colorMode: .transparent, showViaProxy: showSentViaProxy, showTimesamp: showTimestamp)
(rightToLeft ? textNewLine : Text(verbatim: " ")) + ciMetaText(mt, chatTTL: chat.chatInfo.timedMessagesTTL, encrypted: nil, colorMode: .transparent, showViaProxy: showSentViaProxy, showTimesamp: showTimestamp)
}
}
@ -117,7 +117,7 @@ func messageText(_ text: String, _ formattedText: [FormattedText]?, _ sender: St
if let s = sender {
let t = Text(s)
return (preview ? t : t.fontWeight(.medium)) + Text(": ") + res
return (preview ? t : t.fontWeight(.medium)) + Text(verbatim: ": ") + res
} else {
return res
}
@ -170,7 +170,7 @@ private func formatText(_ ft: FormattedText, _ preview: Bool, showSecret: Bool,
}
private func mentionText(_ name: String) -> Text {
Text(name.contains(" @") ? "@'\(name)'" : "@\(name)").fontWeight(.semibold)
Text(verbatim: name.contains(" @") ? "@'\(name)'" : "@\(name)").fontWeight(.semibold)
}
private func linkText(_ s: String, _ link: String, _ preview: Bool, prefix: String, color: Color = Color(uiColor: uiLinkColor), uiColor: UIColor = uiLinkColor) -> Text {

View file

@ -354,8 +354,9 @@ struct ChatItemInfoView: View {
Button {
Task {
await MainActor.run {
ItemsModel.shared.loadOpenChat(forwardedFromItem.chatInfo.id)
dismiss()
ItemsModel.shared.loadOpenChat(forwardedFromItem.chatInfo.id) {
dismiss()
}
}
}
} label: {

View file

@ -494,7 +494,7 @@ struct ChatView: View {
Button ("Cancel") {
closeSearch()
Task { await loadChat(chat: chat) }
searchTextChanged("")
}
}
.padding(.horizontal)
@ -570,6 +570,14 @@ struct ChatView: View {
.onChange(of: im.reversedChatItems) { items in
mergedItems.boxedValue = MergedItems.create(items, revealedItems, im.chatState)
scrollView.updateItems(mergedItems.boxedValue.items)
if im.itemAdded {
im.itemAdded = false
if scrollView.listState.firstVisibleItemIndex < 2 {
scrollView.scrollToBottomAnimated()
} else {
scrollView.scroll(by: 34)
}
}
}
.onChange(of: revealedItems) { revealed in
mergedItems.boxedValue = MergedItems.create(im.reversedChatItems, revealed, im.chatState)
@ -585,33 +593,8 @@ struct ChatView: View {
.padding(.vertical, -100)
.onTapGesture { hideKeyboard() }
.onChange(of: searchText) { s in
guard showSearch else { return }
Task {
await loadChat(chat: chat, search: s)
mergedItems.boxedValue = MergedItems.create(im.reversedChatItems, revealedItems, im.chatState)
await MainActor.run {
scrollView.updateItems(mergedItems.boxedValue.items)
}
if !s.isEmpty {
scrollView.scrollToBottom()
} else if let index = scrollView.listState.items.lastIndex(where: { $0.hasUnread() }) {
// scroll to the top unread item
scrollView.scrollToItem(index)
loadLastItems($loadingMoreItems, loadingBottomItems: $loadingBottomItems, chat)
} else {
scrollView.scrollToBottom()
loadLastItems($loadingMoreItems, loadingBottomItems: $loadingBottomItems, chat)
}
}
}
.onChange(of: im.itemAdded) { added in
if added {
im.itemAdded = false
if scrollView.listState.firstVisibleItemIndex < 2 {
scrollView.scrollToBottomAnimated()
} else {
scrollView.scroll(by: 34)
}
if showSearch {
searchTextChanged(s)
}
}
}
@ -652,6 +635,26 @@ struct ChatView: View {
}
}
private func searchTextChanged(_ s: String) {
Task {
await loadChat(chat: chat, search: s)
mergedItems.boxedValue = MergedItems.create(im.reversedChatItems, revealedItems, im.chatState)
await MainActor.run {
scrollView.updateItems(mergedItems.boxedValue.items)
}
if !s.isEmpty {
scrollView.scrollToBottom()
} else if let index = scrollView.listState.items.lastIndex(where: { $0.hasUnread() }) {
// scroll to the top unread item
scrollView.scrollToItem(index)
loadLastItems($loadingMoreItems, loadingBottomItems: $loadingBottomItems, chat)
} else {
scrollView.scrollToBottom()
loadLastItems($loadingMoreItems, loadingBottomItems: $loadingBottomItems, chat)
}
}
}
class FloatingButtonModel: ObservableObject {
@Published var unreadAbove: Int = 0
@Published var unreadBelow: Int = 0
@ -1317,6 +1320,9 @@ struct ChatView: View {
var unreadMentions: Int = 0
for i in range {
if i < 0 || i >= im.reversedChatItems.count {
break
}
let ci = im.reversedChatItems[i]
if ci.isRcvNew {
unreadItems.append(ci.id)
@ -2368,7 +2374,7 @@ struct ReactionContextMenu: View {
@ViewBuilder private func groupMemberReactionList() -> some View {
if memberReactions.isEmpty {
ForEach(Array(repeating: 0, count: reactionCount.totalReacted), id: \.self) { _ in
Text(verbatim: " ")
textSpace
}
} else {
ForEach(memberReactions, id: \.groupMember.groupMemberId) { mr in

View file

@ -517,7 +517,7 @@ class EndlessScrollView<ScrollItem>: UIScrollView, UIScrollViewDelegate, UIGestu
let y = if top {
min(estimatedContentHeight.bottomOffsetY - bounds.height, item.view.frame.origin.y - insetTop)
} else {
max(estimatedContentHeight.topOffsetY - insetTop, item.view.frame.origin.y + item.view.bounds.height - bounds.height + insetBottom)
max(estimatedContentHeight.topOffsetY - insetTop - insetBottom, item.view.frame.origin.y + item.view.bounds.height - bounds.height + insetBottom)
}
setContentOffset(CGPointMake(contentOffset.x, y), animated: false)
scrollBarView.flashScrollIndicators()
@ -568,7 +568,7 @@ class EndlessScrollView<ScrollItem>: UIScrollView, UIScrollViewDelegate, UIGestu
let y = if top {
min(estimatedContentHeight.bottomOffsetY - bounds.height, item.view.frame.origin.y - insetTop)
} else {
max(estimatedContentHeight.topOffsetY - insetTop, item.view.frame.origin.y + item.view.bounds.height - bounds.height + insetBottom)
max(estimatedContentHeight.topOffsetY - insetTop - insetBottom, item.view.frame.origin.y + item.view.bounds.height - bounds.height + insetBottom)
}
setContentOffset(CGPointMake(contentOffset.x, y), animated: true)
scrollBarView.flashScrollIndicators()
@ -632,7 +632,7 @@ class EndlessScrollView<ScrollItem>: UIScrollView, UIScrollViewDelegate, UIGestu
}
(view as? ReusableView)?.prepareForReuse()
view.isHidden = true
DispatchQueue.main.asyncAfter(deadline: .now() + 0.05) {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) {
if view.isHidden { view.removeFromSuperview() }
}
}

View file

@ -392,7 +392,7 @@ struct GroupMemberInfoView: View {
await MainActor.run {
progressIndicator = false
chatModel.addChat(Chat(chatInfo: .direct(contact: memberContact)))
ItemsModel.shared.loadOpenChat("@\(memberContact.id)") {
ItemsModel.shared.loadOpenChat(memberContact.id) {
dismissAllSheets(animated: true)
}
NetworkModel.shared.setContactNetworkStatus(memberContact, .connected)

View file

@ -595,8 +595,9 @@ struct ChatListNavLink: View {
Task {
let ok = await connectContactViaAddress(contact.contactId, incognito, showAlert: { AlertManager.shared.showAlert($0) })
if ok {
ItemsModel.shared.loadOpenChat(contact.id)
AlertManager.shared.showAlert(connReqSentAlert(.contact))
ItemsModel.shared.loadOpenChat(contact.id) {
AlertManager.shared.showAlert(connReqSentAlert(.contact))
}
}
}
}

View file

@ -148,7 +148,10 @@ struct ChatListView: View {
@State private var userPickerShown: Bool = false
@State private var sheet: SomeSheet<AnyView>? = nil
@StateObject private var chatTagsModel = ChatTagsModel.shared
// iOS 15 is required it to show/hide toolbar while chat is hidden/visible
@State private var viewOnScreen = true
@AppStorage(GROUP_DEFAULT_ONE_HAND_UI, store: groupDefaults) private var oneHandUI = true
@AppStorage(DEFAULT_ONE_HAND_UI_CARD_SHOWN) private var oneHandUICardShown = false
@AppStorage(DEFAULT_ADDRESS_CREATION_CARD_SHOWN) private var addressCreationCardShown = false
@ -203,7 +206,17 @@ struct ChatListView: View {
.navigationBarHidden(searchMode || oneHandUI)
}
.scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center)
.onDisappear() { activeUserPickerSheet = nil }
.onAppear {
if #unavailable(iOS 16.0), !viewOnScreen {
viewOnScreen = true
}
}
.onDisappear {
activeUserPickerSheet = nil
if #unavailable(iOS 16.0) {
viewOnScreen = false
}
}
.refreshable {
AlertManager.shared.showAlert(Alert(
title: Text("Reconnect servers?"),
@ -258,7 +271,7 @@ struct ChatListView: View {
}
} else {
if oneHandUI {
content().toolbar { bottomToolbarGroup }
content().toolbar { bottomToolbarGroup() }
} else {
content().toolbar { topToolbar }
}
@ -286,9 +299,9 @@ struct ChatListView: View {
}
}
@ToolbarContentBuilder var bottomToolbarGroup: some ToolbarContent {
@ToolbarContentBuilder func bottomToolbarGroup() -> some ToolbarContent {
let padding: Double = Self.hasHomeIndicator ? 0 : 14
ToolbarItemGroup(placement: .bottomBar) {
ToolbarItemGroup(placement: viewOnScreen ? .bottomBar : .principal) {
leadingToolbarItem.padding(.bottom, padding)
Spacer()
SubsStatusIndicator().padding(.bottom, padding)

View file

@ -587,7 +587,7 @@ struct SMPStatsView: View {
} header: {
Text("Statistics")
} footer: {
Text("Starting from \(localTimestamp(statsStartedAt)).") + Text("\n") + Text("All data is kept private on your device.")
Text("Starting from \(localTimestamp(statsStartedAt)).") + textNewLine + Text("All data is kept private on your device.")
}
}
}
@ -703,7 +703,7 @@ struct XFTPStatsView: View {
} header: {
Text("Statistics")
} footer: {
Text("Starting from \(localTimestamp(statsStartedAt)).") + Text("\n") + Text("All data is kept private on your device.")
Text("Starting from \(localTimestamp(statsStartedAt)).") + textNewLine + Text("All data is kept private on your device.")
}
}
}

View file

@ -61,7 +61,7 @@ struct TagListView: View {
Button {
showAlert(
NSLocalizedString("Delete list?", comment: "alert title"),
message: NSLocalizedString("All chats will be removed from the list \(text), and the list deleted.", comment: "alert message"),
message: String.localizedStringWithFormat(NSLocalizedString("All chats will be removed from the list %@, and the list deleted.", comment: "alert message"), text),
actions: {[
UIAlertAction(
title: NSLocalizedString("Cancel", comment: "alert action"),

View file

@ -188,8 +188,7 @@ struct ContactListNavLink: View {
Task {
let ok = await connectContactViaAddress(contact.contactId, incognito, showAlert: { alert = SomeAlert(alert: $0, id: "ContactListNavLink connectContactViaAddress") })
if ok {
ItemsModel.shared.loadOpenChat(contact.id)
DispatchQueue.main.async {
ItemsModel.shared.loadOpenChat(contact.id) {
dismissAllSheets(animated: true) {
AlertManager.shared.showAlert(connReqSentAlert(.contact))
}

View file

@ -141,7 +141,7 @@ struct DatabaseErrorView: View {
}
private func migrationsText(_ ms: [String]) -> some View {
(Text("Migrations:").font(.subheadline) + Text(verbatim: "\n") + Text(ms.joined(separator: "\n")).font(.caption))
(Text("Migrations:").font(.subheadline) + textNewLine + Text(ms.joined(separator: "\n")).font(.caption))
.multilineTextAlignment(.center)
.padding(.horizontal, 25)
}

View file

@ -279,7 +279,7 @@ struct DatabaseView: View {
case let .archiveExportedWithErrors(archivePath, errs):
return Alert(
title: Text("Chat database exported"),
message: Text("You may save the exported archive.") + Text(verbatim: "\n") + Text("Some file(s) were not exported:") + Text(archiveErrorsText(errs)),
message: Text("You may save the exported archive.") + textNewLine + Text("Some file(s) were not exported:") + Text(archiveErrorsText(errs)),
dismissButton: .default(Text("Continue")) {
showShareSheet(items: [archivePath])
}

View file

@ -177,7 +177,7 @@ struct MigrateFromDevice: View {
case let .archiveExportedWithErrors(archivePath, errs):
return Alert(
title: Text("Chat database exported"),
message: Text("You may migrate the exported database.") + Text(verbatim: "\n") + Text("Some file(s) were not exported:") + Text(archiveErrorsText(errs)),
message: Text("You may migrate the exported database.") + textNewLine + Text("Some file(s) were not exported:") + Text(archiveErrorsText(errs)),
dismissButton: .default(Text("Continue")) {
Task { await uploadArchive(path: archivePath) }
}

View file

@ -539,7 +539,7 @@ struct MigrateToDevice: View {
chatInitControllerRemovingDatabases()
} else if ChatModel.shared.chatRunning == true {
// cannot delete storage if chat is running
try await apiStopChat()
try await stopChatAsync()
}
try await apiDeleteStorage()
try? FileManager.default.createDirectory(at: getWallpaperDirectory(), withIntermediateDirectories: true)
@ -623,7 +623,7 @@ struct MigrateToDevice: View {
AlertManager.shared.showAlert(
Alert(
title: Text("Error migrating settings"),
message: Text ("Some app settings were not migrated.") + Text("\n") + Text(responseError(error)))
message: Text ("Some app settings were not migrated.") + textNewLine + Text(responseError(error)))
)
}
hideView()
@ -632,6 +632,8 @@ struct MigrateToDevice: View {
private func hideView() {
onboardingStageDefault.set(.onboardingComplete)
m.onboardingStage = .onboardingComplete
m.migrationState = nil
MigrationToDeviceState.save(nil)
dismiss()
}

View file

@ -1205,12 +1205,14 @@ func openKnownContact(_ contact: Contact, dismiss: Bool, showAlreadyExistsAlert:
DispatchQueue.main.async {
if dismiss {
dismissAllSheets(animated: true) {
ItemsModel.shared.loadOpenChat(c.id)
showAlreadyExistsAlert?()
ItemsModel.shared.loadOpenChat(c.id) {
showAlreadyExistsAlert?()
}
}
} else {
ItemsModel.shared.loadOpenChat(c.id)
showAlreadyExistsAlert?()
ItemsModel.shared.loadOpenChat(c.id) {
showAlreadyExistsAlert?()
}
}
}
}
@ -1224,12 +1226,14 @@ func openKnownGroup(_ groupInfo: GroupInfo, dismiss: Bool, showAlreadyExistsAler
DispatchQueue.main.async {
if dismiss {
dismissAllSheets(animated: true) {
ItemsModel.shared.loadOpenChat(g.id)
showAlreadyExistsAlert?()
ItemsModel.shared.loadOpenChat(g.id) {
showAlreadyExistsAlert?()
}
}
} else {
ItemsModel.shared.loadOpenChat(g.id)
showAlreadyExistsAlert?()
ItemsModel.shared.loadOpenChat(g.id) {
showAlreadyExistsAlert?()
}
}
}
}

View file

@ -161,12 +161,8 @@ struct ChooseServerOperators: View {
case .showInfo:
ChooseServerOperatorsInfoView()
case .showConditions:
UsageConditionsView(
currUserServers: Binding.constant([]),
userServers: Binding.constant([]),
updated: false
)
.modifier(ThemedBackground(grouped: true))
SimpleConditionsView()
.modifier(ThemedBackground(grouped: true))
}
}
.frame(maxHeight: .infinity, alignment: .top)

View file

@ -145,6 +145,7 @@ struct CreateFirstProfile: View {
TextField("Enter your name…", text: $displayName)
.focused($focusDisplayName)
.padding(.horizontal)
.padding(.trailing, 20)
.padding(.vertical, 10)
.background(
RoundedRectangle(cornerRadius: 10, style: .continuous)

View file

@ -140,6 +140,8 @@ struct SimpleXInfo: View {
let textSpace = Text(verbatim: " ")
let textNewLine = Text(verbatim: "\n")
struct SimpleXInfo_Previews: PreviewProvider {
static var previews: some View {
SimpleXInfo(onboarding: true)

View file

@ -542,7 +542,7 @@ private let versionDescriptions: [VersionDescription] = [
),
VersionDescription(
version: "v6.3",
// post: URL(string: "https://simplex.chat/blog/20241210-simplex-network-v6-2-servers-by-flux-business-chats.html"),
post: URL(string: "https://simplex.chat/blog/20250308-simplex-chat-v6-3-new-user-experience-safety-in-public-groups.html"),
features: [
.feature(Description(
icon: "at",
@ -647,8 +647,7 @@ struct WhatsNewView: View {
case .showConditions:
UsageConditionsView(
currUserServers: Binding.constant([]),
userServers: Binding.constant([]),
updated: true
userServers: Binding.constant([])
)
.modifier(ThemedBackground(grouped: true))
}

View file

@ -19,7 +19,7 @@ struct MarkdownHelp: View {
mdFormat("_italic_", Text("italic").italic())
mdFormat("~strike~", Text("strike").strikethrough())
mdFormat("`a + b`", Text("`a + b`").font(.body.monospaced()))
mdFormat("!1 colored!", Text("colored").foregroundColor(.red) + Text(" (") + color("1", .red) + color("2", .green) + color("3", .blue) + color("4", .yellow) + color("5", .cyan) + Text("6").foregroundColor(.purple) + Text(")"))
mdFormat("!1 colored!", Text("colored").foregroundColor(.red) + Text(verbatim: " (") + color("1", .red) + color("2", .green) + color("3", .blue) + color("4", .yellow) + color("5", .cyan) + Text("6").foregroundColor(.purple) + Text(verbatim: ")"))
(
mdFormat("#secret#", Text("secret")
.foregroundColor(.clear)
@ -39,7 +39,7 @@ private func mdFormat(_ format: LocalizedStringKey, _ example: Text) -> some Vie
}
private func color(_ s: String, _ c: Color) -> Text {
Text(s).foregroundColor(c) + Text(", ")
Text(s).foregroundColor(c) + Text(verbatim: ", ")
}
struct MarkdownHelp_Previews: PreviewProvider {

View file

@ -368,8 +368,8 @@ struct AdvancedNetworkSettings: View {
let userMode = Text("A separate TCP connection will be used **for each chat profile you have in the app**.")
return switch mode {
case .user: userMode
case .session: userMode + Text("\n") + Text("New SOCKS credentials will be used every time you start the app.")
case .server: userMode + Text("\n") + Text("New SOCKS credentials will be used for each server.")
case .session: userMode + textNewLine + Text("New SOCKS credentials will be used every time you start the app.")
case .server: userMode + textNewLine + Text("New SOCKS credentials will be used for each server.")
case .entity: Text("A separate TCP connection will be used **for each contact and group member**.\n**Please note**: if you have many connections, your battery and traffic consumption can be substantially higher and some connections may fail.")
}
}

View file

@ -20,11 +20,11 @@ private enum NetworkAlert: Identifiable {
}
private enum NetworkAndServersSheet: Identifiable {
case showConditions(updated: Bool)
case showConditions
var id: String {
switch self {
case let .showConditions(updated): return "showConditions \(updated)"
case .showConditions: return "showConditions"
}
}
}
@ -169,11 +169,10 @@ struct NetworkAndServers: View {
}
.sheet(item: $sheetItem) { item in
switch item {
case let .showConditions(updated):
case .showConditions:
UsageConditionsView(
currUserServers: $ss.servers.currUserServers,
userServers: $ss.servers.userServers,
updated: updated
userServers: $ss.servers.userServers
)
.modifier(ThemedBackground(grouped: true))
}
@ -219,8 +218,7 @@ struct NetworkAndServers: View {
private func conditionsButton(_ conditionsAction: UsageConditionsAction) -> some View {
Button {
let updated = if case .review = conditionsAction { true } else { false }
sheetItem = .showConditions(updated: updated)
sheetItem = .showConditions
} label: {
switch conditionsAction {
case .review:
@ -237,30 +235,26 @@ struct UsageConditionsView: View {
@EnvironmentObject var theme: AppTheme
@Binding var currUserServers: [UserOperatorServers]
@Binding var userServers: [UserOperatorServers]
var updated: Bool
var body: some View {
VStack(alignment: .leading, spacing: 20) {
HStack {
if updated {
Text("Updated conditions").font(.largeTitle).bold()
} else {
Text("Conditions of use").font(.largeTitle).bold()
Spacer()
conditionsLinkButton()
}
}
.padding(.top)
.padding(.top)
switch ChatModel.shared.conditions.conditionsAction {
case .none:
regularConditionsHeader()
.padding(.top)
.padding(.top)
ConditionsTextView()
.padding(.bottom)
.padding(.bottom)
case let .review(operators, deadline, _):
HStack {
Text("Updated conditions").font(.largeTitle).bold()
}
.padding(.top)
.padding(.top)
Text("Conditions will be accepted for the operator(s): **\(operators.map { $0.legalName_ }.joined(separator: ", "))**.")
ConditionsTextView()
VStack(spacing: 8) {
@ -272,10 +266,8 @@ struct UsageConditionsView: View {
.multilineTextAlignment(.center)
.frame(maxWidth: .infinity, alignment: .center)
.padding(.horizontal, 32)
if updated {
conditionsDiffButton(.footnote)
}
} else if updated {
conditionsDiffButton(.footnote)
} else {
conditionsDiffButton()
.padding(.top)
}
@ -285,6 +277,9 @@ struct UsageConditionsView: View {
case let .accepted(operators):
regularConditionsHeader()
.padding(.top)
.padding(.top)
Text("Conditions are accepted for the operator(s): **\(operators.map { $0.legalName_ }.joined(separator: ", "))**.")
ConditionsTextView()
.padding(.bottom)
@ -340,6 +335,30 @@ struct UsageConditionsView: View {
}
}
private func regularConditionsHeader() -> some View {
HStack {
Text("Conditions of use").font(.largeTitle).bold()
Spacer()
conditionsLinkButton()
}
}
struct SimpleConditionsView: View {
var body: some View {
VStack(alignment: .leading, spacing: 20) {
regularConditionsHeader()
.padding(.top)
.padding(.top)
ConditionsTextView()
.padding(.bottom)
.padding(.bottom)
}
.padding(.horizontal, 25)
.frame(maxHeight: .infinity)
}
}
func validateServers_(_ userServers: Binding<[UserOperatorServers]>, _ serverErrors: Binding<[UserServersError]>) {
let userServersToValidate = userServers.wrappedValue
Task {

View file

@ -528,7 +528,7 @@ struct ProfilePreview: View {
func profileName(_ profileOf: NamedChat) -> Text {
var t = Text(profileOf.displayName).fontWeight(.semibold).font(.title2)
if profileOf.fullName != "" && profileOf.fullName != profileOf.displayName {
t = t + Text(" (" + profileOf.fullName + ")")
t = t + Text(verbatim: " (" + profileOf.fullName + ")")
// .font(.callout)
}
return t

View file

@ -33,7 +33,7 @@ struct StorageView: View {
private func directoryView(_ name: LocalizedStringKey, _ contents: [String: Int64]) -> some View {
Text(name).font(.headline)
ForEach(Array(contents), id: \.key) { (key, value) in
Text(key).bold() + Text(" ") + Text("\(ByteCountFormatter.string(fromByteCount: value, countStyle: .binary))")
Text(key).bold() + Text(verbatim: " ") + Text((ByteCountFormatter.string(fromByteCount: value, countStyle: .binary)))
}
}

View file

@ -5,22 +5,6 @@
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="15.4" build-num="15F31d"/>
</header>
<body>
<trans-unit id="&#10;" xml:space="preserve">
<source>
</source>
<target>
</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" " xml:space="preserve">
<source> </source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (" xml:space="preserve">
<source> (</source>
<target> (</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (can be copied)" xml:space="preserve">
<source> (can be copied)</source>
<target> (може да се копира)</target>
@ -323,11 +307,6 @@
<target>%u пропуснати съобщения.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(" xml:space="preserve">
<source>(</source>
<target>(</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(new)" xml:space="preserve">
<source>(new)</source>
<target>(ново)</target>
@ -338,11 +317,6 @@
<target>(това устройство v%@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=")" xml:space="preserve">
<source>)</source>
<target>)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Create 1-time link**: to create and share a new invitation link." xml:space="preserve">
<source>**Create 1-time link**: to create and share a new invitation link.</source>
<target>**Добави контакт**: за създаване на нов линк.</target>
@ -407,11 +381,6 @@
<target>\*удебелен*</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=", " xml:space="preserve">
<source>, </source>
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@ -448,11 +417,6 @@
- история на редактиране.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="." xml:space="preserve">
<source>.</source>
<target>.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="0 sec" xml:space="preserve">
<source>0 sec</source>
<target>0 сек</target>
@ -519,11 +483,6 @@
<target>30 секунди</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=": " xml:space="preserve">
<source>: </source>
<target>: </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="&lt;p&gt;Hi!&lt;/p&gt;&#10;&lt;p&gt;&lt;a href=&quot;%@&quot;&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;" xml:space="preserve">
<source>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;&lt;a href="%@"&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;</source>
@ -531,14 +490,6 @@
&lt;p&gt;&lt;a href="%@"&gt;Свържете се с мен чрез SimpleX Chat&lt;/a&gt;&lt;/p&gt;</target>
<note>email text</note>
</trans-unit>
<trans-unit id="@%@" xml:space="preserve">
<source>@%@</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="@'%@'" xml:space="preserve">
<source>@'%@'</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="A few more things" xml:space="preserve">
<source>A few more things</source>
<target>Още няколко неща</target>
@ -780,8 +731,8 @@
<target>Всички чатове и съобщения ще бъдат изтрити - това не може да бъде отменено!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All chats will be removed from the list (text), and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list (text), and the list deleted.</source>
<trans-unit id="All chats will be removed from the list %@, and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list %@, and the list deleted.</source>
<note>alert message</note>
</trans-unit>
<trans-unit id="All data is erased when it is entered." xml:space="preserve">
@ -3495,9 +3446,9 @@ This is your own one-time link!</source>
%@</source>
<note>alert message</note>
</trans-unit>
<trans-unit id="File is blocked by server operator:&#10;(info.reason.text)." xml:space="preserve">
<trans-unit id="File is blocked by server operator:&#10;%@." xml:space="preserve">
<source>File is blocked by server operator:
(info.reason.text).</source>
%@.</source>
<note>file error text</note>
</trans-unit>
<trans-unit id="File not found - most likely file was deleted or cancelled." xml:space="preserve">
@ -6106,8 +6057,8 @@ Enable in *Network &amp; servers* settings.</source>
<source>Report violation: only group moderators will see it.</source>
<note>report reason</note>
</trans-unit>
<trans-unit id="Report: (text.isEmpty ? reason.text : text)" xml:space="preserve">
<source>Report: (text.isEmpty ? reason.text : text)</source>
<trans-unit id="Report: %@" xml:space="preserve">
<source>Report: %@</source>
<note>report in notification</note>
</trans-unit>
<trans-unit id="Reporting messages to moderators is prohibited." xml:space="preserve">

View file

@ -5,22 +5,6 @@
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="15.4" build-num="15F31d"/>
</header>
<body>
<trans-unit id="&#10;" xml:space="preserve">
<source>
</source>
<target>
</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" " xml:space="preserve">
<source> </source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (" xml:space="preserve">
<source> (</source>
<target> (</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (can be copied)" xml:space="preserve">
<source> (can be copied)</source>
<target> (lze kopírovat)</target>
@ -321,11 +305,6 @@
<target>%u zpráv přeskočeno.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(" xml:space="preserve">
<source>(</source>
<target>(</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(new)" xml:space="preserve">
<source>(new)</source>
<note>No comment provided by engineer.</note>
@ -335,11 +314,6 @@
<target>(toto zařízení v%@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=")" xml:space="preserve">
<source>)</source>
<target>)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Create 1-time link**: to create and share a new invitation link." xml:space="preserve">
<source>**Create 1-time link**: to create and share a new invitation link.</source>
<note>No comment provided by engineer.</note>
@ -400,11 +374,6 @@
<target>\*tučně*</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=", " xml:space="preserve">
<source>, </source>
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@ -438,11 +407,6 @@
- historie úprav.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="." xml:space="preserve">
<source>.</source>
<target>.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="0 sec" xml:space="preserve">
<source>0 sec</source>
<note>time to disappear</note>
@ -507,11 +471,6 @@
<target>30 vteřin</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=": " xml:space="preserve">
<source>: </source>
<target>: </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="&lt;p&gt;Hi!&lt;/p&gt;&#10;&lt;p&gt;&lt;a href=&quot;%@&quot;&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;" xml:space="preserve">
<source>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;&lt;a href="%@"&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;</source>
@ -519,14 +478,6 @@
&lt;p&gt;&lt;a href="%@"&gt; Připojte se ke mne přes SimpleX Chat&lt;/a&gt;&lt;/p&gt;</target>
<note>email text</note>
</trans-unit>
<trans-unit id="@%@" xml:space="preserve">
<source>@%@</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="@'%@'" xml:space="preserve">
<source>@'%@'</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="A few more things" xml:space="preserve">
<source>A few more things</source>
<target>Ještě pár věcí</target>
@ -749,8 +700,8 @@
<target>Všechny chaty a zprávy budou smazány tuto akci nelze vrátit zpět!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All chats will be removed from the list (text), and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list (text), and the list deleted.</source>
<trans-unit id="All chats will be removed from the list %@, and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list %@, and the list deleted.</source>
<note>alert message</note>
</trans-unit>
<trans-unit id="All data is erased when it is entered." xml:space="preserve">
@ -3352,9 +3303,9 @@ This is your own one-time link!</source>
%@</source>
<note>alert message</note>
</trans-unit>
<trans-unit id="File is blocked by server operator:&#10;(info.reason.text)." xml:space="preserve">
<trans-unit id="File is blocked by server operator:&#10;%@." xml:space="preserve">
<source>File is blocked by server operator:
(info.reason.text).</source>
%@.</source>
<note>file error text</note>
</trans-unit>
<trans-unit id="File not found - most likely file was deleted or cancelled." xml:space="preserve">
@ -5877,8 +5828,8 @@ Enable in *Network &amp; servers* settings.</source>
<source>Report violation: only group moderators will see it.</source>
<note>report reason</note>
</trans-unit>
<trans-unit id="Report: (text.isEmpty ? reason.text : text)" xml:space="preserve">
<source>Report: (text.isEmpty ? reason.text : text)</source>
<trans-unit id="Report: %@" xml:space="preserve">
<source>Report: %@</source>
<note>report in notification</note>
</trans-unit>
<trans-unit id="Reporting messages to moderators is prohibited." xml:space="preserve">

View file

@ -5,23 +5,6 @@
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="15.4" build-num="15F31d"/>
</header>
<body>
<trans-unit id="&#10;" xml:space="preserve">
<source>
</source>
<target>
</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" " xml:space="preserve">
<source> </source>
<target> </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (" xml:space="preserve">
<source> (</source>
<target> (</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (can be copied)" xml:space="preserve">
<source> (can be copied)</source>
<target> (kann kopiert werden)</target>
@ -332,11 +315,6 @@
<target>%u übersprungene Nachrichten.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(" xml:space="preserve">
<source>(</source>
<target>(</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(new)" xml:space="preserve">
<source>(new)</source>
<target>(Neu)</target>
@ -347,11 +325,6 @@
<target>(Dieses Gerät hat v%@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=")" xml:space="preserve">
<source>)</source>
<target>)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Create 1-time link**: to create and share a new invitation link." xml:space="preserve">
<source>**Create 1-time link**: to create and share a new invitation link.</source>
<target>**Kontakt hinzufügen**: Um einen neuen Einladungslink zu erstellen.</target>
@ -417,11 +390,6 @@
<target>\*fett*</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=", " xml:space="preserve">
<source>, </source>
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@ -458,11 +426,6 @@
- Nachrichtenverlauf bearbeiten</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="." xml:space="preserve">
<source>.</source>
<target>.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="0 sec" xml:space="preserve">
<source>0 sec</source>
<target>0 sek</target>
@ -531,11 +494,6 @@
<target>30 Sekunden</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=": " xml:space="preserve">
<source>: </source>
<target>: </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="&lt;p&gt;Hi!&lt;/p&gt;&#10;&lt;p&gt;&lt;a href=&quot;%@&quot;&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;" xml:space="preserve">
<source>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;&lt;a href="%@"&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;</source>
@ -543,16 +501,6 @@
&lt;p&gt;&lt;a href="%@"&gt;Verbinden Sie sich per SimpleX Chat mit mir&lt;/a&gt;&lt;/p&gt;</target>
<note>email text</note>
</trans-unit>
<trans-unit id="@%@" xml:space="preserve">
<source>@%@</source>
<target>@%@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="@'%@'" xml:space="preserve">
<source>@'%@'</source>
<target>@'%@'</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="A few more things" xml:space="preserve">
<source>A few more things</source>
<target>Ein paar weitere Dinge</target>
@ -798,9 +746,9 @@
<target>Es werden alle Chats und Nachrichten gelöscht. Dies kann nicht rückgängig gemacht werden!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All chats will be removed from the list (text), and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list (text), and the list deleted.</source>
<target>Alle Chats werden von der Liste (text) entfernt und danach wird die Liste gelöscht.</target>
<trans-unit id="All chats will be removed from the list %@, and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list %@, and the list deleted.</source>
<target>Alle Chats werden von der Liste %@ entfernt und danach wird die Liste gelöscht.</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="All data is erased when it is entered." xml:space="preserve">
@ -3663,11 +3611,11 @@ Das ist Ihr eigener Einmal-Link!</target>
%@</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="File is blocked by server operator:&#10;(info.reason.text)." xml:space="preserve">
<trans-unit id="File is blocked by server operator:&#10;%@." xml:space="preserve">
<source>File is blocked by server operator:
(info.reason.text).</source>
%@.</source>
<target>Datei wurde vom Server-Betreiber blockiert:
(info.reason.text).</target>
%@.</target>
<note>file error text</note>
</trans-unit>
<trans-unit id="File not found - most likely file was deleted or cancelled." xml:space="preserve">
@ -6448,9 +6396,9 @@ Aktivieren Sie es in den *Netzwerk &amp; Server* Einstellungen.</target>
<target>Verstoß melden: Nur Gruppenmoderatoren werden es sehen.</target>
<note>report reason</note>
</trans-unit>
<trans-unit id="Report: (text.isEmpty ? reason.text : text)" xml:space="preserve">
<source>Report: (text.isEmpty ? reason.text : text)</source>
<target>Meldung: (text.isEmpty ? reason.text : text)</target>
<trans-unit id="Report: %@" xml:space="preserve">
<source>Report: %@</source>
<target>Meldung: %@</target>
<note>report in notification</note>
</trans-unit>
<trans-unit id="Reporting messages to moderators is prohibited." xml:space="preserve">
@ -8261,6 +8209,7 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s
</trans-unit>
<trans-unit id="Updated conditions" xml:space="preserve">
<source>Updated conditions</source>
<target>Aktualisierte Nutzungsbedingungen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating settings will re-connect the client to all servers." xml:space="preserve">
@ -9842,10 +9791,12 @@ Verbindungsanfrage wiederholen?</target>
</trans-unit>
<trans-unit id="pending" xml:space="preserve">
<source>pending</source>
<target>ausstehend</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="pending approval" xml:space="preserve">
<source>pending approval</source>
<target>ausstehende Genehmigung</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="quantum resistant e2e encryption" xml:space="preserve">
@ -9865,6 +9816,7 @@ Verbindungsanfrage wiederholen?</target>
</trans-unit>
<trans-unit id="rejected" xml:space="preserve">
<source>rejected</source>
<target>abgelehnt</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="rejected call" xml:space="preserve">

View file

@ -5,23 +5,6 @@
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="15.4" build-num="15F31d"/>
</header>
<body>
<trans-unit id="&#10;" xml:space="preserve">
<source>
</source>
<target>
</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" " xml:space="preserve">
<source> </source>
<target> </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (" xml:space="preserve">
<source> (</source>
<target> (</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (can be copied)" xml:space="preserve">
<source> (can be copied)</source>
<target> (can be copied)</target>
@ -332,11 +315,6 @@
<target>%u messages skipped.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(" xml:space="preserve">
<source>(</source>
<target>(</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(new)" xml:space="preserve">
<source>(new)</source>
<target>(new)</target>
@ -347,11 +325,6 @@
<target>(this device v%@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=")" xml:space="preserve">
<source>)</source>
<target>)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Create 1-time link**: to create and share a new invitation link." xml:space="preserve">
<source>**Create 1-time link**: to create and share a new invitation link.</source>
<target>**Create 1-time link**: to create and share a new invitation link.</target>
@ -417,11 +390,6 @@
<target>\*bold*</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=", " xml:space="preserve">
<source>, </source>
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@ -458,11 +426,6 @@
- editing history.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="." xml:space="preserve">
<source>.</source>
<target>.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="0 sec" xml:space="preserve">
<source>0 sec</source>
<target>0 sec</target>
@ -531,11 +494,6 @@
<target>30 seconds</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=": " xml:space="preserve">
<source>: </source>
<target>: </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="&lt;p&gt;Hi!&lt;/p&gt;&#10;&lt;p&gt;&lt;a href=&quot;%@&quot;&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;" xml:space="preserve">
<source>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;&lt;a href="%@"&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;</source>
@ -543,16 +501,6 @@
&lt;p&gt;&lt;a href="%@"&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;</target>
<note>email text</note>
</trans-unit>
<trans-unit id="@%@" xml:space="preserve">
<source>@%@</source>
<target>@%@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="@'%@'" xml:space="preserve">
<source>@'%@'</source>
<target>@'%@'</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="A few more things" xml:space="preserve">
<source>A few more things</source>
<target>A few more things</target>
@ -798,9 +746,9 @@
<target>All chats and messages will be deleted - this cannot be undone!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All chats will be removed from the list (text), and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list (text), and the list deleted.</source>
<target>All chats will be removed from the list (text), and the list deleted.</target>
<trans-unit id="All chats will be removed from the list %@, and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list %@, and the list deleted.</source>
<target>All chats will be removed from the list %@, and the list deleted.</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="All data is erased when it is entered." xml:space="preserve">
@ -3663,11 +3611,11 @@ This is your own one-time link!</target>
%@</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="File is blocked by server operator:&#10;(info.reason.text)." xml:space="preserve">
<trans-unit id="File is blocked by server operator:&#10;%@." xml:space="preserve">
<source>File is blocked by server operator:
(info.reason.text).</source>
%@.</source>
<target>File is blocked by server operator:
(info.reason.text).</target>
%@.</target>
<note>file error text</note>
</trans-unit>
<trans-unit id="File not found - most likely file was deleted or cancelled." xml:space="preserve">
@ -6448,9 +6396,9 @@ Enable in *Network &amp; servers* settings.</target>
<target>Report violation: only group moderators will see it.</target>
<note>report reason</note>
</trans-unit>
<trans-unit id="Report: (text.isEmpty ? reason.text : text)" xml:space="preserve">
<source>Report: (text.isEmpty ? reason.text : text)</source>
<target>Report: (text.isEmpty ? reason.text : text)</target>
<trans-unit id="Report: %@" xml:space="preserve">
<source>Report: %@</source>
<target>Report: %@</target>
<note>report in notification</note>
</trans-unit>
<trans-unit id="Reporting messages to moderators is prohibited." xml:space="preserve">

View file

@ -5,23 +5,6 @@
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="15.4" build-num="15F31d"/>
</header>
<body>
<trans-unit id="&#10;" xml:space="preserve">
<source>
</source>
<target>
</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" " xml:space="preserve">
<source> </source>
<target> </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (" xml:space="preserve">
<source> (</source>
<target> (</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (can be copied)" xml:space="preserve">
<source> (can be copied)</source>
<target> (puede copiarse)</target>
@ -332,11 +315,6 @@
<target>%u mensaje(s) omitido(s).</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(" xml:space="preserve">
<source>(</source>
<target>(</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(new)" xml:space="preserve">
<source>(new)</source>
<target>(nuevo)</target>
@ -347,11 +325,6 @@
<target>(este dispositivo v%@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=")" xml:space="preserve">
<source>)</source>
<target>)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Create 1-time link**: to create and share a new invitation link." xml:space="preserve">
<source>**Create 1-time link**: to create and share a new invitation link.</source>
<target>**Añadir contacto**: crea un enlace de invitación nuevo.</target>
@ -379,7 +352,7 @@
</trans-unit>
<trans-unit id="**Please note**: you will NOT be able to recover or change passphrase if you lose it." xml:space="preserve">
<source>**Please note**: you will NOT be able to recover or change passphrase if you lose it.</source>
<target>**Atención**: NO podrás recuperar o cambiar la contraseña si la pierdes.</target>
<target>**Atención**: Si la pierdes NO podrás recuperar o cambiar la contraseña.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**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." xml:space="preserve">
@ -417,11 +390,6 @@
<target>\*bold*</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=", " xml:space="preserve">
<source>, </source>
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@ -458,11 +426,6 @@
- historial de edición.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="." xml:space="preserve">
<source>.</source>
<target>.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="0 sec" xml:space="preserve">
<source>0 sec</source>
<target>0 seg</target>
@ -531,11 +494,6 @@
<target>30 segundos</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=": " xml:space="preserve">
<source>: </source>
<target>: </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="&lt;p&gt;Hi!&lt;/p&gt;&#10;&lt;p&gt;&lt;a href=&quot;%@&quot;&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;" xml:space="preserve">
<source>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;&lt;a href="%@"&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;</source>
@ -543,16 +501,6 @@
&lt;p&gt;&lt;a href="%@"&gt; Conecta conmigo a través de SimpleX Chat&lt;/a&gt;&lt;/p&gt;</target>
<note>email text</note>
</trans-unit>
<trans-unit id="@%@" xml:space="preserve">
<source>@%@</source>
<target>@%@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="@'%@'" xml:space="preserve">
<source>@'%@'</source>
<target>@'%@'</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="A few more things" xml:space="preserve">
<source>A few more things</source>
<target>Algunas cosas más</target>
@ -798,9 +746,9 @@
<target>Se eliminarán todos los chats y mensajes. ¡No podrá deshacerse!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All chats will be removed from the list (text), and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list (text), and the list deleted.</source>
<target>Todos los chats serán quitados de la lista (text) y esta será eliminada.</target>
<trans-unit id="All chats will be removed from the list %@, and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list %@, and the list deleted.</source>
<target>Todos los chats serán quitados de la lista %@ y esta será eliminada.</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="All data is erased when it is entered." xml:space="preserve">
@ -1245,7 +1193,7 @@
</trans-unit>
<trans-unit id="Better groups performance" xml:space="preserve">
<source>Better groups performance</source>
<target>Mejor rendimiento de los grupos</target>
<target>Rendimiento de grupos mejorado</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Better message dates." xml:space="preserve">
@ -1270,7 +1218,7 @@
</trans-unit>
<trans-unit id="Better privacy and security" xml:space="preserve">
<source>Better privacy and security</source>
<target>Mejor privacidad y seguridad</target>
<target>Privacidad y seguridad mejoradas</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Better security ✅" xml:space="preserve">
@ -3663,11 +3611,11 @@ This is your own one-time link!</source>
%@</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="File is blocked by server operator:&#10;(info.reason.text)." xml:space="preserve">
<trans-unit id="File is blocked by server operator:&#10;%@." xml:space="preserve">
<source>File is blocked by server operator:
(info.reason.text).</source>
%@.</source>
<target>Archivo bloqueado por el operador del servidor
(info.reason.text).</target>
%@.</target>
<note>file error text</note>
</trans-unit>
<trans-unit id="File not found - most likely file was deleted or cancelled." xml:space="preserve">
@ -3946,7 +3894,7 @@ Error: %2$@</target>
</trans-unit>
<trans-unit id="Get notified when mentioned." xml:space="preserve">
<source>Get notified when mentioned.</source>
<target>Las menciones ahora notifican.</target>
<target>Las menciones ahora se notifican.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Good afternoon!" xml:space="preserve">
@ -4066,7 +4014,7 @@ Error: %2$@</target>
</trans-unit>
<trans-unit id="Help admins moderating their groups." xml:space="preserve">
<source>Help admins moderating their groups.</source>
<target>Ayuda a los admins moderar sus grupos.</target>
<target>Ayuda a los admins a moderar sus grupos.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Hidden" xml:space="preserve">
@ -4853,7 +4801,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Mention members 👋" xml:space="preserve">
<source>Mention members 👋</source>
<target>Mencionar miembros 👋</target>
<target>Menciona a miembros 👋</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Menus" xml:space="preserve">
@ -5686,7 +5634,7 @@ Requiere activación de la VPN.</target>
</trans-unit>
<trans-unit id="Organize chats into lists" xml:space="preserve">
<source>Organize chats into lists</source>
<target>Organiza los chats en listas</target>
<target>Organiza tus chats en listas</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Other" xml:space="preserve">
@ -5957,7 +5905,7 @@ Error: %@</target>
</trans-unit>
<trans-unit id="Private media file names." xml:space="preserve">
<source>Private media file names.</source>
<target>Nombres privados de archivos de media.</target>
<target>Nombres privados en archivos de media.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Private message routing" xml:space="preserve">
@ -6448,9 +6396,9 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
<target>Informar de violación: sólo los moderadores del grupo lo verán.</target>
<note>report reason</note>
</trans-unit>
<trans-unit id="Report: (text.isEmpty ? reason.text : text)" xml:space="preserve">
<source>Report: (text.isEmpty ? reason.text : text)</source>
<target>Informe: (text.isEmpty ? reason.text : text)</target>
<trans-unit id="Report: %@" xml:space="preserve">
<source>Report: %@</source>
<target>Informe: %@</target>
<note>report in notification</note>
</trans-unit>
<trans-unit id="Reporting messages to moderators is prohibited." xml:space="preserve">
@ -7131,7 +7079,7 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
</trans-unit>
<trans-unit id="Set message expiration in chats." xml:space="preserve">
<source>Set message expiration in chats.</source>
<target>Establece vencimiento de los mensajes en chats.</target>
<target>Establece el vencimiento para los mensajes en los chats.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Set passcode" xml:space="preserve">
@ -8261,6 +8209,7 @@ Para conectarte pide a tu contacto que cree otro enlace y comprueba la conexión
</trans-unit>
<trans-unit id="Updated conditions" xml:space="preserve">
<source>Updated conditions</source>
<target>Condiciones actualizadas</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating settings will re-connect the client to all servers." xml:space="preserve">
@ -9842,10 +9791,12 @@ Repeat connection request?</source>
</trans-unit>
<trans-unit id="pending" xml:space="preserve">
<source>pending</source>
<target>pendiente</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="pending approval" xml:space="preserve">
<source>pending approval</source>
<target>pendiente de aprobación</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="quantum resistant e2e encryption" xml:space="preserve">
@ -9865,6 +9816,7 @@ Repeat connection request?</source>
</trans-unit>
<trans-unit id="rejected" xml:space="preserve">
<source>rejected</source>
<target>rechazado</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="rejected call" xml:space="preserve">

View file

@ -5,22 +5,6 @@
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="15.4" build-num="15F31d"/>
</header>
<body>
<trans-unit id="&#10;" xml:space="preserve">
<source>
</source>
<target>
</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" " xml:space="preserve">
<source> </source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (" xml:space="preserve">
<source> (</source>
<target> (</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (can be copied)" xml:space="preserve">
<source> (can be copied)</source>
<target> (voidaan kopioida)</target>
@ -312,11 +296,6 @@
<target>%u viestit ohitettu.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(" xml:space="preserve">
<source>(</source>
<target>(</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(new)" xml:space="preserve">
<source>(new)</source>
<note>No comment provided by engineer.</note>
@ -325,11 +304,6 @@
<source>(this device v%@)</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=")" xml:space="preserve">
<source>)</source>
<target>)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Create 1-time link**: to create and share a new invitation link." xml:space="preserve">
<source>**Create 1-time link**: to create and share a new invitation link.</source>
<note>No comment provided by engineer.</note>
@ -390,11 +364,6 @@
<target>\*bold*</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=", " xml:space="preserve">
<source>, </source>
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@ -425,11 +394,6 @@
- historian muokkaaminen.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="." xml:space="preserve">
<source>.</source>
<target>.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="0 sec" xml:space="preserve">
<source>0 sec</source>
<note>time to disappear</note>
@ -494,11 +458,6 @@
<target>30 sekuntia</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=": " xml:space="preserve">
<source>: </source>
<target>: </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="&lt;p&gt;Hi!&lt;/p&gt;&#10;&lt;p&gt;&lt;a href=&quot;%@&quot;&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;" xml:space="preserve">
<source>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;&lt;a href="%@"&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;</source>
@ -506,14 +465,6 @@
&lt;p&gt; &lt;a href="%@"&gt; Ollaan yhteydessä SimpleX Chatin kautta&lt;/a&gt;&lt;/p&gt;</target>
<note>email text</note>
</trans-unit>
<trans-unit id="@%@" xml:space="preserve">
<source>@%@</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="@'%@'" xml:space="preserve">
<source>@'%@'</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="A few more things" xml:space="preserve">
<source>A few more things</source>
<target>Muutama asia lisää</target>
@ -736,8 +687,8 @@
<target>Kaikki keskustelut ja viestit poistetaan - tätä ei voi kumota!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All chats will be removed from the list (text), and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list (text), and the list deleted.</source>
<trans-unit id="All chats will be removed from the list %@, and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list %@, and the list deleted.</source>
<note>alert message</note>
</trans-unit>
<trans-unit id="All data is erased when it is entered." xml:space="preserve">
@ -3334,9 +3285,9 @@ This is your own one-time link!</source>
%@</source>
<note>alert message</note>
</trans-unit>
<trans-unit id="File is blocked by server operator:&#10;(info.reason.text)." xml:space="preserve">
<trans-unit id="File is blocked by server operator:&#10;%@." xml:space="preserve">
<source>File is blocked by server operator:
(info.reason.text).</source>
%@.</source>
<note>file error text</note>
</trans-unit>
<trans-unit id="File not found - most likely file was deleted or cancelled." xml:space="preserve">
@ -5857,8 +5808,8 @@ Enable in *Network &amp; servers* settings.</source>
<source>Report violation: only group moderators will see it.</source>
<note>report reason</note>
</trans-unit>
<trans-unit id="Report: (text.isEmpty ? reason.text : text)" xml:space="preserve">
<source>Report: (text.isEmpty ? reason.text : text)</source>
<trans-unit id="Report: %@" xml:space="preserve">
<source>Report: %@</source>
<note>report in notification</note>
</trans-unit>
<trans-unit id="Reporting messages to moderators is prohibited." xml:space="preserve">

View file

@ -5,22 +5,6 @@
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="15.4" build-num="15F31d"/>
</header>
<body>
<trans-unit id="&#10;" xml:space="preserve">
<source>
</source>
<target>
</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" " xml:space="preserve">
<source> </source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (" xml:space="preserve">
<source> (</source>
<target> (</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (can be copied)" xml:space="preserve">
<source> (can be copied)</source>
<target> (peut être copié)</target>
@ -330,11 +314,6 @@
<target>%u messages sautés.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(" xml:space="preserve">
<source>(</source>
<target>(</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(new)" xml:space="preserve">
<source>(new)</source>
<target>(nouveau)</target>
@ -345,11 +324,6 @@
<target>(cet appareil v%@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=")" xml:space="preserve">
<source>)</source>
<target>)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Create 1-time link**: to create and share a new invitation link." xml:space="preserve">
<source>**Create 1-time link**: to create and share a new invitation link.</source>
<target>**Ajouter un contact**: pour créer un nouveau lien d'invitation.</target>
@ -415,11 +389,6 @@
<target>\*gras*</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=", " xml:space="preserve">
<source>, </source>
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@ -456,11 +425,6 @@
- l'historique de modification.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="." xml:space="preserve">
<source>.</source>
<target>.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="0 sec" xml:space="preserve">
<source>0 sec</source>
<target>0 sec</target>
@ -528,11 +492,6 @@
<target>30 secondes</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=": " xml:space="preserve">
<source>: </source>
<target>: </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="&lt;p&gt;Hi!&lt;/p&gt;&#10;&lt;p&gt;&lt;a href=&quot;%@&quot;&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;" xml:space="preserve">
<source>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;&lt;a href="%@"&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;</source>
@ -540,14 +499,6 @@
&lt;p&gt;&lt;a href="%@"&gt;Contactez-moi via SimpleX Chat&lt;/a&gt;&lt;/p&gt;</target>
<note>email text</note>
</trans-unit>
<trans-unit id="@%@" xml:space="preserve">
<source>@%@</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="@'%@'" xml:space="preserve">
<source>@'%@'</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="A few more things" xml:space="preserve">
<source>A few more things</source>
<target>Encore quelques points</target>
@ -789,8 +740,8 @@
<target>Toutes les discussions et tous les messages seront supprimés - il est impossible de revenir en arrière !</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All chats will be removed from the list (text), and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list (text), and the list deleted.</source>
<trans-unit id="All chats will be removed from the list %@, and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list %@, and the list deleted.</source>
<note>alert message</note>
</trans-unit>
<trans-unit id="All data is erased when it is entered." xml:space="preserve">
@ -3607,9 +3558,9 @@ Il s'agit de votre propre lien unique !</target>
%@</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="File is blocked by server operator:&#10;(info.reason.text)." xml:space="preserve">
<trans-unit id="File is blocked by server operator:&#10;%@." xml:space="preserve">
<source>File is blocked by server operator:
(info.reason.text).</source>
%@.</source>
<note>file error text</note>
</trans-unit>
<trans-unit id="File not found - most likely file was deleted or cancelled." xml:space="preserve">
@ -6337,8 +6288,8 @@ Activez-le dans les paramètres *Réseau et serveurs*.</target>
<source>Report violation: only group moderators will see it.</source>
<note>report reason</note>
</trans-unit>
<trans-unit id="Report: (text.isEmpty ? reason.text : text)" xml:space="preserve">
<source>Report: (text.isEmpty ? reason.text : text)</source>
<trans-unit id="Report: %@" xml:space="preserve">
<source>Report: %@</source>
<note>report in notification</note>
</trans-unit>
<trans-unit id="Reporting messages to moderators is prohibited." xml:space="preserve">

View file

@ -5,23 +5,6 @@
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="15.4" build-num="15F31d"/>
</header>
<body>
<trans-unit id="&#10;" xml:space="preserve">
<source>
</source>
<target>
</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" " xml:space="preserve">
<source> </source>
<target> </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (" xml:space="preserve">
<source> (</source>
<target> (</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (can be copied)" xml:space="preserve">
<source> (can be copied)</source>
<target> (másolható)</target>
@ -332,11 +315,6 @@
<target>%u üzenet kihagyva.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(" xml:space="preserve">
<source>(</source>
<target>(</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(new)" xml:space="preserve">
<source>(new)</source>
<target>(új)</target>
@ -347,11 +325,6 @@
<target>(ez az eszköz: v%@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=")" xml:space="preserve">
<source>)</source>
<target>)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Create 1-time link**: to create and share a new invitation link." xml:space="preserve">
<source>**Create 1-time link**: to create and share a new invitation link.</source>
<target>**Partner hozzáadása:** új meghívási hivatkozás létrehozásához, vagy egy kapott hivatkozáson keresztül történő kapcsolódáshoz.</target>
@ -417,11 +390,6 @@
<target>\*félkövér*</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=", " xml:space="preserve">
<source>, </source>
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@ -458,11 +426,6 @@
- előzmények szerkesztése.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="." xml:space="preserve">
<source>.</source>
<target>.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="0 sec" xml:space="preserve">
<source>0 sec</source>
<target>0 mp</target>
@ -531,11 +494,6 @@
<target>30 másodperc</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=": " xml:space="preserve">
<source>: </source>
<target>: </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="&lt;p&gt;Hi!&lt;/p&gt;&#10;&lt;p&gt;&lt;a href=&quot;%@&quot;&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;" xml:space="preserve">
<source>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;&lt;a href="%@"&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;</source>
@ -543,16 +501,6 @@
&lt;p&gt;&lt;a href="%@"&gt;Csatlakozzon hozzám a SimpleX Chaten keresztül&lt;/a&gt;&lt;/p&gt;</target>
<note>email text</note>
</trans-unit>
<trans-unit id="@%@" xml:space="preserve">
<source>@%@</source>
<target>@%@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="@'%@'" xml:space="preserve">
<source>@'%@'</source>
<target>@'%@'</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="A few more things" xml:space="preserve">
<source>A few more things</source>
<target>Néhány további dolog</target>
@ -592,7 +540,7 @@
</trans-unit>
<trans-unit id="Abort changing address?" xml:space="preserve">
<source>Abort changing address?</source>
<target>Cím módosításának megszakítása?</target>
<target>Megszakítja a cím módosítását?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="About SimpleX Chat" xml:space="preserve">
@ -624,12 +572,12 @@
</trans-unit>
<trans-unit id="Accept connection request?" xml:space="preserve">
<source>Accept connection request?</source>
<target>Kapcsolatkérés elfogadása?</target>
<target>Elfogadja a kapcsolódási kérést?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Accept contact request from %@?" xml:space="preserve">
<source>Accept contact request from %@?</source>
<target>Elfogadja %@ kapcsolatkérését?</target>
<target>Elfogadja %@ kapcsolódási kérését?</target>
<note>notification body</note>
</trans-unit>
<trans-unit id="Accept incognito" xml:space="preserve">
@ -798,9 +746,9 @@
<target>Az összes csevegés és üzenet törölve lesz ez a művelet nem vonható vissza!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All chats will be removed from the list (text), and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list (text), and the list deleted.</source>
<target>Az összes csevegés el lesz távolítva a(z) (text) nevű listáról, és a lista is törölve lesz.</target>
<trans-unit id="All chats will be removed from the list %@, and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list %@, and the list deleted.</source>
<target>Az összes csevegés el lesz távolítva a(z) %@ nevű listáról, és a lista is törölve lesz.</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="All data is erased when it is entered." xml:space="preserve">
@ -835,7 +783,7 @@
</trans-unit>
<trans-unit id="All new messages from %@ will be hidden!" xml:space="preserve">
<source>All new messages from %@ will be hidden!</source>
<target>Az összes %@ által írt új üzenet el lesz rejtve!</target>
<target>%@ összes új üzenete el lesz rejtve!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All profiles" xml:space="preserve">
@ -875,7 +823,7 @@
</trans-unit>
<trans-unit id="Allow calls?" xml:space="preserve">
<source>Allow calls?</source>
<target>Hívások engedélyezése?</target>
<target>Engedélyezi a hívásokat?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow disappearing messages only if your contact allows it to you." xml:space="preserve">
@ -950,7 +898,7 @@
</trans-unit>
<trans-unit id="Allow voice messages?" xml:space="preserve">
<source>Allow voice messages?</source>
<target>Hangüzenetek engedélyezése?</target>
<target>Engedélyezi a hangüzeneteket?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow your contacts adding message reactions." xml:space="preserve">
@ -1095,12 +1043,12 @@
</trans-unit>
<trans-unit id="Archive %lld reports?" xml:space="preserve">
<source>Archive %lld reports?</source>
<target>%lld jelentés archiválása?</target>
<target>Archivál %lld jelentést?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive all reports?" xml:space="preserve">
<source>Archive all reports?</source>
<target>Az összes jelentés archiválása?</target>
<target>Archiválja az összes jelentést?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive and upload" xml:space="preserve">
@ -1120,7 +1068,7 @@
</trans-unit>
<trans-unit id="Archive report?" xml:space="preserve">
<source>Archive report?</source>
<target>Jelentés archiválása?</target>
<target>Archiválja a jelentést?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive reports" xml:space="preserve">
@ -1310,12 +1258,12 @@
</trans-unit>
<trans-unit id="Block member for all?" xml:space="preserve">
<source>Block member for all?</source>
<target>Az összes tag számára letiltja ezt a tagot?</target>
<target>Az összes tag számára letiltja a tagot?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Block member?" xml:space="preserve">
<source>Block member?</source>
<target>Tag letiltása?</target>
<target>Letiltja a tagot?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blocked by admin" xml:space="preserve">
@ -1471,7 +1419,7 @@
</trans-unit>
<trans-unit id="Change automatic message deletion?" xml:space="preserve">
<source>Change automatic message deletion?</source>
<target>Automatikus üzenettörlés módosítása?</target>
<target>Módosítja az automatikus üzenettörlést?</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
@ -1481,7 +1429,7 @@
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Az adatbázis jelmondatának módosítása?</target>
<target>Módosítja az adatbázis jelmondatát?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change lock mode" xml:space="preserve">
@ -1491,7 +1439,7 @@
</trans-unit>
<trans-unit id="Change member role?" xml:space="preserve">
<source>Change member role?</source>
<target>Tag szerepkörének módosítása?</target>
<target>Módosítja a tag szerepkörét?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change passcode" xml:space="preserve">
@ -1692,12 +1640,12 @@
</trans-unit>
<trans-unit id="Clear conversation?" xml:space="preserve">
<source>Clear conversation?</source>
<target>Üzenetek kiürítése?</target>
<target>Kiüríti az üzeneteket?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Clear group?" xml:space="preserve">
<source>Clear group?</source>
<target>Csoport kiürítése?</target>
<target>Kiüríti a csoportot?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Clear or delete group?" xml:space="preserve">
@ -1707,7 +1655,7 @@
</trans-unit>
<trans-unit id="Clear private notes?" xml:space="preserve">
<source>Clear private notes?</source>
<target>Privát jegyzetek kiürítése?</target>
<target>Kiüríti a privát jegyzeteket?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Clear verification" xml:space="preserve">
@ -1747,7 +1695,7 @@
</trans-unit>
<trans-unit id="Conditions accepted on: %@." xml:space="preserve">
<source>Conditions accepted on: %@.</source>
<target>Feltételek elfogadva: %@.</target>
<target>Feltételek elfogadásának ideje: %@.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions are accepted for the operator(s): **%@**." xml:space="preserve">
@ -1782,12 +1730,12 @@
</trans-unit>
<trans-unit id="Conditions will be accepted on: %@." xml:space="preserve">
<source>Conditions will be accepted on: %@.</source>
<target>A feltételek ekkor lesznek elfogadva: %@.</target>
<target>A feltételek el lesznek fogadva a következő időpontban: %@.</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>A feltételek automatikusan el lesznek fogadva az engedélyezett üzemeltetők számára: %@.</target>
<target>A feltételek automatikusan el lesznek fogadva az engedélyezett üzemeltetők számára a következő időpontban: %@.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Configure ICE servers" xml:space="preserve">
@ -1877,20 +1825,20 @@
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
<source>Connect to yourself?</source>
<target>Kapcsolódás saját magához?</target>
<target>Kapcsolódik saját magához?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?&#10;This is your own SimpleX address!" xml:space="preserve">
<source>Connect to yourself?
This is your own SimpleX address!</source>
<target>Kapcsolódás saját magához?
<target>Kapcsolódik saját magához?
Ez az Ön SimpleX-címe!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?&#10;This is your own one-time link!" xml:space="preserve">
<source>Connect to yourself?
This is your own one-time link!</source>
<target>Kapcsolódás saját magához?
<target>Kapcsolódik saját magához?
Ez az Ön egyszer használható meghívási hivatkozása!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@ -2128,7 +2076,7 @@ Ez az Ön egyszer használható meghívási hivatkozása!</target>
</trans-unit>
<trans-unit id="Correct name to %@?" xml:space="preserve">
<source>Correct name to %@?</source>
<target>Név helyesbítése a következőre: %@?</target>
<target>Helyesbíti a nevet a következőre: %@?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Create" xml:space="preserve">
@ -2402,7 +2350,7 @@ Ez az Ön egyszer használható meghívási hivatkozása!</target>
</trans-unit>
<trans-unit id="Delete %lld messages?" xml:space="preserve">
<source>Delete %lld messages?</source>
<target>%lld üzenet törlése?</target>
<target>Töröl %lld üzenetet?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete address" xml:space="preserve">
@ -2412,7 +2360,7 @@ Ez az Ön egyszer használható meghívási hivatkozása!</target>
</trans-unit>
<trans-unit id="Delete address?" xml:space="preserve">
<source>Delete address?</source>
<target>Cím törlése?</target>
<target>Törli a címet?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete after" xml:space="preserve">
@ -2447,12 +2395,12 @@ Ez az Ön egyszer használható meghívási hivatkozása!</target>
</trans-unit>
<trans-unit id="Delete chat profile?" xml:space="preserve">
<source>Delete chat profile?</source>
<target>Csevegési profil törlése?</target>
<target>Törli a csevegési profilt?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete chat?" xml:space="preserve">
<source>Delete chat?</source>
<target>Csevegés törlése?</target>
<target>Törli a csevegést?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete connection" xml:space="preserve">
@ -2467,7 +2415,7 @@ Ez az Ön egyszer használható meghívási hivatkozása!</target>
</trans-unit>
<trans-unit id="Delete contact?" xml:space="preserve">
<source>Delete contact?</source>
<target>Partner törlése?</target>
<target>Törli a partnert?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database" xml:space="preserve">
@ -2487,7 +2435,7 @@ Ez az Ön egyszer használható meghívási hivatkozása!</target>
</trans-unit>
<trans-unit id="Delete files and media?" xml:space="preserve">
<source>Delete files and media?</source>
<target>A fájlok- és a médiatartalmak törlése?</target>
<target>Törli a fájl- és a médiatartalmakat?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete files for all chat profiles" xml:space="preserve">
@ -2512,7 +2460,7 @@ Ez az Ön egyszer használható meghívási hivatkozása!</target>
</trans-unit>
<trans-unit id="Delete group?" xml:space="preserve">
<source>Delete group?</source>
<target>Csoport törlése?</target>
<target>Törli a csoportot?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete invitation" xml:space="preserve">
@ -2527,22 +2475,22 @@ Ez az Ön egyszer használható meghívási hivatkozása!</target>
</trans-unit>
<trans-unit id="Delete link?" xml:space="preserve">
<source>Delete link?</source>
<target>Hivatkozás törlése?</target>
<target>Törli a hivatkozást?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete list?" xml:space="preserve">
<source>Delete list?</source>
<target>Lista törlése?</target>
<target>Törli a listát?</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Delete member message?" xml:space="preserve">
<source>Delete member message?</source>
<target>Csoporttag üzenetének törlése?</target>
<target>Törli a tag üzenetét?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete message?" xml:space="preserve">
<source>Delete message?</source>
<target>Üzenet törlése?</target>
<target>Törli az üzenetet?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete messages" xml:space="preserve">
@ -2562,7 +2510,7 @@ Ez az Ön egyszer használható meghívási hivatkozása!</target>
</trans-unit>
<trans-unit id="Delete old database?" xml:space="preserve">
<source>Delete old database?</source>
<target>Régi adatbázis törlése?</target>
<target>Törli a régi adatbázist?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete or moderate up to 200 messages." xml:space="preserve">
@ -2572,7 +2520,7 @@ Ez az Ön egyszer használható meghívási hivatkozása!</target>
</trans-unit>
<trans-unit id="Delete pending connection?" xml:space="preserve">
<source>Delete pending connection?</source>
<target>Függőben lévő partnerkérelem törlése?</target>
<target>Törli a függőben lévő meghívót?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete profile" xml:space="preserve">
@ -2597,7 +2545,7 @@ Ez az Ön egyszer használható meghívási hivatkozása!</target>
</trans-unit>
<trans-unit id="Delete user profile?" xml:space="preserve">
<source>Delete user profile?</source>
<target>Felhasználói profil törlése?</target>
<target>Törli a felhasználói profilt?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete without notification" xml:space="preserve">
@ -2752,7 +2700,7 @@ Ez az Ön egyszer használható meghívási hivatkozása!</target>
</trans-unit>
<trans-unit id="Disable automatic message deletion?" xml:space="preserve">
<source>Disable automatic message deletion?</source>
<target>Automatikus üzenettörlés letiltása?</target>
<target>Letiltja az automatikus üzenettörlést?</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Disable delete messages" xml:space="preserve">
@ -2807,7 +2755,7 @@ Ez az Ön egyszer használható meghívási hivatkozása!</target>
</trans-unit>
<trans-unit id="Disconnect desktop?" xml:space="preserve">
<source>Disconnect desktop?</source>
<target>Számítógép leválasztása?</target>
<target>Leválasztja a számítógépet?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Discover and join groups" xml:space="preserve">
@ -2983,7 +2931,7 @@ Ez az Ön egyszer használható meghívási hivatkozása!</target>
</trans-unit>
<trans-unit id="Enable automatic message deletion?" xml:space="preserve">
<source>Enable automatic message deletion?</source>
<target>Automatikus üzenet törlés engedélyezése?</target>
<target>Engedélyezi az automatikus üzenettörlést?</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Enable camera access" xml:space="preserve">
@ -3003,7 +2951,7 @@ Ez az Ön egyszer használható meghívási hivatkozása!</target>
</trans-unit>
<trans-unit id="Enable instant notifications?" xml:space="preserve">
<source>Enable instant notifications?</source>
<target>Azonnali értesítések engedélyezése?</target>
<target>Engedélyezi az azonnali értesítéseket?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable lock" xml:space="preserve">
@ -3018,7 +2966,7 @@ Ez az Ön egyszer használható meghívási hivatkozása!</target>
</trans-unit>
<trans-unit id="Enable periodic notifications?" xml:space="preserve">
<source>Enable periodic notifications?</source>
<target>Időszakos értesítések engedélyezése?</target>
<target>Engedélyezi az időszakos értesítéseket?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable self-destruct" xml:space="preserve">
@ -3048,7 +2996,7 @@ Ez az Ön egyszer használható meghívási hivatkozása!</target>
</trans-unit>
<trans-unit id="Encrypt database?" xml:space="preserve">
<source>Encrypt database?</source>
<target>Adatbázis titkosítása?</target>
<target>Titkosítja az adatbázist?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Encrypt local files" xml:space="preserve">
@ -3663,11 +3611,11 @@ Ez az Ön egyszer használható meghívási hivatkozása!</target>
%@</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="File is blocked by server operator:&#10;(info.reason.text)." xml:space="preserve">
<trans-unit id="File is blocked by server operator:&#10;%@." xml:space="preserve">
<source>File is blocked by server operator:
(info.reason.text).</source>
%@.</source>
<target>A kiszolgáló üzemeltetője letiltotta a fájlt:
(info.reason.text).</target>
%@.</target>
<note>file error text</note>
</trans-unit>
<trans-unit id="File not found - most likely file was deleted or cancelled." xml:space="preserve">
@ -3837,7 +3785,7 @@ Ez az Ön egyszer használható meghívási hivatkozása!</target>
</trans-unit>
<trans-unit id="Forward %d message(s)?" xml:space="preserve">
<source>Forward %d message(s)?</source>
<target>%d üzenet továbbítása?</target>
<target>Továbbít %d üzenetet?</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Forward and save messages" xml:space="preserve">
@ -3852,7 +3800,7 @@ Ez az Ön egyszer használható meghívási hivatkozása!</target>
</trans-unit>
<trans-unit id="Forward messages without files?" xml:space="preserve">
<source>Forward messages without files?</source>
<target>Üzenetek továbbítása fájlok nélkül?</target>
<target>Továbbítja az üzeneteket fájlok nélkül?</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="Forward up to 20 messages at once." xml:space="preserve">
@ -4216,7 +4164,7 @@ Hiba: %2$@</target>
</trans-unit>
<trans-unit id="Import chat database?" xml:space="preserve">
<source>Import chat database?</source>
<target>Csevegési adatbázis importálása?</target>
<target>Importálja a csevegési adatbázist?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Import database" xml:space="preserve">
@ -4588,7 +4536,7 @@ Ez az Ön hivatkozása a(z) %@ nevű csoporthoz!</target>
</trans-unit>
<trans-unit id="Keep unused invitation?" xml:space="preserve">
<source>Keep unused invitation?</source>
<target>Fel nem használt meghívó megtartása?</target>
<target>Megtartja a fel nem használt meghívót?</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Keep your connections" xml:space="preserve">
@ -4633,7 +4581,7 @@ 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>
<target>Elhagyja a csevegést?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
@ -4643,7 +4591,7 @@ Ez az Ön hivatkozása a(z) %@ nevű csoporthoz!</target>
</trans-unit>
<trans-unit id="Leave group?" xml:space="preserve">
<source>Leave group?</source>
<target>Csoport elhagyása?</target>
<target>Elhagyja a csoportot?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Let's talk in SimpleX Chat" xml:space="preserve">
@ -4808,7 +4756,7 @@ Ez az Ön hivatkozása a(z) %@ nevű csoporthoz!</target>
</trans-unit>
<trans-unit id="Member will be removed from group - this cannot be undone!" xml:space="preserve">
<source>Member will be removed from group - this cannot be undone!</source>
<target>A tag eltávolítása a csoportból ez a művelet nem vonható vissza!</target>
<target>A tag el lesz távolítva a csoportból ez a művelet nem vonható vissza!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Members can add message reactions." xml:space="preserve">
@ -4963,7 +4911,7 @@ Ez az Ön hivatkozása a(z) %@ nevű csoporthoz!</target>
</trans-unit>
<trans-unit id="Messages from %@ will be shown!" xml:space="preserve">
<source>Messages from %@ will be shown!</source>
<target>Az összes %@ által írt üzenet meg fog jelenni!</target>
<target>%@ összes üzenete meg fog jelenni!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages in this chat will never be deleted." xml:space="preserve">
@ -5128,7 +5076,7 @@ Ez az Ön hivatkozása a(z) %@ nevű csoporthoz!</target>
</trans-unit>
<trans-unit id="Network connection" xml:space="preserve">
<source>Network connection</source>
<target>Internetkapcsolat</target>
<target>Hálózati kapcsolat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Network decentralization" xml:space="preserve">
@ -5148,7 +5096,7 @@ Ez az Ön hivatkozása a(z) %@ nevű csoporthoz!</target>
</trans-unit>
<trans-unit id="Network operator" xml:space="preserve">
<source>Network operator</source>
<target>Hálózati üzemeltető</target>
<target>Hálózatüzemeltető</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Network settings" xml:space="preserve">
@ -5636,7 +5584,7 @@ VPN engedélyezése szükséges.</target>
</trans-unit>
<trans-unit id="Open web link?" xml:space="preserve">
<source>Open web link?</source>
<target>Webhivatkozás megnyitása?</target>
<target>Megnyitja a webhivatkozást?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Opening app…" xml:space="preserve">
@ -5820,7 +5768,7 @@ Minden további problémát osszon meg a fejlesztőkkel.</target>
</trans-unit>
<trans-unit id="Please check your network connection with %@ and try again." xml:space="preserve">
<source>Please check your network connection with %@ and try again.</source>
<target>Ellenőrizze a hálózati kapcsolatát a következővel: %@, és próbálja újra.</target>
<target>Ellenőrizze a hálózati kapcsolatát a vele: %@, és próbálja újra.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please check yours and your contact preferences." xml:space="preserve">
@ -6094,7 +6042,7 @@ Engedélyezze a *Hálózat és kiszolgálók* menüben.</target>
</trans-unit>
<trans-unit id="Protocol timeout per KB" xml:space="preserve">
<source>Protocol timeout per KB</source>
<target>Protokoll időtúllépése KB-onként</target>
<target>Protokoll időtúllépése kB-onként</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Proxied" xml:space="preserve">
@ -6264,7 +6212,7 @@ Engedélyezze a *Hálózat és kiszolgálók* menüben.</target>
</trans-unit>
<trans-unit id="Reconnect all servers?" xml:space="preserve">
<source>Reconnect all servers?</source>
<target>Újrakapcsolódás az összes kiszolgálóhoz?</target>
<target>Újrakapcsolódik az összes kiszolgálóhoz?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reconnect server to force message delivery. It uses additional traffic." xml:space="preserve">
@ -6274,12 +6222,12 @@ Engedélyezze a *Hálózat és kiszolgálók* menüben.</target>
</trans-unit>
<trans-unit id="Reconnect server?" xml:space="preserve">
<source>Reconnect server?</source>
<target>Újrakapcsolódás a kiszolgálóhoz?</target>
<target>Újrakapcsolódik a kiszolgálóhoz?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reconnect servers?" xml:space="preserve">
<source>Reconnect servers?</source>
<target>Újrakapcsolódás a kiszolgálókhoz?</target>
<target>Újrakapcsolódik a kiszolgálókhoz?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Record updated at" xml:space="preserve">
@ -6304,7 +6252,7 @@ Engedélyezze a *Hálózat és kiszolgálók* menüben.</target>
</trans-unit>
<trans-unit id="Register notification token?" xml:space="preserve">
<source>Register notification token?</source>
<target>Értesítési token regisztrálása?</target>
<target>Regisztrálja az értesítési tokent?</target>
<note>token info</note>
</trans-unit>
<trans-unit id="Registered" xml:space="preserve">
@ -6345,7 +6293,7 @@ Engedélyezze a *Hálózat és kiszolgálók* menüben.</target>
</trans-unit>
<trans-unit id="Remove archive?" xml:space="preserve">
<source>Remove archive?</source>
<target>Archívum eltávolítása?</target>
<target>Eltávolítja az archívumot?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Remove image" xml:space="preserve">
@ -6360,12 +6308,12 @@ Engedélyezze a *Hálózat és kiszolgálók* menüben.</target>
</trans-unit>
<trans-unit id="Remove member?" xml:space="preserve">
<source>Remove member?</source>
<target>Biztosan eltávolítja?</target>
<target>Eltávolítja a tagot?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Remove passphrase from keychain?" xml:space="preserve">
<source>Remove passphrase from keychain?</source>
<target>Jelmondat eltávolítása a kulcstartóból?</target>
<target>Eltávolítja a jelmondatot a kulcstartóból?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Renegotiate" xml:space="preserve">
@ -6380,12 +6328,12 @@ Engedélyezze a *Hálózat és kiszolgálók* menüben.</target>
</trans-unit>
<trans-unit id="Renegotiate encryption?" xml:space="preserve">
<source>Renegotiate encryption?</source>
<target>Titkosítás újraegyeztetése?</target>
<target>Újraegyezteti a titkosítást?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat connection request?" xml:space="preserve">
<source>Repeat connection request?</source>
<target>Kapcsolatkérés megismétlése?</target>
<target>Megismétli a kapcsolódási kérést?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat download" xml:space="preserve">
@ -6400,7 +6348,7 @@ Engedélyezze a *Hálózat és kiszolgálók* menüben.</target>
</trans-unit>
<trans-unit id="Repeat join request?" xml:space="preserve">
<source>Repeat join request?</source>
<target>Csatlakozáskérés megismétlése?</target>
<target>Megismétli a csatlakozási kérést?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat upload" xml:space="preserve">
@ -6448,9 +6396,9 @@ Engedélyezze a *Hálózat és kiszolgálók* menüben.</target>
<target>Szabálysértés jelentése: csak a csoport moderátorai látják.</target>
<note>report reason</note>
</trans-unit>
<trans-unit id="Report: (text.isEmpty ? reason.text : text)" xml:space="preserve">
<source>Report: (text.isEmpty ? reason.text : text)</source>
<target>Jelentés: (text.isEmpty ? reason.text : text)</target>
<trans-unit id="Report: %@" xml:space="preserve">
<source>Report: %@</source>
<target>Jelentés: %@</target>
<note>report in notification</note>
</trans-unit>
<trans-unit id="Reporting messages to moderators is prohibited." xml:space="preserve">
@ -6485,7 +6433,7 @@ Engedélyezze a *Hálózat és kiszolgálók* menüben.</target>
</trans-unit>
<trans-unit id="Reset all statistics?" xml:space="preserve">
<source>Reset all statistics?</source>
<target>Az összes statisztika visszaállítása?</target>
<target>Visszaállítja az összes statisztikát?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset colors" xml:space="preserve">
@ -6530,7 +6478,7 @@ Engedélyezze a *Hálózat és kiszolgálók* menüben.</target>
</trans-unit>
<trans-unit id="Restore database backup?" xml:space="preserve">
<source>Restore database backup?</source>
<target>Adatbázismentés visszaállítása?</target>
<target>Visszaállítja az adatbázismentést?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Restore database error" xml:space="preserve">
@ -6570,7 +6518,7 @@ Engedélyezze a *Hálózat és kiszolgálók* menüben.</target>
</trans-unit>
<trans-unit id="Revoke file?" xml:space="preserve">
<source>Revoke file?</source>
<target>Fájl visszavonása?</target>
<target>Visszavonja a fájlt?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Role" xml:space="preserve">
@ -6656,7 +6604,7 @@ Engedélyezze a *Hálózat és kiszolgálók* menüben.</target>
</trans-unit>
<trans-unit id="Save preferences?" xml:space="preserve">
<source>Save preferences?</source>
<target>Beállítások mentése?</target>
<target>Menti a beállításokat?</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Save profile password" xml:space="preserve">
@ -6671,17 +6619,17 @@ Engedélyezze a *Hálózat és kiszolgálók* menüben.</target>
</trans-unit>
<trans-unit id="Save servers?" xml:space="preserve">
<source>Save servers?</source>
<target>Kiszolgálók mentése?</target>
<target>Menti a kiszolgálókat?</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Save welcome message?" xml:space="preserve">
<source>Save welcome message?</source>
<target>Üdvözlőüzenet mentése?</target>
<target>Menti az üdvözlőüzenetet?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save your profile?" xml:space="preserve">
<source>Save your profile?</source>
<target>Profil mentése?</target>
<target>Menti a profilt?</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Saved" xml:space="preserve">
@ -7460,7 +7408,7 @@ Engedélyezze a *Hálózat és kiszolgálók* menüben.</target>
</trans-unit>
<trans-unit id="Start chat?" xml:space="preserve">
<source>Start chat?</source>
<target>Csevegés indítása?</target>
<target>Elindítja a csevegést?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Start migration" xml:space="preserve">
@ -7500,7 +7448,7 @@ Engedélyezze a *Hálózat és kiszolgálók* menüben.</target>
</trans-unit>
<trans-unit id="Stop chat?" xml:space="preserve">
<source>Stop chat?</source>
<target>Csevegési szolgáltatás megállítása?</target>
<target>Megállítja a csevegést?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Stop file" xml:space="preserve">
@ -7510,12 +7458,12 @@ Engedélyezze a *Hálózat és kiszolgálók* menüben.</target>
</trans-unit>
<trans-unit id="Stop receiving file?" xml:space="preserve">
<source>Stop receiving file?</source>
<target>Fájlfogadás megállítása?</target>
<target>Megállítja a fájlfogadást?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Stop sending file?" xml:space="preserve">
<source>Stop sending file?</source>
<target>Fájlküldés megállítása?</target>
<target>Megállítja a fájlküldést?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Stop sharing" xml:space="preserve">
@ -7525,7 +7473,7 @@ Engedélyezze a *Hálózat és kiszolgálók* menüben.</target>
</trans-unit>
<trans-unit id="Stop sharing address?" xml:space="preserve">
<source>Stop sharing address?</source>
<target>Címmegosztás megállítása?</target>
<target>Megállítja a címmegosztást?</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Stopping chat" xml:space="preserve">
@ -7722,7 +7670,7 @@ Ez valamilyen hiba vagy sérült kapcsolat esetén fordulhat elő.</target>
</trans-unit>
<trans-unit id="The app can notify you when you receive messages or contact requests - please open settings to enable." xml:space="preserve">
<source>The app can notify you when you receive messages or contact requests - please open settings to enable.</source>
<target>Az alkalmazás értesíteni fogja, amikor üzeneteket vagy kapcsolatkéréseket kap beállítások megnyitása az engedélyezéshez.</target>
<target>Az alkalmazás értesíteni fogja, amikor üzeneteket vagy kapcsolatkéréseket kap ezt a beállítások menüben engedélyezheti.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The app protects your privacy by using different operators in each conversation." xml:space="preserve">
@ -8134,7 +8082,7 @@ A funkció bekapcsolása előtt a rendszer felszólítja a képernyőzár beáll
</trans-unit>
<trans-unit id="Unblock member?" xml:space="preserve">
<source>Unblock member?</source>
<target>Tag feloldása?</target>
<target>Feloldja a tag letiltását?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Undelivered messages" xml:space="preserve">
@ -8211,7 +8159,7 @@ A kapcsolódáshoz kérje meg a partnerét, hogy hozzon létre egy másik kapcso
</trans-unit>
<trans-unit id="Unlink desktop?" xml:space="preserve">
<source>Unlink desktop?</source>
<target>Számítógép leválasztása?</target>
<target>Leválasztja a számítógépet?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Unlock" xml:space="preserve">
@ -8251,16 +8199,17 @@ A kapcsolódáshoz kérje meg a partnerét, hogy hozzon létre egy másik kapcso
</trans-unit>
<trans-unit id="Update network settings?" xml:space="preserve">
<source>Update network settings?</source>
<target>Hálózati beállítások módosítása?</target>
<target>Módosítja a hálózati beállításokat?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update settings?" xml:space="preserve">
<source>Update settings?</source>
<target>Beállítások frissítése?</target>
<target>Frissíti a beállításokat?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updated conditions" xml:space="preserve">
<source>Updated conditions</source>
<target>Frissített feltételek</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating settings will re-connect the client to all servers." xml:space="preserve">
@ -8757,7 +8706,7 @@ A kapcsolódáshoz kérje meg a partnerét, hogy hozzon létre egy másik kapcso
<source>You are already joining the group!
Repeat join request?</source>
<target>A csatlakozás már folyamatban van a csoporthoz!
Csatlakozáskérés megismétlése?</target>
Megismétli a csatlakozási kérést?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You are connected to the server used to receive messages from this contact." xml:space="preserve">
@ -8903,8 +8852,8 @@ Csatlakozáskérés megismétlése?</target>
<trans-unit id="You have already requested connection!&#10;Repeat connection request?" xml:space="preserve">
<source>You have already requested connection!
Repeat connection request?</source>
<target>Már küldött egy kapcsolódási kérelmet!
Kapcsolatkérés megismétlése?</target>
<target>Ön már küldött egy kapcsolódási kérést!
Megismétli a kapcsolódási kérést?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You have to enter passphrase every time the app starts - it is not stored on the device." xml:space="preserve">
@ -9149,7 +9098,7 @@ Kapcsolatkérés megismétlése?</target>
</trans-unit>
<trans-unit id="Your servers" xml:space="preserve">
<source>Your servers</source>
<target>Az Ön kiszolgálói</target>
<target>Saját kiszolgálók</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your settings" xml:space="preserve">
@ -9374,7 +9323,7 @@ Kapcsolatkérés megismétlése?</target>
</trans-unit>
<trans-unit id="connecting (introduced)" xml:space="preserve">
<source>connecting (introduced)</source>
<target>kapcsolódás (bejelentve)</target>
<target>kapcsolódás (bemutatkozva)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="connecting (introduction invitation)" xml:space="preserve">
@ -9680,7 +9629,7 @@ Kapcsolatkérés megismétlése?</target>
</trans-unit>
<trans-unit id="invited to connect" xml:space="preserve">
<source>invited to connect</source>
<target>meghívta, hogy csatlakozzon</target>
<target>meghívta egy partnerét</target>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="invited via your group link" xml:space="preserve">
@ -9842,10 +9791,12 @@ Kapcsolatkérés megismétlése?</target>
</trans-unit>
<trans-unit id="pending" xml:space="preserve">
<source>pending</source>
<target>függőben</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="pending approval" xml:space="preserve">
<source>pending approval</source>
<target>jóváhagyásra vár</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="quantum resistant e2e encryption" xml:space="preserve">
@ -9865,6 +9816,7 @@ Kapcsolatkérés megismétlése?</target>
</trans-unit>
<trans-unit id="rejected" xml:space="preserve">
<source>rejected</source>
<target>elutasítva</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="rejected call" xml:space="preserve">
@ -10438,7 +10390,7 @@ utoljára fogadott üzenet: %2$@</target>
</trans-unit>
<trans-unit id="Slow network?" xml:space="preserve">
<source>Slow network?</source>
<target>Lassú internetkapcsolat?</target>
<target>Lassú a hálózata?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Unknown database error: %@" xml:space="preserve">

View file

@ -5,23 +5,6 @@
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="15.4" build-num="15F31d"/>
</header>
<body>
<trans-unit id="&#10;" xml:space="preserve">
<source>
</source>
<target>
</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" " xml:space="preserve">
<source> </source>
<target> </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (" xml:space="preserve">
<source> (</source>
<target> (</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (can be copied)" xml:space="preserve">
<source> (can be copied)</source>
<target> (può essere copiato)</target>
@ -332,11 +315,6 @@
<target>%u messaggi saltati.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(" xml:space="preserve">
<source>(</source>
<target>(</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(new)" xml:space="preserve">
<source>(new)</source>
<target>(nuovo)</target>
@ -347,11 +325,6 @@
<target>(questo dispositivo v%@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=")" xml:space="preserve">
<source>)</source>
<target>)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Create 1-time link**: to create and share a new invitation link." xml:space="preserve">
<source>**Create 1-time link**: to create and share a new invitation link.</source>
<target>**Aggiungi contatto**: per creare un nuovo link di invito.</target>
@ -417,11 +390,6 @@
<target>\*grassetto*</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=", " xml:space="preserve">
<source>, </source>
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@ -458,11 +426,6 @@
- cronologia delle modifiche.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="." xml:space="preserve">
<source>.</source>
<target>.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="0 sec" xml:space="preserve">
<source>0 sec</source>
<target>0 sec</target>
@ -531,11 +494,6 @@
<target>30 secondi</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=": " xml:space="preserve">
<source>: </source>
<target>: </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="&lt;p&gt;Hi!&lt;/p&gt;&#10;&lt;p&gt;&lt;a href=&quot;%@&quot;&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;" xml:space="preserve">
<source>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;&lt;a href="%@"&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;</source>
@ -543,16 +501,6 @@
&lt;p&gt;&lt;a href="%@"&gt;Connettiti a me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;</target>
<note>email text</note>
</trans-unit>
<trans-unit id="@%@" xml:space="preserve">
<source>@%@</source>
<target>@%@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="@'%@'" xml:space="preserve">
<source>@'%@'</source>
<target>@'%@'</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="A few more things" xml:space="preserve">
<source>A few more things</source>
<target>Qualche altra cosa</target>
@ -798,9 +746,9 @@
<target>Tutte le chat e i messaggi verranno eliminati. Non è reversibile!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All chats will be removed from the list (text), and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list (text), and the list deleted.</source>
<target>Tutte le chat verranno rimosse dall'elenco (testo) e l'elenco eliminato.</target>
<trans-unit id="All chats will be removed from the list %@, and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list %@, and the list deleted.</source>
<target>Tutte le chat verranno rimosse dall'elenco %@ e l'elenco eliminato.</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="All data is erased when it is entered." xml:space="preserve">
@ -3663,11 +3611,11 @@ Questo è il tuo link una tantum!</target>
%@</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="File is blocked by server operator:&#10;(info.reason.text)." xml:space="preserve">
<trans-unit id="File is blocked by server operator:&#10;%@." xml:space="preserve">
<source>File is blocked by server operator:
(info.reason.text).</source>
%@.</source>
<target>Il file è bloccato dall'operatore del server:
(info.reason.text).</target>
%@.</target>
<note>file error text</note>
</trans-unit>
<trans-unit id="File not found - most likely file was deleted or cancelled." xml:space="preserve">
@ -6448,9 +6396,9 @@ Attivalo nelle impostazioni *Rete e server*.</target>
<target>Segnala violazione: solo i moderatori del gruppo lo vedranno.</target>
<note>report reason</note>
</trans-unit>
<trans-unit id="Report: (text.isEmpty ? reason.text : text)" xml:space="preserve">
<source>Report: (text.isEmpty ? reason.text : text)</source>
<target>Segnalazione: (text.isEmpty ? reason.text : text)</target>
<trans-unit id="Report: %@" xml:space="preserve">
<source>Report: %@</source>
<target>Segnalazione: %@</target>
<note>report in notification</note>
</trans-unit>
<trans-unit id="Reporting messages to moderators is prohibited." xml:space="preserve">
@ -8261,6 +8209,7 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e
</trans-unit>
<trans-unit id="Updated conditions" xml:space="preserve">
<source>Updated conditions</source>
<target>Condizioni aggiornate</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating settings will re-connect the client to all servers." xml:space="preserve">
@ -9842,10 +9791,12 @@ Ripetere la richiesta di connessione?</target>
</trans-unit>
<trans-unit id="pending" xml:space="preserve">
<source>pending</source>
<target>in attesa</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="pending approval" xml:space="preserve">
<source>pending approval</source>
<target>in attesa di approvazione</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="quantum resistant e2e encryption" xml:space="preserve">
@ -9865,6 +9816,7 @@ Ripetere la richiesta di connessione?</target>
</trans-unit>
<trans-unit id="rejected" xml:space="preserve">
<source>rejected</source>
<target>rifiutato</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="rejected call" xml:space="preserve">

View file

@ -5,22 +5,6 @@
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="15.4" build-num="15F31d"/>
</header>
<body>
<trans-unit id="&#10;" xml:space="preserve">
<source>
</source>
<target>
</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" " xml:space="preserve">
<source> </source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (" xml:space="preserve">
<source> (</source>
<target> (</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (can be copied)" xml:space="preserve">
<source> (can be copied)</source>
<target> (コピー可能)</target>
@ -330,11 +314,6 @@
<target>%u 件のメッセージがスキップされました。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(" xml:space="preserve">
<source>(</source>
<target>(</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(new)" xml:space="preserve">
<source>(new)</source>
<target>(新規)</target>
@ -345,11 +324,6 @@
<target>(このデバイス v%@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=")" xml:space="preserve">
<source>)</source>
<target>)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Create 1-time link**: to create and share a new invitation link." xml:space="preserve">
<source>**Create 1-time link**: to create and share a new invitation link.</source>
<target>**コンタクトの追加**: 新しい招待リンクを作成するか、受け取ったリンクから接続します。</target>
@ -415,11 +389,6 @@
<target>\*太字*</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=", " xml:space="preserve">
<source>, </source>
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@ -456,11 +425,6 @@
- 編集履歴。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="." xml:space="preserve">
<source>.</source>
<target>.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="0 sec" xml:space="preserve">
<source>0 sec</source>
<target>0 秒</target>
@ -528,11 +492,6 @@
<target>30秒</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=": " xml:space="preserve">
<source>: </source>
<target>: </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="&lt;p&gt;Hi!&lt;/p&gt;&#10;&lt;p&gt;&lt;a href=&quot;%@&quot;&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;" xml:space="preserve">
<source>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;&lt;a href="%@"&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;</source>
@ -540,14 +499,6 @@
&lt;p&gt;&lt;a href="%@"&gt;SimpleX Chatでつながろう&lt;/a&gt;&lt;/p&gt;</target>
<note>email text</note>
</trans-unit>
<trans-unit id="@%@" xml:space="preserve">
<source>@%@</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="@'%@'" xml:space="preserve">
<source>@'%@'</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="A few more things" xml:space="preserve">
<source>A few more things</source>
<target>その他</target>
@ -773,8 +724,8 @@
<target>全チャットとメッセージが削除されます(※元に戻せません※)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All chats will be removed from the list (text), and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list (text), and the list deleted.</source>
<trans-unit id="All chats will be removed from the list %@, and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list %@, and the list deleted.</source>
<note>alert message</note>
</trans-unit>
<trans-unit id="All data is erased when it is entered." xml:space="preserve">
@ -3407,9 +3358,9 @@ This is your own one-time link!</source>
%@</source>
<note>alert message</note>
</trans-unit>
<trans-unit id="File is blocked by server operator:&#10;(info.reason.text)." xml:space="preserve">
<trans-unit id="File is blocked by server operator:&#10;%@." xml:space="preserve">
<source>File is blocked by server operator:
(info.reason.text).</source>
%@.</source>
<note>file error text</note>
</trans-unit>
<trans-unit id="File not found - most likely file was deleted or cancelled." xml:space="preserve">
@ -5934,8 +5885,8 @@ Enable in *Network &amp; servers* settings.</source>
<source>Report violation: only group moderators will see it.</source>
<note>report reason</note>
</trans-unit>
<trans-unit id="Report: (text.isEmpty ? reason.text : text)" xml:space="preserve">
<source>Report: (text.isEmpty ? reason.text : text)</source>
<trans-unit id="Report: %@" xml:space="preserve">
<source>Report: %@</source>
<note>report in notification</note>
</trans-unit>
<trans-unit id="Reporting messages to moderators is prohibited." xml:space="preserve">

View file

@ -5,23 +5,6 @@
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="15.4" build-num="15F31d"/>
</header>
<body>
<trans-unit id="&#10;" xml:space="preserve">
<source>
</source>
<target>
</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" " xml:space="preserve">
<source> </source>
<target> </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (" xml:space="preserve">
<source> (</source>
<target> (</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (can be copied)" xml:space="preserve">
<source> (can be copied)</source>
<target> (kan gekopieerd worden)</target>
@ -332,11 +315,6 @@
<target>%u berichten zijn overgeslagen.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(" xml:space="preserve">
<source>(</source>
<target>(</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(new)" xml:space="preserve">
<source>(new)</source>
<target>(nieuw)</target>
@ -347,11 +325,6 @@
<target>(dit apparaat v%@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=")" xml:space="preserve">
<source>)</source>
<target>)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Create 1-time link**: to create and share a new invitation link." xml:space="preserve">
<source>**Create 1-time link**: to create and share a new invitation link.</source>
<target>**Contact toevoegen**: om een nieuwe uitnodigingslink aan te maken, of verbinding te maken via een link die u heeft ontvangen.</target>
@ -417,11 +390,6 @@
<target>\*vetgedrukt*</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=", " xml:space="preserve">
<source>, </source>
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@ -458,11 +426,6 @@
- bewerkingsgeschiedenis.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="." xml:space="preserve">
<source>.</source>
<target>.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="0 sec" xml:space="preserve">
<source>0 sec</source>
<target>0 sec</target>
@ -531,11 +494,6 @@
<target>30 seconden</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=": " xml:space="preserve">
<source>: </source>
<target>: </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="&lt;p&gt;Hi!&lt;/p&gt;&#10;&lt;p&gt;&lt;a href=&quot;%@&quot;&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;" xml:space="preserve">
<source>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;&lt;a href="%@"&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;</source>
@ -543,16 +501,6 @@
&lt;p&gt;&lt;a href="%@"&gt;Maak verbinding met mij via SimpleX Chat&lt;/a&gt;&lt;/p&gt;</target>
<note>email text</note>
</trans-unit>
<trans-unit id="@%@" xml:space="preserve">
<source>@%@</source>
<target>@%@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="@'%@'" xml:space="preserve">
<source>@'%@'</source>
<target>@'%@'</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="A few more things" xml:space="preserve">
<source>A few more things</source>
<target>Nog een paar dingen</target>
@ -798,9 +746,9 @@
<target>Alle chats en berichten worden verwijderd, dit kan niet ongedaan worden gemaakt!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All chats will be removed from the list (text), and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list (text), and the list deleted.</source>
<target>Alle chats worden uit de lijst (tekst) verwijderd en de lijst wordt verwijderd.</target>
<trans-unit id="All chats will be removed from the list %@, and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list %@, and the list deleted.</source>
<target>Alle chats worden uit de lijst %@ verwijderd en de lijst wordt verwijderd.</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="All data is erased when it is entered." xml:space="preserve">
@ -3663,11 +3611,11 @@ Dit is uw eigen eenmalige link!</target>
%@</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="File is blocked by server operator:&#10;(info.reason.text)." xml:space="preserve">
<trans-unit id="File is blocked by server operator:&#10;%@." xml:space="preserve">
<source>File is blocked by server operator:
(info.reason.text).</source>
%@.</source>
<target>Bestand is geblokkeerd door serveroperator:
(info.reason.text).</target>
%@.</target>
<note>file error text</note>
</trans-unit>
<trans-unit id="File not found - most likely file was deleted or cancelled." xml:space="preserve">
@ -6448,9 +6396,9 @@ Schakel dit in in *Netwerk en servers*-instellingen.</target>
<target>Rapporteer overtreding: alleen groepsmoderators kunnen dit zien.</target>
<note>report reason</note>
</trans-unit>
<trans-unit id="Report: (text.isEmpty ? reason.text : text)" xml:space="preserve">
<source>Report: (text.isEmpty ? reason.text : text)</source>
<target>Rapport: (text.isEmpty ? reason.text : text)</target>
<trans-unit id="Report: %@" xml:space="preserve">
<source>Report: %@</source>
<target>Rapport: %@</target>
<note>report in notification</note>
</trans-unit>
<trans-unit id="Reporting messages to moderators is prohibited." xml:space="preserve">

View file

@ -5,22 +5,6 @@
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="15.4" build-num="15F31d"/>
</header>
<body>
<trans-unit id="&#10;" xml:space="preserve">
<source>
</source>
<target>
</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" " xml:space="preserve">
<source> </source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (" xml:space="preserve">
<source> (</source>
<target> (</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (can be copied)" xml:space="preserve">
<source> (can be copied)</source>
<target> (można skopiować)</target>
@ -331,11 +315,6 @@
<target>%u pominiętych wiadomości.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(" xml:space="preserve">
<source>(</source>
<target>(</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(new)" xml:space="preserve">
<source>(new)</source>
<target>(nowy)</target>
@ -346,11 +325,6 @@
<target>(to urządzenie v%@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=")" xml:space="preserve">
<source>)</source>
<target>)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Create 1-time link**: to create and share a new invitation link." xml:space="preserve">
<source>**Create 1-time link**: to create and share a new invitation link.</source>
<target>**Dodaj kontakt**: aby utworzyć nowy link z zaproszeniem lub połączyć się za pomocą otrzymanego linku.</target>
@ -416,11 +390,6 @@
<target>\*pogrubiony*</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=", " xml:space="preserve">
<source>, </source>
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@ -457,11 +426,6 @@
- historia edycji.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="." xml:space="preserve">
<source>.</source>
<target>.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="0 sec" xml:space="preserve">
<source>0 sec</source>
<target>0 sek</target>
@ -530,11 +494,6 @@
<target>30 sekund</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=": " xml:space="preserve">
<source>: </source>
<target>: </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="&lt;p&gt;Hi!&lt;/p&gt;&#10;&lt;p&gt;&lt;a href=&quot;%@&quot;&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;" xml:space="preserve">
<source>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;&lt;a href="%@"&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;</source>
@ -542,16 +501,6 @@
&lt;p&gt;&lt;a href="%@"&gt;Połącz się ze mną poprzez SimpleX Chat.&lt;/a&gt;&lt;/p&gt;</target>
<note>email text</note>
</trans-unit>
<trans-unit id="@%@" xml:space="preserve">
<source>@%@</source>
<target>@%@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="@'%@'" xml:space="preserve">
<source>@'%@'</source>
<target>@'%@'</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="A few more things" xml:space="preserve">
<source>A few more things</source>
<target>Jeszcze kilka rzeczy</target>
@ -797,9 +746,9 @@
<target>Wszystkie czaty i wiadomości zostaną usunięte - nie można tego cofnąć!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All chats will be removed from the list (text), and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list (text), and the list deleted.</source>
<target>Wszystkie rozmowy zostaną usunięte z listy (text), a lista usunięta.</target>
<trans-unit id="All chats will be removed from the list %@, and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list %@, and the list deleted.</source>
<target>Wszystkie rozmowy zostaną usunięte z listy %@, a lista usunięta.</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="All data is erased when it is entered." xml:space="preserve">
@ -3607,9 +3556,9 @@ To jest twój jednorazowy link!</target>
%@</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="File is blocked by server operator:&#10;(info.reason.text)." xml:space="preserve">
<trans-unit id="File is blocked by server operator:&#10;%@." xml:space="preserve">
<source>File is blocked by server operator:
(info.reason.text).</source>
%@.</source>
<note>file error text</note>
</trans-unit>
<trans-unit id="File not found - most likely file was deleted or cancelled." xml:space="preserve">
@ -6302,8 +6251,8 @@ Włącz w ustawianiach *Sieć i serwery* .</target>
<source>Report violation: only group moderators will see it.</source>
<note>report reason</note>
</trans-unit>
<trans-unit id="Report: (text.isEmpty ? reason.text : text)" xml:space="preserve">
<source>Report: (text.isEmpty ? reason.text : text)</source>
<trans-unit id="Report: %@" xml:space="preserve">
<source>Report: %@</source>
<note>report in notification</note>
</trans-unit>
<trans-unit id="Reporting messages to moderators is prohibited." xml:space="preserve">

View file

@ -5,22 +5,6 @@
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="15.4" build-num="15F31d"/>
</header>
<body>
<trans-unit id="&#10;" xml:space="preserve">
<source>
</source>
<target>
</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" " xml:space="preserve">
<source> </source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (" xml:space="preserve">
<source> (</source>
<target> (</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (can be copied)" xml:space="preserve">
<source> (can be copied)</source>
<target> (можно скопировать)</target>
@ -331,11 +315,6 @@
<target>%u сообщений пропущено.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(" xml:space="preserve">
<source>(</source>
<target>(</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(new)" xml:space="preserve">
<source>(new)</source>
<target>(новое)</target>
@ -346,11 +325,6 @@
<target>(это устройство v%@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=")" xml:space="preserve">
<source>)</source>
<target>)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Create 1-time link**: to create and share a new invitation link." xml:space="preserve">
<source>**Create 1-time link**: to create and share a new invitation link.</source>
<target>**Добавить контакт**: создать и поделиться новой ссылкой-приглашением.</target>
@ -416,11 +390,6 @@
<target>\*жирный*</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=", " xml:space="preserve">
<source>, </source>
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@ -457,11 +426,6 @@
- история редактирования.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="." xml:space="preserve">
<source>.</source>
<target>.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="0 sec" xml:space="preserve">
<source>0 sec</source>
<target>0 сек</target>
@ -530,11 +494,6 @@
<target>30 секунд</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=": " xml:space="preserve">
<source>: </source>
<target>: </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="&lt;p&gt;Hi!&lt;/p&gt;&#10;&lt;p&gt;&lt;a href=&quot;%@&quot;&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;" xml:space="preserve">
<source>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;&lt;a href="%@"&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;</source>
@ -542,14 +501,6 @@
&lt;p&gt;&lt;a href="%@"&gt;Соединитесь со мной в SimpleX Chat.&lt;/a&gt;&lt;/p&gt;</target>
<note>email text</note>
</trans-unit>
<trans-unit id="@%@" xml:space="preserve">
<source>@%@</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="@'%@'" xml:space="preserve">
<source>@'%@'</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="A few more things" xml:space="preserve">
<source>A few more things</source>
<target>Еще несколько изменений</target>
@ -652,6 +603,7 @@
</trans-unit>
<trans-unit id="Active" xml:space="preserve">
<source>Active</source>
<target>Активный</target>
<note>token status text</note>
</trans-unit>
<trans-unit id="Active connections" xml:space="preserve">
@ -794,8 +746,9 @@
<target>Все чаты и сообщения будут удалены - это нельзя отменить!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All chats will be removed from the list (text), and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list (text), and the list deleted.</source>
<trans-unit id="All chats will be removed from the list %@, and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list %@, and the list deleted.</source>
<target>Все чаты будут удалены из списка %@, и список удален.</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="All data is erased when it is entered." xml:space="preserve">
@ -840,6 +793,7 @@
</trans-unit>
<trans-unit id="All reports will be archived for you." xml:space="preserve">
<source>All reports will be archived for you.</source>
<target>Все сообщения о нарушениях будут заархивированы для вас.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All your contacts will remain connected." xml:space="preserve">
@ -919,6 +873,7 @@
</trans-unit>
<trans-unit id="Allow to report messsages to moderators." xml:space="preserve">
<source>Allow to report messsages to moderators.</source>
<target>Разрешить отправлять сообщения о нарушениях модераторам.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow to send SimpleX links." xml:space="preserve">
@ -1033,6 +988,7 @@
</trans-unit>
<trans-unit id="App group:" xml:space="preserve">
<source>App group:</source>
<target>Группа приложения:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App icon" xml:space="preserve">
@ -1087,10 +1043,12 @@
</trans-unit>
<trans-unit id="Archive %lld reports?" xml:space="preserve">
<source>Archive %lld reports?</source>
<target>Архивировать %lld сообщений о нарушениях?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive all reports?" xml:space="preserve">
<source>Archive all reports?</source>
<target>Архивировать все сообщения о нарушениях?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive and upload" xml:space="preserve">
@ -1105,16 +1063,17 @@
</trans-unit>
<trans-unit id="Archive report" xml:space="preserve">
<source>Archive report</source>
<target>Архивировать отчет</target>
<target>Архивировать сообщение о нарушении</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive report?" xml:space="preserve">
<source>Archive report?</source>
<target>Архивировать отчет?</target>
<target>Архивировать сообщение о нарушении?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive reports" xml:space="preserve">
<source>Archive reports</source>
<target>Архивировать сообщения о нарушениях</target>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
@ -1129,6 +1088,7 @@
</trans-unit>
<trans-unit id="Ask" xml:space="preserve">
<source>Ask</source>
<target>Спросить</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Attach" xml:space="preserve">
@ -1233,6 +1193,7 @@
</trans-unit>
<trans-unit id="Better groups performance" xml:space="preserve">
<source>Better groups performance</source>
<target>Улучшенная производительность групп</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Better message dates." xml:space="preserve">
@ -1257,6 +1218,7 @@
</trans-unit>
<trans-unit id="Better privacy and security" xml:space="preserve">
<source>Better privacy and security</source>
<target>Улучшенная конфиденциальность и безопасность</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Better security ✅" xml:space="preserve">
@ -1361,6 +1323,7 @@
</trans-unit>
<trans-unit id="Businesses" xml:space="preserve">
<source>Businesses</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">
@ -1456,6 +1419,7 @@
</trans-unit>
<trans-unit id="Change automatic message deletion?" xml:space="preserve">
<source>Change automatic message deletion?</source>
<target>Измененить автоматическое удаление сообщений?</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
@ -1681,10 +1645,12 @@
</trans-unit>
<trans-unit id="Clear group?" xml:space="preserve">
<source>Clear group?</source>
<target>Очистить группу?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Clear or delete group?" xml:space="preserve">
<source>Clear or delete group?</source>
<target>Очистить или удалить группу?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Clear private notes?" xml:space="preserve">
@ -1709,6 +1675,7 @@
</trans-unit>
<trans-unit id="Community guidelines violation" xml:space="preserve">
<source>Community guidelines violation</source>
<target>Нарушение правил группы</target>
<note>report reason</note>
</trans-unit>
<trans-unit id="Compare file" xml:space="preserve">
@ -1828,6 +1795,7 @@
</trans-unit>
<trans-unit id="Confirmed" xml:space="preserve">
<source>Confirmed</source>
<target>Подтвержденный</target>
<note>token status text</note>
</trans-unit>
<trans-unit id="Connect" xml:space="preserve">
@ -1951,6 +1919,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Connection blocked" xml:space="preserve">
<source>Connection blocked</source>
<target>Соединение заблокировано</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection error" xml:space="preserve">
@ -1966,10 +1935,13 @@ This is your own one-time link!</source>
<trans-unit id="Connection is blocked by server operator:&#10;%@" xml:space="preserve">
<source>Connection is blocked by server operator:
%@</source>
<target>Соединение заблокировано сервером оператора:
%@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection not ready." xml:space="preserve">
<source>Connection not ready.</source>
<target>Соединение не готово.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection notifications" xml:space="preserve">
@ -1984,6 +1956,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Connection requires encryption renegotiation." xml:space="preserve">
<source>Connection requires encryption renegotiation.</source>
<target>Соединение требует повторного согласования шифрования.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection security" xml:space="preserve">
@ -2068,6 +2041,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Content violates conditions of use" xml:space="preserve">
<source>Content violates conditions of use</source>
<target>Содержание нарушает условия использования</target>
<note>blocking reason</note>
</trans-unit>
<trans-unit id="Continue" xml:space="preserve">
@ -2147,6 +2121,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Create list" xml:space="preserve">
<source>Create list</source>
<target>Создать список</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Create new profile in [desktop app](https://simplex.chat/downloads/). 💻" xml:space="preserve">
@ -2410,6 +2385,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Delete chat messages from your device." xml:space="preserve">
<source>Delete chat messages from your device.</source>
<target>Удалить сообщения с вашего устройства.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete chat profile" xml:space="preserve">
@ -2504,6 +2480,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Delete list?" xml:space="preserve">
<source>Delete list?</source>
<target>Удалить список?</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Delete member message?" xml:space="preserve">
@ -2558,6 +2535,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Delete report" xml:space="preserve">
<source>Delete report</source>
<target>Удалить сообщение о нарушении</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete up to 20 messages at once." xml:space="preserve">
@ -2722,10 +2700,12 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Disable automatic message deletion?" xml:space="preserve">
<source>Disable automatic message deletion?</source>
<target>Отключить автоматическое удаление сообщений?</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Disable delete messages" xml:space="preserve">
<source>Disable delete messages</source>
<target>Отключить удаление сообщений</target>
<note>alert button</note>
</trans-unit>
<trans-unit id="Disable for all" xml:space="preserve">
@ -2820,6 +2800,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Documents:" xml:space="preserve">
<source>Documents:</source>
<target>Документы:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Don't create address" xml:space="preserve">
@ -2834,6 +2815,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Don't miss important messages." xml:space="preserve">
<source>Don't miss important messages.</source>
<target>Не пропустите важные сообщения.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Don't show again" xml:space="preserve">
@ -2843,6 +2825,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Done" xml:space="preserve">
<source>Done</source>
<target>Готово</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Downgrade and open chat" xml:space="preserve">
@ -3078,6 +3061,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Encryption renegotiation in progress." xml:space="preserve">
<source>Encryption renegotiation in progress.</source>
<target>Выполняется повторное согласование шифрования.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enter Passcode" xml:space="preserve">
@ -3192,6 +3176,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Error checking token status" xml:space="preserve">
<source>Error checking token status</source>
<target>Ошибка проверки статуса токена</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error connecting to forwarding server %@. Please try later." xml:space="preserve">
@ -3216,6 +3201,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Error creating list" xml:space="preserve">
<source>Error creating list</source>
<target>Ошибка создания списка</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Error creating member contact" xml:space="preserve">
@ -3235,6 +3221,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Error creating report" xml:space="preserve">
<source>Error creating report</source>
<target>Ошибка создания сообщения о нарушении</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error decrypting file" xml:space="preserve">
@ -3349,6 +3336,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Error registering for notifications" xml:space="preserve">
<source>Error registering for notifications</source>
<target>Ошибка регистрации для уведомлений</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Error removing member" xml:space="preserve">
@ -3358,6 +3346,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Error reordering lists" xml:space="preserve">
<source>Error reordering lists</source>
<target>Ошибка сортировки списков</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Error resetting statistics" xml:space="preserve">
@ -3372,6 +3361,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Error saving chat list" xml:space="preserve">
<source>Error saving chat list</source>
<target>Ошибка сохранения списка чатов</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Error saving group profile" xml:space="preserve">
@ -3456,6 +3446,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Error testing server connection" xml:space="preserve">
<source>Error testing server connection</source>
<target>Ошибка проверки соединения с сервером</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error updating group link" xml:space="preserve">
@ -3540,6 +3531,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Expired" xml:space="preserve">
<source>Expired</source>
<target>Истекший</target>
<note>token status text</note>
</trans-unit>
<trans-unit id="Export database" xml:space="preserve">
@ -3584,6 +3576,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Faster deletion of groups." xml:space="preserve">
<source>Faster deletion of groups.</source>
<target>Ускорено удаление групп.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Faster joining and more reliable messages." xml:space="preserve">
@ -3593,6 +3586,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Faster sending messages." xml:space="preserve">
<source>Faster sending messages.</source>
<target>Ускорена отправка сообщений.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Favorite" xml:space="preserve">
@ -3602,6 +3596,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Favorites" xml:space="preserve">
<source>Favorites</source>
<target>Избранное</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="File error" xml:space="preserve">
@ -3616,9 +3611,11 @@ This is your own one-time link!</source>
%@</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="File is blocked by server operator:&#10;(info.reason.text)." xml:space="preserve">
<trans-unit id="File is blocked by server operator:&#10;%@." xml:space="preserve">
<source>File is blocked by server operator:
(info.reason.text).</source>
%@.</source>
<target>Файл заблокирован оператором сервера:
%@.</target>
<note>file error text</note>
</trans-unit>
<trans-unit id="File not found - most likely file was deleted or cancelled." xml:space="preserve">
@ -3748,6 +3745,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="For all moderators" xml:space="preserve">
<source>For all moderators</source>
<target>Для всех модераторов</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="For chat profile %@:" xml:space="preserve">
@ -3767,6 +3765,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="For me" xml:space="preserve">
<source>For me</source>
<target>Для меня</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="For private routing" xml:space="preserve">
@ -3895,6 +3894,7 @@ Error: %2$@</source>
</trans-unit>
<trans-unit id="Get notified when mentioned." xml:space="preserve">
<source>Get notified when mentioned.</source>
<target>Уведомления, когда Вас упомянули.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Good afternoon!" xml:space="preserve">
@ -4004,6 +4004,7 @@ Error: %2$@</source>
</trans-unit>
<trans-unit id="Groups" xml:space="preserve">
<source>Groups</source>
<target>Группы</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Help" xml:space="preserve">
@ -4013,6 +4014,7 @@ Error: %2$@</source>
</trans-unit>
<trans-unit id="Help admins moderating their groups." xml:space="preserve">
<source>Help admins moderating their groups.</source>
<target>Помогайте администраторам модерировать их группы.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Hidden" xml:space="preserve">
@ -4077,6 +4079,7 @@ Error: %2$@</source>
</trans-unit>
<trans-unit id="How it works" xml:space="preserve">
<source>How it works</source>
<target>Как это работает</target>
<note>alert button</note>
</trans-unit>
<trans-unit id="How to" xml:space="preserve">
@ -4222,10 +4225,12 @@ More improvements are coming soon!</source>
</trans-unit>
<trans-unit id="Inappropriate content" xml:space="preserve">
<source>Inappropriate content</source>
<target>Неприемлемый контент</target>
<note>report reason</note>
</trans-unit>
<trans-unit id="Inappropriate profile" xml:space="preserve">
<source>Inappropriate profile</source>
<target>Неприемлемый профиль</target>
<note>report reason</note>
</trans-unit>
<trans-unit id="Incognito" xml:space="preserve">
@ -4322,22 +4327,27 @@ More improvements are coming soon!</source>
</trans-unit>
<trans-unit id="Invalid" xml:space="preserve">
<source>Invalid</source>
<target>Недействительный</target>
<note>token status text</note>
</trans-unit>
<trans-unit id="Invalid (bad token)" xml:space="preserve">
<source>Invalid (bad token)</source>
<target>Недействительный (плохой токен)</target>
<note>token status text</note>
</trans-unit>
<trans-unit id="Invalid (expired)" xml:space="preserve">
<source>Invalid (expired)</source>
<target>Недействительный (истекший)</target>
<note>token status text</note>
</trans-unit>
<trans-unit id="Invalid (unregistered)" xml:space="preserve">
<source>Invalid (unregistered)</source>
<target>Недействительный (незарегистрированный)</target>
<note>token status text</note>
</trans-unit>
<trans-unit id="Invalid (wrong topic)" xml:space="preserve">
<source>Invalid (wrong topic)</source>
<target>Недействительный (плохой заголовок)</target>
<note>token status text</note>
</trans-unit>
<trans-unit id="Invalid QR code" xml:space="preserve">
@ -4615,14 +4625,17 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="List" xml:space="preserve">
<source>List</source>
<target>Список</target>
<note>swipe action</note>
</trans-unit>
<trans-unit id="List name and emoji should be different for all lists." xml:space="preserve">
<source>List name and emoji should be different for all lists.</source>
<target>Название списка и эмодзи должны быть разными для всех списков.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="List name..." xml:space="preserve">
<source>List name...</source>
<target>Имя списка...</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Live message!" xml:space="preserve">
@ -4717,6 +4730,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Member reports" xml:space="preserve">
<source>Member reports</source>
<target>Сообщения о нарушениях</target>
<note>chat feature</note>
</trans-unit>
<trans-unit id="Member role will be changed to &quot;%@&quot;. All chat members will be notified." xml:space="preserve">
@ -4756,6 +4770,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Members can report messsages to moderators." xml:space="preserve">
<source>Members can report messsages to moderators.</source>
<target>Члены группы могут пожаловаться модераторам.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Members can send SimpleX links." xml:space="preserve">
@ -4785,6 +4800,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Mention members 👋" xml:space="preserve">
<source>Mention members 👋</source>
<target>Упоминайте членов группы 👋</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Menus" xml:space="preserve">
@ -4899,6 +4915,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Messages in this chat will never be deleted." xml:space="preserve">
<source>Messages in this chat will never be deleted.</source>
<target>Сообщения в этом чате никогда не будут удалены.</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="Messages received" xml:space="preserve">
@ -5003,6 +5020,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="More" xml:space="preserve">
<source>More</source>
<target>Больше</target>
<note>swipe action</note>
</trans-unit>
<trans-unit id="More improvements are coming soon!" xml:space="preserve">
@ -5037,6 +5055,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Mute all" xml:space="preserve">
<source>Mute all</source>
<target>Все без звука</target>
<note>notification label action</note>
</trans-unit>
<trans-unit id="Muted when inactive!" xml:space="preserve">
@ -5091,6 +5110,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="New" xml:space="preserve">
<source>New</source>
<target>Новый</target>
<note>token status text</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
@ -5185,14 +5205,17 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="No chats" xml:space="preserve">
<source>No chats</source>
<target>Нет чатов</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="No chats found" xml:space="preserve">
<source>No chats found</source>
<target>Чаты не найдены</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="No chats in list %@" xml:space="preserve">
<source>No chats in list %@</source>
<target>Нет чатов в списке %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="No contacts selected" xml:space="preserve">
@ -5247,6 +5270,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="No message" xml:space="preserve">
<source>No message</source>
<target>Нет сообщения</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="No message servers." xml:space="preserve">
@ -5306,10 +5330,12 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="No token!" xml:space="preserve">
<source>No token!</source>
<target>Нет токена!</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="No unread chats" xml:space="preserve">
<source>No unread chats</source>
<target>Нет непрочитанных чатов</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="No user identifiers." xml:space="preserve">
@ -5324,6 +5350,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Notes" xml:space="preserve">
<source>Notes</source>
<target>Заметки</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Nothing selected" xml:space="preserve">
@ -5348,6 +5375,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Notifications error" xml:space="preserve">
<source>Notifications error</source>
<target>Ошибка уведомлений</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Notifications privacy" xml:space="preserve">
@ -5357,6 +5385,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Notifications status" xml:space="preserve">
<source>Notifications status</source>
<target>Статус уведомлений</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Now admins can:&#10;- delete members' messages.&#10;- disable members (&quot;observer&quot; role)" xml:space="preserve">
@ -5444,10 +5473,12 @@ Requires compatible VPN.</source>
</trans-unit>
<trans-unit id="Only sender and moderators see it" xml:space="preserve">
<source>Only sender and moderators see it</source>
<target>Только отправитель и модераторы видят это</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only you and moderators see it" xml:space="preserve">
<source>Only you and moderators see it</source>
<target>Только вы и модераторы видят это</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only you can add message reactions." xml:space="preserve">
@ -5537,10 +5568,12 @@ Requires compatible VPN.</source>
</trans-unit>
<trans-unit id="Open link" xml:space="preserve">
<source>Open link</source>
<target>Открыть ссылку</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Open links from chat list" xml:space="preserve">
<source>Open links from chat list</source>
<target>Открыть ссылку из списка чатов</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Open migration to another device" xml:space="preserve">
@ -5550,6 +5583,7 @@ Requires compatible VPN.</source>
</trans-unit>
<trans-unit id="Open web link?" xml:space="preserve">
<source>Open web link?</source>
<target>Открыть веб-ссылку?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Opening app…" xml:space="preserve">
@ -5599,6 +5633,7 @@ Requires compatible VPN.</source>
</trans-unit>
<trans-unit id="Organize chats into lists" xml:space="preserve">
<source>Organize chats into lists</source>
<target>Организуйте чаты в списки</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Other" xml:space="preserve">
@ -5685,7 +5720,7 @@ Requires compatible VPN.</source>
</trans-unit>
<trans-unit id="Pending" xml:space="preserve">
<source>Pending</source>
<target>В ожидании</target>
<target>Ожидает</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Periodic" xml:space="preserve">
@ -5794,14 +5829,17 @@ Error: %@</source>
</trans-unit>
<trans-unit id="Please try to disable and re-enable notfications." xml:space="preserve">
<source>Please try to disable and re-enable notfications.</source>
<target>Попробуйте выключить и снова включить уведомления.</target>
<note>token info</note>
</trans-unit>
<trans-unit id="Please wait for token activation to complete." xml:space="preserve">
<source>Please wait for token activation to complete.</source>
<target>Пожалуйста, дождитесь завершения активации токена.</target>
<note>token info</note>
</trans-unit>
<trans-unit id="Please wait for token to be registered." xml:space="preserve">
<source>Please wait for token to be registered.</source>
<target>Пожалуйста, дождитесь регистрации токена.</target>
<note>token info</note>
</trans-unit>
<trans-unit id="Polish interface" xml:space="preserve">
@ -5866,6 +5904,7 @@ Error: %@</source>
</trans-unit>
<trans-unit id="Private media file names." xml:space="preserve">
<source>Private media file names.</source>
<target>Конфиденциальные названия медиафайлов.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Private message routing" xml:space="preserve">
@ -5945,6 +5984,7 @@ Error: %@</source>
</trans-unit>
<trans-unit id="Prohibit reporting messages to moderators." xml:space="preserve">
<source>Prohibit reporting messages to moderators.</source>
<target>Запретить жаловаться модераторам группы.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Prohibit sending SimpleX links." xml:space="preserve">
@ -6206,14 +6246,17 @@ Enable in *Network &amp; servers* settings.</source>
</trans-unit>
<trans-unit id="Register" xml:space="preserve">
<source>Register</source>
<target>Зарегистрировать</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Register notification token?" xml:space="preserve">
<source>Register notification token?</source>
<target>Зарегистрировать токен уведомлений?</target>
<note>token info</note>
</trans-unit>
<trans-unit id="Registered" xml:space="preserve">
<source>Registered</source>
<target>Зарегистрирован</target>
<note>token status text</note>
</trans-unit>
<trans-unit id="Reject" xml:space="preserve">
@ -6319,42 +6362,52 @@ Enable in *Network &amp; servers* settings.</source>
</trans-unit>
<trans-unit id="Report" xml:space="preserve">
<source>Report</source>
<target>Пожаловаться</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Report content: only group moderators will see it." xml:space="preserve">
<source>Report content: only group moderators will see it.</source>
<target>Пожаловаться на сообщение: увидят только модераторы группы.</target>
<note>report reason</note>
</trans-unit>
<trans-unit id="Report member profile: only group moderators will see it." xml:space="preserve">
<source>Report member profile: only group moderators will see it.</source>
<target>Пожаловаться на профиль: увидят только модераторы группы.</target>
<note>report reason</note>
</trans-unit>
<trans-unit id="Report other: only group moderators will see it." xml:space="preserve">
<source>Report other: only group moderators will see it.</source>
<target>Пожаловаться: увидят только модераторы группы.</target>
<note>report reason</note>
</trans-unit>
<trans-unit id="Report reason?" xml:space="preserve">
<source>Report reason?</source>
<target>Причина сообщения?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Report spam: only group moderators will see it." xml:space="preserve">
<source>Report spam: only group moderators will see it.</source>
<target>Пожаловаться на спам: увидят только модераторы группы.</target>
<note>report reason</note>
</trans-unit>
<trans-unit id="Report violation: only group moderators will see it." xml:space="preserve">
<source>Report violation: only group moderators will see it.</source>
<target>Пожаловаться на нарушение: увидят только модераторы группы.</target>
<note>report reason</note>
</trans-unit>
<trans-unit id="Report: (text.isEmpty ? reason.text : text)" xml:space="preserve">
<source>Report: (text.isEmpty ? reason.text : text)</source>
<trans-unit id="Report: %@" xml:space="preserve">
<source>Report: %@</source>
<target>Сообщение о нарушении: %@</target>
<note>report in notification</note>
</trans-unit>
<trans-unit id="Reporting messages to moderators is prohibited." xml:space="preserve">
<source>Reporting messages to moderators is prohibited.</source>
<target>Сообщения о нарушениях запрещены в этой группе.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reports" xml:space="preserve">
<source>Reports</source>
<target>Сообщения о нарушениях</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Required" xml:space="preserve">
@ -6535,6 +6588,7 @@ Enable in *Network &amp; servers* settings.</source>
</trans-unit>
<trans-unit id="Save list" xml:space="preserve">
<source>Save list</source>
<target>Сохранить список</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save passphrase and open chat" xml:space="preserve">
@ -6779,6 +6833,7 @@ Enable in *Network &amp; servers* settings.</source>
</trans-unit>
<trans-unit id="Send private reports" xml:space="preserve">
<source>Send private reports</source>
<target>Вы можете сообщить о нарушениях</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send questions and ideas" xml:space="preserve">
@ -6998,6 +7053,7 @@ Enable in *Network &amp; servers* settings.</source>
</trans-unit>
<trans-unit id="Set chat name…" xml:space="preserve">
<source>Set chat name…</source>
<target>Имя чата…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Set contact name…" xml:space="preserve">
@ -7022,6 +7078,7 @@ Enable in *Network &amp; servers* settings.</source>
</trans-unit>
<trans-unit id="Set message expiration in chats." xml:space="preserve">
<source>Set message expiration in chats.</source>
<target>Установите срок хранения сообщений в чатах.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Set passcode" xml:space="preserve">
@ -7334,6 +7391,7 @@ Enable in *Network &amp; servers* settings.</source>
</trans-unit>
<trans-unit id="Spam" xml:space="preserve">
<source>Spam</source>
<target>Спам</target>
<note>blocking reason
report reason</note>
</trans-unit>
@ -7424,6 +7482,7 @@ Enable in *Network &amp; servers* settings.</source>
</trans-unit>
<trans-unit id="Storage" xml:space="preserve">
<source>Storage</source>
<target>Хранилище</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Strong" xml:space="preserve">
@ -7488,6 +7547,7 @@ Enable in *Network &amp; servers* settings.</source>
</trans-unit>
<trans-unit id="TCP port for messaging" xml:space="preserve">
<source>TCP port for messaging</source>
<target>TCP-порт для отправки сообщений</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="TCP_KEEPCNT" xml:space="preserve">
@ -7567,6 +7627,7 @@ Enable in *Network &amp; servers* settings.</source>
</trans-unit>
<trans-unit id="Test notifications" xml:space="preserve">
<source>Test notifications</source>
<target>Протестировать уведомления</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Test server" xml:space="preserve">
@ -7773,6 +7834,7 @@ It can happen because of some bug or when the connection is compromised.</source
</trans-unit>
<trans-unit id="This action cannot be undone - the messages sent and received in this chat earlier than selected will be deleted." xml:space="preserve">
<source>This action cannot be undone - the messages sent and received in this chat earlier than selected will be deleted.</source>
<target>Это действие нельзя отменить - сообщения в этом чате, отправленные или полученные раньше чем выбрано, будут удалены.</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost." xml:space="preserve">
@ -7827,6 +7889,7 @@ It can happen because of some bug or when the connection is compromised.</source
</trans-unit>
<trans-unit id="This message was deleted or not received yet." xml:space="preserve">
<source>This message was deleted or not received yet.</source>
<target>Это сообщение было удалено или еще не получено.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="This setting applies to messages in your current chat profile **%@**." xml:space="preserve">
@ -7943,6 +8006,7 @@ You will be prompted to complete authentication before this feature is enabled.<
</trans-unit>
<trans-unit id="Token status: %@." xml:space="preserve">
<source>Token status: %@.</source>
<target>Статус токена: %@.</target>
<note>token status</note>
</trans-unit>
<trans-unit id="Toolbar opacity" xml:space="preserve">
@ -8144,6 +8208,7 @@ To connect, please ask your contact to create another connection link and check
</trans-unit>
<trans-unit id="Updated conditions" xml:space="preserve">
<source>Updated conditions</source>
<target>Обновленные условия</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating settings will re-connect the client to all servers." xml:space="preserve">
@ -8208,6 +8273,7 @@ To connect, please ask your contact to create another connection link and check
</trans-unit>
<trans-unit id="Use TCP port %@ when no port is specified." xml:space="preserve">
<source>Use TCP port %@ when no port is specified.</source>
<target>Использовать TCP-порт %@, когда порт не указан.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use chat" xml:space="preserve">
@ -8287,6 +8353,7 @@ To connect, please ask your contact to create another connection link and check
</trans-unit>
<trans-unit id="Use web port" xml:space="preserve">
<source>Use web port</source>
<target>Использовать веб-порт</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User selection" xml:space="preserve">
@ -8571,6 +8638,7 @@ To connect, please ask your contact to create another connection link and check
</trans-unit>
<trans-unit id="Yes" xml:space="preserve">
<source>Yes</source>
<target>Да</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You **must not** use the same database on two devices." xml:space="preserve">
@ -8844,6 +8912,7 @@ Repeat connection request?</source>
</trans-unit>
<trans-unit id="You should receive notifications." xml:space="preserve">
<source>You should receive notifications.</source>
<target>Вы должны получать уведомления.</target>
<note>token info</note>
</trans-unit>
<trans-unit id="You will be connected to group when the group host's device is online, please wait or check later!" xml:space="preserve">
@ -9113,6 +9182,7 @@ Repeat connection request?</source>
</trans-unit>
<trans-unit id="archived report" xml:space="preserve">
<source>archived report</source>
<target>заархивированное сообщение о нарушении</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="attempts" xml:space="preserve">
@ -9633,6 +9703,7 @@ Repeat connection request?</source>
</trans-unit>
<trans-unit id="moderator" xml:space="preserve">
<source>moderator</source>
<target>модератор</target>
<note>member role</note>
</trans-unit>
<trans-unit id="months" xml:space="preserve">
@ -9719,10 +9790,12 @@ Repeat connection request?</source>
</trans-unit>
<trans-unit id="pending" xml:space="preserve">
<source>pending</source>
<target>ожидает</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="pending approval" xml:space="preserve">
<source>pending approval</source>
<target>ожидает утверждения</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="quantum resistant e2e encryption" xml:space="preserve">
@ -9742,6 +9815,7 @@ Repeat connection request?</source>
</trans-unit>
<trans-unit id="rejected" xml:space="preserve">
<source>rejected</source>
<target>отклонён</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="rejected call" xml:space="preserve">

View file

@ -5,22 +5,6 @@
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="15.4" build-num="15F31d"/>
</header>
<body>
<trans-unit id="&#10;" xml:space="preserve">
<source>
</source>
<target>
</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" " xml:space="preserve">
<source> </source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (" xml:space="preserve">
<source> (</source>
<target> (</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (can be copied)" xml:space="preserve">
<source> (can be copied)</source>
<target> (สามารถคัดลอกได้)</target>
@ -306,11 +290,6 @@
<target>%u ข้อความที่ถูกข้าม</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(" xml:space="preserve">
<source>(</source>
<target>(</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(new)" xml:space="preserve">
<source>(new)</source>
<note>No comment provided by engineer.</note>
@ -319,11 +298,6 @@
<source>(this device v%@)</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=")" xml:space="preserve">
<source>)</source>
<target>)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Create 1-time link**: to create and share a new invitation link." xml:space="preserve">
<source>**Create 1-time link**: to create and share a new invitation link.</source>
<note>No comment provided by engineer.</note>
@ -384,11 +358,6 @@
<target>\*ตัวหนา*</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=", " xml:space="preserve">
<source>, </source>
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@ -419,11 +388,6 @@
- ประวัติการแก้ไข</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="." xml:space="preserve">
<source>.</source>
<target>.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="0 sec" xml:space="preserve">
<source>0 sec</source>
<note>time to disappear</note>
@ -488,11 +452,6 @@
<target>30 วินาที</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=": " xml:space="preserve">
<source>: </source>
<target>: </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="&lt;p&gt;Hi!&lt;/p&gt;&#10;&lt;p&gt;&lt;a href=&quot;%@&quot;&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;" xml:space="preserve">
<source>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;&lt;a href="%@"&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;</source>
@ -500,14 +459,6 @@
&lt;p&gt;&lt;a href="%@"&gt;เชื่อมต่อกับฉันผ่าน SimpleX Chat&lt;/a&gt;&lt;/p&gt;</target>
<note>email text</note>
</trans-unit>
<trans-unit id="@%@" xml:space="preserve">
<source>@%@</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="@'%@'" xml:space="preserve">
<source>@'%@'</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="A few more things" xml:space="preserve">
<source>A few more things</source>
<target>อีกสองสามอย่าง</target>
@ -728,8 +679,8 @@
<target>แชทและข้อความทั้งหมดจะถูกลบ - การดำเนินการนี้ไม่สามารถยกเลิกได้!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All chats will be removed from the list (text), and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list (text), and the list deleted.</source>
<trans-unit id="All chats will be removed from the list %@, and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list %@, and the list deleted.</source>
<note>alert message</note>
</trans-unit>
<trans-unit id="All data is erased when it is entered." xml:space="preserve">
@ -3319,9 +3270,9 @@ This is your own one-time link!</source>
%@</source>
<note>alert message</note>
</trans-unit>
<trans-unit id="File is blocked by server operator:&#10;(info.reason.text)." xml:space="preserve">
<trans-unit id="File is blocked by server operator:&#10;%@." xml:space="preserve">
<source>File is blocked by server operator:
(info.reason.text).</source>
%@.</source>
<note>file error text</note>
</trans-unit>
<trans-unit id="File not found - most likely file was deleted or cancelled." xml:space="preserve">
@ -5834,8 +5785,8 @@ Enable in *Network &amp; servers* settings.</source>
<source>Report violation: only group moderators will see it.</source>
<note>report reason</note>
</trans-unit>
<trans-unit id="Report: (text.isEmpty ? reason.text : text)" xml:space="preserve">
<source>Report: (text.isEmpty ? reason.text : text)</source>
<trans-unit id="Report: %@" xml:space="preserve">
<source>Report: %@</source>
<note>report in notification</note>
</trans-unit>
<trans-unit id="Reporting messages to moderators is prohibited." xml:space="preserve">

View file

@ -5,22 +5,6 @@
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="15.4" build-num="15F31d"/>
</header>
<body>
<trans-unit id="&#10;" xml:space="preserve">
<source>
</source>
<target>
</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" " xml:space="preserve">
<source> </source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (" xml:space="preserve">
<source> (</source>
<target> (</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (can be copied)" xml:space="preserve">
<source> (can be copied)</source>
<target> (kopyalanabilir)</target>
@ -330,11 +314,6 @@
<target>%u mesajlar atlandı.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(" xml:space="preserve">
<source>(</source>
<target>(</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(new)" xml:space="preserve">
<source>(new)</source>
<target>(yeni)</target>
@ -345,11 +324,6 @@
<target>(bu cihaz v%@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=")" xml:space="preserve">
<source>)</source>
<target>)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Create 1-time link**: to create and share a new invitation link." xml:space="preserve">
<source>**Create 1-time link**: to create and share a new invitation link.</source>
<target>**Kişi ekle**: yeni bir davet bağlantısı oluşturmak için, ya da aldığın bağlantıyla bağlan.</target>
@ -415,11 +389,6 @@
<target>\*kalın*</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=", " xml:space="preserve">
<source>, </source>
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@ -456,11 +425,6 @@
- düzenleme geçmişi.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="." xml:space="preserve">
<source>.</source>
<target>.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="0 sec" xml:space="preserve">
<source>0 sec</source>
<target>0 saniye</target>
@ -528,11 +492,6 @@
<target>30 saniye</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=": " xml:space="preserve">
<source>: </source>
<target>: </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="&lt;p&gt;Hi!&lt;/p&gt;&#10;&lt;p&gt;&lt;a href=&quot;%@&quot;&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;" xml:space="preserve">
<source>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;&lt;a href="%@"&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;</source>
@ -540,14 +499,6 @@
&lt;p&gt;&lt;a href="%@"&gt;SimpleX Chat ile bana bağlanın&lt;/a&gt;&lt;/p&gt;</target>
<note>email text</note>
</trans-unit>
<trans-unit id="@%@" xml:space="preserve">
<source>@%@</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="@'%@'" xml:space="preserve">
<source>@'%@'</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="A few more things" xml:space="preserve">
<source>A few more things</source>
<target>Birkaç şey daha</target>
@ -789,8 +740,8 @@
<target>Tüm konuşmalar ve mesajlar silinecektir. Bu, geri alınamaz!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All chats will be removed from the list (text), and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list (text), and the list deleted.</source>
<trans-unit id="All chats will be removed from the list %@, and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list %@, and the list deleted.</source>
<note>alert message</note>
</trans-unit>
<trans-unit id="All data is erased when it is entered." xml:space="preserve">
@ -3606,9 +3557,9 @@ Bu senin kendi tek kullanımlık bağlantın!</target>
%@</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="File is blocked by server operator:&#10;(info.reason.text)." xml:space="preserve">
<trans-unit id="File is blocked by server operator:&#10;%@." xml:space="preserve">
<source>File is blocked by server operator:
(info.reason.text).</source>
%@.</source>
<note>file error text</note>
</trans-unit>
<trans-unit id="File not found - most likely file was deleted or cancelled." xml:space="preserve">
@ -6314,8 +6265,8 @@ Enable in *Network &amp; servers* settings.</source>
<source>Report violation: only group moderators will see it.</source>
<note>report reason</note>
</trans-unit>
<trans-unit id="Report: (text.isEmpty ? reason.text : text)" xml:space="preserve">
<source>Report: (text.isEmpty ? reason.text : text)</source>
<trans-unit id="Report: %@" xml:space="preserve">
<source>Report: %@</source>
<note>report in notification</note>
</trans-unit>
<trans-unit id="Reporting messages to moderators is prohibited." xml:space="preserve">

View file

@ -5,22 +5,6 @@
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="15.4" build-num="15F31d"/>
</header>
<body>
<trans-unit id="&#10;" xml:space="preserve">
<source>
</source>
<target>
</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" " xml:space="preserve">
<source> </source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (" xml:space="preserve">
<source> (</source>
<target> (</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (can be copied)" xml:space="preserve">
<source> (can be copied)</source>
<target> (можна скопіювати)</target>
@ -330,11 +314,6 @@
<target>%u повідомлень пропущено.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(" xml:space="preserve">
<source>(</source>
<target>(</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(new)" xml:space="preserve">
<source>(new)</source>
<target>(новий)</target>
@ -345,11 +324,6 @@
<target>(цей пристрій v%@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=")" xml:space="preserve">
<source>)</source>
<target>)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Create 1-time link**: to create and share a new invitation link." xml:space="preserve">
<source>**Create 1-time link**: to create and share a new invitation link.</source>
<target>**Додати контакт**: створити нове посилання-запрошення.</target>
@ -415,11 +389,6 @@
<target>\*жирний*</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=", " xml:space="preserve">
<source>, </source>
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@ -456,11 +425,6 @@
- історія редагування.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="." xml:space="preserve">
<source>.</source>
<target>.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="0 sec" xml:space="preserve">
<source>0 sec</source>
<target>0 сек</target>
@ -528,11 +492,6 @@
<target>30 секунд</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=": " xml:space="preserve">
<source>: </source>
<target>: </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="&lt;p&gt;Hi!&lt;/p&gt;&#10;&lt;p&gt;&lt;a href=&quot;%@&quot;&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;" xml:space="preserve">
<source>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;&lt;a href="%@"&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;</source>
@ -540,14 +499,6 @@
&lt;p&gt;&lt;a href="%@"&gt; Зв'яжіться зі мною через SimpleX Chat&lt;/a&gt;&lt;/p&gt;</target>
<note>email text</note>
</trans-unit>
<trans-unit id="@%@" xml:space="preserve">
<source>@%@</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="@'%@'" xml:space="preserve">
<source>@'%@'</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="A few more things" xml:space="preserve">
<source>A few more things</source>
<target>Ще кілька речей</target>
@ -789,8 +740,8 @@
<target>Всі чати та повідомлення будуть видалені - це неможливо скасувати!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All chats will be removed from the list (text), and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list (text), and the list deleted.</source>
<trans-unit id="All chats will be removed from the list %@, and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list %@, and the list deleted.</source>
<note>alert message</note>
</trans-unit>
<trans-unit id="All data is erased when it is entered." xml:space="preserve">
@ -3607,9 +3558,9 @@ This is your own one-time link!</source>
%@</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="File is blocked by server operator:&#10;(info.reason.text)." xml:space="preserve">
<trans-unit id="File is blocked by server operator:&#10;%@." xml:space="preserve">
<source>File is blocked by server operator:
(info.reason.text).</source>
%@.</source>
<note>file error text</note>
</trans-unit>
<trans-unit id="File not found - most likely file was deleted or cancelled." xml:space="preserve">
@ -6337,8 +6288,8 @@ Enable in *Network &amp; servers* settings.</source>
<source>Report violation: only group moderators will see it.</source>
<note>report reason</note>
</trans-unit>
<trans-unit id="Report: (text.isEmpty ? reason.text : text)" xml:space="preserve">
<source>Report: (text.isEmpty ? reason.text : text)</source>
<trans-unit id="Report: %@" xml:space="preserve">
<source>Report: %@</source>
<note>report in notification</note>
</trans-unit>
<trans-unit id="Reporting messages to moderators is prohibited." xml:space="preserve">

View file

@ -5,22 +5,6 @@
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="15.4" build-num="15F31d"/>
</header>
<body>
<trans-unit id="&#10;" xml:space="preserve">
<source>
</source>
<target>
</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" " xml:space="preserve">
<source> </source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (" xml:space="preserve">
<source> (</source>
<target> (</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (can be copied)" xml:space="preserve">
<source> (can be copied)</source>
<target> (可复制)</target>
@ -322,11 +306,6 @@
<target>已跳过 %u 条消息。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(" xml:space="preserve">
<source>(</source>
<target>(</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(new)" xml:space="preserve">
<source>(new)</source>
<target>(新)</target>
@ -337,11 +316,6 @@
<target>(此设备 v%@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=")" xml:space="preserve">
<source>)</source>
<target>)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Create 1-time link**: to create and share a new invitation link." xml:space="preserve">
<source>**Create 1-time link**: to create and share a new invitation link.</source>
<target>**添加联系人**: 创建新的邀请链接,或通过您收到的链接进行连接.</target>
@ -406,11 +380,6 @@
<target>\*加粗*</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=", " xml:space="preserve">
<source>, </source>
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@ -447,11 +416,6 @@
- 编辑消息历史。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="." xml:space="preserve">
<source>.</source>
<target>.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="0 sec" xml:space="preserve">
<source>0 sec</source>
<target>0 秒</target>
@ -517,11 +481,6 @@
<target>30秒</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=": " xml:space="preserve">
<source>: </source>
<target>: </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="&lt;p&gt;Hi!&lt;/p&gt;&#10;&lt;p&gt;&lt;a href=&quot;%@&quot;&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;" xml:space="preserve">
<source>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;&lt;a href="%@"&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;</source>
@ -529,14 +488,6 @@
&lt;p&gt;&lt;a href="%@"&gt;通过 SimpleX Chat &lt;/a&gt;&lt;/p&gt;与我联系</target>
<note>email text</note>
</trans-unit>
<trans-unit id="@%@" xml:space="preserve">
<source>@%@</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="@'%@'" xml:space="preserve">
<source>@'%@'</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="A few more things" xml:space="preserve">
<source>A few more things</source>
<target>一些杂项</target>
@ -768,8 +719,8 @@
<target>所有聊天记录和消息将被删除——这一行为无法撤销!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All chats will be removed from the list (text), and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list (text), and the list deleted.</source>
<trans-unit id="All chats will be removed from the list %@, and the list deleted." xml:space="preserve">
<source>All chats will be removed from the list %@, and the list deleted.</source>
<note>alert message</note>
</trans-unit>
<trans-unit id="All data is erased when it is entered." xml:space="preserve">
@ -3532,9 +3483,9 @@ This is your own one-time link!</source>
%@</source>
<note>alert message</note>
</trans-unit>
<trans-unit id="File is blocked by server operator:&#10;(info.reason.text)." xml:space="preserve">
<trans-unit id="File is blocked by server operator:&#10;%@." xml:space="preserve">
<source>File is blocked by server operator:
(info.reason.text).</source>
%@.</source>
<note>file error text</note>
</trans-unit>
<trans-unit id="File not found - most likely file was deleted or cancelled." xml:space="preserve">
@ -6209,8 +6160,8 @@ Enable in *Network &amp; servers* settings.</source>
<source>Report violation: only group moderators will see it.</source>
<note>report reason</note>
</trans-unit>
<trans-unit id="Report: (text.isEmpty ? reason.text : text)" xml:space="preserve">
<source>Report: (text.isEmpty ? reason.text : text)</source>
<trans-unit id="Report: %@" xml:space="preserve">
<source>Report: %@</source>
<note>report in notification</note>
</trans-unit>
<trans-unit id="Reporting messages to moderators is prohibited." xml:space="preserve">

View file

@ -92,7 +92,7 @@
"Share" = "Megosztás";
/* No comment provided by engineer. */
"Slow network?" = "Lassú internetkapcsolat?";
"Slow network?" = "Lassú a hálózata?";
/* No comment provided by engineer. */
"Unknown database error: %@" = "Ismeretlen adatbázishiba: %@";

View file

@ -174,8 +174,8 @@
64C3B0212A0D359700E19930 /* CustomTimePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64C3B0202A0D359700E19930 /* CustomTimePicker.swift */; };
64C8299D2D54AEEE006B9E89 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C829982D54AEED006B9E89 /* libgmp.a */; };
64C8299E2D54AEEE006B9E89 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C829992D54AEEE006B9E89 /* libffi.a */; };
64C8299F2D54AEEE006B9E89 /* libHSsimplex-chat-6.3.0.7-Er4xsZkxTrnBI7tHHcaHrY-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C8299A2D54AEEE006B9E89 /* libHSsimplex-chat-6.3.0.7-Er4xsZkxTrnBI7tHHcaHrY-ghc9.6.3.a */; };
64C829A02D54AEEE006B9E89 /* libHSsimplex-chat-6.3.0.7-Er4xsZkxTrnBI7tHHcaHrY.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C8299B2D54AEEE006B9E89 /* libHSsimplex-chat-6.3.0.7-Er4xsZkxTrnBI7tHHcaHrY.a */; };
64C8299F2D54AEEE006B9E89 /* libHSsimplex-chat-6.3.0.8-3RDt4h0Fq4hJV00CU7V8H-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C8299A2D54AEEE006B9E89 /* libHSsimplex-chat-6.3.0.8-3RDt4h0Fq4hJV00CU7V8H-ghc9.6.3.a */; };
64C829A02D54AEEE006B9E89 /* libHSsimplex-chat-6.3.0.8-3RDt4h0Fq4hJV00CU7V8H.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C8299B2D54AEEE006B9E89 /* libHSsimplex-chat-6.3.0.8-3RDt4h0Fq4hJV00CU7V8H.a */; };
64C829A12D54AEEE006B9E89 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C8299C2D54AEEE006B9E89 /* libgmpxx.a */; };
64D0C2C029F9688300B38D5F /* UserAddressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64D0C2BF29F9688300B38D5F /* UserAddressView.swift */; };
64D0C2C229FA57AB00B38D5F /* UserAddressLearnMore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64D0C2C129FA57AB00B38D5F /* UserAddressLearnMore.swift */; };
@ -531,8 +531,8 @@
64C3B0202A0D359700E19930 /* CustomTimePicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomTimePicker.swift; sourceTree = "<group>"; };
64C829982D54AEED006B9E89 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = "<group>"; };
64C829992D54AEEE006B9E89 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = "<group>"; };
64C8299A2D54AEEE006B9E89 /* libHSsimplex-chat-6.3.0.7-Er4xsZkxTrnBI7tHHcaHrY-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.3.0.7-Er4xsZkxTrnBI7tHHcaHrY-ghc9.6.3.a"; sourceTree = "<group>"; };
64C8299B2D54AEEE006B9E89 /* libHSsimplex-chat-6.3.0.7-Er4xsZkxTrnBI7tHHcaHrY.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.3.0.7-Er4xsZkxTrnBI7tHHcaHrY.a"; sourceTree = "<group>"; };
64C8299A2D54AEEE006B9E89 /* libHSsimplex-chat-6.3.0.8-3RDt4h0Fq4hJV00CU7V8H-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.3.0.8-3RDt4h0Fq4hJV00CU7V8H-ghc9.6.3.a"; sourceTree = "<group>"; };
64C8299B2D54AEEE006B9E89 /* libHSsimplex-chat-6.3.0.8-3RDt4h0Fq4hJV00CU7V8H.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.3.0.8-3RDt4h0Fq4hJV00CU7V8H.a"; sourceTree = "<group>"; };
64C8299C2D54AEEE006B9E89 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = "<group>"; };
64D0C2BF29F9688300B38D5F /* UserAddressView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserAddressView.swift; sourceTree = "<group>"; };
64D0C2C129FA57AB00B38D5F /* UserAddressLearnMore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserAddressLearnMore.swift; sourceTree = "<group>"; };
@ -688,8 +688,8 @@
64C8299D2D54AEEE006B9E89 /* libgmp.a in Frameworks */,
64C8299E2D54AEEE006B9E89 /* libffi.a in Frameworks */,
64C829A12D54AEEE006B9E89 /* libgmpxx.a in Frameworks */,
64C8299F2D54AEEE006B9E89 /* libHSsimplex-chat-6.3.0.7-Er4xsZkxTrnBI7tHHcaHrY-ghc9.6.3.a in Frameworks */,
64C829A02D54AEEE006B9E89 /* libHSsimplex-chat-6.3.0.7-Er4xsZkxTrnBI7tHHcaHrY.a in Frameworks */,
64C8299F2D54AEEE006B9E89 /* libHSsimplex-chat-6.3.0.8-3RDt4h0Fq4hJV00CU7V8H-ghc9.6.3.a in Frameworks */,
64C829A02D54AEEE006B9E89 /* libHSsimplex-chat-6.3.0.8-3RDt4h0Fq4hJV00CU7V8H.a in Frameworks */,
CE38A29C2C3FCD72005ED185 /* SwiftyGif in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@ -774,8 +774,8 @@
64C829992D54AEEE006B9E89 /* libffi.a */,
64C829982D54AEED006B9E89 /* libgmp.a */,
64C8299C2D54AEEE006B9E89 /* libgmpxx.a */,
64C8299A2D54AEEE006B9E89 /* libHSsimplex-chat-6.3.0.7-Er4xsZkxTrnBI7tHHcaHrY-ghc9.6.3.a */,
64C8299B2D54AEEE006B9E89 /* libHSsimplex-chat-6.3.0.7-Er4xsZkxTrnBI7tHHcaHrY.a */,
64C8299A2D54AEEE006B9E89 /* libHSsimplex-chat-6.3.0.8-3RDt4h0Fq4hJV00CU7V8H-ghc9.6.3.a */,
64C8299B2D54AEEE006B9E89 /* libHSsimplex-chat-6.3.0.8-3RDt4h0Fq4hJV00CU7V8H.a */,
);
path = Libraries;
sourceTree = "<group>";
@ -1963,7 +1963,7 @@
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 267;
CURRENT_PROJECT_VERSION = 269;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
@ -1989,6 +1989,7 @@
);
LLVM_LTO = YES_THIN;
MARKETING_VERSION = 6.3;
OTHER_LDFLAGS = "-Wl,-stack_size,0x1000000";
PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.app;
PRODUCT_NAME = SimpleX;
SDKROOT = iphoneos;
@ -2012,7 +2013,7 @@
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 267;
CURRENT_PROJECT_VERSION = 269;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
@ -2038,6 +2039,7 @@
);
LLVM_LTO = YES;
MARKETING_VERSION = 6.3;
OTHER_LDFLAGS = "-Wl,-stack_size,0x1000000";
PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.app;
PRODUCT_NAME = SimpleX;
SDKROOT = iphoneos;
@ -2053,7 +2055,7 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 267;
CURRENT_PROJECT_VERSION = 269;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
@ -2073,7 +2075,7 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 267;
CURRENT_PROJECT_VERSION = 269;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
@ -2098,7 +2100,7 @@
CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 267;
CURRENT_PROJECT_VERSION = 269;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
GCC_OPTIMIZATION_LEVEL = s;
@ -2135,7 +2137,7 @@
CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 267;
CURRENT_PROJECT_VERSION = 269;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
ENABLE_CODE_COVERAGE = NO;
@ -2172,7 +2174,7 @@
CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES;
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 267;
CURRENT_PROJECT_VERSION = 269;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
DYLIB_COMPATIBILITY_VERSION = 1;
@ -2223,7 +2225,7 @@
CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES;
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 267;
CURRENT_PROJECT_VERSION = 269;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
DYLIB_COMPATIBILITY_VERSION = 1;
@ -2274,7 +2276,7 @@
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CODE_SIGN_ENTITLEMENTS = "SimpleX SE/SimpleX SE.entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 267;
CURRENT_PROJECT_VERSION = 269;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
@ -2308,7 +2310,7 @@
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CODE_SIGN_ENTITLEMENTS = "SimpleX SE/SimpleX SE.entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 267;
CURRENT_PROJECT_VERSION = 269;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;

View file

@ -73,7 +73,7 @@ public enum ChatCommand {
case apiJoinGroup(groupId: Int64)
case apiMembersRole(groupId: Int64, memberIds: [Int64], memberRole: GroupMemberRole)
case apiBlockMembersForAll(groupId: Int64, memberIds: [Int64], blocked: Bool)
case apiRemoveMembers(groupId: Int64, memberIds: [Int64])
case apiRemoveMembers(groupId: Int64, memberIds: [Int64], withMessages: Bool)
case apiLeaveGroup(groupId: Int64)
case apiListMembers(groupId: Int64)
case apiUpdateGroupProfile(groupId: Int64, groupProfile: GroupProfile)
@ -252,7 +252,7 @@ public enum ChatCommand {
case let .apiJoinGroup(groupId): return "/_join #\(groupId)"
case let .apiMembersRole(groupId, memberIds, memberRole): return "/_member role #\(groupId) \(memberIds.map({ "\($0)" }).joined(separator: ",")) \(memberRole.rawValue)"
case let .apiBlockMembersForAll(groupId, memberIds, blocked): return "/_block #\(groupId) \(memberIds.map({ "\($0)" }).joined(separator: ",")) blocked=\(onOff(blocked))"
case let .apiRemoveMembers(groupId, memberIds): return "/_remove #\(groupId) \(memberIds.map({ "\($0)" }).joined(separator: ","))"
case let .apiRemoveMembers(groupId, memberIds, withMessages): return "/_remove #\(groupId) \(memberIds.map({ "\($0)" }).joined(separator: ",")) messages=\(onOff(withMessages))"
case let .apiLeaveGroup(groupId): return "/_leave #\(groupId)"
case let .apiListMembers(groupId): return "/_members #\(groupId)"
case let .apiUpdateGroupProfile(groupId, groupProfile): return "/_group_profile #\(groupId) \(encodeJSON(groupProfile))"
@ -681,7 +681,7 @@ public enum ChatResponse: Decodable, Error {
case userAcceptedGroupSent(user: UserRef, groupInfo: GroupInfo, hostContact: Contact?)
case groupLinkConnecting(user: UserRef, groupInfo: GroupInfo, hostMember: GroupMember)
case businessLinkConnecting(user: UserRef, groupInfo: GroupInfo, hostMember: GroupMember, fromContact: Contact)
case userDeletedMembers(user: UserRef, groupInfo: GroupInfo, members: [GroupMember])
case userDeletedMembers(user: UserRef, groupInfo: GroupInfo, members: [GroupMember], withMessages: Bool)
case leftMemberUser(user: UserRef, groupInfo: GroupInfo)
case groupMembers(user: UserRef, group: Group)
case receivedGroupInvitation(user: UserRef, groupInfo: GroupInfo, contact: Contact, memberRole: GroupMemberRole)
@ -691,8 +691,8 @@ public enum ChatResponse: Decodable, Error {
case membersRoleUser(user: UserRef, groupInfo: GroupInfo, members: [GroupMember], toRole: GroupMemberRole)
case memberBlockedForAll(user: UserRef, groupInfo: GroupInfo, byMember: GroupMember, member: GroupMember, blocked: Bool)
case membersBlockedForAllUser(user: UserRef, groupInfo: GroupInfo, members: [GroupMember], blocked: Bool)
case deletedMemberUser(user: UserRef, groupInfo: GroupInfo, member: GroupMember)
case deletedMember(user: UserRef, groupInfo: GroupInfo, byMember: GroupMember, deletedMember: GroupMember)
case deletedMemberUser(user: UserRef, groupInfo: GroupInfo, member: GroupMember, withMessages: Bool)
case deletedMember(user: UserRef, groupInfo: GroupInfo, byMember: GroupMember, deletedMember: GroupMember, withMessages: Bool)
case leftMember(user: UserRef, groupInfo: GroupInfo, member: GroupMember)
case groupDeleted(user: UserRef, groupInfo: GroupInfo, member: GroupMember)
case contactsMerged(user: UserRef, intoContact: Contact, mergedContact: Contact)
@ -1048,7 +1048,7 @@ public enum ChatResponse: Decodable, Error {
case let .userAcceptedGroupSent(u, groupInfo, hostContact): return withUser(u, "groupInfo: \(groupInfo)\nhostContact: \(String(describing: hostContact))")
case let .groupLinkConnecting(u, groupInfo, hostMember): return withUser(u, "groupInfo: \(groupInfo)\nhostMember: \(String(describing: hostMember))")
case let .businessLinkConnecting(u, groupInfo, hostMember, fromContact): return withUser(u, "groupInfo: \(groupInfo)\nhostMember: \(String(describing: hostMember))\nfromContact: \(String(describing: fromContact))")
case let .userDeletedMembers(u, groupInfo, members): return withUser(u, "groupInfo: \(groupInfo)\nmembers: \(members)")
case let .userDeletedMembers(u, groupInfo, members, withMessages): return withUser(u, "groupInfo: \(groupInfo)\nmembers: \(members)\nwithMessages: \(withMessages)")
case let .leftMemberUser(u, groupInfo): return withUser(u, String(describing: groupInfo))
case let .groupMembers(u, group): return withUser(u, String(describing: group))
case let .receivedGroupInvitation(u, groupInfo, contact, memberRole): return withUser(u, "groupInfo: \(groupInfo)\ncontact: \(contact)\nmemberRole: \(memberRole)")
@ -1058,8 +1058,8 @@ public enum ChatResponse: Decodable, Error {
case let .membersRoleUser(u, groupInfo, members, toRole): return withUser(u, "groupInfo: \(groupInfo)\nmembers: \(members)\ntoRole: \(toRole)")
case let .memberBlockedForAll(u, groupInfo, byMember, member, blocked): return withUser(u, "groupInfo: \(groupInfo)\nbyMember: \(byMember)\nmember: \(member)\nblocked: \(blocked)")
case let .membersBlockedForAllUser(u, groupInfo, members, blocked): return withUser(u, "groupInfo: \(groupInfo)\nmember: \(members)\nblocked: \(blocked)")
case let .deletedMemberUser(u, groupInfo, member): return withUser(u, "groupInfo: \(groupInfo)\nmember: \(member)")
case let .deletedMember(u, groupInfo, byMember, deletedMember): return withUser(u, "groupInfo: \(groupInfo)\nbyMember: \(byMember)\ndeletedMember: \(deletedMember)")
case let .deletedMemberUser(u, groupInfo, member, withMessages): return withUser(u, "groupInfo: \(groupInfo)\nmember: \(member)\nwithMessages: \(withMessages)")
case let .deletedMember(u, groupInfo, byMember, deletedMember, withMessages): return withUser(u, "groupInfo: \(groupInfo)\nbyMember: \(byMember)\ndeletedMember: \(deletedMember)\nwithMessages: \(withMessages)")
case let .leftMember(u, groupInfo, member): return withUser(u, "groupInfo: \(groupInfo)\nmember: \(member)")
case let .groupDeleted(u, groupInfo, member): return withUser(u, "groupInfo: \(groupInfo)\nmember: \(member)")
case let .contactsMerged(u, intoContact, mergedContact): return withUser(u, "intoContact: \(intoContact)\nmergedContact: \(mergedContact)")

View file

@ -3827,7 +3827,7 @@ public enum FileError: Decodable, Equatable, Hashable {
public var errorInfo: String {
switch self {
case .auth: NSLocalizedString("Wrong key or unknown file chunk address - most likely file is deleted.", comment: "file error text")
case let .blocked(_, info): NSLocalizedString("File is blocked by server operator:\n\(info.reason.text).", comment: "file error text")
case let .blocked(_, info): String.localizedStringWithFormat(NSLocalizedString("File is blocked by server operator:\n%@.", comment: "file error text"), info.reason.text)
case .noFile: NSLocalizedString("File not found - most likely file was deleted or cancelled.", comment: "file error text")
case let .relay(srvError): String.localizedStringWithFormat(NSLocalizedString("File server error: %@", comment: "file error text"), srvError.errorInfo)
case let .other(fileError): String.localizedStringWithFormat(NSLocalizedString("Error: %@", comment: "file error text"), fileError)

View file

@ -205,7 +205,7 @@ func hideSecrets(_ cItem: ChatItem) -> String {
} else {
let mc = cItem.content.msgContent
if case let .report(text, reason) = mc {
return NSLocalizedString("Report: \(text.isEmpty ? reason.text : text)", comment: "report in notification")
return String.localizedStringWithFormat(NSLocalizedString("Report: %@", comment: "report in notification"), text.isEmpty ? reason.text : text)
} else {
return cItem.text
}

View file

@ -1,9 +1,3 @@
/* No comment provided by engineer. */
"\n" = "\n";
/* No comment provided by engineer. */
" (" = " (";
/* No comment provided by engineer. */
" (can be copied)" = " (може да се копира)";
@ -22,30 +16,15 @@
/* No comment provided by engineer. */
"- voice messages up to 5 minutes.\n- custom time to disappear.\n- editing history." = "- гласови съобщения до 5 минути.\n- персонализирано време за изчезване.\n- история на редактиране.";
/* No comment provided by engineer. */
", " = ", ";
/* No comment provided by engineer. */
": " = ": ";
/* No comment provided by engineer. */
"!1 colored!" = "!1 цветно!";
/* No comment provided by engineer. */
"." = ".";
/* No comment provided by engineer. */
"(" = "(";
/* No comment provided by engineer. */
"(new)" = "(ново)";
/* No comment provided by engineer. */
"(this device v%@)" = "(това устройство v%@)";
/* No comment provided by engineer. */
")" = ")";
/* No comment provided by engineer. */
"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Допринеси](https://github.com/simplex-chat/simplex-chat#contribute)";

View file

@ -1,9 +1,3 @@
/* No comment provided by engineer. */
"\n" = "\n";
/* No comment provided by engineer. */
" (" = " (";
/* No comment provided by engineer. */
" (can be copied)" = " (lze kopírovat)";
@ -19,27 +13,12 @@
/* No comment provided by engineer. */
"- voice messages up to 5 minutes.\n- custom time to disappear.\n- editing history." = "- 5 minutové hlasové zprávy.\n- vlastní čas mizení.\n- historie úprav.";
/* No comment provided by engineer. */
", " = ", ";
/* No comment provided by engineer. */
": " = ": ";
/* No comment provided by engineer. */
"!1 colored!" = "!1 barevný!";
/* No comment provided by engineer. */
"." = ".";
/* No comment provided by engineer. */
"(" = "(";
/* No comment provided by engineer. */
"(this device v%@)" = "(toto zařízení v%@)";
/* No comment provided by engineer. */
")" = ")";
/* No comment provided by engineer. */
"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Přispějte](https://github.com/simplex-chat/simplex-chat#contribute)";

View file

@ -1,12 +1,3 @@
/* No comment provided by engineer. */
"\n" = "\n";
/* No comment provided by engineer. */
" " = " ";
/* No comment provided by engineer. */
" (" = " (";
/* No comment provided by engineer. */
" (can be copied)" = " (kann kopiert werden)";
@ -25,30 +16,15 @@
/* No comment provided by engineer. */
"- voice messages up to 5 minutes.\n- custom time to disappear.\n- editing history." = "- Bis zu 5 Minuten lange Sprachnachrichten\n- Zeitdauer für verschwindende Nachrichten anpassen\n- Nachrichtenverlauf bearbeiten";
/* No comment provided by engineer. */
", " = ", ";
/* No comment provided by engineer. */
": " = ": ";
/* No comment provided by engineer. */
"!1 colored!" = "!1 farbig!";
/* No comment provided by engineer. */
"." = ".";
/* No comment provided by engineer. */
"(" = "(";
/* No comment provided by engineer. */
"(new)" = "(Neu)";
/* No comment provided by engineer. */
"(this device v%@)" = "(Dieses Gerät hat v%@)";
/* No comment provided by engineer. */
")" = ")";
/* No comment provided by engineer. */
"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Unterstützen Sie uns](https://github.com/simplex-chat/simplex-chat#contribute)";
@ -58,12 +34,6 @@
/* No comment provided by engineer. */
"[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[Stern auf GitHub vergeben](https://github.com/simplex-chat/simplex-chat)";
/* No comment provided by engineer. */
"@'%@'" = "@'%@'";
/* No comment provided by engineer. */
"@%@" = "@%@";
/* No comment provided by engineer. */
"**Create 1-time link**: to create and share a new invitation link." = "**Kontakt hinzufügen**: Um einen neuen Einladungslink zu erstellen.";
@ -503,7 +473,7 @@
"All chats and messages will be deleted - this cannot be undone!" = "Es werden alle Chats und Nachrichten gelöscht. Dies kann nicht rückgängig gemacht werden!";
/* alert message */
"All chats will be removed from the list (text), and the list deleted." = "Alle Chats werden von der Liste (text) entfernt und danach wird die Liste gelöscht.";
"All chats will be removed from the list %@, and the list deleted." = "Alle Chats werden von der Liste %@ entfernt und danach wird die Liste gelöscht.";
/* No comment provided by engineer. */
"All data is erased when it is entered." = "Alle Daten werden gelöscht, sobald dieser eingegeben wird.";
@ -2434,7 +2404,7 @@
"File errors:\n%@" = "Datei-Fehler:\n%@";
/* file error text */
"File is blocked by server operator:\n(info.reason.text)." = "Datei wurde vom Server-Betreiber blockiert:\n(info.reason.text).";
"File is blocked by server operator:\n%@." = "Datei wurde vom Server-Betreiber blockiert:\n%@.";
/* file error text */
"File not found - most likely file was deleted or cancelled." = "Datei nicht gefunden - höchstwahrscheinlich wurde die Datei gelöscht oder der Transfer abgebrochen.";
@ -3830,9 +3800,15 @@
/* No comment provided by engineer. */
"peer-to-peer" = "Peer-to-Peer";
/* No comment provided by engineer. */
"pending" = "ausstehend";
/* No comment provided by engineer. */
"Pending" = "Ausstehend";
/* No comment provided by engineer. */
"pending approval" = "ausstehende Genehmigung";
/* No comment provided by engineer. */
"Periodic" = "Periodisch";
@ -4176,6 +4152,9 @@
/* No comment provided by engineer. */
"Reject contact request" = "Kontaktanfrage ablehnen";
/* No comment provided by engineer. */
"rejected" = "abgelehnt";
/* call status */
"rejected call" = "Abgelehnter Anruf";
@ -4267,7 +4246,7 @@
"Report violation: only group moderators will see it." = "Verstoß melden: Nur Gruppenmoderatoren werden es sehen.";
/* report in notification */
"Report: (text.isEmpty ? reason.text : text)" = "Meldung: (text.isEmpty ? reason.text : text)";
"Report: %@" = "Meldung: %@";
/* No comment provided by engineer. */
"Reporting messages to moderators is prohibited." = "Melden von Nachrichten an Moderatoren ist nicht erlaubt.";
@ -5412,6 +5391,9 @@
/* No comment provided by engineer. */
"Update settings?" = "Einstellungen aktualisieren?";
/* No comment provided by engineer. */
"Updated conditions" = "Aktualisierte Nutzungsbedingungen";
/* rcv group event chat item */
"updated group profile" = "Aktualisiertes Gruppenprofil";

View file

@ -1,12 +1,3 @@
/* No comment provided by engineer. */
"\n" = "\n";
/* No comment provided by engineer. */
" " = " ";
/* No comment provided by engineer. */
" (" = " (";
/* No comment provided by engineer. */
" (can be copied)" = " (puede copiarse)";
@ -25,30 +16,15 @@
/* No comment provided by engineer. */
"- voice messages up to 5 minutes.\n- custom time to disappear.\n- editing history." = "- mensajes de voz de hasta 5 minutos.\n- tiempo personalizado para mensajes temporales.\n- historial de edición.";
/* No comment provided by engineer. */
", " = ", ";
/* No comment provided by engineer. */
": " = ": ";
/* No comment provided by engineer. */
"!1 colored!" = "!1 coloreado!";
/* No comment provided by engineer. */
"." = ".";
/* No comment provided by engineer. */
"(" = "(";
/* No comment provided by engineer. */
"(new)" = "(nuevo)";
/* No comment provided by engineer. */
"(this device v%@)" = "(este dispositivo v%@)";
/* No comment provided by engineer. */
")" = ")";
/* No comment provided by engineer. */
"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Contribuye](https://github.com/simplex-chat/simplex-chat#contribute)";
@ -58,12 +34,6 @@
/* No comment provided by engineer. */
"[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[Estrella en GitHub](https://github.com/simplex-chat/simplex-chat)";
/* No comment provided by engineer. */
"@'%@'" = "@'%@'";
/* No comment provided by engineer. */
"@%@" = "@%@";
/* No comment provided by engineer. */
"**Create 1-time link**: to create and share a new invitation link." = "**Añadir contacto**: crea un enlace de invitación nuevo.";
@ -86,7 +56,7 @@
"**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." = "**Recuarda**: usar la misma base de datos en dos dispositivos hará que falle el descifrado de mensajes como protección de seguridad.";
/* No comment provided by engineer. */
"**Please note**: you will NOT be able to recover or change passphrase if you lose it." = "**Atención**: NO podrás recuperar o cambiar la contraseña si la pierdes.";
"**Please note**: you will NOT be able to recover or change passphrase if you lose it." = "**Atención**: Si la pierdes NO podrás recuperar o cambiar la contraseña.";
/* 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." = "**Recomendado**: el token del dispositivo y las notificaciones se envían al servidor de notificaciones de SimpleX Chat, pero no el contenido del mensaje, su tamaño o su procedencia.";
@ -503,7 +473,7 @@
"All chats and messages will be deleted - this cannot be undone!" = "Se eliminarán todos los chats y mensajes. ¡No podrá deshacerse!";
/* alert message */
"All chats will be removed from the list (text), and the list deleted." = "Todos los chats serán quitados de la lista (text) y esta será eliminada.";
"All chats will be removed from the list %@, and the list deleted." = "Todos los chats serán quitados de la lista %@ y esta será eliminada.";
/* No comment provided by engineer. */
"All data is erased when it is entered." = "Al introducirlo todos los datos son eliminados.";
@ -797,7 +767,7 @@
"Better groups" = "Grupos mejorados";
/* No comment provided by engineer. */
"Better groups performance" = "Mejor rendimiento de los grupos";
"Better groups performance" = "Rendimiento de grupos mejorado";
/* No comment provided by engineer. */
"Better message dates." = "Sistema de fechas mejorado.";
@ -812,7 +782,7 @@
"Better notifications" = "Notificaciones mejoradas";
/* No comment provided by engineer. */
"Better privacy and security" = "Mejor privacidad y seguridad";
"Better privacy and security" = "Privacidad y seguridad mejoradas";
/* No comment provided by engineer. */
"Better security ✅" = "Seguridad mejorada ✅";
@ -2434,7 +2404,7 @@
"File errors:\n%@" = "Error(es) de archivo\n%@";
/* file error text */
"File is blocked by server operator:\n(info.reason.text)." = "Archivo bloqueado por el operador del servidor\n(info.reason.text).";
"File is blocked by server operator:\n%@." = "Archivo bloqueado por el operador del servidor\n%@.";
/* file error text */
"File not found - most likely file was deleted or cancelled." = "Archivo no encontrado, probablemente haya sido borrado o cancelado.";
@ -2602,7 +2572,7 @@
"Further reduced battery usage" = "Reducción consumo de batería";
/* No comment provided by engineer. */
"Get notified when mentioned." = "Las menciones ahora notifican.";
"Get notified when mentioned." = "Las menciones ahora se notifican.";
/* No comment provided by engineer. */
"GIFs and stickers" = "GIFs y stickers";
@ -2683,7 +2653,7 @@
"Help" = "Ayuda";
/* No comment provided by engineer. */
"Help admins moderating their groups." = "Ayuda a los admins moderar sus grupos.";
"Help admins moderating their groups." = "Ayuda a los admins a moderar sus grupos.";
/* No comment provided by engineer. */
"Hidden" = "Oculto";
@ -3220,7 +3190,7 @@
"Members can send voice messages." = "Los miembros del grupo pueden enviar mensajes de voz.";
/* No comment provided by engineer. */
"Mention members 👋" = "Mencionar miembros 👋";
"Mention members 👋" = "Menciona a miembros 👋";
/* No comment provided by engineer. */
"Menus" = "Menus";
@ -3771,7 +3741,7 @@
"Or to share privately" = "O para compartir en privado";
/* No comment provided by engineer. */
"Organize chats into lists" = "Organiza los chats en listas";
"Organize chats into lists" = "Organiza tus chats en listas";
/* No comment provided by engineer. */
"other" = "otros";
@ -3830,9 +3800,15 @@
/* No comment provided by engineer. */
"peer-to-peer" = "p2p";
/* No comment provided by engineer. */
"pending" = "pendiente";
/* No comment provided by engineer. */
"Pending" = "Pendientes";
/* No comment provided by engineer. */
"pending approval" = "pendiente de aprobación";
/* No comment provided by engineer. */
"Periodic" = "Periódicamente";
@ -3945,7 +3921,7 @@
"Private filenames" = "Nombres de archivos privados";
/* No comment provided by engineer. */
"Private media file names." = "Nombres privados de archivos de media.";
"Private media file names." = "Nombres privados en archivos de media.";
/* No comment provided by engineer. */
"Private message routing" = "Enrutamiento privado de mensajes";
@ -4176,6 +4152,9 @@
/* No comment provided by engineer. */
"Reject contact request" = "Rechazar solicitud de contacto";
/* No comment provided by engineer. */
"rejected" = "rechazado";
/* call status */
"rejected call" = "llamada rechazada";
@ -4267,7 +4246,7 @@
"Report violation: only group moderators will see it." = "Informar de violación: sólo los moderadores del grupo lo verán.";
/* report in notification */
"Report: (text.isEmpty ? reason.text : text)" = "Informe: (text.isEmpty ? reason.text : text)";
"Report: %@" = "Informe: %@";
/* No comment provided by engineer. */
"Reporting messages to moderators is prohibited." = "No se permite informar de mensajes a los moderadores.";
@ -4700,7 +4679,7 @@
"Set it instead of system authentication." = "Úsalo en lugar de la autenticación del sistema.";
/* No comment provided by engineer. */
"Set message expiration in chats." = "Establece vencimiento de los mensajes en chats.";
"Set message expiration in chats." = "Establece el vencimiento para los mensajes en los chats.";
/* profile update event chat item */
"set new contact address" = "nueva dirección de contacto";
@ -5412,6 +5391,9 @@
/* No comment provided by engineer. */
"Update settings?" = "¿Actualizar configuración?";
/* No comment provided by engineer. */
"Updated conditions" = "Condiciones actualizadas";
/* rcv group event chat item */
"updated group profile" = "ha actualizado el perfil del grupo";

View file

@ -1,9 +1,3 @@
/* No comment provided by engineer. */
"\n" = "\n";
/* No comment provided by engineer. */
" (" = " (";
/* No comment provided by engineer. */
" (can be copied)" = " (voidaan kopioida)";
@ -16,24 +10,9 @@
/* No comment provided by engineer. */
"- voice messages up to 5 minutes.\n- custom time to disappear.\n- editing history." = "- ääniviestit enintään 5 minuuttia.\n- mukautettu katoamisaika.\n- historian muokkaaminen.";
/* No comment provided by engineer. */
", " = ", ";
/* No comment provided by engineer. */
": " = ": ";
/* No comment provided by engineer. */
"!1 colored!" = "!1 värillinen!";
/* No comment provided by engineer. */
"." = ".";
/* No comment provided by engineer. */
"(" = "(";
/* No comment provided by engineer. */
")" = ")";
/* No comment provided by engineer. */
"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Osallistu](https://github.com/simplex-chat/simplex-chat#contribute)";

View file

@ -1,9 +1,3 @@
/* No comment provided by engineer. */
"\n" = "\n";
/* No comment provided by engineer. */
" (" = " (";
/* No comment provided by engineer. */
" (can be copied)" = " (peut être copié)";
@ -22,30 +16,15 @@
/* No comment provided by engineer. */
"- voice messages up to 5 minutes.\n- custom time to disappear.\n- editing history." = "- messages vocaux pouvant durer jusqu'à 5 minutes.\n- délai personnalisé de disparition.\n- l'historique de modification.";
/* No comment provided by engineer. */
", " = ", ";
/* No comment provided by engineer. */
": " = ": ";
/* No comment provided by engineer. */
"!1 colored!" = "!1 coloré!";
/* No comment provided by engineer. */
"." = ".";
/* No comment provided by engineer. */
"(" = "(";
/* No comment provided by engineer. */
"(new)" = "(nouveau)";
/* No comment provided by engineer. */
"(this device v%@)" = "(cet appareil v%@)";
/* No comment provided by engineer. */
")" = ")";
/* No comment provided by engineer. */
"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Contribuer](https://github.com/simplex-chat/simplex-chat#contribute)";

View file

@ -1,12 +1,3 @@
/* No comment provided by engineer. */
"\n" = "\n";
/* No comment provided by engineer. */
" " = " ";
/* No comment provided by engineer. */
" (" = " (";
/* No comment provided by engineer. */
" (can be copied)" = " (másolható)";
@ -25,30 +16,15 @@
/* No comment provided by engineer. */
"- voice messages up to 5 minutes.\n- custom time to disappear.\n- editing history." = "- legfeljebb 5 perc hosszúságú hangüzenetek.\n- egyéni üzenet-eltűnési időkorlát.\n- előzmények szerkesztése.";
/* No comment provided by engineer. */
", " = ", ";
/* No comment provided by engineer. */
": " = ": ";
/* No comment provided by engineer. */
"!1 colored!" = "!1 színezett!";
/* No comment provided by engineer. */
"." = ".";
/* No comment provided by engineer. */
"(" = "(";
/* No comment provided by engineer. */
"(new)" = "(új)";
/* No comment provided by engineer. */
"(this device v%@)" = "(ez az eszköz: v%@)";
/* No comment provided by engineer. */
")" = ")";
/* No comment provided by engineer. */
"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Hozzájárulás](https://github.com/simplex-chat/simplex-chat#contribute)";
@ -58,12 +34,6 @@
/* No comment provided by engineer. */
"[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[Csillagozás a GitHubon](https://github.com/simplex-chat/simplex-chat)";
/* No comment provided by engineer. */
"@'%@'" = "@'%@'";
/* No comment provided by engineer. */
"@%@" = "@%@";
/* No comment provided by engineer. */
"**Create 1-time link**: to create and share a new invitation link." = "**Partner hozzáadása:** új meghívási hivatkozás létrehozásához, vagy egy kapott hivatkozáson keresztül történő kapcsolódáshoz.";
@ -356,7 +326,7 @@
"Abort changing address" = "Cím módosításának megszakítása";
/* No comment provided by engineer. */
"Abort changing address?" = "Cím módosításának megszakítása?";
"Abort changing address?" = "Megszakítja a cím módosítását?";
/* No comment provided by engineer. */
"About operators" = "Az üzemeltetőkről";
@ -379,10 +349,10 @@
"Accept conditions" = "Feltételek elfogadása";
/* No comment provided by engineer. */
"Accept connection request?" = "Kapcsolatkérés elfogadása?";
"Accept connection request?" = "Elfogadja a kapcsolódási kérést?";
/* notification body */
"Accept contact request from %@?" = "Elfogadja %@ kapcsolatkérését?";
"Accept contact request from %@?" = "Elfogadja %@ kapcsolódási kérését?";
/* accept contact request via notification
swipe action */
@ -503,7 +473,7 @@
"All chats and messages will be deleted - this cannot be undone!" = "Az összes csevegés és üzenet törölve lesz ez a művelet nem vonható vissza!";
/* alert message */
"All chats will be removed from the list (text), and the list deleted." = "Az összes csevegés el lesz távolítva a(z) (text) nevű listáról, és a lista is törölve lesz.";
"All chats will be removed from the list %@, and the list deleted." = "Az összes csevegés el lesz távolítva a(z) %@ nevű listáról, és a lista is törölve lesz.";
/* No comment provided by engineer. */
"All data is erased when it is entered." = "A jelkód megadása után az összes adat törölve lesz.";
@ -527,7 +497,7 @@
"All messages will be deleted - this cannot be undone! The messages will be deleted ONLY for you." = "Az összes üzenet törölve lesz ez a művelet nem vonható vissza! Az üzenetek CSAK az Ön számára törlődnek.";
/* No comment provided by engineer. */
"All new messages from %@ will be hidden!" = "Az összes %@ által írt új üzenet el lesz rejtve!";
"All new messages from %@ will be hidden!" = "%@ összes új üzenete el lesz rejtve!";
/* profile dropdown */
"All profiles" = "Összes profil";
@ -551,7 +521,7 @@
"Allow calls only if your contact allows them." = "A hívások kezdeményezése csak abban az esetben van engedélyezve, ha a partnere is engedélyezi.";
/* No comment provided by engineer. */
"Allow calls?" = "Hívások engedélyezése?";
"Allow calls?" = "Engedélyezi a hívásokat?";
/* No comment provided by engineer. */
"Allow disappearing messages only if your contact allows it to you." = "Az eltűnő üzenetek küldése csak abban az esetben van engedélyezve, ha a partnere is engedélyezi az Ön számára.";
@ -596,7 +566,7 @@
"Allow voice messages only if your contact allows them." = "A hangüzenetek küldése csak abban az esetben van engedélyezve, ha a partnere is engedélyezi.";
/* No comment provided by engineer. */
"Allow voice messages?" = "Hangüzenetek engedélyezése?";
"Allow voice messages?" = "Engedélyezi a hangüzeneteket?";
/* No comment provided by engineer. */
"Allow your contacts adding message reactions." = "A reakciók hozzáadása az üzenetekhez engedélyezve van a partnerei számára.";
@ -689,10 +659,10 @@
"Archive" = "Archívum";
/* No comment provided by engineer. */
"Archive %lld reports?" = "%lld jelentés archiválása?";
"Archive %lld reports?" = "Archivál %lld jelentést?";
/* No comment provided by engineer. */
"Archive all reports?" = "Az összes jelentés archiválása?";
"Archive all reports?" = "Archiválja az összes jelentést?";
/* No comment provided by engineer. */
"Archive and upload" = "Archiválás és feltöltés";
@ -704,7 +674,7 @@
"Archive report" = "Jelentés archiválása";
/* No comment provided by engineer. */
"Archive report?" = "Jelentés archiválása?";
"Archive report?" = "Archiválja a jelentést?";
/* swipe action */
"Archive reports" = "Jelentések archiválása";
@ -836,10 +806,10 @@
"Block member" = "Letiltás";
/* No comment provided by engineer. */
"Block member for all?" = "Az összes tag számára letiltja ezt a tagot?";
"Block member for all?" = "Az összes tag számára letiltja a tagot?";
/* No comment provided by engineer. */
"Block member?" = "Tag letiltása?";
"Block member?" = "Letiltja a tagot?";
/* marked deleted chat item preview text */
"blocked" = "letiltva";
@ -960,19 +930,19 @@
"Change" = "Módosítás";
/* alert title */
"Change automatic message deletion?" = "Automatikus üzenettörlés módosítása?";
"Change automatic message deletion?" = "Módosítja az automatikus üzenettörlést?";
/* authentication reason */
"Change chat profiles" = "Csevegési profilok módosítása";
/* No comment provided by engineer. */
"Change database passphrase?" = "Az adatbázis jelmondatának módosítása?";
"Change database passphrase?" = "Módosítja az adatbázis jelmondatát?";
/* authentication reason */
"Change lock mode" = "Zárolási mód módosítása";
/* No comment provided by engineer. */
"Change member role?" = "Tag szerepkörének módosítása?";
"Change member role?" = "Módosítja a tag szerepkörét?";
/* authentication reason */
"Change passcode" = "Jelkód módosítása";
@ -1108,16 +1078,16 @@
"Clear conversation" = "Üzenetek kiürítése";
/* No comment provided by engineer. */
"Clear conversation?" = "Üzenetek kiürítése?";
"Clear conversation?" = "Kiüríti az üzeneteket?";
/* No comment provided by engineer. */
"Clear group?" = "Csoport kiürítése?";
"Clear group?" = "Kiüríti a csoportot?";
/* No comment provided by engineer. */
"Clear or delete group?" = "Csoport kiürítése vagy törlése?";
/* No comment provided by engineer. */
"Clear private notes?" = "Privát jegyzetek kiürítése?";
"Clear private notes?" = "Kiüríti a privát jegyzeteket?";
/* No comment provided by engineer. */
"Clear verification" = "Hitelesítés törlése";
@ -1147,7 +1117,7 @@
"Completed" = "Elkészült";
/* No comment provided by engineer. */
"Conditions accepted on: %@." = "Feltételek elfogadva: %@.";
"Conditions accepted on: %@." = "Feltételek elfogadásának ideje: %@.";
/* No comment provided by engineer. */
"Conditions are accepted for the operator(s): **%@**." = "A következő üzemeltető(k) számára elfogadott feltételek: **%@**.";
@ -1168,10 +1138,10 @@
"Conditions will be accepted for the operator(s): **%@**." = "A feltételek el lesznek fogadva a következő üzemeltető(k) számára: **%@**.";
/* No comment provided by engineer. */
"Conditions will be accepted on: %@." = "A feltételek ekkor lesznek elfogadva: %@.";
"Conditions will be accepted on: %@." = "A feltételek el lesznek fogadva a következő időpontban: %@.";
/* No comment provided by engineer. */
"Conditions will be automatically accepted for enabled operators on: %@." = "A feltételek automatikusan el lesznek fogadva az engedélyezett üzemeltetők számára: %@.";
"Conditions will be automatically accepted for enabled operators on: %@." = "A feltételek automatikusan el lesznek fogadva az engedélyezett üzemeltetők számára a következő időpontban: %@.";
/* No comment provided by engineer. */
"Configure ICE servers" = "ICE-kiszolgálók beállítása";
@ -1228,13 +1198,13 @@
"Connect to your friends faster." = "Kapcsolódjon gyorsabban a partnereihez.";
/* No comment provided by engineer. */
"Connect to yourself?" = "Kapcsolódás saját magához?";
"Connect to yourself?" = "Kapcsolódik saját magához?";
/* No comment provided by engineer. */
"Connect to yourself?\nThis is your own one-time link!" = "Kapcsolódás saját magához?\nEz az Ön egyszer használható meghívási hivatkozása!";
"Connect to yourself?\nThis is your own one-time link!" = "Kapcsolódik saját magához?\nEz az Ön egyszer használható meghívási hivatkozása!";
/* No comment provided by engineer. */
"Connect to yourself?\nThis is your own SimpleX address!" = "Kapcsolódás saját magához?\nEz az Ön SimpleX-címe!";
"Connect to yourself?\nThis is your own SimpleX address!" = "Kapcsolódik saját magához?\nEz az Ön SimpleX-címe!";
/* No comment provided by engineer. */
"Connect via contact address" = "Kapcsolódás a kapcsolattartási címen keresztül";
@ -1279,7 +1249,7 @@
"connecting (announced)" = "kapcsolódás (bejelentve)";
/* No comment provided by engineer. */
"connecting (introduced)" = "kapcsolódás (bejelentve)";
"connecting (introduced)" = "kapcsolódás (bemutatkozva)";
/* No comment provided by engineer. */
"connecting (introduction invitation)" = "kapcsolódás (bemutatkozó meghívó)";
@ -1417,7 +1387,7 @@
"Corner" = "Sarok";
/* No comment provided by engineer. */
"Correct name to %@?" = "Név helyesbítése a következőre: %@?";
"Correct name to %@?" = "Helyesbíti a nevet a következőre: %@?";
/* No comment provided by engineer. */
"Create" = "Létrehozás";
@ -1602,13 +1572,13 @@
"Delete %lld messages of members?" = "Törli a tagok %lld üzenetét?";
/* No comment provided by engineer. */
"Delete %lld messages?" = "%lld üzenet törlése?";
"Delete %lld messages?" = "Töröl %lld üzenetet?";
/* No comment provided by engineer. */
"Delete address" = "Cím törlése";
/* No comment provided by engineer. */
"Delete address?" = "Cím törlése?";
"Delete address?" = "Törli a címet?";
/* No comment provided by engineer. */
"Delete after" = "Törlés ennyi idő után";
@ -1629,10 +1599,10 @@
"Delete chat profile" = "Csevegési profil törlése";
/* No comment provided by engineer. */
"Delete chat profile?" = "Csevegési profil törlése?";
"Delete chat profile?" = "Törli a csevegési profilt?";
/* No comment provided by engineer. */
"Delete chat?" = "Csevegés törlése?";
"Delete chat?" = "Törli a csevegést?";
/* No comment provided by engineer. */
"Delete connection" = "Kapcsolat törlése";
@ -1641,7 +1611,7 @@
"Delete contact" = "Partner törlése";
/* No comment provided by engineer. */
"Delete contact?" = "Partner törlése?";
"Delete contact?" = "Törli a partnert?";
/* No comment provided by engineer. */
"Delete database" = "Adatbázis törlése";
@ -1653,7 +1623,7 @@
"Delete file" = "Fájl törlése";
/* No comment provided by engineer. */
"Delete files and media?" = "A fájlok- és a médiatartalmak törlése?";
"Delete files and media?" = "Törli a fájl- és a médiatartalmakat?";
/* No comment provided by engineer. */
"Delete files for all chat profiles" = "Fájlok törlése az összes csevegési profilból";
@ -1668,7 +1638,7 @@
"Delete group" = "Csoport törlése";
/* No comment provided by engineer. */
"Delete group?" = "Csoport törlése?";
"Delete group?" = "Törli a csoportot?";
/* No comment provided by engineer. */
"Delete invitation" = "Meghívó törlése";
@ -1677,16 +1647,16 @@
"Delete link" = "Törlés";
/* No comment provided by engineer. */
"Delete link?" = "Hivatkozás törlése?";
"Delete link?" = "Törli a hivatkozást?";
/* alert title */
"Delete list?" = "Lista törlése?";
"Delete list?" = "Törli a listát?";
/* No comment provided by engineer. */
"Delete member message?" = "Csoporttag üzenetének törlése?";
"Delete member message?" = "Törli a tag üzenetét?";
/* No comment provided by engineer. */
"Delete message?" = "Üzenet törlése?";
"Delete message?" = "Törli az üzenetet?";
/* alert button */
"Delete messages" = "Üzenetek törlése";
@ -1698,13 +1668,13 @@
"Delete old database" = "Régi adatbázis törlése";
/* No comment provided by engineer. */
"Delete old database?" = "Régi adatbázis törlése?";
"Delete old database?" = "Törli a régi adatbázist?";
/* No comment provided by engineer. */
"Delete or moderate up to 200 messages." = "Legfeljebb 200 üzenet egyszerre való törlése, vagy moderálása.";
/* No comment provided by engineer. */
"Delete pending connection?" = "Függőben lévő partnerkérelem törlése?";
"Delete pending connection?" = "Törli a függőben lévő meghívót?";
/* No comment provided by engineer. */
"Delete profile" = "Profil törlése";
@ -1719,7 +1689,7 @@
"Delete up to 20 messages at once." = "Legfeljebb 20 üzenet egyszerre való törlése.";
/* No comment provided by engineer. */
"Delete user profile?" = "Felhasználói profil törlése?";
"Delete user profile?" = "Törli a felhasználói profilt?";
/* No comment provided by engineer. */
"Delete without notification" = "Törlés értesítés nélkül";
@ -1824,7 +1794,7 @@
"Disable (keep overrides)" = "Letiltás (felülírások megtartásával)";
/* alert title */
"Disable automatic message deletion?" = "Automatikus üzenettörlés letiltása?";
"Disable automatic message deletion?" = "Letiltja az automatikus üzenettörlést?";
/* alert button */
"Disable delete messages" = "Üzenetek törlésének letiltása";
@ -1863,7 +1833,7 @@
"Disconnect" = "Kapcsolat bontása";
/* No comment provided by engineer. */
"Disconnect desktop?" = "Számítógép leválasztása?";
"Disconnect desktop?" = "Leválasztja a számítógépet?";
/* No comment provided by engineer. */
"Discover and join groups" = "Csoportok felfedezése és csatlakozás";
@ -1969,7 +1939,7 @@
"Enable (keep overrides)" = "Engedélyezés (felülírások megtartásával)";
/* alert title */
"Enable automatic message deletion?" = "Automatikus üzenet törlés engedélyezése?";
"Enable automatic message deletion?" = "Engedélyezi az automatikus üzenettörlést?";
/* No comment provided by engineer. */
"Enable camera access" = "Kamera hozzáférés engedélyezése";
@ -1984,7 +1954,7 @@
"Enable in direct chats (BETA)!" = "Engedélyezés a közvetlen csevegésekben (BÉTA)!";
/* No comment provided by engineer. */
"Enable instant notifications?" = "Azonnali értesítések engedélyezése?";
"Enable instant notifications?" = "Engedélyezi az azonnali értesítéseket?";
/* No comment provided by engineer. */
"Enable lock" = "Zárolás engedélyezése";
@ -1993,7 +1963,7 @@
"Enable notifications" = "Értesítések engedélyezése";
/* No comment provided by engineer. */
"Enable periodic notifications?" = "Időszakos értesítések engedélyezése?";
"Enable periodic notifications?" = "Engedélyezi az időszakos értesítéseket?";
/* No comment provided by engineer. */
"Enable self-destruct" = "Önmegsemmisítés engedélyezése";
@ -2026,7 +1996,7 @@
"Encrypt" = "Titkosít";
/* No comment provided by engineer. */
"Encrypt database?" = "Adatbázis titkosítása?";
"Encrypt database?" = "Titkosítja az adatbázist?";
/* No comment provided by engineer. */
"Encrypt local files" = "Helyi fájlok titkosítása";
@ -2434,7 +2404,7 @@
"File errors:\n%@" = "Fájlhiba:\n%@";
/* file error text */
"File is blocked by server operator:\n(info.reason.text)." = "A kiszolgáló üzemeltetője letiltotta a fájlt:\n(info.reason.text).";
"File is blocked by server operator:\n%@." = "A kiszolgáló üzemeltetője letiltotta a fájlt:\n%@.";
/* file error text */
"File not found - most likely file was deleted or cancelled." = "A fájl nem található valószínűleg a fájlt törölték vagy visszavonták.";
@ -2539,7 +2509,7 @@
"Forward" = "Továbbítás";
/* alert title */
"Forward %d message(s)?" = "%d üzenet továbbítása?";
"Forward %d message(s)?" = "Továbbít %d üzenetet?";
/* No comment provided by engineer. */
"Forward and save messages" = "Üzenetek továbbítása és mentése";
@ -2548,7 +2518,7 @@
"Forward messages" = "Üzenetek továbbítása";
/* alert message */
"Forward messages without files?" = "Üzenetek továbbítása fájlok nélkül?";
"Forward messages without files?" = "Továbbítja az üzeneteket fájlok nélkül?";
/* No comment provided by engineer. */
"Forward up to 20 messages at once." = "Legfeljebb 20 üzenet egyszerre való továbbítása.";
@ -2773,7 +2743,7 @@
"Import" = "Importálás";
/* No comment provided by engineer. */
"Import chat database?" = "Csevegési adatbázis importálása?";
"Import chat database?" = "Importálja a csevegési adatbázist?";
/* No comment provided by engineer. */
"Import database" = "Adatbázis importálása";
@ -2962,7 +2932,7 @@
"invited %@" = "meghívta őt: %@";
/* chat list item title */
"invited to connect" = "meghívta, hogy csatlakozzon";
"invited to connect" = "meghívta egy partnerét";
/* rcv group event chat item */
"invited via your group link" = "meghíva az Ön csoporthivatkozásán keresztül";
@ -3046,7 +3016,7 @@
"Keep the app open to use it from desktop" = "A számítógépről való használathoz tartsd nyitva az alkalmazást";
/* alert title */
"Keep unused invitation?" = "Fel nem használt meghívó megtartása?";
"Keep unused invitation?" = "Megtartja a fel nem használt meghívót?";
/* No comment provided by engineer. */
"Keep your connections" = "Kapcsolatok megtartása";
@ -3070,13 +3040,13 @@
"Leave chat" = "Csevegés elhagyása";
/* No comment provided by engineer. */
"Leave chat?" = "Csevegés elhagyása?";
"Leave chat?" = "Elhagyja a csevegést?";
/* No comment provided by engineer. */
"Leave group" = "Csoport elhagyása";
/* No comment provided by engineer. */
"Leave group?" = "Csoport elhagyása?";
"Leave group?" = "Elhagyja a csoportot?";
/* rcv group event chat item */
"left" = "elhagyta a csoportot";
@ -3193,7 +3163,7 @@
"Member will be removed from chat - this cannot be undone!" = "A tag el lesz távolítva a csevegésből ez a művelet nem vonható vissza!";
/* 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!";
"Member will be removed from group - this cannot be undone!" = "A tag el lesz távolítva a csoportból ez a művelet nem vonható vissza!";
/* No comment provided by engineer. */
"Members can add message reactions." = "A tagok reakciókat adhatnak hozzá az üzenetekhez.";
@ -3292,7 +3262,7 @@
"Messages & files" = "Üzenetek és fájlok";
/* No comment provided by engineer. */
"Messages from %@ will be shown!" = "Az összes %@ által írt üzenet meg fog jelenni!";
"Messages from %@ will be shown!" = "%@ összes üzenete meg fog jelenni!";
/* alert message */
"Messages in this chat will never be deleted." = "Az ebben a csevegésben lévő üzenetek soha nem lesznek törölve.";
@ -3409,7 +3379,7 @@
"Network & servers" = "Hálózat és kiszolgálók";
/* No comment provided by engineer. */
"Network connection" = "Internetkapcsolat";
"Network connection" = "Hálózati kapcsolat";
/* No comment provided by engineer. */
"Network decentralization" = "Hálózati decentralizáció";
@ -3421,7 +3391,7 @@
"Network management" = "Hálózatkezelés";
/* No comment provided by engineer. */
"Network operator" = "Hálózati üzemeltető";
"Network operator" = "Hálózatüzemeltető";
/* No comment provided by engineer. */
"Network settings" = "Hálózati beállítások";
@ -3741,7 +3711,7 @@
"Open Settings" = "Beállítások megnyitása";
/* No comment provided by engineer. */
"Open web link?" = "Webhivatkozás megnyitása?";
"Open web link?" = "Megnyitja a webhivatkozást?";
/* No comment provided by engineer. */
"Opening app…" = "Az alkalmazás megnyitása…";
@ -3830,9 +3800,15 @@
/* No comment provided by engineer. */
"peer-to-peer" = "egyenrangú";
/* No comment provided by engineer. */
"pending" = "függőben";
/* No comment provided by engineer. */
"Pending" = "Függőben";
/* No comment provided by engineer. */
"pending approval" = "jóváhagyásra vár";
/* No comment provided by engineer. */
"Periodic" = "Időszakos";
@ -3864,7 +3840,7 @@
"Please check that you used the correct link or ask your contact to send you another one." = "Ellenőrizze, hogy a megfelelő hivatkozást használta-e, vagy kérje meg a partnerét, hogy küldjön egy másikat.";
/* No comment provided by engineer. */
"Please check your network connection with %@ and try again." = "Ellenőrizze a hálózati kapcsolatát a következővel: %@, és próbálja újra.";
"Please check your network connection with %@ and try again." = "Ellenőrizze a hálózati kapcsolatát a vele: %@, és próbálja újra.";
/* No comment provided by engineer. */
"Please check yours and your contact preferences." = "Ellenőrizze a saját- és a partnere beállításait.";
@ -4026,7 +4002,7 @@
"Protocol timeout" = "Protokoll időtúllépése";
/* No comment provided by engineer. */
"Protocol timeout per KB" = "Protokoll időtúllépése KB-onként";
"Protocol timeout per KB" = "Protokoll időtúllépése kB-onként";
/* No comment provided by engineer. */
"Proxied" = "Proxyzott";
@ -4137,16 +4113,16 @@
"Reconnect all servers" = "Újrakapcsolódás az összes kiszolgálóhoz";
/* No comment provided by engineer. */
"Reconnect all servers?" = "Újrakapcsolódás az összes kiszolgálóhoz?";
"Reconnect all servers?" = "Újrakapcsolódik az összes kiszolgálóhoz?";
/* No comment provided by engineer. */
"Reconnect server to force message delivery. It uses additional traffic." = "A kiszolgálóhoz való újrakapcsolódás az üzenetkézbesítési jelentések kikényszerítéséhez. Ez további adatforgalmat használ.";
/* No comment provided by engineer. */
"Reconnect server?" = "Újrakapcsolódás a kiszolgálóhoz?";
"Reconnect server?" = "Újrakapcsolódik a kiszolgálóhoz?";
/* No comment provided by engineer. */
"Reconnect servers?" = "Újrakapcsolódás a kiszolgálókhoz?";
"Reconnect servers?" = "Újrakapcsolódik a kiszolgálókhoz?";
/* No comment provided by engineer. */
"Record updated at" = "Bejegyzés frissítve";
@ -4161,7 +4137,7 @@
"Register" = "Regisztrálás";
/* token info */
"Register notification token?" = "Értesítési token regisztrálása?";
"Register notification token?" = "Regisztrálja az értesítési tokent?";
/* token status text */
"Registered" = "Regisztrálva";
@ -4176,6 +4152,9 @@
/* No comment provided by engineer. */
"Reject contact request" = "Kapcsolatkérés elutasítása";
/* No comment provided by engineer. */
"rejected" = "elutasítva";
/* call status */
"rejected call" = "elutasított hívás";
@ -4189,7 +4168,7 @@
"Remove" = "Eltávolítás";
/* No comment provided by engineer. */
"Remove archive?" = "Archívum eltávolítása?";
"Remove archive?" = "Eltávolítja az archívumot?";
/* No comment provided by engineer. */
"Remove image" = "Kép eltávolítása";
@ -4198,10 +4177,10 @@
"Remove member" = "Eltávolítás";
/* No comment provided by engineer. */
"Remove member?" = "Biztosan eltávolítja?";
"Remove member?" = "Eltávolítja a tagot?";
/* No comment provided by engineer. */
"Remove passphrase from keychain?" = "Jelmondat eltávolítása a kulcstartóból?";
"Remove passphrase from keychain?" = "Eltávolítja a jelmondatot a kulcstartóból?";
/* No comment provided by engineer. */
"removed" = "eltávolítva";
@ -4225,10 +4204,10 @@
"Renegotiate encryption" = "Titkosítás újraegyeztetése";
/* No comment provided by engineer. */
"Renegotiate encryption?" = "Titkosítás újraegyeztetése?";
"Renegotiate encryption?" = "Újraegyezteti a titkosítást?";
/* No comment provided by engineer. */
"Repeat connection request?" = "Kapcsolatkérés megismétlése?";
"Repeat connection request?" = "Megismétli a kapcsolódási kérést?";
/* No comment provided by engineer. */
"Repeat download" = "Letöltés ismét";
@ -4237,7 +4216,7 @@
"Repeat import" = "Importálás ismét";
/* No comment provided by engineer. */
"Repeat join request?" = "Csatlakozáskérés megismétlése?";
"Repeat join request?" = "Megismétli a csatlakozási kérést?";
/* No comment provided by engineer. */
"Repeat upload" = "Feltöltés ismét";
@ -4267,7 +4246,7 @@
"Report violation: only group moderators will see it." = "Szabálysértés jelentése: csak a csoport moderátorai látják.";
/* report in notification */
"Report: (text.isEmpty ? reason.text : text)" = "Jelentés: (text.isEmpty ? reason.text : text)";
"Report: %@" = "Jelentés: %@";
/* No comment provided by engineer. */
"Reporting messages to moderators is prohibited." = "Az üzenetek jelentése a moderátorok felé le van tiltva.";
@ -4291,7 +4270,7 @@
"Reset all statistics" = "Az összes statisztika visszaállítása";
/* No comment provided by engineer. */
"Reset all statistics?" = "Az összes statisztika visszaállítása?";
"Reset all statistics?" = "Visszaállítja az összes statisztikát?";
/* No comment provided by engineer. */
"Reset colors" = "Színek visszaállítása";
@ -4318,7 +4297,7 @@
"Restore database backup" = "Adatbázismentés visszaállítása";
/* No comment provided by engineer. */
"Restore database backup?" = "Adatbázismentés visszaállítása?";
"Restore database backup?" = "Visszaállítja az adatbázismentést?";
/* No comment provided by engineer. */
"Restore database error" = "Hiba az adatbázis visszaállításakor";
@ -4342,7 +4321,7 @@
"Revoke file" = "Fájl visszavonása";
/* No comment provided by engineer. */
"Revoke file?" = "Fájl visszavonása?";
"Revoke file?" = "Visszavonja a fájlt?";
/* No comment provided by engineer. */
"Role" = "Szerepkör";
@ -4388,7 +4367,7 @@
"Save passphrase in Keychain" = "Jelmondat mentése a kulcstartóba";
/* alert title */
"Save preferences?" = "Beállítások mentése?";
"Save preferences?" = "Menti a beállításokat?";
/* No comment provided by engineer. */
"Save profile password" = "Profiljelszó mentése";
@ -4397,13 +4376,13 @@
"Save servers" = "Kiszolgálók mentése";
/* alert title */
"Save servers?" = "Kiszolgálók mentése?";
"Save servers?" = "Menti a kiszolgálókat?";
/* No comment provided by engineer. */
"Save welcome message?" = "Üdvözlőüzenet mentése?";
"Save welcome message?" = "Menti az üdvözlőüzenetet?";
/* alert title */
"Save your profile?" = "Profil mentése?";
"Save your profile?" = "Menti a profilt?";
/* No comment provided by engineer. */
"saved" = "mentett";
@ -4912,7 +4891,7 @@
"Start chat" = "Csevegés indítása";
/* No comment provided by engineer. */
"Start chat?" = "Csevegés indítása?";
"Start chat?" = "Elindítja a csevegést?";
/* No comment provided by engineer. */
"Start migration" = "Átköltöztetés indítása";
@ -4936,22 +4915,22 @@
"Stop chat to export, import or delete chat database. You will not be able to receive and send messages while the chat is stopped." = "A csevegés megállítása a csevegési adatbázis exportálásához, importálásához vagy törléséhez. A csevegés megállításakor nem tud üzeneteket fogadni és küldeni.";
/* No comment provided by engineer. */
"Stop chat?" = "Csevegési szolgáltatás megállítása?";
"Stop chat?" = "Megállítja a csevegést?";
/* cancel file action */
"Stop file" = "Fájl megállítása";
/* No comment provided by engineer. */
"Stop receiving file?" = "Fájlfogadás megállítása?";
"Stop receiving file?" = "Megállítja a fájlfogadást?";
/* No comment provided by engineer. */
"Stop sending file?" = "Fájlküldés megállítása?";
"Stop sending file?" = "Megállítja a fájlküldést?";
/* alert action */
"Stop sharing" = "Megosztás megállítása";
/* alert title */
"Stop sharing address?" = "Címmegosztás megállítása?";
"Stop sharing address?" = "Megállítja a címmegosztást?";
/* authentication reason */
"Stop SimpleX" = "SimpleX megállítása";
@ -5071,7 +5050,7 @@
"Thanks to the users contribute via Weblate!" = "Köszönet a felhasználóknak hozzájárulás a Weblate-en!";
/* No comment provided by engineer. */
"The app can notify you when you receive messages or contact requests - please open settings to enable." = "Az alkalmazás értesíteni fogja, amikor üzeneteket vagy kapcsolatkéréseket kap beállítások megnyitása az engedélyezéshez.";
"The app can notify you when you receive messages or contact requests - please open settings to enable." = "Az alkalmazás értesíteni fogja, amikor üzeneteket vagy kapcsolatkéréseket kap ezt a beállítások menüben engedélyezheti.";
/* No comment provided by engineer. */
"The app protects your privacy by using different operators in each conversation." = "Az alkalmazás úgy védi az adatait, hogy minden egyes beszélgetéshez más-más üzemeltetőt használ.";
@ -5323,7 +5302,7 @@
"Unblock member for all?" = "Az összes tag számára feloldja a tag letiltását?";
/* No comment provided by engineer. */
"Unblock member?" = "Tag feloldása?";
"Unblock member?" = "Feloldja a tag letiltását?";
/* rcv group event chat item */
"unblocked %@" = "feloldotta %@ letiltását";
@ -5380,7 +5359,7 @@
"Unlink" = "Szétkapcsolás";
/* No comment provided by engineer. */
"Unlink desktop?" = "Számítógép leválasztása?";
"Unlink desktop?" = "Leválasztja a számítógépet?";
/* No comment provided by engineer. */
"Unlock" = "Feloldás";
@ -5407,10 +5386,13 @@
"Update database passphrase" = "Az adatbázis jelmondatának módosítása";
/* No comment provided by engineer. */
"Update network settings?" = "Hálózati beállítások módosítása?";
"Update network settings?" = "Módosítja a hálózati beállításokat?";
/* No comment provided by engineer. */
"Update settings?" = "Beállítások frissítése?";
"Update settings?" = "Frissíti a beállításokat?";
/* No comment provided by engineer. */
"Updated conditions" = "Frissített feltételek";
/* rcv group event chat item */
"updated group profile" = "frissítette a csoport profilját";
@ -5758,7 +5740,7 @@
"You are already joining the group via this link." = "A csatlakozás már folyamatban van a csoporthoz ezen a hivatkozáson keresztül.";
/* No comment provided by engineer. */
"You are already joining the group!\nRepeat join request?" = "A csatlakozás már folyamatban van a csoporthoz!\nCsatlakozáskérés megismétlése?";
"You are already joining the group!\nRepeat join request?" = "A csatlakozás már folyamatban van a csoporthoz!\nMegismétli a csatlakozási kérést?";
/* No comment provided by engineer. */
"You are connected to the server used to receive messages from this contact." = "Ön már kapcsolódott ahhoz a kiszolgálóhoz, amely az adott partnerétől érkező üzenetek fogadására szolgál.";
@ -5866,7 +5848,7 @@
"You have already requested connection via this address!" = "Már küldött egy kapcsolatkérést ezen a címen keresztül!";
/* No comment provided by engineer. */
"You have already requested connection!\nRepeat connection request?" = "Már küldött egy kapcsolódási kérelmet!\nKapcsolatkérés megismétlése?";
"You have already requested connection!\nRepeat connection request?" = "Ön már küldött egy kapcsolódási kérést!\nMegismétli a kapcsolódási kérést?";
/* No comment provided by engineer. */
"You have to enter passphrase every time the app starts - it is not stored on the device." = "A jelmondatot minden alkalommal meg kell adnia, amikor az alkalmazás elindul nem az eszközön van tárolva.";
@ -6025,7 +6007,7 @@
"Your server address" = "Saját SMP-kiszolgálójának címe";
/* No comment provided by engineer. */
"Your servers" = "Az Ön kiszolgálói";
"Your servers" = "Saját kiszolgálók";
/* No comment provided by engineer. */
"Your settings" = "Beállítások";

View file

@ -1,12 +1,3 @@
/* No comment provided by engineer. */
"\n" = "\n";
/* No comment provided by engineer. */
" " = " ";
/* No comment provided by engineer. */
" (" = " (";
/* No comment provided by engineer. */
" (can be copied)" = " (può essere copiato)";
@ -25,30 +16,15 @@
/* No comment provided by engineer. */
"- voice messages up to 5 minutes.\n- custom time to disappear.\n- editing history." = "- messaggi vocali fino a 5 minuti.\n- tempo di scomparsa personalizzato.\n- cronologia delle modifiche.";
/* No comment provided by engineer. */
", " = ", ";
/* No comment provided by engineer. */
": " = ": ";
/* No comment provided by engineer. */
"!1 colored!" = "!1 colorato!";
/* No comment provided by engineer. */
"." = ".";
/* No comment provided by engineer. */
"(" = "(";
/* No comment provided by engineer. */
"(new)" = "(nuovo)";
/* No comment provided by engineer. */
"(this device v%@)" = "(questo dispositivo v%@)";
/* No comment provided by engineer. */
")" = ")";
/* No comment provided by engineer. */
"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Contribuisci](https://github.com/simplex-chat/simplex-chat#contribute)";
@ -58,12 +34,6 @@
/* No comment provided by engineer. */
"[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[Dai una stella su GitHub](https://github.com/simplex-chat/simplex-chat)";
/* No comment provided by engineer. */
"@'%@'" = "@'%@'";
/* No comment provided by engineer. */
"@%@" = "@%@";
/* No comment provided by engineer. */
"**Create 1-time link**: to create and share a new invitation link." = "**Aggiungi contatto**: per creare un nuovo link di invito.";
@ -503,7 +473,7 @@
"All chats and messages will be deleted - this cannot be undone!" = "Tutte le chat e i messaggi verranno eliminati. Non è reversibile!";
/* alert message */
"All chats will be removed from the list (text), and the list deleted." = "Tutte le chat verranno rimosse dall'elenco (testo) e l'elenco eliminato.";
"All chats will be removed from the list %@, and the list deleted." = "Tutte le chat verranno rimosse dall'elenco %@ e l'elenco eliminato.";
/* No comment provided by engineer. */
"All data is erased when it is entered." = "Tutti i dati vengono cancellati quando inserito.";
@ -2434,7 +2404,7 @@
"File errors:\n%@" = "Errori di file:\n%@";
/* file error text */
"File is blocked by server operator:\n(info.reason.text)." = "Il file è bloccato dall'operatore del server:\n(info.reason.text).";
"File is blocked by server operator:\n%@." = "Il file è bloccato dall'operatore del server:\n%@.";
/* file error text */
"File not found - most likely file was deleted or cancelled." = "File non trovato - probabilmente è stato eliminato o annullato.";
@ -3830,9 +3800,15 @@
/* No comment provided by engineer. */
"peer-to-peer" = "peer-to-peer";
/* No comment provided by engineer. */
"pending" = "in attesa";
/* No comment provided by engineer. */
"Pending" = "In attesa";
/* No comment provided by engineer. */
"pending approval" = "in attesa di approvazione";
/* No comment provided by engineer. */
"Periodic" = "Periodicamente";
@ -4176,6 +4152,9 @@
/* No comment provided by engineer. */
"Reject contact request" = "Rifiuta la richiesta di contatto";
/* No comment provided by engineer. */
"rejected" = "rifiutato";
/* call status */
"rejected call" = "chiamata rifiutata";
@ -4267,7 +4246,7 @@
"Report violation: only group moderators will see it." = "Segnala violazione: solo i moderatori del gruppo lo vedranno.";
/* report in notification */
"Report: (text.isEmpty ? reason.text : text)" = "Segnalazione: (text.isEmpty ? reason.text : text)";
"Report: %@" = "Segnalazione: %@";
/* No comment provided by engineer. */
"Reporting messages to moderators is prohibited." = "È vietato segnalare messaggi ai moderatori.";
@ -5412,6 +5391,9 @@
/* No comment provided by engineer. */
"Update settings?" = "Aggiornare le impostazioni?";
/* No comment provided by engineer. */
"Updated conditions" = "Condizioni aggiornate";
/* rcv group event chat item */
"updated group profile" = "ha aggiornato il profilo del gruppo";

View file

@ -1,9 +1,3 @@
/* No comment provided by engineer. */
"\n" = "\n";
/* No comment provided by engineer. */
" (" = " (";
/* No comment provided by engineer. */
" (can be copied)" = " (コピー可能)";
@ -22,30 +16,15 @@
/* No comment provided by engineer. */
"- voice messages up to 5 minutes.\n- custom time to disappear.\n- editing history." = "- 最長 5 分間の音声メッセージ。\n- 消えるまでのカスタム時間。\n- 編集履歴。";
/* No comment provided by engineer. */
", " = ", ";
/* No comment provided by engineer. */
": " = ": ";
/* No comment provided by engineer. */
"!1 colored!" = "!1 色付き!";
/* No comment provided by engineer. */
"." = ".";
/* No comment provided by engineer. */
"(" = "(";
/* No comment provided by engineer. */
"(new)" = "(新規)";
/* No comment provided by engineer. */
"(this device v%@)" = "(このデバイス v%@)";
/* No comment provided by engineer. */
")" = ")";
/* No comment provided by engineer. */
"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[貢献する](https://github.com/simplex-chat/simplex-chat#contribute)";

View file

@ -1,12 +1,3 @@
/* No comment provided by engineer. */
"\n" = "\n";
/* No comment provided by engineer. */
" " = " ";
/* No comment provided by engineer. */
" (" = " (";
/* No comment provided by engineer. */
" (can be copied)" = " (kan gekopieerd worden)";
@ -25,30 +16,15 @@
/* No comment provided by engineer. */
"- voice messages up to 5 minutes.\n- custom time to disappear.\n- editing history." = "- spraakberichten tot 5 minuten.\n- aangepaste tijd om te verdwijnen.\n- bewerkingsgeschiedenis.";
/* No comment provided by engineer. */
", " = ", ";
/* No comment provided by engineer. */
": " = ": ";
/* No comment provided by engineer. */
"!1 colored!" = "!1 gekleurd!";
/* No comment provided by engineer. */
"." = ".";
/* No comment provided by engineer. */
"(" = "(";
/* No comment provided by engineer. */
"(new)" = "(nieuw)";
/* No comment provided by engineer. */
"(this device v%@)" = "(dit apparaat v%@)";
/* No comment provided by engineer. */
")" = ")";
/* No comment provided by engineer. */
"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Bijdragen](https://github.com/simplex-chat/simplex-chat#contribute)";
@ -58,12 +34,6 @@
/* No comment provided by engineer. */
"[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[Star on GitHub](https://github.com/simplex-chat/simplex-chat)";
/* No comment provided by engineer. */
"@'%@'" = "@'%@'";
/* No comment provided by engineer. */
"@%@" = "@%@";
/* No comment provided by engineer. */
"**Create 1-time link**: to create and share a new invitation link." = "**Contact toevoegen**: om een nieuwe uitnodigingslink aan te maken, of verbinding te maken via een link die u heeft ontvangen.";
@ -503,7 +473,7 @@
"All chats and messages will be deleted - this cannot be undone!" = "Alle chats en berichten worden verwijderd, dit kan niet ongedaan worden gemaakt!";
/* alert message */
"All chats will be removed from the list (text), and the list deleted." = "Alle chats worden uit de lijst (tekst) verwijderd en de lijst wordt verwijderd.";
"All chats will be removed from the list %@, and the list deleted." = "Alle chats worden uit de lijst %@ verwijderd en de lijst wordt verwijderd.";
/* No comment provided by engineer. */
"All data is erased when it is entered." = "Alle gegevens worden bij het invoeren gewist.";
@ -2434,7 +2404,7 @@
"File errors:\n%@" = "Bestandsfouten:\n%@";
/* file error text */
"File is blocked by server operator:\n(info.reason.text)." = "Bestand is geblokkeerd door serveroperator:\n(info.reason.text).";
"File is blocked by server operator:\n%@." = "Bestand is geblokkeerd door serveroperator:\n%@.";
/* file error text */
"File not found - most likely file was deleted or cancelled." = "Bestand niet gevonden - hoogstwaarschijnlijk is het bestand verwijderd of geannuleerd.";
@ -4267,7 +4237,7 @@
"Report violation: only group moderators will see it." = "Rapporteer overtreding: alleen groepsmoderators kunnen dit zien.";
/* report in notification */
"Report: (text.isEmpty ? reason.text : text)" = "Rapport: (text.isEmpty ? reason.text : text)";
"Report: %@" = "Rapport: %@";
/* No comment provided by engineer. */
"Reporting messages to moderators is prohibited." = "Het is niet toegestaan om berichten aan moderators te melden.";

View file

@ -1,9 +1,3 @@
/* No comment provided by engineer. */
"\n" = "\n";
/* No comment provided by engineer. */
" (" = " (";
/* No comment provided by engineer. */
" (can be copied)" = " (można skopiować)";
@ -22,30 +16,15 @@
/* No comment provided by engineer. */
"- voice messages up to 5 minutes.\n- custom time to disappear.\n- editing history." = "- wiadomości głosowe do 5 minut.\n- niestandardowy czas zniknięcia.\n- historia edycji.";
/* No comment provided by engineer. */
", " = ", ";
/* No comment provided by engineer. */
": " = ": ";
/* No comment provided by engineer. */
"!1 colored!" = "!1 pokolorowany!";
/* No comment provided by engineer. */
"." = ".";
/* No comment provided by engineer. */
"(" = "(";
/* No comment provided by engineer. */
"(new)" = "(nowy)";
/* No comment provided by engineer. */
"(this device v%@)" = "(to urządzenie v%@)";
/* No comment provided by engineer. */
")" = ")";
/* No comment provided by engineer. */
"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Przyczyń się](https://github.com/simplex-chat/simplex-chat#contribute)";
@ -55,12 +34,6 @@
/* No comment provided by engineer. */
"[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[Daj gwiazdkę na GitHub](https://github.com/simplex-chat/simplex-chat)";
/* No comment provided by engineer. */
"@'%@'" = "@'%@'";
/* No comment provided by engineer. */
"@%@" = "@%@";
/* No comment provided by engineer. */
"**Create 1-time link**: to create and share a new invitation link." = "**Dodaj kontakt**: aby utworzyć nowy link z zaproszeniem lub połączyć się za pomocą otrzymanego linku.";
@ -497,7 +470,7 @@
"All chats and messages will be deleted - this cannot be undone!" = "Wszystkie czaty i wiadomości zostaną usunięte - nie można tego cofnąć!";
/* alert message */
"All chats will be removed from the list (text), and the list deleted." = "Wszystkie rozmowy zostaną usunięte z listy (text), a lista usunięta.";
"All chats will be removed from the list %@, and the list deleted." = "Wszystkie rozmowy zostaną usunięte z listy %@, a lista usunięta.";
/* No comment provided by engineer. */
"All data is erased when it is entered." = "Wszystkie dane są usuwane po jego wprowadzeniu.";

View file

@ -1,9 +1,3 @@
/* No comment provided by engineer. */
"\n" = "\n";
/* No comment provided by engineer. */
" (" = " (";
/* No comment provided by engineer. */
" (can be copied)" = " (можно скопировать)";
@ -22,30 +16,15 @@
/* No comment provided by engineer. */
"- voice messages up to 5 minutes.\n- custom time to disappear.\n- editing history." = "- голосовые сообщения до 5 минут.\n- настройка времени исчезающих сообщений.\n- история редактирования.";
/* No comment provided by engineer. */
", " = ", ";
/* No comment provided by engineer. */
": " = ": ";
/* No comment provided by engineer. */
"!1 colored!" = "!1 цвет!";
/* No comment provided by engineer. */
"." = ".";
/* No comment provided by engineer. */
"(" = "(";
/* No comment provided by engineer. */
"(new)" = "(новое)";
/* No comment provided by engineer. */
"(this device v%@)" = "(это устройство v%@)";
/* No comment provided by engineer. */
")" = ")";
/* No comment provided by engineer. */
"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Внести свой вклад](https://github.com/simplex-chat/simplex-chat#contribute)";
@ -394,6 +373,9 @@
/* No comment provided by engineer. */
"Acknowledgement errors" = "Ошибки подтверждения";
/* token status text */
"Active" = "Активный";
/* No comment provided by engineer. */
"Active connections" = "Активные соединения";
@ -490,6 +472,9 @@
/* No comment provided by engineer. */
"All chats and messages will be deleted - this cannot be undone!" = "Все чаты и сообщения будут удалены - это нельзя отменить!";
/* alert message */
"All chats will be removed from the list %@, and the list deleted." = "Все чаты будут удалены из списка %@, и список удален.";
/* No comment provided by engineer. */
"All data is erased when it is entered." = "Все данные удаляются при его вводе.";
@ -517,6 +502,9 @@
/* profile dropdown */
"All profiles" = "Все профили";
/* No comment provided by engineer. */
"All reports will be archived for you." = "Все сообщения о нарушениях будут заархивированы для вас.";
/* No comment provided by engineer. */
"All your contacts will remain connected." = "Все контакты, которые соединились через этот адрес, сохранятся.";
@ -562,6 +550,9 @@
/* No comment provided by engineer. */
"Allow to irreversibly delete sent messages. (24 hours)" = "Разрешить необратимо удалять отправленные сообщения. (24 часа)";
/* No comment provided by engineer. */
"Allow to report messsages to moderators." = "Разрешить отправлять сообщения о нарушениях модераторам.";
/* No comment provided by engineer. */
"Allow to send files and media." = "Разрешить посылать файлы и медиа.";
@ -634,6 +625,9 @@
/* No comment provided by engineer. */
"App encrypts new local files (except videos)." = "Приложение шифрует новые локальные файлы (кроме видео).";
/* No comment provided by engineer. */
"App group:" = "Группа приложения:";
/* No comment provided by engineer. */
"App icon" = "Иконка";
@ -664,6 +658,12 @@
/* No comment provided by engineer. */
"Archive" = "Архивировать";
/* No comment provided by engineer. */
"Archive %lld reports?" = "Архивировать %lld сообщений о нарушениях?";
/* No comment provided by engineer. */
"Archive all reports?" = "Архивировать все сообщения о нарушениях?";
/* No comment provided by engineer. */
"Archive and upload" = "Архивировать и загрузить";
@ -671,17 +671,26 @@
"Archive contacts to chat later." = "Архивируйте контакты чтобы продолжить переписку.";
/* No comment provided by engineer. */
"Archive report" = "Архивировать отчет";
"Archive report" = "Архивировать сообщение о нарушении";
/* No comment provided by engineer. */
"Archive report?" = "Архивировать отчет?";
"Archive report?" = "Архивировать сообщение о нарушении?";
/* swipe action */
"Archive reports" = "Архивировать сообщения о нарушениях";
/* No comment provided by engineer. */
"Archived contacts" = "Архивированные контакты";
/* No comment provided by engineer. */
"archived report" = "заархивированное сообщение о нарушении";
/* No comment provided by engineer. */
"Archiving database" = "Подготовка архива";
/* No comment provided by engineer. */
"Ask" = "Спросить";
/* No comment provided by engineer. */
"Attach" = "Прикрепить";
@ -757,6 +766,9 @@
/* No comment provided by engineer. */
"Better groups" = "Улучшенные группы";
/* No comment provided by engineer. */
"Better groups performance" = "Улучшенная производительность групп";
/* No comment provided by engineer. */
"Better message dates." = "Улучшенные даты сообщений.";
@ -769,6 +781,9 @@
/* No comment provided by engineer. */
"Better notifications" = "Улучшенные уведомления";
/* No comment provided by engineer. */
"Better privacy and security" = "Улучшенная конфиденциальность и безопасность";
/* No comment provided by engineer. */
"Better security ✅" = "Улучшенная безопасность ✅";
@ -841,6 +856,9 @@
/* No comment provided by engineer. */
"Business chats" = "Бизнес разговоры";
/* No comment provided by engineer. */
"Businesses" = "Бизнесы";
/* 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) (БЕТА).";
@ -911,6 +929,9 @@
/* No comment provided by engineer. */
"Change" = "Поменять";
/* alert title */
"Change automatic message deletion?" = "Измененить автоматическое удаление сообщений?";
/* authentication reason */
"Change chat profiles" = "Поменять профили";
@ -1059,6 +1080,12 @@
/* No comment provided by engineer. */
"Clear conversation?" = "Очистить разговор?";
/* No comment provided by engineer. */
"Clear group?" = "Очистить группу?";
/* No comment provided by engineer. */
"Clear or delete group?" = "Очистить или удалить группу?";
/* No comment provided by engineer. */
"Clear private notes?" = "Очистить личные заметки?";
@ -1074,6 +1101,9 @@
/* No comment provided by engineer. */
"colored" = "цвет";
/* report reason */
"Community guidelines violation" = "Нарушение правил группы";
/* server test step */
"Compare file" = "Сравнение файла";
@ -1146,6 +1176,9 @@
/* No comment provided by engineer. */
"Confirm upload" = "Подтвердить загрузку";
/* token status text */
"Confirmed" = "Подтвержденный";
/* server test step */
"Connect" = "Соединиться";
@ -1245,6 +1278,9 @@
/* No comment provided by engineer. */
"Connection and servers status." = "Состояние соединения и серверов.";
/* No comment provided by engineer. */
"Connection blocked" = "Соединение заблокировано";
/* No comment provided by engineer. */
"Connection error" = "Ошибка соединения";
@ -1254,12 +1290,21 @@
/* chat list item title (it should not be shown */
"connection established" = "соединение установлено";
/* No comment provided by engineer. */
"Connection is blocked by server operator:\n%@" = "Соединение заблокировано сервером оператора:\n%@";
/* No comment provided by engineer. */
"Connection not ready." = "Соединение не готово.";
/* No comment provided by engineer. */
"Connection notifications" = "Уведомления по соединениям";
/* No comment provided by engineer. */
"Connection request sent!" = "Запрос на соединение отправлен!";
/* No comment provided by engineer. */
"Connection requires encryption renegotiation." = "Соединение требует повторного согласования шифрования.";
/* No comment provided by engineer. */
"Connection security" = "Безопасность соединения";
@ -1320,6 +1365,9 @@
/* No comment provided by engineer. */
"Contacts can mark messages for deletion; you will be able to view them." = "Контакты могут помечать сообщения для удаления; Вы сможете просмотреть их.";
/* blocking reason */
"Content violates conditions of use" = "Содержание нарушает условия использования";
/* No comment provided by engineer. */
"Continue" = "Продолжить";
@ -1362,6 +1410,9 @@
/* No comment provided by engineer. */
"Create link" = "Создать ссылку";
/* No comment provided by engineer. */
"Create list" = "Создать список";
/* No comment provided by engineer. */
"Create new profile in [desktop app](https://simplex.chat/downloads/). 💻" = "Создайте новый профиль в [приложении для компьютера](https://simplex.chat/downloads/). 💻";
@ -1541,6 +1592,9 @@
/* No comment provided by engineer. */
"Delete chat" = "Удалить разговор";
/* No comment provided by engineer. */
"Delete chat messages from your device." = "Удалить сообщения с вашего устройства.";
/* No comment provided by engineer. */
"Delete chat profile" = "Удалить профиль чата";
@ -1595,6 +1649,9 @@
/* No comment provided by engineer. */
"Delete link?" = "Удалить ссылку?";
/* alert title */
"Delete list?" = "Удалить список?";
/* No comment provided by engineer. */
"Delete member message?" = "Удалить сообщение участника?";
@ -1625,6 +1682,9 @@
/* server test step */
"Delete queue" = "Удаление очереди";
/* No comment provided by engineer. */
"Delete report" = "Удалить сообщение о нарушении";
/* No comment provided by engineer. */
"Delete up to 20 messages at once." = "Удаляйте до 20 сообщений за раз.";
@ -1733,6 +1793,12 @@
/* No comment provided by engineer. */
"Disable (keep overrides)" = "Выключить (кроме исключений)";
/* alert title */
"Disable automatic message deletion?" = "Отключить автоматическое удаление сообщений?";
/* alert button */
"Disable delete messages" = "Отключить удаление сообщений";
/* No comment provided by engineer. */
"Disable for all" = "Выключить для всех";
@ -1793,15 +1859,24 @@
/* No comment provided by engineer. */
"Do NOT use SimpleX for emergency calls." = "Не используйте SimpleX для экстренных звонков.";
/* No comment provided by engineer. */
"Documents:" = "Документы:";
/* No comment provided by engineer. */
"Don't create address" = "Не создавать адрес";
/* No comment provided by engineer. */
"Don't enable" = "Не включать";
/* No comment provided by engineer. */
"Don't miss important messages." = "Не пропустите важные сообщения.";
/* No comment provided by engineer. */
"Don't show again" = "Не показывать";
/* No comment provided by engineer. */
"Done" = "Готово";
/* No comment provided by engineer. */
"Downgrade and open chat" = "Откатить версию и открыть чат";
@ -1983,6 +2058,9 @@
/* chat item text */
"encryption re-negotiation required for %@" = "требуется новое соглашение о шифровании для %@";
/* No comment provided by engineer. */
"Encryption renegotiation in progress." = "Выполняется повторное согласование шифрования.";
/* No comment provided by engineer. */
"ended" = "завершён";
@ -2058,6 +2136,9 @@
/* No comment provided by engineer. */
"Error changing to incognito!" = "Ошибка при смене на Инкогнито!";
/* No comment provided by engineer. */
"Error checking token status" = "Ошибка проверки статуса токена";
/* No comment provided by engineer. */
"Error connecting to forwarding server %@. Please try later." = "Ошибка подключения к пересылающему серверу %@. Попробуйте позже.";
@ -2070,6 +2151,9 @@
/* No comment provided by engineer. */
"Error creating group link" = "Ошибка при создании ссылки группы";
/* alert title */
"Error creating list" = "Ошибка создания списка";
/* No comment provided by engineer. */
"Error creating member contact" = "Ошибка создания контакта с членом группы";
@ -2079,6 +2163,9 @@
/* No comment provided by engineer. */
"Error creating profile!" = "Ошибка создания профиля!";
/* No comment provided by engineer. */
"Error creating report" = "Ошибка создания сообщения о нарушении";
/* No comment provided by engineer. */
"Error decrypting file" = "Ошибка расшифровки файла";
@ -2145,12 +2232,21 @@
/* No comment provided by engineer. */
"Error reconnecting servers" = "Ошибка переподключения к серверам";
/* alert title */
"Error registering for notifications" = "Ошибка регистрации для уведомлений";
/* No comment provided by engineer. */
"Error removing member" = "Ошибка при удалении члена группы";
/* alert title */
"Error reordering lists" = "Ошибка сортировки списков";
/* No comment provided by engineer. */
"Error resetting statistics" = "Ошибка сброса статистики";
/* alert title */
"Error saving chat list" = "Ошибка сохранения списка чатов";
/* No comment provided by engineer. */
"Error saving group profile" = "Ошибка при сохранении профиля группы";
@ -2202,6 +2298,9 @@
/* No comment provided by engineer. */
"Error synchronizing connection" = "Ошибка синхронизации соединения";
/* No comment provided by engineer. */
"Error testing server connection" = "Ошибка проверки соединения с сервером";
/* No comment provided by engineer. */
"Error updating group link" = "Ошибка обновления ссылки группы";
@ -2256,6 +2355,9 @@
/* No comment provided by engineer. */
"expired" = "истекло";
/* token status text */
"Expired" = "Истекший";
/* No comment provided by engineer. */
"Export database" = "Экспорт архива чата";
@ -2280,18 +2382,30 @@
/* No comment provided by engineer. */
"Fast and no wait until the sender is online!" = "Быстрые и не нужно ждать, когда отправитель онлайн!";
/* No comment provided by engineer. */
"Faster deletion of groups." = "Ускорено удаление групп.";
/* No comment provided by engineer. */
"Faster joining and more reliable messages." = "Быстрое вступление и надежная доставка сообщений.";
/* No comment provided by engineer. */
"Faster sending messages." = "Ускорена отправка сообщений.";
/* swipe action */
"Favorite" = "Избранный";
/* No comment provided by engineer. */
"Favorites" = "Избранное";
/* file error alert title */
"File error" = "Ошибка файла";
/* alert message */
"File errors:\n%@" = "Ошибки файлов:\n%@";
/* file error text */
"File is blocked by server operator:\n%@." = "Файл заблокирован оператором сервера:\n%@.";
/* file error text */
"File not found - most likely file was deleted or cancelled." = "Файл не найден - скорее всего, файл был удален или отменен.";
@ -2367,6 +2481,9 @@
/* No comment provided by engineer. */
"Fix not supported by group member" = "Починка не поддерживается членом группы";
/* No comment provided by engineer. */
"For all moderators" = "Для всех модераторов";
/* No comment provided by engineer. */
"for better metadata privacy." = "для лучшей конфиденциальности метаданных.";
@ -2379,6 +2496,9 @@
/* 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 me" = "Для меня";
/* No comment provided by engineer. */
"For private routing" = "Для доставки сообщений";
@ -2451,6 +2571,9 @@
/* No comment provided by engineer. */
"Further reduced battery usage" = "Уменьшенное потребление батареи";
/* No comment provided by engineer. */
"Get notified when mentioned." = "Уведомления, когда Вас упомянули.";
/* No comment provided by engineer. */
"GIFs and stickers" = "ГИФ файлы и стикеры";
@ -2523,9 +2646,15 @@
/* No comment provided by engineer. */
"Group will be deleted for you - this cannot be undone!" = "Группа будет удалена для Вас - это действие нельзя отменить!";
/* No comment provided by engineer. */
"Groups" = "Группы";
/* No comment provided by engineer. */
"Help" = "Помощь";
/* No comment provided by engineer. */
"Help admins moderating their groups." = "Помогайте администраторам модерировать их группы.";
/* No comment provided by engineer. */
"Hidden" = "Скрытое";
@ -2562,6 +2691,9 @@
/* No comment provided by engineer. */
"How it helps privacy" = "Как это улучшает конфиденциальность";
/* alert button */
"How it works" = "Как это работает";
/* No comment provided by engineer. */
"How SimpleX works" = "Как SimpleX работает";
@ -2649,6 +2781,12 @@
/* No comment provided by engineer. */
"inactive" = "неактивен";
/* report reason */
"Inappropriate content" = "Неприемлемый контент";
/* report reason */
"Inappropriate profile" = "Неприемлемый профиль";
/* No comment provided by engineer. */
"Incognito" = "Инкогнито";
@ -2715,6 +2853,21 @@
/* No comment provided by engineer. */
"Interface colors" = "Цвета интерфейса";
/* token status text */
"Invalid" = "Недействительный";
/* token status text */
"Invalid (bad token)" = "Недействительный (плохой токен)";
/* token status text */
"Invalid (expired)" = "Недействительный (истекший)";
/* token status text */
"Invalid (unregistered)" = "Недействительный (незарегистрированный)";
/* token status text */
"Invalid (wrong topic)" = "Недействительный (плохой заголовок)";
/* invalid chat data */
"invalid chat" = "ошибка чата";
@ -2916,6 +3069,15 @@
/* No comment provided by engineer. */
"Linked desktops" = "Связанные компьютеры";
/* swipe action */
"List" = "Список";
/* No comment provided by engineer. */
"List name and emoji should be different for all lists." = "Название списка и эмодзи должны быть разными для всех списков.";
/* No comment provided by engineer. */
"List name..." = "Имя списка...";
/* No comment provided by engineer. */
"LIVE" = "LIVE";
@ -2985,6 +3147,9 @@
/* item status text */
"Member inactive" = "Член неактивен";
/* chat feature */
"Member reports" = "Сообщения о нарушениях";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". All chat members will be notified." = "Роль участника будет изменена на \"%@\". Все участники разговора получат уведомление.";
@ -3006,6 +3171,9 @@
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Члены группы могут необратимо удалять отправленные сообщения. (24 часа)";
/* No comment provided by engineer. */
"Members can report messsages to moderators." = "Члены группы могут пожаловаться модераторам.";
/* No comment provided by engineer. */
"Members can send direct messages." = "Члены группы могут посылать прямые сообщения.";
@ -3021,6 +3189,9 @@
/* No comment provided by engineer. */
"Members can send voice messages." = "Члены группы могут отправлять голосовые сообщения.";
/* No comment provided by engineer. */
"Mention members 👋" = "Упоминайте членов группы 👋";
/* No comment provided by engineer. */
"Menus" = "Меню";
@ -3093,6 +3264,9 @@
/* No comment provided by engineer. */
"Messages from %@ will be shown!" = "Сообщения от %@ будут показаны!";
/* alert message */
"Messages in this chat will never be deleted." = "Сообщения в этом чате никогда не будут удалены.";
/* No comment provided by engineer. */
"Messages received" = "Получено сообщений";
@ -3165,9 +3339,15 @@
/* marked deleted chat item preview text */
"moderated by %@" = "удалено %@";
/* member role */
"moderator" = "модератор";
/* time unit */
"months" = "месяцев";
/* swipe action */
"More" = "Больше";
/* No comment provided by engineer. */
"More improvements are coming soon!" = "Дополнительные улучшения скоро!";
@ -3186,6 +3366,9 @@
/* notification label action */
"Mute" = "Без звука";
/* notification label action */
"Mute all" = "Все без звука";
/* No comment provided by engineer. */
"Muted when inactive!" = "Без звука, когда не активный!";
@ -3219,6 +3402,9 @@
/* delete after time */
"never" = "никогда";
/* token status text */
"New" = "Новый";
/* No comment provided by engineer. */
"New chat" = "Новый чат";
@ -3279,6 +3465,15 @@
/* Authentication unavailable */
"No app password" = "Нет кода доступа";
/* No comment provided by engineer. */
"No chats" = "Нет чатов";
/* No comment provided by engineer. */
"No chats found" = "Чаты не найдены";
/* No comment provided by engineer. */
"No chats in list %@" = "Нет чатов в списке %@";
/* No comment provided by engineer. */
"No contacts selected" = "Контакты не выбраны";
@ -3312,6 +3507,9 @@
/* servers error */
"No media & file servers." = "Нет серверов файлов и медиа.";
/* No comment provided by engineer. */
"No message" = "Нет сообщения";
/* servers error */
"No message servers." = "Нет серверов сообщений.";
@ -3348,12 +3546,21 @@
/* copied message info in history */
"no text" = "нет текста";
/* alert title */
"No token!" = "Нет токена!";
/* No comment provided by engineer. */
"No unread chats" = "Нет непрочитанных чатов";
/* No comment provided by engineer. */
"No user identifiers." = "Без идентификаторов пользователей.";
/* No comment provided by engineer. */
"Not compatible!" = "Несовместимая версия!";
/* No comment provided by engineer. */
"Notes" = "Заметки";
/* No comment provided by engineer. */
"Nothing selected" = "Ничего не выбрано";
@ -3366,9 +3573,15 @@
/* No comment provided by engineer. */
"Notifications are disabled!" = "Уведомления выключены";
/* alert title */
"Notifications error" = "Ошибка уведомлений";
/* No comment provided by engineer. */
"Notifications privacy" = "Конфиденциальность уведомлений";
/* alert title */
"Notifications status" = "Статус уведомлений";
/* No comment provided by engineer. */
"Now admins can:\n- delete members' messages.\n- disable members (\"observer\" role)" = "Теперь админы могут:\n- удалять сообщения членов.\n- приостанавливать членов (роль \"наблюдатель\")";
@ -3431,6 +3644,12 @@
/* No comment provided by engineer. */
"Only group owners can enable voice messages." = "Только владельцы группы могут разрешить голосовые сообщения.";
/* No comment provided by engineer. */
"Only sender and moderators see it" = "Только отправитель и модераторы видят это";
/* No comment provided by engineer. */
"Only you and moderators see it" = "Только вы и модераторы видят это";
/* No comment provided by engineer. */
"Only you can add message reactions." = "Только Вы можете добавлять реакции на сообщения.";
@ -3479,12 +3698,21 @@
/* No comment provided by engineer. */
"Open group" = "Открыть группу";
/* No comment provided by engineer. */
"Open link" = "Открыть ссылку";
/* No comment provided by engineer. */
"Open links from chat list" = "Открыть ссылку из списка чатов";
/* authentication reason */
"Open migration to another device" = "Открытие миграции на другое устройство";
/* No comment provided by engineer. */
"Open Settings" = "Открыть Настройки";
/* No comment provided by engineer. */
"Open web link?" = "Открыть веб-ссылку?";
/* No comment provided by engineer. */
"Opening app…" = "Приложение отрывается…";
@ -3512,6 +3740,9 @@
/* No comment provided by engineer. */
"Or to share privately" = "Или поделиться конфиденциально";
/* No comment provided by engineer. */
"Organize chats into lists" = "Организуйте чаты в списки";
/* No comment provided by engineer. */
"other" = "другое";
@ -3570,7 +3801,13 @@
"peer-to-peer" = "peer-to-peer";
/* No comment provided by engineer. */
"Pending" = "В ожидании";
"pending" = "ожидает";
/* No comment provided by engineer. */
"Pending" = "Ожидает";
/* No comment provided by engineer. */
"pending approval" = "ожидает утверждения";
/* No comment provided by engineer. */
"Periodic" = "Периодически";
@ -3638,6 +3875,15 @@
/* No comment provided by engineer. */
"Please store passphrase securely, you will NOT be able to change it if you lose it." = "Пожалуйста, надежно сохраните пароль, Вы НЕ сможете его поменять, если потеряете.";
/* token info */
"Please try to disable and re-enable notfications." = "Попробуйте выключить и снова включить уведомления.";
/* token info */
"Please wait for token activation to complete." = "Пожалуйста, дождитесь завершения активации токена.";
/* token info */
"Please wait for token to be registered." = "Пожалуйста, дождитесь регистрации токена.";
/* No comment provided by engineer. */
"Polish interface" = "Польский интерфейс";
@ -3674,6 +3920,9 @@
/* No comment provided by engineer. */
"Private filenames" = "Защищенные имена файлов";
/* No comment provided by engineer. */
"Private media file names." = "Конфиденциальные названия медиафайлов.";
/* No comment provided by engineer. */
"Private message routing" = "Конфиденциальная доставка сообщений";
@ -3719,6 +3968,9 @@
/* No comment provided by engineer. */
"Prohibit messages reactions." = "Запретить реакции на сообщения.";
/* No comment provided by engineer. */
"Prohibit reporting messages to moderators." = "Запретить жаловаться модераторам группы.";
/* No comment provided by engineer. */
"Prohibit sending direct messages to members." = "Запретить посылать прямые сообщения членам группы.";
@ -3881,6 +4133,15 @@
/* No comment provided by engineer. */
"Reduced battery usage" = "Уменьшенное потребление батареи";
/* No comment provided by engineer. */
"Register" = "Зарегистрировать";
/* token info */
"Register notification token?" = "Зарегистрировать токен уведомлений?";
/* token status text */
"Registered" = "Зарегистрирован";
/* reject incoming call via notification
swipe action */
"Reject" = "Отклонить";
@ -3891,6 +4152,9 @@
/* No comment provided by engineer. */
"Reject contact request" = "Отклонить запрос";
/* No comment provided by engineer. */
"rejected" = "отклонён";
/* call status */
"rejected call" = "отклонённый звонок";
@ -3960,6 +4224,36 @@
/* chat item action */
"Reply" = "Ответить";
/* chat item action */
"Report" = "Пожаловаться";
/* report reason */
"Report content: only group moderators will see it." = "Пожаловаться на сообщение: увидят только модераторы группы.";
/* report reason */
"Report member profile: only group moderators will see it." = "Пожаловаться на профиль: увидят только модераторы группы.";
/* report reason */
"Report other: only group moderators will see it." = "Пожаловаться: увидят только модераторы группы.";
/* No comment provided by engineer. */
"Report reason?" = "Причина сообщения?";
/* report reason */
"Report spam: only group moderators will see it." = "Пожаловаться на спам: увидят только модераторы группы.";
/* report reason */
"Report violation: only group moderators will see it." = "Пожаловаться на нарушение: увидят только модераторы группы.";
/* report in notification */
"Report: %@" = "Сообщение о нарушении: %@";
/* No comment provided by engineer. */
"Reporting messages to moderators is prohibited." = "Сообщения о нарушениях запрещены в этой группе.";
/* No comment provided by engineer. */
"Reports" = "Сообщения о нарушениях";
/* chat list item title */
"requested to connect" = "запрошено соединение";
@ -4063,6 +4357,9 @@
/* No comment provided by engineer. */
"Save group profile" = "Сохранить профиль группы";
/* No comment provided by engineer. */
"Save list" = "Сохранить список";
/* No comment provided by engineer. */
"Save passphrase and open chat" = "Сохранить пароль и открыть чат";
@ -4231,6 +4528,9 @@
/* No comment provided by engineer. */
"Send notifications" = "Отправлять уведомления";
/* No comment provided by engineer. */
"Send private reports" = "Вы можете сообщить о нарушениях";
/* No comment provided by engineer. */
"Send questions and ideas" = "Отправьте вопросы и идеи";
@ -4363,6 +4663,9 @@
/* No comment provided by engineer. */
"Set 1 day" = "Установить 1 день";
/* No comment provided by engineer. */
"Set chat name…" = "Имя чата…";
/* No comment provided by engineer. */
"Set contact name…" = "Имя контакта…";
@ -4375,6 +4678,9 @@
/* No comment provided by engineer. */
"Set it instead of system authentication." = "Установите код вместо системной аутентификации.";
/* No comment provided by engineer. */
"Set message expiration in chats." = "Установите срок хранения сообщений в чатах.";
/* profile update event chat item */
"set new contact address" = "установлен новый адрес контакта";
@ -4571,6 +4877,10 @@
/* notification title */
"Somebody" = "Контакт";
/* blocking reason
report reason */
"Spam" = "Спам";
/* No comment provided by engineer. */
"Square, circle, or anything in between." = "Квадрат, круг и все, что между ними.";
@ -4628,6 +4938,9 @@
/* No comment provided by engineer. */
"Stopping chat" = "Остановка чата";
/* No comment provided by engineer. */
"Storage" = "Хранилище";
/* No comment provided by engineer. */
"strike" = "зачеркнуть";
@ -4697,6 +5010,9 @@
/* No comment provided by engineer. */
"TCP connection timeout" = "Таймаут TCP соединения";
/* No comment provided by engineer. */
"TCP port for messaging" = "TCP-порт для отправки сообщений";
/* No comment provided by engineer. */
"TCP_KEEPCNT" = "TCP_KEEPCNT";
@ -4712,6 +5028,9 @@
/* server test failure */
"Test failed at step %@." = "Ошибка теста на шаге %@.";
/* No comment provided by engineer. */
"Test notifications" = "Протестировать уведомления";
/* No comment provided by engineer. */
"Test server" = "Тестировать сервер";
@ -4832,6 +5151,9 @@
/* No comment provided by engineer. */
"This action cannot be undone - the messages sent and received earlier than selected will be deleted. It may take several minutes." = "Это действие нельзя отменить — все сообщения, отправленные или полученные раньше чем выбрано, будут удалены. Это может занять несколько минут.";
/* alert message */
"This action cannot be undone - the messages sent and received in this chat earlier than selected will be deleted." = "Это действие нельзя отменить - сообщения в этом чате, отправленные или полученные раньше чем выбрано, будут удалены.";
/* No comment provided by engineer. */
"This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost." = "Это действие нельзя отменить — Ваш профиль, контакты, сообщения и файлы будут безвозвратно утеряны.";
@ -4865,6 +5187,9 @@
/* No comment provided by engineer. */
"This link was used with another mobile device, please create a new link on the desktop." = "Эта ссылка была использована на другом мобильном, пожалуйста, создайте новую ссылку на компьютере.";
/* No comment provided by engineer. */
"This message was deleted or not received yet." = "Это сообщение было удалено или еще не получено.";
/* No comment provided by engineer. */
"This setting applies to messages in your current chat profile **%@**." = "Эта настройка применяется к сообщениям в Вашем текущем профиле чата **%@**.";
@ -4931,6 +5256,9 @@
/* No comment provided by engineer. */
"Toggle incognito when connecting." = "Установите режим Инкогнито при соединении.";
/* token status */
"Token status: %@." = "Статус токена: %@.";
/* No comment provided by engineer. */
"Toolbar opacity" = "Прозрачность тулбара";
@ -5063,6 +5391,9 @@
/* No comment provided by engineer. */
"Update settings?" = "Обновить настройки?";
/* No comment provided by engineer. */
"Updated conditions" = "Обновленные условия";
/* rcv group event chat item */
"updated group profile" = "обновил(а) профиль группы";
@ -5144,12 +5475,18 @@
/* No comment provided by engineer. */
"Use SOCKS proxy" = "Использовать SOCKS прокси";
/* No comment provided by engineer. */
"Use TCP port %@ when no port is specified." = "Использовать TCP-порт %@, когда порт не указан.";
/* No comment provided by engineer. */
"Use the app while in the call." = "Используйте приложение во время звонка.";
/* No comment provided by engineer. */
"Use the app with one hand." = "Используйте приложение одной рукой.";
/* No comment provided by engineer. */
"Use web port" = "Использовать веб-порт";
/* No comment provided by engineer. */
"User selection" = "Выбор пользователя";
@ -5360,6 +5697,9 @@
/* pref value */
"yes" = "да";
/* No comment provided by engineer. */
"Yes" = "Да";
/* No comment provided by engineer. */
"you" = "Вы";
@ -5555,6 +5895,9 @@
/* chat list item description */
"you shared one-time link incognito" = "Вы создали ссылку инкогнито";
/* token info */
"You should receive notifications." = "Вы должны получать уведомления.";
/* snd group event chat item */
"you unblocked %@" = "Вы разблокировали %@";

View file

@ -1,9 +1,3 @@
/* No comment provided by engineer. */
"\n" = "\n";
/* No comment provided by engineer. */
" (" = " (";
/* No comment provided by engineer. */
" (can be copied)" = " (สามารถคัดลอกได้)";
@ -16,24 +10,9 @@
/* No comment provided by engineer. */
"- voice messages up to 5 minutes.\n- custom time to disappear.\n- editing history." = "- ข้อความเสียงนานสุด 5 นาที\n- เวลาที่กำหนดเองที่จะหายไป\n- ประวัติการแก้ไข";
/* No comment provided by engineer. */
", " = ", ";
/* No comment provided by engineer. */
": " = ": ";
/* No comment provided by engineer. */
"!1 colored!" = "!1 มีสี!";
/* No comment provided by engineer. */
"." = ".";
/* No comment provided by engineer. */
"(" = "(";
/* No comment provided by engineer. */
")" = ")";
/* No comment provided by engineer. */
"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[มีส่วนร่วม](https://github.com/simplex-chat/simplex-chat#contribute)";

View file

@ -1,9 +1,3 @@
/* No comment provided by engineer. */
"\n" = "\n";
/* No comment provided by engineer. */
" (" = " (";
/* No comment provided by engineer. */
" (can be copied)" = " (kopyalanabilir)";
@ -22,30 +16,15 @@
/* No comment provided by engineer. */
"- voice messages up to 5 minutes.\n- custom time to disappear.\n- editing history." = "- 5 dakikaya kadar süren sesli mesajlar.\n- mesaj kaybolması için özel zaman.\n- düzenleme geçmişi.";
/* No comment provided by engineer. */
", " = ", ";
/* No comment provided by engineer. */
": " = ": ";
/* No comment provided by engineer. */
"!1 colored!" = "!1 renklendirilmiş!";
/* No comment provided by engineer. */
"." = ".";
/* No comment provided by engineer. */
"(" = "(";
/* No comment provided by engineer. */
"(new)" = "(yeni)";
/* No comment provided by engineer. */
"(this device v%@)" = "(bu cihaz v%@)";
/* No comment provided by engineer. */
")" = ")";
/* No comment provided by engineer. */
"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Katkıda bulun](https://github.com/simplex-chat/simplex-chat#contribute)";

View file

@ -1,9 +1,3 @@
/* No comment provided by engineer. */
"\n" = "\n";
/* No comment provided by engineer. */
" (" = " (";
/* No comment provided by engineer. */
" (can be copied)" = " (можна скопіювати)";
@ -22,30 +16,15 @@
/* No comment provided by engineer. */
"- voice messages up to 5 minutes.\n- custom time to disappear.\n- editing history." = "- голосові повідомлення до 5 хвилин.\n- користувальницький час зникнення.\n- історія редагування.";
/* No comment provided by engineer. */
", " = ", ";
/* No comment provided by engineer. */
": " = ": ";
/* No comment provided by engineer. */
"!1 colored!" = "!1 кольоровий!";
/* No comment provided by engineer. */
"." = ".";
/* No comment provided by engineer. */
"(" = "(";
/* No comment provided by engineer. */
"(new)" = "(новий)";
/* No comment provided by engineer. */
"(this device v%@)" = "(цей пристрій v%@)";
/* No comment provided by engineer. */
")" = ")";
/* No comment provided by engineer. */
"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Внесок](https://github.com/simplex-chat/simplex-chat#contribute)";

View file

@ -1,9 +1,3 @@
/* No comment provided by engineer. */
"\n" = "\n";
/* No comment provided by engineer. */
" (" = " (";
/* No comment provided by engineer. */
" (can be copied)" = " (可复制)";
@ -22,30 +16,15 @@
/* No comment provided by engineer. */
"- voice messages up to 5 minutes.\n- custom time to disappear.\n- editing history." = "- 语音消息最长5分钟。\n- 自定义限时消息。\n- 编辑消息历史。";
/* No comment provided by engineer. */
", " = ", ";
/* No comment provided by engineer. */
": " = ": ";
/* No comment provided by engineer. */
"!1 colored!" = "!1 种彩色!";
/* No comment provided by engineer. */
"." = ".";
/* No comment provided by engineer. */
"(" = "(";
/* No comment provided by engineer. */
"(new)" = "(新)";
/* No comment provided by engineer. */
"(this device v%@)" = "(此设备 v%@)";
/* No comment provided by engineer. */
")" = ")";
/* No comment provided by engineer. */
"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[贡献](https://github.com/simplex-chat/simplex-chat#contribute)";

View file

@ -85,6 +85,7 @@ android {
"en",
"ar",
"bg",
"ca",
"cs",
"de",
"es",

View file

@ -549,11 +549,11 @@ object ChatModel {
}
}
suspend fun updateChatItem(cInfo: ChatInfo, cItem: ChatItem, status: CIStatus? = null) {
suspend fun updateChatItem(cInfo: ChatInfo, cItem: ChatItem, status: CIStatus? = null, atIndex: Int? = null) {
withContext(Dispatchers.Main) {
if (chatId.value == cInfo.id) {
val items = chatItems.value
val itemIndex = items.indexOfFirst { it.id == cItem.id }
val itemIndex = atIndex ?: items.indexOfFirst { it.id == cItem.id }
if (itemIndex >= 0) {
items[itemIndex] = cItem
}
@ -589,6 +589,48 @@ object ChatModel {
}
}
suspend fun removeMemberItems(rhId: Long?, removedMember: GroupMember, byMember: GroupMember, groupInfo: GroupInfo) {
fun removedUpdatedItem(item: ChatItem): ChatItem? {
val newContent = when {
item.chatDir is CIDirection.GroupSnd && removedMember.groupMemberId == groupInfo.membership.groupMemberId -> CIContent.SndModerated
item.chatDir is CIDirection.GroupRcv && item.chatDir.groupMember.groupMemberId == removedMember.groupMemberId -> CIContent.RcvModerated
else -> return null
}
val updatedItem = item.copy(
meta = item.meta.copy(itemDeleted = CIDeleted.Moderated(Clock.System.now(), byGroupMember = byMember)),
content = if (groupInfo.fullGroupPreferences.fullDelete.on) newContent else item.content
)
if (item.isActiveReport) {
decreaseGroupReportsCounter(rhId, groupInfo.id)
}
return updatedItem
}
// this should not happen, only another member can "remove" user, user can only "leave" (another event).
if (byMember.groupMemberId == groupInfo.membership.groupMemberId) {
Log.d(TAG, "exiting removeMemberItems")
return
}
val cInfo = ChatInfo.Group(groupInfo)
if (chatId.value == groupInfo.id) {
for (i in 0 until chatItems.value.size) {
val updatedItem = removedUpdatedItem(chatItems.value[i])
if (updatedItem != null) {
updateChatItem(cInfo, updatedItem, atIndex = i)
}
}
} else {
val i = getChatIndex(rhId, groupInfo.id)
val chat = chats[i]
if (chat.chatItems.isNotEmpty()) {
val updatedItem = removedUpdatedItem(chat.chatItems[0])
if (updatedItem != null) {
chats.value[i] = chat.copy(chatItems = listOf(updatedItem))
}
}
}
}
fun clearChat(rhId: Long?, cInfo: ChatInfo) {
// clear preview
val i = getChatIndex(rhId, cInfo.id)
@ -747,6 +789,11 @@ object ChatModel {
}
// update current chat
return if (chatId.value == groupInfo.id) {
if (groupMembers.value.isNotEmpty() && groupMembers.value.firstOrNull()?.groupId != groupInfo.groupId) {
// stale data, should be cleared at that point, otherwise, duplicated items will be here which will produce crashes in LazyColumn
groupMembers.value = emptyList()
groupMembersIndexes.value = emptyMap()
}
val memberIndex = groupMembersIndexes.value[member.groupMemberId]
val updated = chatItems.value.map {
// Take into account only specific changes, not all. Other member updates are not important and can be skipped
@ -1958,8 +2005,8 @@ data class GroupMember (
fun canBlockForAll(groupInfo: GroupInfo): Boolean {
val userRole = groupInfo.membership.memberRole
return memberStatus != GroupMemberStatus.MemRemoved && memberStatus != GroupMemberStatus.MemLeft && memberRole < GroupMemberRole.Admin
&& userRole >= GroupMemberRole.Admin && userRole >= memberRole && groupInfo.membership.memberActive
return memberStatus != GroupMemberStatus.MemRemoved && memberStatus != GroupMemberStatus.MemLeft && memberRole < GroupMemberRole.Moderator
&& userRole >= GroupMemberRole.Moderator && userRole >= memberRole && groupInfo.membership.memberActive
}
val memberIncognito = memberProfile.profileId != memberContactProfileId
@ -2439,14 +2486,14 @@ data class ChatItem (
fun memberToModerate(chatInfo: ChatInfo): Pair<GroupInfo, GroupMember?>? {
return if (chatInfo is ChatInfo.Group && chatDir is CIDirection.GroupRcv) {
val m = chatInfo.groupInfo.membership
if (m.memberRole >= GroupMemberRole.Admin && m.memberRole >= chatDir.groupMember.memberRole && meta.itemDeleted == null) {
if (m.memberRole >= GroupMemberRole.Moderator && m.memberRole >= chatDir.groupMember.memberRole && meta.itemDeleted == null) {
chatInfo.groupInfo to chatDir.groupMember
} else {
null
}
} else if (chatInfo is ChatInfo.Group && chatDir is CIDirection.GroupSnd) {
val m = chatInfo.groupInfo.membership
if (m.memberRole >= GroupMemberRole.Admin) {
if (m.memberRole >= GroupMemberRole.Moderator) {
chatInfo.groupInfo to null
} else {
null
@ -3259,6 +3306,7 @@ sealed class CIContent: ItemContent {
when (role) {
GroupMemberRole.Owner -> generalGetString(MR.strings.feature_roles_owners)
GroupMemberRole.Admin -> generalGetString(MR.strings.feature_roles_admins)
GroupMemberRole.Moderator -> generalGetString(MR.strings.feature_roles_moderators)
else -> generalGetString(MR.strings.feature_roles_all_members)
}

View file

@ -1995,8 +1995,8 @@ object ChatController {
}
}
suspend fun apiRemoveMembers(rh: Long?, groupId: Long, memberIds: List<Long>): List<GroupMember>? =
when (val r = sendCmd(rh, CC.ApiRemoveMembers(groupId, memberIds))) {
suspend fun apiRemoveMembers(rh: Long?, groupId: Long, memberIds: List<Long>, withMessages: Boolean = false): List<GroupMember>? =
when (val r = sendCmd(rh, CC.ApiRemoveMembers(groupId, memberIds, withMessages))) {
is CR.UserDeletedMembers -> r.members
else -> {
if (!(networkErrorAlert(r))) {
@ -2694,15 +2694,29 @@ object ChatController {
if (active(r.user)) {
withChats {
updateGroup(rhId, r.groupInfo)
if (r.withMessages) {
removeMemberItems(rhId, r.groupInfo.membership, byMember = r.member, r.groupInfo)
}
}
withReportsChatsIfOpen {
if (r.withMessages) {
removeMemberItems(rhId, r.groupInfo.membership, byMember = r.member, r.groupInfo)
}
}
}
is CR.DeletedMember ->
if (active(r.user)) {
withChats {
upsertGroupMember(rhId, r.groupInfo, r.deletedMember)
if (r.withMessages) {
removeMemberItems(rhId, r.deletedMember, byMember = r.byMember, r.groupInfo)
}
}
withReportsChatsIfOpen {
upsertGroupMember(rhId, r.groupInfo, r.deletedMember)
if (r.withMessages) {
removeMemberItems(rhId, r.deletedMember, byMember = r.byMember, r.groupInfo)
}
}
}
is CR.LeftMember ->
@ -3412,7 +3426,7 @@ sealed class CC {
class ApiJoinGroup(val groupId: Long): CC()
class ApiMembersRole(val groupId: Long, val memberIds: List<Long>, val memberRole: GroupMemberRole): CC()
class ApiBlockMembersForAll(val groupId: Long, val memberIds: List<Long>, val blocked: Boolean): CC()
class ApiRemoveMembers(val groupId: Long, val memberIds: List<Long>): CC()
class ApiRemoveMembers(val groupId: Long, val memberIds: List<Long>, val withMessages: Boolean): CC()
class ApiLeaveGroup(val groupId: Long): CC()
class ApiListMembers(val groupId: Long): CC()
class ApiUpdateGroupProfile(val groupId: Long, val groupProfile: GroupProfile): CC()
@ -3597,7 +3611,7 @@ sealed class CC {
is ApiJoinGroup -> "/_join #$groupId"
is ApiMembersRole -> "/_member role #$groupId ${memberIds.joinToString(",")} ${memberRole.memberRole}"
is ApiBlockMembersForAll -> "/_block #$groupId ${memberIds.joinToString(",")} blocked=${onOff(blocked)}"
is ApiRemoveMembers -> "/_remove #$groupId ${memberIds.joinToString(",")}"
is ApiRemoveMembers -> "/_remove #$groupId ${memberIds.joinToString(",")} messages=${onOff(withMessages)}"
is ApiLeaveGroup -> "/_leave #$groupId"
is ApiListMembers -> "/_members #$groupId"
is ApiUpdateGroupProfile -> "/_group_profile #$groupId ${json.encodeToString(groupProfile)}"
@ -5805,7 +5819,7 @@ sealed class CR {
@Serializable @SerialName("userAcceptedGroupSent") class UserAcceptedGroupSent (val user: UserRef, val groupInfo: GroupInfo, val hostContact: Contact? = null): CR()
@Serializable @SerialName("groupLinkConnecting") class GroupLinkConnecting (val user: UserRef, val groupInfo: GroupInfo, val hostMember: GroupMember): CR()
@Serializable @SerialName("businessLinkConnecting") class BusinessLinkConnecting (val user: UserRef, val groupInfo: GroupInfo, val hostMember: GroupMember, val fromContact: Contact): CR()
@Serializable @SerialName("userDeletedMembers") class UserDeletedMembers(val user: UserRef, val groupInfo: GroupInfo, val members: List<GroupMember>): CR()
@Serializable @SerialName("userDeletedMembers") class UserDeletedMembers(val user: UserRef, val groupInfo: GroupInfo, val members: List<GroupMember>, val withMessages: Boolean): CR()
@Serializable @SerialName("leftMemberUser") class LeftMemberUser(val user: UserRef, val groupInfo: GroupInfo): CR()
@Serializable @SerialName("groupMembers") class GroupMembers(val user: UserRef, val group: Group): CR()
@Serializable @SerialName("receivedGroupInvitation") class ReceivedGroupInvitation(val user: UserRef, val groupInfo: GroupInfo, val contact: Contact, val memberRole: GroupMemberRole): CR()
@ -5815,8 +5829,8 @@ sealed class CR {
@Serializable @SerialName("membersRoleUser") class MembersRoleUser(val user: UserRef, val groupInfo: GroupInfo, val members: List<GroupMember>, val toRole: GroupMemberRole): CR()
@Serializable @SerialName("memberBlockedForAll") class MemberBlockedForAll(val user: UserRef, val groupInfo: GroupInfo, val byMember: GroupMember, val member: GroupMember, val blocked: Boolean): CR()
@Serializable @SerialName("membersBlockedForAllUser") class MembersBlockedForAllUser(val user: UserRef, val groupInfo: GroupInfo, val members: List<GroupMember>, val blocked: Boolean): CR()
@Serializable @SerialName("deletedMemberUser") class DeletedMemberUser(val user: UserRef, val groupInfo: GroupInfo, val member: GroupMember): CR()
@Serializable @SerialName("deletedMember") class DeletedMember(val user: UserRef, val groupInfo: GroupInfo, val byMember: GroupMember, val deletedMember: GroupMember): CR()
@Serializable @SerialName("deletedMemberUser") class DeletedMemberUser(val user: UserRef, val groupInfo: GroupInfo, val member: GroupMember, val withMessages: Boolean): CR()
@Serializable @SerialName("deletedMember") class DeletedMember(val user: UserRef, val groupInfo: GroupInfo, val byMember: GroupMember, val deletedMember: GroupMember, val withMessages: Boolean): CR()
@Serializable @SerialName("leftMember") class LeftMember(val user: UserRef, val groupInfo: GroupInfo, val member: GroupMember): CR()
@Serializable @SerialName("groupDeleted") class GroupDeleted(val user: UserRef, val groupInfo: GroupInfo, val member: GroupMember): CR()
@Serializable @SerialName("contactsMerged") class ContactsMerged(val user: UserRef, val intoContact: Contact, val mergedContact: Contact): CR()
@ -6168,7 +6182,7 @@ sealed class CR {
is UserAcceptedGroupSent -> json.encodeToString(groupInfo)
is GroupLinkConnecting -> withUser(user, "groupInfo: $groupInfo\nhostMember: $hostMember")
is BusinessLinkConnecting -> withUser(user, "groupInfo: $groupInfo\nhostMember: $hostMember\nfromContact: $fromContact")
is UserDeletedMembers -> withUser(user, "groupInfo: $groupInfo\nmembers: $members")
is UserDeletedMembers -> withUser(user, "groupInfo: $groupInfo\nmembers: $members\nwithMessages: $withMessages")
is LeftMemberUser -> withUser(user, json.encodeToString(groupInfo))
is GroupMembers -> withUser(user, json.encodeToString(group))
is ReceivedGroupInvitation -> withUser(user, "groupInfo: $groupInfo\ncontact: $contact\nmemberRole: $memberRole")
@ -6178,8 +6192,8 @@ sealed class CR {
is MembersRoleUser -> withUser(user, "groupInfo: $groupInfo\nmembers: $members\ntoRole: $toRole")
is MemberBlockedForAll -> withUser(user, "groupInfo: $groupInfo\nbyMember: $byMember\nmember: $member\nblocked: $blocked")
is MembersBlockedForAllUser -> withUser(user, "groupInfo: $groupInfo\nmembers: $members\nblocked: $blocked")
is DeletedMemberUser -> withUser(user, "groupInfo: $groupInfo\nmember: $member")
is DeletedMember -> withUser(user, "groupInfo: $groupInfo\nbyMember: $byMember\ndeletedMember: $deletedMember")
is DeletedMemberUser -> withUser(user, "groupInfo: $groupInfo\nmember: $member\nwithMessages: ${withMessages}")
is DeletedMember -> withUser(user, "groupInfo: $groupInfo\nbyMember: $byMember\ndeletedMember: $deletedMember\nwithMessages: ${withMessages}")
is LeftMember -> withUser(user, "groupInfo: $groupInfo\nmember: $member")
is GroupDeleted -> withUser(user, "groupInfo: $groupInfo\nmember: $member")
is ContactsMerged -> withUser(user, "intoContact: $intoContact\nmergedContact: $mergedContact")

View file

@ -175,7 +175,7 @@ fun ChatView(
)
}
} else {
SelectedItemsBottomToolbar(
SelectedItemsButtonsToolbar(
contentTag = contentTag,
selectedChatItems = selectedChatItems,
chatInfo = chatInfo,
@ -274,34 +274,46 @@ fun ChatView(
}
if (!isActive) return@launch
ModalManager.end.showModalCloseable(true) { close ->
val chatInfo = remember { activeChatInfo }.value
if (chatInfo is ChatInfo.Direct) {
var contactInfo: Pair<ConnectionStats?, Profile?>? by remember { mutableStateOf(preloadedContactInfo) }
var code: String? by remember { mutableStateOf(preloadedCode) }
KeyChangeEffect(chatInfo.id, ChatModel.networkStatuses.toMap()) {
contactInfo = chatModel.controller.apiContactInfo(chatRh, chatInfo.apiId)
preloadedContactInfo = contactInfo
code = chatModel.controller.apiGetContactCode(chatRh, chatInfo.apiId)?.second
preloadedCode = code
val selectedItems: MutableState<Set<Long>?> = mutableStateOf(null)
ModalManager.end.showCustomModal { close ->
val appBar = remember { mutableStateOf(null as @Composable (BoxScope.() -> Unit)?) }
ModalView(close, appBar = appBar.value) {
val chatInfo = remember { activeChatInfo }.value
if (chatInfo is ChatInfo.Direct) {
var contactInfo: Pair<ConnectionStats?, Profile?>? by remember { mutableStateOf(preloadedContactInfo) }
var code: String? by remember { mutableStateOf(preloadedCode) }
KeyChangeEffect(chatInfo.id, ChatModel.networkStatuses.toMap()) {
contactInfo = chatModel.controller.apiContactInfo(chatRh, chatInfo.apiId)
preloadedContactInfo = contactInfo
code = chatModel.controller.apiGetContactCode(chatRh, chatInfo.apiId)?.second
preloadedCode = code
}
ChatInfoView(chatModel, chatInfo.contact, contactInfo?.first, contactInfo?.second, chatInfo.localAlias, code, close) {
showSearch.value = true
}
} else if (chatInfo is ChatInfo.Group) {
var link: Pair<String, GroupMemberRole>? by remember(chatInfo.id) { mutableStateOf(preloadedLink) }
KeyChangeEffect(chatInfo.id) {
setGroupMembers(chatRh, chatInfo.groupInfo, chatModel)
link = chatModel.controller.apiGetGroupLink(chatRh, chatInfo.groupInfo.groupId)
preloadedLink = link
}
GroupChatInfoView(chatRh, chatInfo.id, link?.first, link?.second, selectedItems, appBar, scrollToItemId, {
link = it
preloadedLink = it
}, close, { showSearch.value = true })
} else {
LaunchedEffect(Unit) {
close()
}
}
ChatInfoView(chatModel, chatInfo.contact, contactInfo?.first, contactInfo?.second, chatInfo.localAlias, code, close) {
showSearch.value = true
}
} else if (chatInfo is ChatInfo.Group) {
var link: Pair<String, GroupMemberRole>? by remember(chatInfo.id) { mutableStateOf(preloadedLink) }
KeyChangeEffect(chatInfo.id) {
setGroupMembers(chatRh, chatInfo.groupInfo, chatModel)
link = chatModel.controller.apiGetGroupLink(chatRh, chatInfo.groupInfo.groupId)
preloadedLink = link
}
GroupChatInfoView(chatModel, chatRh, chatInfo.id, link?.first, link?.second, scrollToItemId, {
link = it
preloadedLink = it
}, close, { showSearch.value = true })
} else {
LaunchedEffect(Unit) {
close()
snapshotFlow { activeChatInfo.value?.id }
.drop(1)
.collect {
appBar.value = null
selectedItems.value = null
}
}
}
}
@ -788,7 +800,7 @@ fun ChatLayout(
) {
AnimatedVisibility(selectedChatItems.value != null) {
if (chatInfo != null) {
SelectedItemsBottomToolbar(
SelectedItemsButtonsToolbar(
contentTag = contentTag,
selectedChatItems = selectedChatItems,
chatInfo = chatInfo,
@ -846,7 +858,7 @@ fun ChatLayout(
if (selectedChatItems.value == null) {
GroupReportsAppBar(contentTag, { ModalManager.end.closeModal() }, onSearchValueChanged)
} else {
SelectedItemsTopToolbar(selectedChatItems, !oneHandUI.value)
SelectedItemsCounterToolbar(selectedChatItems, !oneHandUI.value)
}
}
}
@ -858,7 +870,7 @@ fun ChatLayout(
ChatInfoToolbar(chatInfo, contentTag, back, info, startCall, endCall, addMembers, openGroupLink, changeNtfsState, onSearchValueChanged, showSearch)
}
} else {
SelectedItemsTopToolbar(selectedChatItems, !oneHandUI.value || !chatBottomBar.value)
SelectedItemsCounterToolbar(selectedChatItems, !oneHandUI.value || !chatBottomBar.value)
}
}
if (contentTag == null && reportsCount > 0 && (!oneHandUI.value || !chatBottomBar.value)) {
@ -1202,6 +1214,7 @@ fun BoxScope.ChatItemsList(
}
}
val highlightedItems = remember { mutableStateOf(setOf<Long>()) }
val hoveredItemId = remember { mutableStateOf(null as Long?) }
val listState = rememberUpdatedState(rememberSaveable(chatInfo.id, searchValueIsEmpty.value, resetListState.value, saver = LazyListState.Saver) {
val openAroundItemId = chatModel.openAroundItemId.value
val index = mergedItems.value.indexInParentItems[openAroundItemId] ?: mergedItems.value.items.indexOfLast { it.hasUnread() }
@ -1210,6 +1223,7 @@ fun BoxScope.ChatItemsList(
highlightedItems.value += openAroundItemId
chatModel.openAroundItemId.value = null
}
hoveredItemId.value = null
if (reportsState != null) {
reportsListState = null
reportsState
@ -1319,7 +1333,7 @@ fun BoxScope.ChatItemsList(
highlightedItems.value = setOf()
}
}
ChatItemView(remoteHostId, chatInfo, cItem, composeState, provider, useLinkPreviews = useLinkPreviews, linkMode = linkMode, revealed = revealed, highlighted = highlighted, range = range, searchIsNotBlank = searchValueIsNotBlank, fillMaxWidth = fillMaxWidth, selectedChatItems = selectedChatItems, selectChatItem = { selectUnselectChatItem(true, cItem, revealed, selectedChatItems, reversedChatItems) }, deleteMessage = deleteMessage, deleteMessages = deleteMessages, archiveReports = archiveReports, receiveFile = receiveFile, cancelFile = cancelFile, joinGroup = joinGroup, acceptCall = acceptCall, acceptFeature = acceptFeature, openDirectChat = openDirectChat, forwardItem = forwardItem, updateContactStats = updateContactStats, updateMemberStats = updateMemberStats, syncContactConnection = syncContactConnection, syncMemberConnection = syncMemberConnection, findModelChat = findModelChat, findModelMember = findModelMember, scrollToItem = scrollToItem, scrollToQuotedItemFromItem = scrollToQuotedItemFromItem, setReaction = setReaction, showItemDetails = showItemDetails, reveal = reveal, showMemberInfo = showMemberInfo, showChatInfo = showChatInfo, developerTools = developerTools, showViaProxy = showViaProxy, itemSeparation = itemSeparation, showTimestamp = itemSeparation.timestamp)
ChatItemView(remoteHostId, chatInfo, cItem, composeState, provider, useLinkPreviews = useLinkPreviews, linkMode = linkMode, revealed = revealed, highlighted = highlighted, hoveredItemId = hoveredItemId, range = range, searchIsNotBlank = searchValueIsNotBlank, fillMaxWidth = fillMaxWidth, selectedChatItems = selectedChatItems, selectChatItem = { selectUnselectChatItem(true, cItem, revealed, selectedChatItems, reversedChatItems) }, deleteMessage = deleteMessage, deleteMessages = deleteMessages, archiveReports = archiveReports, receiveFile = receiveFile, cancelFile = cancelFile, joinGroup = joinGroup, acceptCall = acceptCall, acceptFeature = acceptFeature, openDirectChat = openDirectChat, forwardItem = forwardItem, updateContactStats = updateContactStats, updateMemberStats = updateMemberStats, syncContactConnection = syncContactConnection, syncMemberConnection = syncMemberConnection, findModelChat = findModelChat, findModelMember = findModelMember, scrollToItem = scrollToItem, scrollToQuotedItemFromItem = scrollToQuotedItemFromItem, setReaction = setReaction, showItemDetails = showItemDetails, reveal = reveal, showMemberInfo = showMemberInfo, showChatInfo = showChatInfo, developerTools = developerTools, showViaProxy = showViaProxy, itemSeparation = itemSeparation, showTimestamp = itemSeparation.timestamp)
}
}
@ -1432,7 +1446,7 @@ fun BoxScope.ChatItemsList(
fun Item() {
ChatItemBox(Modifier.layoutId(CHAT_BUBBLE_LAYOUT_ID)) {
androidx.compose.animation.AnimatedVisibility(selectionVisible, enter = fadeIn(), exit = fadeOut()) {
SelectedChatItem(Modifier, cItem.id, selectedChatItems)
SelectedListItem(Modifier, cItem.id, selectedChatItems)
}
Row(Modifier.graphicsLayer { translationX = selectionOffset.toPx() }) {
val member = cItem.chatDir.groupMember
@ -1457,7 +1471,7 @@ fun BoxScope.ChatItemsList(
} else {
ChatItemBox {
AnimatedVisibility (selectionVisible, enter = fadeIn(), exit = fadeOut()) {
SelectedChatItem(Modifier.padding(start = 8.dp), cItem.id, selectedChatItems)
SelectedListItem(Modifier.padding(start = 8.dp), cItem.id, selectedChatItems)
}
Row(
Modifier
@ -1472,7 +1486,7 @@ fun BoxScope.ChatItemsList(
} else {
ChatItemBox {
AnimatedVisibility (selectionVisible, enter = fadeIn(), exit = fadeOut()) {
SelectedChatItem(Modifier.padding(start = 8.dp), cItem.id, selectedChatItems)
SelectedListItem(Modifier.padding(start = 8.dp), cItem.id, selectedChatItems)
}
Box(
Modifier
@ -1487,7 +1501,7 @@ fun BoxScope.ChatItemsList(
} else { // direct message
ChatItemBox {
AnimatedVisibility (selectionVisible, enter = fadeIn(), exit = fadeOut()) {
SelectedChatItem(Modifier.padding(start = 8.dp), cItem.id, selectedChatItems)
SelectedListItem(Modifier.padding(start = 8.dp), cItem.id, selectedChatItems)
}
Box(
@ -1606,6 +1620,8 @@ private fun LoadLastItems(loadingMoreItems: MutableState<Boolean>, resetListStat
}
}
// TODO: in extra rare case when after loading last items only 1 item is loaded, the view will jump like when receiving new message
// can be reproduced by forwarding a message to notes that is (ChatPagination.INITIAL_COUNT - 1) away from bottom and going to that message
@Composable
private fun SmallScrollOnNewMessage(listState: State<LazyListState>, reversedChatItems: State<List<ChatItem>>) {
val scrollDistance = with(LocalDensity.current) { -39.dp.toPx() }
@ -2296,12 +2312,12 @@ private fun BoxScope.BottomEndFloatingButton(
}
@Composable
private fun SelectedChatItem(
fun SelectedListItem(
modifier: Modifier,
ciId: Long,
selectedChatItems: State<Set<Long>?>,
id: Long,
selectedItems: State<Set<Long>?>,
) {
val checked = remember { derivedStateOf { selectedChatItems.value?.contains(ciId) == true } }
val checked = remember { derivedStateOf { selectedItems.value?.contains(id) == true } }
Icon(
painterResource(if (checked.value) MR.images.ic_check_circle_filled else MR.images.ic_radio_button_unchecked),
null,

View file

@ -9,12 +9,10 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.text.TextRange
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import chat.simplex.common.model.*
import chat.simplex.common.model.ChatController.appPrefs
import chat.simplex.common.platform.BackHandler
import chat.simplex.common.platform.chatModel
import chat.simplex.common.views.helpers.*
@ -23,32 +21,44 @@ import chat.simplex.res.MR
import dev.icerock.moko.resources.compose.painterResource
@Composable
fun BoxScope.SelectedItemsTopToolbar(selectedChatItems: MutableState<Set<Long>?>, onTop: Boolean) {
val onBackClicked = { selectedChatItems.value = null }
fun BoxScope.SelectedItemsCounterToolbar(selectedItems: MutableState<Set<Long>?>, onTop: Boolean, selectAll: (() -> Unit)? = null) {
val onBackClicked = { selectedItems.value = null }
BackHandler(onBack = onBackClicked)
val count = selectedChatItems.value?.size ?: 0
DefaultAppBar(
navigationButton = { NavigationButtonClose(onButtonClicked = onBackClicked) },
title = {
Text(
if (count == 0) {
stringResource(MR.strings.selected_chat_items_nothing_selected)
} else {
stringResource(MR.strings.selected_chat_items_selected_n).format(count)
},
fontWeight = FontWeight.SemiBold,
maxLines = 1,
overflow = TextOverflow.Ellipsis
)
},
onTitleClick = null,
onTop = onTop,
onSearchValueChanged = {},
)
val count = selectedItems.value?.size ?: 0
Box(if (onTop) Modifier else Modifier.imePadding()) {
DefaultAppBar(
navigationButton = { NavigationButtonClose(onButtonClicked = onBackClicked) },
title = {
Text(
if (count == 0) {
stringResource(MR.strings.selected_chat_items_nothing_selected)
} else {
stringResource(MR.strings.selected_chat_items_selected_n).format(count)
},
fontWeight = FontWeight.SemiBold,
maxLines = 1,
overflow = TextOverflow.Ellipsis
)
},
onTitleClick = null,
onTop = onTop,
onSearchValueChanged = {},
buttons = if (selectAll != null) { { SelectAllButton(selectAll) } } else {{}}
)
}
}
@Composable
fun SelectedItemsBottomToolbar(
private fun SelectAllButton(onClick: () -> Unit) {
IconButton(onClick) {
Icon(
painterResource(MR.images.ic_checklist), stringResource(MR.strings.back), Modifier.height(24.dp), tint = MaterialTheme.colors.primary
)
}
}
@Composable
fun SelectedItemsButtonsToolbar(
chatInfo: ChatInfo,
contentTag: MsgContentTag?,
selectedChatItems: MutableState<Set<Long>?>,
@ -162,4 +172,4 @@ private fun recheckItems(chatInfo: ChatInfo,
}
private fun possibleToModerate(chatInfo: ChatInfo): Boolean =
chatInfo is ChatInfo.Group && chatInfo.groupInfo.membership.memberRole >= GroupMemberRole.Admin
chatInfo is ChatInfo.Group && chatInfo.groupInfo.membership.memberRole >= GroupMemberRole.Moderator

View file

@ -8,6 +8,8 @@ import SectionItemViewLongClickable
import SectionSpacer
import SectionTextFooter
import SectionView
import androidx.compose.animation.*
import androidx.compose.animation.core.animateDpAsState
import androidx.compose.desktop.ui.tooling.preview.Preview
import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.layout.*
@ -17,6 +19,7 @@ import androidx.compose.runtime.*
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalClipboardManager
import androidx.compose.ui.text.AnnotatedString
@ -37,7 +40,7 @@ import chat.simplex.common.views.usersettings.*
import chat.simplex.common.model.GroupInfo
import chat.simplex.common.platform.*
import chat.simplex.common.views.chat.*
import chat.simplex.common.views.chat.item.ItemAction
import chat.simplex.common.views.chat.item.*
import chat.simplex.common.views.chatlist.*
import chat.simplex.common.views.database.TtlOptions
import chat.simplex.res.MR
@ -49,7 +52,18 @@ val MEMBER_ROW_AVATAR_SIZE = 42.dp
val MEMBER_ROW_VERTICAL_PADDING = 8.dp
@Composable
fun ModalData.GroupChatInfoView(chatModel: ChatModel, rhId: Long?, chatId: String, groupLink: String?, groupLinkMemberRole: GroupMemberRole?, scrollToItemId: MutableState<Long?>, onGroupLinkUpdated: (Pair<String, GroupMemberRole>?) -> Unit, close: () -> Unit, onSearchClicked: () -> Unit) {
fun ModalData.GroupChatInfoView(
rhId: Long?,
chatId: String,
groupLink: String?,
groupLinkMemberRole: GroupMemberRole?,
selectedItems: MutableState<Set<Long>?>,
appBar: MutableState<@Composable (BoxScope.() -> Unit)?>,
scrollToItemId: MutableState<Long?>,
onGroupLinkUpdated: (Pair<String, GroupMemberRole>?) -> Unit,
close: () -> Unit,
onSearchClicked: () -> Unit
) {
BackHandler(onBack = close)
// TODO derivedStateOf?
val chat = chatModel.chats.value.firstOrNull { ch -> ch.id == chatId && ch.remoteHostId == rhId }
@ -82,12 +96,14 @@ fun ModalData.GroupChatInfoView(chatModel: ChatModel, rhId: Long?, chatId: Strin
setChatTTLAlert(chat.remoteHostId, chat.chatInfo, chatItemTTL, previousChatTTL, deletingItems)
},
members = remember { chatModel.groupMembers }.value
activeSortedMembers = remember { chatModel.groupMembers }.value
.filter { it.memberStatus != GroupMemberStatus.MemLeft && it.memberStatus != GroupMemberStatus.MemRemoved }
.sortedByDescending { it.memberRole },
developerTools,
onLocalAliasChanged = { setGroupAlias(chat, it, chatModel) },
groupLink,
selectedItems,
appBar,
scrollToItemId,
addMembers = {
scope.launch(Dispatchers.Default) {
@ -212,21 +228,23 @@ private fun removeMemberAlert(rhId: Long?, groupInfo: GroupInfo, mem: GroupMembe
text = generalGetString(messageId),
confirmText = generalGetString(MR.strings.remove_member_confirmation),
onConfirm = {
withBGApi {
val updatedMembers = chatModel.controller.apiRemoveMembers(rhId, groupInfo.groupId, listOf(mem.groupMemberId))
if (updatedMembers != null) {
withChats {
updatedMembers.forEach { updatedMember ->
upsertGroupMember(rhId, groupInfo, updatedMember)
}
}
withReportsChatsIfOpen {
updatedMembers.forEach { updatedMember ->
upsertGroupMember(rhId, groupInfo, updatedMember)
}
}
}
}
removeMembers(rhId, groupInfo, listOf(mem.groupMemberId))
},
destructive = true,
)
}
private fun removeMembersAlert(rhId: Long?, groupInfo: GroupInfo, memberIds: List<Long>, onSuccess: () -> Unit = {}) {
val messageId = if (groupInfo.businessChat == null)
MR.strings.members_will_be_removed_from_group_cannot_be_undone
else
MR.strings.members_will_be_removed_from_chat_cannot_be_undone
AlertManager.shared.showAlertDialog(
title = generalGetString(MR.strings.button_remove_members_question),
text = generalGetString(messageId),
confirmText = generalGetString(MR.strings.remove_member_confirmation),
onConfirm = {
removeMembers(rhId, groupInfo, memberIds, onSuccess)
},
destructive = true,
)
@ -309,10 +327,12 @@ fun ModalData.GroupChatInfoLayout(
setSendReceipts: (SendReceipts) -> Unit,
chatItemTTL: MutableState<ChatItemTTL?>,
setChatItemTTL: (ChatItemTTL?) -> Unit,
members: List<GroupMember>,
activeSortedMembers: List<GroupMember>,
developerTools: Boolean,
onLocalAliasChanged: (String) -> Unit,
groupLink: String?,
selectedItems: MutableState<Set<Long>?>,
appBar: MutableState<@Composable (BoxScope.() -> Unit)?>,
scrollToItemId: MutableState<Long?>,
addMembers: () -> Unit,
showMemberInfo: (GroupMember) -> Unit,
@ -333,20 +353,37 @@ fun ModalData.GroupChatInfoLayout(
scope.launch { listState.scrollToItem(0) }
}
val searchText = remember { stateGetOrPut("searchText") { TextFieldValue() } }
val filteredMembers = remember(members) {
val filteredMembers = remember(activeSortedMembers) {
derivedStateOf {
val s = searchText.value.text.trim().lowercase()
if (s.isEmpty()) members else members.filter { m -> m.anyNameContains(s) }
if (s.isEmpty()) activeSortedMembers else activeSortedMembers.filter { m -> m.anyNameContains(s) }
}
}
Box {
val oneHandUI = remember { appPrefs.oneHandUI.state }
val selectedItemsBarHeight = if (selectedItems.value != null) AppBarHeight * fontSizeSqrtMultiplier else 0.dp
val navBarPadding = WindowInsets.navigationBars.asPaddingValues().calculateBottomPadding()
val imePadding = WindowInsets.ime.asPaddingValues().calculateBottomPadding()
LazyColumnWithScrollBar(
state = listState,
contentPadding = if (oneHandUI.value) {
PaddingValues(top = WindowInsets.statusBars.asPaddingValues().calculateTopPadding() + DEFAULT_PADDING + 5.dp, bottom = WindowInsets.navigationBars.asPaddingValues().calculateBottomPadding())
PaddingValues(
top = WindowInsets.statusBars.asPaddingValues().calculateTopPadding() + DEFAULT_PADDING + 5.dp,
bottom = navBarPadding +
imePadding +
selectedItemsBarHeight +
// TODO: that's workaround but works. Actually, something in the codebase doesn't consume padding for AppBar and it produce
// different padding when the user has NavigationBar and doesn't have it with ime shown (developer options helps to test it nav bars)
(if (navBarPadding > 0.dp && imePadding > 0.dp) 0.dp else AppBarHeight * fontSizeSqrtMultiplier)
)
} else {
PaddingValues(top = topPaddingToContent(false))
PaddingValues(
top = topPaddingToContent(false),
bottom = navBarPadding +
imePadding +
selectedItemsBarHeight +
(if (navBarPadding > 0.dp && imePadding > 0.dp) -AppBarHeight * fontSizeSqrtMultiplier else 0.dp)
)
}
) {
item {
@ -401,7 +438,7 @@ fun ModalData.GroupChatInfoLayout(
}
}
}
if (members.filter { it.memberCurrent }.size <= SMALL_GROUPS_RCPS_MEM_LIMIT) {
if (activeSortedMembers.filter { it.memberCurrent }.size <= SMALL_GROUPS_RCPS_MEM_LIMIT) {
SendReceiptsOption(currentUser, sendReceipts, setSendReceipts)
} else {
SendReceiptsOptionDisabled()
@ -424,7 +461,7 @@ fun ModalData.GroupChatInfoLayout(
ChatTTLSection(chatItemTTL, setChatItemTTL, deletingItems)
SectionDividerSpaced(maxTopPadding = true, maxBottomPadding = true)
SectionView(title = String.format(generalGetString(MR.strings.group_info_section_title_num_members), members.count() + 1)) {
SectionView(title = String.format(generalGetString(MR.strings.group_info_section_title_num_members), activeSortedMembers.count() + 1)) {
if (groupInfo.canAddMembers) {
if (groupInfo.businessChat == null) {
if (groupLink == null) {
@ -442,7 +479,7 @@ fun ModalData.GroupChatInfoLayout(
}
AddMembersButton(addMembersTitleId, tint, onAddMembersClick)
}
if (members.size > 8) {
if (activeSortedMembers.size > 8) {
SectionItemView(padding = PaddingValues(start = 14.dp, end = DEFAULT_PADDING_HALF)) {
SearchRowView(searchText)
}
@ -452,12 +489,34 @@ fun ModalData.GroupChatInfoLayout(
}
}
}
items(filteredMembers.value) { member ->
items(filteredMembers.value, key = { it.groupMemberId }) { member ->
Divider()
val showMenu = remember { mutableStateOf(false) }
SectionItemViewLongClickable({ showMemberInfo(member) }, { showMenu.value = true }, minHeight = 54.dp, padding = PaddingValues(horizontal = DEFAULT_PADDING)) {
DropDownMenuForMember(chat.remoteHostId, member, groupInfo, showMenu)
MemberRow(member)
val canBeSelected = groupInfo.membership.memberRole >= member.memberRole && member.memberRole < GroupMemberRole.Moderator
SectionItemViewLongClickable(
click = {
if (selectedItems.value != null) {
if (canBeSelected) {
toggleItemSelection(member.groupMemberId, selectedItems)
}
} else {
showMemberInfo(member)
}
},
longClick = { showMenu.value = true },
minHeight = 54.dp,
padding = PaddingValues(horizontal = DEFAULT_PADDING)
) {
Box(contentAlignment = Alignment.CenterStart) {
androidx.compose.animation.AnimatedVisibility(selectedItems.value != null, enter = fadeIn(), exit = fadeOut()) {
SelectedListItem(Modifier.alpha(if (canBeSelected) 1f else 0f).padding(start = 2.dp), member.groupMemberId, selectedItems)
}
val selectionOffset by animateDpAsState(if (selectedItems.value != null) 20.dp + 22.dp * fontSizeMultiplier else 0.dp)
DropDownMenuForMember(chat.remoteHostId, member, groupInfo, selectedItems, showMenu)
Box(Modifier.padding(start = selectionOffset)) {
MemberRow(member)
}
}
}
}
item {
@ -482,12 +541,92 @@ fun ModalData.GroupChatInfoLayout(
}
}
SectionBottomSpacer()
Spacer(Modifier.windowInsetsBottomHeight(WindowInsets.navigationBars))
}
}
if (!oneHandUI.value) {
NavigationBarBackground(oneHandUI.value, oneHandUI.value)
}
SelectedItemsButtonsToolbar(chat, groupInfo, selectedItems, rememberUpdatedState(activeSortedMembers))
SelectedItemsCounterToolbarSetter(groupInfo, selectedItems, filteredMembers, appBar)
}
}
@Composable
private fun BoxScope.SelectedItemsButtonsToolbar(chat: Chat, groupInfo: GroupInfo, selectedItems: MutableState<Set<Long>?>, activeMembers: State<List<GroupMember>>) {
val oneHandUI = remember { appPrefs.oneHandUI.state }
Column(Modifier.align(Alignment.BottomCenter)) {
AnimatedVisibility(selectedItems.value != null) {
SelectedItemsMembersToolbar(
selectedItems = selectedItems,
activeMembers = activeMembers,
groupInfo = groupInfo,
delete = {
removeMembersAlert(chat.remoteHostId, groupInfo, selectedItems.value!!.sorted()) {
selectedItems.value = null
}
},
blockForAll = { block ->
if (block) {
blockForAllAlert(chat.remoteHostId, groupInfo, selectedItems.value!!.sorted()) {
selectedItems.value = null
}
} else {
unblockForAllAlert(chat.remoteHostId, groupInfo, selectedItems.value!!.sorted()) {
selectedItems.value = null
}
}
},
changeRole = { toRole ->
updateMembersRoleDialog(toRole, groupInfo) {
updateMembersRole(toRole, chat.remoteHostId, groupInfo, selectedItems.value!!.sorted()) {
selectedItems.value = null
}
}
}
)
}
if (oneHandUI.value) {
// That's placeholder to take some space for bottom app bar in oneHandUI
Box(Modifier.height(AppBarHeight * fontSizeSqrtMultiplier))
}
}
}
@Composable
private fun SelectedItemsCounterToolbarSetter(
groupInfo: GroupInfo,
selectedItems: MutableState<Set<Long>?>,
filteredMembers: State<List<GroupMember>>,
appBar: MutableState<@Composable (BoxScope.() -> Unit)?>
) {
LaunchedEffect(
groupInfo,
/* variable, not value - intentionally - to reduce work but handle variable change because it changes in remember(members) { derivedState {} } */
filteredMembers
) {
snapshotFlow { selectedItems.value == null }
.collect { nullItems ->
if (!nullItems) {
appBar.value = {
SelectedItemsCounterToolbar(selectedItems, !remember { appPrefs.oneHandUI.state }.value) {
if (!groupInfo.membership.memberActive) return@SelectedItemsCounterToolbar
val ids: MutableSet<Long> = mutableSetOf()
for (mem in filteredMembers.value) {
if (groupInfo.membership.memberActive && groupInfo.membership.memberRole >= mem.memberRole && mem.memberRole < GroupMemberRole.Moderator) {
ids.add(mem.groupMemberId)
}
}
if (ids.isNotEmpty() && (selectedItems.value ?: setOf()).containsAll(ids)) {
selectedItems.value = (selectedItems.value ?: setOf()).minus(ids)
} else {
selectedItems.value = (selectedItems.value ?: setOf()).union(ids)
}
}
}
} else {
appBar.value = null
}
}
}
}
@ -612,7 +751,7 @@ fun MemberRow(member: GroupMember, user: Boolean = false, infoPage: Boolean = tr
Text(stringResource(MR.strings.member_info_member_blocked), color = MaterialTheme.colors.secondary)
} else {
val role = member.memberRole
if (role in listOf(GroupMemberRole.Owner, GroupMemberRole.Admin, GroupMemberRole.Observer)) {
if (role in listOf(GroupMemberRole.Owner, GroupMemberRole.Admin, GroupMemberRole.Moderator, GroupMemberRole.Observer)) {
Text(role.text, color = MaterialTheme.colors.secondary)
}
}
@ -686,8 +825,8 @@ private fun MemberVerifiedShield() {
}
@Composable
private fun DropDownMenuForMember(rhId: Long?, member: GroupMember, groupInfo: GroupInfo, showMenu: MutableState<Boolean>) {
if (groupInfo.membership.memberRole >= GroupMemberRole.Admin) {
private fun DropDownMenuForMember(rhId: Long?, member: GroupMember, groupInfo: GroupInfo, selectedItems: MutableState<Set<Long>?>, showMenu: MutableState<Boolean>) {
if (groupInfo.membership.memberRole >= GroupMemberRole.Moderator) {
val canBlockForAll = member.canBlockForAll(groupInfo)
val canRemove = member.canBeRemoved(groupInfo)
if (canBlockForAll || canRemove) {
@ -711,6 +850,10 @@ private fun DropDownMenuForMember(rhId: Long?, member: GroupMember, groupInfo: G
showMenu.value = false
})
}
if (selectedItems.value == null && member.memberRole < GroupMemberRole.Moderator) {
Divider()
SelectItemAction(showMenu) { toggleItemSelection(member.groupMemberId, selectedItems) }
}
}
}
} else if (!member.blockedByAdmin) {
@ -819,6 +962,37 @@ private fun setGroupAlias(chat: Chat, localAlias: String, chatModel: ChatModel)
}
}
fun removeMembers(rhId: Long?, groupInfo: GroupInfo, memberIds: List<Long>, onSuccess: () -> Unit = {}) {
withBGApi {
val updatedMembers = chatModel.controller.apiRemoveMembers(rhId, groupInfo.groupId, memberIds)
if (updatedMembers != null) {
withChats {
updatedMembers.forEach { updatedMember ->
upsertGroupMember(rhId, groupInfo, updatedMember)
}
}
withReportsChatsIfOpen {
updatedMembers.forEach { updatedMember ->
upsertGroupMember(rhId, groupInfo, updatedMember)
}
}
onSuccess()
}
}
}
fun <T> toggleItemSelection(itemId: T, selectedItems: MutableState<Set<T>?>) {
val select = selectedItems.value?.contains(itemId) != true
if (select) {
val sel = selectedItems.value ?: setOf()
selectedItems.value = sel + itemId
} else {
val sel = (selectedItems.value ?: setOf()).toMutableSet()
sel.remove(itemId)
selectedItems.value = sel
}
}
@Preview
@Composable
fun PreviewGroupChatInfoLayout() {
@ -835,10 +1009,12 @@ fun PreviewGroupChatInfoLayout() {
setSendReceipts = {},
chatItemTTL = remember { mutableStateOf(ChatItemTTL.fromSeconds(0)) },
setChatItemTTL = {},
members = listOf(GroupMember.sampleData, GroupMember.sampleData, GroupMember.sampleData),
activeSortedMembers = listOf(GroupMember.sampleData, GroupMember.sampleData, GroupMember.sampleData),
developerTools = false,
onLocalAliasChanged = {},
groupLink = null,
selectedItems = remember { mutableStateOf(null) },
appBar = remember { mutableStateOf(null) },
scrollToItemId = remember { mutableStateOf(null) },
addMembers = {}, showMemberInfo = {}, editGroupProfile = {}, addOrEditWelcomeMessage = {}, openPreferences = {}, deleteGroup = {}, clearChat = {}, leaveGroup = {}, manageGroupLink = {}, onSearchClicked = {}, deletingItems = remember { mutableStateOf(true) }
)

View file

@ -137,26 +137,10 @@ fun GroupMemberInfoView(
if (it == newRole.value) return@GroupMemberInfoLayout
val prevValue = newRole.value
newRole.value = it
updateMemberRoleDialog(it, groupInfo, member, onDismiss = {
updateMemberRoleDialog(it, groupInfo, member.memberCurrent, onDismiss = {
newRole.value = prevValue
}) {
withBGApi {
kotlin.runCatching {
val members = chatModel.controller.apiMembersRole(rhId, groupInfo.groupId, listOf(member.groupMemberId), it)
withChats {
members.forEach { member ->
upsertGroupMember(rhId, groupInfo, member)
}
}
withReportsChatsIfOpen {
members.forEach { member ->
upsertGroupMember(rhId, groupInfo, member)
}
}
}.onFailure {
newRole.value = prevValue
}
}
updateMembersRole(newRole.value, rhId, groupInfo, listOf(member.groupMemberId), onFailure = { newRole.value = prevValue })
}
},
switchMemberAddress = {
@ -317,7 +301,7 @@ fun GroupMemberInfoLayout(
}
@Composable
fun AdminDestructiveSection() {
fun ModeratorDestructiveSection() {
val canBlockForAll = member.canBlockForAll(groupInfo)
val canRemove = member.canBeRemoved(groupInfo)
if (canBlockForAll || canRemove) {
@ -494,8 +478,8 @@ fun GroupMemberInfoLayout(
}
}
if (groupInfo.membership.memberRole >= GroupMemberRole.Admin) {
AdminDestructiveSection()
if (groupInfo.membership.memberRole >= GroupMemberRole.Moderator) {
ModeratorDestructiveSection()
} else {
NonAdminBlockSection()
}
@ -709,16 +693,37 @@ fun MemberProfileImage(
)
}
private fun updateMemberRoleDialog(
fun updateMembersRole(newRole: GroupMemberRole, rhId: Long?, groupInfo: GroupInfo, memberIds: List<Long>, onFailure: () -> Unit = {}, onSuccess: () -> Unit = {}) {
withBGApi {
kotlin.runCatching {
val members = chatModel.controller.apiMembersRole(rhId, groupInfo.groupId, memberIds, newRole)
withChats {
members.forEach { member ->
upsertGroupMember(rhId, groupInfo, member)
}
}
withReportsChatsIfOpen {
members.forEach { member ->
upsertGroupMember(rhId, groupInfo, member)
}
}
onSuccess()
}.onFailure {
onFailure()
}
}
}
fun updateMemberRoleDialog(
newRole: GroupMemberRole,
groupInfo: GroupInfo,
member: GroupMember,
memberCurrent: Boolean,
onDismiss: () -> Unit,
onConfirm: () -> Unit
) {
AlertManager.shared.showAlertDialog(
title = generalGetString(MR.strings.change_member_role_question),
text = if (member.memberCurrent) {
text = if (memberCurrent) {
if (groupInfo.businessChat == null)
String.format(generalGetString(MR.strings.member_role_will_be_changed_with_notification), newRole.text)
else
@ -732,6 +737,22 @@ private fun updateMemberRoleDialog(
)
}
fun updateMembersRoleDialog(
newRole: GroupMemberRole,
groupInfo: GroupInfo,
onConfirm: () -> Unit
) {
AlertManager.shared.showAlertDialog(
title = generalGetString(MR.strings.change_member_role_question),
text = if (groupInfo.businessChat == null)
String.format(generalGetString(MR.strings.member_role_will_be_changed_with_notification), newRole.text)
else
String.format(generalGetString(MR.strings.member_role_will_be_changed_with_notification_chat), newRole.text),
confirmText = generalGetString(MR.strings.change_verb),
onConfirm = onConfirm,
)
}
fun connectViaMemberAddressAlert(rhId: Long?, connReqUri: String) {
try {
withBGApi {
@ -793,7 +814,19 @@ fun blockForAllAlert(rhId: Long?, gInfo: GroupInfo, mem: GroupMember) {
text = generalGetString(MR.strings.block_member_desc).format(mem.chatViewName),
confirmText = generalGetString(MR.strings.block_for_all),
onConfirm = {
blockMemberForAll(rhId, gInfo, mem, true)
blockMemberForAll(rhId, gInfo, listOf(mem.groupMemberId), true)
},
destructive = true,
)
}
fun blockForAllAlert(rhId: Long?, gInfo: GroupInfo, memberIds: List<Long>, onSuccess: () -> Unit = {}) {
AlertManager.shared.showAlertDialog(
title = generalGetString(MR.strings.block_members_for_all_question),
text = generalGetString(MR.strings.block_members_desc),
confirmText = generalGetString(MR.strings.block_for_all),
onConfirm = {
blockMemberForAll(rhId, gInfo, memberIds, true, onSuccess)
},
destructive = true,
)
@ -805,14 +838,25 @@ fun unblockForAllAlert(rhId: Long?, gInfo: GroupInfo, mem: GroupMember) {
text = generalGetString(MR.strings.unblock_member_desc).format(mem.chatViewName),
confirmText = generalGetString(MR.strings.unblock_for_all),
onConfirm = {
blockMemberForAll(rhId, gInfo, mem, false)
blockMemberForAll(rhId, gInfo, listOf(mem.groupMemberId), false)
},
)
}
fun blockMemberForAll(rhId: Long?, gInfo: GroupInfo, member: GroupMember, blocked: Boolean) {
fun unblockForAllAlert(rhId: Long?, gInfo: GroupInfo, memberIds: List<Long>, onSuccess: () -> Unit = {}) {
AlertManager.shared.showAlertDialog(
title = generalGetString(MR.strings.unblock_members_for_all_question),
text = generalGetString(MR.strings.unblock_members_desc),
confirmText = generalGetString(MR.strings.unblock_for_all),
onConfirm = {
blockMemberForAll(rhId, gInfo, memberIds, false, onSuccess)
},
)
}
fun blockMemberForAll(rhId: Long?, gInfo: GroupInfo, memberIds: List<Long>, blocked: Boolean, onSuccess: () -> Unit = {}) {
withBGApi {
val updatedMembers = ChatController.apiBlockMembersForAll(rhId, gInfo.groupId, listOf(member.groupMemberId), blocked)
val updatedMembers = ChatController.apiBlockMembersForAll(rhId, gInfo.groupId, memberIds, blocked)
withChats {
updatedMembers.forEach { updatedMember ->
upsertGroupMember(rhId, gInfo, updatedMember)
@ -823,6 +867,7 @@ fun blockMemberForAll(rhId: Long?, gInfo: GroupInfo, member: GroupMember, blocke
upsertGroupMember(rhId, gInfo, updatedMember)
}
}
onSuccess()
}
}

View file

@ -0,0 +1,129 @@
package chat.simplex.common.views.chat.group
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.material.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.max
import chat.simplex.common.model.*
import chat.simplex.common.platform.chatModel
import chat.simplex.common.ui.theme.WarningOrange
import chat.simplex.common.views.chat.*
import chat.simplex.common.views.helpers.*
import chat.simplex.res.MR
import dev.icerock.moko.resources.compose.painterResource
@Composable
fun SelectedItemsMembersToolbar(
selectedItems: MutableState<Set<Long>?>,
activeMembers: State<List<GroupMember>>,
groupInfo: GroupInfo,
delete: () -> Unit,
blockForAll: (Boolean) -> Unit, // Boolean - block or unlock
changeRole: (GroupMemberRole) -> Unit,
) {
val deleteEnabled = remember { mutableStateOf(false) }
val blockForAllEnabled = remember { mutableStateOf(false) }
val unblockForAllEnabled = remember { mutableStateOf(false) }
val blockForAllButtonEnabled = remember { derivedStateOf { (blockForAllEnabled.value && !unblockForAllEnabled.value) || (!blockForAllEnabled.value && unblockForAllEnabled.value) } }
val roleToMemberEnabled = remember { mutableStateOf(false) }
val roleToObserverEnabled = remember { mutableStateOf(false) }
val roleButtonEnabled = remember { derivedStateOf { (roleToMemberEnabled.value && !roleToObserverEnabled.value) || (!roleToMemberEnabled.value && roleToObserverEnabled.value) } }
Box(
Modifier
.background(MaterialTheme.colors.background)
.navigationBarsPadding()
.imePadding()
) {
// It's hard to measure exact height of ComposeView with different fontSizes. Better to depend on actual ComposeView, even empty
Box(Modifier.alpha(0f)) {
ComposeView(chatModel = chatModel, Chat.sampleData, remember { mutableStateOf(ComposeState(useLinkPreviews = false)) }, remember { mutableStateOf(null) }, {}, remember { FocusRequester() })
}
Row(
Modifier
.matchParentSize()
.padding(horizontal = 2.dp)
.height(AppBarHeight * fontSizeSqrtMultiplier)
.pointerInput(Unit) {
detectGesture {
true
}
},
horizontalArrangement = Arrangement.SpaceBetween,
verticalAlignment = Alignment.CenterVertically
) {
IconButton(delete, enabled = deleteEnabled.value) {
Icon(
painterResource(MR.images.ic_delete),
null,
Modifier.size(22.dp),
tint = if (!deleteEnabled.value) MaterialTheme.colors.secondary else MaterialTheme.colors.error
)
}
IconButton({ blockForAll(blockForAllEnabled.value) }, enabled = blockForAllButtonEnabled.value) {
Icon(
painterResource(if (unblockForAllEnabled.value && blockForAllButtonEnabled.value) MR.images.ic_do_not_touch else MR.images.ic_back_hand),
null,
Modifier.size(22.dp),
tint = if (!blockForAllButtonEnabled.value) MaterialTheme.colors.secondary else if (blockForAllEnabled.value) MaterialTheme.colors.error else WarningOrange
)
}
IconButton({ changeRole(if (roleToMemberEnabled.value) GroupMemberRole.Member else GroupMemberRole.Observer) }, enabled = roleButtonEnabled.value) {
Icon(
painterResource(if (roleToObserverEnabled.value || !roleButtonEnabled.value) MR.images.ic_person else MR.images.ic_person_edit),
null,
Modifier.size(22.dp),
tint = if (!roleButtonEnabled.value) MaterialTheme.colors.secondary else MaterialTheme.colors.primary
)
}
}
Divider(Modifier.align(Alignment.TopStart))
}
LaunchedEffect(groupInfo, activeMembers.value.toList(), selectedItems.value) {
recheckItems(groupInfo, selectedItems, activeMembers.value, deleteEnabled, blockForAllEnabled, unblockForAllEnabled, roleToMemberEnabled, roleToObserverEnabled)
}
}
private fun recheckItems(
groupInfo: GroupInfo,
selectedItems: MutableState<Set<Long>?>,
activeMembers: List<GroupMember>,
deleteEnabled: MutableState<Boolean>,
blockForAllEnabled: MutableState<Boolean>,
unblockForAllEnabled: MutableState<Boolean>,
roleToMemberEnabled: MutableState<Boolean>,
roleToObserverEnabled: MutableState<Boolean>,
) {
val selected = selectedItems.value ?: return
var rDeleteEnabled = true
var rBlockForAllEnabled = true
var rUnblockForAllEnabled = true
var rRoleToMemberEnabled = true
var rRoleToObserverEnabled = true
val rSelectedItems = mutableSetOf<Long>()
for (mem in activeMembers) {
if (selected.contains(mem.groupMemberId) && groupInfo.membership.memberRole >= mem.memberRole && mem.memberRole < GroupMemberRole.Moderator && groupInfo.membership.memberActive) {
rDeleteEnabled = rDeleteEnabled && mem.memberStatus != GroupMemberStatus.MemRemoved && mem.memberStatus != GroupMemberStatus.MemLeft
rBlockForAllEnabled = rBlockForAllEnabled && !mem.blockedByAdmin
rUnblockForAllEnabled = rUnblockForAllEnabled && mem.blockedByAdmin
rRoleToMemberEnabled = rRoleToMemberEnabled && mem.memberRole != GroupMemberRole.Member
rRoleToObserverEnabled = rRoleToObserverEnabled && mem.memberRole != GroupMemberRole.Observer
rSelectedItems.add(mem.groupMemberId) // we are collecting new selected items here to account for any changes in members list
}
}
deleteEnabled.value = rDeleteEnabled
blockForAllEnabled.value = rBlockForAllEnabled
unblockForAllEnabled.value = rUnblockForAllEnabled
roleToMemberEnabled.value = rRoleToMemberEnabled
roleToObserverEnabled.value = rRoleToObserverEnabled
selectedItems.value = rSelectedItems
}

View file

@ -196,7 +196,7 @@ fun GroupMentions(
MaxMentionsReached()
}
}
itemsIndexed(filteredMembers.value, key = { _, item -> item.memberId }) { i, member ->
itemsIndexed(filteredMembers.value, key = { _, item -> item.groupMemberId }) { i, member ->
if (i != 0 || !showMaxReachedBox) {
Divider()
}

View file

@ -21,6 +21,7 @@ import chat.simplex.res.MR
private val featureRoles: List<Pair<GroupMemberRole?, String>> = listOf(
null to generalGetString(MR.strings.feature_roles_all_members),
GroupMemberRole.Moderator to generalGetString(MR.strings.feature_roles_moderators),
GroupMemberRole.Admin to generalGetString(MR.strings.feature_roles_admins),
GroupMemberRole.Owner to generalGetString(MR.strings.feature_roles_owners)
)

View file

@ -92,12 +92,6 @@ fun CIImageView(
}
}
@Composable
fun imageViewFullWidth(): Dp {
val approximatePadding = 100.dp
return with(LocalDensity.current) { minOf(DEFAULT_MAX_IMAGE_WIDTH, LocalWindowWidth() - approximatePadding) }
}
@Composable
fun imageView(imageBitmap: ImageBitmap, onClick: () -> Unit) {
Image(
@ -265,6 +259,12 @@ fun CIImageView(
}
}
@Composable
fun imageViewFullWidth(): Dp {
val approximatePadding = 100.dp
return with(LocalDensity.current) { minOf(DEFAULT_MAX_IMAGE_WIDTH, LocalWindowWidth() - approximatePadding) }
}
private fun showDownloadButton(status: CIFileStatus?): Boolean =
status is CIFileStatus.RcvInvitation || status is CIFileStatus.RcvAborted

View file

@ -73,6 +73,7 @@ fun ChatItemView(
linkMode: SimplexLinkMode,
revealed: State<Boolean>,
highlighted: State<Boolean>,
hoveredItemId: MutableState<Long?>,
range: State<IntRange?>,
selectedChatItems: MutableState<Set<Long>?>,
searchIsNotBlank: State<Boolean>,
@ -115,16 +116,8 @@ fun ChatItemView(
val onLinkLongClick = { _: String -> showMenu.value = true }
val live = remember { derivedStateOf { composeState.value.liveMessage != null } }.value
val bubbleInteractionSource = remember { MutableInteractionSource() }
val lineInteractionSource = remember { MutableInteractionSource() }
val bubblePressed = bubbleInteractionSource.collectIsPressedAsState()
val linePressed = lineInteractionSource.collectIsPressedAsState()
val lineHovered = lineInteractionSource.collectIsHoveredAsState()
val lineActivated = remember { derivedStateOf { lineHovered.value || linePressed.value || bubblePressed.value } }
Box(
modifier = (if (fillMaxWidth) Modifier.fillMaxWidth() else Modifier)
.hoverable(lineInteractionSource)
.clickable(onClick = {}, interactionSource = lineInteractionSource, indication = null),
modifier = (if (fillMaxWidth) Modifier.fillMaxWidth() else Modifier),
contentAlignment = alignment,
) {
val info = cItem.meta.itemStatus.statusInto
@ -240,20 +233,42 @@ fun ChatItemView(
}
@Composable
fun GoToItemInnerButton(alignStart: Boolean, icon: ImageResource, parentActivated: State<Boolean>, onClick: () -> Unit) {
fun GoToItemInnerButton(alignStart: Boolean, icon: ImageResource, iconSize: Dp = 22.dp, parentActivated: State<Boolean>, onClick: () -> Unit) {
val buttonInteractionSource = remember { MutableInteractionSource() }
val buttonHovered = buttonInteractionSource.collectIsHoveredAsState()
val buttonPressed = buttonInteractionSource.collectIsPressedAsState()
val buttonActivated = remember { derivedStateOf { buttonHovered.value || buttonPressed.value } }
val fullyVisible = parentActivated.value || buttonActivated.value || hoveredItemId.value == cItem.id
val mixAlpha = 0.6f
val mixedBackgroundColor = if (fullyVisible) {
if (MaterialTheme.colors.isLight) {
MaterialTheme.colors.secondary.mixWith(Color.White, mixAlpha)
} else {
MaterialTheme.colors.secondary.mixWith(Color.Black, mixAlpha)
}
} else {
Color.Unspecified
}
val iconTint = if (fullyVisible) {
Color.White
} else {
if (MaterialTheme.colors.isLight) {
MaterialTheme.colors.secondary.mixWith(Color.White, mixAlpha)
} else {
MaterialTheme.colors.secondary.mixWith(Color.Black, mixAlpha)
}
}
IconButton(
onClick,
Modifier
.padding(start = if (alignStart) 0.dp else DEFAULT_PADDING_HALF + 3.dp, end = if (alignStart) DEFAULT_PADDING_HALF + 3.dp else 0.dp)
.size(22.dp)
.alpha(if (parentActivated.value || buttonActivated.value) 1f else 0.4f),
.then(if (fullyVisible) Modifier.background(mixedBackgroundColor, CircleShape) else Modifier)
.size(22.dp),
interactionSource = buttonInteractionSource
) {
Icon(painterResource(icon), null, Modifier.size(22.dp), tint = MaterialTheme.colors.secondary)
Icon(painterResource(icon), null, Modifier.size(iconSize), tint = iconTint)
}
}
@ -261,14 +276,14 @@ fun ChatItemView(
fun GoToItemButton(alignStart: Boolean, parentActivated: State<Boolean>) {
val chatTypeApiIdMsgId = cItem.meta.itemForwarded?.chatTypeApiIdMsgId
if (searchIsNotBlank.value) {
GoToItemInnerButton(alignStart, MR.images.ic_search, parentActivated) {
GoToItemInnerButton(alignStart, MR.images.ic_search, 17.dp, parentActivated) {
withBGApi {
openChat(rhId, cInfo.chatType, cInfo.apiId, null, cItem.id)
closeReportsIfNeeded()
}
}
} else if (chatTypeApiIdMsgId != null) {
GoToItemInnerButton(alignStart, MR.images.ic_arrow_forward, parentActivated) {
GoToItemInnerButton(alignStart, MR.images.ic_arrow_forward, 22.dp, parentActivated) {
val (chatType, apiId, msgId) = chatTypeApiIdMsgId
withBGApi {
openChat(rhId, chatType, apiId, null, msgId)
@ -280,13 +295,15 @@ fun ChatItemView(
Column(horizontalAlignment = if (cItem.chatDir.sent) Alignment.End else Alignment.Start) {
Row(verticalAlignment = Alignment.CenterVertically) {
val bubbleInteractionSource = remember { MutableInteractionSource() }
val bubbleHovered = bubbleInteractionSource.collectIsHoveredAsState()
if (cItem.chatDir.sent) {
GoToItemButton(true, lineActivated)
GoToItemButton(true, bubbleHovered)
}
Column(Modifier.weight(1f, fill = false)) {
val enterInteraction = remember { HoverInteraction.Enter() }
KeyChangeEffect(highlighted.value) {
if (highlighted.value) {
LaunchedEffect(highlighted.value, hoveredItemId.value) {
if (highlighted.value || hoveredItemId.value == cItem.id) {
bubbleInteractionSource.emit(enterInteraction)
} else {
bubbleInteractionSource.emit(HoverInteraction.Exit(enterInteraction))
@ -295,7 +312,15 @@ fun ChatItemView(
Column(
Modifier
.clipChatItem(cItem, itemSeparation.largeGap, revealed.value)
.combinedClickable(onLongClick = { showMenu.value = true }, onClick = onClick, interactionSource = bubbleInteractionSource, indication = LocalIndication.current)
.hoverable(bubbleInteractionSource)
.combinedClickable(
onLongClick = { showMenu.value = true },
onClick = {
if (appPlatform.isAndroid && (searchIsNotBlank.value || cItem.meta.itemForwarded?.chatTypeApiIdMsgId != null)) {
hoveredItemId.value = if (hoveredItemId.value == cItem.id) null else cItem.id
}
onClick()
}, interactionSource = bubbleInteractionSource, indication = LocalIndication.current)
.onRightClick { showMenu.value = true },
) {
@Composable
@ -615,6 +640,13 @@ fun ChatItemView(
fun DeletedItem() {
MarkedDeletedItemView(cItem, cInfo, cInfo.timedMessagesTTL, revealed, showViaProxy = showViaProxy, showTimestamp = showTimestamp)
DefaultDropdownMenu(showMenu) {
if (revealed.value) {
HideItemAction(revealed, showMenu, reveal)
} else if (!cItem.isDeletedContent) {
RevealItemAction(revealed, showMenu, reveal)
} else if (range.value != null) {
ExpandItemAction(revealed, showMenu, reveal)
}
ItemInfoAction(cInfo, cItem, showItemDetails, showMenu)
DeleteItemAction(cItem, revealed, showMenu, questionText = generalGetString(MR.strings.delete_message_cannot_be_undone_warning), deleteMessage, deleteMessages)
if (cItem.canBeDeletedForSelf) {
@ -744,7 +776,7 @@ fun ChatItemView(
}
}
if (!cItem.chatDir.sent) {
GoToItemButton(false, lineActivated)
GoToItemButton(false, bubbleHovered)
}
}
if (cItem.content.msgContent != null && (cItem.meta.itemDeleted == null || revealed.value) && cItem.reactions.isNotEmpty()) {
@ -865,14 +897,14 @@ fun ModerateItemAction(
@Composable
fun SelectItemAction(
showMenu: MutableState<Boolean>,
selectChatItem: () -> Unit,
selectItem: () -> Unit,
) {
ItemAction(
stringResource(MR.strings.select_verb),
painterResource(MR.images.ic_check_circle),
onClick = {
showMenu.value = false
selectChatItem()
selectItem()
}
)
}
@ -1399,6 +1431,7 @@ fun PreviewChatItemView(
composeState = remember { mutableStateOf(ComposeState(useLinkPreviews = true)) },
revealed = remember { mutableStateOf(false) },
highlighted = remember { mutableStateOf(false) },
hoveredItemId = remember { mutableStateOf(null) },
range = remember { mutableStateOf(0..1) },
selectedChatItems = remember { mutableStateOf(setOf()) },
searchIsNotBlank = remember { mutableStateOf(false) },
@ -1447,6 +1480,7 @@ fun PreviewChatItemViewDeletedContent() {
composeState = remember { mutableStateOf(ComposeState(useLinkPreviews = true)) },
revealed = remember { mutableStateOf(false) },
highlighted = remember { mutableStateOf(false) },
hoveredItemId = remember { mutableStateOf(null) },
range = remember { mutableStateOf(0..1) },
selectedChatItems = remember { mutableStateOf(setOf()) },
searchIsNotBlank = remember { mutableStateOf(false) },

View file

@ -148,7 +148,6 @@ fun ChatListView(chatModel: ChatModel, userPickerState: MutableStateFlow<Animate
UsageConditionsView(
userServers = mutableStateOf(emptyList()),
currUserServers = mutableStateOf(emptyList()),
updated = true,
close = close,
rhId = rhId
)

View file

@ -21,6 +21,7 @@ import chat.simplex.common.platform.*
import chat.simplex.common.ui.theme.*
import chat.simplex.common.views.chat.chatViewScrollState
import chat.simplex.common.views.chat.item.CHAT_IMAGE_LAYOUT_ID
import chat.simplex.common.views.chat.item.imageViewFullWidth
import chat.simplex.res.MR
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
@ -135,10 +136,15 @@ fun ComposeLinkView(linkPreview: LinkPreview?, cancelPreview: () -> Unit, cancel
@Composable
fun ChatItemLinkView(linkPreview: LinkPreview, showMenu: State<Boolean>, onLongClick: () -> Unit) {
Column(Modifier.layoutId(CHAT_IMAGE_LAYOUT_ID).widthIn(max = DEFAULT_MAX_IMAGE_WIDTH)) {
val image = base64ToBitmap(linkPreview.image)
Column(
Modifier
.layoutId(CHAT_IMAGE_LAYOUT_ID)
.width(if (image.width * 0.97 <= image.height) imageViewFullWidth() * 0.75f else DEFAULT_MAX_IMAGE_WIDTH)
) {
val blurred = remember { mutableStateOf(appPrefs.privacyMediaBlurRadius.get() > 0) }
Image(
base64ToBitmap(linkPreview.image),
image,
stringResource(MR.strings.image_descr_link_preview),
modifier = Modifier
.fillMaxWidth()

View file

@ -32,6 +32,7 @@ fun ModalView(
searchAlwaysVisible: Boolean = false,
onSearchValueChanged: (String) -> Unit = {},
endButtons: @Composable RowScope.() -> Unit = {},
appBar: @Composable (BoxScope.() -> Unit)? = null,
content: @Composable BoxScope.() -> Unit,
) {
if (showClose && showAppBar) {
@ -48,14 +49,20 @@ fun ModalView(
StatusBarBackground()
}
Box(Modifier.align(if (oneHandUI.value) Alignment.BottomStart else Alignment.TopStart)) {
DefaultAppBar(
navigationButton = if (showClose) {{ NavigationButtonBack(onButtonClicked = if (enableClose) close else null) }} else null,
onTop = !oneHandUI.value,
showSearch = showSearch,
searchAlwaysVisible = searchAlwaysVisible,
onSearchValueChanged = onSearchValueChanged,
buttons = endButtons
)
if (appBar != null) {
appBar()
} else {
DefaultAppBar(
navigationButton = if (showClose) {
{ NavigationButtonBack(onButtonClicked = if (enableClose) close else null) }
} else null,
onTop = !oneHandUI.value,
showSearch = showSearch,
searchAlwaysVisible = searchAlwaysVisible,
onSearchValueChanged = onSearchValueChanged,
buttons = endButtons
)
}
}
}
}

View file

@ -91,13 +91,7 @@ fun ModalData.ChooseServerOperators(
if (onboarding && reviewForOperators.isEmpty()) {
TextButtonBelowOnboardingButton(stringResource(MR.strings.operator_conditions_of_use)) {
modalManager.showModalCloseable(endButtons = { ConditionsLinkButton() }) { close ->
UsageConditionsView(
currUserServers = remember { mutableStateOf(emptyList()) },
userServers = remember { mutableStateOf(emptyList()) },
updated = false,
close = close,
rhId = null,
)
SimpleConditionsView(rhId = null)
}
}
} else if (onboarding || reviewForOperators.isEmpty()) {

View file

@ -169,7 +169,6 @@ fun ModalData.WhatsNewView(updatedConditions: Boolean = false, viaSettings: Bool
UsageConditionsView(
userServers = mutableStateOf(emptyList()),
currUserServers = mutableStateOf(emptyList()),
updated = true,
close = close,
rhId = rhId
)
@ -780,7 +779,7 @@ private val versionDescriptions: List<VersionDescription> = listOf(
),
VersionDescription(
version = "v6.3",
// post = "https://simplex.chat/blog/20241210-simplex-network-v6-2-servers-by-flux-business-chats.html",
post = "https://simplex.chat/blog/20250308-simplex-chat-v6-3-new-user-experience-safety-in-public-groups.html",
features = listOf(
VersionFeature.FeatureDescription(
icon = MR.images.ic_at,

View file

@ -1096,6 +1096,7 @@ object AppearanceScope {
"en" to "English",
"ar" to "العربية",
"bg" to "Български",
"ca" to "Català",
"cs" to "Čeština",
"de" to "Deutsch",
"es" to "Español",

View file

@ -188,7 +188,6 @@ fun ModalData.NetworkAndServersView(closeNetworkAndServers: () -> Unit) {
UsageConditionsView(
currUserServers,
userServers,
updated = conditionsAction is UsageConditionsAction.Review,
close,
rhId
)
@ -712,7 +711,6 @@ private fun UnsavedChangesIndicator() {
fun UsageConditionsView(
currUserServers: MutableState<List<UserOperatorServers>>,
userServers: MutableState<List<UserOperatorServers>>,
updated: Boolean,
close: () -> Unit,
rhId: Long?
) {
@ -773,17 +771,16 @@ fun UsageConditionsView(
}
ColumnWithScrollBar(modifier = Modifier.fillMaxSize().padding(horizontal = DEFAULT_PADDING)) {
val title = if (updated) MR.strings.operator_updated_conditions else MR.strings.operator_conditions_of_use
AppBarTitle(stringResource(title), enableAlphaChanges = false, withPadding = false, bottomPadding = DEFAULT_PADDING)
when (val conditionsAction = chatModel.conditions.value.conditionsAction) {
is UsageConditionsAction.Review -> {
AppBarTitle(stringResource(MR.strings.operator_updated_conditions), enableAlphaChanges = false, withPadding = false, bottomPadding = DEFAULT_PADDING)
if (conditionsAction.operators.isNotEmpty()) {
ReadableText(MR.strings.operators_conditions_will_be_accepted_for, args = conditionsAction.operators.joinToString(", ") { it.legalName_ })
}
Column(modifier = Modifier.weight(1f).padding(bottom = DEFAULT_PADDING, top = DEFAULT_PADDING_HALF)) {
ConditionsTextView(rhId)
}
AcceptConditionsButton(conditionsAction.operators.map { it.operatorId }, close, if (conditionsAction.deadline != null || updated) DEFAULT_PADDING_HALF else DEFAULT_PADDING * 2)
AcceptConditionsButton(conditionsAction.operators.map { it.operatorId }, close, DEFAULT_PADDING_HALF)
if (conditionsAction.deadline != null) {
SectionTextFooter(
text = AnnotatedString(String.format(generalGetString(MR.strings.operator_conditions_accepted_for_enabled_operators_on), localDate(conditionsAction.deadline))),
@ -791,13 +788,12 @@ fun UsageConditionsView(
)
Spacer(Modifier.fillMaxWidth().height(DEFAULT_PADDING))
}
if (updated) {
ConditionsDiffButton()
Spacer(Modifier.fillMaxWidth().height(DEFAULT_PADDING))
}
ConditionsDiffButton()
Spacer(Modifier.fillMaxWidth().height(DEFAULT_PADDING))
}
is UsageConditionsAction.Accepted -> {
AppBarTitle(stringResource(MR.strings.operator_conditions_of_use), enableAlphaChanges = false, withPadding = false, bottomPadding = DEFAULT_PADDING)
if (conditionsAction.operators.isNotEmpty()) {
ReadableText(MR.strings.operators_conditions_accepted_for, args = conditionsAction.operators.joinToString(", ") { it.legalName_ })
}
@ -807,6 +803,7 @@ fun UsageConditionsView(
}
else -> {
AppBarTitle(stringResource(MR.strings.operator_conditions_of_use), enableAlphaChanges = false, withPadding = false, bottomPadding = DEFAULT_PADDING)
Column(modifier = Modifier.weight(1f).padding(bottom = DEFAULT_PADDING, top = DEFAULT_PADDING_HALF)) {
ConditionsTextView(rhId)
}
@ -815,6 +812,18 @@ fun UsageConditionsView(
}
}
@Composable
fun SimpleConditionsView(
rhId: Long?
) {
ColumnWithScrollBar(modifier = Modifier.fillMaxSize().padding(horizontal = DEFAULT_PADDING)) {
AppBarTitle(stringResource(MR.strings.operator_conditions_of_use), enableAlphaChanges = false, withPadding = false, bottomPadding = DEFAULT_PADDING)
Column(modifier = Modifier.weight(1f).padding(bottom = DEFAULT_PADDING, top = DEFAULT_PADDING_HALF)) {
ConditionsTextView(rhId)
}
}
}
@Composable
fun ServersErrorFooter(errStr: String) {
Row(

View file

@ -1214,7 +1214,7 @@
<string name="contact_wants_to_connect_with_you">يريد الاتصال بك!</string>
<string name="your_ice_servers">خوادم ICE الخاصة بك</string>
<string name="your_privacy">خصوصيتك</string>
<string name="rcv_group_event_updated_group_profile">حدثت ملف تعريف المجموعة</string>
<string name="rcv_group_event_updated_group_profile">حُدثت ملف تعريف المجموعة</string>
<string name="group_info_member_you">أنت: %1$s</string>
<string name="update_network_settings_confirmation">تحديث</string>
<string name="update_network_settings_question">تحديث إعدادات الشبكة؟</string>
@ -2282,7 +2282,6 @@
<string name="report_reason_other">سبب آخر</string>
<string name="chat_list_group_reports">البلاغات</string>
<string name="group_reports_active_one">1 بلاغ</string>
<string name="group_reports_archived_member_reports">بلاغات الأعضاء المؤرشفة</string>
<string name="group_reports_active">%d بلاغات</string>
<string name="group_reports_member_reports">بلاغات الأعضاء</string>
<string name="report_compose_reason_header_illegal">بلّغ عن المحتوى: سيراه مشرفو المجموعة فقط.</string>
@ -2348,4 +2347,18 @@
<string name="v6_3_faster_sending_messages">إرسال أسرع للرسائل.</string>
<string name="group_member_status_rejected">رُفض</string>
<string name="group_preview_rejected">رُفض</string>
<string name="error_reading_passphrase">خطأ في قراءة عبارة مرور قاعدة البيانات</string>
<string name="group_member_status_pending_approval_short">ينتظر</string>
<string name="operator_updated_conditions">حُدثت الشروط</string>
<string name="button_remove_members_question">إزالة الأعضاء؟</string>
<string name="block_members_desc">سيتم إخفاء جميع الرسائل الجديدة من هؤلاء الأعضاء!</string>
<string name="members_will_be_removed_from_chat_cannot_be_undone">سيتم إزالة الأعضاء من الدردشة - لا يمكن التراجع عن هذا!</string>
<string name="unblock_members_for_all_question">إلغاء حظر الأعضاء للجميع؟</string>
<string name="block_members_for_all_question">حظر الأعضاء للجميع؟</string>
<string name="unblock_members_desc">سيتم عرض رسائل من هؤلاء الأعضاء!</string>
<string name="restore_passphrase_can_not_be_read_enter_manually_desc">لا يمكن قراءة عبارة المرور في Keystore، يُرجى إدخالها يدويًا. قد يكون هذا قد حدث بعد تحديث النظام غير متوافق مع التطبيق. إذا لم يكن الأمر كذلك، فيُرجى التواصل مع المطورين.</string>
<string name="members_will_be_removed_from_group_cannot_be_undone">سيتم إزالة الأعضاء من المجموعة - لا يمكن التراجع عن هذا!</string>
<string name="feature_roles_moderators">المشرفين</string>
<string name="restore_passphrase_can_not_be_read_desc">لا يمكن قراءة عبارة المرور في Keystore. قد يكون هذا قد حدث بعد تحديث النظام غير متوافق مع التطبيق. إذا لم يكن الأمر كذلك، فيُرجى التواصل مع المطورين.</string>
<string name="group_member_status_pending_approval">موافقة الانتظار</string>
</resources>

View file

@ -460,7 +460,6 @@
<string name="group_reports_active_one">1 report</string>
<string name="group_reports_active">%d reports</string>
<string name="group_reports_member_reports">Member reports</string>
<string name="group_reports_archived_member_reports">Archived member reports</string>
<!-- ShareListView.kt -->
<string name="share_message">Share message…</string>
@ -1738,25 +1737,32 @@
<!-- GroupMemberInfoView.kt -->
<string name="button_remove_member_question">Remove member?</string>
<string name="button_remove_members_question">Remove members?</string>
<string name="button_remove_member">Remove member</string>
<string name="button_send_direct_message">Send direct message</string>
<string name="member_will_be_removed_from_group_cannot_be_undone">Member will be removed from group - this cannot be undone!</string>
<string name="members_will_be_removed_from_group_cannot_be_undone">Members will be removed from group - this cannot be undone!</string>
<string name="member_will_be_removed_from_chat_cannot_be_undone">Member will be removed from chat - this cannot be undone!</string>
<string name="members_will_be_removed_from_chat_cannot_be_undone">Members will be removed from chat - this cannot be undone!</string>
<string name="remove_member_confirmation">Remove</string>
<string name="remove_member_button">Remove member</string>
<string name="block_member_question">Block member?</string>
<string name="block_member_button">Block member</string>
<string name="block_member_confirmation">Block</string>
<string name="block_for_all_question">Block member for all?</string>
<string name="block_members_for_all_question">Block members for all?</string>
<string name="block_for_all">Block for all</string>
<string name="block_member_desc">All new messages from %s will be hidden!</string>
<string name="block_members_desc">All new messages from these members will be hidden!</string>
<string name="unblock_member_question">Unblock member?</string>
<string name="unblock_member_button">Unblock member</string>
<string name="unblock_member_confirmation">Unblock</string>
<string name="unblock_for_all_question">Unblock member for all?</string>
<string name="unblock_members_for_all_question">Unblock members for all?</string>
<string name="unblock_for_all">Unblock for all</string>
<string name="unblock_member_desc">Messages from %s will be shown!</string>
<string name="unblock_members_desc">Messages from these members will be shown!</string>
<string name="member_blocked_by_admin">Blocked by admin</string>
<string name="member_info_member_blocked">blocked</string>
<string name="member_info_member_disabled">disabled</string>
@ -2122,6 +2128,7 @@
<string name="feature_offered_item_with_param">offered %s: %2s</string>
<string name="feature_cancelled_item">cancelled %s</string>
<string name="feature_roles_all_members">all members</string>
<string name="feature_roles_moderators">moderators</string>
<string name="feature_roles_admins">admins</string>
<string name="feature_roles_owners">owners</string>
<string name="feature_enabled_for">Enabled for</string>

View file

@ -2269,7 +2269,6 @@
<string name="file_error_blocked">El fitxer està blocat per l\'operador del servidor:\n%1$s.</string>
<string name="report_reason_alert_title">Motiu de l\'informe?</string>
<string name="group_reports_active_one">1 informe</string>
<string name="group_reports_archived_member_reports">Informes de membres arxivats</string>
<string name="group_reports_active">%d informes</string>
<string name="group_reports_member_reports">Informes de membres</string>
<string name="chat_list_group_reports">Informes</string>

View file

@ -766,7 +766,7 @@
<string name="restore_database_alert_title">Obnovit zálohu databáze\?</string>
<string name="restore_database_alert_confirm">Obnovit</string>
<string name="database_restore_error">Chyba při obnovování databáze</string>
<string name="restore_passphrase_not_found_desc">Přístupová fráze nebyla v klíčence nalezena, zadejte jej prosím ručně. K této situaci mohlo dojít, pokud jste obnovili data aplikace pomocí zálohovacího nástroje. Pokud tomu tak není, obraťte se na vývojáře.</string>
<string name="restore_passphrase_not_found_desc">Přístupová fráze nebyla v klíčence nalezena, zadejte ji prosím ručně. K této situaci mohlo dojít, pokud jste obnovili data aplikace pomocí zálohovacího nástroje. Pokud tomu tak není, kontaktujte prosím vývojáře.</string>
<string name="you_can_start_chat_via_setting_or_by_restarting_the_app">Chat můžete spustit v Nastavení / Databáze nebo restartováním aplikace.</string>
<string name="group_invitation_item_description">pozvánka do skupiny %1$s</string>
<string name="you_are_invited_to_group_join_to_connect_with_group_members">Jste zváni do skupiny. Připojte se k členům skupiny.</string>
@ -2175,7 +2175,6 @@
<string name="error_updating_server_title">Chyba aktualizace serveru</string>
<string name="operator_server_alert_title">Operátor serveru</string>
<string name="v6_2_network_decentralization">Decentralizace sítě</string>
<string name="group_reports_archived_member_reports">Archivována hlášení členů</string>
<string name="archive_reports">Archivovat hlášení</string>
<string name="leave_chat_question">Opustit chat?</string>
<string name="address_settings">Nastavení adres</string>
@ -2354,4 +2353,10 @@
<string name="chat_database_exported_migrate">Můžete přenést exportovanou databázi.</string>
<string name="group_member_status_rejected">zamítnuto</string>
<string name="privacy_media_blur_radius_soft">Jemný</string>
<string name="error_reading_passphrase">Chyba čtení přístupové fráze databáze</string>
<string name="restore_passphrase_can_not_be_read_enter_manually_desc">Přístupová fráze v úlozišti klíčů nelze načíst, prosím zadejte ji ručně. To se může stát po aktualizaci systému nekompatibilní s aplikací. Pokud to tak není, kontaktujte prosím vývojáře.</string>
<string name="restore_passphrase_can_not_be_read_desc">Přístupovou frázi v ůložišti klíčů nelze načíst. Mohlo se to stát po aktualizaci systému nekompatibilní s aplikací. Pokud to není váš případ, kontaktujte prosím vývojáře.</string>
<string name="operator_updated_conditions">Aktualizované podmínky</string>
<string name="group_member_status_pending_approval">čekám na schválení</string>
<string name="group_member_status_pending_approval_short">čekám</string>
</resources>

View file

@ -661,7 +661,7 @@
<string name="restore_database_alert_desc">Bitte geben Sie das vorherige Passwort ein, nachdem Sie die Datenbanksicherung wiederhergestellt haben. Diese Aktion kann nicht rückgängig gemacht werden!</string>
<string name="restore_database_alert_confirm">Wiederherstellen</string>
<string name="database_restore_error">Fehler bei der Wiederherstellung der Datenbank</string>
<string name="restore_passphrase_not_found_desc">Das Passwort wurde nicht im Schlüsselbund gefunden. Bitte geben Sie es manuell ein. Das kann passieren, wenn Sie die App-Daten mit einem Backup-Programm wieder hergestellt haben. Bitte nehmen Sie Kontakt mit den Entwicklern auf, wenn das nicht der Fall ist.</string>
<string name="restore_passphrase_not_found_desc">Das Passwort wurde nicht im Schlüsselbund gefunden. Bitte geben Sie es manuell ein. Dies kann passieren, wenn Sie die App-Daten mit einem Backup-Programm wieder hergestellt haben. Wenden Sie sich bitte an die Entwickler, wenn dies nicht der Fall ist.</string>
<!-- ChatModel.chatRunning interactions -->
<string name="chat_is_stopped_indication">Der Chat wurde beendet</string>
<string name="you_can_start_chat_via_setting_or_by_restarting_the_app">Sie können den Chat über die App-Einstellungen/Datenbank oder durch Neustart der App starten.</string>
@ -1483,7 +1483,7 @@
<string name="connect_plan_you_are_already_in_group_vName"><![CDATA[Sie sind bereits Mitglied in der Gruppe <b>%1$s</b>.]]></string>
<string name="connect_plan_this_is_your_own_simplex_address">Das ist Ihre eigene SimpleX-Adresse!</string>
<string name="correct_name_to">Richtiger Name für %s?</string>
<string name="delete_messages__question">%d Nachrichten löschen?</string>
<string name="delete_messages__question">Sollen %d Nachrichten gelöscht werden?</string>
<string name="connect_with_contact_name_question">Mit %1$s verbinden?</string>
<string name="remove_member_button">Mitglied entfernen</string>
<string name="block_member_confirmation">Blockieren</string>
@ -1652,8 +1652,8 @@
<string name="v5_5_private_notes">Private Notizen</string>
<string name="clear_note_folder_warning">Es werden alle Nachrichten gelöscht. Dies kann nicht rückgängig gemacht werden!</string>
<string name="clear_note_folder_question">Private Notizen entfernen?</string>
<string name="rcv_group_event_member_blocked">%s wurde blockiert</string>
<string name="rcv_group_event_member_unblocked">%s wurde freigegeben</string>
<string name="rcv_group_event_member_blocked">es wurde %s blockiert</string>
<string name="rcv_group_event_member_unblocked">Es wurden %s freigegeben</string>
<string name="snd_group_event_member_blocked">Sie haben %s blockiert</string>
<string name="snd_group_event_member_unblocked">Sie haben %s freigegeben</string>
<string name="block_for_all_question">Mitglied für Alle blockieren?</string>
@ -2089,10 +2089,10 @@
<string name="toolbar_settings">Einstellungen</string>
<string name="moderate_messages_will_be_deleted_warning">Die Nachrichten werden für alle Gruppenmitglieder gelöscht.</string>
<string name="moderate_messages_will_be_marked_warning">Die Nachrichten werden für alle Mitglieder als moderiert markiert.</string>
<string name="delete_members_messages__question">%d Nachrichten der Mitglieder löschen?</string>
<string name="delete_members_messages__question">Sollen %d Nachrichten von Mitgliedern gelöscht werden?</string>
<string name="compose_message_placeholder">Nachricht</string>
<string name="delete_messages_mark_deleted_warning">Nachrichten werden zur Löschung markiert. Der/Die Empfänger hat/haben die Möglichkeit, diese Nachrichten aufzudecken.</string>
<string name="selected_chat_items_selected_n">%d ausgewählt</string>
<string name="selected_chat_items_selected_n">Es wurden %d ausgewählt</string>
<string name="selected_chat_items_nothing_selected">Es wurde Nichts ausgewählt</string>
<string name="select_verb">Auswählen</string>
<string name="invite_friends_short">Einladen</string>
@ -2154,7 +2154,7 @@
<string name="forward_files_messages_deleted_after_selection_desc">Die Nachrichten wurden gelöscht, nachdem Sie sie ausgewählt hatten.</string>
<string name="forward_alert_title_nothing_to_forward">Es gibt nichts zum Weiterleiten!</string>
<string name="n_other_file_errors">%1$d andere(r) Datei-Fehler.</string>
<string name="forward_alert_title_messages_to_forward">%1$s Nachricht(en) weiterleiten?</string>
<string name="forward_alert_title_messages_to_forward">Soll(en) %1$s Nachricht(en) weitergeleitet werden?</string>
<string name="forward_files_missing_desc">%1$d Datei(en) wurde(n) gelöscht.</string>
<string name="forward_files_not_accepted_desc">%1$d Datei(en) wurde(n) nicht heruntergeladen.</string>
<string name="forward_alert_forward_messages_without_files">Nachrichten ohne Dateien weiterleiten?</string>
@ -2382,7 +2382,6 @@
<string name="group_reports_active">%d Meldungen</string>
<string name="group_reports_member_reports">Mitglieder-Meldungen</string>
<string name="chat_list_group_reports">Meldungen</string>
<string name="group_reports_archived_member_reports">Archivierte Mitglieder-Meldungen</string>
<string name="blocking_reason_content">Inhalt verletzt Nutzungsbedingungen</string>
<string name="blocking_reason_spam">Spam</string>
<string name="connection_error_blocked">Verbindung blockiert</string>
@ -2434,4 +2433,18 @@
<string name="v6_3_organize_chat_lists_descr">Verpassen Sie keine wichtigen Nachrichten.</string>
<string name="v6_3_organize_chat_lists">Chats in Listen verwalten</string>
<string name="group_member_status_rejected">abgelehnt</string>
<string name="restore_passphrase_can_not_be_read_desc">Das Passwort kann nicht aus dem Schlüsselbund gelesen werden. Dies kann nach einer Systemaktualisierung passiert sein, die nicht mit der App kompatibel war. Wenden Sie sich bitte an die Entwickler, wenn dies nicht der Fall ist.</string>
<string name="group_member_status_pending_approval_short">ausstehend</string>
<string name="error_reading_passphrase">Fehler beim Lesen des Datenbank-Passworts</string>
<string name="operator_updated_conditions">Aktualisierte Nutzungsbedingungen</string>
<string name="group_member_status_pending_approval">ausstehende Genehmigung</string>
<string name="restore_passphrase_can_not_be_read_enter_manually_desc">Das Passwort kann nicht aus dem Schlüsselbund gelesen werden. Bitte geben Sie es manuell ein. Dies kann nach einer Systemaktualisierung passiert sein, die nicht mit der App kompatibel war. Wenden Sie sich bitte an die Entwickler, wenn dies nicht der Fall ist.</string>
<string name="button_remove_members_question">Mitglieder entfernen?</string>
<string name="members_will_be_removed_from_chat_cannot_be_undone">Mitglieder werden aus dem Chat entfernt. Dies kann nicht rückgängig gemacht werden!</string>
<string name="members_will_be_removed_from_group_cannot_be_undone">Mitglieder werden aus der Gruppe entfernt. Dies kann nicht rückgängig gemacht werden!</string>
<string name="unblock_members_for_all_question">Mitglieder für Alle freigeben?</string>
<string name="unblock_members_desc">Nachrichten dieser Mitglieder werden angezeigt!</string>
<string name="feature_roles_moderators">Moderatoren</string>
<string name="block_members_for_all_question">Mitglieder für Alle blockieren?</string>
<string name="block_members_desc">Alle neuen Nachrichten dieser Mitglieder werden nicht angezeigt!</string>
</resources>

View file

@ -72,7 +72,7 @@
<string name="smp_servers_add_to_another_device">Añadir a otro dispositivo</string>
<string name="app_version_name">Versión de la aplicación: v%s</string>
<string name="icon_descr_asked_to_receive">Solicita recibir la imagen</string>
<string name="impossible_to_recover_passphrase"><![CDATA[<b>Recuerda</b>: NO podrás recuperar o cambiar la frase de contraseña si la pierdes.]]></string>
<string name="impossible_to_recover_passphrase"><![CDATA[<b>Recuerda</b>: Si la pierdes NO podrás recuperar o cambiar la frase de contraseña.]]></string>
<string name="both_you_and_your_contact_can_send_voice">Tanto tú como tu contacto podéis enviar mensajes de voz.</string>
<string name="onboarding_notifications_mode_service_desc"><![CDATA[<b>¡Consume más energía!</b> La aplicación está siempre en segundo plano y las notificaciones se muestran de inmediato.]]></string>
<string name="both_you_and_your_contacts_can_delete">Tanto tú como tu contacto podéis eliminar los mensajes enviados de forma irreversible. (24 horas)</string>
@ -129,7 +129,7 @@
<string name="ttl_week">%d semana</string>
<string name="ttl_weeks">%d semanas</string>
<string name="v4_4_disappearing_messages">Mensajes temporales</string>
<string name="auth_confirm_credential">Canfirma tus credenciales</string>
<string name="auth_confirm_credential">Confirma tus credenciales</string>
<string name="group_member_status_introduced">conectando (presentado)</string>
<string name="group_member_status_intro_invitation">conectando (invitación de presentación )</string>
<string name="group_member_status_accepted">conectando (aceptado)</string>
@ -680,7 +680,7 @@
<string name="open_chat">Abrir chat</string>
<string name="restore_database">Restaurar copia de seguridad de la base de datos</string>
<string name="save_passphrase_and_open_chat">Guardar contraseña y abrir el chat</string>
<string name="restore_passphrase_not_found_desc">La contraseña no se ha encontrado en Keystore, introdúcela manualmente. Esto puede haber ocurrido si has restaurado los datos de la aplicación con una herramienta de copia de seguridad. Si no es así, por favor ponte en contacto con los desarrolladores.</string>
<string name="restore_passphrase_not_found_desc">La frase de contraseña no se ha encontrado en Keystore. Por favor, introdúcela manualmente. Puede deberse a que hayas restaurado los datos de la aplicación mediante alguna herramienta para copias de seguridad. Si no es así, por favor, ponte en contacto con los desarrolladores.</string>
<string name="remove_member_confirmation">Expulsar</string>
<string name="button_remove_member">Expulsar miembro</string>
<string name="button_send_direct_message">Enviar mensaje directo</string>
@ -2304,7 +2304,6 @@
<string name="archive_verb">Archivar</string>
<string name="archive_report">Archivar informe</string>
<string name="group_reports_member_reports">Informes de miembro</string>
<string name="group_reports_archived_member_reports">Informes de miembros archivados</string>
<string name="group_reports_active">%d informes</string>
<string name="report_compose_reason_header_profile">Informar del perfil de un miembro: sólo los moderadores del grupo lo verán.</string>
<string name="report_reason_other">Otro motivo</string>
@ -2347,18 +2346,32 @@
<string name="member_reports_are_prohibited">No se permite informar de mensajes en este grupo.</string>
<string name="report_archive_alert_desc_all">Todos los informes serán archivados para ti.</string>
<string name="report_archive_alert_title_all">¿Archivar todos los informes?</string>
<string name="v6_3_mentions_descr">Las menciones ahora notifican.</string>
<string name="v6_3_mentions">Mencionar miembros 👋</string>
<string name="v6_3_mentions_descr">Las menciones ahora se notifican.</string>
<string name="v6_3_mentions">Menciona a miembros 👋</string>
<string name="v6_3_organize_chat_lists_descr">No pierdas los mensajes importantes.</string>
<string name="v6_3_organize_chat_lists">Organiza los chats en listas</string>
<string name="v6_3_private_media_file_names">Nombres privados de archivos de media.</string>
<string name="v6_3_organize_chat_lists">Organiza tus chats en listas</string>
<string name="v6_3_private_media_file_names">Nombres privados en archivos de media.</string>
<string name="v6_3_faster_deletion_of_groups">Eliminación más rápida de grupos.</string>
<string name="v6_3_faster_sending_messages">Envío más rápido de mensajes.</string>
<string name="v6_3_reports_descr">Ayuda a los admins moderar sus grupos.</string>
<string name="v6_3_better_groups_performance">Mejor rendimiento de los grupos</string>
<string name="v6_3_better_privacy_and_security">Mejor privacidad y seguridad</string>
<string name="v6_3_reports_descr">Ayuda a los admins a moderar sus grupos.</string>
<string name="v6_3_better_groups_performance">Rendimiento de grupos mejorado</string>
<string name="v6_3_better_privacy_and_security">Privacidad y seguridad mejoradas</string>
<string name="v6_3_reports">Envía informes privados</string>
<string name="v6_3_set_message_expiration_in_chats">Establece vencimiento de los mensajes en chats.</string>
<string name="v6_3_set_message_expiration_in_chats">Establece el vencimiento para los mensajes en los chats.</string>
<string name="group_preview_rejected">rechazado</string>
<string name="group_member_status_rejected">rechazado</string>
<string name="button_remove_members_question">¿Expulsar miembros?</string>
<string name="unblock_members_desc">¡Los mensajes de estos miembros serán mostrados!</string>
<string name="unblock_members_for_all_question">¿Desbloquear miembros para todos?</string>
<string name="block_members_desc">¡Todos los mensajes nuevos de estos miembros estarán ocultos!</string>
<string name="block_members_for_all_question">¿Bloquear miembros para todos?</string>
<string name="members_will_be_removed_from_chat_cannot_be_undone">Los miembros serán expulsados del chat. ¡No podrá deshacerse!</string>
<string name="operator_updated_conditions">Condiciones actualizadas</string>
<string name="feature_roles_moderators">moderadores</string>
<string name="members_will_be_removed_from_group_cannot_be_undone">Los miembros serán expulsados del grupo. ¡No podrá deshacerse!</string>
<string name="group_member_status_pending_approval">pendiente de aprobación</string>
<string name="group_member_status_pending_approval_short">pendiente</string>
<string name="error_reading_passphrase">Error al leer la frase de contraseña de la base de datos</string>
<string name="restore_passphrase_can_not_be_read_desc">La frase de contraseña no se ha podido leer en Keystore. Puede deberse a alguna actualización del sistema incompatible con la aplicación. Si no es así, por favor, ponte en contacto con los desarrolladores.</string>
<string name="restore_passphrase_can_not_be_read_enter_manually_desc">La frase de contraseña no se ha podido leer en Keystore. Por favor, introdúcela manualmente. Puede deberse a alguna actualización del sistema incompatible con la aplicación. Si no es así, por favor, ponte en contacto con los desarrolladores.</string>
</resources>

View file

@ -2124,7 +2124,6 @@
<string name="display_name_accepted_invitation">invitation acceptée</string>
<string name="archive_report">Archiver le signalement</string>
<string name="privacy_chat_list_open_links_ask">Demander</string>
<string name="group_reports_archived_member_reports">Rapports du membre archivés</string>
<string name="add_to_list">Ajouter à la liste</string>
<string name="delete_chat_list_warning">Toutes les discussions seront supprimées de la liste %s, et la liste sera supprimée</string>
<string name="button_add_team_members">Ajouter des membres à l\'équipe</string>

View file

@ -10,7 +10,7 @@
<string name="send_disappearing_message_5_minutes">5 perc</string>
<string name="send_disappearing_message_1_minute">1 perc</string>
<string name="learn_more_about_address">A SimpleX-címről</string>
<string name="abort_switch_receiving_address_question">Cím módosításának megszakítása?</string>
<string name="abort_switch_receiving_address_question">Megszakítja a cím módosítását?</string>
<string name="abort_switch_receiving_address_confirm">Megszakítás</string>
<string name="send_disappearing_message_30_seconds">30 másodperc</string>
<string name="one_time_link_short">Egyszer használható meghívási hivatkozás</string>
@ -26,7 +26,7 @@
<string name="accept_call_on_lock_screen">Elfogadás</string>
<string name="above_then_preposition_continuation">gombra fent, majd:</string>
<string name="accept_contact_incognito_button">Elfogadás inkognitóban</string>
<string name="accept_connection_request__question">Kapcsolatkérés elfogadása?</string>
<string name="accept_connection_request__question">Elfogadja a kapcsolódási kérést?</string>
<string name="accept_contact_button">Elfogadás</string>
<string name="accept">Elfogadás</string>
<string name="add_address_to_your_profile">Cím hozzáadása a profilhoz, hogy a partnerei megoszthassák másokkal. A profilfrissítés el lesz küldve az Ön partnerei számára.</string>
@ -113,7 +113,7 @@
<string name="bold_text">félkövér</string>
<string name="app_passcode_replaced_with_self_destruct">Az alkalmazás-jelkód helyettesítve lesz egy önmegsemmisítő-jelkóddal.</string>
<string name="v5_3_new_interface_languages_descr">Arab, bolgár, finn, héber, thai és ukrán köszönet a felhasználóknak és a Weblate-nek.</string>
<string name="allow_voice_messages_question">Hangüzenetek engedélyezése?</string>
<string name="allow_voice_messages_question">Engedélyezi a hangüzeneteket?</string>
<string name="always_use_relay">Mindig használjon továbbítókiszolgálót</string>
<string name="chat_preferences_always">mindig</string>
<string name="call_already_ended">A hívás már befejeződött!</string>
@ -129,7 +129,7 @@
<string name="onboarding_notifications_mode_off_desc"><![CDATA[<b>Legjobb akkumulátoridő</b>. Csak akkor kap értesítéseket, amikor az alkalmazás meg van nyitva. (NINCS háttérszolgáltatás.)]]></string>
<string name="appearance_settings">Megjelenés</string>
<string name="turning_off_service_and_periodic">Az akkumulátor-optimalizálás aktív, ez kikapcsolja a háttérszolgáltatást és az új üzenetek időszakos lekérdezését. A beállításokban újraengedélyezheti.</string>
<string name="block_member_question">Tag letiltása?</string>
<string name="block_member_question">Letiltja a tagot?</string>
<string name="callstatus_ended">%1$s hívása befejeződött</string>
<string name="onboarding_notifications_mode_periodic_desc"><![CDATA[<b>Jó akkumulátoridő</b>. Az alkalmazás 10 percenként ellenőrzi az új üzeneteket. Előfordulhat, hogy hívásokról, vagy a sürgős üzenetekről marad le.]]></string>
<string name="group_member_role_author">szerző</string>
@ -160,14 +160,14 @@
<string name="both_you_and_your_contact_can_add_message_reactions">Mindkét fél hozzáadhat az üzenetekhez reakciókat.</string>
<string name="both_you_and_your_contact_can_make_calls">Mindkét fél tud hívásokat kezdeményezni.</string>
<string name="la_auth_failed">Sikertelen hitelesítés</string>
<string name="block_member_desc">Az összes %s által írt új üzenet el lesz rejtve!</string>
<string name="block_member_desc">%s összes új üzenete el lesz rejtve!</string>
<string name="app_version_name">Az alkalmazás verziója: v%s</string>
<string name="allow_calls_only_if">A hívások kezdeményezése csak abban az esetben van engedélyezve, ha a partnere is engedélyezi.</string>
<string name="smp_servers_add">Kiszolgáló hozzáadása</string>
<string name="icon_descr_audio_on">Hang bekapcsolva</string>
<string name="audio_call_no_encryption">hanghívás (nem e2e titkosított)</string>
<string name="blocked_item_description">letiltva</string>
<string name="change_database_passphrase_question">Az adatbázis jelmondatának módosítása?</string>
<string name="change_database_passphrase_question">Módosítja az adatbázis jelmondatát?</string>
<string name="callstate_connected">kapcsolódva</string>
<string name="la_change_app_passcode">Jelkód módosítása</string>
<string name="rcv_group_event_changed_member_role">a következőre módosította %s szerepkörét: „%s”</string>
@ -175,7 +175,7 @@
<string name="change_verb">Módosítás</string>
<string name="confirm_passcode">Jelkód megerősítése</string>
<string name="confirm_password">Jelszó megerősítése</string>
<string name="change_member_role_question">Tag szerepkörének módosítása?</string>
<string name="change_member_role_question">Módosítja a tag szerepkörét?</string>
<string name="change_lock_mode">Zárolási mód módosítása</string>
<string name="notification_contact_connected">Kapcsolódott</string>
<string name="rcv_group_event_member_connected">kapcsolódott</string>
@ -191,7 +191,7 @@
<string name="change_self_destruct_mode">Önmegsemmisítő-mód módosítása</string>
<string name="rcv_group_event_changed_your_role">a következőre módosította az Ön szerepkörét: „%s”</string>
<string name="connect_button">Kapcsolódás</string>
<string name="connect_via_member_address_alert_title">Közvetlen kapcsolódás?</string>
<string name="connect_via_member_address_alert_title">Közvetlenül kapcsolódik?</string>
<string name="smp_server_test_connect">Kapcsolódás</string>
<string name="rcv_group_event_member_created_contact">közvetlenül kapcsolódott</string>
<string name="connection_local_display_name">kapcsolat %1$d</string>
@ -199,7 +199,7 @@
<string name="v5_4_incognito_groups_descr">Csoport létrehozása véletlenszerű profillal.</string>
<string name="delete_contact_all_messages_deleted_cannot_undo_warning">A partner és az összes üzenet törölve lesz ez a művelet nem vonható vissza!</string>
<string name="contacts_can_mark_messages_for_deletion">A partnerei törlésre jelölhetnek üzeneteket; Ön majd meg tudja nézni azokat.</string>
<string name="connect_via_invitation_link">Kapcsolódás egyszer használható meghívási hivatkozással?</string>
<string name="connect_via_invitation_link">Kapcsolódik az egyszer használható meghívási hivatkozással?</string>
<string name="connect_via_link_or_qr">Kapcsolódás egy hivatkozáson vagy QR-kódon keresztül</string>
<string name="connection_error_auth">Kapcsolódási hiba (AUTH)</string>
<string name="notification_preview_mode_contact">Csak név</string>
@ -207,18 +207,18 @@
<string name="create_address">Cím létrehozása</string>
<string name="copy_verb">Másolás</string>
<string name="continue_to_next_step">Folytatás</string>
<string name="connect_plan_connect_via_link">Kapcsolódás egy hivatkozáson keresztül?</string>
<string name="connect_plan_connect_via_link">Kapcsolódik egy hivatkozáson keresztül?</string>
<string name="contact_already_exists">A partner már létezik</string>
<string name="core_version">Fő verzió: v%s</string>
<string name="icon_descr_contact_checked">Partner ellenőrizve</string>
<string name="connect_plan_connect_to_yourself">Kapcsolódás saját magához?</string>
<string name="connect_plan_connect_to_yourself">Kapcsolódik saját magához?</string>
<string name="copied">Kimásolva a vágólapra</string>
<string name="connection_request_sent">Kapcsolatkérés elküldve!</string>
<string name="connecting_to_desktop">Kapcsolódás a számítógéphez</string>
<string name="network_session_mode_entity">Kapcsolat</string>
<string name="correct_name_to">Név helyesbítése a következőre: %s?</string>
<string name="correct_name_to">Helyesbíti a nevet a következőre: %s?</string>
<string name="connection_timeout">Időtúllépés kapcsolódáskor</string>
<string name="connect_with_contact_name_question">Kapcsolódás a következővel: %1$s?</string>
<string name="connect_with_contact_name_question">Kapcsolódik vele: %1$s?</string>
<string name="create_profile_button">Létrehozás</string>
<string name="contact_preferences">Partnerbeállítások</string>
<string name="info_row_connection">Kapcsolat</string>
@ -238,7 +238,7 @@
<string name="group_member_status_intro_invitation">kapcsolódás (bemutatkozó meghívó)</string>
<string name="create_simplex_address">SimpleX-cím létrehozása</string>
<string name="rcv_direct_event_contact_deleted">törölt partner</string>
<string name="delete_member_message__question">Csoporttag üzenetének törlése?</string>
<string name="delete_member_message__question">Törli a tag üzenetét?</string>
<string name="chat_is_running">A csevegés fut</string>
<string name="share_one_time_link">Egyszer használható meghívási hivatkozás létrehozása</string>
<string name="delete_link">Törlés</string>
@ -279,7 +279,7 @@
<string name="chat_is_stopped">A csevegés megállt</string>
<string name="item_info_current">(jelenlegi)</string>
<string name="v5_1_custom_themes_descr">Témák személyre szabása és megosztása.</string>
<string name="delete_chat_profile_question">Csevegési profil törlése?</string>
<string name="delete_chat_profile_question">Törli a csevegési profilt?</string>
<string name="create_group">Titkos csoport létrehozása</string>
<string name="connected_to_desktop">Kapcsolódva a számítógéphez</string>
<string name="configure_ICE_servers">ICE-kiszolgálók beállítása</string>
@ -288,17 +288,17 @@
<string name="group_member_status_creator">készítő</string>
<string name="confirm_verb">Megerősítés</string>
<string name="for_me_only">Csak számomra</string>
<string name="delete_messages__question">%d üzenet törlése?</string>
<string name="delete_messages__question">Töröl %d üzenetet?</string>
<string name="v5_1_custom_themes">Egyéni témák</string>
<string name="group_member_status_accepted">kapcsolódás (elfogadva)</string>
<string name="smp_servers_check_address">Kiszolgáló címének ellenőrzése és újrapróbálkozás.</string>
<string name="delete_group_question">Csoport törlése?</string>
<string name="delete_group_question">Törli a csoportot?</string>
<string name="confirm_database_upgrades">Adatbázis fejlesztésének megerősítése</string>
<string name="create_your_profile">Saját profil létrehozása</string>
<string name="snd_conn_event_switch_queue_phase_changing">cím módosítása…</string>
<string name="display_name_connecting">kapcsolódás…</string>
<string name="icon_descr_call_connecting">Hívás kapcsolása</string>
<string name="delete_files_and_media_question">A fájlok- és a médiatartalmak törlése?</string>
<string name="delete_files_and_media_question">Törli a fájl- és a médiatartalmakat?</string>
<string name="group_member_status_complete">befejezett</string>
<string name="chat_database_section">CSEVEGÉSI ADATBÁZIS</string>
<string name="change_self_destruct_passcode">Önmegsemmisítő-jelkód módosítása</string>
@ -307,9 +307,9 @@
<string name="callstate_connecting">kapcsolódás…</string>
<string name="dark_theme">Sötét téma</string>
<string name="deleted_description">törölve</string>
<string name="users_delete_question">Csevegési profil törlése?</string>
<string name="users_delete_question">Törli a csevegési profilt?</string>
<string name="chat_with_developers">Csevegés a fejlesztőkkel</string>
<string name="delete_link_question">Hivatkozás törlése?</string>
<string name="delete_link_question">Törli a hivatkozást?</string>
<string name="server_connecting">kapcsolódás</string>
<string name="send_disappearing_message_custom_time">Egyéni időköz</string>
<string name="connect_via_link_incognito">Kapcsolódás inkognitóban</string>
@ -318,7 +318,7 @@
<string name="group_member_status_announced">kapcsolódás (bejelentve)</string>
<string name="contact_connection_pending">kapcsolódás…</string>
<string name="chat_database_deleted">Csevegési adatbázis törölve</string>
<string name="group_member_status_introduced">kapcsolódás (bejelentve)</string>
<string name="group_member_status_introduced">kapcsolódás (bemutatkozva)</string>
<string name="create_group_link">Csoporthivatkozás létrehozása</string>
<string name="chat_console">Csevegési konzol</string>
<string name="delete_files_and_media_for_all_users">Fájlok törlése az összes csevegési profilból</string>
@ -332,16 +332,16 @@
<string name="smp_server_test_create_file">Fájl létrehozása</string>
<string name="create_secret_group_title">Tikos csoport létrehozása</string>
<string name="clear_contacts_selection_button">Elvetés</string>
<string name="delete_contact_question">Partner törlése?</string>
<string name="delete_contact_question">Törli a partnert?</string>
<string name="clear_verb">Kiürítés</string>
<string name="create_address_and_let_people_connect">Cím létrehozása, hogy az emberek kapcsolatba léphessenek Önnel.</string>
<string name="v4_4_verify_connection_security_desc">Biztonsági kódok összehasonlítása a partnerekével.</string>
<string name="smp_server_test_compare_file">Fájl-összehasonlítás</string>
<string name="your_chats">Csevegések</string>
<string name="delete_message__question">Üzenet törlése?</string>
<string name="delete_pending_connection__question">Függőben lévő partnerkérelem törlése?</string>
<string name="delete_message__question">Törli az üzenetet?</string>
<string name="delete_pending_connection__question">Törli a függőben lévő meghívót?</string>
<string name="database_encrypted">Adatbázis titkosítva!</string>
<string name="clear_chat_question">Üzenetek kiürítése?</string>
<string name="clear_chat_question">Kiüríti a csevegést?</string>
<string name="database_downgrade">Adatbázis visszafejlesztése</string>
<string name="clear_chat_button">Üzenetek kiürítése</string>
<string name="database_passphrase_will_be_updated">Az adatbázis titkosítási jelmondata frissítve lesz.</string>
@ -372,8 +372,8 @@
<string name="delete_verb">Törlés</string>
<string name="ttl_hours">%d óra</string>
<string name="ttl_months">%d hónap</string>
<string name="delete_address__question">Cím törlése?</string>
<string name="receipts_contacts_title_disable">Kézbesítési jelentések letiltása?</string>
<string name="delete_address__question">Törli a címet?</string>
<string name="receipts_contacts_title_disable">Letiltja a kézbesítési jelentéseket?</string>
<string name="passphrase_is_different">Az adatbázis-jelmondat eltér a Keystore-ban lévőtől.</string>
<string name="direct_messages">Közvetlen üzenetek</string>
<string name="icon_descr_email">E-mail</string>
@ -404,7 +404,7 @@
<string name="direct_messages_are_prohibited_in_group">A közvetlen üzenetek küldése a tagok között le van tiltva ebben a csoportban.</string>
<string name="ttl_min">%d perc</string>
<string name="set_password_to_export_desc">Az adatbázis egy véletlenszerű jelmondattal van titkosítva. Exportálás előtt módosítsa.</string>
<string name="receipts_groups_title_disable">Kézbesítés jelentések letiltása a csoportok számára?</string>
<string name="receipts_groups_title_disable">Letiltja a kézbesítési jelentéseket a csoportok számára?</string>
<string name="custom_time_unit_days">nap</string>
<string name="ttl_day">%d nap</string>
<string name="failed_to_create_user_duplicate_title">Duplikált megjelenített név!</string>
@ -423,7 +423,7 @@
<string name="database_will_be_encrypted">Az adatbázis titkosítva lesz.</string>
<string name="database_passphrase_and_export">Adatbázis-jelmondat és -exportálás</string>
<string name="database_will_be_encrypted_and_passphrase_stored">Az adatbázis titkosítva lesz, a jelmondat pedig a Keystore-ban lesz tárolva.</string>
<string name="enable_automatic_deletion_question">Automatikus üzenet törlés engedélyezése?</string>
<string name="enable_automatic_deletion_question">Engedélyezi az automatikus üzenettörlést?</string>
<string name="delete_contact_menu_action">Törlés</string>
<string name="mtr_error_no_down_migration">az adatbázis verziója újabb, mint az alkalmazásé, de a visszafelé történő átköltöztetés viszont nem lehetséges a következőhöz: %s</string>
<string name="simplex_link_mode_description">Leírás</string>
@ -447,7 +447,7 @@
<string name="disappearing_prohibited_in_this_chat">Az eltűnő üzenetek küldése le van tiltva ebben a csevegésben.</string>
<string name="chat_preferences_default">alapértelmezett (%s)</string>
<string name="integrity_msg_duplicate">duplikált üzenet</string>
<string name="disconnect_desktop_question">Számítógép leválasztása?</string>
<string name="disconnect_desktop_question">Leválasztja a számítógépet?</string>
<string name="desktop_app_version_is_incompatible">A számítógép-alkalmazás verziója (%s) nem kompatibilis ezzel az alkalmazással.</string>
<string name="delivery">Kézbesítés</string>
<string name="total_files_count_and_size">%d fájl, %s összméretben</string>
@ -512,10 +512,10 @@
<string name="receipts_contacts_enable_keep_overrides">Engedélyezés (felülírások megtartásával)</string>
<string name="enter_correct_passphrase">Adja meg a helyes jelmondatot.</string>
<string name="delete_group_for_self_cannot_undo_warning">A csoport törölve lesz az Ön számára ez a művelet nem vonható vissza!</string>
<string name="encrypt_database_question">Adatbázis titkosítása?</string>
<string name="encrypt_database_question">Titkosítja az adatbázist?</string>
<string name="allow_accepting_calls_from_lock_screen">A zárolási képernyőn megjelenő hívások engedélyezése a Beállításokban.</string>
<string name="conn_event_ratchet_sync_agreed">titkosítás elfogadva</string>
<string name="receipts_contacts_title_enable">Kézbesítési jelentések engedélyezése?</string>
<string name="receipts_contacts_title_enable">Engedélyezi a kézbesítési jelentéseket?</string>
<string name="error_saving_group_profile">Hiba a csoportprofil mentésekor</string>
<string name="server_error">hiba</string>
<string name="revoke_file__message">A fájl törölve lesz a kiszolgálókról.</string>
@ -560,7 +560,7 @@
<string name="error_updating_link_for_group">Hiba a csoporthivatkozás frissítésekor</string>
<string name="group_member_status_group_deleted">a csoport törölve</string>
<string name="snd_group_event_group_profile_updated">csoportprofil frissítve</string>
<string name="error_deleting_pending_contact_connection">Hiba a függőben lévő partner kapcsolatának törlésekor</string>
<string name="error_deleting_pending_contact_connection">Hiba a függőben lévő meghívó törlésekor</string>
<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>
@ -584,7 +584,7 @@
<string name="error_receiving_file">Hiba a fájl fogadásakor</string>
<string name="conn_event_ratchet_sync_ok">titkosítás rendben</string>
<string name="error_deleting_contact_request">Hiba a kapcsolatkérés törlésekor</string>
<string name="receipts_groups_title_enable">Kézbesítési jelentések engedélyezése a csoportok számára?</string>
<string name="receipts_groups_title_enable">Engedélyezi a kézbesítési jelentéseket a csoportok számára?</string>
<string name="fix_connection_not_supported_by_contact">Partner á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>
@ -652,7 +652,7 @@
<string name="import_database_confirmation">Importálás</string>
<string name="icon_descr_instant_notifications">Azonnali értesítések</string>
<string name="settings_section_title_incognito">Inkognitómód</string>
<string name="import_database_question">Csevegési adatbázis importálása?</string>
<string name="import_database_question">Importálja a csevegési adatbázist?</string>
<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>
@ -693,7 +693,7 @@
<string name="network_settings_title">Speciális beállítások</string>
<string name="no_info_on_delivery">Nincs kézbesítési információ</string>
<string name="moderated_description">moderált</string>
<string name="member_will_be_removed_from_group_cannot_be_undone">A tag eltávolítása a csoportból ez a művelet nem vonható vissza!</string>
<string name="member_will_be_removed_from_group_cannot_be_undone">A tag el lesz távolítva a csoportból ez a művelet nem vonható vissza!</string>
<string name="ensure_xftp_server_address_are_correct_format_and_unique">Győződjön meg arról, hogy a megadott XFTP-kiszolgálók címei megfelelő formátumúak, soronként elkülönítettek, és nincsenek duplikálva.</string>
<string name="no_contacts_selected">Nincs partner kijelölve</string>
<string name="no_received_app_files">Nincsenek fogadott vagy küldött fájlok</string>
@ -778,7 +778,7 @@
<string name="loading_remote_file_title">A fájl betöltése…</string>
<string name="no_contacts_to_add">Nincs hozzáadandó partner</string>
<string name="v4_5_message_draft">Üzenetvázlat</string>
<string name="display_name_invited_to_connect">meghívta, hogy csatlakozzon</string>
<string name="display_name_invited_to_connect">meghívta egy partnerét</string>
<string name="add_contact">Egyszer használható meghívási hivatkozás</string>
<string name="notifications">Értesítések</string>
<string name="images_limit_desc">Egyszerre csak 10 kép küldhető el</string>
@ -809,7 +809,7 @@
<string name="this_device_version"><![CDATA[<i>(ez az eszköz: v%s)</i>]]></string>
<string name="feature_offered_item">%s ajánlotta</string>
<string name="button_leave_group">Csoport elhagyása</string>
<string name="unblock_member_desc">Az összes %s által írt üzenet meg fog jelenni!</string>
<string name="unblock_member_desc">%s összes üzenete meg fog jelenni!</string>
<string name="alert_text_skipped_messages_it_can_happen_when">Ez akkor fordulhat elő, ha:\n1. Az üzenetek 2 nap után, vagy a kiszolgálón 30 nap után lejártak.\n2. Az üzenet visszafejtése sikertelen volt, mert Ön, vagy a partnere régebbi adatbázis biztonsági mentést használt.\n3. A kapcsolat sérült.</string>
<string name="group_member_role_observer">megfigyelő</string>
<string name="description_via_group_link_incognito">inkognitó a csoporthivatkozáson keresztül</string>
@ -830,7 +830,7 @@
<string name="mark_code_verified">Hitelesítés</string>
<string name="v5_2_message_delivery_receipts">Üzenetkézbesítési jelentések!</string>
<string name="image_descr_link_preview">hivatkozás előnézeti képe</string>
<string name="leave_group_question">Csoport elhagyása?</string>
<string name="leave_group_question">Elhagyja a csoportot?</string>
<string name="chat_preferences_no">nem</string>
<string name="v4_5_reduced_battery_usage_descr">Hamarosan további fejlesztések érkeznek!</string>
<string name="feature_off">kikapcsolva</string>
@ -871,7 +871,7 @@
<string name="callstatus_rejected">elutasított hívás</string>
<string name="onboarding_notifications_mode_periodic">Időszakos</string>
<string name="feature_received_prohibited">fogadott, tiltott</string>
<string name="connect_plan_repeat_connection_request">Kapcsolatkérés megismétlése?</string>
<string name="connect_plan_repeat_connection_request">Megismétli a kapcsolódási kérést?</string>
<string name="only_you_can_delete_messages">Véglegesen csak Ön törölhet üzeneteket (partnere csak törlésre jelölheti meg őket ). (24 óra)</string>
<string name="role_in_group">Szerepkör</string>
<string name="simplex_link_contact">SimpleX kapcsolattartási cím</string>
@ -950,7 +950,7 @@
<string name="star_on_github">Csillagozás a GitHubon</string>
<string name="remove_member_confirmation">Eltávolítás</string>
<string name="search_verb">Keresés</string>
<string name="sync_connection_force_question">Titkosítás újraegyeztetése?</string>
<string name="sync_connection_force_question">Újraegyezteti a titkosítást?</string>
<string name="self_destruct_passcode_enabled">Az önmegsemmisítő-jelkód engedélyezve!</string>
<string name="v4_2_security_assessment">Biztonsági kiértékelés</string>
<string name="color_title">Cím</string>
@ -966,8 +966,8 @@
<string name="notification_preview_mode_message_desc">Partner nevének és az üzenet tartalmának megjelenítése</string>
<string name="settings_section_title_settings">BEÁLLÍTÁSOK</string>
<string name="save_profile_password">Profiljelszó mentése</string>
<string name="stop_snd_file__title">Fájlküldés megállítása?</string>
<string name="unlink_desktop_question">Számítógép leválasztása?</string>
<string name="stop_snd_file__title">Megállítja a fájlküldést?</string>
<string name="unlink_desktop_question">Leválasztja a számítógépet?</string>
<string name="voice_messages_prohibited">A hangüzenetek le vannak tiltva!</string>
<string name="compose_send_direct_message_to_connect">Közvetlen üzenet küldése a kapcsolódáshoz</string>
<string name="network_option_ping_count">PING-ek száma</string>
@ -998,7 +998,7 @@
<string name="share_address_with_contacts_question">Megosztja a címet a partnereivel?</string>
<string name="profile_password">Profiljelszó</string>
<string name="theme">Téma</string>
<string name="remove_passphrase_from_settings">Jelmondat eltávolítása a beállításokból?</string>
<string name="remove_passphrase_from_settings">Eltávolítja a jelmondatot a beállításokból?</string>
<string name="simplex_link_group">SimpleX-csoporthivatkozás</string>
<string name="icon_descr_waiting_for_image">Várakozás a képre</string>
<string name="self_destruct">Önmegsemmisítés</string>
@ -1021,7 +1021,7 @@
<string name="call_connection_peer_to_peer">egyenrangú</string>
<string name="run_chat_section">CSEVEGÉSI SZOLGÁLTATÁS INDÍTÁSA</string>
<string name="paste_the_link_you_received">Kapott hivatkozás beillesztése</string>
<string name="smp_save_servers_question">Kiszolgálók mentése?</string>
<string name="smp_save_servers_question">Menti a kiszolgálókat?</string>
<string name="v4_2_security_assessment_desc">A SimpleX Chat biztonsága a Trail of Bits által lett auditálva.</string>
<string name="rcv_group_event_updated_group_profile">frissítette a csoport profilját</string>
<string name="settings_section_title_support">SIMPLEX CHAT TÁMOGATÁSA</string>
@ -1040,7 +1040,7 @@
<string name="network_option_seconds_label">mp</string>
<string name="profile_update_will_be_sent_to_contacts">A profilfrissítés el lesz küldve az Ön partnerei számára.</string>
<string name="v5_3_simpler_incognito_mode">Egyszerűsített inkognitómód</string>
<string name="save_welcome_message_question">Üdvözlőüzenet mentése?</string>
<string name="save_welcome_message_question">Menti az üdvözlőüzenetet?</string>
<string name="restart_the_app_to_create_a_new_chat_profile">Új csevegési fiók létrehozásához indítsa újra az alkalmazást.</string>
<string name="toast_permission_denied">Engedély megtagadva!</string>
<string name="icon_descr_call_pending_sent">Függőben lévő hívás</string>
@ -1087,7 +1087,7 @@
<string name="your_XFTP_servers">Saját XFTP-kiszolgálók</string>
<string name="icon_descr_video_off">Videó kikapcsolva</string>
<string name="v4_5_private_filenames">Privát fájlnevek</string>
<string name="save_settings_question">Beállítások mentése?</string>
<string name="save_settings_question">Menti a beállításokat?</string>
<string name="la_mode_passcode">Jelkód</string>
<string name="unknown_error">Ismeretlen hiba</string>
<string name="smp_servers_your_server_address">Saját SMP-kiszolgálójának címe</string>
@ -1095,7 +1095,7 @@
<string name="remove_member_button">Eltávolítás</string>
<string name="set_database_passphrase">Adatbázis-jelmondat beállítása</string>
<string name="view_security_code">Biztonsági kód megtekintése</string>
<string name="unblock_member_question">Tag feloldása?</string>
<string name="unblock_member_question">Feloldja a tag letiltását?</string>
<string name="sender_may_have_deleted_the_connection_request">A küldő törölhette a kapcsolatkérést.</string>
<string name="wrong_passphrase">Érvénytelen adatbázis-jelmondat</string>
<string name="your_SMP_servers">Saját SMP-kiszolgálók</string>
@ -1113,18 +1113,18 @@
<string name="share_address">Cím megosztása</string>
<string name="smp_servers_scan_qr">A kiszolgáló QR-kódjának beolvasása</string>
<string name="stop_chat_confirmation">Megállítás</string>
<string name="stop_sharing_address">Címmegosztás megállítása?</string>
<string name="stop_sharing_address">Megállítja a címmegosztást?</string>
<string name="auth_open_chat_profiles">Csevegési profilok módosítása</string>
<string name="connect_plan_repeat_join_request">Csatlakozáskérés megismétlése?</string>
<string name="connect_plan_repeat_join_request">Megismétli a csatlakozási kérést?</string>
<string name="waiting_for_image">Várakozás a képre</string>
<string name="v4_3_voice_messages">Hangüzenetek</string>
<string name="button_remove_member_question">Biztosan eltávolítja?</string>
<string name="button_remove_member_question">Eltávolítja a tagot?</string>
<string name="verify_security_code">Biztonsági kód hitelesítése</string>
<string name="rcv_group_event_user_deleted">eltávolította Önt</string>
<string name="simplex_address">SimpleX-cím</string>
<string name="show_dev_options">Megjelenítés:</string>
<string name="callstate_received_answer">válasz fogadása…</string>
<string name="restore_database_alert_title">Adatbázismentés visszaállítása?</string>
<string name="restore_database_alert_title">Visszaállítja az adatbázismentést?</string>
<string name="simplex_service_notification_text">Üzenetek fogadása…</string>
<string name="rcv_group_event_2_members_connected">%s és %s kapcsolódott</string>
<string name="you_are_observer">Ön megfigyelő</string>
@ -1150,7 +1150,7 @@
<string name="icon_descr_received_msg_status_unread">olvasatlan</string>
<string name="icon_descr_server_status_pending">Függőben</string>
<string name="personal_welcome">Üdvözöljük %1$s!</string>
<string name="remove_passphrase_from_keychain">Jelmondat eltávolítása a Keystrore-ból?</string>
<string name="remove_passphrase_from_keychain">Eltávolítja a jelmondatot a Keystrore-ból?</string>
<string name="auth_unlock">Feloldás</string>
<string name="prohibit_sending_disappearing_messages">Az eltűnő üzenetek küldése le van tiltva.</string>
<string name="gallery_video_button">Videó</string>
@ -1186,7 +1186,7 @@
<string name="chat_help_tap_button">Koppintson a</string>
<string name="save_and_notify_contact">Mentés és a partner értesítése</string>
<string name="icon_descr_call_rejected">Elutasított hívás</string>
<string name="network_socks_proxy_settings">SOCKS-proxy beállítások</string>
<string name="network_socks_proxy_settings">SOCKS-proxybeállítások</string>
<string name="image_descr_qr_code">QR-kód</string>
<string name="renegotiate_encryption">Titkosítás újraegyeztetése</string>
<string name="remove_passphrase">Eltávolítás</string>
@ -1202,7 +1202,7 @@
<string name="stop_sharing">Megosztás megállítása</string>
<string name="snd_group_event_member_deleted">Ön eltávolította őt: %1$s</string>
<string name="save_passphrase_and_open_chat">Jelmondat mentése és a csevegés megnyitása</string>
<string name="save_preferences_question">Beállítások mentése?</string>
<string name="save_preferences_question">Menti a beállításokat?</string>
<string name="first_platform_without_user_ids">Nincsenek felhasználó-azonosítók.</string>
<string name="prohibit_direct_messages">A közvetlen üzenetek küldése a tagok között le van tiltva.</string>
<string name="network_enable_socks">SOCKS-proxy használata?</string>
@ -1210,7 +1210,7 @@
<string name="custom_time_unit_weeks">hét</string>
<string name="show_call_on_lock_screen">Megjelenítés</string>
<string name="webrtc_ice_servers">WebRTC ICE-kiszolgálók</string>
<string name="revoke_file__title">Fájl visszavonása?</string>
<string name="revoke_file__title">Visszavonja a fájlt?</string>
<string name="button_send_direct_message">Közvetlen üzenet küldése</string>
<string name="reject">Elutasítás</string>
<string name="send_verb">Küldés</string>
@ -1224,7 +1224,7 @@
<string name="unblock_member_confirmation">Feloldás</string>
<string name="unmute_chat">Némítás megszüntetése</string>
<string name="open_simplex_chat_to_accept_call">SimpleX Chat megnyitása a hívás fogadásához</string>
<string name="stop_rcv_file__title">Fájlfogadás megállítása?</string>
<string name="stop_rcv_file__title">Megállítja a fájlfogadást?</string>
<string name="v5_4_more_things_descr">- partnerek értesítése a törlésről (nem kötelező)\n- profilnevek szóközökkel\n- és még sok más!</string>
<string name="v5_0_polish_interface">Lengyel kezelőfelület</string>
<string name="smp_servers_use_server">Kiszolgáló használata</string>
@ -1251,7 +1251,7 @@
<string name="verify_connection">Kapcsolat hitelesítése</string>
<string name="whats_new_read_more">Tudjon meg többet</string>
<string name="sender_cancelled_file_transfer">A fájl küldője visszavonta az átvitelt.</string>
<string name="stop_chat_question">Csevegési szolgáltatás megállítása?</string>
<string name="stop_chat_question">Megállítja a csevegést?</string>
<string name="info_row_received_at">Fogadva</string>
<string name="accept_feature_set_1_day">Beállítva 1 nap</string>
<string name="user_unhide">Felfedés</string>
@ -1271,7 +1271,7 @@
<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">Az üzenetváltás jövője</string>
<string name="update_network_settings_question">Hálózati beállítások módosítása?</string>
<string name="update_network_settings_question">Módosítja a hálózati beállításokat?</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>
<string name="sending_files_not_yet_supported">fájlok küldése egyelőre még nem támogatott</string>
@ -1287,7 +1287,7 @@
<string name="description_via_contact_address_link">a kapcsolattartási címhivatkozá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 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">A partnereinek online kell lennie ahhoz, hogy a kapcsolat létrejöjjön.\nVisszavonhatja ezt a partnerkérelmet és eltávolíthatja a partnert (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ági mentési eszközzel. Ha nem így történt, akkor lépjen kapcsolatba a fejlesztőkkel.</string>
<string name="restore_passphrase_not_found_desc">A jelmondat 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ági mentési eszközzel. Ha nem így történt, akkor lépjen kapcsolatba a fejlesztőkkel.</string>
<string name="your_contacts_will_remain_connected">A partnerei továbbra is kapcsolódva maradnak.</string>
<string name="error_xftp_test_server_auth">A kiszolgálónak hitelesítésre van szüksége a feltöltéshez, ellenőrizze jelszavát</string>
<string name="database_initialization_error_desc">Az adatbázis nem működik megfelelően. Koppintson ide a további információkért</string>
@ -1310,7 +1310,7 @@
<string name="error_smp_test_certificate">Lehetséges, hogy a kiszolgáló címében szereplő tanúsítvány-ujjlenyomat helytelen</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">A biztonsága érdekében kapcsolja be a SimpleX-zár funkciót.\nA funkció bekapcsolása előtt a rendszer felszólítja a képernyőzár beállítására az eszközén.</string>
<string name="video_will_be_received_when_contact_is_online">A videó akkor érkezik meg, amikor a küldője elérhető lesz, várjon, vagy ellenőrizze később!</string>
<string name="network_error_desc">Ellenőrizze a hálózati kapcsolatát a következővel: %1$s, és próbálja újra.</string>
<string name="network_error_desc">Ellenőrizze a hálózati kapcsolatát vele: %1$s, és próbálja újra.</string>
<string name="you_can_turn_on_lock">A SimpleX-zár az „Adatvédelem és biztonság” menüben kapcsolható be.</string>
<string name="app_was_crashed">Az alkalmazás összeomlott</string>
<string name="please_check_correct_link_and_maybe_ask_for_a_new_one">Ellenőrizze, hogy a megfelelő hivatkozást használta-e, vagy kérje meg a partnerét, hogy küldjön egy másikat.</string>
@ -1364,11 +1364,11 @@
<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 a partneré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>
<string name="update_network_session_mode_question">Frissíti az átvitel-izoláció módját?</string>
<string name="network_session_mode_transport_isolation">Átvitel-izoláció</string>
<string name="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.</string>
<string name="database_is_not_encrypted">A csevegési adatbázis nem titkosított állítson be egy jelmondatot annak védelméhez.</string>
<string name="network_disable_socks">Közvetlen internet kapcsolat használata?</string>
<string name="network_disable_socks">Közvetlen internetkapcsolat használata?</string>
<string name="you_will_still_receive_calls_and_ntfs">Továbbra is kap hívásokat és értesítéseket a némított profiloktól, ha azok aktívak.</string>
<string name="group_main_profile_sent">A fő csevegési profilja el lesz küldve a csoporttagok számára</string>
<string name="you_can_enable_delivery_receipts_later_alert">Később engedélyezheti őket az „Adatvédelem és biztonság” menüben.</string>
@ -1412,7 +1412,7 @@
<string name="v4_6_group_welcome_message_descr">Megjelenítendő üzenet beállítása az új tagok számára!</string>
<string name="whats_new_thanks_to_users_contribute_weblate">Köszönet a felhasználóknak hozzájárulás a Weblate-en!</string>
<string name="sending_delivery_receipts_will_be_enabled">A kézbesítési jelentések küldése az összes partnere számára engedélyezve lesz.</string>
<string name="network_option_protocol_timeout_per_kb">Protokoll időtúllépése KB-onként</string>
<string name="network_option_protocol_timeout_per_kb">Protokoll időtúllépése kB-onként</string>
<string name="database_backup_can_be_restored">Az adatbázis jelmondatának módosítására tett kísérlet nem fejeződött be.</string>
<string name="enable_automatic_deletion_message">Ez a művelet nem vonható vissza a kijelöltnél korábban küldött és fogadott üzenetek törölve lesznek. Ez több percet is igénybe vehet.</string>
<string name="profile_is_only_shared_with_your_contacts">A profilja csak a partnereivel van megosztva.</string>
@ -1486,7 +1486,7 @@
<string name="code_you_scanned_is_not_simplex_link_qr_code">A beolvasott QR-kód nem egy SimpleX-QR-kód-hivatkozás.</string>
<string name="the_text_you_pasted_is_not_a_link">A beillesztett szöveg nem egy SimpleX-hivatkozás.</string>
<string name="you_can_view_invitation_link_again">A meghívási hivatkozást újra megtekintheti a kapcsolat részleteinél.</string>
<string name="start_chat_question">Csevegés indítása?</string>
<string name="start_chat_question">Elindítja a csevegést?</string>
<string name="recent_history">Látható előzmények</string>
<string name="la_app_passcode">Alkalmazás jelkód</string>
<string name="add_contact_tab">Partner hozzáadása</string>
@ -1502,7 +1502,7 @@
<string name="disable_sending_recent_history">Az előzmények ne legyenek elküldve az új tagok számára.</string>
<string name="or_show_this_qr_code">Vagy mutassa meg ezt a kódot</string>
<string name="enable_camera_access">Kamera hozzáférés engedélyezése</string>
<string name="keep_unused_invitation_question">Fel nem használt meghívó megtartása?</string>
<string name="keep_unused_invitation_question">Megtartja a fel nem használt meghívót?</string>
<string name="share_this_1_time_link">Ennek az egyszer használható meghívási hivatkozásnak a megosztása</string>
<string name="new_chat">Új csevegés</string>
<string name="loading_chats">A csevegések betöltése…</string>
@ -1555,7 +1555,7 @@
<string name="note_folder_local_display_name">Privát jegyzetek</string>
<string name="error_deleting_note_folder">Hiba a privát jegyzetek törlésekor</string>
<string name="error_creating_message">Hiba az üzenet létrehozásakor</string>
<string name="clear_note_folder_question">Privát jegyzetek kiürítése?</string>
<string name="clear_note_folder_question">Kiüríti a privát jegyzeteket?</string>
<string name="info_row_created_at">Létrehozva</string>
<string name="saved_message_title">Mentett üzenet</string>
<string name="share_text_created_at">Létrehozva: %s</string>
@ -1576,7 +1576,7 @@
<string name="member_blocked_by_admin">Letiltva az adminisztrátor által</string>
<string name="rcv_group_event_member_blocked">letiltotta őt: %s</string>
<string name="block_for_all">Letiltás</string>
<string name="block_for_all_question">Az összes tag számára letiltja ezt a tagot?</string>
<string name="block_for_all_question">Az összes tag számára letiltja a tagot?</string>
<string name="blocked_by_admin_items_description">%d üzenetet letiltott az adminisztrátor</string>
<string name="unblock_for_all">Feloldás</string>
<string name="unblock_for_all_question">Az összes tag számára feloldja a tag letiltását?</string>
@ -1677,7 +1677,7 @@
<string name="permissions_required">Engedélyek megadása</string>
<string name="network_type_ethernet">Vezetékes Ethernet</string>
<string name="network_type_cellular">Mobilhálózat</string>
<string name="settings_section_title_network_connection">Internetkapcsolat</string>
<string name="settings_section_title_network_connection">Hálózati kapcsolat</string>
<string name="network_type_no_network_connection">Nincs hálózati kapcsolat</string>
<string name="network_type_other">További</string>
<string name="network_type_network_wifi">Wi-Fi</string>
@ -1837,14 +1837,14 @@
<string name="servers_info_private_data_disclaimer">Statisztikagyűjtés kezdete: %s.\nAz összes adat privát módon van tárolva az Ön eszközén.</string>
<string name="servers_info_messages_sent">Elküldött üzenetek</string>
<string name="servers_info_proxied_servers_section_header">Proxyzott kiszolgálók</string>
<string name="servers_info_reconnect_servers_title">Újrakapcsolódás a kiszolgálókhoz?</string>
<string name="servers_info_reconnect_server_title">Újrakapcsolódás a kiszolgálóhoz?</string>
<string name="servers_info_reconnect_servers_title">Újrakapcsolódik a kiszolgálókhoz?</string>
<string name="servers_info_reconnect_server_title">Újrakapcsolódik a kiszolgálóhoz?</string>
<string name="servers_info_reconnect_server_error">Hiba a kiszolgálóhoz való újrakapcsolódáskor</string>
<string name="servers_info_reconnect_all_servers_button">Újrakapcsolódás az összes kiszolgálóhoz</string>
<string name="servers_info_reset_stats_alert_error_title">Hiba a statisztikák visszaállításakor</string>
<string name="servers_info_reset_stats_alert_confirm">Visszaállítás</string>
<string name="servers_info_reset_stats">Az összes statisztika visszaállítása</string>
<string name="servers_info_reset_stats_alert_title">Az összes statisztika visszaállítása?</string>
<string name="servers_info_reset_stats_alert_title">Visszaállítja az összes statisztikát?</string>
<string name="servers_info_reset_stats_alert_message">A kiszolgálók statisztikái visszaállnak ez a művelet nem vonható vissza!</string>
<string name="servers_info_detailed_statistics">Részletes statisztikák</string>
<string name="servers_info_downloaded">Letöltve</string>
@ -1958,7 +1958,7 @@
<string name="cant_call_contact_connecting_wait_alert_text">Kapcsolódás a partnerhez, várjon vagy ellenőrizze később!</string>
<string name="cant_call_contact_deleted_alert_text">Törölt partner.</string>
<string name="cant_call_member_alert_title">Nem lehet felhívni a csoporttagot</string>
<string name="allow_calls_question">Hívások engedélyezése?</string>
<string name="allow_calls_question">Engedélyezi a hívásokat?</string>
<string name="action_button_add_members">Meghívás</string>
<string name="info_view_message_button">üzenet</string>
<string name="keep_conversation">Beszélgetés megtartása</string>
@ -2019,7 +2019,7 @@
<string name="switching_profile_error_title">Hiba a profilváltáskor</string>
<string name="switching_profile_error_message">A kapcsolata át lett helyezve ide: %s, de egy váratlan hiba történt a profilra való átirányításkor.</string>
<string name="delete_messages_cannot_be_undone_warning">Az üzenetek törölve lesznek ez a művelet nem vonható vissza!</string>
<string name="migrate_from_device_remove_archive_question">Archívum eltávolítása?</string>
<string name="migrate_from_device_remove_archive_question">Eltávolítja az archívumot?</string>
<string name="migrate_from_device_uploaded_archive_will_be_removed">A feltöltött adatbázis-archívum véglegesen el lesz távolítva a kiszolgálókról.</string>
<string name="settings_section_title_chat_database">CSEVEGÉSI ADATBÁZIS</string>
<string name="new_chat_share_profile">Profil megosztása</string>
@ -2046,8 +2046,8 @@
<string name="forward_multiple">Üzenetek továbbítása…</string>
<string name="n_file_errors">%1$d fájlhiba:\n%2$s</string>
<string name="forward_files_messages_deleted_after_selection_title">%1$s üzenet nem lett továbbítva</string>
<string name="forward_alert_title_messages_to_forward">%1$s üzenet továbbítása?</string>
<string name="forward_alert_forward_messages_without_files">Üzenetek továbbítása fájlok nélkül?</string>
<string name="forward_alert_title_messages_to_forward">Továbbít %1$s üzenetet?</string>
<string name="forward_alert_forward_messages_without_files">Továbbítja az üzeneteket fájlok nélkül?</string>
<string name="forward_files_messages_deleted_after_selection_desc">Az üzeneteket törölték miután kijelölte őket.</string>
<string name="compose_save_messages_n">%1$s üzenet mentése</string>
<string name="error_forwarding_messages">Hiba az üzenetek továbbításakor</string>
@ -2107,10 +2107,10 @@
<string name="simplex_address_or_1_time_link">SimpleX-cím vagy egyszer használható meghívási hivatkozás?</string>
<string name="create_1_time_link">Egyszer használható meghívási hivatkozás létrehozá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">Hálózatüzemeltetők</string>
<string name="onboarding_network_operators_app_will_use_different_operators">Az alkalmazás úgy védi az adatait, hogy minden egyes beszélgetéshez más-más üzemeltetőt használ.</string>
<string name="onboarding_network_operators_app_will_use_for_routing">Például, ha az Ön partnere egy SimpleX Chat-kiszolgálón keresztül fogadja az üzeneteket, az Ön alkalmazása egy Flux-kiszolgálón keresztül fogja azokat kézbesíteni.</string>
<string name="onboarding_select_network_operators_to_use">Jelölje ki a használni kívánt hálózati üzemeltetőket.</string>
<string name="onboarding_select_network_operators_to_use">Jelölje ki a használni kívánt hálózatüzemeltetőket.</string>
<string name="onboarding_network_operators_review_later">Felülvizsgálat később</string>
<string name="onboarding_network_operators_configure_via_settings">A kiszolgálókat a „Hálózat és kiszolgálók” menüben konfigurálhatja.</string>
<string name="onboarding_network_operators_conditions_will_be_accepted">A feltételek 30 nap elteltével lesznek elfogadva az engedélyezett üzemeltetők számára.</string>
@ -2119,15 +2119,15 @@
<string name="onboarding_network_operators_continue">Folytatás</string>
<string name="operator_review_conditions">Feltételek felülvizsgálata</string>
<string name="operator_conditions_accepted">Elfogadott feltételek</string>
<string name="operator_conditions_accepted_for_enabled_operators_on">A feltételek automatikusan el lesznek fogadva az engedélyezett üzemeltetők számára: %s.</string>
<string name="your_servers">Az Ön kiszolgálói</string>
<string name="operator_conditions_accepted_for_enabled_operators_on">A feltételek automatikusan el lesznek fogadva az engedélyezett üzemeltetők számára a következő időpontban: %s.</string>
<string name="your_servers">Saját kiszolgálók</string>
<string name="operators_conditions_accepted_for"><![CDATA[A következő üzemeltető(k) számára elfogadott feltételek: <b>%s</b>.]]></string>
<string name="operators_conditions_will_be_accepted_for"><![CDATA[A feltételek el lesznek fogadva a következő üzemeltető(k) számára: <b>%s</b>.]]></string>
<string name="operator_servers_title">%s kiszolgáló</string>
<string name="operator_info_title">Hálózati üzemeltető</string>
<string name="operator_info_title">Hálózatüzemeltető</string>
<string name="operator_website">Weboldal</string>
<string name="operator_conditions_accepted_on">Feltételek elfogadva: %s.</string>
<string name="operator_conditions_will_be_accepted_on">A feltételek ekkor lesznek elfogadva: %s.</string>
<string name="operator_conditions_accepted_on">Feltételek elfogadásának ideje: %s.</string>
<string name="operator_conditions_will_be_accepted_on">A feltételek el lesznek elfogadva a következő időpontban: %s.</string>
<string name="operator_use_operator_toggle_description">Kiszolgálók használata</string>
<string name="use_servers_of_operator_x">%s használata</string>
<string name="operator_conditions_failed_to_load">A jelenlegi feltételek szövegét nem lehetett betölteni, a feltételeket a következő hivatkozáson keresztül vizsgálhatja felül:</string>
@ -2177,7 +2177,7 @@
<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="leave_chat_question">Elhagyja a csevegést?</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>
@ -2185,7 +2185,7 @@
<string name="button_add_team_members">Munkatársak hozzáadása</string>
<string name="delete_chat_for_all_members_cannot_undo_warning">A csevegés minden tag számára törölve lesz ez a művelet nem vonható vissza!</string>
<string name="delete_chat_for_self_cannot_undo_warning">A csevegés törölve lesz az Ön számára ez a művelet nem vonható vissza!</string>
<string name="delete_chat_question">Csevegés törlése?</string>
<string name="delete_chat_question">Törli a csevegést?</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 csevegési beállításokat.</string>
<string name="chat_bottom_bar">Könnyen elérhető csevegési eszköztár</string>
@ -2238,7 +2238,7 @@
<string name="save_list">Lista mentése</string>
<string name="delete_chat_list_warning">Az összes csevegés el lesz távolítva a következő listáról, és a lista is törlődik: %s</string>
<string name="delete_chat_list_menu_action">Törlés</string>
<string name="delete_chat_list_question">Lista törlése?</string>
<string name="delete_chat_list_question">Törli a listát?</string>
<string name="edit_chat_list_menu_action">Szerkesztés</string>
<string name="list_name_field_placeholder">Listanév…</string>
<string name="duplicated_list_error">Az összes lista nevének és emodzsijának különbözőnek kell lennie.</string>
@ -2251,7 +2251,7 @@
<string name="report_archive_alert_desc">A jelentés archiválva lesz az Ön számára.</string>
<string name="report_compose_reason_header_illegal">Tartalom jelentése: csak a csoport moderátorai látják.</string>
<string name="archive_verb">Archívum</string>
<string name="report_archive_alert_title">Jelentés archiválása?</string>
<string name="report_archive_alert_title">Archiválja a jelentést?</string>
<string name="report_item_archived">archivált jelentés</string>
<string name="group_member_role_moderator">moderátor</string>
<string name="report_reason_community">Közösségi irányelvek megsértése</string>
@ -2274,7 +2274,6 @@
<string name="chat_list_group_reports">Jelentések</string>
<string name="report_item_archived_by">%s által archivált jelentés</string>
<string name="group_reports_active">%d jelentés</string>
<string name="group_reports_archived_member_reports">Tagok archivált jelentései</string>
<string name="blocking_reason_spam">Kéretlen tartalom</string>
<string name="blocking_reason_content">A tartalom sérti a használati feltételeket</string>
<string name="connection_error_blocked">A kapcsolat le van tiltva</string>
@ -2285,15 +2284,15 @@
<string name="privacy_chat_list_open_web_link">Hivatkozás megnyitása</string>
<string name="privacy_chat_list_open_links">Hivatkozás megnyitása a csevegési listából</string>
<string name="privacy_chat_list_open_links_no">Nem</string>
<string name="privacy_chat_list_open_web_link_question">Webhivatkozás megnyitása?</string>
<string name="privacy_chat_list_open_web_link_question">Megnyitja a webhivatkozást?</string>
<string name="text_field_set_chat_placeholder">Csevegés nevének beállítása…</string>
<string name="disable_automatic_deletion_question">Automatikus üzenettörlés letiltása?</string>
<string name="disable_automatic_deletion_question">Letiltja az automatikus üzenettörlést?</string>
<string name="disable_automatic_deletion">Üzenetek törlésének letiltása</string>
<string name="disable_automatic_deletion_message">Az ebben a csevegésben lévő üzenetek soha nem lesznek törölve.</string>
<string name="chat_item_ttl_year">1 év</string>
<string name="chat_item_ttl_default">alapértelmezett (%s)</string>
<string name="chat_ttl_options_footer">Csevegési üzenetek törlése az Ön eszközéről.</string>
<string name="change_automatic_deletion_question">Automatikus üzenettörlés módosítása?</string>
<string name="change_automatic_deletion_question">Módosítja az automatikus üzenettörlést?</string>
<string name="change_automatic_chat_deletion_message">Ez a művelet nem vonható vissza a kijelölt üzenettől korábban küldött és fogadott üzenetek törölve lesznek a csevegésből.</string>
<string name="network_smp_web_port_footer">A következő TCP-port használata, amikor nincs port megadva: %1$s.</string>
<string name="network_smp_web_port_section_title">TCP-port az üzenetváltáshoz</string>
@ -2303,8 +2302,8 @@
<string name="max_group_mentions_per_message_reached">Legfeljebb %1$s tagot említhet meg egy üzenetben!</string>
<string name="enable_sending_member_reports">Az üzenetek jelentése a moderátorok felé engedélyezve van.</string>
<string name="disable_sending_member_reports">Az üzenetek a moderátorok felé történő jelentésének megtiltása.</string>
<string name="report_archive_alert_title_all">Az összes jelentés archiválása?</string>
<string name="report_archive_alert_title_nth">%d jelentés archiválása?</string>
<string name="report_archive_alert_title_all">Archiválja az összes jelentést?</string>
<string name="report_archive_alert_title_nth">Archivál %d jelentést?</string>
<string name="report_archive_for_me">Csak magamnak</string>
<string name="archive_reports">Jelentések archiválása</string>
<string name="report_archive_for_all_moderators">Az összes moderátor számára</string>
@ -2326,4 +2325,18 @@
<string name="v6_3_organize_chat_lists">Csevegések listákba szervezése</string>
<string name="group_preview_rejected">elutasítva</string>
<string name="group_member_status_rejected">elutasítva</string>
<string name="restore_passphrase_can_not_be_read_enter_manually_desc">A jelmondat nem olvasható a Keystore-ban, ezért kézzel szükséges megadni. Ez az alkalmazással nem kompatibilis rendszerfrissítés után történhetett meg. Ha nem így történt, akkor lépjen kapcsolatba a fejlesztőkkel.</string>
<string name="group_member_status_pending_approval_short">függőben</string>
<string name="group_member_status_pending_approval">jóváhagyásra vár</string>
<string name="error_reading_passphrase">Hiba az adatbázis-jelmondat olvasásakor</string>
<string name="restore_passphrase_can_not_be_read_desc">A jelmondat nem olvasható a Keystore-ban. Ez az alkalmazással nem kompatibilis rendszerfrissítés után történhetett meg. Ha nem így történt, akkor lépjen kapcsolatba a fejlesztőkkel.</string>
<string name="operator_updated_conditions">Frissített feltételek</string>
<string name="members_will_be_removed_from_group_cannot_be_undone">A tagok el lesznek távolítva a csoportból ez a művelet nem vonható vissza!</string>
<string name="button_remove_members_question">Eltávolítja a tagokat?</string>
<string name="block_members_for_all_question">Az összes tag számára letiltja ezeket a tagokat?</string>
<string name="members_will_be_removed_from_chat_cannot_be_undone">A tagok el lesznek távolítva a csevegésből ez a művelet nem vonható vissza!</string>
<string name="unblock_members_for_all_question">Az összes tag számára feloldja a tagok letiltását?</string>
<string name="block_members_desc">Ezen tagok összes új üzenete el lesz rejtve!</string>
<string name="unblock_members_desc">A tagok összes üzenete meg fog jelenni!</string>
<string name="feature_roles_moderators">moderátorok</string>
</resources>

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="m225.5-216-140-140 40-40.5 100 99 179-179L445-435 225.5-216Zm0-320-140-140 40-40.5 100 99 179-179L445-755 225.5-536ZM521-291.5V-349h354v57.5H521Zm0-320V-669h354v57.5H521Z"/></svg>

After

Width:  |  Height:  |  Size: 295 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M500-224Zm-335.5 57.5v-91q0-37.75 18.75-64.12Q202-348 231.68-361.67 298-391 358.5-406t121.28-15q37.97 0 74.55 6t74.17 17l-45.43 45q-26.57-5.5-51.47-8-24.89-2.5-51.36-2.5-56.74 0-109.74 11.5-53 11.5-116 42-14 7-23.25 21.73T222-257.26V-224h278v57.5H164.5Zm393 41.5v-121.5L778-466q9-8.5 19.75-12.5 10.76-4 21.51-4 11.73 0 22.49 4.25Q852.5-474 861.5-465l37 37q8.76 8.85 12.63 19.68Q915-397.5 915-386.75t-4.38 22.03q-4.38 11.28-13.05 19.74L679-125H557.5Zm299-262-37-37 37 37Zm-240 203h37.76L776.5-307l-17.89-19-18.88-18L616.5-222v38Zm142-142-19-18 37 37-18-19ZM480-480.5q-62 0-104.75-42.75T332.5-628q0-62 42.75-104.75T480-775.5q62 0 104.75 42.75T627.5-628q0 62-42.75 104.75T480-480.5Zm0-57.5q38 0 64-26t26-64q0-38-26-64t-64-26q-38 0-64 26t-26 64q0 38 26 64t64 26Zm0-90Z"/></svg>

After

Width:  |  Height:  |  Size: 889 B

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