diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 5be607567f..f28648d036 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -270,7 +270,7 @@ jobs:
- name: Unix test
if: matrix.os != 'windows-latest'
- timeout-minutes: 30
+ timeout-minutes: 40
shell: bash
run: cabal test --test-show-details=direct
diff --git a/Dockerfile b/Dockerfile
index 834f2374a6..6c60195f97 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,32 +1,41 @@
-FROM ubuntu:focal AS build
+ARG TAG=22.04
-# Install curl and simplex-chat-related dependencies
-RUN apt-get update && apt-get install -y curl git build-essential libgmp3-dev zlib1g-dev libssl-dev
+FROM ubuntu:${TAG} AS build
+
+### Build stage
+
+# Install curl and git and simplex-chat dependencies
+RUN apt-get update && apt-get install -y curl git build-essential libgmp3-dev zlib1g-dev llvm-12 llvm-12-dev libnuma-dev libssl-dev
+
+# Specify bootstrap Haskell versions
+ENV BOOTSTRAP_HASKELL_GHC_VERSION=9.6.3
+ENV BOOTSTRAP_HASKELL_CABAL_VERSION=3.10.1.0
# Install ghcup
-RUN a=$(arch); curl https://downloads.haskell.org/~ghcup/$a-linux-ghcup -o /usr/bin/ghcup && \
- chmod +x /usr/bin/ghcup
-
-# Install ghc
-RUN ghcup install ghc 9.6.3
-# Install cabal
-RUN ghcup install cabal 3.10.1.0
-# Set both as default
-RUN ghcup set ghc 9.6.3 && \
- ghcup set cabal 3.10.1.0
-
-COPY . /project
-WORKDIR /project
+RUN curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | BOOTSTRAP_HASKELL_NONINTERACTIVE=1 sh
# Adjust PATH
ENV PATH="/root/.cabal/bin:/root/.ghcup/bin:$PATH"
+# Set both as default
+RUN ghcup set ghc "${BOOTSTRAP_HASKELL_GHC_VERSION}" && \
+ ghcup set cabal "${BOOTSTRAP_HASKELL_CABAL_VERSION}"
+
+COPY . /project
+WORKDIR /project
+
# Adjust build
RUN cp ./scripts/cabal.project.local.linux ./cabal.project.local
# Compile simplex-chat
RUN cabal update
-RUN cabal install
+RUN cabal build exe:simplex-chat
+# Strip the binary from debug symbols to reduce size
+RUN bin=$(find /project/dist-newstyle -name "simplex-chat" -type f -executable) && \
+ mv "$bin" ./ && \
+ strip ./simplex-chat
+
+# Copy compiled app from build stage
FROM scratch AS export-stage
-COPY --from=build /root/.cabal/bin/simplex-chat /
+COPY --from=build /project/simplex-chat /
diff --git a/README.md b/README.md
index f6630ebbfd..4cd7b2b787 100644
--- a/README.md
+++ b/README.md
@@ -234,6 +234,8 @@ You can use SimpleX with your own servers and still communicate with people usin
Recent and important updates:
+[Mar 14, 2024. SimpleX Chat v5.6 beta: adding quantum resistance to Signal double ratchet algorithm.](./blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.md)
+
[Jan 24, 2024. SimpleX Chat: free infrastructure from Linode, v5.5 released with private notes, group history and a simpler UX to connect.](./blog/20240124-simplex-chat-infrastructure-costs-v5-5-simplex-ux-private-notes-group-history.md)
[Nov 25, 2023. SimpleX Chat v5.4 released: link mobile and desktop apps via quantum resistant protocol, and much better groups](./blog/20231125-simplex-chat-v5-4-link-mobile-desktop-quantum-resistant-better-groups.md).
diff --git a/apps/ios/Shared/ContentView.swift b/apps/ios/Shared/ContentView.swift
index 45e0332dab..acea38e69e 100644
--- a/apps/ios/Shared/ContentView.swift
+++ b/apps/ios/Shared/ContentView.swift
@@ -34,6 +34,8 @@ struct ContentView: View {
@State private var waitingForOrPassedAuth = true
@State private var chatListActionSheet: ChatListActionSheet? = nil
+ private let callTopPadding: CGFloat = 50
+
private enum ChatListActionSheet: Identifiable {
case planAndConnectSheet(sheet: PlanAndConnectActionSheet)
@@ -50,16 +52,28 @@ struct ContentView: View {
var body: some View {
ZStack {
+ let showCallArea = chatModel.activeCall != nil && chatModel.activeCall?.callState != .waitCapabilities && chatModel.activeCall?.callState != .invitationAccepted
// contentView() has to be in a single branch, so that enabling authentication doesn't trigger re-rendering and close settings.
// i.e. with separate branches like this settings are closed: `if prefPerformLA { ... contentView() ... } else { contentView() }
if !prefPerformLA || accessAuthenticated {
contentView()
+ .padding(.top, showCallArea ? callTopPadding : 0)
} else {
lockButton()
+ .padding(.top, showCallArea ? callTopPadding : 0)
}
+
+ if showCallArea, let call = chatModel.activeCall {
+ VStack {
+ activeCallInteractiveArea(call)
+ Spacer()
+ }
+ }
+
if chatModel.showCallView, let call = chatModel.activeCall {
callView(call)
}
+
if !showSettings, let la = chatModel.laRequest {
LocalAuthView(authRequest: la)
.onDisappear {
@@ -135,11 +149,11 @@ struct ContentView: View {
if case .onboardingComplete = step,
chatModel.currentUser != nil {
mainView()
- .actionSheet(item: $chatListActionSheet) { sheet in
- switch sheet {
- case let .planAndConnectSheet(sheet): return planAndConnectActionSheet(sheet, dismiss: false)
+ .actionSheet(item: $chatListActionSheet) { sheet in
+ switch sheet {
+ case let .planAndConnectSheet(sheet): return planAndConnectActionSheet(sheet, dismiss: false)
+ }
}
- }
} else {
OnboardingView(onboarding: step)
}
@@ -163,6 +177,40 @@ struct ContentView: View {
}
}
+ @ViewBuilder private func activeCallInteractiveArea(_ call: Call) -> some View {
+ HStack {
+ Text(call.contact.displayName).font(.body).foregroundColor(.white)
+ Spacer()
+ CallDuration(call: call)
+ }
+ .padding(.horizontal)
+ .frame(height: callTopPadding - 10)
+ .background(Color(uiColor: UIColor(red: 47/255, green: 208/255, blue: 88/255, alpha: 1)))
+ .onTapGesture {
+ chatModel.activeCallViewIsCollapsed = false
+ }
+ }
+
+ struct CallDuration: View {
+ let call: Call
+ @State var text: String = ""
+ @State var timer: Timer? = nil
+
+ var body: some View {
+ Text(text).frame(minWidth: text.count <= 5 ? 52 : 77, alignment: .leading).offset(x: 4).font(.body).foregroundColor(.white)
+ .onAppear {
+ timer = Timer.scheduledTimer(withTimeInterval: 0.3, repeats: true) { timer in
+ if let connectedAt = call.connectedAt {
+ text = durationText(Int(Date.now.timeIntervalSince1970 - connectedAt.timeIntervalSince1970))
+ }
+ }
+ }
+ .onDisappear {
+ _ = timer?.invalidate()
+ }
+ }
+ }
+
private func lockButton() -> some View {
Button(action: authenticateContentViewAccess) { Label("Unlock", systemImage: "lock") }
}
diff --git a/apps/ios/Shared/Model/ChatModel.swift b/apps/ios/Shared/Model/ChatModel.swift
index c31ad579ab..462699e407 100644
--- a/apps/ios/Shared/Model/ChatModel.swift
+++ b/apps/ios/Shared/Model/ChatModel.swift
@@ -80,6 +80,7 @@ final class ChatModel: ObservableObject {
@Published var tokenRegistered = false
@Published var tokenStatus: NtfTknStatus?
@Published var notificationMode = NotificationsMode.off
+ @Published var notificationServer: String?
@Published var notificationPreview: NotificationPreviewMode = ntfPreviewModeGroupDefault.get()
// pending notification actions
@Published var ntfContactRequest: NTFContactRequest?
@@ -89,10 +90,12 @@ final class ChatModel: ObservableObject {
@Published var activeCall: Call?
let callCommand: WebRTCCommandProcessor = WebRTCCommandProcessor()
@Published var showCallView = false
+ @Published var activeCallViewIsCollapsed = false
// remote desktop
@Published var remoteCtrlSession: RemoteCtrlSession?
// currently showing invitation
@Published var showingInvitation: ShowingInvitation?
+ @Published var migrationState: MigrationToState? = MigrationToDeviceState.makeMigrationState()
// audio recording and playback
@Published var stopPreviousRecPlay: URL? = nil // coordinates currently playing source
@Published var draft: ComposeState?
diff --git a/apps/ios/Shared/Model/SimpleXAPI.swift b/apps/ios/Shared/Model/SimpleXAPI.swift
index fd013f8339..365f23c33e 100644
--- a/apps/ios/Shared/Model/SimpleXAPI.swift
+++ b/apps/ios/Shared/Model/SimpleXAPI.swift
@@ -90,12 +90,12 @@ private func withBGTask(bgDelay: Double? = nil, f: @escaping () -> T) -> T {
return r
}
-func chatSendCmdSync(_ cmd: ChatCommand, bgTask: Bool = true, bgDelay: Double? = nil) -> ChatResponse {
+func chatSendCmdSync(_ cmd: ChatCommand, bgTask: Bool = true, bgDelay: Double? = nil, _ ctrl: chat_ctrl? = nil) -> ChatResponse {
logger.debug("chatSendCmd \(cmd.cmdType)")
let start = Date.now
let resp = bgTask
- ? withBGTask(bgDelay: bgDelay) { sendSimpleXCmd(cmd) }
- : sendSimpleXCmd(cmd)
+ ? withBGTask(bgDelay: bgDelay) { sendSimpleXCmd(cmd, ctrl) }
+ : sendSimpleXCmd(cmd, ctrl)
logger.debug("chatSendCmd \(cmd.cmdType): \(resp.responseType)")
if case let .response(_, json) = resp {
logger.debug("chatSendCmd \(cmd.cmdType) response: \(json)")
@@ -106,24 +106,24 @@ func chatSendCmdSync(_ cmd: ChatCommand, bgTask: Bool = true, bgDelay: Double? =
return resp
}
-func chatSendCmd(_ cmd: ChatCommand, bgTask: Bool = true, bgDelay: Double? = nil) async -> ChatResponse {
+func chatSendCmd(_ cmd: ChatCommand, bgTask: Bool = true, bgDelay: Double? = nil, _ ctrl: chat_ctrl? = nil) async -> ChatResponse {
await withCheckedContinuation { cont in
- cont.resume(returning: chatSendCmdSync(cmd, bgTask: bgTask, bgDelay: bgDelay))
+ cont.resume(returning: chatSendCmdSync(cmd, bgTask: bgTask, bgDelay: bgDelay, ctrl))
}
}
-func chatRecvMsg() async -> ChatResponse? {
+func chatRecvMsg(_ ctrl: chat_ctrl? = nil) async -> ChatResponse? {
await withCheckedContinuation { cont in
_ = withBGTask(bgDelay: msgDelay) { () -> ChatResponse? in
- let resp = recvSimpleXMsg()
+ let resp = recvSimpleXMsg(ctrl)
cont.resume(returning: resp)
return resp
}
}
}
-func apiGetActiveUser() throws -> User? {
- let r = chatSendCmdSync(.showActiveUser)
+func apiGetActiveUser(ctrl: chat_ctrl? = nil) throws -> User? {
+ let r = chatSendCmdSync(.showActiveUser, ctrl)
switch r {
case let .activeUser(user): return user
case .chatCmdError(_, .error(.noActiveUser)): return nil
@@ -131,8 +131,8 @@ func apiGetActiveUser() throws -> User? {
}
}
-func apiCreateActiveUser(_ p: Profile?, sameServers: Bool = false, pastTimestamp: Bool = false) throws -> User {
- let r = chatSendCmdSync(.createActiveUser(profile: p, sameServers: sameServers, pastTimestamp: pastTimestamp))
+func apiCreateActiveUser(_ p: Profile?, sameServers: Bool = false, pastTimestamp: Bool = false, ctrl: chat_ctrl? = nil) throws -> User {
+ let r = chatSendCmdSync(.createActiveUser(profile: p, sameServers: sameServers, pastTimestamp: pastTimestamp), ctrl)
if case let .activeUser(user) = r { return user }
throw r
}
@@ -210,8 +210,8 @@ func apiDeleteUser(_ userId: Int64, _ delSMPQueues: Bool, viewPwd: String?) asyn
throw r
}
-func apiStartChat() throws -> Bool {
- let r = chatSendCmdSync(.startChat(mainApp: true))
+func apiStartChat(ctrl: chat_ctrl? = nil) throws -> Bool {
+ let r = chatSendCmdSync(.startChat(mainApp: true), ctrl)
switch r {
case .chatStarted: return true
case .chatRunning: return false
@@ -240,14 +240,14 @@ func apiSuspendChat(timeoutMicroseconds: Int) {
logger.error("apiSuspendChat error: \(String(describing: r))")
}
-func apiSetTempFolder(tempFolder: String) throws {
- let r = chatSendCmdSync(.setTempFolder(tempFolder: tempFolder))
+func apiSetTempFolder(tempFolder: String, ctrl: chat_ctrl? = nil) throws {
+ let r = chatSendCmdSync(.setTempFolder(tempFolder: tempFolder), ctrl)
if case .cmdOk = r { return }
throw r
}
-func apiSetFilesFolder(filesFolder: String) throws {
- let r = chatSendCmdSync(.setFilesFolder(filesFolder: filesFolder))
+func apiSetFilesFolder(filesFolder: String, ctrl: chat_ctrl? = nil) throws {
+ let r = chatSendCmdSync(.setFilesFolder(filesFolder: filesFolder), ctrl)
if case .cmdOk = r { return }
throw r
}
@@ -258,6 +258,30 @@ func apiSetEncryptLocalFiles(_ enable: Bool) throws {
throw r
}
+func apiSaveAppSettings(settings: AppSettings) throws {
+ let r = chatSendCmdSync(.apiSaveSettings(settings: settings))
+ if case .cmdOk = r { return }
+ throw r
+}
+
+func apiGetAppSettings(settings: AppSettings) throws -> AppSettings {
+ let r = chatSendCmdSync(.apiGetSettings(settings: settings))
+ if case let .appSettings(settings) = r { return settings }
+ throw r
+}
+
+func apiSetPQEncryption(_ enable: Bool) throws {
+ let r = chatSendCmdSync(.apiSetPQEncryption(enable: enable))
+ if case .cmdOk = r { return }
+ throw r
+}
+
+func apiSetContactPQ(_ contactId: Int64, _ enable: Bool) async throws -> Contact {
+ let r = await chatSendCmd(.apiSetContactPQ(contactId: contactId, enable: enable))
+ if case let .contactPQAllowed(_, contact, _) = r { return contact }
+ throw r
+}
+
func apiExportArchive(config: ArchiveConfig) async throws {
try await sendCommandOkResp(.apiExportArchive(config: config))
}
@@ -276,6 +300,10 @@ func apiStorageEncryption(currentKey: String = "", newKey: String = "") async th
try await sendCommandOkResp(.apiStorageEncryption(config: DBEncryptionConfig(currentKey: currentKey, newKey: newKey)))
}
+func testStorageEncryption(key: String, _ ctrl: chat_ctrl? = nil) async throws {
+ try await sendCommandOkResp(.testStorageEncryption(key: key), ctrl)
+}
+
func apiGetChats() throws -> [ChatData] {
let userId = try currentUserId("apiGetChats")
return try apiChatsResponse(chatSendCmdSync(.apiGetChats(userId: userId)))
@@ -406,14 +434,14 @@ func apiDeleteMemberChatItem(groupId: Int64, groupMemberId: Int64, itemId: Int64
throw r
}
-func apiGetNtfToken() -> (DeviceToken?, NtfTknStatus?, NotificationsMode) {
+func apiGetNtfToken() -> (DeviceToken?, NtfTknStatus?, NotificationsMode, String?) {
let r = chatSendCmdSync(.apiGetNtfToken)
switch r {
- case let .ntfToken(token, status, ntfMode): return (token, status, ntfMode)
- case .chatCmdError(_, .errorAgent(.CMD(.PROHIBITED))): return (nil, nil, .off)
+ case let .ntfToken(token, status, ntfMode, ntfServer): return (token, status, ntfMode, ntfServer)
+ case .chatCmdError(_, .errorAgent(.CMD(.PROHIBITED))): return (nil, nil, .off, nil)
default:
logger.debug("apiGetNtfToken response: \(String(describing: r))")
- return (nil, nil, .off)
+ return (nil, nil, .off, nil)
}
}
@@ -498,8 +526,8 @@ func getNetworkConfig() async throws -> NetCfg? {
throw r
}
-func setNetworkConfig(_ cfg: NetCfg) throws {
- let r = chatSendCmdSync(.apiSetNetworkConfig(networkConfig: cfg))
+func setNetworkConfig(_ cfg: NetCfg, ctrl: chat_ctrl? = nil) throws {
+ let r = chatSendCmdSync(.apiSetNetworkConfig(networkConfig: cfg), ctrl)
if case .cmdOk = r { return }
throw r
}
@@ -864,6 +892,36 @@ func apiChatUnread(type: ChatType, id: Int64, unreadChat: Bool) async throws {
try await sendCommandOkResp(.apiChatUnread(type: type, id: id, unreadChat: unreadChat))
}
+func uploadStandaloneFile(user: any UserLike, file: CryptoFile, ctrl: chat_ctrl? = nil) async -> (FileTransferMeta?, String?) {
+ let r = await chatSendCmd(.apiUploadStandaloneFile(userId: user.userId, file: file), ctrl)
+ if case let .sndStandaloneFileCreated(_, fileTransferMeta) = r {
+ return (fileTransferMeta, nil)
+ } else {
+ logger.error("uploadStandaloneFile error: \(String(describing: r))")
+ return (nil, String(describing: r))
+ }
+}
+
+func downloadStandaloneFile(user: any UserLike, url: String, file: CryptoFile, ctrl: chat_ctrl? = nil) async -> (RcvFileTransfer?, String?) {
+ let r = await chatSendCmd(.apiDownloadStandaloneFile(userId: user.userId, url: url, file: file), ctrl)
+ if case let .rcvStandaloneFileCreated(_, rcvFileTransfer) = r {
+ return (rcvFileTransfer, nil)
+ } else {
+ logger.error("downloadStandaloneFile error: \(String(describing: r))")
+ return (nil, String(describing: r))
+ }
+}
+
+func standaloneFileInfo(url: String, ctrl: chat_ctrl? = nil) async -> MigrationFileLinkData? {
+ let r = await chatSendCmd(.apiStandaloneFileInfo(url: url), ctrl)
+ if case let .standaloneFileInfo(fileMeta) = r {
+ return fileMeta
+ } else {
+ logger.error("standaloneFileInfo error: \(String(describing: r))")
+ return nil
+ }
+}
+
func receiveFile(user: any UserLike, fileId: Int64, auto: Bool = false) async {
if let chatItem = await apiReceiveFile(fileId: fileId, encrypted: privacyEncryptLocalFilesGroupDefault.get(), auto: auto) {
await chatItemSimpleUpdate(user, chatItem)
@@ -909,8 +967,8 @@ func cancelFile(user: User, fileId: Int64) async {
}
}
-func apiCancelFile(fileId: Int64) async -> AChatItem? {
- let r = await chatSendCmd(.cancelFile(fileId: fileId))
+func apiCancelFile(fileId: Int64, ctrl: chat_ctrl? = nil) async -> AChatItem? {
+ let r = await chatSendCmd(.cancelFile(fileId: fileId), ctrl)
switch r {
case let .sndFileCancelled(_, chatItem, _, _) : return chatItem
case let .rcvFileCancelled(_, chatItem, _) : return chatItem
@@ -1082,8 +1140,8 @@ func apiMarkChatItemRead(_ cInfo: ChatInfo, _ cItem: ChatItem) async {
}
}
-private func sendCommandOkResp(_ cmd: ChatCommand) async throws {
- let r = await chatSendCmd(cmd)
+private func sendCommandOkResp(_ cmd: ChatCommand, _ ctrl: chat_ctrl? = nil) async throws {
+ let r = await chatSendCmd(cmd, ctrl)
if case .cmdOk = r { return }
throw r
}
@@ -1244,6 +1302,7 @@ func initializeChat(start: Bool, confirmStart: Bool = false, dbKey: String? = ni
try apiSetTempFolder(tempFolder: getTempFilesDirectory().path)
try apiSetFilesFolder(filesFolder: getAppFilesDirectory().path)
try apiSetEncryptLocalFiles(privacyEncryptLocalFilesGroupDefault.get())
+ try apiSetPQEncryption(pqExperimentalEnabledDefault.get())
m.chatInitialized = true
m.currentUser = try apiGetActiveUser()
if m.currentUser == nil {
@@ -1302,7 +1361,7 @@ func startChat(refreshInvitations: Bool = true) throws {
if (refreshInvitations) {
try refreshCallInvitations()
}
- (m.savedToken, m.tokenStatus, m.notificationMode) = apiGetNtfToken()
+ (m.savedToken, m.tokenStatus, m.notificationMode, m.notificationServer) = apiGetNtfToken()
// deviceToken is set when AppDelegate.application(didRegisterForRemoteNotificationsWithDeviceToken:) is called,
// when it is called before startChat
if let token = m.deviceToken {
@@ -1323,6 +1382,16 @@ func startChat(refreshInvitations: Bool = true) throws {
chatLastStartGroupDefault.set(Date.now)
}
+func startChatWithTemporaryDatabase(ctrl: chat_ctrl) throws -> User? {
+ logger.debug("startChatWithTemporaryDatabase")
+ let migrationActiveUser = try? apiGetActiveUser(ctrl: ctrl) ?? apiCreateActiveUser(Profile(displayName: "Temp", fullName: ""), ctrl: ctrl)
+ try setNetworkConfig(getNetCfg(), ctrl: ctrl)
+ try apiSetTempFolder(tempFolder: getMigrationTempFilesDirectory().path, ctrl: ctrl)
+ try apiSetFilesFolder(filesFolder: getMigrationTempFilesDirectory().path, ctrl: ctrl)
+ _ = try apiStartChat(ctrl: ctrl)
+ return migrationActiveUser
+}
+
func changeActiveUser(_ userId: Int64, viewPwd: String?) {
do {
try changeActiveUser_(userId, viewPwd: viewPwd)
@@ -1404,14 +1473,12 @@ class ChatReceiver {
}
func receiveMsgLoop() async {
- // TODO use function that has timeout
- if let msg = await chatRecvMsg() {
- self._lastMsgTime = .now
- await processReceivedMsg(msg)
- }
- if self.receiveMessages {
+ while self.receiveMessages {
+ if let msg = await chatRecvMsg() {
+ self._lastMsgTime = .now
+ await processReceivedMsg(msg)
+ }
_ = try? await Task.sleep(nanoseconds: 7_500_000)
- await receiveMsgLoop()
}
}
@@ -1701,27 +1768,37 @@ func processReceivedMsg(_ res: ChatResponse) async {
case let .rcvFileSndCancelled(user, aChatItem, _):
await chatItemSimpleUpdate(user, aChatItem)
Task { cleanupFile(aChatItem) }
- case let .rcvFileProgressXFTP(user, aChatItem, _, _):
- await chatItemSimpleUpdate(user, aChatItem)
- case let .rcvFileError(user, aChatItem):
- await chatItemSimpleUpdate(user, aChatItem)
- Task { cleanupFile(aChatItem) }
+ case let .rcvFileProgressXFTP(user, aChatItem, _, _, _):
+ if let aChatItem = aChatItem {
+ await chatItemSimpleUpdate(user, aChatItem)
+ }
+ case let .rcvFileError(user, aChatItem, _):
+ if let aChatItem = aChatItem {
+ await chatItemSimpleUpdate(user, aChatItem)
+ Task { cleanupFile(aChatItem) }
+ }
case let .sndFileStart(user, aChatItem, _):
await chatItemSimpleUpdate(user, aChatItem)
case let .sndFileComplete(user, aChatItem, _):
await chatItemSimpleUpdate(user, aChatItem)
Task { cleanupDirectFile(aChatItem) }
case let .sndFileRcvCancelled(user, aChatItem, _):
- await chatItemSimpleUpdate(user, aChatItem)
- Task { cleanupDirectFile(aChatItem) }
+ if let aChatItem = aChatItem {
+ await chatItemSimpleUpdate(user, aChatItem)
+ Task { cleanupDirectFile(aChatItem) }
+ }
case let .sndFileProgressXFTP(user, aChatItem, _, _, _):
- await chatItemSimpleUpdate(user, aChatItem)
+ if let aChatItem = aChatItem {
+ await chatItemSimpleUpdate(user, aChatItem)
+ }
case let .sndFileCompleteXFTP(user, aChatItem, _):
await chatItemSimpleUpdate(user, aChatItem)
Task { cleanupFile(aChatItem) }
- case let .sndFileError(user, aChatItem):
- await chatItemSimpleUpdate(user, aChatItem)
- Task { cleanupFile(aChatItem) }
+ case let .sndFileError(user, aChatItem, _):
+ if let aChatItem = aChatItem {
+ await chatItemSimpleUpdate(user, aChatItem)
+ Task { cleanupFile(aChatItem) }
+ }
case let .callInvitation(invitation):
await MainActor.run {
m.callInvitations[invitation.contact.id] = invitation
@@ -1818,6 +1895,12 @@ func processReceivedMsg(_ res: ChatResponse) async {
}
}
}
+ case let .contactPQEnabled(user, contact, _):
+ if active(user) {
+ await MainActor.run {
+ m.updateContact(contact)
+ }
+ }
default:
logger.debug("unsupported event: \(res.responseType)")
}
diff --git a/apps/ios/Shared/SimpleXApp.swift b/apps/ios/Shared/SimpleXApp.swift
index e5b98589a0..7d69466c07 100644
--- a/apps/ios/Shared/SimpleXApp.swift
+++ b/apps/ios/Shared/SimpleXApp.swift
@@ -44,7 +44,12 @@ struct SimpleXApp: App {
chatModel.appOpenUrl = url
}
.onAppear() {
- if kcAppPassword.get() == nil || kcSelfDestructPassword.get() == nil {
+ // Present screen for continue migration if it wasn't finished yet
+ if chatModel.migrationState != nil {
+ // It's important, otherwise, user may be locked in undefined state
+ onboardingStageDefault.set(.step1_SimpleXInfo)
+ chatModel.onboardingStage = onboardingStageDefault.get()
+ } else if kcAppPassword.get() == nil || kcSelfDestructPassword.get() == nil {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.15) {
initChatAndMigrate()
}
diff --git a/apps/ios/Shared/Views/Call/ActiveCallView.swift b/apps/ios/Shared/Views/Call/ActiveCallView.swift
index a3be2e900a..9f246f63f3 100644
--- a/apps/ios/Shared/Views/Call/ActiveCallView.swift
+++ b/apps/ios/Shared/Views/Call/ActiveCallView.swift
@@ -12,49 +12,67 @@ import SimpleXChat
struct ActiveCallView: View {
@EnvironmentObject var m: ChatModel
+ @Environment(\.colorScheme) var colorScheme
@ObservedObject var call: Call
@Environment(\.scenePhase) var scenePhase
@State private var client: WebRTCClient? = nil
@State private var activeCall: WebRTCClient.Call? = nil
@State private var localRendererAspectRatio: CGFloat? = nil
@Binding var canConnectCall: Bool
+ @State var prevColorScheme: ColorScheme = .dark
+ @State var pipShown = false
var body: some View {
- ZStack(alignment: .bottom) {
- if let client = client, [call.peerMedia, call.localMedia].contains(.video), activeCall != nil {
- GeometryReader { g in
- let width = g.size.width * 0.3
- ZStack(alignment: .topTrailing) {
- CallViewRemote(client: client, activeCall: $activeCall)
- CallViewLocal(client: client, activeCall: $activeCall, localRendererAspectRatio: $localRendererAspectRatio)
- .cornerRadius(10)
- .frame(width: width, height: width / (localRendererAspectRatio ?? 1))
- .padding([.top, .trailing], 17)
+ ZStack(alignment: .topLeading) {
+ ZStack(alignment: .bottom) {
+ if let client = client, [call.peerMedia, call.localMedia].contains(.video), activeCall != nil {
+ GeometryReader { g in
+ let width = g.size.width * 0.3
+ ZStack(alignment: .topTrailing) {
+ CallViewRemote(client: client, activeCall: $activeCall, activeCallViewIsCollapsed: $m.activeCallViewIsCollapsed, pipShown: $pipShown)
+ CallViewLocal(client: client, activeCall: $activeCall, localRendererAspectRatio: $localRendererAspectRatio, pipShown: $pipShown)
+ .cornerRadius(10)
+ .frame(width: width, height: width / (localRendererAspectRatio ?? 1))
+ .padding([.top, .trailing], 17)
+ ZStack(alignment: .center) {
+ // For some reason, when the view in GeometryReader and ZStack is visible, it steals clicks on a back button, so showing something on top like this with background color helps (.clear color doesn't work)
+ }
+ .frame(maxWidth: .infinity, maxHeight: .infinity)
+ .background(Color.primary.opacity(0.000001))
+ }
}
}
- }
- if let call = m.activeCall, let client = client {
- ActiveCallOverlay(call: call, client: client)
+ if let call = m.activeCall, let client = client, (!pipShown || !call.supportsVideo) {
+ ActiveCallOverlay(call: call, client: client)
+ }
}
}
+ .allowsHitTesting(!m.activeCallViewIsCollapsed)
+ .opacity(m.activeCallViewIsCollapsed ? 0 : 1)
.onAppear {
logger.debug("ActiveCallView: appear client is nil \(client == nil), scenePhase \(String(describing: scenePhase)), canConnectCall \(canConnectCall)")
AppDelegate.keepScreenOn(true)
createWebRTCClient()
dismissAllSheets()
+ hideKeyboard()
+ prevColorScheme = colorScheme
}
.onChange(of: canConnectCall) { _ in
logger.debug("ActiveCallView: canConnectCall changed to \(canConnectCall)")
createWebRTCClient()
}
+ .onChange(of: m.activeCallViewIsCollapsed) { _ in
+ hideKeyboard()
+ }
.onDisappear {
logger.debug("ActiveCallView: disappear")
Task { await m.callCommand.setClient(nil) }
AppDelegate.keepScreenOn(false)
client?.endCall()
}
- .background(.black)
- .preferredColorScheme(.dark)
+ .background(m.activeCallViewIsCollapsed ? .clear : .black)
+ // Quite a big delay when opening/closing the view when a scheme changes (globally) this way. It's not needed when CallKit is used since status bar is green with white text on it
+ .preferredColorScheme(m.activeCallViewIsCollapsed || CallController.useCallKit() ? prevColorScheme : .dark)
}
private func createWebRTCClient() {
@@ -69,8 +87,8 @@ struct ActiveCallView: View {
@MainActor
private func processRtcMessage(msg: WVAPIMessage) {
if call == m.activeCall,
- let call = m.activeCall,
- let client = client {
+ let call = m.activeCall,
+ let client = client {
logger.debug("ActiveCallView: response \(msg.resp.respType)")
switch msg.resp {
case let .capabilities(capabilities):
@@ -90,7 +108,7 @@ struct ActiveCallView: View {
Task {
do {
try await apiSendCallOffer(call.contact, offer, iceCandidates,
- media: call.localMedia, capabilities: capabilities)
+ media: call.localMedia, capabilities: capabilities)
} catch {
logger.error("apiSendCallOffer \(responseError(error))")
}
@@ -122,13 +140,15 @@ struct ActiveCallView: View {
if let callStatus = WebRTCCallStatus.init(rawValue: state.connectionState),
case .connected = callStatus {
call.direction == .outgoing
- ? CallController.shared.reportOutgoingCall(call: call, connectedAt: nil)
- : CallController.shared.reportIncomingCall(call: call, connectedAt: nil)
+ ? CallController.shared.reportOutgoingCall(call: call, connectedAt: nil)
+ : CallController.shared.reportIncomingCall(call: call, connectedAt: nil)
call.callState = .connected
+ call.connectedAt = .now
}
if state.connectionState == "closed" {
closeCallView(client)
m.activeCall = nil
+ m.activeCallViewIsCollapsed = false
}
Task {
do {
@@ -140,6 +160,7 @@ struct ActiveCallView: View {
case let .connected(connectionInfo):
call.callState = .connected
call.connectionInfo = connectionInfo
+ call.connectedAt = .now
case .ended:
closeCallView(client)
call.callState = .ended
@@ -153,6 +174,7 @@ struct ActiveCallView: View {
case .end:
closeCallView(client)
m.activeCall = nil
+ m.activeCallViewIsCollapsed = false
default: ()
}
case let .error(message):
@@ -181,7 +203,7 @@ struct ActiveCallOverlay: View {
VStack {
switch call.localMedia {
case .video:
- callInfoView(call, .leading)
+ videoCallInfoView(call)
.foregroundColor(.white)
.opacity(0.8)
.padding()
@@ -208,16 +230,25 @@ struct ActiveCallOverlay: View {
.frame(maxWidth: .infinity, alignment: .center)
case .audio:
- VStack {
- ProfileImage(imageStr: call.contact.profile.image)
- .scaledToFit()
- .frame(width: 192, height: 192)
- callInfoView(call, .center)
+ ZStack(alignment: .topLeading) {
+ Button {
+ chatModel.activeCallViewIsCollapsed = true
+ } label: {
+ Label("Back", systemImage: "chevron.left")
+ .padding()
+ .foregroundColor(.white.opacity(0.8))
+ }
+ VStack {
+ ProfileImage(imageStr: call.contact.profile.image)
+ .scaledToFit()
+ .frame(width: 192, height: 192)
+ audioCallInfoView(call)
+ }
+ .foregroundColor(.white)
+ .opacity(0.8)
+ .padding()
+ .frame(maxHeight: .infinity)
}
- .foregroundColor(.white)
- .opacity(0.8)
- .padding()
- .frame(maxHeight: .infinity)
Spacer()
@@ -235,12 +266,12 @@ struct ActiveCallOverlay: View {
.frame(maxWidth: .infinity)
}
- private func callInfoView(_ call: Call, _ alignment: Alignment) -> some View {
+ private func audioCallInfoView(_ call: Call) -> some View {
VStack {
Text(call.contact.chatViewName)
.lineLimit(1)
.font(.title)
- .frame(maxWidth: .infinity, alignment: alignment)
+ .frame(maxWidth: .infinity, alignment: .center)
Group {
Text(call.callState.text)
HStack {
@@ -251,7 +282,36 @@ struct ActiveCallOverlay: View {
}
}
.font(.subheadline)
- .frame(maxWidth: .infinity, alignment: alignment)
+ .frame(maxWidth: .infinity, alignment: .center)
+ }
+ }
+
+ private func videoCallInfoView(_ call: Call) -> some View {
+ VStack {
+ Button {
+ chatModel.activeCallViewIsCollapsed = true
+ } label: {
+ HStack(alignment: .center, spacing: 16) {
+ Image(systemName: "chevron.left")
+ .resizable()
+ .frame(width: 10, height: 18)
+ Text(call.contact.chatViewName)
+ .lineLimit(1)
+ .font(.title)
+ .frame(maxWidth: .infinity, alignment: .leading)
+ }
+ }
+ Group {
+ Text(call.callState.text)
+ HStack {
+ Text(call.encryptionStatus)
+ if let connInfo = call.connectionInfo {
+ Text("(") + Text(connInfo.text) + Text(")")
+ }
+ }
+ }
+ .font(.subheadline)
+ .frame(maxWidth: .infinity, alignment: .leading)
}
}
diff --git a/apps/ios/Shared/Views/Call/CallManager.swift b/apps/ios/Shared/Views/Call/CallManager.swift
index 194af3ab01..a6d5ea17c4 100644
--- a/apps/ios/Shared/Views/Call/CallManager.swift
+++ b/apps/ios/Shared/Views/Call/CallManager.swift
@@ -92,6 +92,7 @@ class CallManager {
if case .ended = call.callState {
logger.debug("CallManager.endCall: call ended")
m.activeCall = nil
+ m.activeCallViewIsCollapsed = false
m.showCallView = false
completed()
} else {
@@ -100,6 +101,7 @@ class CallManager {
await m.callCommand.processCommand(.end)
await MainActor.run {
m.activeCall = nil
+ m.activeCallViewIsCollapsed = false
m.showCallView = false
completed()
}
diff --git a/apps/ios/Shared/Views/Call/CallViewRenderers.swift b/apps/ios/Shared/Views/Call/CallViewRenderers.swift
index 93766ced1c..a3201d9351 100644
--- a/apps/ios/Shared/Views/Call/CallViewRenderers.swift
+++ b/apps/ios/Shared/Views/Call/CallViewRenderers.swift
@@ -6,14 +6,20 @@
import SwiftUI
import WebRTC
import SimpleXChat
+import AVKit
struct CallViewRemote: UIViewRepresentable {
var client: WebRTCClient
var activeCall: Binding
+ @State var enablePip: (Bool) -> Void = {_ in }
+ @Binding var activeCallViewIsCollapsed: Bool
+ @Binding var pipShown: Bool
- init(client: WebRTCClient, activeCall: Binding) {
+ init(client: WebRTCClient, activeCall: Binding, activeCallViewIsCollapsed: Binding, pipShown: Binding) {
self.client = client
self.activeCall = activeCall
+ self._activeCallViewIsCollapsed = activeCallViewIsCollapsed
+ self._pipShown = pipShown
}
func makeUIView(context: Context) -> UIView {
@@ -23,12 +29,120 @@ struct CallViewRemote: UIViewRepresentable {
remoteRenderer.videoContentMode = .scaleAspectFill
client.addRemoteRenderer(call, remoteRenderer)
addSubviewAndResize(remoteRenderer, into: view)
+
+ if AVPictureInPictureController.isPictureInPictureSupported() {
+ makeViewWithRTCRenderer(call, remoteRenderer, view, context)
+ }
}
return view
}
+
+ func makeViewWithRTCRenderer(_ call: WebRTCClient.Call, _ remoteRenderer: RTCMTLVideoView, _ view: UIView, _ context: Context) {
+ let pipRemoteRenderer = RTCMTLVideoView(frame: view.frame)
+ pipRemoteRenderer.videoContentMode = .scaleAspectFill
+
+ let pipVideoCallViewController = AVPictureInPictureVideoCallViewController()
+ pipVideoCallViewController.preferredContentSize = CGSize(width: 1080, height: 1920)
+ addSubviewAndResize(pipRemoteRenderer, into: pipVideoCallViewController.view)
+ let pipContentSource = AVPictureInPictureController.ContentSource(
+ activeVideoCallSourceView: view,
+ contentViewController: pipVideoCallViewController
+ )
+
+ let pipController = AVPictureInPictureController(contentSource: pipContentSource)
+ pipController.canStartPictureInPictureAutomaticallyFromInline = true
+ pipController.delegate = context.coordinator
+ context.coordinator.pipController = pipController
+ context.coordinator.willShowHide = { show in
+ if show {
+ client.addRemoteRenderer(call, pipRemoteRenderer)
+ DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
+ activeCallViewIsCollapsed = true
+ }
+ } else {
+ DispatchQueue.main.asyncAfter(deadline: .now() + 0.05) {
+ activeCallViewIsCollapsed = false
+ }
+ }
+ }
+ context.coordinator.didShowHide = { show in
+ if show {
+ remoteRenderer.isHidden = true
+ } else {
+ client.removeRemoteRenderer(call, pipRemoteRenderer)
+ remoteRenderer.isHidden = false
+ }
+ pipShown = show
+ }
+ DispatchQueue.main.async {
+ enablePip = { enable in
+ if enable != pipShown /* pipController.isPictureInPictureActive */ {
+ if enable {
+ pipController.startPictureInPicture()
+ } else {
+ pipController.stopPictureInPicture()
+ }
+ }
+ }
+ }
+ }
+
+ func makeCoordinator() -> Coordinator {
+ Coordinator()
+ }
func updateUIView(_ view: UIView, context: Context) {
logger.debug("CallView.updateUIView remote")
+ DispatchQueue.main.async {
+ if activeCallViewIsCollapsed != pipShown {
+ enablePip(activeCallViewIsCollapsed)
+ }
+ }
+ }
+
+ // MARK: - Coordinator
+ class Coordinator: NSObject, AVPictureInPictureControllerDelegate {
+ var pipController: AVPictureInPictureController? = nil
+ var willShowHide: (Bool) -> Void = { _ in }
+ var didShowHide: (Bool) -> Void = { _ in }
+
+ func pictureInPictureControllerWillStartPictureInPicture(_ pictureInPictureController: AVPictureInPictureController) {
+ willShowHide(true)
+ }
+
+ func pictureInPictureControllerDidStartPictureInPicture(_ pictureInPictureController: AVPictureInPictureController) {
+ didShowHide(true)
+ }
+
+ func pictureInPictureController(_ pictureInPictureController: AVPictureInPictureController, failedToStartPictureInPictureWithError error: Error) {
+ logger.error("PiP failed to start: \(error.localizedDescription)")
+ }
+
+ func pictureInPictureControllerWillStopPictureInPicture(_ pictureInPictureController: AVPictureInPictureController) {
+ willShowHide(false)
+ }
+
+ func pictureInPictureControllerDidStopPictureInPicture(_ pictureInPictureController: AVPictureInPictureController) {
+ didShowHide(false)
+ }
+
+ deinit {
+ pipController?.stopPictureInPicture()
+ pipController?.canStartPictureInPictureAutomaticallyFromInline = false
+ pipController?.contentSource = nil
+ pipController?.delegate = nil
+ pipController = nil
+ }
+ }
+
+ class SampleBufferVideoCallView: UIView {
+ override class var layerClass: AnyClass {
+ get { return AVSampleBufferDisplayLayer.self }
+ }
+
+ var sampleBufferDisplayLayer: AVSampleBufferDisplayLayer {
+ return layer as! AVSampleBufferDisplayLayer
+ }
}
}
@@ -36,11 +150,14 @@ struct CallViewLocal: UIViewRepresentable {
var client: WebRTCClient
var activeCall: Binding
var localRendererAspectRatio: Binding
+ @State var pipStateChanged: (Bool) -> Void = {_ in }
+ @Binding var pipShown: Bool
- init(client: WebRTCClient, activeCall: Binding, localRendererAspectRatio: Binding) {
+ init(client: WebRTCClient, activeCall: Binding, localRendererAspectRatio: Binding, pipShown: Binding) {
self.client = client
self.activeCall = activeCall
self.localRendererAspectRatio = localRendererAspectRatio
+ self._pipShown = pipShown
}
func makeUIView(context: Context) -> UIView {
@@ -50,12 +167,18 @@ struct CallViewLocal: UIViewRepresentable {
client.addLocalRenderer(call, localRenderer)
client.startCaptureLocalVideo(call)
addSubviewAndResize(localRenderer, into: view)
+ DispatchQueue.main.async {
+ pipStateChanged = { shown in
+ localRenderer.isHidden = shown
+ }
+ }
}
return view
}
func updateUIView(_ view: UIView, context: Context) {
logger.debug("CallView.updateUIView local")
+ pipStateChanged(pipShown)
}
}
diff --git a/apps/ios/Shared/Views/Call/WebRTC.swift b/apps/ios/Shared/Views/Call/WebRTC.swift
index c21ef5019a..919b1e14e7 100644
--- a/apps/ios/Shared/Views/Call/WebRTC.swift
+++ b/apps/ios/Shared/Views/Call/WebRTC.swift
@@ -28,6 +28,7 @@ class Call: ObservableObject, Equatable {
@Published var speakerEnabled = false
@Published var videoEnabled: Bool
@Published var connectionInfo: ConnectionInfo?
+ @Published var connectedAt: Date? = nil
init(
direction: CallDirection,
@@ -59,6 +60,7 @@ class Call: ObservableObject, Equatable {
}
}
var hasMedia: Bool { get { callState == .offerSent || callState == .negotiated || callState == .connected } }
+ var supportsVideo: Bool { get { peerMedia == .video || localMedia == .video } }
}
enum CallDirection {
diff --git a/apps/ios/Shared/Views/Call/WebRTCClient.swift b/apps/ios/Shared/Views/Call/WebRTCClient.swift
index 933a3c745e..1806984d64 100644
--- a/apps/ios/Shared/Views/Call/WebRTCClient.swift
+++ b/apps/ios/Shared/Views/Call/WebRTCClient.swift
@@ -331,6 +331,10 @@ final class WebRTCClient: NSObject, RTCVideoViewDelegate, RTCFrameEncryptorDeleg
activeCall.remoteStream?.add(renderer)
}
+ func removeRemoteRenderer(_ activeCall: Call, _ renderer: RTCVideoRenderer) {
+ activeCall.remoteStream?.remove(renderer)
+ }
+
func startCaptureLocalVideo(_ activeCall: Call) {
#if targetEnvironment(simulator)
guard
@@ -410,6 +414,7 @@ final class WebRTCClient: NSObject, RTCVideoViewDelegate, RTCFrameEncryptorDeleg
guard let call = activeCall.wrappedValue else { return }
logger.debug("WebRTCClient: ending the call")
activeCall.wrappedValue = nil
+ (call.localCamera as? RTCCameraVideoCapturer)?.stopCapture()
call.connection.close()
call.connection.delegate = nil
call.frameEncryptor?.delegate = nil
diff --git a/apps/ios/Shared/Views/Chat/ChatInfoView.swift b/apps/ios/Shared/Views/Chat/ChatInfoView.swift
index b702c2cc23..8b60fc7649 100644
--- a/apps/ios/Shared/Views/Chat/ChatInfoView.swift
+++ b/apps/ios/Shared/Views/Chat/ChatInfoView.swift
@@ -103,6 +103,7 @@ struct ChatInfoView: View {
@State private var sendReceipts = SendReceipts.userDefault(true)
@State private var sendReceiptsUserDefault = true
@AppStorage(DEFAULT_DEVELOPER_TOOLS) private var developerTools = false
+ @AppStorage(GROUP_DEFAULT_PQ_EXPERIMENTAL_ENABLED, store: groupDefaults) private var pqExperimentalEnabled = false
enum ChatInfoViewAlert: Identifiable {
case clearChatAlert
@@ -110,6 +111,7 @@ struct ChatInfoView: View {
case switchAddressAlert
case abortSwitchAddressAlert
case syncConnectionForceAlert
+ case allowContactPQEncryptionAlert
case error(title: LocalizedStringKey, error: LocalizedStringKey = "")
var id: String {
@@ -119,6 +121,7 @@ struct ChatInfoView: View {
case .switchAddressAlert: return "switchAddressAlert"
case .abortSwitchAddressAlert: return "abortSwitchAddressAlert"
case .syncConnectionForceAlert: return "syncConnectionForceAlert"
+ case .allowContactPQEncryptionAlert: return "allowContactPQEncryptionAlert"
case let .error(title, _): return "error \(title)"
}
}
@@ -165,6 +168,22 @@ struct ChatInfoView: View {
}
.disabled(!contact.ready || !contact.active)
+ if pqExperimentalEnabled,
+ let conn = contact.activeConn {
+ Section {
+ infoRow(Text(String("E2E encryption")), conn.connPQEnabled ? "Quantum resistant" : "Standard")
+ if !conn.pqEncryption {
+ allowPQButton()
+ }
+ } header: {
+ Text(String("Quantum resistant E2E encryption"))
+ } footer: {
+ if !conn.pqEncryption {
+ Text(String("After allowing quantum resistant encryption, it will be enabled after several messages if your contact also allows it."))
+ }
+ }
+ }
+
if let contactLink = contact.contactLink {
Section {
SimpleXLinkQRCode(uri: contactLink)
@@ -237,6 +256,7 @@ struct ChatInfoView: View {
case .switchAddressAlert: return switchAddressAlert(switchContactAddress)
case .abortSwitchAddressAlert: return abortSwitchAddressAlert(abortSwitchContactAddress)
case .syncConnectionForceAlert: return syncConnectionForceAlert({ syncContactConnection(force: true) })
+ case .allowContactPQEncryptionAlert: return allowContactPQEncryptionAlert()
case let .error(title, error): return mkAlert(title: title, message: error)
}
}
@@ -410,6 +430,15 @@ struct ChatInfoView: View {
}
}
+ private func allowPQButton() -> some View {
+ Button {
+ alert = .allowContactPQEncryptionAlert
+ } label: {
+ Label(String("Allow PQ encryption"), systemImage: "exclamationmark.triangle")
+ .foregroundColor(.orange)
+ }
+ }
+
private func networkStatusRow() -> some View {
HStack {
Text("Network status")
@@ -543,6 +572,34 @@ struct ChatInfoView: View {
}
}
}
+
+ private func allowContactPQEncryption() {
+ Task {
+ do {
+ let ct = try await apiSetContactPQ(contact.apiId, true)
+ contact = ct
+ await MainActor.run {
+ chatModel.updateContact(ct)
+ dismiss()
+ }
+ } catch let error {
+ logger.error("allowContactPQEncryption apiSetContactPQ error: \(responseError(error))")
+ let a = getErrorAlert(error, "Error allowing contact PQ encryption")
+ await MainActor.run {
+ alert = .error(title: a.title, error: a.message)
+ }
+ }
+ }
+ }
+
+ func allowContactPQEncryptionAlert() -> Alert {
+ Alert(
+ title: Text(String("Allow quantum resistant encryption?")),
+ message: Text(String("This is an experimental feature, it is not recommended to enable it for important chats.")),
+ primaryButton: .destructive(Text(String("Allow")), action: allowContactPQEncryption),
+ secondaryButton: .cancel()
+ )
+ }
}
func switchAddressAlert(_ switchAddress: @escaping () -> Void) -> Alert {
diff --git a/apps/ios/Shared/Views/Chat/ChatItem/CIImageView.swift b/apps/ios/Shared/Views/Chat/ChatItem/CIImageView.swift
index c7e89fc5ed..c3e4805bf3 100644
--- a/apps/ios/Shared/Views/Chat/ChatItem/CIImageView.swift
+++ b/apps/ios/Shared/Views/Chat/ChatItem/CIImageView.swift
@@ -29,6 +29,9 @@ struct CIImageView: View {
FullScreenMediaView(chatItem: chatItem, image: uiImage, showView: $showFullScreenImage, scrollProxy: scrollProxy)
}
.onTapGesture { showFullScreenImage = true }
+ .onChange(of: m.activeCallViewIsCollapsed) { _ in
+ showFullScreenImage = false
+ }
} else if let data = Data(base64Encoded: dropImagePrefix(image)),
let uiImage = UIImage(data: data) {
imageView(uiImage)
diff --git a/apps/ios/Shared/Views/Chat/ChatItem/CIVideoView.swift b/apps/ios/Shared/Views/Chat/ChatItem/CIVideoView.swift
index a824ddc49f..ff208fe58a 100644
--- a/apps/ios/Shared/Views/Chat/ChatItem/CIVideoView.swift
+++ b/apps/ios/Shared/Views/Chat/ChatItem/CIVideoView.swift
@@ -120,6 +120,9 @@ struct CIVideoView: View {
showFullScreenPlayer = urlDecrypted != nil
}
}
+ .onChange(of: m.activeCallViewIsCollapsed) { _ in
+ showFullScreenPlayer = false
+ }
if !decryptionInProgress {
Button {
decrypt(file: file) {
@@ -168,6 +171,9 @@ struct CIVideoView: View {
default: ()
}
}
+ .onChange(of: m.activeCallViewIsCollapsed) { _ in
+ showFullScreenPlayer = false
+ }
if !videoPlaying {
Button {
m.stopPreviousRecPlay = url
diff --git a/apps/ios/Shared/Views/Chat/ChatItem/FramedItemView.swift b/apps/ios/Shared/Views/Chat/ChatItem/FramedItemView.swift
index f7775a7cdd..3475e7a8b6 100644
--- a/apps/ios/Shared/Views/Chat/ChatItem/FramedItemView.swift
+++ b/apps/ios/Shared/Views/Chat/ChatItem/FramedItemView.swift
@@ -253,6 +253,7 @@ struct FramedItemView: View {
ciQuotedMsgTextView(qi, lines: 3)
}
}
+ .fixedSize(horizontal: false, vertical: true)
.padding(.top, 6)
.padding(.horizontal, 12)
}
diff --git a/apps/ios/Shared/Views/Chat/ChatItemView.swift b/apps/ios/Shared/Views/Chat/ChatItemView.swift
index 8f67a8f737..da9dc523e1 100644
--- a/apps/ios/Shared/Views/Chat/ChatItemView.swift
+++ b/apps/ios/Shared/Views/Chat/ChatItemView.swift
@@ -110,6 +110,10 @@ struct ChatItemContentView: View {
case .sndModerated: deletedItemView()
case .rcvModerated: deletedItemView()
case .rcvBlocked: deletedItemView()
+ case let .sndDirectE2EEInfo(e2eeInfo): CIEventView(eventText: directE2EEInfoText(e2eeInfo))
+ case let .rcvDirectE2EEInfo(e2eeInfo): CIEventView(eventText: directE2EEInfoText(e2eeInfo))
+ case .sndGroupE2EEInfo: CIEventView(eventText: e2eeInfoNoPQText())
+ case .rcvGroupE2EEInfo: CIEventView(eventText: e2eeInfoNoPQText())
case let .invalidJSON(json): CIInvalidJSONView(json: json)
}
}
@@ -170,6 +174,22 @@ struct ChatItemContentView: View {
Text(members)
}
}
+
+ private func directE2EEInfoText(_ info: E2EEInfo) -> Text {
+ info.pqEnabled
+ ? Text("Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.")
+ .font(.caption)
+ .foregroundColor(.secondary)
+ .fontWeight(.light)
+ : e2eeInfoNoPQText()
+ }
+
+ private func e2eeInfoNoPQText() -> Text {
+ Text("Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.")
+ .font(.caption)
+ .foregroundColor(.secondary)
+ .fontWeight(.light)
+ }
}
func chatEventText(_ text: Text) -> Text {
diff --git a/apps/ios/Shared/Views/Chat/ChatView.swift b/apps/ios/Shared/Views/Chat/ChatView.swift
index 35caf655e9..468027ec8a 100644
--- a/apps/ios/Shared/Views/Chat/ChatView.swift
+++ b/apps/ios/Shared/Views/Chat/ChatView.swift
@@ -161,11 +161,15 @@ struct ChatView: View {
HStack {
let callsPrefEnabled = contact.mergedPreferences.calls.enabled.forUser
if callsPrefEnabled {
- callButton(contact, .audio, imageName: "phone")
- .disabled(!contact.ready || !contact.active)
+ if chatModel.activeCall == nil {
+ callButton(contact, .audio, imageName: "phone")
+ .disabled(!contact.ready || !contact.active)
+ } else if let call = chatModel.activeCall, call.contact.id == cInfo.id {
+ endCallButton(call)
+ }
}
Menu {
- if callsPrefEnabled {
+ if callsPrefEnabled && chatModel.activeCall == nil {
Button {
CallController.shared.startCall(contact, .video)
} label: {
@@ -422,7 +426,19 @@ struct ChatView: View {
Image(systemName: imageName)
}
}
-
+
+ private func endCallButton(_ call: Call) -> some View {
+ Button {
+ if let uuid = call.callkitUUID {
+ CallController.shared.endCall(callUUID: uuid)
+ } else {
+ CallController.shared.endCall(call: call) {}
+ }
+ } label: {
+ Image(systemName: "phone.down.fill").tint(.red)
+ }
+ }
+
private func searchButton() -> some View {
Button {
searchMode = true
@@ -541,7 +557,12 @@ struct ChatView: View {
chatItemView(ci, nil, prev)
}
} else {
- chatItemView(chatItem, range, prevItem)
+ // Switch branches just to work around context menu problem when 'revealed' changes but size of item isn't
+ if revealed {
+ chatItemView(chatItem, range, prevItem)
+ } else {
+ chatItemView(chatItem, range, prevItem)
+ }
}
}
}
@@ -630,7 +651,7 @@ struct ChatView: View {
playbackState: $playbackState,
playbackTime: $playbackTime
)
- .uiKitContextMenu(menu: uiMenu, allowMenu: $allowMenu)
+ .uiKitContextMenu(maxWidth: maxWidth, menu: uiMenu, allowMenu: $allowMenu)
.accessibilityLabel("")
if ci.content.msgContent != nil && (ci.meta.itemDeleted == nil || revealed) && ci.reactions.count > 0 {
chatItemReactions(ci)
diff --git a/apps/ios/Shared/Views/Chat/ContactPreferencesView.swift b/apps/ios/Shared/Views/Chat/ContactPreferencesView.swift
index 57007fff3f..86acbf6d54 100644
--- a/apps/ios/Shared/Views/Chat/ContactPreferencesView.swift
+++ b/apps/ios/Shared/Views/Chat/ContactPreferencesView.swift
@@ -35,7 +35,7 @@ struct ContactPreferencesView: View {
.disabled(currentFeaturesAllowed == featuresAllowed)
}
}
- .modifier(BackButton {
+ .modifier(BackButton(disabled: Binding.constant(false)) {
if currentFeaturesAllowed == featuresAllowed {
dismiss()
} else {
diff --git a/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift b/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift
index dbea6a17e0..88b36077b4 100644
--- a/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift
+++ b/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift
@@ -234,39 +234,29 @@ struct GroupChatInfoView: View {
Spacer()
memberInfo(member)
}
-
- // revert from this:
+
if user {
v
- } else if member.canBeRemoved(groupInfo: groupInfo) {
- removeSwipe(member, blockSwipe(member, v))
+ } else if groupInfo.membership.memberRole >= .admin {
+ // TODO if there are more actions, refactor with lists of swipeActions
+ let canBlockForAll = member.canBlockForAll(groupInfo: groupInfo)
+ let canRemove = member.canBeRemoved(groupInfo: groupInfo)
+ if canBlockForAll && canRemove {
+ removeSwipe(member, blockForAllSwipe(member, v))
+ } else if canBlockForAll {
+ blockForAllSwipe(member, v)
+ } else if canRemove {
+ removeSwipe(member, v)
+ } else {
+ v
+ }
} else {
- blockSwipe(member, v)
+ if !member.blockedByAdmin {
+ blockSwipe(member, v)
+ } else {
+ v
+ }
}
- // revert to this: vvv
-// if user {
-// v
-// } else if groupInfo.membership.memberRole >= .admin {
-// // TODO if there are more actions, refactor with lists of swipeActions
-// let canBlockForAll = member.canBlockForAll(groupInfo: groupInfo)
-// let canRemove = member.canBeRemoved(groupInfo: groupInfo)
-// if canBlockForAll && canRemove {
-// removeSwipe(member, blockForAllSwipe(member, v))
-// } else if canBlockForAll {
-// blockForAllSwipe(member, v)
-// } else if canRemove {
-// removeSwipe(member, v)
-// } else {
-// v
-// }
-// } else {
-// if !member.blockedByAdmin {
-// blockSwipe(member, v)
-// } else {
-// v
-// }
-// }
- // ^^^
}
@ViewBuilder private func memberInfo(_ member: GroupMember) -> some View {
diff --git a/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift b/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift
index d2b0f77393..999617dde7 100644
--- a/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift
+++ b/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift
@@ -168,24 +168,11 @@ struct GroupMemberInfoView: View {
}
}
- // revert from this:
- Section {
- if member.memberSettings.showMessages {
- blockMemberButton(member)
- } else {
- unblockMemberButton(member)
- }
- if member.canBeRemoved(groupInfo: groupInfo) {
- removeMemberButton(member)
- }
+ if groupInfo.membership.memberRole >= .admin {
+ adminDestructiveSection(member)
+ } else {
+ nonAdminBlockSection(member)
}
- // revert to this: vvv
-// if groupInfo.membership.memberRole >= .admin {
-// adminDestructiveSection(member)
-// } else {
-// nonAdminBlockSection(member)
-// }
- // ^^^
if developerTools {
Section("For console") {
diff --git a/apps/ios/Shared/Views/Chat/Group/GroupPreferencesView.swift b/apps/ios/Shared/Views/Chat/Group/GroupPreferencesView.swift
index d88bdfa4a4..7ab4bf4ece 100644
--- a/apps/ios/Shared/Views/Chat/Group/GroupPreferencesView.swift
+++ b/apps/ios/Shared/Views/Chat/Group/GroupPreferencesView.swift
@@ -48,7 +48,7 @@ struct GroupPreferencesView: View {
preferences.timedMessages.ttl = currentPreferences.timedMessages.ttl
}
}
- .modifier(BackButton {
+ .modifier(BackButton(disabled: Binding.constant(false)) {
if currentPreferences == preferences {
dismiss()
} else {
diff --git a/apps/ios/Shared/Views/Chat/Group/GroupWelcomeView.swift b/apps/ios/Shared/Views/Chat/Group/GroupWelcomeView.swift
index d6dbf06efc..00d4f8c37b 100644
--- a/apps/ios/Shared/Views/Chat/Group/GroupWelcomeView.swift
+++ b/apps/ios/Shared/Views/Chat/Group/GroupWelcomeView.swift
@@ -24,7 +24,7 @@ struct GroupWelcomeView: View {
VStack {
if groupInfo.canEdit {
editorView()
- .modifier(BackButton {
+ .modifier(BackButton(disabled: Binding.constant(false)) {
if welcomeTextUnchanged() {
dismiss()
} else {
diff --git a/apps/ios/Shared/Views/ChatList/ChatListView.swift b/apps/ios/Shared/Views/ChatList/ChatListView.swift
index 22807f6182..38aabdc21d 100644
--- a/apps/ios/Shared/Views/ChatList/ChatListView.swift
+++ b/apps/ios/Shared/Views/ChatList/ChatListView.swift
@@ -264,7 +264,9 @@ struct ChatListView: View {
}
func filtered(_ chat: Chat) -> Bool {
- (chat.chatInfo.chatSettings?.favorite ?? false) || chat.chatStats.unreadCount > 0 || chat.chatStats.unreadChat
+ (chat.chatInfo.chatSettings?.favorite ?? false) ||
+ chat.chatStats.unreadChat ||
+ (chat.chatInfo.ntfsEnabled && chat.chatStats.unreadCount > 0)
}
func viewNameContains(_ cInfo: ChatInfo, _ s: String) -> Bool {
diff --git a/apps/ios/Shared/Views/Database/DatabaseEncryptionView.swift b/apps/ios/Shared/Views/Database/DatabaseEncryptionView.swift
index 90cd17fbb3..4031c3e00a 100644
--- a/apps/ios/Shared/Views/Database/DatabaseEncryptionView.swift
+++ b/apps/ios/Shared/Views/Database/DatabaseEncryptionView.swift
@@ -36,6 +36,7 @@ enum DatabaseEncryptionAlert: Identifiable {
struct DatabaseEncryptionView: View {
@EnvironmentObject private var m: ChatModel
@Binding var useKeychain: Bool
+ var migration: Bool
@State private var alert: DatabaseEncryptionAlert? = nil
@State private var progressIndicator = false
@State private var useKeychainToggle = storeDBPassphraseGroupDefault.get()
@@ -48,7 +49,12 @@ struct DatabaseEncryptionView: View {
var body: some View {
ZStack {
- databaseEncryptionView()
+ List {
+ if migration {
+ chatStoppedView()
+ }
+ databaseEncryptionView()
+ }
if progressIndicator {
ProgressView().scaleEffect(2)
}
@@ -56,72 +62,71 @@ struct DatabaseEncryptionView: View {
}
private func databaseEncryptionView() -> some View {
- List {
- Section {
- settingsRow(storedKey ? "key.fill" : "key", color: storedKey ? .green : .secondary) {
- Toggle("Save passphrase in Keychain", isOn: $useKeychainToggle)
+ Section {
+ settingsRow(storedKey ? "key.fill" : "key", color: storedKey ? .green : .secondary) {
+ Toggle("Save passphrase in Keychain", isOn: $useKeychainToggle)
.onChange(of: useKeychainToggle) { _ in
if useKeychainToggle {
setUseKeychain(true)
- } else if storedKey {
+ } else if storedKey && !migration {
+ // Don't show in migration process since it will remove the key after successfull encryption
alert = .keychainRemoveKey
} else {
setUseKeychain(false)
}
}
- .disabled(initialRandomDBPassphrase)
- }
+ .disabled(initialRandomDBPassphrase && !migration)
+ }
- if !initialRandomDBPassphrase && m.chatDbEncrypted == true {
- PassphraseField(key: $currentKey, placeholder: "Current passphrase…", valid: validKey(currentKey))
- }
+ if !initialRandomDBPassphrase && m.chatDbEncrypted == true {
+ PassphraseField(key: $currentKey, placeholder: "Current passphrase…", valid: validKey(currentKey))
+ }
- PassphraseField(key: $newKey, placeholder: "New passphrase…", valid: validKey(newKey), showStrength: true)
- PassphraseField(key: $confirmNewKey, placeholder: "Confirm new passphrase…", valid: confirmNewKey == "" || newKey == confirmNewKey)
+ PassphraseField(key: $newKey, placeholder: "New passphrase…", valid: validKey(newKey), showStrength: true)
+ PassphraseField(key: $confirmNewKey, placeholder: "Confirm new passphrase…", valid: confirmNewKey == "" || newKey == confirmNewKey)
- settingsRow("lock.rotation") {
- Button("Update database passphrase") {
- alert = currentKey == ""
- ? (useKeychain ? .encryptDatabaseSaved : .encryptDatabase)
- : (useKeychain ? .changeDatabaseKeySaved : .changeDatabaseKey)
- }
+ settingsRow("lock.rotation") {
+ Button(migration ? "Set passphrase" : "Update database passphrase") {
+ alert = currentKey == ""
+ ? (useKeychain ? .encryptDatabaseSaved : .encryptDatabase)
+ : (useKeychain ? .changeDatabaseKeySaved : .changeDatabaseKey)
}
- .disabled(
- (m.chatDbEncrypted == true && currentKey == "") ||
- currentKey == newKey ||
- newKey != confirmNewKey ||
- newKey == "" ||
- !validKey(currentKey) ||
- !validKey(newKey)
- )
- } header: {
- Text("")
- } footer: {
- VStack(alignment: .leading, spacing: 16) {
- if m.chatDbEncrypted == false {
- Text("Your chat database is not encrypted - set passphrase to encrypt it.")
- } else if useKeychain {
- if storedKey {
- Text("iOS Keychain is used to securely store passphrase - it allows receiving push notifications.")
- if initialRandomDBPassphrase {
- Text("Database is encrypted using a random passphrase, you can change it.")
- } else {
- Text("**Please note**: you will NOT be able to recover or change passphrase if you lose it.")
- }
+ }
+ .disabled(
+ (m.chatDbEncrypted == true && currentKey == "") ||
+ currentKey == newKey ||
+ newKey != confirmNewKey ||
+ newKey == "" ||
+ !validKey(currentKey) ||
+ !validKey(newKey)
+ )
+ } header: {
+ Text(migration ? "Database passphrase" : "")
+ } footer: {
+ VStack(alignment: .leading, spacing: 16) {
+ if m.chatDbEncrypted == false {
+ Text("Your chat database is not encrypted - set passphrase to encrypt it.")
+ } else if useKeychain {
+ if storedKey {
+ Text("iOS Keychain is used to securely store passphrase - it allows receiving push notifications.")
+ if initialRandomDBPassphrase && !migration {
+ Text("Database is encrypted using a random passphrase, you can change it.")
} else {
- Text("iOS Keychain will be used to securely store passphrase after you restart the app or change passphrase - it will allow receiving push notifications.")
+ Text("**Please note**: you will NOT be able to recover or change passphrase if you lose it.")
}
} else {
- Text("You have to enter passphrase every time the app starts - it is not stored on the device.")
- Text("**Please note**: you will NOT be able to recover or change passphrase if you lose it.")
- if m.notificationMode == .instant && m.notificationPreview != .hidden {
- Text("**Warning**: Instant push notifications require passphrase saved in Keychain.")
- }
+ Text("iOS Keychain will be used to securely store passphrase after you restart the app or change passphrase - it will allow receiving push notifications.")
+ }
+ } else {
+ Text("You have to enter passphrase every time the app starts - it is not stored on the device.")
+ Text("**Please note**: you will NOT be able to recover or change passphrase if you lose it.")
+ if m.notificationMode == .instant && m.notificationPreview != .hidden && !migration {
+ Text("**Warning**: Instant push notifications require passphrase saved in Keychain.")
}
}
- .padding(.top, 1)
- .font(.callout)
}
+ .padding(.top, 1)
+ .font(.callout)
}
.onAppear {
if initialRandomDBPassphrase { currentKey = kcDatabasePassword.get() ?? "" }
@@ -136,9 +141,15 @@ struct DatabaseEncryptionView: View {
do {
encryptionStartedDefault.set(true)
encryptionStartedAtDefault.set(Date.now)
+ if !m.chatDbChanged {
+ try apiSaveAppSettings(settings: AppSettings.current.prepareForExport())
+ }
try await apiStorageEncryption(currentKey: currentKey, newKey: newKey)
encryptionStartedDefault.set(false)
initialRandomDBPassphraseGroupDefault.set(false)
+ if migration {
+ storeDBPassphraseGroupDefault.set(useKeychain)
+ }
if useKeychain {
if kcDatabasePassword.set(newKey) {
await resetFormAfterEncryption(true)
@@ -148,6 +159,9 @@ struct DatabaseEncryptionView: View {
await operationEnded(.error(title: "Keychain error", error: "Error saving passphrase to keychain"))
}
} else {
+ if migration {
+ removePassphraseFromKeyChain()
+ }
await resetFormAfterEncryption()
await operationEnded(.databaseEncrypted)
}
@@ -174,7 +188,10 @@ struct DatabaseEncryptionView: View {
private func setUseKeychain(_ value: Bool) {
useKeychain = value
- storeDBPassphraseGroupDefault.set(value)
+ // Postpone it when migrating to the end of encryption process
+ if !migration {
+ storeDBPassphraseGroupDefault.set(value)
+ }
}
private func databaseEncryptionAlert(_ alertItem: DatabaseEncryptionAlert) -> Alert {
@@ -184,13 +201,7 @@ struct DatabaseEncryptionView: View {
title: Text("Remove passphrase from keychain?"),
message: Text("Instant push notifications will be hidden!\n") + storeSecurelyDanger(),
primaryButton: .destructive(Text("Remove")) {
- if kcDatabasePassword.remove() {
- logger.debug("passphrase removed from keychain")
- setUseKeychain(false)
- storedKey = false
- } else {
- alert = .error(title: "Keychain error", error: "Failed to remove passphrase")
- }
+ removePassphraseFromKeyChain()
},
secondaryButton: .cancel() {
withAnimation { useKeychainToggle = true }
@@ -236,6 +247,16 @@ struct DatabaseEncryptionView: View {
}
}
+ private func removePassphraseFromKeyChain() {
+ if kcDatabasePassword.remove() {
+ logger.debug("passphrase removed from keychain")
+ setUseKeychain(false)
+ storedKey = false
+ } else {
+ alert = .error(title: "Keychain error", error: "Failed to remove passphrase")
+ }
+ }
+
private func storeSecurelySaved() -> Text {
Text("Please store passphrase securely, you will NOT be able to change it if you lose it.")
}
@@ -346,6 +367,6 @@ func validKey(_ s: String) -> Bool {
struct DatabaseEncryptionView_Previews: PreviewProvider {
static var previews: some View {
- DatabaseEncryptionView(useKeychain: Binding.constant(true))
+ DatabaseEncryptionView(useKeychain: Binding.constant(true), migration: false)
}
}
diff --git a/apps/ios/Shared/Views/Database/DatabaseErrorView.swift b/apps/ios/Shared/Views/Database/DatabaseErrorView.swift
index 52ded44782..f8d282a6d1 100644
--- a/apps/ios/Shared/Views/Database/DatabaseErrorView.swift
+++ b/apps/ios/Shared/Views/Database/DatabaseErrorView.swift
@@ -64,7 +64,7 @@ struct DatabaseErrorView: View {
case let .migrationError(mtrError):
titleText("Incompatible database version")
fileNameText(dbFile)
- Text("Error: ") + Text(mtrErrorDescription(mtrError))
+ Text("Error: ") + Text(DatabaseErrorView.mtrErrorDescription(mtrError))
}
case let .errorSQL(dbFile, migrationSQLError):
titleText("Database error")
@@ -105,7 +105,7 @@ struct DatabaseErrorView: View {
Text("Migrations: \(ms.joined(separator: ", "))")
}
- private func mtrErrorDescription(_ err: MTRError) -> LocalizedStringKey {
+ static func mtrErrorDescription(_ err: MTRError) -> LocalizedStringKey {
switch err {
case let .noDown(dbMigrations):
return "database version is newer than the app, but no down migration for: \(dbMigrations.joined(separator: ", "))"
diff --git a/apps/ios/Shared/Views/Database/DatabaseView.swift b/apps/ios/Shared/Views/Database/DatabaseView.swift
index 31b1f618e3..2e0cd7738f 100644
--- a/apps/ios/Shared/Views/Database/DatabaseView.swift
+++ b/apps/ios/Shared/Views/Database/DatabaseView.swift
@@ -116,7 +116,7 @@ struct DatabaseView: View {
let color: Color = unencrypted ? .orange : .secondary
settingsRow(unencrypted ? "lock.open" : useKeychain ? "key" : "lock", color: color) {
NavigationLink {
- DatabaseEncryptionView(useKeychain: $useKeychain)
+ DatabaseEncryptionView(useKeychain: $useKeychain, migration: false)
.navigationTitle("Database passphrase")
} label: {
Text("Database passphrase")
@@ -485,6 +485,10 @@ func deleteChatAsync() async throws {
_ = kcDatabasePassword.remove()
storeDBPassphraseGroupDefault.set(true)
deleteAppDatabaseAndFiles()
+ // Clean state so when creating new user the app will start chat automatically (see CreateProfile:createProfile())
+ DispatchQueue.main.async {
+ ChatModel.shared.users = []
+ }
}
struct DatabaseView_Previews: PreviewProvider {
diff --git a/apps/ios/Shared/Views/Database/MigrateToAppGroupView.swift b/apps/ios/Shared/Views/Database/MigrateToAppGroupView.swift
index 046929a9d0..ae6af24f53 100644
--- a/apps/ios/Shared/Views/Database/MigrateToAppGroupView.swift
+++ b/apps/ios/Shared/Views/Database/MigrateToAppGroupView.swift
@@ -188,6 +188,7 @@ struct MigrateToAppGroupView: View {
let config = ArchiveConfig(archivePath: getDocumentsDirectory().appendingPathComponent(archiveName).path)
Task {
do {
+ try apiSaveAppSettings(settings: AppSettings.current.prepareForExport())
try await apiExportArchive(config: config)
await MainActor.run { setV3DBMigration(.exported) }
} catch let error {
@@ -204,7 +205,11 @@ struct MigrateToAppGroupView: View {
resetChatCtrl()
try await MainActor.run { try initializeChat(start: false) }
let _ = try await apiImportArchive(config: config)
- await MainActor.run { setV3DBMigration(.migrated) }
+ let appSettings = try apiGetAppSettings(settings: AppSettings.current.prepareForExport())
+ await MainActor.run {
+ appSettings.importIntoApp()
+ setV3DBMigration(.migrated)
+ }
} catch let error {
dbContainerGroupDefault.set(.documents)
await MainActor.run {
@@ -216,16 +221,22 @@ struct MigrateToAppGroupView: View {
}
}
-func exportChatArchive() async throws -> URL {
+func exportChatArchive(_ storagePath: URL? = nil) async throws -> URL {
let archiveTime = Date.now
let ts = archiveTime.ISO8601Format(Date.ISO8601FormatStyle(timeSeparator: .omitted))
let archiveName = "simplex-chat.\(ts).zip"
- let archivePath = getDocumentsDirectory().appendingPathComponent(archiveName)
+ let archivePath = (storagePath ?? getDocumentsDirectory()).appendingPathComponent(archiveName)
let config = ArchiveConfig(archivePath: archivePath.path)
+ // Settings should be saved before changing a passphrase, otherwise the database needs to be migrated first
+ if !ChatModel.shared.chatDbChanged {
+ try apiSaveAppSettings(settings: AppSettings.current.prepareForExport())
+ }
try await apiExportArchive(config: config)
- deleteOldArchive()
- UserDefaults.standard.set(archiveName, forKey: DEFAULT_CHAT_ARCHIVE_NAME)
- chatArchiveTimeDefault.set(archiveTime)
+ if storagePath == nil {
+ deleteOldArchive()
+ UserDefaults.standard.set(archiveName, forKey: DEFAULT_CHAT_ARCHIVE_NAME)
+ chatArchiveTimeDefault.set(archiveTime)
+ }
return archivePath
}
diff --git a/apps/ios/Shared/Views/Helpers/ContextMenu.swift b/apps/ios/Shared/Views/Helpers/ContextMenu.swift
index 287aba5262..3b82d6eb95 100644
--- a/apps/ios/Shared/Views/Helpers/ContextMenu.swift
+++ b/apps/ios/Shared/Views/Helpers/ContextMenu.swift
@@ -11,26 +11,31 @@ import UIKit
import SwiftUI
extension View {
- func uiKitContextMenu(menu: Binding, allowMenu: Binding) -> some View {
- self.overlay {
- if allowMenu.wrappedValue {
- self.overlay(Color(uiColor: .systemBackground)).overlay(InteractionView(content: self, menu: menu))
- }
+ func uiKitContextMenu(maxWidth: CGFloat, menu: Binding, allowMenu: Binding) -> some View {
+ Group {
+ if allowMenu.wrappedValue {
+ InteractionView(content: self, maxWidth: maxWidth, menu: menu)
+ .fixedSize(horizontal: true, vertical: false)
+ } else {
+ self
}
+ }
}
}
-private struct InteractionConfig {
- let content: Content
- let menu: UIMenu
+private class HostingViewHolder: UIView {
+ var contentSize: CGSize = CGSizeMake(0, 0)
+ override var intrinsicContentSize: CGSize { get { contentSize } }
}
-private struct InteractionView: UIViewRepresentable {
+struct InteractionView: UIViewRepresentable {
let content: Content
+ var maxWidth: CGFloat
@Binding var menu: UIMenu
func makeUIView(context: Context) -> UIView {
- let view = UIView()
+ let view = HostingViewHolder()
+ view.contentSize = CGSizeMake(maxWidth, .infinity)
view.backgroundColor = .clear
let hostView = UIHostingController(rootView: content)
hostView.view.translatesAutoresizingMaskIntoConstraints = false
@@ -44,12 +49,16 @@ private struct InteractionView: UIViewRepresentable {
]
view.addSubview(hostView.view)
view.addConstraints(constraints)
+ view.layer.cornerRadius = 18
+ hostView.view.layer.cornerRadius = 18
let menuInteraction = UIContextMenuInteraction(delegate: context.coordinator)
view.addInteraction(menuInteraction)
return view
}
- func updateUIView(_ uiView: UIView, context: Context) {}
+ func updateUIView(_ uiView: UIView, context: Context) {
+ (uiView as! HostingViewHolder).contentSize = uiView.subviews[0].sizeThatFits(CGSizeMake(maxWidth, .infinity))
+ }
func makeCoordinator() -> Coordinator {
Coordinator(self)
diff --git a/apps/ios/Shared/Views/Migration/MigrateFromDevice.swift b/apps/ios/Shared/Views/Migration/MigrateFromDevice.swift
new file mode 100644
index 0000000000..645de4c3f8
--- /dev/null
+++ b/apps/ios/Shared/Views/Migration/MigrateFromDevice.swift
@@ -0,0 +1,734 @@
+//
+// MigrateFromDevice.swift
+// SimpleX (iOS)
+//
+// Created by Avently on 14.02.2024.
+// Copyright © 2024 SimpleX Chat. All rights reserved.
+//
+
+import SwiftUI
+import SimpleXChat
+
+private enum MigrationFromState: Equatable {
+ case chatStopInProgress
+ case chatStopFailed(reason: String)
+ case passphraseNotSet
+ case passphraseConfirmation
+ case uploadConfirmation
+ case archiving
+ case uploadProgress(uploadedBytes: Int64, totalBytes: Int64, fileId: Int64, archivePath: URL, ctrl: chat_ctrl?)
+ case uploadFailed(totalBytes: Int64, archivePath: URL)
+ case linkCreation
+ case linkShown(fileId: Int64, link: String, archivePath: URL, ctrl: chat_ctrl)
+ case finished(chatDeletion: Bool)
+}
+
+private enum MigrateFromDeviceViewAlert: Identifiable {
+ case deleteChat(_ title: LocalizedStringKey = "Delete chat profile?", _ text: LocalizedStringKey = "This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost.")
+ case startChat(_ title: LocalizedStringKey = "Start chat?", _ text: LocalizedStringKey = "Warning: starting chat on multiple devices is not supported and will cause message delivery failures")
+
+ case wrongPassphrase(title: LocalizedStringKey = "Wrong passphrase!", message: LocalizedStringKey = "Enter correct passphrase.")
+ case invalidConfirmation(title: LocalizedStringKey = "Invalid migration confirmation")
+ case keychainError(_ title: LocalizedStringKey = "Keychain error")
+ case databaseError(_ title: LocalizedStringKey = "Database error", message: String)
+ case unknownError(_ title: LocalizedStringKey = "Unknown error", message: String)
+
+ case error(title: LocalizedStringKey, error: String = "")
+
+ var id: String {
+ switch self {
+ case let .deleteChat(title, text): return "\(title) \(text)"
+ case let .startChat(title, text): return "\(title) \(text)"
+
+ case .wrongPassphrase: return "wrongPassphrase"
+ case .invalidConfirmation: return "invalidConfirmation"
+ case .keychainError: return "keychainError"
+ case let .databaseError(title, message): return "\(title) \(message)"
+ case let .unknownError(title, message): return "\(title) \(message)"
+
+ case let .error(title, _): return "error \(title)"
+ }
+ }
+}
+
+struct MigrateFromDevice: View {
+ @EnvironmentObject var m: ChatModel
+ @Environment(\.dismiss) var dismiss: DismissAction
+ @Binding var showSettings: Bool
+ @Binding var showProgressOnSettings: Bool
+ @State private var migrationState: MigrationFromState = .chatStopInProgress
+ @State private var useKeychain = storeDBPassphraseGroupDefault.get()
+ @AppStorage(GROUP_DEFAULT_INITIAL_RANDOM_DB_PASSPHRASE, store: groupDefaults) private var initialRandomDBPassphrase: Bool = false
+ @State private var alert: MigrateFromDeviceViewAlert?
+ @State private var authorized = !UserDefaults.standard.bool(forKey: DEFAULT_PERFORM_LA)
+ private let tempDatabaseUrl = urlForTemporaryDatabase()
+ @State private var chatReceiver: MigrationChatReceiver? = nil
+ @State private var backDisabled: Bool = false
+
+ var body: some View {
+ if authorized {
+ migrateView()
+ } else {
+ Button(action: runAuth) { Label("Unlock", systemImage: "lock") }
+ .onAppear(perform: runAuth)
+ }
+ }
+
+ private func runAuth() { authorize(NSLocalizedString("Open migration to another device", comment: "authentication reason"), $authorized) }
+
+ func migrateView() -> some View {
+ VStack {
+ switch migrationState {
+ case .chatStopInProgress:
+ chatStopInProgressView()
+ case let .chatStopFailed(reason):
+ chatStopFailedView(reason)
+ case .passphraseNotSet:
+ passphraseNotSetView()
+ case .passphraseConfirmation:
+ PassphraseConfirmationView(migrationState: $migrationState, alert: $alert)
+ case .uploadConfirmation:
+ uploadConfirmationView()
+ case .archiving:
+ archivingView()
+ case let .uploadProgress(uploaded, total, _, archivePath, _):
+ uploadProgressView(uploaded, totalBytes: total, archivePath)
+ case let .uploadFailed(total, archivePath):
+ uploadFailedView(totalBytes: total, archivePath)
+ case .linkCreation:
+ linkCreationView()
+ case let .linkShown(fileId, link, archivePath, ctrl):
+ linkShownView(fileId, link, archivePath, ctrl)
+ case let .finished(chatDeletion):
+ finishedView(chatDeletion)
+ }
+ }
+ .modifier(BackButton(label: "Back", disabled: $backDisabled) {
+ dismiss()
+ })
+ .onChange(of: migrationState) { state in
+ backDisabled = switch migrationState {
+ case .chatStopInProgress, .archiving, .linkShown, .finished: true
+ case .chatStopFailed, .passphraseNotSet, .passphraseConfirmation, .uploadConfirmation, .uploadProgress, .uploadFailed, .linkCreation: false
+ }
+ }
+ .onAppear {
+ stopChat()
+ }
+ .onDisappear {
+ Task {
+ if !backDisabled {
+ await MainActor.run {
+ showProgressOnSettings = true
+ }
+ await startChatAndDismiss(false)
+ await MainActor.run {
+ showProgressOnSettings = false
+ }
+ }
+ if case let .uploadProgress(_, _, fileId, _, ctrl) = migrationState, let ctrl {
+ await cancelUploadedArchive(fileId, ctrl)
+ }
+ chatReceiver?.stopAndCleanUp()
+ try? FileManager.default.removeItem(at: getMigrationTempFilesDirectory())
+ }
+ }
+ .alert(item: $alert) { alert in
+ switch alert {
+ case let .startChat(title, text):
+ return Alert(
+ title: Text(title),
+ message: Text(text),
+ primaryButton: .destructive(Text("Start chat")) {
+ Task {
+ await startChatAndDismiss()
+ }
+ },
+ secondaryButton: .cancel()
+ )
+ case let .deleteChat(title, text):
+ return Alert(
+ title: Text(title),
+ message: Text(text),
+ primaryButton: .default(Text("Delete")) {
+ deleteChatAndDismiss()
+ },
+ secondaryButton: .cancel()
+ )
+ case let .wrongPassphrase(title, message):
+ return Alert(title: Text(title), message: Text(message))
+ case let .invalidConfirmation(title):
+ return Alert(title: Text(title))
+ case let .keychainError(title):
+ return Alert(title: Text(title))
+ case let .databaseError(title, message):
+ return Alert(title: Text(title), message: Text(message))
+ case let .unknownError(title, message):
+ return Alert(title: Text(title), message: Text(message))
+ case let .error(title, error):
+ return Alert(title: Text(title), message: Text(error))
+ }
+ }
+ .interactiveDismissDisabled(backDisabled)
+ }
+
+ private func chatStopInProgressView() -> some View {
+ ZStack {
+ List {
+ Section {} header: {
+ Text("Stopping chat")
+ }
+ }
+ progressView()
+ }
+ }
+
+ private func chatStopFailedView(_ reason: String) -> some View {
+ List {
+ Section {
+ Text(reason)
+ Button(action: stopChat) {
+ settingsRow("stop.fill") {
+ Text("Stop chat").foregroundColor(.red)
+ }
+ }
+ } header: {
+ Text("Error stopping chat")
+ } footer: {
+ Text("In order to continue, chat should be stopped.")
+ .font(.callout)
+ }
+ }
+ }
+
+ private func passphraseNotSetView() -> some View {
+ DatabaseEncryptionView(useKeychain: $useKeychain, migration: true)
+ .onChange(of: initialRandomDBPassphrase) { initial in
+ if !initial {
+ migrationState = .uploadConfirmation
+ }
+ }
+ }
+
+ private func uploadConfirmationView() -> some View {
+ List {
+ Section {
+ Button(action: { migrationState = .archiving }) {
+ settingsRow("tray.and.arrow.up") {
+ Text("Archive and upload").foregroundColor(.accentColor)
+ }
+ }
+ } header: {
+ Text("Confirm upload")
+ } footer: {
+ Text("All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.")
+ .font(.callout)
+ }
+ }
+ }
+
+ private func archivingView() -> some View {
+ ZStack {
+ List {
+ Section {} header: {
+ Text("Archiving database")
+ }
+ }
+ progressView()
+ }
+ .onAppear {
+ exportArchive()
+ }
+ }
+
+ private func uploadProgressView(_ uploadedBytes: Int64, totalBytes: Int64, _ archivePath: URL) -> some View {
+ ZStack {
+ List {
+ Section {} header: {
+ Text("Uploading archive")
+ }
+ }
+ let ratio = Float(uploadedBytes) / Float(totalBytes)
+ MigrateFromDevice.largeProgressView(ratio, "\(Int(ratio * 100))%", "\(ByteCountFormatter.string(fromByteCount: uploadedBytes, countStyle: .binary)) uploaded")
+ }
+ .onAppear {
+ startUploading(totalBytes, archivePath)
+ }
+ }
+
+ private func uploadFailedView(totalBytes: Int64, _ archivePath: URL) -> some View {
+ List {
+ Section {
+ Button(action: {
+ migrationState = .uploadProgress(uploadedBytes: 0, totalBytes: totalBytes, fileId: 0, archivePath: archivePath, ctrl: nil)
+ }) {
+ settingsRow("tray.and.arrow.up") {
+ Text("Repeat upload").foregroundColor(.accentColor)
+ }
+ }
+ } header: {
+ Text("Upload failed")
+ } footer: {
+ Text("You can give another try.")
+ .font(.callout)
+ }
+ }
+ .onAppear {
+ chatReceiver?.stopAndCleanUp()
+ }
+ }
+
+ private func linkCreationView() -> some View {
+ ZStack {
+ List {
+ Section {} header: {
+ Text("Creating archive link")
+ }
+ }
+ progressView()
+ }
+ }
+
+ private func linkShownView(_ fileId: Int64, _ link: String, _ archivePath: URL, _ ctrl: chat_ctrl) -> some View {
+ List {
+ Section {
+ Button(action: { cancelMigration(fileId, ctrl) }) {
+ settingsRow("multiply") {
+ Text("Cancel migration").foregroundColor(.red)
+ }
+ }
+ Button(action: { finishMigration(fileId, ctrl) }) {
+ settingsRow("checkmark") {
+ Text("Finalize migration").foregroundColor(.accentColor)
+ }
+ }
+ } footer: {
+ VStack(alignment: .leading, spacing: 16) {
+ Text("**Warning**: the archive will be removed.")
+ Text("Choose _Migrate from another device_ on the new device and scan QR code.")
+ }
+ .font(.callout)
+ }
+ Section("Show QR code") {
+ SimpleXLinkQRCode(uri: link)
+ .padding()
+ .background(
+ RoundedRectangle(cornerRadius: 12, style: .continuous)
+ .fill(Color(uiColor: .secondarySystemGroupedBackground))
+ )
+ .padding(.horizontal)
+ .listRowBackground(Color.clear)
+ .listRowSeparator(.hidden)
+ .listRowInsets(EdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 0))
+ }
+
+ Section("Or securely share this file link") {
+ shareLinkView(link)
+ }
+ .listRowInsets(EdgeInsets(top: 0, leading: 20, bottom: 0, trailing: 10))
+ }
+ }
+
+ private func finishedView(_ chatDeletion: Bool) -> some View {
+ ZStack {
+ List {
+ Section {
+ Button(action: { alert = .startChat() }) {
+ settingsRow("play.fill") {
+ Text("Start chat").foregroundColor(.red)
+ }
+ }
+ Button(action: { alert = .deleteChat() }) {
+ settingsRow("trash.fill") {
+ Text("Delete database from this device").foregroundColor(.accentColor)
+ }
+ }
+ } header: {
+ Text("Migration complete")
+ } footer: {
+ VStack(alignment: .leading, spacing: 16) {
+ Text("You **must not** use the same database on two devices.")
+ Text("**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.")
+ }
+ .font(.callout)
+ }
+ }
+ if chatDeletion {
+ progressView()
+ }
+ }
+ }
+
+ private func shareLinkView(_ link: String) -> some View {
+ HStack {
+ linkTextView(link)
+ Button {
+ showShareSheet(items: [link])
+ } label: {
+ Image(systemName: "square.and.arrow.up")
+ .padding(.top, -7)
+ }
+ }
+ .frame(maxWidth: .infinity)
+ }
+
+ private func linkTextView(_ link: String) -> some View {
+ Text(link)
+ .lineLimit(1)
+ .font(.caption)
+ .truncationMode(.middle)
+ }
+
+ static func largeProgressView(_ value: Float, _ title: String, _ description: LocalizedStringKey) -> some View {
+ ZStack {
+ VStack {
+ Text(description)
+ .font(.title3)
+ .hidden()
+
+ Text(title)
+ .font(.system(size: 54))
+ .bold()
+ .foregroundColor(.accentColor)
+
+ Text(description)
+ .font(.title3)
+ }
+
+ Circle()
+ .trim(from: 0, to: CGFloat(value))
+ .stroke(
+ Color.accentColor,
+ style: StrokeStyle(lineWidth: 27)
+ )
+ .rotationEffect(.degrees(180))
+ .animation(.linear, value: value)
+ .frame(maxWidth: .infinity)
+ .padding(.horizontal)
+ .padding(.horizontal)
+ }
+ .frame(maxWidth: .infinity)
+ }
+
+ private func stopChat() {
+ Task {
+ do {
+ try await stopChatAsync()
+ do {
+ try apiSaveAppSettings(settings: AppSettings.current.prepareForExport())
+ await MainActor.run {
+ migrationState = initialRandomDBPassphraseGroupDefault.get() ? .passphraseNotSet : .passphraseConfirmation
+ }
+ } catch let error {
+ alert = .error(title: "Error saving settings", error: error.localizedDescription)
+ migrationState = .chatStopFailed(reason: NSLocalizedString("Error saving settings", comment: "when migrating"))
+ }
+ } catch let e {
+ await MainActor.run {
+ migrationState = .chatStopFailed(reason: e.localizedDescription)
+ }
+ }
+ }
+ }
+
+ private func exportArchive() {
+ Task {
+ do {
+ try? FileManager.default.createDirectory(at: getMigrationTempFilesDirectory(), withIntermediateDirectories: true)
+ let archivePath = try await exportChatArchive(getMigrationTempFilesDirectory())
+ if let attrs = try? FileManager.default.attributesOfItem(atPath: archivePath.path),
+ let totalBytes = attrs[.size] as? Int64 {
+ await MainActor.run {
+ migrationState = .uploadProgress(uploadedBytes: 0, totalBytes: totalBytes, fileId: 0, archivePath: archivePath, ctrl: nil)
+ }
+ } else {
+ await MainActor.run {
+ alert = .error(title: "Exported file doesn't exist")
+ migrationState = .uploadConfirmation
+ }
+ }
+ } catch let error {
+ await MainActor.run {
+ alert = .error(title: "Error exporting chat database", error: responseError(error))
+ migrationState = .uploadConfirmation
+ }
+ }
+ }
+ }
+
+ private func initTemporaryDatabase() -> (chat_ctrl, User)? {
+ let (status, ctrl) = chatInitTemporaryDatabase(url: tempDatabaseUrl)
+ showErrorOnMigrationIfNeeded(status, $alert)
+ do {
+ if let ctrl, let user = try startChatWithTemporaryDatabase(ctrl: ctrl) {
+ return (ctrl, user)
+ }
+ } catch let error {
+ logger.error("Error while starting chat in temporary database: \(error.localizedDescription)")
+ }
+ return nil
+ }
+
+ private func startUploading(_ totalBytes: Int64, _ archivePath: URL) {
+ Task {
+ guard let ctrlAndUser = initTemporaryDatabase() else {
+ return migrationState = .uploadFailed(totalBytes: totalBytes, archivePath: archivePath)
+ }
+ let (ctrl, user) = ctrlAndUser
+ chatReceiver = MigrationChatReceiver(ctrl: ctrl, databaseUrl: tempDatabaseUrl) { msg in
+ await MainActor.run {
+ switch msg {
+ case let .sndFileProgressXFTP(_, _, fileTransferMeta, sentSize, totalSize):
+ if case let .uploadProgress(uploaded, total, _, _, _) = migrationState, uploaded != total {
+ migrationState = .uploadProgress(uploadedBytes: sentSize, totalBytes: totalSize, fileId: fileTransferMeta.fileId, archivePath: archivePath, ctrl: ctrl)
+ }
+ case .sndFileRedirectStartXFTP:
+ DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
+ migrationState = .linkCreation
+ }
+ case let .sndStandaloneFileComplete(_, fileTransferMeta, rcvURIs):
+ let cfg = getNetCfg()
+ let data = MigrationFileLinkData.init(
+ networkConfig: MigrationFileLinkData.NetworkConfig(
+ socksProxy: cfg.socksProxy,
+ hostMode: cfg.hostMode,
+ requiredHostMode: cfg.requiredHostMode
+ )
+ )
+ DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
+ migrationState = .linkShown(fileId: fileTransferMeta.fileId, link: data.addToLink(link: rcvURIs[0]), archivePath: archivePath, ctrl: ctrl)
+ }
+ case .sndFileError:
+ alert = .error(title: "Upload failed", error: "Check your internet connection and try again")
+ migrationState = .uploadFailed(totalBytes: totalBytes, archivePath: archivePath)
+ default:
+ logger.debug("unsupported event: \(msg.responseType)")
+ }
+ }
+ }
+ chatReceiver?.start()
+
+ let (res, error) = await uploadStandaloneFile(user: user, file: CryptoFile.plain(archivePath.lastPathComponent), ctrl: ctrl)
+ await MainActor.run {
+ guard let res = res else {
+ migrationState = .uploadFailed(totalBytes: totalBytes, archivePath: archivePath)
+ return alert = .error(title: "Error uploading the archive", error: error ?? "")
+ }
+ migrationState = .uploadProgress(uploadedBytes: 0, totalBytes: res.fileSize, fileId: res.fileId, archivePath: archivePath, ctrl: ctrl)
+ }
+ }
+ }
+
+ private func cancelUploadedArchive(_ fileId: Int64, _ ctrl: chat_ctrl) async {
+ _ = await apiCancelFile(fileId: fileId, ctrl: ctrl)
+ }
+
+ private func cancelMigration(_ fileId: Int64, _ ctrl: chat_ctrl) {
+ Task {
+ await cancelUploadedArchive(fileId, ctrl)
+ await startChatAndDismiss()
+ }
+ }
+
+ private func finishMigration(_ fileId: Int64, _ ctrl: chat_ctrl) {
+ Task {
+ await cancelUploadedArchive(fileId, ctrl)
+ await MainActor.run {
+ migrationState = .finished(chatDeletion: false)
+ }
+ }
+ }
+
+ private func deleteChatAndDismiss() {
+ Task {
+ do {
+ try await deleteChatAsync()
+ m.chatDbChanged = true
+ m.chatInitialized = false
+ migrationState = .finished(chatDeletion: true)
+ DispatchQueue.main.asyncAfter(deadline: .now()) {
+ resetChatCtrl()
+ do {
+ try initializeChat(start: false)
+ m.chatDbChanged = false
+ AppChatState.shared.set(.active)
+ } catch let error {
+ fatalError("Error starting chat \(responseError(error))")
+ }
+ showSettings = false
+ }
+ } catch let error {
+ alert = .error(title: "Error deleting database", error: responseError(error))
+ }
+ }
+ }
+
+ private func startChatAndDismiss(_ dismiss: Bool = true) async {
+ AppChatState.shared.set(.active)
+ do {
+ if m.chatDbChanged {
+ resetChatCtrl()
+ try initializeChat(start: true)
+ m.chatDbChanged = false
+ } else {
+ try startChat(refreshInvitations: true)
+ }
+ } catch let error {
+ alert = .error(title: "Error starting chat", error: responseError(error))
+ }
+ // Hide settings anyway if chatDbStatus is not ok, probably passphrase needs to be entered
+ if dismiss || m.chatDbStatus != .ok {
+ await MainActor.run {
+ showSettings = false
+ }
+ }
+ }
+
+ private static func urlForTemporaryDatabase() -> URL {
+ URL(fileURLWithPath: generateNewFileName(getMigrationTempFilesDirectory().path + "/" + "migration", "db", fullPath: true))
+ }
+}
+
+private struct PassphraseConfirmationView: View {
+ @Binding var migrationState: MigrationFromState
+ @State private var useKeychain = storeDBPassphraseGroupDefault.get()
+ @State private var currentKey: String = ""
+ @State private var verifyingPassphrase: Bool = false
+ @FocusState private var keyboardVisible: Bool
+ @Binding var alert: MigrateFromDeviceViewAlert?
+
+ var body: some View {
+ ZStack {
+ List {
+ chatStoppedView()
+ Section {
+ PassphraseField(key: $currentKey, placeholder: "Current passphrase…", valid: validKey(currentKey))
+ .focused($keyboardVisible)
+ Button(action: {
+ verifyingPassphrase = true
+ hideKeyboard()
+ Task {
+ await verifyDatabasePassphrase(currentKey)
+ verifyingPassphrase = false
+ }
+ }) {
+ settingsRow(useKeychain ? "key" : "lock", color: .secondary) {
+ Text("Verify passphrase")
+ }
+ }
+ .disabled(verifyingPassphrase || currentKey.isEmpty)
+ } header: {
+ Text("Verify database passphrase")
+ } footer: {
+ Text("Confirm that you remember database passphrase to migrate it.")
+ .font(.callout)
+ }
+ .onAppear {
+ DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
+ keyboardVisible = true
+ }
+ }
+ }
+ if verifyingPassphrase {
+ progressView()
+ }
+ }
+ }
+
+ private func verifyDatabasePassphrase(_ dbKey: String) async {
+ do {
+ try await testStorageEncryption(key: dbKey)
+ await MainActor.run {
+ migrationState = .uploadConfirmation
+ }
+ } catch let error {
+ if case .chatCmdError(_, .errorDatabase(.errorOpen(.errorNotADatabase))) = error as? ChatResponse {
+ showErrorOnMigrationIfNeeded(.errorNotADatabase(dbFile: ""), $alert)
+ } else {
+ alert = .error(title: "Error", error: NSLocalizedString("Error verifying passphrase:", comment: "") + " " + String(String(describing: error)))
+ }
+ }
+ }
+}
+
+private func showErrorOnMigrationIfNeeded(_ status: DBMigrationResult, _ alert: Binding) {
+ switch status {
+ case .invalidConfirmation:
+ alert.wrappedValue = .invalidConfirmation()
+ case .errorNotADatabase:
+ alert.wrappedValue = .wrongPassphrase()
+ case .errorKeychain:
+ alert.wrappedValue = .keychainError()
+ case let .errorSQL(_, error):
+ alert.wrappedValue = .databaseError(message: error)
+ case let .unknown(error):
+ alert.wrappedValue = .unknownError(message: error)
+ case .errorMigration: ()
+ case .ok: ()
+ }
+}
+
+private func progressView() -> some View {
+ VStack {
+ ProgressView().scaleEffect(2)
+ }
+ .frame(maxWidth: .infinity, maxHeight: .infinity )
+}
+
+func chatStoppedView() -> some View {
+ settingsRow("exclamationmark.octagon.fill", color: .red) {
+ Text("Chat is stopped")
+ }
+}
+
+private class MigrationChatReceiver {
+ let ctrl: chat_ctrl
+ let databaseUrl: URL
+ let processReceivedMsg: (ChatResponse) async -> Void
+ private var receiveLoop: Task?
+ private var receiveMessages = true
+
+ init(ctrl: chat_ctrl, databaseUrl: URL, _ processReceivedMsg: @escaping (ChatResponse) async -> Void) {
+ self.ctrl = ctrl
+ self.databaseUrl = databaseUrl
+ self.processReceivedMsg = processReceivedMsg
+ }
+
+ func start() {
+ logger.debug("MigrationChatReceiver.start")
+ receiveMessages = true
+ if receiveLoop != nil { return }
+ receiveLoop = Task { await receiveMsgLoop() }
+ }
+
+ func receiveMsgLoop() async {
+ // TODO use function that has timeout
+ if let msg = await chatRecvMsg(ctrl) {
+ Task {
+ await TerminalItems.shared.add(.resp(.now, msg))
+ }
+ logger.debug("processReceivedMsg: \(msg.responseType)")
+ await processReceivedMsg(msg)
+ }
+ if self.receiveMessages {
+ _ = try? await Task.sleep(nanoseconds: 7_500_000)
+ await receiveMsgLoop()
+ }
+ }
+
+ func stopAndCleanUp() {
+ logger.debug("MigrationChatReceiver.stop")
+ receiveMessages = false
+ receiveLoop?.cancel()
+ receiveLoop = nil
+ chat_close_store(ctrl)
+ try? FileManager.default.removeItem(atPath: "\(databaseUrl.path)_chat.db")
+ try? FileManager.default.removeItem(atPath: "\(databaseUrl.path)_agent.db")
+ }
+}
+
+struct MigrateFromDevice_Previews: PreviewProvider {
+ static var previews: some View {
+ MigrateFromDevice(showSettings: Binding.constant(true), showProgressOnSettings: Binding.constant(false))
+ }
+}
diff --git a/apps/ios/Shared/Views/Migration/MigrateToDevice.swift b/apps/ios/Shared/Views/Migration/MigrateToDevice.swift
new file mode 100644
index 0000000000..9afd0dd406
--- /dev/null
+++ b/apps/ios/Shared/Views/Migration/MigrateToDevice.swift
@@ -0,0 +1,714 @@
+//
+// MigrateToDevice.swift
+// SimpleX (iOS)
+//
+// Created by Avently on 23.02.2024.
+// Copyright © 2024 SimpleX Chat. All rights reserved.
+//
+
+import SwiftUI
+import SimpleXChat
+
+enum MigrationToDeviceState: Codable, Equatable {
+ case downloadProgress(link: String, archiveName: String)
+ case archiveImport(archiveName: String)
+ case passphrase
+
+ // Here we check whether it's needed to show migration process after app restart or not
+ // It's important to NOT show the process when archive was corrupted/not fully downloaded
+ static func makeMigrationState() -> MigrationToState? {
+ let state: MigrationToDeviceState? = UserDefaults.standard.string(forKey: DEFAULT_MIGRATION_TO_STAGE) != nil ? decodeJSON(UserDefaults.standard.string(forKey: DEFAULT_MIGRATION_TO_STAGE)!) : nil
+ var initial: MigrationToState? = .pasteOrScanLink
+ //logger.debug("Inited with migrationState: \(String(describing: state))")
+ switch state {
+ case nil:
+ initial = nil
+ case .downloadProgress:
+ // No migration happens at the moment actually since archive were not downloaded fully
+ logger.debug("MigrateToDevice: archive wasn't fully downloaded, removed broken file")
+ initial = nil
+ case let .archiveImport(archiveName):
+ let archivePath = getMigrationTempFilesDirectory().path + "/" + archiveName
+ initial = .archiveImportFailed(archivePath: archivePath)
+ case .passphrase:
+ initial = .passphrase(passphrase: "")
+ }
+ if initial == nil {
+ UserDefaults.standard.removeObject(forKey: DEFAULT_MIGRATION_TO_STAGE)
+ try? FileManager.default.removeItem(at: getMigrationTempFilesDirectory())
+ }
+ return initial
+ }
+
+ static func save(_ state: MigrationToDeviceState?) {
+ if let state {
+ UserDefaults.standard.setValue(encodeJSON(state), forKey: DEFAULT_MIGRATION_TO_STAGE)
+ } else {
+ UserDefaults.standard.removeObject(forKey: DEFAULT_MIGRATION_TO_STAGE)
+ }
+ }
+}
+
+enum MigrationToState: Equatable {
+ case pasteOrScanLink
+ case linkDownloading(link: String)
+ case downloadProgress(downloadedBytes: Int64, totalBytes: Int64, fileId: Int64, link: String, archivePath: String, ctrl: chat_ctrl?)
+ case downloadFailed(totalBytes: Int64, link: String, archivePath: String)
+ case archiveImport(archivePath: String)
+ case archiveImportFailed(archivePath: String)
+ case passphrase(passphrase: String)
+ case migrationConfirmation(status: DBMigrationResult, passphrase: String, useKeychain: Bool)
+ case migration(passphrase: String, confirmation: MigrationConfirmation, useKeychain: Bool)
+ case onion(appSettings: AppSettings)
+}
+
+private enum MigrateToDeviceViewAlert: Identifiable {
+ case chatImportedWithErrors(title: LocalizedStringKey = "Chat database imported",
+ text: LocalizedStringKey = "Some non-fatal errors occurred during import - you may see Chat console for more details.")
+
+ case wrongPassphrase(title: LocalizedStringKey = "Wrong passphrase!", message: LocalizedStringKey = "Enter correct passphrase.")
+ case invalidConfirmation(title: LocalizedStringKey = "Invalid migration confirmation")
+ case keychainError(_ title: LocalizedStringKey = "Keychain error")
+ case databaseError(_ title: LocalizedStringKey = "Database error", message: String)
+ case unknownError(_ title: LocalizedStringKey = "Unknown error", message: String)
+
+ case error(title: LocalizedStringKey, error: String = "")
+
+ var id: String {
+ switch self {
+ case .chatImportedWithErrors: return "chatImportedWithErrors"
+
+ case .wrongPassphrase: return "wrongPassphrase"
+ case .invalidConfirmation: return "invalidConfirmation"
+ case .keychainError: return "keychainError"
+ case let .databaseError(title, message): return "\(title) \(message)"
+ case let .unknownError(title, message): return "\(title) \(message)"
+
+ case let .error(title, _): return "error \(title)"
+ }
+ }
+}
+
+struct MigrateToDevice: View {
+ @EnvironmentObject var m: ChatModel
+ @Environment(\.dismiss) var dismiss: DismissAction
+ @AppStorage(DEFAULT_DEVELOPER_TOOLS) private var developerTools = false
+ @Binding var migrationState: MigrationToState?
+ @State private var useKeychain = storeDBPassphraseGroupDefault.get()
+ @State private var alert: MigrateToDeviceViewAlert?
+ private let tempDatabaseUrl = urlForTemporaryDatabase()
+ @State private var chatReceiver: MigrationChatReceiver? = nil
+ // Prevent from hiding the view until migration is finished or app deleted
+ @State private var backDisabled: Bool = false
+ @State private var showQRCodeScanner: Bool = true
+
+ var body: some View {
+ VStack {
+ switch migrationState {
+ case nil: EmptyView()
+ case .pasteOrScanLink:
+ pasteOrScanLinkView()
+ case let .linkDownloading(link):
+ linkDownloadingView(link)
+ case let .downloadProgress(downloaded, total, _, _, _, _):
+ downloadProgressView(downloaded, totalBytes: total)
+ case let .downloadFailed(total, link, archivePath):
+ downloadFailedView(totalBytes: total, link, archivePath)
+ case let .archiveImport(archivePath):
+ archiveImportView(archivePath)
+ case let .archiveImportFailed(archivePath):
+ archiveImportFailedView(archivePath)
+ case let .passphrase(passphrase):
+ PassphraseEnteringView(migrationState: $migrationState, currentKey: passphrase, alert: $alert)
+ case let .migrationConfirmation(status, passphrase, useKeychain):
+ migrationConfirmationView(status, passphrase, useKeychain)
+ case let .migration(passphrase, confirmation, useKeychain):
+ migrationView(passphrase, confirmation, useKeychain)
+ case let .onion(appSettings):
+ OnionView(appSettings: appSettings, finishMigration: finishMigration)
+ }
+ }
+ .onAppear {
+ backDisabled = switch migrationState {
+ case nil, .pasteOrScanLink, .linkDownloading, .downloadProgress, .downloadFailed, .archiveImportFailed: false
+ case .archiveImport, .passphrase, .migrationConfirmation, .migration, .onion: true
+ }
+ }
+ .onChange(of: migrationState) { state in
+ backDisabled = switch state {
+ case nil, .pasteOrScanLink, .linkDownloading, .downloadProgress, .downloadFailed, .archiveImportFailed: false
+ case .archiveImport, .passphrase, .migrationConfirmation, .migration, .onion: true
+ }
+ }
+ .onDisappear {
+ Task {
+ if case .archiveImportFailed = migrationState {
+ // Original database is not exist, nothing is setup correctly for showing to a user yet. Return to clean state
+ deleteAppDatabaseAndFiles()
+ initChatAndMigrate()
+ } else if case let .downloadProgress(_, _, fileId, _, _, ctrl) = migrationState, let ctrl {
+ await stopArchiveDownloading(fileId, ctrl)
+ }
+ chatReceiver?.stopAndCleanUp()
+ if !backDisabled {
+ try? FileManager.default.removeItem(at: getMigrationTempFilesDirectory())
+ MigrationToDeviceState.save(nil)
+ }
+ }
+ }
+ .alert(item: $alert) { alert in
+ switch alert {
+ case let .chatImportedWithErrors(title, text):
+ return Alert(title: Text(title), message: Text(text))
+ case let .wrongPassphrase(title, message):
+ return Alert(title: Text(title), message: Text(message))
+ case let .invalidConfirmation(title):
+ return Alert(title: Text(title))
+ case let .keychainError(title):
+ return Alert(title: Text(title))
+ case let .databaseError(title, message):
+ return Alert(title: Text(title), message: Text(message))
+ case let .unknownError(title, message):
+ return Alert(title: Text(title), message: Text(message))
+ case let .error(title, error):
+ return Alert(title: Text(title), message: Text(error))
+ }
+ }
+ .interactiveDismissDisabled(backDisabled)
+ }
+
+ private func pasteOrScanLinkView() -> some View {
+ ZStack {
+ List {
+ Section("Scan QR code") {
+ ScannerInView(showQRCodeScanner: $showQRCodeScanner) { resp in
+ switch resp {
+ case let .success(r):
+ let link = r.string
+ if strHasSimplexFileLink(link.trimmingCharacters(in: .whitespaces)) {
+ migrationState = .linkDownloading(link: link.trimmingCharacters(in: .whitespaces))
+ } else {
+ alert = .error(title: "Invalid link", error: "The text you pasted is not a SimpleX link.")
+ }
+ case let .failure(e):
+ logger.error("processQRCode QR code error: \(e.localizedDescription)")
+ alert = .error(title: "Invalid link", error: "The text you pasted is not a SimpleX link.")
+ }
+ }
+ }
+ if developerTools {
+ Section("Or paste archive link") {
+ pasteLinkView()
+ }
+ }
+ }
+ }
+ }
+
+ private func pasteLinkView() -> some View {
+ Button {
+ if let str = UIPasteboard.general.string {
+ if strHasSimplexFileLink(str.trimmingCharacters(in: .whitespaces)) {
+ migrationState = .linkDownloading(link: str.trimmingCharacters(in: .whitespaces))
+ } else {
+ alert = .error(title: "Invalid link", error: "The text you pasted is not a SimpleX link.")
+ }
+ }
+ } label: {
+ Text("Tap to paste link")
+ }
+ .disabled(!ChatModel.shared.pasteboardHasStrings)
+ .frame(maxWidth: .infinity, alignment: .center)
+ }
+
+ private func linkDownloadingView(_ link: String) -> some View {
+ ZStack {
+ List {
+ Section {} header: {
+ Text("Downloading link details")
+ }
+ }
+ progressView()
+ }
+ .onAppear {
+ downloadLinkDetails(link)
+ }
+ }
+
+ private func downloadProgressView(_ downloadedBytes: Int64, totalBytes: Int64) -> some View {
+ ZStack {
+ List {
+ Section {} header: {
+ Text("Downloading archive")
+ }
+ }
+ let ratio = Float(downloadedBytes) / Float(max(totalBytes, 1))
+ MigrateFromDevice.largeProgressView(ratio, "\(Int(ratio * 100))%", "\(ByteCountFormatter.string(fromByteCount: downloadedBytes, countStyle: .binary)) downloaded")
+ }
+ }
+
+ private func downloadFailedView(totalBytes: Int64, _ link: String, _ archivePath: String) -> some View {
+ List {
+ Section {
+ Button(action: {
+ try? FileManager.default.removeItem(atPath: archivePath)
+ migrationState = .linkDownloading(link: link)
+ }) {
+ settingsRow("tray.and.arrow.down") {
+ Text("Repeat download").foregroundColor(.accentColor)
+ }
+ }
+ } header: {
+ Text("Download failed")
+ } footer: {
+ Text("You can give another try.")
+ .font(.callout)
+ }
+ }
+ .onAppear {
+ chatReceiver?.stopAndCleanUp()
+ try? FileManager.default.removeItem(atPath: archivePath)
+ MigrationToDeviceState.save(nil)
+ }
+ }
+
+ private func archiveImportView(_ archivePath: String) -> some View {
+ ZStack {
+ List {
+ Section {} header: {
+ Text("Importing archive")
+ }
+ }
+ progressView()
+ }
+ .onAppear {
+ importArchive(archivePath)
+ }
+ }
+
+ private func archiveImportFailedView(_ archivePath: String) -> some View {
+ List {
+ Section {
+ Button(action: {
+ migrationState = .archiveImport(archivePath: archivePath)
+ }) {
+ settingsRow("square.and.arrow.down") {
+ Text("Repeat import").foregroundColor(.accentColor)
+ }
+ }
+ } header: {
+ Text("Import failed")
+ } footer: {
+ Text("You can give another try.")
+ .font(.callout)
+ }
+ }
+ }
+
+ private func migrationConfirmationView(_ status: DBMigrationResult, _ passphrase: String, _ useKeychain: Bool) -> some View {
+ List {
+ let (header, button, footer, confirmation): (LocalizedStringKey, LocalizedStringKey?, String, MigrationConfirmation?) = switch status {
+ case let .errorMigration(_, migrationError):
+ switch migrationError {
+ case .upgrade:
+ ("Database upgrade",
+ "Upgrade and open chat",
+ "",
+ .yesUp)
+ case .downgrade:
+ ("Database downgrade",
+ "Downgrade and open chat",
+ NSLocalizedString("Warning: you may lose some data!", comment: ""),
+ .yesUpDown)
+ case let .migrationError(mtrError):
+ ("Incompatible database version",
+ nil,
+ "\(NSLocalizedString("Error: ", comment: "")) \(DatabaseErrorView.mtrErrorDescription(mtrError))",
+ nil)
+ }
+ default: ("Error", nil, "Unknown error", nil)
+ }
+ Section {
+ if let button, let confirmation {
+ Button(action: {
+ migrationState = .migration(passphrase: passphrase, confirmation: confirmation, useKeychain: useKeychain)
+ }) {
+ settingsRow("square.and.arrow.down") {
+ Text(button).foregroundColor(.accentColor)
+ }
+ }
+ } else {
+ EmptyView()
+ }
+ } header: {
+ Text(header)
+ } footer: {
+ Text(footer)
+ .font(.callout)
+ }
+ }
+ }
+
+ private func migrationView(_ passphrase: String, _ confirmation: MigrationConfirmation, _ useKeychain: Bool) -> some View {
+ ZStack {
+ List {
+ Section {} header: {
+ Text("Migrating")
+ }
+ }
+ progressView()
+ }
+ .onAppear {
+ startChat(passphrase, confirmation, useKeychain)
+ }
+ }
+
+ struct OnionView: View {
+ @State var appSettings: AppSettings
+ @State private var onionHosts: OnionHosts = .no
+ var finishMigration: (AppSettings) -> Void
+
+ var body: some View {
+ List {
+ Section {
+ Button(action: {
+ var updated = appSettings.networkConfig!
+ let (hostMode, requiredHostMode) = onionHosts.hostMode
+ updated.hostMode = hostMode
+ updated.requiredHostMode = requiredHostMode
+ updated.socksProxy = nil
+ appSettings.networkConfig = updated
+ finishMigration(appSettings)
+ }) {
+ settingsRow("checkmark") {
+ Text("Apply").foregroundColor(.accentColor)
+ }
+ }
+ } header: {
+ Text("Confirm network settings")
+ } footer: {
+ Text("Please confirm that network settings are correct for this device.")
+ .font(.callout)
+ }
+
+ Section("Network settings") {
+ Picker("Use .onion hosts", selection: $onionHosts) {
+ ForEach(OnionHosts.values, id: \.self) { Text($0.text) }
+ }
+ .frame(height: 36)
+ }
+ }
+ }
+ }
+
+ private func downloadLinkDetails(_ link: String) {
+ let archiveTime = Date.now
+ let ts = archiveTime.ISO8601Format(Date.ISO8601FormatStyle(timeSeparator: .omitted))
+ let archiveName = "simplex-chat.\(ts).zip"
+ let archivePath = getMigrationTempFilesDirectory().appendingPathComponent(archiveName)
+
+ startDownloading(0, link, archivePath.path)
+ }
+
+ private func initTemporaryDatabase() -> (chat_ctrl, User)? {
+ let (status, ctrl) = chatInitTemporaryDatabase(url: tempDatabaseUrl)
+ showErrorOnMigrationIfNeeded(status, $alert)
+ do {
+ if let ctrl, let user = try startChatWithTemporaryDatabase(ctrl: ctrl) {
+ return (ctrl, user)
+ }
+ } catch let error {
+ logger.error("Error while starting chat in temporary database: \(error.localizedDescription)")
+ }
+ return nil
+ }
+
+ private func startDownloading(_ totalBytes: Int64, _ link: String, _ archivePath: String) {
+ Task {
+ guard let ctrlAndUser = initTemporaryDatabase() else {
+ return migrationState = .downloadFailed(totalBytes: totalBytes, link: link, archivePath: archivePath)
+ }
+ let (ctrl, user) = ctrlAndUser
+ chatReceiver = MigrationChatReceiver(ctrl: ctrl, databaseUrl: tempDatabaseUrl) { msg in
+ await MainActor.run {
+ switch msg {
+ case let .rcvFileProgressXFTP(_, _, receivedSize, totalSize, rcvFileTransfer):
+ migrationState = .downloadProgress(downloadedBytes: receivedSize, totalBytes: totalSize, fileId: rcvFileTransfer.fileId, link: link, archivePath: archivePath, ctrl: ctrl)
+ MigrationToDeviceState.save(.downloadProgress(link: link, archiveName: URL(fileURLWithPath: archivePath).lastPathComponent))
+ case .rcvStandaloneFileComplete:
+ DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
+ // User closed the whole screen before new state was saved
+ if migrationState == nil {
+ MigrationToDeviceState.save(nil)
+ } else {
+ migrationState = .archiveImport(archivePath: archivePath)
+ MigrationToDeviceState.save(.archiveImport(archiveName: URL(fileURLWithPath: archivePath).lastPathComponent))
+ }
+ }
+ case .rcvFileError:
+ alert = .error(title: "Download failed", error: "File was deleted or link is invalid")
+ migrationState = .downloadFailed(totalBytes: totalBytes, link: link, archivePath: archivePath)
+ default:
+ logger.debug("unsupported event: \(msg.responseType)")
+ }
+ }
+ }
+ chatReceiver?.start()
+
+ let (res, error) = await downloadStandaloneFile(user: user, url: link, file: CryptoFile.plain(URL(fileURLWithPath: archivePath).lastPathComponent), ctrl: ctrl)
+ if res == nil {
+ await MainActor.run {
+ migrationState = .downloadFailed(totalBytes: totalBytes, link: link, archivePath: archivePath)
+ }
+ return alert = .error(title: "Error downloading the archive", error: error ?? "")
+ }
+ }
+ }
+
+ private func importArchive(_ archivePath: String) {
+ Task {
+ do {
+ if !hasChatCtrl() {
+ chatInitControllerRemovingDatabases()
+ }
+ try await apiDeleteStorage()
+ do {
+ let config = ArchiveConfig(archivePath: archivePath)
+ let archiveErrors = try await apiImportArchive(config: config)
+ if !archiveErrors.isEmpty {
+ alert = .chatImportedWithErrors()
+ }
+ await MainActor.run {
+ migrationState = .passphrase(passphrase: "")
+ MigrationToDeviceState.save(.passphrase)
+ }
+ } catch let error {
+ await MainActor.run {
+ migrationState = .archiveImportFailed(archivePath: archivePath)
+ }
+ alert = .error(title: "Error importing chat database", error: responseError(error))
+ }
+ } catch let error {
+ await MainActor.run {
+ migrationState = .archiveImportFailed(archivePath: archivePath)
+ }
+ alert = .error(title: "Error deleting chat database", error: responseError(error))
+ }
+ }
+ }
+
+
+ private func stopArchiveDownloading(_ fileId: Int64, _ ctrl: chat_ctrl) async {
+ _ = await apiCancelFile(fileId: fileId, ctrl: ctrl)
+ }
+
+ private func startChat(_ passphrase: String, _ confirmation: MigrationConfirmation, _ useKeychain: Bool) {
+ if useKeychain {
+ _ = kcDatabasePassword.set(passphrase)
+ } else {
+ _ = kcDatabasePassword.remove()
+ }
+ storeDBPassphraseGroupDefault.set(useKeychain)
+ initialRandomDBPassphraseGroupDefault.set(false)
+ AppChatState.shared.set(.active)
+ Task {
+ do {
+ resetChatCtrl()
+ try initializeChat(start: false, confirmStart: false, dbKey: passphrase, refreshInvitations: true, confirmMigrations: confirmation)
+ var appSettings = try apiGetAppSettings(settings: AppSettings.current.prepareForExport())
+ let hasOnionConfigured = appSettings.networkConfig?.socksProxy != nil || appSettings.networkConfig?.hostMode == .onionHost
+ appSettings.networkConfig?.socksProxy = nil
+ appSettings.networkConfig?.hostMode = .publicHost
+ appSettings.networkConfig?.requiredHostMode = true
+ await MainActor.run {
+ if hasOnionConfigured {
+ migrationState = .onion(appSettings: appSettings)
+ } else {
+ finishMigration(appSettings)
+ }
+ }
+ } catch let error {
+ hideView()
+ AlertManager.shared.showAlert(Alert(title: Text("Error starting chat"), message: Text(responseError(error))))
+ }
+ }
+ }
+
+ private func finishMigration(_ appSettings: AppSettings) {
+ do {
+ try? FileManager.default.removeItem(at: getMigrationTempFilesDirectory())
+ MigrationToDeviceState.save(nil)
+ appSettings.importIntoApp()
+ try SimpleX.startChat(refreshInvitations: true)
+ AlertManager.shared.showAlertMsg(title: "Chat migrated!", message: "Finalize migration on another device.")
+ } catch let error {
+ AlertManager.shared.showAlert(Alert(title: Text("Error starting chat"), message: Text(responseError(error))))
+ }
+ hideView()
+ }
+
+ private func hideView() {
+ onboardingStageDefault.set(.onboardingComplete)
+ m.onboardingStage = .onboardingComplete
+ dismiss()
+ }
+
+ private func strHasSimplexFileLink(_ text: String) -> Bool {
+ text.starts(with: "simplex:/file") || text.starts(with: "https://simplex.chat/file")
+ }
+
+ private static func urlForTemporaryDatabase() -> URL {
+ URL(fileURLWithPath: generateNewFileName(getMigrationTempFilesDirectory().path + "/" + "migration", "db", fullPath: true))
+ }
+}
+
+private struct PassphraseEnteringView: View {
+ @Binding var migrationState: MigrationToState?
+ @State private var useKeychain = true
+ @State var currentKey: String
+ @State private var verifyingPassphrase: Bool = false
+ @FocusState private var keyboardVisible: Bool
+ @Binding var alert: MigrateToDeviceViewAlert?
+
+ var body: some View {
+ ZStack {
+ List {
+ Section {
+ settingsRow("key", color: .secondary) {
+ Toggle("Save passphrase in Keychain", isOn: $useKeychain)
+ }
+
+ PassphraseField(key: $currentKey, placeholder: "Current passphrase…", valid: validKey(currentKey))
+ .focused($keyboardVisible)
+ Button(action: {
+ verifyingPassphrase = true
+ hideKeyboard()
+ Task {
+ let (status, _) = chatInitTemporaryDatabase(url: getAppDatabasePath(), key: currentKey, confirmation: .yesUp)
+ let success = switch status {
+ case .ok, .invalidConfirmation: true
+ default: false
+ }
+ if success {
+ await MainActor.run {
+ migrationState = .migration(passphrase: currentKey, confirmation: .yesUp, useKeychain: useKeychain)
+ }
+ } else if case .errorMigration = status {
+ await MainActor.run {
+ migrationState = .migrationConfirmation(status: status, passphrase: currentKey, useKeychain: useKeychain)
+ }
+ } else {
+ showErrorOnMigrationIfNeeded(status, $alert)
+ }
+ verifyingPassphrase = false
+ }
+ }) {
+ settingsRow("key", color: .secondary) {
+ Text("Open chat")
+ }
+ }
+ .disabled(verifyingPassphrase || currentKey.isEmpty)
+ } header: {
+ Text("Enter passphrase")
+ } footer: {
+ VStack(alignment: .leading, spacing: 16) {
+ if useKeychain {
+ Text("iOS Keychain is used to securely store passphrase - it allows receiving push notifications.")
+ } else {
+ Text("You have to enter passphrase every time the app starts - it is not stored on the device.")
+ Text("**Please note**: you will NOT be able to recover or change passphrase if you lose it.")
+ Text("**Warning**: Instant push notifications require passphrase saved in Keychain.")
+ }
+ }
+ .font(.callout)
+ .padding(.top, 1)
+ .onTapGesture { keyboardVisible = false }
+ }
+ .onAppear {
+ DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
+ keyboardVisible = true
+ }
+ }
+ }
+ if verifyingPassphrase {
+ progressView()
+ }
+ }
+ }
+}
+
+private func showErrorOnMigrationIfNeeded(_ status: DBMigrationResult, _ alert: Binding) {
+ switch status {
+ case .invalidConfirmation:
+ alert.wrappedValue = .invalidConfirmation()
+ case .errorNotADatabase:
+ alert.wrappedValue = .wrongPassphrase()
+ case .errorKeychain:
+ alert.wrappedValue = .keychainError()
+ case let .errorSQL(_, error):
+ alert.wrappedValue = .databaseError(message: error)
+ case let .unknown(error):
+ alert.wrappedValue = .unknownError(message: error)
+ case .errorMigration: ()
+ case .ok: ()
+ }
+}
+
+private func progressView() -> some View {
+ VStack {
+ ProgressView().scaleEffect(2)
+ }
+ .frame(maxWidth: .infinity, maxHeight: .infinity )
+}
+
+private class MigrationChatReceiver {
+ let ctrl: chat_ctrl
+ let databaseUrl: URL
+ let processReceivedMsg: (ChatResponse) async -> Void
+ private var receiveLoop: Task?
+ private var receiveMessages = true
+
+ init(ctrl: chat_ctrl, databaseUrl: URL, _ processReceivedMsg: @escaping (ChatResponse) async -> Void) {
+ self.ctrl = ctrl
+ self.databaseUrl = databaseUrl
+ self.processReceivedMsg = processReceivedMsg
+ }
+
+ func start() {
+ logger.debug("MigrationChatReceiver.start")
+ receiveMessages = true
+ if receiveLoop != nil { return }
+ receiveLoop = Task { await receiveMsgLoop() }
+ }
+
+ func receiveMsgLoop() async {
+ // TODO use function that has timeout
+ if let msg = await chatRecvMsg(ctrl) {
+ Task {
+ await TerminalItems.shared.add(.resp(.now, msg))
+ }
+ logger.debug("processReceivedMsg: \(msg.responseType)")
+ await processReceivedMsg(msg)
+ }
+ if self.receiveMessages {
+ _ = try? await Task.sleep(nanoseconds: 7_500_000)
+ await receiveMsgLoop()
+ }
+ }
+
+ func stopAndCleanUp() {
+ logger.debug("MigrationChatReceiver.stop")
+ receiveMessages = false
+ receiveLoop?.cancel()
+ receiveLoop = nil
+ chat_close_store(ctrl)
+ try? FileManager.default.removeItem(atPath: "\(databaseUrl.path)_chat.db")
+ try? FileManager.default.removeItem(atPath: "\(databaseUrl.path)_agent.db")
+ }
+}
+
+struct MigrateToDevice_Previews: PreviewProvider {
+ static var previews: some View {
+ MigrateToDevice(migrationState: Binding.constant(.pasteOrScanLink))
+ }
+}
diff --git a/apps/ios/Shared/Views/NewChat/NewChatView.swift b/apps/ios/Shared/Views/NewChat/NewChatView.swift
index b78d92ffc8..7ece4fdee6 100644
--- a/apps/ios/Shared/Views/NewChat/NewChatView.swift
+++ b/apps/ios/Shared/Views/NewChat/NewChatView.swift
@@ -86,7 +86,7 @@ struct NewChatView: View {
}
}
if case .connect = selection {
- ConnectView(showQRCodeScanner: showQRCodeScanner, pastedLink: $pastedLink, alert: $alert)
+ ConnectView(showQRCodeScanner: $showQRCodeScanner, pastedLink: $pastedLink, alert: $alert)
.transition(.move(edge: .trailing))
}
}
@@ -284,8 +284,7 @@ private struct InviteView: View {
private struct ConnectView: View {
@Environment(\.dismiss) var dismiss: DismissAction
- @State var showQRCodeScanner = false
- @State private var cameraAuthorizationStatus: AVAuthorizationStatus?
+ @Binding var showQRCodeScanner: Bool
@Binding var pastedLink: String
@Binding var alert: NewChatViewAlert?
@State private var sheet: PlanAndConnectActionSheet?
@@ -295,32 +294,13 @@ private struct ConnectView: View {
Section("Paste the link you received") {
pasteLinkView()
}
-
- scanCodeView()
+ Section("Or scan QR code") {
+ ScannerInView(showQRCodeScanner: $showQRCodeScanner, processQRCode: processQRCode)
+ }
}
.actionSheet(item: $sheet) { s in
planAndConnectActionSheet(s, dismiss: true, cleanup: { pastedLink = "" })
}
- .onAppear {
- let status = AVCaptureDevice.authorizationStatus(for: .video)
- cameraAuthorizationStatus = status
- if showQRCodeScanner {
- switch status {
- case .notDetermined: askCameraAuthorization()
- case .restricted: showQRCodeScanner = false
- case .denied: showQRCodeScanner = false
- case .authorized: ()
- @unknown default: askCameraAuthorization()
- }
- }
- }
- }
-
- func askCameraAuthorization(_ cb: (() -> Void)? = nil) {
- AVCaptureDevice.requestAccess(for: .video) { allowed in
- cameraAuthorizationStatus = AVCaptureDevice.authorizationStatus(for: .video)
- if allowed { cb?() }
- }
}
@ViewBuilder private func pasteLinkView() -> some View {
@@ -351,8 +331,45 @@ private struct ConnectView: View {
}
}
- private func scanCodeView() -> some View {
- Section("Or scan QR code") {
+ private func processQRCode(_ resp: Result) {
+ switch resp {
+ case let .success(r):
+ let link = r.string
+ if strIsSimplexLink(r.string) {
+ connect(link)
+ } else {
+ alert = .newChatSomeAlert(alert: .someAlert(
+ alert: mkAlert(title: "Invalid QR code", message: "The code you scanned is not a SimpleX link QR code."),
+ id: "processQRCode: code is not a SimpleX link"
+ ))
+ }
+ case let .failure(e):
+ logger.error("processQRCode QR code error: \(e.localizedDescription)")
+ alert = .newChatSomeAlert(alert: .someAlert(
+ alert: mkAlert(title: "Invalid QR code", message: "Error scanning code: \(e.localizedDescription)"),
+ id: "processQRCode: failure"
+ ))
+ }
+ }
+
+ private func connect(_ link: String) {
+ planAndConnect(
+ link,
+ showAlert: { alert = .planAndConnectAlert(alert: $0) },
+ showActionSheet: { sheet = $0 },
+ dismiss: true,
+ incognito: nil
+ )
+ }
+}
+
+struct ScannerInView: View {
+ @Binding var showQRCodeScanner: Bool
+ let processQRCode: (_ resp: Result) -> Void
+ @State private var cameraAuthorizationStatus: AVAuthorizationStatus?
+
+ var body: some View {
+ Group {
if showQRCodeScanner, case .authorized = cameraAuthorizationStatus {
CodeScannerView(codeTypes: [.qr], scanMode: .continuous, completion: processQRCode)
.aspectRatio(1, contentMode: .fit)
@@ -396,37 +413,26 @@ private struct ConnectView: View {
.disabled(cameraAuthorizationStatus == .restricted)
}
}
- }
-
- private func processQRCode(_ resp: Result) {
- switch resp {
- case let .success(r):
- let link = r.string
- if strIsSimplexLink(r.string) {
- connect(link)
- } else {
- alert = .newChatSomeAlert(alert: .someAlert(
- alert: mkAlert(title: "Invalid QR code", message: "The code you scanned is not a SimpleX link QR code."),
- id: "processQRCode: code is not a SimpleX link"
- ))
+ .onAppear {
+ let status = AVCaptureDevice.authorizationStatus(for: .video)
+ cameraAuthorizationStatus = status
+ if showQRCodeScanner {
+ switch status {
+ case .notDetermined: askCameraAuthorization()
+ case .restricted: showQRCodeScanner = false
+ case .denied: showQRCodeScanner = false
+ case .authorized: ()
+ @unknown default: askCameraAuthorization()
+ }
}
- case let .failure(e):
- logger.error("processQRCode QR code error: \(e.localizedDescription)")
- alert = .newChatSomeAlert(alert: .someAlert(
- alert: mkAlert(title: "Invalid QR code", message: "Error scanning code: \(e.localizedDescription)"),
- id: "processQRCode: failure"
- ))
}
}
- private func connect(_ link: String) {
- planAndConnect(
- link,
- showAlert: { alert = .planAndConnectAlert(alert: $0) },
- showActionSheet: { sheet = $0 },
- dismiss: true,
- incognito: nil
- )
+ func askCameraAuthorization(_ cb: (() -> Void)? = nil) {
+ AVCaptureDevice.requestAccess(for: .video) { allowed in
+ cameraAuthorizationStatus = AVCaptureDevice.authorizationStatus(for: .video)
+ if allowed { cb?() }
+ }
}
}
diff --git a/apps/ios/Shared/Views/Onboarding/CreateProfile.swift b/apps/ios/Shared/Views/Onboarding/CreateProfile.swift
index 3f835e25d4..0ee6baa765 100644
--- a/apps/ios/Shared/Views/Onboarding/CreateProfile.swift
+++ b/apps/ios/Shared/Views/Onboarding/CreateProfile.swift
@@ -166,8 +166,10 @@ private func createProfile(_ displayName: String, showAlert: (UserProfileAlert)
)
let m = ChatModel.shared
do {
+ AppChatState.shared.set(.active)
m.currentUser = try apiCreateActiveUser(profile)
- if m.users.isEmpty {
+ // .isEmpty check is redundant here, but it makes it clearer what is going on
+ if m.users.isEmpty || m.users.allSatisfy({ $0.user.hidden }) {
try startChat()
withAnimation {
onboardingStageDefault.set(.step3_CreateSimpleXAddress)
diff --git a/apps/ios/Shared/Views/Onboarding/SimpleXInfo.swift b/apps/ios/Shared/Views/Onboarding/SimpleXInfo.swift
index ce1d727b10..94e281be7d 100644
--- a/apps/ios/Shared/Views/Onboarding/SimpleXInfo.swift
+++ b/apps/ios/Shared/Views/Onboarding/SimpleXInfo.swift
@@ -7,6 +7,7 @@
//
import SwiftUI
+import SimpleXChat
struct SimpleXInfo: View {
@EnvironmentObject var m: ChatModel
@@ -44,6 +45,15 @@ struct SimpleXInfo: View {
if onboarding {
OnboardingActionButton()
Spacer()
+
+ Button {
+ m.migrationState = .pasteOrScanLink
+ } label: {
+ Label("Migrate from another device", systemImage: "tray.and.arrow.down")
+ .font(.subheadline)
+ }
+ .padding(.bottom, 8)
+ .frame(maxWidth: .infinity)
}
Button {
@@ -54,9 +64,24 @@ struct SimpleXInfo: View {
}
.padding(.bottom, 8)
.frame(maxWidth: .infinity)
+
}
.frame(minHeight: g.size.height)
}
+ .sheet(isPresented: Binding(
+ get: { m.migrationState != nil },
+ set: { _ in
+ m.migrationState = nil
+ MigrationToDeviceState.save(nil) }
+ )) {
+ NavigationView {
+ VStack(alignment: .leading) {
+ MigrateToDevice(migrationState: $m.migrationState)
+ }
+ .navigationTitle("Migrate here")
+ .background(colorScheme == .light ? Color(uiColor: .tertiarySystemGroupedBackground) : .clear)
+ }
+ }
.sheet(isPresented: $showHowItWorks) {
HowItWorks(onboarding: onboarding)
}
@@ -87,6 +112,7 @@ struct SimpleXInfo: View {
struct OnboardingActionButton: View {
@EnvironmentObject var m: ChatModel
+ @Environment(\.colorScheme) var colorScheme
var body: some View {
if m.currentUser == nil {
@@ -111,6 +137,21 @@ struct OnboardingActionButton: View {
.frame(maxWidth: .infinity)
.padding(.bottom)
}
+
+ private func actionButton(_ label: LocalizedStringKey, action: @escaping () -> Void) -> some View {
+ Button {
+ withAnimation {
+ action()
+ }
+ } label: {
+ HStack {
+ Text(label).font(.title2)
+ Image(systemName: "greaterthan")
+ }
+ }
+ .frame(maxWidth: .infinity)
+ .padding(.bottom)
+ }
}
struct SimpleXInfo_Previews: PreviewProvider {
diff --git a/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift b/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift
index ece10e46dd..73ea5720c6 100644
--- a/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift
+++ b/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift
@@ -344,6 +344,37 @@ private let versionDescriptions: [VersionDescription] = [
description: "Thanks to the users – [contribute via Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!"
),
]
+ ),
+ VersionDescription(
+ version: "v5.6",
+ post: URL(string: "https://simplex.chat/blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.html"),
+ features: [
+ FeatureDescription(
+ icon: "key",
+ title: "Quantum resistant encryption",
+ description: "Enable in direct chats (BETA)!"
+ ),
+ FeatureDescription(
+ icon: "tray.and.arrow.up",
+ title: "App data migration",
+ description: "Migrate to another device via QR code."
+ ),
+ FeatureDescription(
+ icon: "phone",
+ title: "Picture-in-picture calls",
+ description: "Use the app while in the call."
+ ),
+ FeatureDescription(
+ icon: "hand.raised",
+ title: "Safer groups",
+ description: "Admins can block a member for all."
+ ),
+ FeatureDescription(
+ icon: "character",
+ title: "Hungarian interface",
+ description: "Thanks to the users – [contribute via Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!"
+ ),
+ ]
)
]
diff --git a/apps/ios/Shared/Views/RemoteAccess/ConnectDesktopView.swift b/apps/ios/Shared/Views/RemoteAccess/ConnectDesktopView.swift
index 6809dc1385..3059b049a3 100644
--- a/apps/ios/Shared/Views/RemoteAccess/ConnectDesktopView.swift
+++ b/apps/ios/Shared/Views/RemoteAccess/ConnectDesktopView.swift
@@ -58,7 +58,7 @@ struct ConnectDesktopView: View {
var body: some View {
if viaSettings {
viewBody
- .modifier(BackButton(label: "Back") {
+ .modifier(BackButton(label: "Back", disabled: Binding.constant(false)) {
if m.activeRemoteCtrl {
alert = .disconnectDesktop(action: .back)
} else {
diff --git a/apps/ios/Shared/Views/UserSettings/AppSettings.swift b/apps/ios/Shared/Views/UserSettings/AppSettings.swift
new file mode 100644
index 0000000000..ba192b333c
--- /dev/null
+++ b/apps/ios/Shared/Views/UserSettings/AppSettings.swift
@@ -0,0 +1,72 @@
+//
+// AppSettings.swift
+// SimpleX (iOS)
+//
+// Created by Avently on 26.02.2024.
+// Copyright © 2024 SimpleX Chat. All rights reserved.
+//
+
+import Foundation
+import SimpleXChat
+import SwiftUI
+
+extension AppSettings {
+ public func importIntoApp() {
+ let def = UserDefaults.standard
+ if var val = networkConfig {
+ // migrating from Android/desktop BUT shouldn't be here ever because it should be changed in migration stage
+ if case .onionViaSocks = val.hostMode {
+ val.hostMode = .publicHost
+ val.requiredHostMode = true
+ }
+ val.socksProxy = nil
+ setNetCfg(val)
+ }
+ if let val = privacyEncryptLocalFiles { privacyEncryptLocalFilesGroupDefault.set(val) }
+ if let val = privacyAcceptImages {
+ privacyAcceptImagesGroupDefault.set(val)
+ def.setValue(val, forKey: DEFAULT_PRIVACY_ACCEPT_IMAGES)
+ }
+ if let val = privacyLinkPreviews { def.setValue(val, forKey: DEFAULT_PRIVACY_LINK_PREVIEWS) }
+ if let val = privacyShowChatPreviews { def.setValue(val, forKey: DEFAULT_PRIVACY_SHOW_CHAT_PREVIEWS) }
+ if let val = privacySaveLastDraft { def.setValue(val, forKey: DEFAULT_PRIVACY_SAVE_LAST_DRAFT) }
+ if let val = privacyProtectScreen { def.setValue(val, forKey: DEFAULT_PRIVACY_PROTECT_SCREEN) }
+ if let val = notificationMode { ChatModel.shared.notificationMode = val.toNotificationsMode() }
+ if let val = notificationPreviewMode { ntfPreviewModeGroupDefault.set(val) }
+ if let val = webrtcPolicyRelay { def.setValue(val, forKey: DEFAULT_WEBRTC_POLICY_RELAY) }
+ if let val = webrtcICEServers { def.setValue(val, forKey: DEFAULT_WEBRTC_ICE_SERVERS) }
+ if let val = confirmRemoteSessions { def.setValue(val, forKey: DEFAULT_CONFIRM_REMOTE_SESSIONS) }
+ if let val = connectRemoteViaMulticast { def.setValue(val, forKey: DEFAULT_CONNECT_REMOTE_VIA_MULTICAST) }
+ if let val = connectRemoteViaMulticastAuto { def.setValue(val, forKey: DEFAULT_CONNECT_REMOTE_VIA_MULTICAST_AUTO) }
+ if let val = developerTools { def.setValue(val, forKey: DEFAULT_DEVELOPER_TOOLS) }
+ if let val = confirmDBUpgrades { confirmDBUpgradesGroupDefault.set(val) }
+ if let val = androidCallOnLockScreen { def.setValue(val.rawValue, forKey: ANDROID_DEFAULT_CALL_ON_LOCK_SCREEN) }
+ if let val = iosCallKitEnabled { callKitEnabledGroupDefault.set(val) }
+ if let val = iosCallKitCallsInRecents { def.setValue(val, forKey: DEFAULT_CALL_KIT_CALLS_IN_RECENTS) }
+ }
+
+ public static var current: AppSettings {
+ let def = UserDefaults.standard
+ var c = AppSettings.defaults
+ c.networkConfig = getNetCfg()
+ c.privacyEncryptLocalFiles = privacyEncryptLocalFilesGroupDefault.get()
+ c.privacyAcceptImages = privacyAcceptImagesGroupDefault.get()
+ c.privacyLinkPreviews = def.bool(forKey: DEFAULT_PRIVACY_LINK_PREVIEWS)
+ c.privacyShowChatPreviews = def.bool(forKey: DEFAULT_PRIVACY_SHOW_CHAT_PREVIEWS)
+ c.privacySaveLastDraft = def.bool(forKey: DEFAULT_PRIVACY_SAVE_LAST_DRAFT)
+ c.privacyProtectScreen = def.bool(forKey: DEFAULT_PRIVACY_PROTECT_SCREEN)
+ c.notificationMode = AppSettingsNotificationMode.from(ChatModel.shared.notificationMode)
+ c.notificationPreviewMode = ntfPreviewModeGroupDefault.get()
+ c.webrtcPolicyRelay = def.bool(forKey: DEFAULT_WEBRTC_POLICY_RELAY)
+ c.webrtcICEServers = def.stringArray(forKey: DEFAULT_WEBRTC_ICE_SERVERS)
+ c.confirmRemoteSessions = def.bool(forKey: DEFAULT_CONFIRM_REMOTE_SESSIONS)
+ c.connectRemoteViaMulticast = def.bool(forKey: DEFAULT_CONNECT_REMOTE_VIA_MULTICAST)
+ c.connectRemoteViaMulticastAuto = def.bool(forKey: DEFAULT_CONNECT_REMOTE_VIA_MULTICAST_AUTO)
+ c.developerTools = def.bool(forKey: DEFAULT_DEVELOPER_TOOLS)
+ c.confirmDBUpgrades = confirmDBUpgradesGroupDefault.get()
+ c.androidCallOnLockScreen = AppSettingsLockScreenCalls(rawValue: def.string(forKey: ANDROID_DEFAULT_CALL_ON_LOCK_SCREEN)!)
+ c.iosCallKitEnabled = callKitEnabledGroupDefault.get()
+ c.iosCallKitCallsInRecents = def.bool(forKey: DEFAULT_CALL_KIT_CALLS_IN_RECENTS)
+ return c
+ }
+}
diff --git a/apps/ios/Shared/Views/UserSettings/DeveloperView.swift b/apps/ios/Shared/Views/UserSettings/DeveloperView.swift
index 3bbfbfe33e..9b11c6d0f7 100644
--- a/apps/ios/Shared/Views/UserSettings/DeveloperView.swift
+++ b/apps/ios/Shared/Views/UserSettings/DeveloperView.swift
@@ -12,6 +12,7 @@ import SimpleXChat
struct DeveloperView: View {
@AppStorage(DEFAULT_DEVELOPER_TOOLS) private var developerTools = false
@AppStorage(GROUP_DEFAULT_CONFIRM_DB_UPGRADES, store: groupDefaults) private var confirmDatabaseUpgrades = false
+ @AppStorage(GROUP_DEFAULT_PQ_EXPERIMENTAL_ENABLED, store: groupDefaults) private var pqExperimentalEnabled = false
@Environment(\.colorScheme) var colorScheme
var body: some View {
@@ -42,9 +43,33 @@ struct DeveloperView: View {
} footer: {
(developerTools ? Text("Show:") : Text("Hide:")) + Text(" ") + Text("Database IDs and Transport isolation option.")
}
+
+ if developerTools {
+ Section {
+ settingsRow("key") {
+ Toggle("Post-quantum E2EE", isOn: $pqExperimentalEnabled)
+ .onChange(of: pqExperimentalEnabled) {
+ setPQExperimentalEnabled($0)
+ }
+ }
+ } header: {
+ Text(String("Experimental"))
+ } footer: {
+ Text(String("In this version applies only to new contacts."))
+ }
+ }
}
}
}
+
+ private func setPQExperimentalEnabled(_ enable: Bool) {
+ do {
+ try apiSetPQEncryption(enable)
+ } catch let error {
+ let err = responseError(error)
+ logger.error("apiSetPQEncryption \(err)")
+ }
+ }
}
struct DeveloperView_Previews: PreviewProvider {
diff --git a/apps/ios/Shared/Views/UserSettings/NotificationsView.swift b/apps/ios/Shared/Views/UserSettings/NotificationsView.swift
index 04c02f0dd2..4876d60eca 100644
--- a/apps/ios/Shared/Views/UserSettings/NotificationsView.swift
+++ b/apps/ios/Shared/Views/UserSettings/NotificationsView.swift
@@ -76,6 +76,10 @@ struct NotificationsView: View {
Text(m.notificationPreview.label)
}
}
+
+ if let server = m.notificationServer {
+ smpServers("Push server", [server])
+ }
} header: {
Text("Push notifications")
} footer: {
@@ -87,6 +91,9 @@ struct NotificationsView: View {
}
}
.disabled(legacyDatabase)
+ .onAppear {
+ (m.savedToken, m.tokenStatus, m.notificationMode, m.notificationServer) = apiGetNtfToken()
+ }
}
private func notificationAlert(_ alert: NotificationAlert, _ token: DeviceToken) -> Alert {
@@ -125,6 +132,7 @@ struct NotificationsView: View {
m.tokenStatus = .new
notificationMode = .off
m.notificationMode = .off
+ m.notificationServer = nil
}
} catch let error {
await MainActor.run {
@@ -135,11 +143,13 @@ struct NotificationsView: View {
}
default:
do {
- let status = try await apiRegisterToken(token: token, notificationMode: mode)
+ let _ = try await apiRegisterToken(token: token, notificationMode: mode)
+ let (_, tknStatus, ntfMode, ntfServer) = apiGetNtfToken()
await MainActor.run {
- m.tokenStatus = status
- notificationMode = mode
- m.notificationMode = mode
+ m.tokenStatus = tknStatus
+ notificationMode = ntfMode
+ m.notificationMode = ntfMode
+ m.notificationServer = ntfServer
}
} catch let error {
await MainActor.run {
diff --git a/apps/ios/Shared/Views/UserSettings/ProtocolServerView.swift b/apps/ios/Shared/Views/UserSettings/ProtocolServerView.swift
index 48d5a66970..6702ab7ce8 100644
--- a/apps/ios/Shared/Views/UserSettings/ProtocolServerView.swift
+++ b/apps/ios/Shared/Views/UserSettings/ProtocolServerView.swift
@@ -31,7 +31,7 @@ struct ProtocolServerView: View {
ProgressView().scaleEffect(2)
}
}
- .modifier(BackButton(label: "Your \(proto) servers") {
+ .modifier(BackButton(label: "Your \(proto) servers", disabled: Binding.constant(false)) {
server = serverToEdit
dismiss()
})
@@ -117,6 +117,7 @@ struct ProtocolServerView: View {
struct BackButton: ViewModifier {
var label: LocalizedStringKey = "Back"
+ @Binding var disabled: Bool
var action: () -> Void
func body(content: Content) -> some View {
@@ -130,6 +131,7 @@ struct BackButton: ViewModifier {
Text(label)
}
}
+ .disabled(disabled)
}
}
}
diff --git a/apps/ios/Shared/Views/UserSettings/ProtocolServersView.swift b/apps/ios/Shared/Views/UserSettings/ProtocolServersView.swift
index 382eaffbef..b9163d4bad 100644
--- a/apps/ios/Shared/Views/UserSettings/ProtocolServersView.swift
+++ b/apps/ios/Shared/Views/UserSettings/ProtocolServersView.swift
@@ -95,7 +95,7 @@ struct ProtocolServersView: View {
.sheet(isPresented: $showScanProtoServer) {
ScanProtocolServer(servers: $servers)
}
- .modifier(BackButton {
+ .modifier(BackButton(disabled: Binding.constant(false)) {
if saveDisabled {
dismiss()
justOpened = false
diff --git a/apps/ios/Shared/Views/UserSettings/SettingsView.swift b/apps/ios/Shared/Views/UserSettings/SettingsView.swift
index a691e6afc9..1799d8136a 100644
--- a/apps/ios/Shared/Views/UserSettings/SettingsView.swift
+++ b/apps/ios/Shared/Views/UserSettings/SettingsView.swift
@@ -27,7 +27,7 @@ let DEFAULT_NOTIFICATION_ALERT_SHOWN = "notificationAlertShown"
let DEFAULT_WEBRTC_POLICY_RELAY = "webrtcPolicyRelay"
let DEFAULT_WEBRTC_ICE_SERVERS = "webrtcICEServers"
let DEFAULT_CALL_KIT_CALLS_IN_RECENTS = "callKitCallsInRecents"
-let DEFAULT_PRIVACY_ACCEPT_IMAGES = "privacyAcceptImages"
+let DEFAULT_PRIVACY_ACCEPT_IMAGES = "privacyAcceptImages" // unused. Use GROUP_DEFAULT_PRIVACY_ACCEPT_IMAGES instead
let DEFAULT_PRIVACY_LINK_PREVIEWS = "privacyLinkPreviews"
let DEFAULT_PRIVACY_SIMPLEX_LINK_MODE = "privacySimplexLinkMode"
let DEFAULT_PRIVACY_SHOW_CHAT_PREVIEWS = "privacyShowChatPreviews"
@@ -51,6 +51,8 @@ let DEFAULT_SHOW_HIDDEN_PROFILES_NOTICE = "showHiddenProfilesNotice"
let DEFAULT_SHOW_MUTE_PROFILE_ALERT = "showMuteProfileAlert"
let DEFAULT_WHATS_NEW_VERSION = "defaultWhatsNewVersion"
let DEFAULT_ONBOARDING_STAGE = "onboardingStage"
+let DEFAULT_MIGRATION_TO_STAGE = "migrationToStage"
+let DEFAULT_MIGRATION_FROM_STAGE = "migrationFromStage"
let DEFAULT_CUSTOM_DISAPPEARING_MESSAGE_TIME = "customDisappearingMessageTime"
let DEFAULT_SHOW_UNREAD_AND_FAVORITES = "showUnreadAndFavorites"
let DEFAULT_DEVICE_NAME_FOR_REMOTE_ACCESS = "deviceNameForRemoteAccess"
@@ -58,6 +60,8 @@ let DEFAULT_CONFIRM_REMOTE_SESSIONS = "confirmRemoteSessions"
let DEFAULT_CONNECT_REMOTE_VIA_MULTICAST = "connectRemoteViaMulticast"
let DEFAULT_CONNECT_REMOTE_VIA_MULTICAST_AUTO = "connectRemoteViaMulticastAuto"
+let ANDROID_DEFAULT_CALL_ON_LOCK_SCREEN = "androidCallOnLockScreen"
+
let appDefaults: [String: Any] = [
DEFAULT_SHOW_LA_NOTICE: false,
DEFAULT_LA_NOTICE_SHOWN: false,
@@ -93,6 +97,7 @@ let appDefaults: [String: Any] = [
DEFAULT_CONFIRM_REMOTE_SESSIONS: false,
DEFAULT_CONNECT_REMOTE_VIA_MULTICAST: true,
DEFAULT_CONNECT_REMOTE_VIA_MULTICAST_AUTO: true,
+ ANDROID_DEFAULT_CALL_ON_LOCK_SCREEN: AppSettingsLockScreenCalls.show.rawValue
]
// not used anymore
@@ -148,10 +153,14 @@ struct SettingsView: View {
@EnvironmentObject var chatModel: ChatModel
@EnvironmentObject var sceneDelegate: SceneDelegate
@Binding var showSettings: Bool
+ @State private var showProgress: Bool = false
var body: some View {
ZStack {
settingsView()
+ if showProgress {
+ progressView()
+ }
if let la = chatModel.laRequest {
LocalAuthView(authRequest: la)
}
@@ -202,9 +211,17 @@ struct SettingsView: View {
} label: {
settingsRow("desktopcomputer") { Text("Use from desktop") }
}
+
+ NavigationLink {
+ MigrateFromDevice(showSettings: $showSettings, showProgressOnSettings: $showProgress)
+ .navigationTitle("Migrate device")
+ .navigationBarTitleDisplayMode(.large)
+ } label: {
+ settingsRow("tray.and.arrow.up") { Text("Migrate to another device") }
+ }
}
.disabled(chatModel.chatRunning != true)
-
+
Section("Settings") {
NavigationLink {
NotificationsView()
@@ -349,6 +366,13 @@ struct SettingsView: View {
}
}
+ private func progressView() -> some View {
+ VStack {
+ ProgressView().scaleEffect(2)
+ }
+ .frame(maxWidth: .infinity, maxHeight: .infinity )
+ }
+
private enum NotificationAlert {
case enable
case error(LocalizedStringKey, String)
diff --git a/apps/ios/Shared/Views/UserSettings/UserAddressView.swift b/apps/ios/Shared/Views/UserSettings/UserAddressView.swift
index e9657961ef..96eeffd16d 100644
--- a/apps/ios/Shared/Views/UserSettings/UserAddressView.swift
+++ b/apps/ios/Shared/Views/UserSettings/UserAddressView.swift
@@ -47,7 +47,7 @@ struct UserAddressView: View {
userAddressScrollView()
} else {
userAddressScrollView()
- .modifier(BackButton {
+ .modifier(BackButton(disabled: Binding.constant(false)) {
if savedAAS == aas {
dismiss()
} else {
diff --git a/apps/ios/Shared/Views/UserSettings/UserProfilesView.swift b/apps/ios/Shared/Views/UserSettings/UserProfilesView.swift
index f2cac59dae..af3d60c9c0 100644
--- a/apps/ios/Shared/Views/UserSettings/UserProfilesView.swift
+++ b/apps/ios/Shared/Views/UserSettings/UserProfilesView.swift
@@ -276,6 +276,7 @@ struct UserProfilesView: View {
// Deleting the last visible user while having hidden one(s)
try await deleteUser()
try await changeActiveUserAsync_(nil, viewPwd: nil)
+ try? await stopChatAsync()
await MainActor.run {
onboardingStageDefault.set(.step1_SimpleXInfo)
m.onboardingStage = .step1_SimpleXInfo
diff --git a/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff b/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff
index 85e4ebb985..f04880ee91 100644
--- a/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff
+++ b/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff
@@ -107,6 +107,10 @@
%@ свързан
No comment provided by engineer.
+
+ %@ downloaded
+ No comment provided by engineer.
+
%@ is connected!
%@ е свързан!
@@ -127,6 +131,10 @@
%@ сървъри
No comment provided by engineer.
+
+ %@ uploaded
+ No comment provided by engineer.
+
%@ wants to connect!
%@ иска да се свърже!
@@ -219,6 +227,7 @@
%lld messages blocked by admin
+ %lld съобщения, блокирани от администратора
No comment provided by engineer.
@@ -341,6 +350,10 @@
**Най-поверително**: не използвайте сървъра за известия SimpleX Chat, периодично проверявайте съобщенията във фонов режим (зависи от това колко често използвате приложението).
No comment provided by engineer.
+
+ **Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.
+ No comment provided by engineer.
+
**Please note**: you will NOT be able to recover or change passphrase if you lose it.
**Моля, обърнете внимание**: НЯМА да можете да възстановите или промените паролата, ако я загубите.
@@ -356,6 +369,10 @@
**Внимание**: Незабавните push известия изискват парола, запазена в Keychain.
No comment provided by engineer.
+
+ **Warning**: the archive will be removed.
+ No comment provided by engineer.
+
**e2e encrypted** audio call
**e2e криптиран**аудио разговор
@@ -612,6 +629,10 @@
Промяната на адреса ще бъде прекъсната. Ще се използва старият адрес за получаване.
No comment provided by engineer.
+
+ Admins can block a member for all.
+ No comment provided by engineer.
+
Admins can create the links to join groups.
Админите могат да създадат линкове за присъединяване към групи.
@@ -644,6 +665,7 @@
All messages will be deleted - this cannot be undone!
+ Всички съобщения ще бъдат изтрити - това не може да бъде отменено!
No comment provided by engineer.
@@ -666,6 +688,10 @@
Всички ваши контакти ще останат свързани. Актуализацията на профила ще бъде изпратена до вашите контакти.
No comment provided by engineer.
+
+ All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.
+ No comment provided by engineer.
+
Allow
Позволи
@@ -791,6 +817,10 @@
Компилация на приложението: %@
No comment provided by engineer.
+
+ App data migration
+ No comment provided by engineer.
+
App encrypts new local files (except videos).
Приложението криптира нови локални файлове (с изключение на видеоклипове).
@@ -826,6 +856,18 @@
Изглед
No comment provided by engineer.
+
+ Apply
+ No comment provided by engineer.
+
+
+ Archive and upload
+ No comment provided by engineer.
+
+
+ Archiving database
+ No comment provided by engineer.
+
Attach
Прикачи
@@ -923,6 +965,7 @@
Block for all
+ Блокирай за всички
No comment provided by engineer.
@@ -937,6 +980,7 @@
Block member for all?
+ Блокиране на член за всички?
No comment provided by engineer.
@@ -946,6 +990,7 @@
Blocked by admin
+ Блокиран от админ
No comment provided by engineer.
@@ -1013,6 +1058,10 @@
Отказ
No comment provided by engineer.
+
+ Cancel migration
+ No comment provided by engineer.
+
Cannot access keychain to save database password
Няма достъп до Keychain за запазване на паролата за базата данни
@@ -1114,6 +1163,10 @@
Чатът е спрян. Ако вече сте използвали тази база данни на друго устройство, трябва да я прехвърлите обратно, преди да стартирате чата отново.
No comment provided by engineer.
+
+ Chat migrated!
+ No comment provided by engineer.
+
Chat preferences
Чат настройки
@@ -1134,6 +1187,10 @@
Китайски и Испански интерфейс
No comment provided by engineer.
+
+ Choose _Migrate from another device_ on the new device and scan QR code.
+ No comment provided by engineer.
+
Choose file
Избери файл
@@ -1161,6 +1218,7 @@
Clear private notes?
+ Изчистване на лични бележки?
No comment provided by engineer.
@@ -1203,6 +1261,10 @@
Потвърди актуализаациите на базата данни
No comment provided by engineer.
+
+ Confirm network settings
+ No comment provided by engineer.
+
Confirm new passphrase…
Потвърди новата парола…
@@ -1213,6 +1275,14 @@
Потвърди парола
No comment provided by engineer.
+
+ Confirm that you remember database passphrase to migrate it.
+ No comment provided by engineer.
+
+
+ Confirm upload
+ No comment provided by engineer.
+
Connect
Свързване
@@ -1459,10 +1529,12 @@ This is your own one-time link!
Created at
+ Създаден на
No comment provided by engineer.
Created at: %@
+ Създаден на: %@
copied message info
@@ -1470,6 +1542,10 @@ This is your own one-time link!
Създаден на %@
No comment provided by engineer.
+
+ Creating archive link
+ No comment provided by engineer.
+
Creating link…
Линкът се създава…
@@ -1690,6 +1766,10 @@ This cannot be undone!
Изтрий базата данни
No comment provided by engineer.
+
+ Delete database from this device
+ No comment provided by engineer.
+
Delete file
Изтрий файл
@@ -1942,7 +2022,7 @@ This cannot be undone!
Discover via local network
- Открий през локалната мрежа
+ Откриване през локалната мрежа
No comment provided by engineer.
@@ -1980,11 +2060,23 @@ This cannot be undone!
Понижи версията и отвори чата
No comment provided by engineer.
+
+ Download failed
+ No comment provided by engineer.
+
Download file
Свали файл
server test step
+
+ Downloading archive
+ No comment provided by engineer.
+
+
+ Downloading link details
+ No comment provided by engineer.
+
Duplicate display name!
Дублирано име!
@@ -2040,6 +2132,10 @@ This cannot be undone!
Активиране за всички
No comment provided by engineer.
+
+ Enable in direct chats (BETA)!
+ No comment provided by engineer.
+
Enable instant notifications?
Активирай незабавни известия?
@@ -2155,6 +2251,10 @@ This cannot be undone!
Въведи име на групата…
No comment provided by engineer.
+
+ Enter passphrase
+ No comment provided by engineer.
+
Enter passphrase…
Въведи парола…
@@ -2215,6 +2315,10 @@ This cannot be undone!
Грешка при добавяне на член(ове)
No comment provided by engineer.
+
+ Error allowing contact PQ encryption
+ No comment provided by engineer.
+
Error changing address
Грешка при промяна на адреса
@@ -2252,6 +2356,7 @@ This cannot be undone!
Error creating message
+ Грешка при създаване на съобщение
No comment provided by engineer.
@@ -2304,6 +2409,10 @@ This cannot be undone!
Грешка при изтриване на потребителския профил
No comment provided by engineer.
+
+ Error downloading the archive
+ No comment provided by engineer.
+
Error enabling delivery receipts!
Грешка при активирането на потвърждениeто за доставка!
@@ -2379,6 +2488,10 @@ This cannot be undone!
Грешка при запазване на парола в Кeychain
No comment provided by engineer.
+
+ Error saving settings
+ when migrating
+
Error saving user password
Грешка при запазване на потребителска парола
@@ -2449,6 +2562,14 @@ This cannot be undone!
Грешка при актуализиране на поверителността на потребителя
No comment provided by engineer.
+
+ Error uploading the archive
+ No comment provided by engineer.
+
+
+ Error verifying passphrase:
+ No comment provided by engineer.
+
Error:
Грешка:
@@ -2499,6 +2620,10 @@ This cannot be undone!
Експортиран архив на базата данни.
No comment provided by engineer.
+
+ Exported file doesn't exist
+ No comment provided by engineer.
+
Exporting database archive…
Експортиране на архив на базата данни…
@@ -2569,6 +2694,14 @@ This cannot be undone!
Филтрирайте непрочетените и любимите чатове.
No comment provided by engineer.
+
+ Finalize migration
+ No comment provided by engineer.
+
+
+ Finalize migration on another device.
+ No comment provided by engineer.
+
Finally, we have them! 🚀
Най-накрая ги имаме! 🚀
@@ -2859,6 +2992,10 @@ This cannot be undone!
Как да използвате вашите сървъри
No comment provided by engineer.
+
+ Hungarian interface
+ No comment provided by engineer.
+
ICE servers (one per line)
ICE сървъри (по един на ред)
@@ -2924,8 +3061,17 @@ This cannot be undone!
Импортиране на база данни
No comment provided by engineer.
+
+ Import failed
+ No comment provided by engineer.
+
+
+ Importing archive
+ No comment provided by engineer.
+
Improved message delivery
+ Подобрена доставка на съобщения
No comment provided by engineer.
@@ -2938,6 +3084,10 @@ This cannot be undone!
Подобрена конфигурация на сървъра
No comment provided by engineer.
+
+ In order to continue, chat should be stopped.
+ No comment provided by engineer.
+
In reply to
В отговор на
@@ -3050,6 +3200,10 @@ This cannot be undone!
Невалиден линк
No comment provided by engineer.
+
+ Invalid migration confirmation
+ No comment provided by engineer.
+
Invalid name!
Невалидно име!
@@ -3153,6 +3307,7 @@ This cannot be undone!
Join group conversations
+ Присъединяване към групи
No comment provided by engineer.
@@ -3417,6 +3572,10 @@ This is your link for group %@!
Текст на съобщението
No comment provided by engineer.
+
+ Message too large
+ No comment provided by engineer.
+
Messages
Съобщения
@@ -3432,11 +3591,47 @@ This is your link for group %@!
Съобщенията от %@ ще бъдат показани!
No comment provided by engineer.
+
+ Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.
+ No comment provided by engineer.
+
+
+ Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.
+ No comment provided by engineer.
+
+
+ Migrate device
+ No comment provided by engineer.
+
+
+ Migrate from another device
+ No comment provided by engineer.
+
+
+ Migrate here
+ No comment provided by engineer.
+
+
+ Migrate to another device
+ No comment provided by engineer.
+
+
+ Migrate to another device via QR code.
+ No comment provided by engineer.
+
+
+ Migrating
+ No comment provided by engineer.
+
Migrating database archive…
Архивът на базата данни се мигрира…
No comment provided by engineer.
+
+ Migration complete
+ No comment provided by engineer.
+
Migration error:
Грешка при мигриране:
@@ -3796,6 +3991,10 @@ This is your link for group %@!
Отвори група
No comment provided by engineer.
+
+ Open migration to another device
+ authentication reason
+
Open user profiles
Отвори потребителските профили
@@ -3811,11 +4010,19 @@ This is your link for group %@!
Приложението се отваря…
No comment provided by engineer.
+
+ Or paste archive link
+ No comment provided by engineer.
+
Or scan QR code
Или сканирай QR код
No comment provided by engineer.
+
+ Or securely share this file link
+ No comment provided by engineer.
+
Or show this code
Или покажи този код
@@ -3863,6 +4070,7 @@ This is your link for group %@!
Past member %@
+ Бивш член %@
past/unknown group member
@@ -3877,6 +4085,7 @@ This is your link for group %@!
Paste link to connect!
+ Поставете линк, за да се свържете!
No comment provided by engineer.
@@ -3899,6 +4108,10 @@ This is your link for group %@!
Постоянна грешка при декриптиране
message decrypt error item
+
+ Picture-in-picture calls
+ No comment provided by engineer.
+
Please ask your contact to enable sending voice messages.
Моля, попитайте вашия контакт, за да активирате изпращане на гласови съобщения.
@@ -3919,6 +4132,10 @@ This is your link for group %@!
Моля, проверете вашите настройки и тези вашия за контакт.
No comment provided by engineer.
+
+ Please confirm that network settings are correct for this device.
+ No comment provided by engineer.
+
Please contact developers.
Error: %@
@@ -3976,6 +4193,10 @@ Error: %@
Въжможно е пръстовият отпечатък на сертификата в адреса на сървъра да е неправилен
server test error
+
+ Post-quantum E2EE
+ No comment provided by engineer.
+
Preserve the last message draft, with attachments.
Запазете последната чернова на съобщението с прикачени файлове.
@@ -4013,6 +4234,7 @@ Error: %@
Private notes
+ Лични бележки
name of notes to self
@@ -4110,6 +4332,14 @@ Error: %@
Push известия
No comment provided by engineer.
+
+ Push server
+ No comment provided by engineer.
+
+
+ Quantum resistant encryption
+ No comment provided by engineer.
+
Rate the app
Оценете приложението
@@ -4197,6 +4427,7 @@ Error: %@
Recent history and improved [directory bot](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).
+ Скорошна история и подобрен [bot за директория за групи](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPd jdLW3%23%2F%3Fv%3D1-2% 26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion).
No comment provided by engineer.
@@ -4294,11 +4525,23 @@ Error: %@
Изпрати отново заявката за свързване?
No comment provided by engineer.
+
+ Repeat download
+ No comment provided by engineer.
+
+
+ Repeat import
+ No comment provided by engineer.
+
Repeat join request?
Изпрати отново заявката за присъединяване?
No comment provided by engineer.
+
+ Repeat upload
+ No comment provided by engineer.
+
Reply
Отговори
@@ -4399,6 +4642,10 @@ Error: %@
SMP сървъри
No comment provided by engineer.
+
+ Safer groups
+ No comment provided by engineer.
+
Save
Запази
@@ -4486,6 +4733,7 @@ Error: %@
Saved message
+ Запазено съобщение
message info title
@@ -4520,6 +4768,7 @@ Error: %@
Search bar accepts invitation links.
+ Лентата за търсене приема линк за връзка.
No comment provided by engineer.
@@ -4762,6 +5011,10 @@ Error: %@
Задай kод за достъп
No comment provided by engineer.
+
+ Set passphrase
+ No comment provided by engineer.
+
Set passphrase to export
Задай парола за експортиране
@@ -4817,6 +5070,10 @@ Error: %@
Сподели с контактите
No comment provided by engineer.
+
+ Show QR code
+ No comment provided by engineer.
+
Show calls in phone history
Показване на обажданията в хронологията на телефона
@@ -4957,6 +5214,10 @@ Error: %@
Спри SimpleX
authentication reason
+
+ Stop chat
+ No comment provided by engineer.
+
Stop chat to enable database actions
Спрете чата, за да активирате действията с базата данни
@@ -4997,6 +5258,10 @@ Error: %@
Спри споделянето на адреса?
No comment provided by engineer.
+
+ Stopping chat
+ No comment provided by engineer.
+
Submit
Изпрати
@@ -5244,6 +5509,14 @@ It can happen because of some bug or when the connection is compromised.Това действие не може да бъде отменено - вашият профил, контакти, съобщения и файлове ще бъдат безвъзвратно загубени.
No comment provided by engineer.
+
+ This chat is protected by end-to-end encryption.
+ E2EE info chat item
+
+
+ This chat is protected by quantum resistant end-to-end encryption.
+ E2EE info chat item
+
This device name
Името на това устройство
@@ -5358,6 +5631,7 @@ You will be prompted to complete authentication before this feature is enabled.<
Turkish interface
+ Турски интерфейс
No comment provided by engineer.
@@ -5382,6 +5656,7 @@ You will be prompted to complete authentication before this feature is enabled.<
Unblock for all
+ Отблокирай за всички
No comment provided by engineer.
@@ -5391,6 +5666,7 @@ You will be prompted to complete authentication before this feature is enabled.<
Unblock member for all?
+ Отблокиране на член за всички?
No comment provided by engineer.
@@ -5535,11 +5811,19 @@ To connect, please ask your contact to create another connection link and check
Актуализирай и отвори чата
No comment provided by engineer.
+
+ Upload failed
+ No comment provided by engineer.
+
Upload file
Качи файл
server test step
+
+ Uploading archive
+ No comment provided by engineer.
+
Use .onion hosts
Използвай .onion хостове
@@ -5590,6 +5874,10 @@ To connect, please ask your contact to create another connection link and check
Използвай сървър
No comment provided by engineer.
+
+ Use the app while in the call.
+ No comment provided by engineer.
+
User profile
Потребителски профил
@@ -5607,27 +5895,35 @@ To connect, please ask your contact to create another connection link and check
Verify code with desktop
- Потвръди кода с настолното устройство
+ Потвърди кода с настолното устройство
No comment provided by engineer.
Verify connection
- Потвръди връзките
+ Потвърди връзка
No comment provided by engineer.
Verify connection security
- Потвръди сигурността на връзката
+ Потвърди сигурността на връзката
No comment provided by engineer.
Verify connections
- Потвръди връзките
+ Потвърждение за свързване
+ No comment provided by engineer.
+
+
+ Verify database passphrase
+ No comment provided by engineer.
+
+
+ Verify passphrase
No comment provided by engineer.
Verify security code
- Потвръди кода за сигурност
+ Потвърди кода за сигурност
No comment provided by engineer.
@@ -5715,6 +6011,10 @@ To connect, please ask your contact to create another connection link and check
Изчаква се получаването на видеото
No comment provided by engineer.
+
+ Warning: starting chat on multiple devices is not supported and will cause message delivery failures
+ No comment provided by engineer.
+
Warning: you may lose some data!
Предупреждение: Може да загубите някои данни!
@@ -5735,6 +6035,10 @@ To connect, please ask your contact to create another connection link and check
Съобщение при посрещане
No comment provided by engineer.
+
+ Welcome message is too long
+ No comment provided by engineer.
+
What's new
Какво е новото
@@ -5757,6 +6061,7 @@ To connect, please ask your contact to create another connection link and check
With encrypted files and media.
+ С криптирани файлове и медия.
No comment provided by engineer.
@@ -5766,6 +6071,7 @@ To connect, please ask your contact to create another connection link and check
With reduced battery usage.
+ С намален разход на батерията.
No comment provided by engineer.
@@ -5788,6 +6094,10 @@ To connect, please ask your contact to create another connection link and check
Вие
No comment provided by engineer.
+
+ You **must not** use the same database on two devices.
+ No comment provided by engineer.
+
You accepted connection
Вие приехте връзката
@@ -5875,6 +6185,10 @@ Repeat join request?
Можете да ги активирате по-късно през настройките за "Поверителност и сигурност" на приложението.
No comment provided by engineer.
+
+ You can give another try.
+ No comment provided by engineer.
+
You can hide or mute a user profile - swipe it to the right.
Можете да скриете или заглушите известията за потребителски профил - плъзнете надясно.
@@ -6269,15 +6583,17 @@ SimpleX сървърите не могат да видят вашия профи
blocked
блокиран
- No comment provided by engineer.
+ marked deleted chat item preview text
blocked %@
+ блокиран %@
rcv group event chat item
blocked by admin
- blocked chat item
+ блокиран от админ
+ marked deleted chat item preview text
bold
@@ -6306,7 +6622,7 @@ SimpleX сървърите не могат да видят вашия профи
changed address for you
- променен е адреса за вас
+ адреса за изпращане е променен
chat item text
@@ -6401,6 +6717,7 @@ SimpleX сървърите не могат да видят вашия профи
contact %1$@ changed to %2$@
+ името на контакта %1$@ е променено на %2$@
profile update event chat item
@@ -6675,6 +6992,7 @@ SimpleX сървърите не могат да видят вашия профи
member %1$@ changed to %2$@
+ името на члена %1$@ е променено на %2$@
profile update event chat item
@@ -6705,7 +7023,7 @@ SimpleX сървърите не могат да видят вашия профи
moderated by %@
модерирано от %@
- No comment provided by engineer.
+ marked deleted chat item preview text
months
@@ -6774,6 +7092,10 @@ SimpleX сървърите не могат да видят вашия профи
peer-to-peer
No comment provided by engineer.
+
+ quantum resistant e2e encryption
+ chat item text
+
received answer…
получен отговор…
@@ -6801,10 +7123,12 @@ SimpleX сървърите не могат да видят вашия профи
removed contact address
+ премахнат адрес за контакт
profile update event chat item
removed profile picture
+ премахната профилна снимка
profile update event chat item
@@ -6839,12 +7163,18 @@ SimpleX сървърите не могат да видят вашия профи
set new contact address
+ зададен нов адрес за контакт
profile update event chat item
set new profile picture
+ зададена нова профилна снимка
profile update event chat item
+
+ standard end-to-end encryption
+ chat item text
+
starting…
стартиране…
@@ -6862,6 +7192,7 @@ SimpleX сървърите не могат да видят вашия профи
unblocked %@
+ отблокиран %@
rcv group event chat item
@@ -6871,6 +7202,7 @@ SimpleX сървърите не могат да видят вашия профи
unknown status
+ неизвестен статус
No comment provided by engineer.
@@ -6880,6 +7212,7 @@ SimpleX сървърите не могат да видят вашия профи
updated profile
+ актуализиран профил
profile update event chat item
@@ -6954,16 +7287,17 @@ SimpleX сървърите не могат да видят вашия профи
you blocked %@
+ вие блокирахте %@
snd group event chat item
you changed address
- променихте адреса
+ адреса за получаване е променен
chat item text
you changed address for %@
- променихте адреса за %@
+ променихте адреса получаване за %@
chat item text
@@ -6998,6 +7332,7 @@ SimpleX сървърите не могат да видят вашия профи
you unblocked %@
+ вие отблокирахте %@
snd group event chat item
diff --git a/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff b/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff
index a376c86ad1..cf6e0e1fcd 100644
--- a/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff
+++ b/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff
@@ -107,6 +107,10 @@
%@ připojen
No comment provided by engineer.
+
+ %@ downloaded
+ No comment provided by engineer.
+
%@ is connected!
%@ je připojen!
@@ -127,6 +131,10 @@
%@ servery
No comment provided by engineer.
+
+ %@ uploaded
+ No comment provided by engineer.
+
%@ wants to connect!
%@ se chce připojit!
@@ -332,6 +340,10 @@
**Nejsoukromější**: nepoužívejte server oznámení SimpleX Chat, pravidelně kontrolujte zprávy na pozadí (závisí na tom, jak často aplikaci používáte).
No comment provided by engineer.
+
+ **Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.
+ No comment provided by engineer.
+
**Please note**: you will NOT be able to recover or change passphrase if you lose it.
**Upozornění**: Pokud heslo ztratíte, NEBUDETE jej moci obnovit ani změnit.
@@ -347,6 +359,10 @@
**Upozornění**: Okamžitě doručovaná oznámení vyžadují přístupové heslo uložené v Klíčence.
No comment provided by engineer.
+
+ **Warning**: the archive will be removed.
+ No comment provided by engineer.
+
**e2e encrypted** audio call
**e2e šifrovaný** audio hovor
@@ -598,6 +614,10 @@
Změna adresy bude přerušena. Budou použity staré přijímací adresy.
No comment provided by engineer.
+
+ Admins can block a member for all.
+ No comment provided by engineer.
+
Admins can create the links to join groups.
Správci mohou vytvářet odkazy pro připojení ke skupinám.
@@ -651,6 +671,10 @@
Všechny vaše kontakty zůstanou připojeny. Aktualizace profilu bude odeslána vašim kontaktům.
No comment provided by engineer.
+
+ All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.
+ No comment provided by engineer.
+
Allow
Povolit
@@ -774,6 +798,10 @@
Sestavení aplikace: %@
No comment provided by engineer.
+
+ App data migration
+ No comment provided by engineer.
+
App encrypts new local files (except videos).
Aplikace šifruje nové místní soubory (s výjimkou videí).
@@ -809,6 +837,18 @@
Vzhled
No comment provided by engineer.
+
+ Apply
+ No comment provided by engineer.
+
+
+ Archive and upload
+ No comment provided by engineer.
+
+
+ Archiving database
+ No comment provided by engineer.
+
Attach
Připojit
@@ -989,6 +1029,10 @@
Zrušit
No comment provided by engineer.
+
+ Cancel migration
+ No comment provided by engineer.
+
Cannot access keychain to save database password
Nelze získat přístup ke klíčence pro uložení hesla databáze
@@ -1089,6 +1133,10 @@
Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat.
No comment provided by engineer.
+
+ Chat migrated!
+ No comment provided by engineer.
+
Chat preferences
Předvolby chatu
@@ -1109,6 +1157,10 @@
Čínské a Španělské rozhranní
No comment provided by engineer.
+
+ Choose _Migrate from another device_ on the new device and scan QR code.
+ No comment provided by engineer.
+
Choose file
Vybrat soubor
@@ -1178,6 +1230,10 @@
Potvrdit aktualizaci databáze
No comment provided by engineer.
+
+ Confirm network settings
+ No comment provided by engineer.
+
Confirm new passphrase…
Potvrdit novou heslovou frázi…
@@ -1188,6 +1244,14 @@
Potvrdit heslo
No comment provided by engineer.
+
+ Confirm that you remember database passphrase to migrate it.
+ No comment provided by engineer.
+
+
+ Confirm upload
+ No comment provided by engineer.
+
Connect
Připojit
@@ -1428,6 +1492,10 @@ This is your own one-time link!
Vytvořeno na %@
No comment provided by engineer.
+
+ Creating archive link
+ No comment provided by engineer.
+
Creating link…
No comment provided by engineer.
@@ -1643,6 +1711,10 @@ This cannot be undone!
Odstranění databáze
No comment provided by engineer.
+
+ Delete database from this device
+ No comment provided by engineer.
+
Delete file
Smazat soubor
@@ -1927,11 +1999,23 @@ This cannot be undone!
Snížit a otevřít chat
No comment provided by engineer.
+
+ Download failed
+ No comment provided by engineer.
+
Download file
Stáhnout soubor
server test step
+
+ Downloading archive
+ No comment provided by engineer.
+
+
+ Downloading link details
+ No comment provided by engineer.
+
Duplicate display name!
Duplicitní zobrazované jméno!
@@ -1986,6 +2070,10 @@ This cannot be undone!
Povolit pro všechny
No comment provided by engineer.
+
+ Enable in direct chats (BETA)!
+ No comment provided by engineer.
+
Enable instant notifications?
Povolit okamžitá oznámení?
@@ -2097,6 +2185,10 @@ This cannot be undone!
Enter group name…
No comment provided by engineer.
+
+ Enter passphrase
+ No comment provided by engineer.
+
Enter passphrase…
Zadejte přístupovou frázi…
@@ -2155,6 +2247,10 @@ This cannot be undone!
Chyba přidávání člena(ů)
No comment provided by engineer.
+
+ Error allowing contact PQ encryption
+ No comment provided by engineer.
+
Error changing address
Chuba změny adresy
@@ -2244,6 +2340,10 @@ This cannot be undone!
Chyba mazání uživatelského profilu
No comment provided by engineer.
+
+ Error downloading the archive
+ No comment provided by engineer.
+
Error enabling delivery receipts!
Chyba povolení potvrzení o doručení!
@@ -2318,6 +2418,10 @@ This cannot be undone!
Při ukládání přístupové fráze do klíčenky došlo k chybě
No comment provided by engineer.
+
+ Error saving settings
+ when migrating
+
Error saving user password
Chyba ukládání hesla uživatele
@@ -2387,6 +2491,14 @@ This cannot be undone!
Chyba aktualizace soukromí uživatele
No comment provided by engineer.
+
+ Error uploading the archive
+ No comment provided by engineer.
+
+
+ Error verifying passphrase:
+ No comment provided by engineer.
+
Error:
Chyba:
@@ -2436,6 +2548,10 @@ This cannot be undone!
Exportovaný archiv databáze.
No comment provided by engineer.
+
+ Exported file doesn't exist
+ No comment provided by engineer.
+
Exporting database archive…
Exportuji archiv databáze…
@@ -2505,6 +2621,14 @@ This cannot be undone!
Filtrovat nepřečtené a oblíbené chaty.
No comment provided by engineer.
+
+ Finalize migration
+ No comment provided by engineer.
+
+
+ Finalize migration on another device.
+ No comment provided by engineer.
+
Finally, we have them! 🚀
Konečně je máme! 🚀
@@ -2790,6 +2914,10 @@ This cannot be undone!
Jak používat servery
No comment provided by engineer.
+
+ Hungarian interface
+ No comment provided by engineer.
+
ICE servers (one per line)
Servery ICE (jeden na řádek)
@@ -2855,6 +2983,14 @@ This cannot be undone!
Import databáze
No comment provided by engineer.
+
+ Import failed
+ No comment provided by engineer.
+
+
+ Importing archive
+ No comment provided by engineer.
+
Improved message delivery
No comment provided by engineer.
@@ -2869,6 +3005,10 @@ This cannot be undone!
Vylepšená konfigurace serveru
No comment provided by engineer.
+
+ In order to continue, chat should be stopped.
+ No comment provided by engineer.
+
In reply to
V odpovědi na
@@ -2976,6 +3116,10 @@ This cannot be undone!
Invalid link
No comment provided by engineer.
+
+ Invalid migration confirmation
+ No comment provided by engineer.
+
Invalid name!
No comment provided by engineer.
@@ -3331,6 +3475,10 @@ This is your link for group %@!
Text zprávy
No comment provided by engineer.
+
+ Message too large
+ No comment provided by engineer.
+
Messages
Zprávy
@@ -3345,11 +3493,47 @@ This is your link for group %@!
Messages from %@ will be shown!
No comment provided by engineer.
+
+ Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.
+ No comment provided by engineer.
+
+
+ Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.
+ No comment provided by engineer.
+
+
+ Migrate device
+ No comment provided by engineer.
+
+
+ Migrate from another device
+ No comment provided by engineer.
+
+
+ Migrate here
+ No comment provided by engineer.
+
+
+ Migrate to another device
+ No comment provided by engineer.
+
+
+ Migrate to another device via QR code.
+ No comment provided by engineer.
+
+
+ Migrating
+ No comment provided by engineer.
+
Migrating database archive…
Přenášení archivu databáze…
No comment provided by engineer.
+
+ Migration complete
+ No comment provided by engineer.
+
Migration error:
Chyba přenášení:
@@ -3705,6 +3889,10 @@ This is your link for group %@!
Open group
No comment provided by engineer.
+
+ Open migration to another device
+ authentication reason
+
Open user profiles
Otevřít uživatelské profily
@@ -3719,10 +3907,18 @@ This is your link for group %@!
Opening app…
No comment provided by engineer.
+
+ Or paste archive link
+ No comment provided by engineer.
+
Or scan QR code
No comment provided by engineer.
+
+ Or securely share this file link
+ No comment provided by engineer.
+
Or show this code
No comment provided by engineer.
@@ -3803,6 +3999,10 @@ This is your link for group %@!
Chyba dešifrování
message decrypt error item
+
+ Picture-in-picture calls
+ No comment provided by engineer.
+
Please ask your contact to enable sending voice messages.
Prosím, požádejte kontaktní osobu, aby umožnila odesílání hlasových zpráv.
@@ -3823,6 +4023,10 @@ This is your link for group %@!
Zkontrolujte prosím nastavení své i svého kontaktu.
No comment provided by engineer.
+
+ Please confirm that network settings are correct for this device.
+ No comment provided by engineer.
+
Please contact developers.
Error: %@
@@ -3878,6 +4082,10 @@ Error: %@
Je možné, že otisk certifikátu v adrese serveru je nesprávný
server test error
+
+ Post-quantum E2EE
+ No comment provided by engineer.
+
Preserve the last message draft, with attachments.
Zachování posledního návrhu zprávy s přílohami.
@@ -4010,6 +4218,14 @@ Error: %@
Nabízená oznámení
No comment provided by engineer.
+
+ Push server
+ No comment provided by engineer.
+
+
+ Quantum resistant encryption
+ No comment provided by engineer.
+
Rate the app
Ohodnoťte aplikaci
@@ -4192,10 +4408,22 @@ Error: %@
Repeat connection request?
No comment provided by engineer.
+
+ Repeat download
+ No comment provided by engineer.
+
+
+ Repeat import
+ No comment provided by engineer.
+
Repeat join request?
No comment provided by engineer.
+
+ Repeat upload
+ No comment provided by engineer.
+
Reply
Odpověď
@@ -4295,6 +4523,10 @@ Error: %@
SMP servery
No comment provided by engineer.
+
+ Safer groups
+ No comment provided by engineer.
+
Save
Uložit
@@ -4654,6 +4886,10 @@ Error: %@
Nastavit heslo
No comment provided by engineer.
+
+ Set passphrase
+ No comment provided by engineer.
+
Set passphrase to export
Nastavení přístupové fráze pro export
@@ -4708,6 +4944,10 @@ Error: %@
Sdílet s kontakty
No comment provided by engineer.
+
+ Show QR code
+ No comment provided by engineer.
+
Show calls in phone history
Ukaž hovory v historii telefonu
@@ -4847,6 +5087,10 @@ Error: %@
Zastavit SimpleX
authentication reason
+
+ Stop chat
+ No comment provided by engineer.
+
Stop chat to enable database actions
Zastavte chat pro povolení akcí databáze
@@ -4887,6 +5131,10 @@ Error: %@
Přestat sdílet adresu?
No comment provided by engineer.
+
+ Stopping chat
+ No comment provided by engineer.
+
Submit
Odeslat
@@ -5129,6 +5377,14 @@ Může se to stát kvůli nějaké chybě, nebo pokud je spojení kompromitován
Tuto akci nelze vzít zpět - váš profil, kontakty, zprávy a soubory budou nenávratně ztraceny.
No comment provided by engineer.
+
+ This chat is protected by end-to-end encryption.
+ E2EE info chat item
+
+
+ This chat is protected by quantum resistant end-to-end encryption.
+ E2EE info chat item
+
This device name
No comment provided by engineer.
@@ -5409,11 +5665,19 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu
Zvýšit a otevřít chat
No comment provided by engineer.
+
+ Upload failed
+ No comment provided by engineer.
+
Upload file
Nahrát soubor
server test step
+
+ Uploading archive
+ No comment provided by engineer.
+
Use .onion hosts
Použít hostitele .onion
@@ -5462,6 +5726,10 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu
Použít server
No comment provided by engineer.
+
+ Use the app while in the call.
+ No comment provided by engineer.
+
User profile
Profil uživatele
@@ -5494,6 +5762,14 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu
Verify connections
No comment provided by engineer.
+
+ Verify database passphrase
+ No comment provided by engineer.
+
+
+ Verify passphrase
+ No comment provided by engineer.
+
Verify security code
Ověření bezpečnostního kódu
@@ -5581,6 +5857,10 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu
Čekám na video
No comment provided by engineer.
+
+ Warning: starting chat on multiple devices is not supported and will cause message delivery failures
+ No comment provided by engineer.
+
Warning: you may lose some data!
Upozornění: můžete ztratit nějaká data!
@@ -5601,6 +5881,10 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu
Uvítací zpráva
No comment provided by engineer.
+
+ Welcome message is too long
+ No comment provided by engineer.
+
What's new
Co je nového
@@ -5654,6 +5938,10 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu
Vy
No comment provided by engineer.
+
+ You **must not** use the same database on two devices.
+ No comment provided by engineer.
+
You accepted connection
Přijali jste spojení
@@ -5733,6 +6021,10 @@ Repeat join request?
Můžete je povolit později v nastavení Soukromí & Bezpečnosti aplikace
No comment provided by engineer.
+
+ You can give another try.
+ No comment provided by engineer.
+
You can hide or mute a user profile - swipe it to the right.
Profil uživatele můžete skrýt nebo ztlumit - přejeďte prstem doprava.
@@ -6116,7 +6408,7 @@ Servery SimpleX nevidí váš profil.
blocked
- No comment provided by engineer.
+ marked deleted chat item preview text
blocked %@
@@ -6124,7 +6416,7 @@ Servery SimpleX nevidí váš profil.
blocked by admin
- blocked chat item
+ marked deleted chat item preview text
bold
@@ -6550,7 +6842,7 @@ Servery SimpleX nevidí váš profil.
moderated by %@
moderovaný %@
- No comment provided by engineer.
+ marked deleted chat item preview text
months
@@ -6619,6 +6911,10 @@ Servery SimpleX nevidí váš profil.
peer-to-peer
No comment provided by engineer.
+
+ quantum resistant e2e encryption
+ chat item text
+
received answer…
obdržel odpověď…
@@ -6690,6 +6986,10 @@ Servery SimpleX nevidí váš profil.
set new profile picture
profile update event chat item
+
+ standard end-to-end encryption
+ chat item text
+
starting…
začíná…
diff --git a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff
index d0f217a0e1..3ed8ecbaeb 100644
--- a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff
+++ b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff
@@ -107,6 +107,11 @@
%@ wurde mit Ihnen verbunden
No comment provided by engineer.
+
+ %@ downloaded
+ %@ heruntergeladen
+ No comment provided by engineer.
+
%@ is connected!
%@ ist mit Ihnen verbunden!
@@ -127,6 +132,11 @@
%@-Server
No comment provided by engineer.
+
+ %@ uploaded
+ %@ hochgeladen
+ No comment provided by engineer.
+
%@ wants to connect!
%@ will sich mit Ihnen verbinden!
@@ -342,6 +352,11 @@
**Beste Privatsphäre**: Es wird kein SimpleX-Chat-Benachrichtigungs-Server genutzt, Nachrichten werden in periodischen Abständen im Hintergrund geprüft (dies hängt davon ab, wie häufig Sie die App nutzen).
No comment provided by engineer.
+
+ **Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.
+ **Bitte beachten Sie**: Aus Sicherheitsgründen wird die Nachrichtenentschlüsselung Ihrer Verbindungen abgebrochen, wenn Sie die gleiche Datenbank auf zwei Geräten nutzen.
+ No comment provided by engineer.
+
**Please note**: you will NOT be able to recover or change passphrase if you lose it.
**Bitte beachten Sie**: Das Passwort kann NICHT wiederhergestellt oder geändert werden, wenn Sie es vergessen haben oder verlieren.
@@ -357,6 +372,11 @@
**Warnung**: Sofortige Push-Benachrichtigungen erfordern die Eingabe eines Passworts, welches in Ihrem Schlüsselbund gespeichert ist.
No comment provided by engineer.
+
+ **Warning**: the archive will be removed.
+ **Warnung**: Das Archiv wird gelöscht.
+ No comment provided by engineer.
+
**e2e encrypted** audio call
**E2E-verschlüsselter** Audioanruf
@@ -613,6 +633,11 @@
Der Wechsel der Empfängeradresse wird abgebrochen. Die bisherige Adresse wird weiter verwendet.
No comment provided by engineer.
+
+ Admins can block a member for all.
+ Administratoren können für ein Mitglied alle Funktionen blockieren.
+ No comment provided by engineer.
+
Admins can create the links to join groups.
Administratoren können Links für den Beitritt zu Gruppen erzeugen.
@@ -668,6 +693,11 @@
Alle Ihre Kontakte bleiben verbunden. Es wird eine Profilaktualisierung an Ihre Kontakte gesendet.
No comment provided by engineer.
+
+ All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.
+ Alle Ihre Kontakte, Unterhaltungen und Dateien werden sicher verschlüsselt und in Daten-Paketen auf die konfigurierten XTFP-Server hochgeladen.
+ No comment provided by engineer.
+
Allow
Erlauben
@@ -793,6 +823,11 @@
App Build: %@
No comment provided by engineer.
+
+ App data migration
+ App-Daten-Migration
+ No comment provided by engineer.
+
App encrypts new local files (except videos).
Neue lokale Dateien (außer Video-Dateien) werden von der App verschlüsselt.
@@ -828,6 +863,21 @@
Erscheinungsbild
No comment provided by engineer.
+
+ Apply
+ Anwenden
+ No comment provided by engineer.
+
+
+ Archive and upload
+ Archivieren und Hochladen
+ No comment provided by engineer.
+
+
+ Archiving database
+ Datenbank wird archiviert
+ No comment provided by engineer.
+
Attach
Anhängen
@@ -1018,6 +1068,11 @@
Abbrechen
No comment provided by engineer.
+
+ Cancel migration
+ Migration abbrechen
+ No comment provided by engineer.
+
Cannot access keychain to save database password
Die App kann nicht auf den Schlüsselbund zugreifen, um das Datenbank-Passwort zu speichern
@@ -1119,6 +1174,11 @@
Der Chat ist angehalten. Wenn Sie diese Datenbank bereits auf einem anderen Gerät genutzt haben, sollten Sie diese vor dem Starten des Chats wieder zurückspielen.
No comment provided by engineer.
+
+ Chat migrated!
+ Chat wurde migriert!
+ No comment provided by engineer.
+
Chat preferences
Chat-Präferenzen
@@ -1139,6 +1199,11 @@
Chinesische und spanische Bedienoberfläche
No comment provided by engineer.
+
+ Choose _Migrate from another device_ on the new device and scan QR code.
+ Wählen Sie auf dem neuen Gerät _Von einem anderen Gerät migrieren_ und scannen Sie den QR-Code.
+ No comment provided by engineer.
+
Choose file
Datei auswählen
@@ -1209,6 +1274,11 @@
Datenbank-Aktualisierungen bestätigen
No comment provided by engineer.
+
+ Confirm network settings
+ Bestätigen Sie die Netzwerkeinstellungen
+ No comment provided by engineer.
+
Confirm new passphrase…
Neues Passwort bestätigen…
@@ -1219,6 +1289,16 @@
Passwort bestätigen
No comment provided by engineer.
+
+ Confirm that you remember database passphrase to migrate it.
+ Für die Migration bestätigen Sie bitte, dass Sie sich an das Datenbank-Passwort erinnern.
+ No comment provided by engineer.
+
+
+ Confirm upload
+ Hochladen bestätigen
+ No comment provided by engineer.
+
Connect
Verbinden
@@ -1478,6 +1558,11 @@ Das ist Ihr eigener Einmal-Link!
Erstellt am %@
No comment provided by engineer.
+
+ Creating archive link
+ Archiv-Link erzeugen
+ No comment provided by engineer.
+
Creating link…
Link wird erstellt…
@@ -1698,6 +1783,11 @@ Das kann nicht rückgängig gemacht werden!
Datenbank löschen
No comment provided by engineer.
+
+ Delete database from this device
+ Datenbank auf diesem Gerät löschen
+ No comment provided by engineer.
+
Delete file
Datei löschen
@@ -1988,11 +2078,26 @@ Das kann nicht rückgängig gemacht werden!
Datenbank herabstufen und den Chat öffnen
No comment provided by engineer.
+
+ Download failed
+ Herunterladen fehlgeschlagen
+ No comment provided by engineer.
+
Download file
Datei herunterladen
server test step
+
+ Downloading archive
+ Archiv wird heruntergeladen
+ No comment provided by engineer.
+
+
+ Downloading link details
+ Link-Details werden heruntergeladen
+ No comment provided by engineer.
+
Duplicate display name!
Doppelter Anzeigename!
@@ -2048,6 +2153,11 @@ Das kann nicht rückgängig gemacht werden!
Für Alle aktivieren
No comment provided by engineer.
+
+ Enable in direct chats (BETA)!
+ Kann in direkten Chats aktiviert werden (BETA)!
+ No comment provided by engineer.
+
Enable instant notifications?
Sofortige Benachrichtigungen aktivieren?
@@ -2163,6 +2273,11 @@ Das kann nicht rückgängig gemacht werden!
Geben Sie den Gruppennamen ein…
No comment provided by engineer.
+
+ Enter passphrase
+ Passwort eingeben
+ No comment provided by engineer.
+
Enter passphrase…
Passwort eingeben…
@@ -2223,6 +2338,11 @@ Das kann nicht rückgängig gemacht werden!
Fehler beim Hinzufügen von Mitgliedern
No comment provided by engineer.
+
+ Error allowing contact PQ encryption
+ Fehler beim Zulassen der Kontakt-PQ-Verschlüsselung
+ No comment provided by engineer.
+
Error changing address
Fehler beim Wechseln der Empfängeradresse
@@ -2313,6 +2433,11 @@ Das kann nicht rückgängig gemacht werden!
Fehler beim Löschen des Benutzerprofils
No comment provided by engineer.
+
+ Error downloading the archive
+ Fehler beim Herunterladen des Archivs
+ No comment provided by engineer.
+
Error enabling delivery receipts!
Fehler beim Aktivieren von Empfangsbestätigungen!
@@ -2388,6 +2513,11 @@ Das kann nicht rückgängig gemacht werden!
Fehler beim Speichern des Passworts in den Schlüsselbund
No comment provided by engineer.
+
+ Error saving settings
+ Fehler beim Abspeichern der Einstellungen
+ when migrating
+
Error saving user password
Fehler beim Speichern des Benutzer-Passworts
@@ -2458,6 +2588,16 @@ Das kann nicht rückgängig gemacht werden!
Fehler beim Aktualisieren der Benutzer-Privatsphäre
No comment provided by engineer.
+
+ Error uploading the archive
+ Fehler beim Hochladen des Archivs
+ No comment provided by engineer.
+
+
+ Error verifying passphrase:
+ Fehler bei der Überprüfung des Passworts:
+ No comment provided by engineer.
+
Error:
Fehler:
@@ -2508,6 +2648,11 @@ Das kann nicht rückgängig gemacht werden!
Exportiertes Datenbankarchiv.
No comment provided by engineer.
+
+ Exported file doesn't exist
+ Die exportierte Datei ist nicht vorhanden
+ No comment provided by engineer.
+
Exporting database archive…
Exportieren des Datenbank-Archivs…
@@ -2578,6 +2723,16 @@ Das kann nicht rückgängig gemacht werden!
Nach ungelesenen und favorisierten Chats filtern.
No comment provided by engineer.
+
+ Finalize migration
+ Die Migration wird abgeschlossen
+ No comment provided by engineer.
+
+
+ Finalize migration on another device.
+ Die Migration auf dem anderen Gerät wird abgeschlossen.
+ No comment provided by engineer.
+
Finally, we have them! 🚀
Endlich haben wir sie! 🚀
@@ -2868,6 +3023,11 @@ Das kann nicht rückgängig gemacht werden!
Wie Sie Ihre Server nutzen
No comment provided by engineer.
+
+ Hungarian interface
+ Ungarische Bedienoberfläche
+ No comment provided by engineer.
+
ICE servers (one per line)
ICE-Server (einer pro Zeile)
@@ -2933,6 +3093,16 @@ Das kann nicht rückgängig gemacht werden!
Datenbank importieren
No comment provided by engineer.
+
+ Import failed
+ Import ist fehlgeschlagen
+ No comment provided by engineer.
+
+
+ Importing archive
+ Archiv wird importiert
+ No comment provided by engineer.
+
Improved message delivery
Verbesserte Zustellung von Nachrichten
@@ -2948,6 +3118,11 @@ Das kann nicht rückgängig gemacht werden!
Verbesserte Serverkonfiguration
No comment provided by engineer.
+
+ In order to continue, chat should be stopped.
+ Um fortzufahren, sollte der Chat beendet werden.
+ No comment provided by engineer.
+
In reply to
Als Antwort auf
@@ -3060,6 +3235,11 @@ Das kann nicht rückgängig gemacht werden!
Ungültiger Link
No comment provided by engineer.
+
+ Invalid migration confirmation
+ Migrations-Bestätigung ungültig
+ No comment provided by engineer.
+
Invalid name!
Ungültiger Name!
@@ -3428,6 +3608,11 @@ Das ist Ihr Link für die Gruppe %@!
Nachrichtentext
No comment provided by engineer.
+
+ Message too large
+ Die Nachricht ist zu lang
+ No comment provided by engineer.
+
Messages
Nachrichten
@@ -3443,11 +3628,56 @@ Das ist Ihr Link für die Gruppe %@!
Die Nachrichten von %@ werden angezeigt!
No comment provided by engineer.
+
+ Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.
+ Nachrichten, Dateien und Anrufe sind durch **Ende-zu-Ende-Verschlüsselung** mit Perfect Forward Secrecy, Ablehnung und Einbruchs-Wiederherstellung geschützt.
+ No comment provided by engineer.
+
+
+ Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.
+ Nachrichten, Dateien und Anrufe sind durch **Quantum-resistente E2E-Verschlüsselung** mit Perfect Forward Secrecy, Ablehnung und Einbruchs-Wiederherstellung geschützt.
+ No comment provided by engineer.
+
+
+ Migrate device
+ Gerät migrieren
+ No comment provided by engineer.
+
+
+ Migrate from another device
+ Von einem anderen Gerät migrieren
+ No comment provided by engineer.
+
+
+ Migrate here
+ Hierher migrieren
+ No comment provided by engineer.
+
+
+ Migrate to another device
+ Auf ein anderes Gerät migrieren
+ No comment provided by engineer.
+
+
+ Migrate to another device via QR code.
+ Über einen QR-Code auf ein anderes Gerät migrieren.
+ No comment provided by engineer.
+
+
+ Migrating
+ Migrieren
+ No comment provided by engineer.
+
Migrating database archive…
Datenbank-Archiv wird migriert…
No comment provided by engineer.
+
+ Migration complete
+ Migration abgeschlossen
+ No comment provided by engineer.
+
Migration error:
Fehler bei der Migration:
@@ -3807,6 +4037,11 @@ Das ist Ihr Link für die Gruppe %@!
Gruppe öffnen
No comment provided by engineer.
+
+ Open migration to another device
+ Migration auf ein anderes Gerät öffnen
+ authentication reason
+
Open user profiles
Benutzerprofile öffnen
@@ -3822,11 +4057,21 @@ Das ist Ihr Link für die Gruppe %@!
App wird geöffnet…
No comment provided by engineer.
+
+ Or paste archive link
+ Oder fügen Sie den Archiv-Link ein
+ No comment provided by engineer.
+
Or scan QR code
Oder den QR-Code scannen
No comment provided by engineer.
+
+ Or securely share this file link
+ Oder teilen Sie diesen Datei-Link sicher
+ No comment provided by engineer.
+
Or show this code
Oder diesen QR-Code anzeigen
@@ -3912,6 +4157,11 @@ Das ist Ihr Link für die Gruppe %@!
Entschlüsselungsfehler
message decrypt error item
+
+ Picture-in-picture calls
+ Bild-in-Bild-Anrufe
+ No comment provided by engineer.
+
Please ask your contact to enable sending voice messages.
Bitten Sie Ihren Kontakt darum, das Senden von Sprachnachrichten zu aktivieren.
@@ -3932,6 +4182,11 @@ Das ist Ihr Link für die Gruppe %@!
Bitte überprüfen sie sowohl Ihre, als auch die Präferenzen Ihres Kontakts.
No comment provided by engineer.
+
+ Please confirm that network settings are correct for this device.
+ Bitte bestätigen Sie, dass die Netzwerkeinstellungen auf diesem Gerät richtig sind.
+ No comment provided by engineer.
+
Please contact developers.
Error: %@
@@ -3989,6 +4244,11 @@ Fehler: %@
Der Fingerabdruck des Zertifikats in der Serveradresse ist wahrscheinlich ungültig
server test error
+
+ Post-quantum E2EE
+ Post-Quantum E2E-Verschlüsselung
+ No comment provided by engineer.
+
Preserve the last message draft, with attachments.
Den letzten Nachrichtenentwurf, auch mit seinen Anhängen, aufbewahren.
@@ -4124,6 +4384,16 @@ Fehler: %@
Push-Benachrichtigungen
No comment provided by engineer.
+
+ Push server
+ Push-Server
+ No comment provided by engineer.
+
+
+ Quantum resistant encryption
+ Quantum-resistente Verschlüsselung
+ No comment provided by engineer.
+
Rate the app
Bewerten Sie die App
@@ -4309,11 +4579,26 @@ Fehler: %@
Verbindungsanfrage wiederholen?
No comment provided by engineer.
+
+ Repeat download
+ Herunterladen wiederholen
+ No comment provided by engineer.
+
+
+ Repeat import
+ Import wiederholen
+ No comment provided by engineer.
+
Repeat join request?
Verbindungsanfrage wiederholen?
No comment provided by engineer.
+
+ Repeat upload
+ Hochladen wiederholen
+ No comment provided by engineer.
+
Reply
Antwort
@@ -4414,6 +4699,11 @@ Fehler: %@
SMP-Server
No comment provided by engineer.
+
+ Safer groups
+ Sicherere Gruppen
+ No comment provided by engineer.
+
Save
Speichern
@@ -4536,7 +4826,7 @@ Fehler: %@
Search bar accepts invitation links.
- Von der Suchleiste werden Einladungslinks akzeptiert.
+ In der Suchleiste werden nun auch Einladungslinks akzeptiert.
No comment provided by engineer.
@@ -4779,6 +5069,11 @@ Fehler: %@
Zugangscode einstellen
No comment provided by engineer.
+
+ Set passphrase
+ Passwort festlegen
+ No comment provided by engineer.
+
Set passphrase to export
Passwort für den Export festlegen
@@ -4834,6 +5129,11 @@ Fehler: %@
Mit Kontakten teilen
No comment provided by engineer.
+
+ Show QR code
+ QR-Code anzeigen
+ No comment provided by engineer.
+
Show calls in phone history
Anrufliste anzeigen
@@ -4974,6 +5274,11 @@ Fehler: %@
Stoppen Sie SimpleX
authentication reason
+
+ Stop chat
+ Chat beenden
+ No comment provided by engineer.
+
Stop chat to enable database actions
Chat beenden, um Datenbankaktionen zu erlauben
@@ -5014,6 +5319,11 @@ Fehler: %@
Das Teilen der Adresse beenden?
No comment provided by engineer.
+
+ Stopping chat
+ Chat wird beendet
+ No comment provided by engineer.
+
Submit
Bestätigen
@@ -5261,6 +5571,16 @@ Dies kann passieren, wenn es einen Fehler gegeben hat oder die Verbindung kompro
Diese Aktion kann nicht rückgängig gemacht werden! Ihr Profil und Ihre Kontakte, Nachrichten und Dateien gehen unwiderruflich verloren.
No comment provided by engineer.
+
+ This chat is protected by end-to-end encryption.
+ Dieser Chat ist durch Ende-zu-Ende-Verschlüsselung geschützt.
+ E2EE info chat item
+
+
+ This chat is protected by quantum resistant end-to-end encryption.
+ Dieser Chat ist durch Quantum-resistente Ende-zu-Ende-Verschlüsselung geschützt.
+ E2EE info chat item
+
This device name
Dieser Gerätename
@@ -5555,11 +5875,21 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s
Aktualisieren und den Chat öffnen
No comment provided by engineer.
+
+ Upload failed
+ Hochladen fehlgeschlagen
+ No comment provided by engineer.
+
Upload file
Datei hochladen
server test step
+
+ Uploading archive
+ Archiv wird hochgeladen
+ No comment provided by engineer.
+
Use .onion hosts
Verwende .onion-Hosts
@@ -5610,6 +5940,11 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s
Server nutzen
No comment provided by engineer.
+
+ Use the app while in the call.
+ Die App kann während eines Anrufs genutzt werden.
+ No comment provided by engineer.
+
User profile
Benutzerprofil
@@ -5645,6 +5980,16 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s
Verbindungen überprüfen
No comment provided by engineer.
+
+ Verify database passphrase
+ Überprüfen Sie das Datenbank-Passwort
+ No comment provided by engineer.
+
+
+ Verify passphrase
+ Überprüfen Sie das Passwort
+ No comment provided by engineer.
+
Verify security code
Sicherheitscode überprüfen
@@ -5735,6 +6080,11 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s
Auf das Video warten
No comment provided by engineer.
+
+ Warning: starting chat on multiple devices is not supported and will cause message delivery failures
+ Warnung: Das Starten des Chats auf mehreren Geräten wird nicht unterstützt und wird zu Fehlern bei der Nachrichtenübermittlung führen
+ No comment provided by engineer.
+
Warning: you may lose some data!
Warnung: Sie könnten einige Daten verlieren!
@@ -5755,6 +6105,11 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s
Begrüßungsmeldung
No comment provided by engineer.
+
+ Welcome message is too long
+ Die Begrüßungsmeldung ist zu lang
+ No comment provided by engineer.
+
What's new
Was ist neu
@@ -5810,6 +6165,11 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s
Profil
No comment provided by engineer.
+
+ You **must not** use the same database on two devices.
+ Sie dürfen die selbe Datenbank **nicht** auf zwei Geräten nutzen.
+ No comment provided by engineer.
+
You accepted connection
Sie haben die Verbindung akzeptiert
@@ -5897,6 +6257,11 @@ Verbindungsanfrage wiederholen?
Sie können diese später in den Datenschutz & Sicherheits-Einstellungen der App aktivieren.
No comment provided by engineer.
+
+ You can give another try.
+ Sie können es nochmal probieren.
+ No comment provided by engineer.
+
You can hide or mute a user profile - swipe it to the right.
Sie können ein Benutzerprofil verbergen oder stummschalten - wischen Sie es nach rechts.
@@ -6291,7 +6656,7 @@ SimpleX-Server können Ihr Profil nicht einsehen.
blocked
Blockiert
- No comment provided by engineer.
+ marked deleted chat item preview text
blocked %@
@@ -6301,7 +6666,7 @@ SimpleX-Server können Ihr Profil nicht einsehen.
blocked by admin
wurde vom Administrator blockiert
- blocked chat item
+ marked deleted chat item preview text
bold
@@ -6425,7 +6790,7 @@ SimpleX-Server können Ihr Profil nicht einsehen.
contact %1$@ changed to %2$@
- Der Kontaktname %1$@ wurde auf %2$@ geändert
+ Der Kontaktname wurde von %1$@ auf %2$@ geändert
profile update event chat item
@@ -6700,7 +7065,7 @@ SimpleX-Server können Ihr Profil nicht einsehen.
member %1$@ changed to %2$@
- Der Mitgliedsname %1$@ wurde auf %2$@ geändert
+ Der Mitgliedsname von %1$@ wurde auf %2$@ geändert
profile update event chat item
@@ -6731,7 +7096,7 @@ SimpleX-Server können Ihr Profil nicht einsehen.
moderated by %@
Von %@ moderiert
- No comment provided by engineer.
+ marked deleted chat item preview text
months
@@ -6800,6 +7165,11 @@ SimpleX-Server können Ihr Profil nicht einsehen.
Peer-to-Peer
No comment provided by engineer.
+
+ quantum resistant e2e encryption
+ Quantum-resistente E2E-Verschlüsselung
+ chat item text
+
received answer…
Antwort erhalten…
@@ -6827,12 +7197,12 @@ SimpleX-Server können Ihr Profil nicht einsehen.
removed contact address
- Kontaktadresse wurde entfernt
+ Die Kontaktadresse wurde entfernt
profile update event chat item
removed profile picture
- Profil-Bild wurde entfernt
+ Das Profil-Bild wurde entfernt
profile update event chat item
@@ -6867,14 +7237,19 @@ SimpleX-Server können Ihr Profil nicht einsehen.
set new contact address
- Neue Kontaktadresse wurde festgelegt
+ Es wurde eine neue Kontaktadresse festgelegt
profile update event chat item
set new profile picture
- Neues Profil-Bild wurde festgelegt
+ Es wurde ein neues Profil-Bild festgelegt
profile update event chat item
+
+ standard end-to-end encryption
+ Standard-Ende-zu-Ende-Verschlüsselung
+ chat item text
+
starting…
Verbindung wird gestartet…
diff --git a/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff b/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff
index b2b9cbce59..39ee4e2a9b 100644
--- a/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff
+++ b/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff
@@ -107,6 +107,11 @@
%@ connected
No comment provided by engineer.
+
+ %@ downloaded
+ %@ downloaded
+ No comment provided by engineer.
+
%@ is connected!
%@ is connected!
@@ -127,6 +132,11 @@
%@ servers
No comment provided by engineer.
+
+ %@ uploaded
+ %@ uploaded
+ No comment provided by engineer.
+
%@ wants to connect!
%@ wants to connect!
@@ -342,6 +352,11 @@
**Most private**: do not use SimpleX Chat notifications server, check messages periodically in the background (depends on how often you use the app).
No comment provided by engineer.
+
+ **Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.
+ **Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.
+ No comment provided by engineer.
+
**Please note**: you will NOT be able to recover or change passphrase if you lose it.
**Please note**: you will NOT be able to recover or change passphrase if you lose it.
@@ -357,6 +372,11 @@
**Warning**: Instant push notifications require passphrase saved in Keychain.
No comment provided by engineer.
+
+ **Warning**: the archive will be removed.
+ **Warning**: the archive will be removed.
+ No comment provided by engineer.
+
**e2e encrypted** audio call
**e2e encrypted** audio call
@@ -613,6 +633,11 @@
Address change will be aborted. Old receiving address will be used.
No comment provided by engineer.
+
+ Admins can block a member for all.
+ Admins can block a member for all.
+ No comment provided by engineer.
+
Admins can create the links to join groups.
Admins can create the links to join groups.
@@ -668,6 +693,11 @@
All your contacts will remain connected. Profile update will be sent to your contacts.
No comment provided by engineer.
+
+ All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.
+ All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.
+ No comment provided by engineer.
+
Allow
Allow
@@ -793,6 +823,11 @@
App build: %@
No comment provided by engineer.
+
+ App data migration
+ App data migration
+ No comment provided by engineer.
+
App encrypts new local files (except videos).
App encrypts new local files (except videos).
@@ -828,6 +863,21 @@
Appearance
No comment provided by engineer.
+
+ Apply
+ Apply
+ No comment provided by engineer.
+
+
+ Archive and upload
+ Archive and upload
+ No comment provided by engineer.
+
+
+ Archiving database
+ Archiving database
+ No comment provided by engineer.
+
Attach
Attach
@@ -1018,6 +1068,11 @@
Cancel
No comment provided by engineer.
+
+ Cancel migration
+ Cancel migration
+ No comment provided by engineer.
+
Cannot access keychain to save database password
Cannot access keychain to save database password
@@ -1119,6 +1174,11 @@
Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat.
No comment provided by engineer.
+
+ Chat migrated!
+ Chat migrated!
+ No comment provided by engineer.
+
Chat preferences
Chat preferences
@@ -1139,6 +1199,11 @@
Chinese and Spanish interface
No comment provided by engineer.
+
+ Choose _Migrate from another device_ on the new device and scan QR code.
+ Choose _Migrate from another device_ on the new device and scan QR code.
+ No comment provided by engineer.
+
Choose file
Choose file
@@ -1209,6 +1274,11 @@
Confirm database upgrades
No comment provided by engineer.
+
+ Confirm network settings
+ Confirm network settings
+ No comment provided by engineer.
+
Confirm new passphrase…
Confirm new passphrase…
@@ -1219,6 +1289,16 @@
Confirm password
No comment provided by engineer.
+
+ Confirm that you remember database passphrase to migrate it.
+ Confirm that you remember database passphrase to migrate it.
+ No comment provided by engineer.
+
+
+ Confirm upload
+ Confirm upload
+ No comment provided by engineer.
+
Connect
Connect
@@ -1478,6 +1558,11 @@ This is your own one-time link!
Created on %@
No comment provided by engineer.
+
+ Creating archive link
+ Creating archive link
+ No comment provided by engineer.
+
Creating link…
Creating link…
@@ -1698,6 +1783,11 @@ This cannot be undone!
Delete database
No comment provided by engineer.
+
+ Delete database from this device
+ Delete database from this device
+ No comment provided by engineer.
+
Delete file
Delete file
@@ -1988,11 +2078,26 @@ This cannot be undone!
Downgrade and open chat
No comment provided by engineer.
+
+ Download failed
+ Download failed
+ No comment provided by engineer.
+
Download file
Download file
server test step
+
+ Downloading archive
+ Downloading archive
+ No comment provided by engineer.
+
+
+ Downloading link details
+ Downloading link details
+ No comment provided by engineer.
+
Duplicate display name!
Duplicate display name!
@@ -2048,6 +2153,11 @@ This cannot be undone!
Enable for all
No comment provided by engineer.
+
+ Enable in direct chats (BETA)!
+ Enable in direct chats (BETA)!
+ No comment provided by engineer.
+
Enable instant notifications?
Enable instant notifications?
@@ -2163,6 +2273,11 @@ This cannot be undone!
Enter group name…
No comment provided by engineer.
+
+ Enter passphrase
+ Enter passphrase
+ No comment provided by engineer.
+
Enter passphrase…
Enter passphrase…
@@ -2223,6 +2338,11 @@ This cannot be undone!
Error adding member(s)
No comment provided by engineer.
+
+ Error allowing contact PQ encryption
+ Error allowing contact PQ encryption
+ No comment provided by engineer.
+
Error changing address
Error changing address
@@ -2313,6 +2433,11 @@ This cannot be undone!
Error deleting user profile
No comment provided by engineer.
+
+ Error downloading the archive
+ Error downloading the archive
+ No comment provided by engineer.
+
Error enabling delivery receipts!
Error enabling delivery receipts!
@@ -2388,6 +2513,11 @@ This cannot be undone!
Error saving passphrase to keychain
No comment provided by engineer.
+
+ Error saving settings
+ Error saving settings
+ when migrating
+
Error saving user password
Error saving user password
@@ -2458,6 +2588,16 @@ This cannot be undone!
Error updating user privacy
No comment provided by engineer.
+
+ Error uploading the archive
+ Error uploading the archive
+ No comment provided by engineer.
+
+
+ Error verifying passphrase:
+ Error verifying passphrase:
+ No comment provided by engineer.
+
Error:
Error:
@@ -2508,6 +2648,11 @@ This cannot be undone!
Exported database archive.
No comment provided by engineer.
+
+ Exported file doesn't exist
+ Exported file doesn't exist
+ No comment provided by engineer.
+
Exporting database archive…
Exporting database archive…
@@ -2578,6 +2723,16 @@ This cannot be undone!
Filter unread and favorite chats.
No comment provided by engineer.
+
+ Finalize migration
+ Finalize migration
+ No comment provided by engineer.
+
+
+ Finalize migration on another device.
+ Finalize migration on another device.
+ No comment provided by engineer.
+
Finally, we have them! 🚀
Finally, we have them! 🚀
@@ -2868,6 +3023,11 @@ This cannot be undone!
How to use your servers
No comment provided by engineer.
+
+ Hungarian interface
+ Hungarian interface
+ No comment provided by engineer.
+
ICE servers (one per line)
ICE servers (one per line)
@@ -2933,6 +3093,16 @@ This cannot be undone!
Import database
No comment provided by engineer.
+
+ Import failed
+ Import failed
+ No comment provided by engineer.
+
+
+ Importing archive
+ Importing archive
+ No comment provided by engineer.
+
Improved message delivery
Improved message delivery
@@ -2948,6 +3118,11 @@ This cannot be undone!
Improved server configuration
No comment provided by engineer.
+
+ In order to continue, chat should be stopped.
+ In order to continue, chat should be stopped.
+ No comment provided by engineer.
+
In reply to
In reply to
@@ -3060,6 +3235,11 @@ This cannot be undone!
Invalid link
No comment provided by engineer.
+
+ Invalid migration confirmation
+ Invalid migration confirmation
+ No comment provided by engineer.
+
Invalid name!
Invalid name!
@@ -3428,6 +3608,11 @@ This is your link for group %@!
Message text
No comment provided by engineer.
+
+ Message too large
+ Message too large
+ No comment provided by engineer.
+
Messages
Messages
@@ -3443,11 +3628,56 @@ This is your link for group %@!
Messages from %@ will be shown!
No comment provided by engineer.
+
+ Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.
+ Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.
+ No comment provided by engineer.
+
+
+ Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.
+ Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.
+ No comment provided by engineer.
+
+
+ Migrate device
+ Migrate device
+ No comment provided by engineer.
+
+
+ Migrate from another device
+ Migrate from another device
+ No comment provided by engineer.
+
+
+ Migrate here
+ Migrate here
+ No comment provided by engineer.
+
+
+ Migrate to another device
+ Migrate to another device
+ No comment provided by engineer.
+
+
+ Migrate to another device via QR code.
+ Migrate to another device via QR code.
+ No comment provided by engineer.
+
+
+ Migrating
+ Migrating
+ No comment provided by engineer.
+
Migrating database archive…
Migrating database archive…
No comment provided by engineer.
+
+ Migration complete
+ Migration complete
+ No comment provided by engineer.
+
Migration error:
Migration error:
@@ -3807,6 +4037,11 @@ This is your link for group %@!
Open group
No comment provided by engineer.
+
+ Open migration to another device
+ Open migration to another device
+ authentication reason
+
Open user profiles
Open user profiles
@@ -3822,11 +4057,21 @@ This is your link for group %@!
Opening app…
No comment provided by engineer.
+
+ Or paste archive link
+ Or paste archive link
+ No comment provided by engineer.
+
Or scan QR code
Or scan QR code
No comment provided by engineer.
+
+ Or securely share this file link
+ Or securely share this file link
+ No comment provided by engineer.
+
Or show this code
Or show this code
@@ -3912,6 +4157,11 @@ This is your link for group %@!
Permanent decryption error
message decrypt error item
+
+ Picture-in-picture calls
+ Picture-in-picture calls
+ No comment provided by engineer.
+
Please ask your contact to enable sending voice messages.
Please ask your contact to enable sending voice messages.
@@ -3932,6 +4182,11 @@ This is your link for group %@!
Please check yours and your contact preferences.
No comment provided by engineer.
+
+ Please confirm that network settings are correct for this device.
+ Please confirm that network settings are correct for this device.
+ No comment provided by engineer.
+
Please contact developers.
Error: %@
@@ -3989,6 +4244,11 @@ Error: %@
Possibly, certificate fingerprint in server address is incorrect
server test error
+
+ Post-quantum E2EE
+ Post-quantum E2EE
+ No comment provided by engineer.
+
Preserve the last message draft, with attachments.
Preserve the last message draft, with attachments.
@@ -4124,6 +4384,16 @@ Error: %@
Push notifications
No comment provided by engineer.
+
+ Push server
+ Push server
+ No comment provided by engineer.
+
+
+ Quantum resistant encryption
+ Quantum resistant encryption
+ No comment provided by engineer.
+
Rate the app
Rate the app
@@ -4309,11 +4579,26 @@ Error: %@
Repeat connection request?
No comment provided by engineer.
+
+ Repeat download
+ Repeat download
+ No comment provided by engineer.
+
+
+ Repeat import
+ Repeat import
+ No comment provided by engineer.
+
Repeat join request?
Repeat join request?
No comment provided by engineer.
+
+ Repeat upload
+ Repeat upload
+ No comment provided by engineer.
+
Reply
Reply
@@ -4414,6 +4699,11 @@ Error: %@
SMP servers
No comment provided by engineer.
+
+ Safer groups
+ Safer groups
+ No comment provided by engineer.
+
Save
Save
@@ -4779,6 +5069,11 @@ Error: %@
Set passcode
No comment provided by engineer.
+
+ Set passphrase
+ Set passphrase
+ No comment provided by engineer.
+
Set passphrase to export
Set passphrase to export
@@ -4834,6 +5129,11 @@ Error: %@
Share with contacts
No comment provided by engineer.
+
+ Show QR code
+ Show QR code
+ No comment provided by engineer.
+
Show calls in phone history
Show calls in phone history
@@ -4974,6 +5274,11 @@ Error: %@
Stop SimpleX
authentication reason
+
+ Stop chat
+ Stop chat
+ No comment provided by engineer.
+
Stop chat to enable database actions
Stop chat to enable database actions
@@ -5014,6 +5319,11 @@ Error: %@
Stop sharing address?
No comment provided by engineer.
+
+ Stopping chat
+ Stopping chat
+ No comment provided by engineer.
+
Submit
Submit
@@ -5261,6 +5571,16 @@ It can happen because of some bug or when the connection is compromised.This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost.
No comment provided by engineer.
+
+ This chat is protected by end-to-end encryption.
+ This chat is protected by end-to-end encryption.
+ E2EE info chat item
+
+
+ This chat is protected by quantum resistant end-to-end encryption.
+ This chat is protected by quantum resistant end-to-end encryption.
+ E2EE info chat item
+
This device name
This device name
@@ -5555,11 +5875,21 @@ To connect, please ask your contact to create another connection link and check
Upgrade and open chat
No comment provided by engineer.
+
+ Upload failed
+ Upload failed
+ No comment provided by engineer.
+
Upload file
Upload file
server test step
+
+ Uploading archive
+ Uploading archive
+ No comment provided by engineer.
+
Use .onion hosts
Use .onion hosts
@@ -5610,6 +5940,11 @@ To connect, please ask your contact to create another connection link and check
Use server
No comment provided by engineer.
+
+ Use the app while in the call.
+ Use the app while in the call.
+ No comment provided by engineer.
+
User profile
User profile
@@ -5645,6 +5980,16 @@ To connect, please ask your contact to create another connection link and check
Verify connections
No comment provided by engineer.
+
+ Verify database passphrase
+ Verify database passphrase
+ No comment provided by engineer.
+
+
+ Verify passphrase
+ Verify passphrase
+ No comment provided by engineer.
+
Verify security code
Verify security code
@@ -5735,6 +6080,11 @@ To connect, please ask your contact to create another connection link and check
Waiting for video
No comment provided by engineer.
+
+ Warning: starting chat on multiple devices is not supported and will cause message delivery failures
+ Warning: starting chat on multiple devices is not supported and will cause message delivery failures
+ No comment provided by engineer.
+
Warning: you may lose some data!
Warning: you may lose some data!
@@ -5755,6 +6105,11 @@ To connect, please ask your contact to create another connection link and check
Welcome message
No comment provided by engineer.
+
+ Welcome message is too long
+ Welcome message is too long
+ No comment provided by engineer.
+
What's new
What's new
@@ -5810,6 +6165,11 @@ To connect, please ask your contact to create another connection link and check
You
No comment provided by engineer.
+
+ You **must not** use the same database on two devices.
+ You **must not** use the same database on two devices.
+ No comment provided by engineer.
+
You accepted connection
You accepted connection
@@ -5897,6 +6257,11 @@ Repeat join request?
You can enable them later via app Privacy & Security settings.
No comment provided by engineer.
+
+ You can give another try.
+ You can give another try.
+ No comment provided by engineer.
+
You can hide or mute a user profile - swipe it to the right.
You can hide or mute a user profile - swipe it to the right.
@@ -6291,7 +6656,7 @@ SimpleX servers cannot see your profile.
blocked
blocked
- No comment provided by engineer.
+ marked deleted chat item preview text
blocked %@
@@ -6301,7 +6666,7 @@ SimpleX servers cannot see your profile.
blocked by admin
blocked by admin
- blocked chat item
+ marked deleted chat item preview text
bold
@@ -6731,7 +7096,7 @@ SimpleX servers cannot see your profile.
moderated by %@
moderated by %@
- No comment provided by engineer.
+ marked deleted chat item preview text
months
@@ -6800,6 +7165,11 @@ SimpleX servers cannot see your profile.
peer-to-peer
No comment provided by engineer.
+
+ quantum resistant e2e encryption
+ quantum resistant e2e encryption
+ chat item text
+
received answer…
received answer…
@@ -6875,6 +7245,11 @@ SimpleX servers cannot see your profile.
set new profile picture
profile update event chat item
+
+ standard end-to-end encryption
+ standard end-to-end encryption
+ chat item text
+
starting…
starting…
diff --git a/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff b/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff
index bed077aa46..2f279a963c 100644
--- a/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff
+++ b/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff
@@ -107,6 +107,11 @@
%@ conectado
No comment provided by engineer.
+
+ %@ downloaded
+ %@ downloaded
+ No comment provided by engineer.
+
%@ is connected!
%@ ¡está conectado!
@@ -127,6 +132,10 @@
Servidores %@
No comment provided by engineer.
+
+ %@ uploaded
+ No comment provided by engineer.
+
%@ wants to connect!
¡ %@ quiere contactar!
@@ -219,6 +228,7 @@
%lld messages blocked by admin
+ %lld mensajes bloqueados por el administrador
No comment provided by engineer.
@@ -341,6 +351,11 @@
**Más privado**: no se usa el servidor de notificaciones de SimpleX Chat, los mensajes se comprueban periódicamente en segundo plano (dependiendo de la frecuencia con la que utilices la aplicación).
No comment provided by engineer.
+
+ **Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.
+ **Tenga en cuenta**: usar la misma base de datos en dos dispositivos interrumpirá el descifrado de mensajes de sus conexiones, como protección de seguridad.
+ No comment provided by engineer.
+
**Please note**: you will NOT be able to recover or change passphrase if you lose it.
**Atención**: NO podrás recuperar o cambiar la contraseña si la pierdes.
@@ -356,6 +371,11 @@
**Advertencia**: Las notificaciones automáticas instantáneas requieren una contraseña guardada en Keychain.
No comment provided by engineer.
+
+ **Warning**: the archive will be removed.
+ **Atención**: el archivo será eliminado.
+ No comment provided by engineer.
+
**e2e encrypted** audio call
Llamada con **cifrado de extremo a extremo **
@@ -612,6 +632,11 @@
El cambio de dirección se cancelará. Se usará la antigua dirección de recepción.
No comment provided by engineer.
+
+ Admins can block a member for all.
+ Los admins pueden bloquear un miembro por todos.
+ No comment provided by engineer.
+
Admins can create the links to join groups.
Los administradores pueden crear enlaces para unirse a grupos.
@@ -644,6 +669,7 @@
All messages will be deleted - this cannot be undone!
+ Todos los mensajes serán borrados. ¡No podrá deshacerse!
No comment provided by engineer.
@@ -666,6 +692,11 @@
Todos tus contactos permanecerán conectados. La actualización del perfil se enviará a tus contactos.
No comment provided by engineer.
+
+ All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.
+ Todos sus contactos, conversaciones y archivos se cifrarán de forma segura y se subirán en fragmentos hacia puntos XFTP configurados.
+ No comment provided by engineer.
+
Allow
Se permite
@@ -791,6 +822,11 @@
Compilación app: %@
No comment provided by engineer.
+
+ App data migration
+ Migración de datos de la aplicación
+ No comment provided by engineer.
+
App encrypts new local files (except videos).
Cifrado de los nuevos archivos locales (excepto vídeos).
@@ -826,6 +862,21 @@
Apariencia
No comment provided by engineer.
+
+ Apply
+ Aplicar
+ No comment provided by engineer.
+
+
+ Archive and upload
+ Archivar y transferir
+ No comment provided by engineer.
+
+
+ Archiving database
+ Archivando base de datos
+ No comment provided by engineer.
+
Attach
Adjuntar
@@ -923,6 +974,7 @@
Block for all
+ Bloquear para todos
No comment provided by engineer.
@@ -937,6 +989,7 @@
Block member for all?
+ ¿Bloqear miembro para todos?
No comment provided by engineer.
@@ -946,6 +999,7 @@
Blocked by admin
+ Bloqueado por el administrador
No comment provided by engineer.
@@ -1013,6 +1067,11 @@
Cancelar
No comment provided by engineer.
+
+ Cancel migration
+ Cancelar migración
+ No comment provided by engineer.
+
Cannot access keychain to save database password
Keychain inaccesible para guardar la contraseña de la base de datos
@@ -1114,6 +1173,11 @@
Chat está detenido. Si estás usando esta base de datos en otro dispositivo, deberías transferirla de vuelta antes de iniciarlo.
No comment provided by engineer.
+
+ Chat migrated!
+ Chat transferido !
+ No comment provided by engineer.
+
Chat preferences
Preferencias de Chat
@@ -1134,6 +1198,11 @@
Interfaz en chino y español
No comment provided by engineer.
+
+ Choose _Migrate from another device_ on the new device and scan QR code.
+ Elija _Migrar desde otro dispositivo_ en el nuevo dispositivo y escanee el código QR.
+ No comment provided by engineer.
+
Choose file
Elije archivo
@@ -1161,6 +1230,7 @@
Clear private notes?
+ ¿Borrar notas privadas?
No comment provided by engineer.
@@ -1203,6 +1273,11 @@
Confirmar actualizaciones de la bases de datos
No comment provided by engineer.
+
+ Confirm network settings
+ Confirmar los ajustes de red
+ No comment provided by engineer.
+
Confirm new passphrase…
Confirme nueva contraseña…
@@ -1213,6 +1288,15 @@
Confirmar contraseña
No comment provided by engineer.
+
+ Confirm that you remember database passphrase to migrate it.
+ Confirme que recuerda la frase secreta de la base de datos para migrarla.
+ No comment provided by engineer.
+
+
+ Confirm upload
+ No comment provided by engineer.
+
Connect
Conectar
@@ -1459,10 +1543,12 @@ This is your own one-time link!
Created at
+ Creado
No comment provided by engineer.
Created at: %@
+ Creado: %@
copied message info
@@ -1470,6 +1556,10 @@ This is your own one-time link!
Creado en %@
No comment provided by engineer.
+
+ Creating archive link
+ No comment provided by engineer.
+
Creating link…
Creando enlace…
@@ -1690,6 +1780,10 @@ This cannot be undone!
Eliminar base de datos
No comment provided by engineer.
+
+ Delete database from this device
+ No comment provided by engineer.
+
Delete file
Eliminar archivo
@@ -1957,6 +2051,7 @@ This cannot be undone!
Do not send history to new members.
+ No enviar historial a miembros nuevos.
No comment provided by engineer.
@@ -1979,11 +2074,23 @@ This cannot be undone!
Degradar y abrir Chat
No comment provided by engineer.
+
+ Download failed
+ No comment provided by engineer.
+
Download file
Descargar archivo
server test step
+
+ Downloading archive
+ No comment provided by engineer.
+
+
+ Downloading link details
+ No comment provided by engineer.
+
Duplicate display name!
¡Nombre mostrado duplicado!
@@ -2039,6 +2146,10 @@ This cannot be undone!
Activar para todos
No comment provided by engineer.
+
+ Enable in direct chats (BETA)!
+ No comment provided by engineer.
+
Enable instant notifications?
¿Activar notificación instantánea?
@@ -2154,6 +2265,10 @@ This cannot be undone!
Nombre del grupo…
No comment provided by engineer.
+
+ Enter passphrase
+ No comment provided by engineer.
+
Enter passphrase…
Introduce la contraseña…
@@ -2214,6 +2329,10 @@ This cannot be undone!
Error al añadir miembro(s)
No comment provided by engineer.
+
+ Error allowing contact PQ encryption
+ No comment provided by engineer.
+
Error changing address
Error al cambiar servidor
@@ -2251,6 +2370,7 @@ This cannot be undone!
Error creating message
+ Error al crear mensaje
No comment provided by engineer.
@@ -2303,6 +2423,10 @@ This cannot be undone!
Error al eliminar perfil
No comment provided by engineer.
+
+ Error downloading the archive
+ No comment provided by engineer.
+
Error enabling delivery receipts!
¡Error al activar confirmaciones de entrega!
@@ -2378,6 +2502,10 @@ This cannot be undone!
Error al guardar contraseña en Keychain
No comment provided by engineer.
+
+ Error saving settings
+ when migrating
+
Error saving user password
Error al guardar contraseña de usuario
@@ -2448,6 +2576,14 @@ This cannot be undone!
Error al actualizar privacidad de usuario
No comment provided by engineer.
+
+ Error uploading the archive
+ No comment provided by engineer.
+
+
+ Error verifying passphrase:
+ No comment provided by engineer.
+
Error:
Error:
@@ -2498,6 +2634,10 @@ This cannot be undone!
Archivo de base de datos exportado.
No comment provided by engineer.
+
+ Exported file doesn't exist
+ No comment provided by engineer.
+
Exporting database archive…
Exportando base de datos…
@@ -2568,6 +2708,14 @@ This cannot be undone!
Filtra chats no leídos y favoritos.
No comment provided by engineer.
+
+ Finalize migration
+ No comment provided by engineer.
+
+
+ Finalize migration on another device.
+ No comment provided by engineer.
+
Finally, we have them! 🚀
¡Por fin los tenemos! 🚀
@@ -2830,6 +2978,7 @@ This cannot be undone!
History is not sent to new members.
+ El historial no se envía a miembros nuevos.
No comment provided by engineer.
@@ -2857,6 +3006,10 @@ This cannot be undone!
Cómo usar los servidores
No comment provided by engineer.
+
+ Hungarian interface
+ No comment provided by engineer.
+
ICE servers (one per line)
Servidores ICE (uno por línea)
@@ -2922,8 +3075,17 @@ This cannot be undone!
Importar base de datos
No comment provided by engineer.
+
+ Import failed
+ No comment provided by engineer.
+
+
+ Importing archive
+ No comment provided by engineer.
+
Improved message delivery
+ Entrega de mensajes mejorada
No comment provided by engineer.
@@ -2936,6 +3098,10 @@ This cannot be undone!
Configuración del servidor mejorada
No comment provided by engineer.
+
+ In order to continue, chat should be stopped.
+ No comment provided by engineer.
+
In reply to
En respuesta a
@@ -3040,6 +3206,7 @@ This cannot be undone!
Invalid display name!
+ ¡Nombre mostrado no válido!
No comment provided by engineer.
@@ -3047,6 +3214,10 @@ This cannot be undone!
Enlace no válido
No comment provided by engineer.
+
+ Invalid migration confirmation
+ No comment provided by engineer.
+
Invalid name!
¡Nombre no válido!
@@ -3150,6 +3321,7 @@ This cannot be undone!
Join group conversations
+ Unirse a la conversación del grupo
No comment provided by engineer.
@@ -3414,6 +3586,10 @@ This is your link for group %@!
Contacto y texto
No comment provided by engineer.
+
+ Message too large
+ No comment provided by engineer.
+
Messages
Mensajes
@@ -3429,11 +3605,47 @@ This is your link for group %@!
¡Los mensajes de %@ serán mostrados!
No comment provided by engineer.
+
+ Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.
+ No comment provided by engineer.
+
+
+ Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.
+ No comment provided by engineer.
+
+
+ Migrate device
+ No comment provided by engineer.
+
+
+ Migrate from another device
+ No comment provided by engineer.
+
+
+ Migrate here
+ No comment provided by engineer.
+
+
+ Migrate to another device
+ No comment provided by engineer.
+
+
+ Migrate to another device via QR code.
+ No comment provided by engineer.
+
+
+ Migrating
+ No comment provided by engineer.
+
Migrating database archive…
Migrando base de datos…
No comment provided by engineer.
+
+ Migration complete
+ No comment provided by engineer.
+
Migration error:
Error de migración:
@@ -3793,6 +4005,10 @@ This is your link for group %@!
Grupo abierto
No comment provided by engineer.
+
+ Open migration to another device
+ authentication reason
+
Open user profiles
Abrir perfil de usuario
@@ -3808,11 +4024,19 @@ This is your link for group %@!
Iniciando aplicación…
No comment provided by engineer.
+
+ Or paste archive link
+ No comment provided by engineer.
+
Or scan QR code
O escanear código QR
No comment provided by engineer.
+
+ Or securely share this file link
+ No comment provided by engineer.
+
Or show this code
O mostrar este código
@@ -3860,6 +4084,7 @@ This is your link for group %@!
Past member %@
+ Miembro pasado %@
past/unknown group member
@@ -3874,6 +4099,7 @@ This is your link for group %@!
Paste link to connect!
+ Pegar enlace para conectar!
No comment provided by engineer.
@@ -3896,6 +4122,10 @@ This is your link for group %@!
Error permanente descifrado
message decrypt error item
+
+ Picture-in-picture calls
+ No comment provided by engineer.
+
Please ask your contact to enable sending voice messages.
Solicita que tu contacto habilite el envío de mensajes de voz.
@@ -3916,6 +4146,10 @@ This is your link for group %@!
Comprueba tus preferencias y las de tu contacto.
No comment provided by engineer.
+
+ Please confirm that network settings are correct for this device.
+ No comment provided by engineer.
+
Please contact developers.
Error: %@
@@ -3973,6 +4207,10 @@ Error: %@
Posiblemente la huella digital del certificado en la dirección del servidor es incorrecta
server test error
+
+ Post-quantum E2EE
+ No comment provided by engineer.
+
Preserve the last message draft, with attachments.
Conserva el último borrador del mensaje con los datos adjuntos.
@@ -4010,6 +4248,7 @@ Error: %@
Private notes
+ Notas privadas
name of notes to self
@@ -4107,6 +4346,14 @@ Error: %@
Notificaciones automáticas
No comment provided by engineer.
+
+ Push server
+ No comment provided by engineer.
+
+
+ Quantum resistant encryption
+ No comment provided by engineer.
+
Rate the app
Valora la aplicación
@@ -4194,6 +4441,7 @@ Error: %@
Recent history and improved [directory bot](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).
+ Historial reciente y [bot del directorio](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) mejorados.
No comment provided by engineer.
@@ -4291,11 +4539,23 @@ Error: %@
¿Repetir solicitud de conexión?
No comment provided by engineer.
+
+ Repeat download
+ No comment provided by engineer.
+
+
+ Repeat import
+ No comment provided by engineer.
+
Repeat join request?
¿Repetir solicitud de admisión?
No comment provided by engineer.
+
+ Repeat upload
+ No comment provided by engineer.
+
Reply
Responder
@@ -4396,6 +4656,10 @@ Error: %@
Servidores SMP
No comment provided by engineer.
+
+ Safer groups
+ No comment provided by engineer.
+
Save
Guardar
@@ -4483,6 +4747,7 @@ Error: %@
Saved message
+ Mensaje guardado
message info title
@@ -4517,6 +4782,7 @@ Error: %@
Search bar accepts invitation links.
+ La barra de búsqueda acepta enlaces de invitación.
No comment provided by engineer.
@@ -4631,6 +4897,7 @@ Error: %@
Send up to 100 last messages to new members.
+ Enviar hasta 100 últimos mensajes a los miembros nuevos.
No comment provided by engineer.
@@ -4758,6 +5025,10 @@ Error: %@
Código autodestrucción
No comment provided by engineer.
+
+ Set passphrase
+ No comment provided by engineer.
+
Set passphrase to export
Escribe la contraseña para exportar
@@ -4813,6 +5084,10 @@ Error: %@
Compartir con contactos
No comment provided by engineer.
+
+ Show QR code
+ No comment provided by engineer.
+
Show calls in phone history
Mostrar llamadas en el historial del teléfono
@@ -4953,6 +5228,10 @@ Error: %@
Detener SimpleX
authentication reason
+
+ Stop chat
+ No comment provided by engineer.
+
Stop chat to enable database actions
Detén SimpleX para habilitar las acciones sobre la base de datos
@@ -4993,6 +5272,10 @@ Error: %@
¿Dejar de compartir la dirección?
No comment provided by engineer.
+
+ Stopping chat
+ No comment provided by engineer.
+
Submit
Enviar
@@ -5227,19 +5510,27 @@ Puede ocurrir por algún bug o cuando la conexión está comprometida.
This action cannot be undone - all received and sent files and media will be deleted. Low resolution pictures will remain.
- Esta acción no se puede deshacer. Se eliminarán todos los archivos y multimedia recibidos y enviados. Las imágenes de baja resolución permanecerán.
+ Esta acción es irreversible. Se eliminarán todos los archivos y multimedia recibidos y enviados. Las imágenes de baja resolución permanecerán.
No comment provided by engineer.
This action cannot be undone - the messages sent and received earlier than selected will be deleted. It may take several minutes.
- Esta acción no se puede deshacer. Se eliminarán los mensajes enviados y recibidos anteriores a la selección. Puede tardar varios minutos.
+ Esta acción es irreversible. Se eliminarán los mensajes enviados y recibidos anteriores a la selección. Puede tardar varios minutos.
No comment provided by engineer.
This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost.
- Esta acción no se puede deshacer. Tu perfil, contactos, mensajes y archivos se perderán irreversiblemente.
+ Esta acción es irreversible. Tu perfil, contactos, mensajes y archivos se perderán irreversiblemente.
No comment provided by engineer.
+
+ This chat is protected by end-to-end encryption.
+ E2EE info chat item
+
+
+ This chat is protected by quantum resistant end-to-end encryption.
+ E2EE info chat item
+
This device name
Nombre del dispositivo
@@ -5247,6 +5538,7 @@ Puede ocurrir por algún bug o cuando la conexión está comprometida.
This display name is invalid. Please choose another name.
+ Éste nombre mostrado no es válido. Por favor, elije otro nombre.
No comment provided by engineer.
@@ -5353,6 +5645,7 @@ Se te pedirá que completes la autenticación antes de activar esta función.
Turkish interface
+ Interfaz en turco
No comment provided by engineer.
@@ -5377,6 +5670,7 @@ Se te pedirá que completes la autenticación antes de activar esta función.
Unblock for all
+ Desbloquear para todos
No comment provided by engineer.
@@ -5386,6 +5680,7 @@ Se te pedirá que completes la autenticación antes de activar esta función.
Unblock member for all?
+ ¿Desbloquear miembro para todos?
No comment provided by engineer.
@@ -5488,6 +5783,7 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb
Up to 100 last messages are sent to new members.
+ Hasta 100 últimos mensajes son enviados a los miembros nuevos.
No comment provided by engineer.
@@ -5530,11 +5826,19 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb
Actualizar y abrir Chat
No comment provided by engineer.
+
+ Upload failed
+ No comment provided by engineer.
+
Upload file
Subir archivo
server test step
+
+ Uploading archive
+ No comment provided by engineer.
+
Use .onion hosts
Usar hosts .onion
@@ -5585,6 +5889,10 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb
Usar servidor
No comment provided by engineer.
+
+ Use the app while in the call.
+ No comment provided by engineer.
+
User profile
Perfil de usuario
@@ -5620,6 +5928,14 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb
Verificar conexiones
No comment provided by engineer.
+
+ Verify database passphrase
+ No comment provided by engineer.
+
+
+ Verify passphrase
+ No comment provided by engineer.
+
Verify security code
Comprobar código de seguridad
@@ -5662,6 +5978,7 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb
Visible history
+ Historial visible
chat feature
@@ -5709,6 +6026,10 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb
Esperando el vídeo
No comment provided by engineer.
+
+ Warning: starting chat on multiple devices is not supported and will cause message delivery failures
+ No comment provided by engineer.
+
Warning: you may lose some data!
Atención: ¡puedes perder algunos datos!
@@ -5729,6 +6050,10 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb
Mensaje de bienvenida
No comment provided by engineer.
+
+ Welcome message is too long
+ No comment provided by engineer.
+
What's new
Novedades
@@ -5751,6 +6076,7 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb
With encrypted files and media.
+ Con cifrado de archivos y multimedia.
No comment provided by engineer.
@@ -5760,6 +6086,7 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb
With reduced battery usage.
+ Con uso reducido de batería.
No comment provided by engineer.
@@ -5782,6 +6109,10 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb
Tú
No comment provided by engineer.
+
+ You **must not** use the same database on two devices.
+ No comment provided by engineer.
+
You accepted connection
Has aceptado la conexión
@@ -5869,6 +6200,10 @@ Repeat join request?
Puedes activarlos más tarde en la configuración de Privacidad y Seguridad.
No comment provided by engineer.
+
+ You can give another try.
+ No comment provided by engineer.
+
You can hide or mute a user profile - swipe it to the right.
Puedes ocultar o silenciar un perfil deslizándolo a la derecha.
@@ -6263,15 +6598,17 @@ Los servidores de SimpleX no pueden ver tu perfil.
blocked
bloqueado
- No comment provided by engineer.
+ marked deleted chat item preview text
blocked %@
+ %@ bloqueado
rcv group event chat item
blocked by admin
- blocked chat item
+ bloqueado por el administrador
+ marked deleted chat item preview text
bold
@@ -6395,6 +6732,7 @@ Los servidores de SimpleX no pueden ver tu perfil.
contact %1$@ changed to %2$@
+ el contacto %1$@ ha cambiado a %2$@
profile update event chat item
@@ -6669,6 +7007,7 @@ Los servidores de SimpleX no pueden ver tu perfil.
member %1$@ changed to %2$@
+ el miembro %1$@ ha cambiado a %2$@
profile update event chat item
@@ -6699,7 +7038,7 @@ Los servidores de SimpleX no pueden ver tu perfil.
moderated by %@
moderado por %@
- No comment provided by engineer.
+ marked deleted chat item preview text
months
@@ -6768,6 +7107,10 @@ Los servidores de SimpleX no pueden ver tu perfil.
p2p
No comment provided by engineer.
+
+ quantum resistant e2e encryption
+ chat item text
+
received answer…
respuesta recibida…
@@ -6795,10 +7138,12 @@ Los servidores de SimpleX no pueden ver tu perfil.
removed contact address
+ dirección de contacto eliminada
profile update event chat item
removed profile picture
+ imagen de perfil eliminada
profile update event chat item
@@ -6833,12 +7178,18 @@ Los servidores de SimpleX no pueden ver tu perfil.
set new contact address
+ nueva dirección de contacto
profile update event chat item
set new profile picture
+ nueva imagen de perfil
profile update event chat item
+
+ standard end-to-end encryption
+ chat item text
+
starting…
inicializando…
@@ -6856,6 +7207,7 @@ Los servidores de SimpleX no pueden ver tu perfil.
unblocked %@
+ %@ desbloqueado
rcv group event chat item
@@ -6865,6 +7217,7 @@ Los servidores de SimpleX no pueden ver tu perfil.
unknown status
+ estado desconocido
No comment provided by engineer.
@@ -6874,6 +7227,7 @@ Los servidores de SimpleX no pueden ver tu perfil.
updated profile
+ perfil actualizado
profile update event chat item
@@ -6948,6 +7302,7 @@ Los servidores de SimpleX no pueden ver tu perfil.
you blocked %@
+ has bloqueado a %@
snd group event chat item
@@ -6992,6 +7347,7 @@ Los servidores de SimpleX no pueden ver tu perfil.
you unblocked %@
+ has desbloqueado a %@
snd group event chat item
diff --git a/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff b/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff
index 91dd46fd09..3e971985ef 100644
--- a/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff
+++ b/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff
@@ -105,6 +105,10 @@
%@ connected
No comment provided by engineer.
+
+ %@ downloaded
+ No comment provided by engineer.
+
%@ is connected!
%@ on yhdistetty!
@@ -125,6 +129,10 @@
%@ palvelimet
No comment provided by engineer.
+
+ %@ uploaded
+ No comment provided by engineer.
+
%@ wants to connect!
%@ haluaa muodostaa yhteyden!
@@ -330,6 +338,10 @@
**Yksityisin**: älä käytä SimpleX Chat -ilmoituspalvelinta, tarkista viestit ajoittain taustalla (riippuu siitä, kuinka usein käytät sovellusta).
No comment provided by engineer.
+
+ **Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.
+ No comment provided by engineer.
+
**Please note**: you will NOT be able to recover or change passphrase if you lose it.
**Huomaa**: et voi palauttaa tai muuttaa tunnuslausetta, jos kadotat sen.
@@ -345,6 +357,10 @@
**Varoitus**: Välittömät push-ilmoitukset vaativat tunnuslauseen, joka on tallennettu Keychainiin.
No comment provided by engineer.
+
+ **Warning**: the archive will be removed.
+ No comment provided by engineer.
+
**e2e encrypted** audio call
**e2e-salattu** äänipuhelu
@@ -593,6 +609,10 @@
Osoitteenmuutos keskeytetään. Käytetään vanhaa vastaanotto-osoitetta.
No comment provided by engineer.
+
+ Admins can block a member for all.
+ No comment provided by engineer.
+
Admins can create the links to join groups.
Ylläpitäjät voivat luoda linkkejä ryhmiin liittymiseen.
@@ -646,6 +666,10 @@
Kaikki kontaktisi pysyvät yhteydessä. Profiilipäivitys lähetetään kontakteillesi.
No comment provided by engineer.
+
+ All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.
+ No comment provided by engineer.
+
Allow
Salli
@@ -769,6 +793,10 @@
Sovellusversio: %@
No comment provided by engineer.
+
+ App data migration
+ No comment provided by engineer.
+
App encrypts new local files (except videos).
No comment provided by engineer.
@@ -803,6 +831,18 @@
Ulkonäkö
No comment provided by engineer.
+
+ Apply
+ No comment provided by engineer.
+
+
+ Archive and upload
+ No comment provided by engineer.
+
+
+ Archiving database
+ No comment provided by engineer.
+
Attach
Liitä
@@ -982,6 +1022,10 @@
Peruuta
No comment provided by engineer.
+
+ Cancel migration
+ No comment provided by engineer.
+
Cannot access keychain to save database password
Ei pääsyä avainnippuun tietokannan salasanan tallentamiseksi
@@ -1082,6 +1126,10 @@
Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat.
No comment provided by engineer.
+
+ Chat migrated!
+ No comment provided by engineer.
+
Chat preferences
Chat-asetukset
@@ -1102,6 +1150,10 @@
Kiinalainen ja espanjalainen käyttöliittymä
No comment provided by engineer.
+
+ Choose _Migrate from another device_ on the new device and scan QR code.
+ No comment provided by engineer.
+
Choose file
Valitse tiedosto
@@ -1171,6 +1223,10 @@
Vahvista tietokannan päivitykset
No comment provided by engineer.
+
+ Confirm network settings
+ No comment provided by engineer.
+
Confirm new passphrase…
Vahvista uusi tunnuslause…
@@ -1181,6 +1237,14 @@
Vahvista salasana
No comment provided by engineer.
+
+ Confirm that you remember database passphrase to migrate it.
+ No comment provided by engineer.
+
+
+ Confirm upload
+ No comment provided by engineer.
+
Connect
Yhdistä
@@ -1421,6 +1485,10 @@ This is your own one-time link!
Luotu %@
No comment provided by engineer.
+
+ Creating archive link
+ No comment provided by engineer.
+
Creating link…
No comment provided by engineer.
@@ -1636,6 +1704,10 @@ This cannot be undone!
Poista tietokanta
No comment provided by engineer.
+
+ Delete database from this device
+ No comment provided by engineer.
+
Delete file
Poista tiedosto
@@ -1920,11 +1992,23 @@ This cannot be undone!
Alenna ja avaa keskustelu
No comment provided by engineer.
+
+ Download failed
+ No comment provided by engineer.
+
Download file
Lataa tiedosto
server test step
+
+ Downloading archive
+ No comment provided by engineer.
+
+
+ Downloading link details
+ No comment provided by engineer.
+
Duplicate display name!
Päällekkäinen näyttönimi!
@@ -1979,6 +2063,10 @@ This cannot be undone!
Salli kaikille
No comment provided by engineer.
+
+ Enable in direct chats (BETA)!
+ No comment provided by engineer.
+
Enable instant notifications?
Salli välittömät ilmoitukset?
@@ -2089,6 +2177,10 @@ This cannot be undone!
Enter group name…
No comment provided by engineer.
+
+ Enter passphrase
+ No comment provided by engineer.
+
Enter passphrase…
Syötä tunnuslause…
@@ -2147,6 +2239,10 @@ This cannot be undone!
Virhe lisättäessä jäseniä
No comment provided by engineer.
+
+ Error allowing contact PQ encryption
+ No comment provided by engineer.
+
Error changing address
Virhe osoitteenvaihdossa
@@ -2235,6 +2331,10 @@ This cannot be undone!
Virhe käyttäjäprofiilin poistamisessa
No comment provided by engineer.
+
+ Error downloading the archive
+ No comment provided by engineer.
+
Error enabling delivery receipts!
Virhe toimituskuittauksien sallimisessa!
@@ -2309,6 +2409,10 @@ This cannot be undone!
Virhe tunnuslauseen tallentamisessa avainnippuun
No comment provided by engineer.
+
+ Error saving settings
+ when migrating
+
Error saving user password
Virhe käyttäjän salasanan tallentamisessa
@@ -2377,6 +2481,14 @@ This cannot be undone!
Virhe päivitettäessä käyttäjän tietosuojaa
No comment provided by engineer.
+
+ Error uploading the archive
+ No comment provided by engineer.
+
+
+ Error verifying passphrase:
+ No comment provided by engineer.
+
Error:
Virhe:
@@ -2426,6 +2538,10 @@ This cannot be undone!
Viety tietokanta-arkisto.
No comment provided by engineer.
+
+ Exported file doesn't exist
+ No comment provided by engineer.
+
Exporting database archive…
Tietokanta-arkiston vienti…
@@ -2495,6 +2611,14 @@ This cannot be undone!
Suodata lukemattomia- ja suosikkikeskusteluja.
No comment provided by engineer.
+
+ Finalize migration
+ No comment provided by engineer.
+
+
+ Finalize migration on another device.
+ No comment provided by engineer.
+
Finally, we have them! 🚀
Vihdoinkin meillä! 🚀
@@ -2780,6 +2904,10 @@ This cannot be undone!
Miten käytät palvelimiasi
No comment provided by engineer.
+
+ Hungarian interface
+ No comment provided by engineer.
+
ICE servers (one per line)
ICE-palvelimet (yksi per rivi)
@@ -2845,6 +2973,14 @@ This cannot be undone!
Tuo tietokanta
No comment provided by engineer.
+
+ Import failed
+ No comment provided by engineer.
+
+
+ Importing archive
+ No comment provided by engineer.
+
Improved message delivery
No comment provided by engineer.
@@ -2859,6 +2995,10 @@ This cannot be undone!
Parannettu palvelimen kokoonpano
No comment provided by engineer.
+
+ In order to continue, chat should be stopped.
+ No comment provided by engineer.
+
In reply to
Vastauksena
@@ -2966,6 +3106,10 @@ This cannot be undone!
Invalid link
No comment provided by engineer.
+
+ Invalid migration confirmation
+ No comment provided by engineer.
+
Invalid name!
No comment provided by engineer.
@@ -3321,6 +3465,10 @@ This is your link for group %@!
Viestin teksti
No comment provided by engineer.
+
+ Message too large
+ No comment provided by engineer.
+
Messages
Viestit
@@ -3335,11 +3483,47 @@ This is your link for group %@!
Messages from %@ will be shown!
No comment provided by engineer.
+
+ Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.
+ No comment provided by engineer.
+
+
+ Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.
+ No comment provided by engineer.
+
+
+ Migrate device
+ No comment provided by engineer.
+
+
+ Migrate from another device
+ No comment provided by engineer.
+
+
+ Migrate here
+ No comment provided by engineer.
+
+
+ Migrate to another device
+ No comment provided by engineer.
+
+
+ Migrate to another device via QR code.
+ No comment provided by engineer.
+
+
+ Migrating
+ No comment provided by engineer.
+
Migrating database archive…
Siirretään tietokannan arkistoa…
No comment provided by engineer.
+
+ Migration complete
+ No comment provided by engineer.
+
Migration error:
Siirtovirhe:
@@ -3693,6 +3877,10 @@ This is your link for group %@!
Open group
No comment provided by engineer.
+
+ Open migration to another device
+ authentication reason
+
Open user profiles
Avaa käyttäjäprofiilit
@@ -3707,10 +3895,18 @@ This is your link for group %@!
Opening app…
No comment provided by engineer.
+
+ Or paste archive link
+ No comment provided by engineer.
+
Or scan QR code
No comment provided by engineer.
+
+ Or securely share this file link
+ No comment provided by engineer.
+
Or show this code
No comment provided by engineer.
@@ -3791,6 +3987,10 @@ This is your link for group %@!
Pysyvä salauksen purkuvirhe
message decrypt error item
+
+ Picture-in-picture calls
+ No comment provided by engineer.
+
Please ask your contact to enable sending voice messages.
Pyydä kontaktiasi sallimaan ääniviestien lähettäminen.
@@ -3811,6 +4011,10 @@ This is your link for group %@!
Tarkista omasi ja kontaktin asetukset.
No comment provided by engineer.
+
+ Please confirm that network settings are correct for this device.
+ No comment provided by engineer.
+
Please contact developers.
Error: %@
@@ -3866,6 +4070,10 @@ Error: %@
Palvelimen osoitteen varmenteen sormenjälki on mahdollisesti virheellinen
server test error
+
+ Post-quantum E2EE
+ No comment provided by engineer.
+
Preserve the last message draft, with attachments.
Säilytä viimeinen viestiluonnos liitteineen.
@@ -3998,6 +4206,14 @@ Error: %@
Push-ilmoitukset
No comment provided by engineer.
+
+ Push server
+ No comment provided by engineer.
+
+
+ Quantum resistant encryption
+ No comment provided by engineer.
+
Rate the app
Arvioi sovellus
@@ -4180,10 +4396,22 @@ Error: %@
Repeat connection request?
No comment provided by engineer.
+
+ Repeat download
+ No comment provided by engineer.
+
+
+ Repeat import
+ No comment provided by engineer.
+
Repeat join request?
No comment provided by engineer.
+
+ Repeat upload
+ No comment provided by engineer.
+
Reply
Vastaa
@@ -4283,6 +4511,10 @@ Error: %@
SMP-palvelimet
No comment provided by engineer.
+
+ Safer groups
+ No comment provided by engineer.
+
Save
Tallenna
@@ -4641,6 +4873,10 @@ Error: %@
Aseta pääsykoodi
No comment provided by engineer.
+
+ Set passphrase
+ No comment provided by engineer.
+
Set passphrase to export
Aseta tunnuslause vientiä varten
@@ -4695,6 +4931,10 @@ Error: %@
Jaa kontaktien kanssa
No comment provided by engineer.
+
+ Show QR code
+ No comment provided by engineer.
+
Show calls in phone history
Näytä puhelut puhelinhistoriassa
@@ -4833,6 +5073,10 @@ Error: %@
Lopeta SimpleX
authentication reason
+
+ Stop chat
+ No comment provided by engineer.
+
Stop chat to enable database actions
Pysäytä keskustelu tietokantatoimien mahdollistamiseksi
@@ -4873,6 +5117,10 @@ Error: %@
Lopeta osoitteen jakaminen?
No comment provided by engineer.
+
+ Stopping chat
+ No comment provided by engineer.
+
Submit
Lähetä
@@ -5115,6 +5363,14 @@ Tämä voi johtua jostain virheestä tai siitä, että yhteys on vaarantunut.Tätä toimintoa ei voi kumota - profiilisi, kontaktisi, viestisi ja tiedostosi poistuvat peruuttamattomasti.
No comment provided by engineer.
+
+ This chat is protected by end-to-end encryption.
+ E2EE info chat item
+
+
+ This chat is protected by quantum resistant end-to-end encryption.
+ E2EE info chat item
+
This device name
No comment provided by engineer.
@@ -5394,11 +5650,19 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja
Päivitä ja avaa keskustelu
No comment provided by engineer.
+
+ Upload failed
+ No comment provided by engineer.
+
Upload file
Lataa tiedosto
server test step
+
+ Uploading archive
+ No comment provided by engineer.
+
Use .onion hosts
Käytä .onion-isäntiä
@@ -5447,6 +5711,10 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja
Käytä palvelinta
No comment provided by engineer.
+
+ Use the app while in the call.
+ No comment provided by engineer.
+
User profile
Käyttäjäprofiili
@@ -5479,6 +5747,14 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja
Verify connections
No comment provided by engineer.
+
+ Verify database passphrase
+ No comment provided by engineer.
+
+
+ Verify passphrase
+ No comment provided by engineer.
+
Verify security code
Tarkista turvakoodi
@@ -5566,6 +5842,10 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja
Odottaa videota
No comment provided by engineer.
+
+ Warning: starting chat on multiple devices is not supported and will cause message delivery failures
+ No comment provided by engineer.
+
Warning: you may lose some data!
Varoitus: saatat menettää joitain tietoja!
@@ -5586,6 +5866,10 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja
Tervetuloviesti
No comment provided by engineer.
+
+ Welcome message is too long
+ No comment provided by engineer.
+
What's new
Uusimmat
@@ -5639,6 +5923,10 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja
Sinä
No comment provided by engineer.
+
+ You **must not** use the same database on two devices.
+ No comment provided by engineer.
+
You accepted connection
Hyväksyit yhteyden
@@ -5718,6 +6006,10 @@ Repeat join request?
Voit ottaa ne käyttöön myöhemmin sovelluksen Yksityisyys & Turvallisuus -asetuksista.
No comment provided by engineer.
+
+ You can give another try.
+ No comment provided by engineer.
+
You can hide or mute a user profile - swipe it to the right.
Voit piilottaa tai mykistää käyttäjäprofiilin pyyhkäisemällä sitä oikealle.
@@ -6101,7 +6393,7 @@ SimpleX-palvelimet eivät näe profiiliasi.
blocked
- No comment provided by engineer.
+ marked deleted chat item preview text
blocked %@
@@ -6109,7 +6401,7 @@ SimpleX-palvelimet eivät näe profiiliasi.
blocked by admin
- blocked chat item
+ marked deleted chat item preview text
bold
@@ -6535,7 +6827,7 @@ SimpleX-palvelimet eivät näe profiiliasi.
moderated by %@
%@ moderoi
- No comment provided by engineer.
+ marked deleted chat item preview text
months
@@ -6604,6 +6896,10 @@ SimpleX-palvelimet eivät näe profiiliasi.
vertais
No comment provided by engineer.
+
+ quantum resistant e2e encryption
+ chat item text
+
received answer…
vastaus saatu…
@@ -6674,6 +6970,10 @@ SimpleX-palvelimet eivät näe profiiliasi.
set new profile picture
profile update event chat item
+
+ standard end-to-end encryption
+ chat item text
+
starting…
alkaa…
diff --git a/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff b/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff
index 12c10dd0c8..7bdbefedb6 100644
--- a/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff
+++ b/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff
@@ -107,6 +107,11 @@
%@ connecté(e)
No comment provided by engineer.
+
+ %@ downloaded
+ %@ téléchargé
+ No comment provided by engineer.
+
%@ is connected!
%@ est connecté·e !
@@ -127,6 +132,11 @@
Serveurs %@
No comment provided by engineer.
+
+ %@ uploaded
+ %@ envoyé
+ No comment provided by engineer.
+
%@ wants to connect!
%@ veut se connecter !
@@ -219,6 +229,7 @@
%lld messages blocked by admin
+ %lld messages bloqués par l'administrateur
No comment provided by engineer.
@@ -341,6 +352,11 @@
**Confidentiel** : ne pas utiliser le serveur de notifications SimpleX, vérification de nouveaux messages periodiquement en arrière plan (dépend de l'utilisation de l'app).
No comment provided by engineer.
+
+ **Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.
+ **Remarque** : l'utilisation de la même base de données sur deux appareils interrompt le déchiffrement des messages provenant de vos connexions, par mesure de sécurité.
+ No comment provided by engineer.
+
**Please note**: you will NOT be able to recover or change passphrase if you lose it.
**Veuillez noter** : vous NE pourrez PAS récupérer ou modifier votre phrase secrète si vous la perdez.
@@ -356,6 +372,11 @@
**Avertissement** : les notifications push instantanées nécessitent une phrase secrète enregistrée dans la keychain.
No comment provided by engineer.
+
+ **Warning**: the archive will be removed.
+ **Avertissement** : l'archive sera supprimée.
+ No comment provided by engineer.
+
**e2e encrypted** audio call
appel audio **chiffré de bout en bout**
@@ -612,6 +633,11 @@
Le changement d'adresse sera annulé. L'ancienne adresse de réception sera utilisée.
No comment provided by engineer.
+
+ Admins can block a member for all.
+ Les admins peuvent bloquer un membre pour tous.
+ No comment provided by engineer.
+
Admins can create the links to join groups.
Les admins peuvent créer les liens qui permettent de rejoindre les groupes.
@@ -667,6 +693,11 @@
Tous vos contacts resteront connectés. La mise à jour du profil sera envoyée à vos contacts.
No comment provided by engineer.
+
+ All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.
+ Tous vos contacts, conversations et fichiers seront chiffrés en toute sécurité et transférés par morceaux vers les relais XFTP configurés.
+ No comment provided by engineer.
+
Allow
Autoriser
@@ -792,6 +823,11 @@
Build de l'app : %@
No comment provided by engineer.
+
+ App data migration
+ Transfert des données de l'application
+ No comment provided by engineer.
+
App encrypts new local files (except videos).
L'application chiffre les nouveaux fichiers locaux (sauf les vidéos).
@@ -827,6 +863,21 @@
Apparence
No comment provided by engineer.
+
+ Apply
+ Appliquer
+ No comment provided by engineer.
+
+
+ Archive and upload
+ Archiver et transférer
+ No comment provided by engineer.
+
+
+ Archiving database
+ Archivage de la base de données
+ No comment provided by engineer.
+
Attach
Attacher
@@ -924,6 +975,7 @@
Block for all
+ Bloqué pour tous
No comment provided by engineer.
@@ -938,6 +990,7 @@
Block member for all?
+ Bloquer le membre pour tous ?
No comment provided by engineer.
@@ -947,6 +1000,7 @@
Blocked by admin
+ Bloqué par l'administrateur
No comment provided by engineer.
@@ -1014,6 +1068,11 @@
Annuler
No comment provided by engineer.
+
+ Cancel migration
+ Annuler le transfert
+ No comment provided by engineer.
+
Cannot access keychain to save database password
Impossible d'accéder à la keychain pour enregistrer le mot de passe de la base de données
@@ -1115,6 +1174,11 @@
Le chat est arrêté. Si vous avez déjà utilisé cette base de données sur un autre appareil, vous devez la transférer à nouveau avant de démarrer le chat.
No comment provided by engineer.
+
+ Chat migrated!
+ Messagerie transférée !
+ No comment provided by engineer.
+
Chat preferences
Préférences de chat
@@ -1135,6 +1199,11 @@
Interface en chinois et en espagnol
No comment provided by engineer.
+
+ Choose _Migrate from another device_ on the new device and scan QR code.
+ Choisissez _Transferer depuis un autre appareil_ sur le nouvel appareil et scannez le code QR.
+ No comment provided by engineer.
+
Choose file
Choisir le fichier
@@ -1205,6 +1274,11 @@
Confirmer la mise à niveau de la base de données
No comment provided by engineer.
+
+ Confirm network settings
+ Confirmer les paramètres réseau
+ No comment provided by engineer.
+
Confirm new passphrase…
Confirmer la nouvelle phrase secrète…
@@ -1215,6 +1289,16 @@
Confirmer le mot de passe
No comment provided by engineer.
+
+ Confirm that you remember database passphrase to migrate it.
+ Confirmer que vous vous souvenez de la phrase secrète de la base de données pour la transférer.
+ No comment provided by engineer.
+
+
+ Confirm upload
+ Confirmer la transmission
+ No comment provided by engineer.
+
Connect
Se connecter
@@ -1411,7 +1495,7 @@ Il s'agit de votre propre lien unique !
Create an address to let people connect with you.
- Créez une adresse pour permettre aux gens de vous contacter.
+ Vous pouvez créer une adresse pour permettre aux autres utilisateurs de vous contacter.
No comment provided by engineer.
@@ -1474,6 +1558,11 @@ Il s'agit de votre propre lien unique !
Créé le %@
No comment provided by engineer.
+
+ Creating archive link
+ Création d'un lien d'archive
+ No comment provided by engineer.
+
Creating link…
Création d'un lien…
@@ -1694,6 +1783,11 @@ Cette opération ne peut être annulée !
Supprimer la base de données
No comment provided by engineer.
+
+ Delete database from this device
+ Supprimer la base de données de cet appareil
+ No comment provided by engineer.
+
Delete file
Supprimer le fichier
@@ -1984,11 +2078,26 @@ Cette opération ne peut être annulée !
Rétrograder et ouvrir le chat
No comment provided by engineer.
+
+ Download failed
+ Échec du téléchargement
+ No comment provided by engineer.
+
Download file
Télécharger le fichier
server test step
+
+ Downloading archive
+ Téléchargement de l'archive
+ No comment provided by engineer.
+
+
+ Downloading link details
+ Téléchargement des détails du lien
+ No comment provided by engineer.
+
Duplicate display name!
Nom d'affichage en double !
@@ -2044,6 +2153,11 @@ Cette opération ne peut être annulée !
Activer pour tous
No comment provided by engineer.
+
+ Enable in direct chats (BETA)!
+ Activé dans les conversations directes (BETA) !
+ No comment provided by engineer.
+
Enable instant notifications?
Activer les notifications instantanées ?
@@ -2159,6 +2273,11 @@ Cette opération ne peut être annulée !
Entrer un nom de groupe…
No comment provided by engineer.
+
+ Enter passphrase
+ Entrer la phrase secrète
+ No comment provided by engineer.
+
Enter passphrase…
Entrez la phrase secrète…
@@ -2219,6 +2338,11 @@ Cette opération ne peut être annulée !
Erreur lors de l'ajout de membre·s
No comment provided by engineer.
+
+ Error allowing contact PQ encryption
+ Erreur lors de la négociation du chiffrement PQ
+ No comment provided by engineer.
+
Error changing address
Erreur de changement d'adresse
@@ -2309,6 +2433,11 @@ Cette opération ne peut être annulée !
Erreur lors de la suppression du profil utilisateur
No comment provided by engineer.
+
+ Error downloading the archive
+ Erreur lors du téléchargement de l'archive
+ No comment provided by engineer.
+
Error enabling delivery receipts!
Erreur lors de l'activation des accusés de réception !
@@ -2384,6 +2513,11 @@ Cette opération ne peut être annulée !
Erreur lors de l'enregistrement de la phrase de passe dans la keychain
No comment provided by engineer.
+
+ Error saving settings
+ Erreur lors de l'enregistrement des paramètres
+ when migrating
+
Error saving user password
Erreur d'enregistrement du mot de passe de l'utilisateur
@@ -2454,6 +2588,16 @@ Cette opération ne peut être annulée !
Erreur de mise à jour de la confidentialité de l'utilisateur
No comment provided by engineer.
+
+ Error uploading the archive
+ Erreur lors de l'envoi de l'archive
+ No comment provided by engineer.
+
+
+ Error verifying passphrase:
+ Erreur lors de la vérification de la phrase secrète :
+ No comment provided by engineer.
+
Error:
Erreur :
@@ -2486,7 +2630,7 @@ Cette opération ne peut être annulée !
Expand
- Développer
+ Étendre
chat item action
@@ -2504,6 +2648,11 @@ Cette opération ne peut être annulée !
Archive de la base de données exportée.
No comment provided by engineer.
+
+ Exported file doesn't exist
+ Le fichier exporté n'existe pas
+ No comment provided by engineer.
+
Exporting database archive…
Exportation de l'archive de la base de données…
@@ -2574,6 +2723,16 @@ Cette opération ne peut être annulée !
Filtrer les messages non lus et favoris.
No comment provided by engineer.
+
+ Finalize migration
+ Finaliser le transfert
+ No comment provided by engineer.
+
+
+ Finalize migration on another device.
+ Finalisez le transfert sur l'autre appareil.
+ No comment provided by engineer.
+
Finally, we have them! 🚀
Enfin, les voilà ! 🚀
@@ -2864,6 +3023,11 @@ Cette opération ne peut être annulée !
Comment utiliser vos serveurs
No comment provided by engineer.
+
+ Hungarian interface
+ Interface en hongrois
+ No comment provided by engineer.
+
ICE servers (one per line)
Serveurs ICE (un par ligne)
@@ -2929,6 +3093,16 @@ Cette opération ne peut être annulée !
Importer la base de données
No comment provided by engineer.
+
+ Import failed
+ Échec de l'importation
+ No comment provided by engineer.
+
+
+ Importing archive
+ Importation de l'archive
+ No comment provided by engineer.
+
Improved message delivery
Amélioration de la transmission des messages
@@ -2944,6 +3118,11 @@ Cette opération ne peut être annulée !
Configuration de serveur améliorée
No comment provided by engineer.
+
+ In order to continue, chat should be stopped.
+ Pour continuer, le chat doit être interrompu.
+ No comment provided by engineer.
+
In reply to
En réponse à
@@ -3056,6 +3235,11 @@ Cette opération ne peut être annulée !
Lien invalide
No comment provided by engineer.
+
+ Invalid migration confirmation
+ Confirmation de migration invalide
+ No comment provided by engineer.
+
Invalid name!
Nom invalide !
@@ -3424,6 +3608,11 @@ Voici votre lien pour le groupe %@ !
Texte du message
No comment provided by engineer.
+
+ Message too large
+ Message trop volumineux
+ No comment provided by engineer.
+
Messages
Messages
@@ -3439,11 +3628,56 @@ Voici votre lien pour le groupe %@ !
Les messages de %@ seront affichés !
No comment provided by engineer.
+
+ Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.
+ Les messages, fichiers et appels sont protégés par un chiffrement **de bout en bout** avec une confidentialité persistante, une répudiation et une récupération en cas d'effraction.
+ No comment provided by engineer.
+
+
+ Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.
+ Les messages, fichiers et appels sont protégés par un chiffrement **2e2 résistant post-quantique** avec une confidentialité persistante, une répudiation et une récupération en cas d'effraction.
+ No comment provided by engineer.
+
+
+ Migrate device
+ Transférer l'appareil
+ No comment provided by engineer.
+
+
+ Migrate from another device
+ Transférer depuis un autre appareil
+ No comment provided by engineer.
+
+
+ Migrate here
+ Transférer ici
+ No comment provided by engineer.
+
+
+ Migrate to another device
+ Transférer vers un autre appareil
+ No comment provided by engineer.
+
+
+ Migrate to another device via QR code.
+ Transférer vers un autre appareil via un code QR.
+ No comment provided by engineer.
+
+
+ Migrating
+ Transfert
+ No comment provided by engineer.
+
Migrating database archive…
Migration de l'archive de la base de données…
No comment provided by engineer.
+
+ Migration complete
+ Transfert terminé
+ No comment provided by engineer.
+
Migration error:
Erreur de migration :
@@ -3803,6 +4037,11 @@ Voici votre lien pour le groupe %@ !
Ouvrir le groupe
No comment provided by engineer.
+
+ Open migration to another device
+ Ouvrir le transfert vers un autre appareil
+ authentication reason
+
Open user profiles
Ouvrir les profils d'utilisateurs
@@ -3818,11 +4057,21 @@ Voici votre lien pour le groupe %@ !
Ouverture de l'app…
No comment provided by engineer.
+
+ Or paste archive link
+ Ou coller le lien de l'archive
+ No comment provided by engineer.
+
Or scan QR code
Ou scanner le code QR
No comment provided by engineer.
+
+ Or securely share this file link
+ Ou partagez en toute sécurité le lien de ce fichier
+ No comment provided by engineer.
+
Or show this code
Ou présenter ce code
@@ -3908,6 +4157,11 @@ Voici votre lien pour le groupe %@ !
Erreur de déchiffrement
message decrypt error item
+
+ Picture-in-picture calls
+ Appels picture-in-picture
+ No comment provided by engineer.
+
Please ask your contact to enable sending voice messages.
Veuillez demander à votre contact de permettre l'envoi de messages vocaux.
@@ -3928,6 +4182,11 @@ Voici votre lien pour le groupe %@ !
Veuillez vérifier vos préférences ainsi que celles de votre contact.
No comment provided by engineer.
+
+ Please confirm that network settings are correct for this device.
+ Veuillez confirmer que les paramètres réseau de cet appareil sont corrects.
+ No comment provided by engineer.
+
Please contact developers.
Error: %@
@@ -3985,6 +4244,11 @@ Erreur : %@
Il est possible que l'empreinte du certificat dans l'adresse du serveur soit incorrecte
server test error
+
+ Post-quantum E2EE
+ E2EE post-quantique
+ No comment provided by engineer.
+
Preserve the last message draft, with attachments.
Conserver le brouillon du dernier message, avec les pièces jointes.
@@ -4120,6 +4384,16 @@ Erreur : %@
Notifications push
No comment provided by engineer.
+
+ Push server
+ Serveur Push
+ No comment provided by engineer.
+
+
+ Quantum resistant encryption
+ Chiffrement résistant post-quantique
+ No comment provided by engineer.
+
Rate the app
Évaluer l'app
@@ -4305,11 +4579,26 @@ Erreur : %@
Répéter la demande de connexion ?
No comment provided by engineer.
+
+ Repeat download
+ Répéter le téléchargement
+ No comment provided by engineer.
+
+
+ Repeat import
+ Répéter l'importation
+ No comment provided by engineer.
+
Repeat join request?
Répéter la requête d'adhésion ?
No comment provided by engineer.
+
+ Repeat upload
+ Répéter l'envoi
+ No comment provided by engineer.
+
Reply
Répondre
@@ -4410,6 +4699,11 @@ Erreur : %@
Serveurs SMP
No comment provided by engineer.
+
+ Safer groups
+ Groupes plus sûrs
+ No comment provided by engineer.
+
Save
Enregistrer
@@ -4775,6 +5069,11 @@ Erreur : %@
Définir le code d'accès
No comment provided by engineer.
+
+ Set passphrase
+ Définir une phrase secrète
+ No comment provided by engineer.
+
Set passphrase to export
Définir la phrase secrète pour l'export
@@ -4830,6 +5129,11 @@ Erreur : %@
Partager avec vos contacts
No comment provided by engineer.
+
+ Show QR code
+ Afficher le code QR
+ No comment provided by engineer.
+
Show calls in phone history
Afficher les appels dans l'historique du téléphone
@@ -4847,7 +5151,7 @@ Erreur : %@
Show preview
- Montrer l'aperçu
+ Afficher l'aperçu
No comment provided by engineer.
@@ -4970,6 +5274,11 @@ Erreur : %@
Arrêter SimpleX
authentication reason
+
+ Stop chat
+ Arrêter le chat
+ No comment provided by engineer.
+
Stop chat to enable database actions
Arrêter le chat pour permettre des actions sur la base de données
@@ -5010,6 +5319,11 @@ Erreur : %@
Cesser le partage d'adresse ?
No comment provided by engineer.
+
+ Stopping chat
+ Arrêt du chat
+ No comment provided by engineer.
+
Submit
Soumettre
@@ -5257,6 +5571,16 @@ Cela peut se produire en raison d'un bug ou lorsque la connexion est compromise.
Cette action ne peut être annulée - votre profil, vos contacts, vos messages et vos fichiers seront irréversiblement perdus.
No comment provided by engineer.
+
+ This chat is protected by end-to-end encryption.
+ Cette discussion est protégée par un chiffrement de bout en bout.
+ E2EE info chat item
+
+
+ This chat is protected by quantum resistant end-to-end encryption.
+ Cette discussion est protégée par un chiffrement de bout en bout résistant post-quantique.
+ E2EE info chat item
+
This device name
Nom de cet appareil
@@ -5396,6 +5720,7 @@ Vous serez invité à confirmer l'authentification avant que cette fonction ne s
Unblock for all
+ Débloquer pour tous
No comment provided by engineer.
@@ -5405,6 +5730,7 @@ Vous serez invité à confirmer l'authentification avant que cette fonction ne s
Unblock member for all?
+ Débloquer le membre pour tous ?
No comment provided by engineer.
@@ -5549,11 +5875,21 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien
Mettre à niveau et ouvrir le chat
No comment provided by engineer.
+
+ Upload failed
+ Échec de l'envoi
+ No comment provided by engineer.
+
Upload file
Transférer le fichier
server test step
+
+ Uploading archive
+ Envoi de l'archive
+ No comment provided by engineer.
+
Use .onion hosts
Utiliser les hôtes .onions
@@ -5604,6 +5940,11 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien
Utiliser ce serveur
No comment provided by engineer.
+
+ Use the app while in the call.
+ Utiliser l'application pendant l'appel.
+ No comment provided by engineer.
+
User profile
Profil d'utilisateur
@@ -5616,7 +5957,7 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien
Using SimpleX Chat servers.
- Utilisation des serveurs SimpleX Chat.
+ Vous utilisez les serveurs SimpleX.
No comment provided by engineer.
@@ -5639,6 +5980,16 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien
Vérifier les connexions
No comment provided by engineer.
+
+ Verify database passphrase
+ Vérifier la phrase secrète de la base de données
+ No comment provided by engineer.
+
+
+ Verify passphrase
+ Vérifier la phrase secrète
+ No comment provided by engineer.
+
Verify security code
Vérifier le code de sécurité
@@ -5729,6 +6080,11 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien
En attente de la vidéo
No comment provided by engineer.
+
+ Warning: starting chat on multiple devices is not supported and will cause message delivery failures
+ Attention : démarrer une session de chat sur plusieurs appareils n'est pas pris en charge et entraînera des dysfonctionnements au niveau de la transmission des messages
+ No comment provided by engineer.
+
Warning: you may lose some data!
Attention : vous risquez de perdre des données !
@@ -5749,6 +6105,11 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien
Message de bienvenue
No comment provided by engineer.
+
+ Welcome message is too long
+ Le message de bienvenue est trop long
+ No comment provided by engineer.
+
What's new
Quoi de neuf ?
@@ -5761,7 +6122,7 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien
When people request to connect, you can accept or reject it.
- Lorsque des personnes demandent à se connecter, vous pouvez les accepter ou les refuser.
+ Vous pouvez accepter ou refuser les demandes de contacts.
No comment provided by engineer.
@@ -5804,6 +6165,11 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien
Vous
No comment provided by engineer.
+
+ You **must not** use the same database on two devices.
+ Vous **ne devez pas** utiliser la même base de données sur deux appareils.
+ No comment provided by engineer.
+
You accepted connection
Vous avez accepté la connexion
@@ -5891,6 +6257,11 @@ Répéter la demande d'adhésion ?
Vous pouvez les activer ultérieurement via les paramètres de Confidentialité et Sécurité de l'application.
No comment provided by engineer.
+
+ You can give another try.
+ Vous pouvez faire un nouvel essai.
+ No comment provided by engineer.
+
You can hide or mute a user profile - swipe it to the right.
Vous pouvez masquer ou mettre en sourdine un profil d'utilisateur - faites-le glisser vers la droite.
@@ -5923,7 +6294,7 @@ Répéter la demande d'adhésion ?
You can share your address as a link or QR code - anybody can connect to you.
- Vous pouvez partager votre adresse sous forme de lien ou de code QR - n'importe qui pourra se connecter à vous.
+ Vous pouvez partager votre adresse sous la forme d'un lien ou d'un code QR - tout le monde peut l'utiliser pour vous contacter.
No comment provided by engineer.
@@ -6244,12 +6615,12 @@ Les serveurs SimpleX ne peuvent pas voir votre profil.
agreeing encryption for %@…
- accord sur le chiffrement pour %@…
+ négociation du chiffrement avec %@…
chat item text
agreeing encryption…
- accord sur le chiffrement…
+ négociation du chiffrement…
chat item text
@@ -6285,15 +6656,17 @@ Les serveurs SimpleX ne peuvent pas voir votre profil.
blocked
blocké
- No comment provided by engineer.
+ marked deleted chat item preview text
blocked %@
+ %@ bloqué
rcv group event chat item
blocked by admin
- blocked chat item
+ bloqué par l'administrateur
+ marked deleted chat item preview text
bold
@@ -6322,7 +6695,7 @@ Les serveurs SimpleX ne peuvent pas voir votre profil.
changed address for you
- adresse modifiée pour vous
+ changement de l'adresse du contact
chat item text
@@ -6723,7 +7096,7 @@ Les serveurs SimpleX ne peuvent pas voir votre profil.
moderated by %@
modéré par %@
- No comment provided by engineer.
+ marked deleted chat item preview text
months
@@ -6792,6 +7165,11 @@ Les serveurs SimpleX ne peuvent pas voir votre profil.
pair-à-pair
No comment provided by engineer.
+
+ quantum resistant e2e encryption
+ chiffrement e2e résistant post-quantique
+ chat item text
+
received answer…
réponse reçu…
@@ -6859,14 +7237,19 @@ Les serveurs SimpleX ne peuvent pas voir votre profil.
set new contact address
- définir une nouvelle adresse de contact
+ a changé d'adresse de contact
profile update event chat item
set new profile picture
- définir une nouvelle image de profil
+ a changé d'image de profil
profile update event chat item
+
+ standard end-to-end encryption
+ chiffrement de bout en bout standard
+ chat item text
+
starting…
lancement…
@@ -6884,6 +7267,7 @@ Les serveurs SimpleX ne peuvent pas voir votre profil.
unblocked %@
+ %@ débloqué
rcv group event chat item
@@ -6978,6 +7362,7 @@ Les serveurs SimpleX ne peuvent pas voir votre profil.
you blocked %@
+ vous avez bloqué %@
snd group event chat item
@@ -7022,6 +7407,7 @@ Les serveurs SimpleX ne peuvent pas voir votre profil.
you unblocked %@
+ vous avez débloqué %@
snd group event chat item
diff --git a/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/Shared/Assets.xcassets/AccentColor.colorset/Contents.json b/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/Shared/Assets.xcassets/AccentColor.colorset/Contents.json
new file mode 100644
index 0000000000..84d4c2f1c9
--- /dev/null
+++ b/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/Shared/Assets.xcassets/AccentColor.colorset/Contents.json
@@ -0,0 +1,15 @@
+{
+ "colors" : [
+ {
+ "idiom" : "universal",
+ "locale" : "hu"
+ }
+ ],
+ "properties" : {
+ "localizable" : true
+ },
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/Shared/Assets.xcassets/Contents.json b/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/Shared/Assets.xcassets/Contents.json
new file mode 100644
index 0000000000..73c00596a7
--- /dev/null
+++ b/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/Shared/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff b/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff
new file mode 100644
index 0000000000..546bdf23d3
--- /dev/null
+++ b/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff
@@ -0,0 +1,7409 @@
+
+
+
+
+
+
+
+
+
+
+ No comment provided by engineer.
+
+
+
+
+ No comment provided by engineer.
+
+
+
+
+ No comment provided by engineer.
+
+
+
+
+ No comment provided by engineer.
+
+
+ (
+ (
+ No comment provided by engineer.
+
+
+ (can be copied)
+ (másolható)
+ No comment provided by engineer.
+
+
+ !1 colored!
+ !1 színezett!
+ No comment provided by engineer.
+
+
+ # %@
+ # %@
+ copied message info title, # <title>
+
+
+ ## History
+ ## Előzmények
+ copied message info
+
+
+ ## In reply to
+ ## Válaszul erre
+ copied message info
+
+
+ #secret#
+ #titkos#
+ No comment provided by engineer.
+
+
+ %@
+ %@
+ No comment provided by engineer.
+
+
+ %@ %@
+ %@ %@
+ No comment provided by engineer.
+
+
+ %@ (current)
+ %@ (jelenlegi)
+ No comment provided by engineer.
+
+
+ %@ (current):
+ %@ (jelenlegi):
+ copied message info
+
+
+ %@ / %@
+ %@ / %@
+ No comment provided by engineer.
+
+
+ %@ and %@
+ %@ és %@
+ No comment provided by engineer.
+
+
+ %@ and %@ connected
+ %@ és %@ csatlakozott
+ No comment provided by engineer.
+
+
+ %1$@ at %2$@:
+ %1$@ %2$@-kor:
+ copied message info, <sender> at <time>
+
+
+ %@ connected
+ %@ csatlakozott
+ No comment provided by engineer.
+
+
+ %@ downloaded
+ No comment provided by engineer.
+
+
+ %@ is connected!
+ %@ csatlakozott!
+ notification title
+
+
+ %@ is not verified
+ %@ nem ellenőrzött
+ No comment provided by engineer.
+
+
+ %@ is verified
+ %@ ellenőrizve
+ No comment provided by engineer.
+
+
+ %@ servers
+ %@ kiszolgáló
+ No comment provided by engineer.
+
+
+ %@ uploaded
+ No comment provided by engineer.
+
+
+ %@ wants to connect!
+ %@ csatlakozni szeretne!
+ notification title
+
+
+ %@, %@ and %lld members
+ %@, %@ és további %lld tag
+ No comment provided by engineer.
+
+
+ %@, %@ and %lld other members connected
+ %@, %@ és további %lld tag csatlakozott
+ No comment provided by engineer.
+
+
+ %@:
+ %@:
+ copied message info
+
+
+ %d days
+ %d nap
+ time interval
+
+
+ %d hours
+ %d óra
+ time interval
+
+
+ %d min
+ %d perc
+ time interval
+
+
+ %d months
+ %d hónap
+ time interval
+
+
+ %d sec
+ %d mp
+ time interval
+
+
+ %d skipped message(s)
+ %d kihagyott üzenet
+ integrity error chat item
+
+
+ %d weeks
+ %d hét
+ time interval
+
+
+ %lld
+ %lld
+ No comment provided by engineer.
+
+
+ %lld %@
+ %lld %@
+ No comment provided by engineer.
+
+
+ %lld contact(s) selected
+ %lld ismerős kiválasztva
+ No comment provided by engineer.
+
+
+ %lld file(s) with total size of %@
+ %lld fájl, amely(ek)nek teljes mérete: %@
+ No comment provided by engineer.
+
+
+ %lld group events
+ %lld csoportesemény
+ No comment provided by engineer.
+
+
+ %lld members
+ %lld tag
+ No comment provided by engineer.
+
+
+ %lld messages blocked
+ %lld üzenet blokkolva
+ No comment provided by engineer.
+
+
+ %lld messages blocked by admin
+ %lld üzenet blokkolva az admin által
+ No comment provided by engineer.
+
+
+ %lld messages marked deleted
+ %lld törlésre megjelölt üzenet
+ No comment provided by engineer.
+
+
+ %lld messages moderated by %@
+ %@ %lld üzenetet moderált
+ No comment provided by engineer.
+
+
+ %lld minutes
+ %lld perc
+ No comment provided by engineer.
+
+
+ %lld new interface languages
+ %lld új nyelvi csomag
+ No comment provided by engineer.
+
+
+ %lld second(s)
+ %lld másodperc
+ No comment provided by engineer.
+
+
+ %lld seconds
+ %lld másodperc
+ No comment provided by engineer.
+
+
+ %lldd
+ %lldd
+ No comment provided by engineer.
+
+
+ %lldh
+ %lldh
+ No comment provided by engineer.
+
+
+ %lldk
+ %lldk
+ No comment provided by engineer.
+
+
+ %lldm
+ %lldm
+ No comment provided by engineer.
+
+
+ %lldmth
+ %lldmth
+ No comment provided by engineer.
+
+
+ %llds
+ %llds
+ No comment provided by engineer.
+
+
+ %lldw
+ %lldw
+ No comment provided by engineer.
+
+
+ %u messages failed to decrypt.
+ %u üzenet visszafejtése sikertelen.
+ No comment provided by engineer.
+
+
+ %u messages skipped.
+ %u kihagyott üzenet.
+ No comment provided by engineer.
+
+
+ (
+ (
+ No comment provided by engineer.
+
+
+ (new)
+ (új)
+ No comment provided by engineer.
+
+
+ (this device v%@)
+ (ez az eszköz v%@)
+ No comment provided by engineer.
+
+
+ )
+ )
+ No comment provided by engineer.
+
+
+ **Add contact**: to create a new invitation link, or connect via a link you received.
+ **Ismerős hozzáadása**: új meghívó hivatkozás létrehozásához, vagy egy kapott hivatkozáson keresztül történő csatlakozáshoz.
+ No comment provided by engineer.
+
+
+ **Add new contact**: to create your one-time QR Code or link for your contact.
+ **Új ismerős hozzáadása**: egyszer használatos QR-kód vagy hivatkozás létrehozása a kapcsolattartóhoz.
+ No comment provided by engineer.
+
+
+ **Create group**: to create a new group.
+ **Csoport létrehozása**: új csoport létrehozásához.
+ No comment provided by engineer.
+
+
+ **More private**: check new messages every 20 minutes. Device token is shared with SimpleX Chat server, but not how many contacts or messages you have.
+ **Privátabb**: 20 percenként ellenőrzi az új üzeneteket. Az eszköztoken megosztásra kerül a SimpleX Chat kiszolgálóval, de az nem, hogy hány ismerőse vagy üzenete van.
+ No comment provided by engineer.
+
+
+ **Most private**: do not use SimpleX Chat notifications server, check messages periodically in the background (depends on how often you use the app).
+ **Legprivátabb**: ne használja a SimpleX Chat értesítési szervert, rendszeresen ellenőrizze az üzeneteket a háttérben (attól függően, hogy milyen gyakran használja az alkalmazást).
+ No comment provided by engineer.
+
+
+ **Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.
+ No comment provided by engineer.
+
+
+ **Please note**: you will NOT be able to recover or change passphrase if you lose it.
+ **Figyelem**: NEM tudja visszaállítani vagy megváltoztatni jelmondatát, ha elveszíti azt.
+ No comment provided by engineer.
+
+
+ **Recommended**: device token and notifications are sent to SimpleX Chat notification server, but not the message content, size or who it is from.
+ **Javasolt**: az eszköztoken és az értesítések elküldésre kerülnek a SimpleX Chat értesítési szerverre, kivéve az üzenet tartalma, mérete vagy az, hogy kitől származik.
+ No comment provided by engineer.
+
+
+ **Warning**: Instant push notifications require passphrase saved in Keychain.
+ **Figyelmeztetés**: Az azonnali push-értesítésekhez a kulcstárolóban tárolt jelmondat megadása szükséges.
+ No comment provided by engineer.
+
+
+ **Warning**: the archive will be removed.
+ No comment provided by engineer.
+
+
+ **e2e encrypted** audio call
+ **e2e titkosított** hanghívás
+ No comment provided by engineer.
+
+
+ **e2e encrypted** video call
+ **e2e titkosított** videóhívás
+ No comment provided by engineer.
+
+
+ \*bold*
+ \*félkövér*
+ No comment provided by engineer.
+
+
+ ,
+ ,
+ 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)!
+- delivery receipts (up to 20 members).
+- 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%2Ld3%3DWpxkKFeXSPv3pwp %2F%3Fv%3D1-2%26dh %3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6glco6bqjETA)4Beklco6bqj)
+- kézbesítési jelentések (legfeljebb 20 tag).
+- gyorsabb és stabilabb.
+ No comment provided by engineer.
+
+
+ - more stable message delivery.
+- a bit better groups.
+- and more!
+ - stabilabb üzenetkézbesítés.
+- valamivel jobb csoportok.
+- és még sok más!
+ No comment provided by engineer.
+
+
+ - optionally notify deleted contacts.
+- profile names with spaces.
+- and more!
+ - opcionális értesítés a törölt kapcsolatokról.
+- profilnevek szóközökkel.
+- és még sok más!
+ No comment provided by engineer.
+
+
+ - voice messages up to 5 minutes.
+- custom time to disappear.
+- editing history.
+ - hangüzenetek legfeljebb 5 perces időtartamig.
+- egyedi eltűnési időhatár megadása.
+- előzmények szerkesztése.
+ No comment provided by engineer.
+
+
+ .
+ .
+ No comment provided by engineer.
+
+
+ 0 sec
+ 0 mp
+ time to disappear
+
+
+ 0s
+ 0s
+ No comment provided by engineer.
+
+
+ 1 day
+ 1 nap
+ time interval
+
+
+ 1 hour
+ 1 óra
+ time interval
+
+
+ 1 minute
+ 1 perc
+ No comment provided by engineer.
+
+
+ 1 month
+ 1 hónap
+ time interval
+
+
+ 1 week
+ 1 hét
+ time interval
+
+
+ 5 minutes
+ 5 perc
+ No comment provided by engineer.
+
+
+ 6
+ 6
+ No comment provided by engineer.
+
+
+ 30 seconds
+ 30 másodperc
+ No comment provided by engineer.
+
+
+ :
+ :
+ No comment provided by engineer.
+
+
+ <p>Hi!</p>
+<p><a href="%@">Connect to me via SimpleX Chat</a></p>
+ <p>Üdvözlöm!</p>
+<p><a href="%@">Csatlakozzon hozzám a SimpleX Chaten</a></p>
+ email text
+
+
+ A few more things
+ Még néhány dolog
+ No comment provided by engineer.
+
+
+ A new contact
+ Egy új ismerős
+ notification title
+
+
+ A new random profile will be shared.
+ Egy új, véletlenszerű profil kerül megosztásra.
+ No comment provided by engineer.
+
+
+ A separate TCP connection will be used **for each chat profile you have in the app**.
+ A rendszer külön TCP-kapcsolatot fog használni **az alkalmazásban található minden csevegési profilhoz**.
+ No comment provided by engineer.
+
+
+ A separate TCP connection will be used **for each contact and group member**.
+**Please note**: if you have many connections, your battery and traffic consumption can be substantially higher and some connections may fail.
+ A rendszer külön TCP-kapcsolatot fog használni **minden ismerőshöz és csoporttaghoz**.
+**Figyelem**: sok kapcsolódás esetén, az akkumulátor- és adatforgalom fogyasztás jelentősen megnőhet, és egyes kapcsolatok meghiúsulhatnak.
+ No comment provided by engineer.
+
+
+ Abort
+ Megszakítás
+ No comment provided by engineer.
+
+
+ Abort changing address
+ Címváltoztatás megszakítása
+ No comment provided by engineer.
+
+
+ Abort changing address?
+ Címváltoztatás megszakítása??
+ No comment provided by engineer.
+
+
+ About SimpleX
+ A SimpleX névjegye
+ No comment provided by engineer.
+
+
+ About SimpleX Chat
+ A SimpleX Chat névjegye
+ No comment provided by engineer.
+
+
+ About SimpleX address
+ A SimpleX azonosítóról
+ No comment provided by engineer.
+
+
+ Accent color
+ Kiemelő szín
+ No comment provided by engineer.
+
+
+ Accept
+ Elfogadás
+ accept contact request via notification
+ accept incoming call via notification
+
+
+ Accept connection request?
+ Kapcsolatfelvétel elfogadása?
+ No comment provided by engineer.
+
+
+ Accept contact request from %@?
+ Elfogadja %@ kapcsolat kérését?
+ notification body
+
+
+ Accept incognito
+ Fogadás inkognítóban
+ accept contact request via notification
+
+
+ Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts.
+ Azonosító hozzáadása a profilhoz, hogy az ismerősök megoszthassák másokkal. A profilfrissítés elküldésre kerül ismerősők számára.
+ No comment provided by engineer.
+
+
+ Add contact
+ Ismerős hozzáadása
+ No comment provided by engineer.
+
+
+ Add preset servers
+ Előre beállított kiszolgálók hozzáadása
+ No comment provided by engineer.
+
+
+ Add profile
+ Profil hozzáadása
+ No comment provided by engineer.
+
+
+ Add servers by scanning QR codes.
+ Kiszolgáló hozzáadása QR-kód beolvasásával.
+ No comment provided by engineer.
+
+
+ Add server…
+ Kiszolgáló hozzáadása…
+ No comment provided by engineer.
+
+
+ Add to another device
+ Hozzáadás egy másik eszközhöz
+ No comment provided by engineer.
+
+
+ Add welcome message
+ Üdvözlő üzenet hozzáadása
+ No comment provided by engineer.
+
+
+ Address
+ Cím
+ No comment provided by engineer.
+
+
+ Address change will be aborted. Old receiving address will be used.
+ A cím módosítása megszakad. A régi fogadási cím kerül felhasználásra.
+ No comment provided by engineer.
+
+
+ Admins can block a member for all.
+ No comment provided by engineer.
+
+
+ Admins can create the links to join groups.
+ Az adminok hivatkozásokat hozhatnak létre a csoportokhoz való csatlakozáshoz.
+ No comment provided by engineer.
+
+
+ Advanced network settings
+ Speciális hálózati beállítások
+ No comment provided by engineer.
+
+
+ All app data is deleted.
+ Minden alkalmazásadat törölve.
+ No comment provided by engineer.
+
+
+ All chats and messages will be deleted - this cannot be undone!
+ Minden csevegés és üzenet törlésre kerül - ez nem vonható vissza!
+ No comment provided by engineer.
+
+
+ All data is erased when it is entered.
+ A jelkód megadása után minden adat törlésre kerül.
+ No comment provided by engineer.
+
+
+ All group members will remain connected.
+ Minden csoporttag csatlakoztatva marad.
+ No comment provided by engineer.
+
+
+ All messages will be deleted - this cannot be undone!
+ Minden üzenet törlésre kerül – ez nem vonható vissza!
+ No comment provided by engineer.
+
+
+ All messages will be deleted - this cannot be undone! The messages will be deleted ONLY for you.
+ Minden üzenet törlésre kerül - ezt nem vonható vissza! Az üzenetek CSAK az ön számára törlődnek.
+ No comment provided by engineer.
+
+
+ All new messages from %@ will be hidden!
+ Minden új üzenet elrejtésre kerül tőle: %@!
+ No comment provided by engineer.
+
+
+ All your contacts will remain connected.
+ Minden ismerős csatlakoztatva marad.
+ No comment provided by engineer.
+
+
+ All your contacts will remain connected. Profile update will be sent to your contacts.
+ Ismerőseivel kapcsolatban marad. A profil változtatások frissítésre kerülnek az ismerősöknél.
+ No comment provided by engineer.
+
+
+ All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.
+ No comment provided by engineer.
+
+
+ Allow
+ Engedélyezés
+ No comment provided by engineer.
+
+
+ Allow calls only if your contact allows them.
+ Hívások engedélyezése kizárólag abban az esetben, ha ismerőse is engedélyezi.
+ No comment provided by engineer.
+
+
+ Allow disappearing messages only if your contact allows it to you.
+ Eltűnő üzenetek engedélyezése kizárólag abban az esetben, ha ismerőse is engedélyezi az ön számára.
+ No comment provided by engineer.
+
+
+ Allow irreversible message deletion only if your contact allows it to you. (24 hours)
+ Üzenet végleges törlésének engedélyezése kizárólag abban az esetben, ha ismerőse is engedélyezi. (24 óra)
+ No comment provided by engineer.
+
+
+ Allow message reactions only if your contact allows them.
+ Üzenetreakciók engedélyezése kizárólag abban az esetben, ha ismerőse is engedélyezi.
+ No comment provided by engineer.
+
+
+ Allow message reactions.
+ Üzenetreakciók engedélyezése.
+ No comment provided by engineer.
+
+
+ Allow sending direct messages to members.
+ Közvetlen üzenetek küldésének engedélyezése tagok részére.
+ No comment provided by engineer.
+
+
+ Allow sending disappearing messages.
+ Eltűnő üzenetek küldésének engedélyezése.
+ No comment provided by engineer.
+
+
+ Allow to irreversibly delete sent messages. (24 hours)
+ Elküldött üzenetek visszafordíthatatlan törlésének engedélyezése. (24 óra)
+ No comment provided by engineer.
+
+
+ Allow to send files and media.
+ Fájlok és médiatartalom küldésének engedélyezése.
+ No comment provided by engineer.
+
+
+ Allow to send voice messages.
+ Hangüzenetek küldésének engedélyezése.
+ No comment provided by engineer.
+
+
+ Allow voice messages only if your contact allows them.
+ Hangüzenetek küldésének engedélyezése kizárólag abban az esetben, ha ismerőse is engedélyezi.
+ No comment provided by engineer.
+
+
+ Allow voice messages?
+ Hangüzenetek engedélyezése?
+ No comment provided by engineer.
+
+
+ Allow your contacts adding message reactions.
+ Ismerősök általi üzenetreakciók hozzáadásának engedélyezése.
+ No comment provided by engineer.
+
+
+ Allow your contacts to call you.
+ Hívások engedélyezése ismerősök számára.
+ No comment provided by engineer.
+
+
+ Allow your contacts to irreversibly delete sent messages. (24 hours)
+ Elküldött üzenetek visszafordíthatatlan törlésének engedélyezése ismerősök számára. (24 óra)
+ No comment provided by engineer.
+
+
+ Allow your contacts to send disappearing messages.
+ Eltűnő üzenetek engedélyezése ismerősök számára.
+ No comment provided by engineer.
+
+
+ Allow your contacts to send voice messages.
+ Hangüzenetek küldésének engedélyezése ismerősök számára.
+ No comment provided by engineer.
+
+
+ Already connected?
+ Csatlakoztatva?
+ No comment provided by engineer.
+
+
+ Already connecting!
+ Kapcsolódás folyamatban!
+ No comment provided by engineer.
+
+
+ Already joining the group!
+ Csatlakozás folyamatban!
+ No comment provided by engineer.
+
+
+ Always use relay
+ Mindig használjon átjátszó kiszolgálót
+ No comment provided by engineer.
+
+
+ An empty chat profile with the provided name is created, and the app opens as usual.
+ Egy üres csevegési profil jön létre a megadott névvel, és az alkalmazás a szokásos módon megnyílik.
+ No comment provided by engineer.
+
+
+ Answer call
+ Hívás fogadása
+ No comment provided by engineer.
+
+
+ App build: %@
+ Az alkalmazás build száma: %@
+ No comment provided by engineer.
+
+
+ App data migration
+ No comment provided by engineer.
+
+
+ App encrypts new local files (except videos).
+ Az alkalmazás titkosítja a helyi fájlokat (a videók kivételével).
+ No comment provided by engineer.
+
+
+ App icon
+ Alkalmazás ikon
+ No comment provided by engineer.
+
+
+ App passcode
+ Alkalmazás jelkód
+ No comment provided by engineer.
+
+
+ App passcode is replaced with self-destruct passcode.
+ Az alkalmazás jelkód helyettesítésre kerül egy önmegsemmisítő jelkóddal.
+ No comment provided by engineer.
+
+
+ App version
+ Alkalmazás verzió
+ No comment provided by engineer.
+
+
+ App version: v%@
+ Alkalmazás verzió: v%@
+ No comment provided by engineer.
+
+
+ Appearance
+ Megjelenés
+ No comment provided by engineer.
+
+
+ Apply
+ No comment provided by engineer.
+
+
+ Archive and upload
+ No comment provided by engineer.
+
+
+ Archiving database
+ No comment provided by engineer.
+
+
+ Attach
+ Csatolás
+ No comment provided by engineer.
+
+
+ Audio & video calls
+ Hang- és videóhívások
+ No comment provided by engineer.
+
+
+ Audio and video calls
+ Hang- és videóhívások
+ No comment provided by engineer.
+
+
+ Audio/video calls
+ Hang-/videóhívások
+ chat feature
+
+
+ Audio/video calls are prohibited.
+ A hang- és videóhívások le vannak tiltva.
+ No comment provided by engineer.
+
+
+ Authentication cancelled
+ Hitelesítés megszakítva
+ PIN entry
+
+
+ Authentication failed
+ Hitelesítés sikertelen
+ No comment provided by engineer.
+
+
+ Authentication is required before the call is connected, but you may miss calls.
+ A hívás csatlakoztatása előtt hitelesítésre van szükség, de előfordulhat, hogy nem tud hívásokat fogadni.
+ No comment provided by engineer.
+
+
+ Authentication unavailable
+ Hitelesítés elérhetetlen
+ No comment provided by engineer.
+
+
+ Auto-accept
+ Automatikus elfogadás
+ No comment provided by engineer.
+
+
+ Auto-accept contact requests
+ Ismerős jelölések automatikus elfogadása
+ No comment provided by engineer.
+
+
+ Auto-accept images
+ Fotók automatikus elfogadása
+ No comment provided by engineer.
+
+
+ Back
+ Vissza
+ No comment provided by engineer.
+
+
+ Bad desktop address
+ Hibás számítógép azonosító
+ No comment provided by engineer.
+
+
+ Bad message ID
+ Téves üzenet ID
+ No comment provided by engineer.
+
+
+ Bad message hash
+ Téves üzenet hash
+ No comment provided by engineer.
+
+
+ Better groups
+ Javított csoportok
+ No comment provided by engineer.
+
+
+ Better messages
+ Jobb üzenetek
+ No comment provided by engineer.
+
+
+ Block
+ Blokkolás
+ No comment provided by engineer.
+
+
+ Block for all
+ Mindenki számára letiltva
+ No comment provided by engineer.
+
+
+ Block group members
+ Csoporttagok blokkolása
+ No comment provided by engineer.
+
+
+ Block member
+ Tag blokkolása
+ No comment provided by engineer.
+
+
+ Block member for all?
+ Tag letiltása mindenki számára?
+ No comment provided by engineer.
+
+
+ Block member?
+ Tag blokkolása?
+ No comment provided by engineer.
+
+
+ Blocked by admin
+ Letiltva az admin által
+ No comment provided by engineer.
+
+
+ Both you and your contact can add message reactions.
+ Mindkét fél is hozzáadhat üzenetreakciókat.
+ No comment provided by engineer.
+
+
+ Both you and your contact can irreversibly delete sent messages. (24 hours)
+ Mindkét fél visszafordíthatatlanul törölheti az elküldött üzeneteket. (24 óra)
+ No comment provided by engineer.
+
+
+ Both you and your contact can make calls.
+ Mindkét fél tud hívásokat indítani.
+ No comment provided by engineer.
+
+
+ Both you and your contact can send disappearing messages.
+ Mindkét fél küldhet eltűnő üzeneteket.
+ No comment provided by engineer.
+
+
+ Both you and your contact can send voice messages.
+ Mindkét fél küldhet hangüzeneteket.
+ No comment provided by engineer.
+
+
+ Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!
+ Bolgár, finn, thai és ukrán – köszönet a felhasználóknak és a [Weblate-nek](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!
+ No comment provided by engineer.
+
+
+ By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).
+ Csevegési profil (alapértelmezett) vagy [kapcsolat alapján] (https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BÉTA).
+ No comment provided by engineer.
+
+
+ Call already ended!
+ A hívás már befejeződött!
+ No comment provided by engineer.
+
+
+ Calls
+ Hívások
+ No comment provided by engineer.
+
+
+ Camera not available
+ A fényképező nem elérhető
+ No comment provided by engineer.
+
+
+ Can't invite contact!
+ Ismerősök meghívása le van tiltva!
+ No comment provided by engineer.
+
+
+ Can't invite contacts!
+ Ismerősök meghívása nem lehetséges!
+ No comment provided by engineer.
+
+
+ Cancel
+ Megszakítás
+ No comment provided by engineer.
+
+
+ Cancel migration
+ No comment provided by engineer.
+
+
+ Cannot access keychain to save database password
+ Nem lehet hozzáférni a kulcstartóhoz az adatbázis jelszavának mentéséhez
+ No comment provided by engineer.
+
+
+ Cannot receive file
+ Nem lehet fogadni a fájlt
+ No comment provided by engineer.
+
+
+ Change
+ Változtatás
+ No comment provided by engineer.
+
+
+ Change database passphrase?
+ Adatbázis jelmondat megváltoztatása?
+ No comment provided by engineer.
+
+
+ Change lock mode
+ Zárolási mód megváltoztatása
+ authentication reason
+
+
+ Change member role?
+ Tag szerepkörének megváltoztatása?
+ No comment provided by engineer.
+
+
+ Change passcode
+ Jelkód megváltoztatása
+ authentication reason
+
+
+ Change receiving address
+ A fogadó cím megváltoztatása
+ No comment provided by engineer.
+
+
+ Change receiving address?
+ Megváltoztatja a fogadó címet?
+ No comment provided by engineer.
+
+
+ Change role
+ Szerepkör megváltoztatása
+ No comment provided by engineer.
+
+
+ Change self-destruct mode
+ Önmegsemmisítő mód megváltoztatása
+ authentication reason
+
+
+ Change self-destruct passcode
+ Önmegsemmisító jelkód megváltoztatása
+ authentication reason
+ set passcode view
+
+
+ Chat archive
+ Csevegési archívum
+ No comment provided by engineer.
+
+
+ Chat console
+ Csevegési konzol
+ No comment provided by engineer.
+
+
+ Chat database
+ Csevegési adatbázis
+ No comment provided by engineer.
+
+
+ Chat database deleted
+ Csevegési adatbázis törölve
+ No comment provided by engineer.
+
+
+ Chat database imported
+ Csevegési adatbázis importálva
+ No comment provided by engineer.
+
+
+ Chat is running
+ A csevegés fut
+ No comment provided by engineer.
+
+
+ Chat is stopped
+ A csevegés leállt
+ No comment provided by engineer.
+
+
+ Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat.
+ A csevegés leállt. Ha már használta ezt az adatbázist egy másik eszközön, úgy visszaállítás szükséges a csevegés megkezdése előtt.
+ No comment provided by engineer.
+
+
+ Chat migrated!
+ No comment provided by engineer.
+
+
+ Chat preferences
+ Csevegési beállítások
+ No comment provided by engineer.
+
+
+ Chats
+ Csevegések
+ No comment provided by engineer.
+
+
+ Check server address and try again.
+ Kiszolgáló címének ellenőrzése és újrapróbálkozás.
+ No comment provided by engineer.
+
+
+ Chinese and Spanish interface
+ Kínai és spanyol kezelőfelület
+ No comment provided by engineer.
+
+
+ Choose _Migrate from another device_ on the new device and scan QR code.
+ No comment provided by engineer.
+
+
+ Choose file
+ Fájl kiválasztása
+ No comment provided by engineer.
+
+
+ Choose from library
+ Választás a könyvtárból
+ No comment provided by engineer.
+
+
+ Clear
+ Kiürítés
+ No comment provided by engineer.
+
+
+ Clear conversation
+ Beszélgetés kiürítése
+ No comment provided by engineer.
+
+
+ Clear conversation?
+ Beszélgetés kiürítése?
+ No comment provided by engineer.
+
+
+ Clear private notes?
+ Privát jegyzetek törlése?
+ No comment provided by engineer.
+
+
+ Clear verification
+ Hitelesítés törlése
+ No comment provided by engineer.
+
+
+ Colors
+ Színek
+ No comment provided by engineer.
+
+
+ Compare file
+ Fájl összehasonlítás
+ server test step
+
+
+ Compare security codes with your contacts.
+ Biztonsági kódok összehasonlítása az ismerősökkel.
+ No comment provided by engineer.
+
+
+ Configure ICE servers
+ ICE kiszolgálók beállítása
+ No comment provided by engineer.
+
+
+ Confirm
+ Megerősítés
+ No comment provided by engineer.
+
+
+ Confirm Passcode
+ Jelkód megerősítése
+ No comment provided by engineer.
+
+
+ Confirm database upgrades
+ Adatbázis frissítés megerősítése
+ No comment provided by engineer.
+
+
+ Confirm network settings
+ No comment provided by engineer.
+
+
+ Confirm new passphrase…
+ Új jelmondat megerősítése…
+ No comment provided by engineer.
+
+
+ Confirm password
+ Jelszó megerősítése
+ No comment provided by engineer.
+
+
+ Confirm that you remember database passphrase to migrate it.
+ No comment provided by engineer.
+
+
+ Confirm upload
+ No comment provided by engineer.
+
+
+ Connect
+ Kapcsolódás
+ server test step
+
+
+ Connect automatically
+ Kapcsolódás automatikusan
+ No comment provided by engineer.
+
+
+ Connect incognito
+ Inkognítóban csatlakozva
+ No comment provided by engineer.
+
+
+ Connect to desktop
+ Kapcsolódás számítógéphez
+ No comment provided by engineer.
+
+
+ Connect to yourself?
+ Kapcsolódás saját magához?
+ No comment provided by engineer.
+
+
+ Connect to yourself?
+This is your own SimpleX address!
+ Kapcsolódás saját magához?
+Ez a SimpleX azonosítója!
+ No comment provided by engineer.
+
+
+ Connect to yourself?
+This is your own one-time link!
+ Kapcsolódás saját magához?
+Ez az egyszer használatos hivatkozása!
+ No comment provided by engineer.
+
+
+ Connect via contact address
+ Kapcsolódás ismerős azonosítója által
+ No comment provided by engineer.
+
+
+ Connect via link
+ Kapcsolódás egy hivatkozáson keresztül
+ No comment provided by engineer.
+
+
+ Connect via one-time link
+ Kapcsolódás egyszer használatos hivatkozáson keresztül
+ No comment provided by engineer.
+
+
+ Connect with %@
+ Kapcsolódás ezzel: %@
+ No comment provided by engineer.
+
+
+ Connected desktop
+ Csatlakoztatott számítógép
+ No comment provided by engineer.
+
+
+ Connected to desktop
+ Csatlakozva a számítógéphez
+ No comment provided by engineer.
+
+
+ Connecting to server…
+ Kapcsolódás a kiszolgálóhoz…
+ No comment provided by engineer.
+
+
+ Connecting to server… (error: %@)
+ Kapcsolódás a kiszolgálóhoz... (hiba: %@)
+ No comment provided by engineer.
+
+
+ Connecting to desktop
+ Kapcsolódás a számítógéphez
+ No comment provided by engineer.
+
+
+ Connection
+ Kapcsolat
+ No comment provided by engineer.
+
+
+ Connection error
+ Kapcsolódási hiba
+ No comment provided by engineer.
+
+
+ Connection error (AUTH)
+ Kapcsolódási hiba (AUTH)
+ No comment provided by engineer.
+
+
+ Connection request sent!
+ Kapcsolódási kérés elküldve!
+ No comment provided by engineer.
+
+
+ Connection terminated
+ Kapcsolat megszakítva
+ No comment provided by engineer.
+
+
+ Connection timeout
+ Kapcsolat időtúllépés
+ No comment provided by engineer.
+
+
+ Contact allows
+ Ismerős engedélyezi
+ No comment provided by engineer.
+
+
+ Contact already exists
+ Létező ismerős
+ No comment provided by engineer.
+
+
+ Contact hidden:
+ Ismerős elrejtve:
+ notification
+
+
+ Contact is connected
+ Ismerős csatlakozott
+ notification
+
+
+ Contact is not connected yet!
+ Az ismerős még nem csatlakozott!
+ No comment provided by engineer.
+
+
+ Contact name
+ Ismerős neve
+ No comment provided by engineer.
+
+
+ Contact preferences
+ Ismerős beállításai
+ No comment provided by engineer.
+
+
+ Contacts
+ Ismerősök
+ No comment provided by engineer.
+
+
+ Contacts can mark messages for deletion; you will be able to view them.
+ Az ismerősök törlésre jelölhetnek üzeneteket ; megtekintheti őket.
+ No comment provided by engineer.
+
+
+ Continue
+ Folytatás
+ No comment provided by engineer.
+
+
+ Copy
+ Másolás
+ chat item action
+
+
+ Core version: v%@
+ Alapverziószám: v%@
+ No comment provided by engineer.
+
+
+ Correct name to %@?
+ Név javítása erre: %@?
+ No comment provided by engineer.
+
+
+ Create
+ Létrehozás
+ No comment provided by engineer.
+
+
+ Create SimpleX address
+ SimpleX azonosító létrehozása
+ No comment provided by engineer.
+
+
+ Create a group using a random profile.
+ Csoport létrehozása véletlenszerűen létrehozott profillal.
+ No comment provided by engineer.
+
+
+ Create an address to let people connect with you.
+ Azonosító létrehozása, hogy az emberek kapcsolatba léphessenek önnel.
+ No comment provided by engineer.
+
+
+ Create file
+ Fájl létrehozása
+ server test step
+
+
+ Create group
+ Csoport létrehozása
+ No comment provided by engineer.
+
+
+ Create group link
+ Csoportos hivatkozás létrehozása
+ No comment provided by engineer.
+
+
+ Create link
+ Hivatkozás létrehozása
+ No comment provided by engineer.
+
+
+ Create new profile in [desktop app](https://simplex.chat/downloads/). 💻
+ Új profil létrehozása az [asztali kliensben](https://simplex.chat/downloads/). 💻
+ No comment provided by engineer.
+
+
+ Create profile
+ Profil létrehozása
+ No comment provided by engineer.
+
+
+ Create queue
+ Várólista létrehozása
+ server test step
+
+
+ Create secret group
+ Titkos csoport létrehozása
+ No comment provided by engineer.
+
+
+ Create your profile
+ Saját profil létrehozása
+ No comment provided by engineer.
+
+
+ Created at
+ Létrehozva ekkor
+ No comment provided by engineer.
+
+
+ Created at: %@
+ Létrehozva ekkor: %@
+ copied message info
+
+
+ Created on %@
+ Létrehozva %@
+ No comment provided by engineer.
+
+
+ Creating archive link
+ No comment provided by engineer.
+
+
+ Creating link…
+ Hivatkozás létrehozása…
+ No comment provided by engineer.
+
+
+ Current Passcode
+ Jelenlegi jelkód
+ No comment provided by engineer.
+
+
+ Current passphrase…
+ Jelenlegi jelmondat…
+ No comment provided by engineer.
+
+
+ Currently maximum supported file size is %@.
+ Jelenleg a maximális támogatott fájlméret %@.
+ No comment provided by engineer.
+
+
+ Custom time
+ Személyreszabott idő
+ No comment provided by engineer.
+
+
+ Dark
+ Sötét
+ No comment provided by engineer.
+
+
+ Database ID
+ Adatbázis ID
+ No comment provided by engineer.
+
+
+ Database ID: %d
+ Adatbázis azonosító: %d
+ copied message info
+
+
+ Database IDs and Transport isolation option.
+ Adatbázis azonosítók és átviteli izolációs beállítások.
+ No comment provided by engineer.
+
+
+ Database downgrade
+ Visszatérés a korábbi adatbázis verzióra
+ No comment provided by engineer.
+
+
+ Database encrypted!
+ Adatbázis titkosítva!
+ No comment provided by engineer.
+
+
+ Database encryption passphrase will be updated and stored in the keychain.
+
+ Az adatbázis titkosítási jelmondata frissül és tárolódik a kulcstárolóban.
+
+ No comment provided by engineer.
+
+
+ Database encryption passphrase will be updated.
+
+ Adatbázis titkosítási jelmondat frissítve lesz.
+
+ No comment provided by engineer.
+
+
+ Database error
+ Adatbázis hiba
+ No comment provided by engineer.
+
+
+ Database is encrypted using a random passphrase, you can change it.
+ Az adatbázis egy véletlenszerű jelmondattal van titkosítva, megváltoztatható.
+ No comment provided by engineer.
+
+
+ Database is encrypted using a random passphrase. Please change it before exporting.
+ Az adatbázis egy véletlenszerű jelmondattal van titkosítva. Exportálás előtti módosítás szükséges.
+ No comment provided by engineer.
+
+
+ Database passphrase
+ Adatbázis jelmondat
+ No comment provided by engineer.
+
+
+ Database passphrase & export
+ Adatbázis jelmondat és exportálás
+ No comment provided by engineer.
+
+
+ Database passphrase is different from saved in the keychain.
+ Az adatbázis jelmondata eltér a kulcstárlóban mentettől.
+ No comment provided by engineer.
+
+
+ Database passphrase is required to open chat.
+ Adatbázis jelmondat szükséges a csevegés megnyitásához.
+ No comment provided by engineer.
+
+
+ Database upgrade
+ Adatbázis fejlesztése
+ No comment provided by engineer.
+
+
+ Database will be encrypted and the passphrase stored in the keychain.
+
+ Az adatbázis titkosítva lesz, a jelmondat pedig a kulcstárolóban lesz tárolva.
+
+ No comment provided by engineer.
+
+
+ Database will be encrypted.
+
+ Az adatbázis titkosításra kerül.
+
+ No comment provided by engineer.
+
+
+ Database will be migrated when the app restarts
+ Az adatbázis az alkalmazás újraindításakor migrálásra kerül
+ No comment provided by engineer.
+
+
+ Decentralized
+ Decentralizált
+ No comment provided by engineer.
+
+
+ Decryption error
+ Titkosítás visszafejtési hiba
+ message decrypt error item
+
+
+ Delete
+ Törlés
+ chat item action
+
+
+ Delete %lld messages?
+ Töröl %lld üzenetet?
+ No comment provided by engineer.
+
+
+ Delete Contact
+ Ismerős törlése
+ No comment provided by engineer.
+
+
+ Delete address
+ Azonosító törlése
+ No comment provided by engineer.
+
+
+ Delete address?
+ Azonosító törlése?
+ No comment provided by engineer.
+
+
+ Delete after
+ Törlés miután
+ No comment provided by engineer.
+
+
+ Delete all files
+ Minden fájl törlése
+ No comment provided by engineer.
+
+
+ Delete and notify contact
+ Törlés és ismerős értesítése
+ No comment provided by engineer.
+
+
+ Delete archive
+ Archívum törlése
+ No comment provided by engineer.
+
+
+ Delete chat archive?
+ Csevegési archívum törlése?
+ No comment provided by engineer.
+
+
+ Delete chat profile
+ Csevegési profil törlése
+ No comment provided by engineer.
+
+
+ Delete chat profile?
+ Csevegési profil törlése?
+ No comment provided by engineer.
+
+
+ Delete connection
+ Kapcsolat törlése
+ No comment provided by engineer.
+
+
+ Delete contact
+ Ismerős törlése
+ No comment provided by engineer.
+
+
+ Delete contact?
+This cannot be undone!
+ Ismerős törlése?
+Ezt nem vonható vissza!
+ No comment provided by engineer.
+
+
+ Delete database
+ Adatbázis törlése
+ No comment provided by engineer.
+
+
+ Delete database from this device
+ No comment provided by engineer.
+
+
+ Delete file
+ Fájl törlése
+ server test step
+
+
+ Delete files and media?
+ Fájlok és a médiatartalmak törlése?
+ No comment provided by engineer.
+
+
+ Delete files for all chat profiles
+ Fájlok törlése minden csevegési profilból
+ No comment provided by engineer.
+
+
+ Delete for everyone
+ Törlés mindenkinél
+ chat feature
+
+
+ Delete for me
+ Törlés nálam
+ No comment provided by engineer.
+
+
+ Delete group
+ Csoport törlése
+ No comment provided by engineer.
+
+
+ Delete group?
+ Csoport törlése?
+ No comment provided by engineer.
+
+
+ Delete invitation
+ Meghívó törlése
+ No comment provided by engineer.
+
+
+ Delete link
+ Hivatkozás törlése
+ No comment provided by engineer.
+
+
+ Delete link?
+ Hivatkozás törlése?
+ No comment provided by engineer.
+
+
+ Delete member message?
+ Csoporttag üzenet törlése?
+ No comment provided by engineer.
+
+
+ Delete message?
+ Üzenet törlése?
+ No comment provided by engineer.
+
+
+ Delete messages
+ Üzenetek törlése
+ No comment provided by engineer.
+
+
+ Delete messages after
+ Üzenetek törlése miután
+ No comment provided by engineer.
+
+
+ Delete old database
+ Régi adatbázis törlése
+ No comment provided by engineer.
+
+
+ Delete old database?
+ Régi adatbázis törlése?
+ No comment provided by engineer.
+
+
+ Delete pending connection
+ Függőben lévő kapcsolat törlése
+ No comment provided by engineer.
+
+
+ Delete pending connection?
+ Függő kapcsolatfelvételi kérések törlése?
+ No comment provided by engineer.
+
+
+ Delete profile
+ Profil törlése
+ No comment provided by engineer.
+
+
+ Delete queue
+ Várólista törlése
+ server test step
+
+
+ Delete user profile?
+ Felhasználói profil törlése?
+ No comment provided by engineer.
+
+
+ Deleted at
+ Törölve ekkor
+ No comment provided by engineer.
+
+
+ Deleted at: %@
+ Törölve ekkor: %@
+ copied message info
+
+
+ Delivery
+ Kézbesítés
+ No comment provided by engineer.
+
+
+ Delivery receipts are disabled!
+ Kézbesítési igazolások kikapcsolva!
+ No comment provided by engineer.
+
+
+ Delivery receipts!
+ Kézbesítési igazolások!
+ No comment provided by engineer.
+
+
+ Description
+ Leírás
+ No comment provided by engineer.
+
+
+ Desktop address
+ Számítógép azonosítója
+ No comment provided by engineer.
+
+
+ Desktop app version %@ is not compatible with this app.
+ Az asztali kliens verziója %@ nem kompatibilis ezzel az alkalmazással.
+ No comment provided by engineer.
+
+
+ Desktop devices
+ Számítógépek
+ No comment provided by engineer.
+
+
+ Develop
+ Fejlesztés
+ No comment provided by engineer.
+
+
+ Developer tools
+ Fejlesztői eszközök
+ No comment provided by engineer.
+
+
+ Device
+ Eszköz
+ No comment provided by engineer.
+
+
+ Device authentication is disabled. Turning off SimpleX Lock.
+ Eszközhitelesítés kikapcsolva. SimpleX zárolás kikapcsolása.
+ No comment provided by engineer.
+
+
+ Device authentication is not enabled. You can turn on SimpleX Lock via Settings, once you enable device authentication.
+ Eszközhitelesítés nem engedélyezett.A SimpleX zárolás bekapcsolható a Beállításokon keresztül, miután az eszköz hitelesítés engedélyezésre került.
+ No comment provided by engineer.
+
+
+ Different names, avatars and transport isolation.
+ Különböző nevek, avatarok és átviteli izoláció.
+ No comment provided by engineer.
+
+
+ Direct messages
+ Közvetlen üzenetek
+ chat feature
+
+
+ Direct messages between members are prohibited in this group.
+ Ebben a csoportban tiltott a tagok közötti közvetlen üzenetek küldése.
+ No comment provided by engineer.
+
+
+ Disable (keep overrides)
+ Letiltás (felülírások megtartásával)
+ No comment provided by engineer.
+
+
+ Disable SimpleX Lock
+ SimpleX zárolás kikapcsolása
+ authentication reason
+
+
+ Disable for all
+ Letiltás mindenki számára
+ No comment provided by engineer.
+
+
+ Disappearing message
+ Eltűnő üzenet
+ No comment provided by engineer.
+
+
+ Disappearing messages
+ Eltűnő üzenetek
+ chat feature
+
+
+ Disappearing messages are prohibited in this chat.
+ Az eltűnő üzenetek le vannak tiltva ebben a csevegésben.
+ No comment provided by engineer.
+
+
+ Disappearing messages are prohibited in this group.
+ Az eltűnő üzenetek küldése le van tiltva ebben a csoportban.
+ No comment provided by engineer.
+
+
+ Disappears at
+ Eltűnik ekkor
+ No comment provided by engineer.
+
+
+ Disappears at: %@
+ Eltűnik ekkor: %@
+ copied message info
+
+
+ Disconnect
+ Kapcsolat bontása
+ server test step
+
+
+ Disconnect desktop?
+ Számítógép leválasztása?
+ No comment provided by engineer.
+
+
+ Discover and join groups
+ Helyi csoportok felfedezése és csatlakozás
+ No comment provided by engineer.
+
+
+ Discover via local network
+ Felfedezés helyi hálózaton keresztül
+ No comment provided by engineer.
+
+
+ Do NOT use SimpleX for emergency calls.
+ NE használja a SimpleX-et segélyhívásokhoz.
+ No comment provided by engineer.
+
+
+ Do it later
+ Későbbre halaszt
+ No comment provided by engineer.
+
+
+ Do not send history to new members.
+ Ne küldjön előzményeket új tagok részére.
+ No comment provided by engineer.
+
+
+ Don't create address
+ Ne hozzon létre azonosítót
+ No comment provided by engineer.
+
+
+ Don't enable
+ Ne engedélyezze
+ No comment provided by engineer.
+
+
+ Don't show again
+ Ne mutasd újra
+ No comment provided by engineer.
+
+
+ Downgrade and open chat
+ Visszatérés a korábbi verzióra és a csevegés megnyitása
+ No comment provided by engineer.
+
+
+ Download failed
+ No comment provided by engineer.
+
+
+ Download file
+ Fájl letöltése
+ server test step
+
+
+ Downloading archive
+ No comment provided by engineer.
+
+
+ Downloading link details
+ No comment provided by engineer.
+
+
+ Duplicate display name!
+ Duplikált megjelenítési név!
+ No comment provided by engineer.
+
+
+ Duration
+ Időtartam
+ No comment provided by engineer.
+
+
+ Edit
+ Szerkesztés
+ chat item action
+
+
+ Edit group profile
+ A csoport profiljának szerkesztése
+ No comment provided by engineer.
+
+
+ Enable
+ Engedélyezés
+ No comment provided by engineer.
+
+
+ Enable (keep overrides)
+ Engedélyezés (felülírások megtartásával)
+ No comment provided by engineer.
+
+
+ Enable SimpleX Lock
+ SimpleX zárolás engedélyezése
+ authentication reason
+
+
+ Enable TCP keep-alive
+ TCP életben tartásának engedélyezése
+ No comment provided by engineer.
+
+
+ Enable automatic message deletion?
+ Automatikus üzenet törlés engedélyezése?
+ No comment provided by engineer.
+
+
+ Enable camera access
+ Kamera hozzáférés engedélyezése
+ No comment provided by engineer.
+
+
+ Enable for all
+ Engedélyezés mindenki részére
+ No comment provided by engineer.
+
+
+ Enable in direct chats (BETA)!
+ No comment provided by engineer.
+
+
+ Enable instant notifications?
+ Azonnali értesítések engedélyezése?
+ No comment provided by engineer.
+
+
+ Enable lock
+ Zárolás engedélyezése
+ No comment provided by engineer.
+
+
+ Enable notifications
+ Értesítések engedélyezése
+ No comment provided by engineer.
+
+
+ Enable periodic notifications?
+ Időszakos értesítések engedélyezése?
+ No comment provided by engineer.
+
+
+ Enable self-destruct
+ Önmegsemmisítés engedélyezése
+ No comment provided by engineer.
+
+
+ Enable self-destruct passcode
+ Önmegsemmisítő jelkód engedélyezése
+ set passcode view
+
+
+ Encrypt
+ Titkosít
+ No comment provided by engineer.
+
+
+ Encrypt database?
+ Adatbázis titkosítása?
+ No comment provided by engineer.
+
+
+ Encrypt local files
+ Helyi fájlok titkosítása
+ No comment provided by engineer.
+
+
+ Encrypt stored files & media
+ Tárolt fájlok és médiatartalmak titkosítása
+ No comment provided by engineer.
+
+
+ Encrypted database
+ Titkosított adatbázis
+ No comment provided by engineer.
+
+
+ Encrypted message or another event
+ Titkosított üzenet vagy más esemény
+ notification
+
+
+ Encrypted message: app is stopped
+ Titkosított üzenet: az alkalmazás leállt
+ notification
+
+
+ Encrypted message: database error
+ Titkosított üzenet: adatbázis hiba
+ notification
+
+
+ Encrypted message: database migration error
+ Titkosított üzenet: adatbázis-migrációs hiba
+ notification
+
+
+ Encrypted message: keychain error
+ Titkosított üzenet: kulcstároló hiba
+ notification
+
+
+ Encrypted message: no passphrase
+ Titkosított üzenet: nincs jelmondat
+ notification
+
+
+ Encrypted message: unexpected error
+ Titkosított üzenet: váratlan hiba
+ notification
+
+
+ Encryption re-negotiation error
+ Titkosítás újraegyeztetési hiba
+ message decrypt error item
+
+
+ Encryption re-negotiation failed.
+ Titkosítás újraegyeztetése sikertelen.
+ No comment provided by engineer.
+
+
+ Enter Passcode
+ Jelkód megadása
+ No comment provided by engineer.
+
+
+ Enter correct passphrase.
+ Helyes jelmondat bevitele.
+ No comment provided by engineer.
+
+
+ Enter group name…
+ Csoportnév megadása…
+ No comment provided by engineer.
+
+
+ Enter passphrase
+ No comment provided by engineer.
+
+
+ Enter passphrase…
+ Jelmondat megadása…
+ No comment provided by engineer.
+
+
+ Enter password above to show!
+ Jelszó megadása a megjelenítéshez!
+ No comment provided by engineer.
+
+
+ Enter server manually
+ Kiszolgáló megadása kézzel
+ No comment provided by engineer.
+
+
+ Enter this device name…
+ Eszköznév megadása…
+ No comment provided by engineer.
+
+
+ Enter welcome message…
+ Üdvözlő üzenetet megadása…
+ placeholder
+
+
+ Enter welcome message… (optional)
+ Üdvözlő üzenetet megadása… (opcionális)
+ placeholder
+
+
+ Enter your name…
+ Adja meg nevét…
+ No comment provided by engineer.
+
+
+ Error
+ Hiba
+ No comment provided by engineer.
+
+
+ Error aborting address change
+ Hiba az azonosító megváltoztatásának megszakításakor
+ No comment provided by engineer.
+
+
+ Error accepting contact request
+ Hiba történt a kapcsolatfelvételi kérelem elfogadásakor
+ No comment provided by engineer.
+
+
+ Error accessing database file
+ Hiba az adatbázisfájl elérésekor
+ No comment provided by engineer.
+
+
+ Error adding member(s)
+ Hiba a tag(-ok) hozzáadásakor
+ No comment provided by engineer.
+
+
+ Error allowing contact PQ encryption
+ No comment provided by engineer.
+
+
+ Error changing address
+ Hiba az azonosító megváltoztatásakor
+ No comment provided by engineer.
+
+
+ Error changing role
+ Hiba a szerepkör megváltoztatásakor
+ No comment provided by engineer.
+
+
+ Error changing setting
+ Hiba a beállítás megváltoztatásakor
+ No comment provided by engineer.
+
+
+ Error creating address
+ Hiba az azonosító létrehozásakor
+ No comment provided by engineer.
+
+
+ Error creating group
+ Hiba a csoport létrehozásakor
+ No comment provided by engineer.
+
+
+ Error creating group link
+ Hiba a csoport hivatkozásának létrehozásakor
+ No comment provided by engineer.
+
+
+ Error creating member contact
+ Hiba az ismerőssel történő kapcsolat létrehozásában
+ No comment provided by engineer.
+
+
+ Error creating message
+ Hiba az üzenet létrehozásakor
+ No comment provided by engineer.
+
+
+ Error creating profile!
+ Hiba a profil létrehozásakor!
+ No comment provided by engineer.
+
+
+ Error decrypting file
+ Hiba a fájl visszafejtésekor
+ No comment provided by engineer.
+
+
+ Error deleting chat database
+ Hiba a csevegési adatbázis törlésekor
+ No comment provided by engineer.
+
+
+ Error deleting chat!
+ Hiba a csevegés törlésekor!
+ No comment provided by engineer.
+
+
+ Error deleting connection
+ Hiba a kapcsolat törlésekor
+ No comment provided by engineer.
+
+
+ Error deleting contact
+ Hiba az ismerős törlésekor
+ No comment provided by engineer.
+
+
+ Error deleting database
+ Hiba az adatbázis törlésekor
+ No comment provided by engineer.
+
+
+ Error deleting old database
+ Hiba a régi adatbázis törlésekor
+ No comment provided by engineer.
+
+
+ Error deleting token
+ Hiba a token törlésekor
+ No comment provided by engineer.
+
+
+ Error deleting user profile
+ Hiba a felhasználói profil törlésekor
+ No comment provided by engineer.
+
+
+ Error downloading the archive
+ No comment provided by engineer.
+
+
+ Error enabling delivery receipts!
+ Hiba a kézbesítési jelentések engedélyezésekor!
+ No comment provided by engineer.
+
+
+ Error enabling notifications
+ Hiba az értesítések engedélyezésekor
+ No comment provided by engineer.
+
+
+ Error encrypting database
+ Hiba az adatbázis titkosításakor
+ No comment provided by engineer.
+
+
+ Error exporting chat database
+ Hiba a csevegési adatbázis exportálásakor
+ No comment provided by engineer.
+
+
+ Error importing chat database
+ Hiba a csevegési adatbázis importálásakor
+ No comment provided by engineer.
+
+
+ Error joining group
+ Hiba a csoporthoz való csatlakozáskor
+ No comment provided by engineer.
+
+
+ Error loading %@ servers
+ Hiba a %@ kiszolgálók betöltésekor
+ No comment provided by engineer.
+
+
+ Error opening chat
+ Hiba a csevegés megnyitásakor
+ No comment provided by engineer.
+
+
+ Error receiving file
+ Hiba a fájl fogadásakor
+ No comment provided by engineer.
+
+
+ Error removing member
+ Hiba a tag eltávolításakor
+ No comment provided by engineer.
+
+
+ Error saving %@ servers
+ Hiba történt a %@ kiszolgálók mentése közben
+ No comment provided by engineer.
+
+
+ Error saving ICE servers
+ Hiba az ICE kiszolgálók mentésekor
+ No comment provided by engineer.
+
+
+ Error saving group profile
+ Hiba a csoport profil mentésekor
+ No comment provided by engineer.
+
+
+ Error saving passcode
+ Hiba a jelkód mentése közben
+ No comment provided by engineer.
+
+
+ Error saving passphrase to keychain
+ Hiba a jelmondat kulcstárolóba történő mentésekor
+ No comment provided by engineer.
+
+
+ Error saving settings
+ when migrating
+
+
+ Error saving user password
+ Hiba a felhasználó jelszavának mentésekor
+ No comment provided by engineer.
+
+
+ Error scanning code: %@
+ Hiba a kód beolvasása közben: %@
+ No comment provided by engineer.
+
+
+ Error sending email
+ Hiba az e-mail küldésekor
+ No comment provided by engineer.
+
+
+ Error sending member contact invitation
+ Hiba történt a tag kapcsolatfelvételi meghívójának elküldésekor
+ No comment provided by engineer.
+
+
+ Error sending message
+ Hiba az üzenet küldésekor
+ No comment provided by engineer.
+
+
+ Error setting delivery receipts!
+ Hiba történt a kézbesítési igazolások beállításakor!
+ No comment provided by engineer.
+
+
+ Error starting chat
+ Hiba a csevegés elindításakor
+ No comment provided by engineer.
+
+
+ Error stopping chat
+ Hiba a csevegés megállításakor
+ No comment provided by engineer.
+
+
+ Error switching profile!
+ Hiba a profil váltásakor!
+ No comment provided by engineer.
+
+
+ Error synchronizing connection
+ Hiba a kapcsolat szinkronizálása során
+ No comment provided by engineer.
+
+
+ Error updating group link
+ Hiba a csoport hivatkozás frissítésekor
+ No comment provided by engineer.
+
+
+ Error updating message
+ Hiba az üzenet frissítésekor
+ No comment provided by engineer.
+
+
+ Error updating settings
+ Hiba történt a beállítások frissítésekor
+ No comment provided by engineer.
+
+
+ Error updating user privacy
+ Hiba a felhasználói beállítások frissítésekor
+ No comment provided by engineer.
+
+
+ Error uploading the archive
+ No comment provided by engineer.
+
+
+ Error verifying passphrase:
+ No comment provided by engineer.
+
+
+ Error:
+ Hiba:
+ No comment provided by engineer.
+
+
+ Error: %@
+ Hiba: %@
+ No comment provided by engineer.
+
+
+ Error: URL is invalid
+ Hiba: az URL érvénytelen
+ No comment provided by engineer.
+
+
+ Error: no database file
+ Hiba: nincs adatbázis fájl
+ No comment provided by engineer.
+
+
+ Even when disabled in the conversation.
+ Akkor is, ha le van tiltva a beszélgetésben.
+ No comment provided by engineer.
+
+
+ Exit without saving
+ Kilépés mentés nélkül
+ No comment provided by engineer.
+
+
+ Expand
+ Kibontás
+ chat item action
+
+
+ Export database
+ Adatbázis exportálása
+ No comment provided by engineer.
+
+
+ Export error:
+ Exportálási hiba:
+ No comment provided by engineer.
+
+
+ Exported database archive.
+ Exportált adatbázis-archívum.
+ No comment provided by engineer.
+
+
+ Exported file doesn't exist
+ No comment provided by engineer.
+
+
+ Exporting database archive…
+ Adatbázis archívum exportálása…
+ No comment provided by engineer.
+
+
+ Failed to remove passphrase
+ Nem sikerült eltávolítani a jelmondatot
+ No comment provided by engineer.
+
+
+ Fast and no wait until the sender is online!
+ Gyors és nem kell várni, amíg a feladó online lesz!
+ No comment provided by engineer.
+
+
+ Faster joining and more reliable messages.
+ Gyorsabb csatlakozás és megbízhatóbb üzenet kézbesítés.
+ No comment provided by engineer.
+
+
+ Favorite
+ Kedvenc
+ No comment provided by engineer.
+
+
+ File will be deleted from servers.
+ A fájl törölve lesz a kiszolgálóról.
+ No comment provided by engineer.
+
+
+ File will be received when your contact completes uploading it.
+ A fájl akkor érkezik meg, amikor ismerőse befejezte annak feltöltést.
+ No comment provided by engineer.
+
+
+ File will be received when your contact is online, please wait or check later!
+ A fájl akkor érkezik meg, amint ismerőse online lesz, várjon, vagy ellenőrizze később!
+ No comment provided by engineer.
+
+
+ File: %@
+ Fájl: %@
+ No comment provided by engineer.
+
+
+ Files & media
+ Fájlok és média
+ No comment provided by engineer.
+
+
+ Files and media
+ Fájlok és médiatartalom
+ chat feature
+
+
+ Files and media are prohibited in this group.
+ A fájlok- és a médiatartalom küldése le van tiltva ebben a csoportban.
+ No comment provided by engineer.
+
+
+ Files and media prohibited!
+ A fájlok- és a médiatartalom küldése le van tiltva!
+ No comment provided by engineer.
+
+
+ Filter unread and favorite chats.
+ Olvasatlan és kedvenc csevegésekre való szűrés.
+ No comment provided by engineer.
+
+
+ Finalize migration
+ No comment provided by engineer.
+
+
+ Finalize migration on another device.
+ No comment provided by engineer.
+
+
+ Finally, we have them! 🚀
+ Végre, megvannak! 🚀
+ No comment provided by engineer.
+
+
+ Find chats faster
+ Csevegési üzenetek gyorsabb megtalálása
+ No comment provided by engineer.
+
+
+ Fix
+ Javítás
+ No comment provided by engineer.
+
+
+ Fix connection
+ Kapcsolat javítása
+ No comment provided by engineer.
+
+
+ Fix connection?
+ Kapcsolat javítása?
+ No comment provided by engineer.
+
+
+ Fix encryption after restoring backups.
+ Titkosítás javítása az adatmentések helyreállítása után.
+ No comment provided by engineer.
+
+
+ Fix not supported by contact
+ Ismerős általi javítás nem támogatott
+ No comment provided by engineer.
+
+
+ Fix not supported by group member
+ Csoporttag általi javítás nem támogatott
+ No comment provided by engineer.
+
+
+ For console
+ Konzolhoz
+ No comment provided by engineer.
+
+
+ Found desktop
+ Megtalált számítógép
+ No comment provided by engineer.
+
+
+ French interface
+ Francia kezelőfelület
+ No comment provided by engineer.
+
+
+ Full link
+ Teljes hivatkozás
+ No comment provided by engineer.
+
+
+ Full name (optional)
+ Teljes név (opcionális)
+ No comment provided by engineer.
+
+
+ Full name:
+ Teljes név:
+ No comment provided by engineer.
+
+
+ Fully decentralized – visible only to members.
+ Teljesen decentralizált - kizárólag tagok számára látható.
+ No comment provided by engineer.
+
+
+ Fully re-implemented - work in background!
+ Teljesen újra implementálva - háttérben történő működés!
+ No comment provided by engineer.
+
+
+ Further reduced battery usage
+ Tovább csökkentett akkumulátor használat
+ No comment provided by engineer.
+
+
+ GIFs and stickers
+ GIF-ek és matricák
+ No comment provided by engineer.
+
+
+ Group
+ Csoport
+ No comment provided by engineer.
+
+
+ Group already exists
+ A csoport már létezik
+ No comment provided by engineer.
+
+
+ Group already exists!
+ A csoport már létezik!
+ No comment provided by engineer.
+
+
+ Group display name
+ A csoport megjelenített neve
+ No comment provided by engineer.
+
+
+ Group full name (optional)
+ Csoport teljes neve (opcionális)
+ No comment provided by engineer.
+
+
+ Group image
+ Csoportkép
+ No comment provided by engineer.
+
+
+ Group invitation
+ Csoportos meghívó
+ No comment provided by engineer.
+
+
+ Group invitation expired
+ A csoport meghívó lejárt
+ No comment provided by engineer.
+
+
+ Group invitation is no longer valid, it was removed by sender.
+ A csoport meghívó már nem érvényes, el lett távolítva a küldője által.
+ No comment provided by engineer.
+
+
+ Group link
+ Csoport hivatkozás
+ No comment provided by engineer.
+
+
+ Group links
+ Csoport hivatkozások
+ No comment provided by engineer.
+
+
+ Group members can add message reactions.
+ Csoporttagok üzenetreakciókat adhatnak hozzá.
+ No comment provided by engineer.
+
+
+ Group members can irreversibly delete sent messages. (24 hours)
+ Csoporttagok visszafordíthatatlanul törölhetik az elküldött üzeneteket. (24 óra)
+ No comment provided by engineer.
+
+
+ Group members can send direct messages.
+ Csoporttagok küldhetnek közvetlen üzeneteket.
+ No comment provided by engineer.
+
+
+ Group members can send disappearing messages.
+ Csoporttagok küldhetnek eltűnő üzeneteket.
+ No comment provided by engineer.
+
+
+ Group members can send files and media.
+ Csoporttagok küldhetnek fájlokat és médiatartalmakat.
+ No comment provided by engineer.
+
+
+ Group members can send voice messages.
+ Csoporttagok küldhetnek hangüzeneteket.
+ No comment provided by engineer.
+
+
+ Group message:
+ Csoport üzenet:
+ notification
+
+
+ Group moderation
+ Csoport moderáció
+ No comment provided by engineer.
+
+
+ Group preferences
+ Csoport beállítások
+ No comment provided by engineer.
+
+
+ Group profile
+ Csoport profil
+ No comment provided by engineer.
+
+
+ Group profile is stored on members' devices, not on the servers.
+ A csoport profilja a tagok eszközein tárolódik, nem a kiszolgálókon.
+ No comment provided by engineer.
+
+
+ Group welcome message
+ Csoport üdvözlő üzenete
+ No comment provided by engineer.
+
+
+ Group will be deleted for all members - this cannot be undone!
+ Csoport törlésre kerül minden tag számára - ez nem vonható vissza!
+ No comment provided by engineer.
+
+
+ Group will be deleted for you - this cannot be undone!
+ A csoport törlésre kerül az ön részére - ez nem vonható vissza!
+ No comment provided by engineer.
+
+
+ Help
+ Segítség
+ No comment provided by engineer.
+
+
+ Hidden
+ Rejtett
+ No comment provided by engineer.
+
+
+ Hidden chat profiles
+ Rejtett csevegési profilok
+ No comment provided by engineer.
+
+
+ Hidden profile password
+ Rejtett profil jelszó
+ No comment provided by engineer.
+
+
+ Hide
+ Elrejt
+ chat item action
+
+
+ Hide app screen in the recent apps.
+ Alkalmazás képernyőjének elrejtése a gyakran használt alkalmazások között.
+ No comment provided by engineer.
+
+
+ Hide profile
+ Profil elrejtése
+ No comment provided by engineer.
+
+
+ Hide:
+ Elrejt:
+ No comment provided by engineer.
+
+
+ History
+ Előzmények
+ No comment provided by engineer.
+
+
+ History is not sent to new members.
+ Az előzmények nem kerülnek elküldésre új tagok részére.
+ No comment provided by engineer.
+
+
+ How SimpleX works
+ Hogyan működik a SimpleX
+ No comment provided by engineer.
+
+
+ How it works
+ Hogyan működik
+ No comment provided by engineer.
+
+
+ How to
+ Hogyan
+ No comment provided by engineer.
+
+
+ How to use it
+ Hogyan használja
+ No comment provided by engineer.
+
+
+ How to use your servers
+ Kiszolgálók használata
+ No comment provided by engineer.
+
+
+ Hungarian interface
+ No comment provided by engineer.
+
+
+ ICE servers (one per line)
+ ICE-kiszolgálók (soronként egy)
+ No comment provided by engineer.
+
+
+ If you can't meet in person, show QR code in a video call, or share the link.
+ Ha nem tud személyesen találkozni, mutassa meg a QR-kódot egy videohívás során, vagy ossza meg a hivatkozást.
+ No comment provided by engineer.
+
+
+ If you enter this passcode when opening the app, all app data will be irreversibly removed!
+ Ha az alkalmazás megnyitásakor megadja ezt a jelkódot, az összes alkalmazásadat visszafordíthatatlanul törlődik!
+ No comment provided by engineer.
+
+
+ If you enter your self-destruct passcode while opening the app:
+ Ha az alkalmazás megnyitásakor az önmegsemmisítő jelkódot megadásra kerül:
+ No comment provided by engineer.
+
+
+ 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).
+ Ha most kell használnia a csevegést, koppintson a ** Csináld később** elemre (az alkalmazás újraindításakor felajánlásra kerül az adatbázis áttelepítése).
+ No comment provided by engineer.
+
+
+ Ignore
+ Figyelmen kívül hagyás
+ No comment provided by engineer.
+
+
+ Image will be received when your contact completes uploading it.
+ A kép akkor érkezik meg, amikor ismerőse befejezte annak feltöltését.
+ 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 ismerős elérhető lesz, várjon vagy ellenőrizze később!
+ No comment provided by engineer.
+
+
+ Immediately
+ Azonnal
+ No comment provided by engineer.
+
+
+ Immune to spam and abuse
+ Spam és visszaélések elleni védelem
+ No comment provided by engineer.
+
+
+ Import
+ Importálás
+ No comment provided by engineer.
+
+
+ Import chat database?
+ Csevegési adatbázis importálása?
+ No comment provided by engineer.
+
+
+ Import database
+ Adatbázis importálása
+ No comment provided by engineer.
+
+
+ Import failed
+ No comment provided by engineer.
+
+
+ Importing archive
+ No comment provided by engineer.
+
+
+ Improved message delivery
+ Továbbfejlesztett üzenetküldés
+ No comment provided by engineer.
+
+
+ Improved privacy and security
+ Fejlesztett adatvédelem és biztonság
+ No comment provided by engineer.
+
+
+ Improved server configuration
+ Javított kiszolgáló konfiguráció
+ No comment provided by engineer.
+
+
+ In order to continue, chat should be stopped.
+ No comment provided by engineer.
+
+
+ In reply to
+ Válasz neki
+ No comment provided by engineer.
+
+
+ Incognito
+ Inkognitó
+ No comment provided by engineer.
+
+
+ Incognito groups
+ Inkognitó csoportok
+ No comment provided by engineer.
+
+
+ Incognito mode
+ Inkognitó mód
+ No comment provided by engineer.
+
+
+ Incognito mode protects your privacy by using a new random profile for each contact.
+ Az inkognitómód védi személyes adatait azáltal, hogy minden ismerőshöz új véletlenszerű profilt használ.
+ No comment provided by engineer.
+
+
+ Incoming audio call
+ Bejövő hanghívás
+ notification
+
+
+ Incoming call
+ Bejövő hívás
+ notification
+
+
+ Incoming video call
+ Bejövő videóhívás
+ notification
+
+
+ Incompatible database version
+ Nem kompatibilis adatbázis verzió
+ No comment provided by engineer.
+
+
+ Incompatible version
+ Nem kompatibilis verzió
+ No comment provided by engineer.
+
+
+ Incorrect passcode
+ Téves jelkód
+ PIN entry
+
+
+ Incorrect security code!
+ Helytelen biztonsági kód!
+ No comment provided by engineer.
+
+
+ Info
+ Információ
+ chat item action
+
+
+ Initial role
+ Kezdeti szerepkör
+ No comment provided by engineer.
+
+
+ Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat)
+ A [SimpleX Chat terminálhoz] telepítése (https://github.com/simplex-chat/simplex-chat)
+ No comment provided by engineer.
+
+
+ Instant push notifications will be hidden!
+
+ Az azonnali push értesítések elrejtésre kerülnek!
+
+ No comment provided by engineer.
+
+
+ Instantly
+ Azonnal
+ No comment provided by engineer.
+
+
+ Interface
+ Felület
+ No comment provided by engineer.
+
+
+ Invalid QR code
+ Érvénytelen QR-kód
+ No comment provided by engineer.
+
+
+ Invalid connection link
+ Érvénytelen kapcsolati hivatkozás
+ No comment provided by engineer.
+
+
+ Invalid display name!
+ Érvénytelen megjelenítendő felhaszálónév!
+ No comment provided by engineer.
+
+
+ Invalid link
+ Érvénytelen hivatkozás
+ No comment provided by engineer.
+
+
+ Invalid migration confirmation
+ No comment provided by engineer.
+
+
+ Invalid name!
+ Érvénytelen név!
+ No comment provided by engineer.
+
+
+ Invalid response
+ Érvénytelen válasz
+ No comment provided by engineer.
+
+
+ Invalid server address!
+ Érvénytelen kiszolgálócím!
+ No comment provided by engineer.
+
+
+ Invalid status
+ Érvénytelen állapot
+ item status text
+
+
+ Invitation expired!
+ A meghívó lejárt!
+ No comment provided by engineer.
+
+
+ Invite friends
+ Barátok meghívása
+ No comment provided by engineer.
+
+
+ Invite members
+ Tagok meghívása
+ No comment provided by engineer.
+
+
+ Invite to group
+ Meghívás a csoportba
+ No comment provided by engineer.
+
+
+ Irreversible message deletion
+ Visszafordíthatatlan üzenettörlés
+ No comment provided by engineer.
+
+
+ Irreversible message deletion is prohibited in this chat.
+ Ebben a csevegésben az üzenetek visszafordíthatatlan törlése le van tiltva.
+ No comment provided by engineer.
+
+
+ Irreversible message deletion is prohibited in this group.
+ Ebben a csoportban az üzenetek visszafordíthatatlan törlése le van tiltva.
+ No comment provided by engineer.
+
+
+ It allows having many anonymous connections without any shared data between them in a single chat profile.
+ Lehetővé teszi, hogy egyetlen csevegőprofilon belül több anonim kapcsolat legyen, anélkül, hogy megosztott adatok lennének közöttük.
+ No comment provided by engineer.
+
+
+ It can happen when you or your connection used the old database backup.
+ Ez akkor fordulhat elő, ha ön vagy a kapcsolata régi adatbázis biztonsági mentést használt.
+ No comment provided by engineer.
+
+
+ It can happen when:
+1. The messages expired in the sending client after 2 days or on the server after 30 days.
+2. Message decryption failed, because you or your contact used old database backup.
+3. The connection was compromised.
+ Ez akkor fordulhat elő, ha:
+1. Az üzenetek 2 nap után, vagy a kiszolgálón 30 nap után lejártak.
+2. Az üzenet visszafejtése sikertelen volt, mert vagy az ismerőse régebbi adatbázis biztonsági mentést használt.
+3. A kapcsolat sérült.
+ No comment provided by engineer.
+
+
+ It seems like you are already connected via this link. If it is not the case, there was an error (%@).
+ Úgy tűnik, már csatlakozott ezen a hivatkozáson keresztül. Ha ez nem így van, akkor hiba történt (%@).
+ No comment provided by engineer.
+
+
+ Italian interface
+ Olasz kezelőfelület
+ No comment provided by engineer.
+
+
+ Japanese interface
+ Japán kezelőfelület
+ No comment provided by engineer.
+
+
+ Join
+ Csatlakozás
+ No comment provided by engineer.
+
+
+ Join group
+ Csatlakozás csoporthoz
+ No comment provided by engineer.
+
+
+ Join group conversations
+ Csatlakozás csoportos beszélgetésekhez
+ No comment provided by engineer.
+
+
+ Join group?
+ Csatlakozik a csoporthoz?
+ No comment provided by engineer.
+
+
+ Join incognito
+ Csatlakozás inkognitóban
+ No comment provided by engineer.
+
+
+ Join with current profile
+ Csatlakozás a jelenlegi profillal
+ No comment provided by engineer.
+
+
+ Join your group?
+This is your link for group %@!
+ Csatlakozik a csoportjához?
+Ez az ön hivatkozása a(z) %@ csoporthoz!
+ No comment provided by engineer.
+
+
+ Joining group
+ Csatlakozás a csoporthoz
+ No comment provided by engineer.
+
+
+ Keep
+ Megtart
+ No comment provided by engineer.
+
+
+ Keep the app open to use it from desktop
+ A számítógépről való használathoz tartsd nyitva az alkalmazást
+ No comment provided by engineer.
+
+
+ Keep unused invitation?
+ Fel nem használt meghívó megtartása?
+ No comment provided by engineer.
+
+
+ Keep your connections
+ Kapcsolatok megtartása
+ No comment provided by engineer.
+
+
+ KeyChain error
+ Kulcstároló hiba
+ No comment provided by engineer.
+
+
+ Keychain error
+ Kulcstároló hiba
+ No comment provided by engineer.
+
+
+ LIVE
+ ÉLŐ
+ No comment provided by engineer.
+
+
+ Large file!
+ Nagy fájl!
+ No comment provided by engineer.
+
+
+ Learn more
+ Tudjon meg többet
+ No comment provided by engineer.
+
+
+ Leave
+ Elhagy
+ No comment provided by engineer.
+
+
+ Leave group
+ Csoport elhagyása
+ No comment provided by engineer.
+
+
+ Leave group?
+ Csoport elhagyása?
+ No comment provided by engineer.
+
+
+ Let's talk in SimpleX Chat
+ Beszélgessünk a SimpleX Chat-ben
+ email subject
+
+
+ Light
+ Világos
+ No comment provided by engineer.
+
+
+ Limitations
+ Korlátozások
+ No comment provided by engineer.
+
+
+ Link mobile and desktop apps! 🔗
+ Társítsa össze a mobil és az asztali alkalmazásokat! 🔗
+ No comment provided by engineer.
+
+
+ Linked desktop options
+ Összekapcsolt számítógép beállítások
+ No comment provided by engineer.
+
+
+ Linked desktops
+ Összekapcsolt számítógépek
+ No comment provided by engineer.
+
+
+ Live message!
+ Élő üzenet!
+ No comment provided by engineer.
+
+
+ Live messages
+ Élő üzenetek
+ No comment provided by engineer.
+
+
+ Local
+ Helyi
+ No comment provided by engineer.
+
+
+ Local name
+ Helyi név
+ No comment provided by engineer.
+
+
+ Local profile data only
+ Csak helyi profiladatok
+ No comment provided by engineer.
+
+
+ Lock after
+ Zárolás miután
+ No comment provided by engineer.
+
+
+ Lock mode
+ Zárolási mód
+ No comment provided by engineer.
+
+
+ Make a private connection
+ Privát kapcsolat létrehozása
+ No comment provided by engineer.
+
+
+ Make one message disappear
+ Egy üzenet eltüntetése
+ No comment provided by engineer.
+
+
+ Make profile private!
+ Tegye priváttá profilját!
+ No comment provided by engineer.
+
+
+ Make sure %@ server addresses are in correct format, line separated and are not duplicated (%@).
+ Győződjön meg arról, hogy a %@ szervercímek megfelelő formátumúak, sorszeparáltak és nem duplikáltak (%@).
+ No comment provided by engineer.
+
+
+ Make sure WebRTC ICE server addresses are in correct format, line separated and are not duplicated.
+ Győződjön meg arról, hogy a WebRTC ICE-kiszolgáló címei megfelelő formátumúak, sorszeparáltak és nem duplikáltak.
+ No comment provided by engineer.
+
+
+ Many people asked: *if SimpleX has no user identifiers, how can it deliver messages?*
+ Sokan kérdezték: *ha a SimpleX-nek nincsenek felhasználói azonosítói, akkor hogyan tud üzeneteket kézbesíteni?*
+ No comment provided by engineer.
+
+
+ Mark deleted for everyone
+ Jelölje meg mindenki számára töröltként
+ No comment provided by engineer.
+
+
+ Mark read
+ Megjelölés olvasottként
+ No comment provided by engineer.
+
+
+ Mark verified
+ Ellenőrzöttként jelölve
+ No comment provided by engineer.
+
+
+ Markdown in messages
+ Markdown az üzenetekben
+ No comment provided by engineer.
+
+
+ Max 30 seconds, received instantly.
+ Max. 30 másodperc, azonnal érkezett.
+ No comment provided by engineer.
+
+
+ Member
+ Tag
+ No comment provided by engineer.
+
+
+ Member role will be changed to "%@". All group members will be notified.
+ A tag szerepköre meg fog változni erre: "%@". A csoport minden tagja értesítést kap róla.
+ No comment provided by engineer.
+
+
+ Member role will be changed to "%@". The member will receive a new invitation.
+ A tag szerepköre meg fog változni erre: "%@". A tag új meghívást fog kapni.
+ No comment provided by engineer.
+
+
+ Member will be removed from group - this cannot be undone!
+ A tag eltávolítása a csoportból - ez nem vonható vissza!
+ No comment provided by engineer.
+
+
+ Message delivery error
+ Üzenetkézbesítési hiba
+ item status text
+
+
+ Message delivery receipts!
+ Üzenetkézbesítési bizonylatok!
+ No comment provided by engineer.
+
+
+ Message draft
+ Üzenetvázlat
+ No comment provided by engineer.
+
+
+ Message reactions
+ Üzenetreakciók
+ chat feature
+
+
+ Message reactions are prohibited in this chat.
+ Az üzenetreakciók ebben a csevegésben le vannak tiltva.
+ No comment provided by engineer.
+
+
+ Message reactions are prohibited in this group.
+ Ebben a csoportban az üzenetreakciók le vannak tiltva.
+ No comment provided by engineer.
+
+
+ Message text
+ Üzenet szövege
+ No comment provided by engineer.
+
+
+ Message too large
+ No comment provided by engineer.
+
+
+ Messages
+ Üzenetek
+ No comment provided by engineer.
+
+
+ Messages & files
+ Üzenetek és fájlok
+ No comment provided by engineer.
+
+
+ Messages from %@ will be shown!
+ A(z) %@ által írt üzenetek megjelennek!
+ No comment provided by engineer.
+
+
+ Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.
+ No comment provided by engineer.
+
+
+ Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.
+ No comment provided by engineer.
+
+
+ Migrate device
+ No comment provided by engineer.
+
+
+ Migrate from another device
+ No comment provided by engineer.
+
+
+ Migrate here
+ No comment provided by engineer.
+
+
+ Migrate to another device
+ No comment provided by engineer.
+
+
+ Migrate to another device via QR code.
+ No comment provided by engineer.
+
+
+ Migrating
+ No comment provided by engineer.
+
+
+ Migrating database archive…
+ Adatbázis archívum migrálása…
+ No comment provided by engineer.
+
+
+ Migration complete
+ No comment provided by engineer.
+
+
+ Migration error:
+ Migrációs hiba:
+ No comment provided by engineer.
+
+
+ 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 migráció. Koppintson a **Kihagyás** lehetőségre az aktuális adatbázis használatának folytatásához. Kérjük, 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
+ A migráció befejeződött
+ No comment provided by engineer.
+
+
+ Migrations: %@
+ Migrációk: %@
+ No comment provided by engineer.
+
+
+ Moderate
+ Moderálás
+ chat item action
+
+
+ Moderated at
+ Moderálva ekkor
+ No comment provided by engineer.
+
+
+ Moderated at: %@
+ Moderálva ekkor: %@
+ copied message info
+
+
+ More improvements are coming soon!
+ Hamarosan további fejlesztések érkeznek!
+ No comment provided by engineer.
+
+
+ Most likely this connection is deleted.
+ Valószínűleg ez a kapcsolat törlésre került.
+ item status description
+
+
+ Most likely this contact has deleted the connection with you.
+ Valószínűleg ez az ismerős törölte önnel a kapcsolatot.
+ No comment provided by engineer.
+
+
+ Multiple chat profiles
+ Több csevegőprofil
+ No comment provided by engineer.
+
+
+ Mute
+ Elnémítás
+ No comment provided by engineer.
+
+
+ Muted when inactive!
+ Némítás, ha inaktív!
+ No comment provided by engineer.
+
+
+ Name
+ Név
+ No comment provided by engineer.
+
+
+ Network & servers
+ Hálózat és kiszolgálók
+ No comment provided by engineer.
+
+
+ Network settings
+ Hálózati beállítások
+ No comment provided by engineer.
+
+
+ Network status
+ Hálózat állapota
+ No comment provided by engineer.
+
+
+ New Passcode
+ Új jelkód
+ No comment provided by engineer.
+
+
+ New chat
+ Új beszélgetés
+ No comment provided by engineer.
+
+
+ New contact request
+ Új kapcsolattartási kérelem
+ notification
+
+
+ New contact:
+ Új kapcsolat:
+ notification
+
+
+ New database archive
+ Új adatbázis-archívum
+ No comment provided by engineer.
+
+
+ New desktop app!
+ Új asztali alkalmazás!
+ No comment provided by engineer.
+
+
+ New display name
+ Új megjelenítési név
+ No comment provided by engineer.
+
+
+ New in %@
+ Újdonságok a(z) %@ verzióban
+ No comment provided by engineer.
+
+
+ New member role
+ Új tag szerepköre
+ No comment provided by engineer.
+
+
+ New message
+ Új üzenet
+ notification
+
+
+ New passphrase…
+ Új jelmondat…
+ No comment provided by engineer.
+
+
+ No
+ Nem
+ No comment provided by engineer.
+
+
+ No app password
+ Nincs alkalmazás jelszó
+ Authentication unavailable
+
+
+ No contacts selected
+ Nem kerültek ismerősök kiválasztásra
+ No comment provided by engineer.
+
+
+ No contacts to add
+ Nincs hozzáadandó ismerős
+ No comment provided by engineer.
+
+
+ No delivery information
+ Nincs kézbesítési információ
+ No comment provided by engineer.
+
+
+ No device token!
+ Nincs eszköztoken!
+ No comment provided by engineer.
+
+
+ No filtered chats
+ Nincsenek szűrt csevegések
+ No comment provided by engineer.
+
+
+ Group not found!
+ Csoport nem található!
+ No comment provided by engineer.
+
+
+ No history
+ Nincsenek előzmények
+ No comment provided by engineer.
+
+
+ No permission to record voice message
+ Nincs engedély a hangüzenet rögzítésére
+ No comment provided by engineer.
+
+
+ No received or sent files
+ Nincsenek fogadott vagy küldött fájlok
+ No comment provided by engineer.
+
+
+ Not compatible!
+ Nem kompatibilis!
+ No comment provided by engineer.
+
+
+ Notifications
+ Értesítések
+ No comment provided by engineer.
+
+
+ Notifications are disabled!
+ Az értesítések le vannak tiltva!
+ No comment provided by engineer.
+
+
+ Now admins can:
+- delete members' messages.
+- disable members ("observer" role)
+ Most már az adminok is:
+- törölhetik a tagok üzeneteit.
+- letilthatnak tagokat ("megfigyelő" szerepkör)
+ No comment provided by engineer.
+
+
+ OK
+ Rendben
+ No comment provided by engineer.
+
+
+ Off
+ Ki
+ No comment provided by engineer.
+
+
+ Ok
+ Rendben
+ No comment provided by engineer.
+
+
+ Old database
+ Régi adatbázis
+ No comment provided by engineer.
+
+
+ Old database archive
+ Régi adatbázis archívum
+ No comment provided by engineer.
+
+
+ One-time invitation link
+ Egyszer használatos meghívó hivatkozás
+ No comment provided by engineer.
+
+
+ Onion hosts will be required for connection. Requires enabling VPN.
+ A csatlakozáshoz Onion host-okra lesz szükség. VPN engedélyezése szükséges.
+ No comment provided by engineer.
+
+
+ Onion hosts will be used when available. Requires enabling VPN.
+ Onion host-ok használata, ha azok rendelkezésre állnak. VPN engedélyezése szükséges.
+ No comment provided by engineer.
+
+
+ Onion hosts will not be used.
+ Onion host-ok nem lesznek használva.
+ No comment provided by engineer.
+
+
+ Only client devices store user profiles, contacts, groups, and messages sent with **2-layer end-to-end encryption**.
+ Csak a klienseszközök tárolják a felhasználói profilokat, névjegyeket, csoportokat és a **2 rétegű végponttól-végpontig titkosítással** küldött üzeneteket.
+ No comment provided by engineer.
+
+
+ Only group owners can change group preferences.
+ Csak a csoporttulajdonosok módosíthatják a csoportbeállításokat.
+ No comment provided by engineer.
+
+
+ Only group owners can enable files and media.
+ Csak a csoporttulajdonosok engedélyezhetik a fájlok- és a médiatartalmak küldését.
+ No comment provided by engineer.
+
+
+ Only group owners can enable voice messages.
+ Csak a csoporttulajdonosok engedélyezhetik a hangüzenetek küldését.
+ No comment provided by engineer.
+
+
+ Only you can add message reactions.
+ Csak ön adhat hozzá üzenetreakciókat.
+ No comment provided by engineer.
+
+
+ Only you can irreversibly delete messages (your contact can mark them for deletion). (24 hours)
+ Visszafordíthatatlanul csak ön törölhet üzeneteket (ismerőse csak törlésre jelölheti őket ). (24 óra)
+ No comment provided by engineer.
+
+
+ Only you can make calls.
+ Csak ön tud hívásokat indítani.
+ No comment provided by engineer.
+
+
+ Only you can send disappearing messages.
+ Csak ön tud eltűnő üzeneteket küldeni.
+ No comment provided by engineer.
+
+
+ Only you can send voice messages.
+ Csak ön tud hangüzeneteket küldeni.
+ No comment provided by engineer.
+
+
+ Only your contact can add message reactions.
+ Csak az ismerős tud üzeneteakciókat adni.
+ No comment provided by engineer.
+
+
+ Only your contact can irreversibly delete messages (you can mark them for deletion). (24 hours)
+ Csak az ismerős tud visszafordíthatatlanul törölni üzeneteket (megjelölheti őket törlésre). (24 óra)
+ No comment provided by engineer.
+
+
+ Only your contact can make calls.
+ Csak az ismerős tud hívást indítani.
+ No comment provided by engineer.
+
+
+ Only your contact can send disappearing messages.
+ Csak az ismerős tud eltűnő üzeneteket küldeni.
+ No comment provided by engineer.
+
+
+ Only your contact can send voice messages.
+ Csak az ismerős tud hangüzeneteket küldeni.
+ No comment provided by engineer.
+
+
+ Open
+ Megnyitás
+ No comment provided by engineer.
+
+
+ Open Settings
+ Beállítások megnyitása
+ No comment provided by engineer.
+
+
+ Open chat
+ Csevegés megnyitása
+ No comment provided by engineer.
+
+
+ Open chat console
+ Csevegés konzol megnyitása
+ authentication reason
+
+
+ Open group
+ Csoport megnyitása
+ No comment provided by engineer.
+
+
+ Open migration to another device
+ authentication reason
+
+
+ Open user profiles
+ Felhasználói profilok megnyitása
+ authentication reason
+
+
+ Open-source protocol and code – anybody can run the servers.
+ Nyílt forráskódú protokoll és forráskód – bárki üzemeltethet kiszolgálókat.
+ No comment provided by engineer.
+
+
+ Opening app…
+ Az alkalmazás megnyitása…
+ No comment provided by engineer.
+
+
+ Or paste archive link
+ No comment provided by engineer.
+
+
+ Or scan QR code
+ Vagy QR-kód beolvasása
+ No comment provided by engineer.
+
+
+ Or securely share this file link
+ No comment provided by engineer.
+
+
+ Or show this code
+ Vagy mutassa meg ezt a kódot
+ No comment provided by engineer.
+
+
+ PING count
+ PING számláló
+ No comment provided by engineer.
+
+
+ PING interval
+ PING időköze
+ No comment provided by engineer.
+
+
+ Passcode
+ Jelkód
+ No comment provided by engineer.
+
+
+ Passcode changed!
+ A jelkód megváltozott!
+ No comment provided by engineer.
+
+
+ Passcode entry
+ Jelkód bevitele
+ No comment provided by engineer.
+
+
+ Passcode not changed!
+ A jelkód nem változott!
+ No comment provided by engineer.
+
+
+ Passcode set!
+ A jelkód beállítva!
+ No comment provided by engineer.
+
+
+ Password to show
+ Jelszó mutatása
+ No comment provided by engineer.
+
+
+ Past member %@
+ Korábbi csoport tag %@
+ past/unknown group member
+
+
+ Paste desktop address
+ Számítógép azonosítójának beillesztése
+ No comment provided by engineer.
+
+
+ Paste image
+ Kép beillesztése
+ No comment provided by engineer.
+
+
+ Paste link to connect!
+ Hivatkozás beillesztése a csatlakozáshoz!
+ No comment provided by engineer.
+
+
+ Paste the link you received
+ Fogadott hivatkozás beillesztése
+ No comment provided by engineer.
+
+
+ People can connect to you only via the links you share.
+ Az emberek csak az ön által megosztott hivatkozáson keresztül kapcsolódhatnak.
+ No comment provided by engineer.
+
+
+ Periodically
+ Rendszeresen
+ No comment provided by engineer.
+
+
+ Permanent decryption error
+ Végleges visszafejtési hiba
+ message decrypt error item
+
+
+ Picture-in-picture calls
+ No comment provided by engineer.
+
+
+ Please ask your contact to enable sending voice messages.
+ Ismerős felkérése, hogy engedélyezze a hangüzenetek küldését.
+ No comment provided by engineer.
+
+
+ Please check that you used the correct link or ask your contact to send you another one.
+ Ellenőrizze, hogy a megfelelő hivatkozást használta-e, vagy kérje meg ismerősét, hogy küldjön egy másikat.
+ No comment provided by engineer.
+
+
+ Please check your network connection with %@ and try again.
+ Kérjük, ellenőrizze hálózati kapcsolatát a(z) %@ segítségével, és próbálja újra.
+ No comment provided by engineer.
+
+
+ Please check yours and your contact preferences.
+ Ellenőrizze az ön és ismerőse beállításait.
+ No comment provided by engineer.
+
+
+ Please confirm that network settings are correct for this device.
+ No comment provided by engineer.
+
+
+ Please contact developers.
+Error: %@
+ Lépjen kapcsolatba a fejlesztőkkel.
+Hiba: %@
+ No comment provided by engineer.
+
+
+ Please contact group admin.
+ Lépjen kapcsolatba a csoport adminnal.
+ No comment provided by engineer.
+
+
+ Please enter correct current passphrase.
+ Adja meg a helyes aktuális jelmondatát.
+ No comment provided by engineer.
+
+
+ Please enter the previous password after restoring database backup. This action can not be undone.
+ Előző jelszó megadása az adatbázis biztonsági mentésének visszaállítása után. Ez a művelet nem visszavonható.
+ No comment provided by engineer.
+
+
+ Please remember or store it securely - there is no way to recover a lost passcode!
+ Jegyezze fel vagy tárolja el biztonságosan - az elveszett jelkódot nem lehet visszaállítani!
+ No comment provided by engineer.
+
+
+ Please report it to the developers.
+ Jelentse a fejlesztőknek.
+ No comment provided by engineer.
+
+
+ Please restart the app and migrate the database to enable push notifications.
+ Indítsa újra az alkalmazást az adatbázis-migrációhoz szükséges push értesítések engedélyezéséhez.
+ No comment provided by engineer.
+
+
+ Please store passphrase securely, you will NOT be able to access chat if you lose it.
+ Tárolja el biztonságosan jelmondát, mert ha elveszti azt, akkor NEM férhet hozzá a csevegéshez.
+ No comment provided by engineer.
+
+
+ Please store passphrase securely, you will NOT be able to change it if you lose it.
+ Tárolja el biztonságosan jelmondatát, mert ha elveszíti azt, NEM tudja megváltoztatni.
+ No comment provided by engineer.
+
+
+ Polish interface
+ Lengyel kezelőfelület
+ No comment provided by engineer.
+
+
+ Possibly, certificate fingerprint in server address is incorrect
+ Lehetséges, hogy a kiszolgáló címében szereplő tanúsítvány-ujjlenyomat helytelen
+ server test error
+
+
+ Post-quantum E2EE
+ No comment provided by engineer.
+
+
+ Preserve the last message draft, with attachments.
+ Az utolsó üzenet tervezetének megőrzése a mellékletekkel együtt.
+ No comment provided by engineer.
+
+
+ Preset server
+ Előre beállított kiszolgáló
+ No comment provided by engineer.
+
+
+ Preset server address
+ Előre beállított kiszolgáló címe
+ No comment provided by engineer.
+
+
+ Preview
+ Előnézet
+ No comment provided by engineer.
+
+
+ Privacy & security
+ Adatvédelem és biztonság
+ No comment provided by engineer.
+
+
+ Privacy redefined
+ Adatvédelem újraértelmezve
+ No comment provided by engineer.
+
+
+ Private filenames
+ Privát fájl nevek
+ No comment provided by engineer.
+
+
+ Private notes
+ Privát jegyzetek
+ name of notes to self
+
+
+ Profile and server connections
+ Profil és kiszolgálókapcsolatok
+ No comment provided by engineer.
+
+
+ Profile image
+ Profilkép
+ No comment provided by engineer.
+
+
+ Profile name
+ Profilnév
+ No comment provided by engineer.
+
+
+ Profile name:
+ Profil neve:
+ No comment provided by engineer.
+
+
+ Profile password
+ Profiljelszó
+ No comment provided by engineer.
+
+
+ Profile update will be sent to your contacts.
+ A profilfrissítés elküldésre került az ismerősök számára.
+ No comment provided by engineer.
+
+
+ Prohibit audio/video calls.
+ Hang- és videóhívások tiltása.
+ No comment provided by engineer.
+
+
+ Prohibit irreversible message deletion.
+ Az üzenetek véglegesen való törlése le van tiltva.
+ No comment provided by engineer.
+
+
+ Prohibit message reactions.
+ Üzenetreakciók tiltása.
+ No comment provided by engineer.
+
+
+ Prohibit messages reactions.
+ Az üzenetreakciók tiltása.
+ No comment provided by engineer.
+
+
+ Prohibit sending direct messages to members.
+ Közvetlen üzenetek küldésének letiltása tagok részére.
+ No comment provided by engineer.
+
+
+ Prohibit sending disappearing messages.
+ Eltűnő üzenetek küldésének letiltása.
+ No comment provided by engineer.
+
+
+ Prohibit sending files and media.
+ Fájlok- és a médiatartalom küldés letiltása.
+ No comment provided by engineer.
+
+
+ Prohibit sending voice messages.
+ Hangüzenetek küldésének letiltása.
+ No comment provided by engineer.
+
+
+ Protect app screen
+ App képernyőjének védelme
+ No comment provided by engineer.
+
+
+ Protect your chat profiles with a password!
+ Csevegési profiljok védelme jelszóval!
+ No comment provided by engineer.
+
+
+ Protocol timeout
+ Protokoll időtúllépés
+ No comment provided by engineer.
+
+
+ Protocol timeout per KB
+ Protokoll időkorlát KB-onként
+ No comment provided by engineer.
+
+
+ Push notifications
+ Push értesítések
+ No comment provided by engineer.
+
+
+ Push server
+ No comment provided by engineer.
+
+
+ Quantum resistant encryption
+ No comment provided by engineer.
+
+
+ Rate the app
+ Értékelje az alkalmazást
+ No comment provided by engineer.
+
+
+ React…
+ Reagálj…
+ chat item menu
+
+
+ Read
+ Olvasd el
+ No comment provided by engineer.
+
+
+ Read more
+ Tudjon meg többet
+ No comment provided by engineer.
+
+
+ Read more in [User Guide](https://simplex.chat/docs/guide/app-settings.html#your-simplex-contact-address).
+ További információ a [Felhasználói útmutatóban](https://simplex.chat/docs/guide/app-settings.html#your-simplex-contact-address).
+ No comment provided by engineer.
+
+
+ Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode).
+ További információ a [Felhasználói útmutatóban](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode).
+ No comment provided by engineer.
+
+
+ Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends).
+ További információ a [Felhasználói útmutatóban](https://simplex.chat/docs/guide/readme.html#connect-to-friends).
+ No comment provided by engineer.
+
+
+ Read more in our GitHub repository.
+ További információ a GitHub tárolónkban.
+ No comment provided by engineer.
+
+
+ Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme).
+ További információ a [GitHub tárolóban](https://github.com/simplex-chat/simplex-chat#readme).
+ No comment provided by engineer.
+
+
+ Receipts are disabled
+ Üzenet kézbesítési jelentés letiltva
+ No comment provided by engineer.
+
+
+ Received at
+ Fogadva ekkor
+ No comment provided by engineer.
+
+
+ Received at: %@
+ Fogadva ekkor: %@
+ copied message info
+
+
+ Received file event
+ Fogadott fájl esemény
+ notification
+
+
+ Received message
+ Fogadott üzenet
+ message info title
+
+
+ Receiving address will be changed to a different server. Address change will complete after sender comes online.
+ A fogadó cím egy másik kiszolgálóra változik. A címváltoztatás a feladó online állapotba kerülése után fejeződik be.
+ No comment provided by engineer.
+
+
+ Receiving file will be stopped.
+ A fájl fogadása leállt.
+ No comment provided by engineer.
+
+
+ Receiving via
+ Fogadás a
+ No comment provided by engineer.
+
+
+ Recent history and improved [directory bot](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).
+ Legutóbbi előzmények és továbbfejlesztett [könyvtárbot] (simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2TxW3dfMfxy 3%23%2F%3Fv%3D1-2% 26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gloncbqjek4gloncbqjek.
+ No comment provided by engineer.
+
+
+ Recipients see updates as you type them.
+ A címzettek a beírás közben látják a frissítéseket.
+ No comment provided by engineer.
+
+
+ Reconnect all connected servers to force message delivery. It uses additional traffic.
+ Az összes csatlakoztatott kiszolgáló újrakapcsolása az üzenetek kézbesítésének kikényszerítéséhez. Ez további forgalmat használ.
+ No comment provided by engineer.
+
+
+ Reconnect servers?
+ Kiszolgálók újracsatlakoztatása?
+ No comment provided by engineer.
+
+
+ Record updated at
+ A bejegyzés frissítve
+ No comment provided by engineer.
+
+
+ Record updated at: %@
+ A bejegyzés frissítve: %@
+ copied message info
+
+
+ Reduced battery usage
+ Csökkentett akkumulátorhasználat
+ No comment provided by engineer.
+
+
+ Reject
+ Elutasítás
+ reject incoming call via notification
+
+
+ Reject (sender NOT notified)
+ Elutasítás (a feladó NEM kap értesítést)
+ No comment provided by engineer.
+
+
+ Reject contact request
+ Kapcsolatfelvételi kérelem elutasítása
+ No comment provided by engineer.
+
+
+ Relay server is only used if necessary. Another party can observe your IP address.
+ Az átjátszó kiszolgáló csak szükség esetén kerül használatra. Egy másik fél megfigyelheti az IP-címét.
+ No comment provided by engineer.
+
+
+ Relay server protects your IP address, but it can observe the duration of the call.
+ Az átjátszó kiszolgáló megvédi IP-címét, de megfigyelheti a hívás időtartamát.
+ No comment provided by engineer.
+
+
+ Remove
+ Eltávolítás
+ No comment provided by engineer.
+
+
+ Remove member
+ Tag eltávolítása
+ No comment provided by engineer.
+
+
+ Remove member?
+ Tag eltávolítása?
+ No comment provided by engineer.
+
+
+ Remove passphrase from keychain?
+ Jelmondat eltávolítása a kulcstárolóból?
+ No comment provided by engineer.
+
+
+ Renegotiate
+ Újraegyzetetés
+ No comment provided by engineer.
+
+
+ Renegotiate encryption
+ Titkosítás újraegyeztetése
+ No comment provided by engineer.
+
+
+ Renegotiate encryption?
+ Titkosítás újraegyeztetése?
+ No comment provided by engineer.
+
+
+ Repeat connection request?
+ Kapcsolódási kérés megismétlése?
+ No comment provided by engineer.
+
+
+ Repeat download
+ No comment provided by engineer.
+
+
+ Repeat import
+ No comment provided by engineer.
+
+
+ Repeat join request?
+ Csatlakozási kérés megismétlése?
+ No comment provided by engineer.
+
+
+ Repeat upload
+ No comment provided by engineer.
+
+
+ Reply
+ Válasz
+ chat item action
+
+
+ Required
+ Megkövetelt
+ No comment provided by engineer.
+
+
+ Reset
+ Alaphelyzetbe állítás
+ No comment provided by engineer.
+
+
+ Reset colors
+ Színek alaphelyzetbe állítása
+ No comment provided by engineer.
+
+
+ Reset to defaults
+ Alaphelyzetbe állítás
+ No comment provided by engineer.
+
+
+ Restart the app to create a new chat profile
+ Új csevegési profil létrehozásához indítsa újra az alkalmazást
+ No comment provided by engineer.
+
+
+ Restart the app to use imported chat database
+ Az importált csevegési adatbázis használatához indítsa újra az alkalmazást
+ No comment provided by engineer.
+
+
+ Restore
+ Visszaállítás
+ No comment provided by engineer.
+
+
+ Restore database backup
+ Adatbázismentés visszaállítása
+ No comment provided by engineer.
+
+
+ Restore database backup?
+ Adatbázismentés visszaállítása?
+ No comment provided by engineer.
+
+
+ Restore database error
+ Hiba az adatbázis visszaállításakor
+ No comment provided by engineer.
+
+
+ Retry
+ Újrapróbálkozás
+ No comment provided by engineer.
+
+
+ Reveal
+ Felfedés
+ chat item action
+
+
+ Revert
+ Visszaállít
+ No comment provided by engineer.
+
+
+ Revoke
+ Visszavonás
+ No comment provided by engineer.
+
+
+ Revoke file
+ Fájl visszavonása
+ cancel file action
+
+
+ Revoke file?
+ Fájl visszavonása?
+ No comment provided by engineer.
+
+
+ Role
+ Szerepkör
+ No comment provided by engineer.
+
+
+ Run chat
+ Csevegési szolgáltatás indítása
+ No comment provided by engineer.
+
+
+ SMP servers
+ Üzenetküldő (SMP) kiszolgálók
+ No comment provided by engineer.
+
+
+ Safer groups
+ No comment provided by engineer.
+
+
+ Save
+ Mentés
+ chat item action
+
+
+ Save (and notify contacts)
+ Mentés (és az ismerősök értesítése)
+ No comment provided by engineer.
+
+
+ Save and notify contact
+ Mentés és ismerős értesítése
+ No comment provided by engineer.
+
+
+ Save and notify group members
+ Mentés és a csoporttagok értesítése
+ No comment provided by engineer.
+
+
+ Save and update group profile
+ Mentés és a csoport profil frissítése
+ No comment provided by engineer.
+
+
+ Save archive
+ Archívum mentése
+ No comment provided by engineer.
+
+
+ Save auto-accept settings
+ Automatikus elfogadási beállítások mentése
+ No comment provided by engineer.
+
+
+ Save group profile
+ Csoport profil elmentése
+ No comment provided by engineer.
+
+
+ Save passphrase and open chat
+ Jelmondat elmentése és csevegés megnyitása
+ No comment provided by engineer.
+
+
+ Save passphrase in Keychain
+ Jelmondat mentése a kulcstárban
+ No comment provided by engineer.
+
+
+ Save preferences?
+ Beállítások mentése?
+ No comment provided by engineer.
+
+
+ Save profile password
+ Felhasználói fiók jelszavának mentése
+ No comment provided by engineer.
+
+
+ Save servers
+ Kiszolgálók mentése
+ No comment provided by engineer.
+
+
+ Save servers?
+ Kiszolgálók mentése?
+ No comment provided by engineer.
+
+
+ Save settings?
+ Beállítások mentése?
+ No comment provided by engineer.
+
+
+ Save welcome message?
+ Üdvözlőszöveg mentése?
+ No comment provided by engineer.
+
+
+ Saved WebRTC ICE servers will be removed
+ A mentett WebRTC ICE kiszolgálók eltávolításra kerülnek
+ No comment provided by engineer.
+
+
+ Saved message
+ Mentett üzenet
+ message info title
+
+
+ Scan QR code
+ QR-kód beolvasása
+ No comment provided by engineer.
+
+
+ Scan QR code from desktop
+ QR-kód beolvasása számítógépről
+ No comment provided by engineer.
+
+
+ Scan code
+ Kód beolvasása
+ No comment provided by engineer.
+
+
+ Scan security code from your contact's app.
+ Biztonsági kód beolvasása ismerős általi alkalmazásból.
+ No comment provided by engineer.
+
+
+ Scan server QR code
+ A kiszolgáló QR-kódjának beolvasása
+ No comment provided by engineer.
+
+
+ Search
+ Keresés
+ No comment provided by engineer.
+
+
+ Search bar accepts invitation links.
+ A keresősáv fogadja a meghívó hivatkozásokat.
+ No comment provided by engineer.
+
+
+ Search or paste SimpleX link
+ Keresés, vagy SimpleX hivatkozás beillesztése
+ No comment provided by engineer.
+
+
+ Secure queue
+ Biztonságos várólista
+ server test step
+
+
+ Security assessment
+ Biztonsági kiértékelés
+ No comment provided by engineer.
+
+
+ Security code
+ Biztonsági kód
+ No comment provided by engineer.
+
+
+ Select
+ Választás
+ No comment provided by engineer.
+
+
+ Self-destruct
+ Önmegsemmisítés
+ No comment provided by engineer.
+
+
+ Self-destruct passcode
+ Önmegsemmisítési jelkód
+ No comment provided by engineer.
+
+
+ Self-destruct passcode changed!
+ Az önmegsemmisítési jelkód megváltozott!
+ No comment provided by engineer.
+
+
+ Self-destruct passcode enabled!
+ Az önmegsemmisítési jelkód engedélyezve!
+ No comment provided by engineer.
+
+
+ Send
+ Küldés
+ No comment provided by engineer.
+
+
+ Send a live message - it will update for the recipient(s) as you type it
+ Élő üzenet küldése - a címzett(ek) számára frissül, ahogy beírja
+ No comment provided by engineer.
+
+
+ Send delivery receipts to
+ A kézbesítési jelentéseket a következő címre kell küldeni
+ No comment provided by engineer.
+
+
+ Send direct message
+ Közvetlen üzenet küldése
+ No comment provided by engineer.
+
+
+ Send direct message to connect
+ A kapcsolódáshoz közvetlen üzenet küldése
+ No comment provided by engineer.
+
+
+ Send disappearing message
+ Eltűnő üzenet küldése
+ No comment provided by engineer.
+
+
+ Send link previews
+ Hivatkozás előnézetek küldése
+ No comment provided by engineer.
+
+
+ Send live message
+ Élő üzenet küldése
+ No comment provided by engineer.
+
+
+ Send notifications
+ Értesítések küldése
+ No comment provided by engineer.
+
+
+ Send notifications:
+ Értesítések küldése:
+ No comment provided by engineer.
+
+
+ Send questions and ideas
+ Ötletek és kérdések beküldése
+ No comment provided by engineer.
+
+
+ Send receipts
+ Üzenet kézbesítési jelentések
+ No comment provided by engineer.
+
+
+ Send them from gallery or custom keyboards.
+ Küldje el őket galériából vagy egyedi billentyűzetekről.
+ No comment provided by engineer.
+
+
+ Send up to 100 last messages to new members.
+ Utolsó 100 üzenet küldése új tagoknak.
+ No comment provided by engineer.
+
+
+ Sender cancelled file transfer.
+ A küldő megszakította a fájl átvitelt.
+ No comment provided by engineer.
+
+
+ Sender may have deleted the connection request.
+ A küldő törölhette a kapcsolódási kérelmet.
+ No comment provided by engineer.
+
+
+ Sending delivery receipts will be enabled for all contacts in all visible chat profiles.
+ A kézbesítési jelentések küldése engedélyezésre kerül az összes látható csevegési profilban lévő minden ismerős számára.
+ No comment provided by engineer.
+
+
+ Sending delivery receipts will be enabled for all contacts.
+ A kézbesítési jelentés küldése minden ismerős számára engedélyezésre kerül.
+ No comment provided by engineer.
+
+
+ Sending file will be stopped.
+ A fájl küldése leállt.
+ No comment provided by engineer.
+
+
+ Sending receipts is disabled for %lld contacts
+ A kézbesítési jelentések küldése le van tiltva %lld ismerősnél
+ No comment provided by engineer.
+
+
+ Sending receipts is disabled for %lld groups
+ A kézbesítési jelentések küldése le van tiltva %lld csoportban
+ No comment provided by engineer.
+
+
+ Sending receipts is enabled for %lld contacts
+ A kézbesítési jelentések küldése engedélyezve van %lld ismerős számára
+ No comment provided by engineer.
+
+
+ Sending receipts is enabled for %lld groups
+ A kézbesítési jelentések küldése engedélyezve van %lld csoportban
+ No comment provided by engineer.
+
+
+ Sending via
+ Küldés ezen keresztül
+ No comment provided by engineer.
+
+
+ Sent at
+ Elküldve ekkor
+ No comment provided by engineer.
+
+
+ Sent at: %@
+ Elküldve ekkor: %@
+ copied message info
+
+
+ Sent file event
+ Elküldött fájl esemény
+ notification
+
+
+ Sent message
+ Elküldött üzenet
+ message info title
+
+
+ Sent messages will be deleted after set time.
+ Az elküldött üzenetek törlésre kerülnek a beállított idő után.
+ No comment provided by engineer.
+
+
+ Server requires authorization to create queues, check password
+ A kiszolgálónak engedélyre van szüksége a várólisták létrehozásához, ellenőrizze jelszavát
+ server test error
+
+
+ Server requires authorization to upload, check password
+ A kiszolgálónak engedélyre van szüksége a várólisták feltöltéséhez, ellenőrizze jelszavát
+ server test error
+
+
+ Server test failed!
+ A kiszolgáló tesztje sikertelen!
+ No comment provided by engineer.
+
+
+ Servers
+ Kiszolgálók
+ No comment provided by engineer.
+
+
+ Session code
+ Munkamenet kód
+ No comment provided by engineer.
+
+
+ Set 1 day
+ Beállítva 1 nap
+ No comment provided by engineer.
+
+
+ Set contact name…
+ Ismerős nevének beállítása…
+ No comment provided by engineer.
+
+
+ Set group preferences
+ Csoportbeállítások megadása
+ No comment provided by engineer.
+
+
+ Set it instead of system authentication.
+ Rendszerhitelesítés helyetti beállítás.
+ No comment provided by engineer.
+
+
+ Set passcode
+ Jelkód beállítása
+ No comment provided by engineer.
+
+
+ Set passphrase
+ No comment provided by engineer.
+
+
+ Set passphrase to export
+ Jelmondat beállítása az exportáláshoz
+ No comment provided by engineer.
+
+
+ Set the message shown to new members!
+ Megjelenő üzenetet beállítása új tagok részére!
+ No comment provided by engineer.
+
+
+ Set timeouts for proxy/VPN
+ Időtúllépések beállítása a proxy/VPN számára
+ No comment provided by engineer.
+
+
+ Settings
+ Beállítások
+ No comment provided by engineer.
+
+
+ Share
+ Megosztás
+ chat item action
+
+
+ Share 1-time link
+ Egyszer használatos hivatkozás megosztása
+ No comment provided by engineer.
+
+
+ Share address
+ Azonosító megosztása
+ No comment provided by engineer.
+
+
+ Share address with contacts?
+ Megosztja az azonosítót az ismerősökkel?
+ No comment provided by engineer.
+
+
+ Share link
+ Hivatkozás megosztása
+ No comment provided by engineer.
+
+
+ Share this 1-time invite link
+ Egyszer használatos meghívó hivatkozás megosztása
+ No comment provided by engineer.
+
+
+ Share with contacts
+ Megosztás ismerősökkel
+ No comment provided by engineer.
+
+
+ Show QR code
+ No comment provided by engineer.
+
+
+ Show calls in phone history
+ Hívások megjelenítése a híváslistában
+ No comment provided by engineer.
+
+
+ Show developer options
+ Fejlesztői beállítások mutatása
+ No comment provided by engineer.
+
+
+ Show last messages
+ Utolsó üzenetek megjelenítése
+ No comment provided by engineer.
+
+
+ Show preview
+ Előnézet megjelenítése
+ No comment provided by engineer.
+
+
+ Show:
+ Mutat:
+ No comment provided by engineer.
+
+
+ SimpleX Address
+ SimpleX azonosító
+ No comment provided by engineer.
+
+
+ SimpleX Chat security was audited by Trail of Bits.
+ A SimpleX Chat biztonsága a Trail of Bits által lett auditálva.
+ No comment provided by engineer.
+
+
+ SimpleX Lock
+ SimpleX zárolás
+ No comment provided by engineer.
+
+
+ SimpleX Lock mode
+ SimpleX zárolási mód
+ No comment provided by engineer.
+
+
+ SimpleX Lock not enabled!
+ SimpleX zárolás nincs engedélyezve!
+ No comment provided by engineer.
+
+
+ SimpleX Lock turned on
+ SimpleX zárolás bekapcsolva
+ No comment provided by engineer.
+
+
+ SimpleX address
+ SimpleX azonosító
+ No comment provided by engineer.
+
+
+ SimpleX contact address
+ SimpleX ismerős azonosítója
+ simplex link type
+
+
+ SimpleX encrypted message or connection event
+ SimpleX titkosított üzenet vagy kapcsolati esemény
+ notification
+
+
+ SimpleX group link
+ SimpleX csoport hivatkozás
+ simplex link type
+
+
+ SimpleX links
+ SimpleX hivatkozások
+ No comment provided by engineer.
+
+
+ SimpleX one-time invitation
+ SimpleX egyszer használatos meghívó
+ simplex link type
+
+
+ Simplified incognito mode
+ Egyszerűsített inkognító mód
+ No comment provided by engineer.
+
+
+ Skip
+ Kihagyás
+ No comment provided by engineer.
+
+
+ Skipped messages
+ Kihagyott üzenetek
+ No comment provided by engineer.
+
+
+ Small groups (max 20)
+ Kis csoportok (max. 20 tag)
+ No comment provided by engineer.
+
+
+ Some non-fatal errors occurred during import - you may see Chat console for more details.
+ Néhány nem végzetes hiba történt az importálás során – további részletekért a csevegési konzolban olvashat.
+ No comment provided by engineer.
+
+
+ Somebody
+ Valaki
+ notification title
+
+
+ Start chat
+ Csevegés indítása
+ No comment provided by engineer.
+
+
+ Start chat?
+ Csevegés indítása?
+ No comment provided by engineer.
+
+
+ Start migration
+ Migráció indítása
+ No comment provided by engineer.
+
+
+ Stop
+ Megállítás
+ No comment provided by engineer.
+
+
+ Stop SimpleX
+ A SimpleX megállítása
+ authentication reason
+
+
+ Stop chat
+ No comment provided by engineer.
+
+
+ Stop chat to enable database actions
+ Csevegés leállítása az adatbázis-műveletek engedélyezéséhez
+ No comment provided by engineer.
+
+
+ Stop chat to export, import or delete chat database. You will not be able to receive and send messages while the chat is stopped.
+ A csevegés leállítása a csevegőadatbázis exportálásához, importálásához vagy törléséhez. A csevegés leállítása alatt nem tud üzeneteket fogadni és küldeni.
+ No comment provided by engineer.
+
+
+ Stop chat?
+ Csevegési szolgáltatás megállítása?
+ No comment provided by engineer.
+
+
+ Stop file
+ Fájl megállítása
+ cancel file action
+
+
+ Stop receiving file?
+ Fájl fogadás megszakítása?
+ No comment provided by engineer.
+
+
+ Stop sending file?
+ Fájl küldés megszakítása?
+ No comment provided by engineer.
+
+
+ Stop sharing
+ Megosztás leállítása
+ No comment provided by engineer.
+
+
+ Stop sharing address?
+ Címmegosztás megállítása?
+ No comment provided by engineer.
+
+
+ Stopping chat
+ No comment provided by engineer.
+
+
+ Submit
+ Elküldés
+ No comment provided by engineer.
+
+
+ Support SimpleX Chat
+ Támogassa a SimpleX Chatet
+ No comment provided by engineer.
+
+
+ System
+ Rendszer
+ No comment provided by engineer.
+
+
+ System authentication
+ Rendszerhitelesítés
+ No comment provided by engineer.
+
+
+ TCP connection timeout
+ TCP kapcsolat időtúllépés
+ No comment provided by engineer.
+
+
+ TCP_KEEPCNT
+ TCP_KEEPCNT
+ No comment provided by engineer.
+
+
+ TCP_KEEPIDLE
+ TCP_KEEPIDLE
+ No comment provided by engineer.
+
+
+ TCP_KEEPINTVL
+ TCP_KEEPINTVL
+ No comment provided by engineer.
+
+
+ Take picture
+ Fotó készítése
+ No comment provided by engineer.
+
+
+ Tap button
+ Koppintson a gombra
+ No comment provided by engineer.
+
+
+ Tap to Connect
+ Koppintson a csatlakozáshoz
+ No comment provided by engineer.
+
+
+ Tap to activate profile.
+ A profil aktiválásához koppintson az ikonra.
+ No comment provided by engineer.
+
+
+ Tap to join
+ Koppintson a csatlakozáshoz
+ No comment provided by engineer.
+
+
+ Tap to join incognito
+ Koppintson az inkognitómódhoz való csatlakozáshoz
+ No comment provided by engineer.
+
+
+ Tap to paste link
+ Koppintson a hivatkozás beillesztéséhez
+ No comment provided by engineer.
+
+
+ Tap to scan
+ Koppintson a beolvasáshoz
+ No comment provided by engineer.
+
+
+ Tap to start a new chat
+ Koppintson az új csevegés indításához
+ No comment provided by engineer.
+
+
+ Test failed at step %@.
+ A teszt sikertelen volt a(z) %@ lépésnél.
+ server test failure
+
+
+ Test server
+ Kiszolgáló tesztelése
+ No comment provided by engineer.
+
+
+ Test servers
+ Kiszolgálók tesztelése
+ No comment provided by engineer.
+
+
+ Tests failed!
+ Sikertelen tesztek!
+ No comment provided by engineer.
+
+
+ Thank you for installing SimpleX Chat!
+ Köszönjük, hogy telepítette a SimpleX Chatet!
+ No comment provided by engineer.
+
+
+ Thanks to the users – [contribute via Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!
+ Köszönet a felhasználóknak – [hozzájárulás a Weblate-en keresztül](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!
+ No comment provided by engineer.
+
+
+ Thanks to the users – contribute via Weblate!
+ Köszönet a felhasználóknak - hozzájárulás a Weblaten!
+ No comment provided by engineer.
+
+
+ The 1st platform without any user identifiers – private by design.
+ Az első csevegési rendszer bármiféle felhasználó azonosító nélkül - privátra lett tervezre.
+ No comment provided by engineer.
+
+
+ The ID of the next message is incorrect (less or equal to the previous).
+It can happen because of some bug or when the connection is compromised.
+ A következő üzenet azonosítója hibás (kisebb vagy egyenlő az előzővel).
+Ez valamilyen hiba, vagy sérült kapcsolat esetén fordulhat elő.
+ No comment provided by engineer.
+
+
+ The app can notify you when you receive messages or contact requests - please open settings to enable.
+ Az alkalmazás értesíteni fogja, amikor üzeneteket vagy kapcsolatfelvételi kéréseket kap – beállítások megnyitása az engedélyezéshez.
+ No comment provided by engineer.
+
+
+ The attempt to change database passphrase was not completed.
+ Az adatbázis jelmondatának megváltoztatására tett kísérlet nem fejeződött be.
+ No comment provided by engineer.
+
+
+ The code you scanned is not a SimpleX link QR code.
+ A beolvasott kód nem egy SimpleX hivatkozás QR-kód.
+ No comment provided by engineer.
+
+
+ The connection you accepted will be cancelled!
+ Az ön által elfogadott kapcsolat megszakad!
+ No comment provided by engineer.
+
+
+ The contact you shared this link with will NOT be able to connect!
+ Ismerőse NEM fog tudni csatlakozni, akivel megosztotta ezt a hivatkozást!
+ No comment provided by engineer.
+
+
+ The created archive is available via app Settings / Database / Old database archive.
+ A létrehozott archívum a Beállítások / Adatbázis / Régi adatbázis-archívum menüpontban érhető el.
+ No comment provided by engineer.
+
+
+ The encryption is working and the new encryption agreement is not required. It may result in connection errors!
+ A titkosítás működik, és új titkosítási egyezményre nincs szükség. Ez kapcsolati hibákat eredményezhet!
+ No comment provided by engineer.
+
+
+ The hash of the previous message is different.
+ Az előző üzenet hash-e más.
+ No comment provided by engineer.
+
+
+ The message will be deleted for all members.
+ Az üzenet minden tag számára törlésre kerül.
+ No comment provided by engineer.
+
+
+ The message will be marked as moderated for all members.
+ Az üzenet minden tag számára moderáltként lesz megjelölve.
+ No comment provided by engineer.
+
+
+ The next generation of private messaging
+ A privát üzenetküldés következő generációja
+ No comment provided by engineer.
+
+
+ The old database was not removed during the migration, it can be deleted.
+ A régi adatbázis nem került eltávolításra a migráció során, így törölhető.
+ No comment provided by engineer.
+
+
+ The profile is only shared with your contacts.
+ Profilja csak az ismerősök számára kerül megosztásra.
+ No comment provided by engineer.
+
+
+ The second tick we missed! ✅
+ A második jelölés, amit kihagytunk! ✅
+ No comment provided by engineer.
+
+
+ The sender will NOT be notified
+ A feladó NEM fog értesítést kapni
+ No comment provided by engineer.
+
+
+ The servers for new connections of your current chat profile **%@**.
+ Jelenlegi profil új ismerőseinek kiszolgálói **%@**.
+ No comment provided by engineer.
+
+
+ The text you pasted is not a SimpleX link.
+ A beillesztett szöveg nem egy SimpleX hivatkozás.
+ No comment provided by engineer.
+
+
+ Theme
+ Téma
+ No comment provided by engineer.
+
+
+ These settings are for your current profile **%@**.
+ Ezek a beállítások a jelenlegi **%@** profiljára vonatkoznak.
+ No comment provided by engineer.
+
+
+ They can be overridden in contact and group settings.
+ Ezek felülbírálhatóak az ismerős- és csoportbeállításokban.
+ No comment provided by engineer.
+
+
+ This action cannot be undone - all received and sent files and media will be deleted. Low resolution pictures will remain.
+ Ez a művelet nem vonható vissza - az összes fogadott és küldött fájl a médiatartalommal együtt törlésre kerülnek. Az alacsony felbontású fotók viszont megmaradnak.
+ No comment provided by engineer.
+
+
+ This action cannot be undone - the messages sent and received earlier than selected will be deleted. It may take several minutes.
+ Ez a művelet nem vonható vissza - a kiválasztottnál korábban küldött és fogadott üzenetek törlésre kerülnek. Ez több percet is igénybe vehet.
+ No comment provided by engineer.
+
+
+ This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost.
+ Ez a művelet nem vonható vissza - profilok, ismerősök, üzenetek és fájlok visszafordíthatatlanul törlésre kerülnek.
+ No comment provided by engineer.
+
+
+ This chat is protected by end-to-end encryption.
+ E2EE info chat item
+
+
+ This chat is protected by quantum resistant end-to-end encryption.
+ E2EE info chat item
+
+
+ This device name
+ Ennek az eszköznek a neve
+ No comment provided by engineer.
+
+
+ This display name is invalid. Please choose another name.
+ Ez a megjelenített felhasználónév érvénytelen. Válasszon egy másik nevet.
+ No comment provided by engineer.
+
+
+ This group has over %lld members, delivery receipts are not sent.
+ Ennek a csoportnak több mint %lld tagja van, a kézbesítési jelentések nem kerülnek elküldésre.
+ No comment provided by engineer.
+
+
+ This group no longer exists.
+ Ez a csoport már nem létezik.
+ No comment provided by engineer.
+
+
+ This is your own SimpleX address!
+ Ez a SimpleX azonosítója!
+ No comment provided by engineer.
+
+
+ This is your own one-time link!
+ Ez az egyszer használatos hivatkozása!
+ No comment provided by engineer.
+
+
+ This setting applies to messages in your current chat profile **%@**.
+ Ez a beállítás a jelenlegi **%@** profiljában lévő üzenetekre érvényes.
+ No comment provided by engineer.
+
+
+ To ask any questions and to receive updates:
+ Bármilyen kérdés feltevéséhez és a frissítésekért:
+ No comment provided by engineer.
+
+
+ To connect, your contact can scan QR code or use the link in the app.
+ A csatlakozáshoz az ismerős beolvashatja a QR-kódot, vagy használhatja az alkalmazásban található hivatkozást.
+ No comment provided by engineer.
+
+
+ To hide unwanted messages.
+ Kéretlen üzenetek elrejtése.
+ No comment provided by engineer.
+
+
+ To make a new connection
+ Új kapcsolat létrehozásához
+ No comment provided by engineer.
+
+
+ To protect privacy, instead of user IDs used by all other platforms, SimpleX has identifiers for message queues, separate for each of your contacts.
+ Az adatvédelem érdekében, a más csevegési platformokon megszokott felhasználói azonosítók helyett, a SimpleX üzenetsorokhoz rendel azonosítókat, minden egyes ismerőshöz egy különbözőt.
+ No comment provided by engineer.
+
+
+ To protect timezone, image/voice files use UTC.
+ Az időzóna védelme érdekében a kép-/hangfájlok UTC-t használnak.
+ No comment provided by engineer.
+
+
+ To protect your information, turn on SimpleX Lock.
+You will be prompted to complete authentication before this feature is enabled.
+ Az adatavédelem érdekében kapcsolja be a SimpleX zárolás funkciót.
+A funkció engedélyezése előtt a rendszer felszólítja a hitelesítés befejezésére.
+ No comment provided by engineer.
+
+
+ To record voice message please grant permission to use Microphone.
+ Hangüzenet rögzítéséhez adjon engedélyt a mikrofon használathoz.
+ No comment provided by engineer.
+
+
+ To reveal your hidden profile, enter a full password into a search field in **Your chat profiles** page.
+ Rejtett profilja feltárásához írja be a teljes jelszót a keresőmezőbe a **Csevegési profiljai** oldalon.
+ No comment provided by engineer.
+
+
+ To support instant push notifications the chat database has to be migrated.
+ Az azonnali push értesítések támogatásához a csevegési adatbázis migrálása szükséges.
+ No comment provided by engineer.
+
+
+ To verify end-to-end encryption with your contact compare (or scan) the code on your devices.
+ A végpontok közötti titkosítás ellenőrzéséhez ismerősével hasonlítsa össze (vagy szkennelje be) az eszközén lévő kódot.
+ No comment provided by engineer.
+
+
+ Toggle incognito when connecting.
+ Inkognító mód csatlakozáskor.
+ No comment provided by engineer.
+
+
+ Transport isolation
+ Kapcsolat izolációs mód
+ No comment provided by engineer.
+
+
+ Trying to connect to the server used to receive messages from this contact (error: %@).
+ Csatlakozási kísérlet a kapcsolat üzeneteinek fogadására használt kiszolgálóhoz (hiba: %@).
+ No comment provided by engineer.
+
+
+ Trying to connect to the server used to receive messages from this contact.
+ Csatlakozási kísérlet a kapcsolat üzeneteinek fogadására használt kiszolgálóhoz ettől az ismerőstől.
+ No comment provided by engineer.
+
+
+ Turkish interface
+ Török kezelőfelület
+ No comment provided by engineer.
+
+
+ Turn off
+ Kikapcsolás
+ No comment provided by engineer.
+
+
+ Turn on
+ Bekapcsolás
+ No comment provided by engineer.
+
+
+ Unable to record voice message
+ Hangüzenet rögzítése nem lehetséges
+ No comment provided by engineer.
+
+
+ Unblock
+ Feloldás
+ No comment provided by engineer.
+
+
+ Unblock for all
+ Letiltás feloldása mindenki számára
+ No comment provided by engineer.
+
+
+ Unblock member
+ Tag feloldása
+ No comment provided by engineer.
+
+
+ Unblock member for all?
+ Mindenki számára feloldja a tag letiltását?
+ No comment provided by engineer.
+
+
+ Unblock member?
+ Tag feloldása?
+ No comment provided by engineer.
+
+
+ Unexpected error: %@
+ Váratlan hiba: %@
+ item status description
+
+
+ Unexpected migration state
+ Váratlan migrációs állapot
+ No comment provided by engineer.
+
+
+ Unfav.
+ Nem kedvelt.
+ No comment provided by engineer.
+
+
+ Unhide
+ Felfedés
+ No comment provided by engineer.
+
+
+ Unhide chat profile
+ Csevegési profil felfedése
+ No comment provided by engineer.
+
+
+ Unhide profile
+ Profil felfedése
+ No comment provided by engineer.
+
+
+ Unit
+ Egység
+ No comment provided by engineer.
+
+
+ Unknown caller
+ Ismeretlen hívó
+ callkit banner
+
+
+ Unknown database error: %@
+ Ismeretlen adatbázishiba: %@
+ No comment provided by engineer.
+
+
+ Unknown error
+ Ismeretlen hiba
+ No comment provided by engineer.
+
+
+ Unless you use iOS call interface, enable Do Not Disturb mode to avoid interruptions.
+ Hacsak nem az iOS hívási felületét használja, engedélyezze a Ne zavarjanak módot a megszakítások elkerülése érdekében.
+ No comment provided by engineer.
+
+
+ Unless your contact deleted the connection or this link was already used, it might be a bug - please report it.
+To connect, please ask your contact to create another connection link and check that you have a stable network connection.
+ Hacsak az ismerős nem törölte a kapcsolatot, vagy ez a hivatkozás már használatban volt, hiba lehet – kérjük, jelentse.
+A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsolati hivatkozást, és ellenőrizze, hogy a hálózati kapcsolat stabil-e.
+ No comment provided by engineer.
+
+
+ Unlink
+ Szétkapcsolás
+ No comment provided by engineer.
+
+
+ Unlink desktop?
+ Számítógép szétkapcsolása?
+ No comment provided by engineer.
+
+
+ Unlock
+ Feloldás
+ No comment provided by engineer.
+
+
+ Unlock app
+ Alkalmazás feloldása
+ authentication reason
+
+
+ Unmute
+ Némítás feloldása
+ No comment provided by engineer.
+
+
+ Unread
+ Olvasatlan
+ No comment provided by engineer.
+
+
+ Up to 100 last messages are sent to new members.
+ Legfeljebb az utolsó 100 üzenet kerül elküldésre az új tagoknak.
+ No comment provided by engineer.
+
+
+ Update
+ Frissítés
+ No comment provided by engineer.
+
+
+ Update .onion hosts setting?
+ Tor .onion host beállítások frissítése?
+ No comment provided by engineer.
+
+
+ Update database passphrase
+ Adatbázis jelmondat megváltoztatása
+ No comment provided by engineer.
+
+
+ Update network settings?
+ Hálózati beállítások megváltoztatása?
+ No comment provided by engineer.
+
+
+ Update transport isolation mode?
+ Kapcsolat izolációs mód frissítése?
+ No comment provided by engineer.
+
+
+ Updating settings will re-connect the client to all servers.
+ A beállítások frissítése a szerverekhez újra kapcsolódással jár.
+ No comment provided by engineer.
+
+
+ Updating this setting will re-connect the client to all servers.
+ A beállítás frissítésével a kliens újracsatlakozik az összes kiszolgálóhoz.
+ No comment provided by engineer.
+
+
+ Upgrade and open chat
+ A csevegés frissítése és megnyitása
+ No comment provided by engineer.
+
+
+ Upload failed
+ No comment provided by engineer.
+
+
+ Upload file
+ Fájl feltöltése
+ server test step
+
+
+ Uploading archive
+ No comment provided by engineer.
+
+
+ Use .onion hosts
+ Tor .onion hostok használata
+ No comment provided by engineer.
+
+
+ Use SimpleX Chat servers?
+ SimpleX Chat kiszolgálók használata?
+ No comment provided by engineer.
+
+
+ Use chat
+ Csevegés használata
+ No comment provided by engineer.
+
+
+ Use current profile
+ Jelenlegi profil használata
+ No comment provided by engineer.
+
+
+ Use for new connections
+ Alkalmazás új kapcsolatokhoz
+ No comment provided by engineer.
+
+
+ Use from desktop
+ Használat számítógépről
+ No comment provided by engineer.
+
+
+ Use iOS call interface
+ Az iOS hívófelület használata
+ No comment provided by engineer.
+
+
+ Use new incognito profile
+ Az új inkognító profil használata
+ No comment provided by engineer.
+
+
+ Use only local notifications?
+ Csak helyi értesítések használata?
+ No comment provided by engineer.
+
+
+ Use server
+ Kiszolgáló használata
+ No comment provided by engineer.
+
+
+ Use the app while in the call.
+ No comment provided by engineer.
+
+
+ User profile
+ Felhasználói profil
+ No comment provided by engineer.
+
+
+ Using .onion hosts requires compatible VPN provider.
+ A .onion hosztok használatához kompatibilis VPN szolgáltatóra van szükség.
+ No comment provided by engineer.
+
+
+ Using SimpleX Chat servers.
+ SimpleX Chat kiszolgálók használatban.
+ No comment provided by engineer.
+
+
+ Verify code with desktop
+ Kód ellenőrzése a számítógépen
+ No comment provided by engineer.
+
+
+ Verify connection
+ Kapcsolat ellenőrzése
+ No comment provided by engineer.
+
+
+ Verify connection security
+ Kapcsolat biztonságának ellenőrzése
+ No comment provided by engineer.
+
+
+ Verify connections
+ Kapcsolatok ellenőrzése
+ No comment provided by engineer.
+
+
+ Verify database passphrase
+ No comment provided by engineer.
+
+
+ Verify passphrase
+ No comment provided by engineer.
+
+
+ Verify security code
+ Biztonsági kód ellenőrzése
+ No comment provided by engineer.
+
+
+ Via browser
+ Böngészőn keresztül
+ No comment provided by engineer.
+
+
+ Via secure quantum resistant protocol.
+ Biztonságos kvantum ellenálló protokoll által.
+ No comment provided by engineer.
+
+
+ Video call
+ Videóhívás
+ No comment provided by engineer.
+
+
+ Video will be received when your contact completes uploading it.
+ A videó akkor érkezik meg, amikor az ismerőse befejezte annak feltöltését.
+ 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 az ismerős elérhető, várjon, vagy ellenőrizze később!
+ No comment provided by engineer.
+
+
+ Videos and files up to 1gb
+ Videók és fájlok 1Gb méretig
+ No comment provided by engineer.
+
+
+ View security code
+ Biztonsági kód megtekintése
+ No comment provided by engineer.
+
+
+ Visible history
+ Látható előzmények
+ chat feature
+
+
+ Voice messages
+ Hangüzenetek
+ chat feature
+
+
+ Voice messages are prohibited in this chat.
+ A hangüzenetek le vannak tiltva ebben a csevegésben.
+ No comment provided by engineer.
+
+
+ Voice messages are prohibited in this group.
+ A hangüzenetek küldése le van tiltva ebben a csoportban.
+ No comment provided by engineer.
+
+
+ Voice messages prohibited!
+ A hangüzenetek le vannak tilva!
+ No comment provided by engineer.
+
+
+ Voice message…
+ Hangüzenet…
+ No comment provided by engineer.
+
+
+ Waiting for desktop...
+ Várakozás az asztali kliensre...
+ No comment provided by engineer.
+
+
+ Waiting for file
+ Fájlra várakozás
+ No comment provided by engineer.
+
+
+ Waiting for image
+ Képre várakozás
+ No comment provided by engineer.
+
+
+ Waiting for video
+ Videóra várakozás
+ No comment provided by engineer.
+
+
+ Warning: starting chat on multiple devices is not supported and will cause message delivery failures
+ No comment provided by engineer.
+
+
+ Warning: you may lose some data!
+ Figyelmeztetés: néhány adat elveszhet!
+ No comment provided by engineer.
+
+
+ WebRTC ICE servers
+ WebRTC ICE kiszolgálók
+ No comment provided by engineer.
+
+
+ Welcome %@!
+ Üdvözöllek %@!
+ No comment provided by engineer.
+
+
+ Welcome message
+ Üdvözlő üzenet
+ No comment provided by engineer.
+
+
+ Welcome message is too long
+ No comment provided by engineer.
+
+
+ What's new
+ Milyen újdonságok vannak
+ No comment provided by engineer.
+
+
+ When available
+ Amikor elérhető
+ No comment provided by engineer.
+
+
+ When people request to connect, you can accept or reject it.
+ Csatlakozási kérelmek esetében, elfogadhatja vagy elutasíthatja azokat.
+ No comment provided by engineer.
+
+
+ When you share an incognito profile with somebody, this profile will be used for the groups they invite you to.
+ Inkognitóprofil megosztása esetén a rendszer azt a profilt fogja használni azokhoz a csoportokhoz, amelyekbe meghívást kapott.
+ No comment provided by engineer.
+
+
+ With encrypted files and media.
+ Titkosított fájlokkal és médiatartalommal.
+ No comment provided by engineer.
+
+
+ With optional welcome message.
+ Opcionális üdvözlő üzenettel.
+ No comment provided by engineer.
+
+
+ With reduced battery usage.
+ Csökkentett akkumulátorhasználattal.
+ No comment provided by engineer.
+
+
+ Wrong database passphrase
+ Téves adatbázis jelmondat
+ No comment provided by engineer.
+
+
+ Wrong passphrase!
+ Téves jelmondat!
+ No comment provided by engineer.
+
+
+ XFTP servers
+ XFTP kiszolgálók
+ No comment provided by engineer.
+
+
+ You
+ Ön
+ No comment provided by engineer.
+
+
+ You **must not** use the same database on two devices.
+ No comment provided by engineer.
+
+
+ You accepted connection
+ Kapcsolódás elfogadva
+ No comment provided by engineer.
+
+
+ You allow
+ Engedélyezte
+ No comment provided by engineer.
+
+
+ You already have a chat profile with the same display name. Please choose another name.
+ Már van egy csevegési profil ugyanezzel a megjelenített névvel. Válasszon egy másik nevet.
+ No comment provided by engineer.
+
+
+ You are already connected to %@.
+ Már csatlakozva van ehhez: %@.
+ No comment provided by engineer.
+
+
+ You are already connecting to %@.
+ Már folyamatban van a csatlakozás ehhez: %@.
+ No comment provided by engineer.
+
+
+ You are already connecting via this one-time link!
+ Már csatlakozik ezen az egyszer használatos hivatkozáson keresztül!
+ No comment provided by engineer.
+
+
+ You are already in group %@.
+ Már a %@ csoportban van.
+ No comment provided by engineer.
+
+
+ You are already joining the group %@.
+ Már folyamatban van a csatlakozás a csoporthoz %@.
+ No comment provided by engineer.
+
+
+ You are already joining the group via this link!
+ Már csatlakozott a csoporthoz ezen a hivatkozáson keresztül!
+ No comment provided by engineer.
+
+
+ You are already joining the group via this link.
+ Ezen a hivatkozáson keresztül már csatlakozik a csoporthoz.
+ No comment provided by engineer.
+
+
+ You are already joining the group!
+Repeat join request?
+ Csatlakozás folyamatban!
+Csatlakozási kérés megismétlése?
+ No comment provided by engineer.
+
+
+ You are connected to the server used to receive messages from this contact.
+ Kiszolgálóhoz történő csatlakozás, mely az adott ismerőstől érkező üzenetek fogadására szolgál.
+ No comment provided by engineer.
+
+
+ You are invited to group
+ Meghívást kapott a csoportba
+ No comment provided by engineer.
+
+
+ You can accept calls from lock screen, without device and app authentication.
+ Hívásokat fogadhat a lezárási képernyőről, eszköz- és alkalmazáshitelesítés nélkül.
+ No comment provided by engineer.
+
+
+ You can create it later
+ Létrehozás később
+ No comment provided by engineer.
+
+
+ You can enable later via Settings
+ Később engedélyezheti a Beállításokban
+ No comment provided by engineer.
+
+
+ You can enable them later via app Privacy & Security settings.
+ Később engedélyezheti őket az alkalmazás Adatvédelem és biztonság menüpontban.
+ No comment provided by engineer.
+
+
+ You can give another try.
+ No comment provided by engineer.
+
+
+ You can hide or mute a user profile - swipe it to the right.
+ Elrejthet vagy némíthat egy felhasználói profilt – csúsztasson jobbra.
+ No comment provided by engineer.
+
+
+ You can make it visible to your SimpleX contacts via Settings.
+ Láthatóvá teheti SimpleX ismerősök számára a Beállításokban.
+ No comment provided by engineer.
+
+
+ You can now send messages to %@
+ Mostantól küldhet üzeneteket %@ számára
+ notification body
+
+
+ You can set lock screen notification preview via settings.
+ A beállításokon keresztül beállíthatja a lezárási képernyő értesítési előnézetét.
+ No comment provided by engineer.
+
+
+ You can share a link or a QR code - anybody will be able to join the group. You won't lose members of the group if you later delete it.
+ Megoszthat egy hivatkozást vagy QR-kódot - így bárki csatlakozhat a csoporthoz. Ha a csoport később törlésre kerül, akkor nem fogja elveszíteni annak tagjait.
+ No comment provided by engineer.
+
+
+ You can share this address with your contacts to let them connect with **%@**.
+ Megoszthatja ezt a hivatkozást ismerőseivel, hogy kapcsolatba léphessenek önnel a **%@** nevű profilján keresztül.
+ No comment provided by engineer.
+
+
+ You can share your address as a link or QR code - anybody can connect to you.
+ Megoszthatja azonosítóját hivatkozásként vagy QR-kódként – így bárki csatlakozhat önhöz.
+ No comment provided by engineer.
+
+
+ You can start chat via app Settings / Database or by restarting the app
+ A csevegést az alkalmazás Beállítások / Adatbázis menü segítségével vagy az alkalmazás újraindításával indíthatja el
+ No comment provided by engineer.
+
+
+ You can turn on SimpleX Lock via Settings.
+ A SimpleX zárolás a Beállításokon keresztül kapcsolható be.
+ No comment provided by engineer.
+
+
+ You can use markdown to format messages:
+ Üzenetek formázása a szövegbe szúrt speciális karakterekkel:
+ No comment provided by engineer.
+
+
+ You can view invitation link again in connection details.
+ A meghívó hivatkozást újra megtekintheti a kapcsolat részleteinél.
+ No comment provided by engineer.
+
+
+ You can't send messages!
+ Nem lehet üzeneteket küldeni!
+ No comment provided by engineer.
+
+
+ You control through which server(s) **to receive** the messages, your contacts – the servers you use to message them.
+ Ön szabályozhatja, hogy mely kiszogál(ók)ón keresztül **kapja** az üzeneteket, az ismerősöket - az üzenetküldéshez használt szervereken.
+ No comment provided by engineer.
+
+
+ You could not be verified; please try again.
+ Nem lehetett ellenőrizni; próbálja meg újra.
+ No comment provided by engineer.
+
+
+ You have already requested connection via this address!
+ Már kért egy csatlakozást ezen az azonosítón keresztül!
+ No comment provided by engineer.
+
+
+ You have already requested connection!
+Repeat connection request?
+ Már kérelmezte a csatlakozást!
+Kapcsolódási kérés megismétlése?
+ No comment provided by engineer.
+
+
+ You have no chats
+ Nincsenek csevegési üzenetek
+ No comment provided by engineer.
+
+
+ You have to enter passphrase every time the app starts - it is not stored on the device.
+ A jelmondatot minden alkalommal meg kell adnia, amikor az alkalmazás elindul - nem az eszközön kerül tárolásra.
+ No comment provided by engineer.
+
+
+ You invited a contact
+ Meghívott egy ismerőst
+ No comment provided by engineer.
+
+
+ You joined this group
+ Csatlakozott ehhez a csoporthoz
+ No comment provided by engineer.
+
+
+ You joined this group. Connecting to inviting group member.
+ Csatlakozott ehhez a csoporthoz. Kapcsolódás a meghívó csoporttaghoz.
+ No comment provided by engineer.
+
+
+ You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts.
+ A csevegési adatbázis legfrissebb verzióját CSAK egy eszközön kell használnia, ellenkező esetben előfordulhat, hogy az üzeneteket nem fogja megkapni valamennyi ismerőstől.
+ No comment provided by engineer.
+
+
+ You need to allow your contact to send voice messages to be able to send them.
+ Hangüzeneteket küldéséhez engedélyeznie kell azok küldését az ismerősök számára.
+ No comment provided by engineer.
+
+
+ You rejected group invitation
+ Csoport meghívó elutasítva
+ No comment provided by engineer.
+
+
+ You sent group invitation
+ Csoport meghívó elküldve
+ No comment provided by engineer.
+
+
+ You will be connected to group when the group host's device is online, please wait or check later!
+ Akkor tud csatlakozni a csoporthoz, amikor a csoport tulajdonosának eszköze online lesz, várjon, vagy ellenőrizze később!
+ No comment provided by engineer.
+
+
+ You will be connected when group link host's device is online, please wait or check later!
+ Akkor lesz csatlakoztatva, amikor a csoportos hivatkozás tulajdonosának eszköze online lesz, várjon, vagy ellenőrizze később!
+ No comment provided by engineer.
+
+
+ You will be connected when your connection request is accepted, please wait or check later!
+ Akkor lesz csatlakoztatva, ha a csatlakozási kérelme elfogadásra került, várjon, vagy ellenőrizze később!
+ No comment provided by engineer.
+
+
+ You will be connected when your contact's device is online, please wait or check later!
+ Akkor csatlakozik, amikor az ismerős eszköze online lesz, várjon, vagy ellenőrizze később!
+ No comment provided by engineer.
+
+
+ You will be required to authenticate when you start or resume the app after 30 seconds in background.
+ Az alkalmazás indításakor, vagy 30 másodpercnyi háttérben töltött idő után az alkalmazáshoz visszatérve hitelesítés szükséges.
+ No comment provided by engineer.
+
+
+ You will connect to all group members.
+ Csatlakozni fog a csoport összes tagjához.
+ No comment provided by engineer.
+
+
+ You will still receive calls and notifications from muted profiles when they are active.
+ Továbbra is kap hívásokat és értesítéseket a némított profiloktól, ha azok aktívak.
+ No comment provided by engineer.
+
+
+ You will stop receiving messages from this group. Chat history will be preserved.
+ Ettől a csoporttól nem fog értesítéseket kapni. A csevegési előzmények megmaradnak.
+ No comment provided by engineer.
+
+
+ You won't lose your contacts if you later delete your address.
+ Nem veszíti el ismerőseit, ha később törli az azonosítóját.
+ No comment provided by engineer.
+
+
+ You're trying to invite contact with whom you've shared an incognito profile to the group in which you're using your main profile
+ Egy olyan ismerőst próbál meghívni, akivel inkognító profilt osztott meg abban a csoportban, amelyben saját fő profilja van használatban
+ No comment provided by engineer.
+
+
+ You're using an incognito profile for this group - to prevent sharing your main profile inviting contacts is not allowed
+ Inkognító profilt használ ehhez a csoporthoz - fő profilja megosztásának elkerülése érdekében meghívók küldése tiltott
+ No comment provided by engineer.
+
+
+ Your %@ servers
+ %@ nevű profiljához tartozó kiszolgálók
+ No comment provided by engineer.
+
+
+ Your ICE servers
+ ICE kiszolgálók
+ No comment provided by engineer.
+
+
+ Your SMP servers
+ SMP kiszolgálók
+ No comment provided by engineer.
+
+
+ Your SimpleX address
+ SimpleX azonosítója
+ No comment provided by engineer.
+
+
+ Your XFTP servers
+ XFTP kiszolgálók
+ No comment provided by engineer.
+
+
+ Your calls
+ Hívások
+ No comment provided by engineer.
+
+
+ Your chat database
+ Csevegési adatbázisa
+ No comment provided by engineer.
+
+
+ Your chat database is not encrypted - set passphrase to encrypt it.
+ Csevegési adatbázisa nincs titkosítva – adjon meg egy jelmondatot a titkosításhoz.
+ No comment provided by engineer.
+
+
+ Your chat profiles
+ Csevegési profiljai
+ No comment provided by engineer.
+
+
+ Your contact needs to be online for the connection to complete.
+You can cancel this connection and remove the contact (and try later with a new link).
+ Az ismerősnek online kell lennie ahhoz, hogy a kapcsolat létrejöjjön.
+Megszakíthatja ezt a kapcsolatfelvételt és törölheti az ismerőst (ezt később ismét megpróbálhatja egy új hivatkozással).
+ No comment provided by engineer.
+
+
+ Your contact sent a file that is larger than currently supported maximum size (%@).
+ Ismerőse olyan fájlt küldött, amely meghaladja a jelenleg támogatott maximális méretet (%@).
+ No comment provided by engineer.
+
+
+ Your contacts can allow full message deletion.
+ Ismerősök engedélyezhetik a teljes üzenet törlést.
+ No comment provided by engineer.
+
+
+ Your contacts will remain connected.
+ Az ismerősök továbbra is csatlakoztatva maradnak.
+ No comment provided by engineer.
+
+
+ Your current chat database will be DELETED and REPLACED with the imported one.
+ A jelenlegi csevegési adatbázis TÖRLŐDNI FOG, és a HELYÉRE az importált adatbázis kerül.
+ No comment provided by engineer.
+
+
+ Your current profile
+ Jelenlegi profil
+ No comment provided by engineer.
+
+
+ Your preferences
+ Beállítások
+ No comment provided by engineer.
+
+
+ Your privacy
+ Adatvédelem
+ No comment provided by engineer.
+
+
+ Your profile
+ Profil
+ No comment provided by engineer.
+
+
+ Your profile **%@** will be shared.
+ **%@** nevű profilja megosztásra kerül.
+ No comment provided by engineer.
+
+
+ Your profile is stored on your device and shared only with your contacts.
+SimpleX servers cannot see your profile.
+ Profilja az eszközön van tárolva, és csak az ismerősökkel kerül megosztásra.
+A SimpleX kiszolgálók nem látjhatják profilját.
+ No comment provided by engineer.
+
+
+ Your profile, contacts and delivered messages are stored on your device.
+ Profilja, ismerősök és az elküldött üzenetek az eszközön kerülnek tárolásra.
+ No comment provided by engineer.
+
+
+ Your random profile
+ Véletlenszerű profil
+ No comment provided by engineer.
+
+
+ Your server
+ Saját kiszolgáló
+ No comment provided by engineer.
+
+
+ Your server address
+ Saját kiszolgáló cím
+ No comment provided by engineer.
+
+
+ Your settings
+ Beállítások
+ No comment provided by engineer.
+
+
+ [Contribute](https://github.com/simplex-chat/simplex-chat#contribute)
+ [Hozzájárulás](https://github.com/simplex-chat/simplex-chat#contribute)
+ No comment provided by engineer.
+
+
+ [Send us email](mailto:chat@simplex.chat)
+ [Küldjön nekünk e-mailt](mailto:chat@simplex.chat)
+ No comment provided by engineer.
+
+
+ [Star on GitHub](https://github.com/simplex-chat/simplex-chat)
+ [Csillag a GitHubon](https://github.com/simplex-chat/simplex-chat)
+ No comment provided by engineer.
+
+
+ \_italic_
+ \_dőlt_
+ No comment provided by engineer.
+
+
+ \`a + b`
+ a + b
+ No comment provided by engineer.
+
+
+ above, then choose:
+ fent, majd válassza ki:
+ No comment provided by engineer.
+
+
+ accepted call
+ elfogadott hívás
+ call status
+
+
+ admin
+ admin
+ member role
+
+
+ agreeing encryption for %@…
+ titkosítás jóváhagyása %@ számára…
+ chat item text
+
+
+ agreeing encryption…
+ titkosítás elfogadása…
+ chat item text
+
+
+ always
+ mindig
+ pref value
+
+
+ and %lld other events
+ és %lld egyéb esemény
+ No comment provided by engineer.
+
+
+ audio call (not e2e encrypted)
+ hanghívás (nem e2e titkosított)
+ No comment provided by engineer.
+
+
+ author
+ szerző
+ member role
+
+
+ bad message ID
+ téves üzenet ID
+ integrity error chat item
+
+
+ bad message hash
+ téves üzenet hash
+ integrity error chat item
+
+
+ blocked
+ blokkolva
+ marked deleted chat item preview text
+
+
+ blocked %@
+ %@ letiltva
+ rcv group event chat item
+
+
+ blocked by admin
+ letiltva az admin által
+ marked deleted chat item preview text
+
+
+ bold
+ félkövér
+ No comment provided by engineer.
+
+
+ call error
+ hiba a hívásban
+ call status
+
+
+ call in progress
+ hívás folyamatban
+ call status
+
+
+ calling…
+ hívás…
+ call status
+
+
+ cancelled %@
+ %@ törölve
+ feature offered item
+
+
+ changed address for you
+ Cím megváltoztatva
+ chat item text
+
+
+ changed role of %1$@ to %2$@
+ %1$@ szerepköre megváltozott erre: %2$@
+ rcv group event chat item
+
+
+ changed your role to %@
+ megváltoztatta a szerepkörét erre: %@
+ rcv group event chat item
+
+
+ changing address for %@…
+ cím módosítása %@ számára…
+ chat item text
+
+
+ changing address…
+ azonosító megváltoztatása…
+ chat item text
+
+
+ colored
+ színes
+ No comment provided by engineer.
+
+
+ complete
+ befejezett
+ No comment provided by engineer.
+
+
+ connect to SimpleX Chat developers.
+ Csatlakozás a SimpleX Chat fejlesztőkhöz.
+ No comment provided by engineer.
+
+
+ connected
+ kapcsolódva
+ No comment provided by engineer.
+
+
+ connected directly
+ közvetlenül kapcsolódva
+ rcv group event chat item
+
+
+ connecting
+ kapcsolódás
+ No comment provided by engineer.
+
+
+ connecting (accepted)
+ kapcsolódás (elfogadva)
+ No comment provided by engineer.
+
+
+ connecting (announced)
+ kapcsolódás (bejelentve)
+ No comment provided by engineer.
+
+
+ connecting (introduced)
+ kapcsolódás (bejelentve)
+ No comment provided by engineer.
+
+
+ connecting (introduction invitation)
+ csatlakozás (bemutatkozás meghívás)
+ No comment provided by engineer.
+
+
+ connecting call…
+ hívás kapcsolódik…
+ call status
+
+
+ connecting…
+ kapcsolódás…
+ chat list item title
+
+
+ connection established
+ Kapcsolat létrehozva
+ chat list item title (it should not be shown
+
+
+ connection:%@
+ kapcsolat: %@
+ connection information
+
+
+ contact %1$@ changed to %2$@
+ %1$@ ismerősének neve megváltozott erre: %2$@
+ profile update event chat item
+
+
+ contact has e2e encryption
+ az ismerősnél az e2e titkosítás elérhető
+ No comment provided by engineer.
+
+
+ contact has no e2e encryption
+ az ismerősnél az e2e titkosítás nem elérhető
+ No comment provided by engineer.
+
+
+ creator
+ szerző
+ No comment provided by engineer.
+
+
+ custom
+ egyedi
+ dropdown time picker choice
+
+
+ database version is newer than the app, but no down migration for: %@
+ az adatbázis verziója újabb, mint az alkalmazásé, de nincs visszafelé migráció: %@
+ No comment provided by engineer.
+
+
+ days
+ nap
+ time unit
+
+
+ default (%@)
+ alapértelmezett (%@)
+ pref value
+
+
+ default (no)
+ alapértelmezett (nem)
+ No comment provided by engineer.
+
+
+ default (yes)
+ alapértelmezett (igen)
+ No comment provided by engineer.
+
+
+ deleted
+ törölve
+ deleted chat item
+
+
+ deleted contact
+ törölt ismerős
+ rcv direct event chat item
+
+
+ deleted group
+ törölt csoport
+ rcv group event chat item
+
+
+ different migration in the app/database: %@ / %@
+ különböző migrációk az alkalmazásban/adatbázisban: %@ / %@
+ No comment provided by engineer.
+
+
+ direct
+ közvetlen
+ connection level description
+
+
+ disabled
+ letiltva
+ No comment provided by engineer.
+
+
+ duplicate message
+ duplikálódott üzenet
+ integrity error chat item
+
+
+ e2e encrypted
+ e2e titkosított
+ No comment provided by engineer.
+
+
+ enabled
+ engedélyezve
+ enabled status
+
+
+ enabled for contact
+ engedélyezve ismerős részére
+ enabled status
+
+
+ enabled for you
+ engedélyezve az ön számára
+ enabled status
+
+
+ encryption agreed
+ titkosítás egyeztetve
+ chat item text
+
+
+ encryption agreed for %@
+ titkosítás elfogadva %@ számára
+ chat item text
+
+
+ encryption ok
+ titkosítás rendben
+ chat item text
+
+
+ encryption ok for %@
+ titkosítás rendben vele: %@
+ chat item text
+
+
+ encryption re-negotiation allowed
+ titkosítás újraegyeztetés engedélyezve
+ chat item text
+
+
+ encryption re-negotiation allowed for %@
+ titkosítás újraegyeztetés engedélyezve vele: %@
+ chat item text
+
+
+ encryption re-negotiation required
+ titkosítás újraegyeztetés szükséges
+ chat item text
+
+
+ encryption re-negotiation required for %@
+ titkosítás újraegyeztetés szükséges %@ számára
+ chat item text
+
+
+ ended
+ befejeződött
+ No comment provided by engineer.
+
+
+ ended call %@
+ %@ hívása befejeződött
+ call status
+
+
+ error
+ hiba
+ No comment provided by engineer.
+
+
+ event happened
+ esemény történt
+ No comment provided by engineer.
+
+
+ group deleted
+ a csoport törölve
+ No comment provided by engineer.
+
+
+ group profile updated
+ csoport profil frissítve
+ snd group event chat item
+
+
+ hours
+ óra
+ time unit
+
+
+ iOS Keychain is used to securely store passphrase - it allows receiving push notifications.
+ Az iOS kulcstár a jelmondat biztonságos tárolására szolgál - lehetővé teszi a push-értesítések fogadását.
+ No comment provided by engineer.
+
+
+ iOS Keychain will be used to securely store passphrase after you restart the app or change passphrase - it will allow receiving push notifications.
+ Az iOS kulcstár az alkalmazás újraindítása, vagy a jelmondat módosítása után a jelmondat biztonságos tárolására szolgál - lehetővé teszi a push-értesítések fogadását.
+ No comment provided by engineer.
+
+
+ incognito via contact address link
+ inkognitó a kapcsolattartási hivatkozáson keresztül
+ chat list item description
+
+
+ incognito via group link
+ inkognitó a csoportos hivatkozáson keresztül
+ chat list item description
+
+
+ incognito via one-time link
+ inkognitó egyszer használatos hivatkozáson keresztül
+ chat list item description
+
+
+ indirect (%d)
+ közvetett (%d)
+ connection level description
+
+
+ invalid chat
+ érvénytelen csevegés
+ invalid chat data
+
+
+ invalid chat data
+ érvénytelen csevegés adat
+ No comment provided by engineer.
+
+
+ invalid data
+ érvénytelen adat
+ invalid chat item
+
+
+ invitation to group %@
+ meghívás a(z) %@ csoportba
+ group name
+
+
+ invited
+ meghívott
+ No comment provided by engineer.
+
+
+ invited %@
+ %@ meghívott
+ rcv group event chat item
+
+
+ invited to connect
+ meghívott, hogy csatlakozzon
+ chat list item title
+
+
+ invited via your group link
+ meghívott a csoport hivatkozásán keresztül
+ rcv group event chat item
+
+
+ italic
+ dőlt
+ No comment provided by engineer.
+
+
+ join as %@
+ csatlakozás mint %@
+ No comment provided by engineer.
+
+
+ left
+ elhagyta
+ rcv group event chat item
+
+
+ marked deleted
+ töröltnek jelölve
+ marked deleted chat item preview text
+
+
+ member
+ tag
+ member role
+
+
+ member %1$@ changed to %2$@
+ %1$@ tag megváltoztatta a nevét erre: %2$@
+ profile update event chat item
+
+
+ connected
+ kapcsolódva
+ rcv group event chat item
+
+
+ message received
+ üzenet érkezett
+ notification
+
+
+ minutes
+ perc
+ time unit
+
+
+ missed call
+ nem fogadott hívás
+ call status
+
+
+ moderated
+ moderált
+ moderated chat item
+
+
+ moderated by %@
+ %@ által moderálva
+ marked deleted chat item preview text
+
+
+ months
+ hónap
+ time unit
+
+
+ never
+ soha
+ No comment provided by engineer.
+
+
+ new message
+ új üzenet
+ notification
+
+
+ no
+ nem
+ pref value
+
+
+ no e2e encryption
+ nincs e2e titkosítás
+ No comment provided by engineer.
+
+
+ no text
+ nincs szöveg
+ copied message info in history
+
+
+ observer
+ megfigyelő
+ member role
+
+
+ off
+ ki
+ enabled status
+ group pref value
+ time to disappear
+
+
+ offered %@
+ %@ ajánlotta
+ feature offered item
+
+
+ offered %1$@: %2$@
+ ajánlotta %1$@: %2$@-kor
+ feature offered item
+
+
+ on
+ be
+ group pref value
+
+
+ owner
+ tulajdonos
+ member role
+
+
+ peer-to-peer
+ ponttól-pontig
+ No comment provided by engineer.
+
+
+ quantum resistant e2e encryption
+ chat item text
+
+
+ received answer…
+ fogadott válasz…
+ No comment provided by engineer.
+
+
+ received confirmation…
+ visszaigazolás fogadása…
+ No comment provided by engineer.
+
+
+ rejected call
+ elutasított hívás
+ call status
+
+
+ removed
+ eltávolítva
+ No comment provided by engineer.
+
+
+ removed %@
+ %@ eltávolítva
+ rcv group event chat item
+
+
+ removed contact address
+ törölt csatlakozási cím
+ profile update event chat item
+
+
+ removed profile picture
+ törölt profilkép
+ profile update event chat item
+
+
+ removed you
+ eltávolítottak
+ rcv group event chat item
+
+
+ sec
+ mp
+ network option
+
+
+ seconds
+ másodperc
+ time unit
+
+
+ secret
+ titok
+ No comment provided by engineer.
+
+
+ security code changed
+ biztonsági kód megváltozott
+ chat item text
+
+
+ send direct message
+ közvetlen üzenet küldése
+ No comment provided by engineer.
+
+
+ set new contact address
+ új kapcsolattartási cím beállítása
+ profile update event chat item
+
+
+ set new profile picture
+ új profilkép beállítása
+ profile update event chat item
+
+
+ standard end-to-end encryption
+ chat item text
+
+
+ starting…
+ indítás…
+ No comment provided by engineer.
+
+
+ strike
+ áthúzott
+ No comment provided by engineer.
+
+
+ this contact
+ ez az ismerős
+ notification title
+
+
+ unblocked %@
+ %@ feloldva
+ rcv group event chat item
+
+
+ unknown
+ ismeretlen
+ connection info
+
+
+ unknown status
+ ismeretlen státusz
+ No comment provided by engineer.
+
+
+ updated group profile
+ módosított csoport profil
+ rcv group event chat item
+
+
+ updated profile
+ frissített profil
+ profile update event chat item
+
+
+ v%@
+ v%@
+ No comment provided by engineer.
+
+
+ v%@ (%@)
+ v%@ (%@)
+ No comment provided by engineer.
+
+
+ via contact address link
+ ismerős azonosítójának hivatkozásán keresztül
+ chat list item description
+
+
+ via group link
+ csoport hivatkozáson keresztül
+ chat list item description
+
+
+ via one-time link
+ egyszer használatos hivatkozáson keresztül
+ chat list item description
+
+
+ via relay
+ átjátszón keresztül
+ No comment provided by engineer.
+
+
+ video call (not e2e encrypted)
+ videóhívás (nem e2e titkosított)
+ No comment provided by engineer.
+
+
+ waiting for answer…
+ várakozás válaszra…
+ No comment provided by engineer.
+
+
+ waiting for confirmation…
+ várakozás a visszaigazolásra…
+ No comment provided by engineer.
+
+
+ wants to connect to you!
+ kapcsolatba akar lépni önnel!
+ No comment provided by engineer.
+
+
+ weeks
+ hét
+ time unit
+
+
+ yes
+ igen
+ pref value
+
+
+ you are invited to group
+ meghívást kapott a csoportba
+ No comment provided by engineer.
+
+
+ you are observer
+ megfigyelő szerep
+ No comment provided by engineer.
+
+
+ you blocked %@
+ blokkolta őt: %@
+ snd group event chat item
+
+
+ you changed address
+ azonosítója megváltoztatva
+ chat item text
+
+
+ you changed address for %@
+ %@ azonosítója megváltoztatva
+ chat item text
+
+
+ you changed role for yourself to %@
+ saját szerepkör megváltoztatva erre: %@
+ snd group event chat item
+
+
+ you changed role of %1$@ to %2$@
+ megváltoztatta %1$@ szerepkörét erre: %@
+ snd group event chat item
+
+
+ you left
+ elhagyta
+ snd group event chat item
+
+
+ you removed %@
+ eltávolította őt: %@
+ snd group event chat item
+
+
+ you shared one-time link
+ egyszer használatos hivatkozást osztott meg
+ chat list item description
+
+
+ you shared one-time link incognito
+ egyszer használatos hivatkozást osztott meg inkognitóban
+ chat list item description
+
+
+ you unblocked %@
+ feloldotta %@ blokkolását
+ snd group event chat item
+
+
+ you:
+ ön:
+ No comment provided by engineer.
+
+
+ \~strike~
+ \~áthúzott~
+ No comment provided by engineer.
+
+
+
+
+
+
+
+ SimpleX
+ SimpleX
+ Bundle name
+
+
+ SimpleX needs camera access to scan QR codes to connect to other users and for video calls.
+ A SimpleX-nek kamera-hozzáférésre van szüksége a QR-kódok beolvasásához, hogy csatlakozhasson más felhasználókhoz és videohívásokhoz.
+ Privacy - Camera Usage Description
+
+
+ SimpleX uses Face ID for local authentication
+ A SimpleX Face ID-t használ a helyi hitelesítéshez
+ Privacy - Face ID Usage Description
+
+
+ SimpleX uses local network access to allow using user chat profile via desktop app on the same network.
+ A SimpleX helyi hálózati hozzáférést használ, hogy lehetővé tegye a felhasználói csevegőprofil használatát számítógépen keresztül ugyanazon a hálózaton.
+ Privacy - Local Network Usage Description
+
+
+ SimpleX needs microphone access for audio and video calls, and to record voice messages.
+ A SimpleX-nek mikrofon-hozzáférésre van szüksége hang- és videohívásokhoz, valamint hangüzenetek rögzítéséhez.
+ Privacy - Microphone Usage Description
+
+
+ SimpleX needs access to Photo Library for saving captured and received media
+ A SimpleX-nek hozzáférésre van szüksége a Galériához a rögzített és fogadott média mentéséhez
+ Privacy - Photo Library Additions Usage Description
+
+
+
+
+
+
+
+ SimpleX NSE
+ SimpleX NSE
+ Bundle display name
+
+
+ SimpleX NSE
+ SimpleX NSE
+ Bundle name
+
+
+ Copyright © 2022 SimpleX Chat. All rights reserved.
+ Copyright © 2022 SimpleX Chat. Minden jog fenntartva.
+ Copyright (human-readable)
+
+
+
+
diff --git a/apps/ios/SimpleX Localizations/hu.xcloc/Source Contents/Shared/Assets.xcassets/AccentColor.colorset/Contents.json b/apps/ios/SimpleX Localizations/hu.xcloc/Source Contents/Shared/Assets.xcassets/AccentColor.colorset/Contents.json
new file mode 100644
index 0000000000..aaa7f79bc8
--- /dev/null
+++ b/apps/ios/SimpleX Localizations/hu.xcloc/Source Contents/Shared/Assets.xcassets/AccentColor.colorset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "colors" : [
+ {
+ "color" : {
+ "color-space" : "srgb",
+ "components" : {
+ "red" : "0.000",
+ "alpha" : "1.000",
+ "blue" : "1.000",
+ "green" : "0.533"
+ }
+ },
+ "idiom" : "universal"
+ }
+ ],
+ "properties" : {
+ "localizable" : true
+ },
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/apps/ios/SimpleX Localizations/hu.xcloc/Source Contents/Shared/Assets.xcassets/Contents.json b/apps/ios/SimpleX Localizations/hu.xcloc/Source Contents/Shared/Assets.xcassets/Contents.json
new file mode 100644
index 0000000000..73c00596a7
--- /dev/null
+++ b/apps/ios/SimpleX Localizations/hu.xcloc/Source Contents/Shared/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/apps/ios/SimpleX Localizations/hu.xcloc/Source Contents/SimpleX NSE/en.lproj/InfoPlist.strings b/apps/ios/SimpleX Localizations/hu.xcloc/Source Contents/SimpleX NSE/en.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..124ddbcc33
--- /dev/null
+++ b/apps/ios/SimpleX Localizations/hu.xcloc/Source Contents/SimpleX NSE/en.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "SimpleX NSE";
+/* Bundle name */
+"CFBundleName" = "SimpleX NSE";
+/* Copyright (human-readable) */
+"NSHumanReadableCopyright" = "Copyright © 2022 SimpleX Chat. All rights reserved.";
diff --git a/apps/ios/SimpleX Localizations/hu.xcloc/Source Contents/en.lproj/Localizable.strings b/apps/ios/SimpleX Localizations/hu.xcloc/Source Contents/en.lproj/Localizable.strings
new file mode 100644
index 0000000000..cf485752ea
--- /dev/null
+++ b/apps/ios/SimpleX Localizations/hu.xcloc/Source Contents/en.lproj/Localizable.strings
@@ -0,0 +1,30 @@
+/* No comment provided by engineer. */
+"_italic_" = "\\_italic_";
+
+/* No comment provided by engineer. */
+"**Add new contact**: to create your one-time QR Code for your contact." = "**Add new contact**: to create your one-time QR Code or link for your contact.";
+
+/* No comment provided by engineer. */
+"*bold*" = "\\*bold*";
+
+/* No comment provided by engineer. */
+"`a + b`" = "\\`a + b`";
+
+/* No comment provided by engineer. */
+"~strike~" = "\\~strike~";
+
+/* call status */
+"connecting call" = "connecting call…";
+
+/* No comment provided by engineer. */
+"Connecting server…" = "Connecting to server…";
+
+/* No comment provided by engineer. */
+"Connecting server… (error: %@)" = "Connecting to server… (error: %@)";
+
+/* rcv group event chat item */
+"member connected" = "connected";
+
+/* No comment provided by engineer. */
+"No group!" = "Group not found!";
+
diff --git a/apps/ios/SimpleX Localizations/hu.xcloc/Source Contents/en.lproj/SimpleX--iOS--InfoPlist.strings b/apps/ios/SimpleX Localizations/hu.xcloc/Source Contents/en.lproj/SimpleX--iOS--InfoPlist.strings
new file mode 100644
index 0000000000..d34eb67fc7
--- /dev/null
+++ b/apps/ios/SimpleX Localizations/hu.xcloc/Source Contents/en.lproj/SimpleX--iOS--InfoPlist.strings
@@ -0,0 +1,12 @@
+/* Bundle name */
+"CFBundleName" = "SimpleX";
+/* Privacy - Camera Usage Description */
+"NSCameraUsageDescription" = "SimpleX needs camera access to scan QR codes to connect to other users and for video calls.";
+/* Privacy - Face ID Usage Description */
+"NSFaceIDUsageDescription" = "SimpleX uses Face ID for local authentication";
+/* Privacy - Local Network Usage Description */
+"NSLocalNetworkUsageDescription" = "SimpleX uses local network access to allow using user chat profile via desktop app on the same network.";
+/* Privacy - Microphone Usage Description */
+"NSMicrophoneUsageDescription" = "SimpleX needs microphone access for audio and video calls, and to record voice messages.";
+/* Privacy - Photo Library Additions Usage Description */
+"NSPhotoLibraryAddUsageDescription" = "SimpleX needs access to Photo Library for saving captured and received media";
diff --git a/apps/ios/SimpleX Localizations/hu.xcloc/contents.json b/apps/ios/SimpleX Localizations/hu.xcloc/contents.json
new file mode 100644
index 0000000000..bc788c3c10
--- /dev/null
+++ b/apps/ios/SimpleX Localizations/hu.xcloc/contents.json
@@ -0,0 +1,12 @@
+{
+ "developmentRegion" : "en",
+ "project" : "SimpleX.xcodeproj",
+ "targetLocale" : "hu",
+ "toolInfo" : {
+ "toolBuildNumber" : "15A240d",
+ "toolID" : "com.apple.dt.xcode",
+ "toolName" : "Xcode",
+ "toolVersion" : "15.0"
+ },
+ "version" : "1.0"
+}
\ No newline at end of file
diff --git a/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff b/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff
index eff9291b3a..4fe1a8da8e 100644
--- a/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff
+++ b/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff
@@ -107,6 +107,11 @@
%@ si è connesso/a
No comment provided by engineer.
+
+ %@ downloaded
+ %@ scaricati
+ No comment provided by engineer.
+
%@ is connected!
%@ è connesso/a!
@@ -127,6 +132,11 @@
Server %@
No comment provided by engineer.
+
+ %@ uploaded
+ %@ caricati
+ No comment provided by engineer.
+
%@ wants to connect!
%@ si vuole connettere!
@@ -342,6 +352,11 @@
**Il più privato**: non usare il server di notifica di SimpleX Chat, controlla i messaggi periodicamente in secondo piano (dipende da quanto spesso usi l'app).
No comment provided by engineer.
+
+ **Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.
+ **Nota bene**: usare lo stesso database su due dispositivi bloccherà la decifrazione dei messaggi dalle tue connessioni, come misura di sicurezza.
+ No comment provided by engineer.
+
**Please note**: you will NOT be able to recover or change passphrase if you lose it.
**Nota bene**: NON potrai recuperare o cambiare la password se la perdi.
@@ -357,6 +372,11 @@
**Attenzione**: le notifiche push istantanee richiedono una password salvata nel portachiavi.
No comment provided by engineer.
+
+ **Warning**: the archive will be removed.
+ **Attenzione**: l'archivio verrà rimosso.
+ No comment provided by engineer.
+
**e2e encrypted** audio call
Chiamata **crittografata e2e**
@@ -613,6 +633,11 @@
Il cambio di indirizzo verrà interrotto. Verrà usato il vecchio indirizzo di ricezione.
No comment provided by engineer.
+
+ Admins can block a member for all.
+ Gli amministratori possono bloccare un membro per tutti.
+ No comment provided by engineer.
+
Admins can create the links to join groups.
Gli amministratori possono creare i link per entrare nei gruppi.
@@ -668,6 +693,11 @@
Tutti i tuoi contatti resteranno connessi. L'aggiornamento del profilo verrà inviato ai tuoi contatti.
No comment provided by engineer.
+
+ All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.
+ Tutti i tuoi contatti, le conversazioni e i file verranno criptati in modo sicuro e caricati in blocchi sui relay XFTP configurati.
+ No comment provided by engineer.
+
Allow
Consenti
@@ -793,6 +823,11 @@
Build dell'app: %@
No comment provided by engineer.
+
+ App data migration
+ Migrazione dati dell'app
+ No comment provided by engineer.
+
App encrypts new local files (except videos).
L'app cripta i nuovi file locali (eccetto i video).
@@ -828,6 +863,21 @@
Aspetto
No comment provided by engineer.
+
+ Apply
+ Applica
+ No comment provided by engineer.
+
+
+ Archive and upload
+ Archivia e carica
+ No comment provided by engineer.
+
+
+ Archiving database
+ Archiviazione del database
+ No comment provided by engineer.
+
Attach
Allega
@@ -1018,6 +1068,11 @@
Annulla
No comment provided by engineer.
+
+ Cancel migration
+ Annulla migrazione
+ No comment provided by engineer.
+
Cannot access keychain to save database password
Impossibile accedere al portachiavi per salvare la password del database
@@ -1119,6 +1174,11 @@
La chat è ferma. Se hai già usato questo database su un altro dispositivo, dovresti trasferirlo prima di avviare la chat.
No comment provided by engineer.
+
+ Chat migrated!
+ Chat migrata!
+ No comment provided by engineer.
+
Chat preferences
Preferenze della chat
@@ -1139,6 +1199,11 @@
Interfaccia cinese e spagnola
No comment provided by engineer.
+
+ Choose _Migrate from another device_ on the new device and scan QR code.
+ Scegli _Migra da un altro dispositivo_ sul nuovo dispositivo e scansione il codice QR.
+ No comment provided by engineer.
+
Choose file
Scegli file
@@ -1209,6 +1274,11 @@
Conferma aggiornamenti database
No comment provided by engineer.
+
+ Confirm network settings
+ Conferma le impostazioni di rete
+ No comment provided by engineer.
+
Confirm new passphrase…
Conferma nuova password…
@@ -1219,6 +1289,16 @@
Conferma password
No comment provided by engineer.
+
+ Confirm that you remember database passphrase to migrate it.
+ Conferma che ricordi la password del database da migrare.
+ No comment provided by engineer.
+
+
+ Confirm upload
+ Conferma caricamento
+ No comment provided by engineer.
+
Connect
Connetti
@@ -1478,6 +1558,11 @@ Questo è il tuo link una tantum!
Creato il %@
No comment provided by engineer.
+
+ Creating archive link
+ Creazione link dell'archivio
+ No comment provided by engineer.
+
Creating link…
Creazione link…
@@ -1698,6 +1783,11 @@ Non è reversibile!
Elimina database
No comment provided by engineer.
+
+ Delete database from this device
+ Elimina il database da questo dispositivo
+ No comment provided by engineer.
+
Delete file
Elimina file
@@ -1988,11 +2078,26 @@ Non è reversibile!
Esegui downgrade e apri chat
No comment provided by engineer.
+
+ Download failed
+ Scaricamento fallito
+ No comment provided by engineer.
+
Download file
Scarica file
server test step
+
+ Downloading archive
+ Scaricamento archivio
+ No comment provided by engineer.
+
+
+ Downloading link details
+ Scaricamento dettagli del link
+ No comment provided by engineer.
+
Duplicate display name!
Nome da mostrare doppio!
@@ -2048,6 +2153,11 @@ Non è reversibile!
Attiva per tutti
No comment provided by engineer.
+
+ Enable in direct chats (BETA)!
+ Attivala nelle chat dirette (BETA)!
+ No comment provided by engineer.
+
Enable instant notifications?
Attivare le notifiche istantanee?
@@ -2163,6 +2273,11 @@ Non è reversibile!
Inserisci il nome del gruppo…
No comment provided by engineer.
+
+ Enter passphrase
+ Inserisci password
+ No comment provided by engineer.
+
Enter passphrase…
Inserisci la password…
@@ -2223,6 +2338,11 @@ Non è reversibile!
Errore di aggiunta membro/i
No comment provided by engineer.
+
+ Error allowing contact PQ encryption
+ Errore nel consentire la crittografia PQ al contatto
+ No comment provided by engineer.
+
Error changing address
Errore nella modifica dell'indirizzo
@@ -2313,6 +2433,11 @@ Non è reversibile!
Errore nell'eliminazione del profilo utente
No comment provided by engineer.
+
+ Error downloading the archive
+ Errore di scaricamento dell'archivio
+ No comment provided by engineer.
+
Error enabling delivery receipts!
Errore nell'attivazione delle ricevute di consegna!
@@ -2388,6 +2513,11 @@ Non è reversibile!
Errore nel salvataggio della password nel portachiavi
No comment provided by engineer.
+
+ Error saving settings
+ Errore di salvataggio delle impostazioni
+ when migrating
+
Error saving user password
Errore nel salvataggio della password utente
@@ -2458,6 +2588,16 @@ Non è reversibile!
Errore nell'aggiornamento della privacy dell'utente
No comment provided by engineer.
+
+ Error uploading the archive
+ Errore di invio dell'archivio
+ No comment provided by engineer.
+
+
+ Error verifying passphrase:
+ Errore di verifica della password:
+ No comment provided by engineer.
+
Error:
Errore:
@@ -2508,6 +2648,11 @@ Non è reversibile!
Archivio database esportato.
No comment provided by engineer.
+
+ Exported file doesn't exist
+ Il file esportato non esiste
+ No comment provided by engineer.
+
Exporting database archive…
Esportazione archivio database…
@@ -2578,6 +2723,16 @@ Non è reversibile!
Filtra le chat non lette e preferite.
No comment provided by engineer.
+
+ Finalize migration
+ Finalizza la migrazione
+ No comment provided by engineer.
+
+
+ Finalize migration on another device.
+ Finalizza la migrazione su un altro dispositivo.
+ No comment provided by engineer.
+
Finally, we have them! 🚀
Finalmente le abbiamo! 🚀
@@ -2868,6 +3023,11 @@ Non è reversibile!
Come usare i tuoi server
No comment provided by engineer.
+
+ Hungarian interface
+ Interfaccia in ungherese
+ No comment provided by engineer.
+
ICE servers (one per line)
Server ICE (uno per riga)
@@ -2933,6 +3093,16 @@ Non è reversibile!
Importa database
No comment provided by engineer.
+
+ Import failed
+ Importazione fallita
+ No comment provided by engineer.
+
+
+ Importing archive
+ Importazione archivio
+ No comment provided by engineer.
+
Improved message delivery
Consegna dei messaggi migliorata
@@ -2948,6 +3118,11 @@ Non è reversibile!
Configurazione del server migliorata
No comment provided by engineer.
+
+ In order to continue, chat should be stopped.
+ Per continuare, la chat deve essere fermata.
+ No comment provided by engineer.
+
In reply to
In risposta a
@@ -3060,6 +3235,11 @@ Non è reversibile!
Link non valido
No comment provided by engineer.
+
+ Invalid migration confirmation
+ Conferma di migrazione non valida
+ No comment provided by engineer.
+
Invalid name!
Nome non valido!
@@ -3428,6 +3608,11 @@ Questo è il tuo link per il gruppo %@!
Testo del messaggio
No comment provided by engineer.
+
+ Message too large
+ Messaggio troppo grande
+ No comment provided by engineer.
+
Messages
Messaggi
@@ -3443,11 +3628,56 @@ Questo è il tuo link per il gruppo %@!
I messaggi da %@ verranno mostrati!
No comment provided by engineer.
+
+ Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.
+ I messaggi, i file e le chiamate sono protetti da **crittografia end-to-end** con perfect forward secrecy, ripudio e recupero da intrusione.
+ No comment provided by engineer.
+
+
+ Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.
+ I messaggi, i file e le chiamate sono protetti da **crittografia e2e resistente al quantistico** con perfect forward secrecy, ripudio e recupero da intrusione.
+ No comment provided by engineer.
+
+
+ Migrate device
+ Migra dispositivo
+ No comment provided by engineer.
+
+
+ Migrate from another device
+ Migra da un altro dispositivo
+ No comment provided by engineer.
+
+
+ Migrate here
+ Migra qui
+ No comment provided by engineer.
+
+
+ Migrate to another device
+ Migra ad un altro dispositivo
+ No comment provided by engineer.
+
+
+ Migrate to another device via QR code.
+ Migra ad un altro dispositivo via codice QR.
+ No comment provided by engineer.
+
+
+ Migrating
+ Migrazione
+ No comment provided by engineer.
+
Migrating database archive…
Migrazione archivio del database…
No comment provided by engineer.
+
+ Migration complete
+ Migrazione completata
+ No comment provided by engineer.
+
Migration error:
Errore di migrazione:
@@ -3807,6 +4037,11 @@ Questo è il tuo link per il gruppo %@!
Apri gruppo
No comment provided by engineer.
+
+ Open migration to another device
+ Apri migrazione ad un altro dispositivo
+ authentication reason
+
Open user profiles
Apri i profili utente
@@ -3822,11 +4057,21 @@ Questo è il tuo link per il gruppo %@!
Apertura dell'app…
No comment provided by engineer.
+
+ Or paste archive link
+ O incolla il link dell'archivio
+ No comment provided by engineer.
+
Or scan QR code
O scansiona il codice QR
No comment provided by engineer.
+
+ Or securely share this file link
+ O condividi in modo sicuro questo link del file
+ No comment provided by engineer.
+
Or show this code
O mostra questo codice
@@ -3912,6 +4157,11 @@ Questo è il tuo link per il gruppo %@!
Errore di decifrazione
message decrypt error item
+
+ Picture-in-picture calls
+ Chiamate picture-in-picture
+ No comment provided by engineer.
+
Please ask your contact to enable sending voice messages.
Chiedi al tuo contatto di attivare l'invio dei messaggi vocali.
@@ -3932,6 +4182,11 @@ Questo è il tuo link per il gruppo %@!
Controlla le preferenze tue e del tuo contatto.
No comment provided by engineer.
+
+ Please confirm that network settings are correct for this device.
+ Conferma che le impostazioni di rete sono corrette per questo dispositivo.
+ No comment provided by engineer.
+
Please contact developers.
Error: %@
@@ -3989,6 +4244,11 @@ Errore: %@
Probabilmente l'impronta del certificato nell'indirizzo del server è sbagliata
server test error
+
+ Post-quantum E2EE
+ E2EE post-quantistica
+ No comment provided by engineer.
+
Preserve the last message draft, with attachments.
Conserva la bozza dell'ultimo messaggio, con gli allegati.
@@ -4124,6 +4384,16 @@ Errore: %@
Notifiche push
No comment provided by engineer.
+
+ Push server
+ Server push
+ No comment provided by engineer.
+
+
+ Quantum resistant encryption
+ Crittografia resistente al quantistico
+ No comment provided by engineer.
+
Rate the app
Valuta l'app
@@ -4309,11 +4579,26 @@ Errore: %@
Ripetere la richiesta di connessione?
No comment provided by engineer.
+
+ Repeat download
+ Ripeti scaricamento
+ No comment provided by engineer.
+
+
+ Repeat import
+ Ripeti importazione
+ No comment provided by engineer.
+
Repeat join request?
Ripetere la richiesta di ingresso?
No comment provided by engineer.
+
+ Repeat upload
+ Ripeti caricamento
+ No comment provided by engineer.
+
Reply
Rispondi
@@ -4414,6 +4699,11 @@ Errore: %@
Server SMP
No comment provided by engineer.
+
+ Safer groups
+ Gruppi più sicuri
+ No comment provided by engineer.
+
Save
Salva
@@ -4779,6 +5069,11 @@ Errore: %@
Imposta codice
No comment provided by engineer.
+
+ Set passphrase
+ Imposta password
+ No comment provided by engineer.
+
Set passphrase to export
Imposta la password per esportare
@@ -4834,6 +5129,11 @@ Errore: %@
Condividi con i contatti
No comment provided by engineer.
+
+ Show QR code
+ Mostra codice QR
+ No comment provided by engineer.
+
Show calls in phone history
Mostra le chiamate nella cronologia del telefono
@@ -4974,6 +5274,11 @@ Errore: %@
Ferma SimpleX
authentication reason
+
+ Stop chat
+ Ferma la chat
+ No comment provided by engineer.
+
Stop chat to enable database actions
Ferma la chat per attivare le azioni del database
@@ -5014,6 +5319,11 @@ Errore: %@
Smettere di condividere l'indirizzo?
No comment provided by engineer.
+
+ Stopping chat
+ Arresto della chat
+ No comment provided by engineer.
+
Submit
Invia
@@ -5261,6 +5571,16 @@ Può accadere a causa di qualche bug o quando la connessione è compromessa.Questa azione non può essere annullata: il tuo profilo, i contatti, i messaggi e i file andranno persi in modo irreversibile.
No comment provided by engineer.
+
+ This chat is protected by end-to-end encryption.
+ Questa chat è protetta da crittografia end-to-end.
+ E2EE info chat item
+
+
+ This chat is protected by quantum resistant end-to-end encryption.
+ Questa chat è protetta da crittografia end-to-end resistente al quantistico.
+ E2EE info chat item
+
This device name
Il nome di questo dispositivo
@@ -5555,11 +5875,21 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e
Aggiorna e apri chat
No comment provided by engineer.
+
+ Upload failed
+ Invio fallito
+ No comment provided by engineer.
+
Upload file
Invia file
server test step
+
+ Uploading archive
+ Invio dell'archivio
+ No comment provided by engineer.
+
Use .onion hosts
Usa gli host .onion
@@ -5610,6 +5940,11 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e
Usa il server
No comment provided by engineer.
+
+ Use the app while in the call.
+ Usa l'app mentre sei in chiamata.
+ No comment provided by engineer.
+
User profile
Profilo utente
@@ -5645,6 +5980,16 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e
Verifica le connessioni
No comment provided by engineer.
+
+ Verify database passphrase
+ Verifica password del database
+ No comment provided by engineer.
+
+
+ Verify passphrase
+ Verifica password
+ No comment provided by engineer.
+
Verify security code
Verifica codice di sicurezza
@@ -5657,7 +6002,7 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e
Via secure quantum resistant protocol.
- Tramite protocollo sicuro resistente alla quantistica.
+ Tramite protocollo sicuro resistente al quantistico.
No comment provided by engineer.
@@ -5735,6 +6080,11 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e
In attesa del video
No comment provided by engineer.
+
+ Warning: starting chat on multiple devices is not supported and will cause message delivery failures
+ Attenzione: avviare la chat su più dispositivi non è supportato e provocherà problemi di recapito dei messaggi
+ No comment provided by engineer.
+
Warning: you may lose some data!
Attenzione: potresti perdere alcuni dati!
@@ -5755,6 +6105,11 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e
Messaggio di benvenuto
No comment provided by engineer.
+
+ Welcome message is too long
+ Il messaggio di benvenuto è troppo lungo
+ No comment provided by engineer.
+
What's new
Novità
@@ -5810,6 +6165,11 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e
Tu
No comment provided by engineer.
+
+ You **must not** use the same database on two devices.
+ **Non devi** usare lo stesso database su due dispositivi.
+ No comment provided by engineer.
+
You accepted connection
Hai accettato la connessione
@@ -5897,6 +6257,11 @@ Ripetere la richiesta di ingresso?
Puoi attivarle più tardi nelle impostazioni di privacy e sicurezza dell'app.
No comment provided by engineer.
+
+ You can give another try.
+ Puoi fare un altro tentativo.
+ No comment provided by engineer.
+
You can hide or mute a user profile - swipe it to the right.
Puoi nascondere o silenziare un profilo utente - scorrilo verso destra.
@@ -6173,7 +6538,7 @@ Puoi annullare questa connessione e rimuovere il contatto (e riprovare più tard
Your profile **%@** will be shared.
- Il tuo profilo **%@** verrà condiviso.
+ Verrà condiviso il tuo profilo **%@**.
No comment provided by engineer.
@@ -6291,7 +6656,7 @@ I server di SimpleX non possono vedere il tuo profilo.
blocked
bloccato
- No comment provided by engineer.
+ marked deleted chat item preview text
blocked %@
@@ -6301,7 +6666,7 @@ I server di SimpleX non possono vedere il tuo profilo.
blocked by admin
bloccato dall'amministratore
- blocked chat item
+ marked deleted chat item preview text
bold
@@ -6731,7 +7096,7 @@ I server di SimpleX non possono vedere il tuo profilo.
moderated by %@
moderato da %@
- No comment provided by engineer.
+ marked deleted chat item preview text
months
@@ -6800,6 +7165,11 @@ I server di SimpleX non possono vedere il tuo profilo.
peer-to-peer
No comment provided by engineer.
+
+ quantum resistant e2e encryption
+ crittografia e2e resistente al quantistico
+ chat item text
+
received answer…
risposta ricevuta…
@@ -6875,6 +7245,11 @@ I server di SimpleX non possono vedere il tuo profilo.
impostata nuova immagine del profilo
profile update event chat item
+
+ standard end-to-end encryption
+ crittografia end-to-end standard
+ chat item text
+
starting…
avvio…
diff --git a/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff b/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff
index c9f93b458e..e10c39bbc3 100644
--- a/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff
+++ b/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff
@@ -89,6 +89,7 @@
%@ and %@
+ %@ と %@
No comment provided by engineer.
@@ -106,6 +107,10 @@
%@ 接続中
No comment provided by engineer.
+
+ %@ downloaded
+ No comment provided by engineer.
+
%@ is connected!
%@ 接続中!
@@ -126,6 +131,10 @@
%@ サーバー
No comment provided by engineer.
+
+ %@ uploaded
+ No comment provided by engineer.
+
%@ wants to connect!
%@ が接続を希望しています!
@@ -333,6 +342,10 @@
**最もプライベート**: SimpleX Chat 通知サーバーを使用せず、バックグラウンドで定期的にメッセージをチェックします (アプリの使用頻度によって異なります)。
No comment provided by engineer.
+
+ **Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.
+ No comment provided by engineer.
+
**Please note**: you will NOT be able to recover or change passphrase if you lose it.
**注意**: パスフレーズを紛失すると、パスフレーズを復元または変更できなくなります。
@@ -348,6 +361,10 @@
**警告**: 即時の プッシュ通知には、キーチェーンに保存されたパスフレーズが必要です。
No comment provided by engineer.
+
+ **Warning**: the archive will be removed.
+ No comment provided by engineer.
+
**e2e encrypted** audio call
**e2e 暗号化**音声通話
@@ -596,6 +613,10 @@
アドレス変更は中止されます。古い受信アドレスが使用されます。
No comment provided by engineer.
+
+ Admins can block a member for all.
+ No comment provided by engineer.
+
Admins can create the links to join groups.
管理者はグループの参加リンクを生成できます。
@@ -649,6 +670,10 @@
すべての連絡先は維持されます。連絡先に更新されたプロフィールを送信します。
No comment provided by engineer.
+
+ All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.
+ No comment provided by engineer.
+
Allow
許可
@@ -772,6 +797,10 @@
アプリのビルド: %@
No comment provided by engineer.
+
+ App data migration
+ No comment provided by engineer.
+
App encrypts new local files (except videos).
アプリは新しいローカルファイル(ビデオを除く)を暗号化します。
@@ -807,6 +836,18 @@
見た目
No comment provided by engineer.
+
+ Apply
+ No comment provided by engineer.
+
+
+ Archive and upload
+ No comment provided by engineer.
+
+
+ Archiving database
+ No comment provided by engineer.
+
Attach
添付する
@@ -987,6 +1028,10 @@
中止
No comment provided by engineer.
+
+ Cancel migration
+ No comment provided by engineer.
+
Cannot access keychain to save database password
データベースのパスワードを保存するためのキーチェーンにアクセスできません
@@ -1087,6 +1132,10 @@
Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat.
No comment provided by engineer.
+
+ Chat migrated!
+ No comment provided by engineer.
+
Chat preferences
チャット設定
@@ -1107,6 +1156,10 @@
中国語とスペイン語UI
No comment provided by engineer.
+
+ Choose _Migrate from another device_ on the new device and scan QR code.
+ No comment provided by engineer.
+
Choose file
ファイルを選択
@@ -1176,6 +1229,10 @@
データベースのアップグレードを確認
No comment provided by engineer.
+
+ Confirm network settings
+ No comment provided by engineer.
+
Confirm new passphrase…
新しいパスフレーズを確認…
@@ -1186,6 +1243,14 @@
パスワードを確認
No comment provided by engineer.
+
+ Confirm that you remember database passphrase to migrate it.
+ No comment provided by engineer.
+
+
+ Confirm upload
+ No comment provided by engineer.
+
Connect
接続
@@ -1426,6 +1491,10 @@ This is your own one-time link!
%@ によって作成されました
No comment provided by engineer.
+
+ Creating archive link
+ No comment provided by engineer.
+
Creating link…
No comment provided by engineer.
@@ -1641,6 +1710,10 @@ This cannot be undone!
データベースを削除
No comment provided by engineer.
+
+ Delete database from this device
+ No comment provided by engineer.
+
Delete file
ファイルの削除
@@ -1925,11 +1998,23 @@ This cannot be undone!
ダウングレードしてチャットを開く
No comment provided by engineer.
+
+ Download failed
+ No comment provided by engineer.
+
Download file
ファイルをダウンロード
server test step
+
+ Downloading archive
+ No comment provided by engineer.
+
+
+ Downloading link details
+ No comment provided by engineer.
+
Duplicate display name!
表示の名前が重複してます!
@@ -1984,6 +2069,10 @@ This cannot be undone!
すべて有効
No comment provided by engineer.
+
+ Enable in direct chats (BETA)!
+ No comment provided by engineer.
+
Enable instant notifications?
即時通知を有効にしますか?
@@ -2095,6 +2184,10 @@ This cannot be undone!
Enter group name…
No comment provided by engineer.
+
+ Enter passphrase
+ No comment provided by engineer.
+
Enter passphrase…
暗証フレーズを入力…
@@ -2153,6 +2246,10 @@ This cannot be undone!
メンバー追加にエラー発生
No comment provided by engineer.
+
+ Error allowing contact PQ encryption
+ No comment provided by engineer.
+
Error changing address
アドレス変更にエラー発生
@@ -2242,6 +2339,10 @@ This cannot be undone!
ユーザのプロフィール削除にエラー発生
No comment provided by engineer.
+
+ Error downloading the archive
+ No comment provided by engineer.
+
Error enabling delivery receipts!
No comment provided by engineer.
@@ -2315,6 +2416,10 @@ This cannot be undone!
キーチェーンにパスフレーズを保存にエラー発生
No comment provided by engineer.
+
+ Error saving settings
+ when migrating
+
Error saving user password
ユーザーパスワード保存エラー
@@ -2383,6 +2488,14 @@ This cannot be undone!
ユーザープライバシーの更新のエラー
No comment provided by engineer.
+
+ Error uploading the archive
+ No comment provided by engineer.
+
+
+ Error verifying passphrase:
+ No comment provided by engineer.
+
Error:
エラー :
@@ -2432,6 +2545,10 @@ This cannot be undone!
データベースのアーカイブをエクスポートします。
No comment provided by engineer.
+
+ Exported file doesn't exist
+ No comment provided by engineer.
+
Exporting database archive…
データベース アーカイブをエクスポートしています…
@@ -2501,6 +2618,14 @@ This cannot be undone!
未読とお気に入りをフィルターします。
No comment provided by engineer.
+
+ Finalize migration
+ No comment provided by engineer.
+
+
+ Finalize migration on another device.
+ No comment provided by engineer.
+
Finally, we have them! 🚀
ついに、私たちはそれらを手に入れました! 🚀
@@ -2786,6 +2911,10 @@ This cannot be undone!
自分のサーバの使い方
No comment provided by engineer.
+
+ Hungarian interface
+ No comment provided by engineer.
+
ICE servers (one per line)
ICEサーバ (1行に1サーバ)
@@ -2851,6 +2980,14 @@ This cannot be undone!
データベースを読み込む
No comment provided by engineer.
+
+ Import failed
+ No comment provided by engineer.
+
+
+ Importing archive
+ No comment provided by engineer.
+
Improved message delivery
No comment provided by engineer.
@@ -2865,6 +3002,10 @@ This cannot be undone!
サーバ設定の向上
No comment provided by engineer.
+
+ In order to continue, chat should be stopped.
+ No comment provided by engineer.
+
In reply to
返信先
@@ -2972,6 +3113,10 @@ This cannot be undone!
Invalid link
No comment provided by engineer.
+
+ Invalid migration confirmation
+ No comment provided by engineer.
+
Invalid name!
No comment provided by engineer.
@@ -3326,6 +3471,10 @@ This is your link for group %@!
メッセージ内容
No comment provided by engineer.
+
+ Message too large
+ No comment provided by engineer.
+
Messages
メッセージ
@@ -3340,11 +3489,47 @@ This is your link for group %@!
Messages from %@ will be shown!
No comment provided by engineer.
+
+ Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.
+ No comment provided by engineer.
+
+
+ Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.
+ No comment provided by engineer.
+
+
+ Migrate device
+ No comment provided by engineer.
+
+
+ Migrate from another device
+ No comment provided by engineer.
+
+
+ Migrate here
+ No comment provided by engineer.
+
+
+ Migrate to another device
+ No comment provided by engineer.
+
+
+ Migrate to another device via QR code.
+ No comment provided by engineer.
+
+
+ Migrating
+ No comment provided by engineer.
+
Migrating database archive…
データベースのアーカイブを移行しています…
No comment provided by engineer.
+
+ Migration complete
+ No comment provided by engineer.
+
Migration error:
移行エラー:
@@ -3700,6 +3885,10 @@ This is your link for group %@!
Open group
No comment provided by engineer.
+
+ Open migration to another device
+ authentication reason
+
Open user profiles
ユーザープロフィールを開く
@@ -3714,10 +3903,18 @@ This is your link for group %@!
Opening app…
No comment provided by engineer.
+
+ Or paste archive link
+ No comment provided by engineer.
+
Or scan QR code
No comment provided by engineer.
+
+ Or securely share this file link
+ No comment provided by engineer.
+
Or show this code
No comment provided by engineer.
@@ -3798,6 +3995,10 @@ This is your link for group %@!
永続的な復号化エラー
message decrypt error item
+
+ Picture-in-picture calls
+ No comment provided by engineer.
+
Please ask your contact to enable sending voice messages.
音声メッセージを有効にするように連絡相手に要求してください。
@@ -3818,6 +4019,10 @@ This is your link for group %@!
あなたと連絡先の設定を確認してください。
No comment provided by engineer.
+
+ Please confirm that network settings are correct for this device.
+ No comment provided by engineer.
+
Please contact developers.
Error: %@
@@ -3873,6 +4078,10 @@ Error: %@
サーバアドレスの証明証IDが正しくないかもしれません
server test error
+
+ Post-quantum E2EE
+ No comment provided by engineer.
+
Preserve the last message draft, with attachments.
添付を含めて、下書きを保存する。
@@ -4005,6 +4214,14 @@ Error: %@
プッシュ通知
No comment provided by engineer.
+
+ Push server
+ No comment provided by engineer.
+
+
+ Quantum resistant encryption
+ No comment provided by engineer.
+
Rate the app
アプリを評価
@@ -4186,10 +4403,22 @@ Error: %@
Repeat connection request?
No comment provided by engineer.
+
+ Repeat download
+ No comment provided by engineer.
+
+
+ Repeat import
+ No comment provided by engineer.
+
Repeat join request?
No comment provided by engineer.
+
+ Repeat upload
+ No comment provided by engineer.
+
Reply
返信
@@ -4289,6 +4518,10 @@ Error: %@
SMPサーバ
No comment provided by engineer.
+
+ Safer groups
+ No comment provided by engineer.
+
Save
保存
@@ -4640,6 +4873,10 @@ Error: %@
パスコードを設定する
No comment provided by engineer.
+
+ Set passphrase
+ No comment provided by engineer.
+
Set passphrase to export
暗証フレーズを設定してからエクスポート
@@ -4694,6 +4931,10 @@ Error: %@
連絡先と共有する
No comment provided by engineer.
+
+ Show QR code
+ No comment provided by engineer.
+
Show calls in phone history
通話履歴を表示
@@ -4833,6 +5074,10 @@ Error: %@
SimpleX を停止
authentication reason
+
+ Stop chat
+ No comment provided by engineer.
+
Stop chat to enable database actions
チャットを停止してデータベースアクションを有効にします
@@ -4873,6 +5118,10 @@ Error: %@
アドレスの共有を停止しますか?
No comment provided by engineer.
+
+ Stopping chat
+ No comment provided by engineer.
+
Submit
送信
@@ -5115,6 +5364,14 @@ It can happen because of some bug or when the connection is compromised.あなたのプロフィール、連絡先、メッセージ、ファイルが完全削除されます (※元に戻せません※)。
No comment provided by engineer.
+
+ This chat is protected by end-to-end encryption.
+ E2EE info chat item
+
+
+ This chat is protected by quantum resistant end-to-end encryption.
+ E2EE info chat item
+
This device name
No comment provided by engineer.
@@ -5393,11 +5650,19 @@ To connect, please ask your contact to create another connection link and check
アップグレードしてチャットを開く
No comment provided by engineer.
+
+ Upload failed
+ No comment provided by engineer.
+
Upload file
ファイルをアップロードする
server test step
+
+ Uploading archive
+ No comment provided by engineer.
+
Use .onion hosts
.onionホストを使う
@@ -5446,6 +5711,10 @@ To connect, please ask your contact to create another connection link and check
サーバを使う
No comment provided by engineer.
+
+ Use the app while in the call.
+ No comment provided by engineer.
+
User profile
ユーザープロフィール
@@ -5478,6 +5747,14 @@ To connect, please ask your contact to create another connection link and check
Verify connections
No comment provided by engineer.
+
+ Verify database passphrase
+ No comment provided by engineer.
+
+
+ Verify passphrase
+ No comment provided by engineer.
+
Verify security code
セキュリティコードを確認
@@ -5565,6 +5842,10 @@ To connect, please ask your contact to create another connection link and check
ビデオ待機中
No comment provided by engineer.
+
+ Warning: starting chat on multiple devices is not supported and will cause message delivery failures
+ No comment provided by engineer.
+
Warning: you may lose some data!
警告: 一部のデータが失われる可能性があります!
@@ -5585,6 +5866,10 @@ To connect, please ask your contact to create another connection link and check
ウェルカムメッセージ
No comment provided by engineer.
+
+ Welcome message is too long
+ No comment provided by engineer.
+
What's new
新着情報
@@ -5638,6 +5923,10 @@ To connect, please ask your contact to create another connection link and check
あなた
No comment provided by engineer.
+
+ You **must not** use the same database on two devices.
+ No comment provided by engineer.
+
You accepted connection
接続を承認しました
@@ -5717,6 +6006,10 @@ Repeat join request?
あとでアプリのプライバシーとセキュリティの設定から有効にすることができます。
No comment provided by engineer.
+
+ You can give another try.
+ No comment provided by engineer.
+
You can hide or mute a user profile - swipe it to the right.
ユーザープロファイルを右にスワイプすると、非表示またはミュートにすることができます。
@@ -6100,7 +6393,7 @@ SimpleX サーバーはあなたのプロファイルを参照できません。
blocked
- No comment provided by engineer.
+ marked deleted chat item preview text
blocked %@
@@ -6108,7 +6401,7 @@ SimpleX サーバーはあなたのプロファイルを参照できません。
blocked by admin
- blocked chat item
+ marked deleted chat item preview text
bold
@@ -6534,7 +6827,7 @@ SimpleX サーバーはあなたのプロファイルを参照できません。
moderated by %@
%@ によってモデレートされた
- No comment provided by engineer.
+ marked deleted chat item preview text
months
@@ -6603,6 +6896,10 @@ SimpleX サーバーはあなたのプロファイルを参照できません。
P2P
No comment provided by engineer.
+
+ quantum resistant e2e encryption
+ chat item text
+
received answer…
回答を受け取りました…
@@ -6673,6 +6970,10 @@ SimpleX サーバーはあなたのプロファイルを参照できません。
set new profile picture
profile update event chat item
+
+ standard end-to-end encryption
+ chat item text
+
starting…
接続中…
diff --git a/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff b/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff
index 7afd35264d..61d91c8fbb 100644
--- a/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff
+++ b/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff
@@ -107,6 +107,11 @@
%@ verbonden
No comment provided by engineer.
+
+ %@ downloaded
+ %@ gedownload
+ No comment provided by engineer.
+
%@ is connected!
%@ is verbonden!
@@ -127,6 +132,11 @@
%@ servers
No comment provided by engineer.
+
+ %@ uploaded
+ %@ geüpload
+ No comment provided by engineer.
+
%@ wants to connect!
%@ wil verbinding maken!
@@ -342,6 +352,11 @@
**Meest privé**: gebruik geen SimpleX Chat-notificatie server, controleer berichten regelmatig op de achtergrond (afhankelijk van hoe vaak u de app gebruikt).
No comment provided by engineer.
+
+ **Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.
+ **Let op**: als u dezelfde database op twee apparaten gebruikt, wordt de decodering van berichten van uw verbindingen verbroken, als veiligheidsmaatregel.
+ No comment provided by engineer.
+
**Please note**: you will NOT be able to recover or change passphrase if you lose it.
**Let op**: u kunt het wachtwoord NIET herstellen of wijzigen als u het kwijtraakt.
@@ -357,6 +372,11 @@
**Waarschuwing**: voor directe push meldingen is een wachtwoord vereist dat is opgeslagen in de Keychain.
No comment provided by engineer.
+
+ **Warning**: the archive will be removed.
+ **Waarschuwing**: het archief wordt verwijderd.
+ No comment provided by engineer.
+
**e2e encrypted** audio call
**e2e versleuteld** audio gesprek
@@ -613,6 +633,11 @@
Adres wijziging wordt afgebroken. Het oude ontvangstadres wordt gebruikt.
No comment provided by engineer.
+
+ Admins can block a member for all.
+ Beheerders kunnen een lid voor iedereen blokkeren.
+ No comment provided by engineer.
+
Admins can create the links to join groups.
Beheerders kunnen de uitnodiging links naar groepen aanmaken.
@@ -668,6 +693,11 @@
Al uw contacten blijven verbonden. Profiel update wordt naar uw contacten verzonden.
No comment provided by engineer.
+
+ All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.
+ Al uw contacten, gesprekken en bestanden worden veilig gecodeerd en in delen geüpload naar geconfigureerde XFTP-relays.
+ No comment provided by engineer.
+
Allow
Toestaan
@@ -793,6 +823,11 @@
App build: %@
No comment provided by engineer.
+
+ App data migration
+ Migratie van app-gegevens
+ No comment provided by engineer.
+
App encrypts new local files (except videos).
App versleutelt nieuwe lokale bestanden (behalve video's).
@@ -828,6 +863,21 @@
Uiterlijk
No comment provided by engineer.
+
+ Apply
+ Toepassen
+ No comment provided by engineer.
+
+
+ Archive and upload
+ Archiveren en uploaden
+ No comment provided by engineer.
+
+
+ Archiving database
+ Database archiveren
+ No comment provided by engineer.
+
Attach
Bijvoegen
@@ -1018,6 +1068,11 @@
Annuleren
No comment provided by engineer.
+
+ Cancel migration
+ Migratie annuleren
+ No comment provided by engineer.
+
Cannot access keychain to save database password
Geen toegang tot de keychain om database wachtwoord op te slaan
@@ -1119,6 +1174,11 @@
Chat is gestopt. Als je deze database al op een ander apparaat hebt gebruikt, moet je deze terugzetten voordat je met chatten begint.
No comment provided by engineer.
+
+ Chat migrated!
+ Chat gemigreerd!
+ No comment provided by engineer.
+
Chat preferences
Gesprek voorkeuren
@@ -1139,6 +1199,11 @@
Chinese en Spaanse interface
No comment provided by engineer.
+
+ Choose _Migrate from another device_ on the new device and scan QR code.
+ Kies _Migreren vanaf een ander apparaat_ op het nieuwe apparaat en scan de QR-code.
+ No comment provided by engineer.
+
Choose file
Kies bestand
@@ -1209,6 +1274,11 @@
Bevestig database upgrades
No comment provided by engineer.
+
+ Confirm network settings
+ Bevestig netwerk instellingen
+ No comment provided by engineer.
+
Confirm new passphrase…
Bevestig nieuw wachtwoord…
@@ -1219,6 +1289,16 @@
Bevestig wachtwoord
No comment provided by engineer.
+
+ Confirm that you remember database passphrase to migrate it.
+ Bevestig dat u het wachtwoord voor de database onthoudt om deze te migreren.
+ No comment provided by engineer.
+
+
+ Confirm upload
+ Bevestig het uploaden
+ No comment provided by engineer.
+
Connect
Verbind
@@ -1478,6 +1558,11 @@ Dit is uw eigen eenmalige link!
Gemaakt op %@
No comment provided by engineer.
+
+ Creating archive link
+ Archief link maken
+ No comment provided by engineer.
+
Creating link…
Link maken…
@@ -1698,6 +1783,11 @@ Dit kan niet ongedaan gemaakt worden!
Database verwijderen
No comment provided by engineer.
+
+ Delete database from this device
+ Verwijder de database van dit apparaat
+ No comment provided by engineer.
+
Delete file
Verwijder bestand
@@ -1988,11 +2078,26 @@ Dit kan niet ongedaan gemaakt worden!
Downgraden en chat openen
No comment provided by engineer.
+
+ Download failed
+ Download mislukt
+ No comment provided by engineer.
+
Download file
Download bestand
server test step
+
+ Downloading archive
+ Archief downloaden
+ No comment provided by engineer.
+
+
+ Downloading link details
+ Link gegevens downloaden
+ No comment provided by engineer.
+
Duplicate display name!
Dubbele weergavenaam!
@@ -2048,6 +2153,11 @@ Dit kan niet ongedaan gemaakt worden!
Inschakelen voor iedereen
No comment provided by engineer.
+
+ Enable in direct chats (BETA)!
+ Activeer in directe chats (BETA)!
+ No comment provided by engineer.
+
Enable instant notifications?
Onmiddellijke meldingen inschakelen?
@@ -2163,6 +2273,11 @@ Dit kan niet ongedaan gemaakt worden!
Groep naam invoeren…
No comment provided by engineer.
+
+ Enter passphrase
+ Voer het wachtwoord in
+ No comment provided by engineer.
+
Enter passphrase…
Voer wachtwoord in…
@@ -2223,6 +2338,11 @@ Dit kan niet ongedaan gemaakt worden!
Fout bij het toevoegen van leden
No comment provided by engineer.
+
+ Error allowing contact PQ encryption
+ Fout bij het toestaan van contact PQ-versleuteling
+ No comment provided by engineer.
+
Error changing address
Fout bij wijzigen van adres
@@ -2313,6 +2433,11 @@ Dit kan niet ongedaan gemaakt worden!
Fout bij het verwijderen van gebruikers profiel
No comment provided by engineer.
+
+ Error downloading the archive
+ Fout bij het downloaden van het archief
+ No comment provided by engineer.
+
Error enabling delivery receipts!
Fout bij het inschakelen van ontvangst bevestiging!
@@ -2388,6 +2513,11 @@ Dit kan niet ongedaan gemaakt worden!
Fout bij opslaan van wachtwoord in de keychain
No comment provided by engineer.
+
+ Error saving settings
+ Fout bij opslaan van instellingen
+ when migrating
+
Error saving user password
Fout bij opslaan gebruikers wachtwoord
@@ -2458,6 +2588,16 @@ Dit kan niet ongedaan gemaakt worden!
Fout bij updaten van gebruikers privacy
No comment provided by engineer.
+
+ Error uploading the archive
+ Fout bij het uploaden van het archief
+ No comment provided by engineer.
+
+
+ Error verifying passphrase:
+ Fout bij het verifiëren van het wachtwoord:
+ No comment provided by engineer.
+
Error:
Fout:
@@ -2508,6 +2648,11 @@ Dit kan niet ongedaan gemaakt worden!
Geëxporteerd database archief.
No comment provided by engineer.
+
+ Exported file doesn't exist
+ Geëxporteerd bestand bestaat niet
+ No comment provided by engineer.
+
Exporting database archive…
Database archief exporteren…
@@ -2578,6 +2723,16 @@ Dit kan niet ongedaan gemaakt worden!
Filter ongelezen en favoriete chats.
No comment provided by engineer.
+
+ Finalize migration
+ Voltooi de migratie
+ No comment provided by engineer.
+
+
+ Finalize migration on another device.
+ Voltooi de migratie op een ander apparaat.
+ No comment provided by engineer.
+
Finally, we have them! 🚀
Eindelijk, we hebben ze! 🚀
@@ -2868,6 +3023,11 @@ Dit kan niet ongedaan gemaakt worden!
Hoe u uw servers gebruikt
No comment provided by engineer.
+
+ Hungarian interface
+ Hongaarse interface
+ No comment provided by engineer.
+
ICE servers (one per line)
ICE servers (één per lijn)
@@ -2933,6 +3093,16 @@ Dit kan niet ongedaan gemaakt worden!
Database importeren
No comment provided by engineer.
+
+ Import failed
+ Importeren is mislukt
+ No comment provided by engineer.
+
+
+ Importing archive
+ Archief importeren
+ No comment provided by engineer.
+
Improved message delivery
Verbeterde berichtbezorging
@@ -2948,6 +3118,11 @@ Dit kan niet ongedaan gemaakt worden!
Verbeterde serverconfiguratie
No comment provided by engineer.
+
+ In order to continue, chat should be stopped.
+ Om verder te kunnen gaan, moet de chat worden gestopt.
+ No comment provided by engineer.
+
In reply to
In antwoord op
@@ -3060,6 +3235,11 @@ Dit kan niet ongedaan gemaakt worden!
Ongeldige link
No comment provided by engineer.
+
+ Invalid migration confirmation
+ Ongeldige migratie bevestiging
+ No comment provided by engineer.
+
Invalid name!
Ongeldige naam!
@@ -3428,6 +3608,11 @@ Dit is jouw link voor groep %@!
Bericht tekst
No comment provided by engineer.
+
+ Message too large
+ Bericht te groot
+ No comment provided by engineer.
+
Messages
Berichten
@@ -3443,11 +3628,56 @@ Dit is jouw link voor groep %@!
Berichten van %@ worden getoond!
No comment provided by engineer.
+
+ Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.
+ Berichten, bestanden en oproepen worden beschermd door **end-to-end codering** met perfecte voorwaartse geheimhouding, afwijzing en inbraakherstel.
+ No comment provided by engineer.
+
+
+ Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.
+ Berichten, bestanden en oproepen worden beschermd door **kwantumbestendige e2e encryptie** met perfecte voorwaartse geheimhouding, afwijzing en inbraakherstel.
+ No comment provided by engineer.
+
+
+ Migrate device
+ Apparaat migreren
+ No comment provided by engineer.
+
+
+ Migrate from another device
+ Migreer vanaf een ander apparaat
+ No comment provided by engineer.
+
+
+ Migrate here
+ Migreer hierheen
+ No comment provided by engineer.
+
+
+ Migrate to another device
+ Migreer naar een ander apparaat
+ No comment provided by engineer.
+
+
+ Migrate to another device via QR code.
+ Migreer naar een ander apparaat via QR-code.
+ No comment provided by engineer.
+
+
+ Migrating
+ Migreren
+ No comment provided by engineer.
+
Migrating database archive…
Database archief migreren…
No comment provided by engineer.
+
+ Migration complete
+ Migratie voltooid
+ No comment provided by engineer.
+
Migration error:
Migratiefout:
@@ -3807,6 +4037,11 @@ Dit is jouw link voor groep %@!
Open groep
No comment provided by engineer.
+
+ Open migration to another device
+ Open de migratie naar een ander apparaat
+ authentication reason
+
Open user profiles
Gebruikers profielen openen
@@ -3822,11 +4057,21 @@ Dit is jouw link voor groep %@!
App openen…
No comment provided by engineer.
+
+ Or paste archive link
+ Of plak de archief link
+ No comment provided by engineer.
+
Or scan QR code
Of scan de QR-code
No comment provided by engineer.
+
+ Or securely share this file link
+ Of deel deze bestands link veilig
+ No comment provided by engineer.
+
Or show this code
Of laat deze code zien
@@ -3912,6 +4157,11 @@ Dit is jouw link voor groep %@!
Decodering fout
message decrypt error item
+
+ Picture-in-picture calls
+ Beeld-in-beeld oproepen
+ No comment provided by engineer.
+
Please ask your contact to enable sending voice messages.
Vraag uw contact om het verzenden van spraak berichten in te schakelen.
@@ -3932,6 +4182,11 @@ Dit is jouw link voor groep %@!
Controleer de uwe en uw contact voorkeuren.
No comment provided by engineer.
+
+ Please confirm that network settings are correct for this device.
+ Controleer of de netwerk instellingen correct zijn voor dit apparaat.
+ No comment provided by engineer.
+
Please contact developers.
Error: %@
@@ -3989,6 +4244,11 @@ Fout: %@
Mogelijk is de certificaat vingerafdruk in het server adres onjuist
server test error
+
+ Post-quantum E2EE
+ Post-quantum E2EE
+ No comment provided by engineer.
+
Preserve the last message draft, with attachments.
Bewaar het laatste berichtconcept, met bijlagen.
@@ -4124,6 +4384,16 @@ Fout: %@
Push meldingen
No comment provided by engineer.
+
+ Push server
+ Push server
+ No comment provided by engineer.
+
+
+ Quantum resistant encryption
+ quantum bestendige encryptie
+ No comment provided by engineer.
+
Rate the app
Beoordeel de app
@@ -4309,11 +4579,26 @@ Fout: %@
Verbindingsverzoek herhalen?
No comment provided by engineer.
+
+ Repeat download
+ Herhaal het downloaden
+ No comment provided by engineer.
+
+
+ Repeat import
+ Herhaal import
+ No comment provided by engineer.
+
Repeat join request?
Deelnameverzoek herhalen?
No comment provided by engineer.
+
+ Repeat upload
+ Herhaal het uploaden
+ No comment provided by engineer.
+
Reply
Antwoord
@@ -4414,6 +4699,11 @@ Fout: %@
SMP servers
No comment provided by engineer.
+
+ Safer groups
+ Veiligere groepen
+ No comment provided by engineer.
+
Save
Opslaan
@@ -4541,7 +4831,7 @@ Fout: %@
Search or paste SimpleX link
- Zoek of plak een SimpleX link
+ Zoeken of plak een SimpleX link
No comment provided by engineer.
@@ -4779,6 +5069,11 @@ Fout: %@
Toegangscode instellen
No comment provided by engineer.
+
+ Set passphrase
+ Wachtwoord instellen
+ No comment provided by engineer.
+
Set passphrase to export
Wachtwoord instellen om te exporteren
@@ -4834,6 +5129,11 @@ Fout: %@
Delen met contacten
No comment provided by engineer.
+
+ Show QR code
+ Toon QR-code
+ No comment provided by engineer.
+
Show calls in phone history
Toon oproepen in de telefoongeschiedenis
@@ -4974,6 +5274,11 @@ Fout: %@
Stop SimpleX
authentication reason
+
+ Stop chat
+ Stop chat
+ No comment provided by engineer.
+
Stop chat to enable database actions
Stop de chat om database acties mogelijk te maken
@@ -5014,6 +5319,11 @@ Fout: %@
Stop met het delen van adres?
No comment provided by engineer.
+
+ Stopping chat
+ Chat stoppen
+ No comment provided by engineer.
+
Submit
Indienen
@@ -5261,6 +5571,16 @@ Het kan gebeuren vanwege een bug of wanneer de verbinding is aangetast.
Deze actie kan niet ongedaan worden gemaakt. Uw profiel, contacten, berichten en bestanden gaan onomkeerbaar verloren.
No comment provided by engineer.
+
+ This chat is protected by end-to-end encryption.
+ Deze chat is beveiligd met end-to-end codering.
+ E2EE info chat item
+
+
+ This chat is protected by quantum resistant end-to-end encryption.
+ Deze chat wordt beschermd door quantum bestendige end-to-end codering.
+ E2EE info chat item
+
This device name
Deze apparaatnaam
@@ -5555,11 +5875,21 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak
Upgrade en open chat
No comment provided by engineer.
+
+ Upload failed
+ Upload mislukt
+ No comment provided by engineer.
+
Upload file
Upload bestand
server test step
+
+ Uploading archive
+ Archief uploaden
+ No comment provided by engineer.
+
Use .onion hosts
Gebruik .onion-hosts
@@ -5610,6 +5940,11 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak
Gebruik server
No comment provided by engineer.
+
+ Use the app while in the call.
+ Gebruik de app tijdens het gesprek.
+ No comment provided by engineer.
+
User profile
Gebruikers profiel
@@ -5645,6 +5980,16 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak
Controleer verbindingen
No comment provided by engineer.
+
+ Verify database passphrase
+ Controleer het wachtwoord van de database
+ No comment provided by engineer.
+
+
+ Verify passphrase
+ Controleer het wachtwoord
+ No comment provided by engineer.
+
Verify security code
Controleer de beveiligingscode
@@ -5735,6 +6080,11 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak
Wachten op video
No comment provided by engineer.
+
+ Warning: starting chat on multiple devices is not supported and will cause message delivery failures
+ Waarschuwing: het starten van de chat op meerdere apparaten wordt niet ondersteund en zal leiden tot mislukte bezorging van berichten
+ No comment provided by engineer.
+
Warning: you may lose some data!
Waarschuwing: u kunt sommige gegevens verliezen!
@@ -5755,6 +6105,11 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak
Welkomst bericht
No comment provided by engineer.
+
+ Welcome message is too long
+ Welkomstbericht is te lang
+ No comment provided by engineer.
+
What's new
Wat is er nieuw
@@ -5810,6 +6165,11 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak
Jij
No comment provided by engineer.
+
+ You **must not** use the same database on two devices.
+ U **mag** niet dezelfde database op twee apparaten gebruiken.
+ No comment provided by engineer.
+
You accepted connection
Je hebt de verbinding geaccepteerd
@@ -5897,6 +6257,11 @@ Deelnameverzoek herhalen?
U kunt ze later inschakelen via de privacy- en beveiligingsinstellingen van de app.
No comment provided by engineer.
+
+ You can give another try.
+ Je kunt het nog een keer proberen.
+ No comment provided by engineer.
+
You can hide or mute a user profile - swipe it to the right.
U kunt een gebruikers profiel verbergen of dempen - veeg het naar rechts.
@@ -6291,7 +6656,7 @@ SimpleX servers kunnen uw profiel niet zien.
blocked
geblokkeerd
- No comment provided by engineer.
+ marked deleted chat item preview text
blocked %@
@@ -6301,7 +6666,7 @@ SimpleX servers kunnen uw profiel niet zien.
blocked by admin
geblokkeerd door beheerder
- blocked chat item
+ marked deleted chat item preview text
bold
@@ -6615,7 +6980,7 @@ SimpleX servers kunnen uw profiel niet zien.
incognito via contact address link
- incognito via contactadres link
+ incognito via contact adres link
chat list item description
@@ -6685,7 +7050,7 @@ SimpleX servers kunnen uw profiel niet zien.
left
- verlaten
+ is vertrokken
rcv group event chat item
@@ -6731,7 +7096,7 @@ SimpleX servers kunnen uw profiel niet zien.
moderated by %@
gemodereerd door %@
- No comment provided by engineer.
+ marked deleted chat item preview text
months
@@ -6800,6 +7165,11 @@ SimpleX servers kunnen uw profiel niet zien.
peer-to-peer
No comment provided by engineer.
+
+ quantum resistant e2e encryption
+ quantum bestendige e2e-codering
+ chat item text
+
received answer…
antwoord gekregen…
@@ -6875,6 +7245,11 @@ SimpleX servers kunnen uw profiel niet zien.
nieuwe profielfoto instellen
profile update event chat item
+
+ standard end-to-end encryption
+ standaard end-to-end encryptie
+ chat item text
+
starting…
beginnen…
@@ -6927,7 +7302,7 @@ SimpleX servers kunnen uw profiel niet zien.
via contact address link
- via contactadres link
+ via contact adres link
chat list item description
diff --git a/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff b/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff
index 94e3e8901a..f4d10b0dc0 100644
--- a/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff
+++ b/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff
@@ -107,6 +107,11 @@
%@ połączony
No comment provided by engineer.
+
+ %@ downloaded
+ %@ pobrane
+ No comment provided by engineer.
+
%@ is connected!
%@ jest połączony!
@@ -127,6 +132,11 @@
%@ serwery
No comment provided by engineer.
+
+ %@ uploaded
+ %@ wgrane
+ No comment provided by engineer.
+
%@ wants to connect!
%@ chce się połączyć!
@@ -342,6 +352,11 @@
**Najbardziej prywatny**: nie korzystaj z serwera powiadomień SimpleX Chat, sprawdzaj wiadomości okresowo w tle (zależy jak często korzystasz z aplikacji).
No comment provided by engineer.
+
+ **Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.
+ *Uwaga*: używanie tej samej bazy danych na dwóch urządzeniach zepsuje odszyfrowywanie wiadomości twoich połączeń, jako zabezpieczenie.
+ No comment provided by engineer.
+
**Please note**: you will NOT be able to recover or change passphrase if you lose it.
**Uwaga**: NIE będziesz w stanie odzyskać lub zmienić hasła, jeśli je stracisz.
@@ -357,6 +372,11 @@
**Uwaga**: Natychmiastowe powiadomienia push wymagają hasła zapisanego w Keychain.
No comment provided by engineer.
+
+ **Warning**: the archive will be removed.
+ **Ostrzeżenie**: archiwum zostanie usunięte.
+ No comment provided by engineer.
+
**e2e encrypted** audio call
**szyfrowane e2e** połączenie audio
@@ -613,6 +633,11 @@
Zmiana adresu zostanie przerwana. Użyty zostanie stary adres odbiorczy.
No comment provided by engineer.
+
+ Admins can block a member for all.
+ Administratorzy mogą blokować członka dla wszystkich.
+ No comment provided by engineer.
+
Admins can create the links to join groups.
Administratorzy mogą tworzyć linki do dołączania do grup.
@@ -668,6 +693,11 @@
Wszystkie Twoje kontakty pozostaną połączone. Aktualizacja profilu zostanie wysłana do Twoich kontaktów.
No comment provided by engineer.
+
+ All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.
+ Wszystkie twoje kontakty, konwersacje i pliki będą bezpiecznie szyfrowane i wgrywane w kawałkach do skonfigurowanych przekaźników XFTP.
+ No comment provided by engineer.
+
Allow
Pozwól
@@ -793,6 +823,11 @@
Kompilacja aplikacji: %@
No comment provided by engineer.
+
+ App data migration
+ Migracja danych aplikacji
+ No comment provided by engineer.
+
App encrypts new local files (except videos).
Aplikacja szyfruje nowe lokalne pliki (bez filmów).
@@ -828,6 +863,21 @@
Wygląd
No comment provided by engineer.
+
+ Apply
+ Zastosuj
+ No comment provided by engineer.
+
+
+ Archive and upload
+ Archiwizuj i prześlij
+ No comment provided by engineer.
+
+
+ Archiving database
+ Archiwizowanie bazy danych
+ No comment provided by engineer.
+
Attach
Dołącz
@@ -1018,6 +1068,11 @@
Anuluj
No comment provided by engineer.
+
+ Cancel migration
+ Anuluj migrację
+ No comment provided by engineer.
+
Cannot access keychain to save database password
Nie można uzyskać dostępu do pęku kluczy, aby zapisać hasło do bazy danych
@@ -1119,6 +1174,11 @@
Czat został zatrzymany. Jeśli korzystałeś już z tej bazy danych na innym urządzeniu, powinieneś przenieść ją z powrotem przed rozpoczęciem czatu.
No comment provided by engineer.
+
+ Chat migrated!
+ Czat zmigrowany!
+ No comment provided by engineer.
+
Chat preferences
Preferencje czatu
@@ -1139,6 +1199,11 @@
Chiński i hiszpański interfejs
No comment provided by engineer.
+
+ Choose _Migrate from another device_ on the new device and scan QR code.
+ Wybierz _Zmigruj z innego urządzenia_ na nowym urządzeniu i zeskanuj kod QR.
+ No comment provided by engineer.
+
Choose file
Wybierz plik
@@ -1209,6 +1274,11 @@
Potwierdź aktualizacje bazy danych
No comment provided by engineer.
+
+ Confirm network settings
+ Potwierdź ustawienia sieciowe
+ No comment provided by engineer.
+
Confirm new passphrase…
Potwierdź nowe hasło…
@@ -1219,6 +1289,16 @@
Potwierdź hasło
No comment provided by engineer.
+
+ Confirm that you remember database passphrase to migrate it.
+ Potwierdź, że pamiętasz hasło do bazy danych, aby ją zmigrować.
+ No comment provided by engineer.
+
+
+ Confirm upload
+ Potwierdź wgranie
+ No comment provided by engineer.
+
Connect
Połącz
@@ -1478,6 +1558,11 @@ To jest twój jednorazowy link!
Utworzony w dniu %@
No comment provided by engineer.
+
+ Creating archive link
+ Tworzenie linku archiwum
+ No comment provided by engineer.
+
Creating link…
Tworzenie linku…
@@ -1698,6 +1783,11 @@ To nie może być cofnięte!
Usuń bazę danych
No comment provided by engineer.
+
+ Delete database from this device
+ Usuń bazę danych z tego urządzenia
+ No comment provided by engineer.
+
Delete file
Usuń plik
@@ -1988,11 +2078,26 @@ To nie może być cofnięte!
Obniż wersję i otwórz czat
No comment provided by engineer.
+
+ Download failed
+ Pobieranie nie udane
+ No comment provided by engineer.
+
Download file
Pobierz plik
server test step
+
+ Downloading archive
+ Pobieranie archiwum
+ No comment provided by engineer.
+
+
+ Downloading link details
+ Pobieranie szczegółów linku
+ No comment provided by engineer.
+
Duplicate display name!
Zduplikowana wyświetlana nazwa!
@@ -2048,6 +2153,11 @@ To nie może być cofnięte!
Włącz dla wszystkich
No comment provided by engineer.
+
+ Enable in direct chats (BETA)!
+ Włącz w czatach bezpośrednich (BETA)!
+ No comment provided by engineer.
+
Enable instant notifications?
Włączyć natychmiastowe powiadomienia?
@@ -2163,6 +2273,11 @@ To nie może być cofnięte!
Wpisz nazwę grupy…
No comment provided by engineer.
+
+ Enter passphrase
+ Wprowadź hasło
+ No comment provided by engineer.
+
Enter passphrase…
Wprowadź hasło…
@@ -2223,6 +2338,11 @@ To nie może być cofnięte!
Błąd dodawania członka(ów)
No comment provided by engineer.
+
+ Error allowing contact PQ encryption
+ Błąd pozwalania kontaktowi na szyfrowanie PQ
+ No comment provided by engineer.
+
Error changing address
Błąd zmiany adresu
@@ -2313,6 +2433,11 @@ To nie może być cofnięte!
Błąd usuwania profilu użytkownika
No comment provided by engineer.
+
+ Error downloading the archive
+ Błąd pobierania archiwum
+ No comment provided by engineer.
+
Error enabling delivery receipts!
Błąd włączania potwierdzeń dostawy!
@@ -2388,6 +2513,11 @@ To nie może być cofnięte!
Błąd zapisu hasła do pęku kluczy
No comment provided by engineer.
+
+ Error saving settings
+ Błąd zapisywania ustawień
+ when migrating
+
Error saving user password
Błąd zapisu hasła użytkownika
@@ -2458,6 +2588,16 @@ To nie może być cofnięte!
Błąd aktualizacji prywatności użytkownika
No comment provided by engineer.
+
+ Error uploading the archive
+ Błąd wgrywania archiwum
+ No comment provided by engineer.
+
+
+ Error verifying passphrase:
+ Błąd weryfikowania hasła:
+ No comment provided by engineer.
+
Error:
Błąd:
@@ -2508,6 +2648,11 @@ To nie może być cofnięte!
Wyeksportowane archiwum bazy danych.
No comment provided by engineer.
+
+ Exported file doesn't exist
+ Wyeksportowany plik nie istnieje
+ No comment provided by engineer.
+
Exporting database archive…
Eksportowanie archiwum bazy danych…
@@ -2578,6 +2723,16 @@ To nie może być cofnięte!
Filtruj nieprzeczytane i ulubione czaty.
No comment provided by engineer.
+
+ Finalize migration
+ Dokończ migrację
+ No comment provided by engineer.
+
+
+ Finalize migration on another device.
+ Dokończ migrację na innym urządzeniu.
+ No comment provided by engineer.
+
Finally, we have them! 🚀
W końcu je mamy! 🚀
@@ -2868,6 +3023,11 @@ To nie może być cofnięte!
Jak korzystać z Twoich serwerów
No comment provided by engineer.
+
+ Hungarian interface
+ Węgierski interfejs
+ No comment provided by engineer.
+
ICE servers (one per line)
Serwery ICE (po jednym na linię)
@@ -2933,6 +3093,16 @@ To nie może być cofnięte!
Importuj bazę danych
No comment provided by engineer.
+
+ Import failed
+ Import nie udał się
+ No comment provided by engineer.
+
+
+ Importing archive
+ Importowanie archiwum
+ No comment provided by engineer.
+
Improved message delivery
Ulepszona dostawa wiadomości
@@ -2948,6 +3118,11 @@ To nie może być cofnięte!
Ulepszona konfiguracja serwera
No comment provided by engineer.
+
+ In order to continue, chat should be stopped.
+ Aby konturować, czat musi zostać zatrzymany.
+ No comment provided by engineer.
+
In reply to
W odpowiedzi na
@@ -3060,6 +3235,11 @@ To nie może być cofnięte!
Nieprawidłowy link
No comment provided by engineer.
+
+ Invalid migration confirmation
+ Nieprawidłowe potwierdzenie migracji
+ No comment provided by engineer.
+
Invalid name!
Nieprawidłowa nazwa!
@@ -3428,6 +3608,11 @@ To jest twój link do grupy %@!
Tekst wiadomości
No comment provided by engineer.
+
+ Message too large
+ Wiadomość jest zbyt duża
+ No comment provided by engineer.
+
Messages
Wiadomości
@@ -3443,11 +3628,56 @@ To jest twój link do grupy %@!
Wiadomości od %@ zostaną pokazane!
No comment provided by engineer.
+
+ Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.
+ Wiadomości, pliki i połączenia są chronione przez **szyfrowanie end-to-end** z doskonałym utajnianiem z wyprzedzeniem i odzyskiem po złamaniu.
+ No comment provided by engineer.
+
+
+ Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.
+ Wiadomości, pliki i połączenia są chronione przez **kwantowo odporne szyfrowanie end-to-end** z doskonałym utajnianiem z wyprzedzeniem i odzyskiem po złamaniu.
+ No comment provided by engineer.
+
+
+ Migrate device
+ Zmigruj urządzenie
+ No comment provided by engineer.
+
+
+ Migrate from another device
+ Zmigruj z innego urządzenia
+ No comment provided by engineer.
+
+
+ Migrate here
+ Zmigruj tutaj
+ No comment provided by engineer.
+
+
+ Migrate to another device
+ Zmigruj do innego urządzenia
+ No comment provided by engineer.
+
+
+ Migrate to another device via QR code.
+ Zmigruj do innego urządzenia przez kod QR.
+ No comment provided by engineer.
+
+
+ Migrating
+ Migrowanie
+ No comment provided by engineer.
+
Migrating database archive…
Migrowanie archiwum bazy danych…
No comment provided by engineer.
+
+ Migration complete
+ Migracja zakończona
+ No comment provided by engineer.
+
Migration error:
Błąd migracji:
@@ -3807,6 +4037,11 @@ To jest twój link do grupy %@!
Grupa otwarta
No comment provided by engineer.
+
+ Open migration to another device
+ Otwórz migrację na innym urządzeniu
+ authentication reason
+
Open user profiles
Otwórz profile użytkownika
@@ -3822,11 +4057,21 @@ To jest twój link do grupy %@!
Otwieranie aplikacji…
No comment provided by engineer.
+
+ Or paste archive link
+ Lub wklej link archiwum
+ No comment provided by engineer.
+
Or scan QR code
Lub zeskanuj kod QR
No comment provided by engineer.
+
+ Or securely share this file link
+ Lub bezpiecznie udostępnij ten link pliku
+ No comment provided by engineer.
+
Or show this code
Lub pokaż ten kod
@@ -3912,6 +4157,11 @@ To jest twój link do grupy %@!
Stały błąd odszyfrowania
message decrypt error item
+
+ Picture-in-picture calls
+ Połączenia obraz-w-obrazie
+ No comment provided by engineer.
+
Please ask your contact to enable sending voice messages.
Poproś Twój kontakt o włączenie wysyłania wiadomości głosowych.
@@ -3932,6 +4182,11 @@ To jest twój link do grupy %@!
Proszę sprawdzić preferencje Twoje i Twojego kontaktu.
No comment provided by engineer.
+
+ Please confirm that network settings are correct for this device.
+ Proszę potwierdzić, że ustawienia sieciowe są prawidłowe dla tego urządzenia.
+ No comment provided by engineer.
+
Please contact developers.
Error: %@
@@ -3989,6 +4244,11 @@ Błąd: %@
Możliwe, że odcisk palca certyfikatu w adresie serwera jest nieprawidłowy
server test error
+
+ Post-quantum E2EE
+ Postkwantowe E2EE
+ No comment provided by engineer.
+
Preserve the last message draft, with attachments.
Zachowaj ostatnią wersję roboczą wiadomości wraz z załącznikami.
@@ -4124,6 +4384,16 @@ Błąd: %@
Powiadomienia push
No comment provided by engineer.
+
+ Push server
+ Serwer Push
+ No comment provided by engineer.
+
+
+ Quantum resistant encryption
+ Kwantowo odporne szyfrowanie
+ No comment provided by engineer.
+
Rate the app
Oceń aplikację
@@ -4309,11 +4579,26 @@ Błąd: %@
Powtórzyć prośbę połączenia?
No comment provided by engineer.
+
+ Repeat download
+ Powtórz pobieranie
+ No comment provided by engineer.
+
+
+ Repeat import
+ Powtórz importowanie
+ No comment provided by engineer.
+
Repeat join request?
Powtórzyć prośbę dołączenia?
No comment provided by engineer.
+
+ Repeat upload
+ Powtórz wgrywanie
+ No comment provided by engineer.
+
Reply
Odpowiedz
@@ -4414,6 +4699,11 @@ Błąd: %@
Serwery SMP
No comment provided by engineer.
+
+ Safer groups
+ Bezpieczniejsze grupy
+ No comment provided by engineer.
+
Save
Zapisz
@@ -4779,6 +5069,11 @@ Błąd: %@
Ustaw pin
No comment provided by engineer.
+
+ Set passphrase
+ Ustaw hasło
+ No comment provided by engineer.
+
Set passphrase to export
Ustaw hasło do eksportu
@@ -4834,6 +5129,11 @@ Błąd: %@
Udostępnij kontaktom
No comment provided by engineer.
+
+ Show QR code
+ Pokaż kod QR
+ No comment provided by engineer.
+
Show calls in phone history
Pokaż połączenia w historii telefonu
@@ -4974,6 +5274,11 @@ Błąd: %@
Zatrzymaj SimpleX
authentication reason
+
+ Stop chat
+ Zatrzymaj czat
+ No comment provided by engineer.
+
Stop chat to enable database actions
Zatrzymaj czat, aby umożliwić działania na bazie danych
@@ -5014,6 +5319,11 @@ Błąd: %@
Przestać udostępniać adres?
No comment provided by engineer.
+
+ Stopping chat
+ Zatrzymywanie czatu
+ No comment provided by engineer.
+
Submit
Zatwierdź
@@ -5261,6 +5571,16 @@ Może się to zdarzyć z powodu jakiegoś błędu lub gdy połączenie jest skom
Tego działania nie można cofnąć - Twój profil, kontakty, wiadomości i pliki zostaną nieodwracalnie utracone.
No comment provided by engineer.
+
+ This chat is protected by end-to-end encryption.
+ Ten czat jest chroniony przez szyfrowanie end-to-end.
+ E2EE info chat item
+
+
+ This chat is protected by quantum resistant end-to-end encryption.
+ Ten czat jest chroniony przez kwantowo odporne szyfrowanie end-to-end.
+ E2EE info chat item
+
This device name
Nazwa tego urządzenia
@@ -5555,11 +5875,21 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc
Zaktualizuj i otwórz czat
No comment provided by engineer.
+
+ Upload failed
+ Wgrywanie nie udane
+ No comment provided by engineer.
+
Upload file
Prześlij plik
server test step
+
+ Uploading archive
+ Wgrywanie archiwum
+ No comment provided by engineer.
+
Use .onion hosts
Użyj hostów .onion
@@ -5610,6 +5940,11 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc
Użyj serwera
No comment provided by engineer.
+
+ Use the app while in the call.
+ Używaj aplikacji podczas połączenia.
+ No comment provided by engineer.
+
User profile
Profil użytkownika
@@ -5645,6 +5980,16 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc
Zweryfikuj połączenia
No comment provided by engineer.
+
+ Verify database passphrase
+ Zweryfikuj hasło bazy danych
+ No comment provided by engineer.
+
+
+ Verify passphrase
+ Zweryfikuj hasło
+ No comment provided by engineer.
+
Verify security code
Weryfikuj kod bezpieczeństwa
@@ -5735,6 +6080,11 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc
Oczekiwanie na film
No comment provided by engineer.
+
+ Warning: starting chat on multiple devices is not supported and will cause message delivery failures
+ Ostrzeżenie: rozpoczęcie czatu na wielu urządzeniach nie jest wspierane i spowoduje niepowodzenia dostarczania wiadomości
+ No comment provided by engineer.
+
Warning: you may lose some data!
Uwaga: możesz stracić niektóre dane!
@@ -5755,6 +6105,11 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc
Wiadomość powitalna
No comment provided by engineer.
+
+ Welcome message is too long
+ Wiadomość powitalna jest zbyt długa
+ No comment provided by engineer.
+
What's new
Co nowego
@@ -5810,6 +6165,11 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc
Ty
No comment provided by engineer.
+
+ You **must not** use the same database on two devices.
+ **Nie możesz** używać tej samej bazy na dwóch urządzeniach.
+ No comment provided by engineer.
+
You accepted connection
Zaakceptowałeś połączenie
@@ -5897,6 +6257,11 @@ Powtórzyć prośbę dołączenia?
Możesz je włączyć później w ustawieniach Prywatności i Bezpieczeństwa aplikacji.
No comment provided by engineer.
+
+ You can give another try.
+ Możesz spróbować ponownie.
+ No comment provided by engineer.
+
You can hide or mute a user profile - swipe it to the right.
Możesz ukryć lub wyciszyć profil użytkownika - przesuń palcem w prawo.
@@ -6291,7 +6656,7 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu.
blocked
zablokowany
- No comment provided by engineer.
+ marked deleted chat item preview text
blocked %@
@@ -6301,7 +6666,7 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu.
blocked by admin
zablokowany przez admina
- blocked chat item
+ marked deleted chat item preview text
bold
@@ -6731,7 +7096,7 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu.
moderated by %@
moderowany przez %@
- No comment provided by engineer.
+ marked deleted chat item preview text
months
@@ -6800,6 +7165,11 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu.
peer-to-peer
No comment provided by engineer.
+
+ quantum resistant e2e encryption
+ kwantowo odporne szyfrowanie e2e
+ chat item text
+
received answer…
otrzymano odpowiedź…
@@ -6875,6 +7245,11 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu.
ustaw nowe zdjęcie profilu
profile update event chat item
+
+ standard end-to-end encryption
+ standardowe szyfrowanie end-to-end
+ chat item text
+
starting…
uruchamianie…
diff --git a/apps/ios/SimpleX Localizations/pt-BR.xcloc/Localized Contents/pt-BR.xliff b/apps/ios/SimpleX Localizations/pt-BR.xcloc/Localized Contents/pt-BR.xliff
index 540a4eada4..b4fa69449f 100644
--- a/apps/ios/SimpleX Localizations/pt-BR.xcloc/Localized Contents/pt-BR.xliff
+++ b/apps/ios/SimpleX Localizations/pt-BR.xcloc/Localized Contents/pt-BR.xliff
@@ -69,7 +69,7 @@
%@ is not verified
- %@ não foi verificado
+ %@ não foi verificado(a)
No comment provided by engineer.
@@ -84,12 +84,12 @@
%d days
- %d dia(s)
+ %d dias
message ttl
%d hours
- %d hora(s)
+ %d horas
message ttl
@@ -99,7 +99,7 @@
%d months
- %d mês(es)
+ %d meses
message ttl
@@ -109,7 +109,7 @@
%d skipped message(s)
- %d mensagem(ns) ignorada(s)
+ %d mensagem(ns) omitida(s)
integrity error chat item
@@ -5189,6 +5189,51 @@ Isso pode acontecer por causa de algum bug ou quando a conexão está comprometi
Desaparecerá: %@
copied message info
+
+ # %@
+ # %@
+ copied message info title, # <title>
+
+
+ ## History
+ ## Histórico
+ copied message info
+
+
+ ## In reply to
+ ## Em resposta a
+ copied message info
+
+
+ %@ connected
+ %@ conectado(a)
+ No comment provided by engineer.
+
+
+ %@, %@ and %lld members
+ %@, %@ e %lld membros
+ No comment provided by engineer.
+
+
+ %@ and %@ connected
+ %@ e %@ conectados
+ No comment provided by engineer.
+
+
+ %@, %@ and %lld other members connected
+ %@, %@ e %lld e outros membros se conectaram
+ No comment provided by engineer.
+
+
+ %@ and %@
+ %@ e %@
+ No comment provided by engineer.
+
+
+ %1$@ at %2$@:
+ %1$@ em %2$@:
+ copied message info, <sender> at <time>
+