Merge branch 'master' into chat-relays

This commit is contained in:
spaced4ndy
2026-03-30 12:33:20 +04:00
64 changed files with 3174 additions and 230 deletions
+120 -36
View File
@@ -335,6 +335,13 @@ struct ChatView: View {
if let openAround = chatModel.openAroundItemId, let index = mergedItems.boxedValue.indexInParentItems[openAround] {
scrollView.scrollToItem(index)
} else if let viewedIdx = mergedItems.boxedValue.items.firstIndex(where: { !$0.hasUnread() }) {
// scroll to first unread after last viewed item (items reversed: 0 = newest)
if viewedIdx > 0 {
scrollView.scrollToItem(viewedIdx - 1)
} else {
scrollView.scrollToBottom()
}
} else if let unreadIndex = mergedItems.boxedValue.items.lastIndex(where: { $0.hasUnread() }) {
scrollView.scrollToItem(unreadIndex)
} else {
@@ -518,32 +525,51 @@ struct ChatView: View {
case let .direct(contact):
HStack {
let callsPrefEnabled = contact.mergedPreferences.calls.enabled.forUser
let canStartCall = callsPrefEnabled && contact.ready && contact.active && chatModel.activeCall == nil
if let call = chatModel.activeCall, call.contact.id == cInfo.id {
endCallButton(call)
} else {
contentFilterMenu(withLabel: false)
}
Menu {
if callsPrefEnabled && chatModel.activeCall == nil {
} else if canStartCall {
// Call button always in toolbar; tap opens Audio/Video submenu
Menu {
Button {
CallController.shared.startCall(contact, .audio)
} label: {
Label("Audio call", systemImage: "phone")
}
.disabled(!contact.ready || !contact.active)
Button {
CallController.shared.startCall(contact, .video)
} label: {
Label("Video call", systemImage: "video")
}
.disabled(!contact.ready || !contact.active)
}
if let call = chatModel.activeCall, call.contact.id == cInfo.id {
contentFilterMenu(withLabel: true)
} label: {
Image(systemName: "phone")
}
} else if chatModel.activeCall == nil {
// Calls unavailable: show filter button in place of call button
contentFilterMenu(withLabel: false)
}
Menu {
searchButton()
ToggleNtfsButton(chat: chat)
.disabled(!contact.ready || !contact.active)
// Filter options in menu when call button is shown (or during any active call)
if !availableContent.isEmpty && (canStartCall || chatModel.activeCall != nil) {
Divider()
ForEach(availableContent, id: \.self) { type in
Button {
setContentFilter(type)
} label: {
Label(type.label, systemImage: contentFilter == type ? type.iconFilled : type.icon)
}
}
if contentFilter != nil {
Button {
closeSearch()
} label: {
Label("All messages", systemImage: "bubble.left.and.text.bubble.right")
}
}
}
} label: {
Image(systemName: "ellipsis")
}
@@ -576,7 +602,26 @@ struct ChatView: View {
}
case .local:
HStack {
contentFilterMenu(withLabel: false)
if !availableContent.isEmpty {
Menu {
ForEach(availableContent, id: \.self) { type in
Button {
setContentFilter(type)
} label: {
Label(type.label, systemImage: contentFilter == type ? type.iconFilled : type.icon)
}
}
if contentFilter != nil {
Button {
closeSearch()
} label: {
Label("All messages", systemImage: "bubble.left.and.text.bubble.right")
}
}
} label: {
Image(systemName: "ellipsis")
}
}
searchButton()
}
default:
@@ -869,6 +914,7 @@ struct ChatView: View {
selectedChatItems: $selectedChatItems,
forwardedChatItems: $forwardedChatItems,
searchText: $searchText,
contentFilter: $contentFilter,
closeKeyboardAndRun: closeKeyboardAndRun
)
}
@@ -1639,12 +1685,14 @@ struct ChatView: View {
@Binding var forwardedChatItems: [ChatItem]
@Binding var searchText: String
@Binding var contentFilter: ContentFilter?
var closeKeyboardAndRun: (@escaping () -> Void) -> Void
@State private var allowMenu: Bool = true
@State private var markedRead = false
@State private var markReadTask: Task<Void, Never>? = nil
@State private var actionSheet: SomeActionSheet? = nil
@State private var swipeOffset: CGFloat = 0
var revealed: Bool { revealedItems.contains(chatItem.id) }
@@ -1803,7 +1851,7 @@ struct ChatView: View {
private var searchIsNotBlank: Bool {
get {
searchText.count > 0 && !searchText.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty
(searchText.count > 0 && !searchText.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty) || contentFilter != nil
}
}
@@ -2053,33 +2101,69 @@ struct ChatView: View {
func chatItemWithMenu(_ ci: ChatItem, _ range: ClosedRange<Int>?, _ maxWidth: CGFloat, _ itemSeparation: ItemSeparation) -> some View {
let alignment: Alignment = ci.chatDir.sent ? .trailing : .leading
return VStack(alignment: alignment.horizontal, spacing: 3) {
HStack {
if ci.chatDir.sent {
goToItemButton(true)
let live = composeState.liveMessage != nil
let canReply = ci.meta.itemDeleted == nil && !ci.isLiveDummy && !live && !ci.localNote && selectedChatItems == nil
return ZStack(alignment: .trailing) {
Image(systemName: "arrowshape.turn.up.left")
.font(.system(size: 18))
.foregroundColor(.secondary)
.opacity(min(1, -swipeOffset / 30))
.offset(x: swipeOffset + 40)
VStack(alignment: alignment.horizontal, spacing: 3) {
HStack {
if ci.chatDir.sent {
goToItemButton(true)
}
ChatItemView(
chat: chat,
im: im,
chatItem: ci,
scrollToItem: scrollToItem,
scrollToItemId: $scrollToItemId,
maxWidth: maxWidth,
allowMenu: $allowMenu
)
.environment(\.revealed, revealed)
.environment(\.showTimestamp, itemSeparation.timestamp)
.modifier(ChatItemClipped(ci, tailVisible: itemSeparation.largeGap && (ci.meta.itemDeleted == nil || revealed)))
.contextMenu { menu(ci, range, live: live) }
.accessibilityLabel("")
if !ci.chatDir.sent {
goToItemButton(false)
}
}
ChatItemView(
chat: chat,
im: im,
chatItem: ci,
scrollToItem: scrollToItem,
scrollToItemId: $scrollToItemId,
maxWidth: maxWidth,
allowMenu: $allowMenu
)
.environment(\.revealed, revealed)
.environment(\.showTimestamp, itemSeparation.timestamp)
.modifier(ChatItemClipped(ci, tailVisible: itemSeparation.largeGap && (ci.meta.itemDeleted == nil || revealed)))
.contextMenu { menu(ci, range, live: composeState.liveMessage != nil) }
.accessibilityLabel("")
if !ci.chatDir.sent {
goToItemButton(false)
if ci.content.msgContent != nil && (ci.meta.itemDeleted == nil || revealed) && ci.reactions.count > 0 {
chatItemReactions(ci)
.padding(.bottom, 4)
}
}
if ci.content.msgContent != nil && (ci.meta.itemDeleted == nil || revealed) && ci.reactions.count > 0 {
chatItemReactions(ci)
.padding(.bottom, 4)
}
.offset(x: swipeOffset)
.contentShape(Rectangle())
.simultaneousGesture(
DragGesture(minimumDistance: 10)
.onChanged { value in
guard canReply else { return }
let x = value.translation.width
if x < 0 {
swipeOffset = max(x * 0.63, -56)
}
}
.onEnded { _ in
if swipeOffset < -42 {
withAnimation {
if composeState.editing {
composeState = ComposeState(contextItem: .quotedItem(chatItem: ci))
} else {
composeState = composeState.copy(contextItem: .quotedItem(chatItem: ci))
}
}
UIImpactFeedbackGenerator(style: .medium).impactOccurred()
}
withAnimation(.spring(response: 0.25)) {
swipeOffset = 0
}
}
)
}
.confirmationDialog("Delete message?", isPresented: $showDeleteMessage, titleVisibility: .visible) {
Button("Delete for me", role: .destructive) {
@@ -2021,6 +2021,10 @@ This is your own one-time link!</source>
<target>Грешка при свързване (AUTH)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection failed" xml:space="preserve">
<source>Connection failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection is blocked by server operator:&#10;%@" xml:space="preserve">
<source>Connection is blocked by server operator:
%@</source>
@@ -4195,6 +4199,10 @@ Error: %2$@</source>
<target>Ако въведете kодa за достъп за самоунищожение, докато отваряте приложението:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="If you joined or created channels, they will stop working permanently." xml:space="preserve">
<source>If you joined or created channels, they will stop working permanently.</source>
<note>down migration warning</note>
</trans-unit>
<trans-unit id="If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app)." xml:space="preserve">
<source>If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app).</source>
<target>Ако трябва да използвате чата сега, докоснете **Отложи** отдолу (ще ви бъде предложено да мигрирате базата данни, когато рестартирате приложението).</target>
@@ -9587,6 +9595,10 @@ pref value</note>
<source>expired</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="failed" xml:space="preserve">
<source>failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="forwarded" xml:space="preserve">
<source>forwarded</source>
<target>препратено</target>
@@ -1924,6 +1924,10 @@ Toto je váš vlastní jednorázový odkaz!</target>
<target>Chyba spojení (AUTH)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection failed" xml:space="preserve">
<source>Connection failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection is blocked by server operator:&#10;%@" xml:space="preserve">
<source>Connection is blocked by server operator:
%@</source>
@@ -3650,7 +3654,7 @@ snd error text</note>
</trans-unit>
<trans-unit id="Fingerprint in server address does not match certificate." xml:space="preserve">
<source>Fingerprint in server address does not match certificate.</source>
<target>Je možné, že otisk certifikátu v adrese serveru je nesprávný</target>
<target>Otisk certifikátu v adrese serveru neodpovídá.</target>
<note>server test error</note>
</trans-unit>
<trans-unit id="Fingerprint in server address does not match certificate: %@." xml:space="preserve">
@@ -4038,6 +4042,10 @@ Error: %2$@</source>
<target>Pokud při otevření aplikace zadáte sebedestrukční heslo:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="If you joined or created channels, they will stop working permanently." xml:space="preserve">
<source>If you joined or created channels, they will stop working permanently.</source>
<note>down migration warning</note>
</trans-unit>
<trans-unit id="If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app)." xml:space="preserve">
<source>If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app).</source>
<target>Pokud potřebujete chat používat nyní, klepněte na **Udělat později** níže (migrace databáze vám bude nabídnuta po restartování aplikace).</target>
@@ -5205,7 +5213,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="No user identifiers." xml:space="preserve">
<source>No user identifiers.</source>
<target>Bez uživatelských identifikátorů</target>
<target>Bez uživatelských identifikátorů.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Not compatible!" xml:space="preserve">
@@ -6815,12 +6823,12 @@ chat item action</note>
</trans-unit>
<trans-unit id="Server requires authorization to create queues, check password." xml:space="preserve">
<source>Server requires authorization to create queues, check password.</source>
<target>Server vyžaduje autorizaci pro vytváření front, zkontrolujte heslo</target>
<target>Server vyžaduje autorizaci pro vytváření front, zkontrolujte heslo.</target>
<note>server test error</note>
</trans-unit>
<trans-unit id="Server requires authorization to upload, check password." xml:space="preserve">
<source>Server requires authorization to upload, check password.</source>
<target>Server vyžaduje autorizaci pro nahrávání, zkontrolujte heslo</target>
<target>Server vyžaduje autorizaci pro nahrávání, zkontrolujte heslo.</target>
<note>server test error</note>
</trans-unit>
<trans-unit id="Server test failed!" xml:space="preserve">
@@ -9276,6 +9284,10 @@ pref value</note>
<source>expired</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="failed" xml:space="preserve">
<source>failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="forwarded" xml:space="preserve">
<source>forwarded</source>
<note>No comment provided by engineer.</note>
@@ -794,6 +794,7 @@ swipe action</note>
</trans-unit>
<trans-unit id="All messages" xml:space="preserve">
<source>All messages</source>
<target>Alle Nachrichten</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All messages and files are sent **end-to-end encrypted**, with post-quantum security in direct messages." xml:space="preserve">
@@ -1148,6 +1149,7 @@ swipe action</note>
</trans-unit>
<trans-unit id="Audio call" xml:space="preserve">
<source>Audio call</source>
<target>Audioanruf</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Audio/video calls" xml:space="preserve">
@@ -2021,6 +2023,10 @@ Das ist Ihr eigener Einmal-Link!</target>
<target>Verbindungsfehler (AUTH)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection failed" xml:space="preserve">
<source>Connection failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection is blocked by server operator:&#10;%@" xml:space="preserve">
<source>Connection is blocked by server operator:
%@</source>
@@ -2589,10 +2595,12 @@ swipe action</note>
</trans-unit>
<trans-unit id="Delete member messages" xml:space="preserve">
<source>Delete member messages</source>
<target>Mitgliedsnachrichten löschen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete member messages?" xml:space="preserve">
<source>Delete member messages?</source>
<target>Mitgliedsnachrichten löschen?</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Delete message?" xml:space="preserve">
@@ -3870,6 +3878,7 @@ snd error text</note>
</trans-unit>
<trans-unit id="Filter" xml:space="preserve">
<source>Filter</source>
<target>Filter</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Filter unread and favorite chats." xml:space="preserve">
@@ -4336,6 +4345,10 @@ Fehler: %2$@</target>
<target>Wenn Sie Ihren Selbstzerstörungs-Zugangscode während des Öffnens der App eingeben:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="If you joined or created channels, they will stop working permanently." xml:space="preserve">
<source>If you joined or created channels, they will stop working permanently.</source>
<note>down migration warning</note>
</trans-unit>
<trans-unit id="If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app)." xml:space="preserve">
<source>If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app).</source>
<target>Tippen Sie unten auf **Später wiederholen**, wenn Sie den Chat jetzt benötigen (es wird Ihnen angeboten, die Datenbank bei einem Neustart der App zu migrieren).</target>
@@ -4358,6 +4371,7 @@ Fehler: %2$@</target>
</trans-unit>
<trans-unit id="Images" xml:space="preserve">
<source>Images</source>
<target>Bilder</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Immediately" xml:space="preserve">
@@ -4621,6 +4635,7 @@ Weitere Verbesserungen sind bald verfügbar!</target>
</trans-unit>
<trans-unit id="Invite member" xml:space="preserve">
<source>Invite member</source>
<target>Mitglied einladen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invite members" xml:space="preserve">
@@ -4848,6 +4863,7 @@ Das ist Ihr Link für die Gruppe %@!</target>
</trans-unit>
<trans-unit id="Links" xml:space="preserve">
<source>Links</source>
<target>Links</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="List" xml:space="preserve">
@@ -4977,6 +4993,7 @@ Das ist Ihr Link für die Gruppe %@!</target>
</trans-unit>
<trans-unit id="Member messages will be deleted - this cannot be undone!" xml:space="preserve">
<source>Member messages will be deleted - this cannot be undone!</source>
<target>Mitgliedsnachrichten werden gelöscht. Dies kann nicht rückgängig gemacht werden!</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="Member reports" xml:space="preserve">
@@ -6636,6 +6653,7 @@ swipe action</note>
</trans-unit>
<trans-unit id="Remove and delete messages" xml:space="preserve">
<source>Remove and delete messages</source>
<target>Mitglied entfernen und Nachrichten löschen</target>
<note>alert action</note>
</trans-unit>
<trans-unit id="Remove archive?" xml:space="preserve">
@@ -7081,14 +7099,17 @@ chat item action</note>
</trans-unit>
<trans-unit id="Search files" xml:space="preserve">
<source>Search files</source>
<target>Dateien suchen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Search images" xml:space="preserve">
<source>Search images</source>
<target>Bilder suchen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Search links" xml:space="preserve">
<source>Search links</source>
<target>Links suchen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Search or paste SimpleX link" xml:space="preserve">
@@ -7098,10 +7119,12 @@ chat item action</note>
</trans-unit>
<trans-unit id="Search videos" xml:space="preserve">
<source>Search videos</source>
<target>Videos suchen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Search voice messages" xml:space="preserve">
<source>Search voice messages</source>
<target>Sprachnachrichten suchen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Secondary" xml:space="preserve">
@@ -8981,6 +9004,7 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s
</trans-unit>
<trans-unit id="Videos" xml:space="preserve">
<source>Videos</source>
<target>Videos</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Videos and files up to 1gb" xml:space="preserve">
@@ -10124,6 +10148,10 @@ pref value</note>
<target>Abgelaufen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="failed" xml:space="preserve">
<source>failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="forwarded" xml:space="preserve">
<source>forwarded</source>
<target>weitergeleitet</target>
@@ -10988,7 +11016,7 @@ Zuletzt empfangene Nachricht: %2$@</target>
</trans-unit>
<trans-unit id="Ok" xml:space="preserve">
<source>Ok</source>
<target>OK</target>
<target>Ok</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Open the app to downgrade the database." xml:space="preserve">
@@ -2023,6 +2023,11 @@ This is your own one-time link!</target>
<target>Connection error (AUTH)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection failed" xml:space="preserve">
<source>Connection failed</source>
<target>Connection failed</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection is blocked by server operator:&#10;%@" xml:space="preserve">
<source>Connection is blocked by server operator:
%@</source>
@@ -4341,6 +4346,11 @@ Error: %2$@</target>
<target>If you enter your self-destruct passcode while opening the app:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="If you joined or created channels, they will stop working permanently." xml:space="preserve">
<source>If you joined or created channels, they will stop working permanently.</source>
<target>If you joined or created channels, they will stop working permanently.</target>
<note>down migration warning</note>
</trans-unit>
<trans-unit id="If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app)." xml:space="preserve">
<source>If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app).</source>
<target>If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app).</target>
@@ -10140,6 +10150,11 @@ pref value</note>
<target>expired</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="failed" xml:space="preserve">
<source>failed</source>
<target>failed</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="forwarded" xml:space="preserve">
<source>forwarded</source>
<target>forwarded</target>
@@ -498,7 +498,7 @@ time interval</note>
<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>
<target>&lt;p&gt;¡Hola!&lt;/p&gt;
&lt;p&gt;&lt;a href="%@"&gt; Conecta conmigo a través de SimpleX Chat&lt;/a&gt;&lt;/p&gt;</target>
&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="A few more things" xml:space="preserve">
@@ -794,6 +794,7 @@ swipe action</note>
</trans-unit>
<trans-unit id="All messages" xml:space="preserve">
<source>All messages</source>
<target>Todos los mensajes</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All messages and files are sent **end-to-end encrypted**, with post-quantum security in direct messages." xml:space="preserve">
@@ -1148,6 +1149,7 @@ swipe action</note>
</trans-unit>
<trans-unit id="Audio call" xml:space="preserve">
<source>Audio call</source>
<target>Llamada</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Audio/video calls" xml:space="preserve">
@@ -2021,6 +2023,10 @@ This is your own one-time link!</source>
<target>Error de conexión (Autenticación)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection failed" xml:space="preserve">
<source>Connection failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection is blocked by server operator:&#10;%@" xml:space="preserve">
<source>Connection is blocked by server operator:
%@</source>
@@ -2589,10 +2595,12 @@ swipe action</note>
</trans-unit>
<trans-unit id="Delete member messages" xml:space="preserve">
<source>Delete member messages</source>
<target>Eliminar mensajes del miembro</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete member messages?" xml:space="preserve">
<source>Delete member messages?</source>
<target>¿Eliminar mensajes del miembro?</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Delete message?" xml:space="preserve">
@@ -3870,6 +3878,7 @@ snd error text</note>
</trans-unit>
<trans-unit id="Filter" xml:space="preserve">
<source>Filter</source>
<target>Filtro</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Filter unread and favorite chats." xml:space="preserve">
@@ -4336,6 +4345,10 @@ Error: %2$@</target>
<target>Si al abrir la aplicación introduces el código de autodestrucción:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="If you joined or created channels, they will stop working permanently." xml:space="preserve">
<source>If you joined or created channels, they will stop working permanently.</source>
<note>down migration warning</note>
</trans-unit>
<trans-unit id="If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app)." xml:space="preserve">
<source>If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app).</source>
<target>Si necesitas usar el chat ahora pulsa **Hacerlo más tarde** más abajo (se ofrecerá migrar la base de datos cuando se reinicie la aplicación).</target>
@@ -4358,6 +4371,7 @@ Error: %2$@</target>
</trans-unit>
<trans-unit id="Images" xml:space="preserve">
<source>Images</source>
<target>Imágenes</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Immediately" xml:space="preserve">
@@ -4621,6 +4635,7 @@ More improvements are coming soon!</source>
</trans-unit>
<trans-unit id="Invite member" xml:space="preserve">
<source>Invite member</source>
<target>Invitar miembro</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invite members" xml:space="preserve">
@@ -4848,6 +4863,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Links" xml:space="preserve">
<source>Links</source>
<target>Enlaces</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="List" xml:space="preserve">
@@ -4977,6 +4993,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Member messages will be deleted - this cannot be undone!" xml:space="preserve">
<source>Member messages will be deleted - this cannot be undone!</source>
<target>Los mensajes del miembro serán eliminados. ¡No puede deshacerse!</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="Member reports" xml:space="preserve">
@@ -5951,7 +5968,7 @@ Requiere activación de la VPN.</target>
</trans-unit>
<trans-unit id="Or show this code" xml:space="preserve">
<source>Or show this code</source>
<target>O muestra el código QR</target>
<target>O muestra este código</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or to share privately" xml:space="preserve">
@@ -6636,6 +6653,7 @@ swipe action</note>
</trans-unit>
<trans-unit id="Remove and delete messages" xml:space="preserve">
<source>Remove and delete messages</source>
<target>Eliminar miembro y sus mensajes</target>
<note>alert action</note>
</trans-unit>
<trans-unit id="Remove archive?" xml:space="preserve">
@@ -7081,14 +7099,17 @@ chat item action</note>
</trans-unit>
<trans-unit id="Search files" xml:space="preserve">
<source>Search files</source>
<target>Buscar archivos</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Search images" xml:space="preserve">
<source>Search images</source>
<target>Buscar imágenes</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Search links" xml:space="preserve">
<source>Search links</source>
<target>Buscar enlaces</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Search or paste SimpleX link" xml:space="preserve">
@@ -7098,10 +7119,12 @@ chat item action</note>
</trans-unit>
<trans-unit id="Search videos" xml:space="preserve">
<source>Search videos</source>
<target>Buscar vídeos</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Search voice messages" xml:space="preserve">
<source>Search voice messages</source>
<target>Buscar mensajes de voz</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Secondary" xml:space="preserve">
@@ -8981,6 +9004,7 @@ Para conectarte pide a tu contacto que cree otro enlace y comprueba la conexión
</trans-unit>
<trans-unit id="Videos" xml:space="preserve">
<source>Videos</source>
<target>Vídeos</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Videos and files up to 1gb" xml:space="preserve">
@@ -10124,6 +10148,10 @@ pref value</note>
<target>expirados</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="failed" xml:space="preserve">
<source>failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="forwarded" xml:space="preserve">
<source>forwarded</source>
<target>reenviado</target>
@@ -10598,7 +10626,7 @@ last received msg: %2$@</source>
</trans-unit>
<trans-unit id="unprotected" xml:space="preserve">
<source>unprotected</source>
<target>con IP desprotegida</target>
<target>desprotegida</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="updated group profile" xml:space="preserve">
@@ -1814,6 +1814,10 @@ This is your own one-time link!</source>
<target>Yhteysvirhe (AUTH)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection failed" xml:space="preserve">
<source>Connection failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection is blocked by server operator:&#10;%@" xml:space="preserve">
<source>Connection is blocked by server operator:
%@</source>
@@ -3925,6 +3929,10 @@ Error: %2$@</source>
<target>Jos syötät itsetuhoutuvan pääsykoodin sovellusta avattaessa:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="If you joined or created channels, they will stop working permanently." xml:space="preserve">
<source>If you joined or created channels, they will stop working permanently.</source>
<note>down migration warning</note>
</trans-unit>
<trans-unit id="If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app)." xml:space="preserve">
<source>If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app).</source>
<target>Jos haluat käyttää keskustelua nyt, napauta **Tee se myöhemmin** alla (sinulle tarjotaan tietokannan siirtämistä, kun käynnistät sovelluksen uudelleen).</target>
@@ -9158,6 +9166,10 @@ pref value</note>
<source>expired</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="failed" xml:space="preserve">
<source>failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="forwarded" xml:space="preserve">
<source>forwarded</source>
<note>No comment provided by engineer.</note>
@@ -2009,6 +2009,10 @@ Il s'agit de votre propre lien unique !</target>
<target>Erreur de connexion (AUTH)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection failed" xml:space="preserve">
<source>Connection failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection is blocked by server operator:&#10;%@" xml:space="preserve">
<source>Connection is blocked by server operator:
%@</source>
@@ -4297,6 +4301,10 @@ Erreur: %2$@</target>
<target>Si vous entrez votre code d'autodestruction à l'ouverture de l'application :</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="If you joined or created channels, they will stop working permanently." xml:space="preserve">
<source>If you joined or created channels, they will stop working permanently.</source>
<note>down migration warning</note>
</trans-unit>
<trans-unit id="If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app)." xml:space="preserve">
<source>If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app).</source>
<target>Si vous avez besoin d'utiliser le chat maintenant appuyez sur **le faire plus tard** (vous pourrez migrer la base de données quand vous relancerez l'app).</target>
@@ -9930,6 +9938,10 @@ pref value</note>
<target>expiré</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="failed" xml:space="preserve">
<source>failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="forwarded" xml:space="preserve">
<source>forwarded</source>
<target>transféré</target>
@@ -394,8 +394,8 @@
<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).
- faster and more stable.</source>
<target>- kapcsolódás a [könyvtár szolgáltatáshoz](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)!
- kézbesítési jelentések (legfeljebb 20 tag).
<target>- kapcsolódás a [könyvtárszolgáltatáshoz](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)!
- kézbesítési jelentések (legfeljebb 20 tagig).
- gyorsabb és stabilabb.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -794,6 +794,7 @@ swipe action</note>
</trans-unit>
<trans-unit id="All messages" xml:space="preserve">
<source>All messages</source>
<target>Összes üzenet</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All messages and files are sent **end-to-end encrypted**, with post-quantum security in direct messages." xml:space="preserve">
@@ -1148,6 +1149,7 @@ swipe action</note>
</trans-unit>
<trans-unit id="Audio call" xml:space="preserve">
<source>Audio call</source>
<target>Hanghívás</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Audio/video calls" xml:space="preserve">
@@ -2021,6 +2023,10 @@ Ez a saját egyszer használható meghívója!</target>
<target>Kapcsolódási hiba (AUTH)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection failed" xml:space="preserve">
<source>Connection failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection is blocked by server operator:&#10;%@" xml:space="preserve">
<source>Connection is blocked by server operator:
%@</source>
@@ -2589,10 +2595,12 @@ swipe action</note>
</trans-unit>
<trans-unit id="Delete member messages" xml:space="preserve">
<source>Delete member messages</source>
<target>Tag üzeneteinek törlése</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete member messages?" xml:space="preserve">
<source>Delete member messages?</source>
<target>Törli a tag üzeneteit?</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Delete message?" xml:space="preserve">
@@ -3870,6 +3878,7 @@ snd error text</note>
</trans-unit>
<trans-unit id="Filter" xml:space="preserve">
<source>Filter</source>
<target>Szűrő</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Filter unread and favorite chats." xml:space="preserve">
@@ -4336,6 +4345,10 @@ Hiba: %2$@</target>
<target>Ha az alkalmazás megnyitásakor megadja az önmegsemmisítő jelkódot:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="If you joined or created channels, they will stop working permanently." xml:space="preserve">
<source>If you joined or created channels, they will stop working permanently.</source>
<note>down migration warning</note>
</trans-unit>
<trans-unit id="If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app)." xml:space="preserve">
<source>If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app).</source>
<target>Ha most kell használnia a csevegést, koppintson lentebb a **Befejezés később** beállításra (az alkalmazás újraindításakor fel lesz ajánlva az adatbázis átköltöztetése).</target>
@@ -4358,6 +4371,7 @@ Hiba: %2$@</target>
</trans-unit>
<trans-unit id="Images" xml:space="preserve">
<source>Images</source>
<target>Képek</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Immediately" xml:space="preserve">
@@ -4621,6 +4635,7 @@ További fejlesztések hamarosan!</target>
</trans-unit>
<trans-unit id="Invite member" xml:space="preserve">
<source>Invite member</source>
<target>Tag meghívása</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invite members" xml:space="preserve">
@@ -4848,6 +4863,7 @@ Ez a saját hivatkozása a(z) %@ nevű csoporthoz!</target>
</trans-unit>
<trans-unit id="Links" xml:space="preserve">
<source>Links</source>
<target>Hivatkozások</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="List" xml:space="preserve">
@@ -4977,6 +4993,7 @@ Ez a saját hivatkozása a(z) %@ nevű csoporthoz!</target>
</trans-unit>
<trans-unit id="Member messages will be deleted - this cannot be undone!" xml:space="preserve">
<source>Member messages will be deleted - this cannot be undone!</source>
<target>A tag üzenetei törölve lesznek ez a művelet nem vonható vissza!</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="Member reports" xml:space="preserve">
@@ -5246,7 +5263,7 @@ Ez a saját hivatkozása a(z) %@ nevű csoporthoz!</target>
</trans-unit>
<trans-unit id="Migration complete" xml:space="preserve">
<source>Migration complete</source>
<target>Átköltöztetés befejezve</target>
<target>Átköltöztetés kész</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migration error:" xml:space="preserve">
@@ -5261,7 +5278,7 @@ Ez a saját hivatkozása a(z) %@ nevű csoporthoz!</target>
</trans-unit>
<trans-unit id="Migration is completed" xml:space="preserve">
<source>Migration is completed</source>
<target>Az átköltöztetés befejeződött</target>
<target>Az átköltöztetés elkészült</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrations:" xml:space="preserve">
@@ -6162,7 +6179,7 @@ Hiba: %@</target>
</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>Várjon, amíg a token aktiválása befejeződik.</target>
<target>Várjon, amíg a token aktiválása elkészül.</target>
<note>token info</note>
</trans-unit>
<trans-unit id="Please wait for token to be registered." xml:space="preserve">
@@ -6636,6 +6653,7 @@ swipe action</note>
</trans-unit>
<trans-unit id="Remove and delete messages" xml:space="preserve">
<source>Remove and delete messages</source>
<target>Eltávolítás és az üzeneteinek törlése</target>
<note>alert action</note>
</trans-unit>
<trans-unit id="Remove archive?" xml:space="preserve">
@@ -7081,14 +7099,17 @@ chat item action</note>
</trans-unit>
<trans-unit id="Search files" xml:space="preserve">
<source>Search files</source>
<target>Fájlok keresése</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Search images" xml:space="preserve">
<source>Search images</source>
<target>Képek keresése</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Search links" xml:space="preserve">
<source>Search links</source>
<target>Hivatkozások keresése</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Search or paste SimpleX link" xml:space="preserve">
@@ -7098,10 +7119,12 @@ chat item action</note>
</trans-unit>
<trans-unit id="Search videos" xml:space="preserve">
<source>Search videos</source>
<target>Videók keresése</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Search voice messages" xml:space="preserve">
<source>Search voice messages</source>
<target>Hangüzenetek keresése</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Secondary" xml:space="preserve">
@@ -8981,6 +9004,7 @@ A kapcsolódáshoz kérje meg a partnerét, hogy hozzon létre egy másik kapcso
</trans-unit>
<trans-unit id="Videos" xml:space="preserve">
<source>Videos</source>
<target>Videók</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Videos and files up to 1gb" xml:space="preserve">
@@ -9870,7 +9894,7 @@ marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="complete" xml:space="preserve">
<source>complete</source>
<target>befejezett</target>
<target>kész</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="connect to SimpleX Chat developers." xml:space="preserve">
@@ -10124,6 +10148,10 @@ pref value</note>
<target>lejárt</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="failed" xml:space="preserve">
<source>failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="forwarded" xml:space="preserve">
<source>forwarded</source>
<target>továbbított</target>
@@ -794,6 +794,7 @@ swipe action</note>
</trans-unit>
<trans-unit id="All messages" xml:space="preserve">
<source>All messages</source>
<target>Tutti i messaggi</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All messages and files are sent **end-to-end encrypted**, with post-quantum security in direct messages." xml:space="preserve">
@@ -1148,6 +1149,7 @@ swipe action</note>
</trans-unit>
<trans-unit id="Audio call" xml:space="preserve">
<source>Audio call</source>
<target>Chiamata audio</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Audio/video calls" xml:space="preserve">
@@ -2021,6 +2023,10 @@ Questo è il tuo link una tantum!</target>
<target>Errore di connessione (AUTH)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection failed" xml:space="preserve">
<source>Connection failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection is blocked by server operator:&#10;%@" xml:space="preserve">
<source>Connection is blocked by server operator:
%@</source>
@@ -2589,10 +2595,12 @@ swipe action</note>
</trans-unit>
<trans-unit id="Delete member messages" xml:space="preserve">
<source>Delete member messages</source>
<target>Elimina i messaggi del membro</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete member messages?" xml:space="preserve">
<source>Delete member messages?</source>
<target>Eliminare i messaggi del membro?</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Delete message?" xml:space="preserve">
@@ -3870,6 +3878,7 @@ snd error text</note>
</trans-unit>
<trans-unit id="Filter" xml:space="preserve">
<source>Filter</source>
<target>Filtro</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Filter unread and favorite chats." xml:space="preserve">
@@ -4336,6 +4345,10 @@ Errore: %2$@</target>
<target>Se inserisci il tuo codice di autodistruzione mentre apri l'app:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="If you joined or created channels, they will stop working permanently." xml:space="preserve">
<source>If you joined or created channels, they will stop working permanently.</source>
<note>down migration warning</note>
</trans-unit>
<trans-unit id="If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app)." xml:space="preserve">
<source>If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app).</source>
<target>Se devi usare la chat adesso, tocca **Fallo più tardi** qui sotto (ti verrà offerto di migrare il database quando riavvii l'app).</target>
@@ -4358,6 +4371,7 @@ Errore: %2$@</target>
</trans-unit>
<trans-unit id="Images" xml:space="preserve">
<source>Images</source>
<target>Immagini</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Immediately" xml:space="preserve">
@@ -4621,6 +4635,7 @@ Altri miglioramenti sono in arrivo!</target>
</trans-unit>
<trans-unit id="Invite member" xml:space="preserve">
<source>Invite member</source>
<target>Invita membro</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invite members" xml:space="preserve">
@@ -4848,6 +4863,7 @@ Questo è il tuo link per il gruppo %@!</target>
</trans-unit>
<trans-unit id="Links" xml:space="preserve">
<source>Links</source>
<target>Link</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="List" xml:space="preserve">
@@ -4977,6 +4993,7 @@ Questo è il tuo link per il gruppo %@!</target>
</trans-unit>
<trans-unit id="Member messages will be deleted - this cannot be undone!" xml:space="preserve">
<source>Member messages will be deleted - this cannot be undone!</source>
<target>I messaggi del membro verranno eliminati. Non è reversibile!</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="Member reports" xml:space="preserve">
@@ -6636,6 +6653,7 @@ swipe action</note>
</trans-unit>
<trans-unit id="Remove and delete messages" xml:space="preserve">
<source>Remove and delete messages</source>
<target>Rimuovi ed elimina i messaggi</target>
<note>alert action</note>
</trans-unit>
<trans-unit id="Remove archive?" xml:space="preserve">
@@ -7081,14 +7099,17 @@ chat item action</note>
</trans-unit>
<trans-unit id="Search files" xml:space="preserve">
<source>Search files</source>
<target>Cerca file</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Search images" xml:space="preserve">
<source>Search images</source>
<target>Cerca immagini</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Search links" xml:space="preserve">
<source>Search links</source>
<target>Cerca link</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Search or paste SimpleX link" xml:space="preserve">
@@ -7098,10 +7119,12 @@ chat item action</note>
</trans-unit>
<trans-unit id="Search videos" xml:space="preserve">
<source>Search videos</source>
<target>Cerca video</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Search voice messages" xml:space="preserve">
<source>Search voice messages</source>
<target>Cerca messaggi vocali</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Secondary" xml:space="preserve">
@@ -8981,6 +9004,7 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e
</trans-unit>
<trans-unit id="Videos" xml:space="preserve">
<source>Videos</source>
<target>Video</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Videos and files up to 1gb" xml:space="preserve">
@@ -10124,6 +10148,10 @@ pref value</note>
<target>scaduto</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="failed" xml:space="preserve">
<source>failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="forwarded" xml:space="preserve">
<source>forwarded</source>
<target>inoltrato</target>
@@ -1908,6 +1908,10 @@ This is your own one-time link!</source>
<target>接続エラー (AUTH)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection failed" xml:space="preserve">
<source>Connection failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection is blocked by server operator:&#10;%@" xml:space="preserve">
<source>Connection is blocked by server operator:
%@</source>
@@ -4026,6 +4030,10 @@ Error: %2$@</source>
<target>アプリを開いているときに自己破壊パスコードを入力した場合:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="If you joined or created channels, they will stop working permanently." xml:space="preserve">
<source>If you joined or created channels, they will stop working permanently.</source>
<note>down migration warning</note>
</trans-unit>
<trans-unit id="If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app)." xml:space="preserve">
<source>If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app).</source>
<target>今すぐチャットを使用する必要がある場合は、下の **後で実行する**をタップしてください (アプリを再起動すると、データベースを移行するよう求められます)。</target>
@@ -9257,6 +9265,10 @@ pref value</note>
<source>expired</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="failed" xml:space="preserve">
<source>failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="forwarded" xml:space="preserve">
<source>forwarded</source>
<note>No comment provided by engineer.</note>
@@ -2009,6 +2009,10 @@ Dit is uw eigen eenmalige link!</target>
<target>Verbindingsfout (AUTH)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection failed" xml:space="preserve">
<source>Connection failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection is blocked by server operator:&#10;%@" xml:space="preserve">
<source>Connection is blocked by server operator:
%@</source>
@@ -4306,6 +4310,10 @@ Fout: %2$@</target>
<target>Als u uw zelfvernietigings wachtwoord invoert tijdens het openen van de app:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="If you joined or created channels, they will stop working permanently." xml:space="preserve">
<source>If you joined or created channels, they will stop working permanently.</source>
<note>down migration warning</note>
</trans-unit>
<trans-unit id="If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app)." xml:space="preserve">
<source>If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app).</source>
<target>Als u de chat nu wilt gebruiken, tikt u hieronder op **Doe het later** (u wordt aangeboden om de database te migreren wanneer u de app opnieuw start).</target>
@@ -10029,6 +10037,10 @@ pref value</note>
<target>verlopen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="failed" xml:space="preserve">
<source>failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="forwarded" xml:space="preserve">
<source>forwarded</source>
<target>doorgestuurd</target>
File diff suppressed because it is too large Load Diff
@@ -2021,6 +2021,10 @@ This is your own one-time link!</source>
<target>Ошибка соединения (AUTH)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection failed" xml:space="preserve">
<source>Connection failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection is blocked by server operator:&#10;%@" xml:space="preserve">
<source>Connection is blocked by server operator:
%@</source>
@@ -4336,6 +4340,10 @@ Error: %2$@</source>
<target>Если Вы введёте код самоуничтожения при открытии приложения:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="If you joined or created channels, they will stop working permanently." xml:space="preserve">
<source>If you joined or created channels, they will stop working permanently.</source>
<note>down migration warning</note>
</trans-unit>
<trans-unit id="If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app)." xml:space="preserve">
<source>If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app).</source>
<target>Если сейчас Вам нужно использовать чат, нажмите **Отложить** внизу (Вы сможете мигрировать данные чата при следующем запуске приложения).</target>
@@ -10123,6 +10131,10 @@ pref value</note>
<target>истекло</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="failed" xml:space="preserve">
<source>failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="forwarded" xml:space="preserve">
<source>forwarded</source>
<target>переслано</target>
@@ -1805,6 +1805,10 @@ This is your own one-time link!</source>
<target>การเชื่อมต่อผิดพลาด (AUTH)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection failed" xml:space="preserve">
<source>Connection failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection is blocked by server operator:&#10;%@" xml:space="preserve">
<source>Connection is blocked by server operator:
%@</source>
@@ -3910,6 +3914,10 @@ Error: %2$@</source>
<target>หากคุณใส่รหัสผ่านทำลายตัวเองขณะเปิดแอป:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="If you joined or created channels, they will stop working permanently." xml:space="preserve">
<source>If you joined or created channels, they will stop working permanently.</source>
<note>down migration warning</note>
</trans-unit>
<trans-unit id="If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app)." xml:space="preserve">
<source>If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app).</source>
<target>หากคุณจำเป็นต้องใช้แชทตอนนี้ ให้แตะ **ทำในภายหลัง** ด้านล่าง (ระบบจะเสนอให้คุณย้ายฐานข้อมูลเมื่อคุณรีสตาร์ทแอป)</target>
@@ -9125,6 +9133,10 @@ pref value</note>
<source>expired</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="failed" xml:space="preserve">
<source>failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="forwarded" xml:space="preserve">
<source>forwarded</source>
<note>No comment provided by engineer.</note>
@@ -2021,6 +2021,10 @@ Bu senin kendi tek kullanımlık bağlantın!</target>
<target>Bağlantı hatası (DOĞRULAMA)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection failed" xml:space="preserve">
<source>Connection failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection is blocked by server operator:&#10;%@" xml:space="preserve">
<source>Connection is blocked by server operator:
%@</source>
@@ -4331,6 +4335,10 @@ Hata: %2$@</target>
<target>Uygulamayı açarken kendi kendini imha eden şifrenizi girerseniz:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="If you joined or created channels, they will stop working permanently." xml:space="preserve">
<source>If you joined or created channels, they will stop working permanently.</source>
<note>down migration warning</note>
</trans-unit>
<trans-unit id="If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app)." xml:space="preserve">
<source>If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app).</source>
<target>Sohbeti şimdi kullanmanız gerekiyorsa aşağıdaki **Daha sonra yap** seçeneğine dokunun (uygulamayı yeniden başlattığınızda veritabanını taşımanız önerilecektir).</target>
@@ -10116,6 +10124,10 @@ pref value</note>
<target>süresi dolmuş</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="failed" xml:space="preserve">
<source>failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="forwarded" xml:space="preserve">
<source>forwarded</source>
<target>iletildi</target>
@@ -2017,6 +2017,10 @@ This is your own one-time link!</source>
<target>Помилка підключення (AUTH)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection failed" xml:space="preserve">
<source>Connection failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection is blocked by server operator:&#10;%@" xml:space="preserve">
<source>Connection is blocked by server operator:
%@</source>
@@ -4323,6 +4327,10 @@ Error: %2$@</source>
<target>Якщо ви введете пароль самознищення під час відкриття програми:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="If you joined or created channels, they will stop working permanently." xml:space="preserve">
<source>If you joined or created channels, they will stop working permanently.</source>
<note>down migration warning</note>
</trans-unit>
<trans-unit id="If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app)." xml:space="preserve">
<source>If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app).</source>
<target>Якщо вам потрібно скористатися чатом зараз, натисніть **Зробити це пізніше** нижче (вам буде запропоновано перенести базу даних при перезапуску програми).</target>
@@ -10096,6 +10104,10 @@ pref value</note>
<target>закінчився</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="failed" xml:space="preserve">
<source>failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="forwarded" xml:space="preserve">
<source>forwarded</source>
<target>переслано</target>
@@ -794,6 +794,7 @@ swipe action</note>
</trans-unit>
<trans-unit id="All messages" xml:space="preserve">
<source>All messages</source>
<target>所有消息</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All messages and files are sent **end-to-end encrypted**, with post-quantum security in direct messages." xml:space="preserve">
@@ -1148,6 +1149,7 @@ swipe action</note>
</trans-unit>
<trans-unit id="Audio call" xml:space="preserve">
<source>Audio call</source>
<target>语音通话</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Audio/video calls" xml:space="preserve">
@@ -2021,6 +2023,10 @@ This is your own one-time link!</source>
<target>连接错误(AUTH</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection failed" xml:space="preserve">
<source>Connection failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection is blocked by server operator:&#10;%@" xml:space="preserve">
<source>Connection is blocked by server operator:
%@</source>
@@ -2588,6 +2594,7 @@ swipe action</note>
</trans-unit>
<trans-unit id="Delete member messages" xml:space="preserve">
<source>Delete member messages</source>
<target>删除成员消息</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete member messages?" xml:space="preserve">
@@ -3868,6 +3875,7 @@ snd error text</note>
</trans-unit>
<trans-unit id="Filter" xml:space="preserve">
<source>Filter</source>
<target>过滤器</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Filter unread and favorite chats." xml:space="preserve">
@@ -4334,6 +4342,10 @@ Error: %2$@</source>
<target>如果您在打开应用程序时输入自毁密码:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="If you joined or created channels, they will stop working permanently." xml:space="preserve">
<source>If you joined or created channels, they will stop working permanently.</source>
<note>down migration warning</note>
</trans-unit>
<trans-unit id="If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app)." xml:space="preserve">
<source>If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app).</source>
<target>如果您现在需要使用聊天,请点击下面的**稍后再做**(当您重新启动应用程序时,系统会提示您迁移数据库)。</target>
@@ -4356,6 +4368,7 @@ Error: %2$@</source>
</trans-unit>
<trans-unit id="Images" xml:space="preserve">
<source>Images</source>
<target>图片</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Immediately" xml:space="preserve">
@@ -4619,6 +4632,7 @@ More improvements are coming soon!</source>
</trans-unit>
<trans-unit id="Invite member" xml:space="preserve">
<source>Invite member</source>
<target>邀请成员</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invite members" xml:space="preserve">
@@ -4846,6 +4860,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Links" xml:space="preserve">
<source>Links</source>
<target>链接</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="List" xml:space="preserve">
@@ -6633,6 +6648,7 @@ swipe action</note>
</trans-unit>
<trans-unit id="Remove and delete messages" xml:space="preserve">
<source>Remove and delete messages</source>
<target>移除并删除消息</target>
<note>alert action</note>
</trans-unit>
<trans-unit id="Remove archive?" xml:space="preserve">
@@ -7077,14 +7093,17 @@ chat item action</note>
</trans-unit>
<trans-unit id="Search files" xml:space="preserve">
<source>Search files</source>
<target>搜索文件</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Search images" xml:space="preserve">
<source>Search images</source>
<target>搜索图片</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Search links" xml:space="preserve">
<source>Search links</source>
<target>搜索链接</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Search or paste SimpleX link" xml:space="preserve">
@@ -7094,10 +7113,12 @@ chat item action</note>
</trans-unit>
<trans-unit id="Search videos" xml:space="preserve">
<source>Search videos</source>
<target>搜索视频</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Search voice messages" xml:space="preserve">
<source>Search voice messages</source>
<target>搜索语音消息</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Secondary" xml:space="preserve">
@@ -8973,6 +8994,7 @@ To connect, please ask your contact to create another connection link and check
</trans-unit>
<trans-unit id="Videos" xml:space="preserve">
<source>Videos</source>
<target>视频</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Videos and files up to 1gb" xml:space="preserve">
@@ -10112,6 +10134,10 @@ pref value</note>
<target>过期</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="failed" xml:space="preserve">
<source>failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="forwarded" xml:space="preserve">
<source>forwarded</source>
<target>已转发</target>
@@ -1,3 +1,15 @@
/* notification body */
"New messages in %d chats" = "Nowe wiadomości w %d czatach";
"%d new events" = "%d nowych wydarzeń";
/* notification body */
"From %d chat(s)" = "Z %d czatu(ów)";
/* notification body */
"From: %@" = "Od: %@";
/* notification */
"New events" = "Nowe wydarzenia";
/* notification */
"New messages" = "Nowe wiadomości";
@@ -65,7 +65,7 @@
"No active profile" = "Kein aktives Profil";
/* No comment provided by engineer. */
"Ok" = "OK";
"Ok" = "Ok";
/* No comment provided by engineer. */
"Open the app to downgrade the database." = "Öffnen Sie die App, um die Datenbank herunterzustufen.";
+8 -8
View File
@@ -182,8 +182,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.5.0.9-IckAKQLBKZZ3c4EBa1qhzo-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C8299A2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.9-IckAKQLBKZZ3c4EBa1qhzo-ghc9.6.3.a */; };
64C829A02D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.9-IckAKQLBKZZ3c4EBa1qhzo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C8299B2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.9-IckAKQLBKZZ3c4EBa1qhzo.a */; };
64C8299F2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.10-BhxwGbk3jTNAJLd7P8xtH7-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C8299A2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.10-BhxwGbk3jTNAJLd7P8xtH7-ghc9.6.3.a */; };
64C829A02D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.10-BhxwGbk3jTNAJLd7P8xtH7.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C8299B2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.10-BhxwGbk3jTNAJLd7P8xtH7.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 */; };
@@ -553,8 +553,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.5.0.9-IckAKQLBKZZ3c4EBa1qhzo-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.5.0.9-IckAKQLBKZZ3c4EBa1qhzo-ghc9.6.3.a"; sourceTree = "<group>"; };
64C8299B2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.9-IckAKQLBKZZ3c4EBa1qhzo.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.5.0.9-IckAKQLBKZZ3c4EBa1qhzo.a"; sourceTree = "<group>"; };
64C8299A2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.10-BhxwGbk3jTNAJLd7P8xtH7-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.5.0.10-BhxwGbk3jTNAJLd7P8xtH7-ghc9.6.3.a"; sourceTree = "<group>"; };
64C8299B2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.10-BhxwGbk3jTNAJLd7P8xtH7.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.5.0.10-BhxwGbk3jTNAJLd7P8xtH7.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>"; };
@@ -716,8 +716,8 @@
64C8299D2D54AEEE006B9E89 /* libgmp.a in Frameworks */,
64C8299E2D54AEEE006B9E89 /* libffi.a in Frameworks */,
64C829A12D54AEEE006B9E89 /* libgmpxx.a in Frameworks */,
64C8299F2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.9-IckAKQLBKZZ3c4EBa1qhzo-ghc9.6.3.a in Frameworks */,
64C829A02D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.9-IckAKQLBKZZ3c4EBa1qhzo.a in Frameworks */,
64C8299F2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.10-BhxwGbk3jTNAJLd7P8xtH7-ghc9.6.3.a in Frameworks */,
64C829A02D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.10-BhxwGbk3jTNAJLd7P8xtH7.a in Frameworks */,
CE38A29C2C3FCD72005ED185 /* SwiftyGif in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -803,8 +803,8 @@
64C829992D54AEEE006B9E89 /* libffi.a */,
64C829982D54AEED006B9E89 /* libgmp.a */,
64C8299C2D54AEEE006B9E89 /* libgmpxx.a */,
64C8299A2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.9-IckAKQLBKZZ3c4EBa1qhzo-ghc9.6.3.a */,
64C8299B2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.9-IckAKQLBKZZ3c4EBa1qhzo.a */,
64C8299A2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.10-BhxwGbk3jTNAJLd7P8xtH7-ghc9.6.3.a */,
64C8299B2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.10-BhxwGbk3jTNAJLd7P8xtH7.a */,
);
path = Libraries;
sourceTree = "<group>";
+4 -4
View File
@@ -1754,7 +1754,7 @@ snd error text */
"Find chats faster" = "Najděte chaty rychleji";
/* server test error */
"Fingerprint in server address does not match certificate." = "Je možné, že otisk certifikátu v adrese serveru je nesprávný";
"Fingerprint in server address does not match certificate." = "Otisk certifikátu v adrese serveru neodpovídá.";
/* No comment provided by engineer. */
"Fix" = "Opravit";
@@ -2390,7 +2390,7 @@ snd error text */
"no text" = "žádný text";
/* No comment provided by engineer. */
"No user identifiers." = "Bez uživatelských identifikátorů";
"No user identifiers." = "Bez uživatelských identifikátorů.";
/* No comment provided by engineer. */
"Notifications" = "Oznámení";
@@ -2980,10 +2980,10 @@ chat item action */
"Sent messages will be deleted after set time." = "Odeslané zprávy se po uplynutí nastavené doby odstraní.";
/* server test error */
"Server requires authorization to create queues, check password." = "Server vyžaduje autorizaci pro vytváření front, zkontrolujte heslo";
"Server requires authorization to create queues, check password." = "Server vyžaduje autorizaci pro vytváření front, zkontrolujte heslo.";
/* server test error */
"Server requires authorization to upload, check password." = "Server vyžaduje autorizaci pro nahrávání, zkontrolujte heslo";
"Server requires authorization to upload, check password." = "Server vyžaduje autorizaci pro nahrávání, zkontrolujte heslo.";
/* No comment provided by engineer. */
"Server test failed!" = "Test serveru se nezdařil!";
+48
View File
@@ -512,6 +512,9 @@ swipe action */
/* feature role */
"all members" = "Alle Mitglieder";
/* No comment provided by engineer. */
"All messages" = "Alle Nachrichten";
/* No comment provided by engineer. */
"All messages and files are sent **end-to-end encrypted**, with post-quantum security in direct messages." = "Alle Nachrichten und Dateien werden **Ende-zu-Ende verschlüsselt** versendet - in Direkt-Nachrichten mit Post-Quantum-Security.";
@@ -734,6 +737,9 @@ swipe action */
/* No comment provided by engineer. */
"Audio and video calls" = "Audio- und Videoanrufe";
/* No comment provided by engineer. */
"Audio call" = "Audioanruf";
/* No comment provided by engineer. */
"audio call (not e2e encrypted)" = "Audioanruf (nicht E2E verschlüsselt)";
@@ -1730,6 +1736,12 @@ swipe action */
/* No comment provided by engineer. */
"Delete member message?" = "Nachricht des Mitglieds löschen?";
/* No comment provided by engineer. */
"Delete member messages" = "Mitgliedsnachrichten löschen";
/* alert title */
"Delete member messages?" = "Mitgliedsnachrichten löschen?";
/* No comment provided by engineer. */
"Delete message?" = "Die Nachricht löschen?";
@@ -2565,6 +2577,9 @@ snd error text */
/* No comment provided by engineer. */
"Files and media prohibited!" = "Dateien und Medien sind nicht erlaubt!";
/* No comment provided by engineer. */
"Filter" = "Filter";
/* No comment provided by engineer. */
"Filter unread and favorite chats." = "Nach ungelesenen und favorisierten Chats filtern.";
@@ -2868,6 +2883,9 @@ snd error text */
/* No comment provided by engineer. */
"Image will be received when your contact is online, please wait or check later!" = "Das Bild wird heruntergeladen, sobald Ihr Kontakt online ist. Bitte warten oder schauen Sie später nochmal nach!";
/* No comment provided by engineer. */
"Images" = "Bilder";
/* No comment provided by engineer. */
"Immediately" = "Sofort";
@@ -3051,6 +3069,9 @@ snd error text */
/* No comment provided by engineer. */
"Invite friends" = "Freunde einladen";
/* No comment provided by engineer. */
"Invite member" = "Mitglied einladen";
/* No comment provided by engineer. */
"Invite members" = "Mitglieder einladen";
@@ -3204,6 +3225,9 @@ snd error text */
/* No comment provided by engineer. */
"Linked desktops" = "Verknüpfte Desktops";
/* No comment provided by engineer. */
"Links" = "Links";
/* swipe action */
"List" = "Liste";
@@ -3297,6 +3321,9 @@ snd error text */
/* No comment provided by engineer. */
"Member is deleted - can't accept request" = "Mitglied ist gelöscht - Anfrage kann nicht angenommen werden";
/* alert message */
"Member messages will be deleted - this cannot be undone!" = "Mitgliedsnachrichten werden gelöscht. Dies kann nicht rückgängig gemacht werden!";
/* chat feature */
"Member reports" = "Mitglieder-Meldungen";
@@ -4384,6 +4411,9 @@ swipe action */
/* alert action */
"Remove" = "Entfernen";
/* alert action */
"Remove and delete messages" = "Mitglied entfernen und Nachrichten löschen";
/* No comment provided by engineer. */
"Remove archive?" = "Archiv entfernen?";
@@ -4691,9 +4721,24 @@ chat item action */
/* No comment provided by engineer. */
"Search bar accepts invitation links." = "In der Suchleiste werden nun auch Einladungslinks angenommen.";
/* No comment provided by engineer. */
"Search files" = "Dateien suchen";
/* No comment provided by engineer. */
"Search images" = "Bilder suchen";
/* No comment provided by engineer. */
"Search links" = "Links suchen";
/* No comment provided by engineer. */
"Search or paste SimpleX link" = "Suchen oder SimpleX-Link einfügen";
/* No comment provided by engineer. */
"Search videos" = "Videos suchen";
/* No comment provided by engineer. */
"Search voice messages" = "Sprachnachrichten suchen";
/* network option */
"sec" = "sek";
@@ -5899,6 +5944,9 @@ report reason */
/* No comment provided by engineer. */
"Video will be received when your contact is online, please wait or check later!" = "Das Video wird heruntergeladen, sobald Ihr Kontakt online ist. Bitte warten oder überprüfen Sie es später!";
/* No comment provided by engineer. */
"Videos" = "Videos";
/* No comment provided by engineer. */
"Videos and files up to 1gb" = "Videos und Dateien bis zu 1GB";
+51 -3
View File
@@ -257,7 +257,7 @@
"`a + b`" = "\\`a + b`";
/* email text */
"<p>Hi!</p>\n<p><a href=\"%@\">Connect to me via SimpleX Chat</a></p>" = "<p>¡Hola!</p>\n<p><a href=\"%@\"> Conecta conmigo a través de SimpleX Chat</a></p>";
"<p>Hi!</p>\n<p><a href=\"%@\">Connect to me via SimpleX Chat</a></p>" = "<p>¡Hola!</p>\n<p><a href=\"%@\">Conecta conmigo a través de SimpleX Chat</a></p>";
/* No comment provided by engineer. */
"~strike~" = "\\~strike~";
@@ -512,6 +512,9 @@ swipe action */
/* feature role */
"all members" = "todos los miembros";
/* No comment provided by engineer. */
"All messages" = "Todos los mensajes";
/* No comment provided by engineer. */
"All messages and files are sent **end-to-end encrypted**, with post-quantum security in direct messages." = "Todos los mensajes y archivos son enviados **cifrados de extremo a extremo** y con seguridad de cifrado postcuántico en mensajes directos.";
@@ -734,6 +737,9 @@ swipe action */
/* No comment provided by engineer. */
"Audio and video calls" = "Llamadas y videollamadas";
/* No comment provided by engineer. */
"Audio call" = "Llamada";
/* No comment provided by engineer. */
"audio call (not e2e encrypted)" = "llamada (sin cifrar)";
@@ -1730,6 +1736,12 @@ swipe action */
/* No comment provided by engineer. */
"Delete member message?" = "¿Eliminar el mensaje de miembro?";
/* No comment provided by engineer. */
"Delete member messages" = "Eliminar mensajes del miembro";
/* alert title */
"Delete member messages?" = "¿Eliminar mensajes del miembro?";
/* No comment provided by engineer. */
"Delete message?" = "¿Eliminar mensaje?";
@@ -2565,6 +2577,9 @@ snd error text */
/* No comment provided by engineer. */
"Files and media prohibited!" = "¡Archivos y multimedia no permitidos!";
/* No comment provided by engineer. */
"Filter" = "Filtro";
/* No comment provided by engineer. */
"Filter unread and favorite chats." = "Filtra chats no leídos y favoritos.";
@@ -2868,6 +2883,9 @@ snd error text */
/* No comment provided by engineer. */
"Image will be received when your contact is online, please wait or check later!" = "La imagen se recibirá cuando el contacto esté en línea, ¡por favor espera o revisa más tarde!";
/* No comment provided by engineer. */
"Images" = "Imágenes";
/* No comment provided by engineer. */
"Immediately" = "Inmediatamente";
@@ -3051,6 +3069,9 @@ snd error text */
/* No comment provided by engineer. */
"Invite friends" = "Invitar amigos";
/* No comment provided by engineer. */
"Invite member" = "Invitar miembro";
/* No comment provided by engineer. */
"Invite members" = "Invitar miembros";
@@ -3204,6 +3225,9 @@ snd error text */
/* No comment provided by engineer. */
"Linked desktops" = "Ordenadores enlazados";
/* No comment provided by engineer. */
"Links" = "Enlaces";
/* swipe action */
"List" = "Lista";
@@ -3297,6 +3321,9 @@ snd error text */
/* No comment provided by engineer. */
"Member is deleted - can't accept request" = "Miembro eliminado, no puede aceptar solicitudes";
/* alert message */
"Member messages will be deleted - this cannot be undone!" = "Los mensajes del miembro serán eliminados. ¡No puede deshacerse!";
/* chat feature */
"Member reports" = "Informes de miembros";
@@ -3939,7 +3966,7 @@ new chat action */
"Or securely share this file link" = "O comparte de forma segura este enlace al archivo";
/* No comment provided by engineer. */
"Or show this code" = "O muestra el código QR";
"Or show this code" = "O muestra este código";
/* No comment provided by engineer. */
"Or to share privately" = "O para compartir en privado";
@@ -4384,6 +4411,9 @@ swipe action */
/* alert action */
"Remove" = "Eliminar";
/* alert action */
"Remove and delete messages" = "Eliminar miembro y sus mensajes";
/* No comment provided by engineer. */
"Remove archive?" = "¿Eliminar archivo?";
@@ -4691,9 +4721,24 @@ chat item action */
/* No comment provided by engineer. */
"Search bar accepts invitation links." = "La barra de búsqueda acepta enlaces de invitación.";
/* No comment provided by engineer. */
"Search files" = "Buscar archivos";
/* No comment provided by engineer. */
"Search images" = "Buscar imágenes";
/* No comment provided by engineer. */
"Search links" = "Buscar enlaces";
/* No comment provided by engineer. */
"Search or paste SimpleX link" = "Buscar o pegar enlace SimpleX";
/* No comment provided by engineer. */
"Search videos" = "Buscar vídeos";
/* No comment provided by engineer. */
"Search voice messages" = "Buscar mensajes de voz";
/* network option */
"sec" = "seg";
@@ -5687,7 +5732,7 @@ report reason */
"Unmute" = "Activar audio";
/* No comment provided by engineer. */
"unprotected" = "con IP desprotegida";
"unprotected" = "desprotegida";
/* swipe action */
"Unread" = "No leído";
@@ -5899,6 +5944,9 @@ report reason */
/* No comment provided by engineer. */
"Video will be received when your contact is online, please wait or check later!" = "El vídeo se recibirá cuando el contacto esté en línea, por favor espera o revisa más tarde.";
/* No comment provided by engineer. */
"Videos" = "Vídeos";
/* No comment provided by engineer. */
"Videos and files up to 1gb" = "Vídeos y archivos de hasta 1Gb";
+53 -5
View File
@@ -5,7 +5,7 @@
"_italic_" = "\\_dőlt_";
/* No comment provided by engineer. */
"- connect to [directory service](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!\n- delivery receipts (up to 20 members).\n- faster and more stable." = "- kapcsolódás a [könyvtár szolgáltatáshoz](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!\n- kézbesítési jelentések (legfeljebb 20 tag).\n- gyorsabb és stabilabb.";
"- connect to [directory service](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!\n- delivery receipts (up to 20 members).\n- faster and more stable." = "- kapcsolódás a [könyvtárszolgáltatáshoz](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!\n- kézbesítési jelentések (legfeljebb 20 tagig).\n- gyorsabb és stabilabb.";
/* No comment provided by engineer. */
"- more stable message delivery.\n- a bit better groups.\n- and more!" = "- stabilabb üzenetkézbesítés.\n- picit továbbfejlesztett csoportok.\n- és még sok más!";
@@ -512,6 +512,9 @@ swipe action */
/* feature role */
"all members" = "összes tag";
/* No comment provided by engineer. */
"All messages" = "Összes üzenet";
/* No comment provided by engineer. */
"All messages and files are sent **end-to-end encrypted**, with post-quantum security in direct messages." = "Az összes üzenet és fájl **végpontok közötti titkosítással**, a közvetlen üzenetek továbbá kvantumbiztos titkosítással is rendelkeznek.";
@@ -734,6 +737,9 @@ swipe action */
/* No comment provided by engineer. */
"Audio and video calls" = "Hang- és videóhívások";
/* No comment provided by engineer. */
"Audio call" = "Hanghívás";
/* No comment provided by engineer. */
"audio call (not e2e encrypted)" = "hanghívás (végpontok között NEM titkosított)";
@@ -1177,7 +1183,7 @@ set passcode view */
"Compare security codes with your contacts." = "Biztonsági kódok összehasonlítása a partnerekével.";
/* No comment provided by engineer. */
"complete" = "befejezett";
"complete" = "kész";
/* No comment provided by engineer. */
"Completed" = "Elkészült";
@@ -1730,6 +1736,12 @@ swipe action */
/* No comment provided by engineer. */
"Delete member message?" = "Törli a tag üzenetét?";
/* No comment provided by engineer. */
"Delete member messages" = "Tag üzeneteinek törlése";
/* alert title */
"Delete member messages?" = "Törli a tag üzeneteit?";
/* No comment provided by engineer. */
"Delete message?" = "Törli az üzenetet?";
@@ -2565,6 +2577,9 @@ snd error text */
/* No comment provided by engineer. */
"Files and media prohibited!" = "A fájlok és a médiatartalmak küldése le van tiltva!";
/* No comment provided by engineer. */
"Filter" = "Szűrő";
/* No comment provided by engineer. */
"Filter unread and favorite chats." = "Olvasatlan és kedvenc csevegésekre való szűrés.";
@@ -2868,6 +2883,9 @@ snd error text */
/* No comment provided by engineer. */
"Image will be received when your contact is online, please wait or check later!" = "A kép akkor érkezik meg, amikor a küldője elérhető lesz, várjon, vagy ellenőrizze később!";
/* No comment provided by engineer. */
"Images" = "Képek";
/* No comment provided by engineer. */
"Immediately" = "Azonnal";
@@ -3051,6 +3069,9 @@ snd error text */
/* No comment provided by engineer. */
"Invite friends" = "Barátok meghívása";
/* No comment provided by engineer. */
"Invite member" = "Tag meghívása";
/* No comment provided by engineer. */
"Invite members" = "Tagok meghívása";
@@ -3204,6 +3225,9 @@ snd error text */
/* No comment provided by engineer. */
"Linked desktops" = "Társított számítógépek";
/* No comment provided by engineer. */
"Links" = "Hivatkozások";
/* swipe action */
"List" = "Lista";
@@ -3297,6 +3321,9 @@ snd error text */
/* No comment provided by engineer. */
"Member is deleted - can't accept request" = "A tag törölve lett nem lehet elfogadni a kérést";
/* alert message */
"Member messages will be deleted - this cannot be undone!" = "A tag üzenetei törölve lesznek ez a művelet nem vonható vissza!";
/* chat feature */
"Member reports" = "Tagok jelentései";
@@ -3463,7 +3490,7 @@ snd error text */
"Migrating database archive…" = "Adatbázis-archívum átköltöztetése…";
/* No comment provided by engineer. */
"Migration complete" = "Átköltöztetés befejezve";
"Migration complete" = "Átköltöztetés kész";
/* No comment provided by engineer. */
"Migration error:" = "Átköltöztetési hiba:";
@@ -3472,7 +3499,7 @@ snd error text */
"Migration failed. Tap **Skip** below to continue using the current database. Please report the issue to the app developers via chat or email [chat@simplex.chat](mailto:chat@simplex.chat)." = "Sikertelen átköltöztetés. Koppintson a **Kihagyás** beállításra a jelenlegi adatbázis használatának folytatásához. Jelentse a problémát az alkalmazás fejlesztőinek csevegésben vagy e-mailben [chat@simplex.chat](mailto:chat@simplex.chat).";
/* No comment provided by engineer. */
"Migration is completed" = "Az átköltöztetés befejeződött";
"Migration is completed" = "Az átköltöztetés elkészült";
/* No comment provided by engineer. */
"Migrations:" = "Átköltöztetések:";
@@ -4086,7 +4113,7 @@ new chat action */
"Please wait for group moderators to review your request to join the group." = "Várja meg, amíg a csoport moderátorai áttekintik a csoporthoz való csatlakozási kérését.";
/* token info */
"Please wait for token activation to complete." = "Várjon, amíg a token aktiválása befejeződik.";
"Please wait for token activation to complete." = "Várjon, amíg a token aktiválása elkészül.";
/* token info */
"Please wait for token to be registered." = "Várjon a token regisztrálására.";
@@ -4384,6 +4411,9 @@ swipe action */
/* alert action */
"Remove" = "Eltávolítás";
/* alert action */
"Remove and delete messages" = "Eltávolítás és az üzeneteinek törlése";
/* No comment provided by engineer. */
"Remove archive?" = "Eltávolítja az archívumot?";
@@ -4691,9 +4721,24 @@ chat item action */
/* No comment provided by engineer. */
"Search bar accepts invitation links." = "A keresősáv elfogadja a meghívási hivatkozásokat.";
/* No comment provided by engineer. */
"Search files" = "Fájlok keresése";
/* No comment provided by engineer. */
"Search images" = "Képek keresése";
/* No comment provided by engineer. */
"Search links" = "Hivatkozások keresése";
/* No comment provided by engineer. */
"Search or paste SimpleX link" = "Keresés vagy SimpleX-hivatkozás beillesztése";
/* No comment provided by engineer. */
"Search videos" = "Videók keresése";
/* No comment provided by engineer. */
"Search voice messages" = "Hangüzenetek keresése";
/* network option */
"sec" = "mp";
@@ -5899,6 +5944,9 @@ report reason */
/* No comment provided by engineer. */
"Video will be received when your contact is online, please wait or check later!" = "A videó akkor érkezik meg, amikor a küldője elérhető lesz, várjon, vagy ellenőrizze később!";
/* No comment provided by engineer. */
"Videos" = "Videók";
/* No comment provided by engineer. */
"Videos and files up to 1gb" = "Videók és fájlok legfeljebb 1GB méretig";
+48
View File
@@ -512,6 +512,9 @@ swipe action */
/* feature role */
"all members" = "tutti i membri";
/* No comment provided by engineer. */
"All messages" = "Tutti i messaggi";
/* No comment provided by engineer. */
"All messages and files are sent **end-to-end encrypted**, with post-quantum security in direct messages." = "Tutti i messaggi e i file vengono inviati **crittografati end-to-end**, con sicurezza resistenti alla quantistica nei messaggi diretti.";
@@ -734,6 +737,9 @@ swipe action */
/* No comment provided by engineer. */
"Audio and video calls" = "Chiamate audio e video";
/* No comment provided by engineer. */
"Audio call" = "Chiamata audio";
/* No comment provided by engineer. */
"audio call (not e2e encrypted)" = "chiamata audio (non crittografata e2e)";
@@ -1730,6 +1736,12 @@ swipe action */
/* No comment provided by engineer. */
"Delete member message?" = "Eliminare il messaggio del membro?";
/* No comment provided by engineer. */
"Delete member messages" = "Elimina i messaggi del membro";
/* alert title */
"Delete member messages?" = "Eliminare i messaggi del membro?";
/* No comment provided by engineer. */
"Delete message?" = "Eliminare il messaggio?";
@@ -2565,6 +2577,9 @@ snd error text */
/* No comment provided by engineer. */
"Files and media prohibited!" = "File e contenuti multimediali vietati!";
/* No comment provided by engineer. */
"Filter" = "Filtro";
/* No comment provided by engineer. */
"Filter unread and favorite chats." = "Filtra le chat non lette e preferite.";
@@ -2868,6 +2883,9 @@ snd error text */
/* No comment provided by engineer. */
"Image will be received when your contact is online, please wait or check later!" = "L'immagine verrà ricevuta quando il tuo contatto sarà in linea, aspetta o controlla più tardi!";
/* No comment provided by engineer. */
"Images" = "Immagini";
/* No comment provided by engineer. */
"Immediately" = "Immediatamente";
@@ -3051,6 +3069,9 @@ snd error text */
/* No comment provided by engineer. */
"Invite friends" = "Invita amici";
/* No comment provided by engineer. */
"Invite member" = "Invita membro";
/* No comment provided by engineer. */
"Invite members" = "Invita membri";
@@ -3204,6 +3225,9 @@ snd error text */
/* No comment provided by engineer. */
"Linked desktops" = "Desktop collegati";
/* No comment provided by engineer. */
"Links" = "Link";
/* swipe action */
"List" = "Elenco";
@@ -3297,6 +3321,9 @@ snd error text */
/* No comment provided by engineer. */
"Member is deleted - can't accept request" = "Il membro è eliminato - impossibile accettare la richiesta";
/* alert message */
"Member messages will be deleted - this cannot be undone!" = "I messaggi del membro verranno eliminati. Non è reversibile!";
/* chat feature */
"Member reports" = "Segnalazioni dei membri";
@@ -4384,6 +4411,9 @@ swipe action */
/* alert action */
"Remove" = "Rimuovi";
/* alert action */
"Remove and delete messages" = "Rimuovi ed elimina i messaggi";
/* No comment provided by engineer. */
"Remove archive?" = "Rimuovere l'archivio?";
@@ -4691,9 +4721,24 @@ chat item action */
/* No comment provided by engineer. */
"Search bar accepts invitation links." = "La barra di ricerca accetta i link di invito.";
/* No comment provided by engineer. */
"Search files" = "Cerca file";
/* No comment provided by engineer. */
"Search images" = "Cerca immagini";
/* No comment provided by engineer. */
"Search links" = "Cerca link";
/* No comment provided by engineer. */
"Search or paste SimpleX link" = "Cerca o incolla un link SimpleX";
/* No comment provided by engineer. */
"Search videos" = "Cerca video";
/* No comment provided by engineer. */
"Search voice messages" = "Cerca messaggi vocali";
/* network option */
"sec" = "sec";
@@ -5899,6 +5944,9 @@ report reason */
/* No comment provided by engineer. */
"Video will be received when your contact is online, please wait or check later!" = "Il video verrà ricevuto quando il tuo contatto sarà in linea, attendi o controlla più tardi!";
/* No comment provided by engineer. */
"Videos" = "Video";
/* No comment provided by engineer. */
"Videos and files up to 1gb" = "Video e file fino a 1 GB";
File diff suppressed because it is too large Load Diff
@@ -509,6 +509,9 @@ swipe action */
/* feature role */
"all members" = "所有成员";
/* No comment provided by engineer. */
"All messages" = "所有消息";
/* No comment provided by engineer. */
"All messages and files are sent **end-to-end encrypted**, with post-quantum security in direct messages." = "所有消息和文件均通过**端到端加密**发送;私信以量子安全方式发送。";
@@ -731,6 +734,9 @@ swipe action */
/* No comment provided by engineer. */
"Audio and video calls" = "语音和视频通话";
/* No comment provided by engineer. */
"Audio call" = "语音通话";
/* No comment provided by engineer. */
"audio call (not e2e encrypted)" = "语音通话(非端到端加密)";
@@ -1727,6 +1733,9 @@ swipe action */
/* No comment provided by engineer. */
"Delete member message?" = "删除成员消息?";
/* No comment provided by engineer. */
"Delete member messages" = "删除成员消息";
/* No comment provided by engineer. */
"Delete message?" = "删除消息吗?";
@@ -2559,6 +2568,9 @@ snd error text */
/* No comment provided by engineer. */
"Files and media prohibited!" = "禁止文件和媒体!";
/* No comment provided by engineer. */
"Filter" = "过滤器";
/* No comment provided by engineer. */
"Filter unread and favorite chats." = "过滤未读和收藏的聊天记录。";
@@ -2862,6 +2874,9 @@ snd error text */
/* No comment provided by engineer. */
"Image will be received when your contact is online, please wait or check later!" = "图片将在您的联系人在线时收到,请稍等或稍后查看!";
/* No comment provided by engineer. */
"Images" = "图片";
/* No comment provided by engineer. */
"Immediately" = "立即";
@@ -3045,6 +3060,9 @@ snd error text */
/* No comment provided by engineer. */
"Invite friends" = "邀请朋友";
/* No comment provided by engineer. */
"Invite member" = "邀请成员";
/* No comment provided by engineer. */
"Invite members" = "邀请成员";
@@ -3198,6 +3216,9 @@ snd error text */
/* No comment provided by engineer. */
"Linked desktops" = "已链接桌面";
/* No comment provided by engineer. */
"Links" = "链接";
/* swipe action */
"List" = "列表";
@@ -4372,6 +4393,9 @@ swipe action */
/* alert action */
"Remove" = "移除";
/* alert action */
"Remove and delete messages" = "移除并删除消息";
/* No comment provided by engineer. */
"Remove archive?" = "删除存档?";
@@ -4676,9 +4700,24 @@ chat item action */
/* No comment provided by engineer. */
"Search bar accepts invitation links." = "搜索栏接受邀请链接。";
/* No comment provided by engineer. */
"Search files" = "搜索文件";
/* No comment provided by engineer. */
"Search images" = "搜索图片";
/* No comment provided by engineer. */
"Search links" = "搜索链接";
/* No comment provided by engineer. */
"Search or paste SimpleX link" = "搜索或粘贴 SimpleX 链接";
/* No comment provided by engineer. */
"Search videos" = "搜索视频";
/* No comment provided by engineer. */
"Search voice messages" = "搜索语音消息";
/* network option */
"sec" = "秒";
@@ -5872,6 +5911,9 @@ report reason */
/* No comment provided by engineer. */
"Video will be received when your contact is online, please wait or check later!" = "视频将在您的联系人在线时收到,请稍等或稍后查看!";
/* No comment provided by engineer. */
"Videos" = "视频";
/* No comment provided by engineer. */
"Videos and files up to 1gb" = "最大 1gb 的视频和文件";
@@ -772,7 +772,9 @@ fun ChatView(
changeNtfsState = { enabled, currentValue -> toggleNotifications(chatRh, chatInfo, enabled, chatModel, currentValue) },
onSearchValueChanged = onSearchValueChanged,
closeSearch = {
onSearchValueChanged("")
if (chatModel.openAroundItemId.value == null) {
onSearchValueChanged("")
}
showSearch.value = false
searchText.value = ""
contentFilter.value = null
@@ -993,7 +995,7 @@ fun ChatLayout(
useLinkPreviews, linkMode, scrollToItemId, selectedChatItems, showMemberInfo, showChatInfo = info, loadMessages, deleteMessage, deleteMessages, archiveReports,
receiveFile, cancelFile, joinGroup, acceptCall, acceptFeature, openDirectChat, forwardItem,
updateContactStats, updateMemberStats, syncContactConnection, syncMemberConnection, findModelChat, findModelMember,
setReaction, showItemDetails, markItemsRead, markChatRead, closeSearch, remember { { onComposed(it) } }, developerTools, showViaProxy,
setReaction, showItemDetails, markItemsRead, markChatRead, closeSearch, remember { { onComposed(it) } }, developerTools, showViaProxy, contentFilter,
)
}
if (chatInfo is ChatInfo.Group && composeState.value.message.text.isNotEmpty()) {
@@ -1168,6 +1170,7 @@ fun BoxScope.ChatInfoToolbar(
val scope = rememberCoroutineScope()
val showMenu = rememberSaveable { mutableStateOf(false) }
val showContentFilterMenu = rememberSaveable { mutableStateOf(false) }
val showCallMenu = rememberSaveable { mutableStateOf(false) }
val onBackClicked = {
if (!showSearch.value) {
@@ -1186,35 +1189,28 @@ fun BoxScope.ChatInfoToolbar(
val activeCall by remember { chatModel.activeCall }
val showContentFilterButton = availableContent.value.isNotEmpty()
val activeCallInChat = chatInfo is ChatInfo.Direct && activeCall?.contact?.id == chatInfo.id
val canStartCall = chatInfo is ChatInfo.Direct &&
chatInfo.contact.mergedPreferences.calls.enabled.forUser &&
chatInfo.contact.ready &&
chatInfo.contact.active &&
activeCall == null
// Content filter button - shown in bar, or moved to menu during active call
if (showContentFilterButton) {
// Content filter button: always in bar on desktop and for groups; on Android for direct chats it
// goes into the three-dots menu UNLESS calls are unavailable, in which case it appears in the bar
if (showContentFilterButton && (appPlatform.isDesktop || chatInfo is ChatInfo.Group ||
(appPlatform.isAndroid && chatInfo is ChatInfo.Direct && !canStartCall && activeCall == null))) {
val enabled = chatInfo !is ChatInfo.Local || chatInfo.noteFolder.ready
if (activeCallInChat) {
menuItems.add {
ItemAction(
stringResource(MR.strings.content_filter_menu_item),
barButtons.add {
IconButton(
{ showContentFilterMenu.value = true },
enabled = enabled
) {
Icon(
painterResource(MR.images.ic_photo_library),
onClick = {
showMenu.value = false
showContentFilterMenu.value = true
}
null,
tint = MaterialTheme.colors.primary
)
}
} else {
barButtons.add {
IconButton(
{ showContentFilterMenu.value = true },
enabled = enabled
) {
Icon(
painterResource(MR.images.ic_photo_library),
null,
tint = MaterialTheme.colors.primary
)
}
}
}
}
@@ -1268,19 +1264,12 @@ fun BoxScope.ChatInfoToolbar(
}
}
}
// Call buttons moved to menu
if (chatInfo.contact.mergedPreferences.calls.enabled.forUser && chatInfo.contact.ready && chatInfo.contact.active && activeCall == null) {
menuItems.add {
ItemAction(stringResource(MR.strings.icon_descr_audio_call).capitalize(Locale.current), painterResource(MR.images.ic_call_500), onClick = {
showMenu.value = false
startCall(CallMediaType.Audio)
})
}
menuItems.add {
ItemAction(stringResource(MR.strings.icon_descr_video_call).capitalize(Locale.current), painterResource(MR.images.ic_videocam), onClick = {
showMenu.value = false
startCall(CallMediaType.Video)
})
// Call button always in toolbar; tap opens Audio/Video call submenu
if (canStartCall) {
barButtons.add(0) {
IconButton({ showCallMenu.value = true }) {
Icon(painterResource(MR.images.ic_call_500), null, tint = MaterialTheme.colors.primary)
}
}
}
menuItems.add {
@@ -1339,6 +1328,53 @@ fun BoxScope.ChatInfoToolbar(
}
}
// Android only: for direct/local chats where the filter bar button is NOT shown, filter options go in the three-dots menu separated by a divider
if (appPlatform.isAndroid && chatInfo !is ChatInfo.Group && showContentFilterButton &&
!(chatInfo is ChatInfo.Direct && !canStartCall && activeCall == null)) {
menuItems.add { Divider() }
availableContent.value.forEach { filter ->
menuItems.add {
val isSelected = contentFilter.value == filter
ItemAction(
stringResource(filter.label),
painterResource(if (isSelected) filter.iconFilled else filter.icon),
color = if (isSelected) MaterialTheme.colors.primary else Color.Unspecified,
onClick = {
showMenu.value = false
if (contentFilter.value == filter) return@ItemAction
contentFilter.value = filter
showSearch.value = true
scope.launch {
val c = chatModel.getChat(chatInfo.id)
if (c != null) {
apiFindMessages(chatsCtx, c, filter.contentTag, "")
}
}
}
)
}
}
if (showSearch.value) {
menuItems.add {
ItemAction(
stringResource(MR.strings.content_filter_all_messages),
painterResource(MR.images.ic_forum),
onClick = {
showMenu.value = false
contentFilter.value = null
showSearch.value = false
scope.launch {
val c = chatModel.getChat(chatInfo.id)
if (c != null) {
apiFindMessages(chatsCtx, c, null, "")
}
}
}
)
}
}
}
if (menuItems.isNotEmpty()) {
barButtons.add {
IconButton({ showMenu.value = true }) {
@@ -1448,6 +1484,38 @@ fun BoxScope.ChatInfoToolbar(
contentFilterMenuItems.forEach { it() }
}
}
val callMenuWidth = remember { mutableStateOf(250.dp) }
val callMenuHeight = remember { mutableStateOf(0.dp) }
DefaultDropdownMenu(
showCallMenu,
modifier = Modifier.onSizeChanged { with(density) {
callMenuWidth.value = it.width.toDp().coerceAtLeast(250.dp)
if (oneHandUI.value && chatBottomBar.value && (appPlatform.isDesktop || (platform.androidApiLevel ?: 0) >= 30)) callMenuHeight.value = it.height.toDp()
} },
offset = DpOffset(-callMenuWidth.value, if (oneHandUI.value && chatBottomBar.value) -callMenuHeight.value else AppBarHeight)
) {
if (chatInfo is ChatInfo.Direct) {
val callMenuItems: List<@Composable () -> Unit> = buildList {
add {
ItemAction(stringResource(MR.strings.icon_descr_audio_call).capitalize(Locale.current), painterResource(MR.images.ic_call_500), onClick = {
showCallMenu.value = false
startCall(CallMediaType.Audio)
})
}
add {
ItemAction(stringResource(MR.strings.icon_descr_video_call).capitalize(Locale.current), painterResource(MR.images.ic_videocam), onClick = {
showCallMenu.value = false
startCall(CallMediaType.Video)
})
}
}
if (oneHandUI.value && chatBottomBar.value) {
callMenuItems.asReversed().forEach { it() }
} else {
callMenuItems.forEach { it() }
}
}
}
}
}
@@ -1667,7 +1735,8 @@ fun BoxScope.ChatItemsList(
closeSearch: () -> Unit,
onComposed: suspend (chatId: String) -> Unit,
developerTools: Boolean,
showViaProxy: Boolean
showViaProxy: Boolean,
contentFilter: State<ContentFilter?> = remember { mutableStateOf(null) }
) {
val chatInfo = chat.chatInfo
val loadingTopItems = remember { mutableStateOf(false) }
@@ -1687,7 +1756,7 @@ fun BoxScope.ChatItemsList(
}
}
val searchValueIsEmpty = remember { derivedStateOf { searchValue.value.isEmpty() } }
val searchValueIsNotBlank = remember { derivedStateOf { searchValue.value.isNotBlank() } }
val searchValueIsNotBlank = remember { derivedStateOf { searchValue.value.isNotBlank() || contentFilter.value != null } }
val revealedItems = rememberSaveable(stateSaver = serializableSaver()) { mutableStateOf(setOf<Long>()) }
// not using reversedChatItems inside to prevent possible derivedState bug in Compose when one derived state access can cause crash asking another derived state
val mergedItems = remember {
@@ -1722,7 +1791,17 @@ fun BoxScope.ChatItemsList(
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() }
val index = mergedItems.value.indexInParentItems[openAroundItemId] ?: run {
// scroll to first unread after last viewed item (items reversed: 0 = newest)
val viewedIdx = mergedItems.value.items.indexOfFirst { !it.hasUnread() }
if (viewedIdx > 0) {
viewedIdx - 1
} else if (viewedIdx < 0) {
mergedItems.value.items.indexOfLast { it.hasUnread() }
} else {
0 // viewed is bottom item, scroll to bottom
}
}
val reportsState = reportsListState
if (openAroundItemId != null) {
highlightedItems.value += openAroundItemId
@@ -1818,7 +1897,7 @@ fun BoxScope.ChatItemsList(
}
@Composable
fun ChatItemViewShortHand(cItem: ChatItem, itemSeparation: ItemSeparation, range: State<IntRange?>, fillMaxWidth: Boolean = true) {
fun ChatItemViewShortHand(cItem: ChatItem, itemSeparation: ItemSeparation, range: State<IntRange?>, fillMaxWidth: Boolean = true, swipeOffset: Float = 0f) {
tryOrShowError("${cItem.id}ChatItem", error = {
CIBrokenComposableView(if (cItem.chatDir.sent) Alignment.CenterEnd else Alignment.CenterStart)
}) {
@@ -1832,7 +1911,7 @@ fun BoxScope.ChatItemsList(
highlightedItems.value = setOf()
}
}
ChatItemView(chatsCtx, remoteHostId, chat, 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, scrollToItemId = scrollToItemId, scrollToQuotedItemFromItem = scrollToQuotedItemFromItem, setReaction = setReaction, showItemDetails = showItemDetails, reveal = reveal, showMemberInfo = showMemberInfo, showChatInfo = showChatInfo, developerTools = developerTools, showViaProxy = showViaProxy, itemSeparation = itemSeparation, showTimestamp = itemSeparation.timestamp)
ChatItemView(chatsCtx, remoteHostId, chat, 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, scrollToItemId = scrollToItemId, scrollToQuotedItemFromItem = scrollToQuotedItemFromItem, setReaction = setReaction, showItemDetails = showItemDetails, reveal = reveal, showMemberInfo = showMemberInfo, showChatInfo = showChatInfo, developerTools = developerTools, showViaProxy = showViaProxy, itemSeparation = itemSeparation, showTimestamp = itemSeparation.timestamp, swipeOffset = swipeOffset)
}
}
@@ -1953,7 +2032,7 @@ fun BoxScope.ChatItemsList(
MemberImage(member)
}
Box(modifier = Modifier.padding(top = 2.dp, start = 4.dp).chatItemOffset(cItem, itemSeparation.largeGap, revealed = revealed.value)) {
ChatItemViewShortHand(cItem, itemSeparation, range, false)
ChatItemViewShortHand(cItem, itemSeparation, range, false, dismissState.offset.value)
}
}
}
@@ -1978,7 +2057,7 @@ fun BoxScope.ChatItemsList(
.chatItemOffset(cItem, itemSeparation.largeGap, revealed = revealed.value)
.then(swipeableOrSelectionModifier)
) {
ChatItemViewShortHand(cItem, itemSeparation, range)
ChatItemViewShortHand(cItem, itemSeparation, range, swipeOffset = dismissState.offset.value)
}
}
}
@@ -2076,7 +2155,7 @@ fun BoxScope.ChatItemsList(
.chatItemOffset(cItem, itemSeparation.largeGap, revealed = revealed.value)
.then(if (selectionVisible) Modifier else swipeableModifier)
) {
ChatItemViewShortHand(cItem, itemSeparation, range)
ChatItemViewShortHand(cItem, itemSeparation, range, swipeOffset = dismissState.offset.value)
}
}
}
@@ -2094,7 +2173,7 @@ fun BoxScope.ChatItemsList(
.chatItemOffset(cItem, itemSeparation.largeGap, revealed = revealed.value)
.then(if (!selectionVisible || !sent) swipeableOrSelectionModifier else Modifier)
) {
ChatItemViewShortHand(cItem, itemSeparation, range)
ChatItemViewShortHand(cItem, itemSeparation, range, swipeOffset = dismissState.offset.value)
}
}
}
@@ -10,6 +10,7 @@ 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.draw.clip
import androidx.compose.ui.geometry.*
import androidx.compose.ui.graphics.*
@@ -109,6 +110,7 @@ fun ChatItemView(
showTimestamp: Boolean,
itemSeparation: ItemSeparation,
preview: Boolean = false,
swipeOffset: Float = 0f,
) {
val cInfo = chat.chatInfo
val uriHandler = LocalUriHandler.current
@@ -298,8 +300,11 @@ fun ChatItemView(
}
Column(horizontalAlignment = if (cItem.chatDir.sent) Alignment.End else Alignment.Start) {
Row(verticalAlignment = Alignment.CenterVertically) {
val bubbleInteractionSource = remember { MutableInteractionSource() }
val canReply = (cItem.content is CIContent.SndMsgContent || cItem.content is CIContent.RcvMsgContent) &&
cInfo !is ChatInfo.Local && !cItem.isReport && !cItem.meta.isLive && cItem.meta.itemDeleted == null
Box {
Row(verticalAlignment = Alignment.CenterVertically) {
val bubbleInteractionSource = remember { MutableInteractionSource() }
val bubbleHovered = bubbleInteractionSource.collectIsHoveredAsState()
if (cItem.chatDir.sent) {
GoToItemButton(true, bubbleHovered)
@@ -800,6 +805,15 @@ fun ChatItemView(
if (!cItem.chatDir.sent) {
GoToItemButton(false, bubbleHovered)
}
}
if (canReply && swipeOffset < 0) {
Icon(
painterResource(MR.images.ic_reply),
contentDescription = null,
modifier = Modifier.align(Alignment.CenterEnd).offset(x = 26.dp).size(18.dp).alpha(minOf(1f, -swipeOffset / 30f)),
tint = MaterialTheme.colors.secondary
)
}
}
if (cItem.content.msgContent != null && (cItem.meta.itemDeleted == null || revealed.value) && cItem.reactions.isNotEmpty()) {
ChatItemReactions()
@@ -2527,4 +2527,18 @@
<string name="delete_member_messages_confirmation">احذف الرسائل</string>
<string name="member_messages_will_be_deleted_cannot_be_undone">ستُحذف رسائل العضو - ولا يمكن التراجع عن ذلك!</string>
<string name="remove_member_delete_messages_confirmation">أزل واحذف الرسائل</string>
<string name="content_filter_all_messages">كل الرسائل</string>
<string name="info_row_connection_failed">فشل الاتصال</string>
<string name="member_info_member_failed">فشل</string>
<string name="content_filter_files">ملفات</string>
<string name="content_filter_menu_item">تصفية</string>
<string name="content_filter_images">صور</string>
<string name="content_filter_links">روابط</string>
<string name="placeholder_search_files">ابحث عن ملفات</string>
<string name="placeholder_search_images">ابحث عن صور</string>
<string name="placeholder_search_links">ابحث عن روابط</string>
<string name="placeholder_search_videos">ابحث عن فيديوهات</string>
<string name="placeholder_search_voice_messages">ابحث عن رسائل صوتية</string>
<string name="content_filter_videos">فيديوهات</string>
<string name="content_filter_voice_messages">رسائل صوتية</string>
</resources>
@@ -2213,7 +2213,7 @@
<string name="temporary_file_error">Chyba dočasného souboru</string>
<string name="servers_info_transport_sessions_section_header">Přesunout sezení</string>
<string name="network_option_tcp_connection">TCP připojení</string>
<string name="operator_use_operator_toggle_description">Použité servery</string>
<string name="operator_use_operator_toggle_description">Použít servery</string>
<string name="use_servers_of_operator_x">Použit %s</string>
<string name="operator_use_for_messages_receiving">Pro příjem</string>
<string name="color_mode_system">Systém</string>
@@ -2517,7 +2517,7 @@
<string name="cant_send_commands_alert_text">Pro odeslání příkazů musíte být připojen.</string>
<string name="context_user_picker_cant_change_profile_alert_message">Pro použití jiného profilu po pokusu o připojení, smažte chat a znovu použijte odkaz.</string>
<string name="v6_4_1_short_address_update">Aktualizovat vaši adresu</string>
<string name="share_profile_via_link_alert_confirm">Povýšení</string>
<string name="share_profile_via_link_alert_confirm">Povýšit</string>
<string name="share_profile_via_link">Povýšit adresu?</string>
<string name="upgrade_group_link">Povýšit odkaz skupiny</string>
<string name="share_group_profile_via_link">Povýšit odkaz skupiny?</string>
@@ -2528,4 +2528,26 @@
<string name="chat_banner_your_contact">Váš kontakt</string>
<string name="chat_banner_your_group">Vaše skupina</string>
<string name="context_user_picker_your_profile">Váš profil</string>
<string name="content_filter_all_messages">Všechny zprávy</string>
<string name="button_delete_member_messages">Smazat zprávy člena</string>
<string name="button_delete_member_messages_question">Smazat zprávy člena?</string>
<string name="delete_member_messages_confirmation">Smazat zprávy</string>
<string name="content_filter_files">Soubory</string>
<string name="content_filter_menu_item">Filtr</string>
<string name="content_filter_images">Obrázky</string>
<string name="content_filter_links">Odkazy</string>
<string name="member_messages_will_be_deleted_cannot_be_undone">Zprávy člena budou smazány - nemůže být zrušeno!</string>
<string name="server_no_sub">bez předplatného</string>
<string name="remove_member_delete_messages_confirmation">Odebrat a smazat zprávy</string>
<string name="placeholder_search_files">Hledat soubory</string>
<string name="placeholder_search_images">Hledat obrázky</string>
<string name="placeholder_search_links">Hledat odkazy</string>
<string name="placeholder_search_videos">Hledat videa</string>
<string name="placeholder_search_voice_messages">Hledat hlasové zprávy</string>
<string name="content_filter_videos">Videa</string>
<string name="content_filter_voice_messages">Hlasové zprávy</string>
<string name="not_connected_to_server_to_receive_messages_no_sub">Nejste připojen k serveru, který se používá k přijímání zpráv z tohoto připojení (bez předplatného).</string>
<string name="info_row_connection_failed">Připojení selhalo</string>
<string name="member_info_member_failed">selhal</string>
<string name="down_migration_warning_chat_relays">Pokud jste se připojili k nějakým kanálům nebo je vytvořili, přestanou trvale fungovat.</string>
</resources>
@@ -2629,4 +2629,7 @@
<string name="placeholder_search_voice_messages">Sprachnachrichten suchen</string>
<string name="content_filter_videos">Videos</string>
<string name="content_filter_voice_messages">Sprachnachrichten</string>
<string name="info_row_connection_failed">Verbindung fehlgeschlagen</string>
<string name="member_info_member_failed">Fehlgeschlagen</string>
<string name="down_migration_warning_chat_relays">Kanäle, welche Sie erstellt haben oder denen Sie beigetreten sind, werden dauerhaft deaktiviert.</string>
</resources>
@@ -2521,4 +2521,7 @@
<string name="placeholder_search_voice_messages">Αναζήτηση φωνητικών μηνυμάτων</string>
<string name="content_filter_videos">Βίντεο</string>
<string name="content_filter_voice_messages">Φωνητικά μηνύματα</string>
<string name="info_row_connection_failed">Η σύνδεση απέτυχε</string>
<string name="member_info_member_failed">απέτυχε</string>
<string name="down_migration_warning_chat_relays">Αν έχετε συμμετάσχει ή δημιουργήσει κανάλια, θα σταματήσουν να λειτουργούν μόνιμα.</string>
</resources>
@@ -233,7 +233,7 @@
<string name="receipts_section_contacts">Partnerek</string>
<string name="connection_error">Kapcsolódási hiba</string>
<string name="alert_title_contact_connection_pending">A partnere még nem kapcsolódott!</string>
<string name="v5_3_discover_join_groups_descr">- kapcsolódás könyvtár szolgáltatáshoz (BÉTA)!\n- kézbesítési jelentések (legfeljebb 20 tagig).\n- gyorsabb és stabilabb.</string>
<string name="v5_3_discover_join_groups_descr">- kapcsolódás a könyvtárszolgáltatáshoz (BÉTA)!\n- kézbesítési jelentések (legfeljebb 20 tagig).\n- gyorsabb és stabilabb.</string>
<string name="contribute">Közreműködés</string>
<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>
@@ -299,7 +299,7 @@
<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">Törli a fájlokat és a médiatartalmakat?</string>
<string name="group_member_status_complete">befejezett</string>
<string name="group_member_status_complete">kész</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>
<string name="smp_server_test_create_queue">Várólista létrehozása</string>
@@ -1392,7 +1392,7 @@
<string name="you_can_start_chat_via_setting_or_by_restarting_the_app">A csevegés elindítható az alkalmazás „Beállítások / Adatbázis” menüjében vagy az alkalmazás újraindításával.</string>
<string name="verify_code_on_mobile">Kód ellenőrzése a hordozható eszközön</string>
<string name="youve_accepted_group_invitation_connecting_to_inviting_group_member">Ön csatlakozott ehhez a csoporthoz. Kapcsolódás a meghívó csoporttaghoz.</string>
<string name="you_can_connect_to_simplex_chat_founder"><![CDATA[Kapcsolatba léphet <font color="#0088ff">a SimpleX Chat fejlesztőivel, ahol bármiről kérdezhet és értesülhet a friss hírekről</font>.]]></string>
<string name="you_can_connect_to_simplex_chat_founder"><![CDATA[Kapcsolatba léphet <font color="#0088ff">a SimpleX Chat fejlesztőivel, akiktől bármit kérdezhet és értesülhet a friss hírekről</font>.]]></string>
<string name="v4_2_auto_accept_contact_requests_desc">Nem kötelező üdvözlőüzenettel.</string>
<string name="unknown_database_error_with_info">Ismeretlen adatbázishiba: %s</string>
<string name="you_can_hide_or_mute_user_profile">Elrejtheti vagy lenémíthatja a felhasználóprofiljait koppintson (vagy számítógép-alkalmazásban kattintson) hosszan a profilra a felugró menühöz.</string>
@@ -1654,7 +1654,7 @@
<string name="migrate_from_another_device">Átköltöztetés egy másik eszközről</string>
<string name="v5_6_quantum_resistant_encryption">Kvantumbiztos titkosítás</string>
<string name="migrate_from_device_try_again">Megpróbálhatja még egyszer.</string>
<string name="migrate_from_device_migration_complete">Átköltöztetés befejezve</string>
<string name="migrate_from_device_migration_complete">Átköltöztetés kész</string>
<string name="v5_6_app_data_migration_descr">Átköltöztetés egy másik eszközre QR-kód használatával.</string>
<string name="migrate_to_device_migrating">Átköltöztetés</string>
<string name="migrate_from_device_using_on_two_device_breaks_encryption"><![CDATA[<b>Megjegyzés:</b> ha két eszközön is ugyanazt az adatbázist használja, akkor biztonsági védelemként megszakítja a partnereitől érkező üzenetek visszafejtését.]]></string>
@@ -2522,4 +2522,7 @@
<string name="placeholder_search_voice_messages">Hangüzenetek keresése</string>
<string name="content_filter_videos">Videók</string>
<string name="content_filter_voice_messages">Hangüzenetek</string>
<string name="info_row_connection_failed">Nem sikerült létrehozni a kapcsolatot</string>
<string name="member_info_member_failed">sikertelen</string>
<string name="down_migration_warning_chat_relays">Ha csatornákat hozott létre vagy csatlakozott hozzájuk, akkor azok véglegesen le fognak állni.</string>
</resources>
@@ -2558,4 +2558,7 @@
<string name="content_filter_videos">Video</string>
<string name="content_filter_voice_messages">Messaggi vocali</string>
<string name="content_filter_menu_item">Filtro</string>
<string name="info_row_connection_failed">Connessione fallita</string>
<string name="member_info_member_failed">fallito</string>
<string name="down_migration_warning_chat_relays">Se sei dentro canali o ne hai creati, essi smetteranno di funzionare definitivamente.</string>
</resources>
@@ -1826,7 +1826,7 @@
<string name="smp_servers_configured">SMPサーバーの構成</string>
<string name="servers_info_sessions_connected">接続中</string>
<string name="xftp_servers_configured">XFTPサーバーの構成</string>
<string name="one_hand_ui_card_title">チャトリスト切り替え</string>
<string name="one_hand_ui_card_title">チャトリスト表示切り替え</string>
<string name="contact_list_header_title">連絡先</string>
<string name="message_servers">メッセージサーバ</string>
<string name="media_and_file_servers">メディア&amp;ファイルサーバ</string>
@@ -2055,4 +2055,10 @@
<string name="accept_pending_member_alert_confirmation_as_member">メンバーとして承認する</string>
<string name="accept_pending_member_alert_confirmation_as_observer">オブザーバーとして承認する</string>
<string name="blocking_reason_spam">スパム</string>
<string name="archive_verb">アーカイブ</string>
<string name="short_descr__field">自己紹介</string>
<string name="bio_too_large">自己紹介の文字数が上限を超えています</string>
<string name="appearance_bars_blur_radius">ぼかし</string>
<string name="chat_list_contacts">連絡先</string>
<string name="chat_list_favorites">お気に入り</string>
</resources>
@@ -1619,7 +1619,7 @@
<string name="call_service_notification_end_call">Zakończ połączenie</string>
<string name="call_service_notification_video_call">Połączenie wideo</string>
<string name="unable_to_open_browser_title">Błąd podczas otwierania przeglądarki</string>
<string name="unable_to_open_browser_desc">Do połączeń wymagana jest domyślna przeglądarka. Proszę skonfigurować domyślną przeglądarkę systemową, i podzielić się informacją z twórcami.</string>
<string name="unable_to_open_browser_desc">Do wykonywania połączeń wymagana jest domyślna przeglądarka internetowa. Skonfiguruj domyślną przeglądarkę w systemie i przekaż więcej informacji programistom.</string>
<string name="e2ee_info_pq_short">Ten czat jest chroniony przez szyfrowanie e2e odporne na ataki kwantowe.</string>
<string name="e2ee_info_no_pq"><![CDATA[Wiadomości, pliki i połączenia są chronione przez <b>szyfrowanie end-to-end</b> z perfect forward secrecy, zaprzeczalnością i odzyskiwaniem bezpieczeństwa po kompromitacji.]]></string>
<string name="auth_open_migration_to_another_device">Otwórz ekran migrowania</string>
@@ -2234,7 +2234,7 @@
<string name="compose_view_connect">Połącz</string>
<string name="v6_4_connect_faster">Połącz się szybciej! 🚀</string>
<string name="cant_send_message_contact_deleted">kontakt usunięty</string>
<string name="cant_send_message_contact_disabled">kontakt zablokowany</string>
<string name="cant_send_message_contact_disabled">kontakt wyłączony</string>
<string name="cant_send_message_contact_not_ready">kontakt nie gotowy</string>
<string name="settings_section_title_contact_requests_from_groups">PROŚBY O KONTAKT OD GRUP</string>
<string name="contact_should_accept">kontakt powinien zaakceptować…</string>
@@ -2376,7 +2376,7 @@
<string name="v6_2_improved_chat_navigation_descr">- Otwórz czat w pierwszej nieprzeczytanej wiadomości.\n- Przejdź do cytowanych wiadomości.</string>
<string name="privacy_chat_list_open_clean_web_link">Otwórz czysty link</string>
<string name="operator_open_conditions">Otwórz warunki</string>
<string name="privacy_chat_list_open_full_web_link">Otwórz pełen link</string>
<string name="privacy_chat_list_open_full_web_link">Otwórz pełny link</string>
<string name="privacy_chat_list_open_web_link">Otwórz link</string>
<string name="privacy_chat_list_open_links">Otwórz linki z listy czatów</string>
<string name="connect_plan_open_new_chat">Otwórz nowy czat</string>
@@ -2395,8 +2395,8 @@
<string name="restore_passphrase_can_not_be_read_enter_manually_desc">Nie można odczytać hasła w magazynie kluczy. Wprowadź je ręcznie. Mogło się to zdarzyć po aktualizacji systemu niezgodnej z aplikacją. Jeśli tak nie jest, skontaktuj się z programistami.</string>
<string name="restore_passphrase_can_not_be_read_desc">Nie można odczytać hasła w magazynie kluczy. Mogło się to zdarzyć po aktualizacji systemu niezgodnej z aplikacją. Jeśli tak nie jest, skontaktuj się z programistami.</string>
<string name="group_member_status_pending_approval_short">oczekuje</string>
<string name="group_member_status_pending_approval">oczekiwanie zaakceptowane</string>
<string name="group_member_status_pending_review">oczekująca recenzja</string>
<string name="group_member_status_pending_approval">oczekuje na zatwierdzenie</string>
<string name="group_member_status_pending_review">oczekuje na ocenę</string>
<string name="maximum_message_size_reached_text">Zmniejsz rozmiar wiadomości i wyślij ją ponownie.</string>
<string name="maximum_message_size_reached_non_text">Zmniejsz rozmiar wiadomości lub usuń multimedia i wyślij ponownie.</string>
<string name="snd_group_event_user_pending_review">Poczekaj, aż moderatorzy grupy rozpatrzą Twoją prośbę o dołączenie do grupy.</string>
@@ -2418,7 +2418,7 @@
<string name="reject_pending_member_alert_title">Odrzucić członka?</string>
<string name="remote_hosts_section">Zdalne telefony komórkowe</string>
<string name="remove_member_delete_messages_confirmation">Usuń i skasuj wiadomości</string>
<string name="cant_send_message_mem_removed">przeniesiono z grupy</string>
<string name="cant_send_message_mem_removed">usunięty z grupy</string>
<string name="sanitize_links_toggle">Usuń śledzenie linków</string>
<string name="button_remove_members_question">Usunąć członka?</string>
<string name="v6_4_role_moderator_descr">Usuwa wiadomości i blokuje członków.</string>
@@ -2428,7 +2428,7 @@
<string name="report_compose_reason_header_profile">Zgłoś profil członka: będą go widzieć tylko moderatorzy grupy.</string>
<string name="report_compose_reason_header_other">Zgłoś inne: zobaczą to tylko moderatorzy grupy.</string>
<string name="report_reason_alert_title">Jaki jest powód zgłoszenia?</string>
<string name="notification_group_report">Zgłoś: %s</string>
<string name="notification_group_report">Zgłoszenie: %s</string>
<string name="chat_list_group_reports">Zgłoszenia</string>
<string name="report_sent_alert_title">Zgłoszenia wysłane do moderatorów</string>
<string name="report_compose_reason_header_spam">Zgłoś spam: tylko moderatorzy grupy będą to widzieć.</string>
@@ -2437,7 +2437,7 @@
<string name="display_name_requested_to_connect">poproszono o połączenie</string>
<string name="cant_send_message_request_is_sent">prośba została wysłana</string>
<string name="cant_send_message_rejected">prośba o dołączenie została odrzucona</string>
<string name="group_member_status_pending_review_short">przejrzyj</string>
<string name="group_member_status_pending_review_short">ocena</string>
<string name="operator_review_conditions">Przejrzyj warunki</string>
<string name="reviewed_by_admins">sprawdzone przez administratorów</string>
<string name="v6_4_review_members">Przejrzyj członków grupy</string>
@@ -2445,12 +2445,12 @@
<string name="admission_stage_review">Przejrzyj członków</string>
<string name="admission_stage_review_descr">Przejrzyj członków przed przyjęciem (pukanie).</string>
<string name="save_admission_question">Zapisać ustawienia wstępu?</string>
<string name="save_list">Zachowaj listę</string>
<string name="placeholder_search_files">Poszukaj plików</string>
<string name="placeholder_search_images">Poszukaj obrazów</string>
<string name="placeholder_search_links">Poszukaj linków</string>
<string name="placeholder_search_videos">Poszukaj wideo</string>
<string name="placeholder_search_voice_messages">Poszukaj wiadomości głosowych</string>
<string name="save_list">Zapisz listę</string>
<string name="placeholder_search_files">Szukaj plików</string>
<string name="placeholder_search_images">Szukaj zdjęć</string>
<string name="placeholder_search_links">Szukaj linków</string>
<string name="placeholder_search_videos">Szukaj wideo</string>
<string name="placeholder_search_voice_messages">Szukaj wiadomości głosowych</string>
<string name="onboarding_select_network_operators_to_use">Wybierz operatora sieci</string>
<string name="compose_view_send_contact_request_alert_question">Wysłać prośbę o kontakt?</string>
<string name="v6_3_reports">Wyślij prywatne zgłoszenia</string>
@@ -2459,7 +2459,7 @@
<string name="v6_4_support_chat_descr">Wyślij swoją prywatną opinię do grup.</string>
<string name="sent_to_your_contact_after_connection">Wysłano do Twojego kontaktu po połączeniu.</string>
<string name="server_added_to_operator__name">Serwer dodany do operatora %s.</string>
<string name="error_server_operator_changed">Operator serwera zmieniony.</string>
<string name="error_server_operator_changed">Operator serwera został zmieniony.</string>
<string name="onboarding_choose_server_operators">Operatorzy serwera</string>
<string name="error_server_protocol_changed">Protokół serwera zmieniony.</string>
<string name="text_field_set_chat_placeholder">Ustaw nazwę czatu…</string>
@@ -2554,4 +2554,7 @@
<string name="context_user_picker_your_profile">Twój profil</string>
<string name="your_servers">Twoje serwery</string>
<string name="you_will_stop_receiving_messages_from_this_chat_chat_history_will_be_preserved">Przestaniesz otrzymywać wiadomości z tego czatu. Historia czatu zostanie zachowana.</string>
<string name="info_row_connection_failed">Połączenie nie powiodło się</string>
<string name="member_info_member_failed">niepowodzenie</string>
<string name="down_migration_warning_chat_relays">Jeśli dołączyłeś do kanałów lub je utworzyłeś, przestaną one działać na stałe.</string>
</resources>
@@ -2542,4 +2542,7 @@
<string name="placeholder_search_voice_messages">搜索语音消息</string>
<string name="content_filter_videos">视频</string>
<string name="content_filter_voice_messages">语音消息</string>
<string name="info_row_connection_failed">连接失败</string>
<string name="member_info_member_failed">失败</string>
<string name="down_migration_warning_chat_relays">如果你加入了或创建了频道,它们会永远停止工作。</string>
</resources>
@@ -1574,7 +1574,7 @@
<string name="desktop_devices">桌面設備</string>
<string name="linked_desktop_options">已連結桌面選項</string>
<string name="linked_desktops">已連結桌面</string>
<string name="rcv_group_event_member_created_contact">直接連線中</string>
<string name="rcv_group_event_member_created_contact">已請求連接</string>
<string name="action_button_add_members">邀請</string>
<string name="create_group_button">建立群組</string>
<string name="fix_connection_not_supported_by_group_member">修復群組成員不支援的問題</string>
@@ -1677,7 +1677,7 @@
<string name="servers_info_sessions_connecting">連接中</string>
<string name="servers_info_sessions_errors">錯誤</string>
<string name="receipts_groups_title_disable">為群組停用回執?</string>
<string name="past_member_vName">過往的成員 %1$s</string>
<string name="past_member_vName">成員 %1$s</string>
<string name="v5_8_private_routing">私密訊息路由 🚀</string>
<string name="paste_archive_link">貼上封存連結</string>
<string name="open_on_mobile_and_scan_qr_code"><![CDATA[在行動應用中打開<i>從桌面使用</i>並掃描QR code。]]></string>
@@ -1909,7 +1909,7 @@
<string name="non_content_uri_alert_text">你分享了一個無效的檔案路徑。請將此問題報告給應用程式開發者。</string>
<string name="file_not_approved_descr">如果沒有 Tor 或 VPN,你的 IP 位址將對以下 XFTP 中繼可見:\n%1$s。</string>
<string name="app_was_crashed">檢視已崩潰</string>
<string name="add_short_link">新增短連結</string>
<string name="add_short_link">升級地址</string>
<string name="rcv_group_event_member_accepted">接受了 %1$s</string>
<string name="rcv_group_event_user_accepted">接受了你</string>
<string name="button_add_team_members">新增團隊成員</string>
@@ -2128,4 +2128,72 @@
<string name="connect_plan_open_new_chat">開啓新聊天</string>
<string name="accept_contact_request">接受聯絡請求</string>
<string name="chat_banner_accept_contact_request">接受聯絡請求</string>
<string name="chat_banner_bot">機械人</string>
<string name="content_filter_images">圖片</string>
<string name="content_filter_videos">影片</string>
<string name="content_filter_files">檔案</string>
<string name="content_filter_links">連結</string>
<string name="content_filter_menu_item">過濾器</string>
<string name="group_reports_active">%d 個舉報</string>
<string name="deprecated_options_section">已棄用的選項</string>
<string name="server_no_sub">無訂閱</string>
<string name="delete_member_messages_confirmation">刪除訊息</string>
<string name="placeholder_search_images">搜尋圖片</string>
<string name="placeholder_search_videos">搜尋影片</string>
<string name="placeholder_search_files">搜尋檔案</string>
<string name="placeholder_search_links">搜尋連結</string>
<string name="content_filter_voice_messages">語音訊息</string>
<string name="content_filter_all_messages">所有訊息</string>
<string name="connect_plan_repeat_join_request">重複加入請求?</string>
<string name="tap_to_scan">點擊以掃描</string>
<string name="show_internal_errors">顯示內部錯誤</string>
<string name="conn_event_disabled_pq">標準端對端加密</string>
<string name="migrate_from_device_verify_database_passphrase">驗證資料庫密碼</string>
<string name="private_routing_show_message_status">顯示訊息狀態</string>
<string name="chat_theme_set_default_theme">設定預設主題</string>
<string name="v5_8_safe_files">安全地接收檔案</string>
<string name="temporary_file_error">臨時性檔案錯誤</string>
<string name="servers_info_reset_stats">重設所有統計</string>
<string name="servers_info_reset_stats_alert_title">重設所有統計?</string>
<string name="app_check_for_updates_update_available">有更新可用:%s</string>
<string name="app_check_for_updates_button_skip">略過此版本</string>
<string name="app_check_for_updates_canceled">更新下載已取消</string>
<string name="network_options_save_and_reconnect">儲存並重新連接</string>
<string name="reset_all_hints">重設所有提示</string>
<string name="v6_0_upgrade_app">自動升級應用程式</string>
<string name="select_chat_profile">選擇聊天個人檔案</string>
<string name="network_proxy_random_credentials">使用隨機憑證</string>
<string name="network_proxy_incorrect_config_title">儲存代理時發生錯誤</string>
<string name="error_forwarding_messages">轉發訊息時發生錯誤</string>
<string name="forward_alert_title_messages_to_forward">轉發 %1$s 條訊息?</string>
<string name="compose_forward_messages_n">正在轉發 %1$s 條訊息</string>
<string name="compose_save_messages_n">正在儲存 %1$s 條訊息</string>
<string name="failed_to_save_servers">儲存伺服器時發生錯誤</string>
<string name="error_accepting_operator_conditions">接受條款時發生錯誤</string>
<string name="share_address_publicly">公開地分享地址</string>
<string name="for_social_media">用於社交媒體</string>
<string name="operator_use_for_messages">用於訊息</string>
<string name="operator_use_for_messages_private_routing">用於私密路由</string>
<string name="operator_use_for_files">用於檔案</string>
<string name="error_updating_server_title">更新伺服器時發生錯誤</string>
<string name="error_server_operator_changed">伺服器營運者已變更。</string>
<string name="error_adding_server">增加伺服器時發生錯誤</string>
<string name="view_updated_conditions">檢視已更新的條款</string>
<string name="onboarding_notifications_mode_battery">通知和電量</string>
<string name="invite_to_chat_button">邀請加入聊天</string>
<string name="open_with_app">使用 %s 開啟</string>
<string name="no_unread_chats">沒有未讀聊天</string>
<string name="no_chats_found">找不到聊天</string>
<string name="group_preview_open_to_join">開啟以加入</string>
<string name="open_to_connect">開啟以連接</string>
<string name="open_to_use_bot">開啟以使用機械人</string>
<string name="open_to_accept">開啟以接受</string>
<string name="search_or_paste_simplex_link">搜尋或貼上 SimpleX 連結</string>
<string name="max_group_mentions_per_message_reached">你的每個訊息最多可以提及 %1$s 位成員!</string>
<string name="sent_via_proxy">已透過代理傳送</string>
<string name="servers_info_reset_stats_alert_message">伺服器統計資料將被重設—此操作無法撤銷!</string>
<string name="servers_info_proxied_servers_section_footer">你沒有連接至這些伺服器。已使用私密路由將訊息傳送至這些伺服器。</string>
<string name="migrate_from_device_you_must_not_start_database_on_two_device"><![CDATA[你<b>不能</b>在兩部裝置上使用同一資料庫。]]></string>
<string name="migrate_from_device_starting_chat_on_multiple_devices_unsupported">警告:不支援在多個裝置上同時聊天,否則會導致訊息傳送失敗</string>
<string name="chat_archive">或匯入封存檔案</string>
</resources>
@@ -326,6 +326,10 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName
notifyAdminUsers msg
logError msg
groupInfoText p@GroupProfile {description = d} = groupNameDescr p <> maybe "" ("\nWelcome message:\n" <>) d
knockingStr :: Maybe GroupMemberAdmission -> [Text]
knockingStr = \case
Just GroupMemberAdmission {review = Just MCAll} -> ["New members are reviewed by admins"]
_ -> []
groupNameDescr GroupProfile {displayName = n, fullName = fn, shortDescr = sd_} =
n <> maybe "" (\d' -> " (" <> d' <> ")") descr
where
@@ -485,9 +489,9 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName
GroupInfo {groupId, groupProfile = p} = fromGroup
GroupInfo {groupProfile = p'} = toGroup
sameProfile
GroupProfile {displayName = n, fullName = fn, shortDescr = sd, image = i, description = d}
GroupProfile {displayName = n', fullName = fn', shortDescr = sd', image = i', description = d'} =
n == n' && fn == fn' && i == i' && sd == sd' && (T.words <$> d) == (T.words <$> d')
GroupProfile {displayName = n, fullName = fn, shortDescr = sd, image = i, description = d, memberAdmission = ma}
GroupProfile {displayName = n', fullName = fn', shortDescr = sd', image = i', description = d', memberAdmission = ma'} =
n == n' && fn == fn' && i == i' && sd == sd' && (T.words <$> d) == (T.words <$> d') && ma == ma'
groupLinkAdded gr byMember =
getDuplicateGroup toGroup >>= \case
Left e -> notifyOwner gr $ "Error: getDuplicateGroup. Please notify the developers.\n" <> T.pack e
@@ -532,9 +536,9 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName
checkRolesSendToApprove gr' n'
where
onlyLinkChanged
GroupProfile {displayName = dn, fullName = fn, shortDescr = sd, image = i, description = d}
GroupProfile {displayName = dn', fullName = fn', shortDescr = sd', image = i', description = d'} =
dn == dn' && fn == fn' && i == i' && sd == sd' && (T.words . T.replace linkBefore "" <$> d) == (T.words . T.replace linkNow "" <$> d')
GroupProfile {displayName = dn, fullName = fn, shortDescr = sd, image = i, description = d, memberAdmission = ma}
GroupProfile {displayName = dn', fullName = fn', shortDescr = sd', image = i', description = d', memberAdmission = ma'} =
dn == dn' && fn == fn' && i == i' && sd == sd' && ma == ma' && (T.words . T.replace linkBefore "" <$> d) == (T.words . T.replace linkNow "" <$> d')
GPServiceLinkError -> logError $ "Error: no group link for " <> groupRef <> " pending approval."
groupProfileUpdate = profileUpdate <$> sendChatCmd cc (APIGetGroupLink groupId)
where
@@ -996,10 +1000,10 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName
where
msgs = replyMsg :| map foundGroup gs <> [moreMsg | moreGroups > 0]
replyMsg = (Just ciId, MCText reply)
foundGroup (GroupInfo {groupId, groupProfile = p@GroupProfile {image = image_}, groupSummary = GroupSummary {currentMembers}}, _) =
foundGroup (GroupInfo {groupId, groupProfile = p@GroupProfile {image = image_, memberAdmission}, groupSummary = GroupSummary {currentMembers}}, _) =
let membersStr = "_" <> tshow currentMembers <> " members_"
showId = if isAdmin then tshow groupId <> ". " else ""
text = showId <> groupInfoText p <> "\n" <> membersStr
text = T.unlines $ [showId <> groupInfoText p, membersStr] ++ knockingStr memberAdmission
in (Nothing, maybe (MCText text) (\image -> MCImage {text, image}) image_)
moreMsg = (Nothing, MCText $ "Send /next for " <> tshow moreGroups <> " more result(s).")
@@ -1181,14 +1185,14 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName
sendComposedMessages_ cc (SRDirect $ contactId' ct) $ replyMsg :| map groupMessage gs'
where
groupMessage ((g, gr), ct_) =
let GroupInfo {groupId, groupProfile = p@GroupProfile {image = image_}, groupSummary} = g
let GroupInfo {groupId, groupProfile = p@GroupProfile {image = image_, memberAdmission}, groupSummary} = g
GroupReg {userGroupRegId, groupRegStatus} = gr
useGroupId = if isAdmin then groupId else userGroupRegId
statusStr = "Status: " <> groupRegStatusText groupRegStatus
membersStr = "_" <> tshow (currentMembers groupSummary) <> " members_"
cmds = "/'role " <> tshow useGroupId <> "', /'filter " <> tshow useGroupId <> "'"
ownerStr = maybe "" (("Owner: " <>) . either (("getContact error: " <>) . T.pack) localDisplayName') ct_
text = T.unlines $ [tshow useGroupId <> ". " <> groupInfoText p] ++ [ownerStr | isAdmin] ++ [membersStr, statusStr, cmds]
text = T.unlines $ [tshow useGroupId <> ". " <> groupInfoText p] ++ [ownerStr | isAdmin] ++ [membersStr, statusStr] ++ knockingStr memberAdmission ++ [cmds]
msg = maybe (MCText text) (\image -> MCImage {text, image}) image_
in (Nothing, msg)
+1 -1
View File
@@ -21,7 +21,7 @@ constraints: zip +disable-bzip2 +disable-zstd
source-repository-package
type: git
location: https://github.com/simplex-chat/simplexmq.git
tag: a1b762992b10aa3db1cd949e6c408c0043ace674
tag: 50b71d3e569c85e788609f921ec1ae389c15abd3
source-repository-package
type: git
@@ -0,0 +1,199 @@
# Initial chat open: jump to last unread block
## Problem
When opening a chat with unread messages, the app always scrolls to the oldest unread message (`minUnreadItemId`). For casual group members with hundreds of unreads, this forces them to scroll through the entire backlog to reach new messages.
The bottom circle scrolls to the latest messages without marking all as read (by design — moderators use this to reply quickly, then return to the top circle to read sequentially). But the next time the chat opens, it jumps back to the oldest unread.
Users want the initial open to skip old unreads and land on the "new" ones — messages that arrived after their last interaction.
## Design
Change `CPInitial` to use a different pivot for `getDirectChatAround'` / `getGroupChatAround'`.
Currently the pivot is `minUnreadItemId` (absolute first unread). Instead, try `maxViewedItemId` (last non-unread item in sort order) first. If not found, fall back to `minUnreadItemId`. The `getAround'` function is unchanged — it always loads `CRBefore`/`CRAfter` around the pivot and includes it.
**maxViewedItemId**: the last item in sort order that is not `CISRcvNew`.
- "Viewed" means received read or sent — any `item_status != CISRcvNew`.
### Why include works for both pivots
`getDirectChatAround'` always includes the pivot in the result. When the pivot is maxViewed (a read item), including it adds one extra read item — harmless. The client scrolls to the first unread in the loaded items, which is the first item in `afterCIs` (the new unreads after the gap). The include/exclude distinction is unnecessary.
### Sort order
- Groups: `(item_ts, chat_item_id)`
- Direct chats: `(created_at, chat_item_id)`
### Cases
Items in display order (left = oldest/top, right = newest/bottom). U = unread (`CISRcvNew`), R = not unread (read, sent, event).
**Case 1: Unreads contiguous from bottom, no gap**
```
R...R U...U
↑ maxViewed (last R) used as pivot
```
`afterCIs` = the unreads. Same as current behavior.
**Case 2: Gap, then new unreads at bottom**
```
R...R U...U R...R U...U
↑ maxViewed used as pivot
```
`afterCIs` = new unreads only. Skips old unreads. This is the desired improvement.
**Case 3: Gap at bottom, no new unreads**
```
R...R U...U R...R
↑ maxViewed used as pivot
```
`afterCIs` = empty. Items loaded are the latest. Old unreads reachable via top circle.
**Case 4: All unread**
```
U...U
```
maxViewed = NULL. Fall back to `minUnreadItemId` as pivot. Current behavior.
**Case 5: No unreads**
`maxViewedItemId` returns some item but `minUnreadItemId` returns `Nothing` — no unreads exist. Handled by stats showing zero unreads. `getAround'` loads items around maxViewed, which are the latest items.
Actually: maxViewed is always found when items exist (every chat has at least sent items or read items unless case 4). So the flow is: maxViewed found → load around it → stats show 0 unreads → client shows latest items.
### No UI changes needed
Only `CPInitial` backend logic changes. The top circle, unread counter, unread separator, and all pagination continue to use `minUnreadItemId` as before.
### Out-of-order delivery
A late-arriving group message with old `item_ts` but recent `created_at` sorts into the old unread block in display order and gets skipped on initial open. This is acceptable — the top circle still reaches it.
### Notes (local chat)
Notes (`getLocalChatInitial_`) have unread handling in code but it's dead — all items are sent, `CISRcvNew` never occurs. No change needed.
### Open concern
In case 2, `CRBefore(maxViewed)` loads items before the gap, which may include old unreads. The client's scroll logic finds the first unread in loaded items (`lastIndex(where: hasUnread)` in reversed list), which could be an old unread from `beforeCIs` rather than a new unread from `afterCIs`. To be validated during testing — if problematic, may need client-side adjustment or limiting `beforeCIs` count.
## Implementation
### Files to modify
`src/Simplex/Chat/Store/Messages.hs` — all changes are here.
### New functions
#### Direct chats
```haskell
-- max viewed item: received read or sent (any item_status != CISRcvNew)
getContactMaxViewedItemId_ :: DB.Connection -> User -> Contact -> IO (Maybe ChatItemId)
```
Query:
```sql
SELECT chat_item_id
FROM chat_items
WHERE user_id = ? AND contact_id = ? AND item_status != ?
ORDER BY created_at DESC, chat_item_id DESC
LIMIT 1
```
#### Groups
```haskell
-- max viewed item: received read or sent (any item_status != CISRcvNew)
getGroupMaxViewedItemId_ :: DB.Connection -> User -> GroupInfo -> Maybe GroupChatScopeInfo -> Maybe MsgContentTag -> ExceptT StoreError IO (Maybe ChatItemId)
```
Mirrors `queryUnreadGroupItems` structure but with `item_status != ?` instead of `item_status = ?`. Handles the same 4-case scope/content filter dispatch. New function `queryViewedGroupItems`.
Query (for the no-scope, no-content-filter case):
```sql
SELECT chat_item_id
FROM chat_items
WHERE user_id = ? AND group_id = ?
AND group_scope_tag IS NULL AND group_scope_group_member_id IS NULL
AND item_status != ?
ORDER BY item_ts DESC, chat_item_id DESC
LIMIT 1
```
### Modified functions
#### `getDirectChatInitial_`
Current:
```haskell
getDirectChatInitial_ db user ct contentFilter count = do
liftIO (getContactMinUnreadId_ db user ct) >>= \case
Just minUnreadItemId -> do
unreadCount <- liftIO $ getContactUnreadCount_ db user ct
let stats = emptyChatStats {unreadCount, minUnreadItemId}
getDirectChatAround' db user ct contentFilter minUnreadItemId count "" stats
Nothing -> (,Just $ NavigationInfo 0 0) <$> getDirectChatLast_ db user ct contentFilter count ""
```
New — only the pivot source changes, rest stays the same:
```haskell
getDirectChatInitial_ db user ct contentFilter count = do
liftIO (getContactMaxViewedItemId_ db user ct >>= maybe (getContactMinUnreadId_ db user ct) (pure . Just)) >>= \case
Just pivotId -> do
unreadCount <- liftIO $ getContactUnreadCount_ db user ct
minUnreadItemId <- fromMaybe 0 <$> liftIO (getContactMinUnreadId_ db user ct)
let stats = emptyChatStats {unreadCount, minUnreadItemId}
getDirectChatAround' db user ct contentFilter pivotId count "" stats
Nothing -> (,Just $ NavigationInfo 0 0) <$> getDirectChatLast_ db user ct contentFilter count ""
```
#### `getGroupChatInitial_`
Same minimal change — only the pivot source:
```haskell
getGroupChatInitial_ db user g scopeInfo_ contentFilter count = do
(getGroupMaxViewedItemId_ db user g scopeInfo_ contentFilter >>= maybe (getGroupMinUnreadId_ db user g scopeInfo_ contentFilter) (pure . Just)) >>= \case
Just pivotId -> do
stats <- getGroupStats_ db user g scopeInfo_
getGroupChatAround' db user g scopeInfo_ contentFilter pivotId count "" stats
Nothing -> do
stats <- liftIO $ getStats 0 (0, 0)
(,Just $ NavigationInfo 0 0) <$> getGroupChatLast_ db user g scopeInfo_ contentFilter count "" stats
where
getStats minUnreadItemId (unreadCount, unreadMentions) = do
reportsCount <- getGroupReportsCount_ db user g False
pure ChatStats {unreadCount, unreadMentions, reportsCount, minUnreadItemId, unreadChat = False}
```
### Summary of all affected functions
| Function | Change |
|----------|--------|
| `getDirectChatInitial_` | Try maxViewed first, fall back to minUnread, same `getAround'` call |
| `getGroupChatInitial_` | Same |
| **New:** `getContactMaxViewedItemId_` | MAX non-unread by (created_at DESC, id DESC) |
| **New:** `getGroupMaxViewedItemId_` | MAX non-unread with scope/filter dispatch |
| **New:** `queryViewedGroupItems` | Like `queryUnreadGroupItems` but `item_status != ?` |
Nothing else changes. `getDirectChatAround'`, `getGroupChatAround'`, `getDirectChatAround_`, `getGroupChatAround_`, `getContactMinUnreadId_`, `getGroupMinUnreadId_`, `getContactStats_`, `getGroupStats_`, `getChatItemIDs`, `NavigationInfo` computation, mark-read operations, UI code — all unchanged.
### Performance
- `maxViewedItemId` query: scans backward from the largest sort key, skipping unread items. Fast when there are recent read/sent items (the common case). Worst case: all items are unread — returns `Nothing` and falls back to minUnread.
- All other queries are existing code, same performance.
- Queries run only during `CPInitial` (chat open). No writes.
### Testing
1. Open chat with unreads, no prior interaction → same as current (case 1/4)
2. Open chat, jump to bottom (marks bottom screen read), close, reopen → lands on new unreads after the gap (case 2)
3. Open chat, jump to bottom, reply, close, new messages arrive, reopen → lands on new messages (case 2)
4. Open chat, jump to bottom, close, no new messages, reopen → loads around last viewed item at bottom (case 3)
5. Open chat, read from top (marks first screen read), close, reopen → lands on next unread after first screen, same as current (case 1)
6. Group with scope (member support chat) → same behavior with scope filter applied
7. Group with content filter (reports) → same behavior with content filter applied
+1 -1
View File
@@ -1,5 +1,5 @@
{
"https://github.com/simplex-chat/simplexmq.git"."a1b762992b10aa3db1cd949e6c408c0043ace674" = "0k9sw6sf8hlgdbxfjd3rgzgf5yzqlkfpqj7mh934myp2vn9xhvnb";
"https://github.com/simplex-chat/simplexmq.git"."50b71d3e569c85e788609f921ec1ae389c15abd3" = "1qisk492nn8ywrjnjgjkx3a7al18m7h2n44nna2i6imryinys4ik";
"https://github.com/simplex-chat/hs-socks.git"."a30cc7a79a08d8108316094f8f2f82a0c5e1ac51" = "0yasvnr7g91k76mjkamvzab2kvlb1g5pspjyjn2fr6v83swjhj38";
"https://github.com/simplex-chat/direct-sqlcipher.git"."f814ee68b16a9447fbb467ccc8f29bdd3546bfd9" = "1ql13f4kfwkbaq7nygkxgw84213i0zm7c1a8hwvramayxl38dq5d";
"https://github.com/simplex-chat/sqlcipher-simple.git"."a46bd361a19376c5211f1058908fc0ae6bf42446" = "1z0r78d8f0812kxbgsm735qf6xx8lvaz27k1a0b4a2m0sshpd5gl";
+1 -1
View File
@@ -5,7 +5,7 @@ cabal-version: 1.12
-- see: https://github.com/sol/hpack
name: simplex-chat
version: 6.5.0.9
version: 6.5.0.11
category: Web, System, Services, Cryptography
homepage: https://github.com/simplex-chat/simplex-chat#readme
author: simplex.chat
+35 -9
View File
@@ -1322,7 +1322,8 @@ getDirectChatInitial_ db user ct contentFilter count = do
Just minUnreadItemId -> do
unreadCount <- liftIO $ getContactUnreadCount_ db user ct
let stats = emptyChatStats {unreadCount, minUnreadItemId}
getDirectChatAround' db user ct contentFilter minUnreadItemId count "" stats
pivotId <- liftIO $ fromMaybe minUnreadItemId <$> getContactMaxViewedItemId_ db user ct
getDirectChatAround' db user ct contentFilter pivotId count "" stats
Nothing -> (,Just $ NavigationInfo 0 0) <$> getDirectChatLast_ db user ct contentFilter count ""
getContactStats_ :: DB.Connection -> User -> Contact -> IO ChatStats
@@ -1345,6 +1346,21 @@ getContactMinUnreadId_ db User {userId} Contact {contactId} =
|]
(userId, contactId, CISRcvNew)
-- max viewed item: received read or sent (any item_status != CISRcvNew)
getContactMaxViewedItemId_ :: DB.Connection -> User -> Contact -> IO (Maybe ChatItemId)
getContactMaxViewedItemId_ db User {userId} Contact {contactId} =
fmap join . maybeFirstRow fromOnly $
DB.query
db
[sql|
SELECT chat_item_id
FROM chat_items
WHERE user_id = ? AND contact_id = ? AND item_status != ?
ORDER BY created_at DESC, chat_item_id DESC
LIMIT 1
|]
(userId, contactId, CISRcvNew)
getContactUnreadCount_ :: DB.Connection -> User -> Contact -> IO Int
getContactUnreadCount_ db User {userId} Contact {contactId} =
fromOnly . head
@@ -1652,7 +1668,8 @@ getGroupChatInitial_ db user g scopeInfo_ contentFilter count = do
Just minUnreadItemId -> do
unreadCounts <- getGroupUnreadCount_ db user g scopeInfo_ Nothing
stats <- liftIO $ getStats minUnreadItemId unreadCounts
getGroupChatAround' db user g scopeInfo_ contentFilter minUnreadItemId count "" stats
pivotId <- fromMaybe minUnreadItemId <$> getGroupMaxViewedItemId_ db user g scopeInfo_ contentFilter
getGroupChatAround' db user g scopeInfo_ contentFilter pivotId count "" stats
Nothing -> do
stats <- liftIO $ getStats 0 (0, 0)
(,Just $ NavigationInfo 0 0) <$> getGroupChatLast_ db user g scopeInfo_ contentFilter count "" stats
@@ -1671,14 +1688,23 @@ getGroupStats_ db user g scopeInfo_ = do
getGroupMinUnreadId_ :: DB.Connection -> User -> GroupInfo -> Maybe GroupChatScopeInfo -> Maybe MsgContentTag -> ExceptT StoreError IO (Maybe ChatItemId)
getGroupMinUnreadId_ db user g scopeInfo_ contentFilter =
fmap join . maybeFirstRow fromOnly $
queryUnreadGroupItems db user g scopeInfo_ contentFilter baseQuery orderLimit
queryUnreadGroupItems db user g scopeInfo_ contentFilter " item_status = ? " baseQuery orderLimit
where
baseQuery = "SELECT chat_item_id FROM chat_items WHERE user_id = ? AND group_id = ? "
orderLimit = " ORDER BY item_ts ASC, chat_item_id ASC LIMIT 1"
-- max viewed item: received read or sent (any item_status != CISRcvNew)
getGroupMaxViewedItemId_ :: DB.Connection -> User -> GroupInfo -> Maybe GroupChatScopeInfo -> Maybe MsgContentTag -> ExceptT StoreError IO (Maybe ChatItemId)
getGroupMaxViewedItemId_ db user g scopeInfo_ contentFilter =
fmap join . maybeFirstRow fromOnly $
queryUnreadGroupItems db user g scopeInfo_ contentFilter " item_status != ? " baseQuery orderLimit
where
baseQuery = "SELECT chat_item_id FROM chat_items WHERE user_id = ? AND group_id = ? "
orderLimit = " ORDER BY item_ts DESC, chat_item_id DESC LIMIT 1"
getGroupUnreadCount_ :: DB.Connection -> User -> GroupInfo -> Maybe GroupChatScopeInfo -> Maybe MsgContentTag -> ExceptT StoreError IO (Int, Int)
getGroupUnreadCount_ db user g scopeInfo_ contentFilter =
head <$> queryUnreadGroupItems db user g scopeInfo_ contentFilter baseQuery ""
head <$> queryUnreadGroupItems db user g scopeInfo_ contentFilter " item_status = ? " baseQuery ""
where
baseQuery = "SELECT COUNT(1), COALESCE(SUM(user_mention), 0) FROM chat_items WHERE user_id = ? AND group_id = ? "
@@ -1690,26 +1716,26 @@ getGroupReportsCount_ db User {userId} GroupInfo {groupId} archived =
"SELECT COUNT(1) FROM chat_items WHERE user_id = ? AND group_id = ? AND msg_content_tag = ? AND item_deleted = ? AND item_sent = 0"
(userId, groupId, MCReport_, BI archived)
queryUnreadGroupItems :: FromRow r => DB.Connection -> User -> GroupInfo -> Maybe GroupChatScopeInfo -> Maybe MsgContentTag -> Query -> Query -> ExceptT StoreError IO [r]
queryUnreadGroupItems db User {userId} GroupInfo {groupId} scopeInfo_ contentFilter baseQuery orderLimit =
queryUnreadGroupItems :: FromRow r => DB.Connection -> User -> GroupInfo -> Maybe GroupChatScopeInfo -> Maybe MsgContentTag -> Query -> Query -> Query -> ExceptT StoreError IO [r]
queryUnreadGroupItems db User {userId} GroupInfo {groupId} scopeInfo_ contentFilter statusCond baseQuery orderLimit =
case (scopeInfo_, contentFilter) of
(Nothing, Nothing) ->
liftIO $
DB.query
db
(baseQuery <> " AND group_scope_tag IS NULL AND group_scope_group_member_id IS NULL AND item_status = ? " <> orderLimit)
(baseQuery <> " AND group_scope_tag IS NULL AND group_scope_group_member_id IS NULL AND " <> statusCond <> orderLimit)
(userId, groupId, CISRcvNew)
(Nothing, Just mcTag) ->
liftIO $
DB.query
db
(baseQuery <> " AND msg_content_tag = ? AND item_status = ? " <> orderLimit)
(baseQuery <> " AND msg_content_tag = ? AND " <> statusCond <> orderLimit)
(userId, groupId, mcTag, CISRcvNew)
(Just GCSIMemberSupport {groupMember_ = m}, Nothing) ->
liftIO $
DB.query
db
(baseQuery <> " AND group_scope_tag = ? AND group_scope_group_member_id IS NOT DISTINCT FROM ? AND item_status = ? " <> orderLimit)
(baseQuery <> " AND group_scope_tag = ? AND group_scope_group_member_id IS NOT DISTINCT FROM ? AND " <> statusCond <> orderLimit)
(userId, groupId, GCSTMemberSupport_, groupMemberId' <$> m, CISRcvNew)
(Just _scope, Just _mcTag) ->
throwError $ SEInternalError "group scope and content filter are not supported together"
@@ -3361,6 +3361,16 @@ Query:
Plan:
SEARCH chat_items USING INDEX idx_chat_items_contact_id (contact_id=?)
Query:
SELECT chat_item_id
FROM chat_items
WHERE user_id = ? AND contact_id = ? AND item_status != ?
ORDER BY created_at DESC, chat_item_id DESC
LIMIT 1
Plan:
SEARCH chat_items USING INDEX idx_chat_items_contacts_created_at (user_id=? AND contact_id=?)
Query:
SELECT chat_item_id
FROM chat_items
@@ -6461,7 +6471,7 @@ Query: SELECT COUNT(1) FROM groups WHERE user_id = ? AND chat_item_ttl > 0
Plan:
SEARCH groups USING INDEX sqlite_autoindex_groups_2 (user_id=?)
Query: SELECT COUNT(1), COALESCE(SUM(user_mention), 0) FROM chat_items WHERE user_id = ? AND group_id = ? AND group_scope_tag IS NULL AND group_scope_group_member_id IS NULL AND item_status = ?
Query: SELECT COUNT(1), COALESCE(SUM(user_mention), 0) FROM chat_items WHERE user_id = ? AND group_id = ? AND group_scope_tag IS NULL AND group_scope_group_member_id IS NULL AND item_status = ?
Plan:
SEARCH chat_items USING COVERING INDEX idx_chat_items_group_scope_stats_all (user_id=? AND group_id=? AND group_scope_tag=? AND group_scope_group_member_id=? AND item_status=?)
@@ -6515,7 +6525,11 @@ Query: SELECT chat_item_id FROM chat_items WHERE user_id = ? AND contact_id = ?
Plan:
SEARCH chat_items USING INDEX idx_chat_items_direct_shared_msg_id (user_id=? AND contact_id=? AND shared_msg_id=?)
Query: SELECT chat_item_id FROM chat_items WHERE user_id = ? AND group_id = ? AND group_scope_tag IS NULL AND group_scope_group_member_id IS NULL AND item_status = ? ORDER BY item_ts ASC, chat_item_id ASC LIMIT 1
Query: SELECT chat_item_id FROM chat_items WHERE user_id = ? AND group_id = ? AND group_scope_tag IS NULL AND group_scope_group_member_id IS NULL AND item_status != ? ORDER BY item_ts DESC, chat_item_id DESC LIMIT 1
Plan:
SEARCH chat_items USING INDEX idx_chat_items_group_scope_item_ts (user_id=? AND group_id=? AND group_scope_tag=? AND group_scope_group_member_id=?)
Query: SELECT chat_item_id FROM chat_items WHERE user_id = ? AND group_id = ? AND group_scope_tag IS NULL AND group_scope_group_member_id IS NULL AND item_status = ? ORDER BY item_ts ASC, chat_item_id ASC LIMIT 1
Plan:
SEARCH chat_items USING COVERING INDEX idx_chat_items_group_scope_item_status (user_id=? AND group_id=? AND group_scope_tag=? AND group_scope_group_member_id=? AND item_status=?)
+1 -1
View File
@@ -200,7 +200,7 @@
"simplex-private-section-header": "ما الذي يجعل SimpleX <span class=\"gradient-text\"> خصوصيًّا</span>",
"privacy-matters-section-subheader": "الحفاظ على خصوصية بياناتك الوصفية &mdash; <span class=\"text-active-blue\">مع مَن تتحدث</span> &mdash; يحميك من:",
"simplex-network-1-overlay-linktext": "مشاكل شبكات P2P",
"simplex-network-section-desc": "يوفر Simplex Chat أفضل خصوصية من خلال الجمع بين مزايا P2P والشبكات الاتحادية.",
"simplex-network-section-desc": "يوفر SimpleX Chat أفضل خصوصية من خلال الجمع بين مزايا P2P والشبكات الاتحادية.",
"simplex-network-1-desc": "يتم إرسال جميع الرسائل عبر الخوادم، مما يوفر خصوصية أفضل للبيانات الوصفية وتسليمًا موثوقًا للرسائل غير المتزامنة، مع تجنب الكثير",
"simplex-network-2-header": "على عكس الشبكات الاتحادية",
"simplex-network-3-desc": "توفر الخوادم <span class=\"text-active-blue\"> قوائم انتظار أحادية الاتجاه</span> لتوصيل المستخدمين، لكن ليس لديهم رؤية للرسم البياني لاتصال الشبكة &mdash; إلا للمستخدمين فقط.",
+63 -9
View File
@@ -1,7 +1,7 @@
{
"simplex-private-card-10-point-2": "Umožňuje doručovat zprávy bez identifikátoru uživatelských profilů, což poskytuje lepší soukromí metadat než alternativy.",
"simplex-unique-4-overlay-1-title": "Plně decentralizované &mdash; uživatelé vlastní síť SimpleX",
"hero-overlay-card-1-p-6": "Přečtěte si více v <a href=\"https://github.com/simplex-chat/simplexmq/blob/stable/protocol/overview-tjr.md\" target=\"_blank\">SimpleX whitepaper</a>.",
"hero-overlay-card-1-p-6": "Více v <a href=\"https://github.com/simplex-chat/simplexmq/blob/stable/protocol/overview-tjr.md\" target=\"_blank\">SimpleX whitepaper</a>.",
"hero-overlay-card-1-p-2": "K doručování zpráv používá SimpleX namísto ID uživatelů používaných všemi ostatními sítěmi, dočasné anonymní párové identifikátory front zpráv, oddělené pro každé z vašich připojení &mdash; neexistují žádné dlouhodobé identifikátory.",
"hero-overlay-card-1-p-3": "Definujete, které servery se mají používat k přijímání zpráv, vašich kontaktů &mdash; servery, které používáte k odesílání zpráv. Každá konverzace bude pravděpodobně používat dva různé servery.",
"hero-overlay-card-2-p-3": "I v těch nejsoukromějších aplikacích, které používají služby Tor v3, pokud mluvíte se dvěma různými kontakty prostřednictvím stejného profilu, může být prokázáno, že jsou spojeni se stejnou osobou.",
@@ -102,7 +102,7 @@
"simplex-unique-overlay-card-4-p-1": "Můžete <strong>použít SimpleX se svými vlastními servery</strong> a přesto komunikovat s lidmi, kteří používají přednastavené servery v aplikacích.",
"simplex-unique-overlay-card-4-p-3": "Pokud uvažujete o vývoji pro SimpleX síť, například chat bot pro uživatele aplikace SimpleX nebo integraci knihovny SimpleX chat do Vasí mobilní aplikace, prosím <a href=\"https://simplex.chat/contact#/?v=1&smp=smp%3A%2F%2FPQUV2eL0t7OStZOoAsPEV2QYWt4-xilbakvGUGOItUo%3D%40smp6.simplex.im%2FK1rslx-m5bpXVIdMZg9NLUZ_8JBm8xTt%23MCowBQYDK2VuAyEALDeVe-sG8mRY22LsXlPgiwTNs9dbiLrNuA7f3ZMAJ2w%3D\" target=\"_blank>buďte ve spojení</a> pro jakoukoli radu a podporu.",
"simplex-unique-card-1-p-1": "SimpleX chrání soukromí vašeho profilu, kontaktů a metadat a skrývá je před servery SimpleX sítě a jakýmikoli pozorovateli.",
"simplex-unique-card-1-p-2": "Na rozdíl od jakékoli jiné existující síti pro zasílání zpráv nemá SimpleX žádné identifikátory přiřazené uživatelům &mdash; <strong> ani náhodná čísla</strong>.",
"simplex-unique-card-1-p-2": "Na rozdíl od jakékoli jiné existující síti pro zasílání zpráv nemá SimpleX žádné identifikátory přiřazené uživatelům &mdash; <strong>ani náhodná čísla</strong>.",
"simplex-unique-card-3-p-1": "SimpleX Chat ukládá všechna uživatelská data pouze na klientských zařízeních pomocí <strong>přenosného šifrovaného databázového formátu</strong>, který lze exportovat a přenést na jakékoli podporované zařízení.",
"simplex-unique-card-3-p-2": "End-to-end šifrované zprávy jsou dočasně uchovávány na přenosových serverech SimpleX, dokud nejsou přijaty, poté jsou trvale odstraněny.",
"join": "Připojit",
@@ -140,10 +140,10 @@
"privacy-matters-section-header": "Proč na soukromí <span class=\"gradient-text\">záleží</span>",
"privacy-matters-section-subheader": "Zachování soukromí vašich metadat &mdash; <span class=\"text-active-blue\">s kým mluvíte</span> &mdash; vás chrání před:",
"privacy-matters-section-label": "Ujistěte se, že váš messenger nemá přístup k vašim datům!",
"simplex-private-section-header": "Co dělá SimpleX <span class=\"gradient-text\"> soukromým</span>",
"simplex-private-section-header": "Co dělá SimpleX <span class=\"gradient-text\">soukromým</span>",
"tap-to-close": "Klepnutím zavřete",
"simplex-network-section-header": "SimpleX <span class=\"gradient-text\">Síť</span>",
"simplex-network-section-desc": "Simplex Chat poskytuje nejlepší soukromí tím, že kombinuje výhody P2P a federovaných sítí.",
"simplex-network-section-desc": "SimpleX Chat poskytuje nejlepší soukromí tím, že kombinuje výhody P2P a federovaných sítí.",
"simplex-network-1-header": "Na rozdíl od P2P sítí",
"simplex-network-1-overlay-linktext": "problémům P2P sítí",
"simplex-network-2-header": "Na rozdíl od federovaných sítí",
@@ -181,7 +181,7 @@
"privacy-matters-overlay-card-2-p-2": "Chcete-li být objektivní a činit nezávislá rozhodnutí, musíte mít svůj informační prostor pod kontrolou. Je to možné pouze v případě, že používáte soukromou komunikační síť, která nemá přístup k vašemu sociálnímu grafu.",
"simplex-unique-overlay-card-1-p-2": "K doručování zpráv SimpleX používá <a href=\"https://csrc.nist.gov/glossary/term/Pairwise_Pseudonymous_Identifier\">párové anonymní adresy</a> jednosměrných front zpráv, oddělených pro přijaté a odeslané zprávy, obvykle přes různé servery.",
"privacy-matters-overlay-card-3-p-2": "Jedním z nejvíce šokujících příběhů je zkušenost <a href=\"https://en.wikipedia.org/wiki/Mohamedou_Ould_Slahi\" target=\"_blank\">Mohamedoua Oulda Salahiho</a> popsaná v jeho pamětech a zobrazená v Mauritánském filmu. Byl umístěn do tábora na Guantánamu bez soudu a byl tam 15 let mučen po telefonátu svému příbuznému v Afghánistánu pro podezření z účasti na útocích z 11. září, i když předchozích 10 let žil v Německu.",
"simplex-unique-overlay-card-1-p-1": "Na rozdíl od jiných sítí pro zasílání zpráv nemá SimpleX <strong> žádné identifikátory přiřazené uživatelům</strong>. Nespoléhá na telefonní čísla, adresy založené na doméně (jako e-mail nebo XMPP), uživatelská jména, veřejné klíče nebo dokonce náhodná čísla k identifikaci svých uživatelů &mdash; Operátoři SimpleX serverů neví, kolik lidí používá jejich servery.",
"simplex-unique-overlay-card-1-p-1": "Na rozdíl od jiných sítí pro zasílání zpráv nemá SimpleX <strong>žádné identifikátory přiřazené uživatelům</strong>. Nespoléhá na telefonní čísla, adresy založené na doméně (jako e-mail nebo XMPP), uživatelská jména, veřejné klíče nebo dokonce náhodná čísla k identifikaci svých uživatelů &mdash; Operátoři SimpleX serverů neví, kolik lidí používá jejich servery.",
"invitation-hero-header": "Byl vám zaslán odkaz pro připojení na SimpleX Chat",
"simplex-unique-overlay-card-3-p-1": "SimpleX Chat ukládá všechna uživatelská data pouze na klientských zařízeních pomocí <strong>přenosného šifrovaného databázového formátu</strong>, který lze exportovat a přenést na jakékoli podporované zařízení.",
"contact-hero-p-1": "Veřejné klíče a adresa fronty zpráv v tomto odkazu NEJSOU při zobrazení této stránky odesílány přes síť &mdash; jsou obsaženy ve fragmentu kontrolního součtu adresy URL odkazu.",
@@ -235,7 +235,7 @@
"hero-overlay-3-title": "Hodnocení zabezpečení",
"hero-overlay-3-textlink": "Hodnocení zabezpečení",
"hero-overlay-card-3-p-1": "<a href=\"https://www.trailofbits.com/about/\">Trail of Bits</a> je přední bezpečnostní a technologické poradenství, jejichž klienti zahrnují velké technologické firmy, vládní agentury a významné blockchainové projekty.",
"f-droid-page-simplex-chat-repo-section-text": "Chcete-li jej přidat do vašeho F-Droid clienta, <span class=\"hide-on-mobile\"> naskenujte QR kód nebo</span> použijte tuto adresu URL:",
"f-droid-page-simplex-chat-repo-section-text": "Chcete-li jej přidat do vašeho F-Droid clienta, <span class=\"hide-on-mobile\">naskenujte QR kód nebo</span> použijte tuto adresu URL:",
"f-droid-page-f-droid-org-repo-section-text": "SimpleX Chat a F-Droid.org repozitáře jsou podepsané různými klíči. Chcete-li přepnout, prosím <a href=\"/docs/guide/chat-profiles.html#move-your-chat-profiles-to-another-device\">exportujte</a> chat databázi a přeinstalujte aplikaci.",
"comparison-section-list-point-4a": "SimpleX relé nemůže ohrozit šifrování e2e. Ověřte bezpečnostní kód, který zmírňuje mimo pásmový útok na kanál",
"docs-dropdown-8": "SimpleX Directory",
@@ -279,12 +279,12 @@
"index-messaging-p2": "Pro vaše soukromí servery nevidí vaše zprávy <span>ani to, s kým si píšete</span>.",
"index-messaging-cta": "Zjistit více o zprávách v SimpleX",
"index-nextweb-h2": "Váš internet<br>budoucnosti",
"index-nextweb-p1": "SimpleX je postaven na myšlence, že <span>vaše data, kontakty a skupiny patří vám</span>.",
"index-nextweb-p2": "Otevřená decentralizovaná síť vám umožňuje spojovat se s ostatními a komunikovat svobodně a bezpečně.",
"index-nextweb-p1": "SimpleX je postaven na myšlence, že <span>vy musíte vlastnit váš profil, kontakty a komunity</span>.",
"index-nextweb-p2": "Nikým nevlastněná decentralizovaná síť, vám umož spojit se s lidmi a sdílet nápady, být svobodný a bezpečný ve své síti.",
"index-token-h2": "Stabilní komunity",
"index-token-p1": "Své oblíbené skupiny budete moci podpořit pomocí připravovaných Skupinových Voucherů.",
"index-token-p2": "Vouchery budou sloužit k úhradě provozu serverů, aby skupiny zůstaly svobodné a nezávislé.",
"index-token-cta": "Zjistěte více a <strong>získejte bezplatný přístup</strong> do testování.",
"index-token-cta": "Zjistěte více a <strong>získejte bezplatnou vstupenku</strong> pro rané testování.",
"index-roadmap-h2": "Plán SimpleX ke svobodnému internetu",
"index-roadmap-2025": "2025",
"index-roadmap-2025-title": "Škálování pro velké komunity",
@@ -314,5 +314,59 @@
"messengers-comparison-section-list-point-5": "Dvoufaktorovou výměnu klíčů lze volitelně aktivovat pomocí ověření bezpečnostním kódem.",
"messengers-comparison-section-list-point-6": "Postkvantová dohoda o klíči je omezená — chrání pouze některé kroky ratchet mechanismu.",
"navbar-old-site": "Starý web",
"why-p1": "Narodili jste se bez účtu.",
"why-p2": "Nikdo nesledoval vaše konverzace. Nikdo nenakreslil mapu, kde jste byli. Ochrana osobních údajů nikdy nebyla funkce — byl to způsob života.",
"why-tagline": "Buďte volní ve své síti.",
"why-footer-link": "Proč ji stavíme",
"docs-dropdown-15": "Ověřitelné a opakovatelné sestavení",
"why-p3": "Pak jsme se přesunuli na internet a každá platforma chtěla o vás něco vědět &mdash; vaše jméno, vaše číslo, vaše přátele. Smířili jsme se s tím, že cenou za komunikaci s ostatními je dát někomu vědět, s kým mluvíme. Každá generace, lidská i technická, to tak měla &mdash; telefon, e-mail, komunikátory, sociální sítě. Zdálo se, že je to jediný možný způsob.",
"why-p4": "Existuje i jiný způsob. Síť bez telefonních čísel. Bez uživatelských jmen. Bez účtů. Bez jakékoli uživatelské identity. Síť, která spojuje lidi a přenáší šifrované zprávy, aniž by bylo známo, kdo je připojen.",
"why-p5": "Není lepší zámek na dveřích někoho jiného. Není milejší nájemce, který respektuje vaše soukromí, ale přesto vede evidenci všech návštěvníků. Vy nejste host. Jste doma. Ani král do něj nemůže vstoupit &mdash; jste suverén.",
"why-p6": "Vaše konverzace patří vám, jako tomu bylo vždy před internetem. Síť není místo, které navštěvujete. Je to místo, které vytváříte a vlastníte. A nikdo vám ho nemůže vzít, ať už je soukromé, nebo veřejné.",
"why-p7": "Nejstarší lidská svoboda &mdash; mluvit s druhým člověkem, aniž by byl sledován &mdash; postavena na infrastruktuře, která ji nemůže zradit.",
"why-p8": "Protože jsme zničili sílu vědět, kdo jste. Aby vám <em>vaši</em> moc nikdo nemohl vzít.",
"file": "Soubor",
"file-noscript": "Pro přenos souborů je zapotřebí JavaScript.",
"file-e2e-note": "Koncové šifrování — server nikdy neuvidí váš soubor.",
"file-learn-more": "Další informace o protokolu XFTP",
"file-desc": "Odeslání souborů bezpečně s šifrováním end-to-end — žádné účty, žádné sledování.",
"file-cta-heading": "Získejte SimpleX Chat &mdash; nejbezpečnější &amp; soukromí komunikátor",
"file-cta-subheading": "Přenos souborů, který jste právě použili, používá stejný protokol pro přenos dat jako SimpleX Chat. Aplikace má end-to-end šifrované zprávy, hlasové a video volání, skupiny a odesílání souborů. Žádný účet. Žádný telefon. Žádný e-mail. Žádné ID uživatelského profilu.",
"file-title": "SimpleX Přenos Souborů",
"file-drop-text": "Přetáhněte soubor sem",
"file-drop-hint": "nebo",
"file-choose": "Vyberte soubor",
"file-max-size": "Max 100 MB - <a href=\"#join-simplex\">SimpleX Chat apka</a> podporuje soubory až do 1 GB",
"file-encrypting": "Šifruji…",
"file-uploading": "Nahrávám…",
"file-cancel": "Zrušit",
"file-uploaded": "Nahrané soubory",
"file-copy": "Kopírovat",
"file-copied": "Zkopírováno!",
"file-share": "Sdílet",
"file-expiry": "Soubory jsou obvykle k dispozici 48 hodin.",
"file-sec-1": "Váš soubor byl zašifrován v prohlížeči - datové routery nikdy neuvidí obsah souboru, jméno nebo velikost.",
"file-sec-2": "Šifrovací klíč je obsažen v hash části odkazu nikdy se neodesílá na žádný server.",
"file-sec-3": "Pro větší bezpečnost, použijte <a href=\"https://simplex.chat/download\">SimpleX Chat</a> apku.",
"file-retry": "Znovu",
"file-downloading": "Stahuji…",
"file-decrypting": "Dešifruji…",
"file-download-complete": "Stažení dokončeno",
"file-download-btn": "Stahování",
"file-too-large": "Soubor příliš velký (%size%). Maximum je 100 MB. <a href=\"#join-simplex\">SimpleX app</a> podporuje soubory až do 1 GB.",
"file-empty": "Soubor je prázdný.",
"file-invalid-link": "Neplatný nebo poškozený odkaz.",
"file-init-error": "Chyba inicializace: %error%",
"file-available": "Dostupný soubor (~%size%)",
"file-dl-sec-1": "Tento soubor je šifrován - datové směrovače nikdy neuvidí obsah souboru, jméno nebo velikost.",
"file-workers-required": "Vyžadováni Web Workers — aktualizujte prohlížeč",
"file-protocol-title": "XFTP protokol: nejbezpečnější přenos souborů",
"file-proto-h-1": "Není nutný žádný účet",
"file-proto-p-1": "Každá část souborů používá nový náhodný klíč. Datové směrovače nemají \"uživatele\" nebo \"soubory\" - přenášejí šifrované části souborů stejných velikostí.",
"file-proto-h-2": "Trojitě zašifrováno ve vašem prohlížeči",
"file-proto-h-4": "Nezávislé směrovače dat",
"file-proto-spec": "Přečtěte si specifikaci XFTP protokolu →",
"file-proto-p-2": "Šifrovací klíč souboru je obsažen pouze v části hash adresy URL váš prohlížeč jej nikdy neodesílá na server. Existují 3 úrovně šifrování: přenos přes protokol TLS, šifrování pro každého příjemce (jedinečný dočasný klíč pro každý přenos) a šifrování souborů typu end-to-end.",
"file-proto-p-4": "Když je soubor rozdělen na části, je odeslán přes síťové směrovače provozované nezávislými stranami. Žádný operátor nemůže vidět aktuální velikost nebo jméno souboru. I kdyby byl směrovač ohrožen, může vidět pouze šifrované části s pevně stanovenou velikosti. Části souboru jsou v mezipaměti síťových směrovačů uchovávány přibližně 48 hodin.",
"send-file": "Odeslat soubor"
}
+59 -5
View File
@@ -200,7 +200,7 @@
"privacy-matters-overlay-card-1-p-4": "Das SimpleX-Netzwerk schützt die Privatsphäre Ihrer Verbindungen besser als jede Alternative und verhindert vollständig, dass Ihr sozialer Graph für Unternehmen oder Organisationen verfügbar wird. Selbst wenn Anwender die in der SimpleX Chat-App vorkonfigurierten Server verwenden, kennen die Server-Betreiber die Anzahl der Benutzer oder deren Verbindungen nicht.",
"contact-hero-header": "Sie haben eine Adresse zur Verbindung mit SimpleX Chat erhalten",
"invitation-hero-header": "Sie haben einen Einmal-Link zur Verbindung mit SimpleX Chat erhalten",
"privacy-matters-overlay-card-3-p-3": "Normale Menschen werden für das, was sie online teilen, sogar unter Nutzung ihrer „anonymen“ Konten, <a href=\"https://www.dailymail.co.uk/news/article-11282263/Moment-police-swoop-house-devout-catholic-mother-malicious-online-posts.html\" target=\"_blank\">selbst in demokratischen Ländern</a> verhaftet.",
"privacy-matters-overlay-card-3-p-3": "<a href=\"https://www.dailymail.co.uk/news/article-11282263/Moment-police-swoop-house-devout-catholic-mother-malicious-online-posts.html\" target=\"_blank\">Selbst in demokratischen Ländern</a> werden normale Menschen, auch unter Nutzung ihrer „anonymen“ Benutzerkennungen, für das, was sie online teilen, verhaftet.",
"simplex-unique-overlay-card-3-p-1": "SimpleX Chat speichert alle Benutzerdaten ausschließlich auf den Endgeräten in einem <strong>portablen und verschlüsselten Datenbankformat</strong>, welches exportiert und auf jedes unterstützte Gerät übertragen werden kann.",
"simplex-unique-overlay-card-2-p-2": "Auch wenn die optionale Benutzeradresse zum Versenden von Spam-Kontaktanfragen verwendet werden kann, können Sie sie ändern oder ganz löschen, ohne dass Ihre Verbindungen verloren gehen.",
"simplex-unique-overlay-card-4-p-2": "Das SimpleX-Netzwerk verwendet ein <a href=\"https://github.com/simplex-chat/simplexmq/blob/stable/protocol/overview-tjr.md\" target=\"_blank\">offenes Protokoll</a> und bietet ein <a href=\"https://github.com/simplex-chat/simplex-chat/tree/stable/packages/simplex-chat-client/typescript\" target=\"_blank\">SDK zur Erstellung von Chatbots</a> an. Dies ermöglicht die Erstellung von Diensten, mit denen Nutzer über SimpleX Chat-Apps interagieren können &mdash; wir sind gespannt, welche SimpleX-Dienste Sie entwickeln werden.",
@@ -275,15 +275,15 @@
"index-publications-optout-title": "Podcast-Interview von OptOut",
"worlds-most-secure-messaging": "Das sicherste Messaging-System der Welt",
"index-messaging-p1": "SimpleX-Messaging verfügt über modernste Ende-zu-Ende-Verschlüsselung.",
"index-messaging-p2": "Zu Ihrer Sicherheit und zum Schutz Ihrer Privatsphäre können Server Ihre Nachrichten weder sehen,<span> noch mit wem Sie kommunizieren</span>.",
"index-messaging-p2": "Zu Ihrer Sicherheit und zum Schutz Ihrer Privatsphäre können Server weder Ihre Nachrichten sehen,<span> noch mit wem Sie kommunizieren</span>.",
"index-messaging-cta": "Lernen Sie mehr über SimpleX-Messaging",
"index-nextweb-h2": "Sie besitzen die<br>Zukunft des Webs",
"index-nextweb-p1": "SimpleX basiert auf der Überzeugung, dass <span>Sie Eigentümer Ihrer Identität, Ihrer Kontakte und Ihrer Communitys bleiben müssen</span>.",
"index-nextweb-p2": "Ein offenes und dezentrales Netzwerk ermöglicht es Ihnen, mit Menschen in Kontakt zu treten und Ideen auszutauschen: Seien Sie frei und sicher.",
"index-nextweb-p1": "SimpleX wurde aus der Überzeugung heraus entwickelt, dass <span>Sie Eigentümer Ihrer Profile, Kontakte und Communitys bleiben müssen</span>.",
"index-nextweb-p2": "Ein dezentrales Netzwerk, welches Niemanden gehört, ermöglicht es Ihnen, mit Menschen in Kontakt zu treten, Ideen auszutauschen und dabei frei und sicher in Ihrem Netzwerk zu sein.",
"index-token-h2": "Communitys, die Bestand haben",
"index-token-p1": "Sie werden Ihre Lieblingsgruppen in Zukunft mit Community-Gutscheinen unterstützen können.",
"index-token-p2": "Server werden mit Gutscheinen bezahlt, damit Ihre Communitys kostenlos und unabhängig bleiben können.",
"index-token-cta": "Erfahren Sie mehr und <strong>holen Sie sich Ihren kostenlosen NFT ab</strong><br>, um es frühzeitig auszuprobieren.",
"index-token-cta": "Erfahren Sie mehr und <strong>sichern Sie sich einen kostenlosen Zugangspass</strong>, um es frühzeitig auszuprobieren.",
"index-roadmap-h2": "SimpleX - Der Weg zum freien Internet",
"index-roadmap-2025": "2025",
"index-roadmap-2025-title": "Skalierung auf große Communitys",
@@ -314,5 +314,59 @@
"messengers-comparison-section-list-point-6": "Die Schlüsselvereinbarung per Post-Quanten-Security ist nicht durchgängig &mdash; Sie schützt lediglich ausgewählte Schritte innerhalb des Ratchet-Prozesses.",
"navbar-token": "Token",
"navbar-old-site": "Alte Webseite",
"docs-dropdown-15": "Builds überprüfen und reproduzieren",
"why-p1": "Sie wurden ohne eine Benutzerkennung geboren.",
"why-p2": "Niemand verfolgte Ihre Gespräche. Niemand erstellte eine Karte, wo Sie sich aufgehalten haben. Privatsphäre war nie ein Feature &mdash; sie war selbstverständlich.",
"why-p3": "Dann sind wir online gegangen, und jede Plattform wollte Etwas von Ihnen &mdash; Ihren Namen, Ihre Nummer, Ihre Freunde. Wir akzeptierten, dass es der Preis mit Anderen zu kommunizieren ist, Jemandem preiszugeben, mit wem und wie wir miteinander kommunizieren. Jede Generation, Menschen und Technologien, kannten es nur so &mdash; Telefon, E-Mail, Messenger, soziale Medien. Es schien der einzig mögliche Weg zu sein.",
"why-p4": "Es gibt einen anderen Weg. Ein Netzwerk ohne Telefonnummern, ohne Benutzernamen, ohne Benutzerkennungen und ohne jegliche Benutzeridentität. Ein Netzwerk, welches Menschen verbindet und verschlüsselte Nachrichten überträgt, ohne zu wissen, wer mit wem verbunden ist.",
"why-p5": "Nicht ein besseres Schloss an der Tür eines Anderen. Kein freundlicher Vermieter, der Ihre Privatsphäre respektiert, aber dennoch jeden Besucher registriert. Sie sind kein Gast. Sie sind zu Hause. Kein Vermieter, kein Fremder kann es betreten &mdash; Sie sind souverän.",
"why-p6": "Ihre Kommunikation gehört Ihnen, so wie es immer war, bevor es das Internet gab. Das Netzwerk ist kein Ort, den Sie besuchen. Es ist ein Ort, den Sie erschaffen und besitzen und Niemand kann es Ihnen nehmen, egal ob Sie es privat oder öffentlich machen.",
"why-p7": "Die älteste Freiheit des Menschen &mdash; mit einem anderen Menschen sprechen zu können, ohne beobachtet zu werden &mdash; gestützt auf einer Infrastruktur, die Sie nicht verraten kann.",
"why-p8": "Weil wir die Macht zerstört haben, zu wissen, wer Sie sind. Damit <em>Ihnen Ihre</em> Macht niemals genommen werden kann.",
"why-tagline": "Genießen Sie die Freiheit in Ihrem Netzwerk.",
"why-footer-link": "Warum wir es erschaffen haben",
"file": "Datei",
"file-desc": "Versenden Sie Dateien via Ende-zu-Ende-Verschlüsselung &mdash; ohne Benutzerkennungen, ohne Tracking.",
"file-noscript": "Für den Datei-Transfer wird JavaScript benötigt.",
"file-e2e-note": "Ende-zu-Ende-verschlüsselt &mdash; der Server bekommt Ihre Datei nie zu sehen.",
"file-learn-more": "Erfahren Sie mehr über das XFTP-Protokoll",
"file-cta-heading": "Laden Sie sich die SimpleX Chat App herunter &mdash; die sicherste &amp; private Messenger-App",
"file-cta-subheading": "Die Dateiübertragung, die Sie gerade verwendet haben, nutzt dasselbe Datenweiterleitungsprotokoll wie SimpleX Chat. Die App bietet EndezuEndeverschlüsselte Nachrichten, Sprach und Videoanrufe, Gruppen sowie das Senden von Dateien. Keine Benutzerkennung. Kein Telefon. Keine EMail. Keine BenutzerprofilIDs.",
"file-title": "SimpleX Dateiübertragung",
"file-drop-text": "Datei per Drag & Drop hinzufügen",
"file-drop-hint": "oder",
"file-choose": "Datei auswählen",
"file-max-size": "Max. 100 MB &mdash; die <a href=\"#join-simplex\">SimpleX Chat App</a> unterstützt Dateien bis zu 1 GB",
"file-encrypting": "Wird verschlüsselt…",
"file-uploading": "Wird hochgeladen…",
"file-cancel": "Abbrechen",
"file-uploaded": "Datei wurde hochgeladen",
"file-copy": "Kopieren",
"file-copied": "Wurde kopiert!",
"file-share": "Teilen",
"file-expiry": "Dateien sind in der Regel 48 Stunden lang verfügbar.",
"file-sec-1": "Ihre Datei wurde im Browser verschlüsselt &mdash; Datenrouter sehen weder Inhalt, Namen noch Größe der Datei.",
"file-sec-2": "Der für die Verschlüsselung genutzte Schlüssel befindet sich im HashFragment des Links und wird niemals an einen Server übertragen.",
"file-sec-3": "Für noch mehr Sicherheit verwenden Sie die <a href=\"https://simplex.chat/download\">SimpleX Chat App</a>.",
"file-retry": "Wiederholen",
"file-downloading": "Wird heruntergeladen…",
"file-decrypting": "Wird entschlüsselt…",
"file-download-complete": "Herunterladen abgeschlossen",
"file-download-btn": "Herunterladen",
"file-too-large": "Datei ist zu groß (%size%). Das Maximum ist 100MB. Die <a href=\"#join-simplex\">SimpleX Chat App</a> unterstützt Dateigrößen bis zu 1GB.",
"file-empty": "Datei ist leer.",
"file-invalid-link": "Ungültiger oder beschädigter Link.",
"file-init-error": "Initialisierung fehlgeschlagen: %error%",
"file-available": "Datei verfügbar (~%size%)",
"file-dl-sec-1": "Diese Datei ist verschlüsselt &mdash; Datenrouter sehen weder Inhalt, Namen noch Größe der Datei.",
"file-workers-required": "Web Workers werden benötigt &mdash; aktualisieren Sie Ihren Browser",
"file-protocol-title": "XFTP-Protokoll: Der sicherste Dateitransfer",
"file-proto-h-1": "Es wird keine Benutzerkennung benötigt",
"file-proto-p-1": "Jedes Dateifragment verwendet einen neuen zufälligen Schlüssel. Datenrouter kennen keine \"Benutzer\" oder \"Dateien\" &mdash; sie übertragen nur verschlüsselte Dateifragmente fester Größe.",
"file-proto-h-2": "Dreifach direkt in Ihrem Browser verschlüsselt",
"file-proto-p-2": "Der für die Dateiverschlüsselung genutzte Schlüssel befindet sich ausschließlich im HashFragment der URL &mdash; Ihr Browser sendet ihn niemals an einen Server. Es gibt drei Verschlüsselungsebenen: TLSTransport, empfängerbezogene Verschlüsselung (ein eindeutiger, flüchtiger Schlüssel pro Transfer) und EndezuEndeVerschlüsselung der Datei.",
"file-proto-h-4": "Unabhängig voneinander arbeitende Datenrouter",
"file-proto-p-4": "Wenn die Datei in Fragmente aufgeteilt wurde, wird sie über Netzwerkrouter übertragen, die von unabhängigen Parteien betrieben werden. Kein Betreiber kann die tatsächliche Dateigröße oder den Dateinamen sehen. Selbst wenn ein Router kompromittiert wird, sieht er nur verschlüsselte Fragmente fester Größe. Die Fragmente werden von den Netzwerkroutern für etwa 48 Stunden zwischengespeichert.",
"file-proto-spec": "Lesen Sie die XFTPProtokollspezifikation durch →",
"send-file": "Datei senden"
}
+1 -1
View File
@@ -185,7 +185,7 @@
"simplex-private-section-header": "What makes SimpleX <span class=\"gradient-text\">private</span>",
"tap-to-close": "Tap to close",
"simplex-network-section-header": "SimpleX <span class=\"gradient-text\">Network</span>",
"simplex-network-section-desc": "Simplex Chat provides the best privacy by combining the advantages of P2P and federated networks.",
"simplex-network-section-desc": "SimpleX Chat provides the best privacy by combining the advantages of P2P and federated networks.",
"simplex-network-1-header": "Unlike P2P networks",
"simplex-network-1-desc": "All messages are sent via the servers, both providing better metadata privacy and reliable asynchronous message delivery, while avoiding many",
"simplex-network-1-overlay-linktext": "problems of P2P networks",
+60 -6
View File
@@ -83,7 +83,7 @@
"simplex-unique-4-title": "La red SimpleX te pertenece",
"hero-overlay-card-1-p-1": "Muchos usuarios se preguntan: <em>si SimpleX no tiene identificadores de usuario, ¿cómo puede saber dónde entregar los mensajes?</em>",
"hero-overlay-card-1-p-4": "Este diseño evita que se filtren metadatos de usuario a nivel de aplicación. Para mejorar aún más la privacidad y proteger tu dirección IP, puedes conectarte a los servidores de mensajería a través de la red Tor.",
"hero-overlay-card-1-p-6": "Encontrarás más información en el<a href=\"https://github.com/simplex-chat/simplexmq/blob/stable/protocol/overview-tjr.md\" target=\"_blank\">SimpleX whitepaper</a>.",
"hero-overlay-card-1-p-6": "Encontrarás más información en el <a href=\"https://github.com/simplex-chat/simplexmq/blob/stable/protocol/overview-tjr.md\" target=\"_blank\">SimpleX whitepaper</a>.",
"hero-overlay-card-2-p-1": "Cuando los usuarios asumen identidades persistentes, aunque sólo se trate de un número aleatorio como un identificador de sesión, existe el riesgo de que el proveedor de red o un atacante puedan observar cómo se conectan y la cantidad de mensajes que envían.",
"hero-overlay-card-2-p-2": "A continuación podrían correlacionar esta información con las redes sociales públicas existentes y averiguar las identidades reales de los usuarios.",
"hero-overlay-card-2-p-3": "Incluso con las aplicaciones más privadas que usan los servicios de Tor v3, si hablas con dos contactos a través de un mismo perfil se puede probar que estos están conectados con la misma persona.",
@@ -199,7 +199,7 @@
"scan-the-qr-code-with-the-simplex-chat-app-description": "Las claves públicas y la dirección de la cola de mensajes de este enlace NO se envían a través de la red cuando ves esta página.<br> Están contenidos en el fragmento hash del URL del enlace.",
"privacy-matters-section-header": "Por qué es <span class=\"gradient-text\">importante</span> la privacidad",
"simplex-private-section-header": "Qué hace que SimpleX sea <span class=\"gradient-text\">privado</span>",
"simplex-network-section-desc": "Simplex Chat proporciona la mejor privacidad al combinar las ventajas de P2P y las redes federadas.",
"simplex-network-section-desc": "SimpleX Chat proporciona la mejor privacidad al combinar las ventajas de P2P y las redes federadas.",
"simplex-network-1-header": "Distinta de las redes P2P",
"simplex-network-2-header": "Distinta de las redes federadas",
"simplex-network-2-desc": "Los servidores de SimpleX NO almacenan perfiles de usuario, contactos, o mensajes entregados. NO contactan entre sí y NO existe un directorio de servidores.",
@@ -235,7 +235,7 @@
"stable-and-beta-versions-built-by-developers": "Versiones estables y beta compilados por los desarrolladores",
"f-droid-page-simplex-chat-repo-section-text": "Para añadirlo al cliente F-Droid, <span class=\"hide-on-mobile\">escanea el código QR o</span> usa esta URL:",
"docs-dropdown-8": "Directorio SimpleX",
"simplex-chat-repo": "Repositorio Simplex Chat",
"simplex-chat-repo": "Repositorio SimpleX Chat",
"simplex-chat-via-f-droid": "SimpleX Chat en F-Droid",
"f-droid-org-repo": "Repositorio F-Droid.org",
"stable-versions-built-by-f-droid-org": "Versión estable compilada por F-Droid.org",
@@ -278,12 +278,12 @@
"index-messaging-p2": "Para tu seguridad y privacidad los servidores no pueden ver tus mensajes <span>ni con quién te comunicas</span>.",
"index-messaging-cta": "Descubre más sobre la mensajería SimpleX",
"index-nextweb-h2": "La Web<br>Del Futuro<br>Te Pertenece",
"index-nextweb-p1": "SimpleX se funda en la creencia de que <span>debes ser el propietario de tu identidad, contactos y comunidades</span>.",
"index-nextweb-p2": "Una red abierta y descentralizada que te permite conectarte con personas y compartir ideas: libre y segura.",
"index-nextweb-p1": "SimpleX se origina en la creencia de que <span>debes ser el propietario de tus perfiles, contactos y comunidades</span>.",
"index-nextweb-p2": "Una red descentralizada que no pertenece a nadie, que te permite conectar con personas y compartir ideas de manera libre y segura en tu red.",
"index-token-h2": "Comunidades Duraderas",
"index-token-p1": "Podrás apoyar a tus grupos favoritos con los futuros Vales Comunitarios.",
"index-token-p2": "Los vales costearán los servidores para que tus comunidades sigan siendo libres e independientes.",
"index-token-cta": "Descubre más y <strong>obtén tu NFT gratuito</strong> por participar en las pruebas.",
"index-token-cta": "Descubre más y <strong>obtén acceso gratuito</strong> para participar en las pruebas iniciales.",
"index-roadmap-h2": "Ruta SimpleX hacía el Internet Libre",
"index-roadmap-2025": "2025",
"index-roadmap-2025-title": "Escalar a Comunidades Grandes",
@@ -314,5 +314,59 @@
"messengers-comparison-section-list-point-6": "El acuerdo de claves postcuántico es \"parcial\", solo protege determinados pasos del ratchet.",
"navbar-token": "Token",
"navbar-old-site": "Web antigua",
"why-p1": "Naciste sin una cuenta.",
"why-p2": "Nadie monitorizaba tus conversaciones. Nadie registraba tus ubicaciones. La privacidad nunca fue un lujo, era la manera de vivir.",
"why-p3": "Después pasamos a internet y cada plataforma pedía una parte de tí: tu nombre, tu número, tus amistades. Aceptamos que el precio de hablar con los demás es informar a alguien de quién es interlocutor. Cada generación, personas y tecnología, ha funcionado así: teléfono, email, mensajería, redes sociales. Parecía el único camino.",
"why-p4": "Existe otro camino. Una red sin números de teléfono. Sin nombres de usuario. Sin cuentas. Sin identificadores de ningún tipo. Una red que conecta las personas y entrega mensajes cifrados sin saber quien está conectado.",
"why-p5": "No un candado mejorado en la puerta de otro. No un terrateniente que respeta tu privacidad pero sigue guardando un registro de tus visitantes. Tu no eres el invitado. Estás en tu casa y ningún rey podrá entrar. Tu eres el soberano.",
"why-p6": "Tus conversaciones te pertenecen, tal como ha sido siempre antes de la llegada de internet. Tu red no es un lugar que visitas. Es un lugar que has creado, te pertenece y nadie te la podrá quitar, ya sea pública o privada.",
"why-p7": "La libertad más antigua del ser humano, la de hablar con otra persona sin ser observado, materializada sobre una infraestructura que no puede traicionarla.",
"why-p8": "Porque hemos destruido el poder de saber quien eres. De manera que <em>tu</em> poder nunca se pueda arrebatar.",
"why-tagline": "Se libre en tu red.",
"why-footer-link": "Por qué la estamos creando",
"docs-dropdown-15": "Verificar y reproducir compilaciones",
"file": "Archivo",
"file-desc": "Envía archivos cifrados de extremo a extremo de forma segura - sin cuentas, sin ser monitorizado.",
"file-noscript": "Se requiere JavaScript para transferir archivos.",
"file-e2e-note": "Cifrado de extremo a extremo, el servidor nunca ve tus archivos.",
"file-learn-more": "Descubre más sobre el protocolo XFTP",
"file-cta-heading": "Descarga SimpleX Chat &mdash; el mensajero privado &amp; más seguro",
"file-title": "Transferencia de archivos SimpleX",
"file-drop-text": "Arrastra y suelta el archivo aquí",
"file-drop-hint": "o",
"file-choose": "Seleccionar archivo",
"file-max-size": "Max 100 MB - <a href=\"#join-simplex\">La app SimpleX Chat</a> soporta archivos hasta 1GB",
"file-encrypting": "Cifrando…",
"file-uploading": "Subiendo…",
"file-cancel": "Cancelar",
"file-uploaded": "Archivo subido",
"file-copy": "Copiar",
"file-copied": "¡Copiado!",
"file-share": "Compartir",
"file-expiry": "Normalmente los archivos están disponibles durante 48 horas.",
"file-sec-1": "Tu archivo se ha cifrado en el navegador, los routers de datos nunca ven el contenido, el nombre o el tamaño.",
"file-sec-2": "La clave de cifrado está en el fragmento hash del enlace, nunca se envía a ningún servidor.",
"file-sec-3": "Para mejor seguridad, usa la app <a href=\"https://simplex.chat/download\">SimpleX Chat</a>.",
"file-retry": "Reintentar",
"file-downloading": "Descargando…",
"file-decrypting": "Descifrando…",
"file-download-complete": "Descarga completada",
"file-download-btn": "Descargar",
"file-too-large": "Archivo demasiado grande (%size%). Máximo 100MB. La <a href=\"#join-simplex\">app SimpleX</a> soporta archivos de hasta 1GB.",
"file-empty": "El archivo está vacío.",
"file-invalid-link": "Enlace corrupto o no válido.",
"file-init-error": "Fallo al inicializar: %error%",
"file-available": "Archivo disponible (~%size%)",
"file-dl-sec-1": "El archivo está cifrado, los routers de datos no ven el contenido, el nombre o el tamaño.",
"file-workers-required": "Web Workers requerido, actualiza el navegador",
"file-protocol-title": "Protocolo XFTP, la transferencia de archivos más segura",
"file-proto-h-1": "No se necesita cuenta",
"file-proto-p-1": "Cada fragmento del archivo usa una clave aleatoria. Los routers de datos no tienen \"usuarios\" o \"archivos\", solo transportan los fragmentos cifrados con un tamaño fijo.",
"file-proto-h-2": "Triple cifrado en tu navegador",
"file-proto-p-2": "La clave de cifrado está presente solo en el fragmento hash de la URL, tu navegador nunca lo envía a un servidor. Hay tres capas de cifrado: transporte TLS, clave por transferencia (clave única y temporal por cada transferencia), y cifrado de extremo a extremo del archivo.",
"file-proto-h-4": "Routers de datos independientes",
"file-proto-p-4": "Cuando un archivo se divide en fragmentos, se envía a través de routers en la red gestionados por terceros independientes. Ningún operador puede ver el nombre o el tamaño real del archivo. Incluso si un enrutador se ve comprometido, solo puede ver fragmentos cifrados de tamaño fijo. Los fragmentos de los archivos se almacenan por los routers de la red durante aproximadamente 48 horas.",
"file-proto-spec": "Sobre las especificaciones del protocolo XFTP →",
"file-cta-subheading": "La transferencia de archivos que acabas de usar emplea el mismo protocolo de enrutamiento de datos que SimpleX Chat. La aplicación ofrece mensajería, llamadas de voz y video, grupos y envío de archivos con cifrado de extremo a extremo. Sin cuentas. Sin teléfono. Sin correo electrónico. Sin identificadores de usuario.",
"send-file": "Enviar archivo"
}
+1 -1
View File
@@ -213,7 +213,7 @@
"privacy-matters-section-header": "Miksi yksityisyys on <span class='gradient-text'>tärkeää</span>",
"tap-to-close": "Napauta sulkeaksesi",
"simplex-network-section-header": "SimpleX <span class='gradient-text'>Verkko</span>",
"simplex-network-section-desc": "Simplex Chat tarjoaa parhaan yksityisyyden yhdistämällä P2P-verkkojen ja liitettävien verkkojen edut.",
"simplex-network-section-desc": "SimpleX Chat tarjoaa parhaan yksityisyyden yhdistämällä P2P-verkkojen ja liitettävien verkkojen edut.",
"simplex-network-1-desc": "Kaikki viestit lähetetään palvelimien kautta, mikä sekä parantaa metatietojen yksityisyyttä että mahdollistaa luotettavan asynkronisen viestien toimituksen, samalla välttäen monia",
"simplex-network-2-header": "Toisin kuin liitettävät verkot",
"simplex-network-3-desc": "palvelimet tarjoavat <span class='text-active-blue'>yksisuuntaisia jonopalveluja</span> yhdistääkseen käyttäjät, mutta niillä ei ole näkyvyyttä verkon yhteyskarttaan &mdash; ainoastaan käyttäjillä on.",
+1 -1
View File
@@ -177,7 +177,7 @@
"simplex-private-section-header": "Ce qui rend SimpleX <span class='gradient-text'>privé</span>",
"tap-to-close": "Appuyez pour fermer",
"simplex-network-section-header": "<span class='gradient-text'>Réseau</span> SimpleX",
"simplex-network-section-desc": "Simplex Chat offre la meilleure protection pour votre vie privée en combinant les avantages du P2P et des réseaux fédérés.",
"simplex-network-section-desc": "SimpleX Chat offre la meilleure protection pour votre vie privée en combinant les avantages du P2P et des réseaux fédérés.",
"simplex-network-1-header": "Contrairement aux réseaux P2P",
"simplex-network-1-desc": "Tous les messages sont envoyés via les serveurs, offrant à la fois une meilleure protection des métadonnées et une livraison asynchrone fiable des messages, tout en évitant de nombreux",
"simplex-network-1-overlay-linktext": "problèmes des réseaux P2P",
+1 -1
View File
@@ -122,7 +122,7 @@
"simplex-chat-for-the-terminal": "SimpleX Chat עבור מסוף שורת הפקודה",
"simplex-network-overlay-card-1-li-3": "P2P אינו פותר את בעיית <a href='https://en.wikipedia.org/wiki/Man-in-the-middle_attack'>התקפת MITM</a>, ורוב ההטמעות הקיימות אינן משתמשות בהודעות out-of-band עבור החלפת המפתחות הראשונית. SimpleX משתמש בהודעות out-of-band או, במקרים מסוימים, בחיבורים מאובטחים ומהימנים קיימים מראש לצורך החלפת המפתחות הראשונית.",
"the-instructions--source-code": "לקבלת ההוראות כיצד להוריד או לקמפל אותו מקוד המקור.",
"simplex-network-section-desc": "Simplex Chat מספק את הפרטיות הטובה ביותר על ידי שילוב היתרונות של P2P ורשתות מאוחדות.",
"simplex-network-section-desc": "SimpleX Chat מספק את הפרטיות הטובה ביותר על ידי שילוב היתרונות של P2P ורשתות מאוחדות.",
"privacy-matters-section-subheader": "שמירה על פרטיות המטא נתונים שלכם &mdash; <span class='text-active-blue'>עם מי אתם מדברים</span> &mdash; מגנה עליכם מפני:",
"if-you-already-installed": "אם כבר התקנתם",
"join": "הצטרפו",
+62 -8
View File
@@ -44,10 +44,10 @@
"feature-7-title": "Hordozható, titkosított alkalmazás-adattárolás &mdash; profil átköltöztetése egy másik eszközre",
"feature-8-title": "Az inkognitómód &mdash;<br>egyedülálló a SimpleX Chatben",
"simplex-network-overlay-1-title": "Összehasonlítás más P2P-üzenetküldő protokollokkal",
"simplex-private-1-title": "2 rétegű végpontok közötti titkosítás",
"simplex-private-1-title": "Kétrétegű végpontok közötti titkosítás",
"simplex-private-2-title": "További rétege a<br>kiszolgáló-titkosítás",
"simplex-private-4-title": "Hozzáférés a Tor hálózaton keresztül<br>(nem kötelező)",
"simplex-private-5-title": "Több rétegű<br>tartalomkitöltés",
"simplex-private-5-title": "Többrétegű<br>tartalomkitöltés",
"simplex-private-6-title": "Sávon kívüli<br>kulcscsere",
"simplex-private-7-title": "Üzenetintegritás<br>hitelesítés",
"simplex-private-8-title": "Üzenetek keverése<br>a korreláció csökkentése érdekében",
@@ -55,7 +55,7 @@
"simplex-private-10-title": "Ideiglenes, névtelen, páronkénti azonosítók",
"simplex-private-card-1-point-1": "Dupla racsnis protokoll &mdash;<br>OTR-üzenetküldés, kompromittálás előtti és utáni titkosság-védelemmel.",
"simplex-private-card-1-point-2": "NaCL cryptobox minden egyes várólistához, hogy megakadályozza a forgalom korrelációját az üzenetek várólistái között, ha a TLS veszélybe kerül.",
"simplex-private-card-2-point-1": "Kiegészítő kiszolgáló titkosítási réteg a címzettnek történő kézbesítéshez, hogy megakadályozza a fogadott és az elküldött kiszolgálóforgalom közötti korrelációt, ha a TLS veszélybe kerül.",
"simplex-private-card-2-point-1": "Kiegészítő kiszolgálótitkosítási réteg a címzettnek történő kézbesítéshez, hogy megakadályozza a fogadott és az elküldött kiszolgálóforgalom közötti korrelációt, ha a TLS veszélybe kerül.",
"simplex-private-card-3-point-1": "A kliens és a kiszolgálók közötti kapcsolatokhoz csak az erős algoritmusokkal rendelkező TLS 1.2/1.3 protokollt használja.",
"simplex-private-card-3-point-2": "A kiszolgáló ujjlenyomata és a csatornakötés megakadályozza a MITM- és a visszajátszási támadásokat.",
"simplex-private-card-3-point-3": "Az újrakapcsolódás le van tiltva a munkamenet elleni támadások megelőzése érdekében.",
@@ -88,7 +88,7 @@
"hero-overlay-card-1-p-1": "Sok felhasználó kérdezte: <em>ha a SimpleXnek nincsenek felhasználói azonosítói, honnan tudja, hogy hová kell eljuttatni az üzeneteket?</em>",
"hero-overlay-card-1-p-2": "Az üzenetek kézbesítéséhez az összes többi hálózat által használt felhasználói azonosítók helyett a SimpleX az üzenetek várólistába rendezéséhez ideiglenes, névtelen, páros azonosítókat használ, külön-külön minden egyes kapcsolathoz &mdash; nincsenek hosszú távú azonosítók.",
"hero-overlay-card-1-p-4": "Ez a kialakítás megakadályozza a felhasználók metaadatainak kiszivárgását az alkalmazás szintjén. Az adatvédelem további javítása és az IP-cím védelme érdekében az üzenetküldő kiszolgálókhoz Tor hálózaton keresztül is kapcsolódhat.",
"hero-overlay-card-1-p-5": "Csak a kliensek tárolják a felhasználói profilokat, partnereket és csoportokat; az üzenetek küldése 2 rétegű végpontok közötti titkosítással történik.",
"hero-overlay-card-1-p-5": "Csak a kliensek tárolják a felhasználói profilokat, partnereket és csoportokat; az üzenetek küldése kétrétegű végpontok közötti titkosítással történik.",
"hero-overlay-card-1-p-6": "További leírást a <a href=\"https://github.com/simplex-chat/simplexmq/blob/stable/protocol/overview-tjr.md\" target=\"_blank\">SimpleX ismertetőben</a> olvashat.",
"hero-overlay-card-2-p-1": "Ha a felhasználók állandó azonosítóval rendelkeznek, még akkor is, ha ez csak egy véletlenszerű szám, például egy munkamenet-azonosító, fennáll annak a veszélye, hogy a szolgáltató vagy egy támadó megfigyelheti, azt hogy hogyan kapcsolódnak a felhasználók egymáshoz, és hány üzenetet küldenek egymásnak.",
"hero-overlay-card-2-p-2": "Ezt az információt aztán összefüggésbe hozhatják a meglévő nyilvános közösségi hálózatokkal, és meghatározhatnak néhány valódi személyazonosságot.",
@@ -168,7 +168,7 @@
"privacy-matters-section-label": "Győződjön meg arról, hogy az üzenetváltó-alkalmazás amit használ nem fér hozzá az adataihoz!",
"simplex-private-section-header": "Mitől lesz a SimpleX <span class=\"gradient-text\">privát</span>",
"simplex-network-section-header": "SimpleX <span class=\"gradient-text\">hálózat</span>",
"simplex-network-section-desc": "A Simplex Chat a P2P- és a föderált hálózatok előnyeinek kombinálásával biztosítja a legjobb adatvédelmet.",
"simplex-network-section-desc": "A SimpleX Chat a P2P- és a föderált hálózatok előnyeinek kombinálásával biztosítja a legjobb adatvédelmet.",
"simplex-network-1-desc": "Minden üzenet a kiszolgálókon keresztül kerül elküldésre, ami jobb metaadat-védelmet és megbízható aszinkron üzenetkézbesítést biztosít, miközben elkerülhető a sok",
"simplex-network-2-header": "A föderált hálózatokkal ellentétben",
"simplex-network-2-desc": "A SimpleX továbbítókiszolgálói NEM tárolnak felhasználói profilokat, kapcsolatokat és kézbesített üzeneteket, NEM kapcsolódnak egymáshoz, és NINCS kiszolgálójegyzék.",
@@ -266,7 +266,7 @@
"index-security-review-2024-title": "Biztonsági audit 2024",
"index-security-audits-label": "Biztonsági<br>auditok",
"index-publications-heise-title": "A Heise Online kiadványai",
"index-hero-h2": "A Saját Hálózatában",
"index-hero-h2": "Az Ön hálózatában",
"index-testflight-title": "Nyilvános betekintés az iOS alkalmazás fejlesztésébe a TestFlighton",
"index-f-droid-title": "SimpleX alkalmazás az F-Droidon keresztül",
"index-publications-privacy-guides-title": "A Privacy Guides üzenetváltó ajánlásai",
@@ -278,8 +278,8 @@
"index-messaging-p2": "A biztonsága és magánszférájának védelme érdekében a kiszolgálók nem látják az üzeneteit, <span>és azt sem, hogy kivel beszélget</span>.",
"index-messaging-cta": "Tudjon meg többet a SimpleX üzenetváltó alkalmazásról",
"index-nextweb-h2": "Vegye birtokba<br>A jövő hálózatát",
"index-nextweb-p1": "A SimpleX arra a meggyőződésre épül, hogy <span>a felhasználóknak kell birtokolnia a saját identitásukat, valamint a kapcsolataikat a partnereikkel és a közösségeikkel</span>.",
"index-nextweb-p2": "A nyílt és decentralizált hálózat lehetővé teszi, hogy kapcsolatbapjen másokkal és ötleteket osszon meg: legyen szabad biztonságban.",
"index-nextweb-p1": "A SimpleX abból a meggyőződésből jött létre, <span>hogy a profilok, a kapcsolatok és a közösségek a felhasználók tulajdonát kell, hogy képezzék</span>.",
"index-nextweb-p2": "Egy decentralizált hálózat, amelyet senki sem birtokol, lehetővé teszi a kapcsolatoktrehozását és az ötleteket megosztását szabadon és biztonságosan a hálózaton.",
"index-token-h2": "Időtálló közösségek",
"index-token-p1": "A jövőben közösségi utalványokkal támogathatja a kedvenc csoportjait.",
"index-token-p2": "Az utalványokkal fizetni tudja a kiszolgálókat, hogy a közösségek szabadok és függetlenek maradhassanak.",
@@ -314,5 +314,59 @@
"messengers-comparison-section-list-point-6": "A kvantumbiztos kulcscsere „ritka” &mdash; csak a racsnis lépések egy részét védi.",
"navbar-token": "Token",
"navbar-old-site": "Régi oldal",
"docs-dropdown-15": "Összeállítások ellenőrzése és reprodukálása",
"why-p2": "Senki sem követi nyomon a beszélgetéseit. Senki sem készít térképet az Ön kapcsolati hálójáról. A magánélet nem csak egy funkció, hanem egy életmód.",
"why-p3": "Amikor online vagyunk minden platform egy darabot kér tőlünk nevet, telefonszámot, baráti kapcsolatokat. Elfogadtuk, hogy a kommunikáció ára az, hogy mások megtudják, hogy kivel beszélünk. Minden generáció, az emberek és a technológia is eddig így működött telefon, e-mail, üzenetküldő programok, közösségi média. Úgy tűnt, ez az egyetlen lehetséges mód.",
"why-p4": "De van egy másik lehetőség is. Egy hálózat, amelyben nincsenek telefonszámok. Nincsenek felhasználónevek. Nincsenek fiókok. Nincsenek semmiféle felhasználói azonosítók. Egy hálózat, amely összeköti az embereket és titkosított üzeneteket továbbít, anélkül, hogy tudná, ki csatlakozik hozzá.",
"why-p5": "Nem egy jobb zár mások ajtaján. Nem egy kedvesebb házmester, aki tiszteletben tartja az Ön magánéletét, de mégis nyilvántartást vezet minden látogatójáról. Ön itt nem csak egy vendég. Ön itt otthon van. Egyetlen „kíváncsiskodó” sem tekinthet bele a beszélgetéseibe, Ön itt szuverén.",
"why-p6": "A beszélgetései Önhöz tartoznak, ahogy az internet megjelenése előtt is mindig így volt. A hálózat nem egy hely, amelyet meglátogat. Ez egy olyan hely, amelyet Ön hoz létre saját magának. És senki sem veheti el Öntől, függetlenül attól, hogy privát vagy nyilvános.",
"why-p7": "A legrégebbi emberi szabadság beszélgetni az emberekkel anélkül, hogy mások megfigyelnének olyan infrastruktúrán alapul, amely nem tudja elárulni.",
"why-p8": "Mert elpusztítottuk azt az erőt, amellyel megtudhatnánk, hogy Ön kicsoda. Hogy az <em>Ön</em> ereje soha ne kerülhessen mások kezébe.",
"why-tagline": "Legyen szabad a saját hálózatában.",
"why-footer-link": "Miért készítjük",
"why-p1": "Ön fiók nélkül született.",
"file": "Fájl",
"file-desc": "Fájlok biztonságos küldése végpontok közötti titkosítással felhasználói fiókok és nyomon követés nélkül.",
"file-noscript": "A fájlátvitelhez JavaScript szükséges.",
"file-e2e-note": "Végpontok közötti titkosítás a kiszolgáló soha nem „látja” a fájlt.",
"file-learn-more": "Tudjon meg többet az XFTP-protokollról",
"file-cta-heading": "Szerezze be a SimpleX Chat alkalmazást a legbiztonságosabb és legbizalmasabb üzenetváltó programot",
"file-cta-subheading": "Az imént használt fájlátvitel ugyanazt az útválasztó protokollt használja, mint a SimpleX Chat alkalmazás. Az alkalmazás végpontok közötti titkosított üzenetküldést, hang- és videohívásokat, csoportos csevegéseket és fájlok küldését teszi lehetővé. Nem szükséges hozzá felhasználói fiók, telefonszám, e-mail-cím és nem használ felhasználói profilazonosítókat sem.",
"file-title": "SimpleX fájlátvitel",
"file-drop-text": "Húzzon ide",
"file-drop-hint": "vagy",
"file-choose": "válasszon ki egy fájlt",
"file-max-size": "Legfeljebb 100 MB a <a href=\"#join-simplex\">SimpleX Chat alkalmazás</a> viszont 1 GB méretű fájlokat is támogat",
"file-encrypting": "Titkosítás…",
"file-uploading": "Feltöltés…",
"file-cancel": "Mégse",
"file-uploaded": "Fájl feltöltve",
"file-copy": "Másolás",
"file-copied": "Másolva!",
"file-share": "Megosztás",
"file-expiry": "A fájlok általában 48 óráig érhetők el.",
"file-sec-1": "A fájl a böngészőben lett titkosítva az útválasztók soha nem „látják” a fájl tartalmát, nevét és méretét.",
"file-sec-2": "A titkosítási kulcs a hivatkozás kivonattöredékében található soha nem kerül elküldésre semmilyen kiszolgálóra.",
"file-sec-3": "A nagyobb biztonság érdekében használja a <a href=\"https://simplex.chat/download\">SimpleX Chat</a> alkalmazást.",
"file-retry": "Újra",
"file-downloading": "Letöltés…",
"file-decrypting": "Visszafejtés…",
"file-download-complete": "Letöltés kész",
"file-download-btn": "Letöltés",
"file-too-large": "A fájl túl nagy (%size%). A megengedett feltölthető méret 100 MB. Az ettől nagyobb fájlok küldéséhez használja a <a href=\"#join-simplex\">SimpleX Chat alkalmazást</a>, ami legfeljebb 1 GB méretű fájlokat is támogat.",
"file-empty": "A fájl üres.",
"file-invalid-link": "Érvénytelen vagy sérült hivatkozás.",
"file-init-error": "Nem sikerült előkészíteni: %error%",
"file-available": "A fájl elérhető (~%size%)",
"file-dl-sec-1": "Ez a fájl titkosítva van az útválasztók soha nem „látják” a fájl tartalmát, nevét és méretét.",
"file-workers-required": "Web Workers szükséges frissítse a böngészőjét",
"file-protocol-title": "XFTP-protokoll: a legbiztonságosabb fájlátvitel",
"file-proto-h-1": "Nincs szükség felhasználói fiókra",
"file-proto-p-1": "Minden fájldarab új, véletlenszerű kulcsot használ. Az útválasztóknak nincsenek „felhasználóik” vagy „fájljaik” rögzített méretű titkosított fájldarabokat továbbítanak.",
"file-proto-h-2": "Háromrétegű titkosítás a böngészőben",
"file-proto-p-2": "A fájl titkosítási kulcsa csak a webcím kivonattöredékében található a böngésző soha nem küldi el azt a kiszolgálónak. A fájlok háromrétegű titkosítással rendelkeznek: TLS-átviteli, címzettenkénti (egyedi, ideiglenes kulcs átvitelenként) és végpontok közötti titkosítással.",
"file-proto-h-4": "Független útválasztók",
"file-proto-p-4": "Amikor a fájl töredékekre oszlik, akkor a független felek által üzemeltetett hálózati útválasztókon keresztül kerül továbbításra. Egyetlen üzemeltető sem láthatja a fájl tényleges méretét és nevét. Még ha egy útválasztó biztonsága meg is sérül, csak a rögzített méretű titkosított töredékeket „láthatja”. A fájltöredékeket a hálózati útválasztók körülbelül 48 órán át tárolják a gyorsítótárban.",
"file-proto-spec": "Olvassa el az XFTP-protokoll leírását →",
"send-file": "Fájl küldése"
}
+59 -5
View File
@@ -108,7 +108,7 @@
"privacy-matters-section-subheader": "Preservare la privacy dei tuoi metadati &mdash; <span class=\"text-active-blue\">con chi parli</span> &mdash; ti protegge da:",
"privacy-matters-section-label": "Assicurati che il tuo messenger non possa accedere ai tuoi dati!",
"simplex-network-section-header": "<span class=\"gradient-text\">Rete</span> di SimpleX",
"simplex-network-section-desc": "Simplex Chat offre la migliore privacy combinando i vantaggi del P2P e delle reti federate.",
"simplex-network-section-desc": "SimpleX Chat offre la migliore privacy combinando i vantaggi del P2P e delle reti federate.",
"simplex-network-1-header": "A differenza delle reti P2P",
"simplex-network-1-overlay-linktext": "problemi delle reti P2P",
"simplex-network-2-header": "A differenza delle reti federate",
@@ -258,7 +258,7 @@
"docs-dropdown-14": "SimpleX per il lavoro",
"about-and-contact-us": "Informazioni e contatti",
"directory": "Directory",
"index-hero-h2": "Nella Tua Rete",
"index-hero-h2": "nella tua rete",
"index-hero-p1": "Messaggistica privata e sicura.<br>La prima rete in cui possiedi<br>i tuoi contatti e i tuoi gruppi.",
"index-hero-download-desktop-btn-title": "Scarica l'app desktop di SimpleX",
"index-testflight-title": "Anteprima pubblica per iOS su TestFlight",
@@ -278,12 +278,12 @@
"index-messaging-p2": "Per la tua sicurezza e privacy, i server non possono vedere i messaggi <span>e con chi parli</span>.",
"index-messaging-cta": "Scopri di più sui messaggi di SimpleX",
"index-nextweb-h2": "Il nuovo web<br>è tuo",
"index-nextweb-p1": "SimpleX è fondato sulla convinzione che <span>devi possedere la tua identità, i tuoi contatti e le tue comunità</span>.",
"index-nextweb-p2": "La rete aperta e decentralizzata consente di connetterti con persone e condividere idee: sii libero e al sicuro.",
"index-nextweb-p1": "SimpleX è stato creato sulla convinzione che <span>devi possedere i tuoi profili, contatti e comunità</span>.",
"index-nextweb-p2": "Una rete decentralizzata che nessuno possiede consente di connetterti con persone e condividere idee, di restare libero e sicuro nella tua rete.",
"index-token-h2": "Comunità fatte per restare",
"index-token-p1": "Sosterrai i tuoi gruppi preferiti con futuri buoni comunitari.",
"index-token-p2": "I buoni pagheranno i server, per consentire alle tue comunità di rimanere libere e indipendenti.",
"index-token-cta": "Scopri di più e <strong>ricevi un NFT gratuito</strong> per provarlo in anticipo.",
"index-token-cta": "Scopri di più e <strong>ricevi un pass di accesso gratuito</strong> per provarlo in anticipo.",
"index-roadmap-h2": "Tabella di marcia per un internet libero",
"index-roadmap-2025": "2025",
"index-roadmap-2025-title": "Scalabilità per comunità numerose",
@@ -314,5 +314,59 @@
"messengers-comparison-section-list-point-6": "L'accordo sulle chiavi post-quantistico è “scarno” &mdash; protegge solo alcuni dei passaggi del ratchet.",
"navbar-token": "Token",
"navbar-old-site": "Sito vecchio",
"docs-dropdown-15": "Verifica e riproduci le build",
"why-p2": "Nessuno monitorava le tue conversazioni. Nessuno disegnava una mappa delle tue posizioni. La privacy non era mai una caratteristica, era uno stile di vita.",
"why-p3": "Poi ci siamo trasferiti online e ogni piattaforma ha chiesto un pezzo di noi: il nome, il numero, gli amici. Abbiamo accettato che il prezzo da pagare per comunicare con gli altri fosse quello di far sapere a qualcuno con chi parliamo. Ogni generazione, sia le persone che la tecnologia, ha funzionato così: telefono, email, messenger, social media. Sembrava l'unica via possibile.",
"why-p1": "Sei nato senza un account.",
"why-p4": "C'è un altro modo. Una rete senza numeri di telefono. Senza nomi utente. Senza account. Senza identificatori utente di alcun tipo. Una rete che connette le persone e trasferisce messaggi crittografati senza sapere chi è connesso.",
"why-p5": "Non una serratura migliore sulla porta di qualcun altro. Non un padrone di casa più gentile che rispetta la tua privacy, ma che continua a tenere traccia di tutti i visitatori. Non sei un ospite. Sei a casa tua. Nessun re può entrarvi: sei tu il sovrano.",
"why-p6": "Le tue conversazioni appartengono a te, come è sempre stato prima dell'avvento di Internet. La rete non è un luogo che visiti. È un luogo che crei e possiedi. E nessuno può portartelo via, sia che tu lo renda privato o pubblico.",
"why-p7": "La più antica libertà umana, parlare con un'altra persona senza essere osservati, si basa su un'infrastruttura che non può tradirla.",
"why-p8": "Perché abbiamo distrutto il potere di sapere chi sei. In modo che il <em>tuo</em> potere non possa mai essere sottratto.",
"why-tagline": "Vivi libero nella tua rete.",
"why-footer-link": "Perché lo stiamo costruendo",
"file": "File",
"file-desc": "Invia file in modo sicuro con crittografia end-to-end: nessun account, nessun monitoraggio.",
"file-noscript": "JavaScript è necessario per il trasferimento di file.",
"file-e2e-note": "Crittografato end-to-end: il server non vede mai il file.",
"file-learn-more": "Maggiori informazioni sul protocollo XFTP",
"file-cta-heading": "Scarica SimpleX Chat &mdash; il messenger più sicuro e privato",
"file-cta-subheading": "Il trasferimento di file appena avviato usa lo stesso protocollo di instradamento dati di SimpleX Chat. L'app offre messaggi crittografati end-to-end, chiamate vocali e video, gruppi e invio di file. Nessun account. Nessun telefono. Nessuna email. Nessun ID utente.",
"file-title": "Trasferimento file di SimpleX",
"file-drop-text": "Trascina un file qui",
"file-drop-hint": "o",
"file-choose": "Scegli file",
"file-max-size": "Max 100 MB - <a href=\"#join-simplex\">L'app SimpleX Chat</a> supporta file fino a 1 GB",
"file-encrypting": "Crittografia…",
"file-uploading": "Caricamento…",
"file-cancel": "Annulla",
"file-uploaded": "File caricato",
"file-copy": "Copia",
"file-copied": "Copiato!",
"file-share": "Condividi",
"file-expiry": "I file sono generalmente disponibili per 48 ore.",
"file-sec-1": "Il file è stato crittografato nel browser: gli instradatori di dati non vedono mai il contenuto, il nome o la dimensione del file.",
"file-sec-2": "La chiave di crittografia è nel frammento hash del link, non viene mai inviata ad alcun server.",
"file-sec-3": "Per una migliore sicurezza, usa l'app <a href=\"https://simplex.chat/download\">SimpleX Chat</a>.",
"file-retry": "Riprova",
"file-downloading": "Scaricamento…",
"file-decrypting": "Decifrazione…",
"file-download-complete": "Scaricamento completato",
"file-download-btn": "Scarica",
"file-too-large": "File troppo grande (%size%). Il massimo è 100 MB. L'app <a href=\"#join-simplex\">SimpleX</a> supporta file fino a 1 GB.",
"file-empty": "Il file è vuoto.",
"file-invalid-link": "Link non valido o danneggiato.",
"file-init-error": "Inizializzazione fallita: %error%",
"file-available": "File disponibile (~%size%)",
"file-dl-sec-1": "Questo file è crittografato: gli instradatori di dati non vedono mai il contenuto del file, il nome o la dimensione.",
"file-workers-required": "Web worker necessari, aggiorna il browser",
"file-protocol-title": "Protocollo XFTP: il trasferimento di file più sicuro",
"file-proto-h-1": "Nessun account richiesto",
"file-proto-p-1": "Ogni frammento di file usa una nuova chiave casuale. Gli instradatori di dati non hanno \"utenti\" o \"file\": trasferiscono frammenti di file crittografati di dimensioni fisse.",
"file-proto-h-2": "Crittografia tripla nel tuo browser",
"file-proto-p-2": "La chiave di crittografia dei file è presente solo nel frammento dell'hash dell'URL: il browser non la invia mai a un server. Ci sono 3 strati di crittografia: trasporto TLS, crittografia per-destinatario (chiave effimera unica per trasferimento) e crittografia file end-to-end.",
"file-proto-h-4": "Instradatori indipendenti di dati",
"file-proto-p-4": "Quando il file è diviso in frammenti, viene inviato tramite instradatori di rete operati da parti indipendenti. Nessun operatore può vedere la vera dimensione o il nome del file. Anche se un instradatore venisse compromesso, potrà vedere solo frammenti cifrati di dimensione fissa. I frammenti di file restano in cache dagli instradatori di rete per circa 48 ore.",
"file-proto-spec": "Leggi le specifiche del protocollo XFTP →",
"send-file": "Invia file"
}
+1 -1
View File
@@ -95,7 +95,7 @@
"simplex-chat-for-the-terminal": "ターミナル用 SimpleX チャット",
"simplex-network-overlay-card-1-li-3": "P2P は <a href='https://en.wikipedia.org/wiki/Man-in-the-middle_attack'>MITM 攻撃</a> 問題を解決せず、既存の実装のほとんどは最初の鍵交換に帯域外メッセージを使用していません 。 SimpleX は、最初のキー交換に帯域外メッセージを使用するか、場合によっては既存の安全で信頼できる接続を使用します。",
"the-instructions--source-code": "ソースコードからダウンロードまたはコンパイルする方法を説明します。",
"simplex-network-section-desc": "Simplex Chat は、P2P とフェデレーション ネットワークの利点を組み合わせて最高のプライバシーを提供します。",
"simplex-network-section-desc": "SimpleX Chat は、P2P とフェデレーション ネットワークの利点を組み合わせて最高のプライバシーを提供します。",
"privacy-matters-section-subheader": "メタデータのプライバシーを保護する &mdash; <span class='text-active-blue'>話す相手</span> &mdash; 以下のことからあなたを守ります:",
"if-you-already-installed": "すでにインストールしている場合",
"join": "参加",
+1 -1
View File
@@ -146,7 +146,7 @@
"privacy-matters-section-subheader": "Behoud van de privacy van uw metadata &mdash; <span class='text-active-blue'>met wie u praat</span> &mdash; beschermt u tegen:",
"simplex-private-section-header": "Wat maakt SimpleX <span class='gradient-text'>privé</span>",
"simplex-network-section-header": "SimpleX <span class='gradient-text'>Netwerk</span>",
"simplex-network-section-desc": "Simplex Chat biedt de beste privacy door de voordelen van P2P en gefedereerde netwerken te combineren.",
"simplex-network-section-desc": "SimpleX Chat biedt de beste privacy door de voordelen van P2P en gefedereerde netwerken te combineren.",
"simplex-network-1-header": "In tegenstelling tot P2P netwerken",
"simplex-network-1-desc": "Alle berichten worden verzonden via servers, die zorgen voor een betere metadata privacy en een betrouwbare asynchrone bezorging van berichten, terwijl er veel word vermeden",
"simplex-network-1-overlay-linktext": "van problemen met P2P netwerken",
+61 -7
View File
@@ -17,7 +17,7 @@
"donate": "Darowizna",
"copyright-label": "© 2020-2025 SimpleX Chat | Projekt Open-Source",
"simplex-chat-protocol": "Protokół SimpleX Chat",
"terminal-cli": "Terminal CLI",
"terminal-cli": "Terminal wiersza poleceń",
"terms-and-privacy-policy": "Polityka prywatności",
"hero-header": "Prywatność zdefiniowana na nowo",
"hero-subheader": "Pierwszy komunikator<br>bez identyfikatorów użytkowników (ID)",
@@ -191,7 +191,7 @@
"copy-the-command-below-text": "skopiuj poniższe polecenie i użyj go na czacie:",
"privacy-matters-section-label": "Upewnij się, że Twój komunikator nie ma dostępu do Twoich danych!",
"simplex-network-1-header": "W przeciwieństwie do sieci P2P",
"simplex-network-section-desc": "Simplex Chat zapewnia najlepszą prywatność dzięki połączeniu zalet sieci P2P i sieci federacyjnych.",
"simplex-network-section-desc": "SimpleX Chat zapewnia najlepszą prywatność dzięki połączeniu zalet sieci P2P i sieci federacyjnych.",
"simplex-network-2-header": "W przeciwieństwie do sieci federacyjnych",
"simplex-private-section-header": "Co sprawia, że SimpleX jest <span class=\"gradient-text\">prywatny</span>",
"tap-to-close": "Stuknij, aby zamknąć",
@@ -279,12 +279,12 @@
"index-messaging-p2": "Dla Twojego bezpieczeństwa i prywatności, serwery nie mogą zobaczyć wiadomości <span>i tego z kim rozmawiasz</span>.",
"index-messaging-cta": "Dowiedz się więcej o komunikatorze SimpleX",
"index-nextweb-h2": "Ty Posiadasz<br>Sieć Kolejnej Generacji",
"index-nextweb-p1": "SimpleX opiera się na przekonaniu, że <span> to Ty musisz posiadać na własność swoją tożsamość, kontakty i społeczności</span>.",
"index-nextweb-p2": "Otwarta i zdecentralizowana sieć pozwala połączyć się z ludźmi i dzielić się pomysłami: bądź wolny i bezpieczny.",
"index-nextweb-p1": "SimpleX powstał w oparciu o przekonanie, że <span>musisz być właścicielem swoich profili, kontaktów i społeczności</span>.",
"index-nextweb-p2": "Zdecentralizowana sieć, której nikt nie jest właścicielem, pozwala łączyć się z ludźmi i dzielić się pomysłami, zapewniając swobodę i bezpieczeństwo w sieci.",
"index-token-h2": "Społeczności, Które Trwają",
"index-token-p1": "Będziesz mógł wspierać swoje ulubione grupy dzięki przyszłym Voucherom Społeczności.",
"index-token-p2": "Vouchery opłacą serwery, aby Twoje społeczności pozostały wolne i niezależne.",
"index-token-cta": "Dowiedz się więcej i <strong>uzyskuj swój darmowy NFT</strong><br>do wczesnych testów.",
"index-token-cta": "Dowiedz się więcej i <strong>uzyskaj bezpłatną przepustkę</strong> umożliwiającą wczesne testowanie.",
"index-roadmap-h2": "Plan Działania SimpleX dla Wolnego Internetu",
"index-roadmap-2025": "2025",
"index-roadmap-2025-title": "Wyskalowany dla Dużych Społeczności",
@@ -303,10 +303,10 @@
"how-secure-comparison-title": "Porównanie zabezpieczeń szyfrowania end-to-end w różnych komunikatorach",
"how-secure-message-padding": "Wypełnianie wiadomości",
"how-secure-repudiation-deniability": "Wyrzeczenie (wiarygodne zaprzeczenie)",
"how-secure-forward-secrecy": "Forward secrecy",
"how-secure-forward-secrecy": "Poufność przekazywania informacji",
"how-secure-break-in-recovery": "Bezpieczeństwo po naruszeniu zabezpieczeń",
"how-secure-two-factor-key-exchange": "Wymiana kluczy 2-składnikowych",
"how-secure-post-quantum-hybrid-crypto": "Post-quantum hybrid crypto",
"how-secure-post-quantum-hybrid-crypto": "Hybrydowe szyfrowanie postkwantowe",
"messengers-comparison-section-list-point-1": "Briar wypełnia wiadomości do zaokrąglonego rozmiaru do maksymalnie 1024 bajtów, Signal - do 160 bajtów",
"messengers-comparison-section-list-point-2": "Repudiatacja (wiarygodne zaprzeczenie) nie obejmuje połączenia klient-serwer.",
"messengers-comparison-section-list-point-3": "Wydaje się, że użycie podpisów kryptograficznych zagraża repudiatacji (wiarygodnemu zaprzeczeniu), ale należy je wyjaśnić.",
@@ -314,5 +314,59 @@
"messengers-comparison-section-list-point-5": "Wymiana kluczy 2-składnikowych jest opcjonalna poprzez weryfikację kodu bezpieczeństwa.",
"messengers-comparison-section-list-point-6": "Post-kwantowe, kluczowe porozumienie jest \"rzadkie\" &mdash; chroni tylko niektóre kroki systemu Ratchet.",
"navbar-old-site": "Stara strona",
"docs-dropdown-15": "Weryfikacja i odtwarzanie kompilacji",
"why-p1": "Urodziłeś się bez konta.",
"why-p2": "Nikt nie śledził twoich rozmów. Nikt nie rysował mapy miejsc, w których byłeś. Prywatność nigdy nie była funkcją — była sposobem na życie.",
"why-p3": "Następnie przenieśliśmy się do sieci, a każda platforma prosiła o podanie danych osobowych — imienia i nazwiska, numeru telefonu, znajomych. Zaakceptowaliśmy fakt, że ceną za możliwość komunikowania się z innymi jest ujawnienie komuś, z kim rozmawiamy. Tak było w przypadku każdego pokolenia, ludzi i technologii — telefonu, poczty elektronicznej, komunikatorów, mediów społecznościowych. Wydawało się to jedyną możliwą opcją.",
"why-p4": "Jest jeszcze inny sposób. Sieć bez numerów telefonów. Bez nazw użytkowników. Bez kont. Bez jakichkolwiek tożsamości użytkowników. Sieć, która łączy ludzi i przesyła zaszyfrowane wiadomości, nie wiedząc, kto jest podłączony.",
"why-p5": "Nie chodzi o lepszy zamek w drzwiach kogoś innego. Nie chodzi o milszego właściciela, który szanuje twoją prywatność, ale nadal prowadzi rejestr wszystkich odwiedzających. Nie jesteś gościem. Jesteś w domu. Żaden król nie może do niego wejść — jesteś suwerenem.",
"why-p6": "Twoje rozmowy należą do Ciebie, tak jak zawsze było przed pojawieniem się Internetu. Sieć nie jest miejscem, które odwiedzasz. Jest miejscem, które tworzysz i które należy do Ciebie. Nikt nie może Ci tego odebrać, niezależnie od tego, czy jest to miejsce prywatne, czy publiczne.",
"why-p7": "Najstarsza ludzka wolność — możliwość rozmowy z inną osobą bez bycia obserwowanym — opiera się na infrastrukturze, która nie może jej zdradzić.",
"why-p8": "Ponieważ zniszczyliśmy moc pozwalającą poznać, kim jesteś. Więc <em>twoja</em> moc nigdy nie będzie Ci odebrana.",
"why-tagline": "Ciesz się swobodą w swojej sieci.",
"why-footer-link": "Dlaczego to budujemy",
"file": "Plik",
"file-desc": "Wysyłaj pliki bezpiecznie dzięki szyfrowaniu typu end-to-end — bez kont, bez śledzenia.",
"file-noscript": "Do przesyłania plików wymagana jest obsługa języka JavaScript.",
"file-e2e-note": "Szyfrowanie typu end-to-end — serwer nigdy nie widzi Twojego pliku.",
"file-learn-more": "Dowiedz się więcej o protokole XFTP",
"file-cta-heading": "Pobierz SimpleX Chat — najbezpieczniejszy i najbardziej prywatny komunikator",
"file-cta-subheading": "Przesyłanie plików, z którego właśnie skorzystałeś, wykorzystuje ten sam protokół routingu danych, co SimpleX Chat. Aplikacja oferuje szyfrowane wiadomości, połączenia głosowe i wideo, grupy oraz wysyłanie plików. Bez konta. Bez telefonu. Bez adresu e-mail. Bez identyfikatorów profilu użytkownika.",
"file-title": "Transfer plików SimpleX",
"file-drop-text": "Przeciągnij i upuść plik tutaj",
"file-drop-hint": "lub",
"file-choose": "Wybierz plik",
"file-max-size": "Maksymalnie 100 MB - <a href=\"#join-simplex\">aplikacja SimpleX Chat</a> obsługuje pliki o rozmiarze do 1 GB",
"file-encrypting": "Szyfrowanie…",
"file-uploading": "Wysyłanie…",
"file-cancel": "Anuluj",
"file-uploaded": "Plik wysłany",
"file-copy": "Kopiuj",
"file-copied": "Skopiowano!",
"file-share": "Udostępnij",
"file-expiry": "Pliki są zazwyczaj dostępne przez 48 godzin.",
"file-sec-1": "Twój plik został zaszyfrowany w przeglądarce routery danych nigdy nie widzą treści plików, ich nazw ani rozmiarów.",
"file-sec-2": "Klucz szyfrujący znajduje się w fragmencie skrótu linku nigdy nie jest wysyłany do żadnego serwera.",
"file-sec-3": "Aby zapewnić większe bezpieczeństwo, użyj aplikacji <a href=\"https://simplex.chat/download\">SimpleX Chat</a>.",
"file-retry": "Ponów",
"file-downloading": "Pobieranie…",
"file-decrypting": "Odszyfrowywanie…",
"file-download-complete": "Pobieranie zakończone",
"file-download-btn": "Pobierz",
"file-too-large": "Plik jest zbyt duży (%size%). Maksymalny rozmiar to 100 MB. Aplikacja <a href=\"#join-simplex\">SimpleX</a> obsługuje pliki o rozmiarze do 1 GB.",
"file-empty": "Plik jest pusty.",
"file-invalid-link": "Nieprawidłowy lub uszkodzony link.",
"file-init-error": "Nie udało się zainicjować: %error%",
"file-available": "Plik dostępny (~%size%)",
"file-dl-sec-1": "Ten plik jest zaszyfrowany routery danych nigdy nie widzą zawartości pliku, jego nazwy ani rozmiaru.",
"file-workers-required": "Wymagane Web Workers — zaktualizuj przeglądarkę",
"file-protocol-title": "Protokół XFTP: najbezpieczniejszy transfer plików",
"file-proto-h-1": "Nie jest wymagane konto",
"file-proto-p-1": "Każdy fragment pliku wykorzystuje nowy losowy klucz. Routery danych nie mają „użytkowników” ani „plików” przesyłają zaszyfrowane fragmenty plików o stałych rozmiarach.",
"file-proto-h-2": "Potrójne szyfrowanie w przeglądarce",
"file-proto-p-2": "Klucz szyfrowania plików znajduje się wyłącznie we fragmencie skrótu adresu URL przeglądarka nigdy nie wysyła go do serwera. Istnieją trzy warstwy szyfrowania: transport TLS, szyfrowanie po-odbiorcy (unikalny klucz tymczasowy dla każdego transferu) oraz szyfrowanie plików typu end-to-end.",
"file-proto-h-4": "Niezależne routery danych",
"file-proto-p-4": "Gdy plik jest dzielony na fragmenty, jest on wysyłany przez routery sieciowe obsługiwane przez niezależne podmioty. Żaden operator nie może zobaczyć rzeczywistego rozmiaru ani nazwy pliku. Nawet jeśli router zostanie naruszony, może on zobaczyć tylko zaszyfrowane fragmenty o stałym rozmiarze. Fragmenty plików są przechowywane w pamięci podręcznej routerów sieciowych przez około 48 godzin.",
"file-proto-spec": "Zapoznaj się ze specyfikacją protokołu XFTP →",
"send-file": "Wyślij plik"
}
+2 -2
View File
@@ -178,7 +178,7 @@
"simplex-private-section-header": "O que torna o SimpleX <span class='gradient-text'>privado</span>",
"tap-to-close": "Toque para fechar",
"guide-dropdown-6": "Chamadas de áudio e vídeo",
"simplex-network-section-desc": "O Simplex Chat oferece a melhor privacidade ao combinar as vantagens das redes P2P e federadas.",
"simplex-network-section-desc": "O SimpleX Chat oferece a melhor privacidade ao combinar as vantagens das redes P2P e federadas.",
"simplex-network-1-header": "Diferente das redes P2P",
"docs-dropdown-2": "Acessando arquivos do Android",
"comparison-section-list-point-3": "Chave pública ou alguma outra ID globalmente exclusiva",
@@ -238,7 +238,7 @@
"stable-and-beta-versions-built-by-developers": "Versões estáveis e beta criadas pelos desenvolvedores",
"signing-key-fingerprint": "Assinatura de impressão digital de chave (SHA-256)",
"simplex-chat-via-f-droid": "SimpleX Chat pelo F-Droid",
"simplex-chat-repo": "Repositório Simplex Chat",
"simplex-chat-repo": "Repositório SimpleX Chat",
"f-droid-org-repo": "Repositório F-Droid.org",
"stable-versions-built-by-f-droid-org": "Versões estáveis criadas por F-Droid.org",
"releases-to-this-repo-are-done-1-2-days-later": "Os lançamentos para este repositório são feitos 1 ou 2 dias depois",
+1 -1
View File
@@ -202,7 +202,7 @@
"simplex-private-section-header": "Що робить SimpleX <span class='gradient-text'>конфіденційним</span>",
"tap-to-close": "Торкніться, щоб закрити",
"simplex-network-section-header": "SimpleX <span class='gradient-text'>Network</span>",
"simplex-network-section-desc": "Simplex Chat надає найкращу конфіденційність, поєднуючи переваги P2P та федеративних мереж.",
"simplex-network-section-desc": "SimpleX Chat надає найкращу конфіденційність, поєднуючи переваги P2P та федеративних мереж.",
"simplex-network-1-desc": "Всі повідомлення відправляються через сервери, що забезпечує кращу конфіденційність метаданих та надійну асинхронну доставку повідомлень, уникаючи багатьох",
"simplex-network-1-header": "На відміну від мереж P2P",
"simplex-network-1-overlay-linktext": "проблем P2P-мереж",
+111 -1
View File
@@ -174,7 +174,7 @@
"simplex-network-2-desc": "SimpleX 中继服务器不存储用户配置文件、联系人和传递的消息,不相互连接,并且没有服务器目录。",
"tap-to-close": "点击关闭",
"simplex-network-section-header": "SimpleX <span class=\"gradient-text\">网络</span>",
"simplex-network-section-desc": "Simplex Chat 通过结合 P2P 和联邦网络的优势使其保密性无与伦比。",
"simplex-network-section-desc": "SimpleX Chat 通过结合 P2P 和联邦网络的优势使其保密性无与伦比。",
"no-private": "否 - 私密",
"simplex-network-1-desc": "所有消息都通过服务器发送,既能更好地保护元数据隐私和可靠地传递异步消息,同时也能避免许多",
"simplex-network-3-header": "SimpleX 网络",
@@ -258,5 +258,115 @@
"docs-dropdown-14": "企业版 SimpleX",
"directory": "目录",
"about-and-contact-us": "关于 & 联系我们",
"docs-dropdown-15": "验证并重现构建过程",
"index-hero-h1": "变得<br>自由",
"index-hero-h2": "在属于你的网络中",
"index-hero-p1": "私密安全的即时通讯。<br>首个由您掌控<br>联系人和群组的网络。",
"index-hero-download-desktop-btn-title": "下载 SimpleX 桌面应用程序",
"index-testflight-title": "SimpleX iOS 测试版已在 TestFlight 上发布",
"index-f-droid-title": "SimpleX 安卓应用(通过 F-Droid",
"index-security-assessment-title": "安全审计",
"index-security-review-2022-title": "2022年­安全审计",
"index-security-review-2024-title": "2024年安全审计",
"index-security-audits-label": "安全<br>审计",
"index-publications-privacy-guides-title": "隐私指南通讯推荐",
"index-publications-whonix-title": "Whonix通讯推荐",
"index-publications-heise-title": "Heise Online出版物",
"index-publications-kuketz-title": "Mike Kuketz 的评论",
"index-publications-optout-title": "OptOut播客访谈",
"worlds-most-secure-messaging": "全球最安全的即时通讯",
"index-messaging-p1": "SimpleX 即时通讯采用最先进的端到端加密技术。",
"index-messaging-p2": "为了您的安全和隐私,服务器无法看到您的消息<span>以及您与谁交谈</span>。",
"index-messaging-cta": "了解更多关于 SimpleX 消息传递的知识",
"index-nextweb-h2": "属于你的<br>下一代互联网",
"index-nextweb-p1": "SimpleX 的创建理念是:<span>您必须拥有自己的个人资料、联系人和社区</span>。",
"index-nextweb-p2": "一个不归个人所有的去中心化网络,让你能够与他人联系并分享想法,在网络中自由安全地生活。",
"index-token-h2": "长久存在的社区",
"index-token-p1": "您将通过未来的社区代金券支持您喜爱的团体。",
"index-token-p2": "代金券将用于支付服务器费用,让您的社区保持自由和独立。",
"index-token-cta": "了解更多信息并<strong>获取免费抢先体验券</strong>,参与早期测试。",
"index-roadmap-h2": "SimpleX 通往自由互联网的路线图",
"index-roadmap-2025-title": "扩展到大型社区",
"index-roadmap-2025-desc": "逃离中心化平台",
"index-roadmap-2026-title": "可持续社区与服务器",
"index-roadmap-2026-desc": "推出社区代金券",
"index-roadmap-2027-title": "促进社区发展",
"index-roadmap-2027-desc": "用于推广社区的工具",
"index-directory-h2": "加入 SimpleX 社区",
"index-directory-p1": "已有数十万人信赖 SimpleX 即时通讯服务。",
"index-directory-p2": "在 SimpleX 目录中找到您的社区并创建您自己的社区!",
"index-directory-cta": "查看 SimpleX 目录",
"index-directory-users-group-title": "SimpleX 用户群组",
"how-secure-comparison-title": "不同即时通讯软件端到端加密安全性的比较",
"how-secure-message-padding": "消息填充",
"how-secure-repudiation-deniability": "否认(可否认性)",
"how-secure-forward-secrecy": "前向加密",
"how-secure-break-in-recovery": "事后安全",
"how-secure-two-factor-key-exchange": "双因素密钥交换",
"how-secure-post-quantum-hybrid-crypto": "后量子混合加密",
"messengers-comparison-section-list-point-1": "Briar 将消息大小向上取整至 1024 字节,Signal 消息大小向上取整至 160 字节",
"messengers-comparison-section-list-point-2": "可否认性不包括客户端-服务器连接。",
"messengers-comparison-section-list-point-3": "使用加密签名似乎会损害可否认性(否认能力),但这一点需要澄清。",
"messengers-comparison-section-list-point-4": "多设备部署会降低双棘轮攻击后的安全性",
"messengers-comparison-section-list-point-5": "双因素密钥交换可通过安全码验证进行,并非强制要求。",
"messengers-comparison-section-list-point-6": "后量子密钥协商是“稀疏的”——它只保护了部分棘轮步骤。",
"navbar-old-site": "旧网站",
"why-p1": "你生来就没有账户。",
"why-p2": "没有人追踪你的谈话内容。没有人绘制你去过的地方的地图。隐私从来都不是一项功能——而是一种生活方式。",
"why-p3": "然后我们转向线上,每个平台都要求你提供一些信息——你的姓名、电话号码、好友列表。我们接受了这样一个事实:与人交流的代价就是让别人知道我们在和谁交流。每一代人,每一代科技,都遵循着这样的模式——电话、电子邮件、即时通讯、社交媒体。这似乎是唯一可行的方式。",
"why-p4": "还有另一种方法。一个没有电话号码、没有用户名、没有账户、没有任何用户身份的网络。一个连接人们并传输加密信息的网络,而无需知道谁连接了。",
"why-p5": "别人家的门锁再好也比不上这里。房东再好也比不上这里,他既尊重你的隐私,又保留着所有访客的记录。你不是客人,你是家。没有国王能闯入——你是主人。",
"why-p6": "你的对话内容始终属于你,就像互联网出现之前一样。网络不是一个你访问的地方,而是一个你创建并拥有的地方。无论你将其设为私密还是公开,任何人都无法将其夺走。",
"why-p7": "人类最古老的自由——与他人交谈而不被监视——建立在不会背叛它的基础设施之上。",
"why-p8": "因为我们摧毁了知道你是谁的权力,因而<em>您的</em>权利永远不会被夺走。",
"why-tagline": "在你的网络中自由畅行。",
"why-footer-link": "我们为什么要建造它",
"file": "文件",
"file-desc": "使用端到端加密安全发送文件——无需注册账户,不会追踪。",
"file-noscript": "文件传输需要启用 JavaScript。",
"file-e2e-note": "端到端加密——服务器永远不会看到您的文件。",
"file-learn-more": "了解更多关于 XFTP 协议的信息",
"file-cta-heading": "获取 SimpleX Chat——最安全、最私密的即时通讯工具",
"file-cta-subheading": "您刚才使用的文件传输功能与 SimpleX Chat 使用相同的数据路由协议。该应用提供端到端加密的消息传递、语音和视频通话、群组功能以及文件发送功能。无需注册账号,无需电话号码,无需邮箱,也无需用户个人资料 ID。",
"file-title": "SimpleX 文件传输",
"file-drop-text": "将文件拖放到此处",
"file-drop-hint": "或",
"file-choose": "选择文件",
"file-max-size": "最大支持 100 MB - <a href=\"#join-simplex\">SimpleX Chat 应用</a> 支持最大 1 GB 的文件",
"file-encrypting": "加密中……",
"file-uploading": "正在上传…",
"file-cancel": "取消",
"file-uploaded": "文件已上传",
"file-copy": "复制",
"file-copied": "已复制!",
"file-share": "分享",
"file-expiry": "文件通常可保存 48 小时。",
"file-sec-1": "您的文件已在浏览器中加密 - 数据路由器永远不会看到文件内容、名称或大小。",
"file-sec-2": "加密密钥位于链接的哈希片段中——它永远不会发送到任何服务器。",
"file-sec-3": "为了获得更好的安全性,请使用<a href=\"https://simplex.chat/download\">SimpleX Chat</a>应用程序。",
"file-retry": "重试",
"file-downloading": "正在下载…",
"file-decrypting": "正在解密…",
"file-download-complete": "下载完成",
"file-download-btn": "下载",
"file-too-large": "文件过大(%size%)。最大文件大小为 100 MB。<a href=\"#join-simplex\">SimpleX 应用</a> 支持最大 1 GB 的文件。",
"file-empty": "文件为空。",
"file-invalid-link": "链接无效或已损坏。",
"file-init-error": "初始化失败:%error%",
"file-available": "文件可用(约 %size%",
"file-dl-sec-1": "此文件已加密——数据路由器永远看不到文件内容、名称或大小。",
"file-workers-required": "需要 Web Workers — 请更新您的浏览器",
"file-protocol-title": "XFTP协议:最安全的文件传输协议",
"file-proto-h-1": "无需注册账号",
"file-proto-p-1": "每个文件片段都使用一个新的随机密钥。数据路由器没有“用户”或“文件”的概念——它们传输的是固定大小的加密文件片段。",
"file-proto-h-2": "浏览器中采用三重加密",
"file-proto-p-2": "文件加密密钥仅存在于 URL 哈希片段中——您的浏览器绝不会将其发送给服务器。加密过程包含三层:TLS 传输层、每个接收者加密层(每次传输使用唯一的临时密钥)以及文件端到端加密层。",
"file-proto-h-4": "独立数据路由器",
"file-proto-p-4": "文件被分割成多个片段后,会通过独立运营商运营的网络路由器进行传输。任何运营商都无法看到文件的实际大小或名称。即使路由器遭到入侵,也只能看到固定大小的加密片段。网络路由器会将文件片段缓存约48小时。",
"file-proto-spec": "阅读 XFTP 协议规范 →",
"navbar-token": "Token 令牌",
"index-roadmap-2025": "2025",
"index-roadmap-2026": "2026",
"index-roadmap-2027": "2027",
"send-file": "发送文件"
}
+7
View File
@@ -246,6 +246,13 @@ function displayEntries(entries) {
textContainer.appendChild(memberCountElement);
}
if (entryType?.admission?.review === "all") {
const knockingElement = document.createElement('p');
knockingElement.textContent = 'New members are reviewed by admins';
knockingElement.className = 'text-sm';
textContainer.appendChild(knockingElement);
}
const imgLinkElement = document.createElement('a');
const groupLinkUri = groupLink.connShortLink ?? groupLink.connFullLink
try {