From 7c74f02d0178b44f993b687e2b26442405713f69 Mon Sep 17 00:00:00 2001 From: Esra'a Al Shafei Date: Mon, 22 Apr 2024 10:26:41 -0700 Subject: [PATCH 01/25] docs: typo in simplex-chat.md (#4037) typo fix --- docs/protocol/simplex-chat.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/protocol/simplex-chat.md b/docs/protocol/simplex-chat.md index 71d5efcef7..e3d8e88ae0 100644 --- a/docs/protocol/simplex-chat.md +++ b/docs/protocol/simplex-chat.md @@ -10,7 +10,7 @@ Evgeny Poberezkin ## Abstract -SimpleX Chat Protocol is a protocol used to by SimpleX Chat clients to exchange messages. This protocol relies on lower level SimpleX protocols - SimpleX Messaging Protocol (SMP) and SimpleX Messaging Agent protocol. SimpleX Chat Protocol describes the format of messages and the client operations that should be performed when receiving such messages. +SimpleX Chat Protocol is a protocol used by SimpleX Chat clients to exchange messages. This protocol relies on lower level SimpleX protocols - SimpleX Messaging Protocol (SMP) and SimpleX Messaging Agent protocol. SimpleX Chat Protocol describes the format of messages and the client operations that should be performed when receiving such messages. ## Scope From 4c1dfc76d463d48aa1cf29c18528548e7504ea1d Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Tue, 23 Apr 2024 05:26:01 +0700 Subject: [PATCH 02/25] android: sound from speaker fix (#4067) --- .../views/call/CallAudioDeviceManager.kt | 28 +++++++++---------- .../common/views/call/CallView.android.kt | 21 +++++++------- .../chat/simplex/common/views/call/WebRTC.kt | 1 - 3 files changed, 24 insertions(+), 26 deletions(-) diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallAudioDeviceManager.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallAudioDeviceManager.kt index d1376196a9..d9562100cf 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallAudioDeviceManager.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallAudioDeviceManager.kt @@ -18,7 +18,7 @@ interface CallAudioDeviceManagerInterface { fun start() fun stop() // AudioDeviceInfo.AudioDeviceType - fun selectLastExternalDeviceOrDefault(speaker: Boolean, keepAnyNonEarpiece: Boolean) + fun selectLastExternalDeviceOrDefault(speaker: Boolean, keepAnyExternal: Boolean) // AudioDeviceInfo.AudioDeviceType fun selectDevice(id: Int) @@ -74,24 +74,24 @@ class PostSCallAudioDeviceManager: CallAudioDeviceManagerInterface { am.removeOnCommunicationDeviceChangedListener(listener) } - override fun selectLastExternalDeviceOrDefault(speaker: Boolean, keepAnyNonEarpiece: Boolean) { + override fun selectLastExternalDeviceOrDefault(speaker: Boolean, keepAnyExternal: Boolean) { Log.d(TAG, "selectLastExternalDeviceOrDefault: set audio mode, speaker enabled: $speaker") val commDevice = am.communicationDevice - if (keepAnyNonEarpiece && commDevice != null && commDevice.type != AudioDeviceInfo.TYPE_BUILTIN_EARPIECE) { - // some external device or speaker selected already, no need to change it + if (keepAnyExternal && commDevice != null && commDevice.type != AudioDeviceInfo.TYPE_BUILTIN_EARPIECE && commDevice.type != AudioDeviceInfo.TYPE_BUILTIN_SPEAKER) { + // some external device selected already, no need to change it return } - val preferredSecondaryDevice = if (speaker) AudioDeviceInfo.TYPE_BUILTIN_SPEAKER else AudioDeviceInfo.TYPE_BUILTIN_EARPIECE - val externalDevice = devices.value.lastOrNull { it.type != AudioDeviceInfo.TYPE_BUILTIN_SPEAKER && it.type != AudioDeviceInfo.TYPE_BUILTIN_EARPIECE } + val preferredInternalDevice = if (speaker) AudioDeviceInfo.TYPE_BUILTIN_SPEAKER else AudioDeviceInfo.TYPE_BUILTIN_EARPIECE + val externalDevice = devices.value.lastOrNull { it.type != AudioDeviceInfo.TYPE_BUILTIN_EARPIECE && it.type != AudioDeviceInfo.TYPE_BUILTIN_SPEAKER } // External device already selected if (externalDevice != null && externalDevice.type == am.communicationDevice?.type) { return } if (externalDevice != null) { am.setCommunicationDevice(externalDevice) - } else if (am.communicationDevice?.type != preferredSecondaryDevice) { - am.availableCommunicationDevices.firstOrNull { it.type == preferredSecondaryDevice }?.let { + } else if (am.communicationDevice?.type != preferredInternalDevice) { + am.availableCommunicationDevices.firstOrNull { it.type == preferredInternalDevice }?.let { am.setCommunicationDevice(it) } } @@ -136,25 +136,25 @@ class PreSCallAudioDeviceManager: CallAudioDeviceManagerInterface { am.stopBluetoothSco() } - override fun selectLastExternalDeviceOrDefault(speaker: Boolean, keepAnyNonEarpiece: Boolean) { + override fun selectLastExternalDeviceOrDefault(speaker: Boolean, keepAnyExternal: Boolean) { Log.d(TAG, "selectLastExternalDeviceOrDefault: set audio mode, speaker enabled: $speaker") - val preferredSecondaryDevice = if (speaker) AudioDeviceInfo.TYPE_BUILTIN_SPEAKER else AudioDeviceInfo.TYPE_BUILTIN_EARPIECE - val externalDevice = devices.value.lastOrNull { it.type != AudioDeviceInfo.TYPE_BUILTIN_SPEAKER && it.type != AudioDeviceInfo.TYPE_BUILTIN_EARPIECE } + val preferredInternalDevice = if (speaker) AudioDeviceInfo.TYPE_BUILTIN_SPEAKER else AudioDeviceInfo.TYPE_BUILTIN_EARPIECE + val externalDevice = devices.value.lastOrNull { it.type != AudioDeviceInfo.TYPE_BUILTIN_EARPIECE && it.type != AudioDeviceInfo.TYPE_BUILTIN_SPEAKER } if (externalDevice != null) { selectDevice(externalDevice.id) } else { am.stopBluetoothSco() am.isWiredHeadsetOn = false - am.isSpeakerphoneOn = preferredSecondaryDevice == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER + am.isSpeakerphoneOn = preferredInternalDevice == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER am.isBluetoothScoOn = false - val newCurrentDevice = devices.value.firstOrNull { it.type == preferredSecondaryDevice } + val newCurrentDevice = devices.value.firstOrNull { it.type == preferredInternalDevice } adaptToCurrentlyActiveDevice(newCurrentDevice) } } override fun selectDevice(id: Int) { val device = devices.value.lastOrNull { it.id == id } - val isExternalDevice = device != null && device.type != AudioDeviceInfo.TYPE_BUILTIN_SPEAKER && device.type != AudioDeviceInfo.TYPE_BUILTIN_EARPIECE + val isExternalDevice = device != null && device.type != AudioDeviceInfo.TYPE_BUILTIN_EARPIECE && device.type != AudioDeviceInfo.TYPE_BUILTIN_SPEAKER if (isExternalDevice) { am.isSpeakerphoneOn = false if (device?.type == AudioDeviceInfo.TYPE_WIRED_HEADSET || device?.type == AudioDeviceInfo.TYPE_WIRED_HEADPHONES) { diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt index 382d87dccb..f9fb81a3ef 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt @@ -26,7 +26,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow @@ -126,7 +125,7 @@ actual fun ActiveCallView() { // Starting is delayed to make Android <= 11 working good with Bluetooth callAudioDeviceManager.start() } else { - callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.soundSpeaker, true) + callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.supportsVideo(), true) } CallSoundsPlayer.startConnectingCallSound(scope) activeCallWaitDeliveryReceipt(scope) @@ -138,7 +137,7 @@ actual fun ActiveCallView() { // Starting is delayed to make Android <= 11 working good with Bluetooth callAudioDeviceManager.start() } else { - callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.soundSpeaker, true) + callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.supportsVideo(), true) } } is WCallResponse.Answer -> withBGApi { @@ -241,11 +240,10 @@ private fun ActiveCallOverlay(call: Call, chatModel: ChatModel, callAudioDeviceM selectDevice = { callAudioDeviceManager.selectDevice(it.id) }, toggleVideo = { chatModel.callCommand.add(WCallCommand.Media(CallMediaType.Video, enable = !call.videoEnabled)) }, toggleSound = { - var call = chatModel.activeCall.value - if (call != null) { - call = call.copy(soundSpeaker = !call.soundSpeaker) - chatModel.activeCall.value = call - callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.soundSpeaker, true) + val enableSpeaker = callAudioDeviceManager.currentDevice.value?.type == AudioDeviceInfo.TYPE_BUILTIN_EARPIECE + val preferredInternalDevice = callAudioDeviceManager.devices.value.firstOrNull { it.type == if (enableSpeaker) AudioDeviceInfo.TYPE_BUILTIN_SPEAKER else AudioDeviceInfo.TYPE_BUILTIN_EARPIECE } + if (preferredInternalDevice != null) { + callAudioDeviceManager.selectDevice(preferredInternalDevice.id) } }, flipCamera = { chatModel.callCommand.add(WCallCommand.Camera(call.localCamera.flipped)) } @@ -308,7 +306,8 @@ private fun ActiveCallOverlayLayout( currentDevice.value == null || devices.none { it.id == currentDevice.value?.id } ) { - ToggleSoundButton(call, enabled, toggleSound) + val isSpeaker = currentDevice.value?.type == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER + ToggleSoundButton(call, enabled, isSpeaker, toggleSound) } else { ExposedDropDownSettingWithIcon( devices.map { Triple(it, it.icon, if (it.name != null) generalGetString(it.name!!) else it.productName.toString()) }, @@ -404,8 +403,8 @@ private fun ToggleAudioButton(call: Call, enabled: Boolean = true, toggleAudio: } @Composable -private fun ToggleSoundButton(call: Call, enabled: Boolean, toggleSound: () -> Unit) { - if (call.soundSpeaker) { +private fun ToggleSoundButton(call: Call, enabled: Boolean, speaker: Boolean, toggleSound: () -> Unit) { + if (speaker) { ControlButton(call, painterResource(MR.images.ic_volume_up), MR.strings.icon_descr_speaker_off, enabled, toggleSound) } else { ControlButton(call, painterResource(MR.images.ic_volume_down), MR.strings.icon_descr_speaker_on, enabled, toggleSound) diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/call/WebRTC.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/call/WebRTC.kt index 4991cf13bc..0a7231370b 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/call/WebRTC.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/call/WebRTC.kt @@ -20,7 +20,6 @@ data class Call( val sharedKey: String? = null, val audioEnabled: Boolean = true, val videoEnabled: Boolean = localMedia == CallMediaType.Video, - val soundSpeaker: Boolean = localMedia == CallMediaType.Video, var localCamera: VideoCamera = VideoCamera.User, val connectionInfo: ConnectionInfo? = null, var connectedAt: Instant? = null, From 06ac15b282f6b80704b85037cb01709c3e216ac9 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Tue, 23 Apr 2024 00:11:37 +0100 Subject: [PATCH 03/25] 5.7-beta.2: ios 209, android 198, desktop 39 --- apps/ios/SimpleX.xcodeproj/project.pbxproj | 52 +++++++++++----------- apps/multiplatform/gradle.properties | 8 ++-- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index cccc267695..2830c57057 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -29,11 +29,11 @@ 5C116CDC27AABE0400E66D01 /* ContactRequestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C116CDB27AABE0400E66D01 /* ContactRequestView.swift */; }; 5C13730B28156D2700F43030 /* ContactConnectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C13730A28156D2700F43030 /* ContactConnectionView.swift */; }; 5C1A4C1E27A715B700EAD5AD /* ChatItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C1A4C1D27A715B700EAD5AD /* ChatItemView.swift */; }; - 5C2217982BD6B0F200A8B0E7 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217932BD6B0F200A8B0E7 /* libgmp.a */; }; - 5C2217992BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217942BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a */; }; - 5C22179A2BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217952BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a */; }; - 5C22179B2BD6B0F200A8B0E7 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217962BD6B0F200A8B0E7 /* libgmpxx.a */; }; - 5C22179C2BD6B0F200A8B0E7 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217972BD6B0F200A8B0E7 /* libffi.a */; }; + 5C2217A22BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C22179D2BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD-ghc9.6.3.a */; }; + 5C2217A32BD7132100A8B0E7 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C22179E2BD7132100A8B0E7 /* libgmpxx.a */; }; + 5C2217A42BD7132100A8B0E7 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C22179F2BD7132100A8B0E7 /* libffi.a */; }; + 5C2217A52BD7132100A8B0E7 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217A02BD7132100A8B0E7 /* libgmp.a */; }; + 5C2217A62BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217A12BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD.a */; }; 5C2E260727A2941F00F70299 /* SimpleXAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E260627A2941F00F70299 /* SimpleXAPI.swift */; }; 5C2E260B27A30CFA00F70299 /* ChatListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E260A27A30CFA00F70299 /* ChatListView.swift */; }; 5C2E260F27A30FDC00F70299 /* ChatView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E260E27A30FDC00F70299 /* ChatView.swift */; }; @@ -279,11 +279,11 @@ 5C13730A28156D2700F43030 /* ContactConnectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactConnectionView.swift; sourceTree = ""; }; 5C13730C2815740A00F43030 /* DebugJSON.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = DebugJSON.playground; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; 5C1A4C1D27A715B700EAD5AD /* ChatItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatItemView.swift; sourceTree = ""; }; - 5C2217932BD6B0F200A8B0E7 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; - 5C2217942BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a"; sourceTree = ""; }; - 5C2217952BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a"; sourceTree = ""; }; - 5C2217962BD6B0F200A8B0E7 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; - 5C2217972BD6B0F200A8B0E7 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; + 5C22179D2BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD-ghc9.6.3.a"; sourceTree = ""; }; + 5C22179E2BD7132100A8B0E7 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; + 5C22179F2BD7132100A8B0E7 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; + 5C2217A02BD7132100A8B0E7 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; + 5C2217A12BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD.a"; sourceTree = ""; }; 5C245F3C2B501E98001CC39F /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/Localizable.strings; sourceTree = ""; }; 5C245F3D2B501F13001CC39F /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = "tr.lproj/SimpleX--iOS--InfoPlist.strings"; sourceTree = ""; }; 5C245F3E2B501F13001CC39F /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/InfoPlist.strings; sourceTree = ""; }; @@ -525,12 +525,12 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5C22179B2BD6B0F200A8B0E7 /* libgmpxx.a in Frameworks */, + 5C2217A32BD7132100A8B0E7 /* libgmpxx.a in Frameworks */, 5CE2BA93284534B000EC33A6 /* libiconv.tbd in Frameworks */, - 5C22179A2BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a in Frameworks */, - 5C2217992BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a in Frameworks */, - 5C22179C2BD6B0F200A8B0E7 /* libffi.a in Frameworks */, - 5C2217982BD6B0F200A8B0E7 /* libgmp.a in Frameworks */, + 5C2217A22BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD-ghc9.6.3.a in Frameworks */, + 5C2217A42BD7132100A8B0E7 /* libffi.a in Frameworks */, + 5C2217A52BD7132100A8B0E7 /* libgmp.a in Frameworks */, + 5C2217A62BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD.a in Frameworks */, 5CE2BA94284534BB00EC33A6 /* libz.tbd in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -595,11 +595,11 @@ 5C764E5C279C70B7000C6508 /* Libraries */ = { isa = PBXGroup; children = ( - 5C2217972BD6B0F200A8B0E7 /* libffi.a */, - 5C2217932BD6B0F200A8B0E7 /* libgmp.a */, - 5C2217962BD6B0F200A8B0E7 /* libgmpxx.a */, - 5C2217942BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a */, - 5C2217952BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a */, + 5C22179F2BD7132100A8B0E7 /* libffi.a */, + 5C2217A02BD7132100A8B0E7 /* libgmp.a */, + 5C22179E2BD7132100A8B0E7 /* libgmpxx.a */, + 5C22179D2BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD-ghc9.6.3.a */, + 5C2217A12BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD.a */, ); path = Libraries; sourceTree = ""; @@ -1544,7 +1544,7 @@ CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 208; + CURRENT_PROJECT_VERSION = 209; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; @@ -1593,7 +1593,7 @@ CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 208; + CURRENT_PROJECT_VERSION = 209; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; @@ -1679,7 +1679,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 208; + CURRENT_PROJECT_VERSION = 209; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; GCC_OPTIMIZATION_LEVEL = s; @@ -1716,7 +1716,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 208; + CURRENT_PROJECT_VERSION = 209; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; ENABLE_CODE_COVERAGE = NO; @@ -1753,7 +1753,7 @@ CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES; CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 208; + CURRENT_PROJECT_VERSION = 209; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; DYLIB_COMPATIBILITY_VERSION = 1; @@ -1804,7 +1804,7 @@ CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES; CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 208; + CURRENT_PROJECT_VERSION = 209; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; DYLIB_COMPATIBILITY_VERSION = 1; diff --git a/apps/multiplatform/gradle.properties b/apps/multiplatform/gradle.properties index 41e700bcea..a0b0b8839a 100644 --- a/apps/multiplatform/gradle.properties +++ b/apps/multiplatform/gradle.properties @@ -26,11 +26,11 @@ android.enableJetifier=true kotlin.mpp.androidSourceSetLayoutVersion=2 kotlin.jvm.target=11 -android.version_name=5.7-beta.1 -android.version_code=197 +android.version_name=5.7-beta.2 +android.version_code=198 -desktop.version_name=5.7-beta.1 -desktop.version_code=38 +desktop.version_name=5.7-beta.2 +desktop.version_code=39 kotlin.version=1.9.23 gradle.plugin.version=8.2.0 From d864603d013ae0e2d0a3af560dda41595fcca7fb Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Tue, 23 Apr 2024 00:14:02 +0100 Subject: [PATCH 04/25] website: do not build from stable --- .github/workflows/web.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/web.yml b/.github/workflows/web.yml index 039c136464..7fc66308f8 100644 --- a/.github/workflows/web.yml +++ b/.github/workflows/web.yml @@ -4,7 +4,6 @@ on: push: branches: - master - - stable paths: - website/** - images/** From ae9e63d1bebd56fe971076d2a6c0634b4e159245 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Tue, 23 Apr 2024 09:59:16 +0100 Subject: [PATCH 05/25] ios: export localizations --- .../bg.xcloc/Localized Contents/bg.xliff | 38 +++++++++++----- .../cs.xcloc/Localized Contents/cs.xliff | 36 +++++++++++---- .../de.xcloc/Localized Contents/de.xliff | 38 +++++++++++----- .../en.xcloc/Localized Contents/en.xliff | 45 ++++++++++++++----- .../es.xcloc/Localized Contents/es.xliff | 38 +++++++++++----- .../fi.xcloc/Localized Contents/fi.xliff | 36 +++++++++++---- .../fr.xcloc/Localized Contents/fr.xliff | 38 +++++++++++----- .../hu.xcloc/Localized Contents/hu.xliff | 36 +++++++++++---- .../it.xcloc/Localized Contents/it.xliff | 38 +++++++++++----- .../ja.xcloc/Localized Contents/ja.xliff | 36 +++++++++++---- .../nl.xcloc/Localized Contents/nl.xliff | 38 +++++++++++----- .../pl.xcloc/Localized Contents/pl.xliff | 38 +++++++++++----- .../ru.xcloc/Localized Contents/ru.xliff | 38 +++++++++++----- .../th.xcloc/Localized Contents/th.xliff | 36 +++++++++++---- .../tr.xcloc/Localized Contents/tr.xliff | 38 +++++++++++----- .../uk.xcloc/Localized Contents/uk.xliff | 38 +++++++++++----- .../Localized Contents/zh-Hans.xliff | 36 +++++++++++---- 17 files changed, 483 insertions(+), 158 deletions(-) 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 e3129ef52a..d740bd7e1a 100644 --- a/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff +++ b/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff @@ -2349,11 +2349,6 @@ This cannot be undone! Грешка при добавяне на член(ове) No comment provided by engineer. - - Error allowing contact PQ encryption - Грешка при разрешаване на PQ криптиране за контакт - No comment provided by engineer. - Error changing address Грешка при промяна на адреса @@ -2797,6 +2792,10 @@ This cannot be undone! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3159,6 +3158,10 @@ This cannot be undone! В отговор на No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito Инкогнито @@ -3634,6 +3637,10 @@ This is your link for group %@! Реакциите на съобщения са забранени в тази група. No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text Текст на съобщението @@ -3747,6 +3754,10 @@ This is your link for group %@! Очаквайте скоро още подобрения! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Най-вероятно тази връзка е изтрита. @@ -3786,6 +3797,10 @@ This is your link for group %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings Мрежови настройки @@ -4285,11 +4300,6 @@ Error: %@ Въжможно е пръстовият отпечатък на сертификата в адреса на сървъра да е неправилен server test error - - Post-quantum E2EE - Постквантово E2EE - No comment provided by engineer. - Preserve the last message draft, with attachments. Запазете последната чернова на съобщението с прикачени файлове. @@ -6193,6 +6203,10 @@ To connect, please ask your contact to create another connection link and check Когато са налични No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. Когато хората искат да се свържат с вас, можете да ги приемете или отхвърлите. @@ -6207,6 +6221,10 @@ To connect, please ask your contact to create another connection link and check WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. 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 05eb701b86..000dfd11bc 100644 --- a/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff +++ b/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff @@ -2263,10 +2263,6 @@ 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 @@ -2698,6 +2694,10 @@ This cannot be undone! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3050,6 +3050,10 @@ This cannot be undone! V odpovědi na No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito Inkognito @@ -3506,6 +3510,10 @@ This is your link for group %@! Reakce na zprávy jsou v této skupině zakázány. No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text Text zprávy @@ -3610,6 +3618,10 @@ This is your link for group %@! Další vylepšení se chystají již brzy! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Pravděpodobně je toto spojení smazáno. @@ -3649,6 +3661,10 @@ This is your link for group %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings Nastavení sítě @@ -4130,10 +4146,6 @@ 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. @@ -5975,6 +5987,10 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu Když je k dispozici No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. Když někdo požádá o připojení, můžete žádost přijmout nebo odmítnout. @@ -5989,6 +6005,10 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. 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 2e3f324a90..ce943d83d6 100644 --- a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff +++ b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff @@ -2354,11 +2354,6 @@ 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 @@ -2802,6 +2797,10 @@ Das kann nicht rückgängig gemacht werden! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3164,6 +3163,10 @@ Das kann nicht rückgängig gemacht werden! Als Antwort auf No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito Inkognito @@ -3639,6 +3642,10 @@ Das ist Ihr Link für die Gruppe %@! In dieser Gruppe sind Reaktionen auf Nachrichten nicht erlaubt. No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text Nachrichtentext @@ -3754,6 +3761,10 @@ Das ist Ihr Link für die Gruppe %@! Weitere Verbesserungen sind bald verfügbar! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Wahrscheinlich ist diese Verbindung gelöscht worden. @@ -3793,6 +3804,10 @@ Das ist Ihr Link für die Gruppe %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings Netzwerkeinstellungen @@ -4292,11 +4307,6 @@ 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. @@ -6200,6 +6210,10 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s Wenn verfügbar No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. Wenn Personen eine Verbindung anfordern, können Sie diese annehmen oder ablehnen. @@ -6214,6 +6228,10 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. 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 eb06200db9..71e1a726b8 100644 --- a/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff +++ b/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff @@ -2358,11 +2358,6 @@ 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 @@ -2808,6 +2803,11 @@ This cannot be undone! Forward chat item action + + Forward and save messages + Forward and save messages + No comment provided by engineer. + Forwarded Forwarded @@ -3173,6 +3173,11 @@ This cannot be undone! In reply to No comment provided by engineer. + + In-call sounds + In-call sounds + No comment provided by engineer. + Incognito Incognito @@ -3648,6 +3653,11 @@ This is your link for group %@! Message reactions are prohibited in this group. No comment provided by engineer. + + Message source remains private. + Message source remains private. + No comment provided by engineer. + Message text Message text @@ -3763,6 +3773,11 @@ This is your link for group %@! More improvements are coming soon! No comment provided by engineer. + + More reliable network connection. + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Most likely this connection is deleted. @@ -3803,6 +3818,11 @@ This is your link for group %@! Network connection No comment provided by engineer. + + Network management + Network management + No comment provided by engineer. + Network settings Network settings @@ -4304,11 +4324,6 @@ 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. @@ -6220,6 +6235,11 @@ To connect, please ask your contact to create another connection link and check When available No comment provided by engineer. + + When connecting audio and video calls. + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. When people request to connect, you can accept or reject it. @@ -6235,6 +6255,11 @@ To connect, please ask your contact to create another connection link and check WiFi No comment provided by engineer. + + Will be enabled in direct chats! + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet Wired ethernet 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 1af077e059..e388c554a9 100644 --- a/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff +++ b/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff @@ -2354,11 +2354,6 @@ This cannot be undone! Error al añadir miembro(s) No comment provided by engineer. - - Error allowing contact PQ encryption - Error al permitir cifrado PQ al contacto - No comment provided by engineer. - Error changing address Error al cambiar servidor @@ -2802,6 +2797,10 @@ This cannot be undone! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3164,6 +3163,10 @@ This cannot be undone! En respuesta a No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito Incógnito @@ -3639,6 +3642,10 @@ This is your link for group %@! Las reacciones a los mensajes no están permitidas en este grupo. No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text Contacto y texto @@ -3754,6 +3761,10 @@ This is your link for group %@! ¡Pronto habrá más mejoras! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Probablemente la conexión ha sido eliminada. @@ -3793,6 +3804,10 @@ This is your link for group %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings Configuración de red @@ -4292,11 +4307,6 @@ Error: %@ Posiblemente la huella digital del certificado en la dirección del servidor es incorrecta server test error - - Post-quantum E2EE - E2EE post cuántica - No comment provided by engineer. - Preserve the last message draft, with attachments. Conserva el último borrador del mensaje con los datos adjuntos. @@ -6201,6 +6211,10 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb Si disponibles No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. Cuando alguien solicite conectarse podrás aceptar o rechazar la solicitud. @@ -6215,6 +6229,10 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. 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 bb5ee64041..90ce66b8d9 100644 --- a/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff +++ b/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff @@ -2255,10 +2255,6 @@ 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 @@ -2688,6 +2684,10 @@ This cannot be undone! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3040,6 +3040,10 @@ This cannot be undone! Vastauksena No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito Incognito @@ -3496,6 +3500,10 @@ This is your link for group %@! Viestireaktiot ovat kiellettyjä tässä ryhmässä. No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text Viestin teksti @@ -3600,6 +3608,10 @@ This is your link for group %@! Lisää parannuksia on tulossa pian! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Todennäköisesti tämä yhteys on poistettu. @@ -3639,6 +3651,10 @@ This is your link for group %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings Verkkoasetukset @@ -4118,10 +4134,6 @@ 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. @@ -5960,6 +5972,10 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja Kun saatavilla No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. Kun ihmiset pyytävät yhteyden muodostamista, voit hyväksyä tai hylätä sen. @@ -5974,6 +5990,10 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. 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 523a890345..2dcc0dfd0c 100644 --- a/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff +++ b/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff @@ -2354,11 +2354,6 @@ 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 @@ -2802,6 +2797,10 @@ Cette opération ne peut être annulée ! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3164,6 +3163,10 @@ Cette opération ne peut être annulée ! En réponse à No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito Incognito @@ -3639,6 +3642,10 @@ Voici votre lien pour le groupe %@ ! Les réactions aux messages sont interdites dans ce groupe. No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text Texte du message @@ -3754,6 +3761,10 @@ Voici votre lien pour le groupe %@ ! Plus d'améliorations à venir ! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Connexion probablement supprimée. @@ -3793,6 +3804,10 @@ Voici votre lien pour le groupe %@ ! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings Paramètres réseau @@ -4292,11 +4307,6 @@ 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. @@ -6200,6 +6210,10 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien Quand disponible No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. Vous pouvez accepter ou refuser les demandes de contacts. @@ -6214,6 +6228,10 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. diff --git a/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff b/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff index 527bbd2036..1393435dad 100644 --- a/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff +++ b/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff @@ -2331,10 +2331,6 @@ Ezt nem vonható vissza! 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 @@ -2771,6 +2767,10 @@ Ezt nem vonható vissza! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3129,6 +3129,10 @@ Ezt nem vonható vissza! Válasz neki No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito Inkognitó @@ -3603,6 +3607,10 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Ebben a csoportban az üzenetreakciók le vannak tiltva. No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text Üzenet szövege @@ -3708,6 +3716,10 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Hamarosan további fejlesztések érkeznek! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Valószínűleg ez a kapcsolat törlésre került. @@ -3747,6 +3759,10 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings Hálózati beállítások @@ -4241,10 +4257,6 @@ Hiba: %@ 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. @@ -6129,6 +6141,10 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola Amikor elérhető No comment provided by engineer. + + When connecting audio and video calls. + 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. @@ -6143,6 +6159,10 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. 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 e0494c1076..4626e018a2 100644 --- a/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff +++ b/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff @@ -2354,11 +2354,6 @@ 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 @@ -2802,6 +2797,10 @@ Non è reversibile! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3164,6 +3163,10 @@ Non è reversibile! In risposta a No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito Incognito @@ -3639,6 +3642,10 @@ Questo è il tuo link per il gruppo %@! Le reazioni ai messaggi sono vietate in questo gruppo. No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text Testo del messaggio @@ -3754,6 +3761,10 @@ Questo è il tuo link per il gruppo %@! Altri miglioramenti sono in arrivo! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Probabilmente questa connessione è stata eliminata. @@ -3793,6 +3804,10 @@ Questo è il tuo link per il gruppo %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings Impostazioni di rete @@ -4292,11 +4307,6 @@ 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. @@ -6200,6 +6210,10 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e Quando disponibili No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. Quando le persone chiedono di connettersi, puoi accettare o rifiutare. @@ -6214,6 +6228,10 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. 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 6c3c2b37a3..94f85244f9 100644 --- a/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff +++ b/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff @@ -2274,10 +2274,6 @@ This cannot be undone! メンバー追加にエラー発生 No comment provided by engineer. - - Error allowing contact PQ encryption - No comment provided by engineer. - Error changing address アドレス変更にエラー発生 @@ -2707,6 +2703,10 @@ This cannot be undone! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3059,6 +3059,10 @@ This cannot be undone! 返信先 No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito シークレットモード @@ -3514,6 +3518,10 @@ This is your link for group %@! このグループではメッセージへのリアクションは禁止されています。 No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text メッセージ内容 @@ -3618,6 +3626,10 @@ This is your link for group %@! まだまだ改善してまいります! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. おそらく、この接続は削除されています。 @@ -3657,6 +3669,10 @@ This is your link for group %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings ネットワーク設定 @@ -4138,10 +4154,6 @@ Error: %@ サーバアドレスの証明証IDが正しくないかもしれません server test error - - Post-quantum E2EE - No comment provided by engineer. - Preserve the last message draft, with attachments. 添付を含めて、下書きを保存する。 @@ -5972,6 +5984,10 @@ To connect, please ask your contact to create another connection link and check 利用可能時に No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. 接続が要求されたら、それを受け入れるか拒否するかを選択できます。 @@ -5986,6 +6002,10 @@ To connect, please ask your contact to create another connection link and check WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. 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 ceb18f70f2..16b43f3e5d 100644 --- a/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff +++ b/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff @@ -2354,11 +2354,6 @@ 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 @@ -2802,6 +2797,10 @@ Dit kan niet ongedaan gemaakt worden! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3164,6 +3163,10 @@ Dit kan niet ongedaan gemaakt worden! In antwoord op No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito Incognito @@ -3639,6 +3642,10 @@ Dit is jouw link voor groep %@! Reacties op berichten zijn verboden in deze groep. No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text Bericht tekst @@ -3754,6 +3761,10 @@ Dit is jouw link voor groep %@! Meer verbeteringen volgen snel! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Hoogstwaarschijnlijk is deze verbinding verwijderd. @@ -3793,6 +3804,10 @@ Dit is jouw link voor groep %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings Netwerk instellingen @@ -4292,11 +4307,6 @@ 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. @@ -6200,6 +6210,10 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak Wanneer beschikbaar No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. Wanneer mensen vragen om verbinding te maken, kunt u dit accepteren of weigeren. @@ -6214,6 +6228,10 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. 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 a17e654072..a73e253e92 100644 --- a/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff +++ b/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff @@ -2354,11 +2354,6 @@ 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 @@ -2802,6 +2797,10 @@ To nie może być cofnięte! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3164,6 +3163,10 @@ To nie może być cofnięte! W odpowiedzi na No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito Incognito @@ -3639,6 +3642,10 @@ To jest twój link do grupy %@! Reakcje wiadomości są zabronione w tej grupie. No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text Tekst wiadomości @@ -3754,6 +3761,10 @@ To jest twój link do grupy %@! Więcej ulepszeń już wkrótce! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Najprawdopodobniej to połączenie jest usunięte. @@ -3793,6 +3804,10 @@ To jest twój link do grupy %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings Ustawienia sieci @@ -4292,11 +4307,6 @@ Błąd: %@ Możliwe, że odcisk palca certyfikatu w adresie serwera jest nieprawidłowy server test error - - Post-quantum E2EE - Postkwantowe szyfrowanie E2E - No comment provided by engineer. - Preserve the last message draft, with attachments. Zachowaj ostatnią wersję roboczą wiadomości wraz z załącznikami. @@ -6200,6 +6210,10 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc Gdy dostępny No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. Kiedy ludzie proszą o połączenie, możesz je zaakceptować lub odrzucić. @@ -6214,6 +6228,10 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. diff --git a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff index 4e86a6c249..847e16e9f9 100644 --- a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff +++ b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff @@ -2354,11 +2354,6 @@ This cannot be undone! Ошибка при добавлении членов группы No comment provided by engineer. - - Error allowing contact PQ encryption - Ошибка разрешения квантово-устойчивого шифрования - No comment provided by engineer. - Error changing address Ошибка при изменении адреса @@ -2802,6 +2797,10 @@ This cannot be undone! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3164,6 +3163,10 @@ This cannot be undone! В ответ на No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito Инкогнито @@ -3639,6 +3642,10 @@ This is your link for group %@! Реакции на сообщения запрещены в этой группе. No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text Текст сообщения @@ -3754,6 +3761,10 @@ This is your link for group %@! Дополнительные улучшения скоро! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Скорее всего, соединение удалено. @@ -3793,6 +3804,10 @@ This is your link for group %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings Настройки сети @@ -4292,11 +4307,6 @@ Error: %@ Возможно, хэш сертификата в адресе сервера неверный server test error - - Post-quantum E2EE - Квантово-устойчивое E2EE - No comment provided by engineer. - Preserve the last message draft, with attachments. Сохранить последний черновик, вместе с вложениями. @@ -6200,6 +6210,10 @@ To connect, please ask your contact to create another connection link and check Когда возможно No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. Когда Вы получите запрос на соединение, Вы можете принять или отклонить его. @@ -6214,6 +6228,10 @@ To connect, please ask your contact to create another connection link and check WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. diff --git a/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff b/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff index 94f949736f..71654d1578 100644 --- a/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff +++ b/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff @@ -2241,10 +2241,6 @@ This cannot be undone! เกิดข้อผิดพลาดในการเพิ่มสมาชิก No comment provided by engineer. - - Error allowing contact PQ encryption - No comment provided by engineer. - Error changing address เกิดข้อผิดพลาดในการเปลี่ยนที่อยู่ @@ -2673,6 +2669,10 @@ This cannot be undone! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3025,6 +3025,10 @@ This cannot be undone! ในการตอบกลับถึง No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito ไม่ระบุตัวตน @@ -3479,6 +3483,10 @@ This is your link for group %@! ปฏิกิริยาบนข้อความเป็นสิ่งต้องห้ามในกลุ่มนี้ No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text ข้อความ @@ -3583,6 +3591,10 @@ This is your link for group %@! การปรับปรุงเพิ่มเติมกำลังจะมาเร็ว ๆ นี้! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. item status description @@ -3621,6 +3633,10 @@ This is your link for group %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings การตั้งค่าเครือข่าย @@ -4099,10 +4115,6 @@ Error: %@ อาจเป็นไปได้ว่าลายนิ้วมือของ certificate ในที่อยู่เซิร์ฟเวอร์ไม่ถูกต้อง server test error - - Post-quantum E2EE - No comment provided by engineer. - Preserve the last message draft, with attachments. เก็บข้อความที่ร่างไว้ล่าสุดพร้อมไฟล์แนบ @@ -5932,6 +5944,10 @@ To connect, please ask your contact to create another connection link and check เมื่อพร้อมใช้งาน No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. เมื่อมีคนขอเชื่อมต่อ คุณสามารถยอมรับหรือปฏิเสธได้ @@ -5946,6 +5962,10 @@ To connect, please ask your contact to create another connection link and check WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. diff --git a/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff b/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff index 409090a439..f4187ec1db 100644 --- a/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff +++ b/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff @@ -2354,11 +2354,6 @@ Bu geri alınamaz! Üye(ler) eklenirken hata oluştu No comment provided by engineer. - - Error allowing contact PQ encryption - İletişim PQ şifrelemesine izin verirken hata oluştu - No comment provided by engineer. - Error changing address Adres değiştirilirken hata oluştu @@ -2802,6 +2797,10 @@ Bu geri alınamaz! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3164,6 +3163,10 @@ Bu geri alınamaz! Cevap olarak No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito Gizli @@ -3639,6 +3642,10 @@ Bu senin grup için bağlantın %@! Mesaj tepkileri bu grupta yasaklandı. No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text Mesaj yazısı @@ -3754,6 +3761,10 @@ Bu senin grup için bağlantın %@! Daha fazla geliştirmeler yakında geliyor! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Büyük ihtimalle bu bağlantı silinmiş. @@ -3793,6 +3804,10 @@ Bu senin grup için bağlantın %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings Ağ ayarları @@ -4292,11 +4307,6 @@ Hata: %@ Muhtemelen, sunucu adresindeki parmakizi sertifikası doğru değil server test error - - Post-quantum E2EE - Kuantum sonrası E2EE - No comment provided by engineer. - Preserve the last message draft, with attachments. Son mesaj taslağını ekleriyle birlikte koru. @@ -6200,6 +6210,10 @@ Bağlanmak için lütfen kişinizden başka bir bağlantı oluşturmasını iste Mevcut olduğunda No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. İnsanlar bağlantı talebinde bulunduğunda, kabul edebilir veya reddedebilirsiniz. @@ -6214,6 +6228,10 @@ Bağlanmak için lütfen kişinizden başka bir bağlantı oluşturmasını iste WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. diff --git a/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff b/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff index 3290102725..348b06c16c 100644 --- a/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff +++ b/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff @@ -2354,11 +2354,6 @@ This cannot be undone! Помилка додавання користувача(ів) No comment provided by engineer. - - Error allowing contact PQ encryption - Помилка, що дозволяє шифрування контакту PQ - No comment provided by engineer. - Error changing address Помилка зміни адреси @@ -2802,6 +2797,10 @@ This cannot be undone! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3164,6 +3163,10 @@ This cannot be undone! У відповідь на No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito Інкогніто @@ -3639,6 +3642,10 @@ This is your link for group %@! Реакції на повідомлення в цій групі заборонені. No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text Текст повідомлення @@ -3754,6 +3761,10 @@ This is your link for group %@! Незабаром буде ще більше покращень! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Швидше за все, це з'єднання видалено. @@ -3793,6 +3804,10 @@ This is your link for group %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings Налаштування мережі @@ -4292,11 +4307,6 @@ Error: %@ Можливо, в адресі сервера неправильно вказано відбиток сертифіката server test error - - Post-quantum E2EE - Пост-квантовий E2EE - No comment provided by engineer. - Preserve the last message draft, with attachments. Зберегти чернетку останнього повідомлення з вкладеннями. @@ -6200,6 +6210,10 @@ To connect, please ask your contact to create another connection link and check За наявності No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. Коли люди звертаються із запитом на підключення, ви можете прийняти або відхилити його. @@ -6214,6 +6228,10 @@ To connect, please ask your contact to create another connection link and check WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. diff --git a/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff b/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff index fe58fb3278..4190c5bc66 100644 --- a/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff +++ b/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff @@ -2307,10 +2307,6 @@ This cannot be undone! 添加成员错误 No comment provided by engineer. - - Error allowing contact PQ encryption - No comment provided by engineer. - Error changing address 更改地址错误 @@ -2745,6 +2741,10 @@ This cannot be undone! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3102,6 +3102,10 @@ This cannot be undone! 答复 No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito 隐身聊天 @@ -3570,6 +3574,10 @@ This is your link for group %@! 该群组禁用了消息回应。 No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text 消息正文 @@ -3674,6 +3682,10 @@ This is your link for group %@! 更多改进即将推出! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. 此连接很可能已被删除。 @@ -3713,6 +3725,10 @@ This is your link for group %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings 网络设置 @@ -4203,10 +4219,6 @@ Error: %@ 服务器地址中的证书指纹可能不正确 server test error - - Post-quantum E2EE - No comment provided by engineer. - Preserve the last message draft, with attachments. 保留最后的消息草稿及其附件。 @@ -6086,6 +6098,10 @@ To connect, please ask your contact to create another connection link and check 当可用时 No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. 当人们请求连接时,您可以接受或拒绝它。 @@ -6100,6 +6116,10 @@ To connect, please ask your contact to create another connection link and check WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. From 2f79bfb075e8487aba614d667f16613570f2ff88 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Wed, 24 Apr 2024 00:47:15 +0700 Subject: [PATCH 06/25] android: current audio device will be set in init step (#4071) --- .../chat/simplex/common/views/call/CallAudioDeviceManager.kt | 1 + .../kotlin/chat/simplex/common/views/call/CallView.android.kt | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallAudioDeviceManager.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallAudioDeviceManager.kt index d9562100cf..bada85746f 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallAudioDeviceManager.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallAudioDeviceManager.kt @@ -65,6 +65,7 @@ class PostSCallAudioDeviceManager: CallAudioDeviceManagerInterface { override fun start() { am.mode = AudioManager.MODE_IN_COMMUNICATION + currentDevice.value = am.communicationDevice am.registerAudioDeviceCallback(audioCallback, null) am.addOnCommunicationDeviceChangedListener(Executors.newSingleThreadExecutor(), listener) } diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt index f9fb81a3ef..f676772714 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt @@ -94,8 +94,8 @@ actual fun ActiveCallView() { if (wasConnected.value) { CallSoundsPlayer.vibrate() } - dropAudioManagerOverrides() callAudioDeviceManager.stop() + dropAudioManagerOverrides() if (proximityLock?.isHeld == true) { proximityLock.release() } From e5ac472da3f2ac6f89154e7b34517e820c7f4d33 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Wed, 24 Apr 2024 00:51:04 +0700 Subject: [PATCH 07/25] android, desktop: restore message TTL in database settings if confirmation is dismissed (#4072) --- .../kotlin/chat/simplex/common/views/database/DatabaseView.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/database/DatabaseView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/database/DatabaseView.kt index 814ff9969a..40dfbeac73 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/database/DatabaseView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/database/DatabaseView.kt @@ -300,6 +300,7 @@ private fun setChatItemTTLAlert( confirmText = generalGetString(MR.strings.delete_messages), onConfirm = { setCiTTL(m, rhId, selectedChatItemTTL, progressIndicator, appFilesCountAndSize) }, onDismiss = { selectedChatItemTTL.value = m.chatItemTTL.value }, + onDismissRequest = { selectedChatItemTTL.value = m.chatItemTTL.value }, destructive = true, ) } From 944a0b3aad53e04f1b196593b59e44e54bb5feca Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Wed, 24 Apr 2024 01:14:35 +0700 Subject: [PATCH 08/25] android: longer delay before showing keyboard when creating a group (#4073) --- .../kotlin/chat/simplex/common/views/newchat/AddGroupView.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/newchat/AddGroupView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/newchat/AddGroupView.kt index a7bb026f1a..4c63d0a974 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/newchat/AddGroupView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/newchat/AddGroupView.kt @@ -158,7 +158,7 @@ fun AddGroupLayout( ) LaunchedEffect(Unit) { - delay(300) + delay(1000) focusRequester.requestFocus() } } From 642e6d677e28ef1b5cde5d542cf4c29baeffa033 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Wed, 24 Apr 2024 01:14:58 +0700 Subject: [PATCH 09/25] android, desktop: updating delivery tab in chat item info (#4074) --- .../simplex/common/views/chat/ChatView.kt | 41 +++++++++++++------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ChatView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ChatView.kt index 0c9a973a69..21a9cfa7b4 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ChatView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ChatView.kt @@ -1,6 +1,5 @@ package chat.simplex.common.views.chat -import androidx.compose.animation.core.Animatable import androidx.compose.desktop.ui.tooling.preview.Preview import androidx.compose.foundation.* import androidx.compose.foundation.gestures.* @@ -22,7 +21,6 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.intl.Locale import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.graphics.ImageBitmap -import androidx.compose.ui.input.pointer.* import androidx.compose.ui.text.* import androidx.compose.ui.unit.* import chat.simplex.common.model.* @@ -398,23 +396,42 @@ fun ChatView(chatId: String, chatModel: ChatModel, onComposed: suspend (chatId: } }, showItemDetails = { cInfo, cItem -> - withBGApi { + suspend fun loadChatItemInfo(): ChatItemInfo? { val ciInfo = chatModel.controller.apiGetChatItemInfo(chatRh, cInfo.chatType, cInfo.apiId, cItem.id) if (ciInfo != null) { if (chat.chatInfo is ChatInfo.Group) { setGroupMembers(chatRh, chat.chatInfo.groupInfo, chatModel) } - ModalManager.end.closeModals() - ModalManager.end.showModalCloseable(endButtons = { - ShareButton { - clipboard.shareText(itemInfoShareText(chatModel, cItem, ciInfo, chatModel.controller.appPrefs.developerTools.get())) - } - }) { close -> - ChatItemInfoView(chatRh, cItem, ciInfo, devTools = chatModel.controller.appPrefs.developerTools.get()) - KeyChangeEffect(chatModel.chatId.value) { - close() + } + return ciInfo + } + withBGApi { + var initialCiInfo = loadChatItemInfo() ?: return@withBGApi + ModalManager.end.closeModals() + ModalManager.end.showModalCloseable(endButtons = { + ShareButton { + clipboard.shareText(itemInfoShareText(chatModel, cItem, initialCiInfo, chatModel.controller.appPrefs.developerTools.get())) + } + }) { close -> + var ciInfo by remember(cItem.id) { mutableStateOf(initialCiInfo) } + ChatItemInfoView(chatRh, cItem, ciInfo, devTools = chatModel.controller.appPrefs.developerTools.get()) + LaunchedEffect(cItem.id) { + withContext(Dispatchers.Default) { + for (apiResp in controller.messagesChannel) { + val msg = apiResp.resp + if (apiResp.remoteHostId == chatRh && + msg is CR.ChatItemStatusUpdated && + msg.chatItem.chatItem.id == cItem.id + ) { + ciInfo = loadChatItemInfo() ?: return@withContext + initialCiInfo = ciInfo + } + } } } + KeyChangeEffect(chatModel.chatId.value) { + close() + } } } }, From 2807e53d4c155510d2a69d333b8d17d13833080b Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Tue, 23 Apr 2024 19:16:12 +0100 Subject: [PATCH 10/25] ui: traslations (#4070) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Translated using Weblate (Dutch) Currently translated at 99.9% (1728 of 1729 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/ * Translated using Weblate (Dutch) Currently translated at 99.9% (1506 of 1507 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/nl/ * Translated using Weblate (Arabic) Currently translated at 100.0% (1729 of 1729 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1729 of 1729 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1507 of 1507 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ * Translated using Weblate (German) Currently translated at 100.0% (1730 of 1730 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/ * Translated using Weblate (German) Currently translated at 100.0% (1507 of 1507 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/de/ * Translated using Weblate (Italian) Currently translated at 100.0% (1730 of 1730 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/ * Translated using Weblate (Italian) Currently translated at 100.0% (1507 of 1507 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/it/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1730 of 1730 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Romanian) Currently translated at 5.1% (89 of 1730 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ro/ * Translated using Weblate (Chinese (Simplified)) Currently translated at 99.8% (1736 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/ * Translated using Weblate (Japanese) Currently translated at 80.8% (1218 of 1507 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ja/ * Translated using Weblate (Japanese) Currently translated at 100.0% (1738 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ja/ * Translated using Weblate (Lithuanian) Currently translated at 98.5% (1713 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/lt/ * Translated using Weblate (Bulgarian) Currently translated at 100.0% (1507 of 1507 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/bg/ * Translated using Weblate (Bulgarian) Currently translated at 100.0% (1738 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/bg/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1738 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1738 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Romanian) Currently translated at 5.3% (93 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ro/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1507 of 1507 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ * Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (1738 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/ * Translated using Weblate (Lithuanian) Currently translated at 98.8% (1718 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/lt/ * Translated using Weblate (Romanian) Currently translated at 5.4% (94 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ro/ * import/export localizations --------- Co-authored-by: M1K4 Co-authored-by: jonnysemon Co-authored-by: summoner001 Co-authored-by: mlanp Co-authored-by: Random Co-authored-by: Ghost of Sparta Co-authored-by: Flavian <3zorro.1@gmail.com> Co-authored-by: 大王叫我来巡山 Co-authored-by: yokoba0413 Co-authored-by: Anonimas Co-authored-by: elgratea --- .../bg.xcloc/Localized Contents/bg.xliff | 37 ++++++ .../de.xcloc/Localized Contents/de.xliff | 31 ++++- .../it.xcloc/Localized Contents/it.xliff | 29 +++++ .../ja.xcloc/Localized Contents/ja.xliff | 12 +- .../nl.xcloc/Localized Contents/nl.xliff | 28 +++++ apps/ios/bg.lproj/Localizable.strings | 117 +++++++++++++++++- apps/ios/de.lproj/Localizable.strings | 95 ++++++++++++-- apps/ios/es.lproj/Localizable.strings | 6 - apps/ios/fr.lproj/Localizable.strings | 6 - apps/ios/it.lproj/Localizable.strings | 93 +++++++++++++- apps/ios/ja.lproj/Localizable.strings | 12 +- apps/ios/nl.lproj/Localizable.strings | 90 +++++++++++++- apps/ios/pl.lproj/Localizable.strings | 6 - apps/ios/ru.lproj/Localizable.strings | 6 - apps/ios/tr.lproj/Localizable.strings | 6 - apps/ios/uk.lproj/Localizable.strings | 6 - .../commonMain/resources/MR/ar/strings.xml | 14 +++ .../commonMain/resources/MR/bg/strings.xml | 65 ++++++---- .../commonMain/resources/MR/de/strings.xml | 27 +++- .../commonMain/resources/MR/hu/strings.xml | 94 +++++++------- .../commonMain/resources/MR/it/strings.xml | 5 + .../commonMain/resources/MR/ja/strings.xml | 25 ++++ .../commonMain/resources/MR/lt/strings.xml | 30 ++++- .../commonMain/resources/MR/nl/strings.xml | 5 +- .../commonMain/resources/MR/ro/strings.xml | 21 +++- .../resources/MR/zh-rCN/strings.xml | 13 ++ 26 files changed, 729 insertions(+), 150 deletions(-) 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 d740bd7e1a..f62ef9fa92 100644 --- a/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff +++ b/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff @@ -109,6 +109,7 @@ %@ downloaded + %@ изтеглено No comment provided by engineer. @@ -133,6 +134,7 @@ %@ uploaded + %@ качено No comment provided by engineer. @@ -352,6 +354,7 @@ **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. @@ -371,6 +374,7 @@ **Warning**: the archive will be removed. + **Внимание**: архивът ще бъде изтрит. No comment provided by engineer. @@ -741,6 +745,7 @@ Allow to send SimpleX links. + Разрешаване на изпращане на SimpleX линкове. No comment provided by engineer. @@ -1085,6 +1090,7 @@ Cellular + Мобилна мрежа No comment provided by engineer. @@ -1205,6 +1211,7 @@ Choose _Migrate from another device_ on the new device and scan QR code. + Изберете _Мигриране от друго устройство_ на новото устройство и сканирайте QR кода. No comment provided by engineer. @@ -2083,6 +2090,7 @@ This cannot be undone! Download + Изтегли chat item action @@ -2197,6 +2205,7 @@ This cannot be undone! Enabled for + Активирано за No comment provided by engineer. @@ -2721,6 +2730,7 @@ This cannot be undone! Files and media not allowed + Файлове и медия не са разрешени No comment provided by engineer. @@ -2790,6 +2800,7 @@ This cannot be undone! Forward + Препрати chat item action @@ -2798,10 +2809,12 @@ This cannot be undone! Forwarded + Препратено No comment provided by engineer. Forwarded from + Препратено от No comment provided by engineer. @@ -2916,6 +2929,7 @@ This cannot be undone! Group members can send SimpleX links. + Членовете на групата могат да изпращат SimpleX линкове. No comment provided by engineer. @@ -3668,10 +3682,12 @@ This is your link for group %@! 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. + Съобщенията, файловете и разговорите са защитени чрез **квантово устойчиво e2e криптиране** с перфектна секретност при препращане, правдоподобно опровержение и възстановяване при взлом. No comment provided by engineer. @@ -3795,6 +3811,7 @@ This is your link for group %@! Network connection + Мрежова връзка No comment provided by engineer. @@ -3913,6 +3930,7 @@ This is your link for group %@! No network connection + Няма мрежова връзка No comment provided by engineer. @@ -4131,6 +4149,7 @@ This is your link for group %@! Other + Други No comment provided by engineer. @@ -4392,6 +4411,7 @@ Error: %@ Prohibit sending SimpleX links. + Забранете изпращането на SimpleX линкове. No comment provided by engineer. @@ -4526,6 +4546,7 @@ Error: %@ Receiving concurrency + Паралелност на получаване No comment provided by engineer. @@ -4545,6 +4566,7 @@ Error: %@ Recipient(s) can't see who this message is from. + Получателят(ите) не могат да видят от кого е това съобщение. No comment provided by engineer. @@ -4849,6 +4871,7 @@ Error: %@ Saved + Запазено No comment provided by engineer. @@ -4858,6 +4881,7 @@ Error: %@ Saved from + Запазено от No comment provided by engineer. @@ -5287,10 +5311,12 @@ Error: %@ SimpleX links are prohibited in this group. + SimpleX линкове са забранени в тази група. No comment provided by engineer. SimpleX links not allowed + SimpleX линковете не са разрешени No comment provided by engineer. @@ -6131,6 +6157,7 @@ To connect, please ask your contact to create another connection link and check Voice messages not allowed + Гласовите съобщения не са разрешени No comment provided by engineer. @@ -6219,6 +6246,7 @@ To connect, please ask your contact to create another connection link and check WiFi + WiFi No comment provided by engineer. @@ -6227,6 +6255,7 @@ To connect, please ask your contact to create another connection link and check Wired ethernet + Кабелен Ethernet No comment provided by engineer. @@ -6266,6 +6295,7 @@ To connect, please ask your contact to create another connection link and check You **must not** use the same database on two devices. + **Не трябва** да използвате една и съща база данни на две устройства. No comment provided by engineer. @@ -6713,6 +6743,7 @@ SimpleX сървърите не могат да видят вашия профи admins + администратори feature role @@ -6727,6 +6758,7 @@ SimpleX сървърите не могат да видят вашия профи all members + всички членове feature role @@ -7061,6 +7093,7 @@ SimpleX сървърите не могат да видят вашия профи forwarded + препратено No comment provided by engineer. @@ -7272,6 +7305,7 @@ SimpleX сървърите не могат да видят вашия профи owners + собственици feature role @@ -7326,10 +7360,12 @@ SimpleX сървърите не могат да видят вашия профи saved + запазено No comment provided by engineer. saved from %@ + запазено от %@ No comment provided by engineer. @@ -7474,6 +7510,7 @@ SimpleX сървърите не могат да видят вашия профи you + вие No comment provided by engineer. 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 ce943d83d6..2f691fbf88 100644 --- a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff +++ b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff @@ -745,6 +745,7 @@ Allow to send SimpleX links. + Das Senden von SimpleX-Links erlauben. No comment provided by engineer. @@ -1089,6 +1090,7 @@ Cellular + Zellulär No comment provided by engineer. @@ -2088,6 +2090,7 @@ Das kann nicht rückgängig gemacht werden! Download + Herunterladen chat item action @@ -2202,6 +2205,7 @@ Das kann nicht rückgängig gemacht werden! Enabled for + Aktiviert für No comment provided by engineer. @@ -2726,6 +2730,7 @@ Das kann nicht rückgängig gemacht werden! Files and media not allowed + Dateien und Medien sind nicht erlaubt No comment provided by engineer. @@ -2795,6 +2800,7 @@ Das kann nicht rückgängig gemacht werden! Forward + Weiterleiten chat item action @@ -2803,10 +2809,12 @@ Das kann nicht rückgängig gemacht werden! Forwarded + Weitergeleitet No comment provided by engineer. Forwarded from + Weitergeleitet von No comment provided by engineer. @@ -2921,6 +2929,7 @@ Das kann nicht rückgängig gemacht werden! Group members can send SimpleX links. + Gruppenmitglieder können SimpleX-Links senden. No comment provided by engineer. @@ -3802,6 +3811,7 @@ Das ist Ihr Link für die Gruppe %@! Network connection + Netzwerkverbindung No comment provided by engineer. @@ -3920,6 +3930,7 @@ Das ist Ihr Link für die Gruppe %@! No network connection + Keine Netzwerkverbindung No comment provided by engineer. @@ -4138,6 +4149,7 @@ Das ist Ihr Link für die Gruppe %@! Other + Andere No comment provided by engineer. @@ -4399,6 +4411,7 @@ Fehler: %@ Prohibit sending SimpleX links. + Das Senden von SimpleX-Links nicht erlauben. No comment provided by engineer. @@ -4408,7 +4421,7 @@ Fehler: %@ Prohibit sending disappearing messages. - Das Senden von verschwindenden Nachrichten verbieten. + Das Senden von verschwindenden Nachrichten nicht erlauben. No comment provided by engineer. @@ -4533,6 +4546,7 @@ Fehler: %@ Receiving concurrency + Gleichzeitiger Empfang No comment provided by engineer. @@ -4552,6 +4566,7 @@ Fehler: %@ Recipient(s) can't see who this message is from. + Empfänger können nicht sehen, von wem die Nachricht stammt. No comment provided by engineer. @@ -4856,6 +4871,7 @@ Fehler: %@ Saved + Abgespeichert No comment provided by engineer. @@ -4865,6 +4881,7 @@ Fehler: %@ Saved from + Abgespeichert von No comment provided by engineer. @@ -5294,10 +5311,12 @@ Fehler: %@ SimpleX links are prohibited in this group. + In dieser Gruppe sind SimpleX-Links nicht erlaubt. No comment provided by engineer. SimpleX links not allowed + SimpleX-Links sind nicht erlaubt No comment provided by engineer. @@ -6138,6 +6157,7 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s Voice messages not allowed + Sprachnachrichten sind nicht erlaubt No comment provided by engineer. @@ -6226,6 +6246,7 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s WiFi + WiFi No comment provided by engineer. @@ -6234,6 +6255,7 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s Wired ethernet + Kabelgebundenes Netzwerk No comment provided by engineer. @@ -6721,6 +6743,7 @@ SimpleX-Server können Ihr Profil nicht einsehen. admins + Administratoren feature role @@ -6735,6 +6758,7 @@ SimpleX-Server können Ihr Profil nicht einsehen. all members + Alle Mitglieder feature role @@ -7069,6 +7093,7 @@ SimpleX-Server können Ihr Profil nicht einsehen. forwarded + weitergeleitet No comment provided by engineer. @@ -7280,6 +7305,7 @@ SimpleX-Server können Ihr Profil nicht einsehen. owners + Eigentümer feature role @@ -7334,10 +7360,12 @@ SimpleX-Server können Ihr Profil nicht einsehen. saved + abgespeichert No comment provided by engineer. saved from %@ + abgespeichert von %@ No comment provided by engineer. @@ -7482,6 +7510,7 @@ SimpleX-Server können Ihr Profil nicht einsehen. you + Profil No comment provided by engineer. 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 4626e018a2..ae2888c12b 100644 --- a/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff +++ b/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff @@ -745,6 +745,7 @@ Allow to send SimpleX links. + Consenti di inviare link di SimpleX. No comment provided by engineer. @@ -1089,6 +1090,7 @@ Cellular + Mobile No comment provided by engineer. @@ -2088,6 +2090,7 @@ Non è reversibile! Download + Scarica chat item action @@ -2202,6 +2205,7 @@ Non è reversibile! Enabled for + Attivo per No comment provided by engineer. @@ -2726,6 +2730,7 @@ Non è reversibile! Files and media not allowed + File e multimediali non consentiti No comment provided by engineer. @@ -2795,6 +2800,7 @@ Non è reversibile! Forward + Inoltra chat item action @@ -2803,10 +2809,12 @@ Non è reversibile! Forwarded + Inoltrato No comment provided by engineer. Forwarded from + Inoltrato da No comment provided by engineer. @@ -2921,6 +2929,7 @@ Non è reversibile! Group members can send SimpleX links. + I membri del gruppo possono inviare link di Simplex. No comment provided by engineer. @@ -3802,6 +3811,7 @@ Questo è il tuo link per il gruppo %@! Network connection + Connessione di rete No comment provided by engineer. @@ -3920,6 +3930,7 @@ Questo è il tuo link per il gruppo %@! No network connection + Nessuna connessione di rete No comment provided by engineer. @@ -4138,6 +4149,7 @@ Questo è il tuo link per il gruppo %@! Other + Altro No comment provided by engineer. @@ -4399,6 +4411,7 @@ Errore: %@ Prohibit sending SimpleX links. + Vieta l'invio di link di SimpleX. No comment provided by engineer. @@ -4533,6 +4546,7 @@ Errore: %@ Receiving concurrency + Ricezione concomitanza No comment provided by engineer. @@ -4552,6 +4566,7 @@ Errore: %@ Recipient(s) can't see who this message is from. + I destinatari non possono vedere da chi proviene questo messaggio. No comment provided by engineer. @@ -4856,6 +4871,7 @@ Errore: %@ Saved + Salvato No comment provided by engineer. @@ -4865,6 +4881,7 @@ Errore: %@ Saved from + Salvato da No comment provided by engineer. @@ -5294,10 +5311,12 @@ Errore: %@ SimpleX links are prohibited in this group. + I link di SimpleX sono vietati in questo gruppo. No comment provided by engineer. SimpleX links not allowed + Link di SimpleX non consentiti No comment provided by engineer. @@ -6138,6 +6157,7 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e Voice messages not allowed + Messaggi vocali non consentiti No comment provided by engineer. @@ -6226,6 +6246,7 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e WiFi + WiFi No comment provided by engineer. @@ -6234,6 +6255,7 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e Wired ethernet + Cavo ethernet No comment provided by engineer. @@ -6721,6 +6743,7 @@ I server di SimpleX non possono vedere il tuo profilo. admins + amministratori feature role @@ -6735,6 +6758,7 @@ I server di SimpleX non possono vedere il tuo profilo. all members + tutti i membri feature role @@ -7069,6 +7093,7 @@ I server di SimpleX non possono vedere il tuo profilo. forwarded + inoltrato No comment provided by engineer. @@ -7280,6 +7305,7 @@ I server di SimpleX non possono vedere il tuo profilo. owners + proprietari feature role @@ -7334,10 +7360,12 @@ I server di SimpleX non possono vedere il tuo profilo. saved + salvato No comment provided by engineer. saved from %@ + salvato da %@ No comment provided by engineer. @@ -7482,6 +7510,7 @@ I server di SimpleX non possono vedere il tuo profilo. you + tu No comment provided by engineer. 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 94f85244f9..b1f9294387 100644 --- a/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff +++ b/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff @@ -728,7 +728,7 @@ Allow to irreversibly delete sent messages. (24 hours) - 送信済みメッセージの永久削除を許可する。 + 送信済みメッセージの永久削除を許可する。(24時間) No comment provided by engineer. @@ -767,7 +767,7 @@ Allow your contacts to irreversibly delete sent messages. (24 hours) - 送信相手が永久メッセージ削除するのを許可する。 + 送信相手が永久メッセージ削除するのを許可する。(24時間) No comment provided by engineer. @@ -987,7 +987,7 @@ Both you and your contact can irreversibly delete sent messages. (24 hours) - あなたと連絡相手が送信済みメッセージを永久削除できます。 + あなたと連絡相手が送信済みメッセージを永久削除できます。(24時間) No comment provided by engineer. @@ -2818,7 +2818,7 @@ This cannot be undone! Group members can irreversibly delete sent messages. (24 hours) - グループのメンバーがメッセージを完全削除することができます。 + グループのメンバーがメッセージを完全削除することができます。(24時間) No comment provided by engineer. @@ -3890,7 +3890,7 @@ This is your link for group %@! Only you can irreversibly delete messages (your contact can mark them for deletion). (24 hours) - メッセージの完全削除はあなたにしかできません (あなたの連絡先は削除対象とすることができます)。 + メッセージの完全削除はあなたにしかできません (あなたの連絡先は削除対象とすることができます)。(24時間) No comment provided by engineer. @@ -3915,7 +3915,7 @@ This is your link for group %@! Only your contact can irreversibly delete messages (you can mark them for deletion). (24 hours) - メッセージを完全削除できるのはあなたの連絡相手だけです (あなたは削除対象とすることができます)。 + メッセージを完全削除できるのはあなたの連絡相手だけです (あなたは削除対象とすることができます)。(24時間) No comment provided by engineer. 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 16b43f3e5d..87ab966e1d 100644 --- a/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff +++ b/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff @@ -745,6 +745,7 @@ Allow to send SimpleX links. + Sta toe dat SimpleX-links worden verzonden. No comment provided by engineer. @@ -1089,6 +1090,7 @@ Cellular + Mobiel No comment provided by engineer. @@ -2088,6 +2090,7 @@ Dit kan niet ongedaan gemaakt worden! Download + Downloaden chat item action @@ -2202,6 +2205,7 @@ Dit kan niet ongedaan gemaakt worden! Enabled for + Ingeschakeld voor No comment provided by engineer. @@ -2726,6 +2730,7 @@ Dit kan niet ongedaan gemaakt worden! Files and media not allowed + Bestanden en media niet toegestaan No comment provided by engineer. @@ -2795,6 +2800,7 @@ Dit kan niet ongedaan gemaakt worden! Forward + Doorsturen chat item action @@ -2803,10 +2809,12 @@ Dit kan niet ongedaan gemaakt worden! Forwarded + Doorgestuurd No comment provided by engineer. Forwarded from + Doorgestuurd vanuit No comment provided by engineer. @@ -2921,6 +2929,7 @@ Dit kan niet ongedaan gemaakt worden! Group members can send SimpleX links. + Groepsleden kunnen SimpleX-links verzenden. No comment provided by engineer. @@ -3802,6 +3811,7 @@ Dit is jouw link voor groep %@! Network connection + Netwerkverbinding No comment provided by engineer. @@ -3920,6 +3930,7 @@ Dit is jouw link voor groep %@! No network connection + Geen netwerkverbinding No comment provided by engineer. @@ -4138,6 +4149,7 @@ Dit is jouw link voor groep %@! Other + Ander No comment provided by engineer. @@ -4399,6 +4411,7 @@ Fout: %@ Prohibit sending SimpleX links. + Verbied het verzenden van SimpleX-links No comment provided by engineer. @@ -4552,6 +4565,7 @@ Fout: %@ Recipient(s) can't see who this message is from. + Ontvanger(s) kunnen niet zien van wie dit bericht afkomstig is. No comment provided by engineer. @@ -4856,6 +4870,7 @@ Fout: %@ Saved + Opgeslagen No comment provided by engineer. @@ -4865,6 +4880,7 @@ Fout: %@ Saved from + Opgeslagen van No comment provided by engineer. @@ -5294,10 +5310,12 @@ Fout: %@ SimpleX links are prohibited in this group. + SimpleX-links zijn in deze groep verboden. No comment provided by engineer. SimpleX links not allowed + SimpleX-links zijn niet toegestaan No comment provided by engineer. @@ -6138,6 +6156,7 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak Voice messages not allowed + Spraakberichten niet toegestaan No comment provided by engineer. @@ -6226,6 +6245,7 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak WiFi + Wifi No comment provided by engineer. @@ -6234,6 +6254,7 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak Wired ethernet + Bekabeld Ethernet No comment provided by engineer. @@ -6721,6 +6742,7 @@ SimpleX servers kunnen uw profiel niet zien. admins + beheerders feature role @@ -6735,6 +6757,7 @@ SimpleX servers kunnen uw profiel niet zien. all members + alle leden feature role @@ -7069,6 +7092,7 @@ SimpleX servers kunnen uw profiel niet zien. forwarded + doorgestuurd No comment provided by engineer. @@ -7280,6 +7304,7 @@ SimpleX servers kunnen uw profiel niet zien. owners + eigenaren feature role @@ -7334,10 +7359,12 @@ SimpleX servers kunnen uw profiel niet zien. saved + opgeslagen No comment provided by engineer. saved from %@ + opgeslagen van %@ No comment provided by engineer. @@ -7482,6 +7509,7 @@ SimpleX servers kunnen uw profiel niet zien. you + jij No comment provided by engineer. diff --git a/apps/ios/bg.lproj/Localizable.strings b/apps/ios/bg.lproj/Localizable.strings index 7423e4b7c7..7f37591861 100644 --- a/apps/ios/bg.lproj/Localizable.strings +++ b/apps/ios/bg.lproj/Localizable.strings @@ -85,6 +85,9 @@ /* 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)." = "**Най-поверително**: не използвайте сървъра за известия 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." = "**Моля, обърнете внимание**: НЯМА да можете да възстановите или промените паролата, ако я загубите."; @@ -94,6 +97,9 @@ /* No comment provided by engineer. */ "**Warning**: Instant push notifications require passphrase saved in Keychain." = "**Внимание**: Незабавните push известия изискват парола, запазена в Keychain."; +/* No comment provided by engineer. */ +"**Warning**: the archive will be removed." = "**Внимание**: архивът ще бъде изтрит."; + /* No comment provided by engineer. */ "*bold*" = "\\*удебелен*"; @@ -136,6 +142,9 @@ /* No comment provided by engineer. */ "%@ connected" = "%@ свързан"; +/* No comment provided by engineer. */ +"%@ downloaded" = "%@ изтеглено"; + /* notification title */ "%@ is connected!" = "%@ е свързан!"; @@ -148,6 +157,9 @@ /* No comment provided by engineer. */ "%@ servers" = "%@ сървъри"; +/* No comment provided by engineer. */ +"%@ uploaded" = "%@ качено"; + /* notification title */ "%@ wants to connect!" = "%@ иска да се свърже!"; @@ -377,6 +389,9 @@ /* member role */ "admin" = "админ"; +/* feature role */ +"admins" = "администратори"; + /* No comment provided by engineer. */ "Admins can block a member for all." = "Администраторите могат да блокират член за всички."; @@ -404,6 +419,9 @@ /* No comment provided by engineer. */ "All group members will remain connected." = "Всички членове на групата ще останат свързани."; +/* feature role */ +"all members" = "всички членове"; + /* No comment provided by engineer. */ "All messages will be deleted - this cannot be undone!" = "Всички съобщения ще бъдат изтрити - това не може да бъде отменено!"; @@ -452,6 +470,9 @@ /* No comment provided by engineer. */ "Allow to send files and media." = "Позволи изпращане на файлове и медия."; +/* No comment provided by engineer. */ +"Allow to send SimpleX links." = "Разрешаване на изпращане на SimpleX линкове."; + /* No comment provided by engineer. */ "Allow to send voice messages." = "Позволи изпращане на гласови съобщения."; @@ -695,6 +716,9 @@ /* No comment provided by engineer. */ "Cannot receive file" = "Файлът не може да бъде получен"; +/* No comment provided by engineer. */ +"Cellular" = "Мобилна мрежа"; + /* No comment provided by engineer. */ "Change" = "Промени"; @@ -780,6 +804,9 @@ /* No comment provided by engineer. */ "Chinese and Spanish interface" = "Китайски и Испански интерфейс"; +/* No comment provided by engineer. */ +"Choose _Migrate from another device_ on the new device and scan QR code." = "Изберете _Мигриране от друго устройство_ на новото устройство и сканирайте QR кода."; + /* No comment provided by engineer. */ "Choose file" = "Избери файл"; @@ -1386,6 +1413,9 @@ /* No comment provided by engineer. */ "Downgrade and open chat" = "Понижи версията и отвори чата"; +/* chat item action */ +"Download" = "Изтегли"; + /* No comment provided by engineer. */ "Download failed" = "Неуспешно изтегляне"; @@ -1461,6 +1491,9 @@ /* enabled status */ "enabled" = "активирано"; +/* No comment provided by engineer. */ +"Enabled for" = "Активирано за"; + /* enabled status */ "enabled for contact" = "активирано за контакт"; @@ -1590,9 +1623,6 @@ /* No comment provided by engineer. */ "Error adding member(s)" = "Грешка при добавяне на член(ове)"; -/* No comment provided by engineer. */ -"Error allowing contact PQ encryption" = "Грешка при разрешаване на PQ криптиране за контакт"; - /* No comment provided by engineer. */ "Error changing address" = "Грешка при промяна на адреса"; @@ -1818,6 +1848,9 @@ /* No comment provided by engineer. */ "Files and media are prohibited in this group." = "Файловете и медията са забранени в тази група."; +/* No comment provided by engineer. */ +"Files and media not allowed" = "Файлове и медия не са разрешени"; + /* No comment provided by engineer. */ "Files and media prohibited!" = "Файловете и медията са забранени!"; @@ -1857,6 +1890,18 @@ /* No comment provided by engineer. */ "For console" = "За конзолата"; +/* chat item action */ +"Forward" = "Препрати"; + +/* No comment provided by engineer. */ +"forwarded" = "препратено"; + +/* No comment provided by engineer. */ +"Forwarded" = "Препратено"; + +/* No comment provided by engineer. */ +"Forwarded from" = "Препратено от"; + /* No comment provided by engineer. */ "Found desktop" = "Намерено настолно устройство"; @@ -1935,6 +1980,9 @@ /* No comment provided by engineer. */ "Group members can send files and media." = "Членовете на групата могат да изпращат файлове и медия."; +/* No comment provided by engineer. */ +"Group members can send SimpleX links." = "Членовете на групата могат да изпращат SimpleX линкове."; + /* No comment provided by engineer. */ "Group members can send voice messages." = "Членовете на групата могат да изпращат гласови съобщения."; @@ -2436,6 +2484,12 @@ /* No comment provided by engineer. */ "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." = "Съобщенията, файловете и разговорите са защитени чрез **квантово устойчиво e2e криптиране** с перфектна секретност при препращане, правдоподобно опровержение и възстановяване при взлом."; + /* No comment provided by engineer. */ "Migrate device" = "Мигрирай устройството"; @@ -2520,6 +2574,9 @@ /* No comment provided by engineer. */ "Network & servers" = "Мрежа и сървъри"; +/* No comment provided by engineer. */ +"Network connection" = "Мрежова връзка"; + /* No comment provided by engineer. */ "Network settings" = "Мрежови настройки"; @@ -2598,6 +2655,9 @@ /* No comment provided by engineer. */ "No history" = "Няма история"; +/* No comment provided by engineer. */ +"No network connection" = "Няма мрежова връзка"; + /* No comment provided by engineer. */ "No permission to record voice message" = "Няма разрешение за запис на гласово съобщение"; @@ -2744,9 +2804,15 @@ /* No comment provided by engineer. */ "Or show this code" = "Или покажи този код"; +/* No comment provided by engineer. */ +"Other" = "Други"; + /* member role */ "owner" = "собственик"; +/* feature role */ +"owners" = "собственици"; + /* No comment provided by engineer. */ "Passcode" = "Код за достъп"; @@ -2849,9 +2915,6 @@ /* server test error */ "Possibly, certificate fingerprint in server address is incorrect" = "Въжможно е пръстовият отпечатък на сертификата в адреса на сървъра да е неправилен"; -/* No comment provided by engineer. */ -"Post-quantum E2EE" = "Постквантово E2EE"; - /* No comment provided by engineer. */ "Preserve the last message draft, with attachments." = "Запазете последната чернова на съобщението с прикачени файлове."; @@ -2915,6 +2978,9 @@ /* No comment provided by engineer. */ "Prohibit sending files and media." = "Забрани изпращането на файлове и медия."; +/* No comment provided by engineer. */ +"Prohibit sending SimpleX links." = "Забранете изпращането на SimpleX линкове."; + /* No comment provided by engineer. */ "Prohibit sending voice messages." = "Забрани изпращането на гласови съобщения."; @@ -2993,6 +3059,9 @@ /* No comment provided by engineer. */ "Receiving address will be changed to a different server. Address change will complete after sender comes online." = "Получаващият адрес ще бъде променен към друг сървър. Промяната на адреса ще завърши, след като подателят е онлайн."; +/* No comment provided by engineer. */ +"Receiving concurrency" = "Паралелност на получаване"; + /* No comment provided by engineer. */ "Receiving file will be stopped." = "Получаващият се файл ще бъде спрян."; @@ -3002,6 +3071,9 @@ /* 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)." = "Скорошна история и подобрен [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. */ +"Recipient(s) can't see who this message is from." = "Получателят(ите) не могат да видят от кого е това съобщение."; + /* No comment provided by engineer. */ "Recipients see updates as you type them." = "Получателите виждат актуализации, докато ги въвеждате."; @@ -3197,6 +3269,18 @@ /* No comment provided by engineer. */ "Save welcome message?" = "Запази съобщението при посрещане?"; +/* No comment provided by engineer. */ +"saved" = "запазено"; + +/* No comment provided by engineer. */ +"Saved" = "Запазено"; + +/* No comment provided by engineer. */ +"Saved from" = "Запазено от"; + +/* No comment provided by engineer. */ +"saved from %@" = "запазено от %@"; + /* message info title */ "Saved message" = "Запазено съобщение"; @@ -3464,6 +3548,12 @@ /* chat feature */ "SimpleX links" = "SimpleX линкове"; +/* No comment provided by engineer. */ +"SimpleX links are prohibited in this group." = "SimpleX линкове са забранени в тази група."; + +/* No comment provided by engineer. */ +"SimpleX links not allowed" = "SimpleX линковете не са разрешени"; + /* No comment provided by engineer. */ "SimpleX Lock" = "SimpleX заключване"; @@ -4028,6 +4118,9 @@ /* No comment provided by engineer. */ "Voice messages are prohibited in this group." = "Гласовите съобщения са забранени в тази група."; +/* No comment provided by engineer. */ +"Voice messages not allowed" = "Гласовите съобщения не са разрешени"; + /* No comment provided by engineer. */ "Voice messages prohibited!" = "Гласовите съобщения са забранени!"; @@ -4085,6 +4178,12 @@ /* 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." = "Когато споделяте инкогнито профил с някого, този профил ще се използва за групите, в които той ви кани."; +/* No comment provided by engineer. */ +"WiFi" = "WiFi"; + +/* No comment provided by engineer. */ +"Wired ethernet" = "Кабелен Ethernet"; + /* No comment provided by engineer. */ "With encrypted files and media." = "С криптирани файлове и медия."; @@ -4106,9 +4205,15 @@ /* pref value */ "yes" = "да"; +/* No comment provided by engineer. */ +"you" = "вие"; + /* No comment provided by engineer. */ "You" = "Вие"; +/* No comment provided by engineer. */ +"You **must not** use the same database on two devices." = "**Не трябва** да използвате една и съща база данни на две устройства."; + /* No comment provided by engineer. */ "You accepted connection" = "Вие приехте връзката"; diff --git a/apps/ios/de.lproj/Localizable.strings b/apps/ios/de.lproj/Localizable.strings index 26af49eeed..18a56444f0 100644 --- a/apps/ios/de.lproj/Localizable.strings +++ b/apps/ios/de.lproj/Localizable.strings @@ -389,6 +389,9 @@ /* member role */ "admin" = "Admin"; +/* feature role */ +"admins" = "Administratoren"; + /* No comment provided by engineer. */ "Admins can block a member for all." = "Administratoren können ein Gruppenmitglied für Alle blockieren."; @@ -416,6 +419,9 @@ /* No comment provided by engineer. */ "All group members will remain connected." = "Alle Gruppenmitglieder bleiben verbunden."; +/* feature role */ +"all members" = "Alle Mitglieder"; + /* No comment provided by engineer. */ "All messages will be deleted - this cannot be undone!" = "Es werden alle Nachrichten gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden!"; @@ -464,6 +470,9 @@ /* No comment provided by engineer. */ "Allow to send files and media." = "Das Senden von Dateien und Medien erlauben."; +/* No comment provided by engineer. */ +"Allow to send SimpleX links." = "Das Senden von SimpleX-Links erlauben."; + /* No comment provided by engineer. */ "Allow to send voice messages." = "Das Senden von Sprachnachrichten erlauben."; @@ -707,6 +716,9 @@ /* No comment provided by engineer. */ "Cannot receive file" = "Datei kann nicht empfangen werden"; +/* No comment provided by engineer. */ +"Cellular" = "Zellulär"; + /* No comment provided by engineer. */ "Change" = "Ändern"; @@ -1401,6 +1413,9 @@ /* No comment provided by engineer. */ "Downgrade and open chat" = "Datenbank herabstufen und den Chat öffnen"; +/* chat item action */ +"Download" = "Herunterladen"; + /* No comment provided by engineer. */ "Download failed" = "Herunterladen fehlgeschlagen"; @@ -1476,6 +1491,9 @@ /* enabled status */ "enabled" = "Aktiviert"; +/* No comment provided by engineer. */ +"Enabled for" = "Aktiviert für"; + /* enabled status */ "enabled for contact" = "Für Kontakt aktiviert"; @@ -1605,9 +1623,6 @@ /* No comment provided by engineer. */ "Error adding member(s)" = "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"; @@ -1833,6 +1848,9 @@ /* No comment provided by engineer. */ "Files and media are prohibited in this group." = "In dieser Gruppe sind Dateien und Medien nicht erlaubt."; +/* No comment provided by engineer. */ +"Files and media not allowed" = "Dateien und Medien sind nicht erlaubt"; + /* No comment provided by engineer. */ "Files and media prohibited!" = "Dateien und Medien sind nicht erlaubt!"; @@ -1872,6 +1890,18 @@ /* No comment provided by engineer. */ "For console" = "Für Konsole"; +/* chat item action */ +"Forward" = "Weiterleiten"; + +/* No comment provided by engineer. */ +"forwarded" = "weitergeleitet"; + +/* No comment provided by engineer. */ +"Forwarded" = "Weitergeleitet"; + +/* No comment provided by engineer. */ +"Forwarded from" = "Weitergeleitet von"; + /* No comment provided by engineer. */ "Found desktop" = "Gefundener Desktop"; @@ -1950,6 +1980,9 @@ /* No comment provided by engineer. */ "Group members can send files and media." = "Gruppenmitglieder können Dateien und Medien senden."; +/* No comment provided by engineer. */ +"Group members can send SimpleX links." = "Gruppenmitglieder können SimpleX-Links senden."; + /* No comment provided by engineer. */ "Group members can send voice messages." = "Gruppenmitglieder können Sprachnachrichten versenden."; @@ -2541,6 +2574,9 @@ /* No comment provided by engineer. */ "Network & servers" = "Netzwerk & Server"; +/* No comment provided by engineer. */ +"Network connection" = "Netzwerkverbindung"; + /* No comment provided by engineer. */ "Network settings" = "Netzwerkeinstellungen"; @@ -2619,6 +2655,9 @@ /* No comment provided by engineer. */ "No history" = "Kein Nachrichtenverlauf"; +/* No comment provided by engineer. */ +"No network connection" = "Keine Netzwerkverbindung"; + /* No comment provided by engineer. */ "No permission to record voice message" = "Keine Berechtigung für das Aufnehmen von Sprachnachrichten"; @@ -2765,9 +2804,15 @@ /* No comment provided by engineer. */ "Or show this code" = "Oder diesen QR-Code anzeigen"; +/* No comment provided by engineer. */ +"Other" = "Andere"; + /* member role */ "owner" = "Eigentümer"; +/* feature role */ +"owners" = "Eigentümer"; + /* No comment provided by engineer. */ "Passcode" = "Zugangscode"; @@ -2870,9 +2915,6 @@ /* server test error */ "Possibly, certificate fingerprint in server address is incorrect" = "Der Fingerabdruck des Zertifikats in der Serveradresse ist wahrscheinlich ungültig"; -/* No comment provided by engineer. */ -"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."; @@ -2931,11 +2973,14 @@ "Prohibit sending direct messages to members." = "Das Senden von Direktnachrichten an Gruppenmitglieder nicht erlauben."; /* No comment provided by engineer. */ -"Prohibit sending disappearing messages." = "Das Senden von verschwindenden Nachrichten verbieten."; +"Prohibit sending disappearing messages." = "Das Senden von verschwindenden Nachrichten nicht erlauben."; /* No comment provided by engineer. */ "Prohibit sending files and media." = "Das Senden von Dateien und Medien nicht erlauben."; +/* No comment provided by engineer. */ +"Prohibit sending SimpleX links." = "Das Senden von SimpleX-Links nicht erlauben."; + /* No comment provided by engineer. */ "Prohibit sending voice messages." = "Das Senden von Sprachnachrichten nicht erlauben."; @@ -3014,6 +3059,9 @@ /* No comment provided by engineer. */ "Receiving address will be changed to a different server. Address change will complete after sender comes online." = "Die Empfängeradresse wird auf einen anderen Server geändert. Der Adresswechsel wird abgeschlossen, wenn der Absender wieder online ist."; +/* No comment provided by engineer. */ +"Receiving concurrency" = "Gleichzeitiger Empfang"; + /* No comment provided by engineer. */ "Receiving file will be stopped." = "Der Empfang der Datei wird beendet."; @@ -3023,6 +3071,9 @@ /* 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)." = "Aktueller Nachrichtenverlauf und verbesserter [Gruppenverzeichnis-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)."; +/* No comment provided by engineer. */ +"Recipient(s) can't see who this message is from." = "Empfänger können nicht sehen, von wem die Nachricht stammt."; + /* No comment provided by engineer. */ "Recipients see updates as you type them." = "Die Empfänger sehen Nachrichtenaktualisierungen, während Sie sie eingeben."; @@ -3218,6 +3269,18 @@ /* No comment provided by engineer. */ "Save welcome message?" = "Begrüßungsmeldung speichern?"; +/* No comment provided by engineer. */ +"saved" = "abgespeichert"; + +/* No comment provided by engineer. */ +"Saved" = "Abgespeichert"; + +/* No comment provided by engineer. */ +"Saved from" = "Abgespeichert von"; + +/* No comment provided by engineer. */ +"saved from %@" = "abgespeichert von %@"; + /* message info title */ "Saved message" = "Gespeicherte Nachricht"; @@ -3485,6 +3548,12 @@ /* chat feature */ "SimpleX links" = "SimpleX-Links"; +/* No comment provided by engineer. */ +"SimpleX links are prohibited in this group." = "In dieser Gruppe sind SimpleX-Links nicht erlaubt."; + +/* No comment provided by engineer. */ +"SimpleX links not allowed" = "SimpleX-Links sind nicht erlaubt"; + /* No comment provided by engineer. */ "SimpleX Lock" = "SimpleX-Sperre"; @@ -4049,6 +4118,9 @@ /* No comment provided by engineer. */ "Voice messages are prohibited in this group." = "In dieser Gruppe sind Sprachnachrichten nicht erlaubt."; +/* No comment provided by engineer. */ +"Voice messages not allowed" = "Sprachnachrichten sind nicht erlaubt"; + /* No comment provided by engineer. */ "Voice messages prohibited!" = "Sprachnachrichten sind nicht erlaubt!"; @@ -4106,6 +4178,12 @@ /* 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." = "Wenn Sie ein Inkognito-Profil mit Jemandem teilen, wird dieses Profil auch für die Gruppen verwendet, für die Sie von diesem Kontakt eingeladen werden."; +/* No comment provided by engineer. */ +"WiFi" = "WiFi"; + +/* No comment provided by engineer. */ +"Wired ethernet" = "Kabelgebundenes Netzwerk"; + /* No comment provided by engineer. */ "With encrypted files and media." = "Mit verschlüsselten Dateien und Medien."; @@ -4127,6 +4205,9 @@ /* pref value */ "yes" = "Ja"; +/* No comment provided by engineer. */ +"you" = "Profil"; + /* No comment provided by engineer. */ "You" = "Profil"; diff --git a/apps/ios/es.lproj/Localizable.strings b/apps/ios/es.lproj/Localizable.strings index 41f15732d0..8348982190 100644 --- a/apps/ios/es.lproj/Localizable.strings +++ b/apps/ios/es.lproj/Localizable.strings @@ -1605,9 +1605,6 @@ /* No comment provided by engineer. */ "Error adding member(s)" = "Error al añadir miembro(s)"; -/* No comment provided by engineer. */ -"Error allowing contact PQ encryption" = "Error al permitir cifrado PQ al contacto"; - /* No comment provided by engineer. */ "Error changing address" = "Error al cambiar servidor"; @@ -2870,9 +2867,6 @@ /* server test error */ "Possibly, certificate fingerprint in server address is incorrect" = "Posiblemente la huella digital del certificado en la dirección del servidor es incorrecta"; -/* No comment provided by engineer. */ -"Post-quantum E2EE" = "E2EE post cuántica"; - /* No comment provided by engineer. */ "Preserve the last message draft, with attachments." = "Conserva el último borrador del mensaje con los datos adjuntos."; diff --git a/apps/ios/fr.lproj/Localizable.strings b/apps/ios/fr.lproj/Localizable.strings index a39cd14fa7..264a0b1299 100644 --- a/apps/ios/fr.lproj/Localizable.strings +++ b/apps/ios/fr.lproj/Localizable.strings @@ -1605,9 +1605,6 @@ /* No comment provided by engineer. */ "Error adding member(s)" = "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"; @@ -2870,9 +2867,6 @@ /* server test error */ "Possibly, certificate fingerprint in server address is incorrect" = "Il est possible que l'empreinte du certificat dans l'adresse du serveur soit incorrecte"; -/* No comment provided by engineer. */ -"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."; diff --git a/apps/ios/it.lproj/Localizable.strings b/apps/ios/it.lproj/Localizable.strings index 1586a73d7f..6fd4808d45 100644 --- a/apps/ios/it.lproj/Localizable.strings +++ b/apps/ios/it.lproj/Localizable.strings @@ -389,6 +389,9 @@ /* member role */ "admin" = "amministratore"; +/* feature role */ +"admins" = "amministratori"; + /* No comment provided by engineer. */ "Admins can block a member for all." = "Gli amministratori possono bloccare un membro per tutti."; @@ -416,6 +419,9 @@ /* No comment provided by engineer. */ "All group members will remain connected." = "Tutti i membri del gruppo resteranno connessi."; +/* feature role */ +"all members" = "tutti i membri"; + /* No comment provided by engineer. */ "All messages will be deleted - this cannot be undone!" = "Tutti i messaggi verranno eliminati, non è reversibile!"; @@ -464,6 +470,9 @@ /* No comment provided by engineer. */ "Allow to send files and media." = "Consenti l'invio di file e contenuti multimediali."; +/* No comment provided by engineer. */ +"Allow to send SimpleX links." = "Consenti di inviare link di SimpleX."; + /* No comment provided by engineer. */ "Allow to send voice messages." = "Permetti l'invio di messaggi vocali."; @@ -707,6 +716,9 @@ /* No comment provided by engineer. */ "Cannot receive file" = "Impossibile ricevere il file"; +/* No comment provided by engineer. */ +"Cellular" = "Mobile"; + /* No comment provided by engineer. */ "Change" = "Cambia"; @@ -1401,6 +1413,9 @@ /* No comment provided by engineer. */ "Downgrade and open chat" = "Esegui downgrade e apri chat"; +/* chat item action */ +"Download" = "Scarica"; + /* No comment provided by engineer. */ "Download failed" = "Scaricamento fallito"; @@ -1476,6 +1491,9 @@ /* enabled status */ "enabled" = "attivato"; +/* No comment provided by engineer. */ +"Enabled for" = "Attivo per"; + /* enabled status */ "enabled for contact" = "attivato per il contatto"; @@ -1605,9 +1623,6 @@ /* No comment provided by engineer. */ "Error adding member(s)" = "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"; @@ -1833,6 +1848,9 @@ /* No comment provided by engineer. */ "Files and media are prohibited in this group." = "File e contenuti multimediali sono vietati in questo gruppo."; +/* No comment provided by engineer. */ +"Files and media not allowed" = "File e multimediali non consentiti"; + /* No comment provided by engineer. */ "Files and media prohibited!" = "File e contenuti multimediali vietati!"; @@ -1872,6 +1890,18 @@ /* No comment provided by engineer. */ "For console" = "Per console"; +/* chat item action */ +"Forward" = "Inoltra"; + +/* No comment provided by engineer. */ +"forwarded" = "inoltrato"; + +/* No comment provided by engineer. */ +"Forwarded" = "Inoltrato"; + +/* No comment provided by engineer. */ +"Forwarded from" = "Inoltrato da"; + /* No comment provided by engineer. */ "Found desktop" = "Desktop trovato"; @@ -1950,6 +1980,9 @@ /* No comment provided by engineer. */ "Group members can send files and media." = "I membri del gruppo possono inviare file e contenuti multimediali."; +/* No comment provided by engineer. */ +"Group members can send SimpleX links." = "I membri del gruppo possono inviare link di Simplex."; + /* No comment provided by engineer. */ "Group members can send voice messages." = "I membri del gruppo possono inviare messaggi vocali."; @@ -2541,6 +2574,9 @@ /* No comment provided by engineer. */ "Network & servers" = "Rete e server"; +/* No comment provided by engineer. */ +"Network connection" = "Connessione di rete"; + /* No comment provided by engineer. */ "Network settings" = "Impostazioni di rete"; @@ -2619,6 +2655,9 @@ /* No comment provided by engineer. */ "No history" = "Nessuna cronologia"; +/* No comment provided by engineer. */ +"No network connection" = "Nessuna connessione di rete"; + /* No comment provided by engineer. */ "No permission to record voice message" = "Nessuna autorizzazione per registrare messaggi vocali"; @@ -2765,9 +2804,15 @@ /* No comment provided by engineer. */ "Or show this code" = "O mostra questo codice"; +/* No comment provided by engineer. */ +"Other" = "Altro"; + /* member role */ "owner" = "proprietario"; +/* feature role */ +"owners" = "proprietari"; + /* No comment provided by engineer. */ "Passcode" = "Codice di accesso"; @@ -2870,9 +2915,6 @@ /* server test error */ "Possibly, certificate fingerprint in server address is incorrect" = "Probabilmente l'impronta del certificato nell'indirizzo del server è sbagliata"; -/* No comment provided by engineer. */ -"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."; @@ -2936,6 +2978,9 @@ /* No comment provided by engineer. */ "Prohibit sending files and media." = "Proibisci l'invio di file e contenuti multimediali."; +/* No comment provided by engineer. */ +"Prohibit sending SimpleX links." = "Vieta l'invio di link di SimpleX."; + /* No comment provided by engineer. */ "Prohibit sending voice messages." = "Proibisci l'invio di messaggi vocali."; @@ -3014,6 +3059,9 @@ /* No comment provided by engineer. */ "Receiving address will be changed to a different server. Address change will complete after sender comes online." = "L'indirizzo di ricezione verrà cambiato in un server diverso. La modifica dell'indirizzo verrà completata dopo che il mittente sarà in linea."; +/* No comment provided by engineer. */ +"Receiving concurrency" = "Ricezione concomitanza"; + /* No comment provided by engineer. */ "Receiving file will be stopped." = "La ricezione del file verrà interrotta."; @@ -3023,6 +3071,9 @@ /* 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)." = "Cronologia recente e [bot della directory](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) migliorato."; +/* No comment provided by engineer. */ +"Recipient(s) can't see who this message is from." = "I destinatari non possono vedere da chi proviene questo messaggio."; + /* No comment provided by engineer. */ "Recipients see updates as you type them." = "I destinatari vedono gli aggiornamenti mentre li digiti."; @@ -3218,6 +3269,18 @@ /* No comment provided by engineer. */ "Save welcome message?" = "Salvare il messaggio di benvenuto?"; +/* No comment provided by engineer. */ +"saved" = "salvato"; + +/* No comment provided by engineer. */ +"Saved" = "Salvato"; + +/* No comment provided by engineer. */ +"Saved from" = "Salvato da"; + +/* No comment provided by engineer. */ +"saved from %@" = "salvato da %@"; + /* message info title */ "Saved message" = "Messaggio salvato"; @@ -3485,6 +3548,12 @@ /* chat feature */ "SimpleX links" = "Link di SimpleX"; +/* No comment provided by engineer. */ +"SimpleX links are prohibited in this group." = "I link di SimpleX sono vietati in questo gruppo."; + +/* No comment provided by engineer. */ +"SimpleX links not allowed" = "Link di SimpleX non consentiti"; + /* No comment provided by engineer. */ "SimpleX Lock" = "SimpleX Lock"; @@ -4049,6 +4118,9 @@ /* No comment provided by engineer. */ "Voice messages are prohibited in this group." = "I messaggi vocali sono vietati in questo gruppo."; +/* No comment provided by engineer. */ +"Voice messages not allowed" = "Messaggi vocali non consentiti"; + /* No comment provided by engineer. */ "Voice messages prohibited!" = "Messaggi vocali vietati!"; @@ -4106,6 +4178,12 @@ /* 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." = "Quando condividi un profilo in incognito con qualcuno, questo profilo verrà utilizzato per i gruppi a cui ti invitano."; +/* No comment provided by engineer. */ +"WiFi" = "WiFi"; + +/* No comment provided by engineer. */ +"Wired ethernet" = "Cavo ethernet"; + /* No comment provided by engineer. */ "With encrypted files and media." = "Con file e multimediali criptati."; @@ -4127,6 +4205,9 @@ /* pref value */ "yes" = "sì"; +/* No comment provided by engineer. */ +"you" = "tu"; + /* No comment provided by engineer. */ "You" = "Tu"; diff --git a/apps/ios/ja.lproj/Localizable.strings b/apps/ios/ja.lproj/Localizable.strings index 6e560194c7..cdcd9a598b 100644 --- a/apps/ios/ja.lproj/Localizable.strings +++ b/apps/ios/ja.lproj/Localizable.strings @@ -435,7 +435,7 @@ "Allow sending disappearing messages." = "消えるメッセージの送信を許可する。"; /* No comment provided by engineer. */ -"Allow to irreversibly delete sent messages. (24 hours)" = "送信済みメッセージの永久削除を許可する。"; +"Allow to irreversibly delete sent messages. (24 hours)" = "送信済みメッセージの永久削除を許可する。(24時間)"; /* No comment provided by engineer. */ "Allow to send files and media." = "ファイルやメディアの送信を許可する。"; @@ -456,7 +456,7 @@ "Allow your contacts to call you." = "連絡先からの通話を許可する。"; /* No comment provided by engineer. */ -"Allow your contacts to irreversibly delete sent messages. (24 hours)" = "送信相手が永久メッセージ削除するのを許可する。"; +"Allow your contacts to irreversibly delete sent messages. (24 hours)" = "送信相手が永久メッセージ削除するのを許可する。(24時間)"; /* No comment provided by engineer. */ "Allow your contacts to send disappearing messages." = "送信相手が消えるメッセージを送るのを許可する。"; @@ -567,7 +567,7 @@ "Both you and your contact can add message reactions." = "自分も相手もメッセージへのリアクションを追加できます。"; /* No comment provided by engineer. */ -"Both you and your contact can irreversibly delete sent messages. (24 hours)" = "あなたと連絡相手が送信済みメッセージを永久削除できます。"; +"Both you and your contact can irreversibly delete sent messages. (24 hours)" = "あなたと連絡相手が送信済みメッセージを永久削除できます。(24時間)"; /* No comment provided by engineer. */ "Both you and your contact can make calls." = "あなたからも連絡先からも通話ができます。"; @@ -1639,7 +1639,7 @@ "Group members can add message reactions." = "グループメンバーはメッセージへのリアクションを追加できます。"; /* No comment provided by engineer. */ -"Group members can irreversibly delete sent messages. (24 hours)" = "グループのメンバーがメッセージを完全削除することができます。"; +"Group members can irreversibly delete sent messages. (24 hours)" = "グループのメンバーがメッセージを完全削除することができます。(24時間)"; /* No comment provided by engineer. */ "Group members can send direct messages." = "グループのメンバーがダイレクトメッセージを送信できます。"; @@ -2280,7 +2280,7 @@ "Only you can add message reactions." = "メッセージへのリアクションを追加できるのは、あなただけです。"; /* No comment provided by engineer. */ -"Only you can irreversibly delete messages (your contact can mark them for deletion). (24 hours)" = "メッセージの完全削除はあなたにしかできません (あなたの連絡先は削除対象とすることができます)。"; +"Only you can irreversibly delete messages (your contact can mark them for deletion). (24 hours)" = "メッセージの完全削除はあなたにしかできません (あなたの連絡先は削除対象とすることができます)。(24時間)"; /* No comment provided by engineer. */ "Only you can make calls." = "自分からのみ通話ができます。"; @@ -2295,7 +2295,7 @@ "Only your contact can add message reactions." = "メッセージへのリアクションを追加できるのは連絡先だけです。"; /* No comment provided by engineer. */ -"Only your contact can irreversibly delete messages (you can mark them for deletion). (24 hours)" = "メッセージを完全削除できるのはあなたの連絡相手だけです (あなたは削除対象とすることができます)。"; +"Only your contact can irreversibly delete messages (you can mark them for deletion). (24 hours)" = "メッセージを完全削除できるのはあなたの連絡相手だけです (あなたは削除対象とすることができます)。(24時間)"; /* No comment provided by engineer. */ "Only your contact can make calls." = "連絡先からのみ通話ができます。"; diff --git a/apps/ios/nl.lproj/Localizable.strings b/apps/ios/nl.lproj/Localizable.strings index 1b3e8bfd54..c3417d5145 100644 --- a/apps/ios/nl.lproj/Localizable.strings +++ b/apps/ios/nl.lproj/Localizable.strings @@ -389,6 +389,9 @@ /* member role */ "admin" = "Beheerder"; +/* feature role */ +"admins" = "beheerders"; + /* No comment provided by engineer. */ "Admins can block a member for all." = "Beheerders kunnen een lid voor iedereen blokkeren."; @@ -416,6 +419,9 @@ /* No comment provided by engineer. */ "All group members will remain connected." = "Alle groepsleden blijven verbonden."; +/* feature role */ +"all members" = "alle leden"; + /* No comment provided by engineer. */ "All messages will be deleted - this cannot be undone!" = "Alle berichten worden verwijderd. Dit kan niet ongedaan worden gemaakt!"; @@ -464,6 +470,9 @@ /* No comment provided by engineer. */ "Allow to send files and media." = "Sta toe om bestanden en media te verzenden."; +/* No comment provided by engineer. */ +"Allow to send SimpleX links." = "Sta toe dat SimpleX-links worden verzonden."; + /* No comment provided by engineer. */ "Allow to send voice messages." = "Sta toe om spraak berichten te verzenden."; @@ -707,6 +716,9 @@ /* No comment provided by engineer. */ "Cannot receive file" = "Kan bestand niet ontvangen"; +/* No comment provided by engineer. */ +"Cellular" = "Mobiel"; + /* No comment provided by engineer. */ "Change" = "Veranderen"; @@ -1401,6 +1413,9 @@ /* No comment provided by engineer. */ "Downgrade and open chat" = "Downgraden en chat openen"; +/* chat item action */ +"Download" = "Downloaden"; + /* No comment provided by engineer. */ "Download failed" = "Download mislukt"; @@ -1476,6 +1491,9 @@ /* enabled status */ "enabled" = "ingeschakeld"; +/* No comment provided by engineer. */ +"Enabled for" = "Ingeschakeld voor"; + /* enabled status */ "enabled for contact" = "ingeschakeld voor contact"; @@ -1605,9 +1623,6 @@ /* No comment provided by engineer. */ "Error adding member(s)" = "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"; @@ -1833,6 +1848,9 @@ /* No comment provided by engineer. */ "Files and media are prohibited in this group." = "Bestanden en media zijn verboden in deze groep."; +/* No comment provided by engineer. */ +"Files and media not allowed" = "Bestanden en media niet toegestaan"; + /* No comment provided by engineer. */ "Files and media prohibited!" = "Bestanden en media verboden!"; @@ -1872,6 +1890,18 @@ /* No comment provided by engineer. */ "For console" = "Voor console"; +/* chat item action */ +"Forward" = "Doorsturen"; + +/* No comment provided by engineer. */ +"forwarded" = "doorgestuurd"; + +/* No comment provided by engineer. */ +"Forwarded" = "Doorgestuurd"; + +/* No comment provided by engineer. */ +"Forwarded from" = "Doorgestuurd vanuit"; + /* No comment provided by engineer. */ "Found desktop" = "Desktop gevonden"; @@ -1950,6 +1980,9 @@ /* No comment provided by engineer. */ "Group members can send files and media." = "Groepsleden kunnen bestanden en media verzenden."; +/* No comment provided by engineer. */ +"Group members can send SimpleX links." = "Groepsleden kunnen SimpleX-links verzenden."; + /* No comment provided by engineer. */ "Group members can send voice messages." = "Groepsleden kunnen spraak berichten verzenden."; @@ -2541,6 +2574,9 @@ /* No comment provided by engineer. */ "Network & servers" = "Netwerk & servers"; +/* No comment provided by engineer. */ +"Network connection" = "Netwerkverbinding"; + /* No comment provided by engineer. */ "Network settings" = "Netwerk instellingen"; @@ -2619,6 +2655,9 @@ /* No comment provided by engineer. */ "No history" = "Geen geschiedenis"; +/* No comment provided by engineer. */ +"No network connection" = "Geen netwerkverbinding"; + /* No comment provided by engineer. */ "No permission to record voice message" = "Geen toestemming om spraakbericht op te nemen"; @@ -2765,9 +2804,15 @@ /* No comment provided by engineer. */ "Or show this code" = "Of laat deze code zien"; +/* No comment provided by engineer. */ +"Other" = "Ander"; + /* member role */ "owner" = "Eigenaar"; +/* feature role */ +"owners" = "eigenaren"; + /* No comment provided by engineer. */ "Passcode" = "Toegangscode"; @@ -2870,9 +2915,6 @@ /* server test error */ "Possibly, certificate fingerprint in server address is incorrect" = "Mogelijk is de certificaat vingerafdruk in het server adres onjuist"; -/* No comment provided by engineer. */ -"Post-quantum E2EE" = "Post-quantum E2EE"; - /* No comment provided by engineer. */ "Preserve the last message draft, with attachments." = "Bewaar het laatste berichtconcept, met bijlagen."; @@ -2936,6 +2978,9 @@ /* No comment provided by engineer. */ "Prohibit sending files and media." = "Verbied het verzenden van bestanden en media."; +/* No comment provided by engineer. */ +"Prohibit sending SimpleX links." = "Verbied het verzenden van SimpleX-links"; + /* No comment provided by engineer. */ "Prohibit sending voice messages." = "Verbieden het verzenden van spraak berichten."; @@ -3023,6 +3068,9 @@ /* 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)." = "Recente geschiedenis en verbeterde [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)."; +/* No comment provided by engineer. */ +"Recipient(s) can't see who this message is from." = "Ontvanger(s) kunnen niet zien van wie dit bericht afkomstig is."; + /* No comment provided by engineer. */ "Recipients see updates as you type them." = "Ontvangers zien updates terwijl u ze typt."; @@ -3218,6 +3266,18 @@ /* No comment provided by engineer. */ "Save welcome message?" = "Welkomst bericht opslaan?"; +/* No comment provided by engineer. */ +"saved" = "opgeslagen"; + +/* No comment provided by engineer. */ +"Saved" = "Opgeslagen"; + +/* No comment provided by engineer. */ +"Saved from" = "Opgeslagen van"; + +/* No comment provided by engineer. */ +"saved from %@" = "opgeslagen van %@"; + /* message info title */ "Saved message" = "Opgeslagen bericht"; @@ -3485,6 +3545,12 @@ /* chat feature */ "SimpleX links" = "SimpleX links"; +/* No comment provided by engineer. */ +"SimpleX links are prohibited in this group." = "SimpleX-links zijn in deze groep verboden."; + +/* No comment provided by engineer. */ +"SimpleX links not allowed" = "SimpleX-links zijn niet toegestaan"; + /* No comment provided by engineer. */ "SimpleX Lock" = "SimpleX Vergrendelen"; @@ -4049,6 +4115,9 @@ /* No comment provided by engineer. */ "Voice messages are prohibited in this group." = "Spraak berichten zijn verboden in deze groep."; +/* No comment provided by engineer. */ +"Voice messages not allowed" = "Spraakberichten niet toegestaan"; + /* No comment provided by engineer. */ "Voice messages prohibited!" = "Spraak berichten verboden!"; @@ -4106,6 +4175,12 @@ /* 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." = "Wanneer je een incognito profiel met iemand deelt, wordt dit profiel gebruikt voor de groepen waarvoor ze je uitnodigen."; +/* No comment provided by engineer. */ +"WiFi" = "Wifi"; + +/* No comment provided by engineer. */ +"Wired ethernet" = "Bekabeld Ethernet"; + /* No comment provided by engineer. */ "With encrypted files and media." = "‐Met versleutelde bestanden en media."; @@ -4127,6 +4202,9 @@ /* pref value */ "yes" = "Ja"; +/* No comment provided by engineer. */ +"you" = "jij"; + /* No comment provided by engineer. */ "You" = "Jij"; diff --git a/apps/ios/pl.lproj/Localizable.strings b/apps/ios/pl.lproj/Localizable.strings index 01ab7f962c..6f5f530973 100644 --- a/apps/ios/pl.lproj/Localizable.strings +++ b/apps/ios/pl.lproj/Localizable.strings @@ -1605,9 +1605,6 @@ /* No comment provided by engineer. */ "Error adding member(s)" = "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"; @@ -2870,9 +2867,6 @@ /* server test error */ "Possibly, certificate fingerprint in server address is incorrect" = "Możliwe, że odcisk palca certyfikatu w adresie serwera jest nieprawidłowy"; -/* No comment provided by engineer. */ -"Post-quantum E2EE" = "Postkwantowe szyfrowanie E2E"; - /* No comment provided by engineer. */ "Preserve the last message draft, with attachments." = "Zachowaj ostatnią wersję roboczą wiadomości wraz z załącznikami."; diff --git a/apps/ios/ru.lproj/Localizable.strings b/apps/ios/ru.lproj/Localizable.strings index 9617a82728..ed6e03508e 100644 --- a/apps/ios/ru.lproj/Localizable.strings +++ b/apps/ios/ru.lproj/Localizable.strings @@ -1605,9 +1605,6 @@ /* No comment provided by engineer. */ "Error adding member(s)" = "Ошибка при добавлении членов группы"; -/* No comment provided by engineer. */ -"Error allowing contact PQ encryption" = "Ошибка разрешения квантово-устойчивого шифрования"; - /* No comment provided by engineer. */ "Error changing address" = "Ошибка при изменении адреса"; @@ -2870,9 +2867,6 @@ /* server test error */ "Possibly, certificate fingerprint in server address is incorrect" = "Возможно, хэш сертификата в адресе сервера неверный"; -/* No comment provided by engineer. */ -"Post-quantum E2EE" = "Квантово-устойчивое E2EE"; - /* No comment provided by engineer. */ "Preserve the last message draft, with attachments." = "Сохранить последний черновик, вместе с вложениями."; diff --git a/apps/ios/tr.lproj/Localizable.strings b/apps/ios/tr.lproj/Localizable.strings index ed8e496a21..7cec6e092f 100644 --- a/apps/ios/tr.lproj/Localizable.strings +++ b/apps/ios/tr.lproj/Localizable.strings @@ -1605,9 +1605,6 @@ /* No comment provided by engineer. */ "Error adding member(s)" = "Üye(ler) eklenirken hata oluştu"; -/* No comment provided by engineer. */ -"Error allowing contact PQ encryption" = "İletişim PQ şifrelemesine izin verirken hata oluştu"; - /* No comment provided by engineer. */ "Error changing address" = "Adres değiştirilirken hata oluştu"; @@ -2870,9 +2867,6 @@ /* server test error */ "Possibly, certificate fingerprint in server address is incorrect" = "Muhtemelen, sunucu adresindeki parmakizi sertifikası doğru değil"; -/* No comment provided by engineer. */ -"Post-quantum E2EE" = "Kuantum sonrası E2EE"; - /* No comment provided by engineer. */ "Preserve the last message draft, with attachments." = "Son mesaj taslağını ekleriyle birlikte koru."; diff --git a/apps/ios/uk.lproj/Localizable.strings b/apps/ios/uk.lproj/Localizable.strings index f857908267..d52efd2b65 100644 --- a/apps/ios/uk.lproj/Localizable.strings +++ b/apps/ios/uk.lproj/Localizable.strings @@ -1605,9 +1605,6 @@ /* No comment provided by engineer. */ "Error adding member(s)" = "Помилка додавання користувача(ів)"; -/* No comment provided by engineer. */ -"Error allowing contact PQ encryption" = "Помилка, що дозволяє шифрування контакту PQ"; - /* No comment provided by engineer. */ "Error changing address" = "Помилка зміни адреси"; @@ -2870,9 +2867,6 @@ /* server test error */ "Possibly, certificate fingerprint in server address is incorrect" = "Можливо, в адресі сервера неправильно вказано відбиток сертифіката"; -/* No comment provided by engineer. */ -"Post-quantum E2EE" = "Пост-квантовий E2EE"; - /* No comment provided by engineer. */ "Preserve the last message draft, with attachments." = "Зберегти чернетку останнього повідомлення з вкладеннями."; diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/ar/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/ar/strings.xml index 48fa354780..1970d28cbb 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/ar/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/ar/strings.xml @@ -1741,4 +1741,18 @@ مفعّل لـ المالكون الملفات والوسائط غير مسموح بها + محوّلة + حوّل الرسالة… + تلقي التزامن + لا يستطيع المُستلم/ون معرفة مَن أرسل هذه الرسالة. + حُفظت + حُفظت مِن + حُفظت مِن %s + السماعة + سماعة الأذن + سماعات الرأس + محوّلة مِن + حُفظت + نزّل + حوّل \ No newline at end of file diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/bg/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/bg/strings.xml index 79b74ee920..cf3972e7b8 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/bg/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/bg/strings.xml @@ -1712,34 +1712,55 @@ Проверете вашата интернет връзка и опитайте отново Внимание: архивът ще бъде изтрит.]]> Активиране в личните чатове (БЕТА)! - Разрешаване на SimpleX изпращане на връзки /линкове/. - 1. препратено -\n2. предадено - Грешка при показване на уведомление -\nГрешка при показване на съобщение - Отворени настройки - "Намерете това разрешение /права/ в настройките на Android и го задайте ръчно." - Друг -\nДруги + Разрешаване на изпращане на SimpleX линкове. + препратено + Грешка при показване на известие, свържете се с разработчиците. + Отвори настройки + Намерете това разрешение в настройките на Android и го задайте ръчно. + Други Мобилна мрежа Няма мрежова връзка - Безжична мрежа - Кабелна мрежа /кабелна технология/ - SimpleX връзките не са разрешени + WiFi + Кабелен Ethernet + SimpleX линковете не са разрешени Гласовите съобщения не са разрешени - Предоставян в настройките + Предоставяне в настройките Мрежова връзка - SimpleX връзки -\nСимпълХикс връзки - Забранено изпращането на SimpleX връзки - Членовете на групата могат да изпращат връзки към SimpleX. - SimpleX връзки са забранени в тази група. - Активиране на -\nАктивиране за - Собственици + SimpleX линкове + Забранете изпращането на SimpleX линкове + Членовете на групата могат да изпращат SimpleX линкове. + SimpleX линкове са забранени в тази група. + Активирано за + собственици Камера Камера и микрофон - Предоставени разрешения + Предоставяне на разрешения Дадени разрешение(я) за извършване на повикване Микрофон + Bluetooth + Слушалки жични + Паралелност на получаване + Препращане и запазване на съобщения + Звуци по време на разговор + запазено + запазено от %s + Запазено + Запазено от + Получателят(ите) не могат да видят от кого е това съобщение. + Изтегли + Препращане на съобщение… + Файлове и медия не са разрешени + всички членове + администратори + Препрати + Слушалки безжични + Препратено + Препратено от + Високоговорител + Ще бъде активирано в личните чатове! + Източникът на съобщението остава скрит. + Управление на мрежата + При свързване на аудио и видео разговори. + По-надеждна мрежова връзка. + Литовски потребителски интерфейс \ No newline at end of file diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml index 60d081bed6..94dc18a9a1 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml @@ -936,7 +936,7 @@ Benötigt mehr Leistung Ihrer Batterie! Der Hintergrundservice läuft permanent ab. Benachrichtigungen werden Ihnen angezeigt, sobald Sie neue Nachrichten erhalten haben.]]> Gruppenlink erstellen Erlauben Sie Ihren Kontakten das Senden von verschwindenden Nachrichten. - Das Senden von verschwindenden Nachrichten verbieten. + Das Senden von verschwindenden Nachrichten nicht erlauben. In dieser Gruppe sind verschwindende Nachrichten nicht erlaubt. Gruppenmitglieder können verschwindende Nachrichten senden. Fügen Sie Server durch Scannen der QR-Codes hinzu. @@ -956,7 +956,7 @@ %dh Gruppen-Links Neu in %s - Das Senden von verschwindenden Nachrichten verbieten. + Das Senden von verschwindenden Nachrichten nicht erlauben. Sicherheits-Gutachten Die Sicherheit von SimpleX Chat wurde von Trail of Bits überprüft. Was ist neu @@ -1811,7 +1811,7 @@ Zellulär Andere WiFi - Kabelgebundenes Ethernet + Kabelgebundenes Netzwerk Dateien und Medien sind nicht erlaubt SimpleX-Links sind nicht erlaubt Sprachnachrichten sind nicht erlaubt @@ -1819,9 +1819,24 @@ Gruppenmitglieder können SimpleX-Links senden. Administratoren Alle Mitglieder - Für aktiviert + Aktiviert für Eigentümer - In dieser Gruppe sind SimpleX-Links verboten. - Das Senden von SimpleX-Links verbieten + In dieser Gruppe sind SimpleX-Links nicht erlaubt. + Das Senden von SimpleX-Links nicht erlauben. Das Senden von SimpleX-Links erlauben. + Lautsprecher + Kopfhörer + Weiterleiten + Bluetooth + Weitergeleitet von + Nachricht weiterleiten… + Kopfhörer + Gleichzeitiger Empfang + Empfänger können nicht sehen, von wem die Nachricht stammt. + abgespeichert von %s + Abgespeichert + abgespeichert + Weitergeleitet + Abgespeichert von + Herunterladen \ No newline at end of file diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/hu/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/hu/strings.xml index 285e55d9a6..60c36757df 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/hu/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/hu/strings.xml @@ -99,7 +99,7 @@ Hozzáadás egy másik eszközhöz Az üzenetreakciók küldése engedélyezve van. Fájl előnézet megszakítása - Minden csoporttag csatlakozva marad. + Minden csoporttag kapcsolatban marad. Több akkumulátort használ! Háttérszolgáltatás mindig fut - az értesítések megjelennek, amint az üzenetek elérhetővé válnak.]]> Letiltás admin @@ -161,7 +161,7 @@ Hívás folyamatban Mindkét fél küldhet üzenetreakciókat. Mindkét fél tud hívásokat indítani. - Hitelesítés sikertelen + Sikertelen hitelesítés Minden %s által írt új üzenet elrejtésre kerül! Alkalmazás verzió: v%s Hívások engedélyezése kizárólag abban az esetben, ha az ismerőse is engedélyezi. @@ -180,9 +180,9 @@ Csoport szerepkör megváltoztatása? Zárolási mód megváltoztatása Csatlakozott - csatlakozva + kapcsolódva Kapcsolódás - csatlakozva + kapcsolódva Csatlakoztatott telefon kapcsolódva Szerepkör megváltoztatása @@ -195,7 +195,7 @@ Kapcsolódás Közvetlen csatlakozás? Kapcsolódás - közvetlenül csatlakozva + közvetlenül kapcsolódva kapcsolat %1$d az ismerős e2e titkosítással rendelkezik Csoport létrehozása véletlenszerű profillal. @@ -309,7 +309,7 @@ CSEVEGÉSI ADATBÁZIS Önmegsemmisító jelkód megváltoztatása Várólista létrehozása - színes + színezett kapcsolódás… Sötét téma törölve @@ -497,7 +497,7 @@ Önmegsemmisítés engedélyezése Olvasatlan és kedvenc csevegésekre való szűrés. A csevegések betöltése sikertelen - Már tagja a csoportnak! + A csoport már létezik! Francia kezelőfelület Csoport hivatkozások Végre, megvannak! 🚀 @@ -541,7 +541,7 @@ Kapcsolat javítása? Fájlok és médiatartalom KONZOLHOZ - Titkosítás újraegyeztetése sikertelen. + Sikertelen titkosítás-újraegyeztetés. Hiba a felhasználói profil törlésekor Csoporttag általi javítás nem támogatott Üdvözlő üzenetet megadása… @@ -602,7 +602,7 @@ Adatbázis exportálása Teljes név: Tovább csökkentett akkumulátor használat - Hiba a csevegés megállításakor + Hiba a csevegés megszakításakor titkosítás rendben %s számára Csoport törlésre kerül minden tag számára - ez a művelet nem vonható vissza! Titkosítás javítása az adatmentések helyreállítása után. @@ -794,7 +794,7 @@ A fájl betöltése Nincs hozzáadandó ismerős Üzenetvázlat - meghívta + meghívta, hogy csatlakozzon Egyszer használatos meghívó hivatkozás Értesítések Egyszerre csak 10 kép küldhető el @@ -859,7 +859,7 @@ Új jelmondat… nem fogadott hívás Átköltöztetés: %s - Válasz neki + Válaszul erre: Üzenet szövege Az értesítések csak az alkalmazás bezárásáig érkeznek! Információ @@ -897,16 +897,16 @@ Véglegesen csak ön törölhet üzeneteket (ismerőse csak törlésre jelölheti őket ). (24 óra) Szerepkör SimpleX ismerős azonosítója - Megállítás + Megszakítás Előre beállított kiszolgáló Új csevegés kezdése Nyílt forráskódú protokoll és forráskód – bárki üzemeltethet kiszolgálókat. Megnyitás Protokoll időtúllépés - titok + titkos Előnézet megjelenítése várakozás a visszaigazolásra… - Fájl megállítása + Fájl megszakítása csoport hivatkozáson keresztül PING időköze Eltűnő üzenet küldése @@ -943,7 +943,7 @@ Csak az ismerőse tud hívást indítani. TÉMÁK Túl sok videó! - Csevegési szolgáltatás megállítása az adatbázis műveletek elvégzéséhez. + Csevegési szolgáltatás megszakítása az adatbázis műveletek elvégzéséhez. Üdvözöljük! Önmegsemmisítési jelkód (beolvasás, vagy beillesztés a vágólapról) @@ -1012,7 +1012,7 @@ Túl sok kép! Archívum mentése %s, %s és %d tag - Csevegési szolgáltatás megállítása + Csevegési szolgáltatás megszakítása SimpleX hivatkozások Az elküldött üzenetek törlésre kerülnek a beállított idő után. Némítás feloldása @@ -1096,7 +1096,7 @@ %s, %s és %s csatlakoztak SimpleX egyszer használatos meghívó Hívások - küldés sikertelen + nem sikerült elküldeni TÉMA SZÍNEK Visszaállít Előző jelszó megadása az adatbázis biztonsági mentésének visszaállítása után. Ez a művelet nem vonható vissza. @@ -1137,8 +1137,8 @@ Csatlakozás hivatkozáson keresztül Azonosító megosztása A kiszolgáló QR-kódjának beolvasása - Megállítás - Címmegosztás megállítása? + Megszakítás + Címmegosztás megszakítása? Csevegés profilok megnyitása Csatlakozási kérés megismétlése? Képre várakozás @@ -1225,7 +1225,7 @@ Fájl megosztása… Mentés átjátszón keresztül - Megosztás leállítása + Megosztás megszakítása eltávolította őt: %1$s Jelmondat mentése és csevegés megnyitása Beállítások mentése? @@ -1275,11 +1275,11 @@ Beállítások Csevegési adatbázis %1$s eltávolítva - A kiszolgáló tesztje sikertelen! + Sikertelen kiszolgáló-teszt! Kapcsolat ellenőrzése Tudjon meg többet A küldő megszakította a fájl átvitelt. - Csevegési szolgáltatás megállítása? + Csevegési szolgáltatás megszakítása? Fogadva ekkor: Beállítva 1 nap Felfedés @@ -1308,7 +1308,7 @@ fájlok fogadása egyelőre még nem támogatott Csoport profil mentése Alaphelyzetbe állítás - Hacsak az ismerőse nem törölte a kapcsolatot, vagy ez a hivatkozás már használatban volt, hiba lehet – kérjük, jelentse. + Hacsak az ismerőse nem törölte a kapcsolatot, vagy ez a hivatkozás már használatban volt, lehet hogy ez egy hiba – jelentse a problémát. \nA 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. videóhívás (nem e2e titkosított) Alkalmazás új kapcsolatokhoz @@ -1346,7 +1346,7 @@ A SimpleX zárolás a Beállításokon keresztül kapcsolható be. Az alkalmazás összeomlott Ellenőrizze, hogy a megfelelő hivatkozást használta-e, vagy kérje meg ismerősét, hogy küldjön egy másikat. - A kép nem dekódolható. Kérjük, próbálja ki egy másik képpel, vagy lépjen kapcsolatba a fejlesztőkkel. + A kép nem dekódolható. Próbálja meg egy másik képpel, vagy lépjen kapcsolatba a fejlesztőkkel. Érvénytelen fájl elérési útvonalat osztott meg. Jelentse a problémát az alkalmazás fejlesztőinek. Már van egy csevegési profil ugyanezzel a megjelenített névvel. Válasszon egy másik nevet. Csatlakozási kísérlet a kapcsolat üzeneteinek fogadására használt kiszolgálóhoz ettől az ismerőstől (hiba: %1$s). @@ -1374,7 +1374,7 @@ Megnyitás alkalmazásban gombra.]]> Csevegési profilja elküldésre kerül \naz ismerőse számára - Egy olyan ismerősét próbálja meghívni, akivel inkognitó profilt osztott meg abban a csoportban, amelyben a saját fő profilja van használatban + Egy olyan ismerősét próbálja meghívni, akivel inkognitóprofilt osztott meg abban a csoportban, amelyben a saját fő profilja van használatban %1$s csoporthoz.]]> Amikor az alkalmazás fut 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 @@ -1442,11 +1442,11 @@ Kód ellenőrzése a számítógépen Az időzóna védelme érdekében a kép-/hangfájlok UTC-t használnak. Csoporttag részére a csatlakozási kérelem eküldésre kerül. - Inkognitó profil megosztása esetén a rendszer azt a profilt fogja használni azokhoz a csoportokhoz, amelyekbe meghívást kapott. + Inkognitóprofil megosztása esetén a rendszer azt a profilt fogja használni azokhoz a csoportokhoz, amelyekbe meghívást kapott. Már kért egy csatlakozást ezen az azonosítón keresztül! Megoszthatja ezt a SimpleX azonosítót ismerőseivel, hogy kapcsolatba léphessenek vele: %s. Csatlakozási kérelmek esetében, elfogadhatja vagy elutasíthatja azokat. - Megjelenő üzenetek beállítása az új tagok számára! + Megjelenítendő üzenet beállítása az új tagok számára! Köszönet a felhasználóknak - hozzájárulás a Weblaten! A kézbesítési jelentés küldése minden ismerős számára engedélyezésre kerül. Protokoll időkorlát KB-onként @@ -1476,7 +1476,7 @@ 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. Rendszerhitelesítés helyetti beállítás. 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. - 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. + A csevegés megszakítása a csevegő adatbázis exportálásához, importálásához, vagy törléséhez. A csevegés megszakítása alatt nem tud üzeneteket fogadni és küldeni. Jelmondat mentése a kulcstárolóba Köszönet a felhasználóknak - hozzájárulás a Weblaten! Jelmondat mentése a beállításokban @@ -1522,7 +1522,7 @@ hiba a tartalom megjelenítése közben hiba az üzenet megjelenítésekor Láthatóvá teheti SimpleX beli ismerősei számára a Beállításokban. - Legfeljebb az utolsó 100 üzenet kerüljön elküldésre az új tagok számára. + Legfeljebb az utolsó 100 üzenet kerül elküldésre az új tagok számára. A beolvasott kód nem egy SimpleX hivatkozás QR-kód. A beillesztett szöveg nem egy SimpleX hivatkozás. A meghívó hivatkozását újra megtekintheti a kapcsolat részleteinél. @@ -1641,15 +1641,15 @@ Feltöltés megerősítése Hiba az adatbázis törlésekor Az adminok egy tagot mindenki számára letilthatnak. - Minden ismerős, a beszélgetések és a fájlok biztonságosan titkosításra kerülnek, melyek részletekben feltöltődnek a beállított XFTP átjátszókra. + Minden ismerőse, a beszélgetései és a fájljai biztonságosan titkosításra kerülnek, melyek részletekben feltöltődnek a beállított XFTP átjátszókra. Alkalmazásadatok átköltöztetése Adatbázis archiválása - Az átköltöztetés megszakítása + Átköltöztetés megszakítása A csevegés átköltöztetve! Ellenőrizze az internetkapcsolatot, és próbálja újra Archív hivatkozás létrehozása Adatbázis törlése erről az eszközről - Letöltés sikertelen + Sikertelen letöltés Archívum letöltése Letöltési hivatkozás részletei Engedélyezés a közvetlen csevegésekben (BÉTA)! @@ -1669,24 +1669,24 @@ Kép a képben hívások Biztonságosabb csoportok Használja az alkalmazást hívás közben. - Vagy illessze be az archívum hivatkozását - Az archívum hivatkozásának beillesztése + Vagy az archívum hivatkozásának beillesztése + Archívum hivatkozásának beillesztése Letöltés ismét Sikertelen importálás Ellenőrizze, hogy a hálózati beállítások megfelelőek-e ehhez az eszközhöz. - A folytatáshoz a csevegést le kell állítani. - Csevegés leállítása - Vagy ossza meg biztonságosan ezt a fájl hivatkozást + A folytatáshoz a csevegést meg kell szakítani. + Csevegés megszakítása + Vagy a fájl hivítkozásának biztonságos megosztása Csevegés indítása Nem szabad ugyanazt az adatbázist használni egyszerre két eszközön.]]> Erősítse meg, hogy emlékszik az adatbázis jelmondatára az átköltöztetéshez. Átköltöztetés egy másik eszközről opciót az új eszközön és szkennelje be a QR-kódot.]]> - Az átköltöztetés véglegesítése - Az átköltöztetés véglegesítése egy másik eszközön. + Átköltöztetés véglegesítése + Átköltöztetés véglegesítése egy másik eszközön. Letöltés előkészítése Feltöltés ismét %s feltöltve - A feltöltés sikertelen + Sikertelen feltöltés Archívum feltöltése Figyelmeztetés: a csevegés elindítása egyszerre több eszközön nem támogatott, továbbá üzenetkézbesítési hibákat okozhat Importálás ismét @@ -1706,7 +1706,7 @@ Hibás hivatkozás végpontok közötti kvantumrezisztens titkosítás Ez a csevegés végpontok közötti titkosítással védett. - A költöztetési párbeszédablak megnyitása + Átköltöztetési párbeszédablak megnyitása Ez a csevegés végpontok közötti kvantumrezisztens tikosítással védett. végpontok közötti titkosítással és sérülés utáni titkosságvédelemmel, visszautasítással és sérülés utáni helyreállítással védi.]]> végpontok közötti kvantumrezisztens titkosítással és sérülés utáni titkosságvédelemmel, visszautasítással és sérülés utáni helyreállítással védi.]]> @@ -1725,7 +1725,7 @@ Nincs hálózati kapcsolat További Wi-Fi - továbbküldve + továbbított A SimpleX hivatkozások küldése le van tiltva A csoport tagjai küldhetnek SimpleX hivatkozásokat. tulajdonosok @@ -1751,4 +1751,14 @@ Fejhallgató Hangszóró Fülhallgató + Egyidejű fogadás + Bluetooth + A közvetlen csevegésekben engedélyezve lesz! + Litván kezelőfelület + Megbízhatóbb hálózati kapcsolat. + Hálózatkezelés + Amikor egy bejövő hang- vagy videóhívás érkezik. + Üzenetek továbbítása és mentése + Bejövő hívás csengőhangja + Az üzenet forrása titokban marad. \ No newline at end of file diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/it/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/it/strings.xml index e062d742cd..02bf35dc53 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/it/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/it/strings.xml @@ -1753,4 +1753,9 @@ I destinatari non possono vedere da chi proviene questo messaggio. Salvato salvato da %s + Bluetooth + Auricolari + Cuffie + Altoparlante + Ricezione concomitanza \ No newline at end of file diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/ja/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/ja/strings.xml index 554f80e74d..618cf6afae 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/ja/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/ja/strings.xml @@ -1741,4 +1741,29 @@ ファイルとメディアは許可されていません SimpleXリンクの送信禁止 SimpleXリンク + ブルートゥース + 有効化 + イヤホン + ヘッドホン + スピーカー + 着信音 + 音声通話とビデオ通話の接続時 + ダイレクトチャットが有効化されます + より信頼性の高いネットワーク接続 + ネットワーク管理 + 保存済 + %sから保存 + 転送済 + 転送元 + 保存元 + 転送 + 転送済 + ダウンロード + メッセージの転送と保存 + メッセージの転送 + リトアニア語UI + メッセージ発信者は非公開のままです + 並列受信 + 受信者は発信者を特定できません。 + 保存済 \ No newline at end of file diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/lt/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/lt/strings.xml index 13b0877374..229cee789d 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/lt/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/lt/strings.xml @@ -1129,7 +1129,7 @@ nustatyti naują kontakto adresą nustatyti naują profilio nuotrauką Standartinis visapusis šifravimas - Nusiuntimo kvitai + Pristatymo kvitai Nusiųsta Dėkojame naudotojams - prisidėkite per Weblate! %s nėra patvirtintas @@ -1224,7 +1224,7 @@ Bendrinti adresą Siųsti naujiems nariams iki 100 paskutinių žinučių. Kvitų siuntimas yra įjungtas %d kontaktams - Kvitų siuntimas yra įjungtas %d grupėms + Pristatymo kvitai yra įjungti %d grupėms Nustatyti duomenų slaptafrazę Nustatyti slaptafrazę Rodyti paskutines žinutes @@ -1369,7 +1369,7 @@ Atšaukti failą Atšaukti failą? neteisėtas siuntimas - Ieškoti arba įklijuoti SimpleX nuorodą + Ieškoti ar įklijuoti SimpleX nuorodą Jūs turite leisti savo kontaktui siųsti balso žinutes, kad galėtumėte siųsti jas. (nuskanuokite ar įklijuokite iš iškarpinės) Priėmėte prisijungimą @@ -1670,7 +1670,7 @@ lygiaverčiai mazgai Pašalinti slaptafrazę iš nustatymų? SIŲSTI PRISTATYMO KVITUS PAS - Pristatymo kvitų siuntimas yra išjungtas %d grupėms + Pristatymo kvitai yra išjungti %d grupėms Turite naudoti pačią naujausią pokalbių duomenų bazės versiją TIK viename įrenginyje, kitaip galite nebegauti žinučių iš kai kurių kontaktų. Nauja slaptafrazė… pašalino %1$s @@ -1722,4 +1722,26 @@ Įkėlimas nepavyko Įkeliamas archyvas Galite bandyti dar kartą. + Bluetooth + visi nariai + Ausinė + Ausinės + administratoriai + Persiųsta + Atsisiųsti + Persiųsti + Failai ir medija neleidžiami + persiųsta + Leisti siųsti SimpleX nuorodas + Grupės nariai gali siųsti SimpleX nuorodas. + Įjungta: + Mobilusis + Persiųskite ir išsaugokite žinutes + Persiųsta iš + Persiųsti žinutę… + Žinutės šaltinis išlieka privatus. + Patikimesnis tinklo ryšys. + Tinklo ryšys + Garsai skambučio metu + Lietuviškas UI \ No newline at end of file diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml index bd4171ab02..f63cdb8d0c 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml @@ -1728,7 +1728,7 @@ Geen netwerkverbinding Ander Wifi - Wired ethernet + Bekabeld Ethernet Bestanden en media niet toegestaan SimpleX-links zijn niet toegestaan Spraakberichten niet toegestaan @@ -1751,4 +1751,7 @@ Downloaden Doorgestuurd vanuit Opgeslagen + Oortje + Koptelefoon + Luidspreker \ No newline at end of file diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/ro/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/ro/strings.xml index 3e06927ddc..5d1195a020 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/ro/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/ro/strings.xml @@ -52,7 +52,7 @@ Toate conversațiile și mesajele vor fi șterse - operațiunea este definitivă! Toate mesajele vor fi șterse - operațiunea este definitivă! Permite reacții la mesaje doar dacă și contactul tău le permite. - Permite ștergerea ireversibila a mesajelor trimise. (24 ore) + Permite ștergerea ireversibilă a mesajelor trimise. (24 ore) Permite trimiterea de fișiere și media. Toate datele sunt șterse când este introdusă. Toți membrii grupului vor rămâne conectați. @@ -69,4 +69,23 @@ Permite trimiterea de mesaje efemere. Permite trimiterea de mesaje vocale. Permite mesaje efemere doar dacă le permite contactul tău. + Permite contactelor tale să trimită mesaje care dispar. + Aspect + Versiunea aplicației + toți membrii + Permite trimiterea linkurilor SimpleX. + administratori + Administratorii pot bloca un membru pentru toți. + întotdeauna + Versiunea aplicației: v%s + Permite contactelor tale să șteargă ireversibil mesajele trimise. (24 de ore) + Permite contactelor tale să adauge reacții la mesaje. + Permite contactelor tale să te apeleze. + Permite contactelor tale să trimită mesaje vocale. + Toate contactele tale vor rămâne conectate. + Anulare + Camera indisponibilă + Camera și microfon + Atenție: arhiva va fi ștearsă.]]> + Anulează previzualizarea fișierului \ No newline at end of file diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/zh-rCN/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/zh-rCN/strings.xml index f2e26fbe43..ba9ed618e9 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/zh-rCN/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/zh-rCN/strings.xml @@ -1753,4 +1753,17 @@ 保存自%s 已转发 转发自 + 蓝牙 + 并行接收 + 耳机 + 头戴式耳机 + 扬声器 + 通话声音 + 消息来源保持私密。 + 更可靠的网络连接。 + 网络管理 + 转发并保存消息 + 立陶宛语用户界面 + 连接音频和视频通话时。 + 将在私聊中启用! \ No newline at end of file From f30287c4dfe46672adc66989dfb2c367b9b0aeea Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Tue, 23 Apr 2024 19:19:51 +0100 Subject: [PATCH 11/25] docs: FAQ (#4013) * Addd FAQ.md (#3814) * faq * typos * add troubleshooting * update links --------- Co-authored-by: ungespurv <87089788+ungespurv@users.noreply.github.com> --- docs/FAQ.md | 213 +++++++++++++++++++++++++++ website/langs/en.json | 1 + website/src/_data/docs_dropdown.json | 4 + website/src/_data/docs_sidebar.json | 3 +- 4 files changed, 220 insertions(+), 1 deletion(-) create mode 100644 docs/FAQ.md diff --git a/docs/FAQ.md b/docs/FAQ.md new file mode 100644 index 0000000000..0041c50de2 --- /dev/null +++ b/docs/FAQ.md @@ -0,0 +1,213 @@ +--- +title: Frequently Asked Questions +permalink: /faq/index.html +revision: 10.04.2024 +--- + +# Frequently Asked Questions + +[How to use it](#how-to-use-it) +- [I have nobody to chat with! Where can I find any groups?](#i-have-nobody-to-chat-with-where-can-i-find-any-groups) +- [What is database? What can I do with it?](#what-is-database-what-can-i-do-with-it) +- [Can I send files over SimpleX? ](#can-i-send-files-over-simplex) +- [What’s incognito profile?](#whats-incognito-profile) +- [How do invitations work?](#how-do-invitations-work) +- [How to configure and delete groups?](#how-to-configure-and-delete-groups) +- [Are there any reactions to messages? Can I answer specific messages directly?](#are-there-any-reactions-to-messages-can-i-answer-specific-messages-directly) +- [What do checkmarks mean?](#what-do-checkmarks-mean) +- [Can I use the same profile on desktop? Do messages sync cross-platform?](#can-i-use-the-same-profile-on-desktop-do-messages-sync-cross-platform) + +[Troubleshooting](#troubleshooting) +- [I do not receive messages or message notifications](#i-do-not-receive-messages-or-message-notifications) +- [I do not see the second tick on the messages I sent](#i-do-not-see-the-second-tick-on-the-messages-i-sent) +- [I see image preview but cannot open the image](#i-see-image-preview-but-cannot-open-the-image) +- [I cannot play a voice message](#i-cannot-play-a-voice-message) +- [Audio or video calls do not connect](#audio-or-video-calls-do-not-connect) +- [I clicked the link to connect, but could not connect](#i-clicked-the-link-to-connect-but-could-not-connect) + +[Privacy and security](#privacy-and-security) +- [Does SimpleX support post quantum cryptography?](#does-simplex-support-post-quantum-cryptography) +- [What user data can be provided on request?](#what-user-data-can-be-provided-on-request) +- [Does SimpleX protect my IP address?](#does-simplex-protect-my-ip-address) +- [Can I host my own relays?](#can-i-host-my-own-relays) + +[Funding and business model](#funding-and-business-model) +- [How are you funded?](#how-are-you-funded) +- [Why VCs?](#why-vcs) +- [What will be the business model?](#what-will-be-the-business-model) + +## How to use it + +### I have nobody to chat with! Where can I find any groups? + +Please check our [Groups Directory](./DIRECTORY.md) in the first place. You might find some interesting groups and meet even more interesting people. + +### What is database? What can I do with it? + +Database is essential for SimpleX Chat to function properly. In comparison to centralized messaging providers, it is _the user_ who is responsible for taking care of their data. On the other hand, user is sure that _nobody but them_ has access to it. Please read more about it: [Database](./guide/managing-data.md). + +### Can I send files over SimpleX? + +Of course! While doing so, you are using a _state-of-the-art_ protocol that greatly reduces metadata leaks. Please read more about it: [XFTP Protocol](../blog/20230301-simplex-file-transfer-protocol.md). + +### What’s incognito profile? + +This feature is unique to SimpleX Chat – it is independent from chat profiles. + +When "Incognito Mode” is turned on, your currently chosen profile name and image are hidden from your new contacts. It allows anonymous connections with other people without any shared data – when you make new connections or join groups via a link a new random profile name will be generated for each connection. + +### How do invitations work? + +It is quite a complex process, but fortunately all of this happens in the background, so it's simply to use. + +Whenever somebody connects to you via your address, they basically ask your client whether they want to establish connection. After that, you can either agree or disagree. +If interested, please read more: [Addresses and invitations](./guide/making-connections.md). + +### How to configure and delete groups? + +Please check: [Users guide](./guide/secret-groups.md). + +### Are there any reactions to messages? Can I answer specific messages directly? + +Yes! Currently, there are six emojis available. What's more, you can respond to specific message by holding it and selecting _Reply_. + +### What do checkmarks mean? + +It's quite simple: +- one checkmark - message is delivered to the relay (the server). +- two checkmarks - message is delivered to the recipient's device. +"sent" means accepted by the relay for delivery, "delivered" - stored on the recipient device. + +Also see [ ](#i-do-not-see-the-second-tick-on-the-messages-i-sent) + +### Can I use the same profile on desktop? Do messages sync cross-platform? + +You can use your profile from mobile device on desktop. However, to do so you need to be on the same network, both on your mobile and desktop. More about it: [Release info](../blog/20231125-simplex-chat-v5-4-link-mobile-desktop-quantum-resistant-better-groups.md#link-mobile-and-desktop-apps-via-secure-quantum-resistant-protocol). + +## Troubleshooting + +### I do not receive messages or message notifications + +There may be several reasons messages are not delivered to you from your contact: + +**You or your contact cannot connect to the server that you use to receive messages from your contact.** + +You can check which server is used to receive messages by tapping the contact name above the conversation. + +You can also run tests for this server from the app Network settings. + +Please ask your contact if they have a single tick on the message to determine if the message failed to send or if you fail to receive it. + +**Message delivery got stuck because of some unresolved bug.** + +Fully restarting the app is the workaround to resume message delivery. + +To do it on iOS, simply close the app (swipe up from the opened apps) and open it again. + +To do it on Android - choose Restart from the app settings, simply closing and re-opening the app will not restart the messaging service. + +**Your Android operating system kills the app while it is in background.** + +Check battery settings for the app - it should be set to Unrestricted. + +For some devices, there may be additional options to prevent the app from being killed - e.g., on Xiaomi you need to enable Auto Start setting for the app. Please consult https://dontkillmyapp.com site for any additional settings for your device. + +**iOS notifications failed to initialize correctly** + +Check the color of the bolt icon next to Notifications in app settings - it should be green. + +If it's not, please open notifications, disable them (choose Off / Local), and then enable again - you should do it when you have Internet connection. + +If the above didn't help, the reason could be that iOS failed to issue notification token - we have seen this issue several times. In this case, restarting the whole device should help. + +**Messaging server or notification server is under maintenance** + +Please check the current status of preset servers at [https://status.simplex.chat](https://status.simplex.chat). You can also connect to status bot via QR code on that page - it will send the updates when the server is offline for maintenance, and also when the new versions of the app are released. + +### I do not see the second tick on the messages I sent + +You may not have the second tick on your sent messages for these reasons: + +- your contact is not online, and did not receive your message. +- possibly, message delivery to your contact or to you is disrupted - see [I do not receive messages](#i-do-not-receive-messages-or-message-notifications) - please check with your contact via some other channel if they received your message. If the message was delivered, then it means your device could fail to receive the delivery notification. +- possibly, your contact disabled sending delivery receipts - it can be disabled for specific or for all contacts - please check with your contact. + +### I see image preview but cannot open the image + +It can be for these reasons: +- your contact did not finish uploading the image file, possibly closing the app too quickly. When the image file is fully uploaded there will be a tick in the _top right corner_ or the image +- your device fails to receive it. Please check server connectivity and run server tests, and also try increasing network timeouts in Advanced network settings. File reception was substantially improved in v5.7 - please make sure you are using the latest version. +- file expired and can no longer be received. Files can be received only for 2 days after they were sent, after that they won't be available and will show X in the top right corner. + +### I cannot play a voice message + +This can happen for similar reasons as for [images](#i-see-image-preview-but-cannot-open-the-image). + +Please check your network settings and make sure you use the latest version of the app. + +Please report such issues if you use v5.7 or newer. + +### Audio or video calls do not connect + +App uses WebRTC for calls. Please check that you can connect to the servers configured in the app: stun.simplex.im and turn.simplex.im - see [troubleshooting WebRTC](./WEBRTC.md#troubleshoot). + +If you can connect to the server, please report this issue to us privately, including the following information: + +- how you connect to the network: WiFi, mobile network, VPN provider - the more information you can provide the better. + +- app version and platform. For mobile apps, it would help if you can make a screen recording from both devices during unsuccessful calls and share with us. + +- if the issue is on desktop app, which browser is used for calls. In this case also please check browser console during the call and send us the log, ideally from both sides of the unsuccessful calls. + +Thank you for helping us debug and improve calls. + +### I clicked the link to connect, but could not connect + +If you confirmed the connection in the app, pending connection will be shown in the list of chats - you can assign the name to it, so you know who it was when your contact is connected (e.g., if they choose some name you don't recognize). + +For connection to complete, your contact has to be online and have the app running - please ask them to open the app, and try to have the app open at the same time - it will help to complete the connection faster. + +Once the connection is established you don't need to be online at the same time to send messages. + +## Privacy and security + +### Does SimpleX support post quantum cryptography? + +Yes! Please read more about quantum resistant encryption is added to SimpleX Chat and about various properties of end-to-end encryption in [this post](../blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.md). + +### What user data can be provided on request? + +Our objective is to consistently ensure that no user data and absolute minimum of the metadata required for the network to function is available for disclosure by any infrastructure operators, under any circumstances. + +Please see our [Privacy Policy](../PRIVACY.md) and [Transparency Reports](./TRANSPARENCY.md). + +### Does SimpleX protect my IP address? + +Not fully yet, it is a work in progress. While your device does not connect to your contacts' devices directly, as it happens in p2p networks, your contacts can self-host their relays, and you will connect to them when sending messages. A modified relay can record IP addresses connecting devices, as is the case with any other server, including Tor entry nodes, VPN providers, etc. - IP address is fundamental to Internet functioning, and there will always be some server that can observe your IP address. + +We are currently working on the next version of message routing protocol that will protect your IP address from the relays chosen by your contacts, so it will only be visible to the relays chosen by you. Read about technical details here: [RFC](https://github.com/simplex-chat/simplexmq/blob/stable/rfcs/2023-09-12-second-relays.md). + +### Can I host my own relays? + +Of course! Please check these tutorials: [SMP server](./SERVER.md) and [XFTP server](./XFTP-SERVER.md). + +## Funding and business model + +### How are you funded? + +SimpleX Chat Ltd is funded by private investors and venture capital. As an open-source project, it is also being generously supported by donations as well. Read [more details](../blog/20230422-simplex-chat-vision-funding-v5-videos-files-passcode.md#how-is-it-funded-and-what-is-the-business-model). + +### Why VCs? + +Here are some reflections on VC funding being a necessity for a project at this scale, as well as sustainability and profitability for longtime operations: https://www.poberezkin.com/posts/2023-10-31-why-privacy-impossible-without-venture-funding.html + +And another perspective from a team member on the delicate balance of venture-backed and nonprofit structures, and the plans for the SimpleX network protocols to evolve under the stewardship of nonprofit entities in various jurisdictions, so that its continued evolution aligns more closely with the vision of community-driven, independent and transparent governance: +[https://simplex.chat/blog/20240404-why-i-joined-simplex-chat-esraa-al-shafei.html](../blog/20240404-why-i-joined-simplex-chat-esraa-al-shafei.md). + +### What will be the business model? + +We are focusing on product-market fit, and as such the business model is still a work in progress. However, the app will have a freemium model with extra features or capabilities for paid users (taking into consideration a potential formula like 5% paying $5/month is $3/user/year - ~90% gross profit margin). + +The other income stream would be via business services, for entities needing direct and customized support to integrate with the SimpleX protocol or related resources. There will also be a revenue-sharing model from customers to network operators, to provide an incentive for them to continue running nodes, which will increase decentralization and reliability of the network. + +Non-exploitative commercial models with fully open source code are not easy to achieve, and we’re committed to finding the best possible fit for our context. Everything will be fully communicated as this plan progresses. diff --git a/website/langs/en.json b/website/langs/en.json index 32db4f3c47..1c8b7d3681 100644 --- a/website/langs/en.json +++ b/website/langs/en.json @@ -236,6 +236,7 @@ "docs-dropdown-8": "SimpleX Directory Service", "docs-dropdown-9": "Downloads", "docs-dropdown-10": "Transparency", + "docs-dropdown-11": "FAQ", "newer-version-of-eng-msg": "There is a newer version of this page in English.", "click-to-see": "Click to see", "menu": "Menu", diff --git a/website/src/_data/docs_dropdown.json b/website/src/_data/docs_dropdown.json index 610be49221..d42d41475a 100644 --- a/website/src/_data/docs_dropdown.json +++ b/website/src/_data/docs_dropdown.json @@ -39,6 +39,10 @@ { "title": "docs-dropdown-10", "url": "/transparency/" + }, + { + "title": "docs-dropdown-11", + "url": "/faq/" } ] } \ No newline at end of file diff --git a/website/src/_data/docs_sidebar.json b/website/src/_data/docs_sidebar.json index a2b15de7e4..7e9f6c02fe 100644 --- a/website/src/_data/docs_sidebar.json +++ b/website/src/_data/docs_sidebar.json @@ -27,7 +27,8 @@ "WEBRTC.md", "XFTP-SERVER.md", "DOWNLOADS.md", - "TRANSPARENCY.md" + "TRANSPARENCY.md", + "FAQ.md" ] }, { From ab76e93df7fe00c6fad5561ef602fcfdd368e6cc Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Tue, 23 Apr 2024 19:30:42 +0100 Subject: [PATCH 12/25] docs: security policy (#4068) * docs: security policy * update * add to website --- docs/FAQ.md | 2 +- docs/SECURITY.md | 79 ++++++++++++++++++++++++++++ website/langs/en.json | 1 + website/src/_data/docs_dropdown.json | 4 ++ website/src/_data/docs_sidebar.json | 1 + 5 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 docs/SECURITY.md diff --git a/docs/FAQ.md b/docs/FAQ.md index 0041c50de2..2484738808 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -1,7 +1,7 @@ --- title: Frequently Asked Questions permalink: /faq/index.html -revision: 10.04.2024 +revision: 23.04.2024 --- # Frequently Asked Questions diff --git a/docs/SECURITY.md b/docs/SECURITY.md new file mode 100644 index 0000000000..77f588ec26 --- /dev/null +++ b/docs/SECURITY.md @@ -0,0 +1,79 @@ +--- +title: Security Policy +permalink: /security/index.html +revision: 23.04.2024 +--- + +# Security Policy + +While great care is taken to ensure the highest level of security and privacy in SimpleX network servers and clients, all software can have flaws, and we believe it is a critical part of an organization's social responsibility to minimize the impact of these flaws through continual vulnerability discovery efforts, defense in depth design, and prompt remediation and notification. + +The security assessment of SimpleX cryptography and networking was done by Trail of Bits in [November 2022](https://simplex.chat/blog/20221108-simplex-chat-v4.2-security-audit-new-website.html). + +We are planning design review of SimpleX protocols in July 2024 and implementation review in December 2024/January 2025. + +## Reporting security issues + +To report a security issue, please contact us directly via email [chat@simplex.chat](mailto:chat@simplex.chat). Please do NOT report security issues via GitHub issues or via any public channels. + +Please encrypt the email message using the key for this address from [keys.openpgp.org](https://keys.openpgp.org/search?q=chat%40simplex.chat) (its fingerprint is `FB44 AF81 A45B DE32 7319 797C 8510 7E35 7D4A 17FC`) and make your key available for a secure reply. + +While we encourage you to encrypt the message, if this poses a barrier to reporting, an unencrypted submission is better than no submission. + +## Issue triage + +Our team will investigate and prioritize the reported issue. We may work in private with individuals who are not our direct team members, as well as other organizations, where we believe this can help with the issue investigation, resolution, or testing. + +## Threat Model + +Please review threat model for SimpleX: https://github.com/simplex-chat/simplexmq/blob/stable/protocol/overview-tjr.md#threat-model + +Certain threats are considered out of the scope of SimpleX security model. For example, we do not consider SimpleX secure against the following classes of attacks: + +- CPU/hardware flaws. +- physical observation side channels (e.g. power consumption, EM emissions, etc). + +Further, any user data stored on the device can be accessed with user's or root privileges, such as: +- user files in the app storage (encrypted or not, depending on the app settings). +- encrypted database. +- database encryption key in case it is stored on the device. + +Mitigations for security issues outside of our threat model may still be implemented, however they will be weighed against competing priorities, and we do not classify them as SimpleX vulnerabilities. + +## Issue severity + +We will determine the risk of each issue, taking into account our experience dealing with past issues, versions affected, common defaults, and use cases. We classify issues on two dimensions, based on their severity level and the difficulty required to exploit them. + +**Difficulty levels** + +- **Low**: The flaw is well known; public tools for its exploitation exist or can be scripted. +- **Medium**: An attacker must write an exploit or will need in-depth knowledge of the system. +- **High**: An attacker must have privileged access to the system, may need to know complex technical details, or must discover other weaknesses to exploit this issue. + +**Issue severity levels** + +- **CRITICAL severity**. Such issues should affect common configurations and be exploitable with low or medium difficulty. For example: significant disclosure of the encrypted users messages or files either via relays or via communication channels, vulnerabilities which can be easily exploited remotely to compromise clients or servers private keys. These issues will be kept private and will trigger a new release of all supported versions. +- **HIGH severity**. This includes issues that are of a lower risk than critical, possibly due to affecting less common configurations, or have high difficulty to be exploited. These issues will be kept private and will trigger a new release of all supported versions. +- **MEDIUM severity**. This includes issues like crashes in client applications caused by the received messages or files, flaws in protocols that are less commonly used, and local flaws. These will in general be kept private until the next release, and that release will be scheduled so that it can roll up several such flaws at one time. +- **LOW severity**. This includes issues such as those that only affect the SimpleX CLI app, or unlikely configurations, or issues that would be classified as medium but are very difficult to exploit. These will in general be fixed immediately in latest development versions, and may be back-ported to older versions that are still getting updates. These issues may be kept private or be included in commit messages. + +## Notification policy + +Security fixes of critical, high and medium severity MUST NOT be mentioned in the commit message. Security fixes of low severity MAY be mentioned in the commit messages. + +We will privately notify trusted partners about forthcoming security fixes on the day when the fix is publicly released and available for download via all supported channels, indicating the issue level, but not further details. + +7 days after the new software version is released and available for download via all supported channels, we will indicate that it fixes a security issue and its level, but not further details. This notification will be published in our release notes and broadcast channels we use. + +14 days later the details will be published in the release notes, describing the impact and the nature of vulnerability, but not necessarily providing detailed instruction for the exploit - it will be decided on a case by case basis. + +## Trusted partners + +You may be privately notified about the forthcoming releases containing fixes to the security issues of critical, high and medium severity. We will communicate only the level of the issue severity, and not the issue itself. + +To be included in this list, you should be one of the following: +- software or hardware vendor depending on our code. +- commercial or non-profit organization that uses our software in scenarios where security and privacy is critically important. +- we may also include other organizations that are not listed but would otherwise qualify for list membership. +- we may also include organizations with which we have a commercial relationship. +- we may withdraw notifying certain organizations if they leak issues before they are public or do not add value. diff --git a/website/langs/en.json b/website/langs/en.json index 1c8b7d3681..9d431ffbdb 100644 --- a/website/langs/en.json +++ b/website/langs/en.json @@ -237,6 +237,7 @@ "docs-dropdown-9": "Downloads", "docs-dropdown-10": "Transparency", "docs-dropdown-11": "FAQ", + "docs-dropdown-12": "Security", "newer-version-of-eng-msg": "There is a newer version of this page in English.", "click-to-see": "Click to see", "menu": "Menu", diff --git a/website/src/_data/docs_dropdown.json b/website/src/_data/docs_dropdown.json index d42d41475a..88fd5826dd 100644 --- a/website/src/_data/docs_dropdown.json +++ b/website/src/_data/docs_dropdown.json @@ -40,6 +40,10 @@ "title": "docs-dropdown-10", "url": "/transparency/" }, + { + "title": "docs-dropdown-12", + "url": "/security/" + }, { "title": "docs-dropdown-11", "url": "/faq/" diff --git a/website/src/_data/docs_sidebar.json b/website/src/_data/docs_sidebar.json index 7e9f6c02fe..e9ccb7ce02 100644 --- a/website/src/_data/docs_sidebar.json +++ b/website/src/_data/docs_sidebar.json @@ -28,6 +28,7 @@ "XFTP-SERVER.md", "DOWNLOADS.md", "TRANSPARENCY.md", + "SECURITY.md", "FAQ.md" ] }, From 9979983742f10ef402a7450c4bdf1b60a00eb0cc Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Wed, 24 Apr 2024 09:44:44 +0100 Subject: [PATCH 13/25] ui: translations (#4075) * Translated using Weblate (Hungarian) Currently translated at 100.0% (1507 of 1507 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ * ios: Hungarian translations * Translated using Weblate (German) Currently translated at 99.5% (1730 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/ * Translated using Weblate (Spanish) Currently translated at 100.0% (1738 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/ * Translated using Weblate (Spanish) Currently translated at 100.0% (1512 of 1512 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/es/ * Translated using Weblate (Dutch) Currently translated at 100.0% (1738 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/ * Translated using Weblate (Dutch) Currently translated at 100.0% (1512 of 1512 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/nl/ * Translated using Weblate (Lithuanian) Currently translated at 100.0% (1738 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/lt/ * Translated using Weblate (Turkish) Currently translated at 100.0% (1512 of 1512 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/tr/ * Translated using Weblate (Turkish) Currently translated at 100.0% (1738 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/tr/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1512 of 1512 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ * import/export --------- Co-authored-by: summoner001 Co-authored-by: M1K4 Co-authored-by: No name Co-authored-by: Anonimas Co-authored-by: z0rden --- .../es.xcloc/Localized Contents/es.xliff | 40 +- .../hu.xcloc/Localized Contents/hu.xliff | 323 +++++++---- .../nl.xcloc/Localized Contents/nl.xliff | 8 + .../tr.xcloc/Localized Contents/tr.xliff | 36 ++ apps/ios/es.lproj/Localizable.strings | 112 +++- apps/ios/hu.lproj/Localizable.strings | 545 ++++++++++++++---- apps/ios/nl.lproj/Localizable.strings | 24 + apps/ios/tr.lproj/Localizable.strings | 108 ++++ .../commonMain/resources/MR/de/strings.xml | 2 +- .../commonMain/resources/MR/es/strings.xml | 27 +- .../commonMain/resources/MR/lt/strings.xml | 30 +- .../commonMain/resources/MR/nl/strings.xml | 10 + .../commonMain/resources/MR/tr/strings.xml | 42 ++ scripts/ios/import-localizations.sh | 2 +- 14 files changed, 1075 insertions(+), 234 deletions(-) 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 e388c554a9..3f1b2deb11 100644 --- a/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff +++ b/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff @@ -745,6 +745,7 @@ Allow to send SimpleX links. + Permitir enviar enlaces SimpleX. No comment provided by engineer. @@ -1089,6 +1090,7 @@ Cellular + Móvil No comment provided by engineer. @@ -2088,6 +2090,7 @@ This cannot be undone! Download + Descargar chat item action @@ -2202,6 +2205,7 @@ This cannot be undone! Enabled for + Activar para No comment provided by engineer. @@ -2726,6 +2730,7 @@ This cannot be undone! Files and media not allowed + Archivos y multimedia no permitidos No comment provided by engineer. @@ -2795,18 +2800,22 @@ This cannot be undone! Forward + Reenviar chat item action Forward and save messages + Reenviar y guardar mensajes No comment provided by engineer. Forwarded + Reenviado No comment provided by engineer. Forwarded from + Reenviado por No comment provided by engineer. @@ -2921,6 +2930,7 @@ This cannot be undone! Group members can send SimpleX links. + Los miembros del grupo pueden enviar enlaces SimpleX. No comment provided by engineer. @@ -3165,6 +3175,7 @@ This cannot be undone! In-call sounds + Sonido de llamada No comment provided by engineer. @@ -3644,6 +3655,7 @@ This is your link for group %@! Message source remains private. + El autor del mensaje se mantiene privado. No comment provided by engineer. @@ -3763,6 +3775,7 @@ This is your link for group %@! More reliable network connection. + Conexión de red más fiable. No comment provided by engineer. @@ -3802,10 +3815,12 @@ This is your link for group %@! Network connection + Conexión de red No comment provided by engineer. Network management + Gestión de la red No comment provided by engineer. @@ -3920,6 +3935,7 @@ This is your link for group %@! No network connection + Sin conexión de red No comment provided by engineer. @@ -4138,6 +4154,7 @@ This is your link for group %@! Other + Otro No comment provided by engineer. @@ -4399,6 +4416,7 @@ Error: %@ Prohibit sending SimpleX links. + No permitir el envío de enlaces SimpleX. No comment provided by engineer. @@ -4533,6 +4551,7 @@ Error: %@ Receiving concurrency + Concurrencia en la recepción No comment provided by engineer. @@ -4552,6 +4571,7 @@ Error: %@ Recipient(s) can't see who this message is from. + Los destinatarios no ven de quién procede este mensaje. No comment provided by engineer. @@ -4856,6 +4876,7 @@ Error: %@ Saved + Guardado No comment provided by engineer. @@ -4865,6 +4886,7 @@ Error: %@ Saved from + Guardado desde No comment provided by engineer. @@ -5294,10 +5316,12 @@ Error: %@ SimpleX links are prohibited in this group. + Los enlaces SimpleX no se permiten en este grupo. No comment provided by engineer. SimpleX links not allowed + Enlaces SimpleX no permitidos No comment provided by engineer. @@ -5522,12 +5546,12 @@ Error: %@ Thanks to the users – [contribute via Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)! - Gracias a los usuarios: [contribuye vía Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#traducir-el-aplicaciones)! + ¡Nuestro agradecimiento a todos los colaboradores, [puedes contribuir a través de Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#traducir-el-aplicaciones)! No comment provided by engineer. Thanks to the users – contribute via Weblate! - ¡Gracias a los colaboradores! Contribuye a través de Weblate. + ¡Nuestro agradecimiento a todos los colaboradores! Puedes contribuir a través de Weblate No comment provided by engineer. @@ -6139,6 +6163,7 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb Voice messages not allowed + Mensajes de voz no permitidos No comment provided by engineer. @@ -6213,6 +6238,7 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb When connecting audio and video calls. + Al iniciar llamadas de audio y vídeo. No comment provided by engineer. @@ -6227,14 +6253,17 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb WiFi + WiFi No comment provided by engineer. Will be enabled in direct chats! + ¡Será habilitado en los chats directos! No comment provided by engineer. Wired ethernet + Ethernet por cable No comment provided by engineer. @@ -6722,6 +6751,7 @@ Los servidores de SimpleX no pueden ver tu perfil. admins + administradores feature role @@ -6736,6 +6766,7 @@ Los servidores de SimpleX no pueden ver tu perfil. all members + todos los miembros feature role @@ -7070,6 +7101,7 @@ Los servidores de SimpleX no pueden ver tu perfil. forwarded + reenviado No comment provided by engineer. @@ -7281,6 +7313,7 @@ Los servidores de SimpleX no pueden ver tu perfil. owners + propietarios feature role @@ -7335,10 +7368,12 @@ Los servidores de SimpleX no pueden ver tu perfil. saved + guardado No comment provided by engineer. saved from %@ + Guardado desde %@ No comment provided by engineer. @@ -7483,6 +7518,7 @@ Los servidores de SimpleX no pueden ver tu perfil. you + tu No comment provided by engineer. diff --git a/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff b/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff index 1393435dad..dd1d4749cd 100644 --- a/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff +++ b/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff @@ -54,7 +54,7 @@ ## In reply to - ## Válaszul erre + ## Válaszul erre: copied message info @@ -109,6 +109,7 @@ %@ downloaded + %@ letöltve No comment provided by engineer. @@ -133,6 +134,7 @@ %@ uploaded + %@ feltöltve No comment provided by engineer. @@ -182,7 +184,7 @@ %d skipped message(s) - %d kihagyott üzenet + %d üzenet kihagyva integrity error chat item @@ -237,7 +239,7 @@ %lld messages moderated by %@ - %@ %lld üzenetet moderált + %lld üzenet moderálva lett %@ által No comment provided by engineer. @@ -302,7 +304,7 @@ %u messages skipped. - %u kihagyott üzenet. + %u üzenet kihagyva. No comment provided by engineer. @@ -352,6 +354,7 @@ **Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection. + **Megjegyzés**: ha két eszközön is ugyanazt az adatbázist használja, akkor biztonsági védelemként megszakítja a kapcsolataiból érkező üzenetek visszafejtését. No comment provided by engineer. @@ -371,6 +374,7 @@ **Warning**: the archive will be removed. + **Figyelem**: az archívum törlésre kerül. No comment provided by engineer. @@ -397,7 +401,7 @@ - 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) + - kapcsolódás a [könyvtár szolgáltatáshoz](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)! - kézbesítési jelentések (legfeljebb 20 tag). - gyorsabb és stabilabb. No comment provided by engineer. @@ -631,6 +635,7 @@ Admins can block a member for all. + Az adminok egy tagot mindenki számára letilthatnak. No comment provided by engineer. @@ -650,7 +655,7 @@ 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! + Minden csevegés és üzenet törlésre kerül - ez a művelet nem vonható vissza! No comment provided by engineer. @@ -665,12 +670,12 @@ All messages will be deleted - this cannot be undone! - Minden üzenet törlésre kerül – ez nem vonható vissza! + Minden üzenet törlésre kerül – ez a művelet 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. + Minden üzenet törlésre kerül - ez a művelet nem vonható vissza! Az üzenetek CSAK az ön számára törlődnek. No comment provided by engineer. @@ -690,6 +695,7 @@ All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays. + Minden ismerőse, a beszélgetései és a fájljai biztonságosan titkosításra kerülnek, melyek részletekben feltöltődnek a beállított XFTP átjátszókra. No comment provided by engineer. @@ -724,7 +730,7 @@ Allow sending direct messages to members. - Közvetlen üzenetek küldésének engedélyezése tagok részére. + Közvetlen üzenetek küldésének engedélyezése a tagok számára. No comment provided by engineer. @@ -734,11 +740,12 @@ Allow to irreversibly delete sent messages. (24 hours) - Elküldött üzenetek visszafordíthatatlan törlésének engedélyezése. (24 óra) + Elküldött üzenetek végleges törlésének engedélyezése. (24 óra) No comment provided by engineer. Allow to send SimpleX links. + A SimpleX hivatkozások küldése engedélyezve van. No comment provided by engineer. @@ -773,7 +780,7 @@ 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) + Elküldött üzenetek végleges törlésének engedélyezése az ismerősök számára. (24 óra) No comment provided by engineer. @@ -823,6 +830,7 @@ App data migration + Alkalmazásadatok átköltöztetése No comment provided by engineer. @@ -862,14 +870,17 @@ Apply + Alkalmaz No comment provided by engineer. Archive and upload + Archiválás és feltöltés No comment provided by engineer. Archiving database + Adatbázis archiválása No comment provided by engineer. @@ -904,7 +915,7 @@ Authentication failed - Hitelesítés sikertelen + Sikertelen hitelesítés No comment provided by engineer. @@ -1004,7 +1015,7 @@ 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) + Mindkét fél törölheti véglegesen az elküldött üzeneteket. (24 óra) No comment provided by engineer. @@ -1064,6 +1075,7 @@ Cancel migration + Átköltöztetés megszakítása No comment provided by engineer. @@ -1078,6 +1090,7 @@ Cellular + Mobilhálózat No comment provided by engineer. @@ -1173,6 +1186,7 @@ Chat migrated! + A csevegés átköltöztetve! No comment provided by engineer. @@ -1197,6 +1211,7 @@ Choose _Migrate from another device_ on the new device and scan QR code. + Válassza az _Átköltöztetés egy másik eszközről_ opciót az új eszközön és szkennelje be a QR-kódot. No comment provided by engineer. @@ -1271,6 +1286,7 @@ Confirm network settings + Hálózati beállítások megerősítése No comment provided by engineer. @@ -1285,10 +1301,12 @@ Confirm that you remember database passphrase to migrate it. + Erősítse meg, hogy emlékszik az adatbázis jelmondatára az átköltöztetéshez. No comment provided by engineer. Confirm upload + Feltöltés megerősítése No comment provided by engineer. @@ -1303,7 +1321,7 @@ Connect incognito - Inkognítóban csatlakozva + Kapcsolódás inkognitóban No comment provided by engineer. @@ -1332,17 +1350,17 @@ Ez az egyszer használatos hivatkozása! Connect via contact address - Kapcsolódás ismerős azonosítója által + Csatlakozás ismerős azonosítója által No comment provided by engineer. Connect via link - Kapcsolódás egy hivatkozáson keresztül + Csatlakozá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 + Csatlakozás egyszer használatos hivatkozáson keresztül No comment provided by engineer. @@ -1357,7 +1375,7 @@ Ez az egyszer használatos hivatkozása! Connected to desktop - Csatlakozva a számítógéphez + Kapcsolódva a számítógéphez No comment provided by engineer. @@ -1537,7 +1555,7 @@ Ez az egyszer használatos hivatkozása! Created at - Létrehozva ekkor + Létrehozva ekkor: No comment provided by engineer. @@ -1552,6 +1570,7 @@ Ez az egyszer használatos hivatkozása! Creating archive link + Archív hivatkozás létrehozása No comment provided by engineer. @@ -1766,7 +1785,7 @@ Ez az egyszer használatos hivatkozása! Delete contact? This cannot be undone! Ismerős törlése? -Ezt nem vonható vissza! +Ez a művelet nem vonható vissza! No comment provided by engineer. @@ -1776,6 +1795,7 @@ Ezt nem vonható vissza! Delete database from this device + Adatbázis törlése erről az eszközről No comment provided by engineer. @@ -1885,7 +1905,7 @@ Ezt nem vonható vissza! Deleted at - Törölve ekkor + Törölve ekkor: No comment provided by engineer. @@ -2005,7 +2025,7 @@ Ezt nem vonható vissza! Disappears at - Eltűnik ekkor + Eltűnik ekkor: No comment provided by engineer. @@ -2045,7 +2065,7 @@ Ezt nem vonható vissza! Do not send history to new members. - Ne küldjön előzményeket új tagok részére. + Az előzmények ne kerüljenek elküldésre az új tagok számára. No comment provided by engineer. @@ -2070,10 +2090,12 @@ Ezt nem vonható vissza! Download + Letöltés chat item action Download failed + Sikertelen letöltés No comment provided by engineer. @@ -2083,10 +2105,12 @@ Ezt nem vonható vissza! Downloading archive + Archívum letöltése No comment provided by engineer. Downloading link details + Letöltési hivatkozás részletei No comment provided by engineer. @@ -2141,11 +2165,12 @@ Ezt nem vonható vissza! Enable for all - Engedélyezés mindenki részére + Engedélyezés mindenki számára No comment provided by engineer. Enable in direct chats (BETA)! + Engedélyezés a közvetlen csevegésekben (BÉTA)! No comment provided by engineer. @@ -2180,6 +2205,7 @@ Ezt nem vonható vissza! Enabled for + Engedélyezve No comment provided by engineer. @@ -2224,7 +2250,7 @@ Ezt nem vonható vissza! Encrypted message: database migration error - Titkosított üzenet: adatbázis-migrációs hiba + Titkosított üzenet: adatbázis-átköltöztetés hiba notification @@ -2249,7 +2275,7 @@ Ezt nem vonható vissza! Encryption re-negotiation failed. - Titkosítás újraegyeztetése sikertelen. + Sikertelen titkosítás-újraegyeztetés. No comment provided by engineer. @@ -2269,6 +2295,7 @@ Ezt nem vonható vissza! Enter passphrase + Jelmondat megadása No comment provided by engineer. @@ -2303,7 +2330,7 @@ Ezt nem vonható vissza! Enter your name… - Adja meg nevét… + Adjon meg egy nevet… No comment provided by engineer. @@ -2423,6 +2450,7 @@ Ezt nem vonható vissza! Error downloading the archive + Hiba az archívum letöltésekor No comment provided by engineer. @@ -2502,6 +2530,7 @@ Ezt nem vonható vissza! Error saving settings + Hiba a beállítások mentésekor when migrating @@ -2541,7 +2570,7 @@ Ezt nem vonható vissza! Error stopping chat - Hiba a csevegés megállításakor + Hiba a csevegés megszakításakor No comment provided by engineer. @@ -2576,10 +2605,12 @@ Ezt nem vonható vissza! Error uploading the archive + Hiba az archívum feltöltésekor No comment provided by engineer. Error verifying passphrase: + Hiba a jelmondat ellenőrzésekor: No comment provided by engineer. @@ -2634,6 +2665,7 @@ Ezt nem vonható vissza! Exported file doesn't exist + Az exportált fájl nem létezik No comment provided by engineer. @@ -2698,6 +2730,7 @@ Ezt nem vonható vissza! Files and media not allowed + Fájlok és média tartalom küldése le van tiltva No comment provided by engineer. @@ -2712,10 +2745,12 @@ Ezt nem vonható vissza! Finalize migration + Átköltöztetés véglegesítése No comment provided by engineer. Finalize migration on another device. + Átköltöztetés véglegesítése egy másik eszközön. No comment provided by engineer. @@ -2765,18 +2800,22 @@ Ezt nem vonható vissza! Forward + Továbbítás chat item action Forward and save messages + Üzenetek továbbítása és mentése No comment provided by engineer. Forwarded + Továbbított No comment provided by engineer. Forwarded from + Továbbítva innen: No comment provided by engineer. @@ -2866,7 +2905,7 @@ Ezt nem vonható vissza! 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. + A csoport meghívó már nem érvényes, a küldője törölte. No comment provided by engineer. @@ -2886,31 +2925,32 @@ Ezt nem vonható vissza! Group members can irreversibly delete sent messages. (24 hours) - Csoporttagok visszafordíthatatlanul törölhetik az elküldött üzeneteket. (24 óra) + A csoport tagjai véglegesen törölhetik az elküldött üzeneteiket. (24 óra) No comment provided by engineer. Group members can send SimpleX links. + A csoport tagjai küldhetnek SimpleX hivatkozásokat. No comment provided by engineer. Group members can send direct messages. - Csoporttagok küldhetnek közvetlen üzeneteket. + A csoport tagjai küldhetnek egymásnak közvetlen üzeneteket. No comment provided by engineer. Group members can send disappearing messages. - Csoporttagok küldhetnek eltűnő üzeneteket. + A csoport tagjai 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. + A csoport tagjai küldhetnek fájlokat és médiatartalmakat. No comment provided by engineer. Group members can send voice messages. - Csoporttagok küldhetnek hangüzeneteket. + A csoport tagjai küldhetnek hangüzeneteket. No comment provided by engineer. @@ -2945,12 +2985,12 @@ Ezt nem vonható vissza! 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! + Csoport törlésre kerül minden tag számára - ez a művelet 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! + A csoport törlésre kerül az ön számára - ez a művelet nem vonható vissza! No comment provided by engineer. @@ -3000,7 +3040,7 @@ Ezt nem vonható vissza! History is not sent to new members. - Az előzmények nem kerülnek elküldésre új tagok részére. + Az előzmények nem kerülnek elküldésre az új tagok számára. No comment provided by engineer. @@ -3030,6 +3070,7 @@ Ezt nem vonható vissza! Hungarian interface + Magyar kezelőfelület No comment provided by engineer. @@ -3044,7 +3085,7 @@ Ezt nem vonható vissza! 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! + Ha az alkalmazás megnyitásakor megadja ezt a jelkódot, az összes alkalmazásadat véglegesen törlődik! No comment provided by engineer. @@ -3099,10 +3140,12 @@ Ezt nem vonható vissza! Import failed + Sikertelen importálás No comment provided by engineer. Importing archive + Archívum importálása No comment provided by engineer. @@ -3122,6 +3165,7 @@ Ezt nem vonható vissza! In order to continue, chat should be stopped. + A folytatáshoz a csevegést meg kell szakítani. No comment provided by engineer. @@ -3131,6 +3175,7 @@ Ezt nem vonható vissza! In-call sounds + Bejövő hívás csengőhangja No comment provided by engineer. @@ -3242,6 +3287,7 @@ Ezt nem vonható vissza! Invalid migration confirmation + Érvénytelen átköltöztetési visszaigazolás No comment provided by engineer. @@ -3286,17 +3332,17 @@ Ezt nem vonható vissza! Irreversible message deletion - Visszafordíthatatlan üzenettörlés + Végleges ü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. + Ebben a csevegésben az üzenetek végleges 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. + Ebben a csoportban az üzenetek végleges törlése le van tiltva. No comment provided by engineer. @@ -3514,7 +3560,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Make profile private! - Tegye priváttá profilját! + Tegye priváttá a profilját! No comment provided by engineer. @@ -3574,7 +3620,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Member will be removed from group - this cannot be undone! - A tag eltávolítása a csoportból - ez nem vonható vissza! + A tag eltávolítása a csoportból - ez a művelet nem vonható vissza! No comment provided by engineer. @@ -3609,6 +3655,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Message source remains private. + Az üzenet forrása titokban marad. No comment provided by engineer. @@ -3618,6 +3665,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Message too large + Az üzenet túl nagy No comment provided by engineer. @@ -3637,34 +3685,42 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery. + Az üzeneteket, fájlokat és hívásokat **végpontok közötti titkosítással** és sérülés utáni titkosságvédelemmel, visszautasítással és sérülés utáni helyreállítással védi. 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. + Az üzeneteket, fájlokat és hívásokat **végpontok közötti kvantumrezisztens titkosítással** és sérülés utáni titkosságvédelemmel, visszautasítással és sérülés utáni helyreállítással védi. No comment provided by engineer. Migrate device + Eszköz átköltöztetése No comment provided by engineer. Migrate from another device + Átköltöztetés egy másik eszközről No comment provided by engineer. Migrate here + Átköltöztetés ide No comment provided by engineer. Migrate to another device + Átköltöztetés egy másik eszközre No comment provided by engineer. Migrate to another device via QR code. + Átköltöztetés egy másik eszközre QR-kód használatával. No comment provided by engineer. Migrating + Átköltöztetés No comment provided by engineer. @@ -3674,26 +3730,27 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Migration complete + Átköltöztetés befejezve No comment provided by engineer. Migration error: - Migrációs hiba: + Átköltözteté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). + Sikertelen átköltöztetés. Koppintson a **Kihagyás** lehetőségre az aktuális adatbázis használatának folytatásához. Jelentse a problémát az alkalmazás fejlesztőinek csevegésben vagy e-mailben [chat@simplex.chat](mailto:chat@simplex.chat). No comment provided by engineer. Migration is completed - A migráció befejeződött + Az átköltöztetés befejeződött No comment provided by engineer. Migrations: %@ - Migrációk: %@ + Átköltöztetések: %@ No comment provided by engineer. @@ -3703,12 +3760,12 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Moderated at - Moderálva ekkor + Moderálva lett ekkor: No comment provided by engineer. Moderated at: %@ - Moderálva ekkor: %@ + Moderálva lett ekkor: %@ copied message info @@ -3718,6 +3775,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! More reliable network connection. + Megbízhatóbb hálózati kapcsolat. No comment provided by engineer. @@ -3757,10 +3815,12 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Network connection + Internetkapcsolat No comment provided by engineer. Network management + Hálózatkezelés No comment provided by engineer. @@ -3875,6 +3935,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! No network connection + Nincs hálózati kapcsolat No comment provided by engineer. @@ -3983,7 +4044,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! 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) + Véglegesen csak ön törölhet üzeneteket (ismerőse csak törlésre jelölheti meg őket ). (24 óra) No comment provided by engineer. @@ -4008,7 +4069,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! 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) + Csak az ismerőse tudja az üzeneteket véglegesen törölni (ön csak törlésre jelölheti meg azokat). (24 óra) No comment provided by engineer. @@ -4053,6 +4114,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Open migration to another device + Átköltöztetés megkezdése egy másik eszközre authentication reason @@ -4072,6 +4134,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Or paste archive link + Vagy az archívum hivatkozásának beillesztése No comment provided by engineer. @@ -4081,6 +4144,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Or securely share this file link + Vagy a fájl hivítkozásának biztonságos megosztása No comment provided by engineer. @@ -4090,6 +4154,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Other + További No comment provided by engineer. @@ -4129,7 +4194,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Password to show - Jelszó mutatása + Jelszó megjelenítése No comment provided by engineer. @@ -4174,6 +4239,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Picture-in-picture calls + Kép a képben hívások No comment provided by engineer. @@ -4188,7 +4254,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! 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. + Ellenőrizze hálózati kapcsolatát a(z) %@ segítségével, és próbálja újra. No comment provided by engineer. @@ -4198,6 +4264,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Please confirm that network settings are correct for this device. + Ellenőrizze, hogy a hálózati beállítások megfelelőek-e ehhez az eszközhöz. No comment provided by engineer. @@ -4219,7 +4286,7 @@ Hiba: %@ 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ó. + Előző jelszó megadása az adatbázis biztonsági mentésének visszaállítása után. Ez a művelet nem vonható vissza. No comment provided by engineer. @@ -4234,7 +4301,7 @@ Hiba: %@ 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. + Indítsa újra az alkalmazást az adatbázis-átköltöztetéséhez szükséges push értesítések engedélyezéséhez. No comment provided by engineer. @@ -4349,11 +4416,12 @@ Hiba: %@ Prohibit sending SimpleX links. + A SimpleX hivatkozások küldése le van tiltva. No comment provided by engineer. Prohibit sending direct messages to members. - Közvetlen üzenetek küldésének letiltása tagok részére. + Közvetlen üzenetek küldésének letiltása a tagok számára. No comment provided by engineer. @@ -4373,7 +4441,7 @@ Hiba: %@ Protect app screen - App képernyőjének védelme + Alkalmazás képernyőjének védelme No comment provided by engineer. @@ -4398,10 +4466,12 @@ Hiba: %@ Push server + Push kiszolgáló No comment provided by engineer. Quantum resistant encryption + Kvantumrezisztens titkosítás No comment provided by engineer. @@ -4426,17 +4496,17 @@ Hiba: %@ 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). + További információ a [Használati ú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). + További információ a [Használati ú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). + További információ a [Használati útmutatóban](https://simplex.chat/docs/guide/readme.html#connect-to-friends). No comment provided by engineer. @@ -4456,7 +4526,7 @@ Hiba: %@ Received at - Fogadva ekkor + Fogadva ekkor: No comment provided by engineer. @@ -4481,6 +4551,7 @@ Hiba: %@ Receiving concurrency + Egyidejű fogadás No comment provided by engineer. @@ -4495,11 +4566,12 @@ Hiba: %@ 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. + 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%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion). No comment provided by engineer. Recipient(s) can't see who this message is from. + A címzett(ek) nem látja(k), hogy kitől származik ez az üzenet. No comment provided by engineer. @@ -4599,10 +4671,12 @@ Hiba: %@ Repeat download + Letöltés ismét No comment provided by engineer. Repeat import + Importálás ismét No comment provided by engineer. @@ -4612,6 +4686,7 @@ Hiba: %@ Repeat upload + Feltöltés ismét No comment provided by engineer. @@ -4716,6 +4791,7 @@ Hiba: %@ Safer groups + Biztonságosabb csoportok No comment provided by engineer. @@ -4800,6 +4876,7 @@ Hiba: %@ Saved + Mentett No comment provided by engineer. @@ -4809,6 +4886,7 @@ Hiba: %@ Saved from + Mentve innen: No comment provided by engineer. @@ -4848,7 +4926,7 @@ Hiba: %@ Search bar accepts invitation links. - A keresősáv fogadja a meghívó hivatkozásokat. + A keresősáv elfogadja a meghívó hivatkozásokat. No comment provided by engineer. @@ -4918,7 +4996,7 @@ Hiba: %@ Send direct message to connect - A kapcsolódáshoz közvetlen üzenet küldése + Közvetlen üzenet küldése a csatlakozáshoz No comment provided by engineer. @@ -4963,7 +5041,7 @@ Hiba: %@ Send up to 100 last messages to new members. - Utolsó 100 üzenet küldése új tagoknak. + Az utolsó 100 üzenet elküldése az új tagoknak. No comment provided by engineer. @@ -5018,7 +5096,7 @@ Hiba: %@ Sent at - Elküldve ekkor + Elküldve ekkor: No comment provided by engineer. @@ -5053,7 +5131,7 @@ Hiba: %@ Server test failed! - A kiszolgáló tesztje sikertelen! + Sikertelen kiszolgáló-teszt! No comment provided by engineer. @@ -5093,6 +5171,7 @@ Hiba: %@ Set passphrase + Jelmondat beállítása No comment provided by engineer. @@ -5102,7 +5181,7 @@ Hiba: %@ Set the message shown to new members! - Megjelenő üzenetet beállítása új tagok részére! + Megjelenő üzenet beállítása az új tagok számára! No comment provided by engineer. @@ -5152,6 +5231,7 @@ Hiba: %@ Show QR code + QR-kód megjelenítése No comment provided by engineer. @@ -5161,7 +5241,7 @@ Hiba: %@ Show developer options - Fejlesztői beállítások mutatása + Fejlesztői beállítások megjelenítése No comment provided by engineer. @@ -5176,7 +5256,7 @@ Hiba: %@ Show: - Mutat: + Megjelenítés: No comment provided by engineer. @@ -5236,10 +5316,12 @@ Hiba: %@ SimpleX links are prohibited in this group. + A SimpleX hivatkozások küldése ebben a csoportban le van tiltva. No comment provided by engineer. SimpleX links not allowed + A SimpleX hivatkozások küldése le van tiltva No comment provided by engineer. @@ -5289,41 +5371,42 @@ Hiba: %@ Start migration - Migráció indítása + Átköltöztetés indítása No comment provided by engineer. Stop - Megállítás + Megszakítás No comment provided by engineer. Stop SimpleX - A SimpleX megállítása + A SimpleX megszakítása authentication reason Stop chat + Csevegési szolgáltatás megszakítása 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 + Csevegés megszakí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. + A csevegés megszakítása a csevegőadatbázis exportálásához, importálásához vagy törléséhez. A csevegés megszakí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? + Csevegési szolgáltatás megszakítása? No comment provided by engineer. Stop file - Fájl megállítása + Fájl megszakítása cancel file action @@ -5338,16 +5421,17 @@ Hiba: %@ Stop sharing - Megosztás leállítása + Megosztás megszakítása No comment provided by engineer. Stop sharing address? - Címmegosztás megállítása? + Címmegosztás megszakítása? No comment provided by engineer. Stopping chat + Csevegés megszakítása No comment provided by engineer. @@ -5397,7 +5481,7 @@ Hiba: %@ Tap button - Koppintson a gombra + Koppintson a No comment provided by engineer. @@ -5417,7 +5501,7 @@ Hiba: %@ Tap to join incognito - Koppintson az inkognitómódhoz való csatlakozáshoz + Koppintson az inkognitóban való csatlakozáshoz No comment provided by engineer. @@ -5539,7 +5623,7 @@ Ez valamilyen hiba, vagy sérült kapcsolat esetén fordulhat elő. 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ő. + A régi adatbázis nem került eltávolításra az átköltöztetés során, így törölhető. No comment provided by engineer. @@ -5594,15 +5678,17 @@ Ez valamilyen hiba, vagy sérült kapcsolat esetén fordulhat elő. 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. + Ez a művelet nem vonható vissza - profiljai, ismerősei, üzenetei és fájljai visszafordíthatatlanul törlésre kerülnek. No comment provided by engineer. This chat is protected by end-to-end encryption. + Ez a csevegés végpontok közötti titkosítással védett. E2EE info chat item This chat is protected by quantum resistant end-to-end encryption. + Ez a csevegés végpontok közötti kvantumrezisztens tikosítással védett. E2EE info chat item @@ -5769,7 +5855,7 @@ A funkció engedélyezése előtt a rendszer felszólítja a hitelesítés befej Unexpected migration state - Váratlan migrációs állapot + Váratlan átköltöztetési állapot No comment provided by engineer. @@ -5856,7 +5942,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola Up to 100 last messages are sent to new members. - Legfeljebb az utolsó 100 üzenet kerül elküldésre az új tagoknak. + Legfeljebb az utolsó 100 üzenet kerül elküldésre az új tagok számára. No comment provided by engineer. @@ -5901,6 +5987,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola Upload failed + Sikertelen feltöltés No comment provided by engineer. @@ -5910,6 +5997,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola Uploading archive + Archívum feltöltése No comment provided by engineer. @@ -5964,6 +6052,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola Use the app while in the call. + Használja az alkalmazást hívás közben. No comment provided by engineer. @@ -6003,10 +6092,12 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola Verify database passphrase + Adatbázis jelmondatának ellenőrzése No comment provided by engineer. Verify passphrase + Jelmondat ellenőrzése No comment provided by engineer. @@ -6071,6 +6162,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola Voice messages not allowed + A hangüzenetek küldése le van tiltva No comment provided by engineer. @@ -6105,6 +6197,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola Warning: starting chat on multiple devices is not supported and will cause message delivery failures + Figyelmeztetés: a csevegés elindítása egyszerre több eszközön nem támogatott, továbbá üzenetkézbesítési hibákat okozhat No comment provided by engineer. @@ -6129,6 +6222,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola Welcome message is too long + Az üdvözlő üzenet túl hosszú No comment provided by engineer. @@ -6143,6 +6237,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola When connecting audio and video calls. + Amikor egy bejövő hang- vagy videóhívás érkezik. No comment provided by engineer. @@ -6157,14 +6252,17 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola WiFi + Wi-Fi No comment provided by engineer. Will be enabled in direct chats! + A közvetlen csevegésekben engedélyezve lesz! No comment provided by engineer. Wired ethernet + Vezetékes Ethernet No comment provided by engineer. @@ -6204,6 +6302,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola You **must not** use the same database on two devices. + **Nem szabad** ugyanazt az adatbázist használni egyszerre két eszközön. No comment provided by engineer. @@ -6223,7 +6322,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola You are already connected to %@. - Már csatlakozva van ehhez: %@. + Már kapcsolódva van hozzá: %@. No comment provided by engineer. @@ -6238,7 +6337,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola You are already in group %@. - Már a %@ csoportban van. + Már a(z) %@ csoport tagja. No comment provided by engineer. @@ -6295,6 +6394,7 @@ Csatlakozási kérés megismétlése? You can give another try. + Megpróbálhatja még egyszer. No comment provided by engineer. @@ -6391,7 +6491,7 @@ Kapcsolódási kérés megismétlése? You invited a contact - Meghívott egy ismerőst + Meghívta egy ismerősét No comment provided by engineer. @@ -6511,12 +6611,12 @@ Kapcsolódási kérés megismétlése? Your chat database - Csevegési adatbázisa + Csevegési adatbázis 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. + A csevegési adatbázis nincs titkosítva – adjon meg egy jelmondatot a titkosításhoz. No comment provided by engineer. @@ -6573,7 +6673,7 @@ Megszakíthatja ezt a kapcsolatfelvételt és törölheti az ismerőst (ezt kés Your profile **%@** will be shared. - **%@** nevű profilja megosztásra kerül. + A(z) **%@** nevű profilja megosztásra fog kerülni. No comment provided by engineer. @@ -6585,7 +6685,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. 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. + Profilja, ismerősei és az elküldött üzenetei az eszközön kerülnek tárolásra. No comment provided by engineer. @@ -6635,7 +6735,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. above, then choose: - fent, majd válassza ki: + gombra fent, majd válassza ki: No comment provided by engineer. @@ -6650,6 +6750,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. admins + adminok feature role @@ -6664,6 +6765,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. all members + minden tag feature role @@ -6673,7 +6775,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. and %lld other events - és %lld egyéb esemény + és %lld további esemény No comment provided by engineer. @@ -6738,7 +6840,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. changed address for you - Cím megváltoztatva + cím megváltoztatva chat item text @@ -6823,7 +6925,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. connection established - Kapcsolat létrehozva + kapcsolat létrehozva chat list item title (it should not be shown @@ -6858,7 +6960,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. 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ó: %@ + az adatbázis verziója újabb, mint az alkalmazásé, de nincs visszafelé átköltöztetés ehhez: %@ No comment provided by engineer. @@ -6898,7 +7000,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. different migration in the app/database: %@ / %@ - különböző migrációk az alkalmazásban/adatbázisban: %@ / %@ + különböző átköltöztetések az alkalmazásban/adatbázisban: %@ / %@ No comment provided by engineer. @@ -6928,7 +7030,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. enabled for contact - engedélyezve ismerős részére + engedélyezve az ismerős számára enabled status @@ -6998,6 +7100,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. forwarded + továbbított No comment provided by engineer. @@ -7037,7 +7140,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. incognito via one-time link - inkognitó egyszer használatos hivatkozáson keresztül + inkognitó az egyszer használatos hivatkozáson keresztül chat list item description @@ -7067,22 +7170,22 @@ A SimpleX kiszolgálók nem látjhatják profilját. invited - meghívott + meghívta No comment provided by engineer. invited %@ - %@ meghívott + meghívta %@-t rcv group event chat item invited to connect - meghívott, hogy csatlakozzon + meghívta, hogy csatlakozzon chat list item title invited via your group link - meghívott a csoport hivatkozásán keresztül + meghívta a csoport hivatkozásán keresztül rcv group event chat item @@ -7097,7 +7200,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. left - elhagyta + elhagyta a csoportot rcv group event chat item @@ -7142,7 +7245,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. moderated by %@ - %@ által moderálva + moderálva lett %@ által marked deleted chat item preview text @@ -7209,6 +7312,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. owners + tulajdonosok feature role @@ -7218,6 +7322,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. quantum resistant e2e encryption + végpontok közötti kvantumrezisztens titkosítás chat item text @@ -7262,10 +7367,12 @@ A SimpleX kiszolgálók nem látjhatják profilját. saved + mentett No comment provided by engineer. saved from %@ + mentve innen: %@ No comment provided by engineer. @@ -7305,6 +7412,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. standard end-to-end encryption + szabványos végpontok közötti titkosítás chat item text @@ -7409,6 +7517,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. you + ön No comment provided by engineer. @@ -7448,7 +7557,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. you left - elhagyta + elhagyta a csoportot snd group event chat item 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 87ab966e1d..76f634f917 100644 --- a/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff +++ b/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff @@ -2805,6 +2805,7 @@ Dit kan niet ongedaan gemaakt worden! Forward and save messages + Berichten doorsturen en opslaan No comment provided by engineer. @@ -3174,6 +3175,7 @@ Dit kan niet ongedaan gemaakt worden! In-call sounds + Geluiden tijdens het bellen No comment provided by engineer. @@ -3653,6 +3655,7 @@ Dit is jouw link voor groep %@! Message source remains private. + Berichtbron blijft privé. No comment provided by engineer. @@ -3772,6 +3775,7 @@ Dit is jouw link voor groep %@! More reliable network connection. + Betrouwbaardere netwerkverbinding. No comment provided by engineer. @@ -3816,6 +3820,7 @@ Dit is jouw link voor groep %@! Network management + Netwerkbeheer No comment provided by engineer. @@ -4546,6 +4551,7 @@ Fout: %@ Receiving concurrency + Gelijktijdig ontvangen No comment provided by engineer. @@ -6231,6 +6237,7 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak When connecting audio and video calls. + Bij het verbinden van audio- en video-oproepen. No comment provided by engineer. @@ -6250,6 +6257,7 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak Will be enabled in direct chats! + Wordt ingeschakeld in directe chats! No comment provided by engineer. diff --git a/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff b/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff index f4187ec1db..602519a962 100644 --- a/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff +++ b/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff @@ -745,6 +745,7 @@ Allow to send SimpleX links. + SimpleX bağlantıları göndilmesine izin ver. No comment provided by engineer. @@ -1089,6 +1090,7 @@ Cellular + Hücresel Veri No comment provided by engineer. @@ -2088,6 +2090,7 @@ Bu geri alınamaz! Download + İndir chat item action @@ -2202,6 +2205,7 @@ Bu geri alınamaz! Enabled for + Şunlar için etkinleştirildi No comment provided by engineer. @@ -2726,6 +2730,7 @@ Bu geri alınamaz! Files and media not allowed + Dosyalar ve medyaya izin verilmiyor No comment provided by engineer. @@ -2795,18 +2800,22 @@ Bu geri alınamaz! Forward + İlet chat item action Forward and save messages + Mesajları ilet ve kaydet No comment provided by engineer. Forwarded + İletildi No comment provided by engineer. Forwarded from + Şuradan iletildi No comment provided by engineer. @@ -2921,6 +2930,7 @@ Bu geri alınamaz! Group members can send SimpleX links. + Grup üyeleri SimpleX bağlantıları gönderebilir. No comment provided by engineer. @@ -3165,6 +3175,7 @@ Bu geri alınamaz! In-call sounds + Arama içi sesler No comment provided by engineer. @@ -3644,6 +3655,7 @@ Bu senin grup için bağlantın %@! Message source remains private. + Mesaj kaynağı gizli kalır. No comment provided by engineer. @@ -3763,6 +3775,7 @@ Bu senin grup için bağlantın %@! More reliable network connection. + Daha güvenilir ağ bağlantısı. No comment provided by engineer. @@ -3802,10 +3815,12 @@ Bu senin grup için bağlantın %@! Network connection + Ağ bağlantısı No comment provided by engineer. Network management + Ağ yönetimi No comment provided by engineer. @@ -3920,6 +3935,7 @@ Bu senin grup için bağlantın %@! No network connection + Ağ bağlantısı yok No comment provided by engineer. @@ -4138,6 +4154,7 @@ Bu senin grup için bağlantın %@! Other + Diğer No comment provided by engineer. @@ -4399,6 +4416,7 @@ Hata: %@ Prohibit sending SimpleX links. + SimpleX bağlantısı gönderimini yasakla. No comment provided by engineer. @@ -4533,6 +4551,7 @@ Hata: %@ Receiving concurrency + Eşzamanlılık alınıyor No comment provided by engineer. @@ -4552,6 +4571,7 @@ Hata: %@ Recipient(s) can't see who this message is from. + Alıcı(lar) bu mesajın kimden geldiğini göremez. No comment provided by engineer. @@ -4856,6 +4876,7 @@ Hata: %@ Saved + Kaydedildi No comment provided by engineer. @@ -4865,6 +4886,7 @@ Hata: %@ Saved from + Tarafından kaydedildi No comment provided by engineer. @@ -5294,10 +5316,12 @@ Hata: %@ SimpleX links are prohibited in this group. + SimpleX bağlantıları bu grupta yasaklandı. No comment provided by engineer. SimpleX links not allowed + SimpleX bağlantılarına izin verilmiyor No comment provided by engineer. @@ -6138,6 +6162,7 @@ Bağlanmak için lütfen kişinizden başka bir bağlantı oluşturmasını iste Voice messages not allowed + Sesli mesajlara izin verilmiyor No comment provided by engineer. @@ -6212,6 +6237,7 @@ Bağlanmak için lütfen kişinizden başka bir bağlantı oluşturmasını iste When connecting audio and video calls. + Sesli ve görüntülü aramalara bağlanırken. No comment provided by engineer. @@ -6226,14 +6252,17 @@ Bağlanmak için lütfen kişinizden başka bir bağlantı oluşturmasını iste WiFi + WiFi No comment provided by engineer. Will be enabled in direct chats! + Doğrudan sohbetlerde etkinleştirilecektir! No comment provided by engineer. Wired ethernet + Kablolu ethernet No comment provided by engineer. @@ -6721,6 +6750,7 @@ SimpleX sunucuları profilinizi göremez. admins + yöneticiler feature role @@ -6735,6 +6765,7 @@ SimpleX sunucuları profilinizi göremez. all members + bütün üyeler feature role @@ -7069,6 +7100,7 @@ SimpleX sunucuları profilinizi göremez. forwarded + iletildi No comment provided by engineer. @@ -7280,6 +7312,7 @@ SimpleX sunucuları profilinizi göremez. owners + sahipler feature role @@ -7334,10 +7367,12 @@ SimpleX sunucuları profilinizi göremez. saved + kaydedildi No comment provided by engineer. saved from %@ + %@ tarafından kaydedildi No comment provided by engineer. @@ -7482,6 +7517,7 @@ SimpleX sunucuları profilinizi göremez. you + sen No comment provided by engineer. diff --git a/apps/ios/es.lproj/Localizable.strings b/apps/ios/es.lproj/Localizable.strings index 8348982190..3482dfe262 100644 --- a/apps/ios/es.lproj/Localizable.strings +++ b/apps/ios/es.lproj/Localizable.strings @@ -389,6 +389,9 @@ /* member role */ "admin" = "administrador"; +/* feature role */ +"admins" = "administradores"; + /* No comment provided by engineer. */ "Admins can block a member for all." = "Los administradores pueden bloquear a un miembro para los demás."; @@ -416,6 +419,9 @@ /* No comment provided by engineer. */ "All group members will remain connected." = "Todos los miembros del grupo permanecerán conectados."; +/* feature role */ +"all members" = "todos los miembros"; + /* No comment provided by engineer. */ "All messages will be deleted - this cannot be undone!" = "Todos los mensajes serán borrados. ¡No podrá deshacerse!"; @@ -464,6 +470,9 @@ /* No comment provided by engineer. */ "Allow to send files and media." = "Se permite enviar archivos y multimedia."; +/* No comment provided by engineer. */ +"Allow to send SimpleX links." = "Permitir enviar enlaces SimpleX."; + /* No comment provided by engineer. */ "Allow to send voice messages." = "Permites enviar mensajes de voz."; @@ -707,6 +716,9 @@ /* No comment provided by engineer. */ "Cannot receive file" = "No se puede recibir el archivo"; +/* No comment provided by engineer. */ +"Cellular" = "Móvil"; + /* No comment provided by engineer. */ "Change" = "Cambiar"; @@ -1401,6 +1413,9 @@ /* No comment provided by engineer. */ "Downgrade and open chat" = "Degradar y abrir Chat"; +/* chat item action */ +"Download" = "Descargar"; + /* No comment provided by engineer. */ "Download failed" = "Descarga fallida"; @@ -1476,6 +1491,9 @@ /* enabled status */ "enabled" = "activado"; +/* No comment provided by engineer. */ +"Enabled for" = "Activar para"; + /* enabled status */ "enabled for contact" = "activado para el contacto"; @@ -1830,6 +1848,9 @@ /* No comment provided by engineer. */ "Files and media are prohibited in this group." = "Los archivos y multimedia no están permitidos en este grupo."; +/* No comment provided by engineer. */ +"Files and media not allowed" = "Archivos y multimedia no permitidos"; + /* No comment provided by engineer. */ "Files and media prohibited!" = "¡Archivos y multimedia no permitidos!"; @@ -1869,6 +1890,21 @@ /* No comment provided by engineer. */ "For console" = "Para consola"; +/* chat item action */ +"Forward" = "Reenviar"; + +/* No comment provided by engineer. */ +"Forward and save messages" = "Reenviar y guardar mensajes"; + +/* No comment provided by engineer. */ +"forwarded" = "reenviado"; + +/* No comment provided by engineer. */ +"Forwarded" = "Reenviado"; + +/* No comment provided by engineer. */ +"Forwarded from" = "Reenviado por"; + /* No comment provided by engineer. */ "Found desktop" = "Ordenador encontrado"; @@ -1947,6 +1983,9 @@ /* No comment provided by engineer. */ "Group members can send files and media." = "Los miembros del grupo pueden enviar archivos y multimedia."; +/* No comment provided by engineer. */ +"Group members can send SimpleX links." = "Los miembros del grupo pueden enviar enlaces SimpleX."; + /* No comment provided by engineer. */ "Group members can send voice messages." = "Los miembros del grupo pueden enviar mensajes de voz."; @@ -2088,6 +2127,9 @@ /* No comment provided by engineer. */ "In reply to" = "En respuesta a"; +/* No comment provided by engineer. */ +"In-call sounds" = "Sonido de llamada"; + /* No comment provided by engineer. */ "Incognito" = "Incógnito"; @@ -2433,6 +2475,9 @@ /* notification */ "message received" = "mensaje recibido"; +/* No comment provided by engineer. */ +"Message source remains private." = "El autor del mensaje se mantiene privado."; + /* No comment provided by engineer. */ "Message text" = "Contacto y texto"; @@ -2517,6 +2562,9 @@ /* No comment provided by engineer. */ "More improvements are coming soon!" = "¡Pronto habrá más mejoras!"; +/* No comment provided by engineer. */ +"More reliable network connection." = "Conexión de red más fiable."; + /* item status description */ "Most likely this connection is deleted." = "Probablemente la conexión ha sido eliminada."; @@ -2538,6 +2586,12 @@ /* No comment provided by engineer. */ "Network & servers" = "Servidores y Redes"; +/* No comment provided by engineer. */ +"Network connection" = "Conexión de red"; + +/* No comment provided by engineer. */ +"Network management" = "Gestión de la red"; + /* No comment provided by engineer. */ "Network settings" = "Configuración de red"; @@ -2616,6 +2670,9 @@ /* No comment provided by engineer. */ "No history" = "Sin historial"; +/* No comment provided by engineer. */ +"No network connection" = "Sin conexión de red"; + /* No comment provided by engineer. */ "No permission to record voice message" = "Sin permiso para grabar mensajes de voz"; @@ -2762,9 +2819,15 @@ /* No comment provided by engineer. */ "Or show this code" = "O mostrar este código"; +/* No comment provided by engineer. */ +"Other" = "Otro"; + /* member role */ "owner" = "propietario"; +/* feature role */ +"owners" = "propietarios"; + /* No comment provided by engineer. */ "Passcode" = "Código de acceso"; @@ -2930,6 +2993,9 @@ /* No comment provided by engineer. */ "Prohibit sending files and media." = "No permitir el envío de archivos y multimedia."; +/* No comment provided by engineer. */ +"Prohibit sending SimpleX links." = "No permitir el envío de enlaces SimpleX."; + /* No comment provided by engineer. */ "Prohibit sending voice messages." = "No se permiten mensajes de voz."; @@ -3008,6 +3074,9 @@ /* No comment provided by engineer. */ "Receiving address will be changed to a different server. Address change will complete after sender comes online." = "La dirección de recepción pasará a otro servidor. El cambio se completará cuando el remitente esté en línea."; +/* No comment provided by engineer. */ +"Receiving concurrency" = "Concurrencia en la recepción"; + /* No comment provided by engineer. */ "Receiving file will be stopped." = "Se detendrá la recepción del archivo."; @@ -3017,6 +3086,9 @@ /* 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)." = "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. */ +"Recipient(s) can't see who this message is from." = "Los destinatarios no ven de quién procede este mensaje."; + /* No comment provided by engineer. */ "Recipients see updates as you type them." = "Los destinatarios ven actualizarse mientras escribes."; @@ -3212,6 +3284,18 @@ /* No comment provided by engineer. */ "Save welcome message?" = "¿Guardar mensaje de bienvenida?"; +/* No comment provided by engineer. */ +"saved" = "guardado"; + +/* No comment provided by engineer. */ +"Saved" = "Guardado"; + +/* No comment provided by engineer. */ +"Saved from" = "Guardado desde"; + +/* No comment provided by engineer. */ +"saved from %@" = "Guardado desde %@"; + /* message info title */ "Saved message" = "Mensaje guardado"; @@ -3479,6 +3563,12 @@ /* chat feature */ "SimpleX links" = "Enlaces SimpleX"; +/* No comment provided by engineer. */ +"SimpleX links are prohibited in this group." = "Los enlaces SimpleX no se permiten en este grupo."; + +/* No comment provided by engineer. */ +"SimpleX links not allowed" = "Enlaces SimpleX no permitidos"; + /* No comment provided by engineer. */ "SimpleX Lock" = "Bloqueo SimpleX"; @@ -3636,10 +3726,10 @@ "Thank you for installing SimpleX Chat!" = "¡Gracias por instalar SimpleX Chat!"; /* 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)!" = "Gracias a los usuarios: [contribuye vía Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#traducir-el-aplicaciones)!"; +"Thanks to the users – [contribute via Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "¡Nuestro agradecimiento a todos los colaboradores, [puedes contribuir a través de Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#traducir-el-aplicaciones)!"; /* No comment provided by engineer. */ -"Thanks to the users – contribute via Weblate!" = "¡Gracias a los colaboradores! Contribuye a través de Weblate."; +"Thanks to the users – contribute via Weblate!" = "¡Nuestro agradecimiento a todos los colaboradores! Puedes contribuir a través de Weblate"; /* No comment provided by engineer. */ "The 1st platform without any user identifiers – private by design." = "La primera plataforma sin identificadores de usuario: diseñada para la privacidad."; @@ -4043,6 +4133,9 @@ /* No comment provided by engineer. */ "Voice messages are prohibited in this group." = "Los mensajes de voz no están permitidos en este grupo."; +/* No comment provided by engineer. */ +"Voice messages not allowed" = "Mensajes de voz no permitidos"; + /* No comment provided by engineer. */ "Voice messages prohibited!" = "¡Mensajes de voz no permitidos!"; @@ -4094,12 +4187,24 @@ /* No comment provided by engineer. */ "When available" = "Si disponibles"; +/* No comment provided by engineer. */ +"When connecting audio and video calls." = "Al iniciar llamadas de audio y vídeo."; + /* No comment provided by engineer. */ "When people request to connect, you can accept or reject it." = "Cuando alguien solicite conectarse podrás aceptar o rechazar la solicitud."; /* 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." = "Cuando compartes un perfil incógnito con alguien, este perfil también se usará para los grupos a los que te inviten."; +/* No comment provided by engineer. */ +"WiFi" = "WiFi"; + +/* No comment provided by engineer. */ +"Will be enabled in direct chats!" = "¡Será habilitado en los chats directos!"; + +/* No comment provided by engineer. */ +"Wired ethernet" = "Ethernet por cable"; + /* No comment provided by engineer. */ "With encrypted files and media." = "Con cifrado de archivos y multimedia."; @@ -4121,6 +4226,9 @@ /* pref value */ "yes" = "sí"; +/* No comment provided by engineer. */ +"you" = "tu"; + /* No comment provided by engineer. */ "You" = "Tú"; diff --git a/apps/ios/hu.lproj/Localizable.strings b/apps/ios/hu.lproj/Localizable.strings index f9a470fbbc..deb4e02a51 100644 --- a/apps/ios/hu.lproj/Localizable.strings +++ b/apps/ios/hu.lproj/Localizable.strings @@ -20,7 +20,7 @@ "_italic_" = "\\_dőlt_"; /* No comment provided by engineer. */ -"- connect to [directory service](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!\n- delivery receipts (up to 20 members).\n- faster and more stable." = "- kapcsolódás a [könyvtár szolgáltatáshoz] (simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2Ld3%3DWpxkKFeXSPv3pwp %2F%3Fv%3D1-2%26dh %3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6glco6bqjETA)4Beklco6bqj)\n- kézbesítési jelentések (legfeljebb 20 tag).\n- gyorsabb és stabilabb."; +"- connect to [directory service](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!\n- delivery receipts (up to 20 members).\n- faster and more stable." = "- kapcsolódás a [könyvtár szolgáltatáshoz](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!\n- kézbesítési jelentések (legfeljebb 20 tag).\n- gyorsabb és stabilabb."; /* No comment provided by engineer. */ "- more stable message delivery.\n- a bit better groups.\n- and more!" = "- stabilabb üzenetkézbesítés.\n- valamivel jobb csoportok.\n- és még sok más!"; @@ -85,6 +85,9 @@ /* 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." = "**Megjegyzés**: ha két eszközön is ugyanazt az adatbázist használja, akkor biztonsági védelemként megszakítja a kapcsolataiból érkező üzenetek visszafejtését."; + /* 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."; @@ -94,6 +97,9 @@ /* 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." = "**Figyelem**: az archívum törlésre kerül."; + /* No comment provided by engineer. */ "*bold*" = "\\*félkövér*"; @@ -104,7 +110,7 @@ "## History" = "## Előzmények"; /* copied message info */ -"## In reply to" = "## Válaszul erre"; +"## In reply to" = "## Válaszul erre:"; /* No comment provided by engineer. */ "#secret#" = "#titkos#"; @@ -136,6 +142,9 @@ /* No comment provided by engineer. */ "%@ connected" = "%@ csatlakozott"; +/* No comment provided by engineer. */ +"%@ downloaded" = "%@ letöltve"; + /* notification title */ "%@ is connected!" = "%@ csatlakozott!"; @@ -148,6 +157,9 @@ /* No comment provided by engineer. */ "%@ servers" = "%@ kiszolgáló"; +/* No comment provided by engineer. */ +"%@ uploaded" = "%@ feltöltve"; + /* notification title */ "%@ wants to connect!" = "%@ csatlakozni szeretne!"; @@ -176,7 +188,7 @@ "%d sec" = "%d mp"; /* integrity error chat item */ -"%d skipped message(s)" = "%d kihagyott üzenet"; +"%d skipped message(s)" = "%d üzenet kihagyva"; /* time interval */ "%d weeks" = "%d hét"; @@ -209,7 +221,7 @@ "%lld messages marked deleted" = "%lld törlésre megjelölt üzenet"; /* No comment provided by engineer. */ -"%lld messages moderated by %@" = "%@ %lld üzenetet moderált"; +"%lld messages moderated by %@" = "%lld üzenet moderálva lett %@ által"; /* No comment provided by engineer. */ "%lld minutes" = "%lld perc"; @@ -248,7 +260,7 @@ "%u messages failed to decrypt." = "%u üzenet visszafejtése sikertelen."; /* No comment provided by engineer. */ -"%u messages skipped." = "%u kihagyott üzenet."; +"%u messages skipped." = "%u üzenet kihagyva."; /* No comment provided by engineer. */ "`a + b`" = "a + b"; @@ -323,7 +335,7 @@ "About SimpleX Chat" = "A SimpleX Chat névjegye"; /* No comment provided by engineer. */ -"above, then choose:" = "fent, majd válassza ki:"; +"above, then choose:" = "gombra fent, majd válassza ki:"; /* No comment provided by engineer. */ "Accent color" = "Kiemelő szín"; @@ -377,6 +389,12 @@ /* member role */ "admin" = "admin"; +/* feature role */ +"admins" = "adminok"; + +/* No comment provided by engineer. */ +"Admins can block a member for all." = "Az adminok egy tagot mindenki számára letilthatnak."; + /* 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."; @@ -393,7 +411,7 @@ "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!"; +"All chats and messages will be deleted - this cannot be undone!" = "Minden csevegés és üzenet törlésre kerül - ez a művelet 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."; @@ -401,11 +419,14 @@ /* 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!"; +/* feature role */ +"all members" = "minden tag"; /* 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."; +"All messages will be deleted - this cannot be undone!" = "Minden üzenet törlésre kerül – ez a művelet 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 - ez a művelet nem vonható vissza! Az üzenetek CSAK az ön számára törlődnek."; /* No comment provided by engineer. */ "All new messages from %@ will be hidden!" = "Minden új üzenet elrejtésre kerül tőle: %@!"; @@ -416,6 +437,9 @@ /* 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." = "Minden ismerőse, a beszélgetései és a fájljai biztonságosan titkosításra kerülnek, melyek részletekben feltöltődnek a beállított XFTP átjátszókra."; + /* No comment provided by engineer. */ "Allow" = "Engedélyezés"; @@ -435,17 +459,20 @@ "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."; +"Allow sending direct messages to members." = "Közvetlen üzenetek küldésének engedélyezése a tagok számára."; /* 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)"; +"Allow to irreversibly delete sent messages. (24 hours)" = "Elküldött üzenetek végleges 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 SimpleX links." = "A SimpleX hivatkozások küldése engedélyezve van."; + /* No comment provided by engineer. */ "Allow to send voice messages." = "Hangüzenetek küldésének engedélyezése."; @@ -462,7 +489,7 @@ "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)"; +"Allow your contacts to irreversibly delete sent messages. (24 hours)" = "Elküldött üzenetek végleges törlésének engedélyezése az 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."; @@ -489,7 +516,7 @@ "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. */ -"and %lld other events" = "és %lld egyéb esemény"; +"and %lld other events" = "és %lld további esemény"; /* No comment provided by engineer. */ "Answer call" = "Hívás fogadása"; @@ -497,6 +524,9 @@ /* No comment provided by engineer. */ "App build: %@" = "Az alkalmazás build száma: %@"; +/* No comment provided by engineer. */ +"App data migration" = "Alkalmazásadatok átköltöztetése"; + /* 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)."; @@ -518,6 +548,15 @@ /* No comment provided by engineer. */ "Appearance" = "Megjelenés"; +/* No comment provided by engineer. */ +"Apply" = "Alkalmaz"; + +/* No comment provided by engineer. */ +"Archive and upload" = "Archiválás és feltöltés"; + +/* No comment provided by engineer. */ +"Archiving database" = "Adatbázis archiválása"; + /* No comment provided by engineer. */ "Attach" = "Csatolás"; @@ -540,7 +579,7 @@ "Authentication cancelled" = "Hitelesítés megszakítva"; /* No comment provided by engineer. */ -"Authentication failed" = "Hitelesítés sikertelen"; +"Authentication failed" = "Sikertelen hitelesítés"; /* 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."; @@ -621,7 +660,7 @@ "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)"; +"Both you and your contact can irreversibly delete sent messages. (24 hours)" = "Mindkét fél törölheti véglegesen 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."; @@ -665,6 +704,9 @@ /* No comment provided by engineer. */ "Cancel" = "Megszakítás"; +/* No comment provided by engineer. */ +"Cancel migration" = "Átköltöztetés megszakítása"; + /* feature offered item */ "cancelled %@" = "%@ törölve"; @@ -674,6 +716,9 @@ /* No comment provided by engineer. */ "Cannot receive file" = "Nem lehet fogadni a fájlt"; +/* No comment provided by engineer. */ +"Cellular" = "Mobilhálózat"; + /* No comment provided by engineer. */ "Change" = "Változtatás"; @@ -706,7 +751,7 @@ "Change self-destruct passcode" = "Önmegsemmisító jelkód megváltoztatása"; /* chat item text */ -"changed address for you" = "Cím megváltoztatva"; +"changed address for you" = "cím megváltoztatva"; /* rcv group event chat item */ "changed role of %@ to %@" = "%1$@ szerepköre megváltozott erre: %2$@"; @@ -744,6 +789,9 @@ /* 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!" = "A csevegés átköltöztetve!"; + /* No comment provided by engineer. */ "Chat preferences" = "Csevegési beállítások"; @@ -756,6 +804,9 @@ /* 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." = "Válassza az _Átköltöztetés egy másik eszközről_ opciót az új eszközön és szkennelje be a QR-kódot."; + /* No comment provided by engineer. */ "Choose file" = "Fájl kiválasztása"; @@ -801,6 +852,9 @@ /* 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" = "Hálózati beállítások megerősítése"; + /* No comment provided by engineer. */ "Confirm new passphrase…" = "Új jelmondat megerősítése…"; @@ -810,6 +864,12 @@ /* 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." = "Erősítse meg, hogy emlékszik az adatbázis jelmondatára az átköltöztetéshez."; + +/* No comment provided by engineer. */ +"Confirm upload" = "Feltöltés megerősítése"; + /* server test step */ "Connect" = "Kapcsolódás"; @@ -817,7 +877,7 @@ "Connect automatically" = "Kapcsolódás automatikusan"; /* No comment provided by engineer. */ -"Connect incognito" = "Inkognítóban csatlakozva"; +"Connect incognito" = "Kapcsolódás inkognitóban"; /* No comment provided by engineer. */ "Connect to desktop" = "Kapcsolódás számítógéphez"; @@ -835,13 +895,13 @@ "Connect to yourself?\nThis is your own SimpleX address!" = "Kapcsolódás saját magához?\nEz a SimpleX azonosítója!"; /* No comment provided by engineer. */ -"Connect via contact address" = "Kapcsolódás ismerős azonosítója által"; +"Connect via contact address" = "Csatlakozás ismerős azonosítója által"; /* No comment provided by engineer. */ -"Connect via link" = "Kapcsolódás egy hivatkozáson keresztül"; +"Connect via link" = "Csatlakozá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"; +"Connect via one-time link" = "Csatlakozás egyszer használatos hivatkozáson keresztül"; /* No comment provided by engineer. */ "Connect with %@" = "Kapcsolódás ezzel: %@"; @@ -856,7 +916,7 @@ "connected directly" = "közvetlenül kapcsolódva"; /* No comment provided by engineer. */ -"Connected to desktop" = "Csatlakozva a számítógéphez"; +"Connected to desktop" = "Kapcsolódva a számítógéphez"; /* No comment provided by engineer. */ "connecting" = "kapcsolódás"; @@ -898,7 +958,7 @@ "Connection error (AUTH)" = "Kapcsolódási hiba (AUTH)"; /* chat list item title (it should not be shown */ -"connection established" = "Kapcsolat létrehozva"; +"connection established" = "kapcsolat létrehozva"; /* No comment provided by engineer. */ "Connection request sent!" = "Kapcsolódási kérés elküldve!"; @@ -1000,7 +1060,7 @@ "Create your profile" = "Saját profil létrehozása"; /* No comment provided by engineer. */ -"Created at" = "Létrehozva ekkor"; +"Created at" = "Létrehozva ekkor:"; /* copied message info */ "Created at: %@" = "Létrehozva ekkor: %@"; @@ -1008,6 +1068,9 @@ /* No comment provided by engineer. */ "Created on %@" = "Létrehozva %@"; +/* No comment provided by engineer. */ +"Creating archive link" = "Archív hivatkozás létrehozása"; + /* No comment provided by engineer. */ "Creating link…" = "Hivatkozás létrehozása…"; @@ -1078,7 +1141,7 @@ "Database upgrade" = "Adatbázis fejlesztése"; /* No comment provided by engineer. */ -"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ó: %@"; +"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é átköltöztetés ehhez: %@"; /* No comment provided by engineer. */ "Database will be encrypted and the passphrase stored in the keychain.\n" = "Az adatbázis titkosítva lesz, a jelmondat pedig a kulcstárolóban lesz tárolva.\n"; @@ -1150,11 +1213,14 @@ "Delete Contact" = "Ismerős törlése"; /* No comment provided by engineer. */ -"Delete contact?\nThis cannot be undone!" = "Ismerős törlése?\nEzt nem vonható vissza!"; +"Delete contact?\nThis cannot be undone!" = "Ismerős törlése?\nEz a művelet 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" = "Adatbázis törlése erről az eszközről"; + /* server test step */ "Delete file" = "Fájl törlése"; @@ -1222,7 +1288,7 @@ "deleted" = "törölve"; /* No comment provided by engineer. */ -"Deleted at" = "Törölve ekkor"; +"Deleted at" = "Törölve ekkor:"; /* copied message info */ "Deleted at: %@" = "Törölve ekkor: %@"; @@ -1270,7 +1336,7 @@ "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 migration in the app/database: %@ / %@" = "különböző migrációk az alkalmazásban/adatbázisban: %@ / %@"; +"different migration in the app/database: %@ / %@" = "különböző átköltöztetések az alkalmazásban/adatbázisban: %@ / %@"; /* No comment provided by engineer. */ "Different names, avatars and transport isolation." = "Különböző nevek, avatarok és átviteli izoláció."; @@ -1309,7 +1375,7 @@ "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"; +"Disappears at" = "Eltűnik ekkor:"; /* copied message info */ "Disappears at: %@" = "Eltűnik ekkor: %@"; @@ -1330,7 +1396,7 @@ "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."; +"Do not send history to new members." = "Az előzmények ne kerüljenek elküldésre az új tagok számára."; /* No comment provided by engineer. */ "Do NOT use SimpleX for emergency calls." = "NE használja a SimpleX-et segélyhívásokhoz."; @@ -1347,9 +1413,21 @@ /* No comment provided by engineer. */ "Downgrade and open chat" = "Visszatérés a korábbi verzióra és a csevegés megnyitása"; +/* chat item action */ +"Download" = "Letöltés"; + +/* No comment provided by engineer. */ +"Download failed" = "Sikertelen letöltés"; + /* server test step */ "Download file" = "Fájl letöltése"; +/* No comment provided by engineer. */ +"Downloading archive" = "Archívum letöltése"; + +/* No comment provided by engineer. */ +"Downloading link details" = "Letöltési hivatkozás részletei"; + /* No comment provided by engineer. */ "Duplicate display name!" = "Duplikált megjelenítési név!"; @@ -1381,7 +1459,10 @@ "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"; +"Enable for all" = "Engedélyezés mindenki számára"; + +/* No comment provided by engineer. */ +"Enable in direct chats (BETA)!" = "Engedélyezés a közvetlen csevegésekben (BÉTA)!"; /* No comment provided by engineer. */ "Enable instant notifications?" = "Azonnali értesítések engedélyezése?"; @@ -1410,8 +1491,11 @@ /* enabled status */ "enabled" = "engedélyezve"; +/* No comment provided by engineer. */ +"Enabled for" = "Engedélyezve"; + /* enabled status */ -"enabled for contact" = "engedélyezve ismerős részére"; +"enabled for contact" = "engedélyezve az ismerős számára"; /* enabled status */ "enabled for you" = "engedélyezve az ön számára"; @@ -1441,7 +1525,7 @@ "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"; +"Encrypted message: database migration error" = "Titkosított üzenet: adatbázis-átköltöztetés hiba"; /* notification */ "Encrypted message: keychain error" = "Titkosított üzenet: kulcstároló hiba"; @@ -1474,7 +1558,7 @@ "Encryption re-negotiation error" = "Titkosítás újraegyeztetési hiba"; /* No comment provided by engineer. */ -"Encryption re-negotiation failed." = "Titkosítás újraegyeztetése sikertelen."; +"Encryption re-negotiation failed." = "Sikertelen titkosítás-újraegyeztetés."; /* chat item text */ "encryption re-negotiation required" = "titkosítás újraegyeztetés szükséges"; @@ -1497,6 +1581,9 @@ /* No comment provided by engineer. */ "Enter Passcode" = "Jelkód megadása"; +/* No comment provided by engineer. */ +"Enter passphrase" = "Jelmondat megadása"; + /* No comment provided by engineer. */ "Enter passphrase…" = "Jelmondat megadása…"; @@ -1516,7 +1603,7 @@ "Enter welcome message… (optional)" = "Üdvözlő üzenetet megadása… (opcionális)"; /* No comment provided by engineer. */ -"Enter your name…" = "Adja meg nevét…"; +"Enter your name…" = "Adjon meg egy nevet…"; /* No comment provided by engineer. */ "error" = "hiba"; @@ -1590,6 +1677,9 @@ /* 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" = "Hiba az archívum letöltésekor"; + /* No comment provided by engineer. */ "Error enabling delivery receipts!" = "Hiba a kézbesítési jelentések engedélyezésekor!"; @@ -1635,6 +1725,9 @@ /* No comment provided by engineer. */ "Error saving passphrase to keychain" = "Hiba a jelmondat kulcstárolóba történő mentésekor"; +/* when migrating */ +"Error saving settings" = "Hiba a beállítások mentésekor"; + /* No comment provided by engineer. */ "Error saving user password" = "Hiba a felhasználó jelszavának mentésekor"; @@ -1657,7 +1750,7 @@ "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"; +"Error stopping chat" = "Hiba a csevegés megszakításakor"; /* No comment provided by engineer. */ "Error switching profile!" = "Hiba a profil váltásakor!"; @@ -1677,6 +1770,12 @@ /* 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" = "Hiba az archívum feltöltésekor"; + +/* No comment provided by engineer. */ +"Error verifying passphrase:" = "Hiba a jelmondat ellenőrzésekor:"; + /* No comment provided by engineer. */ "Error: " = "Hiba: "; @@ -1710,6 +1809,9 @@ /* No comment provided by engineer. */ "Exported database archive." = "Exportált adatbázis-archívum."; +/* No comment provided by engineer. */ +"Exported file doesn't exist" = "Az exportált fájl nem létezik"; + /* No comment provided by engineer. */ "Exporting database archive…" = "Adatbázis archívum exportálása…"; @@ -1746,12 +1848,21 @@ /* No comment provided by engineer. */ "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 not allowed" = "Fájlok és média tartalom küldése le van tiltva"; + /* 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" = "Átköltöztetés véglegesítése"; + +/* No comment provided by engineer. */ +"Finalize migration on another device." = "Átköltöztetés véglegesítése egy másik eszközön."; + /* No comment provided by engineer. */ "Finally, we have them! 🚀" = "Végre, megvannak! 🚀"; @@ -1779,6 +1890,21 @@ /* No comment provided by engineer. */ "For console" = "Konzolhoz"; +/* chat item action */ +"Forward" = "Továbbítás"; + +/* No comment provided by engineer. */ +"Forward and save messages" = "Üzenetek továbbítása és mentése"; + +/* No comment provided by engineer. */ +"forwarded" = "továbbított"; + +/* No comment provided by engineer. */ +"Forwarded" = "Továbbított"; + +/* No comment provided by engineer. */ +"Forwarded from" = "Továbbítva innen:"; + /* No comment provided by engineer. */ "Found desktop" = "Megtalált számítógép"; @@ -1834,7 +1960,7 @@ "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."; +"Group invitation is no longer valid, it was removed by sender." = "A csoport meghívó már nem érvényes, a küldője törölte."; /* No comment provided by engineer. */ "Group link" = "Csoport hivatkozás"; @@ -1846,19 +1972,22 @@ "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)"; +"Group members can irreversibly delete sent messages. (24 hours)" = "A csoport tagjai véglegesen törölhetik az elküldött üzeneteiket. (24 óra)"; /* No comment provided by engineer. */ -"Group members can send direct messages." = "Csoporttagok küldhetnek közvetlen üzeneteket."; +"Group members can send direct messages." = "A csoport tagjai küldhetnek egymásnak közvetlen üzeneteket."; /* No comment provided by engineer. */ -"Group members can send disappearing messages." = "Csoporttagok küldhetnek eltűnő üzeneteket."; +"Group members can send disappearing messages." = "A csoport tagjai 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."; +"Group members can send files and media." = "A csoport tagjai küldhetnek fájlokat és médiatartalmakat."; /* No comment provided by engineer. */ -"Group members can send voice messages." = "Csoporttagok küldhetnek hangüzeneteket."; +"Group members can send SimpleX links." = "A csoport tagjai küldhetnek SimpleX hivatkozásokat."; + +/* No comment provided by engineer. */ +"Group members can send voice messages." = "A csoport tagjai küldhetnek hangüzeneteket."; /* notification */ "Group message:" = "Csoport üzenet:"; @@ -1882,10 +2011,10 @@ "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!"; +"Group will be deleted for all members - this cannot be undone!" = "Csoport törlésre kerül minden tag számára - ez a művelet 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!"; +"Group will be deleted for you - this cannot be undone!" = "A csoport törlésre kerül az ön számára - ez a művelet nem vonható vissza!"; /* No comment provided by engineer. */ "Help" = "Segítség"; @@ -1915,7 +2044,7 @@ "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."; +"History is not sent to new members." = "Az előzmények nem kerülnek elküldésre az új tagok számára."; /* time unit */ "hours" = "óra"; @@ -1935,6 +2064,9 @@ /* No comment provided by engineer. */ "How to use your servers" = "Kiszolgálók használata"; +/* No comment provided by engineer. */ +"Hungarian interface" = "Magyar kezelőfelület"; + /* No comment provided by engineer. */ "ICE servers (one per line)" = "ICE-kiszolgálók (soronként egy)"; @@ -1942,7 +2074,7 @@ "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!"; +"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 véglegesen 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:"; @@ -1974,6 +2106,12 @@ /* No comment provided by engineer. */ "Import database" = "Adatbázis importálása"; +/* No comment provided by engineer. */ +"Import failed" = "Sikertelen importálás"; + +/* No comment provided by engineer. */ +"Importing archive" = "Archívum importálása"; + /* No comment provided by engineer. */ "Improved message delivery" = "Továbbfejlesztett üzenetküldés"; @@ -1983,9 +2121,15 @@ /* 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." = "A folytatáshoz a csevegést meg kell szakítani."; + /* No comment provided by engineer. */ "In reply to" = "Válasz neki"; +/* No comment provided by engineer. */ +"In-call sounds" = "Bejövő hívás csengőhangja"; + /* No comment provided by engineer. */ "Incognito" = "Inkognitó"; @@ -2005,7 +2149,7 @@ "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"; +"incognito via one-time link" = "inkognitó az egyszer használatos hivatkozáson keresztül"; /* notification */ "Incoming audio call" = "Bejövő hanghívás"; @@ -2067,6 +2211,9 @@ /* No comment provided by engineer. */ "Invalid link" = "Érvénytelen hivatkozás"; +/* No comment provided by engineer. */ +"Invalid migration confirmation" = "Érvénytelen átköltöztetési visszaigazolás"; + /* No comment provided by engineer. */ "Invalid name!" = "Érvénytelen név!"; @@ -2098,16 +2245,16 @@ "Invite to group" = "Meghívás a csoportba"; /* No comment provided by engineer. */ -"invited" = "meghívott"; +"invited" = "meghívta"; /* rcv group event chat item */ -"invited %@" = "%@ meghívott"; +"invited %@" = "meghívta %@-t"; /* chat list item title */ -"invited to connect" = "meghívott, hogy csatlakozzon"; +"invited to connect" = "meghívta, hogy csatlakozzon"; /* rcv group event chat item */ -"invited via your group link" = "meghívott a csoport hivatkozásán keresztül"; +"invited via your group link" = "meghívta a csoport hivatkozásán keresztül"; /* No comment provided by engineer. */ "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."; @@ -2116,13 +2263,13 @@ "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. */ -"Irreversible message deletion" = "Visszafordíthatatlan üzenettörlés"; +"Irreversible message deletion" = "Végleges ü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."; +"Irreversible message deletion is prohibited in this chat." = "Ebben a csevegésben az üzenetek végleges 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."; +"Irreversible message deletion is prohibited in this group." = "Ebben a csoportban az üzenetek végleges 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."; @@ -2206,7 +2353,7 @@ "Leave group?" = "Csoport elhagyása?"; /* rcv group event chat item */ -"left" = "elhagyta"; +"left" = "elhagyta a csoportot"; /* email subject */ "Let's talk in SimpleX Chat" = "Beszélgessünk a SimpleX Chat-ben"; @@ -2257,7 +2404,7 @@ "Make one message disappear" = "Egy üzenet eltüntetése"; /* No comment provided by engineer. */ -"Make profile private!" = "Tegye priváttá profilját!"; +"Make profile private!" = "Tegye priváttá a 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 (%@)."; @@ -2305,7 +2452,7 @@ "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!"; +"Member will be removed from group - this cannot be undone!" = "A tag eltávolítása a csoportból - ez a művelet nem vonható vissza!"; /* item status text */ "Message delivery error" = "Üzenetkézbesítési hiba"; @@ -2328,9 +2475,15 @@ /* notification */ "message received" = "üzenet érkezett"; +/* No comment provided by engineer. */ +"Message source remains private." = "Az üzenet forrása titokban marad."; + /* No comment provided by engineer. */ "Message text" = "Üzenet szövege"; +/* No comment provided by engineer. */ +"Message too large" = "Az üzenet túl nagy"; + /* No comment provided by engineer. */ "Messages" = "Üzenetek"; @@ -2340,20 +2493,47 @@ /* 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." = "Az üzeneteket, fájlokat és hívásokat **végpontok közötti titkosítással** és sérülés utáni titkosságvédelemmel, visszautasítással és sérülés utáni helyreállítással védi."; + +/* 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." = "Az üzeneteket, fájlokat és hívásokat **végpontok közötti kvantumrezisztens titkosítással** és sérülés utáni titkosságvédelemmel, visszautasítással és sérülés utáni helyreállítással védi."; + +/* No comment provided by engineer. */ +"Migrate device" = "Eszköz átköltöztetése"; + +/* No comment provided by engineer. */ +"Migrate from another device" = "Átköltöztetés egy másik eszközről"; + +/* No comment provided by engineer. */ +"Migrate here" = "Átköltöztetés ide"; + +/* No comment provided by engineer. */ +"Migrate to another device" = "Átköltöztetés egy másik eszközre"; + +/* No comment provided by engineer. */ +"Migrate to another device via QR code." = "Átköltöztetés egy másik eszközre QR-kód használatával."; + +/* No comment provided by engineer. */ +"Migrating" = "Átköltöztetés"; + /* No comment provided by engineer. */ "Migrating database archive…" = "Adatbázis archívum migrálása…"; /* No comment provided by engineer. */ -"Migration error:" = "Migrációs hiba:"; +"Migration complete" = "Átköltöztetés befejezve"; /* 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)."; +"Migration error:" = "Átköltöztetés hiba:"; /* No comment provided by engineer. */ -"Migration is completed" = "A migráció befejeződött"; +"Migration failed. Tap **Skip** below to continue using the current database. Please report the issue to the app developers via chat or email [chat@simplex.chat](mailto:chat@simplex.chat)." = "Sikertelen átköltöztetés. Koppintson a **Kihagyás** lehetőségre az aktuális adatbázis használatának folytatásához. Jelentse a problémát az alkalmazás fejlesztőinek csevegésben vagy e-mailben [chat@simplex.chat](mailto:chat@simplex.chat)."; /* No comment provided by engineer. */ -"Migrations: %@" = "Migrációk: %@"; +"Migration is completed" = "Az átköltöztetés befejeződött"; + +/* No comment provided by engineer. */ +"Migrations: %@" = "Átköltöztetések: %@"; /* time unit */ "minutes" = "perc"; @@ -2368,13 +2548,13 @@ "moderated" = "moderált"; /* No comment provided by engineer. */ -"Moderated at" = "Moderálva ekkor"; +"Moderated at" = "Moderálva lett ekkor:"; /* copied message info */ -"Moderated at: %@" = "Moderálva ekkor: %@"; +"Moderated at: %@" = "Moderálva lett ekkor: %@"; /* marked deleted chat item preview text */ -"moderated by %@" = "%@ által moderálva"; +"moderated by %@" = "moderálva lett %@ által"; /* time unit */ "months" = "hónap"; @@ -2382,6 +2562,9 @@ /* No comment provided by engineer. */ "More improvements are coming soon!" = "Hamarosan további fejlesztések érkeznek!"; +/* No comment provided by engineer. */ +"More reliable network connection." = "Megbízhatóbb hálózati kapcsolat."; + /* item status description */ "Most likely this connection is deleted." = "Valószínűleg ez a kapcsolat törlésre került."; @@ -2403,6 +2586,12 @@ /* No comment provided by engineer. */ "Network & servers" = "Hálózat és kiszolgálók"; +/* No comment provided by engineer. */ +"Network connection" = "Internetkapcsolat"; + +/* No comment provided by engineer. */ +"Network management" = "Hálózatkezelés"; + /* No comment provided by engineer. */ "Network settings" = "Hálózati beállítások"; @@ -2481,6 +2670,9 @@ /* No comment provided by engineer. */ "No history" = "Nincsenek előzmények"; +/* No comment provided by engineer. */ +"No network connection" = "Nincs hálózati kapcsolat"; + /* No comment provided by engineer. */ "No permission to record voice message" = "Nincs engedély a hangüzenet rögzítésére"; @@ -2562,7 +2754,7 @@ "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)"; +"Only you can irreversibly delete messages (your contact can mark them for deletion). (24 hours)" = "Véglegesen csak ön törölhet üzeneteket (ismerőse csak törlésre jelölheti meg őket ). (24 óra)"; /* No comment provided by engineer. */ "Only you can make calls." = "Csak ön tud hívásokat indítani."; @@ -2577,7 +2769,7 @@ "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)"; +"Only your contact can irreversibly delete messages (you can mark them for deletion). (24 hours)" = "Csak az ismerőse tudja az üzeneteket véglegesen törölni (ön csak törlésre jelölheti meg azokat). (24 óra)"; /* No comment provided by engineer. */ "Only your contact can make calls." = "Csak az ismerős tud hívást indítani."; @@ -2600,6 +2792,9 @@ /* No comment provided by engineer. */ "Open group" = "Csoport megnyitása"; +/* authentication reason */ +"Open migration to another device" = "Átköltöztetés megkezdése egy másik eszközre"; + /* No comment provided by engineer. */ "Open Settings" = "Beállítások megnyitása"; @@ -2612,15 +2807,27 @@ /* No comment provided by engineer. */ "Opening app…" = "Az alkalmazás megnyitása…"; +/* No comment provided by engineer. */ +"Or paste archive link" = "Vagy az archívum hivatkozásának beillesztése"; + /* 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" = "Vagy a fájl hivítkozásának biztonságos megosztása"; + /* No comment provided by engineer. */ "Or show this code" = "Vagy mutassa meg ezt a kódot"; +/* No comment provided by engineer. */ +"Other" = "További"; + /* member role */ "owner" = "tulajdonos"; +/* feature role */ +"owners" = "tulajdonosok"; + /* No comment provided by engineer. */ "Passcode" = "Jelkód"; @@ -2637,7 +2844,7 @@ "Passcode set!" = "A jelkód beállítva!"; /* No comment provided by engineer. */ -"Password to show" = "Jelszó mutatása"; +"Password to show" = "Jelszó megjelenítése"; /* past/unknown group member */ "Past member %@" = "Korábbi csoport tag %@"; @@ -2666,6 +2873,9 @@ /* message decrypt error item */ "Permanent decryption error" = "Végleges visszafejtési hiba"; +/* No comment provided by engineer. */ +"Picture-in-picture calls" = "Kép a képben hívások"; + /* No comment provided by engineer. */ "PING count" = "PING számláló"; @@ -2679,11 +2889,14 @@ "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."; +"Please check your network connection with %@ and try again." = "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." = "Ellenőrizze, hogy a hálózati beállítások megfelelőek-e ehhez az eszközhöz."; + /* No comment provided by engineer. */ "Please contact developers.\nError: %@" = "Lépjen kapcsolatba a fejlesztőkkel.\nHiba: %@"; @@ -2694,7 +2907,7 @@ "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ó."; +"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 vonható vissza."; /* 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!"; @@ -2703,7 +2916,7 @@ "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."; +"Please restart the app and migrate the database to enable push notifications." = "Indítsa újra az alkalmazást az adatbázis-átköltöztetéséhez 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."; @@ -2772,7 +2985,7 @@ "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."; +"Prohibit sending direct messages to members." = "Közvetlen üzenetek küldésének letiltása a tagok számára."; /* No comment provided by engineer. */ "Prohibit sending disappearing messages." = "Eltűnő üzenetek küldésének letiltása."; @@ -2780,11 +2993,14 @@ /* 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 SimpleX links." = "A SimpleX hivatkozások küldése le van tiltva."; + /* 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"; +"Protect app screen" = "Alkalmazás 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!"; @@ -2798,6 +3014,15 @@ /* No comment provided by engineer. */ "Push notifications" = "Push értesítések"; +/* No comment provided by engineer. */ +"Push server" = "Push kiszolgáló"; + +/* chat item text */ +"quantum resistant e2e encryption" = "végpontok közötti kvantumrezisztens titkosítás"; + +/* No comment provided by engineer. */ +"Quantum resistant encryption" = "Kvantumrezisztens titkosítás"; + /* No comment provided by engineer. */ "Rate the app" = "Értékelje az alkalmazást"; @@ -2811,13 +3036,13 @@ "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)."; +"Read more in [User Guide](https://simplex.chat/docs/guide/app-settings.html#your-simplex-contact-address)." = "További információ a [Használati ú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)."; +"Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)." = "További információ a [Használati ú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)."; +"Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends)." = "További információ a [Használati útmutatóban](https://simplex.chat/docs/guide/readme.html#connect-to-friends)."; /* 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)."; @@ -2832,7 +3057,7 @@ "received answer…" = "fogadott válasz…"; /* No comment provided by engineer. */ -"Received at" = "Fogadva ekkor"; +"Received at" = "Fogadva ekkor:"; /* copied message info */ "Received at: %@" = "Fogadva ekkor: %@"; @@ -2849,6 +3074,9 @@ /* No comment provided by engineer. */ "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 concurrency" = "Egyidejű fogadás"; + /* No comment provided by engineer. */ "Receiving file will be stopped." = "A fájl fogadása leállt."; @@ -2856,7 +3084,10 @@ "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."; +"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%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion)."; + +/* No comment provided by engineer. */ +"Recipient(s) can't see who this message is from." = "A címzett(ek) nem látja(k), hogy kitől származik ez az üzenet."; /* 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."; @@ -2933,9 +3164,18 @@ /* No comment provided by engineer. */ "Repeat connection request?" = "Kapcsolódási kérés megismétlése?"; +/* No comment provided by engineer. */ +"Repeat download" = "Letöltés ismét"; + +/* No comment provided by engineer. */ +"Repeat import" = "Importálás ismét"; + /* No comment provided by engineer. */ "Repeat join request?" = "Csatlakozási kérés megismétlése?"; +/* No comment provided by engineer. */ +"Repeat upload" = "Feltöltés ismét"; + /* chat item action */ "Reply" = "Válasz"; @@ -2993,6 +3233,9 @@ /* No comment provided by engineer. */ "Run chat" = "Csevegési szolgáltatás indítása"; +/* No comment provided by engineer. */ +"Safer groups" = "Biztonságosabb csoportok"; + /* chat item action */ "Save" = "Mentés"; @@ -3041,6 +3284,18 @@ /* No comment provided by engineer. */ "Save welcome message?" = "Üdvözlőszöveg mentése?"; +/* No comment provided by engineer. */ +"saved" = "mentett"; + +/* No comment provided by engineer. */ +"Saved" = "Mentett"; + +/* No comment provided by engineer. */ +"Saved from" = "Mentve innen:"; + +/* No comment provided by engineer. */ +"saved from %@" = "mentve innen: %@"; + /* message info title */ "Saved message" = "Mentett üzenet"; @@ -3066,7 +3321,7 @@ "Search" = "Keresés"; /* No comment provided by engineer. */ -"Search bar accepts invitation links." = "A keresősáv fogadja a meghívó hivatkozásokat."; +"Search bar accepts invitation links." = "A keresősáv elfogadja a meghívó hivatkozásokat."; /* No comment provided by engineer. */ "Search or paste SimpleX link" = "Keresés, vagy SimpleX hivatkozás beillesztése"; @@ -3123,7 +3378,7 @@ "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"; +"Send direct message to connect" = "Közvetlen üzenet küldése a csatlakozáshoz"; /* No comment provided by engineer. */ "Send disappearing message" = "Eltűnő üzenet küldése"; @@ -3150,7 +3405,7 @@ "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."; +"Send up to 100 last messages to new members." = "Az utolsó 100 üzenet elküldése az új tagoknak."; /* No comment provided by engineer. */ "Sender cancelled file transfer." = "A küldő megszakította a fájl átvitelt."; @@ -3183,7 +3438,7 @@ "Sending via" = "Küldés ezen keresztül"; /* No comment provided by engineer. */ -"Sent at" = "Elküldve ekkor"; +"Sent at" = "Elküldve ekkor:"; /* copied message info */ "Sent at: %@" = "Elküldve ekkor: %@"; @@ -3204,7 +3459,7 @@ "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"; /* No comment provided by engineer. */ -"Server test failed!" = "A kiszolgáló tesztje sikertelen!"; +"Server test failed!" = "Sikertelen kiszolgáló-teszt!"; /* No comment provided by engineer. */ "Servers" = "Kiszolgálók"; @@ -3233,11 +3488,14 @@ /* No comment provided by engineer. */ "Set passcode" = "Jelkód beállítása"; +/* No comment provided by engineer. */ +"Set passphrase" = "Jelmondat beállítása"; + /* 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!"; +"Set the message shown to new members!" = "Megjelenő üzenet beállítása az új tagok számára!"; /* 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"; @@ -3270,7 +3528,7 @@ "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"; +"Show developer options" = "Fejlesztői beállítások megjelenítése"; /* No comment provided by engineer. */ "Show last messages" = "Utolsó üzenetek megjelenítése"; @@ -3279,7 +3537,10 @@ "Show preview" = "Előnézet megjelenítése"; /* No comment provided by engineer. */ -"Show:" = "Mutat:"; +"Show QR code" = "QR-kód megjelenítése"; + +/* No comment provided by engineer. */ +"Show:" = "Megjelenítés:"; /* No comment provided by engineer. */ "SimpleX address" = "SimpleX azonosító"; @@ -3299,9 +3560,15 @@ /* simplex link type */ "SimpleX group link" = "SimpleX csoport hivatkozás"; -/* No comment provided by engineer. */ +/* chat feature */ "SimpleX links" = "SimpleX hivatkozások"; +/* No comment provided by engineer. */ +"SimpleX links are prohibited in this group." = "A SimpleX hivatkozások küldése ebben a csoportban le van tiltva."; + +/* No comment provided by engineer. */ +"SimpleX links not allowed" = "A SimpleX hivatkozások küldése le van tiltva"; + /* No comment provided by engineer. */ "SimpleX Lock" = "SimpleX zárolás"; @@ -3338,6 +3605,9 @@ /* notification title */ "Somebody" = "Valaki"; +/* chat item text */ +"standard end-to-end encryption" = "szabványos végpontok közötti titkosítás"; + /* No comment provided by engineer. */ "Start chat" = "Csevegés indítása"; @@ -3345,25 +3615,28 @@ "Start chat?" = "Csevegés indítása?"; /* No comment provided by engineer. */ -"Start migration" = "Migráció indítása"; +"Start migration" = "Átköltöztetés indítása"; /* No comment provided by engineer. */ "starting…" = "indítás…"; /* No comment provided by engineer. */ -"Stop" = "Megállítás"; +"Stop" = "Megszakítás"; /* 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"; +"Stop chat" = "Csevegési szolgáltatás megszakítása"; /* 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."; +"Stop chat to enable database actions" = "Csevegés megszakítása az adatbázis-műveletek engedélyezéséhez"; /* No comment provided by engineer. */ -"Stop chat?" = "Csevegési szolgáltatás megállítása?"; +"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 megszakítása a csevegőadatbázis exportálásához, importálásához vagy törléséhez. A csevegés megszakítása alatt nem tud üzeneteket fogadni és küldeni."; + +/* No comment provided by engineer. */ +"Stop chat?" = "Csevegési szolgáltatás megszakítása?"; /* cancel file action */ -"Stop file" = "Fájl megállítása"; +"Stop file" = "Fájl megszakítása"; /* No comment provided by engineer. */ "Stop receiving file?" = "Fájl fogadás megszakítása?"; @@ -3372,13 +3645,16 @@ "Stop sending file?" = "Fájl küldés megszakítása?"; /* No comment provided by engineer. */ -"Stop sharing" = "Megosztás leállítása"; +"Stop sharing" = "Megosztás megszakítása"; /* No comment provided by engineer. */ -"Stop sharing address?" = "Címmegosztás megállítása?"; +"Stop sharing address?" = "Címmegosztás megszakítása?"; /* authentication reason */ -"Stop SimpleX" = "A SimpleX megállítása"; +"Stop SimpleX" = "A SimpleX megszakítása"; + +/* No comment provided by engineer. */ +"Stopping chat" = "Csevegés megszakítása"; /* No comment provided by engineer. */ "strike" = "áthúzott"; @@ -3399,7 +3675,7 @@ "Take picture" = "Fotó készítése"; /* No comment provided by engineer. */ -"Tap button " = "Koppintson a gombra "; +"Tap button " = "Koppintson a "; /* No comment provided by engineer. */ "Tap to activate profile." = "A profil aktiválásához koppintson az ikonra."; @@ -3411,7 +3687,7 @@ "Tap to join" = "Koppintson a csatlakozáshoz"; /* No comment provided by engineer. */ -"Tap to join incognito" = "Koppintson az inkognitómódhoz való csatlakozáshoz"; +"Tap to join incognito" = "Koppintson az inkognitóban való csatlakozáshoz"; /* No comment provided by engineer. */ "Tap to paste link" = "Koppintson a hivatkozás beillesztéséhez"; @@ -3495,7 +3771,7 @@ "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ő."; +"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 az átköltöztetés 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."; @@ -3528,7 +3804,13 @@ "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."; +"This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost." = "Ez a művelet nem vonható vissza - profiljai, ismerősei, üzenetei és fájljai visszafordíthatatlanul törlésre kerülnek."; + +/* E2EE info chat item */ +"This chat is protected by end-to-end encryption." = "Ez a csevegés végpontok közötti titkosítással védett."; + +/* E2EE info chat item */ +"This chat is protected by quantum resistant end-to-end encryption." = "Ez a csevegés végpontok közötti kvantumrezisztens tikosítással védett."; /* notification title */ "this contact" = "ez az ismerős"; @@ -3633,7 +3915,7 @@ "Unexpected error: %@" = "Váratlan hiba: %@"; /* No comment provided by engineer. */ -"Unexpected migration state" = "Váratlan migrációs állapot"; +"Unexpected migration state" = "Váratlan átköltöztetési állapot"; /* No comment provided by engineer. */ "Unfav." = "Nem kedvelt."; @@ -3690,7 +3972,7 @@ "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."; +"Up to 100 last messages are sent to new members." = "Legfeljebb az utolsó 100 üzenet kerül elküldésre az új tagok számára."; /* No comment provided by engineer. */ "Update" = "Frissítés"; @@ -3722,9 +4004,15 @@ /* 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" = "Sikertelen feltöltés"; + /* server test step */ "Upload file" = "Fájl feltöltése"; +/* No comment provided by engineer. */ +"Uploading archive" = "Archívum feltöltése"; + /* No comment provided by engineer. */ "Use .onion hosts" = "Tor .onion hostok használata"; @@ -3755,6 +4043,9 @@ /* No comment provided by engineer. */ "Use SimpleX Chat servers?" = "SimpleX Chat kiszolgálók használata?"; +/* No comment provided by engineer. */ +"Use the app while in the call." = "Használja az alkalmazást hívás közben."; + /* No comment provided by engineer. */ "User profile" = "Felhasználói profil"; @@ -3782,6 +4073,12 @@ /* No comment provided by engineer. */ "Verify connections" = "Kapcsolatok ellenőrzése"; +/* No comment provided by engineer. */ +"Verify database passphrase" = "Adatbázis jelmondatának ellenőrzése"; + +/* No comment provided by engineer. */ +"Verify passphrase" = "Jelmondat ellenőrzése"; + /* No comment provided by engineer. */ "Verify security code" = "Biztonsági kód ellenőrzése"; @@ -3836,6 +4133,9 @@ /* 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 not allowed" = "A hangüzenetek küldése le van tiltva"; + /* No comment provided by engineer. */ "Voice messages prohibited!" = "A hangüzenetek le vannak tilva!"; @@ -3860,6 +4160,9 @@ /* No comment provided by engineer. */ "wants to connect to you!" = "kapcsolatba akar lépni önnel!"; +/* No comment provided by engineer. */ +"Warning: starting chat on multiple devices is not supported and will cause message delivery failures" = "Figyelmeztetés: a csevegés elindítása egyszerre több eszközön nem támogatott, továbbá üzenetkézbesítési hibákat okozhat"; + /* No comment provided by engineer. */ "Warning: you may lose some data!" = "Figyelmeztetés: néhány adat elveszhet!"; @@ -3875,18 +4178,33 @@ /* No comment provided by engineer. */ "Welcome message" = "Üdvözlő üzenet"; +/* No comment provided by engineer. */ +"Welcome message is too long" = "Az üdvözlő üzenet túl hosszú"; + /* 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 connecting audio and video calls." = "Amikor egy bejövő hang- vagy videóhívás érkezik."; + /* 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. */ +"WiFi" = "Wi-Fi"; + +/* No comment provided by engineer. */ +"Will be enabled in direct chats!" = "A közvetlen csevegésekben engedélyezve lesz!"; + +/* No comment provided by engineer. */ +"Wired ethernet" = "Vezetékes Ethernet"; + /* No comment provided by engineer. */ "With encrypted files and media." = "Titkosított fájlokkal és médiatartalommal."; @@ -3908,9 +4226,15 @@ /* pref value */ "yes" = "igen"; +/* No comment provided by engineer. */ +"you" = "ön"; + /* No comment provided by engineer. */ "You" = "Ön"; +/* No comment provided by engineer. */ +"You **must not** use the same database on two devices." = "**Nem szabad** ugyanazt az adatbázist használni egyszerre két eszközön."; + /* No comment provided by engineer. */ "You accepted connection" = "Kapcsolódás elfogadva"; @@ -3921,7 +4245,7 @@ "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: %@."; +"You are already connected to %@." = "Már kapcsolódva van hozzá: %@."; /* No comment provided by engineer. */ "You are already connecting to %@." = "Már folyamatban van a csatlakozás ehhez: %@."; @@ -3930,7 +4254,7 @@ "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."; +"You are already in group %@." = "Már a(z) %@ csoport tagja."; /* No comment provided by engineer. */ "You are already joining the group %@." = "Már folyamatban van a csatlakozás a csoporthoz %@."; @@ -3971,6 +4295,9 @@ /* 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." = "Megpróbálhatja még egyszer."; + /* 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."; @@ -4038,7 +4365,7 @@ "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"; +"You invited a contact" = "Meghívta egy ismerősét"; /* No comment provided by engineer. */ "You joined this group" = "Csatlakozott ehhez a csoporthoz"; @@ -4047,7 +4374,7 @@ "You joined this group. Connecting to inviting group member." = "Csatlakozott ehhez a csoporthoz. Kapcsolódás a meghívó csoporttaghoz."; /* snd group event chat item */ -"you left" = "elhagyta"; +"you left" = "elhagyta a csoportot"; /* 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."; @@ -4116,10 +4443,10 @@ "Your calls" = "Hívások"; /* No comment provided by engineer. */ -"Your chat database" = "Csevegési adatbázisa"; +"Your chat database" = "Csevegési adatbázis"; /* 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."; +"Your chat database is not encrypted - set passphrase to encrypt it." = "A csevegési adatbázis nincs titkosítva – adjon meg egy jelmondatot a titkosításhoz."; /* No comment provided by engineer. */ "Your chat profiles" = "Csevegési profiljai"; @@ -4155,13 +4482,13 @@ "Your profile" = "Profil"; /* No comment provided by engineer. */ -"Your profile **%@** will be shared." = "**%@** nevű profilja megosztásra kerül."; +"Your profile **%@** will be shared." = "A(z) **%@** nevű profilja megosztásra fog kerülni."; /* No comment provided by engineer. */ "Your profile is stored on your device and shared only with your contacts.\nSimpleX servers cannot see your profile." = "Profilja az eszközön van tárolva, és csak az ismerősökkel kerül megosztásra.\nA 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."; +"Your profile, contacts and delivered messages are stored on your device." = "Profilja, ismerősei és az elküldött üzenetei az eszközön kerülnek tárolásra."; /* No comment provided by engineer. */ "Your random profile" = "Véletlenszerű profil"; diff --git a/apps/ios/nl.lproj/Localizable.strings b/apps/ios/nl.lproj/Localizable.strings index c3417d5145..088623a69f 100644 --- a/apps/ios/nl.lproj/Localizable.strings +++ b/apps/ios/nl.lproj/Localizable.strings @@ -1893,6 +1893,9 @@ /* chat item action */ "Forward" = "Doorsturen"; +/* No comment provided by engineer. */ +"Forward and save messages" = "Berichten doorsturen en opslaan"; + /* No comment provided by engineer. */ "forwarded" = "doorgestuurd"; @@ -2124,6 +2127,9 @@ /* No comment provided by engineer. */ "In reply to" = "In antwoord op"; +/* No comment provided by engineer. */ +"In-call sounds" = "Geluiden tijdens het bellen"; + /* No comment provided by engineer. */ "Incognito" = "Incognito"; @@ -2469,6 +2475,9 @@ /* notification */ "message received" = "bericht ontvangen"; +/* No comment provided by engineer. */ +"Message source remains private." = "Berichtbron blijft privé."; + /* No comment provided by engineer. */ "Message text" = "Bericht tekst"; @@ -2553,6 +2562,9 @@ /* No comment provided by engineer. */ "More improvements are coming soon!" = "Meer verbeteringen volgen snel!"; +/* No comment provided by engineer. */ +"More reliable network connection." = "Betrouwbaardere netwerkverbinding."; + /* item status description */ "Most likely this connection is deleted." = "Hoogstwaarschijnlijk is deze verbinding verwijderd."; @@ -2577,6 +2589,9 @@ /* No comment provided by engineer. */ "Network connection" = "Netwerkverbinding"; +/* No comment provided by engineer. */ +"Network management" = "Netwerkbeheer"; + /* No comment provided by engineer. */ "Network settings" = "Netwerk instellingen"; @@ -3059,6 +3074,9 @@ /* No comment provided by engineer. */ "Receiving address will be changed to a different server. Address change will complete after sender comes online." = "Het ontvangstadres wordt gewijzigd naar een andere server. Adres wijziging wordt voltooid nadat de afzender online is."; +/* No comment provided by engineer. */ +"Receiving concurrency" = "Gelijktijdig ontvangen"; + /* No comment provided by engineer. */ "Receiving file will be stopped." = "Het ontvangen van het bestand wordt gestopt."; @@ -4169,6 +4187,9 @@ /* No comment provided by engineer. */ "When available" = "Wanneer beschikbaar"; +/* No comment provided by engineer. */ +"When connecting audio and video calls." = "Bij het verbinden van audio- en video-oproepen."; + /* No comment provided by engineer. */ "When people request to connect, you can accept or reject it." = "Wanneer mensen vragen om verbinding te maken, kunt u dit accepteren of weigeren."; @@ -4178,6 +4199,9 @@ /* No comment provided by engineer. */ "WiFi" = "Wifi"; +/* No comment provided by engineer. */ +"Will be enabled in direct chats!" = "Wordt ingeschakeld in directe chats!"; + /* No comment provided by engineer. */ "Wired ethernet" = "Bekabeld Ethernet"; diff --git a/apps/ios/tr.lproj/Localizable.strings b/apps/ios/tr.lproj/Localizable.strings index 7cec6e092f..22d7ad038e 100644 --- a/apps/ios/tr.lproj/Localizable.strings +++ b/apps/ios/tr.lproj/Localizable.strings @@ -389,6 +389,9 @@ /* member role */ "admin" = "yönetici"; +/* feature role */ +"admins" = "yöneticiler"; + /* No comment provided by engineer. */ "Admins can block a member for all." = "Yöneticiler bir üyeyi tamamen engelleyebilirler."; @@ -416,6 +419,9 @@ /* No comment provided by engineer. */ "All group members will remain connected." = "Tüm grup üyeleri bağlı kalacaktır."; +/* feature role */ +"all members" = "bütün üyeler"; + /* No comment provided by engineer. */ "All messages will be deleted - this cannot be undone!" = "Tüm mesajlar silinecektir - bu geri alınamaz!"; @@ -464,6 +470,9 @@ /* No comment provided by engineer. */ "Allow to send files and media." = "Dosya ve medya göndermeye izin ver."; +/* No comment provided by engineer. */ +"Allow to send SimpleX links." = "SimpleX bağlantıları göndilmesine izin ver."; + /* No comment provided by engineer. */ "Allow to send voice messages." = "Sesli mesaj göndermeye izin ver."; @@ -707,6 +716,9 @@ /* No comment provided by engineer. */ "Cannot receive file" = "Dosya alınamıyor"; +/* No comment provided by engineer. */ +"Cellular" = "Hücresel Veri"; + /* No comment provided by engineer. */ "Change" = "Değiştir"; @@ -1401,6 +1413,9 @@ /* No comment provided by engineer. */ "Downgrade and open chat" = "Sürüm düşür ve sohbeti aç"; +/* chat item action */ +"Download" = "İndir"; + /* No comment provided by engineer. */ "Download failed" = "Yükleme başarısız oldu"; @@ -1476,6 +1491,9 @@ /* enabled status */ "enabled" = "etkin"; +/* No comment provided by engineer. */ +"Enabled for" = "Şunlar için etkinleştirildi"; + /* enabled status */ "enabled for contact" = "konuşulan kişi için etkinleşti"; @@ -1830,6 +1848,9 @@ /* No comment provided by engineer. */ "Files and media are prohibited in this group." = "Dosyalar ve medya bu grupta yasaklandı."; +/* No comment provided by engineer. */ +"Files and media not allowed" = "Dosyalar ve medyaya izin verilmiyor"; + /* No comment provided by engineer. */ "Files and media prohibited!" = "Dosyalar ve medya yasaklandı!"; @@ -1869,6 +1890,21 @@ /* No comment provided by engineer. */ "For console" = "Konsol için"; +/* chat item action */ +"Forward" = "İlet"; + +/* No comment provided by engineer. */ +"Forward and save messages" = "Mesajları ilet ve kaydet"; + +/* No comment provided by engineer. */ +"forwarded" = "iletildi"; + +/* No comment provided by engineer. */ +"Forwarded" = "İletildi"; + +/* No comment provided by engineer. */ +"Forwarded from" = "Şuradan iletildi"; + /* No comment provided by engineer. */ "Found desktop" = "Bilgisayar bulundu"; @@ -1947,6 +1983,9 @@ /* No comment provided by engineer. */ "Group members can send files and media." = "Grup üyeleri dosyalar ve medya gönderebilir."; +/* No comment provided by engineer. */ +"Group members can send SimpleX links." = "Grup üyeleri SimpleX bağlantıları gönderebilir."; + /* No comment provided by engineer. */ "Group members can send voice messages." = "Grup üyeleri sesli mesajlar gönderebilir."; @@ -2088,6 +2127,9 @@ /* No comment provided by engineer. */ "In reply to" = "Cevap olarak"; +/* No comment provided by engineer. */ +"In-call sounds" = "Arama içi sesler"; + /* No comment provided by engineer. */ "Incognito" = "Gizli"; @@ -2433,6 +2475,9 @@ /* notification */ "message received" = "mesaj alındı"; +/* No comment provided by engineer. */ +"Message source remains private." = "Mesaj kaynağı gizli kalır."; + /* No comment provided by engineer. */ "Message text" = "Mesaj yazısı"; @@ -2517,6 +2562,9 @@ /* No comment provided by engineer. */ "More improvements are coming soon!" = "Daha fazla geliştirmeler yakında geliyor!"; +/* No comment provided by engineer. */ +"More reliable network connection." = "Daha güvenilir ağ bağlantısı."; + /* item status description */ "Most likely this connection is deleted." = "Büyük ihtimalle bu bağlantı silinmiş."; @@ -2538,6 +2586,12 @@ /* No comment provided by engineer. */ "Network & servers" = "Ağ & sunucular"; +/* No comment provided by engineer. */ +"Network connection" = "Ağ bağlantısı"; + +/* No comment provided by engineer. */ +"Network management" = "Ağ yönetimi"; + /* No comment provided by engineer. */ "Network settings" = "Ağ ayarları"; @@ -2616,6 +2670,9 @@ /* No comment provided by engineer. */ "No history" = "Geçmiş yok"; +/* No comment provided by engineer. */ +"No network connection" = "Ağ bağlantısı yok"; + /* No comment provided by engineer. */ "No permission to record voice message" = "Sesli mesaj kaydetmek için izin yok"; @@ -2762,9 +2819,15 @@ /* No comment provided by engineer. */ "Or show this code" = "Veya bu kodu göster"; +/* No comment provided by engineer. */ +"Other" = "Diğer"; + /* member role */ "owner" = "sahip"; +/* feature role */ +"owners" = "sahipler"; + /* No comment provided by engineer. */ "Passcode" = "Şifre"; @@ -2930,6 +2993,9 @@ /* No comment provided by engineer. */ "Prohibit sending files and media." = "Dosyalar ve medya gönderimlerini yasakla."; +/* No comment provided by engineer. */ +"Prohibit sending SimpleX links." = "SimpleX bağlantısı gönderimini yasakla."; + /* No comment provided by engineer. */ "Prohibit sending voice messages." = "Sesli mesajların gönderimini yasakla."; @@ -3008,6 +3074,9 @@ /* No comment provided by engineer. */ "Receiving address will be changed to a different server. Address change will complete after sender comes online." = "Alıcı adresi farklı bir sunucuya değiştirilecektir. Gönderici çevrimiçi olduktan sonra adres değişikliği tamamlanacaktır."; +/* No comment provided by engineer. */ +"Receiving concurrency" = "Eşzamanlılık alınıyor"; + /* No comment provided by engineer. */ "Receiving file will be stopped." = "Dosya alımı durdurulacaktır."; @@ -3017,6 +3086,9 @@ /* 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)." = "Yakın geçmiş ve geliştirilmiş [dizin botu](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)."; +/* No comment provided by engineer. */ +"Recipient(s) can't see who this message is from." = "Alıcı(lar) bu mesajın kimden geldiğini göremez."; + /* No comment provided by engineer. */ "Recipients see updates as you type them." = "Alıcılar yazdığına göre güncellemeleri görecektir."; @@ -3212,6 +3284,18 @@ /* No comment provided by engineer. */ "Save welcome message?" = "Hoşgeldin mesajı kaydedilsin mi?"; +/* No comment provided by engineer. */ +"saved" = "kaydedildi"; + +/* No comment provided by engineer. */ +"Saved" = "Kaydedildi"; + +/* No comment provided by engineer. */ +"Saved from" = "Tarafından kaydedildi"; + +/* No comment provided by engineer. */ +"saved from %@" = "%@ tarafından kaydedildi"; + /* message info title */ "Saved message" = "Kaydedilmiş mesaj"; @@ -3479,6 +3563,12 @@ /* chat feature */ "SimpleX links" = "SimpleX bağlantıları"; +/* No comment provided by engineer. */ +"SimpleX links are prohibited in this group." = "SimpleX bağlantıları bu grupta yasaklandı."; + +/* No comment provided by engineer. */ +"SimpleX links not allowed" = "SimpleX bağlantılarına izin verilmiyor"; + /* No comment provided by engineer. */ "SimpleX Lock" = "SimpleX Kilidi"; @@ -4043,6 +4133,9 @@ /* No comment provided by engineer. */ "Voice messages are prohibited in this group." = "Bu grupta sesli mesajlar yasaktır."; +/* No comment provided by engineer. */ +"Voice messages not allowed" = "Sesli mesajlara izin verilmiyor"; + /* No comment provided by engineer. */ "Voice messages prohibited!" = "Sesli mesajlar yasaktır!"; @@ -4094,12 +4187,24 @@ /* No comment provided by engineer. */ "When available" = "Mevcut olduğunda"; +/* No comment provided by engineer. */ +"When connecting audio and video calls." = "Sesli ve görüntülü aramalara bağlanırken."; + /* No comment provided by engineer. */ "When people request to connect, you can accept or reject it." = "İnsanlar bağlantı talebinde bulunduğunda, kabul edebilir veya reddedebilirsiniz."; /* 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." = "Biriyle gizli bir profil paylaştığınızda, bu profil sizi davet ettikleri gruplar için kullanılacaktır."; +/* No comment provided by engineer. */ +"WiFi" = "WiFi"; + +/* No comment provided by engineer. */ +"Will be enabled in direct chats!" = "Doğrudan sohbetlerde etkinleştirilecektir!"; + +/* No comment provided by engineer. */ +"Wired ethernet" = "Kablolu ethernet"; + /* No comment provided by engineer. */ "With encrypted files and media." = "Şifrelenmiş dosyalar ve medya ile birlikte."; @@ -4121,6 +4226,9 @@ /* pref value */ "yes" = "evet"; +/* No comment provided by engineer. */ +"you" = "sen"; + /* No comment provided by engineer. */ "You" = "Sen"; diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml index 94dc18a9a1..ce6d0dc2e0 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml @@ -1831,7 +1831,7 @@ Weitergeleitet von Nachricht weiterleiten… Kopfhörer - Gleichzeitiger Empfang + Gelijktijdige ontvangst Empfänger können nicht sehen, von wem die Nachricht stammt. abgespeichert von %s Abgespeichert diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/es/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/es/strings.xml index aba28b20a0..fec5df6866 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/es/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/es/strings.xml @@ -788,8 +788,8 @@ La primera plataforma sin identificadores de usuario: diseñada para la privacidad. Este grupo ya no existe. Establecer 1 día - ¡Gracias a los colaboradores! Contribuye a través de Weblate. - ¡Gracias a los colaboradores! Contribuye a través de Weblate. + ¡Nuestro agradecimiento a todos los colaboradores! Puedes contribuir a través de Weblate. + ¡Nuestro agradecimiento a todos los colaboradores! Puedes contribuir a través de Weblate. Para proteger la zona horaria, los archivos de imagen/voz usan la hora UTC. Aislamiento de transporte (para compartir con tu contacto) @@ -934,7 +934,7 @@ SimpleX Tu perfil se enviará al contacto del que has recibido este enlace. Te conectarás con todos los miembros del grupo. - + tu Estás conectado al servidor usado para recibir mensajes de este contacto. mediante enlace de dirección de contacto mediante enlace de grupo @@ -984,7 +984,7 @@ Ahora con soporte bluetooth y otras mejoras. ¡Guarda un mensaje para ser mostrado a los miembros nuevos! Interfaz en chino y español - ¡Gracias a los colaboradores! Contribuye a través de Weblate. + ¡Nuestro agradecimiento a todos los colaboradores! Puedes contribuir a través de Weblate. Error al actualizar privacidad de usuario Confirmar contraseña Reducción consumo de batería @@ -1112,7 +1112,7 @@ Código de acceso de la aplicación Interfaz en polaco Úsalo en lugar de la autenticación del sistema. - ¡Gracias a los colaboradores! Contribuye a través de Weblate. + ¡Nuestro agradecimiento a todos los colaboradores! Puedes contribuir a través de Weblate. Vídeos y archivos de hasta 1Gb ¡Rápido y sin necesidad de esperar a que el remitente esté en línea! Abrir perfiles @@ -1238,7 +1238,7 @@ - mensajes de voz de hasta 5 minutos. \n- tiempo personalizado para mensajes temporales. \n- historial de edición. - ¡Gracias a los colaboradores! Contribuye a través de Weblate. + ¡Nuestro agradecimiento a todos los colaboradores! Puedes contribuir a través de Weblate. Mensajes mejorados Al introducirlo todos los datos son eliminados. Personalizar y compartir temas de color. @@ -1731,7 +1731,7 @@ Enlaces SimpleX no permitidos Mensajes de voz no permitidos Enlaces SimpleX - Los miembros del grupo pueden enviar enlaces SimpleX + Los miembros del grupo pueden enviar enlaces SimpleX. Los enlaces SimpleX no se permiten en este grupo. propietarios Móvil @@ -1754,4 +1754,17 @@ Reenviado Mensaje reenviado… Los destinatarios no ven de quién procede este mensaje. + Bluetooth + Concurrencia en la recepción + Auriculares + Auriculares + Altavoz + Reenviar y guardar mensajes + Sonido de llamada + Interfaz en lituano + Gestión de la red + El autor del mensaje se mantiene privado. + Al iniciar llamadas de audio y vídeo. + ¡Será habilitado en los chats directos! + Conexión de red más fiable. \ No newline at end of file diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/lt/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/lt/strings.xml index 229cee789d..43237fa2a9 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/lt/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/lt/strings.xml @@ -49,14 +49,14 @@ prisijungta jungiamasi ryšys užmegztas - jungiasi… + jungiamasi… Ryšio klaida Prisijungti Prisijungė Prisijungti prisijungė - jungiasi… - jungiasi… + jungiamasi… + jungiamasi… Prisijungta Patvirtinti Konfigūruoti ICE serverius @@ -64,7 +64,7 @@ prisijungė Ryšys Patvirtinti duomenų bazių naujinimus - jungiasi + jungiamasi Ryšys Duomenų bazės šifravimo slaptafrazė bus atnaujinta. Branduolio versija: v%s @@ -1127,7 +1127,7 @@ Nustatyti slaptafrazę eksportui Šis veiksmas negali būti atšauktas - jūsų profilis, kontaktai, žinutės ir failai bus negrįžtamai prarasti. nustatyti naują kontakto adresą - nustatyti naują profilio nuotrauką + nustatė naują profilio nuotrauką Standartinis visapusis šifravimas Pristatymo kvitai Nusiųsta @@ -1744,4 +1744,24 @@ Tinklo ryšys Garsai skambučio metu Lietuviškas UI + Gavimas vienu metu + Garsiakalbis + Tinklo valdymas + išsaugota + išsaugota iš %s + Išsaugota + Balso žinutės neleidžiamos + WiFi + SimpleX nuorodos + Drausti SimpleX nuorodų siuntimą + SimpleX nuorodos yra uždraustos šioje grupėje. + savininkai + Laidinis internetas + Kitas + Nėra interneto ryšio + Išsaugota iš + Gavėjas(-ai) negali matyti kas šią žinutę išsiuntė. + SimpleX nuorodos neleidžiamos + Kai jungiami garso ir vaizdo skambučiai. + Bus įjungta tiesioginiuose pokalbiuose! \ No newline at end of file diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml index f63cdb8d0c..4b37f5d725 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml @@ -1754,4 +1754,14 @@ Oortje Koptelefoon Luidspreker + Bluetooth + Berichtbron blijft privé. + Netwerkbeheer + Bij het verbinden van audio- en video-oproepen. + Wordt ingeschakeld in directe chats! + Gelijktijdig ontvangen + Berichten doorsturen en opslaan + Geluiden tijdens het bellen + Litouwse gebruikersinterface + Betrouwbaardere netwerkverbinding. \ No newline at end of file diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/tr/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/tr/strings.xml index e1c0463d70..55fffb2728 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/tr/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/tr/strings.xml @@ -1725,4 +1725,46 @@ Kamera ve mikrofon Bildirim gösterilirken hata oluştu, geliştiricilerle irtibata geçin. Ayarlarda izin verin + Bluetooth + sahipler + SimpleX bağlantısı gönderimini yasakla + Eşzamanlılık alınıyor + SimpleX bağlantıları + SimpleX bağlantıları bu grupta yasaklandı + Kulaklık + Hoparlör + Kulaklıklar + Doğrudan sohbetlerde etkinleştirilecektir! + Ağ yönetimi + Litvanya Kullanıcı Arayüzü + Diğer + kaydedildi + %s tarafından kaydedildi + İletildi + Kaydedildi + İndir + Şuradan iletildi + Mesaj ilet… + Alıcı(lar) bu mesajın kimden geldiğini göremez. + SimpleX bağlantılarına izin verilmiyor + Dosyalar ve medyaya izin verilmiyor + Sesli mesajlara izin verilmiyor + Grup üyeleri SimpleX bağlantıları gönderebilir. + iletildi + Ağ bağlantısı + SimpleX bağlantıları göndermesine izin ver. + Ağ bağlantısı yok + İlet + Mesajları ilet ve kaydet + yöneticiler + Hücresel Veri + Şunlar için etkinleştirildi + bütün üyeler + Arama içi sesler + Tarafından kaydedildi + Mesaj kaynağı gizli kalır. + Daha güvenilir ağ bağlantısı. + WiFi + Sesli ve görüntülü aramalara bağlanırken. + Kablolu ethernet \ No newline at end of file diff --git a/scripts/ios/import-localizations.sh b/scripts/ios/import-localizations.sh index 4bf33f7dbd..e323865f2d 100755 --- a/scripts/ios/import-localizations.sh +++ b/scripts/ios/import-localizations.sh @@ -2,7 +2,7 @@ set -e -langs=( en bg cs de es fi fr it ja nl pl ru th tr uk zh-Hans ) +langs=( en bg cs de es fi fr hu it ja nl pl ru th tr uk zh-Hans ) for lang in "${langs[@]}"; do echo "***" From 5ba7b58d7db2b7668f9c7381d64b88a844bf1f7d Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Wed, 24 Apr 2024 12:45:20 +0100 Subject: [PATCH 14/25] website: translations (#4078) * Translated using Weblate (German) Currently translated at 100.0% (257 of 257 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/de/ * Translated using Weblate (Japanese) Currently translated at 100.0% (257 of 257 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/ja/ --------- Co-authored-by: mlanp Co-authored-by: Miyu Sakatsuki --- website/langs/de.json | 4 +++- website/langs/ja.json | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/website/langs/de.json b/website/langs/de.json index aec3b7c2cc..eb817a50f0 100644 --- a/website/langs/de.json +++ b/website/langs/de.json @@ -253,5 +253,7 @@ "docs-dropdown-9": "Downloads", "please-enable-javascript": "Bitte aktivieren Sie JavaScript, um den QR-Code zu sehen.", "please-use-link-in-mobile-app": "Bitte nutzen Sie den Link in der Mobiltelefon-App", - "docs-dropdown-10": "Transparent" + "docs-dropdown-10": "Transparent", + "docs-dropdown-11": "FAQ", + "docs-dropdown-12": "Sicherheit" } diff --git a/website/langs/ja.json b/website/langs/ja.json index 0519766694..ca5fc4f12c 100644 --- a/website/langs/ja.json +++ b/website/langs/ja.json @@ -253,5 +253,7 @@ "docs-dropdown-9": "ダウンロード", "please-enable-javascript": "QRコードを表示するためにJavaScriptを有効にしてください。", "please-use-link-in-mobile-app": "このリンクをモバイルアプリで使用してください", - "docs-dropdown-10": "透明性" + "docs-dropdown-10": "透明性", + "docs-dropdown-11": "よくある質問", + "docs-dropdown-12": "セキュリティ" } From 68966a15515827eb4f6a69689fcc88c5718230fc Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Wed, 24 Apr 2024 20:39:06 +0700 Subject: [PATCH 15/25] android, desktop: alert for local encryption/decryption errors (#4081) * android, desktop: more alert in case of local encryption/decryption errors * sending a message without a file --- .../simplex/common/platform/Share.android.kt | 2 ++ .../common/views/helpers/Utils.android.kt | 9 +++++- .../chat/simplex/common/model/ChatModel.kt | 7 ++++- .../simplex/common/views/chat/ComposeView.kt | 21 +++++++++---- .../common/views/chat/item/CIFileView.kt | 1 + .../views/chat/item/ImageFullScreenView.kt | 1 + .../simplex/common/views/helpers/Utils.kt | 30 +++++++++++++++---- .../simplex/common/platform/Share.desktop.kt | 1 + .../views/chat/item/ChatItemView.desktop.kt | 1 + .../common/views/helpers/Utils.desktop.kt | 2 ++ 10 files changed, 62 insertions(+), 13 deletions(-) diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/Share.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/Share.android.kt index dc8ead80ee..ad0d914ea8 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/Share.android.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/Share.android.kt @@ -46,6 +46,7 @@ actual fun shareFile(text: String, fileSource: CryptoFile) { decryptCryptoFile(getAppFilePath(fileSource.filePath), fileSource.cryptoArgs, tmpFile.absolutePath) } catch (e: Exception) { Log.e(TAG, "Unable to decrypt crypto file: " + e.stackTraceToString()) + AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) return } getAppFileUri(tmpFile.absolutePath) @@ -112,6 +113,7 @@ fun saveImage(ciFile: CIFile?) { decryptCryptoFile(filePath, ciFile.fileSource.cryptoArgs, tmpFile.absolutePath) } catch (e: Exception) { Log.e(TAG, "Unable to decrypt crypto file: " + e.stackTraceToString()) + AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) return@createTmpFileAndDelete } tmpFile.inputStream().use { it.copyTo(outputStream) } diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/helpers/Utils.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/helpers/Utils.android.kt index 904f9a555a..ed0c4c9532 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/helpers/Utils.android.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/helpers/Utils.android.kt @@ -27,6 +27,7 @@ import androidx.core.text.HtmlCompat import chat.simplex.common.helpers.* import chat.simplex.common.model.* import chat.simplex.common.platform.* +import chat.simplex.res.MR import dev.icerock.moko.resources.StringResource import java.io.* import java.net.URI @@ -187,7 +188,13 @@ actual suspend fun getLoadedImage(file: CIFile?): Pair? return if (filePath != null && file != null) { try { val data = if (file.fileSource?.cryptoArgs != null) { - readCryptoFile(getAppFilePath(file.fileSource.filePath), file.fileSource.cryptoArgs) + try { + readCryptoFile(getAppFilePath(file.fileSource.filePath), file.fileSource.cryptoArgs) + } catch (e: Exception) { + Log.e(TAG, "Unable to read crypto file: " + e.stackTraceToString()) + AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) + return null + } } else { File(getAppFilePath(file.fileName)).readBytes() } diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/ChatModel.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/ChatModel.kt index ca9056a058..a21e1c8cac 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/ChatModel.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/ChatModel.kt @@ -2696,7 +2696,12 @@ data class CryptoFile( private fun decryptToTmpFile(): URI? { val absoluteFilePath = if (isAbsolutePath) filePath else getAppFilePath(filePath) val tmpFile = createTmpFileIfNeeded() - decryptCryptoFile(absoluteFilePath, cryptoArgs ?: return null, tmpFile.absolutePath) + try { + decryptCryptoFile(absoluteFilePath, cryptoArgs ?: return null, tmpFile.absolutePath) + } catch (e: Exception) { + Log.e(TAG, "Unable to decrypt crypto file: " + e.stackTraceToString()) + AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) + } return tmpFile.toURI() } diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ComposeView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ComposeView.kt index 9ab2b47702..26ff8796d4 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ComposeView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ComposeView.kt @@ -534,23 +534,34 @@ fun ComposeView( AudioPlayer.stop(tmpFile.absolutePath) if (remoteHost == null) { val actualFile = File(getAppFilePath(tmpFile.name.replaceAfter(RecorderInterface.extension, ""))) - files.add(withContext(Dispatchers.IO) { + val file = withContext(Dispatchers.IO) { if (chatController.appPrefs.privacyEncryptLocalFiles.get()) { - val args = encryptCryptoFile(tmpFile.absolutePath, actualFile.absolutePath) - tmpFile.delete() + val args = try { + encryptCryptoFile(tmpFile.absolutePath, actualFile.absolutePath) + } catch (e: Exception) { + Log.e(TAG, "Unable to encrypt plain file: " + e.stackTraceToString()) + AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) + return@withContext null + } finally { + tmpFile.delete() + } CryptoFile(actualFile.name, args) } else { Files.move(tmpFile.toPath(), actualFile.toPath()) CryptoFile.plain(actualFile.name) } - }) + } + if (file != null) { + files.add(file) + msgs.add(MsgContent.MCVoice(if (msgs.isEmpty()) msgText else "", preview.durationMs / 1000)) + } deleteUnusedFiles() } else { files.add(CryptoFile.plain(tmpFile.absolutePath)) // It will be deleted on JVM shutdown or next start (if the app crashes unexpectedly) filesToDelete.remove(tmpFile) + msgs.add(MsgContent.MCVoice(if (msgs.isEmpty()) msgText else "", preview.durationMs / 1000)) } - msgs.add(MsgContent.MCVoice(if (msgs.isEmpty()) msgText else "", preview.durationMs / 1000)) } is ComposePreview.FilePreview -> { val file = if (remoteHost == null) { diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIFileView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIFileView.kt index da766d920e..dbed57d5fc 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIFileView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIFileView.kt @@ -222,6 +222,7 @@ fun rememberSaveFileLauncher(ciFile: CIFile?): FileChooserLauncher = decryptCryptoFile(filePath, ciFile.fileSource.cryptoArgs, tmpFile.absolutePath) } catch (e: Exception) { Log.e(TAG, "Unable to decrypt crypto file: " + e.stackTraceToString()) + AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) tmpFile.delete() return@createTmpFileAndDelete } diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ImageFullScreenView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ImageFullScreenView.kt index 16d59f6aeb..316843a908 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ImageFullScreenView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ImageFullScreenView.kt @@ -16,6 +16,7 @@ import chat.simplex.common.model.CryptoFile import chat.simplex.common.platform.* import chat.simplex.common.views.chat.ProviderMedia import chat.simplex.common.views.helpers.* +import chat.simplex.res.MR import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.launch import java.net.URI diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/Utils.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/Utils.kt index 182861c0d6..9a6e3a0f9a 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/Utils.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/Utils.kt @@ -169,8 +169,14 @@ fun saveImage(image: ImageBitmap): CryptoFile? { val destFileName = generateNewFileName("IMG", ext, File(getAppFilePath(""))) val destFile = File(getAppFilePath(destFileName)) if (encrypted) { - val args = writeCryptoFile(destFile.absolutePath, dataResized.toByteArray()) - CryptoFile(destFileName, args) + try { + val args = writeCryptoFile(destFile.absolutePath, dataResized.toByteArray()) + CryptoFile(destFileName, args) + } catch (e: Exception) { + Log.e(TAG, "Unable to write crypto file: " + e.stackTraceToString()) + AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) + null + } } else { val output = FileOutputStream(destFile) dataResized.writeTo(output) @@ -216,8 +222,14 @@ fun saveAnimImage(uri: URI): CryptoFile? { val destFileName = generateNewFileName("IMG", ext, File(getAppFilePath(""))) val destFile = File(getAppFilePath(destFileName)) if (encrypted) { - val args = writeCryptoFile(destFile.absolutePath, uri.inputStream()?.readBytes() ?: return null) - CryptoFile(destFileName, args) + try { + val args = writeCryptoFile(destFile.absolutePath, uri.inputStream()?.readBytes() ?: return null) + CryptoFile(destFileName, args) + } catch (e: Exception) { + Log.e(TAG, "Unable to read crypto file: " + e.stackTraceToString()) + AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) + null + } } else { Files.copy(uri.inputStream(), destFile.toPath()) CryptoFile.plain(destFileName) @@ -241,8 +253,14 @@ fun saveFileFromUri(uri: URI, withAlertOnException: Boolean = true): CryptoFile? if (encrypted) { createTmpFileAndDelete { tmpFile -> Files.copy(inputStream, tmpFile.toPath()) - val args = encryptCryptoFile(tmpFile.absolutePath, destFile.absolutePath) - CryptoFile(destFileName, args) + try { + val args = encryptCryptoFile(tmpFile.absolutePath, destFile.absolutePath) + CryptoFile(destFileName, args) + } catch (e: Exception) { + Log.e(TAG, "Unable to encrypt plain file: " + e.stackTraceToString()) + AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) + null + } } } else { Files.copy(inputStream, destFile.toPath()) diff --git a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/Share.desktop.kt b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/Share.desktop.kt index d1442bc5e3..5817275a5f 100644 --- a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/Share.desktop.kt +++ b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/Share.desktop.kt @@ -32,6 +32,7 @@ actual fun shareFile(text: String, fileSource: CryptoFile) { showToast(generalGetString(MR.strings.file_saved)) } catch (e: Exception) { Log.e(TAG, "Unable to decrypt crypto file: " + e.stackTraceToString()) + AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) } } else { copyFileToFile(File(absolutePath), to) {} diff --git a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.desktop.kt b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.desktop.kt index 30e1ad0352..9b2911350f 100644 --- a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.desktop.kt +++ b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.desktop.kt @@ -66,6 +66,7 @@ actual fun copyItemToClipboard(cItem: ChatItem, clipboard: ClipboardManager) = w decryptCryptoFile(getAppFilePath(fileSource.filePath), fileSource.cryptoArgs ?: return@withLongRunningApi, tmpFile.absolutePath) } catch (e: Exception) { Log.e(TAG, "Unable to decrypt crypto file: " + e.stackTraceToString()) + AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) return@withLongRunningApi } tmpFile.absolutePath diff --git a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/helpers/Utils.desktop.kt b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/helpers/Utils.desktop.kt index 9fa93cdfdf..8fcd1ac5c7 100644 --- a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/helpers/Utils.desktop.kt +++ b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/helpers/Utils.desktop.kt @@ -12,6 +12,7 @@ import chat.simplex.common.model.CIFile import chat.simplex.common.model.readCryptoFile import chat.simplex.common.platform.* import chat.simplex.common.simplexWindowState +import chat.simplex.res.MR import kotlinx.coroutines.delay import java.io.ByteArrayInputStream import java.io.File @@ -142,6 +143,7 @@ actual suspend fun getLoadedImage(file: CIFile?): Pair? if (bitmap != null) bitmap to data else null } catch (e: Exception) { Log.e(TAG, "Unable to read crypto file: " + e.stackTraceToString()) + AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) null } } else { From 1967ac0880a38ea87cc55de0690838c89bef6b0a Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Wed, 24 Apr 2024 14:42:17 +0100 Subject: [PATCH 16/25] ui: translations (#4079) * Translated using Weblate (German) Currently translated at 100.0% (1738 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/ * Translated using Weblate (Russian) Currently translated at 100.0% (1738 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ru/ * Translated using Weblate (German) Currently translated at 100.0% (1512 of 1512 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/de/ * Translated using Weblate (Russian) Currently translated at 100.0% (1512 of 1512 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/ * update --------- Co-authored-by: mlanp --- .../de.xcloc/Localized Contents/de.xliff | 9 +- .../ru.xcloc/Localized Contents/ru.xliff | 36 ++++++ apps/ios/de.lproj/Localizable.strings | 23 +++- apps/ios/ru.lproj/Localizable.strings | 108 ++++++++++++++++++ .../commonMain/resources/MR/de/strings.xml | 10 +- .../commonMain/resources/MR/ru/strings.xml | 36 ++++++ 6 files changed, 219 insertions(+), 3 deletions(-) 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 2f691fbf88..c756573675 100644 --- a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff +++ b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff @@ -2805,6 +2805,7 @@ Das kann nicht rückgängig gemacht werden! Forward and save messages + Nachrichten weiterleiten und speichern No comment provided by engineer. @@ -2814,7 +2815,7 @@ Das kann nicht rückgängig gemacht werden! Forwarded from - Weitergeleitet von + Weitergeleitet aus No comment provided by engineer. @@ -3174,6 +3175,7 @@ Das kann nicht rückgängig gemacht werden! In-call sounds + Klingeltöne No comment provided by engineer. @@ -3653,6 +3655,7 @@ Das ist Ihr Link für die Gruppe %@! Message source remains private. + Die Nachrichtenquelle bleibt privat. No comment provided by engineer. @@ -3772,6 +3775,7 @@ Das ist Ihr Link für die Gruppe %@! More reliable network connection. + Zuverlässigere Netzwerkverbindung. No comment provided by engineer. @@ -3816,6 +3820,7 @@ Das ist Ihr Link für die Gruppe %@! Network management + Netzwerk-Verwaltung No comment provided by engineer. @@ -6232,6 +6237,7 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s When connecting audio and video calls. + Bei der Verbindung über Audio- und Video-Anrufe. No comment provided by engineer. @@ -6251,6 +6257,7 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s Will be enabled in direct chats! + Wird in direkten Chats automatisch aktiviert! No comment provided by engineer. diff --git a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff index 847e16e9f9..a4c0570bdb 100644 --- a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff +++ b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff @@ -745,6 +745,7 @@ Allow to send SimpleX links. + Разрешить отправлять ссылки SimpleX. No comment provided by engineer. @@ -1089,6 +1090,7 @@ Cellular + Мобильная сеть No comment provided by engineer. @@ -2088,6 +2090,7 @@ This cannot be undone! Download + Загрузить chat item action @@ -2202,6 +2205,7 @@ This cannot be undone! Enabled for + Включено для No comment provided by engineer. @@ -2726,6 +2730,7 @@ This cannot be undone! Files and media not allowed + Файлы и медиа не разрешены No comment provided by engineer. @@ -2795,18 +2800,22 @@ This cannot be undone! Forward + Переслать chat item action Forward and save messages + Переслать и сохранить сообщение No comment provided by engineer. Forwarded + Переслано No comment provided by engineer. Forwarded from + Переслано из No comment provided by engineer. @@ -2921,6 +2930,7 @@ This cannot be undone! Group members can send SimpleX links. + Члены группы могут отправлять ссылки SimpleX. No comment provided by engineer. @@ -3165,6 +3175,7 @@ This cannot be undone! In-call sounds + Звуки во время звонков No comment provided by engineer. @@ -3644,6 +3655,7 @@ This is your link for group %@! Message source remains private. + Источник сообщения остаётся конфиденциальным. No comment provided by engineer. @@ -3763,6 +3775,7 @@ This is your link for group %@! More reliable network connection. + Более надежное соединение с сетью. No comment provided by engineer. @@ -3802,10 +3815,12 @@ This is your link for group %@! Network connection + Интернет-соединение No comment provided by engineer. Network management + Статус сети No comment provided by engineer. @@ -3920,6 +3935,7 @@ This is your link for group %@! No network connection + Нет интернет-соединения No comment provided by engineer. @@ -4138,6 +4154,7 @@ This is your link for group %@! Other + Другaя сеть No comment provided by engineer. @@ -4399,6 +4416,7 @@ Error: %@ Prohibit sending SimpleX links. + Запретить отправку ссылок SimpleX. No comment provided by engineer. @@ -4533,6 +4551,7 @@ Error: %@ Receiving concurrency + Одновременный приём No comment provided by engineer. @@ -4552,6 +4571,7 @@ Error: %@ Recipient(s) can't see who this message is from. + Получатели не видят от кого это сообщение. No comment provided by engineer. @@ -4856,6 +4876,7 @@ Error: %@ Saved + Сохранено No comment provided by engineer. @@ -4865,6 +4886,7 @@ Error: %@ Saved from + Сохранено из No comment provided by engineer. @@ -5294,10 +5316,12 @@ Error: %@ SimpleX links are prohibited in this group. + Ссылки SimpleX запрещены в этой группе. No comment provided by engineer. SimpleX links not allowed + Ссылки SimpleX не разрешены No comment provided by engineer. @@ -6138,6 +6162,7 @@ To connect, please ask your contact to create another connection link and check Voice messages not allowed + Голосовые сообщения не разрешены No comment provided by engineer. @@ -6212,6 +6237,7 @@ To connect, please ask your contact to create another connection link and check When connecting audio and video calls. + Во время соединения аудио и видео звонков. No comment provided by engineer. @@ -6226,14 +6252,17 @@ To connect, please ask your contact to create another connection link and check WiFi + WiFi No comment provided by engineer. Will be enabled in direct chats! + Будет включено в прямых разговорах! No comment provided by engineer. Wired ethernet + Проводная сеть No comment provided by engineer. @@ -6721,6 +6750,7 @@ SimpleX серверы не могут получить доступ к Ваше admins + админы feature role @@ -6735,6 +6765,7 @@ SimpleX серверы не могут получить доступ к Ваше all members + все члены feature role @@ -7069,6 +7100,7 @@ SimpleX серверы не могут получить доступ к Ваше forwarded + переслано No comment provided by engineer. @@ -7280,6 +7312,7 @@ SimpleX серверы не могут получить доступ к Ваше owners + владельцы feature role @@ -7334,10 +7367,12 @@ SimpleX серверы не могут получить доступ к Ваше saved + сохранено No comment provided by engineer. saved from %@ + сохранено из %@ No comment provided by engineer. @@ -7482,6 +7517,7 @@ SimpleX серверы не могут получить доступ к Ваше you + Вы No comment provided by engineer. diff --git a/apps/ios/de.lproj/Localizable.strings b/apps/ios/de.lproj/Localizable.strings index 18a56444f0..933bb5e02b 100644 --- a/apps/ios/de.lproj/Localizable.strings +++ b/apps/ios/de.lproj/Localizable.strings @@ -1893,6 +1893,9 @@ /* chat item action */ "Forward" = "Weiterleiten"; +/* No comment provided by engineer. */ +"Forward and save messages" = "Nachrichten weiterleiten und speichern"; + /* No comment provided by engineer. */ "forwarded" = "weitergeleitet"; @@ -1900,7 +1903,7 @@ "Forwarded" = "Weitergeleitet"; /* No comment provided by engineer. */ -"Forwarded from" = "Weitergeleitet von"; +"Forwarded from" = "Weitergeleitet aus"; /* No comment provided by engineer. */ "Found desktop" = "Gefundener Desktop"; @@ -2124,6 +2127,9 @@ /* No comment provided by engineer. */ "In reply to" = "Als Antwort auf"; +/* No comment provided by engineer. */ +"In-call sounds" = "Klingeltöne"; + /* No comment provided by engineer. */ "Incognito" = "Inkognito"; @@ -2469,6 +2475,9 @@ /* notification */ "message received" = "Nachricht empfangen"; +/* No comment provided by engineer. */ +"Message source remains private." = "Die Nachrichtenquelle bleibt privat."; + /* No comment provided by engineer. */ "Message text" = "Nachrichtentext"; @@ -2553,6 +2562,9 @@ /* No comment provided by engineer. */ "More improvements are coming soon!" = "Weitere Verbesserungen sind bald verfügbar!"; +/* No comment provided by engineer. */ +"More reliable network connection." = "Zuverlässigere Netzwerkverbindung."; + /* item status description */ "Most likely this connection is deleted." = "Wahrscheinlich ist diese Verbindung gelöscht worden."; @@ -2577,6 +2589,9 @@ /* No comment provided by engineer. */ "Network connection" = "Netzwerkverbindung"; +/* No comment provided by engineer. */ +"Network management" = "Netzwerk-Verwaltung"; + /* No comment provided by engineer. */ "Network settings" = "Netzwerkeinstellungen"; @@ -4172,6 +4187,9 @@ /* No comment provided by engineer. */ "When available" = "Wenn verfügbar"; +/* No comment provided by engineer. */ +"When connecting audio and video calls." = "Bei der Verbindung über Audio- und Video-Anrufe."; + /* No comment provided by engineer. */ "When people request to connect, you can accept or reject it." = "Wenn Personen eine Verbindung anfordern, können Sie diese annehmen oder ablehnen."; @@ -4181,6 +4199,9 @@ /* No comment provided by engineer. */ "WiFi" = "WiFi"; +/* No comment provided by engineer. */ +"Will be enabled in direct chats!" = "Wird in direkten Chats automatisch aktiviert!"; + /* No comment provided by engineer. */ "Wired ethernet" = "Kabelgebundenes Netzwerk"; diff --git a/apps/ios/ru.lproj/Localizable.strings b/apps/ios/ru.lproj/Localizable.strings index ed6e03508e..758588bc35 100644 --- a/apps/ios/ru.lproj/Localizable.strings +++ b/apps/ios/ru.lproj/Localizable.strings @@ -389,6 +389,9 @@ /* member role */ "admin" = "админ"; +/* feature role */ +"admins" = "админы"; + /* No comment provided by engineer. */ "Admins can block a member for all." = "Админы могут заблокировать члена группы."; @@ -416,6 +419,9 @@ /* No comment provided by engineer. */ "All group members will remain connected." = "Все члены группы, которые соединились через эту ссылку, останутся в группе."; +/* feature role */ +"all members" = "все члены"; + /* No comment provided by engineer. */ "All messages will be deleted - this cannot be undone!" = "Все сообщения будут удалены - это нельзя отменить!"; @@ -464,6 +470,9 @@ /* No comment provided by engineer. */ "Allow to send files and media." = "Разрешить посылать файлы и медиа."; +/* No comment provided by engineer. */ +"Allow to send SimpleX links." = "Разрешить отправлять ссылки SimpleX."; + /* No comment provided by engineer. */ "Allow to send voice messages." = "Разрешить отправлять голосовые сообщения."; @@ -707,6 +716,9 @@ /* No comment provided by engineer. */ "Cannot receive file" = "Невозможно получить файл"; +/* No comment provided by engineer. */ +"Cellular" = "Мобильная сеть"; + /* No comment provided by engineer. */ "Change" = "Поменять"; @@ -1401,6 +1413,9 @@ /* No comment provided by engineer. */ "Downgrade and open chat" = "Откатить версию и открыть чат"; +/* chat item action */ +"Download" = "Загрузить"; + /* No comment provided by engineer. */ "Download failed" = "Ошибка загрузки"; @@ -1476,6 +1491,9 @@ /* enabled status */ "enabled" = "включено"; +/* No comment provided by engineer. */ +"Enabled for" = "Включено для"; + /* enabled status */ "enabled for contact" = "включено для контакта"; @@ -1830,6 +1848,9 @@ /* No comment provided by engineer. */ "Files and media are prohibited in this group." = "Файлы и медиа запрещены в этой группе."; +/* No comment provided by engineer. */ +"Files and media not allowed" = "Файлы и медиа не разрешены"; + /* No comment provided by engineer. */ "Files and media prohibited!" = "Файлы и медиа запрещены!"; @@ -1869,6 +1890,21 @@ /* No comment provided by engineer. */ "For console" = "Для консоли"; +/* chat item action */ +"Forward" = "Переслать"; + +/* No comment provided by engineer. */ +"Forward and save messages" = "Переслать и сохранить сообщение"; + +/* No comment provided by engineer. */ +"forwarded" = "переслано"; + +/* No comment provided by engineer. */ +"Forwarded" = "Переслано"; + +/* No comment provided by engineer. */ +"Forwarded from" = "Переслано из"; + /* No comment provided by engineer. */ "Found desktop" = "Компьютер найден"; @@ -1947,6 +1983,9 @@ /* No comment provided by engineer. */ "Group members can send files and media." = "Члены группы могут слать файлы и медиа."; +/* No comment provided by engineer. */ +"Group members can send SimpleX links." = "Члены группы могут отправлять ссылки SimpleX."; + /* No comment provided by engineer. */ "Group members can send voice messages." = "Члены группы могут отправлять голосовые сообщения."; @@ -2088,6 +2127,9 @@ /* No comment provided by engineer. */ "In reply to" = "В ответ на"; +/* No comment provided by engineer. */ +"In-call sounds" = "Звуки во время звонков"; + /* No comment provided by engineer. */ "Incognito" = "Инкогнито"; @@ -2433,6 +2475,9 @@ /* notification */ "message received" = "получено сообщение"; +/* No comment provided by engineer. */ +"Message source remains private." = "Источник сообщения остаётся конфиденциальным."; + /* No comment provided by engineer. */ "Message text" = "Текст сообщения"; @@ -2517,6 +2562,9 @@ /* No comment provided by engineer. */ "More improvements are coming soon!" = "Дополнительные улучшения скоро!"; +/* No comment provided by engineer. */ +"More reliable network connection." = "Более надежное соединение с сетью."; + /* item status description */ "Most likely this connection is deleted." = "Скорее всего, соединение удалено."; @@ -2538,6 +2586,12 @@ /* No comment provided by engineer. */ "Network & servers" = "Сеть & серверы"; +/* No comment provided by engineer. */ +"Network connection" = "Интернет-соединение"; + +/* No comment provided by engineer. */ +"Network management" = "Статус сети"; + /* No comment provided by engineer. */ "Network settings" = "Настройки сети"; @@ -2616,6 +2670,9 @@ /* No comment provided by engineer. */ "No history" = "Нет истории"; +/* No comment provided by engineer. */ +"No network connection" = "Нет интернет-соединения"; + /* No comment provided by engineer. */ "No permission to record voice message" = "Нет разрешения для записи голосового сообщения"; @@ -2762,9 +2819,15 @@ /* No comment provided by engineer. */ "Or show this code" = "Или покажите этот код"; +/* No comment provided by engineer. */ +"Other" = "Другaя сеть"; + /* member role */ "owner" = "владелец"; +/* feature role */ +"owners" = "владельцы"; + /* No comment provided by engineer. */ "Passcode" = "Код доступа"; @@ -2930,6 +2993,9 @@ /* No comment provided by engineer. */ "Prohibit sending files and media." = "Запретить слать файлы и медиа."; +/* No comment provided by engineer. */ +"Prohibit sending SimpleX links." = "Запретить отправку ссылок SimpleX."; + /* No comment provided by engineer. */ "Prohibit sending voice messages." = "Запретить отправлять голосовые сообщений."; @@ -3008,6 +3074,9 @@ /* No comment provided by engineer. */ "Receiving address will be changed to a different server. Address change will complete after sender comes online." = "Адрес получения сообщений будет перемещён на другой сервер. Изменение адреса завершится после того как отправитель будет онлайн."; +/* No comment provided by engineer. */ +"Receiving concurrency" = "Одновременный приём"; + /* No comment provided by engineer. */ "Receiving file will be stopped." = "Приём файла будет прекращён."; @@ -3017,6 +3086,9 @@ /* 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)." = "История сообщений и улучшенный [каталог групп](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)."; +/* No comment provided by engineer. */ +"Recipient(s) can't see who this message is from." = "Получатели не видят от кого это сообщение."; + /* No comment provided by engineer. */ "Recipients see updates as you type them." = "Получатели видят их в то время как Вы их набираете."; @@ -3212,6 +3284,18 @@ /* No comment provided by engineer. */ "Save welcome message?" = "Сохранить приветственное сообщение?"; +/* No comment provided by engineer. */ +"saved" = "сохранено"; + +/* No comment provided by engineer. */ +"Saved" = "Сохранено"; + +/* No comment provided by engineer. */ +"Saved from" = "Сохранено из"; + +/* No comment provided by engineer. */ +"saved from %@" = "сохранено из %@"; + /* message info title */ "Saved message" = "Сохраненное сообщение"; @@ -3479,6 +3563,12 @@ /* chat feature */ "SimpleX links" = "SimpleX ссылки"; +/* No comment provided by engineer. */ +"SimpleX links are prohibited in this group." = "Ссылки SimpleX запрещены в этой группе."; + +/* No comment provided by engineer. */ +"SimpleX links not allowed" = "Ссылки SimpleX не разрешены"; + /* No comment provided by engineer. */ "SimpleX Lock" = "Блокировка SimpleX"; @@ -4043,6 +4133,9 @@ /* No comment provided by engineer. */ "Voice messages are prohibited in this group." = "Голосовые сообщения запрещены в этой группе."; +/* No comment provided by engineer. */ +"Voice messages not allowed" = "Голосовые сообщения не разрешены"; + /* No comment provided by engineer. */ "Voice messages prohibited!" = "Голосовые сообщения запрещены!"; @@ -4094,12 +4187,24 @@ /* No comment provided by engineer. */ "When available" = "Когда возможно"; +/* No comment provided by engineer. */ +"When connecting audio and video calls." = "Во время соединения аудио и видео звонков."; + /* No comment provided by engineer. */ "When people request to connect, you can accept or reject it." = "Когда Вы получите запрос на соединение, Вы можете принять или отклонить его."; /* 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." = "Когда Вы соединены с контактом инкогнито, тот же самый инкогнито профиль будет использоваться для групп с этим контактом."; +/* No comment provided by engineer. */ +"WiFi" = "WiFi"; + +/* No comment provided by engineer. */ +"Will be enabled in direct chats!" = "Будет включено в прямых разговорах!"; + +/* No comment provided by engineer. */ +"Wired ethernet" = "Проводная сеть"; + /* No comment provided by engineer. */ "With encrypted files and media." = "С зашифрованными файлами и медиа."; @@ -4121,6 +4226,9 @@ /* pref value */ "yes" = "да"; +/* No comment provided by engineer. */ +"you" = "Вы"; + /* No comment provided by engineer. */ "You" = "Вы"; diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml index ce6d0dc2e0..c3a377cd8a 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml @@ -1828,7 +1828,7 @@ Kopfhörer Weiterleiten Bluetooth - Weitergeleitet von + Weitergeleitet aus Nachricht weiterleiten… Kopfhörer Gelijktijdige ontvangst @@ -1839,4 +1839,12 @@ Weitergeleitet Abgespeichert von Herunterladen + Nachrichten weiterleiten und speichern + Klingeltöne + Die Nachrichtenquelle bleibt privat. + Netzwerk-Verwaltung + Bei der Verbindung über Audio- und Video-Anrufe. + Litauische Bedienoberfläche + Zuverlässigere Netzwerkverbindung. + Wird in direkten Chats automatisch aktiviert! \ No newline at end of file diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml index ce6f6bbe65..adb0d077cf 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml @@ -1813,4 +1813,40 @@ Дать разрешение для совершения звонков Микрофон Открыть настройки + Bluetooth + Одновременный приём + Верхний динамик + Наушники + Громкоговоритель + Звуки во время звонков + Более надежное соединение с сетью. + Статус сети + сохранено + сохранено из %s + Переслано + Переслано из + Получатели не видят от кого это сообщение. + переслано + Файлы и медиа не разрешены + Ссылки SimpleX не разрешены + Голосовые сообщения не разрешены + Ссылки SimpleX + Разрешить отправлять ссылки SimpleX. + Запретить отправку ссылок SimpleX + Члены группы могут отправлять ссылки SimpleX + админы + все члены + владельцы + Загрузить + Сохранено + Сохранено из + Включено для + Переслать + Переслать и сохранить сообщение + Ссылки SimpleX запрещены в этой группе. + Переслать сообщение… + Литовский интерфейс + Источник сообщения остаётся конфиденциальным. + Во время соединения аудио и видео звонков. + Будет включено в прямых разговорах! \ No newline at end of file From cfa7e0bb284d21d3f25732a96c636df1b91d9c15 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Wed, 24 Apr 2024 21:20:26 +0100 Subject: [PATCH 17/25] ios: customizable profile images (#4084) * ios: customizable profile images * update slider * whats new --- .../Shared/Views/Call/ActiveCallView.swift | 4 +--- .../Shared/Views/Call/IncomingCallView.swift | 3 +-- .../Shared/Views/Chat/ChatInfoToolbar.swift | 2 +- apps/ios/Shared/Views/Chat/ChatInfoView.swift | 3 +-- .../Chat/ChatItem/CIGroupInvitationView.swift | 2 +- .../Views/Chat/ChatItemForwardingView.swift | 3 +-- .../Shared/Views/Chat/ChatItemInfoView.swift | 6 ++--- apps/ios/Shared/Views/Chat/ChatView.swift | 3 +-- .../Chat/Group/AddGroupMembersView.swift | 3 +-- .../Views/Chat/Group/GroupChatInfoView.swift | 6 ++--- .../Chat/Group/GroupMemberInfoView.swift | 3 +-- .../Shared/Views/ChatList/ChatListView.swift | 3 +-- .../Views/ChatList/ChatPreviewView.swift | 3 +-- .../Views/ChatList/ContactRequestView.swift | 3 +-- .../Shared/Views/ChatList/UserPicker.swift | 3 +-- .../Shared/Views/Helpers/ChatInfoImage.swift | 7 ++++-- .../Shared/Views/Helpers/ProfileImage.swift | 24 +++++++++++++++---- .../Shared/Views/NewChat/AddGroupView.swift | 4 +--- .../Views/Onboarding/WhatsNewView.swift | 5 ++++ .../UserSettings/AppearanceSettings.swift | 22 ++++++++++++++++- .../Views/UserSettings/SettingsView.swift | 5 ++-- .../Views/UserSettings/UserProfile.swift | 4 +--- .../Views/UserSettings/UserProfilesView.swift | 3 +-- .../bg.xcloc/Localized Contents/bg.xliff | 12 ++++++++++ .../cs.xcloc/Localized Contents/cs.xliff | 12 ++++++++++ .../de.xcloc/Localized Contents/de.xliff | 12 ++++++++++ .../en.xcloc/Localized Contents/en.xliff | 15 ++++++++++++ .../es.xcloc/Localized Contents/es.xliff | 12 ++++++++++ .../fi.xcloc/Localized Contents/fi.xliff | 12 ++++++++++ .../fr.xcloc/Localized Contents/fr.xliff | 12 ++++++++++ .../hu.xcloc/Localized Contents/hu.xliff | 12 ++++++++++ .../it.xcloc/Localized Contents/it.xliff | 12 ++++++++++ .../ja.xcloc/Localized Contents/ja.xliff | 12 ++++++++++ .../nl.xcloc/Localized Contents/nl.xliff | 12 ++++++++++ .../pl.xcloc/Localized Contents/pl.xliff | 12 ++++++++++ .../ru.xcloc/Localized Contents/ru.xliff | 19 +++++++++++++-- .../th.xcloc/Localized Contents/th.xliff | 12 ++++++++++ .../tr.xcloc/Localized Contents/tr.xliff | 12 ++++++++++ .../uk.xcloc/Localized Contents/uk.xliff | 12 ++++++++++ .../Localized Contents/zh-Hans.xliff | 12 ++++++++++ apps/ios/ru.lproj/Localizable.strings | 13 ++++++++-- 41 files changed, 296 insertions(+), 55 deletions(-) diff --git a/apps/ios/Shared/Views/Call/ActiveCallView.swift b/apps/ios/Shared/Views/Call/ActiveCallView.swift index cffdefaaa2..751eba80ae 100644 --- a/apps/ios/Shared/Views/Call/ActiveCallView.swift +++ b/apps/ios/Shared/Views/Call/ActiveCallView.swift @@ -277,9 +277,7 @@ struct ActiveCallOverlay: View { .foregroundColor(.white.opacity(0.8)) } VStack { - ProfileImage(imageStr: call.contact.profile.image) - .scaledToFit() - .frame(width: 192, height: 192) + ProfileImage(imageStr: call.contact.profile.image, size: 192) audioCallInfoView(call) } .foregroundColor(.white) diff --git a/apps/ios/Shared/Views/Call/IncomingCallView.swift b/apps/ios/Shared/Views/Call/IncomingCallView.swift index c2d5dabd48..4647995b28 100644 --- a/apps/ios/Shared/Views/Call/IncomingCallView.swift +++ b/apps/ios/Shared/Views/Call/IncomingCallView.swift @@ -30,8 +30,7 @@ struct IncomingCallView: View { VStack(alignment: .leading, spacing: 6) { HStack { if m.users.count > 1 { - ProfileImage(imageStr: invitation.user.image, color: .white) - .frame(width: 24, height: 24) + ProfileImage(imageStr: invitation.user.image, size: 24, color: .white) } Image(systemName: invitation.callType.media == .video ? "video.fill" : "phone.fill").foregroundColor(.green) Text(invitation.callTypeText) diff --git a/apps/ios/Shared/Views/Chat/ChatInfoToolbar.swift b/apps/ios/Shared/Views/Chat/ChatInfoToolbar.swift index d0f4b6e55a..140b609902 100644 --- a/apps/ios/Shared/Views/Chat/ChatInfoToolbar.swift +++ b/apps/ios/Shared/Views/Chat/ChatInfoToolbar.swift @@ -25,11 +25,11 @@ struct ChatInfoToolbar: View { } ChatInfoImage( chat: chat, + size: imageSize, color: colorScheme == .dark ? chatImageColorDark : chatImageColorLight ) - .frame(width: imageSize, height: imageSize) .padding(.trailing, 4) VStack { let t = Text(cInfo.displayName).font(.headline) diff --git a/apps/ios/Shared/Views/Chat/ChatInfoView.swift b/apps/ios/Shared/Views/Chat/ChatInfoView.swift index 56e7cec697..55e84f20d3 100644 --- a/apps/ios/Shared/Views/Chat/ChatInfoView.swift +++ b/apps/ios/Shared/Views/Chat/ChatInfoView.swift @@ -271,8 +271,7 @@ struct ChatInfoView: View { private func contactInfoHeader() -> some View { VStack { let cInfo = chat.chatInfo - ChatInfoImage(chat: chat, color: Color(uiColor: .tertiarySystemFill)) - .frame(width: 192, height: 192) + ChatInfoImage(chat: chat, size: 192, color: Color(uiColor: .tertiarySystemFill)) .padding(.top, 12) .padding() if contact.verified { diff --git a/apps/ios/Shared/Views/Chat/ChatItem/CIGroupInvitationView.swift b/apps/ios/Shared/Views/Chat/ChatItem/CIGroupInvitationView.swift index 72013877ca..44bc579623 100644 --- a/apps/ios/Shared/Views/Chat/ChatItem/CIGroupInvitationView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItem/CIGroupInvitationView.swift @@ -100,9 +100,9 @@ struct CIGroupInvitationView: View { ProfileImage( imageStr: groupInvitation.groupProfile.image, iconName: "person.2.circle.fill", + size: 44, color: color ) - .frame(width: 44, height: 44) .padding(.trailing, 4) VStack(alignment: .leading) { let p = groupInvitation.groupProfile diff --git a/apps/ios/Shared/Views/Chat/ChatItemForwardingView.swift b/apps/ios/Shared/Views/Chat/ChatItemForwardingView.swift index f575b6f9a2..7237711a2a 100644 --- a/apps/ios/Shared/Views/Chat/ChatItemForwardingView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItemForwardingView.swift @@ -123,8 +123,7 @@ struct ChatItemForwardingView: View { } } label: { HStack { - ChatInfoImage(chat: chat) - .frame(width: 30, height: 30) + ChatInfoImage(chat: chat, size: 30) .padding(.trailing, 2) Text(chat.chatInfo.chatViewName) .foregroundColor(.primary) diff --git a/apps/ios/Shared/Views/Chat/ChatItemInfoView.swift b/apps/ios/Shared/Views/Chat/ChatItemInfoView.swift index 0d1f99f3bd..19aa261396 100644 --- a/apps/ios/Shared/Views/Chat/ChatItemInfoView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItemInfoView.swift @@ -334,8 +334,7 @@ struct ChatItemInfoView: View { @ViewBuilder private func forwardedFromSender(_ forwardedFromItem: AChatItem) -> some View { HStack { - ChatInfoImage(chat: Chat(chatInfo: forwardedFromItem.chatInfo)) - .frame(width: 48, height: 48) + ChatInfoImage(chat: Chat(chatInfo: forwardedFromItem.chatInfo), size: 48) .padding(.trailing, 6) if forwardedFromItem.chatItem.chatDir.sent { @@ -405,8 +404,7 @@ struct ChatItemInfoView: View { private func memberDeliveryStatusView(_ member: GroupMember, _ status: CIStatus) -> some View { HStack{ - ProfileImage(imageStr: member.image) - .frame(width: 30, height: 30) + ProfileImage(imageStr: member.image, size: 30) .padding(.trailing, 2) Text(member.chatViewName) .lineLimit(1) diff --git a/apps/ios/Shared/Views/Chat/ChatView.swift b/apps/ios/Shared/Views/Chat/ChatView.swift index 45819851f0..97ffd61116 100644 --- a/apps/ios/Shared/Views/Chat/ChatView.swift +++ b/apps/ios/Shared/Views/Chat/ChatView.swift @@ -597,8 +597,7 @@ struct ChatView: View { .padding(.top, 7) } HStack(alignment: .top, spacing: 8) { - ProfileImage(imageStr: member.memberProfile.image) - .frame(width: memberImageSize, height: memberImageSize) + ProfileImage(imageStr: member.memberProfile.image, size: memberImageSize) .onTapGesture { if chatView.membersLoaded { selectedMember = m.getGroupMember(member.groupMemberId) diff --git a/apps/ios/Shared/Views/Chat/Group/AddGroupMembersView.swift b/apps/ios/Shared/Views/Chat/Group/AddGroupMembersView.swift index b89c006c61..ed2afb91b3 100644 --- a/apps/ios/Shared/Views/Chat/Group/AddGroupMembersView.swift +++ b/apps/ios/Shared/Views/Chat/Group/AddGroupMembersView.swift @@ -194,8 +194,7 @@ struct AddGroupMembersViewCommon: View { } } label: { HStack{ - ProfileImage(imageStr: contact.image) - .frame(width: 30, height: 30) + ProfileImage(imageStr: contact.image, size: 30) .padding(.trailing, 2) Text(ChatInfo.direct(contact: contact).chatViewName) .foregroundColor(prohibitedToInviteIncognito ? .secondary : .primary) diff --git a/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift b/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift index c6509c9502..c22f3f0fed 100644 --- a/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift +++ b/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift @@ -172,8 +172,7 @@ struct GroupChatInfoView: View { private func groupInfoHeader() -> some View { VStack { let cInfo = chat.chatInfo - ChatInfoImage(chat: chat, color: Color(uiColor: .tertiarySystemFill)) - .frame(width: 192, height: 192) + ChatInfoImage(chat: chat, size: 192, color: Color(uiColor: .tertiarySystemFill)) .padding(.top, 12) .padding() Text(cInfo.displayName) @@ -217,8 +216,7 @@ struct GroupChatInfoView: View { var body: some View { let member = groupMember.wrapped let v = HStack{ - ProfileImage(imageStr: member.image) - .frame(width: 38, height: 38) + ProfileImage(imageStr: member.image, size: 38) .padding(.trailing, 2) // TODO server connection status VStack(alignment: .leading) { diff --git a/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift b/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift index 766aaf6577..a24608b7e7 100644 --- a/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift +++ b/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift @@ -305,8 +305,7 @@ struct GroupMemberInfoView: View { private func groupMemberInfoHeader(_ mem: GroupMember) -> some View { VStack { - ProfileImage(imageStr: mem.image, color: Color(uiColor: .tertiarySystemFill)) - .frame(width: 192, height: 192) + ProfileImage(imageStr: mem.image, size: 192, color: Color(uiColor: .tertiarySystemFill)) .padding(.top, 12) .padding() if mem.verified { diff --git a/apps/ios/Shared/Views/ChatList/ChatListView.swift b/apps/ios/Shared/Views/ChatList/ChatListView.swift index 38aabdc21d..6bf63bb2e3 100644 --- a/apps/ios/Shared/Views/ChatList/ChatListView.swift +++ b/apps/ios/Shared/Views/ChatList/ChatListView.swift @@ -92,8 +92,7 @@ struct ChatListView: View { ToolbarItem(placement: .navigationBarLeading) { let user = chatModel.currentUser ?? User.sampleData ZStack(alignment: .topTrailing) { - ProfileImage(imageStr: user.image, color: Color(uiColor: .quaternaryLabel)) - .frame(width: 32, height: 32) + ProfileImage(imageStr: user.image, size: 32, color: Color(uiColor: .quaternaryLabel)) .padding(.trailing, 4) let allRead = chatModel.users .filter { u in !u.user.activeUser && !u.user.hidden } diff --git a/apps/ios/Shared/Views/ChatList/ChatPreviewView.swift b/apps/ios/Shared/Views/ChatList/ChatPreviewView.swift index 8bfc8fec03..fe8fd8b28e 100644 --- a/apps/ios/Shared/Views/ChatList/ChatPreviewView.swift +++ b/apps/ios/Shared/Views/ChatList/ChatPreviewView.swift @@ -23,8 +23,7 @@ struct ChatPreviewView: View { let cItem = chat.chatItems.last return HStack(spacing: 8) { ZStack(alignment: .bottomTrailing) { - ChatInfoImage(chat: chat) - .frame(width: 63, height: 63) + ChatInfoImage(chat: chat, size: 63) chatPreviewImageOverlayIcon() .padding([.bottom, .trailing], 1) } diff --git a/apps/ios/Shared/Views/ChatList/ContactRequestView.swift b/apps/ios/Shared/Views/ChatList/ContactRequestView.swift index c5c062a6ec..dacf51a5e8 100644 --- a/apps/ios/Shared/Views/ChatList/ContactRequestView.swift +++ b/apps/ios/Shared/Views/ChatList/ContactRequestView.swift @@ -16,8 +16,7 @@ struct ContactRequestView: View { var body: some View { HStack(spacing: 8) { - ChatInfoImage(chat: chat) - .frame(width: 63, height: 63) + ChatInfoImage(chat: chat, size: 63) .padding(.leading, 4) VStack(alignment: .leading, spacing: 0) { HStack(alignment: .top) { diff --git a/apps/ios/Shared/Views/ChatList/UserPicker.swift b/apps/ios/Shared/Views/ChatList/UserPicker.swift index 922fc84e53..a615f9c118 100644 --- a/apps/ios/Shared/Views/ChatList/UserPicker.swift +++ b/apps/ios/Shared/Views/ChatList/UserPicker.swift @@ -127,8 +127,7 @@ struct UserPicker: View { } }, label: { HStack(spacing: 0) { - ProfileImage(imageStr: user.image, color: Color(uiColor: .tertiarySystemFill)) - .frame(width: 44, height: 44) + ProfileImage(imageStr: user.image, size: 44, color: Color(uiColor: .tertiarySystemFill)) .padding(.trailing, 12) Text(user.chatViewName) .fontWeight(user.activeUser ? .medium : .regular) diff --git a/apps/ios/Shared/Views/Helpers/ChatInfoImage.swift b/apps/ios/Shared/Views/Helpers/ChatInfoImage.swift index e253cdd72c..0180b066ab 100644 --- a/apps/ios/Shared/Views/Helpers/ChatInfoImage.swift +++ b/apps/ios/Shared/Views/Helpers/ChatInfoImage.swift @@ -12,6 +12,7 @@ import SimpleXChat struct ChatInfoImage: View { @Environment(\.colorScheme) var colorScheme @ObservedObject var chat: Chat + var size: CGFloat var color = Color(uiColor: .tertiarySystemGroupedBackground) var body: some View { @@ -28,6 +29,7 @@ struct ChatInfoImage: View { return ProfileImage( imageStr: chat.chatInfo.image, iconName: iconName, + size: size, color: iconColor ) } @@ -36,8 +38,9 @@ struct ChatInfoImage: View { struct ChatInfoImage_Previews: PreviewProvider { static var previews: some View { ChatInfoImage( - chat: Chat(chatInfo: ChatInfo.sampleData.direct, chatItems: []) - , color: Color(red: 0.9, green: 0.9, blue: 0.9) + chat: Chat(chatInfo: ChatInfo.sampleData.direct, chatItems: []), + size: 63, + color: Color(red: 0.9, green: 0.9, blue: 0.9) ) .previewLayout(.fixed(width: 63, height: 63)) } diff --git a/apps/ios/Shared/Views/Helpers/ProfileImage.swift b/apps/ios/Shared/Views/Helpers/ProfileImage.swift index cc4f09ae3b..96f0152d9e 100644 --- a/apps/ios/Shared/Views/Helpers/ProfileImage.swift +++ b/apps/ios/Shared/Views/Helpers/ProfileImage.swift @@ -9,29 +9,43 @@ import SwiftUI import SimpleXChat +let defaultProfileImageCorner = 22.5 + struct ProfileImage: View { var imageStr: String? = nil var iconName: String = "person.crop.circle.fill" + var size: CGFloat var color = Color(uiColor: .tertiarySystemGroupedBackground) - + @AppStorage(DEFAULT_PROFILE_IMAGE_CORNER_RADIUS) private var radius = defaultProfileImageCorner + var body: some View { if let image = imageStr, let data = Data(base64Encoded: dropImagePrefix(image)), let uiImage = UIImage(data: data) { - Image(uiImage: uiImage) - .resizable() - .clipShape(Circle()) + clipProfileImage(Image(uiImage: uiImage), size: size, radius: radius) } else { Image(systemName: iconName) .resizable() .foregroundColor(color) + .frame(width: size, height: size) } } } +@ViewBuilder func clipProfileImage(_ img: Image, size: CGFloat, radius: Double) -> some View { + let v = img.resizable().frame(width: size, height: size) + if radius <= 0 { + v.clipShape(Rectangle()) + } else if radius >= 50 { + v.clipShape(Circle()) + } else { + v.clipShape(RoundedRectangle(cornerRadius: size * radius / 100, style: .continuous)) + } +} + struct ProfileImage_Previews: PreviewProvider { static var previews: some View { - ProfileImage(imageStr: "data:image/png;base64,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") + ProfileImage(imageStr: "data:image/png;base64,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", size: 63) .previewLayout(.fixed(width: 63, height: 63)) .background(.black) } diff --git a/apps/ios/Shared/Views/NewChat/AddGroupView.swift b/apps/ios/Shared/Views/NewChat/AddGroupView.swift index 3f3623033e..4b272f4caa 100644 --- a/apps/ios/Shared/Views/NewChat/AddGroupView.swift +++ b/apps/ios/Shared/Views/NewChat/AddGroupView.swift @@ -70,9 +70,7 @@ struct AddGroupView: View { ZStack(alignment: .center) { ZStack(alignment: .topTrailing) { - ProfileImage(imageStr: profile.image, color: Color(uiColor: .secondarySystemGroupedBackground)) - .aspectRatio(1, contentMode: .fit) - .frame(maxWidth: 128, maxHeight: 128) + ProfileImage(imageStr: profile.image, size: 128, color: Color(uiColor: .secondarySystemGroupedBackground)) if profile.image != nil { Button { profile.image = nil diff --git a/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift b/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift index edb3dc17d3..6886c18447 100644 --- a/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift +++ b/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift @@ -394,6 +394,11 @@ private let versionDescriptions: [VersionDescription] = [ title: "In-call sounds", description: "When connecting audio and video calls." ), + FeatureDescription( + icon: "person.crop.square", + title: "Shape profile images", + description: "Square, circle, or anything in between." + ), FeatureDescription( icon: "antenna.radiowaves.left.and.right", title: "Network management", diff --git a/apps/ios/Shared/Views/UserSettings/AppearanceSettings.swift b/apps/ios/Shared/Views/UserSettings/AppearanceSettings.swift index 1f648b09dc..b91d2c9369 100644 --- a/apps/ios/Shared/Views/UserSettings/AppearanceSettings.swift +++ b/apps/ios/Shared/Views/UserSettings/AppearanceSettings.swift @@ -17,11 +17,14 @@ let interfaceStyleNames: [LocalizedStringKey] = ["System", "Light", "Dark"] let appSettingsURL = URL(string: UIApplication.openSettingsURLString)! struct AppearanceSettings: View { + @EnvironmentObject var m: ChatModel + @Environment(\.colorScheme) var colorScheme @EnvironmentObject var sceneDelegate: SceneDelegate @State private var iconLightTapped = false @State private var iconDarkTapped = false @State private var userInterfaceStyle = getUserInterfaceStyleDefault() @State private var uiTintColor = getUIAccentColorDefault() + @AppStorage(DEFAULT_PROFILE_IMAGE_CORNER_RADIUS) private var profileImageCornerRadius = defaultProfileImageCorner var body: some View { VStack{ @@ -44,6 +47,23 @@ struct AppearanceSettings: View { } } + Section("Profile images") { + HStack(spacing: 16) { + if let img = m.currentUser?.image, img != "" { + ProfileImage(imageStr: img, size: 60) + } else { + clipProfileImage(Image(colorScheme == .light ? "icon-dark" : "icon-light"), size: 60, radius: profileImageCornerRadius) + } + + Slider( + value: $profileImageCornerRadius, + in: 0...50, + step: 2.5 + ) + } + .foregroundColor(.secondary) + } + Section { Picker("Theme", selection: $userInterfaceStyle) { ForEach(interfaceStyles, id: \.self) { style in @@ -93,7 +113,7 @@ struct AppearanceSettings: View { } ._onButtonGesture { tapped.wrappedValue = $0 } perform: {} .overlay(tapped.wrappedValue ? Color.secondary : Color.clear) - .cornerRadius(20) + .cornerRadius(13.5) } } diff --git a/apps/ios/Shared/Views/UserSettings/SettingsView.swift b/apps/ios/Shared/Views/UserSettings/SettingsView.swift index 1799d8136a..e532448a90 100644 --- a/apps/ios/Shared/Views/UserSettings/SettingsView.swift +++ b/apps/ios/Shared/Views/UserSettings/SettingsView.swift @@ -45,6 +45,7 @@ let DEFAULT_ACCENT_COLOR_RED = "accentColorRed" let DEFAULT_ACCENT_COLOR_GREEN = "accentColorGreen" let DEFAULT_ACCENT_COLOR_BLUE = "accentColorBlue" let DEFAULT_USER_INTERFACE_STYLE = "userInterfaceStyle" +let DEFAULT_PROFILE_IMAGE_CORNER_RADIUS = "profileImageCornerRadius" let DEFAULT_CONNECT_VIA_LINK_TAB = "connectViaLinkTab" let DEFAULT_LIVE_MESSAGE_ALERT_SHOWN = "liveMessageAlertShown" let DEFAULT_SHOW_HIDDEN_PROFILES_NOTICE = "showHiddenProfilesNotice" @@ -87,6 +88,7 @@ let appDefaults: [String: Any] = [ DEFAULT_ACCENT_COLOR_GREEN: 0.533, DEFAULT_ACCENT_COLOR_BLUE: 1.000, DEFAULT_USER_INTERFACE_STYLE: 0, + DEFAULT_PROFILE_IMAGE_CORNER_RADIUS: defaultProfileImageCorner, DEFAULT_CONNECT_VIA_LINK_TAB: ConnectViaLinkTab.scan.rawValue, DEFAULT_LIVE_MESSAGE_ALERT_SHOWN: false, DEFAULT_SHOW_HIDDEN_PROFILES_NOTICE: true, @@ -425,8 +427,7 @@ struct ProfilePreview: View { var body: some View { HStack { - ProfileImage(imageStr: profileOf.image, color: color) - .frame(width: 44, height: 44) + ProfileImage(imageStr: profileOf.image, size: 44, color: color) .padding(.trailing, 6) .padding(.vertical, 6) VStack(alignment: .leading) { diff --git a/apps/ios/Shared/Views/UserSettings/UserProfile.swift b/apps/ios/Shared/Views/UserSettings/UserProfile.swift index e5ec23178d..198fd495bd 100644 --- a/apps/ios/Shared/Views/UserSettings/UserProfile.swift +++ b/apps/ios/Shared/Views/UserSettings/UserProfile.swift @@ -188,9 +188,7 @@ struct UserProfile: View { } func profileImageView(_ imageStr: String?) -> some View { - ProfileImage(imageStr: imageStr) - .aspectRatio(1, contentMode: .fit) - .frame(maxWidth: 192, maxHeight: 192) + ProfileImage(imageStr: imageStr, size: 192) } func editImageButton(action: @escaping () -> Void) -> some View { diff --git a/apps/ios/Shared/Views/UserSettings/UserProfilesView.swift b/apps/ios/Shared/Views/UserSettings/UserProfilesView.swift index af3d60c9c0..8c1a3bf4e1 100644 --- a/apps/ios/Shared/Views/UserSettings/UserProfilesView.swift +++ b/apps/ios/Shared/Views/UserSettings/UserProfilesView.swift @@ -309,8 +309,7 @@ struct UserProfilesView: View { } } label: { HStack { - ProfileImage(imageStr: user.image, color: Color(uiColor: .tertiarySystemFill)) - .frame(width: 44, height: 44) + ProfileImage(imageStr: user.image, size: 44, color: Color(uiColor: .tertiarySystemFill)) .padding(.vertical, 4) .padding(.trailing, 12) Text(user.chatViewName) 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 f62ef9fa92..2887496f78 100644 --- a/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff +++ b/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff @@ -4369,6 +4369,10 @@ Error: %@ Профилно изображение No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name Име на профила @@ -5189,6 +5193,10 @@ Error: %@ Настройки No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share Сподели @@ -5354,6 +5362,10 @@ Error: %@ Някой notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat Започни чат 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 000dfd11bc..a1ef39b2fb 100644 --- a/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff +++ b/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff @@ -4195,6 +4195,10 @@ Error: %@ Profilový obrázek No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name No comment provided by engineer. @@ -4990,6 +4994,10 @@ Error: %@ Nastavení No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share Sdílet @@ -5151,6 +5159,10 @@ Error: %@ Někdo notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat Začít chat 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 c756573675..4f22a82e09 100644 --- a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff +++ b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff @@ -4374,6 +4374,10 @@ Fehler: %@ Profilbild No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name Profilname @@ -5194,6 +5198,10 @@ Fehler: %@ Einstellungen No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share Teilen @@ -5359,6 +5367,10 @@ Fehler: %@ Jemand notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat Starten Sie den Chat 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 71e1a726b8..2b5677dd61 100644 --- a/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff +++ b/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff @@ -4374,6 +4374,11 @@ Error: %@ Profile image No comment provided by engineer. + + Profile images + Profile images + No comment provided by engineer. + Profile name Profile name @@ -5194,6 +5199,11 @@ Error: %@ Settings No comment provided by engineer. + + Shape profile images + Shape profile images + No comment provided by engineer. + Share Share @@ -5359,6 +5369,11 @@ Error: %@ Somebody notification title + + Square, circle, or anything in between. + Square, circle, or anything in between. + No comment provided by engineer. + Start chat Start chat 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 3f1b2deb11..61a5e235bc 100644 --- a/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff +++ b/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff @@ -4374,6 +4374,10 @@ Error: %@ Imagen del perfil No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name Nombre del perfil @@ -5194,6 +5198,10 @@ Error: %@ Configuración No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share Compartir @@ -5359,6 +5367,10 @@ Error: %@ Alguien notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat Iniciar chat 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 90ce66b8d9..a239bebbcf 100644 --- a/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff +++ b/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff @@ -4183,6 +4183,10 @@ Error: %@ Profiilikuva No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name No comment provided by engineer. @@ -4977,6 +4981,10 @@ Error: %@ Asetukset No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share Jaa @@ -5137,6 +5145,10 @@ Error: %@ Joku notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat Aloita keskustelu 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 2dcc0dfd0c..d0e3babe6f 100644 --- a/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff +++ b/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff @@ -4357,6 +4357,10 @@ Erreur : %@ Image de profil No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name Nom du profil @@ -5172,6 +5176,10 @@ Erreur : %@ Paramètres No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share Partager @@ -5335,6 +5343,10 @@ Erreur : %@ Quelqu'un notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat Démarrer le chat diff --git a/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff b/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff index dd1d4749cd..791f21a440 100644 --- a/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff +++ b/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff @@ -4374,6 +4374,10 @@ Hiba: %@ Profilkép No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name Profilnév @@ -5194,6 +5198,10 @@ Hiba: %@ Beállítások No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share Megosztás @@ -5359,6 +5367,10 @@ Hiba: %@ Valaki notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat Csevegés indítása 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 ae2888c12b..9bb90886f8 100644 --- a/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff +++ b/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff @@ -4369,6 +4369,10 @@ Errore: %@ Immagine del profilo No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name Nome del profilo @@ -5189,6 +5193,10 @@ Errore: %@ Impostazioni No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share Condividi @@ -5354,6 +5362,10 @@ Errore: %@ Qualcuno notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat Avvia chat 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 b1f9294387..9f9915c0f9 100644 --- a/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff +++ b/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff @@ -4203,6 +4203,10 @@ Error: %@ プロフィール画像 No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name No comment provided by engineer. @@ -4989,6 +4993,10 @@ Error: %@ 設定 No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share 共有する @@ -5150,6 +5158,10 @@ Error: %@ 誰か notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat チャットを開始する 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 76f634f917..f4056e359e 100644 --- a/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff +++ b/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff @@ -4374,6 +4374,10 @@ Fout: %@ profielfoto No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name Profielnaam @@ -5194,6 +5198,10 @@ Fout: %@ Instellingen No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share Deel @@ -5359,6 +5367,10 @@ Fout: %@ Iemand notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat Begin gesprek 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 a73e253e92..b5c60c2e1e 100644 --- a/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff +++ b/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff @@ -4357,6 +4357,10 @@ Błąd: %@ Zdjęcie profilowe No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name Nazwa profilu @@ -5172,6 +5176,10 @@ Błąd: %@ Ustawienia No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share Udostępnij @@ -5335,6 +5343,10 @@ Błąd: %@ Ktoś notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat Rozpocznij czat diff --git a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff index a4c0570bdb..ba1ac7a929 100644 --- a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff +++ b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff @@ -2890,7 +2890,7 @@ This cannot be undone! Group image - Аватар группы + Картинка группы No comment provided by engineer. @@ -4371,7 +4371,12 @@ Error: %@ Profile image - Аватар + Картинка профиля + No comment provided by engineer. + + + Profile images + Картинки профилей No comment provided by engineer. @@ -5194,6 +5199,11 @@ Error: %@ Настройки No comment provided by engineer. + + Shape profile images + Форма картинок профилей + No comment provided by engineer. + Share Поделиться @@ -5359,6 +5369,11 @@ Error: %@ Контакт notification title + + Square, circle, or anything in between. + Квадрат, круг и все, что между ними. + No comment provided by engineer. + Start chat Запустить чат diff --git a/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff b/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff index 71654d1578..1f62fad60f 100644 --- a/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff +++ b/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff @@ -4164,6 +4164,10 @@ Error: %@ รูปโปรไฟล์ No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name No comment provided by engineer. @@ -4954,6 +4958,10 @@ Error: %@ การตั้งค่า No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share แชร์ @@ -5112,6 +5120,10 @@ Error: %@ ใครบางคน notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat เริ่มแชท diff --git a/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff b/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff index 602519a962..1d0783c5e5 100644 --- a/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff +++ b/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff @@ -4374,6 +4374,10 @@ Hata: %@ Profil fotoğrafı No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name Profil ismi @@ -5194,6 +5198,10 @@ Hata: %@ Ayarlar No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share Paylaş @@ -5359,6 +5367,10 @@ Hata: %@ Biri notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat Sohbeti başlat diff --git a/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff b/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff index 348b06c16c..1ed1f5ffd6 100644 --- a/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff +++ b/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff @@ -4357,6 +4357,10 @@ Error: %@ Зображення профілю No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name Назва профілю @@ -5172,6 +5176,10 @@ Error: %@ Налаштування No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share Поділіться @@ -5335,6 +5343,10 @@ Error: %@ Хтось notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat Почати чат diff --git a/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff b/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff index 4190c5bc66..4bf9e05665 100644 --- a/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff +++ b/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff @@ -4269,6 +4269,10 @@ Error: %@ 资料图片 No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name No comment provided by engineer. @@ -5075,6 +5079,10 @@ Error: %@ 设置 No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share 分享 @@ -5237,6 +5245,10 @@ Error: %@ 某人 notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat 开始聊天 diff --git a/apps/ios/ru.lproj/Localizable.strings b/apps/ios/ru.lproj/Localizable.strings index 758588bc35..2c703f0095 100644 --- a/apps/ios/ru.lproj/Localizable.strings +++ b/apps/ios/ru.lproj/Localizable.strings @@ -1951,7 +1951,7 @@ "Group full name (optional)" = "Полное имя (необязательно)"; /* No comment provided by engineer. */ -"Group image" = "Аватар группы"; +"Group image" = "Картинка группы"; /* No comment provided by engineer. */ "Group invitation" = "Приглашение в группу"; @@ -2958,7 +2958,10 @@ "Profile and server connections" = "Профиль и соединения на сервере"; /* No comment provided by engineer. */ -"Profile image" = "Аватар"; +"Profile image" = "Картинка профиля"; + +/* No comment provided by engineer. */ +"Profile images" = "Картинки профилей"; /* No comment provided by engineer. */ "Profile name" = "Имя профиля"; @@ -3503,6 +3506,9 @@ /* No comment provided by engineer. */ "Settings" = "Настройки"; +/* No comment provided by engineer. */ +"Shape profile images" = "Форма картинок профилей"; + /* chat item action */ "Share" = "Поделиться"; @@ -3605,6 +3611,9 @@ /* notification title */ "Somebody" = "Контакт"; +/* No comment provided by engineer. */ +"Square, circle, or anything in between." = "Квадрат, круг и все, что между ними."; + /* chat item text */ "standard end-to-end encryption" = "стандартное end-to-end шифрование"; From 2b7f3099a62dc474c5ab43b7ccfa8ea05613cad0 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Thu, 25 Apr 2024 03:22:52 +0700 Subject: [PATCH 18/25] android, desktop: customizable profile images (#4087) * android, desktop: customizable profile images * better * fixes --------- Co-authored-by: Evgeny Poberezkin --- .../views/usersettings/Appearance.android.kt | 17 ++++-- .../drawable/icon_dark_blue_round_common.png | Bin 9870 -> 0 bytes .../res/drawable/icon_round_common.png | Bin 11666 -> 0 bytes .../chat/simplex/common/model/SimpleXAPI.kt | 8 +++ .../simplex/common/views/chat/ChatView.kt | 8 +-- .../common/views/helpers/ChatInfoImage.kt | 55 +++++++++++++++--- .../common/views/onboarding/WhatsNewView.kt | 5 ++ .../common/views/usersettings/Appearance.kt | 38 +++++++++++- .../commonMain/resources/MR/base/strings.xml | 3 + .../resources/MR/images/ic_account_box.svg | 1 + .../MR/images/ic_simplex_dark@4x.png | Bin 0 -> 10121 bytes .../MR/images/ic_simplex_light@4x.png | Bin 0 -> 10325 bytes .../commonMain/resources/MR/ru/strings.xml | 2 + .../views/usersettings/Appearance.desktop.kt | 3 + 14 files changed, 118 insertions(+), 22 deletions(-) delete mode 100644 apps/multiplatform/common/src/androidMain/res/drawable/icon_dark_blue_round_common.png delete mode 100644 apps/multiplatform/common/src/androidMain/res/drawable/icon_round_common.png create mode 100644 apps/multiplatform/common/src/commonMain/resources/MR/images/ic_account_box.svg create mode 100644 apps/multiplatform/common/src/commonMain/resources/MR/images/ic_simplex_dark@4x.png create mode 100644 apps/multiplatform/common/src/commonMain/resources/MR/images/ic_simplex_light@4x.png diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/usersettings/Appearance.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/usersettings/Appearance.android.kt index ccb85c3982..5a60e1d1b0 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/usersettings/Appearance.android.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/usersettings/Appearance.android.kt @@ -12,10 +12,12 @@ import androidx.compose.desktop.ui.tooling.preview.Preview import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.MaterialTheme.colors import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.shadow import androidx.compose.ui.graphics.* import androidx.compose.ui.layout.ContentScale @@ -34,11 +36,13 @@ import chat.simplex.common.helpers.APPLICATION_ID import chat.simplex.common.helpers.saveAppLocale import chat.simplex.common.views.usersettings.AppearanceScope.ColorEditor import chat.simplex.res.MR +import dev.icerock.moko.resources.ImageResource +import dev.icerock.moko.resources.compose.painterResource import kotlinx.coroutines.delay -enum class AppIcon(val resId: Int) { - DEFAULT(R.drawable.icon_round_common), - DARK_BLUE(R.drawable.icon_dark_blue_round_common), +enum class AppIcon(val image: ImageResource) { + DEFAULT(MR.images.ic_simplex_light), + DARK_BLUE(MR.images.ic_simplex_dark), } @Composable @@ -122,9 +126,8 @@ fun AppearanceScope.AppearanceLayout( LazyRow { items(AppIcon.values().size, { index -> AppIcon.values()[index] }) { index -> val item = AppIcon.values()[index] - val mipmap = ContextCompat.getDrawable(LocalContext.current, item.resId)!! Image( - bitmap = mipmap.toBitmap().asImageBitmap(), + painterResource(item.image), contentDescription = "", contentScale = ContentScale.Fit, modifier = Modifier @@ -132,6 +135,7 @@ fun AppearanceScope.AppearanceLayout( .size(70.dp) .clickable { changeIcon(item) } .padding(10.dp) + .clip(CircleShape) ) if (index + 1 != AppIcon.values().size) { @@ -141,6 +145,9 @@ fun AppearanceScope.AppearanceLayout( } } + SectionDividerSpaced(maxTopPadding = true) + ProfileImageSection() + SectionDividerSpaced(maxTopPadding = true) ThemesSection(systemDarkTheme, showSettingsModal, editColor) SectionBottomSpacer() diff --git a/apps/multiplatform/common/src/androidMain/res/drawable/icon_dark_blue_round_common.png b/apps/multiplatform/common/src/androidMain/res/drawable/icon_dark_blue_round_common.png deleted file mode 100644 index e413ad857da917bb0884e67a77f3db58e7227666..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9870 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 AtpET3 diff --git a/apps/multiplatform/common/src/androidMain/res/drawable/icon_round_common.png b/apps/multiplatform/common/src/androidMain/res/drawable/icon_round_common.png deleted file mode 100644 index 755904ee8efc18f9be8c9f70d773701e08948db7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11666 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 diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/SimpleXAPI.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/SimpleXAPI.kt index 0bf3f23d2c..494f400fbc 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/SimpleXAPI.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/SimpleXAPI.kt @@ -171,6 +171,7 @@ class AppPreferences { }, decode = { json.decodeFromString(MapSerializer(String.serializer(), ThemeOverrides.serializer()), it) }, settingsThemes) + val profileImageCornerRadius = mkFloatPreference(SHARED_PREFS_PROFILE_IMAGE_CORNER_RADIUS, 22.5f) val whatsNewVersion = mkStrPreference(SHARED_PREFS_WHATS_NEW_VERSION, null) val lastMigratedVersionCode = mkIntPreference(SHARED_PREFS_LAST_MIGRATED_VERSION_CODE, 0) @@ -201,6 +202,12 @@ class AppPreferences { set = fun(value) = settings.putLong(prefName, value) ) + private fun mkFloatPreference(prefName: String, default: Float) = + SharedPreference( + get = fun() = settings.getFloat(prefName, default), + set = fun(value) = settings.putFloat(prefName, value) + ) + private fun mkTimeoutPreference(prefName: String, default: Long, proxyDefault: Long): SharedPreference { val d = if (networkUseSocksProxy.get()) proxyDefault else default return SharedPreference( @@ -331,6 +338,7 @@ class AppPreferences { private const val SHARED_PREFS_CURRENT_THEME = "CurrentTheme" private const val SHARED_PREFS_SYSTEM_DARK_THEME = "SystemDarkTheme" private const val SHARED_PREFS_THEMES = "Themes" + private const val SHARED_PREFS_PROFILE_IMAGE_CORNER_RADIUS = "ProfileImageCornerRadius" private const val SHARED_PREFS_WHATS_NEW_VERSION = "WhatsNewVersion" private const val SHARED_PREFS_LAST_MIGRATED_VERSION_CODE = "LastMigratedVersionCode" private const val SHARED_PREFS_CUSTOM_DISAPPEARING_MESSAGE_TIME = "CustomDisappearingMessageTime" diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ChatView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ChatView.kt index 21a9cfa7b4..ff5364adc2 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ChatView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ChatView.kt @@ -1010,13 +1010,7 @@ fun BoxWithConstraintsScope.ChatItemsList( swipeableModifier, horizontalArrangement = Arrangement.spacedBy(4.dp) ) { - Box( - Modifier - .clip(CircleShape) - .clickable { - showMemberInfo(chat.chatInfo.groupInfo, member) - } - ) { + Box(Modifier.clickable { showMemberInfo(chat.chatInfo.groupInfo, member) }) { MemberImage(member) } ChatItemViewShortHand(cItem, range) diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ChatInfoImage.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ChatInfoImage.kt index 6813bec550..72764f215e 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ChatInfoImage.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ChatInfoImage.kt @@ -3,22 +3,24 @@ package chat.simplex.common.views.helpers import androidx.compose.desktop.ui.tooling.preview.Preview import androidx.compose.foundation.Image import androidx.compose.foundation.layout.* -import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.* import androidx.compose.material.Icon import androidx.compose.material.MaterialTheme import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.* import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.platform.InspectableValue +import androidx.compose.ui.unit.* import dev.icerock.moko.resources.compose.painterResource import dev.icerock.moko.resources.compose.stringResource -import androidx.compose.ui.unit.Dp -import androidx.compose.ui.unit.dp import chat.simplex.common.model.ChatInfo +import chat.simplex.common.platform.appPreferences import chat.simplex.common.platform.base64ToBitmap -import chat.simplex.common.ui.theme.NoteFolderIconColor -import chat.simplex.common.ui.theme.SimpleXTheme +import chat.simplex.common.ui.theme.* import chat.simplex.res.MR import dev.icerock.moko.resources.ImageResource @@ -79,12 +81,32 @@ fun ProfileImage( imageBitmap, stringResource(MR.strings.image_descr_profile_image), contentScale = ContentScale.Crop, - modifier = Modifier.size(size).padding(size / 12).clip(CircleShape) + modifier = Modifier.size(size).padding(size / 12).clip(ProfileIconShape()) ) } } } +@Composable +fun ProfileImage(size: Dp, image: ImageResource) { + Image( + painterResource(image), + stringResource(MR.strings.image_descr_profile_image), + contentScale = ContentScale.Crop, + modifier = Modifier.size(size).padding(size / 12).clip(ProfileIconShape()) + ) +} + +@Composable +fun ProfileIconShape(): Shape { + val percent = remember { appPreferences.profileImageCornerRadius.state } + return when { + percent.value <= 0 -> RectangleShape + percent.value >= 50 -> CircleShape + else -> RoundedCornerShape(PercentCornerSize(percent.value)) + } +} + /** [AccountCircleFilled] has its inner padding which leads to visible border if there is background underneath. * This is workaround * */ @@ -109,11 +131,30 @@ fun ProfileImageForActiveCall( imageBitmap, stringResource(MR.strings.image_descr_profile_image), contentScale = ContentScale.Crop, - modifier = Modifier.size(size).clip(CircleShape) + modifier = Modifier.size(size).clip(ProfileIconShape()) ) } } +/** (c) [androidx.compose.foundation.shape.CornerSize] */ +private data class PercentCornerSize( + private val percent: Float +) : CornerSize, InspectableValue { + init { + if (percent < 0 || percent > 100) { + throw IllegalArgumentException("The percent should be in the range of [0, 100]") + } + } + + override fun toPx(shapeSize: Size, density: Density) = + shapeSize.minDimension * (percent / 100f) + + override fun toString(): String = "CornerSize(size = $percent%)" + + override val valueOverride: String + get() = "$percent%" +} + @Preview @Composable diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/WhatsNewView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/WhatsNewView.kt index 0ea2d25c4f..43c492a732 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/WhatsNewView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/WhatsNewView.kt @@ -539,6 +539,11 @@ private val versionDescriptions: List = listOf( titleId = MR.strings.v5_7_call_sounds, descrId = MR.strings.v5_7_call_sounds_descr ), + FeatureDescription( + icon = MR.images.ic_account_box, + titleId = MR.strings.v5_7_shape_profile_images, + descrId = MR.strings.v5_7_shape_profile_images_descr + ), FeatureDescription( icon = MR.images.ic_wifi_tethering, titleId = MR.strings.v5_7_network, diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/Appearance.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/Appearance.kt index c55888d8a3..78e24e5e7e 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/Appearance.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/Appearance.kt @@ -5,14 +5,16 @@ import SectionItemView import SectionItemViewSpaceBetween import SectionSpacer import SectionView -import androidx.compose.foundation.* +import androidx.compose.foundation.Image import androidx.compose.foundation.layout.* import androidx.compose.material.* import androidx.compose.material.MaterialTheme.colors import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.* +import androidx.compose.ui.layout.ContentScale import dev.icerock.moko.resources.compose.painterResource import dev.icerock.moko.resources.compose.stringResource import androidx.compose.ui.unit.dp @@ -24,7 +26,6 @@ import chat.simplex.common.platform.* import chat.simplex.res.MR import com.godaddy.android.colorpicker.* import kotlinx.serialization.encodeToString -import java.io.File import java.net.URI import java.util.* import kotlin.collections.ArrayList @@ -33,6 +34,37 @@ import kotlin.collections.ArrayList expect fun AppearanceView(m: ChatModel, showSettingsModal: (@Composable (ChatModel) -> Unit) -> (() -> Unit)) object AppearanceScope { + @Composable + fun ProfileImageSection() { + SectionView(stringResource(MR.strings.settings_section_title_profile_images).uppercase(), padding = PaddingValues(horizontal = DEFAULT_PADDING)) { + val image = remember { chatModel.currentUser }.value?.image + Row(Modifier.padding(top = 10.dp), horizontalArrangement = Arrangement.Center, verticalAlignment = Alignment.CenterVertically) { + val size = 60 + Box(Modifier.offset(x = -(size / 12).dp)) { + if (!image.isNullOrEmpty()) { + ProfileImage(size.dp, image, MR.images.ic_simplex_light, color = Color.Unspecified) + } else { + ProfileImage(size.dp, if (isInDarkTheme()) MR.images.ic_simplex_light else MR.images.ic_simplex_dark) + } + } + Spacer(Modifier.width(DEFAULT_PADDING_HALF - (size / 12).dp)) + Slider( + remember { appPreferences.profileImageCornerRadius.state }.value, + valueRange = 0f..50f, + steps = 20, + onValueChange = { + val diff = it % 2.5f + appPreferences.profileImageCornerRadius.set(it + (if (diff >= 1.25f) -diff + 2.5f else -diff)) + }, + colors = SliderDefaults.colors( + activeTickColor = Color.Transparent, + inactiveTickColor = Color.Transparent, + ) + ) + } + } + } + @Composable fun ThemesSection( systemDarkTheme: SharedPreference, @@ -41,7 +73,7 @@ object AppearanceScope { ) { val currentTheme by CurrentColors.collectAsState() SectionView(stringResource(MR.strings.settings_section_title_themes)) { - val darkTheme = chat.simplex.common.ui.theme.isSystemInDarkTheme() + val darkTheme = isSystemInDarkTheme() val state = remember { derivedStateOf { currentTheme.name } } ThemeSelector(state) { ThemeManager.applyTheme(it, darkTheme) diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml index f3a5c138d5..6ca14aace2 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml @@ -1033,6 +1033,7 @@ LANGUAGE APP ICON THEMES + Profile images MESSAGES AND FILES CALLS Network connection @@ -1770,6 +1771,8 @@ Message source remains private. In-call sounds When connecting audio and video calls. + Shape profile images + Square, circle, or anything in between. Network management More reliable network connection. Lithuanian UI diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_account_box.svg b/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_account_box.svg new file mode 100644 index 0000000000..9680161c4f --- /dev/null +++ b/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_account_box.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_simplex_dark@4x.png b/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_simplex_dark@4x.png new file mode 100644 index 0000000000000000000000000000000000000000..45fc44af4319b8e495f2b3908b37ec1762b12465 GIT binary patch literal 10121 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 KvChIL<^KaA7^!yv literal 0 HcmV?d00001 diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_simplex_light@4x.png b/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_simplex_light@4x.png new file mode 100644 index 0000000000000000000000000000000000000000..c372e25b769d776fd33a7053027ece4f58a231b9 GIT binary patch literal 10325 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Литовский интерфейс Источник сообщения остаётся конфиденциальным. Во время соединения аудио и видео звонков. + Форма картинок профилей + Квадрат, круг и все, что между ними. Будет включено в прямых разговорах! \ No newline at end of file diff --git a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/usersettings/Appearance.desktop.kt b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/usersettings/Appearance.desktop.kt index 5ffc68be79..4e4846bc9f 100644 --- a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/usersettings/Appearance.desktop.kt +++ b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/usersettings/Appearance.desktop.kt @@ -62,6 +62,9 @@ fun AppearanceScope.AppearanceLayout( } } } + SectionDividerSpaced(maxTopPadding = true) + ProfileImageSection() + SectionDividerSpaced(maxTopPadding = true) ThemesSection(systemDarkTheme, showSettingsModal, editColor) SectionBottomSpacer() From 9e2a3fe848b5079e62f49c027a466705b58470a4 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Thu, 25 Apr 2024 03:39:59 +0700 Subject: [PATCH 19/25] android, desktop: more relaxed way of showing alerts for encryption/decryption errors (#4085) --- .../chat/simplex/common/platform/RecAndPlay.android.kt | 4 ++-- .../chat/simplex/common/platform/VideoPlayer.android.kt | 4 ++-- .../chat/simplex/common/views/helpers/Utils.android.kt | 1 - .../kotlin/chat/simplex/common/model/ChatModel.kt | 1 + .../simplex/common/views/chat/item/ImageFullScreenView.kt | 7 +++++-- .../chat/simplex/common/platform/RecAndPlay.desktop.kt | 2 +- .../chat/simplex/common/platform/VideoPlayer.desktop.kt | 2 +- .../chat/simplex/common/views/helpers/Utils.desktop.kt | 3 --- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/RecAndPlay.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/RecAndPlay.android.kt index 5cb10ff070..4dbc9bd9a9 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/RecAndPlay.android.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/RecAndPlay.android.kt @@ -156,13 +156,13 @@ actual object AudioPlayer: AudioPlayerInterface { } }.onFailure { Log.e(TAG, it.stackTraceToString()) - AlertManager.shared.showAlertMsg(generalGetString(MR.strings.unknown_error), it.message) + AlertManager.shared.showAlertMsg(generalGetString(MR.strings.unknown_error), it.stackTraceToString()) return null } runCatching { player.prepare() }.onFailure { // Can happen when audio file is broken Log.e(TAG, it.stackTraceToString()) - AlertManager.shared.showAlertMsg(generalGetString(MR.strings.unknown_error), it.message) + AlertManager.shared.showAlertMsg(generalGetString(MR.strings.unknown_error), it.stackTraceToString()) return null } } diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/VideoPlayer.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/VideoPlayer.android.kt index 6ed054cae9..61b404f7d6 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/VideoPlayer.android.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/VideoPlayer.android.kt @@ -88,7 +88,7 @@ actual class VideoPlayer actual constructor( player.setMediaSource(source, seek ?: 0L) }.onFailure { Log.e(TAG, it.stackTraceToString()) - AlertManager.shared.showAlertMsg(generalGetString(MR.strings.unknown_error), it.message) + AlertManager.shared.showAlertMsg(generalGetString(MR.strings.unknown_error), it.stackTraceToString()) brokenVideo.value = true return false } @@ -97,7 +97,7 @@ actual class VideoPlayer actual constructor( runCatching { player.prepare() }.onFailure { // Can happen when video file is broken Log.e(TAG, it.stackTraceToString()) - AlertManager.shared.showAlertMsg(generalGetString(MR.strings.unknown_error), it.message) + AlertManager.shared.showAlertMsg(generalGetString(MR.strings.unknown_error), it.stackTraceToString()) brokenVideo.value = true return false } diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/helpers/Utils.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/helpers/Utils.android.kt index ed0c4c9532..9ee816bb76 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/helpers/Utils.android.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/helpers/Utils.android.kt @@ -192,7 +192,6 @@ actual suspend fun getLoadedImage(file: CIFile?): Pair? readCryptoFile(getAppFilePath(file.fileSource.filePath), file.fileSource.cryptoArgs) } catch (e: Exception) { Log.e(TAG, "Unable to read crypto file: " + e.stackTraceToString()) - AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) return null } } else { diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/ChatModel.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/ChatModel.kt index a21e1c8cac..3838cd45a6 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/ChatModel.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/ChatModel.kt @@ -2701,6 +2701,7 @@ data class CryptoFile( } catch (e: Exception) { Log.e(TAG, "Unable to decrypt crypto file: " + e.stackTraceToString()) AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) + return null } return tmpFile.toURI() } diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ImageFullScreenView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ImageFullScreenView.kt index 316843a908..1dd5e4ee69 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ImageFullScreenView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ImageFullScreenView.kt @@ -146,7 +146,7 @@ fun ImageFullScreenView(imageProvider: () -> ImageGalleryProvider, close: () -> onDispose { playersToRelease.add(decrypted) } } } else if (media.fileSource != null) { - VideoViewEncrypted(uriDecrypted, media.fileSource, preview) + VideoViewEncrypted(uriDecrypted, media.fileSource, preview, close) } } } @@ -163,10 +163,13 @@ fun ImageFullScreenView(imageProvider: () -> ImageGalleryProvider, close: () -> expect fun FullScreenImageView(modifier: Modifier, data: ByteArray, imageBitmap: ImageBitmap) @Composable -private fun VideoViewEncrypted(uriUnencrypted: MutableState, fileSource: CryptoFile, defaultPreview: ImageBitmap) { +private fun VideoViewEncrypted(uriUnencrypted: MutableState, fileSource: CryptoFile, defaultPreview: ImageBitmap, close: () -> Unit) { LaunchedEffect(Unit) { withBGApi { uriUnencrypted.value = fileSource.decryptedGetOrCreate() + if (uriUnencrypted.value == null) { + close() + } } } Box(contentAlignment = Alignment.Center) { diff --git a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/RecAndPlay.desktop.kt b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/RecAndPlay.desktop.kt index 21a2ccd196..e1dba29f04 100644 --- a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/RecAndPlay.desktop.kt +++ b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/RecAndPlay.desktop.kt @@ -60,7 +60,7 @@ actual object AudioPlayer: AudioPlayerInterface { }.onFailure { Log.e(TAG, it.stackTraceToString()) fileSource.deleteTmpFile() - AlertManager.shared.showAlertMsg(generalGetString(MR.strings.unknown_error), it.message) + AlertManager.shared.showAlertMsg(generalGetString(MR.strings.unknown_error), it.stackTraceToString()) return null } } diff --git a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/VideoPlayer.desktop.kt b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/VideoPlayer.desktop.kt index dcae784662..50eeaee604 100644 --- a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/VideoPlayer.desktop.kt +++ b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/VideoPlayer.desktop.kt @@ -70,7 +70,7 @@ actual class VideoPlayer actual constructor( } }.onFailure { Log.e(TAG, it.stackTraceToString()) - AlertManager.shared.showAlertMsg(generalGetString(MR.strings.unknown_error), it.message) + AlertManager.shared.showAlertMsg(generalGetString(MR.strings.unknown_error), it.stackTraceToString()) brokenVideo.value = true return false } diff --git a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/helpers/Utils.desktop.kt b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/helpers/Utils.desktop.kt index 8fcd1ac5c7..641ddb8744 100644 --- a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/helpers/Utils.desktop.kt +++ b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/helpers/Utils.desktop.kt @@ -12,11 +12,9 @@ import chat.simplex.common.model.CIFile import chat.simplex.common.model.readCryptoFile import chat.simplex.common.platform.* import chat.simplex.common.simplexWindowState -import chat.simplex.res.MR import kotlinx.coroutines.delay import java.io.ByteArrayInputStream import java.io.File -import java.io.* import java.net.URI import javax.imageio.ImageIO import kotlin.io.encoding.Base64 @@ -143,7 +141,6 @@ actual suspend fun getLoadedImage(file: CIFile?): Pair? if (bitmap != null) bitmap to data else null } catch (e: Exception) { Log.e(TAG, "Unable to read crypto file: " + e.stackTraceToString()) - AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) null } } else { From 063a6dbc92b3f503c2a959afa7aaccbc70bdf13c Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Thu, 25 Apr 2024 12:37:05 +0400 Subject: [PATCH 20/25] core: apply disappearing messages setting to call and group invitation chat items (#4080) * core: apply disappearing messages setting to call and group invitation chat items * remove comment * fix incorrectly set edited field * sent group invitations * refactor * Revert "refactor" This reverts commit 4dd3070c2d13f8f8c07200185bf473c9a64092eb. --- src/Simplex/Chat.hs | 119 +++++++++++++++++-------- src/Simplex/Chat/Messages/CIContent.hs | 8 ++ src/Simplex/Chat/Store/Messages.hs | 46 +++++----- src/Simplex/Chat/Store/Profiles.hs | 1 - 4 files changed, 112 insertions(+), 62 deletions(-) diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs index 6d6437fe37..7b82d997cd 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -729,7 +729,8 @@ processChatCommand' vr = \case currentTs <- liftIO getCurrentTime when changed $ addInitialAndNewCIVersions db itemId (chatItemTs' ci, oldMC) (currentTs, mc) - updateDirectChatItem' db user contactId ci (CISndMsgContent mc) live $ Just msgId + let edited = itemLive /= Just True + updateDirectChatItem' db user contactId ci (CISndMsgContent mc) edited live Nothing $ Just msgId startUpdatedTimedItemThread user (ChatRef CTDirect contactId) ci ci' pure $ CRChatItemUpdated user (AChatItem SCTDirect SMDSnd (DirectChat ct) ci') else pure $ CRChatItemNotChanged user (AChatItem SCTDirect SMDSnd (DirectChat ct) ci) @@ -751,7 +752,8 @@ processChatCommand' vr = \case currentTs <- liftIO getCurrentTime when changed $ addInitialAndNewCIVersions db itemId (chatItemTs' ci, oldMC) (currentTs, mc) - updateGroupChatItem db user groupId ci (CISndMsgContent mc) live $ Just msgId + let edited = itemLive /= Just True + updateGroupChatItem db user groupId ci (CISndMsgContent mc) edited live $ Just msgId startUpdatedTimedItemThread user (ChatRef CTGroup groupId) ci ci' pure $ CRChatItemUpdated user (AChatItem SCTGroup SMDSnd (GroupChat gInfo) ci') else pure $ CRChatItemNotChanged user (AChatItem SCTGroup SMDSnd (GroupChat gInfo) ci) @@ -765,7 +767,7 @@ processChatCommand' vr = \case | otherwise -> withStore' $ \db -> do currentTs <- getCurrentTime addInitialAndNewCIVersions db itemId (chatItemTs' ci, oldMC) (currentTs, mc) - ci' <- updateLocalChatItem' db user noteFolderId ci (CISndMsgContent mc) + ci' <- updateLocalChatItem' db user noteFolderId ci (CISndMsgContent mc) True pure $ CRChatItemUpdated user (AChatItem SCTLocal SMDSnd (LocalChat nf) ci') _ -> throwChatError CEInvalidChatItemUpdate CTContactRequest -> pure $ chatCmdError (Just user) "not supported" @@ -1143,7 +1145,11 @@ processChatCommand' vr = \case CallInvitationReceived {} -> do let aciContent = ACIContent SMDRcv $ CIRcvCall CISCallRejected 0 withStore' $ \db -> updateDirectChatItemsRead db user contactId $ Just (chatItemId, chatItemId) - updateDirectChatItemView user ct chatItemId aciContent False Nothing $> Nothing + timed_ <- contactCITimed ct + updateDirectChatItemView user ct chatItemId aciContent False False timed_ Nothing + forM_ (timed_ >>= timedDeleteAt') $ + startProximateTimedItemThread user (ChatRef CTDirect contactId, chatItemId) + pure Nothing _ -> throwChatError . CECallState $ callStateTag callState APISendCallOffer contactId WebRTCCallOffer {callType, rtcSession} -> -- party accepting call @@ -1155,7 +1161,7 @@ processChatCommand' vr = \case aciContent = ACIContent SMDRcv $ CIRcvCall CISCallAccepted 0 (SndMessage {msgId}, _) <- sendDirectContactMessage user ct (XCallOffer callId offer) withStore' $ \db -> updateDirectChatItemsRead db user contactId $ Just (chatItemId, chatItemId) - updateDirectChatItemView user ct chatItemId aciContent False $ Just msgId + updateDirectChatItemView user ct chatItemId aciContent False False Nothing $ Just msgId pure $ Just call {callState = callState'} _ -> throwChatError . CECallState $ callStateTag callState APISendCallAnswer contactId rtcSession -> @@ -1165,7 +1171,7 @@ processChatCommand' vr = \case let callState' = CallNegotiated {localCallType, peerCallType, localCallSession = rtcSession, peerCallSession, sharedKey} aciContent = ACIContent SMDSnd $ CISndCall CISCallNegotiated 0 (SndMessage {msgId}, _) <- sendDirectContactMessage user ct (XCallAnswer callId CallAnswer {rtcSession}) - updateDirectChatItemView user ct chatItemId aciContent False $ Just msgId + updateDirectChatItemView user ct chatItemId aciContent False False Nothing $ Just msgId pure $ Just call {callState = callState'} _ -> throwChatError . CECallState $ callStateTag callState APISendCallExtraInfo contactId rtcExtraInfo -> @@ -2448,7 +2454,7 @@ processChatCommand' vr = \case groupMemberId <- getGroupMemberIdByName db user groupId groupMemberName pure (groupId, groupMemberId) sendGrpInvitation :: User -> Contact -> GroupInfo -> GroupMember -> ConnReqInvitation -> CM () - sendGrpInvitation user ct@Contact {localDisplayName} gInfo@GroupInfo {groupId, groupProfile, membership} GroupMember {groupMemberId, memberId, memberRole = memRole} cReq = do + sendGrpInvitation user ct@Contact {contactId, localDisplayName} gInfo@GroupInfo {groupId, groupProfile, membership} GroupMember {groupMemberId, memberId, memberRole = memRole} cReq = do currentMemCount <- withStore' $ \db -> getGroupCurrentMembersCount db user gInfo let GroupMember {memberRole = userRole, memberId = userMemberId} = membership groupInv = @@ -2462,19 +2468,11 @@ processChatCommand' vr = \case } (msg, _) <- sendDirectContactMessage user ct $ XGrpInv groupInv let content = CISndGroupInvitation (CIGroupInvitation {groupId, groupMemberId, localDisplayName, groupProfile, status = CIGISPending}) memRole - ci <- saveSndChatItem user (CDDirectSnd ct) msg content + timed_ <- contactCITimed ct + ci <- saveSndChatItem' user (CDDirectSnd ct) msg content Nothing Nothing Nothing timed_ False toView $ CRNewChatItem user (AChatItem SCTDirect SMDSnd (DirectChat ct) ci) - sndContactCITimed :: Bool -> Contact -> Maybe Int -> CM (Maybe CITimed) - sndContactCITimed live = sndCITimed_ live . contactTimedTTL - sndGroupCITimed :: Bool -> GroupInfo -> Maybe Int -> CM (Maybe CITimed) - sndGroupCITimed live = sndCITimed_ live . groupTimedTTL - sndCITimed_ :: Bool -> Maybe (Maybe Int) -> Maybe Int -> CM (Maybe CITimed) - sndCITimed_ live chatTTL itemTTL = - forM (chatTTL >>= (itemTTL <|>)) $ \ttl -> - CITimed ttl - <$> if live - then pure Nothing - else Just . addUTCTime (realToFrac ttl) <$> liftIO getCurrentTime + forM_ (timed_ >>= timedDeleteAt') $ + startProximateTimedItemThread user (ChatRef CTDirect contactId, chatItemId' ci) drgRandomBytes :: Int -> CM ByteString drgRandomBytes n = asks random >>= atomically . C.randomBytes n privateGetUser :: UserId -> CM User @@ -2610,10 +2608,13 @@ processChatCommand' vr = \case updateCIGroupInvitationStatus user GroupInfo {groupId} newStatus = do AChatItem _ _ cInfo ChatItem {content, meta = CIMeta {itemId}} <- withStore $ \db -> getChatItemByGroupId db vr user groupId case (cInfo, content) of - (DirectChat ct, CIRcvGroupInvitation ciGroupInv@CIGroupInvitation {status} memRole) + (DirectChat ct@Contact {contactId}, CIRcvGroupInvitation ciGroupInv@CIGroupInvitation {status} memRole) | status == CIGISPending -> do let aciContent = ACIContent SMDRcv $ CIRcvGroupInvitation ciGroupInv {status = newStatus} memRole - updateDirectChatItemView user ct itemId aciContent False Nothing + timed_ <- contactCITimed ct + updateDirectChatItemView user ct itemId aciContent False False timed_ Nothing + forM_ (timed_ >>= timedDeleteAt') $ + startProximateTimedItemThread user (ChatRef CTDirect contactId, itemId) _ -> pure () -- prohibited sendContactContentMessage :: User -> ContactId -> Bool -> Maybe Int -> ComposedMessage -> Maybe CIForwardedFrom -> CM ChatResponse sendContactContentMessage user contactId live itemTTL (ComposedMessage file_ quotedItemId_ mc) itemForwarded = do @@ -2714,6 +2715,23 @@ processChatCommand' vr = \case let ci = mkChatItem cd ciId content ciFile_ Nothing Nothing itemForwarded Nothing False createdAt Nothing createdAt pure . CRNewChatItem user $ AChatItem SCTLocal SMDSnd (LocalChat nf) ci +contactCITimed :: Contact -> CM (Maybe CITimed) +contactCITimed ct = sndContactCITimed False ct Nothing + +sndContactCITimed :: Bool -> Contact -> Maybe Int -> CM (Maybe CITimed) +sndContactCITimed live = sndCITimed_ live . contactTimedTTL + +sndGroupCITimed :: Bool -> GroupInfo -> Maybe Int -> CM (Maybe CITimed) +sndGroupCITimed live = sndCITimed_ live . groupTimedTTL + +sndCITimed_ :: Bool -> Maybe (Maybe Int) -> Maybe Int -> CM (Maybe CITimed) +sndCITimed_ live chatTTL itemTTL = + forM (chatTTL >>= (itemTTL <|>)) $ \ttl -> + CITimed ttl + <$> if live + then pure Nothing + else Just . addUTCTime (realToFrac ttl) <$> liftIO getCurrentTime + toggleNtf :: User -> GroupMember -> Bool -> CM () toggleNtf user m ntfOn = when (memberActive m) $ @@ -2901,13 +2919,30 @@ deleteFilesLocally files = withFilesFolder action = asks filesFolder >>= readTVarIO >>= mapM_ action updateCallItemStatus :: User -> Contact -> Call -> WebRTCCallStatus -> Maybe MessageId -> CM () -updateCallItemStatus user ct Call {chatItemId} receivedStatus msgId_ = do +updateCallItemStatus user ct@Contact {contactId} Call {chatItemId} receivedStatus msgId_ = do aciContent_ <- callStatusItemContent user ct chatItemId receivedStatus - forM_ aciContent_ $ \aciContent -> updateDirectChatItemView user ct chatItemId aciContent False msgId_ + forM_ aciContent_ $ \aciContent -> do + timed_ <- callTimed ct aciContent + updateDirectChatItemView user ct chatItemId aciContent False False timed_ msgId_ + forM_ (timed_ >>= timedDeleteAt') $ + startProximateTimedItemThread user (ChatRef CTDirect contactId, chatItemId) -updateDirectChatItemView :: User -> Contact -> ChatItemId -> ACIContent -> Bool -> Maybe MessageId -> CM () -updateDirectChatItemView user ct chatItemId (ACIContent msgDir ciContent) live msgId_ = do - ci' <- withStore $ \db -> updateDirectChatItem db user ct chatItemId ciContent live msgId_ +callTimed :: Contact -> ACIContent -> CM (Maybe CITimed) +callTimed ct aciContent = + case aciContentCallStatus aciContent of + Just callStatus + | callComplete callStatus -> do + contactCITimed ct + _ -> pure Nothing + where + aciContentCallStatus :: ACIContent -> Maybe CICallStatus + aciContentCallStatus (ACIContent _ (CISndCall st _)) = Just st + aciContentCallStatus (ACIContent _ (CIRcvCall st _)) = Just st + aciContentCallStatus _ = Nothing + +updateDirectChatItemView :: User -> Contact -> ChatItemId -> ACIContent -> Bool -> Bool -> Maybe CITimed -> Maybe MessageId -> CM () +updateDirectChatItemView user ct chatItemId (ACIContent msgDir ciContent) edited live timed_ msgId_ = do + ci' <- withStore $ \db -> updateDirectChatItem db user ct chatItemId ciContent edited live timed_ msgId_ toView $ CRChatItemUpdated user (AChatItem SCTDirect msgDir (DirectChat ct) ci') callStatusItemContent :: User -> Contact -> ChatItemId -> WebRTCCallStatus -> CM (Maybe ACIContent) @@ -3940,7 +3975,7 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = ci_ <- withStore $ \db -> getDirectChatItemLast db user contactId >>= liftIO - . mapM (\(ci, content') -> updateDirectChatItem' db user contactId ci content' False Nothing) + . mapM (\(ci, content') -> updateDirectChatItem' db user contactId ci content' False False Nothing Nothing) . mdeUpdatedCI e case ci_ of Just ci -> toView $ CRChatItemUpdated user (AChatItem SCTDirect SMDRcv (DirectChat ct) ci) @@ -4322,7 +4357,7 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = ci_ <- withStore $ \db -> getGroupMemberChatItemLast db user groupId (groupMemberId' m) >>= liftIO - . mapM (\(ci, content') -> updateGroupChatItem db user groupId ci content' False Nothing) + . mapM (\(ci, content') -> updateGroupChatItem db user groupId ci content' False False Nothing) . mdeUpdatedCI e case ci_ of Just ci -> toView $ CRChatItemUpdated user (AChatItem SCTGroup SMDRcv (GroupChat gInfo) ci) @@ -4786,7 +4821,7 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = ci <- saveRcvChatItem' user (CDDirectRcv ct) msg (Just sharedMsgId) brokerTs content Nothing timed_ live ci' <- withStore' $ \db -> do createChatItemVersion db (chatItemId' ci) brokerTs mc - updateDirectChatItem' db user contactId ci content live Nothing + updateDirectChatItem' db user contactId ci content True live Nothing Nothing toView $ CRChatItemUpdated user (AChatItem SCTDirect SMDRcv (DirectChat ct) ci') where brokerTs = metaBrokerTs msgMeta @@ -4804,7 +4839,8 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = when changed $ addInitialAndNewCIVersions db (chatItemId' ci) (chatItemTs' ci, oldMC) (brokerTs, mc) reactions <- getDirectCIReactions db ct sharedMsgId - updateDirectChatItem' db user contactId ci {reactions} content live $ Just msgId + let edited = itemLive /= Just True + updateDirectChatItem' db user contactId ci {reactions} content edited live Nothing $ Just msgId toView $ CRChatItemUpdated user (AChatItem SCTDirect SMDRcv (DirectChat ct) ci') startUpdatedTimedItemThread user (ChatRef CTDirect contactId) ci ci' else toView $ CRChatItemNotChanged user (AChatItem SCTDirect SMDRcv (DirectChat ct) ci) @@ -4936,7 +4972,7 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = ci <- saveRcvChatItem' user (CDGroupRcv gInfo m) msg (Just sharedMsgId) brokerTs content Nothing timed_ live ci' <- withStore' $ \db -> do createChatItemVersion db (chatItemId' ci) brokerTs mc - ci' <- updateGroupChatItem db user groupId ci content live Nothing + ci' <- updateGroupChatItem db user groupId ci content True live Nothing blockedMember m ci' $ markGroupChatItemBlocked db user gInfo ci' toView $ CRChatItemUpdated user (AChatItem SCTGroup SMDRcv (GroupChat gInfo) ci') where @@ -4955,7 +4991,8 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = when changed $ addInitialAndNewCIVersions db (chatItemId' ci) (chatItemTs' ci, oldMC) (brokerTs, mc) reactions <- getGroupCIReactions db gInfo memberId sharedMsgId - updateGroupChatItem db user groupId ci {reactions} content live $ Just msgId + let edited = itemLive /= Just True + updateGroupChatItem db user groupId ci {reactions} content edited live $ Just msgId toView $ CRChatItemUpdated user (AChatItem SCTGroup SMDRcv (GroupChat gInfo) ci') startUpdatedTimedItemThread user (ChatRef CTGroup groupId) ci ci' else toView $ CRChatItemNotChanged user (AChatItem SCTGroup SMDRcv (GroupChat gInfo) ci) @@ -5501,8 +5538,11 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = _ -> do withStore' $ \db -> deleteCalls db user ctId' atomically $ TM.delete ctId' calls - forM_ aciContent_ $ \aciContent -> - updateDirectChatItemView user ct chatItemId aciContent False $ Just msgId + forM_ aciContent_ $ \aciContent -> do + timed_ <- callTimed ct aciContent + updateDirectChatItemView user ct chatItemId aciContent False False timed_ $ Just msgId + forM_ (timed_ >>= timedDeleteAt') $ + startProximateTimedItemThread user (ChatRef CTDirect ctId', chatItemId) msgCallStateError :: Text -> Call -> CM () msgCallStateError eventName Call {callState} = @@ -6031,11 +6071,12 @@ sameMemberId memId GroupMember {memberId} = memId == memberId updatePeerChatVRange :: Connection -> VersionRangeChat -> CM Connection updatePeerChatVRange conn@Connection {connId, connChatVersion = v, peerChatVRange, connType, pqSupport, pqEncryption} msgVRange = do v' <- lift $ upgradedConnVersion v msgVRange - conn' <- if msgVRange /= peerChatVRange || v' /= v - then do - withStore' $ \db -> setPeerChatVRange db connId v' msgVRange - pure conn {connChatVersion = v', peerChatVRange = msgVRange} - else pure conn + conn' <- + if msgVRange /= peerChatVRange || v' /= v + then do + withStore' $ \db -> setPeerChatVRange db connId v' msgVRange + pure conn {connChatVersion = v', peerChatVRange = msgVRange} + else pure conn -- TODO v6.0 remove/review: for contacts only version upgrade should trigger enabling PQ support/encryption if connType == ConnContact && v' >= pqEncryptionCompressionVersion && (pqSupport /= PQSupportOn || pqEncryption /= PQEncOn) then do diff --git a/src/Simplex/Chat/Messages/CIContent.hs b/src/Simplex/Chat/Messages/CIContent.hs index 13aa7ace10..3d71047d57 100644 --- a/src/Simplex/Chat/Messages/CIContent.hs +++ b/src/Simplex/Chat/Messages/CIContent.hs @@ -623,6 +623,14 @@ ciCallInfoText status duration = case status of CISCallEnded -> "ended " <> durationText duration CISCallError -> "error" +callComplete :: CICallStatus -> Bool +callComplete = \case + CISCallMissed -> True + CISCallRejected -> True + CISCallEnded -> True + CISCallError -> True + _ -> False + $(JQ.deriveJSON defaultJSON ''E2EInfo) $(JQ.deriveJSON (enumJSON $ dropPrefix "MDE") ''MsgDecryptError) diff --git a/src/Simplex/Chat/Store/Messages.hs b/src/Simplex/Chat/Store/Messages.hs index 69157eba0a..0d6592a311 100644 --- a/src/Simplex/Chat/Store/Messages.hs +++ b/src/Simplex/Chat/Store/Messages.hs @@ -1601,10 +1601,10 @@ updateDirectChatItemStatus db user@User {userId} ct@Contact {contactId} itemId i liftIO $ DB.execute db "UPDATE chat_items SET item_status = ?, updated_at = ? WHERE user_id = ? AND contact_id = ? AND chat_item_id = ?" (itemStatus, currentTs, userId, contactId, itemId) pure ci {meta = (meta ci) {itemStatus}} -updateDirectChatItem :: MsgDirectionI d => DB.Connection -> User -> Contact -> ChatItemId -> CIContent d -> Bool -> Maybe MessageId -> ExceptT StoreError IO (ChatItem 'CTDirect d) -updateDirectChatItem db user ct@Contact {contactId} itemId newContent live msgId_ = do +updateDirectChatItem :: MsgDirectionI d => DB.Connection -> User -> Contact -> ChatItemId -> CIContent d -> Bool -> Bool -> Maybe CITimed -> Maybe MessageId -> ExceptT StoreError IO (ChatItem 'CTDirect d) +updateDirectChatItem db user ct@Contact {contactId} itemId newContent edited live timed_ msgId_ = do ci <- liftEither . correctDir =<< getDirectCIWithReactions db user ct itemId - liftIO $ updateDirectChatItem' db user contactId ci newContent live msgId_ + liftIO $ updateDirectChatItem' db user contactId ci newContent edited live timed_ msgId_ getDirectCIWithReactions :: DB.Connection -> User -> Contact -> ChatItemId -> ExceptT StoreError IO (CChatItem 'CTDirect) getDirectCIWithReactions db user ct@Contact {contactId} itemId = @@ -1613,25 +1613,27 @@ getDirectCIWithReactions db user ct@Contact {contactId} itemId = correctDir :: MsgDirectionI d => CChatItem c -> Either StoreError (ChatItem c d) correctDir (CChatItem _ ci) = first SEInternalError $ checkDirection ci -updateDirectChatItem' :: forall d. MsgDirectionI d => DB.Connection -> User -> Int64 -> ChatItem 'CTDirect d -> CIContent d -> Bool -> Maybe MessageId -> IO (ChatItem 'CTDirect d) -updateDirectChatItem' db User {userId} contactId ci newContent live msgId_ = do +updateDirectChatItem' :: forall d. MsgDirectionI d => DB.Connection -> User -> Int64 -> ChatItem 'CTDirect d -> CIContent d -> Bool -> Bool -> Maybe CITimed -> Maybe MessageId -> IO (ChatItem 'CTDirect d) +updateDirectChatItem' db User {userId} contactId ci newContent edited live timed_ msgId_ = do currentTs <- liftIO getCurrentTime - let ci' = updatedChatItem ci newContent live currentTs + let ci' = updatedChatItem ci newContent edited live timed_ currentTs liftIO $ updateDirectChatItem_ db userId contactId ci' msgId_ pure ci' -updatedChatItem :: ChatItem c d -> CIContent d -> Bool -> UTCTime -> ChatItem c d -updatedChatItem ci@ChatItem {meta = meta@CIMeta {itemStatus, itemEdited, itemTimed, itemLive}} newContent live currentTs = +updatedChatItem :: ChatItem c d -> CIContent d -> Bool -> Bool -> Maybe CITimed -> UTCTime -> ChatItem c d +updatedChatItem ci@ChatItem {meta = meta@CIMeta {itemStatus, itemEdited, itemTimed, itemLive}} newContent edited live timed_ currentTs = let newText = ciContentToText newContent - edited' = itemEdited || (itemLive /= Just True) + edited' = itemEdited || edited live' = (live &&) <$> itemLive - timed' = case (itemStatus, itemTimed, itemLive, live) of - (CISRcvNew, _, _, _) -> itemTimed - (_, Just CITimed {ttl, deleteAt = Nothing}, Just True, False) -> - -- timed item, sent or read, not set for deletion, was live, now not live - let deleteAt' = addUTCTime (realToFrac ttl) currentTs - in Just CITimed {ttl, deleteAt = Just deleteAt'} - _ -> itemTimed + timed' = case timed_ of + Just timed -> Just timed + Nothing -> case (itemStatus, itemTimed, itemLive, live) of + (CISRcvNew, _, _, _) -> itemTimed + (_, Just CITimed {ttl, deleteAt = Nothing}, Just True, False) -> + -- timed item, sent or read, not set for deletion, was live, now not live + let deleteAt' = addUTCTime (realToFrac ttl) currentTs + in Just CITimed {ttl, deleteAt = Just deleteAt'} + _ -> itemTimed in ci {content = newContent, meta = meta {itemText = newText, itemEdited = edited', itemTimed = timed', itemLive = live'}, formattedText = parseMaybeMarkdownList newText} -- this function assumes that direct item with correct chat direction already exists, @@ -1819,10 +1821,10 @@ groupCIWithReactions db g cci@(CChatItem md ci@ChatItem {meta = CIMeta {itemShar pure $ CChatItem md ci {reactions} Nothing -> pure cci -updateGroupChatItem :: MsgDirectionI d => DB.Connection -> User -> Int64 -> ChatItem 'CTGroup d -> CIContent d -> Bool -> Maybe MessageId -> IO (ChatItem 'CTGroup d) -updateGroupChatItem db user groupId ci newContent live msgId_ = do +updateGroupChatItem :: MsgDirectionI d => DB.Connection -> User -> Int64 -> ChatItem 'CTGroup d -> CIContent d -> Bool -> Bool -> Maybe MessageId -> IO (ChatItem 'CTGroup d) +updateGroupChatItem db user groupId ci newContent edited live msgId_ = do currentTs <- liftIO getCurrentTime - let ci' = updatedChatItem ci newContent live currentTs + let ci' = updatedChatItem ci newContent edited live Nothing currentTs liftIO $ updateGroupChatItem_ db user groupId ci' msgId_ pure ci' @@ -2144,10 +2146,10 @@ getLocalChatItemIdByText' db User {userId} noteFolderId msg = |] (userId, noteFolderId, msg <> "%") -updateLocalChatItem' :: forall d. MsgDirectionI d => DB.Connection -> User -> NoteFolderId -> ChatItem 'CTLocal d -> CIContent d -> IO (ChatItem 'CTLocal d) -updateLocalChatItem' db User {userId} noteFolderId ci newContent = do +updateLocalChatItem' :: forall d. MsgDirectionI d => DB.Connection -> User -> NoteFolderId -> ChatItem 'CTLocal d -> CIContent d -> Bool -> IO (ChatItem 'CTLocal d) +updateLocalChatItem' db User {userId} noteFolderId ci newContent edited = do currentTs <- liftIO getCurrentTime - let ci' = updatedChatItem ci newContent False currentTs + let ci' = updatedChatItem ci newContent edited False Nothing currentTs liftIO $ updateLocalChatItem_ db userId noteFolderId ci' pure ci' diff --git a/src/Simplex/Chat/Store/Profiles.hs b/src/Simplex/Chat/Store/Profiles.hs index 312907fb16..c92bf3391c 100644 --- a/src/Simplex/Chat/Store/Profiles.hs +++ b/src/Simplex/Chat/Store/Profiles.hs @@ -87,7 +87,6 @@ import Simplex.Messaging.Agent.Store.SQLite (firstRow, maybeFirstRow) import qualified Simplex.Messaging.Agent.Store.SQLite.DB as DB import qualified Simplex.Messaging.Crypto as C import qualified Simplex.Messaging.Crypto.Ratchet as CR -import Simplex.Messaging.Crypto.Ratchet (PQSupport) import Simplex.Messaging.Encoding.String import Simplex.Messaging.Parsers (defaultJSON) import Simplex.Messaging.Protocol (BasicAuth (..), ProtoServerWithAuth (..), ProtocolServer (..), ProtocolTypeI (..), SubscriptionMode) From 1163fe7b562c2528fc6586346913e26b80d0ad03 Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Thu, 25 Apr 2024 12:41:20 +0400 Subject: [PATCH 21/25] ios: show disappearing message timer on calls and group invitations (#4086) --- .../Views/Chat/ChatItem/CICallItemView.swift | 4 +-- .../Views/Chat/ChatItem/CIEventView.swift | 2 +- .../Chat/ChatItem/CIGroupInvitationView.swift | 33 +++++++++++-------- .../Views/Chat/ChatItem/CIMetaView.swift | 31 +++++++++++------ apps/ios/Shared/Views/Chat/ChatItemView.swift | 2 +- .../common/views/chat/item/CIEventView.kt | 2 +- 6 files changed, 44 insertions(+), 30 deletions(-) diff --git a/apps/ios/Shared/Views/Chat/ChatItem/CICallItemView.swift b/apps/ios/Shared/Views/Chat/ChatItem/CICallItemView.swift index f0bf43dffe..e3913431f5 100644 --- a/apps/ios/Shared/Views/Chat/ChatItem/CICallItemView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItem/CICallItemView.swift @@ -35,9 +35,7 @@ struct CICallItemView: View { case .error: missedCallIcon(sent).foregroundColor(.orange) } - chatItem.timestampText - .font(.caption) - .foregroundColor(.secondary) + CIMetaView(chat: chat, chatItem: chatItem, showStatus: false, showEdited: false) .padding(.bottom, 8) .padding(.horizontal, 12) } diff --git a/apps/ios/Shared/Views/Chat/ChatItem/CIEventView.swift b/apps/ios/Shared/Views/Chat/ChatItem/CIEventView.swift index 1866645316..1375b87a5a 100644 --- a/apps/ios/Shared/Views/Chat/ChatItem/CIEventView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItem/CIEventView.swift @@ -17,7 +17,7 @@ struct CIEventView: View { .padding(.horizontal, 6) .padding(.vertical, 4) .textSelection(.disabled) - .lineLimit(3) + .lineLimit(4) } } diff --git a/apps/ios/Shared/Views/Chat/ChatItem/CIGroupInvitationView.swift b/apps/ios/Shared/Views/Chat/ChatItem/CIGroupInvitationView.swift index 44bc579623..1c9df5fcbf 100644 --- a/apps/ios/Shared/Views/Chat/ChatItem/CIGroupInvitationView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItem/CIGroupInvitationView.swift @@ -12,6 +12,7 @@ import SimpleXChat struct CIGroupInvitationView: View { @EnvironmentObject var chatModel: ChatModel @Environment(\.colorScheme) var colorScheme + @ObservedObject var chat: Chat var chatItem: ChatItem var groupInvitation: CIGroupInvitation var memberRole: GroupMemberRole @@ -37,16 +38,22 @@ struct CIGroupInvitationView: View { VStack(alignment: .leading, spacing: 2) { groupInvitationText() .overlay(DetermineWidth()) - Text(chatIncognito ? "Tap to join incognito" : "Tap to join") - .foregroundColor(inProgress ? .secondary : chatIncognito ? .indigo : .accentColor) - .font(.callout) - .padding(.trailing, 60) - .overlay(DetermineWidth()) + ( + Text(chatIncognito ? "Tap to join incognito" : "Tap to join") + .foregroundColor(inProgress ? .secondary : chatIncognito ? .indigo : .accentColor) + .font(.callout) + + Text(" ") + + ciMetaText(chatItem.meta, chatTTL: nil, encrypted: nil, transparent: true, showStatus: false, showEdited: false) + ) + .overlay(DetermineWidth()) } } else { - groupInvitationText() - .padding(.trailing, 60) - .overlay(DetermineWidth()) + ( + groupInvitationText() + + Text(" ") + + ciMetaText(chatItem.meta, chatTTL: nil, encrypted: nil, transparent: true, showStatus: false, showEdited: false) + ) + .overlay(DetermineWidth()) } } .padding(.bottom, 2) @@ -56,9 +63,7 @@ struct CIGroupInvitationView: View { } } - chatItem.timestampText - .font(.caption) - .foregroundColor(.secondary) + CIMetaView(chat: chat, chatItem: chatItem, showStatus: false, showEdited: false) } .padding(.horizontal, 12) .padding(.vertical, 6) @@ -115,7 +120,7 @@ struct CIGroupInvitationView: View { } } - private func groupInvitationText() -> some View { + private func groupInvitationText() -> Text { Text(groupInvitationStr()) .font(.callout) } @@ -137,8 +142,8 @@ struct CIGroupInvitationView: View { struct CIGroupInvitationView_Previews: PreviewProvider { static var previews: some View { Group { - CIGroupInvitationView(chatItem: ChatItem.getGroupInvitationSample(), groupInvitation: CIGroupInvitation.getSample(groupProfile: GroupProfile(displayName: "team", fullName: "team")), memberRole: .admin) - CIGroupInvitationView(chatItem: ChatItem.getGroupInvitationSample(), groupInvitation: CIGroupInvitation.getSample(status: .accepted), memberRole: .admin) + CIGroupInvitationView(chat: Chat.sampleData, chatItem: ChatItem.getGroupInvitationSample(), groupInvitation: CIGroupInvitation.getSample(groupProfile: GroupProfile(displayName: "team", fullName: "team")), memberRole: .admin) + CIGroupInvitationView(chat: Chat.sampleData, chatItem: ChatItem.getGroupInvitationSample(), groupInvitation: CIGroupInvitation.getSample(status: .accepted), memberRole: .admin) } } } diff --git a/apps/ios/Shared/Views/Chat/ChatItem/CIMetaView.swift b/apps/ios/Shared/Views/Chat/ChatItem/CIMetaView.swift index c189abde24..b0a3520fca 100644 --- a/apps/ios/Shared/Views/Chat/ChatItem/CIMetaView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItem/CIMetaView.swift @@ -14,6 +14,8 @@ struct CIMetaView: View { var chatItem: ChatItem var metaColor = Color.secondary var paleMetaColor = Color(UIColor.tertiaryLabel) + var showStatus = true + var showEdited = true var body: some View { if chatItem.isDeletedContent { @@ -25,24 +27,24 @@ struct CIMetaView: View { switch meta.itemStatus { case let .sndSent(sndProgress): switch sndProgress { - case .complete: ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: metaColor, sent: .sent) - case .partial: ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: paleMetaColor, sent: .sent) + case .complete: ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: metaColor, sent: .sent, showStatus: showStatus, showEdited: showEdited) + case .partial: ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: paleMetaColor, sent: .sent, showStatus: showStatus, showEdited: showEdited) } case let .sndRcvd(_, sndProgress): switch sndProgress { case .complete: ZStack { - ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: metaColor, sent: .rcvd1) - ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: metaColor, sent: .rcvd2) + ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: metaColor, sent: .rcvd1, showStatus: showStatus, showEdited: showEdited) + ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: metaColor, sent: .rcvd2, showStatus: showStatus, showEdited: showEdited) } case .partial: ZStack { - ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: paleMetaColor, sent: .rcvd1) - ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: paleMetaColor, sent: .rcvd2) + ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: paleMetaColor, sent: .rcvd1, showStatus: showStatus, showEdited: showEdited) + ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: paleMetaColor, sent: .rcvd2, showStatus: showStatus, showEdited: showEdited) } } default: - ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: metaColor) + ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: metaColor, showStatus: showStatus, showEdited: showEdited) } } } @@ -54,9 +56,18 @@ enum SentCheckmark { case rcvd2 } -func ciMetaText(_ meta: CIMeta, chatTTL: Int?, encrypted: Bool?, color: Color = .clear, transparent: Bool = false, sent: SentCheckmark? = nil) -> Text { +func ciMetaText( + _ meta: CIMeta, + chatTTL: Int?, + encrypted: Bool?, + color: Color = .clear, + transparent: Bool = false, + sent: SentCheckmark? = nil, + showStatus: Bool = true, + showEdited: Bool = true +) -> Text { var r = Text("") - if meta.itemEdited { + if showEdited, meta.itemEdited { r = r + statusIconText("pencil", color) } if meta.disappearing { @@ -67,7 +78,7 @@ func ciMetaText(_ meta: CIMeta, chatTTL: Int?, encrypted: Bool?, color: Color = } r = r + Text(" ") } - if let (icon, statusColor) = meta.statusIcon(color) { + if showStatus, let (icon, statusColor) = meta.statusIcon(color) { let t = Text(Image(systemName: icon)).font(.caption2) let gap = Text(" ").kerning(-1.25) let t1 = t.foregroundColor(transparent ? .clear : statusColor.opacity(0.67)) diff --git a/apps/ios/Shared/Views/Chat/ChatItemView.swift b/apps/ios/Shared/Views/Chat/ChatItemView.swift index c2adcacbfe..d580fb5f3e 100644 --- a/apps/ios/Shared/Views/Chat/ChatItemView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItemView.swift @@ -127,7 +127,7 @@ struct ChatItemContentView: View { } private func groupInvitationItemView(_ groupInvitation: CIGroupInvitation, _ memberRole: GroupMemberRole) -> some View { - CIGroupInvitationView(chatItem: chatItem, groupInvitation: groupInvitation, memberRole: memberRole, chatIncognito: chat.chatInfo.incognito) + CIGroupInvitationView(chat: chat, chatItem: chatItem, groupInvitation: groupInvitation, memberRole: memberRole, chatIncognito: chat.chatInfo.incognito) } private func eventItemView() -> some View { diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIEventView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIEventView.kt index 17a45fd3bd..529a0e458b 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIEventView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIEventView.kt @@ -12,7 +12,7 @@ import chat.simplex.common.ui.theme.* @Composable fun CIEventView(text: AnnotatedString) { - Text(text, Modifier.padding(horizontal = 6.dp, vertical = 6.dp), style = MaterialTheme.typography.body1.copy(lineHeight = 22.sp), maxLines = 3) + Text(text, Modifier.padding(horizontal = 6.dp, vertical = 6.dp), style = MaterialTheme.typography.body1.copy(lineHeight = 22.sp), maxLines = 4) } @Preview/*( uiMode = Configuration.UI_MODE_NIGHT_YES, From 6a8a8f242aafb70e1981346e6513f8f72e27f6e5 Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Thu, 25 Apr 2024 13:20:52 +0400 Subject: [PATCH 22/25] ui: allow to delete any items (#4082) * ios: allow to delete any items * android * remove button android * remove button ios --- apps/ios/Shared/Views/Chat/ChatView.swift | 5 ++- apps/ios/SimpleXChat/ChatTypes.swift | 10 +++++ .../common/views/chat/item/ChatItemView.kt | 37 ++++++++++++++++--- 3 files changed, 45 insertions(+), 7 deletions(-) diff --git a/apps/ios/Shared/Views/Chat/ChatView.swift b/apps/ios/Shared/Views/Chat/ChatView.swift index 97ffd61116..5ec69412a6 100644 --- a/apps/ios/Shared/Views/Chat/ChatView.swift +++ b/apps/ios/Shared/Views/Chat/ChatView.swift @@ -827,6 +827,9 @@ struct ChatView: View { menu.append(deleteUIAction(ci)) } else if ci.mergeCategory != nil && ((range?.count ?? 0) > 1 || revealed) { menu.append(revealed ? shrinkUIAction() : expandUIAction()) + menu.append(deleteUIAction(ci)) + } else if ci.showLocalDelete { + menu.append(deleteUIAction(ci)) } return menu } @@ -1039,7 +1042,7 @@ struct ChatView: View { image: UIImage(systemName: "trash"), attributes: [.destructive] ) { _ in - if !revealed && ci.meta.itemDeleted != nil, + if !revealed, let currIndex = m.getChatItemIndex(ci), let ciCategory = ci.mergeCategory { let (prevHidden, _) = m.getPrevShownChatItem(currIndex, ciCategory) diff --git a/apps/ios/SimpleXChat/ChatTypes.swift b/apps/ios/SimpleXChat/ChatTypes.swift index d1f1fc06d1..24aca0dd18 100644 --- a/apps/ios/SimpleXChat/ChatTypes.swift +++ b/apps/ios/SimpleXChat/ChatTypes.swift @@ -2437,6 +2437,16 @@ public struct ChatItem: Identifiable, Decodable { } } + public var showLocalDelete: Bool { + switch content { + case .sndDirectE2EEInfo: return false + case .rcvDirectE2EEInfo: return false + case .sndGroupE2EEInfo: return false + case .rcvGroupE2EEInfo: return false + default: return true + } + } + public static func getSample (_ id: Int64, _ dir: CIDirection, _ ts: Date, _ text: String, _ status: CIStatus = .sndNew, quotedItem: CIQuote? = nil, file: CIFile? = nil, itemDeleted: CIDeleted? = nil, itemEdited: Bool = false, itemLive: Bool = false, deletable: Bool = true, editable: Bool = true) -> ChatItem { ChatItem( chatDir: dir, diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt index 427f34b2e5..c9aea2c6dd 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt @@ -175,6 +175,13 @@ fun ChatItemView( } } + @Composable + fun DeleteItemMenu() { + DefaultDropdownMenu(showMenu) { + DeleteItemAction(cItem, revealed, showMenu, questionText = deleteMessageQuestionText(), deleteMessage, deleteMessages) + } + } + @Composable fun MsgContentItemDropdownMenu() { val saveFileLauncher = rememberSaveFileLauncher(ciFile = cItem.file) @@ -305,10 +312,13 @@ fun ChatItemView( } else { ExpandItemAction(revealed, showMenu) } + DeleteItemAction(cItem, revealed, showMenu, questionText = deleteMessageQuestionText(), deleteMessage, deleteMessages) } } else -> { - showMenu.value = false + DefaultDropdownMenu(showMenu) { + DeleteItemAction(cItem, revealed, showMenu, questionText = deleteMessageQuestionText(), deleteMessage, deleteMessages) + } } } } @@ -356,6 +366,7 @@ fun ChatItemView( @Composable fun CallItem(status: CICallStatus, duration: Int) { CICallItemView(cInfo, cItem, status, duration, acceptCall) + DeleteItemMenu() } fun mergedGroupEventText(chatItem: ChatItem): String? { @@ -439,12 +450,22 @@ fun ChatItemView( is CIContent.RcvCall -> CallItem(c.status, c.duration) is CIContent.RcvIntegrityError -> if (developerTools) { IntegrityErrorItemView(c.msgError, cItem, cInfo.timedMessagesTTL) + DeleteItemMenu() } else { Box(Modifier.size(0.dp)) {} } - is CIContent.RcvDecryptionError -> CIRcvDecryptionError(c.msgDecryptError, c.msgCount, cInfo, cItem, updateContactStats = updateContactStats, updateMemberStats = updateMemberStats, syncContactConnection = syncContactConnection, syncMemberConnection = syncMemberConnection, findModelChat = findModelChat, findModelMember = findModelMember) - is CIContent.RcvGroupInvitation -> CIGroupInvitationView(cItem, c.groupInvitation, c.memberRole, joinGroup = joinGroup, chatIncognito = cInfo.incognito) - is CIContent.SndGroupInvitation -> CIGroupInvitationView(cItem, c.groupInvitation, c.memberRole, joinGroup = joinGroup, chatIncognito = cInfo.incognito) + is CIContent.RcvDecryptionError -> { + CIRcvDecryptionError(c.msgDecryptError, c.msgCount, cInfo, cItem, updateContactStats = updateContactStats, updateMemberStats = updateMemberStats, syncContactConnection = syncContactConnection, syncMemberConnection = syncMemberConnection, findModelChat = findModelChat, findModelMember = findModelMember) + DeleteItemMenu() + } + is CIContent.RcvGroupInvitation -> { + CIGroupInvitationView(cItem, c.groupInvitation, c.memberRole, joinGroup = joinGroup, chatIncognito = cInfo.incognito) + DeleteItemMenu() + } + is CIContent.SndGroupInvitation -> { + CIGroupInvitationView(cItem, c.groupInvitation, c.memberRole, joinGroup = joinGroup, chatIncognito = cInfo.incognito) + DeleteItemMenu() + } is CIContent.RcvDirectEventContent -> { EventItemView() MsgContentItemDropdownMenu() @@ -479,6 +500,7 @@ fun ChatItemView( is CIContent.RcvChatPreference -> { val ct = if (cInfo is ChatInfo.Direct) cInfo.contact else null CIFeaturePreferenceView(cItem, ct, c.feature, c.allowed, acceptFeature) + DeleteItemMenu() } is CIContent.SndChatPreference -> { CIChatFeatureView(cInfo, cItem, c.feature, MaterialTheme.colors.secondary, icon = c.feature.icon, revealed, showMenu = showMenu) @@ -507,7 +529,10 @@ fun ChatItemView( is CIContent.RcvDirectE2EEInfo -> DirectE2EEInfoText(c.e2eeInfo) is CIContent.SndGroupE2EEInfo -> E2EEInfoNoPQText() is CIContent.RcvGroupE2EEInfo -> E2EEInfoNoPQText() - is CIContent.InvalidJSON -> CIInvalidJSONView(c.json) + is CIContent.InvalidJSON -> { + CIInvalidJSONView(c.json) + DeleteItemMenu() + } } } @@ -574,7 +599,7 @@ fun DeleteItemAction( painterResource(MR.images.ic_delete), onClick = { showMenu.value = false - if (!revealed.value && cItem.meta.itemDeleted != null) { + if (!revealed.value) { val currIndex = chatModel.getChatItemIndexOrNull(cItem) val ciCategory = cItem.mergeCategory if (currIndex != null && ciCategory != null) { From a1093b0671ae5be8c00f6dd19124ac2660c5fbb6 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Thu, 25 Apr 2024 10:41:27 +0100 Subject: [PATCH 23/25] docs: update privacy policy (#4076) --- PRIVACY.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/PRIVACY.md b/PRIVACY.md index 3204fa1e53..ac355ac7f1 100644 --- a/PRIVACY.md +++ b/PRIVACY.md @@ -103,6 +103,8 @@ The cases when SimpleX Chat Ltd may share the data temporarily stored on the ser At the time of updating this document, we have never provided or have been requested the access to the preset relay servers or any information from the servers by any third parties. If we are ever requested to provide such access or information, we will follow the due legal process to limit any information shared with the third parties to the minimally required by law. +We will publish information we are legally allowed to share about such requests in the [Transparency reports](./docs/TRANSPARENCY.md). + ### Updates We will update this Privacy Policy as needed so that it is current, accurate, and as clear as possible. Your continued use of our software applications and preset relays infrastructure confirms your acceptance of our updated Privacy Policy. @@ -131,7 +133,7 @@ You accept the Conditions of Use of Software and Infrastructure ("Conditions") b **Traffic and device costs**. You are solely responsible for the traffic and device costs that you incur while using our Applications, and any associated taxes. -**Legal and acceptable usage**. You agree to use our Applications only for legal and acceptable purposes. You will not use (or assist others in using) our Applications in ways that: 1) violate or infringe the rights of Software users, SimpleX Chat Ltd, or others, including privacy, publicity, intellectual property, or other proprietary rights; 2) involve sending illegal or impermissible communications, e.g. spam. While we cannot access content or identify messages or groups, in some cases the links to the illegal or impermissible communications available via our Applications can be shared publicly on social media or websites. We reserve the right to remove such links from the preset servers and disrupt the conversations that send illegal content via our servers, whether they were reported by the users or discovered by our team. +**Legal usage**. You agree to use our Applications only for legal purposes. You will not use (or assist others in using) our Applications in ways that: 1) violate or infringe the rights of Software users, SimpleX Chat Ltd, or others, including privacy, publicity, intellectual property, or other proprietary rights; 2) involve sending illegal communications, e.g. spam. While we cannot access content or identify messages or groups, in some cases the links to the illegal communications available via our Applications can be shared publicly on social media or websites. We reserve the right to remove such links from the preset servers and disrupt the conversations that send illegal content via our servers, whether they were reported by the users or discovered by our team. **Damage to SimpleX Chat Ltd**. You must not (or assist others to) access, use, modify, distribute, transfer, or exploit our Applications in unauthorized manners, or in ways that harm Software users, SimpleX Chat Ltd, our Infrastructure, or any other systems. For example, you must not 1) access our Infrastructure or systems without authorization, in any way other than by using the Software; 2) disrupt the integrity or performance of our Infrastructure; 3) collect information about our users in any manner; or 4) sell, rent, or charge for our Infrastructure. This does not prohibit you from providing your own Infrastructure to others, whether free or for a fee, as long as you do not violate these Conditions and AGPLv3 license, including the requirement to publish any modifications of the relay server software. @@ -165,4 +167,4 @@ You accept the Conditions of Use of Software and Infrastructure ("Conditions") b **Ending these conditions**. You may end these Conditions with SimpleX Chat Ltd at any time by deleting our Applications from your devices and discontinuing use of our Infrastructure. The provisions related to Licenses, Disclaimers, Limitation of Liability, Resolving dispute, Availability, Changes to the conditions, Enforcing the conditions, and Ending these conditions will survive termination of your relationship with SimpleX Chat Ltd. -Updated February 24, 2024 +Updated April 24, 2024 From 20fa366231f68ecd8dc0ca0d0af2d5a4257731f1 Mon Sep 17 00:00:00 2001 From: Alexander Bondarenko <486682+dpwiz@users.noreply.github.com> Date: Thu, 25 Apr 2024 12:52:26 +0300 Subject: [PATCH 24/25] core: use contextless decompression (#4089) * core: use contextless decompression * fuse concatMap/map * nix * update simplexmq --------- Co-authored-by: Evgeny Poberezkin --- cabal.project | 2 +- scripts/nix/sha256map.nix | 2 +- src/Simplex/Chat/Protocol.hs | 5 ++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/cabal.project b/cabal.project index 6e8ae3302e..6c14023e17 100644 --- a/cabal.project +++ b/cabal.project @@ -12,7 +12,7 @@ constraints: zip +disable-bzip2 +disable-zstd source-repository-package type: git location: https://github.com/simplex-chat/simplexmq.git - tag: daa866f3331cf882f1030ae636f9e27a2498ca8b + tag: b931c1be3721f002747742d1e100c566966523f7 source-repository-package type: git diff --git a/scripts/nix/sha256map.nix b/scripts/nix/sha256map.nix index 4d29184ac0..253326900d 100644 --- a/scripts/nix/sha256map.nix +++ b/scripts/nix/sha256map.nix @@ -1,5 +1,5 @@ { - "https://github.com/simplex-chat/simplexmq.git"."daa866f3331cf882f1030ae636f9e27a2498ca8b" = "1bfzw8q8jgblpqh0vjvhs3ddyvgxrdpv18gy84yr6kmvssmdgs76"; + "https://github.com/simplex-chat/simplexmq.git"."b931c1be3721f002747742d1e100c566966523f7" = "1wbbazc2a5dkjggwiha5b4bya34hf44wl15930h2mhsbj9xmzvig"; "https://github.com/simplex-chat/hs-socks.git"."a30cc7a79a08d8108316094f8f2f82a0c5e1ac51" = "0yasvnr7g91k76mjkamvzab2kvlb1g5pspjyjn2fr6v83swjhj38"; "https://github.com/simplex-chat/direct-sqlcipher.git"."f814ee68b16a9447fbb467ccc8f29bdd3546bfd9" = "1ql13f4kfwkbaq7nygkxgw84213i0zm7c1a8hwvramayxl38dq5d"; "https://github.com/simplex-chat/sqlcipher-simple.git"."a46bd361a19376c5211f1058908fc0ae6bf42446" = "1z0r78d8f0812kxbgsm735qf6xx8lvaz27k1a0b4a2m0sshpd5gl"; diff --git a/src/Simplex/Chat/Protocol.hs b/src/Simplex/Chat/Protocol.hs index bfa8383974..8c5a9e1905 100644 --- a/src/Simplex/Chat/Protocol.hs +++ b/src/Simplex/Chat/Protocol.hs @@ -48,7 +48,7 @@ import Simplex.Chat.Types import Simplex.Chat.Types.Shared import Simplex.Chat.Types.Util import Simplex.Messaging.Agent.Protocol (VersionSMPA, pqdrSMPAgentVersion) -import Simplex.Messaging.Compression (compress1, decompressBatch) +import Simplex.Messaging.Compression (Compressed, compress1, decompress1) import Simplex.Messaging.Encoding import Simplex.Messaging.Encoding.String import Simplex.Messaging.Parsers (defaultJSON, dropPrefix, fromTextField_, fstToLower, parseAll, sumTypeJSON, taggedObjectJSON) @@ -570,8 +570,7 @@ parseChatMessages s = case B.head s of decodeCompressed :: ByteString -> [Either String AChatMessage] decodeCompressed s' = case smpDecode s' of Left e -> [Left e] - -- TODO v5.7 don't reserve multiple large buffers when decoding batches - Right compressed -> concatMap (either (pure . Left) parseChatMessages) . L.toList $ decompressBatch maxEncodedMsgLength compressed + Right (compressed :: L.NonEmpty Compressed) -> concatMap (either (pure . Left) parseChatMessages . decompress1) compressed compressedBatchMsgBody_ :: MsgBody -> ByteString compressedBatchMsgBody_ = markCompressedBatch . smpEncode . (L.:| []) . compress1 From 3eb88ab896ab3f53b111e1eb0cdeb150f626223f Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Thu, 25 Apr 2024 11:15:28 +0100 Subject: [PATCH 25/25] 5.7.0.4 (simplexmq 5.7.0.3) --- package.yaml | 2 +- simplex-chat.cabal | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.yaml b/package.yaml index c899587e16..f7e9260682 100644 --- a/package.yaml +++ b/package.yaml @@ -1,5 +1,5 @@ name: simplex-chat -version: 5.7.0.3 +version: 5.7.0.4 #synopsis: #description: homepage: https://github.com/simplex-chat/simplex-chat#readme diff --git a/simplex-chat.cabal b/simplex-chat.cabal index 5af23471a8..71f216b6f0 100644 --- a/simplex-chat.cabal +++ b/simplex-chat.cabal @@ -5,7 +5,7 @@ cabal-version: 1.12 -- see: https://github.com/sol/hpack name: simplex-chat -version: 5.7.0.3 +version: 5.7.0.4 category: Web, System, Services, Cryptography homepage: https://github.com/simplex-chat/simplex-chat#readme author: simplex.chat