Merge branch 'master' into master-android

This commit is contained in:
Evgeny Poberezkin
2024-12-03 18:52:41 +00:00
165 changed files with 8157 additions and 2049 deletions
@@ -332,6 +332,8 @@ class SimplexApp: Application(), LifecycleEventObserver {
NetworkObserver.shared.restartNetworkObserver()
}
override fun androidIsXiaomiDevice(): Boolean = setOf("xiaomi", "redmi", "poco").contains(Build.BRAND.lowercase())
@SuppressLint("SourceLockedOrientationActivity")
@Composable
override fun androidLockPortraitOrientation() {
@@ -10,6 +10,8 @@ import android.os.*
import android.os.SystemClock
import android.provider.Settings
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.CornerSize
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.*
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
@@ -462,7 +464,8 @@ class SimplexService: Service() {
},
confirmButton = {
TextButton(onClick = AlertManager.shared::hideAlert) { Text(stringResource(MR.strings.ok)) }
}
},
shape = RoundedCornerShape(corner = CornerSize(25.dp))
)
}
@@ -497,6 +500,12 @@ class SimplexService: Service() {
Modifier.padding(bottom = 8.dp)
)
Text(annotatedStringResource(MR.strings.turn_off_battery_optimization))
if (platform.androidIsXiaomiDevice() && (mode == NotificationsMode.PERIODIC || mode == NotificationsMode.SERVICE)) {
Text(annotatedStringResource(MR.strings.xiaomi_ignore_battery_optimization),
Modifier.padding(top = 8.dp)
)
}
}
},
dismissButton = {
@@ -504,7 +513,8 @@ class SimplexService: Service() {
},
confirmButton = {
TextButton(onClick = ignoreOptimization) { Text(stringResource(MR.strings.turn_off_battery_optimization_button)) }
}
},
shape = RoundedCornerShape(corner = CornerSize(25.dp))
)
}
@@ -546,7 +556,8 @@ class SimplexService: Service() {
},
confirmButton = {
TextButton(onClick = unrestrict) { Text(stringResource(MR.strings.turn_off_system_restriction_button)) }
}
},
shape = RoundedCornerShape(corner = CornerSize(25.dp))
)
}
@@ -573,7 +584,8 @@ class SimplexService: Service() {
},
confirmButton = {
TextButton(onClick = unrestrict) { Text(stringResource(MR.strings.turn_off_system_restriction_button)) }
}
},
shape = RoundedCornerShape(corner = CornerSize(25.dp))
)
val scope = rememberCoroutineScope()
DisposableEffect(Unit) {
@@ -617,13 +629,14 @@ class SimplexService: Service() {
},
confirmButton = {
TextButton(onClick = AlertManager.shared::hideAlert) { Text(stringResource(MR.strings.ok)) }
}
},
shape = RoundedCornerShape(corner = CornerSize(25.dp))
)
}
fun isBackgroundAllowed(): Boolean = isIgnoringBatteryOptimizations() && !isBackgroundRestricted()
fun isIgnoringBatteryOptimizations(): Boolean {
private fun isIgnoringBatteryOptimizations(): Boolean {
val powerManager = androidAppContext.getSystemService(Application.POWER_SERVICE) as PowerManager
return powerManager.isIgnoringBatteryOptimizations(androidAppContext.packageName)
}
@@ -0,0 +1,19 @@
package chat.simplex.common.views.usersettings.networkAndServers
import androidx.compose.foundation.ScrollState
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.verticalScroll
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
@Composable
actual fun ConditionsBox(modifier: Modifier, scrollState: ScrollState, content: @Composable() (BoxScope.() -> Unit)){
Box(
modifier = modifier
.verticalScroll(scrollState)
.padding(8.dp)
) {
content()
}
}
@@ -1467,6 +1467,7 @@ data class GroupInfo (
val groupId: Long,
override val localDisplayName: String,
val groupProfile: GroupProfile,
val businessChat: BusinessChatInfo? = null,
val fullGroupPreferences: FullGroupPreferences,
val membership: GroupMember,
val hostConnCustomUserProfileId: Long? = null,
@@ -1497,7 +1498,7 @@ data class GroupInfo (
override val image get() = groupProfile.image
override val localAlias get() = ""
val canEdit: Boolean
val isOwner: Boolean
get() = membership.memberRole == GroupMemberRole.Owner && membership.memberCurrent
val canDelete: Boolean
@@ -1543,6 +1544,18 @@ data class GroupProfile (
}
}
@Serializable
data class BusinessChatInfo (
val memberId: String,
val chatType: BusinessChatType
)
@Serializable
enum class BusinessChatType {
@SerialName("business") Business,
@SerialName("customer") Customer,
}
@Serializable
data class GroupMember (
val groupMemberId: Long,
@@ -894,8 +894,27 @@ object ChatController {
private suspend fun processSendMessageCmd(rh: Long?, cmd: CC): List<AChatItem>? {
val r = sendCmd(rh, cmd)
return when (r) {
is CR.NewChatItems -> r.chatItems
return when {
r is CR.NewChatItems -> r.chatItems
r is CR.ChatCmdError && r.chatError is ChatError.ChatErrorStore && r.chatError.storeError is StoreError.LargeMsg && cmd is CC.ApiSendMessages -> {
val mc = cmd.composedMessages.last().msgContent
AlertManager.shared.showAlertMsg(
generalGetString(MR.strings.maximum_message_size_title),
if (mc is MsgContent.MCImage || mc is MsgContent.MCVideo || mc is MsgContent.MCLink) {
generalGetString(MR.strings.maximum_message_size_reached_non_text)
} else {
generalGetString(MR.strings.maximum_message_size_reached_text)
}
)
null
}
r is CR.ChatCmdError && r.chatError is ChatError.ChatErrorStore && r.chatError.storeError is StoreError.LargeMsg && cmd is CC.ApiForwardChatItems -> {
AlertManager.shared.showAlertMsg(
generalGetString(MR.strings.maximum_message_size_title),
generalGetString(MR.strings.maximum_message_size_reached_forwarding)
)
null
}
else -> {
if (!(networkErrorAlert(r))) {
apiErrorAlert("processSendMessageCmd", generalGetString(MR.strings.error_sending_message), r)
@@ -943,7 +962,21 @@ object ChatController {
suspend fun apiUpdateChatItem(rh: Long?, type: ChatType, id: Long, itemId: Long, mc: MsgContent, live: Boolean = false): AChatItem? {
val r = sendCmd(rh, CC.ApiUpdateChatItem(type, id, itemId, mc, live))
if (r is CR.ChatItemUpdated) return r.chatItem
when {
r is CR.ChatItemUpdated -> return r.chatItem
r is CR.ChatCmdError && r.chatError is ChatError.ChatErrorStore && r.chatError.storeError is StoreError.LargeMsg -> {
AlertManager.shared.showAlertMsg(
generalGetString(MR.strings.maximum_message_size_title),
if (mc is MsgContent.MCImage || mc is MsgContent.MCVideo || mc is MsgContent.MCLink) {
generalGetString(MR.strings.maximum_message_size_reached_non_text)
} else {
generalGetString(MR.strings.maximum_message_size_reached_text)
}
)
return null
}
}
Log.e(TAG, "apiUpdateChatItem bad response: ${r.responseType} ${r.details}")
return null
}
@@ -2493,6 +2526,14 @@ object ChatController {
}
}
}
is CR.BusinessLinkConnecting -> {
if (!active(r.user)) return
withChats {
updateGroup(rhId, r.groupInfo)
removeChat(rhId, r.fromContact.id)
}
}
is CR.JoinedGroupMemberConnecting ->
if (active(r.user)) {
withChats {
@@ -4960,7 +5001,7 @@ enum class GroupFeature: Feature {
}
DirectMessages -> when(enabled) {
GroupFeatureEnabled.ON -> generalGetString(MR.strings.group_members_can_send_dms)
GroupFeatureEnabled.OFF -> generalGetString(MR.strings.direct_messages_are_prohibited_in_chat)
GroupFeatureEnabled.OFF -> generalGetString(MR.strings.direct_messages_are_prohibited)
}
FullDelete -> when(enabled) {
GroupFeatureEnabled.ON -> generalGetString(MR.strings.group_members_can_delete)
@@ -5406,7 +5447,6 @@ sealed class CR {
@Serializable @SerialName("sentInvitation") class SentInvitation(val user: UserRef, val connection: PendingContactConnection): CR()
@Serializable @SerialName("sentInvitationToContact") class SentInvitationToContact(val user: UserRef, val contact: Contact, val customUserProfile: Profile?): CR()
@Serializable @SerialName("contactAlreadyExists") class ContactAlreadyExists(val user: UserRef, val contact: Contact): CR()
@Serializable @SerialName("contactRequestAlreadyAccepted") class ContactRequestAlreadyAccepted(val user: UserRef, val contact: Contact): CR()
@Serializable @SerialName("contactDeleted") class ContactDeleted(val user: UserRef, val contact: Contact): CR()
@Serializable @SerialName("contactDeletedByContact") class ContactDeletedByContact(val user: UserRef, val contact: Contact): CR()
@Serializable @SerialName("chatCleared") class ChatCleared(val user: UserRef, val chatInfo: ChatInfo): CR()
@@ -5452,6 +5492,7 @@ sealed class CR {
@Serializable @SerialName("sentGroupInvitation") class SentGroupInvitation(val user: UserRef, val groupInfo: GroupInfo, val contact: Contact, val member: GroupMember): CR()
@Serializable @SerialName("userAcceptedGroupSent") class UserAcceptedGroupSent (val user: UserRef, val groupInfo: GroupInfo, val hostContact: Contact? = null): CR()
@Serializable @SerialName("groupLinkConnecting") class GroupLinkConnecting (val user: UserRef, val groupInfo: GroupInfo, val hostMember: GroupMember): CR()
@Serializable @SerialName("businessLinkConnecting") class BusinessLinkConnecting (val user: UserRef, val groupInfo: GroupInfo, val hostMember: GroupMember, val fromContact: Contact): CR()
@Serializable @SerialName("userDeletedMember") class UserDeletedMember(val user: UserRef, val groupInfo: GroupInfo, val member: GroupMember): CR()
@Serializable @SerialName("leftMemberUser") class LeftMemberUser(val user: UserRef, val groupInfo: GroupInfo): CR()
@Serializable @SerialName("groupMembers") class GroupMembers(val user: UserRef, val group: Group): CR()
@@ -5590,7 +5631,6 @@ sealed class CR {
is SentInvitation -> "sentInvitation"
is SentInvitationToContact -> "sentInvitationToContact"
is ContactAlreadyExists -> "contactAlreadyExists"
is ContactRequestAlreadyAccepted -> "contactRequestAlreadyAccepted"
is ContactDeleted -> "contactDeleted"
is ContactDeletedByContact -> "contactDeletedByContact"
is ChatCleared -> "chatCleared"
@@ -5633,6 +5673,7 @@ sealed class CR {
is SentGroupInvitation -> "sentGroupInvitation"
is UserAcceptedGroupSent -> "userAcceptedGroupSent"
is GroupLinkConnecting -> "groupLinkConnecting"
is BusinessLinkConnecting -> "businessLinkConnecting"
is UserDeletedMember -> "userDeletedMember"
is LeftMemberUser -> "leftMemberUser"
is GroupMembers -> "groupMembers"
@@ -5764,7 +5805,6 @@ sealed class CR {
is SentInvitation -> withUser(user, json.encodeToString(connection))
is SentInvitationToContact -> withUser(user, json.encodeToString(contact))
is ContactAlreadyExists -> withUser(user, json.encodeToString(contact))
is ContactRequestAlreadyAccepted -> withUser(user, json.encodeToString(contact))
is ContactDeleted -> withUser(user, json.encodeToString(contact))
is ContactDeletedByContact -> withUser(user, json.encodeToString(contact))
is ChatCleared -> withUser(user, json.encodeToString(chatInfo))
@@ -5807,6 +5847,7 @@ sealed class CR {
is SentGroupInvitation -> withUser(user, "groupInfo: $groupInfo\ncontact: $contact\nmember: $member")
is UserAcceptedGroupSent -> json.encodeToString(groupInfo)
is GroupLinkConnecting -> withUser(user, "groupInfo: $groupInfo\nhostMember: $hostMember")
is BusinessLinkConnecting -> withUser(user, "groupInfo: $groupInfo\nhostMember: $hostMember\nfromContact: $fromContact")
is UserDeletedMember -> withUser(user, "groupInfo: $groupInfo\nmember: $member")
is LeftMemberUser -> withUser(user, json.encodeToString(groupInfo))
is GroupMembers -> withUser(user, json.encodeToString(group))
@@ -6078,11 +6119,16 @@ class UserContactLinkRec(val connReqContact: String, val autoAccept: AutoAccept?
}
@Serializable
class AutoAccept(val acceptIncognito: Boolean, val autoReply: MsgContent?) {
class AutoAccept(val businessAddress: Boolean, val acceptIncognito: Boolean, val autoReply: MsgContent?) {
companion object {
fun cmdString(autoAccept: AutoAccept?): String {
if (autoAccept == null) return "off"
val s = "on" + if (autoAccept.acceptIncognito) " incognito=on" else ""
var s = "on"
if (autoAccept.acceptIncognito) {
s += " incognito=on"
} else if (autoAccept.businessAddress) {
s += " business"
}
val msg = autoAccept.autoReply ?: return s
return s + " " + msg.cmdString
}
@@ -6357,6 +6403,7 @@ sealed class StoreError {
is HostMemberIdNotFound -> "hostMemberIdNotFound"
is ContactNotFoundByFileId -> "contactNotFoundByFileId"
is NoGroupSndStatus -> "noGroupSndStatus"
is LargeMsg -> "largeMsg"
}
@Serializable @SerialName("duplicateName") object DuplicateName: StoreError()
@@ -6416,6 +6463,7 @@ sealed class StoreError {
@Serializable @SerialName("hostMemberIdNotFound") class HostMemberIdNotFound(val groupId: Long): StoreError()
@Serializable @SerialName("contactNotFoundByFileId") class ContactNotFoundByFileId(val fileId: Long): StoreError()
@Serializable @SerialName("noGroupSndStatus") class NoGroupSndStatus(val itemId: Long, val groupMemberId: Long): StoreError()
@Serializable @SerialName("largeMsg") object LargeMsg: StoreError()
}
@Serializable
@@ -26,6 +26,7 @@ interface PlatformInterface {
fun androidPictureInPictureAllowed(): Boolean = true
fun androidCallEnded() {}
fun androidRestartNetworkObserver() {}
fun androidIsXiaomiDevice(): Boolean = false
val androidApiLevel: Int? get() = null
@Composable fun androidLockPortraitOrientation() {}
suspend fun androidAskToAllowBackgroundCalls(): Boolean = true
@@ -412,6 +412,7 @@ fun ComposeView(
val cInfo = chat.chatInfo
val cs = composeState.value
var sent: List<ChatItem>?
var lastMessageFailedToSend: ComposeState? = null
val msgText = text ?: cs.message
fun sending() {
@@ -461,6 +462,19 @@ fun ComposeView(
}
}
fun constructFailedMessage(cs: ComposeState): ComposeState {
val preview = when (cs.preview) {
is ComposePreview.MediaPreview -> {
ComposePreview.MediaPreview(
if (cs.preview.images.isNotEmpty()) listOf(cs.preview.images.last()) else emptyList(),
if (cs.preview.content.isNotEmpty()) listOf(cs.preview.content.last()) else emptyList()
)
}
else -> cs.preview
}
return cs.copy(inProgress = false, preview = preview)
}
fun updateMsgContent(msgContent: MsgContent): MsgContent {
return when (msgContent) {
is MsgContent.MCText -> checkLinkPreview()
@@ -517,6 +531,9 @@ fun ComposeView(
sent = null
} else if (cs.contextItem is ComposeContextItem.ForwardingItems) {
sent = forwardItem(chat.remoteHostId, cs.contextItem.chatItems, cs.contextItem.fromChatInfo, ttl = ttl)
if (sent == null) {
lastMessageFailedToSend = constructFailedMessage(cs)
}
if (cs.message.isNotEmpty()) {
sent?.mapIndexed { index, message ->
if (index == sent!!.lastIndex) {
@@ -531,6 +548,7 @@ fun ComposeView(
val ei = cs.contextItem.chatItem
val updatedMessage = updateMessage(ei, chat, live)
sent = if (updatedMessage != null) listOf(updatedMessage) else null
lastMessageFailedToSend = if (updatedMessage == null) constructFailedMessage(cs) else null
} else if (liveMessage != null && liveMessage.sent) {
val updatedMessage = updateMessage(liveMessage.chatItem, chat, live)
sent = if (updatedMessage != null) listOf(updatedMessage) else null
@@ -631,19 +649,21 @@ fun ComposeView(
ttl = ttl
)
sent = if (sendResult != null) listOf(sendResult) else null
}
if (sent == null &&
(cs.preview is ComposePreview.MediaPreview ||
cs.preview is ComposePreview.FilePreview ||
cs.preview is ComposePreview.VoicePreview)
) {
val sendResult = send(chat, MsgContent.MCText(msgText), quotedItemId, null, live, ttl)
sent = if (sendResult != null) listOf(sendResult) else null
if (sent == null && index == msgs.lastIndex && cs.liveMessage == null) {
constructFailedMessage(cs)
// it's the last message in the series so if it fails, restore it in ComposeView for editing
lastMessageFailedToSend = constructFailedMessage(cs)
}
}
}
val wasForwarding = cs.forwarding
val forwardingFromChatId = (cs.contextItem as? ComposeContextItem.ForwardingItems)?.fromChatInfo?.id
clearState(live)
val lastFailed = lastMessageFailedToSend
if (lastFailed == null) {
clearState(live)
} else {
composeState.value = lastFailed
}
val draft = chatModel.draft.value
if (wasForwarding && chatModel.draftChatId.value == chat.chatInfo.id && forwardingFromChatId != chat.chatInfo.id && draft != null) {
composeState.value = draft
@@ -33,6 +33,7 @@ import chat.simplex.common.views.usersettings.SettingsActionItem
import chat.simplex.common.model.GroupInfo
import chat.simplex.common.platform.*
import chat.simplex.res.MR
import dev.icerock.moko.resources.StringResource
@Composable
fun AddGroupMembersView(rhId: Long?, groupInfo: GroupInfo, creatingGroup: Boolean = false, chatModel: ChatModel, close: () -> Unit) {
@@ -126,7 +127,8 @@ fun AddGroupMembersLayout(
tint = MaterialTheme.colors.secondary,
modifier = Modifier.padding(end = 10.dp).size(20.dp)
)
Text(generalGetString(MR.strings.group_main_profile_sent), textAlign = TextAlign.Center, style = MaterialTheme.typography.body2)
val textId = if (groupInfo.businessChat == null) MR.strings.group_main_profile_sent else MR.strings.chat_main_profile_sent
Text(generalGetString(textId), textAlign = TextAlign.Center, style = MaterialTheme.typography.body2)
}
}
@@ -168,7 +170,8 @@ fun AddGroupMembersLayout(
if (creatingGroup && selectedContacts.isEmpty()) {
SkipInvitingButton(close)
} else {
InviteMembersButton(inviteMembers, disabled = selectedContacts.isEmpty() || !allowModifyMembers)
val titleId = if (groupInfo.businessChat == null) MR.strings.invite_to_group_button else MR.strings.invite_to_chat_button
InviteMembersButton(titleId, inviteMembers, disabled = selectedContacts.isEmpty() || !allowModifyMembers)
}
}
SectionCustomFooter {
@@ -220,10 +223,10 @@ private fun RoleSelectionRow(groupInfo: GroupInfo, selectedRole: MutableState<Gr
}
@Composable
fun InviteMembersButton(onClick: () -> Unit, disabled: Boolean) {
fun InviteMembersButton(titleId: StringResource, onClick: () -> Unit, disabled: Boolean) {
SettingsActionItem(
painterResource(MR.images.ic_check),
stringResource(MR.strings.invite_to_group_button),
stringResource(titleId),
click = onClick,
textColor = MaterialTheme.colors.primary,
iconColor = MaterialTheme.colors.primary,
@@ -36,6 +36,7 @@ import chat.simplex.common.views.chat.*
import chat.simplex.common.views.chat.item.ItemAction
import chat.simplex.common.views.chatlist.*
import chat.simplex.res.MR
import dev.icerock.moko.resources.StringResource
import kotlinx.coroutines.launch
const val SMALL_GROUPS_RCPS_MEM_LIMIT: Int = 20
@@ -122,12 +123,18 @@ fun ModalData.GroupChatInfoView(chatModel: ChatModel, rhId: Long?, chatId: Strin
fun deleteGroupDialog(chat: Chat, groupInfo: GroupInfo, chatModel: ChatModel, close: (() -> Unit)? = null) {
val chatInfo = chat.chatInfo
val alertTextKey =
if (groupInfo.membership.memberCurrent) MR.strings.delete_group_for_all_members_cannot_undo_warning
else MR.strings.delete_group_for_self_cannot_undo_warning
val titleId = if (groupInfo.businessChat == null) MR.strings.delete_group_question else MR.strings.delete_chat_question
val messageId =
if (groupInfo.businessChat == null) {
if (groupInfo.membership.memberCurrent) MR.strings.delete_group_for_all_members_cannot_undo_warning
else MR.strings.delete_group_for_self_cannot_undo_warning
} else {
if (groupInfo.membership.memberCurrent) MR.strings.delete_chat_for_all_members_cannot_undo_warning
else MR.strings.delete_chat_for_self_cannot_undo_warning
}
AlertManager.shared.showAlertDialog(
title = generalGetString(MR.strings.delete_group_question),
text = generalGetString(alertTextKey),
title = generalGetString(titleId),
text = generalGetString(messageId),
confirmText = generalGetString(MR.strings.delete_verb),
onConfirm = {
withBGApi {
@@ -150,9 +157,14 @@ fun deleteGroupDialog(chat: Chat, groupInfo: GroupInfo, chatModel: ChatModel, cl
}
fun leaveGroupDialog(rhId: Long?, groupInfo: GroupInfo, chatModel: ChatModel, close: (() -> Unit)? = null) {
val titleId = if (groupInfo.businessChat == null) MR.strings.leave_group_question else MR.strings.leave_chat_question
val messageId = if (groupInfo.businessChat == null)
MR.strings.you_will_stop_receiving_messages_from_this_group_chat_history_will_be_preserved
else
MR.strings.you_will_stop_receiving_messages_from_this_chat_chat_history_will_be_preserved
AlertManager.shared.showAlertDialog(
title = generalGetString(MR.strings.leave_group_question),
text = generalGetString(MR.strings.you_will_stop_receiving_messages_from_this_group_chat_history_will_be_preserved),
title = generalGetString(titleId),
text = generalGetString(messageId),
confirmText = generalGetString(MR.strings.leave_group_button),
onConfirm = {
withLongRunningApi(60_000) {
@@ -165,9 +177,13 @@ fun leaveGroupDialog(rhId: Long?, groupInfo: GroupInfo, chatModel: ChatModel, cl
}
private fun removeMemberAlert(rhId: Long?, groupInfo: GroupInfo, mem: GroupMember) {
val messageId = if (groupInfo.businessChat == null)
MR.strings.member_will_be_removed_from_group_cannot_be_undone
else
MR.strings.member_will_be_removed_from_chat_cannot_be_undone
AlertManager.shared.showAlertDialog(
title = generalGetString(MR.strings.button_remove_member_question),
text = generalGetString(MR.strings.member_will_be_removed_from_group_cannot_be_undone),
text = generalGetString(messageId),
confirmText = generalGetString(MR.strings.remove_member_confirmation),
onConfirm = {
withBGApi {
@@ -328,13 +344,14 @@ fun ModalData.GroupChatInfoLayout(
SectionSpacer()
SectionView {
if (groupInfo.canEdit) {
if (groupInfo.isOwner && groupInfo.businessChat?.chatType == null) {
EditGroupProfileButton(editGroupProfile)
}
if (groupInfo.groupProfile.description != null || groupInfo.canEdit) {
if (groupInfo.groupProfile.description != null || (groupInfo.isOwner && groupInfo.businessChat?.chatType == null)) {
AddOrEditWelcomeMessage(groupInfo.groupProfile.description, addOrEditWelcomeMessage)
}
GroupPreferencesButton(openPreferences)
val prefsTitleId = if (groupInfo.businessChat == null) MR.strings.group_preferences else MR.strings.chat_preferences
GroupPreferencesButton(prefsTitleId, openPreferences)
if (members.filter { it.memberCurrent }.size <= SMALL_GROUPS_RCPS_MEM_LIMIT) {
SendReceiptsOption(currentUser, sendReceipts, setSendReceipts)
} else {
@@ -351,19 +368,27 @@ fun ModalData.GroupChatInfoLayout(
}
}
}
SectionTextFooter(stringResource(MR.strings.only_group_owners_can_change_prefs))
val footerId = if (groupInfo.businessChat == null) MR.strings.only_group_owners_can_change_prefs else MR.strings.only_chat_owners_can_change_prefs
SectionTextFooter(stringResource(footerId))
SectionDividerSpaced(maxTopPadding = true)
SectionView(title = String.format(generalGetString(MR.strings.group_info_section_title_num_members), members.count() + 1)) {
if (groupInfo.canAddMembers) {
if (groupLink == null) {
CreateGroupLinkButton(manageGroupLink)
} else {
GroupLinkButton(manageGroupLink)
if (groupInfo.businessChat == null) {
if (groupLink == null) {
CreateGroupLinkButton(manageGroupLink)
} else {
GroupLinkButton(manageGroupLink)
}
}
val onAddMembersClick = if (chat.chatInfo.incognito) ::cantInviteIncognitoAlert else addMembers
val tint = if (chat.chatInfo.incognito) MaterialTheme.colors.secondary else MaterialTheme.colors.primary
AddMembersButton(tint, onAddMembersClick)
val addMembersTitleId = when (groupInfo.businessChat?.chatType) {
BusinessChatType.Customer -> MR.strings.button_add_team_members
BusinessChatType.Business -> MR.strings.button_add_friends
null -> MR.strings.button_add_members
}
AddMembersButton(addMembersTitleId, tint, onAddMembersClick)
}
if (members.size > 8) {
SectionItemView(padding = PaddingValues(start = 14.dp, end = DEFAULT_PADDING_HALF)) {
@@ -388,10 +413,12 @@ fun ModalData.GroupChatInfoLayout(
SectionView {
ClearChatButton(clearChat)
if (groupInfo.canDelete) {
DeleteGroupButton(deleteGroup)
val titleId = if (groupInfo.businessChat == null) MR.strings.button_delete_group else MR.strings.button_delete_chat
DeleteGroupButton(titleId, deleteGroup)
}
if (groupInfo.membership.memberCurrent) {
LeaveGroupButton(leaveGroup)
val titleId = if (groupInfo.businessChat == null) MR.strings.button_leave_group else MR.strings.button_leave_chat
LeaveGroupButton(titleId, leaveGroup)
}
}
@@ -439,10 +466,10 @@ private fun GroupChatInfoHeader(cInfo: ChatInfo) {
}
@Composable
private fun GroupPreferencesButton(onClick: () -> Unit) {
private fun GroupPreferencesButton(titleId: StringResource, onClick: () -> Unit) {
SettingsActionItem(
painterResource(MR.images.ic_toggle_on),
stringResource(MR.strings.group_preferences),
stringResource(titleId),
click = onClick
)
}
@@ -479,10 +506,10 @@ fun SendReceiptsOptionDisabled() {
}
@Composable
private fun AddMembersButton(tint: Color = MaterialTheme.colors.primary, onClick: () -> Unit) {
private fun AddMembersButton(titleId: StringResource, tint: Color = MaterialTheme.colors.primary, onClick: () -> Unit) {
SettingsActionItem(
painterResource(MR.images.ic_add),
stringResource(MR.strings.button_add_members),
stringResource(titleId),
onClick,
iconColor = tint,
textColor = tint
@@ -646,10 +673,10 @@ private fun AddOrEditWelcomeMessage(welcomeMessage: String?, onClick: () -> Unit
}
@Composable
private fun LeaveGroupButton(onClick: () -> Unit) {
private fun LeaveGroupButton(titleId: StringResource, onClick: () -> Unit) {
SettingsActionItem(
painterResource(MR.images.ic_logout),
stringResource(MR.strings.button_leave_group),
stringResource(titleId),
onClick,
iconColor = Color.Red,
textColor = Color.Red
@@ -657,10 +684,10 @@ private fun LeaveGroupButton(onClick: () -> Unit) {
}
@Composable
private fun DeleteGroupButton(onClick: () -> Unit) {
private fun DeleteGroupButton(titleId: StringResource, onClick: () -> Unit) {
SettingsActionItem(
painterResource(MR.images.ic_delete),
stringResource(MR.strings.button_delete_group),
stringResource(titleId),
onClick,
iconColor = Color.Red,
textColor = Color.Red
@@ -38,6 +38,7 @@ import chat.simplex.common.model.GroupInfo
import chat.simplex.common.platform.*
import chat.simplex.common.views.chatlist.openLoadedChat
import chat.simplex.res.MR
import dev.icerock.moko.resources.StringResource
import kotlinx.datetime.Clock
@Composable
@@ -104,7 +105,7 @@ fun GroupMemberInfoView(
if (it == newRole.value) return@GroupMemberInfoLayout
val prevValue = newRole.value
newRole.value = it
updateMemberRoleDialog(it, member, onDismiss = {
updateMemberRoleDialog(it, groupInfo, member, onDismiss = {
newRole.value = prevValue
}) {
withBGApi {
@@ -211,9 +212,13 @@ fun GroupMemberInfoView(
}
fun removeMemberDialog(rhId: Long?, groupInfo: GroupInfo, member: GroupMember, chatModel: ChatModel, close: (() -> Unit)? = null) {
val messageId = if (groupInfo.businessChat == null)
MR.strings.member_will_be_removed_from_group_cannot_be_undone
else
MR.strings.member_will_be_removed_from_chat_cannot_be_undone
AlertManager.shared.showAlertDialog(
title = generalGetString(MR.strings.button_remove_member),
text = generalGetString(MR.strings.member_will_be_removed_from_group_cannot_be_undone),
text = generalGetString(messageId),
confirmText = generalGetString(MR.strings.remove_member_confirmation),
onConfirm = {
withBGApi {
@@ -346,14 +351,15 @@ fun GroupMemberInfoLayout(
showSendMessageToEnableCallsAlert()
})
} else { // no known contact chat && directMessages are off
val messageId = if (groupInfo.businessChat == null) MR.strings.direct_messages_are_prohibited_in_group else MR.strings.direct_messages_are_prohibited_in_chat
InfoViewActionButton(modifier = Modifier.fillMaxWidth(0.33f), painterResource(MR.images.ic_chat_bubble), generalGetString(MR.strings.info_view_message_button), disabled = false, disabledLook = true, onClick = {
showDirectMessagesProhibitedAlert(generalGetString(MR.strings.cant_send_message_to_member_alert_title))
showDirectMessagesProhibitedAlert(generalGetString(MR.strings.cant_send_message_to_member_alert_title), messageId)
})
InfoViewActionButton(modifier = Modifier.fillMaxWidth(0.5f), painterResource(MR.images.ic_call), generalGetString(MR.strings.info_view_call_button), disabled = false, disabledLook = true, onClick = {
showDirectMessagesProhibitedAlert(generalGetString(MR.strings.cant_call_member_alert_title))
showDirectMessagesProhibitedAlert(generalGetString(MR.strings.cant_call_member_alert_title), messageId)
})
InfoViewActionButton(modifier = Modifier.fillMaxWidth(1f), painterResource(MR.images.ic_videocam), generalGetString(MR.strings.info_view_video_button), disabled = false, disabledLook = true, onClick = {
showDirectMessagesProhibitedAlert(generalGetString(MR.strings.cant_call_member_alert_title))
showDirectMessagesProhibitedAlert(generalGetString(MR.strings.cant_call_member_alert_title), messageId)
})
}
}
@@ -394,7 +400,8 @@ fun GroupMemberInfoLayout(
}
SectionView(title = stringResource(MR.strings.member_info_section_title_member)) {
InfoRow(stringResource(MR.strings.info_row_group), groupInfo.displayName)
val titleId = if (groupInfo.businessChat == null) MR.strings.info_row_group else MR.strings.info_row_chat
InfoRow(stringResource(titleId), groupInfo.displayName)
val roles = remember { member.canChangeRoleTo(groupInfo) }
if (roles != null) {
RoleSelectionRow(roles, newRole, onRoleSelected)
@@ -470,10 +477,10 @@ private fun showSendMessageToEnableCallsAlert() {
)
}
private fun showDirectMessagesProhibitedAlert(title: String) {
private fun showDirectMessagesProhibitedAlert(title: String, messageId: StringResource) {
AlertManager.shared.showAlertMsg(
title = title,
text = generalGetString(MR.strings.direct_messages_are_prohibited_in_chat)
text = generalGetString(messageId)
)
}
@@ -635,15 +642,19 @@ fun MemberProfileImage(
private fun updateMemberRoleDialog(
newRole: GroupMemberRole,
groupInfo: GroupInfo,
member: GroupMember,
onDismiss: () -> Unit,
onConfirm: () -> Unit
) {
AlertManager.shared.showAlertDialog(
title = generalGetString(MR.strings.change_member_role_question),
text = if (member.memberCurrent)
String.format(generalGetString(MR.strings.member_role_will_be_changed_with_notification), newRole.text)
else
text = if (member.memberCurrent) {
if (groupInfo.businessChat == null)
String.format(generalGetString(MR.strings.member_role_will_be_changed_with_notification), newRole.text)
else
String.format(generalGetString(MR.strings.member_role_will_be_changed_with_notification_chat), newRole.text)
} else
String.format(generalGetString(MR.strings.member_role_will_be_changed_with_invitation), newRole.text),
confirmText = generalGetString(MR.strings.change_verb),
onDismiss = onDismiss,
@@ -6,12 +6,10 @@ import SectionDividerSpaced
import SectionItemView
import SectionTextFooter
import SectionView
import androidx.compose.foundation.layout.*
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.runtime.*
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Modifier
import dev.icerock.moko.resources.compose.stringResource
import chat.simplex.common.ui.theme.*
import chat.simplex.common.views.helpers.*
@@ -20,7 +18,6 @@ import chat.simplex.common.model.*
import chat.simplex.common.model.ChatModel.withChats
import chat.simplex.common.platform.ColumnWithScrollBar
import chat.simplex.res.MR
import dev.icerock.moko.resources.compose.painterResource
private val featureRoles: List<Pair<GroupMemberRole?, String>> = listOf(
null to generalGetString(MR.strings.feature_roles_all_members),
@@ -83,7 +80,8 @@ private fun GroupPreferencesLayout(
savePrefs: () -> Unit,
) {
ColumnWithScrollBar {
AppBarTitle(stringResource(MR.strings.group_preferences))
val titleId = if (groupInfo.businessChat == null) MR.strings.group_preferences else MR.strings.chat_preferences
AppBarTitle(stringResource(titleId))
val timedMessages = remember(preferences) { mutableStateOf(preferences.timedMessages.enable) }
val onTTLUpdated = { ttl: Int? ->
applyPrefs(preferences.copy(timedMessages = preferences.timedMessages.copy(ttl = ttl)))
@@ -136,7 +134,7 @@ private fun GroupPreferencesLayout(
FeatureSection(GroupFeature.History, enableHistory, null, groupInfo, preferences, onTTLUpdated) { enable, _ ->
applyPrefs(preferences.copy(history = GroupPreference(enable = enable)))
}
if (groupInfo.canEdit) {
if (groupInfo.isOwner) {
SectionDividerSpaced(maxTopPadding = true, maxBottomPadding = false)
ResetSaveButtons(
reset = reset,
@@ -163,12 +161,12 @@ private fun FeatureSection(
val icon = if (on) feature.iconFilled() else feature.icon
val iconTint = if (on) SimplexGreen else MaterialTheme.colors.secondary
val timedOn = feature == GroupFeature.TimedMessages && enableFeature.value == GroupFeatureEnabled.ON
if (groupInfo.canEdit) {
if (groupInfo.isOwner) {
PreferenceToggleWithIcon(
feature.text,
icon,
iconTint,
enableFeature.value == GroupFeatureEnabled.ON,
checked = enableFeature.value == GroupFeatureEnabled.ON,
) { checked ->
onSelected(if (checked) GroupFeatureEnabled.ON else GroupFeatureEnabled.OFF, enableForRole?.value)
}
@@ -214,7 +212,7 @@ private fun FeatureSection(
onSelected(enableFeature.value, null)
}
}
SectionTextFooter(feature.enableDescription(enableFeature.value, groupInfo.canEdit))
SectionTextFooter(feature.enableDescription(enableFeature.value, groupInfo.isOwner))
}
@Composable
@@ -7,9 +7,7 @@ import SectionTextFooter
import SectionView
import TextIconSpaced
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.selection.SelectionContainer
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.*
import androidx.compose.runtime.*
import androidx.compose.runtime.saveable.rememberSaveable
@@ -32,7 +30,6 @@ import chat.simplex.common.model.ChatModel.withChats
import chat.simplex.common.model.GroupInfo
import chat.simplex.common.platform.ColumnWithScrollBar
import chat.simplex.common.platform.chatJsonLength
import chat.simplex.common.ui.theme.DEFAULT_PADDING_HALF
import chat.simplex.res.MR
import kotlinx.coroutines.delay
@@ -99,7 +96,7 @@ private fun GroupWelcomeLayout(
val editMode = remember { mutableStateOf(true) }
AppBarTitle(stringResource(MR.strings.group_welcome_title))
val wt = rememberSaveable { welcomeText }
if (groupInfo.canEdit) {
if (groupInfo.isOwner && groupInfo.businessChat?.chatType == null) {
if (editMode.value) {
val focusRequester = remember { FocusRequester() }
TextEditor(
@@ -121,9 +121,33 @@ fun ChatItemView(
cItem.reactions.forEach { r ->
val showReactionMenu = remember { mutableStateOf(false) }
val reactionMembers = remember { mutableStateOf(emptyList<MemberReaction>()) }
val interactionSource = remember { MutableInteractionSource() }
val enterInteraction = remember { HoverInteraction.Enter() }
KeyChangeEffect(highlighted.value) {
if (highlighted.value) {
interactionSource.emit(enterInteraction)
} else {
interactionSource.emit(HoverInteraction.Exit(enterInteraction))
}
}
var modifier = Modifier.padding(horizontal = 5.dp, vertical = 2.dp).clip(RoundedCornerShape(8.dp))
if (cInfo.featureEnabled(ChatFeature.Reactions)) {
fun showReactionsMenu() {
if (cInfo is ChatInfo.Group) {
withBGApi {
try {
val members = controller.apiGetReactionMembers(rhId, cInfo.groupInfo.groupId, cItem.id, r.reaction)
if (members != null) {
showReactionMenu.value = true
reactionMembers.value = members
}
} catch (e: Exception) {
Log.d(TAG, "hatItemView ChatItemReactions onLongClick: unexpected exception: ${e.stackTraceToString()}")
}
}
}
}
modifier = modifier
.combinedClickable(
onClick = {
@@ -132,21 +156,12 @@ fun ChatItemView(
}
},
onLongClick = {
if (cInfo is ChatInfo.Group) {
withBGApi {
try {
val members = controller.apiGetReactionMembers(rhId, cInfo.groupInfo.groupId, cItem.id, r.reaction)
if (members != null) {
showReactionMenu.value = true
reactionMembers.value = members
}
} catch (e: Exception) {
Log.d(TAG, "hatItemView ChatItemReactions onLongClick: unexpected exception: ${e.stackTraceToString()}")
}
}
}
}
showReactionsMenu()
},
interactionSource = interactionSource,
indication = LocalIndication.current
)
.onRightClick { showReactionsMenu() }
}
Row(modifier.padding(2.dp), verticalAlignment = Alignment.CenterVertically) {
ReactionIcon(r.reaction.text, fontSize = 12.sp)
@@ -23,7 +23,7 @@ import chat.simplex.common.platform.*
import chat.simplex.common.ui.theme.*
import chat.simplex.common.views.helpers.*
import chat.simplex.res.MR
import kotlin.math.min
import kotlin.math.ceil
@Composable
fun FramedItemView(
@@ -330,23 +330,16 @@ const val CHAT_IMAGE_LAYOUT_ID = "chatImage"
const val CHAT_BUBBLE_LAYOUT_ID = "chatBubble"
const val CHAT_COMPOSE_LAYOUT_ID = "chatCompose"
const val CONSOLE_COMPOSE_LAYOUT_ID = "consoleCompose"
/**
* Equal to [androidx.compose.ui.unit.Constraints.MaxFocusMask], which is 0x3FFFF - 1
* Other values make a crash `java.lang.IllegalArgumentException: Can't represent a width of 123456 and height of 9909 in Constraints`
* See [androidx.compose.ui.unit.Constraints.createConstraints]
* */
const val MAX_SAFE_WIDTH = 0x3FFFF - 1
/**
* Limiting max value for height + width in order to not crash the app, see [androidx.compose.ui.unit.Constraints.createConstraints]
* */
private fun maxSafeHeight(width: Int) = when { // width bits + height bits should be <= 31
width < 0x1FFF /*MaxNonFocusMask*/ -> 0x3FFFF - 1 /* MaxFocusMask */ // 13 bits width + 18 bits height
width < 0x7FFF /*MinNonFocusMask*/ -> 0xFFFF - 1 /* MinFocusMask */ // 15 bits width + 16 bits height
width < 0xFFFF /*MinFocusMask*/ -> 0x7FFF - 1 /* MinFocusMask */ // 16 bits width + 15 bits height
width < 0x3FFFF /*MaxFocusMask*/ -> 0x1FFF - 1 /* MaxNonFocusMask */ // 18 bits width + 13 bits height
else -> 0x1FFF // shouldn't happen since width is limited already
}
* Compose shows "Can't represent a width of ... and height ... in Constraints" even when using built-in method for measuring max
* available size. It seems like padding around such layout prevents showing them in parent layout when such child layouts are placed.
* So calculating the expected padding here based on the values Compose printed in the exception (removing some pixels from
* [Constraints.fitPrioritizingHeight] result makes it working well)
*/
private fun horizontalPaddingAroundCustomLayouts(density: Float): Int =
// currently, it's 18. Doubling it just to cover possible changes in the future
36 * ceil(density).toInt()
@Composable
fun PriorityLayout(
@@ -365,11 +358,15 @@ fun PriorityLayout(
if (it.layoutId == priorityLayoutId)
imagePlaceable!!
else
it.measure(constraints.copy(maxWidth = imagePlaceable?.width ?: min(MAX_SAFE_WIDTH, constraints.maxWidth))) }
it.measure(constraints.copy(maxWidth = imagePlaceable?.width ?: constraints.maxWidth)) }
// Limit width for every other element to width of important element and height for a sum of all elements.
val width = imagePlaceable?.measuredWidth ?: min(MAX_SAFE_WIDTH, placeables.maxOf { it.width })
val height = minOf(maxSafeHeight(width), placeables.sumOf { it.height })
layout(width, height) {
val width = imagePlaceable?.measuredWidth ?: placeables.maxOf { it.width }
val height = placeables.sumOf { it.height }
val adjustedConstraints = Constraints.fitPrioritizingHeight(constraints.minWidth, width, constraints.minHeight, height)
layout(
if (width > adjustedConstraints.maxWidth) adjustedConstraints.maxWidth - horizontalPaddingAroundCustomLayouts(density) else adjustedConstraints.maxWidth,
adjustedConstraints.maxHeight
) {
var y = 0
placeables.forEach {
it.place(0, y)
@@ -396,10 +393,14 @@ fun DependentLayout(
if (it.layoutId == mainLayoutId)
mainPlaceable!!
else
it.measure(constraints.copy(minWidth = mainPlaceable?.width ?: 0, maxWidth = min(MAX_SAFE_WIDTH, constraints.maxWidth))) }
val width = mainPlaceable?.measuredWidth ?: min(MAX_SAFE_WIDTH, placeables.maxOf { it.width })
val height = minOf(maxSafeHeight(width), placeables.sumOf { it.height })
layout(width, height) {
it.measure(constraints.copy(minWidth = mainPlaceable?.width ?: 0, maxWidth = constraints.maxWidth)) }
val width = mainPlaceable?.measuredWidth ?: placeables.maxOf { it.width }
val height = placeables.sumOf { it.height }
val adjustedConstraints = Constraints.fitPrioritizingHeight(constraints.minWidth, width, constraints.minHeight, height)
layout(
if (width > adjustedConstraints.maxWidth) adjustedConstraints.maxWidth - horizontalPaddingAroundCustomLayouts(density) else adjustedConstraints.maxWidth,
adjustedConstraints.maxHeight
) {
var y = 0
placeables.forEach {
it.place(0, y)
@@ -525,6 +525,7 @@ fun deleteChatDatabaseFilesAndState() {
wallpapersDir.mkdirs()
DatabaseUtils.ksDatabasePassword.remove()
appPrefs.newDatabaseInitialized.set(false)
chatModel.desktopOnboardingRandomPassword.value = false
controller.appPrefs.storeDBPassphrase.set(true)
controller.ctrl = null
@@ -719,13 +720,16 @@ private fun deleteChatAlert(onConfirm: () -> Unit) {
}
private suspend fun deleteChat(m: ChatModel, progressIndicator: MutableState<Boolean>) {
if (!DatabaseUtils.hasAtLeastOneDatabase(dataDir.absolutePath)) {
return
}
progressIndicator.value = true
try {
deleteChatAsync(m)
operationEnded(m, progressIndicator) {
AlertManager.shared.showAlertMsg(generalGetString(MR.strings.chat_database_deleted), generalGetString(MR.strings.restart_the_app_to_create_a_new_chat_profile))
}
} catch (e: Error) {
} catch (e: Throwable) {
operationEnded(m, progressIndicator) {
AlertManager.shared.showAlertMsg(generalGetString(MR.strings.error_deleting_database), e.toString())
}
@@ -17,6 +17,7 @@ import androidx.compose.ui.graphics.*
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.InspectableValue
import androidx.compose.ui.unit.*
import chat.simplex.common.model.BusinessChatType
import dev.icerock.moko.resources.compose.painterResource
import dev.icerock.moko.resources.compose.stringResource
import chat.simplex.common.model.ChatInfo
@@ -30,7 +31,12 @@ import kotlin.math.max
fun ChatInfoImage(chatInfo: ChatInfo, size: Dp, iconColor: Color = MaterialTheme.colors.secondaryVariant, shadow: Boolean = false) {
val icon =
when (chatInfo) {
is ChatInfo.Group -> MR.images.ic_supervised_user_circle_filled
is ChatInfo.Group ->
when (chatInfo.groupInfo.businessChat?.chatType) {
BusinessChatType.Business -> MR.images.ic_work_filled_padded
BusinessChatType.Customer -> MR.images.ic_account_circle_filled
null -> MR.images.ic_supervised_user_circle_filled
}
is ChatInfo.Local -> MR.images.ic_folder_filled
else -> MR.images.ic_account_circle_filled
}
@@ -39,7 +39,7 @@ object DatabaseUtils {
}
}
private fun hasAtLeastOneDatabase(rootDir: String): Boolean =
fun hasAtLeastOneDatabase(rootDir: String): Boolean =
File(rootDir + File.separator + chatDatabaseFileName).exists() || File(rootDir + File.separator + agentDatabaseFileName).exists()
fun hasOnlyOneDatabase(rootDir: String): Boolean =
@@ -275,10 +275,17 @@ suspend fun planAndConnect(
Log.d(TAG, "planAndConnect, .GroupLink, .ConnectingProhibit, incognito=$incognito")
val groupInfo = connectionPlan.groupLinkPlan.groupInfo_
if (groupInfo != null) {
AlertManager.privacySensitive.showAlertMsg(
generalGetString(MR.strings.connect_plan_group_already_exists),
String.format(generalGetString(MR.strings.connect_plan_you_are_already_joining_the_group_vName), groupInfo.displayName) + linkText
)
if (groupInfo.businessChat == null) {
AlertManager.privacySensitive.showAlertMsg(
generalGetString(MR.strings.connect_plan_group_already_exists),
String.format(generalGetString(MR.strings.connect_plan_you_are_already_joining_the_group_vName), groupInfo.displayName) + linkText
)
} else {
AlertManager.privacySensitive.showAlertMsg(
generalGetString(MR.strings.connect_plan_chat_already_exists),
String.format(generalGetString(MR.strings.connect_plan_you_are_already_connecting_to_vName), groupInfo.displayName) + linkText
)
}
} else {
AlertManager.privacySensitive.showAlertMsg(
generalGetString(MR.strings.connect_plan_already_joining_the_group),
@@ -295,11 +302,19 @@ suspend fun planAndConnect(
filterKnownGroup(groupInfo)
} else {
openKnownGroup(chatModel, rhId, close, groupInfo)
AlertManager.privacySensitive.showAlertMsg(
generalGetString(MR.strings.connect_plan_group_already_exists),
String.format(generalGetString(MR.strings.connect_plan_you_are_already_in_group_vName), groupInfo.displayName) + linkText,
hostDevice = hostDevice(rhId),
)
if (groupInfo.businessChat == null) {
AlertManager.privacySensitive.showAlertMsg(
generalGetString(MR.strings.connect_plan_group_already_exists),
String.format(generalGetString(MR.strings.connect_plan_you_are_already_in_group_vName), groupInfo.displayName) + linkText,
hostDevice = hostDevice(rhId),
)
} else {
AlertManager.privacySensitive.showAlertMsg(
generalGetString(MR.strings.connect_plan_chat_already_exists),
String.format(generalGetString(MR.strings.connect_plan_you_are_already_connected_with_vName), groupInfo.displayName) + linkText,
hostDevice = hostDevice(rhId),
)
}
cleanup?.invoke()
}
}
@@ -169,7 +169,7 @@ private fun ReviewConditionsButton(
modalManager: ModalManager
) {
OnboardingActionButton(
modifier = if (appPlatform.isAndroid) Modifier.padding(horizontal = DEFAULT_PADDING * 2).fillMaxWidth() else Modifier,
modifier = if (appPlatform.isAndroid) Modifier.padding(horizontal = DEFAULT_PADDING * 2).fillMaxWidth() else Modifier.widthIn(min = 300.dp),
labelId = MR.strings.operator_review_conditions,
onboarding = null,
enabled = enabled,
@@ -184,7 +184,7 @@ private fun ReviewConditionsButton(
@Composable
private fun SetOperatorsButton(enabled: Boolean, onboarding: Boolean, serverOperators: State<List<ServerOperator>>, selectedOperatorIds: State<Set<Long>>, close: () -> Unit) {
OnboardingActionButton(
modifier = if (appPlatform.isAndroid) Modifier.padding(horizontal = DEFAULT_PADDING * 2).fillMaxWidth() else Modifier,
modifier = if (appPlatform.isAndroid) Modifier.padding(horizontal = DEFAULT_PADDING * 2).fillMaxWidth() else Modifier.widthIn(min = 300.dp),
labelId = MR.strings.onboarding_network_operators_update,
onboarding = null,
enabled = enabled,
@@ -206,7 +206,7 @@ private fun SetOperatorsButton(enabled: Boolean, onboarding: Boolean, serverOper
@Composable
private fun ContinueButton(enabled: Boolean, onboarding: Boolean, close: () -> Unit) {
OnboardingActionButton(
modifier = if (appPlatform.isAndroid) Modifier.padding(horizontal = DEFAULT_PADDING * 2).fillMaxWidth() else Modifier,
modifier = if (appPlatform.isAndroid) Modifier.padding(horizontal = DEFAULT_PADDING * 2).fillMaxWidth() else Modifier.widthIn(min = 300.dp),
labelId = MR.strings.onboarding_network_operators_continue,
onboarding = null,
enabled = enabled,
@@ -235,7 +235,7 @@ private fun ReviewConditionsView(
val operatorsWithConditionsAccepted = remember { chatModel.conditions.value.serverOperators.filter { it.conditionsAcceptance.conditionsAccepted } }
val acceptForOperators = remember { selectedOperators.value.filter { !it.conditionsAcceptance.conditionsAccepted } }
ColumnWithScrollBar(modifier = Modifier.fillMaxSize().padding(horizontal = DEFAULT_PADDING)) {
AppBarTitle(stringResource(MR.strings.operator_conditions_of_use), withPadding = false, enableAlphaChanges = false)
AppBarTitle(stringResource(MR.strings.operator_conditions_of_use), withPadding = false, enableAlphaChanges = false, bottomPadding = DEFAULT_PADDING)
if (operatorsWithConditionsAccepted.isNotEmpty()) {
ReadableText(MR.strings.operator_conditions_accepted_for_some, args = operatorsWithConditionsAccepted.joinToString(", ") { it.legalName_ })
ReadableText(MR.strings.operator_same_conditions_will_apply_to_operators, args = acceptForOperators.joinToString(", ") { it.legalName_ })
@@ -1,6 +1,7 @@
package chat.simplex.common.views.onboarding
import androidx.compose.desktop.ui.tooling.preview.Preview
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.material.*
@@ -23,7 +24,7 @@ import dev.icerock.moko.resources.StringResource
@Composable
fun HowItWorks(user: User?, onboardingStage: SharedPreference<OnboardingStage>? = null) {
ColumnWithScrollBar(Modifier.padding(DEFAULT_PADDING)) {
ColumnWithScrollBar(Modifier.padding(horizontal = DEFAULT_PADDING)) {
AppBarTitle(stringResource(MR.strings.how_simplex_works), withPadding = false)
ReadableText(MR.strings.to_protect_privacy_simplex_has_ids_for_queues)
ReadableText(MR.strings.only_client_devices_store_contacts_groups_e2e_encrypted_messages)
@@ -35,11 +36,12 @@ fun HowItWorks(user: User?, onboardingStage: SharedPreference<OnboardingStage>?
Spacer(Modifier.fillMaxHeight().weight(1f))
if (onboardingStage != null) {
Box(Modifier.fillMaxWidth().padding(bottom = DEFAULT_PADDING), contentAlignment = Alignment.Center) {
Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) {
OnboardingActionButton(user, onboardingStage, onclick = { ModalManager.fullscreen.closeModal() })
// Reserve space
TextButtonBelowOnboardingButton("", null)
}
}
Spacer(Modifier.height(DEFAULT_PADDING))
}
}
@@ -1,6 +1,5 @@
package chat.simplex.common.views.onboarding
import SectionTextFooter
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.material.*
@@ -12,7 +11,6 @@ import androidx.compose.ui.focus.*
import androidx.compose.ui.input.key.*
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.text.input.ImeAction
import dev.icerock.moko.resources.compose.painterResource
import dev.icerock.moko.resources.compose.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
@@ -106,14 +104,31 @@ private fun SetupDatabasePassphraseLayout(
CompositionLocalProvider(LocalAppBarHandler provides rememberAppBarHandler()) {
ModalView({}, showClose = false) {
ColumnWithScrollBar(
Modifier.themedBackground(bgLayerSize = LocalAppBarHandler.current?.backgroundGraphicsLayerSize, bgLayer = LocalAppBarHandler.current?.backgroundGraphicsLayer).padding(bottom = DEFAULT_PADDING * 2),
Modifier.themedBackground(bgLayerSize = LocalAppBarHandler.current?.backgroundGraphicsLayerSize, bgLayer = LocalAppBarHandler.current?.backgroundGraphicsLayer).padding(horizontal = DEFAULT_PADDING),
horizontalAlignment = Alignment.CenterHorizontally,
) {
AppBarTitle(stringResource(MR.strings.setup_database_passphrase))
Spacer(Modifier.weight(1f))
val onClickUpdate = {
// Don't do things concurrently. Shouldn't be here concurrently, just in case
if (!progressIndicator.value) {
encryptDatabaseAlert(onConfirmEncrypt)
}
}
val disabled = currentKey.value == newKey.value ||
newKey.value != confirmNewKey.value ||
newKey.value.isEmpty() ||
!validKey(currentKey.value) ||
!validKey(newKey.value) ||
progressIndicator.value
Column(Modifier.width(600.dp), horizontalAlignment = Alignment.CenterHorizontally) {
val textStyle = MaterialTheme.typography.body1.copy(color = MaterialTheme.colors.secondary)
ReadableText(MR.strings.you_have_to_enter_passphrase_every_time, TextAlign.Center, padding = PaddingValues(), style = textStyle )
Spacer(Modifier.height(DEFAULT_PADDING))
ReadableText(MR.strings.impossible_to_recover_passphrase, TextAlign.Center, padding = PaddingValues(), style = textStyle)
Spacer(Modifier.height(DEFAULT_PADDING))
Column(Modifier.width(600.dp)) {
val focusRequester = remember { FocusRequester() }
val focusManager = LocalFocusManager.current
LaunchedEffect(Unit) {
@@ -138,18 +153,6 @@ private fun SetupDatabasePassphraseLayout(
isValid = ::validKey,
keyboardActions = KeyboardActions(onNext = { defaultKeyboardAction(ImeAction.Next) }),
)
val onClickUpdate = {
// Don't do things concurrently. Shouldn't be here concurrently, just in case
if (!progressIndicator.value) {
encryptDatabaseAlert(onConfirmEncrypt)
}
}
val disabled = currentKey.value == newKey.value ||
newKey.value != confirmNewKey.value ||
newKey.value.isEmpty() ||
!validKey(currentKey.value) ||
!validKey(newKey.value) ||
progressIndicator.value
PassphraseField(
confirmNewKey,
@@ -167,21 +170,17 @@ private fun SetupDatabasePassphraseLayout(
isValid = { confirmNewKey.value == "" || newKey.value == confirmNewKey.value },
keyboardActions = KeyboardActions(onDone = { defaultKeyboardAction(ImeAction.Done) }),
)
Box(Modifier.align(Alignment.CenterHorizontally).padding(vertical = DEFAULT_PADDING)) {
SetPassphraseButton(disabled, onClickUpdate)
}
Column {
SectionTextFooter(generalGetString(MR.strings.you_have_to_enter_passphrase_every_time))
SectionTextFooter(annotatedStringResource(MR.strings.impossible_to_recover_passphrase))
}
}
Spacer(Modifier.weight(1f))
SkipButton(progressIndicator.value) {
chatModel.desktopOnboardingRandomPassword.value = true
nextStep()
Column(Modifier.widthIn(max = if (appPlatform.isAndroid) 450.dp else 1000.dp), horizontalAlignment = Alignment.CenterHorizontally) {
SetPassphraseButton(disabled, onClickUpdate)
SkipButton(progressIndicator.value) {
randomPassphraseAlert {
chatModel.desktopOnboardingRandomPassword.value = true
nextStep()
}
}
}
}
}
@@ -190,30 +189,18 @@ private fun SetupDatabasePassphraseLayout(
@Composable
private fun SetPassphraseButton(disabled: Boolean, onClick: () -> Unit) {
SimpleButtonIconEnded(
stringResource(MR.strings.set_database_passphrase),
painterResource(MR.images.ic_check),
style = MaterialTheme.typography.h2,
color = if (disabled) MaterialTheme.colors.secondary else MaterialTheme.colors.primary,
disabled = disabled,
click = onClick
OnboardingActionButton(
if (appPlatform.isAndroid) Modifier.padding(horizontal = DEFAULT_PADDING * 2).fillMaxWidth() else Modifier.widthIn(min = 300.dp),
labelId = MR.strings.set_database_passphrase,
onboarding = null,
onclick = onClick,
enabled = !disabled
)
}
@Composable
private fun SkipButton(disabled: Boolean, onClick: () -> Unit) {
SimpleButtonIconEnded(stringResource(MR.strings.use_random_passphrase), painterResource(MR.images.ic_chevron_right), color =
if (disabled) MaterialTheme.colors.secondary else WarningOrange, disabled = disabled, click = onClick)
Text(
stringResource(MR.strings.you_can_change_it_later),
Modifier
.fillMaxWidth()
.padding(horizontal = DEFAULT_PADDING * 3)
.padding(top = DEFAULT_PADDING, bottom = DEFAULT_PADDING - 5.dp),
style = MaterialTheme.typography.subtitle1,
color = MaterialTheme.colors.secondary,
textAlign = TextAlign.Center,
)
TextButtonBelowOnboardingButton(stringResource(MR.strings.use_random_passphrase), onClick = if (disabled) null else onClick)
}
@Composable
@@ -238,3 +225,12 @@ private suspend fun startChat(key: String?) {
m.chatDbChanged.value = false
m.chatRunning.value = true
}
private fun randomPassphraseAlert(onConfirm: () -> Unit) {
AlertManager.shared.showAlertDialog(
title = generalGetString(MR.strings.use_random_passphrase),
text = generalGetString(MR.strings.you_can_change_it_later),
confirmText = generalGetString(MR.strings.ok),
onConfirm = onConfirm,
)
}
@@ -724,8 +724,8 @@ private val versionDescriptions: List<VersionDescription> = listOf(
),
),
VersionDescription(
version = "v6.2-beta.1",
post = "https://simplex.chat/blog/20241125-servers-operated-by-flux-true-privacy-and-decentralization-for-all-users.html",
version = "v6.2",
post = "https://simplex.chat/blog/20241210-simplex-network-v6-2-servers-by-flux-business-chats.html",
features = listOf(
VersionFeature.FeatureView(
icon = null,
@@ -749,6 +749,11 @@ private val versionDescriptions: List<VersionDescription> = listOf(
}
}
),
VersionFeature.FeatureDescription(
icon = MR.images.ic_work,
titleId = MR.strings.v6_2_business_chats,
descrId = MR.strings.v6_2_business_chats_descr
),
VersionFeature.FeatureDescription(
icon = MR.images.ic_chat,
titleId = MR.strings.v6_2_improved_chat_navigation,
@@ -1,11 +1,10 @@
package chat.simplex.common.views.usersettings
import SectionBottomSpacer
import SectionTextFooter
import SectionView
import SectionViewSelectable
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.*
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
@@ -16,6 +15,7 @@ import androidx.compose.ui.text.intl.Locale
import androidx.compose.ui.text.style.TextOverflow
import chat.simplex.common.model.*
import chat.simplex.common.platform.*
import chat.simplex.common.ui.theme.DEFAULT_PADDING_HALF
import chat.simplex.common.views.helpers.*
import chat.simplex.res.MR
import kotlin.collections.ArrayList
@@ -77,6 +77,9 @@ fun NotificationsSettingsLayout(
color = MaterialTheme.colors.secondary
)
}
if (platform.androidIsXiaomiDevice() && (notificationsMode.value == NotificationsMode.PERIODIC || notificationsMode.value == NotificationsMode.SERVICE)) {
SectionTextFooter(stringResource(MR.strings.xiaomi_ignore_battery_optimization))
}
}
SectionBottomSpacer()
}
@@ -91,6 +94,9 @@ fun NotificationsModeView(
ColumnWithScrollBar {
AppBarTitle(stringResource(MR.strings.settings_notifications_mode_title).lowercase().capitalize(Locale.current))
SectionViewSelectable(null, notificationsMode, modes, onNotificationsModeSelected)
if (platform.androidIsXiaomiDevice() && (notificationsMode.value == NotificationsMode.PERIODIC || notificationsMode.value == NotificationsMode.SERVICE)) {
SectionTextFooter(stringResource(MR.strings.xiaomi_ignore_battery_optimization))
}
}
}
@@ -123,9 +123,9 @@ private fun TimedMessagesFeatureSection(allowFeature: State<FeatureAllowed>, onS
ChatFeature.TimedMessages.text,
ChatFeature.TimedMessages.icon,
MaterialTheme.colors.secondary,
allowFeature.value == FeatureAllowed.ALWAYS || allowFeature.value == FeatureAllowed.YES,
checked = allowFeature.value == FeatureAllowed.ALWAYS || allowFeature.value == FeatureAllowed.YES,
extraPadding = false,
onSelected
onChange = onSelected
)
}
SectionTextFooter(ChatFeature.TimedMessages.allowDescription(allowFeature.value))
@@ -408,6 +408,7 @@ fun PreferenceToggleWithIcon(
text: String,
icon: Painter? = null,
iconColor: Color? = MaterialTheme.colors.secondary,
disabled: Boolean = false,
checked: Boolean,
extraPadding: Boolean = false,
onChange: (Boolean) -> Unit = {},
@@ -418,6 +419,7 @@ fun PreferenceToggleWithIcon(
onCheckedChange = {
onChange(it)
},
enabled = !disabled
)
}
}
@@ -196,14 +196,22 @@ private fun UserAddressLayout(
LearnMoreButton(learnMore)
}
} else {
val autoAcceptState = remember { mutableStateOf(AutoAcceptState(userAddress)) }
val autoAcceptStateSaved = remember { mutableStateOf(autoAcceptState.value) }
SectionView(stringResource(MR.strings.for_social_media).uppercase()) {
SimpleXLinkQRCode(userAddress.connReqContact)
ShareAddressButton { share(simplexChatLink(userAddress.connReqContact)) }
// ShareViaEmailButton { sendEmail(userAddress) }
BusinessAddressToggle(autoAcceptState) { saveAas(autoAcceptState.value, autoAcceptStateSaved) }
AddressSettingsButton(user, userAddress, shareViaProfile, setProfileAddress, saveAas)
if (autoAcceptState.value.business) {
SectionTextFooter(stringResource(MR.strings.add_your_team_members_to_conversations))
}
}
SectionDividerSpaced()
SectionDividerSpaced(maxTopPadding = autoAcceptState.value.business)
SectionView(generalGetString(MR.strings.or_to_share_privately).uppercase()) {
CreateOneTimeLinkButton()
}
@@ -385,17 +393,37 @@ fun ShareWithContactsButton(shareViaProfile: MutableState<Boolean>, setProfileAd
onDismissRequest = {
shareViaProfile.value = !on
})
}
}
}
@Composable
private fun BusinessAddressToggle(autoAcceptState: MutableState<AutoAcceptState>, saveAas: (AutoAcceptState) -> Unit) {
PreferenceToggleWithIcon(
stringResource(MR.strings.business_address),
painterResource(MR.images.ic_work),
checked = autoAcceptState.value.business,
) { ba ->
autoAcceptState.value = if (ba)
AutoAcceptState(enable = true, incognito = false, business = true, autoAcceptState.value.welcomeText)
else
AutoAcceptState(autoAcceptState.value.enable, autoAcceptState.value.incognito, business = false, autoAcceptState.value.welcomeText)
saveAas(autoAcceptState.value)
}
}
@Composable
private fun AutoAcceptToggle(autoAcceptState: MutableState<AutoAcceptState>, saveAas: (AutoAcceptState) -> Unit) {
PreferenceToggleWithIcon(stringResource(MR.strings.auto_accept_contact), painterResource(MR.images.ic_check), checked = autoAcceptState.value.enable) {
PreferenceToggleWithIcon(
stringResource(MR.strings.auto_accept_contact),
painterResource(MR.images.ic_check),
disabled = autoAcceptState.value.business,
checked = autoAcceptState.value.enable
) {
autoAcceptState.value = if (!it)
AutoAcceptState()
else
AutoAcceptState(it, autoAcceptState.value.incognito, autoAcceptState.value.welcomeText)
AutoAcceptState(it, autoAcceptState.value.incognito, autoAcceptState.value.business, autoAcceptState.value.welcomeText)
saveAas(autoAcceptState.value)
}
}
@@ -416,12 +444,15 @@ private class AutoAcceptState {
private set
var incognito: Boolean = false
private set
var business: Boolean = false
private set
var welcomeText: String = ""
private set
constructor(enable: Boolean = false, incognito: Boolean = false, welcomeText: String = "") {
constructor(enable: Boolean = false, incognito: Boolean = false, business: Boolean = false, welcomeText: String = "") {
this.enable = enable
this.incognito = incognito
this.business = business
this.welcomeText = welcomeText
}
@@ -429,6 +460,7 @@ private class AutoAcceptState {
contactLink.autoAccept?.let { aa ->
enable = true
incognito = aa.acceptIncognito
business = aa.businessAddress
aa.autoReply?.let { msg ->
welcomeText = msg.text
} ?: run {
@@ -445,19 +477,20 @@ private class AutoAcceptState {
if (s != "") {
autoReply = MsgContent.MCText(s)
}
return AutoAccept(incognito, autoReply)
return AutoAccept(business, incognito, autoReply)
}
return null
}
override fun equals(other: Any?): Boolean {
if (other !is AutoAcceptState) return false
return this.enable == other.enable && this.incognito == other.incognito && this.welcomeText == other.welcomeText
return this.enable == other.enable && this.incognito == other.incognito && this.business == other.business && this.welcomeText == other.welcomeText
}
override fun hashCode(): Int {
var result = enable.hashCode()
result = 31 * result + incognito.hashCode()
result = 31 * result + business.hashCode()
result = 31 * result + welcomeText.hashCode()
return result
}
@@ -470,7 +503,9 @@ private fun AutoAcceptSection(
saveAas: (AutoAcceptState, MutableState<AutoAcceptState>) -> Unit
) {
SectionView(stringResource(MR.strings.auto_accept_contact).uppercase()) {
AcceptIncognitoToggle(autoAcceptState)
if (!autoAcceptState.value.business) {
AcceptIncognitoToggle(autoAcceptState)
}
WelcomeMessageEditor(autoAcceptState)
SaveAASButton(autoAcceptState.value == savedAutoAcceptState.value) { saveAas(autoAcceptState.value, savedAutoAcceptState) }
}
@@ -482,9 +517,9 @@ private fun AcceptIncognitoToggle(autoAcceptState: MutableState<AutoAcceptState>
stringResource(MR.strings.accept_contact_incognito_button),
if (autoAcceptState.value.incognito) painterResource(MR.images.ic_theater_comedy_filled) else painterResource(MR.images.ic_theater_comedy),
if (autoAcceptState.value.incognito) Indigo else MaterialTheme.colors.secondary,
autoAcceptState.value.incognito,
checked = autoAcceptState.value.incognito,
) {
autoAcceptState.value = AutoAcceptState(autoAcceptState.value.enable, it, autoAcceptState.value.welcomeText)
autoAcceptState.value = AutoAcceptState(autoAcceptState.value.enable, it, autoAcceptState.value.business, autoAcceptState.value.welcomeText)
}
}
@@ -494,7 +529,7 @@ private fun WelcomeMessageEditor(autoAcceptState: MutableState<AutoAcceptState>)
TextEditor(welcomeText, Modifier.height(100.dp), placeholder = stringResource(MR.strings.enter_welcome_message_optional))
LaunchedEffect(welcomeText.value) {
if (welcomeText.value != autoAcceptState.value.welcomeText) {
autoAcceptState.value = AutoAcceptState(autoAcceptState.value.enable, autoAcceptState.value.incognito, welcomeText.value)
autoAcceptState.value = AutoAcceptState(autoAcceptState.value.enable, autoAcceptState.value.incognito, autoAcceptState.value.business, welcomeText.value)
}
}
}
@@ -418,7 +418,7 @@ fun IntSettingRow(title: String, selection: MutableState<Int>, values: List<Int>
Spacer(Modifier.size(4.dp))
Icon(
if (!expanded.value) painterResource(MR.images.ic_arrow_drop_down) else painterResource(MR.images.ic_arrow_drop_up),
generalGetString(MR.strings.invite_to_group_button),
contentDescription = null,
modifier = Modifier.padding(start = 8.dp),
tint = MaterialTheme.colors.secondary
)
@@ -478,7 +478,7 @@ fun TimeoutSettingRow(title: String, selection: MutableState<Long>, values: List
Spacer(Modifier.size(4.dp))
Icon(
if (!expanded.value) painterResource(MR.images.ic_arrow_drop_down) else painterResource(MR.images.ic_arrow_drop_up),
generalGetString(MR.strings.invite_to_group_button),
contentDescription = null,
modifier = Modifier.padding(start = 8.dp),
tint = MaterialTheme.colors.secondary
)
@@ -734,7 +734,7 @@ fun UsageConditionsView(
}
ColumnWithScrollBar(modifier = Modifier.fillMaxSize().padding(horizontal = DEFAULT_PADDING)) {
AppBarTitle(stringResource(MR.strings.operator_conditions_of_use), enableAlphaChanges = false, withPadding = false)
AppBarTitle(stringResource(MR.strings.operator_conditions_of_use), enableAlphaChanges = false, withPadding = false, bottomPadding = DEFAULT_PADDING)
when (val conditionsAction = chatModel.conditions.value.conditionsAction) {
is UsageConditionsAction.Review -> {
if (conditionsAction.operators.isNotEmpty()) {
@@ -14,6 +14,7 @@ import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.*
import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.platform.UriHandler
@@ -615,7 +616,6 @@ fun ConditionsTextView(
val failedToLoad = remember { mutableStateOf(false) }
val defaultConditionsLink = "https://github.com/simplex-chat/simplex-chat/blob/stable/PRIVACY.md"
val scope = rememberCoroutineScope()
// can show conditions when animation between modals finishes to prevent glitches
val canShowConditionsAt = remember { System.currentTimeMillis() + 300 }
LaunchedEffect(Unit) {
@@ -645,18 +645,18 @@ fun ConditionsTextView(
if (conditionsText != null) {
val scrollState = rememberScrollState()
Box(
modifier = Modifier
.fillMaxSize()
.border(border = BorderStroke(1.dp, CurrentColors.value.colors.secondary.copy(alpha = 0.6f)), shape = RoundedCornerShape(12.dp))
.verticalScroll(scrollState)
.padding(8.dp)
) {
val parentUriHandler = LocalUriHandler.current
CompositionLocalProvider(LocalUriHandler provides remember { internalUriHandler(parentUriHandler) }) {
ConditionsMarkdown(conditionsText)
}
ConditionsBox(
Modifier
.fillMaxSize()
.border(border = BorderStroke(1.dp, CurrentColors.value.colors.secondary.copy(alpha = 0.6f)), shape = RoundedCornerShape(12.dp))
.clip(shape = RoundedCornerShape(12.dp)),
scrollState
) {
val parentUriHandler = LocalUriHandler.current
CompositionLocalProvider(LocalUriHandler provides remember { internalUriHandler(parentUriHandler) }) {
ConditionsMarkdown(conditionsText)
}
}
} else {
val conditionsLink = "https://github.com/simplex-chat/simplex-chat/blob/${usageConditions.conditionsCommit}/PRIVACY.md"
ConditionsLinkView(conditionsLink)
@@ -668,6 +668,9 @@ fun ConditionsTextView(
}
}
@Composable
expect fun ConditionsBox(modifier: Modifier, scrollState: ScrollState, content: @Composable() (BoxScope.() -> Unit))
@Composable
private fun ConditionsMarkdown(text: String) {
Markdown(text,
@@ -28,7 +28,7 @@
<string name="switch_receiving_address_desc">سيتم تغيير عنوان الاستلام إلى خادم مختلف. سيتم إكمال تغيير العنوان بعد اتصال المرسل بالإنترنت.</string>
<string name="this_link_is_not_a_valid_connection_link">هذا الرابط ليس رابط اتصال صالح!</string>
<string name="allow_verb">يسمح</string>
<string name="smp_servers_preset_add">أضِف خوادم محدّدة مسبقًا</string>
<string name="smp_servers_preset_add">أضِف خوادم مُعدة مسبقًا</string>
<string name="smp_servers_add_to_another_device">أضِف إلى جهاز آخر</string>
<string name="users_delete_all_chats_deleted">سيتم حذف جميع الدردشات والرسائل - لا يمكن التراجع عن هذا!</string>
<string name="network_enable_socks_info">الوصول إلى الخوادم عبر وكيل SOCKS على المنفذ %d؟ يجب بدء تشغيل الوكيل قبل تمكين هذا الخيار.</string>
@@ -124,8 +124,7 @@
<string name="send_disappearing_message_30_seconds">30 ثانية</string>
<string name="icon_descr_cancel_live_message">إلغاء الرسالة المباشرة</string>
<string name="cancel_verb">إلغاء</string>
<string name="network_session_mode_entity_description">سيتم استخدام اتصال TCP منفصل (وبيانات اعتماد SOCKS) <b> لكل جهة اتصال وعضو في المجموعة</b>.
\n<b> الرجاء ملاحظة</b>: إذا كان لديك العديد من التوصيلات ، فقد يكون استهلاك البطارية وحركة المرور أعلى بكثير وقد تفشل بعض الاتصالات.</string>
<string name="network_session_mode_entity_description"><![CDATA[سيتم استخدام اتصال TCP منفصل (وبيانات اعتماد SOCKS) <b> لكل جهة اتصال وعضو في المجموعة</b>\n.<b> الرجاء ملاحظة</b>: إذا كان لديك العديد من الاتصالات، فقد يكون استهلاك البطارية وحركة المرور أعلى بكثير وقد تفشل بعض الاتصالات.]]></string>
<string name="callstatus_calling">جارٍ الاتصال…</string>
<string name="icon_descr_audio_call">مكالمة صوتية</string>
<string name="call_on_lock_screen">المكالمات على شاشة القفل:</string>
@@ -199,7 +198,7 @@
<string name="error_aborting_address_change">خطأ في إحباط تغيير العنوان</string>
<string name="auth_enable_simplex_lock">تفعيل قفل SimpleX</string>
<string name="auth_confirm_credential">تأكد من بيانات الاعتماد الخاصة بك</string>
<string name="create_simplex_address">إنشاء عنوان SimpleX</string>
<string name="create_simplex_address">أنشئ عنوان SimpleX</string>
<string name="continue_to_next_step">متابعة</string>
<string name="chat_with_developers">تحدث مع المطورين</string>
<string name="icon_descr_context">سياق الأيقونة</string>
@@ -477,7 +476,7 @@
<string name="how_to_use_simplex_chat">كيفية الاستخدام</string>
<string name="how_simplex_works">كيف يعمل SimpleX</string>
<string name="description_via_contact_address_link_incognito">التخفي عبر رابط عنوان جهة الاتصال</string>
<string name="incorrect_code">رمز الحماية غير صحيحة!</string>
<string name="incorrect_code">رمز الأمان غير صحيحة!</string>
<string name="service_notifications_disabled">الإشعارات الفورية مُعطَّلة</string>
<string name="service_notifications">إشعارات فورية!</string>
<string name="notification_display_mode_hidden_desc">إخفاء جهة الاتصال والرسالة</string>
@@ -622,7 +621,7 @@
<string name="ttl_week">%d أسبوع</string>
<string name="display_name_cannot_contain_whitespace">لا يمكن أن يحتوي اسم العرض على مسافة فارغة.</string>
<string name="encrypted_video_call">مكالمة فيديو مُعمّاة بين الطريفين</string>
<string name="direct_messages_are_prohibited_in_chat">الرسائل المباشرة بين الأعضاء ممنوعة في هذه المجموعة.</string>
<string name="direct_messages_are_prohibited_in_group">الرسائل المباشرة بين الأعضاء ممنوعة في هذه المجموعة.</string>
<string name="ttl_hour">%d ساعة</string>
<string name="ttl_h">%d ساعة</string>
<string name="ttl_hours">%d ساعات</string>
@@ -824,7 +823,7 @@
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages"><![CDATA[تقوم أجهزة العميل فقط بتخزين ملفات تعريف المستخدمين وجهات الاتصال والمجموعات والرسائل المُرسلة باستخدام <b>تعمية ثنائية الطبقات من بين الطريفين</b>.]]></string>
<string name="reset_color">صفّر الألوان</string>
<string name="save_verb">حفظ</string>
<string name="smp_servers_preset_address">عنوان الخادم المحدد مسبقًا</string>
<string name="smp_servers_preset_address">عنوان الخادم المُعد مسبقًا</string>
<string name="save_and_notify_group_members">حفظ وإشعار أعضاء المجموعة</string>
<string name="onboarding_notifications_mode_periodic">دوري</string>
<string name="restart_the_app_to_use_imported_chat_database">أعد تشغيل التطبيق لاستخدام قاعدة بيانات الدردشة المستوردة.</string>
@@ -836,7 +835,7 @@
<string name="store_passphrase_securely_without_recover">يرجى تخزين عبارة المرور بشكل آمن، فلن تتمكن من الوصول إلى الدردشة إذا فقدتها.</string>
<string name="contact_developers">يُرجى تحديث التطبيق والتواصل مع المطورين.</string>
<string name="read_more_in_user_guide_with_link"><![CDATA[اقرأ المزيد في <font color="#0088ff">دليل المستخدم</font>.]]></string>
<string name="auth_open_chat_profiles">افتح ملفات تعريف الدردشة</string>
<string name="auth_open_chat_profiles">غيّر ملفات تعريف الدردشة</string>
<string name="revoke_file__confirm">اسحب الوصول</string>
<string name="reveal_verb">كشف</string>
<string name="stop_rcv_file__message">سيتم إيقاف استلام الملف.</string>
@@ -930,7 +929,7 @@
<string name="image_descr_qr_code">رمز QR</string>
<string name="reset_verb">صفّر</string>
<string name="network_proxy_port">المنفذ %d</string>
<string name="smp_servers_preset_server">خادم محدد مسبقًا</string>
<string name="smp_servers_preset_server">خادم مُعد مسبقًا</string>
<string name="relay_server_if_necessary">يتم استخدام خادم الترحيل فقط إذا لزم الأمر. يمكن لطرف آخر مراقبة عنوان IP الخاص بك.</string>
<string name="save_and_notify_contact">حفظ وإشعار جهة الاتصال</string>
<string name="settings_restart_app">إعادة التشغيل</string>
@@ -1163,7 +1162,7 @@
<string name="you_are_already_connected_to_vName_via_this_link">أنت متصل بالفعل بـ%1$s.</string>
<string name="waiting_for_video">في انتظار الفيديو</string>
<string name="video_will_be_received_when_contact_completes_uploading">سيتم استلام الفيديو عند اكتمال تحميل جهة اتصالك.</string>
<string name="verify_security_code">تحقق من رمز الحماية</string>
<string name="verify_security_code">تحقق من رمز الأمان</string>
<string name="v4_3_voice_messages">رسائل صوتية</string>
<string name="you_can_accept_or_reject_connection">عندما يطلب الأشخاص الاتصال، يمكنك قبوله أو رفضه.</string>
<string name="you_will_be_connected_when_group_host_device_is_online">سوف تكون متصلاً بالمجموعة عندما يكون جهاز مضيف المجموعة متصلاً بالإنترنت، يرجى الانتظار أو التحقق لاحقًا!</string>
@@ -1796,7 +1795,7 @@
<string name="chat_list_always_visible">أظهِر قائمة الدردشة في نافذة جديدة</string>
<string name="settings_section_title_chat_colors">ألوان الدردشة</string>
<string name="settings_section_title_chat_theme">سمة الدردشة</string>
<string name="color_received_quote">تلقى الرد</string>
<string name="color_received_quote">تلقيت رد</string>
<string name="theme_remove_image">أزِل الصورة</string>
<string name="wallpaper_scale_repeat">تكرار</string>
<string name="reset_single_color">صفّر اللون</string>
@@ -2116,4 +2115,97 @@
<string name="v6_1_better_security">أمان أفضل ✅</string>
<string name="v6_1_better_security_descr">بروتوكولات SimpleX تمت مراجعتها بواسطة Trail of Bits.</string>
<string name="v6_1_switch_chat_profile_descr">تبديل ملف تعريف الدردشة لدعوات لمرة واحدة.</string>
<string name="errors_in_servers_configuration">أخطاء في تضبيط الخوادم.</string>
<string name="for_chat_profile">لملف تعريف الدردشة %s:</string>
<string name="no_media_servers_configured">لا يوجد وسائط أو خوادم ملفات.</string>
<string name="no_media_servers_configured_for_sending">لا يوجد خوادم لإرسال الملفات.</string>
<string name="connection_error_quota_desc">لقد وصل الاتصال إلى الحد الأقصى من الرسائل غير المُسلمة، قد يكون جهة الاتصال الخاصة بك غير متصلة بالإنترنت.</string>
<string name="connection_error_quota">الرسائل غير المُسلَّمة</string>
<string name="share_1_time_link_with_a_friend">شارك رابطًا لمرة واحدة مع صديق</string>
<string name="connection_security">أمان الاتصال</string>
<string name="to_protect_against_your_link_replaced_compare_codes">لحماية الرابط الخاص بك من الاستبدال، يمكنك مقارنة رموز أمان جهات الاتصال.</string>
<string name="smp_servers_new_server">خادم جديد</string>
<string name="for_social_media">لوسائل التواصل الاجتماعي</string>
<string name="or_to_share_privately">أو للمشاركة بشكل خاص</string>
<string name="address_settings">إعدادات العنوان</string>
<string name="create_1_time_link">أنشئ رابط لمرة واحدة</string>
<string name="simplex_address_or_1_time_link">عنوان SimpleX أو رابط لمرة واحدة؟</string>
<string name="onboarding_network_operators">مُشغلي الشبكة</string>
<string name="onboarding_network_operators_configure_via_settings">يمكنك تضبيط الخوادم عبر الإعدادات.</string>
<string name="onboarding_select_network_operators_to_use">حدد مشغلي الشبكة الذين تريد استخدامهم.</string>
<string name="onboarding_network_operators_conditions_you_can_configure">يمكنك تضبيط المُشغلين في إعدادات الشبكة والخوادم.</string>
<string name="onboarding_network_operators_update">حدّث</string>
<string name="onboarding_network_operators_continue">تابع</string>
<string name="operator_conditions_accepted">قُبل الشروط</string>
<string name="operator_review_conditions">راجع الشروط</string>
<string name="network_preset_servers_title">الخوادم المُعدة مسبقًا</string>
<string name="operator_conditions_accepted_for_enabled_operators_on">سيتم قبول الشروط تلقائيًا للمُشغلين المفعّلين في: %s.</string>
<string name="your_servers">خوادمك</string>
<string name="operators_conditions_accepted_for"><![CDATA[قُبلت الشروط للمُشغل/ين: <b>%s</b>.]]></string>
<string name="operators_conditions_will_be_accepted_for"><![CDATA[سيتم قبول الشروط للمُشغل/ين: <b>%s</b>.]]></string>
<string name="operator_info_title">مُشغل الشبكة</string>
<string name="operator">المُشغل</string>
<string name="operator_servers_title">%s خوادم</string>
<string name="operator_website">الموقع الإلكتروني</string>
<string name="operator_conditions_will_be_accepted_on">سيتم قبول الشروط في: %s.</string>
<string name="operator_conditions_accepted_on">قُبل الشروط في: %s.</string>
<string name="use_servers_of_operator_x">استخدم %s</string>
<string name="operator_use_operator_toggle_description">استخدم الخوادم</string>
<string name="operator_conditions_accepted_for_some"><![CDATA[قُبلت الشروط بالفعل للمُشغل/ين التاليين: <b>%s</b>.]]></string>
<string name="operator_conditions_of_use">شروط الاستخدام</string>
<string name="operator_use_for_messages_private_routing">للتوجيه الخاص</string>
<string name="operator_use_for_messages_receiving">لتلقي</string>
<string name="operator_use_for_files">استخدم للملفات</string>
<string name="view_conditions">اعرض الشروط</string>
<string name="operators_conditions_will_also_apply"><![CDATA[ستطبق هذه الشروط أيضًا على: <b>%s</b>.]]></string>
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[لاستخدام خوادم <b>%s</b>، يجب قبول شروط الاستخدام.]]></string>
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[ستطبق نفس الشروط على المُشغل/ين: <b>%s</b>.]]></string>
<string name="operator_added_xftp_servers">أُضيفت خوادم الوسائط والملفات</string>
<string name="operator_open_conditions">الشروط المفتوحة</string>
<string name="xftp_servers_per_user">الخوادم الخاصة بالملفات الجديدة لملف الدردشة الحالي الخاص بك</string>
<string name="operator_use_for_sending">لإرسال</string>
<string name="error_adding_server">خطأ في إضافة الخادم</string>
<string name="error_updating_server_title">خطأ في تحديث الخادم</string>
<string name="operator_open_changes">التغييرات المفتوحة</string>
<string name="operator_server_alert_title">خادم المُشغل</string>
<string name="server_added_to_operator__name">أُضيف الخادم إلى المُشغل %s.</string>
<string name="error_server_operator_changed">تغيّر مُشغل الخادم.</string>
<string name="appearance_app_toolbars">أشرطة أدوات التطبيق</string>
<string name="appearance_bars_blur_radius">تمويه</string>
<string name="appearance_in_app_bars_alpha">الشفافية</string>
<string name="v6_2_network_decentralization_enable_flux">فعّل flux</string>
<string name="v6_2_network_decentralization">اللامركزية الشبكية</string>
<string name="v6_2_network_decentralization_descr">المُشغل المُعد مسبقًا الثاني في التطبيق!</string>
<string name="v6_2_network_decentralization_enable_flux_reason">لتحسين خصوصية البيانات الوصفية.</string>
<string name="v6_2_improved_chat_navigation">تحسين التنقل في الدردشة</string>
<string name="view_updated_conditions">اعرض الشروط المُحدثة</string>
<string name="accept_conditions">اقبل الشروط</string>
<string name="operator_added_message_servers">أُضيفت خوادم الرسائل</string>
<string name="address_or_1_time_link">عنوان أو رابط لمرة واحدة؟</string>
<string name="one_time_link_can_be_used_with_one_contact_only"><![CDATA[يمكن استخدام الرابط لمرة واحدة <i>مع جهة اتصال واحدة فقط</i> - المشاركة شخصيًا أو عبر أي مُراسل.]]></string>
<string name="onboarding_network_operators_conditions_will_be_accepted">سيتم قبول الشروط للمُشغلين المفعّلين بعد 30 يومًا.</string>
<string name="onboarding_choose_server_operators">اختر المُشغلين</string>
<string name="operator_conditions_failed_to_load">لا يمكن تحميل نص الشروط الحالية، يمكنك مراجعة الشروط عبر هذا الرابط:</string>
<string name="error_accepting_operator_conditions">خطأ في قبول الشروط</string>
<string name="failed_to_save_servers">خطأ في حفظ الخوادم</string>
<string name="onboarding_network_operators_app_will_use_for_routing">على سبيل المثال، إذا تلقيت رسائل عبر خادم SimpleX Chat، فسيستخدم التطبيق أحد خوادم Flux للتوجيه الخاص.</string>
<string name="no_message_servers_configured_for_private_routing">لا يوجد خوادم لتوجيه الرسائل الخاصة.</string>
<string name="no_message_servers_configured">لا يوجد خوادم رسائل.</string>
<string name="no_media_servers_configured_for_private_routing">لا يوجد خوادم لاستقبال الملفات.</string>
<string name="message_deleted_or_not_received_error_title">لا توجد رسالة</string>
<string name="no_message_servers_configured_for_receiving">لا يوجد خوادم لاستقبال الرسائل.</string>
<string name="v6_2_improved_chat_navigation_descr">- فتح الدردشة عند أول رسالة غير مقروءة.\n- الانتقال إلى الرسائل المقتبسة.</string>
<string name="you_can_set_connection_name_to_remember">يمكنك تعيين اسم الاتصال، لتذكر الأشخاص الذين تمت مشاركة الرابط معهم.</string>
<string name="onboarding_network_operators_review_later">راجع لاحقًا</string>
<string name="error_server_protocol_changed">تغيّر بروتوكول الخادم.</string>
<string name="share_address_publicly">شارك العنوان علناً</string>
<string name="share_simplex_address_on_social_media">شارك عنوان SimpleX على وسائل التواصل الاجتماعي.</string>
<string name="simplex_address_and_1_time_links_are_safe_to_share">عنوان SimpleX والروابط لمرة واحدة آمنة للمشاركة عبر أي برنامج مُراسلة.</string>
<string name="address_creation_instruction">انقر فوق أنشئ عنوان SimpleX في القائمة لإنشائه لاحقًا.</string>
<string name="message_deleted_or_not_received_error_desc">حُذفت هذه الرسالة أو لم يتم استلامها بعد.</string>
<string name="operator_use_for_messages">استخدم للرسائل</string>
<string name="onboarding_network_operators_app_will_use_different_operators">عندما تفعّل أكثر من مُشغل شبكة واحد، سيستخدم التطبيق خوادم مُشغلين مختلفين لكل مُحادثة.</string>
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[سيتم قبول الشروط للمُشغل/ين: <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_applied"><![CDATA[ستطبق هذه الشروط أيضًا على: <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[ستطبق نفس الشروط على المُشغل <b>%s</b>.]]></string>
</resources>
@@ -191,9 +191,9 @@
<string name="icon_descr_instant_notifications">Instant notifications</string>
<string name="service_notifications">Instant notifications!</string>
<string name="service_notifications_disabled">Instant notifications are disabled!</string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[To preserve your privacy, instead of push notifications the app has a <b>SimpleX background service</b> – it uses a few percent of the battery per day.]]></string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[To improve privacy, <b>SimpleX runs in background</b> instead of using push notifications.]]></string>
<string name="it_can_disabled_via_settings_notifications_still_shown"><![CDATA[<b>It can be disabled via settings</b> – notifications will still be shown while the app is running.]]></string>
<string name="turn_off_battery_optimization"><![CDATA[To use it, please <b>allow SimpleX to run in background</b> in the next dialog. Otherwise, the notifications will be disabled.]]></string>
<string name="turn_off_battery_optimization"><![CDATA[<b>Allow it</b> in the next dialog to receive notifications instantly.]]></string>
<string name="turning_off_service_and_periodic">Battery optimization is active, turning off background service and periodic requests for new messages. You can re-enable them via settings.</string>
<string name="periodic_notifications">Periodic notifications</string>
<string name="periodic_notifications_disabled">Periodic notifications are disabled!</string>
@@ -210,6 +210,7 @@
<string name="enter_passphrase_notification_desc">To receive notifications, please, enter the database passphrase</string>
<string name="database_initialization_error_title">Can\'t initialize the database</string>
<string name="database_initialization_error_desc">The database is not working correctly. Tap to learn more</string>
<string name="xiaomi_ignore_battery_optimization"><![CDATA[<b>Xiaomi devices</b>: please enable Autostart in the system settings for notifications to work.]]></string>
<!-- SimpleX Chat foreground Service -->
<string name="simplex_service_notification_title">SimpleX Chat service</string>
@@ -440,6 +441,10 @@
<string name="files_and_media_not_allowed">Files and media not allowed</string>
<string name="voice_messages_not_allowed">Voice messages not allowed</string>
<string name="compose_message_placeholder">Message</string>
<string name="maximum_message_size_title">Message is too large!</string>
<string name="maximum_message_size_reached_text">Please reduce the message size and send again.</string>
<string name="maximum_message_size_reached_non_text">Please reduce the message size or remove media and send again.</string>
<string name="maximum_message_size_reached_forwarding">You can copy and reduce the message size to send it.</string>
<!-- Images - chat.simplex.app.views.chat.item.CIImageView.kt -->
<string name="image_descr">Image</string>
@@ -931,6 +936,8 @@
<string name="simplex_address_or_1_time_link">SimpleX address or 1-time link?</string>
<string name="create_1_time_link">Create 1-time link</string>
<string name="address_settings">Address settings</string>
<string name="business_address">Business address</string>
<string name="add_your_team_members_to_conversations">Add your team members to the conversations.</string>
<!-- CreateSimpleXAddress.kt -->
<string name="continue_to_next_step">Continue</string>
@@ -1418,7 +1425,9 @@
<string name="youve_accepted_group_invitation_connecting_to_inviting_group_member">You joined this group. Connecting to inviting group member.</string>
<string name="leave_group_button">Leave</string>
<string name="leave_group_question">Leave group?</string>
<string name="leave_chat_question">Leave chat?</string>
<string name="you_will_stop_receiving_messages_from_this_group_chat_history_will_be_preserved">You will stop receiving messages from this group. Chat history will be preserved.</string>
<string name="you_will_stop_receiving_messages_from_this_chat_chat_history_will_be_preserved">You will stop receiving messages from this chat. Chat history will be preserved.</string>
<string name="icon_descr_add_members">Invite members</string>
<string name="icon_descr_group_inactive">Group inactive</string>
<string name="alert_title_group_invitation_expired">Invitation expired!</string>
@@ -1535,6 +1544,7 @@
<string name="initial_member_role">Initial role</string>
<string name="icon_descr_expand_role">Expand role selection</string>
<string name="invite_to_group_button">Invite to group</string>
<string name="invite_to_chat_button">Invite to chat</string>
<string name="skip_inviting_button">Skip inviting members</string>
<string name="select_contacts">Select contacts</string>
<string name="icon_descr_contact_checked">Contact checked</string>
@@ -1546,13 +1556,20 @@
<!-- GroupChatInfoView.kt -->
<string name="button_add_members">Invite members</string>
<string name="button_add_team_members">Add team members</string>
<string name="button_add_friends">Add friends</string>
<string name="group_info_section_title_num_members">%1$s MEMBERS</string>
<string name="group_info_member_you">you: %1$s</string>
<string name="button_delete_group">Delete group</string>
<string name="button_delete_chat">Delete chat</string>
<string name="delete_group_question">Delete group?</string>
<string name="delete_chat_question">Delete chat?</string>
<string name="delete_group_for_all_members_cannot_undo_warning">Group will be deleted for all members - this cannot be undone!</string>
<string name="delete_chat_for_all_members_cannot_undo_warning">Chat will be deleted for all members - this cannot be undone!</string>
<string name="delete_group_for_self_cannot_undo_warning">Group will be deleted for you - this cannot be undone!</string>
<string name="delete_chat_for_self_cannot_undo_warning">Chat will be deleted for you - this cannot be undone!</string>
<string name="button_leave_group">Leave group</string>
<string name="button_leave_chat">Leave chat</string>
<string name="button_edit_group_profile">Edit group profile</string>
<string name="button_add_welcome_message">Add welcome message</string>
<string name="button_welcome_message">Welcome message</string>
@@ -1569,6 +1586,7 @@
<string name="error_creating_member_contact">Error creating member contact</string>
<string name="error_sending_message_contact_invitation">Error sending invitation</string>
<string name="only_group_owners_can_change_prefs">Only group owners can change group preferences.</string>
<string name="only_chat_owners_can_change_prefs">Only chat owners can change preferences.</string>
<string name="address_section_title">Address</string>
<string name="share_address">Share address</string>
<string name="you_can_share_this_address_with_your_contacts">You can share this address with your contacts to let them connect with %s.</string>
@@ -1615,6 +1633,7 @@
<string name="button_send_direct_message">Send direct message</string>
<string name="member_will_be_removed_from_group_cannot_be_undone">Member will be removed from group - this cannot be undone!</string>
<string name="member_will_be_removed_from_chat_cannot_be_undone">Member will be removed from chat - this cannot be undone!</string>
<string name="remove_member_confirmation">Remove</string>
<string name="remove_member_button">Remove member</string>
<string name="block_member_question">Block member?</string>
@@ -1640,6 +1659,7 @@
<string name="switch_verb">Switch</string>
<string name="change_member_role_question">Change group role?</string>
<string name="member_role_will_be_changed_with_notification">The role will be changed to "%s". Everyone in the group will be notified.</string>
<string name="member_role_will_be_changed_with_notification_chat">The role will be changed to "%s". Everyone in the chat will be notified.</string>
<string name="member_role_will_be_changed_with_invitation">The role will be changed to "%s". The member will receive a new invitation.</string>
<string name="connect_via_member_address_alert_title">Connect directly?</string>
<string name="connect_via_member_address_alert_desc">Сonnection request will be sent to this group member.</string>
@@ -1647,6 +1667,7 @@
<string name="error_changing_role">Error changing role</string>
<string name="error_blocking_member_for_all">Error blocking member for all</string>
<string name="info_row_group">Group</string>
<string name="info_row_chat">Chat</string>
<string name="info_row_connection">Connection</string>
<string name="conn_level_desc_direct">direct</string>
<string name="conn_level_desc_indirect">indirect (%1$s)</string>
@@ -1694,6 +1715,7 @@
<string name="group_display_name_field">Enter group name:</string>
<string name="group_full_name_field">Group full name:</string>
<string name="group_main_profile_sent">Your chat profile will be sent to group members</string>
<string name="chat_main_profile_sent">Your chat profile will be sent to chat members</string>
<string name="create_group_button">Create group</string>
<!-- GroupProfileView.kt -->
@@ -1724,7 +1746,6 @@
<string name="operator_conditions_accepted_for_some"><![CDATA[Conditions are already accepted for following operator(s): <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[Same conditions will apply to operator <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[Same conditions will apply to operator(s): <b>%s</b>.]]></string>
<string name="operator_conditions_accepted_for_some"><![CDATA[Conditions are already accepted for following operator(s): <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_applied"><![CDATA[These conditions will also apply for: <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[Same conditions will apply to operator: <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[Conditions will be accepted for operator(s): <b>%s</b>.]]></string>
@@ -1949,20 +1970,22 @@
<string name="prohibit_sending_simplex_links">Prohibit sending SimpleX links</string>
<string name="enable_sending_recent_history">Send up to 100 last messages to new members.</string>
<string name="disable_sending_recent_history">Do not send history to new members.</string>
<string name="group_members_can_send_disappearing">Group members can send disappearing messages.</string>
<string name="disappearing_messages_are_prohibited">Disappearing messages are prohibited in this group.</string>
<string name="group_members_can_send_dms">Group members can send direct messages.</string>
<string name="direct_messages_are_prohibited_in_chat">Direct messages between members are prohibited in this group.</string>
<string name="group_members_can_delete">Group members can irreversibly delete sent messages. (24 hours)</string>
<string name="message_deletion_prohibited_in_chat">Irreversible message deletion is prohibited in this group.</string>
<string name="group_members_can_send_voice">Group members can send voice messages.</string>
<string name="voice_messages_are_prohibited">Voice messages are prohibited in this group.</string>
<string name="group_members_can_add_message_reactions">Group members can add message reactions.</string>
<string name="message_reactions_are_prohibited">Message reactions are prohibited in this group.</string>
<string name="group_members_can_send_files">Group members can send files and media.</string>
<string name="files_are_prohibited_in_group">Files and media are prohibited in this group.</string>
<string name="group_members_can_send_simplex_links">Group members can send SimpleX links.</string>
<string name="simplex_links_are_prohibited_in_group">SimpleX links are prohibited in this group.</string>
<string name="group_members_can_send_disappearing">Members can send disappearing messages.</string>
<string name="disappearing_messages_are_prohibited">Disappearing messages are prohibited.</string>
<string name="group_members_can_send_dms">Members can send direct messages.</string>
<string name="direct_messages_are_prohibited">Direct messages between members are prohibited.</string>
<string name="direct_messages_are_prohibited_in_group">Direct messages between members are prohibited in this group.</string>
<string name="direct_messages_are_prohibited_in_chat">Direct messages between members are prohibited in this chat.</string>
<string name="group_members_can_delete">Members can irreversibly delete sent messages. (24 hours)</string>
<string name="message_deletion_prohibited_in_chat">Irreversible message deletion is prohibited.</string>
<string name="group_members_can_send_voice">Members can send voice messages.</string>
<string name="voice_messages_are_prohibited">Voice messages are prohibited.</string>
<string name="group_members_can_add_message_reactions">Members can add message reactions.</string>
<string name="message_reactions_are_prohibited">Message reactions are prohibited.</string>
<string name="group_members_can_send_files">Members can send files and media.</string>
<string name="files_are_prohibited_in_group">Files and media are prohibited.</string>
<string name="group_members_can_send_simplex_links">Members can send SimpleX links.</string>
<string name="simplex_links_are_prohibited_in_group">SimpleX links are prohibited.</string>
<string name="recent_history_is_sent_to_new_members">Up to 100 last messages are sent to new members.</string>
<string name="recent_history_is_not_sent_to_new_members">History is not sent to new members.</string>
<string name="delete_after">Delete after</string>
@@ -2152,6 +2175,8 @@
<string name="v6_2_network_decentralization_enable_flux_reason">for better metadata privacy.</string>
<string name="v6_2_improved_chat_navigation">Improved chat navigation</string>
<string name="v6_2_improved_chat_navigation_descr">- Open chat on the first unread message.\n- Jump to quoted messages.</string>
<string name="v6_2_business_chats">Business chats</string>
<string name="v6_2_business_chats_descr">Privacy for your customers.</string>
<string name="view_updated_conditions">View updated conditions</string>
<!-- CustomTimePicker -->
@@ -2270,10 +2295,12 @@
<string name="connect_plan_open_group">Open group</string>
<string name="connect_plan_repeat_join_request">Repeat join request?</string>
<string name="connect_plan_group_already_exists">Group already exists!</string>
<string name="connect_plan_chat_already_exists">Chat already exists!</string>
<string name="connect_plan_you_are_already_joining_the_group_vName"><![CDATA[You are already joining the group <b>%1$s</b>.]]></string>
<string name="connect_plan_already_joining_the_group">Already joining the group!</string>
<string name="connect_plan_you_are_already_joining_the_group_via_this_link">You are already joining the group via this link.</string>
<string name="connect_plan_you_are_already_in_group_vName"><![CDATA[You are already in group <b>%1$s</b>.]]></string>
<string name="connect_plan_you_are_already_connected_with_vName"><![CDATA[You are already connected with <b>%1$s</b>.]]></string>
<string name="connect_plan_connect_via_link">Connect via link?</string>
<!-- Errors -->
@@ -89,8 +89,7 @@
<string name="network_session_mode_user_description"><![CDATA[Ще се използва отделна TCP връзка (и идентификационни данни за SOCKS) <b>за всеки чат профил, който имате в приложението</b>.]]></string>
<string name="icon_descr_audio_call">аудио разговор</string>
<string name="onboarding_notifications_mode_off_desc"><![CDATA[<b>Най-добро за батерията</b>. Ще получавате известия само когато приложението работи (БЕЗ фонова услуга).]]></string>
<string name="network_session_mode_entity_description">Ще се използва отделна TCP връзка (и идентификационни данни за SOCKS) <b>за всеки контакт и член на група</b>.
\n<b>Моля, обърнете внимание</b>: ако имате много връзки, консумацията на батерията и трафика може да бъде значително по-висока и някои връзки може да се провалят.</string>
<string name="network_session_mode_entity_description"><![CDATA[Ще се използва отделна TCP връзка (и идентификационни данни за SOCKS) <b>за всеки контакт и член на група</b>. \n<b>Моля, обърнете внимание</b>: ако имате много връзки, консумацията на батерията и трафика може да бъде значително по-висока и някои връзки може да се провалят.]]></string>
<string name="icon_descr_asked_to_receive">Помолен да получи изображението</string>
<string name="v4_6_audio_video_calls">Аудио и видео разговори</string>
<string name="audio_call_no_encryption">аудио разговор (не е e2e криптиран)</string>
@@ -461,7 +460,7 @@
<string name="timed_messages">Изчезващи съобщения</string>
<string name="feature_enabled">активирано</string>
<string name="feature_enabled_for_contact">активирано за контакт</string>
<string name="direct_messages_are_prohibited_in_chat">Личните съобщения между членовете са забранени в тази група.</string>
<string name="direct_messages_are_prohibited_in_group">Личните съобщения между членовете са забранени в тази група.</string>
<string name="v4_5_multiple_chat_profiles_descr">Различни имена, аватари и транспортна изолация.</string>
<string name="v5_2_fix_encryption_descr">Оправяне на криптирането след възстановяване от резервни копия.</string>
<string name="delivery_receipts_title">Потвърждениe за доставка!</string>
@@ -631,8 +631,7 @@
<string name="network_use_onion_hosts_no_desc">Onion hostitelé nebudou použiti.</string>
<string name="network_session_mode_transport_isolation">Izolace přenosu</string>
<string name="network_session_mode_user_description"><![CDATA[A separate TCP connection (and SOCKS credential) will be used <b>for each chat profile you have in the app</b>.]]></string>
<string name="network_session_mode_entity_description">Oddělit TCP připojení (a SOCKS pověření) bude použito <b>pro všechny kontakty a členy skupin</b>.
\n<b>Upozornění</b>: Pokud máte mnoho připojení, může být spotřeba baterie a provoz podstatně vyšší a některá připojení mohou selhat.</string>
<string name="network_session_mode_entity_description"><![CDATA[Oddělit TCP připojení (a SOCKS pověření) bude použito <b>pro všechny kontakty a členy skupin</b>. \n<b>Upozornění</b>: Pokud máte mnoho připojení, může být spotřeba baterie a provoz podstatně vyšší a některá připojení mohou selhat.]]></string>
<string name="appearance_settings">Vzhled</string>
<string name="app_version_title">Verze aplikace</string>
<string name="app_version_name">Verze aplikace: v%s</string>
@@ -898,7 +897,7 @@
<string name="group_members_can_send_disappearing">Členové skupiny mohou posílat mizící zprávy.</string>
<string name="disappearing_messages_are_prohibited">Mizící zprávy jsou v této skupině zakázány.</string>
<string name="group_members_can_send_dms">Členové skupiny mohou posílat přímé zprávy.</string>
<string name="direct_messages_are_prohibited_in_chat">Přímé zprávy mezi členy jsou v této skupině zakázány.</string>
<string name="direct_messages_are_prohibited_in_group">Přímé zprávy mezi členy jsou v této skupině zakázány.</string>
<string name="group_members_can_delete">Členové skupin mohou nevratně mazat odeslané zprávy. (24 hodin)</string>
<string name="message_deletion_prohibited_in_chat">Nevratné mazání zpráv je v této skupině zakázáno.</string>
<string name="group_members_can_send_voice">Členové skupiny mohou posílat hlasové zprávy.</string>
@@ -2041,4 +2040,6 @@
<string name="xftp_servers_other">Jiné FXTP servery</string>
<string name="action_button_add_members">Pozvat</string>
<string name="cant_call_member_send_message_alert_text">Pošlete zprávu pro povolení volání.</string>
<string name="accept_conditions">Přijmout podmínky</string>
<string name="operator_conditions_accepted">Přijaté podmínky</string>
</resources>
@@ -264,7 +264,7 @@
<string name="thank_you_for_installing_simplex">Danke, dass Sie SimpleX Chat installiert haben!</string>
<string name="you_can_connect_to_simplex_chat_founder"><![CDATA[Sie können sich <font color="#0088ff">mit den SimpleX-Chat-Entwicklern verbinden, um Fragen zu stellen und aktuelle Informationen zu erhalten</font>.]]></string>
<string name="to_start_a_new_chat_help_header">Um einen neuen Chat zu starten</string>
<string name="chat_help_tap_button">Schaltfläche antippen</string>
<string name="chat_help_tap_button">Schaltfläche tippen</string>
<string name="above_then_preposition_continuation">Danach die gewünschte Aktion auswählen:</string>
<string name="to_connect_via_link_title">Über Link verbinden</string>
<string name="if_you_received_simplex_invitation_link_you_can_open_in_browser">Wenn Sie einen SimpleX-Chat-Einladungslink erhalten haben, können Sie ihn in Ihrem Browser öffnen:</string>
@@ -875,7 +875,7 @@
<string name="allow_to_send_voice">Das Senden von Sprachnachrichten erlauben.</string>
<string name="prohibit_sending_voice">Das Senden von Sprachnachrichten nicht erlauben.</string>
<string name="group_members_can_send_dms">Gruppenmitglieder können Direktnachrichten versenden.</string>
<string name="direct_messages_are_prohibited_in_chat">In dieser Gruppe sind Direktnachrichten zwischen Mitgliedern nicht erlaubt.</string>
<string name="direct_messages_are_prohibited_in_group">In dieser Gruppe sind Direktnachrichten zwischen Mitgliedern nicht erlaubt.</string>
<string name="group_members_can_delete">Gruppenmitglieder können gesendete Nachrichten unwiederbringlich löschen (bis zu 24 Stunden).</string>
<string name="message_deletion_prohibited_in_chat">In dieser Gruppe ist das unwiederbringliche Löschen von Nachrichten nicht erlaubt.</string>
<string name="group_members_can_send_voice">Gruppenmitglieder können Sprachnachrichten versenden.</string>
@@ -989,9 +989,7 @@
<string name="network_session_mode_entity">Verbindung</string>
<string name="network_session_mode_user">Chat-Profil</string>
<string name="delete_files_and_media_for_all_users">Dateien für alle Chat-Profile löschen</string>
<string name="network_session_mode_entity_description"><b>Für jeden Kontakt und jedes Gruppenmitglied</b> wird eine separate TCP-Verbindung (und SOCKS-Berechtigung) genutzt.
\n
\n<b>Bitte beachten Sie</b>: Wenn Sie viele Verbindungen haben, können Akkuverbrauch und Datennutzung wesentlich höher ausfallen und einige Verbindungen scheitern.</string>
<string name="network_session_mode_entity_description"><![CDATA[<b>Für jeden Kontakt und jedes Gruppenmitglied</b> wird eine separate TCP-Verbindung (und SOCKS-Berechtigung) genutzt.\n<b>Bitte beachten Sie</b>: Wenn Sie viele Verbindungen haben, können Akkuverbrauch und Datennutzung wesentlich höher ausfallen und einige Verbindungen scheitern.]]></string>
<string name="network_session_mode_user_description"><![CDATA[<b>Für jedes von Ihnen in der App genutzte Chat-Profil</b> wird eine separate TCP-Verbindung (und SOCKS-Berechtigung) genutzt.]]></string>
<string name="users_delete_data_only">Nur lokale Profildaten</string>
<string name="users_delete_with_connections">Profil und Serververbindungen</string>
@@ -1235,7 +1233,7 @@
<string name="if_you_cant_meet_in_person">Falls Sie sich nicht persönlich treffen können, zeigen Sie den QR-Code in einem Videoanruf oder teilen Sie den Link.</string>
<string name="read_more_in_user_guide_with_link"><![CDATA[Lesen Sie mehr dazu in der <font color="#0088ff">Benutzeranleitung</font>.]]></string>
<string name="import_theme_error_desc">Stellen Sie sicher, dass die Datei die korrekte YAML-Syntax hat. Exportieren Sie das Design, um ein Beispiel für die Dateistruktur des Designs zu erhalten.</string>
<string name="auth_open_chat_profiles">Offene Chat-Profile</string>
<string name="auth_open_chat_profiles">Chat-Profile wechseln</string>
<string name="you_can_share_your_address">Sie können Ihre Adresse als Link oder QR-Code teilen – jede Person kann sich mit Ihnen verbinden.</string>
<string name="all_app_data_will_be_cleared">Werden die App-Daten komplett gelöscht.</string>
<string name="empty_chat_profile_is_created">Es wurde ein leeres Chat-Profil mit dem eingegebenen Namen erstellt und die App öffnet wie gewohnt.</string>
@@ -2200,4 +2198,99 @@
<string name="v6_1_better_security">Verbesserte Sicherheit ✅</string>
<string name="v6_1_message_dates_descr">Verbesserte Nachrichten-Datumsinformation</string>
<string name="v6_1_better_user_experience">Verbesserte Nutzer-Erfahrung</string>
<string name="failed_to_save_servers">Fehler beim Speichern der Server</string>
<string name="no_message_servers_configured">Keine Nachrichten-Server.</string>
<string name="no_message_servers_configured_for_receiving">Keine Server für den Empfang von Nachrichten.</string>
<string name="errors_in_servers_configuration">Fehler in der Server-Konfiguration.</string>
<string name="for_chat_profile">Für das Chat-Profil %s:</string>
<string name="no_media_servers_configured">Keine Medien- und Dateiserver.</string>
<string name="no_media_servers_configured_for_private_routing">Keine Server für den Empfang von Dateien.</string>
<string name="no_media_servers_configured_for_sending">Keine Server für das Versenden von Dateien.</string>
<string name="connection_error_quota">Nicht ausgelieferte Nachrichten</string>
<string name="share_simplex_address_on_social_media">Die SimpleX-Adresse auf sozialen Medien teilen.</string>
<string name="connection_security">Verbindungs-Sicherheit</string>
<string name="share_1_time_link_with_a_friend">Den Einmal-Einladungslink mit einem Freund teilen</string>
<string name="simplex_address_and_1_time_links_are_safe_to_share">Die SimpleX-Adresse und Einmal-Links können sicher über beliebige Messenger geteilt werden.</string>
<string name="you_can_set_connection_name_to_remember">Sie können einen Verbindungsnamen festlegen, um sich zu merken, mit wem der Link geteilt wurde.</string>
<string name="address_settings">Adress-Einstellungen</string>
<string name="create_1_time_link">Einmal-Link erstellen</string>
<string name="for_social_media">Für soziale Medien</string>
<string name="or_to_share_privately">Oder zum privaten Teilen</string>
<string name="simplex_address_or_1_time_link">SimpleX-Adresse oder Einmal-Link?</string>
<string name="onboarding_choose_server_operators">Betreiber auswählen</string>
<string name="onboarding_network_operators">Netzwerk-Betreiber</string>
<string name="onboarding_network_operators_app_will_use_different_operators">Wenn mehr als ein Netzwerk-Betreiber aktiviert ist, verwendet die App für jede Unterhaltung Server der verschiedenen Betreiber.</string>
<string name="onboarding_network_operators_conditions_will_be_accepted">Die Nutzungsbedingungen der aktivierten Betreiber werden nach 30 Tagen akzeptiert.</string>
<string name="onboarding_network_operators_app_will_use_for_routing">Wenn Sie beispielsweise Nachrichten über einen SimpleX-Chatserver empfangen, verwendet die App einen der Server von Flux für die private Weiterleitung.</string>
<string name="onboarding_network_operators_review_later">Später einsehen</string>
<string name="onboarding_select_network_operators_to_use">Wählen sie die zu nutzenden Netzwerk-Betreiber aus.</string>
<string name="onboarding_network_operators_conditions_you_can_configure">Sie können die Betreiber in den Netzwerk- und Servereinstellungen konfigurieren.</string>
<string name="onboarding_network_operators_configure_via_settings">Sie können die Server über die Einstellungen konfigurieren.</string>
<string name="onboarding_network_operators_continue">Weiter</string>
<string name="onboarding_network_operators_update">Aktualisieren</string>
<string name="network_preset_servers_title">Voreingestellte Server</string>
<string name="operator_review_conditions">Nutzungsbedingungen einsehen</string>
<string name="operator_conditions_accepted_for_enabled_operators_on">Die Nutzungsbedingungen der aktivierten Betreiber werden automatisch akzeptiert am: %s.</string>
<string name="your_servers">Ihre Server</string>
<string name="operator">Betreiber</string>
<string name="operator_servers_title">%s Server</string>
<string name="operator_info_title">Netzwerk-Betreiber</string>
<string name="operator_use_operator_toggle_description">Verwende Server</string>
<string name="operator_website">Webseite</string>
<string name="use_servers_of_operator_x">Verwende %s</string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[Dieselben Nutzungsbedingungen gelten auch für den Betreiber <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[Dieselben Nutzungsbedingungen gelten auch für den/die Betreiber: <b>%s</b>.]]></string>
<string name="operator_conditions_of_use">Nutzungsbedingungen</string>
<string name="view_conditions">Nutzungsbedingungen anschauen</string>
<string name="accept_conditions">Nutzungsbedingungen akzeptieren</string>
<string name="operators_conditions_will_also_apply"><![CDATA[Diese Nutzungsbedingungen gelten auch für: <b>%s</b>.]]></string>
<string name="operator_use_for_messages_receiving">Für den Empfang</string>
<string name="operator_use_for_messages">Für Nachrichten verwenden</string>
<string name="operator_added_message_servers">Nachrichtenserver hinzugefügt</string>
<string name="operator_use_for_messages_private_routing">Für privates Routing</string>
<string name="xftp_servers_per_user">Die Server Deines aktuellen Chat-Profils für neue Dateien</string>
<string name="operator_use_for_sending">Für das Senden</string>
<string name="operator_use_for_files">Für Dateien verwenden</string>
<string name="error_adding_server">Fehler beim Hinzufügen des Servers</string>
<string name="operator_open_changes">Änderungen öffnen</string>
<string name="operator_open_conditions">Nutzungsbedingungen öffnen</string>
<string name="operator_server_alert_title">Betreiber-Server</string>
<string name="server_added_to_operator__name">Der Server wurde dem Betreiber %s hinzugefügt.</string>
<string name="error_server_operator_changed">Der Server-Betreiber wurde geändert.</string>
<string name="error_server_protocol_changed">Das Server-Protokoll wurde geändert.</string>
<string name="appearance_in_app_bars_alpha">Transparenz</string>
<string name="v6_2_network_decentralization_enable_flux">Flux aktivieren</string>
<string name="v6_2_network_decentralization">Dezentralisiertes Netzwerk</string>
<string name="v6_2_network_decentralization_descr">Der zweite voreingestellte Netzwerk-Betreiber in der App!</string>
<string name="v6_2_improved_chat_navigation">Verbesserte Chat-Navigation</string>
<string name="v6_2_improved_chat_navigation_descr">- Den Chat bei der ersten ungelesenen Nachricht öffnen.\n- Zu zitierten Nachrichten springen.</string>
<string name="view_updated_conditions">Aktualisierte Nutzungsbedingungen anschauen</string>
<string name="operator_conditions_accepted">Akzeptierte Nutzungsbedingungen</string>
<string name="operator_added_xftp_servers">Medien- und Dateiserver hinzugefügt</string>
<string name="address_or_1_time_link">Adress- oder Einmal-Link?</string>
<string name="appearance_app_toolbars">App-Symbolleiste</string>
<string name="appearance_bars_blur_radius">Verpixeln</string>
<string name="one_time_link_can_be_used_with_one_contact_only"><![CDATA[Ein Einmal-Link kann <i>nur mit einem Kontakt</i> genutzt werden - teilen Sie in nur persönlich oder über einen beliebigen Messenger.]]></string>
<string name="operator_conditions_accepted_for_some"><![CDATA[Die Nutzungsbedingungen der/des folgenden Betreiber(s) wurden schon akzeptiert: <b>%s</b>.]]></string>
<string name="operators_conditions_will_be_accepted_for"><![CDATA[Die Nutzungsbedingungen der/des Betreiber(s) werden akzeptiert: <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_accepted_on">Die Nutzungsbedingungen werden akzeptiert am: %s.</string>
<string name="operator_conditions_will_be_applied"><![CDATA[Diese Nutzungsbedingungen gelten auch für: <b>%s</b>.]]></string>
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[Um die Server von <b>%s</b> zu nutzen, müssen Sie dessen Nutzungsbedingungen akzeptieren.]]></string>
<string name="error_accepting_operator_conditions">Fehler beim Akzeptieren der Nutzungsbedingungen</string>
<string name="error_updating_server_title">Fehler beim Aktualisieren des Servers</string>
<string name="v6_2_network_decentralization_enable_flux_reason">für einen besseren Metadatenschutz.</string>
<string name="smp_servers_new_server">Neuer Server</string>
<string name="message_deleted_or_not_received_error_title">Keine Nachricht</string>
<string name="no_message_servers_configured_for_private_routing">Keine Server für privates Nachrichten-Routing.</string>
<string name="share_address_publicly">Die Adresse öffentlich teilen</string>
<string name="address_creation_instruction">Tippen Sie im Menü auf SimpleX-Adresse erstellen, um sie später zu erstellen.</string>
<string name="connection_error_quota_desc">Diese Verbindung hat das Limit der nicht ausgelieferten Nachrichten erreicht. Ihr Kontakt ist möglicherweise offline.</string>
<string name="message_deleted_or_not_received_error_desc">Diese Nachricht wurde gelöscht oder bisher noch nicht empfangen.</string>
<string name="to_protect_against_your_link_replaced_compare_codes">Zum Schutz vor dem Austausch Ihres Links können Sie die Sicherheitscodes Ihrer Kontakte vergleichen.</string>
<string name="operators_conditions_accepted_for"><![CDATA[Die Nutzungsbedingungen der/des Betreiber(s) werden akzeptiert: <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[Die Nutzungsbedingungen der/des Betreiber(s) werden akzeptiert: <b>%s</b>.]]></string>
<string name="operator_conditions_accepted_on">Die Nutzungsbedingungen wurden akzeptiert am: %s.</string>
<string name="operator_conditions_failed_to_load">Der Text der aktuellen Nutzungsbedingungen konnte nicht geladen werden. Sie können die Nutzungsbedingungen unter diesem Link einsehen:</string>
<string name="remote_hosts_section">Ferngesteuerte Mobiltelefone</string>
<string name="chat_archive">Oder importieren Sie eine Archiv-Datei</string>
</resources>
@@ -82,7 +82,7 @@
<string name="create_group">Crea grupo secreto</string>
<string name="database_passphrase_will_be_updated">La contraseña de cifrado de la base de datos será actualizada.</string>
<string name="info_row_database_id">ID base de datos</string>
<string name="direct_messages_are_prohibited_in_chat">Los mensajes directos entre miembros del grupo no están permitidos.</string>
<string name="direct_messages_are_prohibited_in_group">Los mensajes directos entre miembros del grupo no están permitidos.</string>
<string name="passphrase_is_different">La contraseña de la base de datos es diferente a la almacenada en Keystore.</string>
<string name="database_will_be_encrypted_and_passphrase_stored">La base de datos será cifrada y la contraseña se guardará en Keystore.</string>
<string name="delete_contact_question">¿Eliminar contacto\?</string>
@@ -1101,7 +1101,7 @@
<string name="v5_0_polish_interface_descr">¡Nuestro agradecimiento a todos los colaboradores! Puedes contribuir a través de Weblate.</string>
<string name="v5_0_large_files_support">Vídeos y archivos de hasta 1Gb</string>
<string name="v5_0_large_files_support_descr">¡Rápido y sin necesidad de esperar a que el remitente esté en línea!</string>
<string name="auth_open_chat_profiles">Abrir perfiles</string>
<string name="auth_open_chat_profiles">Cambiar perfil</string>
<string name="learn_more">Más información</string>
<string name="if_you_cant_meet_in_person">Si no puedes reunirte en persona, muestra el código QR por videollamada o comparte el enlace.</string>
<string name="scan_qr_to_connect_to_contact">Para conectarse, tu contacto puede escanear el código QR o usar el enlace en la aplicación.</string>
@@ -1111,7 +1111,7 @@
<string name="opening_database">Abriendo base de datos…</string>
<string name="error_setting_address">Error al introducir dirección</string>
<string name="read_more_in_user_guide_with_link"><![CDATA[Conoce más en la <font color="#0088ff">Guía de Usuario</font>.]]></string>
<string name="one_time_link_short">Enlace un uso</string>
<string name="one_time_link_short">Enlace de un uso</string>
<string name="simplex_address">Dirección SimpleX</string>
<string name="you_can_accept_or_reject_connection">Cuando alguien solicite conectarse podrás aceptar o rechazar su solicitud.</string>
<string name="share_address">Compartir dirección</string>
@@ -1927,7 +1927,7 @@
<string name="app_check_for_updates_button_open">Abrir ubicación del archivo</string>
<string name="app_check_for_updates_installed_successfully_desc">Por favor, reinicia la aplicación.</string>
<string name="app_check_for_updates_button_remind_later">Recordar más tarde</string>
<string name="app_check_for_updates_button_skip">Saltar esta versión</string>
<string name="app_check_for_updates_button_skip">Omitir esta versión</string>
<string name="app_check_for_updates_stable">Estable</string>
<string name="member_info_member_inactive">inactivo</string>
<string name="servers_info_modal_error_title">Error</string>
@@ -2058,7 +2058,7 @@
<string name="v6_0_new_media_options">Nuevas opciones multimedia</string>
<string name="one_hand_ui_change_instruction">Puedes cambiar la posición de la barra desde el menú Apariencia.</string>
<string name="v6_0_upgrade_app_descr">Descarga nuevas versiones desde GitHub.</string>
<string name="new_message">Nuevo mensaje</string>
<string name="new_message">Mensaje nuevo</string>
<string name="error_parsing_uri_title">Enlace no válido</string>
<string name="error_parsing_uri_desc">Por favor, comprueba que el enlace SimpleX es correcto.</string>
<string name="forward_files_in_progress_desc">%1$d archivo(s) se está(n) descargando todavía.</string>
@@ -2119,4 +2119,99 @@
<string name="v6_1_better_security">Seguridad mejorada ✅</string>
<string name="v6_1_delete_many_messages_descr">Borra o modera hasta 200 mensajes a la vez.</string>
<string name="v6_1_switch_chat_profile_descr">Cambia el perfil de chat para invitaciones de un solo uso.</string>
<string name="failed_to_save_servers">Error al guardar servidores</string>
<string name="errors_in_servers_configuration">Error en la configuración del servidor.</string>
<string name="for_chat_profile">Para el perfil de chat %s:</string>
<string name="no_message_servers_configured">Ningún servidor de mensajes.</string>
<string name="no_media_servers_configured_for_private_routing">Ningún servidor para recibir archivos.</string>
<string name="no_media_servers_configured_for_sending">Ningún servidor para enviar archivos.</string>
<string name="connection_security">Seguridad de conexión</string>
<string name="share_1_time_link_with_a_friend">Compartir enlace de un uso con un amigo</string>
<string name="share_simplex_address_on_social_media">Compartir dirección SimpleX en redes sociales.</string>
<string name="address_settings">Configuración de dirección</string>
<string name="create_1_time_link">Crear enlace de un uso</string>
<string name="for_social_media">Para redes sociales</string>
<string name="simplex_address_or_1_time_link">Dirección SimpleX o enlace de un uso?</string>
<string name="onboarding_choose_server_operators">Selecciona operadores</string>
<string name="onboarding_network_operators">Operadores de red</string>
<string name="onboarding_network_operators_conditions_will_be_accepted">Las condiciones de los operadores habilitados serán aceptadas después de 30 días.</string>
<string name="onboarding_network_operators_review_later">Revisar más tarde</string>
<string name="operator_conditions_accepted_on">Condiciones aceptadas el: %s.</string>
<string name="operator_info_title">Operador de red</string>
<string name="operator">Operador</string>
<string name="network_preset_servers_title">Servidores predefinidos</string>
<string name="operator_review_conditions">Revisar condiciones</string>
<string name="operator_servers_title">%s servidores</string>
<string name="operator_conditions_will_be_accepted_on">Las condiciones serán aceptadas el: %s.</string>
<string name="operator_conditions_of_use">Condiciones de uso</string>
<string name="operator_use_for_messages_private_routing">Para el enrutamiento privado</string>
<string name="error_adding_server">Error al añadir servidor</string>
<string name="operator_open_changes">Abrir cambios</string>
<string name="operator_open_conditions">Abrir condiciones</string>
<string name="server_added_to_operator__name">Servidor añadido al operador %s.</string>
<string name="error_server_operator_changed">El operador del servidor ha cambiado.</string>
<string name="error_server_protocol_changed">El protocolo del servidor ha cambiado.</string>
<string name="appearance_app_toolbars">Barras de herramientas</string>
<string name="appearance_bars_blur_radius">Difuminar</string>
<string name="v6_2_improved_chat_navigation">Navegación en el chat mejorada</string>
<string name="v6_2_network_decentralization">Descentralización de la red</string>
<string name="v6_2_improved_chat_navigation_descr">- El chat abre en el primer mensaje no leído.\n- Desplazamiento hasta los mensajes citados.</string>
<string name="accept_conditions">Aceptar condiciones</string>
<string name="operator_conditions_accepted">Condiciones aceptadas</string>
<string name="operator_added_xftp_servers">Servidores de archivos y multimedia añadidos</string>
<string name="operator_added_message_servers">Servidores de mensajes añadidos</string>
<string name="address_or_1_time_link">¿Dirección o enlace de un uso?</string>
<string name="operator_conditions_accepted_for_enabled_operators_on">Las condiciones serán aceptadas automáticamente para los operadores habilitados el: %s.</string>
<string name="onboarding_network_operators_continue">Continuar</string>
<string name="operator_conditions_failed_to_load">El texto con las condiciones actuales no se ha podido cargar, puedes revisar las condiciones en el siguiente enlace:</string>
<string name="v6_2_network_decentralization_enable_flux">Habilitar Flux</string>
<string name="error_accepting_operator_conditions">Error al aceptar las condiciones</string>
<string name="error_updating_server_title">Error al actualizar el servidor</string>
<string name="v6_2_network_decentralization_enable_flux_reason">para mayor privacidad de los metadatos.</string>
<string name="message_deleted_or_not_received_error_title">Ningún mensaje</string>
<string name="smp_servers_new_server">Servidor nuevo</string>
<string name="no_media_servers_configured">Ningún servidor de archivos y multimedia.</string>
<string name="no_message_servers_configured_for_private_routing">Ningún servidor para enrutamiento privado.</string>
<string name="no_message_servers_configured_for_receiving">Ningún servidor para recibir mensajes.</string>
<string name="operator_server_alert_title">Servidor del operador</string>
<string name="or_to_share_privately">O para compartir en privado</string>
<string name="onboarding_select_network_operators_to_use">Selecciona los operadores de red a utilizar</string>
<string name="share_address_publicly">Campartir dirección públicamente</string>
<string name="simplex_address_and_1_time_links_are_safe_to_share">Compartir enlaces de un uso y direcciones SimpleX es seguro a través de cualquier medio.</string>
<string name="onboarding_network_operators_update">Actualizar</string>
<string name="operator_website">Sitio web</string>
<string name="your_servers">Tus servidores</string>
<string name="use_servers_of_operator_x">Usar %s</string>
<string name="operator_use_operator_toggle_description">Usar servidores</string>
<string name="operator_use_for_messages">Usar para mensajes</string>
<string name="view_conditions">Ver condiciones</string>
<string name="operator_use_for_messages_receiving">Para recibir</string>
<string name="operator_use_for_sending">Para enviar</string>
<string name="operator_use_for_files">Usar para archivos</string>
<string name="appearance_in_app_bars_alpha">Transparencia</string>
<string name="view_updated_conditions">Ver condiciones actualizadas</string>
<string name="connection_error_quota">Mensajes no entregados</string>
<string name="one_time_link_can_be_used_with_one_contact_only"><![CDATA[Los enlaces de un uso pueden ser usados <i>solamente con un contacto</i> - comparte en persona o mediante cualquier aplicación de mensajería.]]></string>
<string name="you_can_set_connection_name_to_remember">Puedes añadir un nombre a la conexión para recordar a quién corresponde.</string>
<string name="onboarding_network_operators_app_will_use_different_operators">Cuando está habilitado más de un operador de red, la aplicación usa servidores de diferentes operadores para cada conversación.</string>
<string name="onboarding_network_operators_conditions_you_can_configure">Puedes configurar los operadores desde Servidores y Redes.</string>
<string name="operators_conditions_accepted_for"><![CDATA[Las condiciones se han aceptado para el(los) operador(s): <b>%s</b>.]]></string>
<string name="operators_conditions_will_be_accepted_for"><![CDATA[Las condiciones serán aceptadas para el/los operador(es): <b>%s</b>.]]></string>
<string name="operator_conditions_accepted_for_some"><![CDATA[Las condiciones ya se han aceptado para el/los siguiente(s) operador(s): <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[Las mismas condiciones se aplicarán al operador <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[Las condiciones serán aceptadas para el/los operador(es): <b>%s</b>.]]></string>
<string name="operators_conditions_will_also_apply"><![CDATA[Estas condiciones también se aplican para: <b>%s</b>.]]></string>
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[Para usar los servidores de <b>%s</b>, acepta las condiciones de uso.]]></string>
<string name="xftp_servers_per_user">Los servidores para archivos nuevos en tu perfil actual</string>
<string name="v6_2_network_decentralization_descr">El segundo operador predefinido!</string>
<string name="onboarding_network_operators_configure_via_settings">Puedes configurar los servidores a través de su configuración.</string>
<string name="to_protect_against_your_link_replaced_compare_codes">Para protegerte contra una sustitución del enlace, puedes comparar los códigos de seguridad con tu contacto.</string>
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[Las mismas condiciones se aplicarán a el/los operador(es) <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_applied"><![CDATA[Estas condiciones también se aplican para: <b>%s</b>.]]></string>
<string name="onboarding_network_operators_app_will_use_for_routing">Si por ejemplo recibes los mensajes a través de un servidor de SimpleX Chat, la aplicación usará uno de Flux para el enrutamiento privado.</string>
<string name="address_creation_instruction">Pulsa Crear dirección SimpleX en el menú para crearla más tarde.</string>
<string name="connection_error_quota_desc">La conexión ha alcanzado el límite de mensajes no entregados. es posible que tu contacto esté desconectado.</string>
<string name="message_deleted_or_not_received_error_desc">El mensaje ha sido borrado o aún no se ha recibido.</string>
<string name="remote_hosts_section">Móvil remoto</string>
<string name="chat_archive">O importa desde un archivo</string>
</resources>
@@ -636,8 +636,7 @@
<string name="all_your_contacts_will_remain_connected_update_sent">تمام مخاطبانتان متصل باقی خواهند ماند. به‌روزرسانی نمایه به مخاطبانتان ارسال خواهد شد.</string>
<string name="network_disable_socks_info">اگر تایید کنید، سرورهای پیام‌رسانی خواهند توانست نشانی‌ IP، و فراهم‌کننده شما را ببینند - و این که به چه سرورهایی متصل می‌شوید.</string>
<string name="ensure_ICE_server_address_are_correct_format_and_unique">مطمئن شوید قالب نشانی‌های سرور WebRTC ICE صحیح است، در خط‌های جدا نوشته شده و تکرار نشده‌اند.</string>
<string name="network_session_mode_entity_description">یک اتصال جدای TCP (و اطلاعات ورود SOCKS) <b>برای هر مخاطب و عضو گروه</b> استفاده خواهد شد.
\n<b>لطفا توجه داشته باشید</b>: اگر اتصال‌های زیادی داشته باشید، مصرف باتری و ترافیک شما می‌تواند به شکل قابل توجه بالاتر باشد و بعضی اتصال‌ها ممکن است با موفقیت انجام نشوند.</string>
<string name="network_session_mode_entity_description"><![CDATA[یک اتصال جدای TCP (و اطلاعات ورود SOCKS) <b>برای هر مخاطب و عضو گروه</b> استفاده خواهد شد. \n<b>لطفا توجه داشته باشید</b>: اگر اتصال‌های زیادی داشته باشید، مصرف باتری و ترافیک شما می‌تواند به شکل قابل توجه بالاتر باشد و بعضی اتصال‌ها ممکن است با موفقیت انجام نشوند.]]></string>
<string name="update_network_session_mode_question">حالت انزوای ترابری به روز شود؟</string>
<string name="edit_image">ویرایش تصویر</string>
<string name="create_simplex_address">ایجاد نشانی‌ SimpleX</string>
@@ -1416,7 +1415,7 @@
<string name="disable_sending_recent_history">عدم ارسال تاریخچه به اعضای جدید.</string>
<string name="group_members_can_send_disappearing">اعضای گروه می‌توانند پیام‌های ناپدید شونده ارسال کنند.</string>
<string name="group_members_can_send_dms">اعضای گروه می‌توانند پیام‌های مستقیم ارسال کنند.</string>
<string name="direct_messages_are_prohibited_in_chat">پیام‌های مستقیم بین اعضا در این گروه ممنوع هستند.</string>
<string name="direct_messages_are_prohibited_in_group">پیام‌های مستقیم بین اعضا در این گروه ممنوع هستند.</string>
<string name="message_deletion_prohibited_in_chat">حذف غیرقابل برگشت در این گروه ممنوع است.</string>
<string name="voice_messages_are_prohibited">پیام‌های صوتی در این گروه ممنوع هستند.</string>
<string name="message_reactions_are_prohibited">واکنش‌های پیام در این گروه ممنوع هستند.</string>
@@ -251,8 +251,7 @@
<string name="button_delete_contact">Poista kontakti</string>
<string name="above_then_preposition_continuation">Yllä, sitten:</string>
<string name="network_session_mode_user">Keskustelujen profiili</string>
<string name="network_session_mode_entity_description"><b>Jokaiselle kontaktille ja ryhmän jäsenelle</b> käytetään erillistä TCP-yhteyttä (ja SOCKS-tunnistetietoja).
\n<b>Huomaa</b>: jos sinulla on useita yhteyksiä, akun ja data-liikenteen määrä voi olla huomattavasti korkeampi ja jotkin yhteydet voivat epäonnistua.</string>
<string name="network_session_mode_entity_description"><![CDATA[<b>Jokaiselle kontaktille ja ryhmän jäsenelle</b> käytetään erillistä TCP-yhteyttä (ja SOCKS-tunnistetietoja). \n<b>Huomaa</b>: jos sinulla on useita yhteyksiä, akun ja data-liikenteen määrä voi olla huomattavasti korkeampi ja jotkin yhteydet voivat epäonnistua.]]></string>
<string name="icon_descr_audio_call">Äänipuhelu</string>
<string name="onboarding_notifications_mode_off_desc"><![CDATA[<b>Paras akulle</b>. Saat ilmoituksia vain, kun sovellus on käynnissä (EI taustapalvelua).]]></string>
<string name="ttl_hours">%d tuntia</string>
@@ -340,7 +339,7 @@
<string name="both_you_and_your_contact_can_add_message_reactions">Sekä sinä että kontaktisi voivat käyttää viestireaktioita.</string>
<string name="both_you_and_your_contacts_can_delete">Sekä sinä että kontaktisi voitte peruuttamattomasti poistaa lähetetyt viestit.</string>
<string name="both_you_and_your_contact_can_make_calls">Sekä sinä että kontaktisi voitte soittaa puheluita.</string>
<string name="direct_messages_are_prohibited_in_chat">Yksityisviestit jäsenten välillä ovat kiellettyjä tässä ryhmässä.</string>
<string name="direct_messages_are_prohibited_in_group">Yksityisviestit jäsenten välillä ovat kiellettyjä tässä ryhmässä.</string>
<string name="v4_5_transport_isolation_descr">Chat-profiilin (oletus) tai yhteyden (BETA) perusteella.</string>
<string name="feature_cancelled_item">peruttu %s</string>
<string name="ttl_day">%d päivä</string>
@@ -856,7 +856,7 @@
<string name="prohibit_sending_disappearing">Interdire l’envoi de messages éphémères.</string>
<string name="prohibit_message_deletion">Interdire la suppression irréversible des messages.</string>
<string name="group_members_can_send_dms">Les membres du groupe peuvent envoyer des messages directs.</string>
<string name="direct_messages_are_prohibited_in_chat">Les messages directs entre membres sont interdits dans ce groupe.</string>
<string name="direct_messages_are_prohibited_in_group">Les messages directs entre membres sont interdits dans ce groupe.</string>
<string name="v4_4_live_messages_desc">Les destinataires voient les mises à jour au fur et à mesure que vous les tapez.</string>
<string name="v4_4_verify_connection_security">Vérifier la sécurité de la connexion</string>
<string name="v4_4_verify_connection_security_desc">Comparez les codes de sécurité avec vos contacts.</string>
@@ -907,8 +907,7 @@
<string name="users_delete_with_connections">Profil et connexions au serveur</string>
<string name="network_session_mode_transport_isolation">Transport isolé</string>
<string name="update_network_session_mode_question">Mettre à jour le mode d\'isolement du transport \?</string>
<string name="network_session_mode_entity_description">Une connexion TCP distincte (et identifiant SOCKS) sera utilisée <b>pour chaque contact et membre de groupe</b>.
\n<b>Veuillez noter</b> : si vous avez de nombreuses connexions, votre consommation de batterie et de réseau peut être nettement plus élevée et certaines liaisons peuvent échouer.</string>
<string name="network_session_mode_entity_description"><![CDATA[Une connexion TCP distincte (et identifiant SOCKS) sera utilisée <b>pour chaque contact et membre de groupe</b>. \n<b>Veuillez noter</b> : si vous avez de nombreuses connexions, votre consommation de batterie et de réseau peut être nettement plus élevée et certaines liaisons peuvent échouer.]]></string>
<string name="network_session_mode_user">Profil de chat</string>
<string name="users_add">Ajouter un profil</string>
<string name="users_delete_data_only">Données de profil local uniquement</string>
@@ -13,7 +13,7 @@
<string name="abort_switch_receiving_address_question">Címváltoztatás megszakítása?</string>
<string name="abort_switch_receiving_address_confirm">Megszakítás</string>
<string name="send_disappearing_message_30_seconds">30 másodperc</string>
<string name="one_time_link_short">Egyszer használható hivatkozás</string>
<string name="one_time_link_short">Egyszer használható meghívó-hivatkozás</string>
<string name="contact_wants_to_connect_via_call">%1$s szeretne kapcsolatba lépni Önnel ezen keresztül:</string>
<string name="about_simplex_chat">A SimpleX Chatről</string>
<string name="chat_item_ttl_day">1 nap</string>
@@ -102,7 +102,7 @@
<string name="onboarding_notifications_mode_service_desc"><![CDATA[<b>Több akkumulátort használ</b>! Az alkalmazás mindig fut a háttérben - az értesítések azonnal megjelennek.]]></string>
<string name="block_member_confirmation">Letiltás</string>
<string name="group_member_role_admin">adminisztrátor</string>
<string name="icon_descr_cancel_image_preview">Fénykép előnézet visszavonása</string>
<string name="icon_descr_cancel_image_preview">Képelőnézet visszavonása</string>
<string name="v5_1_self_destruct_passcode_descr">A jelkód megadása után az összes adat törlésre kerül.</string>
<string name="icon_descr_video_asked_to_receive">Felkérték a videó fogadására</string>
<string name="block_member_button">Letiltás</string>
@@ -200,7 +200,7 @@
<string name="v5_4_incognito_groups_descr">Csoport létrehozása véletlenszerű profillal.</string>
<string name="delete_contact_all_messages_deleted_cannot_undo_warning">Az ismerős és az összes üzenet törlésre kerül - ez a művelet nem vonható vissza!</string>
<string name="contacts_can_mark_messages_for_deletion">Az ismerősei törlésre jelölhetnek üzeneteket; Ön majd meg tudja nézni azokat.</string>
<string name="connect_via_invitation_link">Kapcsolódás egyszer használható hivatkozással?</string>
<string name="connect_via_invitation_link">Kapcsolódás egyszer használható meghívó-hivatkozással?</string>
<string name="connect_via_link_or_qr">Kapcsolódás egy hivatkozáson vagy QR-kódon keresztül</string>
<string name="connection_error_auth">Kapcsolódási hiba (AUTH)</string>
<string name="notification_preview_mode_contact">Csak név</string>
@@ -234,9 +234,7 @@
<string name="receipts_section_contacts">Ismerősök</string>
<string name="connection_error">Kapcsolódási hiba</string>
<string name="alert_title_contact_connection_pending">Az ismerős még nem kapcsolódott!</string>
<string name="v5_3_discover_join_groups_descr">- kapcsolódás könyvtár szolgáltatáshoz (BÉTA)!
\n- kézbesítési jelentések (20 tagig).
\n- gyorsabb és stabilabb.</string>
<string name="v5_3_discover_join_groups_descr">- kapcsolódás könyvtár szolgáltatáshoz (BÉTA)!\n- kézbesítési jelentések (20 tagig).\n- gyorsabb és stabilabb.</string>
<string name="contribute">Hozzájárulás</string>
<string name="group_member_status_intro_invitation">kapcsolódás (bemutatkozó meghívó)</string>
<string name="create_simplex_address">SimpleX-cím létrehozása</string>
@@ -404,7 +402,7 @@
<string name="num_contacts_selected">%d ismerős kiválasztva</string>
<string name="enable_receipts_all">Engedélyezés</string>
<string name="ttl_mth">%dhónap</string>
<string name="direct_messages_are_prohibited_in_chat">A közvetlen üzenetek küldése a tagok között le van tiltva ebben a csoportban.</string>
<string name="direct_messages_are_prohibited_in_group">A közvetlen üzenetek küldése a tagok között le van tiltva ebben a csoportban.</string>
<string name="ttl_min">%d perc</string>
<string name="set_password_to_export_desc">Az adatbázis egy véletlenszerű jelmondattal van titkosítva. Exportálás előtt változtassa meg a jelmondatot.</string>
<string name="receipts_groups_title_disable">Kézbesítés jelentések letiltása a csoportok számára?</string>
@@ -477,8 +475,7 @@
<string name="error_setting_network_config">Hiba a hálózat konfigurációjának frissítésekor</string>
<string name="network_option_enable_tcp_keep_alive">TCP életben tartása</string>
<string name="icon_descr_flip_camera">Kamera váltás</string>
<string name="email_invite_body">Üdvözlöm!
\nCsatlakozzon hozzám a SimpleX Chaten keresztül: %s</string>
<string name="email_invite_body">Üdvözlöm!\nCsatlakozzon hozzám a SimpleX Chaten keresztül: %s</string>
<string name="display_name_cannot_contain_whitespace">A megjelenített név nem tartalmazhat szóközöket.</string>
<string name="info_row_group">Csoport</string>
<string name="enter_welcome_message_optional">Üdvözlőüzenet megadása… (nem kötelező)</string>
@@ -692,7 +689,7 @@
<string name="theme_light">Világos</string>
<string name="delete_message_cannot_be_undone_warning">Az üzenet törlésre kerül - ez a művelet nem vonható vissza!</string>
<string name="markdown_help">Markdown súgó</string>
<string name="notification_preview_new_message">Rejtett üzenet</string>
<string name="notification_preview_new_message">új üzenet</string>
<string name="old_database_archive">Régi adatbázis-archívum</string>
<string name="network_settings_title">Speciális beállítások</string>
<string name="no_info_on_delivery">Nincs kézbesítési információ</string>
@@ -771,7 +768,7 @@
<string name="system_restricted_background_in_call_title">Nincsenek háttérhívások</string>
<string name="messages_section_title">Üzenetek</string>
<string name="linked_mobiles">Társított hordozható eszköz</string>
<string name="incognito_info_allows">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.</string>
<string name="incognito_info_allows">Lehetővé teszi, hogy egyetlen csevegőprofilon belül több névtelen kapcsolat legyen, anélkül, hogy megosztott adatok lennének közöttük.</string>
<string name="delete_message_mark_deleted_warning">Az üzenet törlésre lesz jelölve. A címzett(ek) képes(ek) lesz(nek) felfedni ezt az üzenetet.</string>
<string name="leave_group_button">Elhagyás</string>
<string name="ok">Rendben</string>
@@ -885,7 +882,7 @@
<string name="opensource_protocol_and_code_anybody_can_run_servers">Bárki üzemeltethet kiszolgálókat.</string>
<string name="rcv_group_event_open_chat">Megnyitás</string>
<string name="network_option_protocol_timeout">Protokoll időtúllépése</string>
<string name="secret_text">titkos</string>
<string name="secret_text">titok</string>
<string name="settings_notification_preview_mode_title">Értesítés előnézete</string>
<string name="callstate_waiting_for_confirmation">várakozás a visszaigazolásra…</string>
<string name="stop_file__action">Fájl megállítása</string>
@@ -910,7 +907,7 @@
<string name="only_you_can_make_calls">Csak Ön tud hívásokat indítani.</string>
<string name="smp_server_test_secure_queue">Biztonságos sorbaállítás</string>
<string name="rate_the_app">Értékelje az alkalmazást</string>
<string name="share_invitation_link">Egyszer használható hivatkozás megosztása</string>
<string name="share_invitation_link">Egyszer használható meghívó-hivatkozás megosztása</string>
<string name="database_restore_error">Hiba az adatbázis visszaállításakor</string>
<string name="group_members_2">%s és %s</string>
<string name="chat_preferences_you_allow">Ön engedélyezi</string>
@@ -931,7 +928,7 @@
<string name="connect_via_link_or_qr_from_clipboard_or_in_person">(beolvasás, vagy beillesztés a vágólapról)</string>
<string name="waiting_for_video">Várakozás a videóra</string>
<string name="reply_verb">Válasz</string>
<string name="connect_plan_this_is_your_own_one_time_link">Ez az Ön egyszer használható hivatkozása!</string>
<string name="connect_plan_this_is_your_own_one_time_link">Ez az Ön egyszer használható meghívó-hivatkozása!</string>
<string name="ntf_channel_calls">SimpleX Chat hívások</string>
<string name="connect_use_new_incognito_profile">Új inkognitóprofil használata</string>
<string name="contact_developers">Frissítse az alkalmazást, és lépjen kapcsolatba a fejlesztőkkel.</string>
@@ -963,7 +960,7 @@
<string name="restore_database">Adatbázismentés visszaállítása</string>
<string name="revoke_file__confirm">Visszavonás</string>
<string name="ask_your_contact_to_enable_voice">Kérje meg az ismerősét, hogy engedélyezze a hangüzenetek küldését.</string>
<string name="description_you_shared_one_time_link">egyszer használható hivatkozást osztott meg</string>
<string name="description_you_shared_one_time_link">Ön egy egyszer használható meghívó-hivatkozást osztott meg</string>
<string name="simplex_link_mode_browser_warning">A hivatkozás megnyitása a böngészőben gyengítheti az adatvédelmet és a biztonságot. A megbízhatatlan SimpleX-hivatkozások pirossal vannak kiemelve.</string>
<string name="your_ice_servers">Saját ICE-kiszolgálók</string>
<string name="you_accepted_connection">Kapcsolat létrehozása</string>
@@ -1075,7 +1072,7 @@
<string name="group_member_role_owner">tulajdonos</string>
<string name="la_notice_turn_on">Bekapcsolás</string>
<string name="rcv_group_event_3_members_connected">%s, %s és %s kapcsolódott</string>
<string name="simplex_link_invitation">Egyszer használható SimpleX-meghívó</string>
<string name="simplex_link_invitation">Egyszer használható SimpleX-meghívó-hivatkozás</string>
<string name="your_calls">Hívások</string>
<string name="icon_descr_sent_msg_status_send_failed">nem sikerült elküldeni</string>
<string name="theme_colors_section_title">KEZELŐFELÜLET SZÍNEI</string>
@@ -1106,7 +1103,7 @@
<string name="your_SMP_servers">Saját SMP-kiszolgálók</string>
<string name="send_receipts_disabled_alert_title">A kézbesítési jelentések le vannak tiltva</string>
<string name="open_database_folder">Adatbázismappa megnyitása</string>
<string name="description_via_one_time_link">egyszer használható hivatkozáson keresztül</string>
<string name="description_via_one_time_link">egyszer használható meghívó-hivatkozáson keresztül</string>
<string name="set_group_preferences">Csoportbeállítások megadása</string>
<string name="simplex_link_connection">ezen keresztül: %1$s</string>
<string name="chat_preferences_yes">igen</string>
@@ -1119,7 +1116,7 @@
<string name="smp_servers_scan_qr">A kiszolgáló QR-kódjának beolvasása</string>
<string name="stop_chat_confirmation">Megállítás</string>
<string name="stop_sharing_address">Címmegosztás megállítása?</string>
<string name="auth_open_chat_profiles">Csevegés profilok megnyitása</string>
<string name="auth_open_chat_profiles">Csevegési profilok megváltoztatása</string>
<string name="connect_plan_repeat_join_request">Csatlakozáskérés megismétlése?</string>
<string name="waiting_for_image">Várakozás a képre</string>
<string name="v4_3_voice_messages">Hangüzenetek</string>
@@ -1230,9 +1227,7 @@
<string name="unmute_chat">Némítás megszüntetése</string>
<string name="open_simplex_chat_to_accept_call">SimpleX Chat megnyitása a hívás fogadásához</string>
<string name="stop_rcv_file__title">Fájlfogadás megállítása?</string>
<string name="v5_4_more_things_descr">- értesíti az ismerősöket a törlésről (nem kötelező)
\n- profil nevek szóközökkel
\n- és még sok más!</string>
<string name="v5_4_more_things_descr">- értesíti az ismerősöket a törlésről (nem kötelező)\n- profil nevek szóközökkel\n- és még sok más!</string>
<string name="v5_0_polish_interface">Lengyel kezelőfelület</string>
<string name="smp_servers_use_server">Kiszolgáló használata</string>
<string name="share_text_received_at">Fogadva ekkor: %s</string>
@@ -1272,14 +1267,12 @@
<string name="network_option_tcp_connection_timeout">TCP kapcsolat időtúllépése</string>
<string name="connect__your_profile_will_be_shared">A(z) %1$s nevű profiljának SimpleX-címe megosztásra fog kerülni.</string>
<string name="you_are_already_connected_to_vName_via_this_link">Ön már kapcsolódott a következőhöz: %1$s.</string>
<string name="your_current_chat_database_will_be_deleted_and_replaced_with_the_imported_one">Jelenlegi csevegési adatbázis TÖRLÉSRE és FELCSERÉLÉSRE kerül az importált által!
\nEz a művelet nem vonható vissza - profiljai, ismerősei, csevegési üzenetei és fájljai véglegesen törölve lesznek.</string>
<string name="your_current_chat_database_will_be_deleted_and_replaced_with_the_imported_one">Jelenlegi csevegési adatbázis TÖRLÉSRE és FELCSERÉLÉSRE kerül az importált által!\nEz a művelet nem vonható vissza - profiljai, ismerősei, csevegési üzenetei és fájljai véglegesen törölve lesznek.</string>
<string name="chat_with_the_founder">Ötletek és javaslatok</string>
<string name="database_downgrade_warning">Figyelmeztetés: néhány adat elveszhet!</string>
<string name="tap_to_start_new_chat">Koppintson ide az új csevegés indításához</string>
<string name="waiting_for_desktop">Várakozás a számítógépre…</string>
<string name="next_generation_of_private_messaging">A privát üzenetküldés
\nkövetkező generációja</string>
<string name="next_generation_of_private_messaging">A privát üzenetküldés\nkövetkező generációja</string>
<string name="update_network_settings_question">Hálózati beállítások megváltoztatása?</string>
<string name="waiting_for_mobile_to_connect">Várakozás a hordozható eszköz társítására:</string>
<string name="v4_4_verify_connection_security">Biztonságos kapcsolat hitelesítése</string>
@@ -1288,16 +1281,14 @@
<string name="receiving_files_not_yet_supported">fájlok fogadása egyelőre még nem támogatott</string>
<string name="save_group_profile">Csoportprofil mentése</string>
<string name="network_options_reset_to_defaults">Visszaállítás alapértelmezettre</string>
<string name="connection_error_auth_desc">Hacsak az ismerőse nem törölte a kapcsolatot, vagy ez a hivatkozás már használatban volt egyszer, lehet hogy ez egy hiba – jelentse a problémát.
\nA kapcsolódáshoz kérje meg az ismerősét, hogy hozzon létre egy másik kapcsolattartási hivatkozást, és ellenőrizze, hogy a hálózati kapcsolat stabil-e.</string>
<string name="connection_error_auth_desc">Hacsak az ismerőse nem törölte a kapcsolatot, vagy ez a hivatkozás már használatban volt egyszer, lehet hogy ez egy hiba – jelentse a problémát.\nA kapcsolódáshoz kérje meg az ismerősét, hogy hozzon létre egy másik kapcsolattartási hivatkozást, és ellenőrizze, hogy a hálózati kapcsolat stabil-e.</string>
<string name="video_call_no_encryption">videóhívás (nem e2e titkosított)</string>
<string name="smp_servers_use_server_for_new_conn">Alkalmazás új kapcsolatokhoz</string>
<string name="periodic_notifications_desc">Az új üzenetek rendszeresen letöltésre kerülnek az alkalmazás által – naponta néhány százalékot használ az akkumulátorból. Az alkalmazás nem használ push-értesítéseket – az eszközről származó adatok nem kerülnek elküldésre a kiszolgálóknak.</string>
<string name="paste_desktop_address">Számítógép címének beillesztése</string>
<string name="description_via_contact_address_link">kapcsolattartási cím-hivatkozáson keresztül</string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Az adatvédelem megőrzése érdekében a push-értesítési rendszer helyett az alkalmazás a <b>SimpleX-háttérszolgáltatást</b> használja - az akkumulátornak csak néhány százalékát használja naponta.]]></string>
<string name="alert_text_connection_pending_they_need_to_be_online_can_delete_and_retry">Az ismerősének online kell lennie ahhoz, hogy a kapcsolat létrejöjjön.
\nVisszavonhatja ezt az ismerőskérelmet és eltávolíthatja az ismerőst (ezt később ismét megpróbálhatja egy új hivatkozással).</string>
<string name="alert_text_connection_pending_they_need_to_be_online_can_delete_and_retry">Az ismerősének online kell lennie ahhoz, hogy a kapcsolat létrejöjjön.\nVisszavonhatja ezt az ismerőskérelmet és eltávolíthatja az ismerőst (ezt később ismét megpróbálhatja egy új hivatkozással).</string>
<string name="restore_passphrase_not_found_desc">A jelszó nem található a Keystore-ban, ezért kézzel szükséges megadni. Ez akkor történhetett meg, ha visszaállította az alkalmazás adatait egy biztonságimentési eszközzel. Ha nem így történt, akkor lépjen kapcsolatba a fejlesztőkkel.</string>
<string name="your_contacts_will_remain_connected">Az ismerősei továbbra is kapcsolódva maradnak.</string>
<string name="error_xftp_test_server_auth">A kiszolgálónak engedélyre van szüksége a várólisták létrehozásához, ellenőrizze jelszavát</string>
@@ -1319,8 +1310,7 @@
<string name="error_smp_test_server_auth">A kiszolgálónak engedélyre van szüksége a sorbaállítás létrehozásához, ellenőrizze jelszavát</string>
<string name="you_will_join_group">Kapcsolódni fog a csoport összes tagjához.</string>
<string name="error_smp_test_certificate">Lehetséges, hogy a kiszolgáló címében szereplő tanúsítvány-ujjlenyomat helytelen</string>
<string name="la_notice_to_protect_your_information_turn_on_simplex_lock_you_will_be_prompted_to_complete_authentication_before_this_feature_is_enabled">A biztonsága érdekében kapcsolja be a SimpleX-zár funkciót.
\nA funkció bekapcsolása előtt a rendszer felszólítja a képernyőzár beállítására az eszközén.</string>
<string name="la_notice_to_protect_your_information_turn_on_simplex_lock_you_will_be_prompted_to_complete_authentication_before_this_feature_is_enabled">A biztonsága érdekében kapcsolja be a SimpleX-zár funkciót.\nA funkció bekapcsolása előtt a rendszer felszólítja a képernyőzár beállítására az eszközén.</string>
<string name="video_will_be_received_when_contact_is_online">A videó akkor érkezik meg, amikor a küldője elérhető lesz, várjon, vagy ellenőrizze később!</string>
<string name="network_error_desc">Ellenőrizze a hálózati kapcsolatát a következővel: %1$s, és próbálja újra.</string>
<string name="you_can_turn_on_lock">A SimpleX-zár az „Adatvédelem és biztonság” menüben kapcsolható be.</string>
@@ -1333,7 +1323,7 @@
<string name="stop_rcv_file__message">A fájl fogadása le fog állni.</string>
<string name="la_please_remember_to_store_password">Ne felejtse el, vagy tárolja biztonságosan – az elveszett jelszót nem lehet visszaállítani!</string>
<string name="video_will_be_received_when_contact_completes_uploading">A videó akkor érkezik meg, amikor a küldője befejezte annak feltöltését.</string>
<string name="description_you_shared_one_time_link_incognito">egyszer használható hivatkozást osztott meg inkognitóban</string>
<string name="description_you_shared_one_time_link_incognito">Ön egy egyszer használható meghívó-hivatkozást osztott meg inkognitóban</string>
<string name="connected_to_server_to_receive_messages_from_contact">Ön már kapcsolódott ahhoz a kiszolgálóhoz, amely az adott ismerősétől érkező üzenetek fogadására szolgál.</string>
<string name="you_can_enable_delivery_receipts_later">Később engedélyezheti a „Beállításokban”</string>
<string name="you_will_be_connected_when_group_host_device_is_online">Akkor lesz kapcsolódva a csoporthoz, amikor a csoport tulajdonosának eszköze online lesz, várjon, vagy ellenőrizze később!</string>
@@ -1352,8 +1342,7 @@
<string name="we_do_not_store_contacts_or_messages_on_servers">Az ismerősei és az üzenetek (kézbesítés után) nem kerülnek tárolásra a SimpleX-kiszolgálókon.</string>
<string name="you_can_use_markdown_to_format_messages__prompt">Üzenetek formázása a szövegbe szúrt speciális karakterekkel:</string>
<string name="you_can_also_connect_by_clicking_the_link"><![CDATA[A hivatkozásra kattintva is kapcsolódhat. Ha megnyílik a böngészőben, kattintson a<b>Megnyitás az alkalmazásban</b> gombra.]]></string>
<string name="your_chat_profile_will_be_sent_to_your_contact">A csevegési profilja elküldésre kerül
\naz ismerőse számára</string>
<string name="your_chat_profile_will_be_sent_to_your_contact">A csevegési profilja elküldésre kerül\naz ismerőse számára</string>
<string name="invite_prohibited_description">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</string>
<string name="connect_plan_you_are_already_joining_the_group_vName"><![CDATA[A csatlakozás már folyamatban van a(z) <b>%1$s</b> nevű csoporthoz.]]></string>
<string name="onboarding_notifications_mode_off">Amikor az alkalmazás fut</string>
@@ -1363,9 +1352,7 @@
<string name="voice_messages_are_prohibited">A hangüzenetek küldése le van tiltva ebben a csoportban.</string>
<string name="system_restricted_background_in_call_warn"><![CDATA[A háttérben való hívásokhoz válassza ki az <b>Alkalmazás akkumulátor-használata</b> / <b>Korlátlan</b> módot az alkalmazás beállításaiban.]]></string>
<string name="v5_4_link_mobile_desktop_descr">Biztonságos kvantumrezisztens-protokollon keresztül.</string>
<string name="v5_1_better_messages_descr">- 5 perc hosszúságú hangüzenetek.
\n- egyéni üzenet-eltűnési időkorlát.
\n- előzmények szerkesztése.</string>
<string name="v5_1_better_messages_descr">- 5 perc hosszúságú hangüzenetek.\n- egyéni üzenet-eltűnési időkorlát.\n- előzmények szerkesztése.</string>
<string name="open_on_mobile_and_scan_qr_code"><![CDATA[Válassza a <i>Társítás számítógéppel</i> menüt a hordozható eszköz alkalmazásban és olvassa be a QR-kódot.]]></string>
<string name="sender_at_ts">%s ekkor: %s</string>
<string name="you_will_be_connected_when_your_contacts_device_is_online">Akkor lesz kapcsolódva, amikor az ismerősének eszköze online lesz, várjon, vagy ellenőrizze később!</string>
@@ -1399,7 +1386,7 @@
<string name="system_restricted_background_warn"><![CDATA[Az értesítések engedélyezéséhez válassza ki az <b>Alkalmazás akkumulátor-használata</b> / <b>Korlátlan</b> módot az alkalmazás beállításaiban.]]></string>
<string name="this_string_is_not_a_connection_link">Ez a karakterlánc nem egy meghívó-hivatkozás!</string>
<string name="to_start_a_new_chat_help_header">Új csevegés kezdése</string>
<string name="connect_plan_you_are_already_connecting_via_this_one_time_link">A kapcsolódás már folyamatban van ezen az egyszer használható hivatkozáson keresztül!</string>
<string name="connect_plan_you_are_already_connecting_via_this_one_time_link">A kapcsolódás már folyamatban van ezen az egyszer használható meghívó-hivatkozáson keresztül!</string>
<string name="you_wont_lose_your_contacts_if_delete_address">Nem veszíti el az ismerőseit, ha később törli a címét.</string>
<string name="updating_settings_will_reconnect_client_to_all_servers">A beállítások frissítése a kiszolgálókhoz való újra kapcsolódással jár.</string>
<string name="contact_wants_to_connect_with_you">kapcsolatba akar lépni Önnel!</string>
@@ -1444,8 +1431,7 @@
<string name="skip_inviting_button">Tagok meghívásának kihagyása</string>
<string name="receipts_section_description_1">Ezek felülbírálhatók az ismerős- és csoportbeállításokban.</string>
<string name="contact_you_shared_link_with_wont_be_able_to_connect">Az ismerőse, akivel megosztotta ezt a hivatkozást, NEM fog tudni kapcsolódni!</string>
<string name="you_can_change_it_later">A véletlenszerű jelmondat egyszerű szövegként van tárolva a beállításokban.
\nEz később megváltoztatható.</string>
<string name="you_can_change_it_later">A véletlenszerű jelmondat egyszerű szövegként van tárolva a beállításokban.\nEz később megváltoztatható.</string>
<string name="group_invitation_tap_to_join_incognito">Koppintson ide az inkognitóban való kapcsolódáshoz</string>
<string name="set_password_to_export">Jelmondat beállítása az exportáláshoz</string>
<string name="receipts_groups_override_disabled">A kézbesítési jelentések le vannak tiltva %d csoportban</string>
@@ -1475,8 +1461,7 @@
<string name="connection_you_accepted_will_be_cancelled">Az Ön által elfogadott kérelem vissza lesz vonva!</string>
<string name="send_live_message_desc">Élő üzenet küldése - a címzett(ek) számára frissül, ahogy beírja</string>
<string name="settings_section_title_delivery_receipts">A KÉZBESÍTÉSI JELENTÉSEKET A KÖVETKEZŐ CÍMRE KELL KÜLDENI</string>
<string name="alert_text_msg_bad_id">A következő üzenet azonosítója hibás (kisebb vagy egyenlő az előzővel).
\nEz valamilyen hiba, vagy sérült kapcsolat esetén fordulhat elő.</string>
<string name="alert_text_msg_bad_id">A következő üzenet azonosítója hibás (kisebb vagy egyenlő az előzővel).\nEz valamilyen hiba, vagy sérült kapcsolat esetén fordulhat elő.</string>
<string name="this_device_name_shared_with_mobile">Az eszköz neve megosztásra kerül a társított hordozható eszközön használt alkalmazással.</string>
<string name="v4_4_live_messages_desc">A címzettek a beírás közben látják a szövegváltozásokat.</string>
<string name="store_passphrase_securely">Tárolja el biztonságosan jelmondatát, mert ha elveszíti azt, NEM tudja megváltoztatni.</string>
@@ -1520,7 +1505,7 @@
<string name="or_show_this_qr_code">Vagy mutassa meg ezt a kódot</string>
<string name="enable_camera_access">Kamera hozzáférés engedélyezése</string>
<string name="keep_unused_invitation_question">Fel nem használt meghívó megtartása?</string>
<string name="share_this_1_time_link">Egyszer használható meghívó-hivatkozás megosztása</string>
<string name="share_this_1_time_link">Ennek az egyszer használható meghívó-hivatkozásnak a megosztása</string>
<string name="new_chat">Új csevegés</string>
<string name="loading_chats">Csevegések betöltése…</string>
<string name="creating_link">Hivatkozás létrehozása…</string>
@@ -1541,10 +1526,7 @@
<string name="remote_host_was_disconnected_title">A kapcsolat megszakadt</string>
<string name="remote_ctrl_was_disconnected_title">A kapcsolat megszakadt</string>
<string name="remote_ctrl_error_bad_state">Számítógép kapcsolata rossz állapotban van</string>
<string name="agent_critical_error_desc">Jelentse a fejlesztőknek:
\n%s
\n
\nAz alkalmazás újraindítása javasolt.</string>
<string name="agent_critical_error_desc">Jelentse a fejlesztőknek:\n%s\n\nAz alkalmazás újraindítása javasolt.</string>
<string name="agent_internal_error_desc">Jelentse a fejlesztőknek:
\n%s</string>
<string name="remote_host_error_bad_version"><![CDATA[A(z) <b>%s</b> hordozható eszköz által használt alkalmazás verziója nem támogatott. Győződjön meg arról, hogy mindkét eszközön ugyanazt a verziót használja]]></string>
@@ -1587,7 +1569,7 @@
<string name="v5_5_simpler_connect_ui_descr">A keresősáv elfogadja a meghívó-hivatkozásokat.</string>
<string name="v5_5_private_notes_descr">Titkosított fájlokkal és médiatartalmakkal.</string>
<string name="v5_5_message_delivery_descr">Csökkentett akkumulátor-használattal.</string>
<string name="v5_5_new_interface_languages">Magyar és török felhasználói felület</string>
<string name="v5_5_new_interface_languages">Magyar és török kezelőfelület</string>
<string name="v5_5_join_group_conversation_descr">A közelmúlt eseményei és továbbfejlesztett könyvtárbot.</string>
<string name="rcv_group_event_member_unblocked">feloldotta %s letiltását</string>
<string name="snd_group_event_member_unblocked">Ön feloldotta %s letiltását</string>
@@ -1604,8 +1586,7 @@
<string name="error_blocking_member_for_all">Hiba a tag az összes csoporttag számára való letiltásakor</string>
<string name="message_too_large">Az üzenet túl nagy</string>
<string name="welcome_message_is_too_long">Az üdvözlőüzenet túl hosszú</string>
<string name="database_migration_in_progress">Az adatbázis átköltöztetése folyamatban van.
\nEz eltarthat néhány percig.</string>
<string name="database_migration_in_progress">Az adatbázis átköltöztetése folyamatban van.\nEz eltarthat néhány percig.</string>
<string name="call_service_notification_audio_call">Hanghívás</string>
<string name="call_service_notification_end_call">A hívás befejeződött</string>
<string name="call_service_notification_video_call">Videóhívás</string>
@@ -1742,13 +1723,11 @@
<string name="v5_7_shape_profile_images">Profilkép alakzat</string>
<string name="v5_7_shape_profile_images_descr">Négyzet, kör vagy bármi a kettő között.</string>
<string name="snd_error_relay">Célkiszolgáló-hiba: %1$s</string>
<string name="snd_error_proxy">Továbbító kiszolgáló: %1$s
\nHiba: %2$s</string>
<string name="snd_error_proxy">Továbbító kiszolgáló: %1$s\nHiba: %2$s</string>
<string name="snd_error_expired">Hálózati problémák - az üzenet többszöri elküldési kísérlet után lejárt.</string>
<string name="srv_error_version">A kiszolgáló verziója nem kompatibilis a hálózati beállításokkal.</string>
<string name="snd_error_auth">Hibás kulcs vagy ismeretlen kapcsolat - valószínűleg ez a kapcsolat törlődött.</string>
<string name="snd_error_proxy_relay">Továbbító-kiszolgáló: %1$s
\nCélkiszolgáló hiba: %2$s</string>
<string name="snd_error_proxy_relay">Továbbító-kiszolgáló: %1$s\nCélkiszolgáló hiba: %2$s</string>
<string name="ci_status_other_error">Hiba: %1$s</string>
<string name="snd_error_quota">Kapacitás túllépés - a címzett nem kapta meg a korábban elküldött üzeneteket.</string>
<string name="message_delivery_warning_title">Üzenetkézbesítési figyelmeztetés</string>
@@ -1779,8 +1758,7 @@
<string name="protect_ip_address">IP-cím védelem</string>
<string name="app_will_ask_to_confirm_unknown_file_servers">Az alkalmazás kérni fogja az ismeretlen fájlkiszolgálókról történő letöltések megerősítését (kivéve, ha az .onion vagy a SOCKS proxy engedélyezve van).</string>
<string name="file_not_approved_title">Ismeretlen kiszolgálók!</string>
<string name="file_not_approved_descr">Tor vagy VPN nélkül az IP-címe látható lesz az XFTP-közvetítő-kiszolgálók számára:
\n%1$s.</string>
<string name="file_not_approved_descr">Tor vagy VPN nélkül az IP-címe látható lesz az XFTP-közvetítő-kiszolgálók számára:\n%1$s.</string>
<string name="chat_theme_apply_to_all_modes">Összes színmód</string>
<string name="theme_black">Fekete</string>
<string name="color_mode">Színmód</string>
@@ -1812,8 +1790,7 @@
<string name="color_primary_variant2">További kiemelés 2</string>
<string name="theme_destination_app_theme">Alkalmazás téma</string>
<string name="v5_8_persian_ui">Perzsa kezelőfelület</string>
<string name="v5_8_private_routing_descr">Védje IP-címét az ismerősei által kiválasztott üzenet-közvetítő-kiszolgálókkal szemben.
\nEngedélyezze a „Beállítások -&gt; Hálózat és kiszolgálók” menüben.</string>
<string name="v5_8_private_routing_descr">Védje IP-címét az ismerősei által kiválasztott üzenet-közvetítő-kiszolgálókkal szemben.\nEngedélyezze a „Beállítások / Hálózat és kiszolgálók” menüben.</string>
<string name="v5_8_safe_files_descr">Ismeretlen kiszolgálókról származó fájlok megerősítése.</string>
<string name="v5_8_message_delivery">Javított üzenetkézbesítés</string>
<string name="chat_theme_reset_to_app_theme">Alkalmazás témájának visszaállítása</string>
@@ -1822,14 +1799,12 @@
<string name="v5_8_private_routing">Privát üzenet-útválasztás 🚀</string>
<string name="v5_8_safe_files">Fájlok biztonságos fogadása</string>
<string name="v5_8_message_delivery_descr">Csökkentett akkumulátor-használattal.</string>
<string name="error_initializing_web_view">Hiba a WebView előkészítésekor. Frissítse rendszerét az új verzióra. Lépjen kapcsolatba a fejlesztőkkel.
\nHiba: %s</string>
<string name="error_initializing_web_view">Hiba a WebView előkészítésekor. Frissítse rendszerét az új verzióra. Lépjen kapcsolatba a fejlesztőkkel.\nHiba: %s</string>
<string name="chat_theme_reset_to_user_theme">Felhasználó által létrehozott téma visszaállítása</string>
<string name="message_queue_info">Üzenet-sorbaállítási információ</string>
<string name="message_queue_info_none">nincs</string>
<string name="info_row_debug_delivery">Kézbesítési hibák felderítése</string>
<string name="message_queue_info_server_info">a kiszolgáló sorbaállítási információi: %1$s
\nutoljára kézbesített üzenet: %2$s</string>
<string name="message_queue_info_server_info">a kiszolgáló sorbaállítási információi: %1$s\n\nutoljára kézbesített üzenet: %2$s</string>
<string name="file_error_auth">Hibás kulcs vagy ismeretlen fájltöredék cím - valószínűleg a fájl törlődött.</string>
<string name="temporary_file_error">Ideiglenesfájl-hiba</string>
<string name="info_row_message_status">Üzenetállapot</string>
@@ -1841,8 +1816,7 @@
<string name="share_text_file_status">Fájlállapot: %s</string>
<string name="copy_error">Másolási hiba</string>
<string name="remote_ctrl_connection_stopped_identity_desc">Ezt a hivatkozást egy másik hordozható eszközön már használták, hozzon létre egy új hivatkozást a számítógépén.</string>
<string name="remote_ctrl_connection_stopped_desc">Ellenőrizze, hogy a hordozható eszköz és a számítógép ugyanahhoz a helyi hálózathoz csatlakozik-e, valamint a számítógép tűzfalában engedélyezve van-e a kapcsolat.
\nMinden további problémát osszon meg a fejlesztőkkel.</string>
<string name="remote_ctrl_connection_stopped_desc">Ellenőrizze, hogy a hordozható eszköz és a számítógép ugyanahhoz a helyi hálózathoz csatlakozik-e, valamint a számítógép tűzfalában engedélyezve van-e a kapcsolat.\nMinden további problémát osszon meg a fejlesztőkkel.</string>
<string name="cannot_share_message_alert_title">Nem lehet üzenetet küldeni</string>
<string name="cannot_share_message_alert_text">A kiválasztott csevegési beállítások tiltják ezt az üzenetet.</string>
<string name="please_try_later">Próbálja meg később.</string>
@@ -2072,8 +2046,7 @@
<string name="forward_files_missing_desc">%1$d fájl törölve lett.</string>
<string name="compose_forward_messages_n">%1$s üzenet továbbítása</string>
<string name="forward_multiple">Üzenetek továbbítása…</string>
<string name="n_file_errors">%1$d fájlhiba:
\n%2$s</string>
<string name="n_file_errors">%1$d fájlhiba:\n%2$s</string>
<string name="forward_files_messages_deleted_after_selection_title">%1$s üzenet nem lett továbbítva</string>
<string name="forward_alert_title_messages_to_forward">%1$s üzenet továbbítása?</string>
<string name="forward_alert_forward_messages_without_files">Üzenetek továbbítása fájlok nélkül?</string>
@@ -2081,8 +2054,7 @@
<string name="compose_save_messages_n">%1$s üzenet mentése</string>
<string name="error_forwarding_messages">Hiba az üzenetek továbbításakor</string>
<string name="icon_descr_sound_muted">Hang elnémítva</string>
<string name="error_initializing_web_view_wrong_arch">Hiba a WebView előkészítésekor. Győződjön meg arról, hogy a WebView telepítve van-e, és támogatja-e az arm64 architektúrát.
\nHiba: %s</string>
<string name="error_initializing_web_view_wrong_arch">Hiba a WebView előkészítésekor. Győződjön meg arról, hogy a WebView telepítve van-e, és támogatja-e az arm64 architektúrát.\nHiba: %s</string>
<string name="settings_message_shape_corner">Sarok</string>
<string name="settings_section_title_message_shape">Üzenetbuborék alakja</string>
<string name="settings_message_shape_tail">Farok</string>
@@ -2100,7 +2072,102 @@
<string name="v6_1_delete_many_messages_descr">Legfeljebb 200 üzenet egyszerre való törlése, vagy moderálása.</string>
<string name="v6_1_forward_many_messages_descr">Legfeljebb 20 üzenet egyszerre való továbbítása.</string>
<string name="v6_1_better_calls_descr">Hang/Videó váltása hívás közben.</string>
<string name="v6_1_switch_chat_profile_descr">Csevegési profilváltás az egyszer használható meghívókhoz.</string>
<string name="v6_1_switch_chat_profile_descr">Csevegési profilváltás az egyszer használható meghívó-hivatkozásokhoz.</string>
<string name="v6_1_better_security">Továbbfejlesztett biztonság ✅</string>
<string name="v6_1_better_security_descr">A SimpleX Chat biztonsága a Trail of Bits által lett újraauditálva.</string>
<string name="v6_1_better_security_descr">A SimpleX Chat biztonsága a Trail of Bits által lett felülvizsgálva.</string>
<string name="failed_to_save_servers">Hiba a kiszolgálók mentésekor</string>
<string name="no_message_servers_configured">Nincsenek üzenet-kiszolgálók.</string>
<string name="no_message_servers_configured_for_receiving">Nincsenek üzenetfogadó-kiszolgálók.</string>
<string name="no_media_servers_configured">Nincsenek média- és fájlkiszolgálók.</string>
<string name="for_chat_profile">A(z) %s nevű csevegési profilhoz:</string>
<string name="address_or_1_time_link">Cím vagy egyszer használható meghívó-hivatkozás?</string>
<string name="smp_servers_new_server">Új kiszolgáló</string>
<string name="address_settings">Címbeállítások</string>
<string name="network_preset_servers_title">Előre beállított kiszolgálók</string>
<string name="operator">Üzemeltető</string>
<string name="view_conditions">Feltételek megtekintése</string>
<string name="no_message_servers_configured_for_private_routing">Nincsenek kiszolgálók a privát üzenet-útválasztáshoz.</string>
<string name="no_media_servers_configured_for_sending">Nincsenek fájlküldő-kiszolgálók.</string>
<string name="no_media_servers_configured_for_private_routing">Nincsenek fájlfogadó-kiszolgálók.</string>
<string name="errors_in_servers_configuration">Hibák a kiszolgálók konfigurációjában.</string>
<string name="error_accepting_operator_conditions">Hiba a feltételek elfogadásakor</string>
<string name="connection_error_quota">Kézbesítetlen üzenetek</string>
<string name="connection_error_quota_desc">A kapcsolat elérte a kézbesítetlen üzenetek számának határát, az Ön ismerőse lehet, hogy offline állapotban van.</string>
<string name="message_deleted_or_not_received_error_title">Nincs üzenet</string>
<string name="message_deleted_or_not_received_error_desc">Ez az üzenet törlésre került vagy még nem érkezett meg.</string>
<string name="address_creation_instruction">Koppintson a SimpleX-cím létrehozása menüpontra a későbbi létrehozáshoz.</string>
<string name="share_address_publicly">Cím nyilvános megosztása</string>
<string name="share_simplex_address_on_social_media">SimpleX-cím megosztása a közösségi médiában.</string>
<string name="share_1_time_link_with_a_friend">Egyszer használható meghívó-hivatkozás megosztása egy baráttal</string>
<string name="one_time_link_can_be_used_with_one_contact_only"><![CDATA[Az egyszer használható meghívó-hivatkozás csak <i>egyetlen ismerőssel használható</i> - személyesen vagy bármilyen üzenetküldőn keresztül megosztható.]]></string>
<string name="you_can_set_connection_name_to_remember">Beállíthatja az ismerős nevét, hogy emlékezzen arra, hogy kivel osztotta meg a hivatkozást.</string>
<string name="connection_security">Kapcsolatbiztonság</string>
<string name="simplex_address_and_1_time_links_are_safe_to_share">A SimpleX-cím és az egyszer használható meghívó-hivatkozás biztonságosan megosztható bármilyen üzenetküldőn keresztül.</string>
<string name="to_protect_against_your_link_replaced_compare_codes">A hivatkozás cseréje elleni védelem érdekében összehasonlíthatja a biztonsági kódokat az ismerősével.</string>
<string name="for_social_media">A közösségi médiához</string>
<string name="or_to_share_privately">Vagy a privát megosztáshoz</string>
<string name="simplex_address_or_1_time_link">SimpleX-cím vagy egyszer használható meghívó-hivatkozás?</string>
<string name="create_1_time_link">Egyszer használható meghívó-hivatkozás létrehozása</string>
<string name="onboarding_choose_server_operators">Üzemeltetők kiválasztása</string>
<string name="onboarding_network_operators">Hálózati üzemeltetők</string>
<string name="onboarding_network_operators_app_will_use_different_operators">Amikor egynél több hálózati üzemeltető van engedélyezve, akkor az alkalmazás minden egyes beszélgetéshez a különböző üzemeltetők kiszolgálóit használja.</string>
<string name="onboarding_network_operators_app_will_use_for_routing">Ha például a SimpleX Chat kiszolgálón keresztül fogadja az üzeneteket, az alkalmazás a Flux egyik kiszolgálóját használja a privát útválasztáshoz.</string>
<string name="onboarding_select_network_operators_to_use">Válassza ki a használni kívánt hálózati üzemeltetőket.</string>
<string name="onboarding_network_operators_review_later">Felülvizsgálat később</string>
<string name="onboarding_network_operators_configure_via_settings">A kiszolgálókat a beállításokon keresztül konfigurálhatja.</string>
<string name="onboarding_network_operators_conditions_will_be_accepted">A feltételek 30 nap elteltével lesznek elfogadva az engedélyezett üzemeltetők számára.</string>
<string name="onboarding_network_operators_conditions_you_can_configure">Az üzemeltetőket a „Hálózat és kiszolgálók” beállításaban konfigurálhatja.</string>
<string name="onboarding_network_operators_update">Frissítés</string>
<string name="onboarding_network_operators_continue">Folytatás</string>
<string name="operator_review_conditions">Feltételek felülvizsgálata</string>
<string name="operator_conditions_accepted">Elfogadott feltételek</string>
<string name="operator_conditions_accepted_for_enabled_operators_on">A feltételek automatikusan elfogadásra kerülnek az engedélyezett üzemeltetők számára: %s.</string>
<string name="your_servers">Az Ön kiszolgálói</string>
<string name="operators_conditions_accepted_for"><![CDATA[A következő üzemeltető(k) számára elfogadott feltételek: <b>%s</b>.]]></string>
<string name="operators_conditions_will_be_accepted_for"><![CDATA[Automatikus feltétel-elfogadás a következő üzemeltető(k) számára: <b>%s</b>.]]></string>
<string name="operator_servers_title">%s kiszolgáló</string>
<string name="operator_info_title">Hálózati üzemeltető</string>
<string name="operator_website">Weboldal</string>
<string name="operator_conditions_accepted_on">Feltételek elfogadva ekkor: %s.</string>
<string name="operator_conditions_will_be_accepted_on">A feltételek ekkor lesznek elfogadva: %s.</string>
<string name="operator_use_operator_toggle_description">Kiszolgálók használata</string>
<string name="use_servers_of_operator_x">%s használata</string>
<string name="operator_conditions_failed_to_load">A jelenlegi feltételek szövegét nem lehetett betölteni, a feltételeket ezen a hivatkozáson keresztül vizsgálhatja felül:</string>
<string name="operator_conditions_accepted_for_some"><![CDATA[A feltételek már el lettek fogadva a következő üzemeltető(k) számára: <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[Ugyanezek a feltételek vonatkoznak a következő üzemeltetőre is: <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[Ugyanezek a feltételek lesznek elfogadva a következő üzemeltető(k)re is: <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_applied"><![CDATA[Ezek a feltételek lesznek elfogadva a következő számára is: <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[A feltételek el lesznek fogadva a következő üzemeltető(k) számára: <b>%s</b>.]]></string>
<string name="operators_conditions_will_also_apply"><![CDATA[Ezek a feltételek lesznek elfogadva a következő számára is: <b>%s</b>.]]></string>
<string name="accept_conditions">Feltételek elfogadása</string>
<string name="operator_conditions_of_use">Használati feltételek</string>
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[A(z) <b>%s</b> kiszolgálóinak használatához fogadja el a használati feltételeket.]]></string>
<string name="operator_use_for_messages">Használat az üzenetekhez</string>
<string name="operator_use_for_messages_receiving">A fogadáshoz</string>
<string name="operator_use_for_messages_private_routing">A privát útválasztáshoz</string>
<string name="operator_added_message_servers">Hozzáadott üzenetkiszolgálók</string>
<string name="operator_use_for_files">Használat a fájlokhoz</string>
<string name="operator_use_for_sending">A küldéshez</string>
<string name="operator_added_xftp_servers">Hozzáadott média- és fájlkiszolgálók</string>
<string name="operator_open_conditions">Feltételek megnyitása</string>
<string name="operator_open_changes">Változások megnyitása</string>
<string name="error_updating_server_title">Hiba a kiszolgáló frissítésekor</string>
<string name="error_server_protocol_changed">A kiszolgáló-protokoll megváltozott.</string>
<string name="error_server_operator_changed">A kiszolgáló üzemeltetője megváltozott.</string>
<string name="operator_server_alert_title">Kiszolgáló-üzemeltető</string>
<string name="server_added_to_operator__name">Kiszolgáló hozzáadva a következő üzemeltetőhöz: %s.</string>
<string name="error_adding_server">Hiba a kiszolgáló hozzáadásakor</string>
<string name="appearance_in_app_bars_alpha">Átlátszóság</string>
<string name="appearance_bars_blur_radius">Elhomályosítás</string>
<string name="v6_2_network_decentralization">Hálózati decentralizáció</string>
<string name="v6_2_network_decentralization_descr">A második előre beállított üzemeltető az alkalmazásban!</string>
<string name="v6_2_network_decentralization_enable_flux">Flux engedélyezése</string>
<string name="appearance_app_toolbars">Alkalmazás-eszköztárak</string>
<string name="v6_2_network_decentralization_enable_flux_reason">a metaadatok jobb védelme érdekében.</string>
<string name="v6_2_improved_chat_navigation">Javított csevegési navigáció</string>
<string name="v6_2_improved_chat_navigation_descr">- Csevegés megnyitása az első olvasatlan üzenetnél.\n- Ugrás az idézett üzenetekre.</string>
<string name="view_updated_conditions">Frissített feltételek megtekintése</string>
<string name="xftp_servers_per_user">Az Ön jelenlegi csevegőprofiljához tartozó új fájlok kiszolgálói</string>
<string name="chat_archive">Vagy archívumfájl importálása</string>
<string name="remote_hosts_section">Távoli hordozható eszközök</string>
</resources>
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="22" viewBox="0 -960 960 960" width="22" fill="#5f6368"><path d="M142.5-125q-22.97 0-40.23-17.27Q85-159.53 85-182.5v-480q0-22.97 17.27-40.23Q119.53-720 142.5-720H323v-97.52q0-22.98 17.27-40.23Q357.53-875 380.5-875h199q22.97 0 40.23 17.27Q637-840.47 637-817.5v97.5h180.5q22.97 0 40.23 17.27Q875-685.47 875-662.5v480q0 22.97-17.27 40.23Q840.47-125 817.5-125h-675Zm0-57.5h675v-480h-675v480Zm238-537.5h199v-97.5h-199v97.5Zm-238 537.5v-480 480Z"/></svg>

After

Width:  |  Height:  |  Size: 495 B

@@ -0,0 +1,8 @@
<svg width="1240" height="1240" xmlns="http://www.w3.org/2000/svg">
<g>
<g>
<path d="m282.5,995q-22.97,0 -40.23,-17.27q-17.27,-17.26 -17.27,-40.23l0,-480q0,-22.97 17.27,-40.23q17.26,-17.27 40.23,-17.27l180.5,0l0,-97.52q0,-22.98 17.27,-40.23q17.26,-17.25 40.23,-17.25l199,0q22.97,0 40.23,17.27q17.27,17.26 17.27,40.23l0,97.5l180.5,0q22.97,0 40.23,17.27q17.27,17.26 17.27,40.23l0,480q0,22.97 -17.27,40.23q-17.26,17.27 -40.23,17.27l-675,0zm238,-595l199,0l0,-97.5l-199,0l0,97.5z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 504 B

@@ -564,7 +564,7 @@
<string name="group_members_can_delete">Anggota grup dapat hapus pesan terkirim secara permanen. (24 jam)</string>
<string name="group_members_can_send_voice">Anggota grup dapat mengirim pesan suara.</string>
<string name="message_deletion_prohibited_in_chat">Hapus pesan yang tidak dapat dibatalkan dilarang di grup ini.</string>
<string name="direct_messages_are_prohibited_in_chat">Pesan pribadi antar anggota dilarang di grup ini.</string>
<string name="direct_messages_are_prohibited_in_group">Pesan pribadi antar anggota dilarang di grup ini.</string>
<string name="group_members_can_send_simplex_links">Anggota grup dapat kirim tautan SimpleX.</string>
<string name="ttl_hours">%d jam</string>
<string name="ttl_hour">%d jam</string>
@@ -1277,4 +1277,21 @@
<string name="remove_member_confirmation">Hapus</string>
<string name="share_text_created_at">Dibuat pada: %s</string>
<string name="member_info_member_blocked">diblokir</string>
<string name="switch_verb">Ganti</string>
<string name="unblock_member_confirmation">Buka blokir</string>
<string name="unblock_for_all_question">Buka blokir anggota untuk semua?</string>
<string name="unblock_for_all">Buka untuk semua</string>
<string name="member_blocked_by_admin">Diblokir oleh admin</string>
<string name="member_info_section_title_member">ANGGOTA</string>
<string name="remove_member_button">Hapus anggota</string>
<string name="share_text_message_status">Status pesan: %s</string>
<string name="share_text_file_status">Status berkas: %s</string>
<string name="info_row_group">Grup</string>
<string name="member_info_member_disabled">dimatikan</string>
<string name="unblock_member_question">Buka blokir anggota?</string>
<string name="unblock_member_button">Buka blokir anggota</string>
<string name="member_info_member_inactive">tidak aktif</string>
<string name="button_remove_member_question">Hapus anggota?</string>
<string name="button_remove_member">Hapus anggota</string>
<string name="saved_message_title">Pesan tersimpan</string>
</resources>
@@ -289,7 +289,7 @@
<string name="encrypted_with_random_passphrase">Il database è crittografato con una password casuale, puoi cambiarla.</string>
<string name="database_passphrase_is_required">La password del database è necessaria per aprire la chat.</string>
<string name="delete_group_menu_action">Elimina</string>
<string name="direct_messages_are_prohibited_in_chat">I messaggi diretti tra i membri sono vietati in questo gruppo.</string>
<string name="direct_messages_are_prohibited_in_group">I messaggi diretti tra i membri sono vietati in questo gruppo.</string>
<string name="display_name">Inserisci il tuo nome:</string>
<string name="choose_file">File</string>
<string name="clear_chat_button">Svuota chat</string>
@@ -904,8 +904,7 @@
<string name="update_network_session_mode_question">Aggiornare la modalità di isolamento del trasporto\?</string>
<string name="users_delete_all_chats_deleted">Tutte le chat e i messaggi verranno eliminati. Non è reversibile!</string>
<string name="network_session_mode_user">Profilo di chat</string>
<string name="network_session_mode_entity_description">Verrà usata una connessione TCP separata (e le credenziali SOCKS) <b> per ogni contatto e membro del gruppo </b>.
\n<b> Nota: </b>: se hai molte connessioni, il consumo di batteria e traffico può essere notevolmente superiore e alcune connessioni potrebbero fallire.</string>
<string name="network_session_mode_entity_description"><![CDATA[Verrà usata una connessione TCP separata (e le credenziali SOCKS) <b> per ogni contatto e membro del gruppo </b>.\n<b> Nota: </b>: se hai molte connessioni, il consumo di batteria e traffico può essere notevolmente superiore e alcune connessioni potrebbero fallire.]]></string>
<string name="network_session_mode_entity">Connessione</string>
<string name="messages_section_description">Questa impostazione si applica ai messaggi del profilo di chat attuale</string>
<string name="network_session_mode_transport_isolation">Isolamento del trasporto</string>
@@ -1101,7 +1100,7 @@
<string name="v5_0_polish_interface_descr">Grazie agli utenti – contribuite via Weblate!</string>
<string name="v5_0_large_files_support">Video e file fino a 1 GB</string>
<string name="auto_accept_contact">Accetta automaticamente</string>
<string name="auth_open_chat_profiles">Apri i profili di chat</string>
<string name="auth_open_chat_profiles">Cambia i profili di chat</string>
<string name="learn_more">Maggiori informazioni</string>
<string name="scan_qr_to_connect_to_contact">Per connettervi, il tuo contatto può scansionare il codice QR o usare il link nell\'app.</string>
<string name="you_can_accept_or_reject_connection">Quando le persone chiedono di connettersi, puoi accettare o rifiutare.</string>
@@ -2119,4 +2118,99 @@
<string name="v6_1_switch_chat_profile_descr">Cambia profilo di chat per inviti una tantum.</string>
<string name="v6_1_delete_many_messages_descr">Elimina o modera fino a 200 messaggi.</string>
<string name="v6_1_forward_many_messages_descr">Inoltra fino a 20 messaggi alla volta.</string>
<string name="no_message_servers_configured">Nessun server dei messaggi.</string>
<string name="no_message_servers_configured_for_receiving">Nessun server per ricevere messaggi.</string>
<string name="errors_in_servers_configuration">Errori nella configurazione dei server.</string>
<string name="for_chat_profile">Per il profilo di chat %s:</string>
<string name="connection_error_quota">Messaggi non consegnati</string>
<string name="message_deleted_or_not_received_error_title">Nessun messaggio</string>
<string name="connection_security">Sicurezza della connessione</string>
<string name="simplex_address_and_1_time_links_are_safe_to_share">L\'indirizzo SimpleX e i link una tantum sono sicuri da condividere tramite qualsiasi messenger.</string>
<string name="to_protect_against_your_link_replaced_compare_codes">Per proteggerti dalla sostituzione del tuo link, puoi confrontare i codici di sicurezza del contatto.</string>
<string name="you_can_set_connection_name_to_remember">Puoi impostare il nome della connessione per ricordare con chi è stato condiviso il link.</string>
<string name="share_1_time_link_with_a_friend">Condividi link una tantum con un amico</string>
<string name="create_1_time_link">Crea link una tantum</string>
<string name="for_social_media">Per i social media</string>
<string name="or_to_share_privately">O per condividere in modo privato</string>
<string name="onboarding_network_operators">Operatori di rete</string>
<string name="onboarding_network_operators_app_will_use_different_operators">Quando più di un operatore di rete è attivato, l\'app userà i server di diversi operatori per ogni conversazione.</string>
<string name="onboarding_network_operators_conditions_you_can_configure">Puoi configurare gli operatori nelle impostazioni di rete e server.</string>
<string name="onboarding_choose_server_operators">Scegli gli operatori</string>
<string name="onboarding_select_network_operators_to_use">Seleziona gli operatori di rete da usare.</string>
<string name="onboarding_network_operators_continue">Continua</string>
<string name="onboarding_network_operators_update">Aggiorna</string>
<string name="onboarding_network_operators_review_later">Esamina più tardi</string>
<string name="network_preset_servers_title">Server preimpostati</string>
<string name="operator_conditions_accepted">Condizioni accettate</string>
<string name="operator_conditions_accepted_for_enabled_operators_on">Le condizioni verranno accettate automaticamente per gli operatori attivati il: %s.</string>
<string name="your_servers">I tuoi server</string>
<string name="operator_review_conditions">Esamina le condizioni</string>
<string name="operators_conditions_accepted_for"><![CDATA[Condizioni accettate per gli operatori: <b>%s</b>.]]></string>
<string name="operator_conditions_accepted_for_some"><![CDATA[Condizioni già accettate per i seguenti operatori: <b>%s</b>.]]></string>
<string name="operator_conditions_failed_to_load">Il testo delle condizioni attuali testo non è stato caricato, puoi consultare le condizioni tramite questo link:</string>
<string name="operator_info_title">Operatore di rete</string>
<string name="operator_servers_title">Server di %s</string>
<string name="use_servers_of_operator_x">Usa %s</string>
<string name="operator_website">Sito web</string>
<string name="operators_conditions_will_be_accepted_for"><![CDATA[Le condizioni verranno accettate per gli operatori: <b>%s</b>.]]></string>
<string name="operator_conditions_accepted_on">Condizioni accettate il: %s.</string>
<string name="operator">Operatore</string>
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[Le condizioni verranno accettate per gli operatori: <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[Le stesse condizioni verranno applicate per l\'operatore <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[Le stesse condizioni verranno applicate per gli operatori: <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_applied"><![CDATA[Queste condizioni verranno applicate anche per: <b>%s</b>.]]></string>
<string name="accept_conditions">Accetta le condizioni</string>
<string name="error_updating_server_title">Errore di aggiornamento del server</string>
<string name="operator_use_for_messages_private_routing">Per l\'instradamento privato</string>
<string name="xftp_servers_per_user">I server per nuovi file del tuo profilo di chat attuale</string>
<string name="operator_use_for_messages_receiving">Per ricevere</string>
<string name="operator_use_for_sending">Per inviare</string>
<string name="operator_use_for_messages">Usa per i messaggi</string>
<string name="view_conditions">Vedi le condizioni</string>
<string name="operators_conditions_will_also_apply"><![CDATA[Queste condizioni verranno applicate anche per: <b>%s</b>.]]></string>
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[Per usare i server di <b>%s</b>, accetta le condizioni d\'uso.]]></string>
<string name="operator_conditions_of_use">Condizioni d\'uso</string>
<string name="operator_open_changes">Apri le modifiche</string>
<string name="operator_open_conditions">Apri le condizioni</string>
<string name="error_server_protocol_changed">Il protocollo del server è cambiato.</string>
<string name="error_adding_server">Errore di aggiunta del server</string>
<string name="operator_server_alert_title">Server dell\'operatore</string>
<string name="server_added_to_operator__name">Server aggiunto all\'operatore %s.</string>
<string name="error_server_operator_changed">L\'operatore del server è cambiato.</string>
<string name="appearance_app_toolbars">Barre degli strumenti</string>
<string name="appearance_in_app_bars_alpha">Trasparenza</string>
<string name="v6_2_network_decentralization">Decentralizzazione della rete</string>
<string name="v6_2_network_decentralization_descr">Il secondo operatore preimpostato nell\'app!</string>
<string name="v6_2_network_decentralization_enable_flux">Attiva Flux</string>
<string name="view_updated_conditions">Vedi le condizioni aggiornate</string>
<string name="appearance_bars_blur_radius">Sfocatura</string>
<string name="operator_added_message_servers">Server dei messaggi aggiunti</string>
<string name="operator_added_xftp_servers">Server di multimediali e file aggiunti</string>
<string name="address_or_1_time_link">Indirizzo o link una tantum?</string>
<string name="address_settings">Impostazioni dell\'indirizzo</string>
<string name="one_time_link_can_be_used_with_one_contact_only"><![CDATA[Il link una tantum puo\' essere usato <i>con un solo contatto</i> - condividilo di persona o tramite un messenger.]]></string>
<string name="onboarding_network_operators_conditions_will_be_accepted">Le condizioni verranno accettate per gli operatori attivati dopo 30 giorni.</string>
<string name="operator_conditions_will_be_accepted_on">Le condizioni verranno accettate il: %s.</string>
<string name="error_accepting_operator_conditions">Errore di accettazione delle condizioni</string>
<string name="failed_to_save_servers">Errore di salvataggio dei server</string>
<string name="v6_2_network_decentralization_enable_flux_reason">per una migliore privacy dei metadati.</string>
<string name="onboarding_network_operators_app_will_use_for_routing">Ad esempio, se ricevi messaggi tramite il server di SimpleX Chat, l\'app userà uno dei server Flux per l\'instradamento privato.</string>
<string name="v6_2_improved_chat_navigation">Navigazione della chat migliorata</string>
<string name="smp_servers_new_server">Nuovo server</string>
<string name="operator_use_for_files">Usa per i file</string>
<string name="simplex_address_or_1_time_link">Indirizzo SimpleX o link una tantum?</string>
<string name="message_deleted_or_not_received_error_desc">Questo messaggio è stato eliminato o non ancora ricevuto.</string>
<string name="address_creation_instruction">Tocca \"Crea indirizzo SimpleX\" nel menu per crearlo più tardi.</string>
<string name="connection_error_quota_desc">La connessione ha raggiunto il limite di messaggi non consegnati, il contatto potrebbe essere offline.</string>
<string name="operator_use_operator_toggle_description">Usa i server</string>
<string name="onboarding_network_operators_configure_via_settings">Puoi configurare i server nelle impostazioni.</string>
<string name="no_media_servers_configured">Nessun server di multimediali e file.</string>
<string name="no_message_servers_configured_for_private_routing">Nessun server per l\'instradamento dei messaggi privati.</string>
<string name="no_media_servers_configured_for_private_routing">Nessun server per ricevere file.</string>
<string name="no_media_servers_configured_for_sending">Nessun server per inviare file.</string>
<string name="v6_2_improved_chat_navigation_descr">- Apri la chat sul primo messaggio non letto.\n- Salta ai messaggi citati.</string>
<string name="share_address_publicly">Condividi indirizzo pubblicamente</string>
<string name="share_simplex_address_on_social_media">Condividi indirizzo SimpleX sui social media.</string>
<string name="chat_archive">O importa file archivio</string>
<string name="remote_hosts_section">Telefoni remoti</string>
</resources>
@@ -60,8 +60,7 @@
<string name="v5_0_app_passcode">קוד גישה לאפליקציה</string>
<string name="app_version_title">גרסת האפליקציה</string>
<string name="network_session_mode_user_description"><![CDATA[חיבור TCP נפרד (ואישור SOCKS) ייווצר <b>לכל פרופיל צ׳אט שיש ברשותך באפליקציה</b>.]]></string>
<string name="network_session_mode_entity_description">חיבור TCP נפרד (ואישור SOCKS) ייווצר <b>לכל איש קשר וחבר קבוצה</b>.
\n<b>שימו לב</b>: אם ברשותכם חיבורים רבים, צריכת הסוללה ותעבורת האינטרנט עשויה להיות גבוהה משמעותית וחלק מהחיבורים עלולים להיכשל.</string>
<string name="network_session_mode_entity_description"><![CDATA[חיבור TCP נפרד (ואישור SOCKS) ייווצר <b>לכל איש קשר וחבר קבוצה</b>. \n<b>שימו לב</b>: אם ברשותכם חיבורים רבים, צריכת הסוללה ותעבורת האינטרנט עשויה להיות גבוהה משמעותית וחלק מהחיבורים עלולים להיכשל.]]></string>
<string name="icon_descr_video_asked_to_receive">הנמען התבקש לקבל את הסרטון</string>
<string name="icon_descr_asked_to_receive">הנמען התבקש לקבל את התמונה</string>
<string name="attach">צרף</string>
@@ -383,7 +382,7 @@
<string name="ttl_weeks">%d שבועות</string>
<string name="v4_5_multiple_chat_profiles_descr">שמות שונים, אווטארים ובידוד תעבורה.</string>
<string name="conn_level_desc_direct">ישיר</string>
<string name="direct_messages_are_prohibited_in_chat">הודעות ישירות בין חברי קבוצה אסורות בקבוצה זו.</string>
<string name="direct_messages_are_prohibited_in_group">הודעות ישירות בין חברי קבוצה אסורות בקבוצה זו.</string>
<string name="display_name">הזן את שמך:</string>
<string name="display_name_cannot_contain_whitespace">שם תצוגה אינו יכול להכיל רווחים.</string>
<string name="ttl_months">%d חודשים</string>
@@ -41,8 +41,7 @@
<string name="app_version_title">アプリのバージョン</string>
<string name="app_version_name">アプリのバージョン: v%s</string>
<string name="network_session_mode_user_description"><![CDATA[<b>アプリ内の各チャットプロフィールに、</b>.連絡先毎にそれぞれのTCP接続(とSOCKS資格情報)が使われます。]]></string>
<string name="network_session_mode_entity_description"><b>各連絡先とグループに、</b>それぞれのTCP接続(とSOCKS資格情報)が使われます。
\n<b>※注意※</b> 接続が多かったら、電池とデータの使用量が増えて、切断する可能性もあります。</string>
<string name="network_session_mode_entity_description"><![CDATA[<b>各連絡先とグループに、</b>それぞれのTCP接続(とSOCKS資格情報)が使われます。 \n<b>※注意※</b> 接続が多かったら、電池とデータの使用量が増えて、切断する可能性もあります。]]></string>
<string name="bold_text">太文字</string>
<string name="icon_descr_audio_call">音声通話</string>
<string name="settings_audio_video_calls">音声とビデオ通話</string>
@@ -251,7 +250,7 @@
<string name="alert_title_group_invitation_expired">招待が期限切れました!</string>
<string name="smp_servers_delete_server">サーバを削除</string>
<string name="auth_device_authentication_is_disabled_turning_off">端末認証がオフです。SimpleXロックを解除します。</string>
<string name="direct_messages_are_prohibited_in_chat">このグループではメンバー間のダイレクトメッセージが無効です。</string>
<string name="direct_messages_are_prohibited_in_group">このグループではメンバー間のダイレクトメッセージが無効です。</string>
<string name="disappearing_messages_are_prohibited">このグループでは消えるメッセージが無効です。</string>
<string name="ttl_min">%d 分</string>
<string name="ttl_weeks">%d 週</string>
@@ -290,7 +290,7 @@
<string name="downgrade_and_open_chat">다운그레이드하고 채팅 열기</string>
<string name="direct_messages">다이렉트 메시지</string>
<string name="timed_messages">사라지는 메시지</string>
<string name="direct_messages_are_prohibited_in_chat">이 그룹에서는 멤버들의 다이렉트 메시지가 금지되어 있어요.</string>
<string name="direct_messages_are_prohibited_in_group">이 그룹에서는 멤버들의 다이렉트 메시지가 금지되어 있어요.</string>
<string name="ttl_s">%d초</string>
<string name="ttl_sec">%d 초</string>
<string name="ttl_h">%d시</string>
@@ -351,12 +351,7 @@
<string name="allow_accepting_calls_from_lock_screen">설정에서 잠금 화면에서 바로 전화를 받을 수 있도록 설정할 수 있어요.</string>
<string name="alert_text_connection_pending_they_need_to_be_online_can_delete_and_retry">연결을 완료하려면 대화 상대가 온라인 상태여야 해요.
\n연결 요청을 취소하고 대화 상대를 삭제할 수 있어요 (그리고 새 링크로 재시도).</string>
<string name="alert_text_skipped_messages_it_can_happen_when">다음과 같은 경우에 발생할 수 있어요.
\n1. 대화 상대가 메시지를 보낸 지 30일 지나서 서버에서 삭제된 경우
\n2. 메시지를 수신하는 데 사용된 서버가 업데이트되고 재부팅된 경우
\n3. 침해된 연결의 경우
\n서버 업데이트를 받으려면 설정에서 개발자에게 연락해 주세요.
\n저희 개발팀은 메시지 손실을 방지하기 위해 중복된 서버를 추가할 예정이에요.</string>
<string name="alert_text_skipped_messages_it_can_happen_when">다음과 같은 경우에 발생할 수 있습니다. \n1. 대화 상대가 메시지를 보낸 지 30일 지나서 서버에서 삭제된 경우 \n2. 메시지를 수신하는 데 사용된 서버가 업데이트되고 재부팅된 경우 \n3. 침해된 연결의 경우</string>
<string name="auth_simplex_lock_turned_on">SimpleX 잠금 켜짐</string>
<string name="callstate_received_answer">응답됨…</string>
<string name="callstate_received_confirmation">확인 받음…</string>
@@ -1288,7 +1283,7 @@
<string name="info_row_created_at">보낸 날짜</string>
<string name="info_row_debug_delivery">전송 디버그</string>
<string name="files_are_prohibited_in_group">파일 및 미디어는 이 그룹에서 금지됩니다.</string>
<string name="enter_this_device_name">이 장치의 이름을 입력하십시오…</string>
<string name="enter_this_device_name">이 기기의 이름을 입력하십시오…</string>
<string name="found_desktop">데스크톱을 찾음</string>
<string name="snd_error_proxy_relay">전달 서버: %1$s\n대상 서버 오류: %2$s</string>
<string name="snd_error_proxy">전달 서버: %1$s\n오류: %2$s</string>
@@ -1420,4 +1415,47 @@
<string name="invite_friends">친구 초대</string>
<string name="v4_3_irreversible_message_deletion">메시지 영구 삭제</string>
<string name="action_button_add_members">초대</string>
<string name="onboarding_choose_server_operators">운영자 선택</string>
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[운영자(들)의 이용 약관이 수락될 것입니다: <b>%s</b>.]]></string>
<string name="auth_open_chat_profiles">채팅 프로필 변경</string>
<string name="disable_onion_hosts_when_not_supported"><![CDATA[Set <i>SOCKS 프록시가 지원하지 않는 경우</i> .onion 호스트를 No로 사용합니다.]]></string>
<string name="remote_host_error_missing"><![CDATA[모바일 <b>%s</b> 이 찾을 수 없음]]></string>
<string name="system_restricted_background_in_call_warn"><![CDATA[백그라운드에서 전화를 걸려면 <b>앱 설정에서 앱 배터리 사용량</b> / <b>제한 없음</b> 을 선택하세요.]]></string>
<string name="remote_host_error_disconnected"><![CDATA[모바일 <b>%s</b> 이 연결 끊김]]></string>
<string name="connect_plan_this_is_your_link_for_group_vName"><![CDATA[그룹 링크입니다 <b>%1$s</b>!]]></string>
<string name="migrate_from_device_you_must_not_start_database_on_two_device"><![CDATA[두 기기에서 동일한 데이터베이스를<b> 사용해서는 안 됩니다</b>.]]></string>
<string name="read_more_in_user_guide_with_link"><![CDATA[<font color="#0088ff">사용자 가이드</font>에서 확인하세요.]]></string>
<string name="you_can_also_connect_by_clicking_the_link"><![CDATA[링크를 클릭하여 연결할 수도 있습니다. 브라우저에서 열리면<b> 모바일 앱에서 열기 </b>버튼을 클릭합니다.]]></string>
<string name="operator">운영자</string>
<string name="operators_conditions_will_be_accepted_for"><![CDATA[운영자(들)의 이용 약관이 수락될 것입니다: <b>%s</b>.]]></string>
<string name="operator_conditions_accepted_on">약관 수락 날짜: %s.</string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[운영자에게도 동일한 약관이 적용됩니다 <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[운영자(들)에게도 동일한 약관이 적용됩니다: <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_applied"><![CDATA[이러한 약관은 다음에도 적용됩니다: <b>%s</b>.]]></string>
<string name="operator_added_xftp_servers">추가된 미디어 및 파일 서버</string>
<string name="appearance_app_toolbars">앱 툴바</string>
<string name="appearance_bars_blur_radius">흐리기</string>
<string name="accept_conditions">약관 수락</string>
<string name="operator_conditions_accepted">약관을 수락함</string>
<string name="operator_added_message_servers">추가된 메시지 서버</string>
<string name="address_or_1_time_link">주소 또는 일회용 링크?</string>
<string name="address_settings">주소 설정</string>
<string name="one_time_link_can_be_used_with_one_contact_only"><![CDATA[일회용 링크는 <i>한 명의 연락처에만 사용할 수 있으며</i> - 직접 또는 메신저를 통해 공유하십시오.]]></string>
<string name="operators_conditions_accepted_for"><![CDATA[운영자(들)의 이용 약관이 수락됩니다(s): <b>%s</b>.]]></string>
<string name="operator_conditions_accepted_for_some"><![CDATA[다음 운영자(들)의 이용 약관이 이미 수락되었습니다: <b>%s</b>.]]></string>
<string name="remote_host_error_busy"><![CDATA[모바일 <b>%s</b> 이 현재 사용 중]]></string>
<string name="operators_conditions_will_also_apply"><![CDATA[이러한 약관은 다음에도 적용됩니다: <b>%s</b>.]]></string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[개인 정보를 보호하기 위해 앱에서는 푸시 알림 대신 <b>SimpleX 백그라운드 서비스</b>를 제공합니다. - 이 기능은 하루에 몇 퍼센트의 배터리를 소모합니다.]]></string>
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[<b>%s</b> 의 서버를 사용하려면 사용 약관에 동의하십시오.]]></string>
<string name="connect_plan_you_are_already_connecting_to_vName"><![CDATA[이미 <b>%1$s</b> 에 연결 중입니다.]]></string>
<string name="turn_off_battery_optimization"><![CDATA[SimpleX가 <b>SimpleX의 백그라운드에서 실행되도록</b> 허용하십시오. 그렇지 않으면 알림을 사용할 수 없습니다.]]></string>
<string name="system_restricted_background_warn"><![CDATA[알림을 활성화하려면 <b>앱 설정에서 앱 배터리 사용량</b> / <b>제한 없음</b> 을 선택하십시오.]]></string>
<string name="remote_host_error_inactive"><![CDATA[모바일 <b>%s</b> 이 현재 비활성화됨]]></string>
<string name="you_can_connect_to_simplex_chat_founder"><![CDATA[<font color="#0088ff">SimpleX Chat 개발자에게 연결하여 질문하고 업데이트를 받을 수 있습니다</font>.]]></string>
<string name="remote_host_was_disconnected_toast"><![CDATA[모바일 <b>%s</b> 이 연결 끊김]]></string>
<string name="open_on_mobile_and_scan_qr_code"><![CDATA[모바일 앱 <i>에서 데스크톱에서</i> 사용을 열고 QR 코드를 스캔합니다.]]></string>
<string name="remote_host_error_timeout"><![CDATA[모바일에 연결하는 동안 시간이 초과했습니다 <b>%s</b>]]></string>
<string name="connect_plan_you_are_already_joining_the_group_vName"><![CDATA[이미 <b>%1$s</b> 그룹에 가입하는 중 입니다.]]></string>
<string name="remote_host_error_bad_version"><![CDATA[모바일 <b>%s</b> 버전이 지원되지 않습니다. 두 기기에서 동일한 버전을 사용하는지 확인하십시오.]]></string>
<string name="connect_plan_you_are_already_in_group_vName"><![CDATA[이미 <b>%1$s</b> 그룹에 속해 있습니다.]]></string>
</resources>
@@ -507,7 +507,7 @@
<string name="leave_group_question">Išeiti iš grupės\?</string>
<string name="unknown_database_error_with_info">Nežinoma duomenų bazės klaida: %s</string>
<string name="users_delete_with_connections">Profilis ir ryšiai su serveriu</string>
<string name="direct_messages_are_prohibited_in_chat">Tiesioginės žinutės tarp narių šioje grupėje yra uždraustos.</string>
<string name="direct_messages_are_prohibited_in_group">Tiesioginės žinutės tarp narių šioje grupėje yra uždraustos.</string>
<string name="audio_video_calls">Garso/vaizdo skambučiai</string>
<string name="available_in_v51">"
\nPrieinama versijoje v5.1"</string>
@@ -47,8 +47,7 @@
<string name="allow_verb">Toestaan</string>
<string name="chat_item_ttl_day">1 dag</string>
<string name="accept_feature">Accepteer</string>
<string name="network_session_mode_entity_description">Er wordt een afzonderlijke TCP-verbinding (en SOCKS-referentie) gebruikt <b> voor elk contact en groepslid </b>.
\n<b>Let op</b>: als u veel verbindingen heeft, kan uw batterij- en verkeersverbruik aanzienlijk hoger zijn en kunnen sommige verbindingen uitvallen.</string>
<string name="network_session_mode_entity_description"><![CDATA[Er wordt een aparte TCP-verbinding (en SOCKS-referentie) gebruikt <b>voor elk contact en groepslid</b>.\n<b>Let op</b>: als u veel verbindingen hebt, kan het batterij- en verkeersverbruik aanzienlijk hoger zijn en kunnen sommige verbindingen mislukken.]]></string>
<string name="icon_descr_audio_call">audio oproep</string>
<string name="icon_descr_audio_on">Geluid aan</string>
<string name="settings_audio_video_calls">Audio en video gesprekken</string>
@@ -255,7 +254,7 @@
<string name="auth_device_authentication_is_disabled_turning_off">Apparaatverificatie is uitgeschakeld. SimpleX Vergrendelen uitschakelen.</string>
<string name="display_name">Vul uw naam in:</string>
<string name="auth_device_authentication_is_not_enabled_you_can_turn_on_in_settings_once_enabled">Apparaatverificatie is niet ingeschakeld. Je kunt SimpleX Vergrendelen inschakelen via Instellingen zodra je apparaatverificatie hebt ingeschakeld.</string>
<string name="direct_messages_are_prohibited_in_chat">Directe berichten tussen leden zijn verboden in deze groep.</string>
<string name="direct_messages_are_prohibited_in_group">Directe berichten tussen leden zijn verboden in deze groep.</string>
<string name="total_files_count_and_size">%d bestand(en) met een totale grootte van %s</string>
<string name="ttl_hour">%d uur</string>
<string name="no_call_on_lock_screen">Uitzetten</string>
@@ -1098,7 +1097,7 @@
<string name="v5_0_polish_interface">Poolse interface</string>
<string name="v5_0_polish_interface_descr">Dank aan de gebruikers – draag bij via Weblate!</string>
<string name="v5_0_large_files_support">Video\'s en bestanden tot 1 GB</string>
<string name="auth_open_chat_profiles">Open chatprofielen</string>
<string name="auth_open_chat_profiles">Chatprofielen wijzigen</string>
<string name="learn_more_about_address">Over SimpleX adres</string>
<string name="learn_more">Kom meer te weten</string>
<string name="scan_qr_to_connect_to_contact">Om verbinding te maken, kan uw contact de QR-code scannen of de link in de app gebruiken.</string>
@@ -2116,4 +2115,98 @@
<string name="v6_1_delete_many_messages_descr">Maximaal 200 berichten verwijderen of modereren.</string>
<string name="v6_1_forward_many_messages_descr">Stuur maximaal 20 berichten tegelijk door.</string>
<string name="v6_1_better_calls">Betere gesprekken</string>
<string name="accept_conditions">Accepteer voorwaarden</string>
<string name="operator_added_message_servers">Berichtservers toegevoegd</string>
<string name="operator_added_xftp_servers">Media- en bestandsservers toegevoegd</string>
<string name="operator_conditions_accepted">Geaccepteerde voorwaarden</string>
<string name="address_or_1_time_link">Adres of eenmalige link?</string>
<string name="operators_conditions_accepted_for"><![CDATA[Voorwaarden zijn geaccepteerd voor de operator(s): <b>%s</b>.]]></string>
<string name="failed_to_save_servers">Fout bij het opslaan van servers</string>
<string name="no_message_servers_configured">Geen berichtenservers.</string>
<string name="no_media_servers_configured">Geen media- en bestandsservers.</string>
<string name="no_media_servers_configured_for_private_routing">Geen servers om bestanden te ontvangen.</string>
<string name="no_message_servers_configured_for_receiving">Geen servers om berichten te ontvangen.</string>
<string name="errors_in_servers_configuration">Fouten in de serverconfiguratie.</string>
<string name="for_chat_profile">Voor chatprofiel %s:</string>
<string name="connection_error_quota">Niet afgeleverde berichten</string>
<string name="connection_error_quota_desc">De verbinding heeft de limiet van niet-afgeleverde berichten bereikt. Uw contactpersoon is mogelijk offline.</string>
<string name="message_deleted_or_not_received_error_desc">Dit bericht is verwijderd of nog niet ontvangen.</string>
<string name="address_creation_instruction">Tik op SimpleX-adres maken in het menu om het later te maken.</string>
<string name="share_address_publicly">Adres openbaar delen</string>
<string name="share_1_time_link_with_a_friend">Deel eenmalig een link met een vriend</string>
<string name="share_simplex_address_on_social_media">Deel het SimpleX-adres op sociale media.</string>
<string name="one_time_link_can_be_used_with_one_contact_only"><![CDATA[Eenmalige link kan <i>slechts met één contactpersoon</i> worden gebruikt - deel persoonlijk of via een messenger.]]></string>
<string name="connection_security">Beveiliging van de verbinding</string>
<string name="you_can_set_connection_name_to_remember">U kunt een verbindingsnaam instellen, zodat u kunt onthouden met wie de link is gedeeld.</string>
<string name="simplex_address_and_1_time_links_are_safe_to_share">SimpleX-adressen en eenmalige links kunnen veilig worden gedeeld via elke messenger.</string>
<string name="smp_servers_new_server">Nieuwe server</string>
<string name="for_social_media">Voor social media</string>
<string name="or_to_share_privately">Of om privé te delen</string>
<string name="address_settings">Adres instellingen</string>
<string name="create_1_time_link">Eenmalige link maken</string>
<string name="onboarding_choose_server_operators">Operators kiezen</string>
<string name="onboarding_network_operators_conditions_will_be_accepted">Voor ingeschakelde operators worden de voorwaarden na 30 dagen geaccepteerd.</string>
<string name="onboarding_network_operators">Netwerkbeheerders</string>
<string name="onboarding_network_operators_review_later">Later beoordelen</string>
<string name="onboarding_select_network_operators_to_use">Selecteer welke netwerkoperators u wilt gebruiken.</string>
<string name="onboarding_network_operators_update">Update</string>
<string name="onboarding_network_operators_app_will_use_different_operators">Wanneer er meer dan één netwerkoperator is ingeschakeld, gebruikt de app voor elk gesprek de servers van verschillende operators.</string>
<string name="onboarding_network_operators_conditions_you_can_configure">U kunt operators configureren in Netwerk- en serverinstellingen.</string>
<string name="onboarding_network_operators_continue">Doorgaan</string>
<string name="operator_review_conditions">Voorwaarden bekijken</string>
<string name="your_servers">Uw servers</string>
<string name="operator_conditions_accepted_for_some"><![CDATA[Voorwaarden worden al geaccepteerd voor de volgende operator(s): <b>%s</b>.]]></string>
<string name="operators_conditions_will_be_accepted_for"><![CDATA[Voorwaarden worden geaccepteerd voor de operator(s): <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_applied"><![CDATA[Deze voorwaarden zijn ook van toepassing op: <b>%s</b>.]]></string>
<string name="operator_conditions_accepted_on">Voorwaarden geaccepteerd op: %s.</string>
<string name="operator_conditions_will_be_accepted_on">Voorwaarden worden geaccepteerd op: %s.</string>
<string name="operator_conditions_failed_to_load">De tekst van de huidige voorwaarden kon niet worden geladen. U kunt de voorwaarden bekijken via deze link:</string>
<string name="operator_info_title">Netwerkbeheerder</string>
<string name="operator">Operator</string>
<string name="operator_servers_title">%s servers</string>
<string name="use_servers_of_operator_x">Gebruik %s</string>
<string name="operator_use_operator_toggle_description">Gebruik servers</string>
<string name="operator_website">Website</string>
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[Voorwaarden worden geaccepteerd voor operator(s): <b>%s</b>.]]></string>
<string name="operators_conditions_will_also_apply"><![CDATA[Deze voorwaarden zijn ook van toepassing op: <b>%s</b>.]]></string>
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[Om de servers van <b>%s</b> te gebruiken, moet u de gebruiksvoorwaarden accepteren.]]></string>
<string name="operator_conditions_of_use">Gebruiksvoorwaarden</string>
<string name="operator_use_for_messages_private_routing">Voor privé-routering</string>
<string name="operator_open_changes">Wijzigingen openen</string>
<string name="xftp_servers_per_user">De servers voor nieuwe bestanden van uw huidige chatprofiel</string>
<string name="operator_use_for_messages_receiving">Om te ontvangen</string>
<string name="operator_use_for_files">Gebruik voor bestanden</string>
<string name="operator_use_for_messages">Gebruik voor berichten</string>
<string name="view_conditions">Bekijk voorwaarden</string>
<string name="error_server_protocol_changed">Serverprotocol gewijzigd.</string>
<string name="operator_server_alert_title">Operatorserver</string>
<string name="server_added_to_operator__name">Server toegevoegd aan operator %s.</string>
<string name="appearance_in_app_bars_alpha">Transparantie</string>
<string name="v6_2_network_decentralization_enable_flux_reason">voor betere privacy van metagegevens.</string>
<string name="v6_2_improved_chat_navigation">Verbeterde chatnavigatie</string>
<string name="v6_2_network_decentralization">Netwerk decentralisatie</string>
<string name="v6_2_network_decentralization_descr">De tweede vooraf ingestelde operator in de app!</string>
<string name="onboarding_network_operators_app_will_use_for_routing">Als u bijvoorbeeld berichten ontvangt via de SimpleX Chat-server, gebruikt de app een van de Flux-servers voor privéroutering.</string>
<string name="v6_2_network_decentralization_enable_flux">Flux inschakelen</string>
<string name="message_deleted_or_not_received_error_title">Geen bericht</string>
<string name="appearance_app_toolbars">App-werkbalken</string>
<string name="appearance_bars_blur_radius">Vervagen</string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[Dezelfde voorwaarden zijn van toepassing op operator <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[Dezelfde voorwaarden zijn van toepassing op operator(s): <b>%s</b>.]]></string>
<string name="operator_conditions_accepted_for_enabled_operators_on">Voorwaarden worden automatisch geaccepteerd voor ingeschakelde operators op: %s.</string>
<string name="error_updating_server_title">Fout bij het updaten van de server</string>
<string name="error_accepting_operator_conditions">Fout bij het accepteren van voorwaarden</string>
<string name="error_adding_server">Fout bij toevoegen server</string>
<string name="no_message_servers_configured_for_private_routing">Geen servers voor het routeren van privéberichten.</string>
<string name="error_server_operator_changed">Serveroperator gewijzigd.</string>
<string name="no_media_servers_configured_for_sending">Geen servers om bestanden te verzenden.</string>
<string name="operator_open_conditions">Open voorwaarden</string>
<string name="v6_2_improved_chat_navigation_descr">- Open chat op het eerste ongelezen bericht.\n- Ga naar geciteerde berichten.</string>
<string name="network_preset_servers_title">Vooraf ingestelde servers</string>
<string name="view_updated_conditions">Bekijk de bijgewerkte voorwaarden</string>
<string name="simplex_address_or_1_time_link">SimpleX adres of eenmalige link?</string>
<string name="to_protect_against_your_link_replaced_compare_codes">Om te voorkomen dat uw link wordt vervangen, kunt u contactbeveiligingscodes vergelijken.</string>
<string name="operator_use_for_sending">Om te verzenden</string>
<string name="onboarding_network_operators_configure_via_settings">U kunt servers configureren via instellingen.</string>
<string name="chat_archive">Of importeer archiefbestand</string>
</resources>
@@ -335,8 +335,7 @@
<string name="app_version_title">Wersja aplikacji</string>
<string name="app_version_name">Wersja aplikacji: v%s</string>
<string name="network_session_mode_user_description"><![CDATA[Oddzielne połączenie TCP (i poświadczenia SOCKS) będą używane <b>dla każdego profilu czatu, który masz w aplikacji</b>.]]></string>
<string name="network_session_mode_entity_description">Oddzielne połączenie TCP (i poświadczenia SOCKS) będą używane <b>dla każdego kontaktu i członka grupy</b>.
\n<b>Uwaga</b>: jeśli masz wiele połączeń, zużycie baterii i ruchu może być znacznie wyższe, a niektóre połączenia mogą się nie udać.</string>
<string name="network_session_mode_entity_description"><![CDATA[Oddzielne połączenie TCP (i poświadczenia SOCKS) będą używane <b>dla każdego kontaktu i członka grupy</b>. \n<b>Uwaga</b>: jeśli masz wiele połączeń, zużycie baterii i ruchu może być znacznie wyższe, a niektóre połączenia mogą się nie udać.]]></string>
<string name="network_session_mode_user">Profil czatu</string>
<string name="network_session_mode_entity">Połączenie</string>
<string name="core_version">Wersja rdzenia: v%s</string>
@@ -808,7 +807,7 @@
<string name="both_you_and_your_contact_can_send_disappearing">Zarówno Ty, jak i Twój kontakt możecie wysyłać znikające wiadomości.</string>
<string name="contacts_can_mark_messages_for_deletion">Kontakty mogą oznaczać wiadomości do usunięcia; będziesz mógł je zobaczyć.</string>
<string name="delete_after">Usuń po</string>
<string name="direct_messages_are_prohibited_in_chat">Bezpośrednie wiadomości między członkami są zabronione w tej grupie.</string>
<string name="direct_messages_are_prohibited_in_group">Bezpośrednie wiadomości między członkami są zabronione w tej grupie.</string>
<string name="disappearing_prohibited_in_this_chat">Znikające wiadomości są zabronione na tym czacie.</string>
<string name="ttl_m">%dm</string>
<string name="ttl_min">%d min</string>
@@ -333,7 +333,7 @@
<string name="settings_experimental_features">Funcionalidades experimentais</string>
<string name="error_creating_link_for_group">Erro ao criar o link de grupo</string>
<string name="error_deleting_link_for_group">Erro ao excluir o link de grupo</string>
<string name="direct_messages_are_prohibited_in_chat">Mensagens diretas entre membros são proibidas neste grupo.</string>
<string name="direct_messages_are_prohibited_in_group">Mensagens diretas entre membros são proibidas neste grupo.</string>
<string name="ttl_h">%dh</string>
<string name="ttl_hours">%d horas</string>
<string name="description_via_contact_address_link_incognito">anônimo via link de endereço de contato</string>
@@ -194,8 +194,7 @@
<string name="v4_5_message_draft_descr">Preservar o último rascunho da mensagem, com anexos.</string>
<string name="icon_descr_video_asked_to_receive">Solicitada a recepção do vídeo</string>
<string name="network_session_mode_user_description"><![CDATA[Uma conexão TCP separada (e credencial SOCKS) será usada <b> para cada perfil de conversa que você tiver na aplicação </b>.]]></string>
<string name="network_session_mode_entity_description">Uma conexão TCP separada (e credencial SOCKS) será usada <b> para cada contato e membro do grupo</b>.
\n<b> Por favor note</b>: se você tiver muitas conexões, o seu consumo de bateria e consumo de tráfego pode ser substancialmente maior e algumas conexões podem falhar.</string>
<string name="network_session_mode_entity_description"><![CDATA[Uma conexão TCP separada (e credencial SOCKS) será usada <b> para cada contato e membro do grupo</b>. \n<b> Por favor note</b>: se você tiver muitas conexões, o seu consumo de bateria e consumo de tráfego pode ser substancialmente maior e algumas conexões podem falhar.]]></string>
<string name="icon_descr_asked_to_receive">Solicitada a recepção da imagem</string>
<string name="auth_unavailable">Autenticação indisponível</string>
<string name="bold_text">negrito</string>
@@ -487,7 +486,7 @@
<string name="database_upgrade">Atualização da base de dados</string>
<string name="ttl_week">%d semana</string>
<string name="ttl_weeks">%d semanas</string>
<string name="direct_messages_are_prohibited_in_chat">Mensagens diretas entre membros são proibidas neste grupo.</string>
<string name="direct_messages_are_prohibited_in_group">Mensagens diretas entre membros são proibidas neste grupo.</string>
<string name="smp_server_test_delete_queue">Eliminar fila</string>
<string name="smp_server_test_download_file">Transferir ficheiro</string>
<string name="icon_descr_file">Ficheiro</string>
@@ -549,8 +549,7 @@
<string name="app_version_code">Versiunea aplicației: %s</string>
<string name="network_session_mode_user_description"><![CDATA[O conexiune separată TCP (și SOCKS credential), va fi folosită <b>pentru fiecare profil de conversație pe care le aveți în aplicație</b>]]></string>
<string name="network_smp_proxy_fallback_allow_downgrade">Permiteți downgrade-ul</string>
<string name="network_session_mode_entity_description">O conexiune separată TCP (și SOCKS credential) va fi folosită <b>pentru fiecare contact și membru de grup</b>
\n<b>Va rugăm considerați că:</b> dacă aveți prea multe conexiuni, consumul dumneavoastră de baterie și trafic de internet pot fi considerabil mai mari, iar unele conexiuni pot eșua.</string>
<string name="network_session_mode_entity_description"><![CDATA[O conexiune separată TCP (și SOCKS credential) va fi folosită <b>pentru fiecare contact și membru de grup</b> \n<b>Va rugăm considerați că:</b> dacă aveți prea multe conexiuni, consumul dumneavoastră de baterie și trafic de internet pot fi considerabil mai mari, iar unele conexiuni pot eșua.]]></string>
<string name="desktop_connection_terminated">Conexiune terminată</string>
<string name="connecting_to_desktop">Se conectează la desktop</string>
<string name="icon_descr_asked_to_receive">Rugat să primească imaginea</string>
@@ -879,7 +879,7 @@
<string name="allow_to_send_voice">Разрешить отправлять голосовые сообщения.</string>
<string name="prohibit_sending_voice">Запретить отправлять голосовые сообщений.</string>
<string name="group_members_can_send_dms">Члены группы могут посылать прямые сообщения.</string>
<string name="direct_messages_are_prohibited_in_chat">Прямые сообщения между членами группы запрещены.</string>
<string name="direct_messages_are_prohibited_in_group">Прямые сообщения между членами группы запрещены.</string>
<string name="group_members_can_delete">Члены группы могут необратимо удалять отправленные сообщения. (24 часа)</string>
<string name="message_deletion_prohibited_in_chat">Необратимое удаление сообщений запрещено в этой группе.</string>
<string name="group_members_can_send_voice">Члены группы могут отправлять голосовые сообщения.</string>
@@ -987,8 +987,7 @@
<string name="users_delete_all_chats_deleted">Все чаты и сообщения будут удалены - это нельзя отменить!</string>
<string name="app_version_code">Сборка приложения: %s</string>
<string name="app_version_name">Версия приложения: v%s</string>
<string name="network_session_mode_entity_description">Отдельное TCP-соединение (и авторизация SOCKS) будет использоваться <b>для каждого контакта и члена группы</b>.
\n<b>Обратите внимание</b>: если у Вас много контактов, потребление батареи и трафика может быть значительно выше, и некоторые соединения могут не работать.</string>
<string name="network_session_mode_entity_description"><![CDATA[Отдельное TCP-соединение (и авторизация SOCKS) будет использоваться <b>для каждого контакта и члена группы</b>. \n<b>Обратите внимание</b>: если у Вас много контактов, потребление батареи и трафика может быть значительно выше, и некоторые соединения могут не работать.]]></string>
<string name="network_session_mode_user_description"><![CDATA[Отдельное TCP-соединение (и авторизация SOCKS) будет использоваться <b>для каждого профиля чата, который Вы имеете в приложении</b>.]]></string>
<string name="core_version">Версия ядра: v%s</string>
<string name="users_delete_question">Удалить профиль чата\?</string>
@@ -480,7 +480,7 @@
<string name="group_members_can_send_disappearing">สมาชิกกลุ่มสามารถส่งข้อความที่จะหายไปหลังจากเวลาที่กำหนดหลังการอ่าน (disappearing messages) ได้</string>
<string name="group_members_can_send_dms">สมาชิกกลุ่มสามารถส่งข้อความโดยตรงได้</string>
<string name="group_members_can_send_voice">สมาชิกกลุ่มสามารถส่งข้อความเสียง</string>
<string name="direct_messages_are_prohibited_in_chat">ข้อความโดยตรงระหว่างสมาชิกเป็นสิ่งต้องห้ามในกลุ่มนี้</string>
<string name="direct_messages_are_prohibited_in_group">ข้อความโดยตรงระหว่างสมาชิกเป็นสิ่งต้องห้ามในกลุ่มนี้</string>
<string name="disappearing_messages_are_prohibited">ข้อความที่จะหายไปหลังจากเวลาที่กำหนดหลังการอ่าน (disappearing messages) เป็นสิ่งต้องห้ามในกลุ่มนี้</string>
<string name="group_members_can_add_message_reactions">สมาชิกกลุ่มสามารถเพิ่มการแสดงปฏิกิริยาต่อข้อความได้</string>
<string name="delete_after">ลบหลังจาก</string>
@@ -71,8 +71,7 @@
<string name="allow_verb">İzin ver</string>
<string name="v5_0_app_passcode">Uygulama erişim kodu</string>
<string name="network_session_mode_user_description"><![CDATA[<b>Uygulamadaki her konuşma profliniz için</b> ayrı bir TCP bağlantısı (ve SOCKS kimliği) kullanılacaktır.]]></string>
<string name="network_session_mode_entity_description"><b>Konuştuğun kişilerin ve grup üyelerinin tamamı için</b> ayrı bir TCP bağlantısı (ve SOCKS kimliği) kullanılacaktır.
\n<b>Bilgin olsun</b>: Çok sayıda bağlantın varsa pilin ve veri kullanımın önemli ölçüde artabilir ve bazı bağlantılar başarısız olabilir.</string>
<string name="network_session_mode_entity_description"><![CDATA[<b>Konuştuğun kişilerin ve grup üyelerinin tamamı için</b> ayrı bir TCP bağlantısı (ve SOCKS kimliği) kullanılacaktır.\n<b>Bilgin olsun</b>: Çok sayıda bağlantın varsa pilin ve veri kullanımın önemli ölçüde artabilir ve bazı bağlantılar başarısız olabilir.]]></string>
<string name="save_and_notify_group_members">Kaydet ve grup üyelerini bilgilendir</string>
<string name="notifications_mode_off">Uygulama açıkken çalışır</string>
<string name="search_verb">Ara</string>
@@ -525,7 +524,7 @@
<string name="snd_conn_event_ratchet_sync_agreed">%s üyesi için şifreleme kabul edildi</string>
<string name="conn_level_desc_direct">doğrudan</string>
<string name="dont_show_again">Yeniden gösterme</string>
<string name="direct_messages_are_prohibited_in_chat">Bu grupta üyeler arası doğrudan mesajlaşma yasaklıdır.</string>
<string name="direct_messages_are_prohibited_in_group">Bu grupta üyeler arası doğrudan mesajlaşma yasaklıdır.</string>
<string name="feature_enabled_for_contact">konuşulan kişi için etkinleşti</string>
<string name="feature_enabled_for_you">senin için etkinleştirildi</string>
<string name="ttl_sec">%d sn</string>
@@ -2115,4 +2114,15 @@
<string name="v6_1_delete_many_messages_descr">200\'e kadar mesajı silin veya düzenleyin.</string>
<string name="v6_1_better_security">Daha iyi güvenlik ✅</string>
<string name="v6_1_better_security_descr">SimpleX protokolleri Trail of Bits tarafından incelenmiştir.</string>
<string name="address_or_1_time_link">Adres mi yoksa tek seferlik bağlantı mı?</string>
<string name="operator_added_message_servers">Mesaj sunucuları eklendi</string>
<string name="accept_conditions">Koşulları kabul edin</string>
<string name="operator_conditions_accepted">Kabul edilen koşullar</string>
<string name="operator_added_xftp_servers">Medya ve dosya sunucuları eklendi</string>
<string name="appearance_app_toolbars">Uygulama araç çubukları</string>
<string name="address_settings">Adres ayarları</string>
<string name="appearance_bars_blur_radius">Bulanıklık</string>
<string name="one_time_link_can_be_used_with_one_contact_only"><![CDATA[1 kerelik bağlantı <i>sadece bir kişiyle</i> kullanılabilir - yüz yüze veya herhangi bir mesajlaşma programı aracılığıyla paylaşın]]></string>
<string name="operator_conditions_accepted_for_some"><![CDATA[Aşağıdaki operatör(ler) için koşullar zaten kabul edilmiştir: <b>%s</b>.]]></string>
<string name="operators_conditions_accepted_for"><![CDATA[Şart(lar) operatör(ler) için kabul edilir: <b>%s</b>.]]></string>
</resources>
@@ -75,8 +75,7 @@
<string name="network_session_mode_user_description"><![CDATA[Окреме TCP-підключення (і обліковий запис SOCKS) буде використовуватися <b>для кожного профілю чату, який у вас є в додатку</b>.]]></string>
<string name="appearance_settings">Вигляд</string>
<string name="app_version_name">Версія додатку: v%s</string>
<string name="network_session_mode_entity_description">Окреме TCP-підключення (і обліковий запис SOCKS) буде використовуватися <b>для кожного контакту та учасника групи</b>.
\n<b>Зверніть увагу</b>: якщо у вас багато підключень, споживання заряду батареї та трафіку може значно збільшитися, і деякі підключення можуть бути невдалими.</string>
<string name="network_session_mode_entity_description"><![CDATA[Окреме TCP-з’єднання (та облікові дані SOCKS) використовуватиметься <b>для кожного контакту та члена групи</b>.\n<b>Зверніть увагу</b>: якщо у вас багато з’єднань, заряд акумулятора та споживання трафіку можуть бути значно вищими, а деякі з’єднання можуть бути невдалими.]]></string>
<string name="turning_off_service_and_periodic">Активована оптимізація батареї, вимикається фоновий сервіс і періодичні запити нових повідомлень. Ви можете знову увімкнути їх у налаштуваннях.</string>
<string name="back">Назад</string>
<string name="bold_text">жирний</string>
@@ -104,7 +103,7 @@
<string name="integrity_msg_bad_hash">поганий хеш повідомлення</string>
<string name="integrity_msg_bad_id">поганий ідентифікатор повідомлення</string>
<string name="color_background">Фон</string>
<string name="it_can_disabled_via_settings_notifications_still_shown">Це можна вимкнути у налаштуваннях – сповіщення все одно будуть відображатися, коли програма працює.</string>
<string name="it_can_disabled_via_settings_notifications_still_shown"><![CDATA[<b>Це можна вимкнути в налаштуваннях</b> – сповіщення все одно відображатимуться під час роботи програми.]]></string>
<string name="notifications_mode_service_desc">Служба фонового режиму завжди активна – сповіщення відображатимуться, як тільки повідомлення будуть доступні.</string>
<string name="icon_descr_asked_to_receive">Запит на отримання зображення</string>
<string name="attach">Прикріпити</string>
@@ -244,7 +243,7 @@
<string name="smp_servers_use_server_for_new_conn">Використовувати для нових підключень</string>
<string name="smp_servers_delete_server">Видалити сервер</string>
<string name="star_on_github">Оцінити на GitHub</string>
<string name="how_to_use_your_servers">Як використовувати ваші сервери</string>
<string name="how_to_use_your_servers">Як використовувати власні сервери</string>
<string name="saved_ICE_servers_will_be_removed">Збережені сервери WebRTC ICE будуть видалені.</string>
<string name="configure_ICE_servers">Налаштувати сервери ICE</string>
<string name="network_and_servers">Мережа та сервери</string>
@@ -621,14 +620,14 @@
<string name="this_string_is_not_a_connection_link">Цей рядок не є з\'єднувальним посиланням!</string>
<string name="security_code">Код безпеки</string>
<string name="mark_code_verified">Позначити, що перевірено</string>
<string name="your_chat_profiles">Ваші профілі чату</string>
<string name="your_chat_profiles">Ваші профілі</string>
<string name="database_passphrase_and_export">Пароль бази даних та експорт</string>
<string name="markdown_in_messages">Markdown у повідомленнях</string>
<string name="chat_with_the_founder">Надсилайте питання та ідеї</string>
<string name="smp_servers_enter_manually">Ввести адресу сервера вручну</string>
<string name="smp_servers_enter_manually">Ввести сервер вручну</string>
<string name="smp_servers_preset_server">Попередньо встановлений сервер</string>
<string name="smp_servers_your_server_address">Адреса вашого сервера</string>
<string name="smp_servers_per_user">Сервери для нових підключень вашого поточного профілю чату</string>
<string name="smp_servers_per_user">Сервери для нових підключень до вашого поточного профілю</string>
<string name="use_simplex_chat_servers__question">Використовувати сервери SimpleX Chat?</string>
<string name="enter_one_ICE_server_per_line">Сервери ICE (один на рядок)</string>
<string name="error_saving_ICE_servers">Помилка збереження серверів ICE</string>
@@ -749,7 +748,7 @@
<string name="prohibit_message_reactions_group">Заборонити реакції на повідомлення.</string>
<string name="disappearing_messages_are_prohibited">Самознищувальні повідомлення заборонені в цій групі.</string>
<string name="group_members_can_send_dms">Учасники групи можуть надсилати приватні повідомлення.</string>
<string name="direct_messages_are_prohibited_in_chat">Приватні повідомлення між учасниками заборонені в цій групі.</string>
<string name="direct_messages_are_prohibited_in_group">Приватні повідомлення між учасниками заборонені в цій групі.</string>
<string name="group_members_can_delete">Учасники групи можуть назавжди видаляти відправлені повідомлення. (24 години)</string>
<string name="message_deletion_prohibited_in_chat">Назавжди видалення повідомлень заборонене в цій групі.</string>
<string name="voice_messages_are_prohibited">Голосові повідомлення заборонені в цій групі.</string>
@@ -832,7 +831,7 @@
<string name="gallery_video_button">Відео</string>
<string name="connection_you_accepted_will_be_cancelled">Прийняте вами з\'єднання буде скасоване!</string>
<string name="alert_title_contact_connection_pending">Контакт ще не підключений!</string>
<string name="smp_servers_test_servers">Тестові сервери</string>
<string name="smp_servers_test_servers">Тестування серверів</string>
<string name="smp_servers_save">Зберегти сервери</string>
<string name="smp_servers_your_server">Ваш сервер</string>
<string name="smp_servers_test_failed">Тест сервера не вдався!</string>
@@ -994,7 +993,7 @@
<string name="error_setting_address">Помилка встановлення адреси</string>
<string name="smp_server_test_connect">Підключити</string>
<string name="la_please_remember_to_store_password">Будь ласка, запам\'ятайте або збережіть його надійно - немає можливості відновлення втраченого пароля!</string>
<string name="auth_open_chat_profiles">Відкрити профілі чату</string>
<string name="auth_open_chat_profiles">Змінити профілі чату</string>
<string name="icon_descr_waiting_for_video">Очікування на відео</string>
<string name="waiting_for_file">Очікування на файл</string>
<string name="voice_message_with_duration">Голосове повідомлення (%1$s)</string>
@@ -1134,7 +1133,7 @@
<string name="file_not_found">Файл не знайдено</string>
<string name="connect_via_link">Підключитися через посилання</string>
<string name="connect_button">Підключитися</string>
<string name="to_reveal_profile_enter_password">Щоб показати ваш схований профіль, введіть повний пароль у поле пошуку на сторінці Ваші профілі чату.</string>
<string name="to_reveal_profile_enter_password">Щоб показати ваш схований профіль, введіть повний пароль у поле пошуку на сторінці Ваші профілі.</string>
<string name="confirm_password">Підтвердити пароль</string>
<string name="ttl_d">%dd</string>
<string name="v4_6_hidden_chat_profiles_descr">Захистіть свої чат-профілі паролем!</string>
@@ -1424,7 +1423,7 @@
<string name="rcv_group_events_count">%d подій в групі</string>
<string name="invalid_name">Невірне ім\'я!</string>
<string name="v5_3_simpler_incognito_mode_descr">Перемикайте інкогніто під час підключення.</string>
<string name="connect_plan_this_is_your_link_for_group_vName">Це ваше посилання для групи %1$s!</string>
<string name="connect_plan_this_is_your_link_for_group_vName"><![CDATA[Це ваше посилання для групи <b>%1$s</b>!]]></string>
<string name="unblock_member_confirmation">Розблокувати</string>
<string name="non_content_uri_alert_title">Неправильний шлях до файлу</string>
<string name="v5_3_discover_join_groups_descr">- підключайтесь до служби каталогів (BETA)!
@@ -1470,7 +1469,7 @@
<string name="desktop_devices">Пристрої робочого столу</string>
<string name="not_compatible">Не сумісно!</string>
<string name="link_a_mobile">Зв\'язати з мобільним</string>
<string name="settings_section_title_use_from_desktop">Використовувати зі стаціонарного комп\'ютера</string>
<string name="settings_section_title_use_from_desktop">Використовувати з комп\'ютера</string>
<string name="connected_mobile">Підключений мобільний</string>
<string name="session_code">Код сеансу</string>
<string name="desktop_connection_terminated">Підключення завершено</string>
@@ -1487,7 +1486,7 @@
<string name="bad_desktop_address">Некоректна адреса робочого столу</string>
<string name="paste_desktop_address">Вставити адресу робочого столу</string>
<string name="verify_code_with_desktop">Перевірити код з робочим столом</string>
<string name="scan_qr_code_from_desktop">Сканувати QR-код з робочого столу</string>
<string name="scan_qr_code_from_desktop">Сканувати QR-код з комп\'ютера</string>
<string name="devices">Пристрої</string>
<string name="multicast_discoverable_via_local_network">Виявлено через локальну мережу</string>
<string name="v5_4_more_things_descr">- за бажанням повідомляйте про видалених контактів.
@@ -1912,7 +1911,7 @@
<string name="calls_prohibited_ask_to_enable_calls_alert_text">Будь ласка, попросіть вашого контакту увімкнути дзвінки.</string>
<string name="network_options_save_and_reconnect">Зберегти і перепідключитися</string>
<string name="v6_0_delete_many_messages_descr">Видалити до 20 повідомлень за один раз.</string>
<string name="v6_0_reachable_chat_toolbar">Доступна панель інструментів чату</string>
<string name="v6_0_reachable_chat_toolbar">Доступна панель чату</string>
<string name="v6_0_reachable_chat_toolbar_descr">Користуватися застосунком однією рукою.</string>
<string name="v6_0_connect_faster_descr">З\'єднуйтеся з друзями швидше.</string>
<string name="v6_0_connection_servers_status">Керуйте своєю мережею</string>
@@ -2014,7 +2013,7 @@
<string name="app_check_for_updates_button_download">Завантажити %s (%s)</string>
<string name="app_check_for_updates_button_open">Відкрити розташування файлу</string>
<string name="app_check_for_updates_button_skip">Пропустити цю версію</string>
<string name="one_hand_ui">Доступна панель інструментів чату</string>
<string name="one_hand_ui">Доступна панель чату</string>
<string name="cant_call_contact_alert_title">Не можна зателефонувати контакту</string>
<string name="cant_call_contact_connecting_wait_alert_text">Підключення до контакту, будь ласка, зачекайте або перевірте пізніше!</string>
<string name="calls_prohibited_alert_title">Дзвінки заборонені!</string>
@@ -2097,7 +2096,7 @@
<string name="icon_descr_sound_muted">Звук вимкнено</string>
<string name="error_initializing_web_view_wrong_arch">Помилка ініціалізації WebView. Переконайтеся, що WebView встановлено, і його підтримувана архітектура — arm64. \nПомилка: %s</string>
<string name="settings_message_shape_tail">Хвіст</string>
<string name="settings_message_shape_corner">Куточок</string>
<string name="settings_message_shape_corner">Кут</string>
<string name="settings_section_title_message_shape">Форма повідомлення</string>
<string name="network_session_mode_session">Сесія додатку</string>
<string name="network_session_mode_session_description">Нові облікові дані SOCKS будуть використовуватись щоразу, коли ви запускаєте додаток.</string>
@@ -2116,4 +2115,99 @@
<string name="v6_1_delete_many_messages_descr">Видалити або модерувати до 200 повідомлень.</string>
<string name="v6_1_forward_many_messages_descr">Переслати до 20 повідомлень одночасно.</string>
<string name="v6_1_switch_chat_profile_descr">Переключити профіль чату для одноразових запрошень.</string>
<string name="error_accepting_operator_conditions">Помилка прийняття умов</string>
<string name="failed_to_save_servers">Сервери збереження помилок</string>
<string name="for_chat_profile">Для профілю чату %s:</string>
<string name="no_media_servers_configured">Ніяких медіа та файлових серверів.</string>
<string name="no_message_servers_configured">Немає серверів повідомлень.</string>
<string name="no_message_servers_configured_for_private_routing">Немає серверів для маршрутизації приватних повідомлень.</string>
<string name="connection_error_quota">Недоставлені повідомлення</string>
<string name="message_deleted_or_not_received_error_title">Немає повідомлення</string>
<string name="message_deleted_or_not_received_error_desc">Це повідомлення було видалено або ще не отримано.</string>
<string name="share_1_time_link_with_a_friend">Поділіться одноразовим посиланням з другом</string>
<string name="share_address_publicly">Поділіться адресою публічно</string>
<string name="you_can_set_connection_name_to_remember">Ви можете задати ім\'я з\'єднання, щоб запам\'ятати, з ким ви поділилися посиланням.</string>
<string name="connection_security">Безпека з\'єднання</string>
<string name="to_protect_against_your_link_replaced_compare_codes">Щоб захиститися від заміни вашого посилання, ви можете порівняти коди безпеки контактів.</string>
<string name="for_social_media">Для соціальних мереж</string>
<string name="or_to_share_privately">Або поділитися приватно</string>
<string name="onboarding_choose_server_operators">Обирайте операторів</string>
<string name="onboarding_network_operators">Мережеві оператори</string>
<string name="onboarding_network_operators_conditions_will_be_accepted">Умови будуть прийняті для ввімкнених операторів через 30 днів.</string>
<string name="onboarding_network_operators_app_will_use_for_routing">Наприклад, якщо ви отримуєте повідомлення через сервер SimpleX Chat, програма використовуватиме один із серверів Flux для приватної маршрутизації.</string>
<string name="onboarding_select_network_operators_to_use">Виберіть мережевих операторів для використання.</string>
<string name="onboarding_network_operators_configure_via_settings">Ви можете налаштувати сервери за допомогою налаштувань.</string>
<string name="onboarding_network_operators_review_later">Перегляньте пізніше</string>
<string name="onboarding_network_operators_update">Оновлення</string>
<string name="operator_conditions_accepted">Прийняті умови</string>
<string name="operator_conditions_accepted_for_enabled_operators_on">Умови будуть автоматично прийняті для увімкнених операторів: %s.</string>
<string name="operator_info_title">Оператор мережі</string>
<string name="operator_servers_title">%s серверів</string>
<string name="operator_website">Вебсайт</string>
<string name="your_servers">Ваші сервери</string>
<string name="use_servers_of_operator_x">Використовуйте %s</string>
<string name="operator_use_operator_toggle_description">Використовуйте сервери</string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[Ті самі умови стосуватимуться оператора <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_applied"><![CDATA[Ці умови також застосовуватимуться для: <b>%s</b>.]]></string>
<string name="accept_conditions">Прийняти умови</string>
<string name="view_conditions">Умови перегляду</string>
<string name="operator_added_message_servers">Додано сервери повідомлень</string>
<string name="operator_use_for_messages_private_routing">Для приватної маршрутизації</string>
<string name="operator_use_for_messages_receiving">Щоб отримати</string>
<string name="operator_use_for_files">Використовуйте для файлів</string>
<string name="operator_added_xftp_servers">Додано медіа та файлові сервери</string>
<string name="operator_open_changes">Відкриті зміни</string>
<string name="operator_open_conditions">Відкриті умови</string>
<string name="xftp_servers_per_user">Сервери для нових файлів вашого поточного профілю чату</string>
<string name="operator_use_for_sending">Щоб відправити</string>
<string name="error_adding_server">Помилка додавання сервера</string>
<string name="operator_server_alert_title">Сервер оператора</string>
<string name="server_added_to_operator__name">Сервер додано до оператора %s.</string>
<string name="error_server_operator_changed">Оператор сервера змінився.</string>
<string name="appearance_app_toolbars">Панелі інструментів додатків</string>
<string name="appearance_bars_blur_radius">Розмиття</string>
<string name="appearance_in_app_bars_alpha">Прозорість</string>
<string name="v6_2_improved_chat_navigation">Покращена навігація в чаті</string>
<string name="v6_2_improved_chat_navigation_descr">- Відкрити чат на першому непрочитаному повідомленні.\n- Перейти до цитованих повідомлень.</string>
<string name="v6_2_network_decentralization_descr">Другий попередньо встановлений оператор у застосунку!</string>
<string name="view_updated_conditions">Переглянути оновлені умови</string>
<string name="address_settings">Налаштування адреси</string>
<string name="operators_conditions_accepted_for"><![CDATA[Умови прийняті для оператора(ів): <b>%s</b>.]]></string>
<string name="address_or_1_time_link">Адреса або одноразове посилання?</string>
<string name="operator_conditions_of_use">Умови використання</string>
<string name="one_time_link_can_be_used_with_one_contact_only"><![CDATA[одноразове посилання можна використовувати <i>лише з одним контактом</i> – поділіться особисто чи через будь-який месенджер.]]></string>
<string name="operator_conditions_accepted_for_some"><![CDATA[Умови вже прийняті для наступних операторів: <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[Умови будуть прийняті для оператора(ів): <b>%s</b>.]]></string>
<string name="operators_conditions_will_be_accepted_for"><![CDATA[Умови будуть прийняті для оператора(ів): <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[Ті самі умови застосовуватимуться до оператора(ів): <b>%s</b>.]]></string>
<string name="operators_conditions_will_also_apply"><![CDATA[Ці умови також застосовуватимуться для: <b>%s</b>.]]></string>
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[Щоб використовувати сервери <b>%s</b>, прийміть умови використання.]]></string>
<string name="operator_conditions_failed_to_load">Текст поточних умов не вдалося завантажити, ви можете переглянути умови за цим посиланням:</string>
<string name="errors_in_servers_configuration">Помилки в конфігурації серверів.</string>
<string name="operator_conditions_accepted_on">Умови приймаються з: %s.</string>
<string name="v6_2_network_decentralization_enable_flux">Увімкнути flux</string>
<string name="operator_conditions_will_be_accepted_on">Умови приймаються до: %s.</string>
<string name="onboarding_network_operators_continue">Продовжити</string>
<string name="create_1_time_link">Створити одноразове посилання</string>
<string name="error_updating_server_title">Помилка оновлення сервера</string>
<string name="v6_2_network_decentralization_enable_flux_reason">для кращої конфіденційності метаданих.</string>
<string name="v6_2_network_decentralization">Децентралізація мережі</string>
<string name="operator">Оператор</string>
<string name="no_message_servers_configured_for_receiving">Немає серверів для отримання повідомлень.</string>
<string name="simplex_address_or_1_time_link">SimpleX адреса або одноразове посилання?</string>
<string name="smp_servers_new_server">Новий сервер</string>
<string name="no_media_servers_configured_for_private_routing">Немає серверів для отримання файлів.</string>
<string name="operator_review_conditions">Умови перегляду</string>
<string name="no_media_servers_configured_for_sending">Немає серверів для надсилання файлів.</string>
<string name="network_preset_servers_title">Попередньо встановлені сервери</string>
<string name="error_server_protocol_changed">Протокол сервера змінено.</string>
<string name="share_simplex_address_on_social_media">Поділіться адресою SimpleX у соціальних мережах.</string>
<string name="simplex_address_and_1_time_links_are_safe_to_share">SimpleX-адреси та одноразові посилання можна безпечно ділитися через будь-який месенджер.</string>
<string name="connection_error_quota_desc">З\'єднання досягло ліміту недоставлених повідомлень, ваш контакт може бути офлайн.</string>
<string name="address_creation_instruction">Натисніть Створити адресу SimpleX у меню, щоб створити її пізніше.</string>
<string name="onboarding_network_operators_app_will_use_different_operators">Якщо увімкнено більше одного оператора, програма використовуватиме сервери різних операторів для кожної розмови.</string>
<string name="operator_use_for_messages">Використовуйте для повідомлень</string>
<string name="onboarding_network_operators_conditions_you_can_configure">Ви можете налаштувати операторів у налаштуваннях Мережі та серверів.</string>
<string name="chat_archive">Або імпортуйте архівний файл</string>
<string name="remote_hosts_section">Віддалені мобільні</string>
</resources>
@@ -115,8 +115,7 @@
<string name="icon_descr_audio_off">Tắt âm</string>
<string name="icon_descr_asked_to_receive">Yêu cầu để nhận hình ảnh</string>
<string name="network_session_mode_user_description"><![CDATA[Một kết nối TCP riêng biệt (và thông tin xác thực SOCKS) sẽ được sử dụng <b>cho mỗi hồ sơ trò chuyện bạn có trong ứng dụng</b>.]]></string>
<string name="network_session_mode_entity_description">Một kết nối TCP riêng biệt (và thông tin xác thực SOCKS) sẽ được sử dụng <b>cho từng liên hệ và thành viên nhóm</b>.
\n<b>Xin lưu ý</b>: nếu bạn có nhiều kết nối, mức tiêu thụ pin và lưu lượng truy cập của bạn có thể cao hơn đáng kể và một số kết nối có thể không thành công.</string>
<string name="network_session_mode_entity_description"><![CDATA[Một kết nối TCP riêng biệt (và thông tin xác thực SOCKS) sẽ được sử dụng <b>cho từng liên hệ và thành viên nhóm</b>. \n<b>Xin lưu ý</b>: nếu bạn có nhiều kết nối, mức tiêu thụ pin và lưu lượng truy cập của bạn có thể cao hơn đáng kể và một số kết nối có thể không thành công.]]></string>
<string name="icon_descr_audio_call">cuộc gọi thoại</string>
<string name="v4_6_audio_video_calls">Các cuộc gọi thoại và video</string>
<string name="settings_audio_video_calls">Các cuộc gọi thoại và video</string>
@@ -504,7 +503,7 @@
<string name="deleted">Đã xóa</string>
<string name="deletion_errors">Lỗi xóa</string>
<string name="rcv_group_events_count">%d sự kiện nhóm</string>
<string name="direct_messages_are_prohibited_in_chat">Tin nhắn trực tiếp giữa các thành viên bị cấm trong nhóm này.</string>
<string name="direct_messages_are_prohibited_in_group">Tin nhắn trực tiếp giữa các thành viên bị cấm trong nhóm này.</string>
<string name="total_files_count_and_size">%d tệp với tổng kích thước là %s</string>
<string name="mtr_error_different">phần di dời khác nhau trong ứng dụng/cơ sở dữ liệu: %s / %s</string>
<string name="direct_messages">Tin nhắn trực tiếp</string>
@@ -1351,4 +1350,53 @@
<string name="prohibit_sending_disappearing_messages">Cấm gửi tin nhắn tự xóa.</string>
<string name="prohibit_sending_simplex_links">Cấm gửi đường dẫn SimpleX</string>
<string name="proxied">Được proxy</string>
<string name="address_or_1_time_link">Địa chỉ hay đường dẫn dùng một lần?</string>
<string name="one_time_link_can_be_used_with_one_contact_only"><![CDATA[đường dẫn dùng một lần có thể được dùng <i>với chỉ một liên hệ</i> - chia sẻ trực tiếp hoặc thông qua bất kỳ ứng dụng tin nhắn nào.]]></string>
<string name="disable_onion_hosts_when_not_supported"><![CDATA[Set <i>Cài đặt máy chủ .onion</i> thành Không nếu proxy SOCKS không hỗ trợ chúng.]]></string>
<string name="operators_conditions_will_be_accepted_for"><![CDATA[Các điều kiện sẽ được chấp nhận với (các) nhà cung cấp: <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[Các điều kiện sẽ được chấp nhận với (các) nhà cung cấp: <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_applied"><![CDATA[Các điều kiện này cũng sẽ áp dụng cho: <b>%s</b>.]]></string>
<string name="operator_added_message_servers">Đã thêm các máy chủ truyền tin nhắn</string>
<string name="appearance_app_toolbars">Thanh công cụ ứng dụng</string>
<string name="appearance_bars_blur_radius">Làm mờ</string>
<string name="accept_conditions">Chấp nhận điều kiện</string>
<string name="operator_added_xftp_servers">Đã thêm các máy chủ truyền tệp &amp; phương tiện</string>
<string name="operator_conditions_accepted">Đã chấp nhận điều kiện</string>
<string name="address_settings">Cài đặt địa chỉ</string>
<string name="operators_conditions_accepted_for"><![CDATA[Các điều kiện được chấp nhận với (các) nhà cung cấp: <b>%s</b>.]]></string>
<string name="operator_conditions_accepted_for_some"><![CDATA[Các điều kiện đã được chấp nhận rồi đối với (các) nhà cung cấp sau: <b>%s</b>.]]></string>
<string name="read_more_in_github_with_link"><![CDATA[Đọc thêm tại <font color="#0088ff">Kho lưu trữ GitHub của chúng tôi</font>.]]></string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[Các điều kiện tương tự sẽ áp dụng cho nhà cung cấp <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[Các điều kiện tương tự sẽ áp dụng cho (các) nhà cung cấp <b>%s</b>.]]></string>
<string name="operators_conditions_will_also_apply"><![CDATA[Các điều kiện này cũng sẽ áp dụng cho: <b>%s</b>.]]></string>
<string name="read_more_in_user_guide_with_link"><![CDATA[Đọc thêm tại <font color="#0088ff">Hướng dẫn người dùng</font>.]]></string>
<string name="connect_plan_you_are_already_connecting_to_vName"><![CDATA[Bạn đã kết nối tới <b>%1$s</b> rồi.]]></string>
<string name="system_restricted_background_in_call_warn"><![CDATA[Để thực hiện cuộc gọi trong nền, vui lòng chọn <b>Mức sử dụng pin ứng dụng</b> / <b>Không hạn chế</b> trong phần cài đặt ứng dụng.]]></string>
<string name="remote_host_error_timeout"><![CDATA[Đã hết thời gian chờ khi kết nối tới thiết bị di động <b>%s</b>]]></string>
<string name="turn_off_battery_optimization"><![CDATA[Để sử dụng, xin vui lòng <b>cho phép SimpleX chạy trong nền</b> trong hộp thoại tiếp theo. Nếu không, thông báo sẽ bị vô hiệu hóa.]]></string>
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[Để sử dụng các máy chủ của <b>%s</b>, vui lòng chấp nhận điều kiện sử dụng.]]></string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Để bảo vệ sự riêng tư của bạn, thay vì sử dụng thông báo đẩy thì ứng dụng dùng <b>Dịch vụ nền SimpleX</b> – nó tiêu tốn một vài phần trăm pin mỗi ngày.]]></string>
<string name="system_restricted_background_warn"><![CDATA[Để bật thông báo, vui lòng chọn <b>Mức sử dụng pin ứng dụng</b> / <b>Không hạn chế</b> trong phần cài đặt ứng dụng.]]></string>
<string name="connect_plan_you_are_already_in_group_vName"><![CDATA[Bạn đã ở trong nhóm <b>%1$s</b> rồi.]]></string>
<string name="connect_plan_this_is_your_link_for_group_vName"><![CDATA[Đây là đường dẫn của bạn cho nhóm <b>%1$s</b>!]]></string>
<string name="connect_plan_you_are_already_joining_the_group_vName"><![CDATA[Bạn đã tham gia nhóm <b>%1$s</b> rồi.]]></string>
<string name="you_can_also_connect_by_clicking_the_link"><![CDATA[Bạn cũng có thể kết nối bằng cách nhấp vào đường dẫn. Nếu nó mở trong trình duyệt, nhấp vào nút<b>Mở trong ứng dụng di động</b>.]]></string>
<string name="onboarding_choose_server_operators">Chọn nhà cung cấp</string>
<string name="you_can_connect_to_simplex_chat_founder"><![CDATA[Bạn có thể <font color="#0088ff">kết nối với các nhà phát triển SimpleX Chat để hỏi bất kỳ câu hỏi nào và nhận thông tin cập nhật</font>.]]></string>
<string name="migrate_from_device_you_must_not_start_database_on_two_device"><![CDATA[Bạn <b>không được</b> sử dụng cùng một cơ sở dữ liệu trên hai thiết .]]></string>
<string name="error_accepting_operator_conditions">Lỗi chấp nhận điều kiện</string>
<string name="failed_to_save_servers">Lỗi lưu máy chủ</string>
<string name="errors_in_servers_configuration">Lỗi trong cấu hình máy chủ.</string>
<string name="connection_security">Bảo mật kết nối</string>
<string name="create_1_time_link">Tạo đường dẫn dùng một lần</string>
<string name="onboarding_network_operators_conditions_will_be_accepted">Các điều kiện sẽ được chấp nhận với các nhà cung cấp được cho phép sau 30 ngày.</string>
<string name="onboarding_network_operators_continue">Tiếp tục</string>
<string name="operator_conditions_failed_to_load">Không thể tải văn bản về các điều kiện hiện tại, bạn có thể xem xét các điều kiện thông qua đường dẫn này:</string>
<string name="operator_conditions_of_use">Các điều kiện sử dụng</string>
<string name="v6_2_network_decentralization_enable_flux">Cho phép flux</string>
<string name="operator_conditions_will_be_accepted_on">Các điều kiện sẽ được chấp nhận vào: %s.</string>
<string name="error_adding_server">Lỗi thêm máy chủ</string>
<string name="error_updating_server_title">Lỗi cập nhật máy chủ</string>
<string name="operator_conditions_accepted_on">Các điều kiện đã được chấp nhận vào: %s.</string>
<string name="operator_conditions_accepted_for_enabled_operators_on">Các điều kiện sẽ được tự động chấp nhận với các nhà cung cấp được cho phép vào: %s.</string>
</resources>
@@ -113,8 +113,7 @@
<string name="icon_descr_audio_on">开启音频</string>
<string name="icon_descr_asked_to_receive">已要求接收图片</string>
<string name="network_session_mode_user_description"><![CDATA[一个单独的TCP连接(和SOCKS凭证)将被用于<b>,用于您在应用程序中的每个聊天资料</b> 。]]></string>
<string name="network_session_mode_entity_description">每个联系人和群组成员 <b>将使用单独的 TCP 连接(和 SOCKS 凭证)</b>。
\n<b>请注意</b>:如果您有很多连接,您的电池和流量消耗可能会大大增加,并且某些连接可能会失败。</string>
<string name="network_session_mode_entity_description"><![CDATA[不同的 TCP 连接 (和 SOCKS 凭据) 会被用于 <b>每个联系人和群成员</b>。\n<b>请注意</b>:如果您有很多连接,您的电池和流量消耗可能会大大增加,并且某些连接可能会失败。]]></string>
<string name="back">返回</string>
<string name="onboarding_notifications_mode_off_desc"><![CDATA[<b> 最长续航 </b>。您只会在应用程序运行时收到通知(无后台服务)。]]></string>
<string name="onboarding_notifications_mode_periodic_desc"><![CDATA[<b> 较长续航 </b>。应用每 10 分钟检查一次消息。您可能会错过来电或者紧急信息。]]></string>
@@ -424,7 +423,7 @@
<string name="icon_descr_flip_camera">翻转相机</string>
<string name="enable_automatic_deletion_question">启用自动删除消息?</string>
<string name="section_title_for_console">用于控制台</string>
<string name="direct_messages_are_prohibited_in_chat">此群中禁止成员之间私信。</string>
<string name="direct_messages_are_prohibited_in_group">此群中禁止成员之间私信。</string>
<string name="disappearing_messages_are_prohibited">该组禁止限时消息。</string>
<string name="group_members_can_delete">群组成员可以不可逆地删除已发送的消息。(24小时)</string>
<string name="group_members_can_send_dms">群组成员可以私信。</string>
@@ -1172,7 +1171,7 @@
<string name="color_received_message">收到的信息</string>
<string name="only_your_contact_can_add_message_reactions">只有您的联系人可以添加消息回应。</string>
<string name="opening_database">打开数据库中……</string>
<string name="auth_open_chat_profiles">打开聊天资料</string>
<string name="auth_open_chat_profiles">更改聊天资料</string>
<string name="scan_qr_to_connect_to_contact">您的联系人可以扫描二维码或使用应用程序中的链接来建立连接。</string>
<string name="you_can_share_your_address">您可以将您的地址作为链接或二维码共享——任何人都可以连接到您。</string>
<string name="if_you_cant_meet_in_person">如果您不能亲自见面,可以在视频通话中展示二维码,或分享链接。</string>
@@ -2117,4 +2116,99 @@
<string name="v6_1_switch_chat_profile_descr">对一次性邀请切换聊天配置文件。</string>
<string name="v6_1_better_calls">更佳的通话</string>
<string name="v6_1_delete_many_messages_descr">允许自行删除或管理员移除最多200条消息。</string>
<string name="failed_to_save_servers">保存服务器出错</string>
<string name="errors_in_servers_configuration">服务器配置有错误。</string>
<string name="for_chat_profile">用于聊天资料 %s:</string>
<string name="no_message_servers_configured">无消息服务器</string>
<string name="no_message_servers_configured_for_private_routing">无私密消息路由服务器。</string>
<string name="no_message_servers_configured_for_receiving">无消息接收服务器。</string>
<string name="no_media_servers_configured_for_sending">无文件发送服务器。</string>
<string name="connection_error_quota">未送达的消息</string>
<string name="message_deleted_or_not_received_error_title">无消息</string>
<string name="connection_security">连接安全性</string>
<string name="share_1_time_link_with_a_friend">和一位好友分享一次性链接</string>
<string name="share_address_publicly">公开分享地址</string>
<string name="share_simplex_address_on_social_media">在社媒上分享 SimpleX 地址。</string>
<string name="you_can_set_connection_name_to_remember">你可以设置连接名称,用来记住和谁分享了这个链接。</string>
<string name="simplex_address_and_1_time_links_are_safe_to_share">可以通过任何消息应用安全分享 SimpleX 地址和一次性链接。</string>
<string name="create_1_time_link">创建一次性链接</string>
<string name="for_social_media">用于社交媒体</string>
<string name="or_to_share_privately">或者私下分享</string>
<string name="onboarding_choose_server_operators">选择运营者</string>
<string name="onboarding_network_operators">网络运营者</string>
<string name="onboarding_network_operators_conditions_will_be_accepted">30 天后将接受已启用的运营者的条款。</string>
<string name="onboarding_network_operators_continue">继续</string>
<string name="onboarding_network_operators_review_later">稍后审阅</string>
<string name="onboarding_select_network_operators_to_use">选择要使用的网络运营者。</string>
<string name="onboarding_network_operators_update">更新</string>
<string name="onboarding_network_operators_configure_via_settings">你可以通过设置配置服务器。</string>
<string name="operators_conditions_will_be_accepted_for"><![CDATA[将接受运营者的条款: <b>%s</b>.]]></string>
<string name="operator_conditions_accepted_for_enabled_operators_on">将于下列日期自动接受已启用的运营者的条款:%s。</string>
<string name="network_preset_servers_title">预设服务器</string>
<string name="your_servers">你的服务器</string>
<string name="operator_conditions_will_be_accepted_on">接受条款的将来日期为:%s。</string>
<string name="operator_info_title">网络运营者</string>
<string name="operator">运营者</string>
<string name="operator_servers_title">%s 台服务器</string>
<string name="operator_website">网站</string>
<string name="operator_conditions_failed_to_load">无法加载当前条款文本,你可以通过此链接审阅条款:</string>
<string name="use_servers_of_operator_x">使用 %s</string>
<string name="operator_use_operator_toggle_description">使用服务器</string>
<string name="operator_conditions_will_be_applied"><![CDATA[这些条款也将应用于: <b>%s</b>.]]></string>
<string name="operators_conditions_will_also_apply"><![CDATA[这些条款也将应用于: <b>%s</b>.]]></string>
<string name="view_conditions">查看条款</string>
<string name="operator_conditions_of_use">使用条款</string>
<string name="operator_use_for_messages_private_routing">用于私密路由</string>
<string name="operator_use_for_messages_receiving">消息接收</string>
<string name="operator_use_for_sending">发送</string>
<string name="operator_use_for_files">用于文件</string>
<string name="operator_use_for_messages">用于消息</string>
<string name="operator_open_changes">打开更改</string>
<string name="operator_open_conditions">打开条款</string>
<string name="operator_server_alert_title">运营者服务器</string>
<string name="server_added_to_operator__name">已添加服务器到运营者 %s</string>
<string name="error_server_operator_changed">服务器运营者已更改。</string>
<string name="error_server_protocol_changed">服务器协议已更改。</string>
<string name="appearance_in_app_bars_alpha">透明度</string>
<string name="v6_2_network_decentralization">网络去中心化</string>
<string name="v6_2_network_decentralization_descr">应用中的第二个预设运营者!</string>
<string name="v6_2_improved_chat_navigation">改进了聊天导航</string>
<string name="view_updated_conditions">查看更新后的条款</string>
<string name="onboarding_network_operators_app_will_use_for_routing">比如,如果你通过 SimpleX 服务器收到消息,应用会使用 Flux 服务器中的一台进行私密路由。</string>
<string name="onboarding_network_operators_app_will_use_different_operators">启用了多于一个网络运营者时,应用会为每个对话使用不同运营者的服务器。</string>
<string name="accept_conditions">接受条款</string>
<string name="appearance_bars_blur_radius">模糊</string>
<string name="address_or_1_time_link">地址或一次性链接?</string>
<string name="operator_added_message_servers">已添加消息服务器</string>
<string name="operator_added_xftp_servers">已添加媒体和文件服务器</string>
<string name="address_settings">地址设置</string>
<string name="operator_conditions_accepted">已接受条款</string>
<string name="appearance_app_toolbars">应用工具栏</string>
<string name="one_time_link_can_be_used_with_one_contact_only"><![CDATA[1-time link can be used <i>仅用于一名联系人</i> - 面对面或通过任何消息应用分享.]]></string>
<string name="operator_conditions_accepted_for_some"><![CDATA[已经接受了下列运营者的条款: <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[将接受运营者的条款:<b>%s</b>.]]></string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[相同条款将应用于运营者 <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[相同条款将应用于运营者: <b>%s</b>.]]></string>
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[要使用 <b>%s</b>的服务器,请接受使用条款。]]></string>
<string name="operators_conditions_accepted_for"><![CDATA[接受了运营者的条款: <b>%s</b>.]]></string>
<string name="v6_2_network_decentralization_enable_flux">开启 flux</string>
<string name="error_accepting_operator_conditions">接受条款出错</string>
<string name="v6_2_network_decentralization_enable_flux_reason">为了更好的元数据隐私。</string>
<string name="error_adding_server">添加服务器出错</string>
<string name="no_media_servers_configured">无媒体和文件服务器。</string>
<string name="error_updating_server_title">更新服务器出错</string>
<string name="smp_servers_new_server">新服务器</string>
<string name="no_media_servers_configured_for_private_routing">无文件接收服务器。</string>
<string name="v6_2_improved_chat_navigation_descr">- 在第一条未读消息上打开聊天.\n- 跳转到引用的消息.</string>
<string name="operator_review_conditions">审阅条款</string>
<string name="simplex_address_or_1_time_link">SimpleX 地址或一次性链接?</string>
<string name="address_creation_instruction">要稍后创建 SimpleX 地址,请在菜单中轻按“创建 SimpleX 地址”</string>
<string name="xftp_servers_per_user">当前聊天资料的新文件服务器</string>
<string name="message_deleted_or_not_received_error_desc">此消息被删除或尚未收到。</string>
<string name="connection_error_quota_desc">连接达到了未送达消息上限,你的联系人可能处于离线状态。</string>
<string name="to_protect_against_your_link_replaced_compare_codes">为了防止链接被替换,你可以比较联系人安全代码。</string>
<string name="onboarding_network_operators_conditions_you_can_configure">你可以在“网络和服务器”设置中配置运营者。</string>
<string name="operator_conditions_accepted_on">接受运营者条款的日期:%s</string>
<string name="remote_hosts_section">远程移动设备</string>
<string name="chat_archive">或者导入压缩文件</string>
</resources>
@@ -143,8 +143,7 @@
<string name="icon_descr_cancel_file_preview">取消檔案預覽</string>
<string name="cannot_receive_file">無法接收檔案</string>
<string name="failed_to_create_user_duplicate_title">重複的顯示名稱!</string>
<string name="network_session_mode_entity_description">一個單獨的 TCP 連接(和 SOCKS 憑證)將用於<b>每個聯絡人和群組內的成員</b>。
\n<b>請注意</b>:如果你有很多連接,你的電話電量和數據流量的消耗率會大大增加,一些連接有機會會連接失敗。</string>
<string name="network_session_mode_entity_description"><![CDATA[一個單獨的 TCP 連接(和 SOCKS 憑證)將用於<b>每個聯絡人和群組內的成員</b>。 \n<b>請注意</b>:如果你有很多連接,你的電話電量和數據流量的消耗率會大大增加,一些連接有機會會連接失敗。]]></string>
<string name="network_session_mode_user_description"><![CDATA[一個單獨的 TCP 連接(和 SOCKS 憑證)將用於 <b>每個聊天室的設定</b>。]]></string>
<string name="back">返回</string>
<string name="turning_off_service_and_periodic">省電模式運行中,關閉了背景通知服務和定期更新接收訊息。你可以在通知設定內重新啟用。</string>
@@ -753,7 +752,7 @@
<string name="disappearing_prohibited_in_this_chat">自動銷毀訊息於這個聊天室內是禁用的。</string>
<string name="message_deletion_prohibited">不可逆地刪除訊息於這個聊天室內是禁用的。</string>
<string name="only_you_can_send_voice">只有你可以傳送語音訊息。</string>
<string name="direct_messages_are_prohibited_in_chat">私訊群組內的成員於這個群組內是禁用的。</string>
<string name="direct_messages_are_prohibited_in_group">私訊群組內的成員於這個群組內是禁用的。</string>
<string name="group_members_can_delete">群組內的成員可以不可逆地刪除訊息。(24小時)</string>
<string name="v4_3_voice_messages">語音訊息</string>
<string name="v4_3_improved_server_configuration">改善伺服器配置</string>
@@ -0,0 +1,51 @@
package chat.simplex.common.views.usersettings.networkAndServers
import androidx.compose.animation.core.Animatable
import androidx.compose.foundation.*
import androidx.compose.foundation.layout.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.unit.dp
import chat.simplex.common.platform.DesktopScrollBar
import chat.simplex.common.views.helpers.detectCursorMove
import kotlinx.coroutines.*
@Composable
actual fun ConditionsBox(modifier: Modifier, scrollState: ScrollState, content: @Composable() (BoxScope.() -> Unit)) {
val scope = rememberCoroutineScope()
val scrollBarAlpha = remember { Animatable(0f) }
val scrollJob: MutableState<Job> = remember { mutableStateOf(Job()) }
val scrollBarDraggingState = remember { mutableStateOf(false) }
val scrollModifier = remember {
Modifier
.pointerInput(Unit) {
detectCursorMove {
scope.launch {
scrollBarAlpha.animateTo(1f)
}
scrollJob.value.cancel()
scrollJob.value = scope.launch {
delay(1000L)
scrollBarAlpha.animateTo(0f)
}
}
}
}
Box(modifier = modifier) {
Box(
Modifier
.fillMaxSize()
.verticalScroll(scrollState)
.padding(8.dp)
.then(scrollModifier)
) {
content()
}
Box(Modifier.fillMaxSize(), contentAlignment = Alignment.CenterEnd) {
DesktopScrollBar(rememberScrollbarAdapter(scrollState), Modifier.fillMaxHeight(), scrollBarAlpha, scrollJob, false, scrollBarDraggingState)
}
}
}
+4 -4
View File
@@ -24,11 +24,11 @@ android.nonTransitiveRClass=true
kotlin.mpp.androidSourceSetLayoutVersion=2
kotlin.jvm.target=11
android.version_name=6.2-beta.2
android.version_code=253
android.version_name=6.2-beta.3
android.version_code=254
desktop.version_name=6.2-beta.2
desktop.version_code=77
desktop.version_name=6.2-beta.3
desktop.version_code=78
kotlin.version=1.9.23
gradle.plugin.version=8.2.0