mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-05-25 09:54:22 +00:00
Merge branch 'master' into master-android
This commit is contained in:
+5
-4
@@ -1958,8 +1958,8 @@ data class GroupMember (
|
||||
|
||||
fun canBlockForAll(groupInfo: GroupInfo): Boolean {
|
||||
val userRole = groupInfo.membership.memberRole
|
||||
return memberStatus != GroupMemberStatus.MemRemoved && memberStatus != GroupMemberStatus.MemLeft && memberRole < GroupMemberRole.Admin
|
||||
&& userRole >= GroupMemberRole.Admin && userRole >= memberRole && groupInfo.membership.memberActive
|
||||
return memberStatus != GroupMemberStatus.MemRemoved && memberStatus != GroupMemberStatus.MemLeft && memberRole < GroupMemberRole.Moderator
|
||||
&& userRole >= GroupMemberRole.Moderator && userRole >= memberRole && groupInfo.membership.memberActive
|
||||
}
|
||||
|
||||
val memberIncognito = memberProfile.profileId != memberContactProfileId
|
||||
@@ -2439,14 +2439,14 @@ data class ChatItem (
|
||||
fun memberToModerate(chatInfo: ChatInfo): Pair<GroupInfo, GroupMember?>? {
|
||||
return if (chatInfo is ChatInfo.Group && chatDir is CIDirection.GroupRcv) {
|
||||
val m = chatInfo.groupInfo.membership
|
||||
if (m.memberRole >= GroupMemberRole.Admin && m.memberRole >= chatDir.groupMember.memberRole && meta.itemDeleted == null) {
|
||||
if (m.memberRole >= GroupMemberRole.Moderator && m.memberRole >= chatDir.groupMember.memberRole && meta.itemDeleted == null) {
|
||||
chatInfo.groupInfo to chatDir.groupMember
|
||||
} else {
|
||||
null
|
||||
}
|
||||
} else if (chatInfo is ChatInfo.Group && chatDir is CIDirection.GroupSnd) {
|
||||
val m = chatInfo.groupInfo.membership
|
||||
if (m.memberRole >= GroupMemberRole.Admin) {
|
||||
if (m.memberRole >= GroupMemberRole.Moderator) {
|
||||
chatInfo.groupInfo to null
|
||||
} else {
|
||||
null
|
||||
@@ -3259,6 +3259,7 @@ sealed class CIContent: ItemContent {
|
||||
when (role) {
|
||||
GroupMemberRole.Owner -> generalGetString(MR.strings.feature_roles_owners)
|
||||
GroupMemberRole.Admin -> generalGetString(MR.strings.feature_roles_admins)
|
||||
GroupMemberRole.Moderator -> generalGetString(MR.strings.feature_roles_moderators)
|
||||
else -> generalGetString(MR.strings.feature_roles_all_members)
|
||||
}
|
||||
|
||||
|
||||
+55
-39
@@ -175,7 +175,7 @@ fun ChatView(
|
||||
)
|
||||
}
|
||||
} else {
|
||||
SelectedItemsBottomToolbar(
|
||||
SelectedItemsButtonsToolbar(
|
||||
contentTag = contentTag,
|
||||
selectedChatItems = selectedChatItems,
|
||||
chatInfo = chatInfo,
|
||||
@@ -274,34 +274,46 @@ fun ChatView(
|
||||
}
|
||||
if (!isActive) return@launch
|
||||
|
||||
ModalManager.end.showModalCloseable(true) { close ->
|
||||
val chatInfo = remember { activeChatInfo }.value
|
||||
if (chatInfo is ChatInfo.Direct) {
|
||||
var contactInfo: Pair<ConnectionStats?, Profile?>? by remember { mutableStateOf(preloadedContactInfo) }
|
||||
var code: String? by remember { mutableStateOf(preloadedCode) }
|
||||
KeyChangeEffect(chatInfo.id, ChatModel.networkStatuses.toMap()) {
|
||||
contactInfo = chatModel.controller.apiContactInfo(chatRh, chatInfo.apiId)
|
||||
preloadedContactInfo = contactInfo
|
||||
code = chatModel.controller.apiGetContactCode(chatRh, chatInfo.apiId)?.second
|
||||
preloadedCode = code
|
||||
val selectedItems: MutableState<Set<Long>?> = mutableStateOf(null)
|
||||
ModalManager.end.showCustomModal { close ->
|
||||
val appBar = remember { mutableStateOf(null as @Composable (BoxScope.() -> Unit)?) }
|
||||
ModalView(close, appBar = appBar.value) {
|
||||
val chatInfo = remember { activeChatInfo }.value
|
||||
if (chatInfo is ChatInfo.Direct) {
|
||||
var contactInfo: Pair<ConnectionStats?, Profile?>? by remember { mutableStateOf(preloadedContactInfo) }
|
||||
var code: String? by remember { mutableStateOf(preloadedCode) }
|
||||
KeyChangeEffect(chatInfo.id, ChatModel.networkStatuses.toMap()) {
|
||||
contactInfo = chatModel.controller.apiContactInfo(chatRh, chatInfo.apiId)
|
||||
preloadedContactInfo = contactInfo
|
||||
code = chatModel.controller.apiGetContactCode(chatRh, chatInfo.apiId)?.second
|
||||
preloadedCode = code
|
||||
}
|
||||
ChatInfoView(chatModel, chatInfo.contact, contactInfo?.first, contactInfo?.second, chatInfo.localAlias, code, close) {
|
||||
showSearch.value = true
|
||||
}
|
||||
} else if (chatInfo is ChatInfo.Group) {
|
||||
var link: Pair<String, GroupMemberRole>? by remember(chatInfo.id) { mutableStateOf(preloadedLink) }
|
||||
KeyChangeEffect(chatInfo.id) {
|
||||
setGroupMembers(chatRh, chatInfo.groupInfo, chatModel)
|
||||
link = chatModel.controller.apiGetGroupLink(chatRh, chatInfo.groupInfo.groupId)
|
||||
preloadedLink = link
|
||||
}
|
||||
GroupChatInfoView(chatRh, chatInfo.id, link?.first, link?.second, selectedItems, appBar, scrollToItemId, {
|
||||
link = it
|
||||
preloadedLink = it
|
||||
}, close, { showSearch.value = true })
|
||||
} else {
|
||||
LaunchedEffect(Unit) {
|
||||
close()
|
||||
}
|
||||
}
|
||||
ChatInfoView(chatModel, chatInfo.contact, contactInfo?.first, contactInfo?.second, chatInfo.localAlias, code, close) {
|
||||
showSearch.value = true
|
||||
}
|
||||
} else if (chatInfo is ChatInfo.Group) {
|
||||
var link: Pair<String, GroupMemberRole>? by remember(chatInfo.id) { mutableStateOf(preloadedLink) }
|
||||
KeyChangeEffect(chatInfo.id) {
|
||||
setGroupMembers(chatRh, chatInfo.groupInfo, chatModel)
|
||||
link = chatModel.controller.apiGetGroupLink(chatRh, chatInfo.groupInfo.groupId)
|
||||
preloadedLink = link
|
||||
}
|
||||
GroupChatInfoView(chatModel, chatRh, chatInfo.id, link?.first, link?.second, scrollToItemId, {
|
||||
link = it
|
||||
preloadedLink = it
|
||||
}, close, { showSearch.value = true })
|
||||
} else {
|
||||
LaunchedEffect(Unit) {
|
||||
close()
|
||||
snapshotFlow { activeChatInfo.value?.id }
|
||||
.drop(1)
|
||||
.collect {
|
||||
appBar.value = null
|
||||
selectedItems.value = null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -788,7 +800,7 @@ fun ChatLayout(
|
||||
) {
|
||||
AnimatedVisibility(selectedChatItems.value != null) {
|
||||
if (chatInfo != null) {
|
||||
SelectedItemsBottomToolbar(
|
||||
SelectedItemsButtonsToolbar(
|
||||
contentTag = contentTag,
|
||||
selectedChatItems = selectedChatItems,
|
||||
chatInfo = chatInfo,
|
||||
@@ -846,7 +858,7 @@ fun ChatLayout(
|
||||
if (selectedChatItems.value == null) {
|
||||
GroupReportsAppBar(contentTag, { ModalManager.end.closeModal() }, onSearchValueChanged)
|
||||
} else {
|
||||
SelectedItemsTopToolbar(selectedChatItems, !oneHandUI.value)
|
||||
SelectedItemsCounterToolbar(selectedChatItems, !oneHandUI.value)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -858,7 +870,7 @@ fun ChatLayout(
|
||||
ChatInfoToolbar(chatInfo, contentTag, back, info, startCall, endCall, addMembers, openGroupLink, changeNtfsState, onSearchValueChanged, showSearch)
|
||||
}
|
||||
} else {
|
||||
SelectedItemsTopToolbar(selectedChatItems, !oneHandUI.value || !chatBottomBar.value)
|
||||
SelectedItemsCounterToolbar(selectedChatItems, !oneHandUI.value || !chatBottomBar.value)
|
||||
}
|
||||
}
|
||||
if (contentTag == null && reportsCount > 0 && (!oneHandUI.value || !chatBottomBar.value)) {
|
||||
@@ -1202,6 +1214,7 @@ fun BoxScope.ChatItemsList(
|
||||
}
|
||||
}
|
||||
val highlightedItems = remember { mutableStateOf(setOf<Long>()) }
|
||||
val hoveredItemId = remember { mutableStateOf(null as Long?) }
|
||||
val listState = rememberUpdatedState(rememberSaveable(chatInfo.id, searchValueIsEmpty.value, resetListState.value, saver = LazyListState.Saver) {
|
||||
val openAroundItemId = chatModel.openAroundItemId.value
|
||||
val index = mergedItems.value.indexInParentItems[openAroundItemId] ?: mergedItems.value.items.indexOfLast { it.hasUnread() }
|
||||
@@ -1210,6 +1223,7 @@ fun BoxScope.ChatItemsList(
|
||||
highlightedItems.value += openAroundItemId
|
||||
chatModel.openAroundItemId.value = null
|
||||
}
|
||||
hoveredItemId.value = null
|
||||
if (reportsState != null) {
|
||||
reportsListState = null
|
||||
reportsState
|
||||
@@ -1319,7 +1333,7 @@ fun BoxScope.ChatItemsList(
|
||||
highlightedItems.value = setOf()
|
||||
}
|
||||
}
|
||||
ChatItemView(remoteHostId, chatInfo, cItem, composeState, provider, useLinkPreviews = useLinkPreviews, linkMode = linkMode, revealed = revealed, highlighted = highlighted, range = range, searchIsNotBlank = searchValueIsNotBlank, fillMaxWidth = fillMaxWidth, selectedChatItems = selectedChatItems, selectChatItem = { selectUnselectChatItem(true, cItem, revealed, selectedChatItems, reversedChatItems) }, deleteMessage = deleteMessage, deleteMessages = deleteMessages, archiveReports = archiveReports, receiveFile = receiveFile, cancelFile = cancelFile, joinGroup = joinGroup, acceptCall = acceptCall, acceptFeature = acceptFeature, openDirectChat = openDirectChat, forwardItem = forwardItem, updateContactStats = updateContactStats, updateMemberStats = updateMemberStats, syncContactConnection = syncContactConnection, syncMemberConnection = syncMemberConnection, findModelChat = findModelChat, findModelMember = findModelMember, scrollToItem = scrollToItem, scrollToQuotedItemFromItem = scrollToQuotedItemFromItem, setReaction = setReaction, showItemDetails = showItemDetails, reveal = reveal, showMemberInfo = showMemberInfo, showChatInfo = showChatInfo, developerTools = developerTools, showViaProxy = showViaProxy, itemSeparation = itemSeparation, showTimestamp = itemSeparation.timestamp)
|
||||
ChatItemView(remoteHostId, chatInfo, cItem, composeState, provider, useLinkPreviews = useLinkPreviews, linkMode = linkMode, revealed = revealed, highlighted = highlighted, hoveredItemId = hoveredItemId, range = range, searchIsNotBlank = searchValueIsNotBlank, fillMaxWidth = fillMaxWidth, selectedChatItems = selectedChatItems, selectChatItem = { selectUnselectChatItem(true, cItem, revealed, selectedChatItems, reversedChatItems) }, deleteMessage = deleteMessage, deleteMessages = deleteMessages, archiveReports = archiveReports, receiveFile = receiveFile, cancelFile = cancelFile, joinGroup = joinGroup, acceptCall = acceptCall, acceptFeature = acceptFeature, openDirectChat = openDirectChat, forwardItem = forwardItem, updateContactStats = updateContactStats, updateMemberStats = updateMemberStats, syncContactConnection = syncContactConnection, syncMemberConnection = syncMemberConnection, findModelChat = findModelChat, findModelMember = findModelMember, scrollToItem = scrollToItem, scrollToQuotedItemFromItem = scrollToQuotedItemFromItem, setReaction = setReaction, showItemDetails = showItemDetails, reveal = reveal, showMemberInfo = showMemberInfo, showChatInfo = showChatInfo, developerTools = developerTools, showViaProxy = showViaProxy, itemSeparation = itemSeparation, showTimestamp = itemSeparation.timestamp)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1432,7 +1446,7 @@ fun BoxScope.ChatItemsList(
|
||||
fun Item() {
|
||||
ChatItemBox(Modifier.layoutId(CHAT_BUBBLE_LAYOUT_ID)) {
|
||||
androidx.compose.animation.AnimatedVisibility(selectionVisible, enter = fadeIn(), exit = fadeOut()) {
|
||||
SelectedChatItem(Modifier, cItem.id, selectedChatItems)
|
||||
SelectedListItem(Modifier, cItem.id, selectedChatItems)
|
||||
}
|
||||
Row(Modifier.graphicsLayer { translationX = selectionOffset.toPx() }) {
|
||||
val member = cItem.chatDir.groupMember
|
||||
@@ -1457,7 +1471,7 @@ fun BoxScope.ChatItemsList(
|
||||
} else {
|
||||
ChatItemBox {
|
||||
AnimatedVisibility (selectionVisible, enter = fadeIn(), exit = fadeOut()) {
|
||||
SelectedChatItem(Modifier.padding(start = 8.dp), cItem.id, selectedChatItems)
|
||||
SelectedListItem(Modifier.padding(start = 8.dp), cItem.id, selectedChatItems)
|
||||
}
|
||||
Row(
|
||||
Modifier
|
||||
@@ -1472,7 +1486,7 @@ fun BoxScope.ChatItemsList(
|
||||
} else {
|
||||
ChatItemBox {
|
||||
AnimatedVisibility (selectionVisible, enter = fadeIn(), exit = fadeOut()) {
|
||||
SelectedChatItem(Modifier.padding(start = 8.dp), cItem.id, selectedChatItems)
|
||||
SelectedListItem(Modifier.padding(start = 8.dp), cItem.id, selectedChatItems)
|
||||
}
|
||||
Box(
|
||||
Modifier
|
||||
@@ -1487,7 +1501,7 @@ fun BoxScope.ChatItemsList(
|
||||
} else { // direct message
|
||||
ChatItemBox {
|
||||
AnimatedVisibility (selectionVisible, enter = fadeIn(), exit = fadeOut()) {
|
||||
SelectedChatItem(Modifier.padding(start = 8.dp), cItem.id, selectedChatItems)
|
||||
SelectedListItem(Modifier.padding(start = 8.dp), cItem.id, selectedChatItems)
|
||||
}
|
||||
|
||||
Box(
|
||||
@@ -1606,6 +1620,8 @@ private fun LoadLastItems(loadingMoreItems: MutableState<Boolean>, resetListStat
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: in extra rare case when after loading last items only 1 item is loaded, the view will jump like when receiving new message
|
||||
// can be reproduced by forwarding a message to notes that is (ChatPagination.INITIAL_COUNT - 1) away from bottom and going to that message
|
||||
@Composable
|
||||
private fun SmallScrollOnNewMessage(listState: State<LazyListState>, reversedChatItems: State<List<ChatItem>>) {
|
||||
val scrollDistance = with(LocalDensity.current) { -39.dp.toPx() }
|
||||
@@ -2296,12 +2312,12 @@ private fun BoxScope.BottomEndFloatingButton(
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun SelectedChatItem(
|
||||
fun SelectedListItem(
|
||||
modifier: Modifier,
|
||||
ciId: Long,
|
||||
selectedChatItems: State<Set<Long>?>,
|
||||
id: Long,
|
||||
selectedItems: State<Set<Long>?>,
|
||||
) {
|
||||
val checked = remember { derivedStateOf { selectedChatItems.value?.contains(ciId) == true } }
|
||||
val checked = remember { derivedStateOf { selectedItems.value?.contains(id) == true } }
|
||||
Icon(
|
||||
painterResource(if (checked.value) MR.images.ic_check_circle_filled else MR.images.ic_radio_button_unchecked),
|
||||
null,
|
||||
|
||||
+35
-25
@@ -9,12 +9,10 @@ import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.alpha
|
||||
import androidx.compose.ui.focus.FocusRequester
|
||||
import androidx.compose.ui.input.pointer.pointerInput
|
||||
import androidx.compose.ui.text.TextRange
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.dp
|
||||
import chat.simplex.common.model.*
|
||||
import chat.simplex.common.model.ChatController.appPrefs
|
||||
import chat.simplex.common.platform.BackHandler
|
||||
import chat.simplex.common.platform.chatModel
|
||||
import chat.simplex.common.views.helpers.*
|
||||
@@ -23,32 +21,44 @@ import chat.simplex.res.MR
|
||||
import dev.icerock.moko.resources.compose.painterResource
|
||||
|
||||
@Composable
|
||||
fun BoxScope.SelectedItemsTopToolbar(selectedChatItems: MutableState<Set<Long>?>, onTop: Boolean) {
|
||||
val onBackClicked = { selectedChatItems.value = null }
|
||||
fun BoxScope.SelectedItemsCounterToolbar(selectedItems: MutableState<Set<Long>?>, onTop: Boolean, selectAll: (() -> Unit)? = null) {
|
||||
val onBackClicked = { selectedItems.value = null }
|
||||
BackHandler(onBack = onBackClicked)
|
||||
val count = selectedChatItems.value?.size ?: 0
|
||||
DefaultAppBar(
|
||||
navigationButton = { NavigationButtonClose(onButtonClicked = onBackClicked) },
|
||||
title = {
|
||||
Text(
|
||||
if (count == 0) {
|
||||
stringResource(MR.strings.selected_chat_items_nothing_selected)
|
||||
} else {
|
||||
stringResource(MR.strings.selected_chat_items_selected_n).format(count)
|
||||
},
|
||||
fontWeight = FontWeight.SemiBold,
|
||||
maxLines = 1,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
},
|
||||
onTitleClick = null,
|
||||
onTop = onTop,
|
||||
onSearchValueChanged = {},
|
||||
)
|
||||
val count = selectedItems.value?.size ?: 0
|
||||
Box(if (onTop) Modifier else Modifier.imePadding()) {
|
||||
DefaultAppBar(
|
||||
navigationButton = { NavigationButtonClose(onButtonClicked = onBackClicked) },
|
||||
title = {
|
||||
Text(
|
||||
if (count == 0) {
|
||||
stringResource(MR.strings.selected_chat_items_nothing_selected)
|
||||
} else {
|
||||
stringResource(MR.strings.selected_chat_items_selected_n).format(count)
|
||||
},
|
||||
fontWeight = FontWeight.SemiBold,
|
||||
maxLines = 1,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
},
|
||||
onTitleClick = null,
|
||||
onTop = onTop,
|
||||
onSearchValueChanged = {},
|
||||
buttons = if (selectAll != null) { { SelectAllButton(selectAll) } } else {{}}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun SelectedItemsBottomToolbar(
|
||||
private fun SelectAllButton(onClick: () -> Unit) {
|
||||
IconButton(onClick) {
|
||||
Icon(
|
||||
painterResource(MR.images.ic_checklist), stringResource(MR.strings.back), Modifier.height(24.dp), tint = MaterialTheme.colors.primary
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun SelectedItemsButtonsToolbar(
|
||||
chatInfo: ChatInfo,
|
||||
contentTag: MsgContentTag?,
|
||||
selectedChatItems: MutableState<Set<Long>?>,
|
||||
@@ -162,4 +172,4 @@ private fun recheckItems(chatInfo: ChatInfo,
|
||||
}
|
||||
|
||||
private fun possibleToModerate(chatInfo: ChatInfo): Boolean =
|
||||
chatInfo is ChatInfo.Group && chatInfo.groupInfo.membership.memberRole >= GroupMemberRole.Admin
|
||||
chatInfo is ChatInfo.Group && chatInfo.groupInfo.membership.memberRole >= GroupMemberRole.Moderator
|
||||
|
||||
+211
-35
@@ -8,6 +8,8 @@ import SectionItemViewLongClickable
|
||||
import SectionSpacer
|
||||
import SectionTextFooter
|
||||
import SectionView
|
||||
import androidx.compose.animation.*
|
||||
import androidx.compose.animation.core.animateDpAsState
|
||||
import androidx.compose.desktop.ui.tooling.preview.Preview
|
||||
import androidx.compose.foundation.combinedClickable
|
||||
import androidx.compose.foundation.layout.*
|
||||
@@ -17,6 +19,7 @@ import androidx.compose.runtime.*
|
||||
import androidx.compose.runtime.saveable.rememberSaveable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.alpha
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.platform.LocalClipboardManager
|
||||
import androidx.compose.ui.text.AnnotatedString
|
||||
@@ -37,7 +40,7 @@ import chat.simplex.common.views.usersettings.*
|
||||
import chat.simplex.common.model.GroupInfo
|
||||
import chat.simplex.common.platform.*
|
||||
import chat.simplex.common.views.chat.*
|
||||
import chat.simplex.common.views.chat.item.ItemAction
|
||||
import chat.simplex.common.views.chat.item.*
|
||||
import chat.simplex.common.views.chatlist.*
|
||||
import chat.simplex.common.views.database.TtlOptions
|
||||
import chat.simplex.res.MR
|
||||
@@ -49,7 +52,18 @@ val MEMBER_ROW_AVATAR_SIZE = 42.dp
|
||||
val MEMBER_ROW_VERTICAL_PADDING = 8.dp
|
||||
|
||||
@Composable
|
||||
fun ModalData.GroupChatInfoView(chatModel: ChatModel, rhId: Long?, chatId: String, groupLink: String?, groupLinkMemberRole: GroupMemberRole?, scrollToItemId: MutableState<Long?>, onGroupLinkUpdated: (Pair<String, GroupMemberRole>?) -> Unit, close: () -> Unit, onSearchClicked: () -> Unit) {
|
||||
fun ModalData.GroupChatInfoView(
|
||||
rhId: Long?,
|
||||
chatId: String,
|
||||
groupLink: String?,
|
||||
groupLinkMemberRole: GroupMemberRole?,
|
||||
selectedItems: MutableState<Set<Long>?>,
|
||||
appBar: MutableState<@Composable (BoxScope.() -> Unit)?>,
|
||||
scrollToItemId: MutableState<Long?>,
|
||||
onGroupLinkUpdated: (Pair<String, GroupMemberRole>?) -> Unit,
|
||||
close: () -> Unit,
|
||||
onSearchClicked: () -> Unit
|
||||
) {
|
||||
BackHandler(onBack = close)
|
||||
// TODO derivedStateOf?
|
||||
val chat = chatModel.chats.value.firstOrNull { ch -> ch.id == chatId && ch.remoteHostId == rhId }
|
||||
@@ -82,12 +96,14 @@ fun ModalData.GroupChatInfoView(chatModel: ChatModel, rhId: Long?, chatId: Strin
|
||||
|
||||
setChatTTLAlert(chat.remoteHostId, chat.chatInfo, chatItemTTL, previousChatTTL, deletingItems)
|
||||
},
|
||||
members = remember { chatModel.groupMembers }.value
|
||||
activeSortedMembers = remember { chatModel.groupMembers }.value
|
||||
.filter { it.memberStatus != GroupMemberStatus.MemLeft && it.memberStatus != GroupMemberStatus.MemRemoved }
|
||||
.sortedByDescending { it.memberRole },
|
||||
developerTools,
|
||||
onLocalAliasChanged = { setGroupAlias(chat, it, chatModel) },
|
||||
groupLink,
|
||||
selectedItems,
|
||||
appBar,
|
||||
scrollToItemId,
|
||||
addMembers = {
|
||||
scope.launch(Dispatchers.Default) {
|
||||
@@ -212,21 +228,23 @@ private fun removeMemberAlert(rhId: Long?, groupInfo: GroupInfo, mem: GroupMembe
|
||||
text = generalGetString(messageId),
|
||||
confirmText = generalGetString(MR.strings.remove_member_confirmation),
|
||||
onConfirm = {
|
||||
withBGApi {
|
||||
val updatedMembers = chatModel.controller.apiRemoveMembers(rhId, groupInfo.groupId, listOf(mem.groupMemberId))
|
||||
if (updatedMembers != null) {
|
||||
withChats {
|
||||
updatedMembers.forEach { updatedMember ->
|
||||
upsertGroupMember(rhId, groupInfo, updatedMember)
|
||||
}
|
||||
}
|
||||
withReportsChatsIfOpen {
|
||||
updatedMembers.forEach { updatedMember ->
|
||||
upsertGroupMember(rhId, groupInfo, updatedMember)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
removeMembers(rhId, groupInfo, listOf(mem.groupMemberId))
|
||||
},
|
||||
destructive = true,
|
||||
)
|
||||
}
|
||||
|
||||
private fun removeMembersAlert(rhId: Long?, groupInfo: GroupInfo, memberIds: List<Long>, onSuccess: () -> Unit = {}) {
|
||||
val messageId = if (groupInfo.businessChat == null)
|
||||
MR.strings.members_will_be_removed_from_group_cannot_be_undone
|
||||
else
|
||||
MR.strings.members_will_be_removed_from_chat_cannot_be_undone
|
||||
AlertManager.shared.showAlertDialog(
|
||||
title = generalGetString(MR.strings.button_remove_members_question),
|
||||
text = generalGetString(messageId),
|
||||
confirmText = generalGetString(MR.strings.remove_member_confirmation),
|
||||
onConfirm = {
|
||||
removeMembers(rhId, groupInfo, memberIds, onSuccess)
|
||||
},
|
||||
destructive = true,
|
||||
)
|
||||
@@ -309,10 +327,12 @@ fun ModalData.GroupChatInfoLayout(
|
||||
setSendReceipts: (SendReceipts) -> Unit,
|
||||
chatItemTTL: MutableState<ChatItemTTL?>,
|
||||
setChatItemTTL: (ChatItemTTL?) -> Unit,
|
||||
members: List<GroupMember>,
|
||||
activeSortedMembers: List<GroupMember>,
|
||||
developerTools: Boolean,
|
||||
onLocalAliasChanged: (String) -> Unit,
|
||||
groupLink: String?,
|
||||
selectedItems: MutableState<Set<Long>?>,
|
||||
appBar: MutableState<@Composable (BoxScope.() -> Unit)?>,
|
||||
scrollToItemId: MutableState<Long?>,
|
||||
addMembers: () -> Unit,
|
||||
showMemberInfo: (GroupMember) -> Unit,
|
||||
@@ -333,20 +353,37 @@ fun ModalData.GroupChatInfoLayout(
|
||||
scope.launch { listState.scrollToItem(0) }
|
||||
}
|
||||
val searchText = remember { stateGetOrPut("searchText") { TextFieldValue() } }
|
||||
val filteredMembers = remember(members) {
|
||||
val filteredMembers = remember(activeSortedMembers) {
|
||||
derivedStateOf {
|
||||
val s = searchText.value.text.trim().lowercase()
|
||||
if (s.isEmpty()) members else members.filter { m -> m.anyNameContains(s) }
|
||||
if (s.isEmpty()) activeSortedMembers else activeSortedMembers.filter { m -> m.anyNameContains(s) }
|
||||
}
|
||||
}
|
||||
Box {
|
||||
val oneHandUI = remember { appPrefs.oneHandUI.state }
|
||||
val selectedItemsBarHeight = if (selectedItems.value != null) AppBarHeight * fontSizeSqrtMultiplier else 0.dp
|
||||
val navBarPadding = WindowInsets.navigationBars.asPaddingValues().calculateBottomPadding()
|
||||
val imePadding = WindowInsets.ime.asPaddingValues().calculateBottomPadding()
|
||||
LazyColumnWithScrollBar(
|
||||
state = listState,
|
||||
contentPadding = if (oneHandUI.value) {
|
||||
PaddingValues(top = WindowInsets.statusBars.asPaddingValues().calculateTopPadding() + DEFAULT_PADDING + 5.dp, bottom = WindowInsets.navigationBars.asPaddingValues().calculateBottomPadding())
|
||||
PaddingValues(
|
||||
top = WindowInsets.statusBars.asPaddingValues().calculateTopPadding() + DEFAULT_PADDING + 5.dp,
|
||||
bottom = navBarPadding +
|
||||
imePadding +
|
||||
selectedItemsBarHeight +
|
||||
// TODO: that's workaround but works. Actually, something in the codebase doesn't consume padding for AppBar and it produce
|
||||
// different padding when the user has NavigationBar and doesn't have it with ime shown (developer options helps to test it nav bars)
|
||||
(if (navBarPadding > 0.dp && imePadding > 0.dp) 0.dp else AppBarHeight * fontSizeSqrtMultiplier)
|
||||
)
|
||||
} else {
|
||||
PaddingValues(top = topPaddingToContent(false))
|
||||
PaddingValues(
|
||||
top = topPaddingToContent(false),
|
||||
bottom = navBarPadding +
|
||||
imePadding +
|
||||
selectedItemsBarHeight +
|
||||
(if (navBarPadding > 0.dp && imePadding > 0.dp) -AppBarHeight * fontSizeSqrtMultiplier else 0.dp)
|
||||
)
|
||||
}
|
||||
) {
|
||||
item {
|
||||
@@ -401,7 +438,7 @@ fun ModalData.GroupChatInfoLayout(
|
||||
}
|
||||
}
|
||||
}
|
||||
if (members.filter { it.memberCurrent }.size <= SMALL_GROUPS_RCPS_MEM_LIMIT) {
|
||||
if (activeSortedMembers.filter { it.memberCurrent }.size <= SMALL_GROUPS_RCPS_MEM_LIMIT) {
|
||||
SendReceiptsOption(currentUser, sendReceipts, setSendReceipts)
|
||||
} else {
|
||||
SendReceiptsOptionDisabled()
|
||||
@@ -424,7 +461,7 @@ fun ModalData.GroupChatInfoLayout(
|
||||
ChatTTLSection(chatItemTTL, setChatItemTTL, deletingItems)
|
||||
SectionDividerSpaced(maxTopPadding = true, maxBottomPadding = true)
|
||||
|
||||
SectionView(title = String.format(generalGetString(MR.strings.group_info_section_title_num_members), members.count() + 1)) {
|
||||
SectionView(title = String.format(generalGetString(MR.strings.group_info_section_title_num_members), activeSortedMembers.count() + 1)) {
|
||||
if (groupInfo.canAddMembers) {
|
||||
if (groupInfo.businessChat == null) {
|
||||
if (groupLink == null) {
|
||||
@@ -442,7 +479,7 @@ fun ModalData.GroupChatInfoLayout(
|
||||
}
|
||||
AddMembersButton(addMembersTitleId, tint, onAddMembersClick)
|
||||
}
|
||||
if (members.size > 8) {
|
||||
if (activeSortedMembers.size > 8) {
|
||||
SectionItemView(padding = PaddingValues(start = 14.dp, end = DEFAULT_PADDING_HALF)) {
|
||||
SearchRowView(searchText)
|
||||
}
|
||||
@@ -452,12 +489,34 @@ fun ModalData.GroupChatInfoLayout(
|
||||
}
|
||||
}
|
||||
}
|
||||
items(filteredMembers.value) { member ->
|
||||
items(filteredMembers.value, key = { it.groupMemberId }) { member ->
|
||||
Divider()
|
||||
val showMenu = remember { mutableStateOf(false) }
|
||||
SectionItemViewLongClickable({ showMemberInfo(member) }, { showMenu.value = true }, minHeight = 54.dp, padding = PaddingValues(horizontal = DEFAULT_PADDING)) {
|
||||
DropDownMenuForMember(chat.remoteHostId, member, groupInfo, showMenu)
|
||||
MemberRow(member)
|
||||
val canBeSelected = groupInfo.membership.memberRole >= member.memberRole && member.memberRole < GroupMemberRole.Moderator
|
||||
SectionItemViewLongClickable(
|
||||
click = {
|
||||
if (selectedItems.value != null) {
|
||||
if (canBeSelected) {
|
||||
toggleItemSelection(member.groupMemberId, selectedItems)
|
||||
}
|
||||
} else {
|
||||
showMemberInfo(member)
|
||||
}
|
||||
},
|
||||
longClick = { showMenu.value = true },
|
||||
minHeight = 54.dp,
|
||||
padding = PaddingValues(horizontal = DEFAULT_PADDING)
|
||||
) {
|
||||
Box(contentAlignment = Alignment.CenterStart) {
|
||||
androidx.compose.animation.AnimatedVisibility(selectedItems.value != null, enter = fadeIn(), exit = fadeOut()) {
|
||||
SelectedListItem(Modifier.alpha(if (canBeSelected) 1f else 0f).padding(start = 2.dp), member.groupMemberId, selectedItems)
|
||||
}
|
||||
val selectionOffset by animateDpAsState(if (selectedItems.value != null) 20.dp + 22.dp * fontSizeMultiplier else 0.dp)
|
||||
DropDownMenuForMember(chat.remoteHostId, member, groupInfo, selectedItems, showMenu)
|
||||
Box(Modifier.padding(start = selectionOffset)) {
|
||||
MemberRow(member)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
item {
|
||||
@@ -482,12 +541,92 @@ fun ModalData.GroupChatInfoLayout(
|
||||
}
|
||||
}
|
||||
SectionBottomSpacer()
|
||||
Spacer(Modifier.windowInsetsBottomHeight(WindowInsets.navigationBars))
|
||||
}
|
||||
}
|
||||
if (!oneHandUI.value) {
|
||||
NavigationBarBackground(oneHandUI.value, oneHandUI.value)
|
||||
}
|
||||
SelectedItemsButtonsToolbar(chat, groupInfo, selectedItems, rememberUpdatedState(activeSortedMembers))
|
||||
SelectedItemsCounterToolbarSetter(groupInfo, selectedItems, filteredMembers, appBar)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun BoxScope.SelectedItemsButtonsToolbar(chat: Chat, groupInfo: GroupInfo, selectedItems: MutableState<Set<Long>?>, activeMembers: State<List<GroupMember>>) {
|
||||
val oneHandUI = remember { appPrefs.oneHandUI.state }
|
||||
Column(Modifier.align(Alignment.BottomCenter)) {
|
||||
AnimatedVisibility(selectedItems.value != null) {
|
||||
SelectedItemsMembersToolbar(
|
||||
selectedItems = selectedItems,
|
||||
activeMembers = activeMembers,
|
||||
groupInfo = groupInfo,
|
||||
delete = {
|
||||
removeMembersAlert(chat.remoteHostId, groupInfo, selectedItems.value!!.sorted()) {
|
||||
selectedItems.value = null
|
||||
}
|
||||
},
|
||||
blockForAll = { block ->
|
||||
if (block) {
|
||||
blockForAllAlert(chat.remoteHostId, groupInfo, selectedItems.value!!.sorted()) {
|
||||
selectedItems.value = null
|
||||
}
|
||||
} else {
|
||||
unblockForAllAlert(chat.remoteHostId, groupInfo, selectedItems.value!!.sorted()) {
|
||||
selectedItems.value = null
|
||||
}
|
||||
}
|
||||
},
|
||||
changeRole = { toRole ->
|
||||
updateMembersRoleDialog(toRole, groupInfo) {
|
||||
updateMembersRole(toRole, chat.remoteHostId, groupInfo, selectedItems.value!!.sorted()) {
|
||||
selectedItems.value = null
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
if (oneHandUI.value) {
|
||||
// That's placeholder to take some space for bottom app bar in oneHandUI
|
||||
Box(Modifier.height(AppBarHeight * fontSizeSqrtMultiplier))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun SelectedItemsCounterToolbarSetter(
|
||||
groupInfo: GroupInfo,
|
||||
selectedItems: MutableState<Set<Long>?>,
|
||||
filteredMembers: State<List<GroupMember>>,
|
||||
appBar: MutableState<@Composable (BoxScope.() -> Unit)?>
|
||||
) {
|
||||
LaunchedEffect(
|
||||
groupInfo,
|
||||
/* variable, not value - intentionally - to reduce work but handle variable change because it changes in remember(members) { derivedState {} } */
|
||||
filteredMembers
|
||||
) {
|
||||
snapshotFlow { selectedItems.value == null }
|
||||
.collect { nullItems ->
|
||||
if (!nullItems) {
|
||||
appBar.value = {
|
||||
SelectedItemsCounterToolbar(selectedItems, !remember { appPrefs.oneHandUI.state }.value) {
|
||||
if (!groupInfo.membership.memberActive) return@SelectedItemsCounterToolbar
|
||||
val ids: MutableSet<Long> = mutableSetOf()
|
||||
for (mem in filteredMembers.value) {
|
||||
if (groupInfo.membership.memberActive && groupInfo.membership.memberRole >= mem.memberRole && mem.memberRole < GroupMemberRole.Moderator) {
|
||||
ids.add(mem.groupMemberId)
|
||||
}
|
||||
}
|
||||
if (ids.isNotEmpty() && (selectedItems.value ?: setOf()).containsAll(ids)) {
|
||||
selectedItems.value = (selectedItems.value ?: setOf()).minus(ids)
|
||||
} else {
|
||||
selectedItems.value = (selectedItems.value ?: setOf()).union(ids)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
appBar.value = null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -612,7 +751,7 @@ fun MemberRow(member: GroupMember, user: Boolean = false, infoPage: Boolean = tr
|
||||
Text(stringResource(MR.strings.member_info_member_blocked), color = MaterialTheme.colors.secondary)
|
||||
} else {
|
||||
val role = member.memberRole
|
||||
if (role in listOf(GroupMemberRole.Owner, GroupMemberRole.Admin, GroupMemberRole.Observer)) {
|
||||
if (role in listOf(GroupMemberRole.Owner, GroupMemberRole.Admin, GroupMemberRole.Moderator, GroupMemberRole.Observer)) {
|
||||
Text(role.text, color = MaterialTheme.colors.secondary)
|
||||
}
|
||||
}
|
||||
@@ -686,8 +825,8 @@ private fun MemberVerifiedShield() {
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun DropDownMenuForMember(rhId: Long?, member: GroupMember, groupInfo: GroupInfo, showMenu: MutableState<Boolean>) {
|
||||
if (groupInfo.membership.memberRole >= GroupMemberRole.Admin) {
|
||||
private fun DropDownMenuForMember(rhId: Long?, member: GroupMember, groupInfo: GroupInfo, selectedItems: MutableState<Set<Long>?>, showMenu: MutableState<Boolean>) {
|
||||
if (groupInfo.membership.memberRole >= GroupMemberRole.Moderator) {
|
||||
val canBlockForAll = member.canBlockForAll(groupInfo)
|
||||
val canRemove = member.canBeRemoved(groupInfo)
|
||||
if (canBlockForAll || canRemove) {
|
||||
@@ -711,6 +850,10 @@ private fun DropDownMenuForMember(rhId: Long?, member: GroupMember, groupInfo: G
|
||||
showMenu.value = false
|
||||
})
|
||||
}
|
||||
if (selectedItems.value == null && member.memberRole < GroupMemberRole.Moderator) {
|
||||
Divider()
|
||||
SelectItemAction(showMenu) { toggleItemSelection(member.groupMemberId, selectedItems) }
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (!member.blockedByAdmin) {
|
||||
@@ -819,6 +962,37 @@ private fun setGroupAlias(chat: Chat, localAlias: String, chatModel: ChatModel)
|
||||
}
|
||||
}
|
||||
|
||||
fun removeMembers(rhId: Long?, groupInfo: GroupInfo, memberIds: List<Long>, onSuccess: () -> Unit = {}) {
|
||||
withBGApi {
|
||||
val updatedMembers = chatModel.controller.apiRemoveMembers(rhId, groupInfo.groupId, memberIds)
|
||||
if (updatedMembers != null) {
|
||||
withChats {
|
||||
updatedMembers.forEach { updatedMember ->
|
||||
upsertGroupMember(rhId, groupInfo, updatedMember)
|
||||
}
|
||||
}
|
||||
withReportsChatsIfOpen {
|
||||
updatedMembers.forEach { updatedMember ->
|
||||
upsertGroupMember(rhId, groupInfo, updatedMember)
|
||||
}
|
||||
}
|
||||
onSuccess()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun <T> toggleItemSelection(itemId: T, selectedItems: MutableState<Set<T>?>) {
|
||||
val select = selectedItems.value?.contains(itemId) != true
|
||||
if (select) {
|
||||
val sel = selectedItems.value ?: setOf()
|
||||
selectedItems.value = sel + itemId
|
||||
} else {
|
||||
val sel = (selectedItems.value ?: setOf()).toMutableSet()
|
||||
sel.remove(itemId)
|
||||
selectedItems.value = sel
|
||||
}
|
||||
}
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
fun PreviewGroupChatInfoLayout() {
|
||||
@@ -835,10 +1009,12 @@ fun PreviewGroupChatInfoLayout() {
|
||||
setSendReceipts = {},
|
||||
chatItemTTL = remember { mutableStateOf(ChatItemTTL.fromSeconds(0)) },
|
||||
setChatItemTTL = {},
|
||||
members = listOf(GroupMember.sampleData, GroupMember.sampleData, GroupMember.sampleData),
|
||||
activeSortedMembers = listOf(GroupMember.sampleData, GroupMember.sampleData, GroupMember.sampleData),
|
||||
developerTools = false,
|
||||
onLocalAliasChanged = {},
|
||||
groupLink = null,
|
||||
selectedItems = remember { mutableStateOf(null) },
|
||||
appBar = remember { mutableStateOf(null) },
|
||||
scrollToItemId = remember { mutableStateOf(null) },
|
||||
addMembers = {}, showMemberInfo = {}, editGroupProfile = {}, addOrEditWelcomeMessage = {}, openPreferences = {}, deleteGroup = {}, clearChat = {}, leaveGroup = {}, manageGroupLink = {}, onSearchClicked = {}, deletingItems = remember { mutableStateOf(true) }
|
||||
)
|
||||
|
||||
+73
-28
@@ -137,26 +137,10 @@ fun GroupMemberInfoView(
|
||||
if (it == newRole.value) return@GroupMemberInfoLayout
|
||||
val prevValue = newRole.value
|
||||
newRole.value = it
|
||||
updateMemberRoleDialog(it, groupInfo, member, onDismiss = {
|
||||
updateMemberRoleDialog(it, groupInfo, member.memberCurrent, onDismiss = {
|
||||
newRole.value = prevValue
|
||||
}) {
|
||||
withBGApi {
|
||||
kotlin.runCatching {
|
||||
val members = chatModel.controller.apiMembersRole(rhId, groupInfo.groupId, listOf(member.groupMemberId), it)
|
||||
withChats {
|
||||
members.forEach { member ->
|
||||
upsertGroupMember(rhId, groupInfo, member)
|
||||
}
|
||||
}
|
||||
withReportsChatsIfOpen {
|
||||
members.forEach { member ->
|
||||
upsertGroupMember(rhId, groupInfo, member)
|
||||
}
|
||||
}
|
||||
}.onFailure {
|
||||
newRole.value = prevValue
|
||||
}
|
||||
}
|
||||
updateMembersRole(newRole.value, rhId, groupInfo, listOf(member.groupMemberId), onFailure = { newRole.value = prevValue })
|
||||
}
|
||||
},
|
||||
switchMemberAddress = {
|
||||
@@ -317,7 +301,7 @@ fun GroupMemberInfoLayout(
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun AdminDestructiveSection() {
|
||||
fun ModeratorDestructiveSection() {
|
||||
val canBlockForAll = member.canBlockForAll(groupInfo)
|
||||
val canRemove = member.canBeRemoved(groupInfo)
|
||||
if (canBlockForAll || canRemove) {
|
||||
@@ -494,8 +478,8 @@ fun GroupMemberInfoLayout(
|
||||
}
|
||||
}
|
||||
|
||||
if (groupInfo.membership.memberRole >= GroupMemberRole.Admin) {
|
||||
AdminDestructiveSection()
|
||||
if (groupInfo.membership.memberRole >= GroupMemberRole.Moderator) {
|
||||
ModeratorDestructiveSection()
|
||||
} else {
|
||||
NonAdminBlockSection()
|
||||
}
|
||||
@@ -709,16 +693,37 @@ fun MemberProfileImage(
|
||||
)
|
||||
}
|
||||
|
||||
private fun updateMemberRoleDialog(
|
||||
fun updateMembersRole(newRole: GroupMemberRole, rhId: Long?, groupInfo: GroupInfo, memberIds: List<Long>, onFailure: () -> Unit = {}, onSuccess: () -> Unit = {}) {
|
||||
withBGApi {
|
||||
kotlin.runCatching {
|
||||
val members = chatModel.controller.apiMembersRole(rhId, groupInfo.groupId, memberIds, newRole)
|
||||
withChats {
|
||||
members.forEach { member ->
|
||||
upsertGroupMember(rhId, groupInfo, member)
|
||||
}
|
||||
}
|
||||
withReportsChatsIfOpen {
|
||||
members.forEach { member ->
|
||||
upsertGroupMember(rhId, groupInfo, member)
|
||||
}
|
||||
}
|
||||
onSuccess()
|
||||
}.onFailure {
|
||||
onFailure()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun updateMemberRoleDialog(
|
||||
newRole: GroupMemberRole,
|
||||
groupInfo: GroupInfo,
|
||||
member: GroupMember,
|
||||
memberCurrent: Boolean,
|
||||
onDismiss: () -> Unit,
|
||||
onConfirm: () -> Unit
|
||||
) {
|
||||
AlertManager.shared.showAlertDialog(
|
||||
title = generalGetString(MR.strings.change_member_role_question),
|
||||
text = if (member.memberCurrent) {
|
||||
text = if (memberCurrent) {
|
||||
if (groupInfo.businessChat == null)
|
||||
String.format(generalGetString(MR.strings.member_role_will_be_changed_with_notification), newRole.text)
|
||||
else
|
||||
@@ -732,6 +737,22 @@ private fun updateMemberRoleDialog(
|
||||
)
|
||||
}
|
||||
|
||||
fun updateMembersRoleDialog(
|
||||
newRole: GroupMemberRole,
|
||||
groupInfo: GroupInfo,
|
||||
onConfirm: () -> Unit
|
||||
) {
|
||||
AlertManager.shared.showAlertDialog(
|
||||
title = generalGetString(MR.strings.change_member_role_question),
|
||||
text = if (groupInfo.businessChat == null)
|
||||
String.format(generalGetString(MR.strings.member_role_will_be_changed_with_notification), newRole.text)
|
||||
else
|
||||
String.format(generalGetString(MR.strings.member_role_will_be_changed_with_notification_chat), newRole.text),
|
||||
confirmText = generalGetString(MR.strings.change_verb),
|
||||
onConfirm = onConfirm,
|
||||
)
|
||||
}
|
||||
|
||||
fun connectViaMemberAddressAlert(rhId: Long?, connReqUri: String) {
|
||||
try {
|
||||
withBGApi {
|
||||
@@ -793,7 +814,19 @@ fun blockForAllAlert(rhId: Long?, gInfo: GroupInfo, mem: GroupMember) {
|
||||
text = generalGetString(MR.strings.block_member_desc).format(mem.chatViewName),
|
||||
confirmText = generalGetString(MR.strings.block_for_all),
|
||||
onConfirm = {
|
||||
blockMemberForAll(rhId, gInfo, mem, true)
|
||||
blockMemberForAll(rhId, gInfo, listOf(mem.groupMemberId), true)
|
||||
},
|
||||
destructive = true,
|
||||
)
|
||||
}
|
||||
|
||||
fun blockForAllAlert(rhId: Long?, gInfo: GroupInfo, memberIds: List<Long>, onSuccess: () -> Unit = {}) {
|
||||
AlertManager.shared.showAlertDialog(
|
||||
title = generalGetString(MR.strings.block_members_for_all_question),
|
||||
text = generalGetString(MR.strings.block_members_desc),
|
||||
confirmText = generalGetString(MR.strings.block_for_all),
|
||||
onConfirm = {
|
||||
blockMemberForAll(rhId, gInfo, memberIds, true, onSuccess)
|
||||
},
|
||||
destructive = true,
|
||||
)
|
||||
@@ -805,14 +838,25 @@ fun unblockForAllAlert(rhId: Long?, gInfo: GroupInfo, mem: GroupMember) {
|
||||
text = generalGetString(MR.strings.unblock_member_desc).format(mem.chatViewName),
|
||||
confirmText = generalGetString(MR.strings.unblock_for_all),
|
||||
onConfirm = {
|
||||
blockMemberForAll(rhId, gInfo, mem, false)
|
||||
blockMemberForAll(rhId, gInfo, listOf(mem.groupMemberId), false)
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
fun blockMemberForAll(rhId: Long?, gInfo: GroupInfo, member: GroupMember, blocked: Boolean) {
|
||||
fun unblockForAllAlert(rhId: Long?, gInfo: GroupInfo, memberIds: List<Long>, onSuccess: () -> Unit = {}) {
|
||||
AlertManager.shared.showAlertDialog(
|
||||
title = generalGetString(MR.strings.unblock_members_for_all_question),
|
||||
text = generalGetString(MR.strings.unblock_members_desc),
|
||||
confirmText = generalGetString(MR.strings.unblock_for_all),
|
||||
onConfirm = {
|
||||
blockMemberForAll(rhId, gInfo, memberIds, false, onSuccess)
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
fun blockMemberForAll(rhId: Long?, gInfo: GroupInfo, memberIds: List<Long>, blocked: Boolean, onSuccess: () -> Unit = {}) {
|
||||
withBGApi {
|
||||
val updatedMembers = ChatController.apiBlockMembersForAll(rhId, gInfo.groupId, listOf(member.groupMemberId), blocked)
|
||||
val updatedMembers = ChatController.apiBlockMembersForAll(rhId, gInfo.groupId, memberIds, blocked)
|
||||
withChats {
|
||||
updatedMembers.forEach { updatedMember ->
|
||||
upsertGroupMember(rhId, gInfo, updatedMember)
|
||||
@@ -823,6 +867,7 @@ fun blockMemberForAll(rhId: Long?, gInfo: GroupInfo, member: GroupMember, blocke
|
||||
upsertGroupMember(rhId, gInfo, updatedMember)
|
||||
}
|
||||
}
|
||||
onSuccess()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+129
@@ -0,0 +1,129 @@
|
||||
package chat.simplex.common.views.chat.group
|
||||
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.material.*
|
||||
import androidx.compose.runtime.*
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.alpha
|
||||
import androidx.compose.ui.focus.FocusRequester
|
||||
import androidx.compose.ui.input.pointer.pointerInput
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.max
|
||||
import chat.simplex.common.model.*
|
||||
import chat.simplex.common.platform.chatModel
|
||||
import chat.simplex.common.ui.theme.WarningOrange
|
||||
import chat.simplex.common.views.chat.*
|
||||
import chat.simplex.common.views.helpers.*
|
||||
import chat.simplex.res.MR
|
||||
import dev.icerock.moko.resources.compose.painterResource
|
||||
|
||||
@Composable
|
||||
fun SelectedItemsMembersToolbar(
|
||||
selectedItems: MutableState<Set<Long>?>,
|
||||
activeMembers: State<List<GroupMember>>,
|
||||
groupInfo: GroupInfo,
|
||||
delete: () -> Unit,
|
||||
blockForAll: (Boolean) -> Unit, // Boolean - block or unlock
|
||||
changeRole: (GroupMemberRole) -> Unit,
|
||||
) {
|
||||
val deleteEnabled = remember { mutableStateOf(false) }
|
||||
val blockForAllEnabled = remember { mutableStateOf(false) }
|
||||
val unblockForAllEnabled = remember { mutableStateOf(false) }
|
||||
val blockForAllButtonEnabled = remember { derivedStateOf { (blockForAllEnabled.value && !unblockForAllEnabled.value) || (!blockForAllEnabled.value && unblockForAllEnabled.value) } }
|
||||
|
||||
val roleToMemberEnabled = remember { mutableStateOf(false) }
|
||||
val roleToObserverEnabled = remember { mutableStateOf(false) }
|
||||
val roleButtonEnabled = remember { derivedStateOf { (roleToMemberEnabled.value && !roleToObserverEnabled.value) || (!roleToMemberEnabled.value && roleToObserverEnabled.value) } }
|
||||
Box(
|
||||
Modifier
|
||||
.background(MaterialTheme.colors.background)
|
||||
.navigationBarsPadding()
|
||||
.imePadding()
|
||||
) {
|
||||
// It's hard to measure exact height of ComposeView with different fontSizes. Better to depend on actual ComposeView, even empty
|
||||
Box(Modifier.alpha(0f)) {
|
||||
ComposeView(chatModel = chatModel, Chat.sampleData, remember { mutableStateOf(ComposeState(useLinkPreviews = false)) }, remember { mutableStateOf(null) }, {}, remember { FocusRequester() })
|
||||
}
|
||||
Row(
|
||||
Modifier
|
||||
.matchParentSize()
|
||||
.padding(horizontal = 2.dp)
|
||||
.height(AppBarHeight * fontSizeSqrtMultiplier)
|
||||
.pointerInput(Unit) {
|
||||
detectGesture {
|
||||
true
|
||||
}
|
||||
},
|
||||
horizontalArrangement = Arrangement.SpaceBetween,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
IconButton(delete, enabled = deleteEnabled.value) {
|
||||
Icon(
|
||||
painterResource(MR.images.ic_delete),
|
||||
null,
|
||||
Modifier.size(22.dp),
|
||||
tint = if (!deleteEnabled.value) MaterialTheme.colors.secondary else MaterialTheme.colors.error
|
||||
)
|
||||
}
|
||||
|
||||
IconButton({ blockForAll(blockForAllEnabled.value) }, enabled = blockForAllButtonEnabled.value) {
|
||||
Icon(
|
||||
painterResource(if (unblockForAllEnabled.value && blockForAllButtonEnabled.value) MR.images.ic_do_not_touch else MR.images.ic_back_hand),
|
||||
null,
|
||||
Modifier.size(22.dp),
|
||||
tint = if (!blockForAllButtonEnabled.value) MaterialTheme.colors.secondary else if (blockForAllEnabled.value) MaterialTheme.colors.error else WarningOrange
|
||||
)
|
||||
}
|
||||
|
||||
IconButton({ changeRole(if (roleToMemberEnabled.value) GroupMemberRole.Member else GroupMemberRole.Observer) }, enabled = roleButtonEnabled.value) {
|
||||
Icon(
|
||||
painterResource(if (roleToObserverEnabled.value || !roleButtonEnabled.value) MR.images.ic_person else MR.images.ic_person_edit),
|
||||
null,
|
||||
Modifier.size(22.dp),
|
||||
tint = if (!roleButtonEnabled.value) MaterialTheme.colors.secondary else MaterialTheme.colors.primary
|
||||
)
|
||||
}
|
||||
}
|
||||
Divider(Modifier.align(Alignment.TopStart))
|
||||
}
|
||||
LaunchedEffect(groupInfo, activeMembers.value.toList(), selectedItems.value) {
|
||||
recheckItems(groupInfo, selectedItems, activeMembers.value, deleteEnabled, blockForAllEnabled, unblockForAllEnabled, roleToMemberEnabled, roleToObserverEnabled)
|
||||
}
|
||||
}
|
||||
|
||||
private fun recheckItems(
|
||||
groupInfo: GroupInfo,
|
||||
selectedItems: MutableState<Set<Long>?>,
|
||||
activeMembers: List<GroupMember>,
|
||||
deleteEnabled: MutableState<Boolean>,
|
||||
blockForAllEnabled: MutableState<Boolean>,
|
||||
unblockForAllEnabled: MutableState<Boolean>,
|
||||
roleToMemberEnabled: MutableState<Boolean>,
|
||||
roleToObserverEnabled: MutableState<Boolean>,
|
||||
) {
|
||||
val selected = selectedItems.value ?: return
|
||||
var rDeleteEnabled = true
|
||||
var rBlockForAllEnabled = true
|
||||
var rUnblockForAllEnabled = true
|
||||
var rRoleToMemberEnabled = true
|
||||
var rRoleToObserverEnabled = true
|
||||
val rSelectedItems = mutableSetOf<Long>()
|
||||
for (mem in activeMembers) {
|
||||
if (selected.contains(mem.groupMemberId) && groupInfo.membership.memberRole >= mem.memberRole && mem.memberRole < GroupMemberRole.Moderator && groupInfo.membership.memberActive) {
|
||||
rDeleteEnabled = rDeleteEnabled && mem.memberStatus != GroupMemberStatus.MemRemoved && mem.memberStatus != GroupMemberStatus.MemLeft
|
||||
rBlockForAllEnabled = rBlockForAllEnabled && !mem.blockedByAdmin
|
||||
rUnblockForAllEnabled = rUnblockForAllEnabled && mem.blockedByAdmin
|
||||
rRoleToMemberEnabled = rRoleToMemberEnabled && mem.memberRole != GroupMemberRole.Member
|
||||
rRoleToObserverEnabled = rRoleToObserverEnabled && mem.memberRole != GroupMemberRole.Observer
|
||||
rSelectedItems.add(mem.groupMemberId) // we are collecting new selected items here to account for any changes in members list
|
||||
}
|
||||
}
|
||||
deleteEnabled.value = rDeleteEnabled
|
||||
blockForAllEnabled.value = rBlockForAllEnabled
|
||||
unblockForAllEnabled.value = rUnblockForAllEnabled
|
||||
roleToMemberEnabled.value = rRoleToMemberEnabled
|
||||
roleToObserverEnabled.value = rRoleToObserverEnabled
|
||||
selectedItems.value = rSelectedItems
|
||||
}
|
||||
+1
@@ -21,6 +21,7 @@ import chat.simplex.res.MR
|
||||
|
||||
private val featureRoles: List<Pair<GroupMemberRole?, String>> = listOf(
|
||||
null to generalGetString(MR.strings.feature_roles_all_members),
|
||||
GroupMemberRole.Moderator to generalGetString(MR.strings.feature_roles_moderators),
|
||||
GroupMemberRole.Admin to generalGetString(MR.strings.feature_roles_admins),
|
||||
GroupMemberRole.Owner to generalGetString(MR.strings.feature_roles_owners)
|
||||
)
|
||||
|
||||
+56
-22
@@ -73,6 +73,7 @@ fun ChatItemView(
|
||||
linkMode: SimplexLinkMode,
|
||||
revealed: State<Boolean>,
|
||||
highlighted: State<Boolean>,
|
||||
hoveredItemId: MutableState<Long?>,
|
||||
range: State<IntRange?>,
|
||||
selectedChatItems: MutableState<Set<Long>?>,
|
||||
searchIsNotBlank: State<Boolean>,
|
||||
@@ -115,16 +116,8 @@ fun ChatItemView(
|
||||
val onLinkLongClick = { _: String -> showMenu.value = true }
|
||||
val live = remember { derivedStateOf { composeState.value.liveMessage != null } }.value
|
||||
|
||||
val bubbleInteractionSource = remember { MutableInteractionSource() }
|
||||
val lineInteractionSource = remember { MutableInteractionSource() }
|
||||
val bubblePressed = bubbleInteractionSource.collectIsPressedAsState()
|
||||
val linePressed = lineInteractionSource.collectIsPressedAsState()
|
||||
val lineHovered = lineInteractionSource.collectIsHoveredAsState()
|
||||
val lineActivated = remember { derivedStateOf { lineHovered.value || linePressed.value || bubblePressed.value } }
|
||||
Box(
|
||||
modifier = (if (fillMaxWidth) Modifier.fillMaxWidth() else Modifier)
|
||||
.hoverable(lineInteractionSource)
|
||||
.clickable(onClick = {}, interactionSource = lineInteractionSource, indication = null),
|
||||
modifier = (if (fillMaxWidth) Modifier.fillMaxWidth() else Modifier),
|
||||
contentAlignment = alignment,
|
||||
) {
|
||||
val info = cItem.meta.itemStatus.statusInto
|
||||
@@ -240,20 +233,42 @@ fun ChatItemView(
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun GoToItemInnerButton(alignStart: Boolean, icon: ImageResource, parentActivated: State<Boolean>, onClick: () -> Unit) {
|
||||
fun GoToItemInnerButton(alignStart: Boolean, icon: ImageResource, iconSize: Dp = 22.dp, parentActivated: State<Boolean>, onClick: () -> Unit) {
|
||||
val buttonInteractionSource = remember { MutableInteractionSource() }
|
||||
val buttonHovered = buttonInteractionSource.collectIsHoveredAsState()
|
||||
val buttonPressed = buttonInteractionSource.collectIsPressedAsState()
|
||||
val buttonActivated = remember { derivedStateOf { buttonHovered.value || buttonPressed.value } }
|
||||
|
||||
val fullyVisible = parentActivated.value || buttonActivated.value || hoveredItemId.value == cItem.id
|
||||
val mixAlpha = 0.6f
|
||||
val mixedBackgroundColor = if (fullyVisible) {
|
||||
if (MaterialTheme.colors.isLight) {
|
||||
MaterialTheme.colors.secondary.mixWith(Color.White, mixAlpha)
|
||||
} else {
|
||||
MaterialTheme.colors.secondary.mixWith(Color.Black, mixAlpha)
|
||||
}
|
||||
} else {
|
||||
Color.Unspecified
|
||||
}
|
||||
val iconTint = if (fullyVisible) {
|
||||
Color.White
|
||||
} else {
|
||||
if (MaterialTheme.colors.isLight) {
|
||||
MaterialTheme.colors.secondary.mixWith(Color.White, mixAlpha)
|
||||
} else {
|
||||
MaterialTheme.colors.secondary.mixWith(Color.Black, mixAlpha)
|
||||
}
|
||||
}
|
||||
|
||||
IconButton(
|
||||
onClick,
|
||||
Modifier
|
||||
.padding(start = if (alignStart) 0.dp else DEFAULT_PADDING_HALF + 3.dp, end = if (alignStart) DEFAULT_PADDING_HALF + 3.dp else 0.dp)
|
||||
.size(22.dp)
|
||||
.alpha(if (parentActivated.value || buttonActivated.value) 1f else 0.4f),
|
||||
.then(if (fullyVisible) Modifier.background(mixedBackgroundColor, CircleShape) else Modifier)
|
||||
.size(22.dp),
|
||||
interactionSource = buttonInteractionSource
|
||||
) {
|
||||
Icon(painterResource(icon), null, Modifier.size(22.dp), tint = MaterialTheme.colors.secondary)
|
||||
Icon(painterResource(icon), null, Modifier.size(iconSize), tint = iconTint)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -261,14 +276,14 @@ fun ChatItemView(
|
||||
fun GoToItemButton(alignStart: Boolean, parentActivated: State<Boolean>) {
|
||||
val chatTypeApiIdMsgId = cItem.meta.itemForwarded?.chatTypeApiIdMsgId
|
||||
if (searchIsNotBlank.value) {
|
||||
GoToItemInnerButton(alignStart, MR.images.ic_search, parentActivated) {
|
||||
GoToItemInnerButton(alignStart, MR.images.ic_search, 17.dp, parentActivated) {
|
||||
withBGApi {
|
||||
openChat(rhId, cInfo.chatType, cInfo.apiId, null, cItem.id)
|
||||
closeReportsIfNeeded()
|
||||
}
|
||||
}
|
||||
} else if (chatTypeApiIdMsgId != null) {
|
||||
GoToItemInnerButton(alignStart, MR.images.ic_arrow_forward, parentActivated) {
|
||||
GoToItemInnerButton(alignStart, MR.images.ic_arrow_forward, 22.dp, parentActivated) {
|
||||
val (chatType, apiId, msgId) = chatTypeApiIdMsgId
|
||||
withBGApi {
|
||||
openChat(rhId, chatType, apiId, null, msgId)
|
||||
@@ -280,13 +295,15 @@ fun ChatItemView(
|
||||
|
||||
Column(horizontalAlignment = if (cItem.chatDir.sent) Alignment.End else Alignment.Start) {
|
||||
Row(verticalAlignment = Alignment.CenterVertically) {
|
||||
val bubbleInteractionSource = remember { MutableInteractionSource() }
|
||||
val bubbleHovered = bubbleInteractionSource.collectIsHoveredAsState()
|
||||
if (cItem.chatDir.sent) {
|
||||
GoToItemButton(true, lineActivated)
|
||||
GoToItemButton(true, bubbleHovered)
|
||||
}
|
||||
Column(Modifier.weight(1f, fill = false)) {
|
||||
val enterInteraction = remember { HoverInteraction.Enter() }
|
||||
KeyChangeEffect(highlighted.value) {
|
||||
if (highlighted.value) {
|
||||
LaunchedEffect(highlighted.value, hoveredItemId.value) {
|
||||
if (highlighted.value || hoveredItemId.value == cItem.id) {
|
||||
bubbleInteractionSource.emit(enterInteraction)
|
||||
} else {
|
||||
bubbleInteractionSource.emit(HoverInteraction.Exit(enterInteraction))
|
||||
@@ -295,7 +312,15 @@ fun ChatItemView(
|
||||
Column(
|
||||
Modifier
|
||||
.clipChatItem(cItem, itemSeparation.largeGap, revealed.value)
|
||||
.combinedClickable(onLongClick = { showMenu.value = true }, onClick = onClick, interactionSource = bubbleInteractionSource, indication = LocalIndication.current)
|
||||
.hoverable(bubbleInteractionSource)
|
||||
.combinedClickable(
|
||||
onLongClick = { showMenu.value = true },
|
||||
onClick = {
|
||||
if (appPlatform.isAndroid && (searchIsNotBlank.value || cItem.meta.itemForwarded?.chatTypeApiIdMsgId != null)) {
|
||||
hoveredItemId.value = if (hoveredItemId.value == cItem.id) null else cItem.id
|
||||
}
|
||||
onClick()
|
||||
}, interactionSource = bubbleInteractionSource, indication = LocalIndication.current)
|
||||
.onRightClick { showMenu.value = true },
|
||||
) {
|
||||
@Composable
|
||||
@@ -615,6 +640,13 @@ fun ChatItemView(
|
||||
fun DeletedItem() {
|
||||
MarkedDeletedItemView(cItem, cInfo, cInfo.timedMessagesTTL, revealed, showViaProxy = showViaProxy, showTimestamp = showTimestamp)
|
||||
DefaultDropdownMenu(showMenu) {
|
||||
if (revealed.value) {
|
||||
HideItemAction(revealed, showMenu, reveal)
|
||||
} else if (!cItem.isDeletedContent) {
|
||||
RevealItemAction(revealed, showMenu, reveal)
|
||||
} else if (range.value != null) {
|
||||
ExpandItemAction(revealed, showMenu, reveal)
|
||||
}
|
||||
ItemInfoAction(cInfo, cItem, showItemDetails, showMenu)
|
||||
DeleteItemAction(cItem, revealed, showMenu, questionText = generalGetString(MR.strings.delete_message_cannot_be_undone_warning), deleteMessage, deleteMessages)
|
||||
if (cItem.canBeDeletedForSelf) {
|
||||
@@ -744,7 +776,7 @@ fun ChatItemView(
|
||||
}
|
||||
}
|
||||
if (!cItem.chatDir.sent) {
|
||||
GoToItemButton(false, lineActivated)
|
||||
GoToItemButton(false, bubbleHovered)
|
||||
}
|
||||
}
|
||||
if (cItem.content.msgContent != null && (cItem.meta.itemDeleted == null || revealed.value) && cItem.reactions.isNotEmpty()) {
|
||||
@@ -865,14 +897,14 @@ fun ModerateItemAction(
|
||||
@Composable
|
||||
fun SelectItemAction(
|
||||
showMenu: MutableState<Boolean>,
|
||||
selectChatItem: () -> Unit,
|
||||
selectItem: () -> Unit,
|
||||
) {
|
||||
ItemAction(
|
||||
stringResource(MR.strings.select_verb),
|
||||
painterResource(MR.images.ic_check_circle),
|
||||
onClick = {
|
||||
showMenu.value = false
|
||||
selectChatItem()
|
||||
selectItem()
|
||||
}
|
||||
)
|
||||
}
|
||||
@@ -1399,6 +1431,7 @@ fun PreviewChatItemView(
|
||||
composeState = remember { mutableStateOf(ComposeState(useLinkPreviews = true)) },
|
||||
revealed = remember { mutableStateOf(false) },
|
||||
highlighted = remember { mutableStateOf(false) },
|
||||
hoveredItemId = remember { mutableStateOf(null) },
|
||||
range = remember { mutableStateOf(0..1) },
|
||||
selectedChatItems = remember { mutableStateOf(setOf()) },
|
||||
searchIsNotBlank = remember { mutableStateOf(false) },
|
||||
@@ -1447,6 +1480,7 @@ fun PreviewChatItemViewDeletedContent() {
|
||||
composeState = remember { mutableStateOf(ComposeState(useLinkPreviews = true)) },
|
||||
revealed = remember { mutableStateOf(false) },
|
||||
highlighted = remember { mutableStateOf(false) },
|
||||
hoveredItemId = remember { mutableStateOf(null) },
|
||||
range = remember { mutableStateOf(0..1) },
|
||||
selectedChatItems = remember { mutableStateOf(setOf()) },
|
||||
searchIsNotBlank = remember { mutableStateOf(false) },
|
||||
|
||||
-1
@@ -148,7 +148,6 @@ fun ChatListView(chatModel: ChatModel, userPickerState: MutableStateFlow<Animate
|
||||
UsageConditionsView(
|
||||
userServers = mutableStateOf(emptyList()),
|
||||
currUserServers = mutableStateOf(emptyList()),
|
||||
updated = true,
|
||||
close = close,
|
||||
rhId = rhId
|
||||
)
|
||||
|
||||
+15
-8
@@ -32,6 +32,7 @@ fun ModalView(
|
||||
searchAlwaysVisible: Boolean = false,
|
||||
onSearchValueChanged: (String) -> Unit = {},
|
||||
endButtons: @Composable RowScope.() -> Unit = {},
|
||||
appBar: @Composable (BoxScope.() -> Unit)? = null,
|
||||
content: @Composable BoxScope.() -> Unit,
|
||||
) {
|
||||
if (showClose && showAppBar) {
|
||||
@@ -48,14 +49,20 @@ fun ModalView(
|
||||
StatusBarBackground()
|
||||
}
|
||||
Box(Modifier.align(if (oneHandUI.value) Alignment.BottomStart else Alignment.TopStart)) {
|
||||
DefaultAppBar(
|
||||
navigationButton = if (showClose) {{ NavigationButtonBack(onButtonClicked = if (enableClose) close else null) }} else null,
|
||||
onTop = !oneHandUI.value,
|
||||
showSearch = showSearch,
|
||||
searchAlwaysVisible = searchAlwaysVisible,
|
||||
onSearchValueChanged = onSearchValueChanged,
|
||||
buttons = endButtons
|
||||
)
|
||||
if (appBar != null) {
|
||||
appBar()
|
||||
} else {
|
||||
DefaultAppBar(
|
||||
navigationButton = if (showClose) {
|
||||
{ NavigationButtonBack(onButtonClicked = if (enableClose) close else null) }
|
||||
} else null,
|
||||
onTop = !oneHandUI.value,
|
||||
showSearch = showSearch,
|
||||
searchAlwaysVisible = searchAlwaysVisible,
|
||||
onSearchValueChanged = onSearchValueChanged,
|
||||
buttons = endButtons
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-7
@@ -91,13 +91,7 @@ fun ModalData.ChooseServerOperators(
|
||||
if (onboarding && reviewForOperators.isEmpty()) {
|
||||
TextButtonBelowOnboardingButton(stringResource(MR.strings.operator_conditions_of_use)) {
|
||||
modalManager.showModalCloseable(endButtons = { ConditionsLinkButton() }) { close ->
|
||||
UsageConditionsView(
|
||||
currUserServers = remember { mutableStateOf(emptyList()) },
|
||||
userServers = remember { mutableStateOf(emptyList()) },
|
||||
updated = false,
|
||||
close = close,
|
||||
rhId = null,
|
||||
)
|
||||
SimpleConditionsView(rhId = null)
|
||||
}
|
||||
}
|
||||
} else if (onboarding || reviewForOperators.isEmpty()) {
|
||||
|
||||
+1
-2
@@ -169,7 +169,6 @@ fun ModalData.WhatsNewView(updatedConditions: Boolean = false, viaSettings: Bool
|
||||
UsageConditionsView(
|
||||
userServers = mutableStateOf(emptyList()),
|
||||
currUserServers = mutableStateOf(emptyList()),
|
||||
updated = true,
|
||||
close = close,
|
||||
rhId = rhId
|
||||
)
|
||||
@@ -780,7 +779,7 @@ private val versionDescriptions: List<VersionDescription> = listOf(
|
||||
),
|
||||
VersionDescription(
|
||||
version = "v6.3",
|
||||
// post = "https://simplex.chat/blog/20241210-simplex-network-v6-2-servers-by-flux-business-chats.html",
|
||||
post = "https://simplex.chat/blog/20250308-simplex-chat-v6-3-new-user-experience-safety-in-public-groups.html",
|
||||
features = listOf(
|
||||
VersionFeature.FeatureDescription(
|
||||
icon = MR.images.ic_at,
|
||||
|
||||
+1
@@ -1096,6 +1096,7 @@ object AppearanceScope {
|
||||
"en" to "English",
|
||||
"ar" to "العربية",
|
||||
"bg" to "Български",
|
||||
"ca" to "Català",
|
||||
"cs" to "Čeština",
|
||||
"de" to "Deutsch",
|
||||
"es" to "Español",
|
||||
|
||||
+18
-9
@@ -188,7 +188,6 @@ fun ModalData.NetworkAndServersView(closeNetworkAndServers: () -> Unit) {
|
||||
UsageConditionsView(
|
||||
currUserServers,
|
||||
userServers,
|
||||
updated = conditionsAction is UsageConditionsAction.Review,
|
||||
close,
|
||||
rhId
|
||||
)
|
||||
@@ -712,7 +711,6 @@ private fun UnsavedChangesIndicator() {
|
||||
fun UsageConditionsView(
|
||||
currUserServers: MutableState<List<UserOperatorServers>>,
|
||||
userServers: MutableState<List<UserOperatorServers>>,
|
||||
updated: Boolean,
|
||||
close: () -> Unit,
|
||||
rhId: Long?
|
||||
) {
|
||||
@@ -773,17 +771,16 @@ fun UsageConditionsView(
|
||||
}
|
||||
|
||||
ColumnWithScrollBar(modifier = Modifier.fillMaxSize().padding(horizontal = DEFAULT_PADDING)) {
|
||||
val title = if (updated) MR.strings.operator_updated_conditions else MR.strings.operator_conditions_of_use
|
||||
AppBarTitle(stringResource(title), enableAlphaChanges = false, withPadding = false, bottomPadding = DEFAULT_PADDING)
|
||||
when (val conditionsAction = chatModel.conditions.value.conditionsAction) {
|
||||
is UsageConditionsAction.Review -> {
|
||||
AppBarTitle(stringResource(MR.strings.operator_updated_conditions), enableAlphaChanges = false, withPadding = false, bottomPadding = DEFAULT_PADDING)
|
||||
if (conditionsAction.operators.isNotEmpty()) {
|
||||
ReadableText(MR.strings.operators_conditions_will_be_accepted_for, args = conditionsAction.operators.joinToString(", ") { it.legalName_ })
|
||||
}
|
||||
Column(modifier = Modifier.weight(1f).padding(bottom = DEFAULT_PADDING, top = DEFAULT_PADDING_HALF)) {
|
||||
ConditionsTextView(rhId)
|
||||
}
|
||||
AcceptConditionsButton(conditionsAction.operators.map { it.operatorId }, close, if (conditionsAction.deadline != null || updated) DEFAULT_PADDING_HALF else DEFAULT_PADDING * 2)
|
||||
AcceptConditionsButton(conditionsAction.operators.map { it.operatorId }, close, DEFAULT_PADDING_HALF)
|
||||
if (conditionsAction.deadline != null) {
|
||||
SectionTextFooter(
|
||||
text = AnnotatedString(String.format(generalGetString(MR.strings.operator_conditions_accepted_for_enabled_operators_on), localDate(conditionsAction.deadline))),
|
||||
@@ -791,13 +788,12 @@ fun UsageConditionsView(
|
||||
)
|
||||
Spacer(Modifier.fillMaxWidth().height(DEFAULT_PADDING))
|
||||
}
|
||||
if (updated) {
|
||||
ConditionsDiffButton()
|
||||
Spacer(Modifier.fillMaxWidth().height(DEFAULT_PADDING))
|
||||
}
|
||||
ConditionsDiffButton()
|
||||
Spacer(Modifier.fillMaxWidth().height(DEFAULT_PADDING))
|
||||
}
|
||||
|
||||
is UsageConditionsAction.Accepted -> {
|
||||
AppBarTitle(stringResource(MR.strings.operator_conditions_of_use), enableAlphaChanges = false, withPadding = false, bottomPadding = DEFAULT_PADDING)
|
||||
if (conditionsAction.operators.isNotEmpty()) {
|
||||
ReadableText(MR.strings.operators_conditions_accepted_for, args = conditionsAction.operators.joinToString(", ") { it.legalName_ })
|
||||
}
|
||||
@@ -807,6 +803,7 @@ fun UsageConditionsView(
|
||||
}
|
||||
|
||||
else -> {
|
||||
AppBarTitle(stringResource(MR.strings.operator_conditions_of_use), enableAlphaChanges = false, withPadding = false, bottomPadding = DEFAULT_PADDING)
|
||||
Column(modifier = Modifier.weight(1f).padding(bottom = DEFAULT_PADDING, top = DEFAULT_PADDING_HALF)) {
|
||||
ConditionsTextView(rhId)
|
||||
}
|
||||
@@ -815,6 +812,18 @@ fun UsageConditionsView(
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun SimpleConditionsView(
|
||||
rhId: Long?
|
||||
) {
|
||||
ColumnWithScrollBar(modifier = Modifier.fillMaxSize().padding(horizontal = DEFAULT_PADDING)) {
|
||||
AppBarTitle(stringResource(MR.strings.operator_conditions_of_use), enableAlphaChanges = false, withPadding = false, bottomPadding = DEFAULT_PADDING)
|
||||
Column(modifier = Modifier.weight(1f).padding(bottom = DEFAULT_PADDING, top = DEFAULT_PADDING_HALF)) {
|
||||
ConditionsTextView(rhId)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun ServersErrorFooter(errStr: String) {
|
||||
Row(
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
<string name="allow_to_send_voice">السماح بإرسال رسائل صوتية.</string>
|
||||
<string name="settings_section_title_app">تطبيق</string>
|
||||
<string name="color_secondary_variant">ثانوي إضافي</string>
|
||||
<string name="allow_your_contacts_adding_message_reactions">السماح لجهات اتصالك بإضافة ردود الفعل الرسالة.</string>
|
||||
<string name="allow_your_contacts_adding_message_reactions">السماح لجهات اتصالك بإضافة ردود الفعل للرسالة.</string>
|
||||
<string name="allow_your_contacts_to_call">السماح لجهات اتصالك بالاتصال بك.</string>
|
||||
<string name="allow_message_reactions">السماح بردود الفعل على الرسائل.</string>
|
||||
<string name="v5_1_self_destruct_passcode_descr">يتم مسح جميع البيانات عند إدخالها.</string>
|
||||
@@ -68,7 +68,7 @@
|
||||
<string name="notifications_mode_off_desc">يمكن للتطبيق استلام الإشعارات فقط عند تشغيله، ولن يتم بدء تشغيل أي خدمة في الخلفية</string>
|
||||
<string name="allow_voice_messages_question">السماح بالرسائل الصوتية؟</string>
|
||||
<string name="all_your_contacts_will_remain_connected">ستبقى جميع جهات اتصالك متصلة.</string>
|
||||
<string name="always_use_relay">استخدم التتابع دائمًا</string>
|
||||
<string name="always_use_relay">استخدم الموجه دائمًا</string>
|
||||
<string name="full_backup">النسخ الاحتياطي لبيانات التطبيق</string>
|
||||
<string name="all_app_data_will_be_cleared">حُذفت جميع بيانات التطبيق.</string>
|
||||
<string name="allow_to_delete_messages">السماح بحذف الرسائل المرسلة بشكل لا رجعة فيه. (24 ساعة)</string>
|
||||
@@ -286,7 +286,7 @@
|
||||
<string name="connection_local_display_name">الاتصال %1$d</string>
|
||||
<string name="display_name_connection_established">انشأت الاتصال</string>
|
||||
<string name="callstatus_connecting">مكالمة جارية…</string>
|
||||
<string name="encrypt_database">عَمِّ</string>
|
||||
<string name="encrypt_database">تشفير</string>
|
||||
<string name="enter_passphrase">أدخل عبارة المرور…</string>
|
||||
<string name="group_member_status_creator">المنشئ</string>
|
||||
<string name="error_adding_members">خطأ في إضافة الأعضاء</string>
|
||||
@@ -1003,7 +1003,7 @@
|
||||
<string name="self_destruct_passcode_changed">تغيّرت رمز المرور للتدمير الذاتي!</string>
|
||||
<string name="self_destruct_passcode_enabled">فعّلت رمز المرور للتدمير الذاتي!</string>
|
||||
<string name="settings_section_title_settings">الإعدادات</string>
|
||||
<string name="simplex_link_invitation">دعوة لمرة واحدة SimpleX</string>
|
||||
<string name="simplex_link_invitation">دعوة SimpleX لمرة واحدة</string>
|
||||
<string name="notification_preview_mode_message_desc">عرض جهة الاتصال والرسالة</string>
|
||||
<string name="la_notice_title_simplex_lock">قفل SimpleX</string>
|
||||
<string name="is_not_verified">لم يتحقق من %s</string>
|
||||
@@ -1030,7 +1030,7 @@
|
||||
<string name="stop_chat_confirmation">إيقاف</string>
|
||||
<string name="settings_notification_preview_mode_title">عرض المعاينة</string>
|
||||
<string name="icon_descr_speaker_off">السماعة متوقفة</string>
|
||||
<string name="la_lock_mode">وضع قفل SimpleX</string>
|
||||
<string name="la_lock_mode">SimpleX وضع القفل</string>
|
||||
<string name="share_link">مشاركة الرابط</string>
|
||||
<string name="alert_title_skipped_messages">الرسائل التي تم تخطيها</string>
|
||||
<string name="simplex_address">عنوان SimpleX</string>
|
||||
@@ -1214,7 +1214,7 @@
|
||||
<string name="contact_wants_to_connect_with_you">يريد الاتصال بك!</string>
|
||||
<string name="your_ice_servers">خوادم ICE الخاصة بك</string>
|
||||
<string name="your_privacy">خصوصيتك</string>
|
||||
<string name="rcv_group_event_updated_group_profile">حدثت ملف تعريف المجموعة</string>
|
||||
<string name="rcv_group_event_updated_group_profile">حُدثت ملف تعريف المجموعة</string>
|
||||
<string name="group_info_member_you">أنت: %1$s</string>
|
||||
<string name="update_network_settings_confirmation">تحديث</string>
|
||||
<string name="update_network_settings_question">تحديث إعدادات الشبكة؟</string>
|
||||
@@ -1612,7 +1612,7 @@
|
||||
<string name="v5_6_safer_groups_descr">يمكن للمُدراء حظر عضو للجميع.</string>
|
||||
<string name="v5_6_app_data_migration">ترحيل بيانات التطبيق</string>
|
||||
<string name="migrate_from_device_archiving_database">جارِ أرشفة قاعدة البيانات</string>
|
||||
<string name="migrate_from_device_all_data_will_be_uploaded">سيتم تعمية جميع جهات الاتصال والمحادثات والملفات الخاصة بك بشكل آمن ورفعها في أجزاء إلى مُرحلات XFTP التي ضُبطت.</string>
|
||||
<string name="migrate_from_device_all_data_will_be_uploaded">جميع جهات الاتصال، المحادثات والملفات الخاصة بك سيتم تشفيرها بأمان ورفعها على شكل أجزاء إلى موجهات XFTP المُعدة.</string>
|
||||
<string name="migrate_to_device_apply_onion">طبّق</string>
|
||||
<string name="migrate_from_device_using_on_two_device_breaks_encryption"><![CDATA[<b>يُرجى ملاحظة</b>: استخدام نفس قاعدة البيانات على جهازين سيؤدي إلى كسر فك تعمية الرسائل من اتصالاتك، كحماية أمنية.]]></string>
|
||||
<string name="migrate_from_device_archive_will_be_deleted"><![CDATA[<b>تحذير</b>: سيتم حذف الأرشيف.]]></string>
|
||||
@@ -1735,7 +1735,7 @@
|
||||
<string name="v5_7_network">إدارة الشبكة</string>
|
||||
<string name="v5_7_network_descr">اتصال شبكة أكثر موثوقية.</string>
|
||||
<string name="settings_section_title_profile_images">صور ملف التعريف</string>
|
||||
<string name="v5_7_shape_profile_images">شكل الصور التعريفية</string>
|
||||
<string name="v5_7_shape_profile_images">شكّل الصور التعريفية</string>
|
||||
<string name="v5_7_new_interface_languages">واجهة المستخدم الليتوانية</string>
|
||||
<string name="v5_7_shape_profile_images_descr">مربع أو دائرة أو أي شيء بينهما.</string>
|
||||
<string name="srv_error_host">عنوان الخادم غير متوافق مع إعدادات الشبكة.</string>
|
||||
@@ -2119,7 +2119,7 @@
|
||||
<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_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>
|
||||
@@ -2282,7 +2282,6 @@
|
||||
<string name="report_reason_other">سبب آخر</string>
|
||||
<string name="chat_list_group_reports">البلاغات</string>
|
||||
<string name="group_reports_active_one">1 بلاغ</string>
|
||||
<string name="group_reports_archived_member_reports">بلاغات الأعضاء المؤرشفة</string>
|
||||
<string name="group_reports_active">%d بلاغات</string>
|
||||
<string name="group_reports_member_reports">بلاغات الأعضاء</string>
|
||||
<string name="report_compose_reason_header_illegal">بلّغ عن المحتوى: سيراه مشرفو المجموعة فقط.</string>
|
||||
@@ -2346,4 +2345,20 @@
|
||||
<string name="v6_3_better_groups_performance">أداء مجموعات أفضل</string>
|
||||
<string name="v6_3_better_privacy_and_security">خصوصية وأمان أفضل</string>
|
||||
<string name="v6_3_faster_sending_messages">إرسال أسرع للرسائل.</string>
|
||||
<string name="group_member_status_rejected">رُفض</string>
|
||||
<string name="group_preview_rejected">رُفض</string>
|
||||
<string name="error_reading_passphrase">خطأ في قراءة عبارة مرور قاعدة البيانات</string>
|
||||
<string name="group_member_status_pending_approval_short">ينتظر</string>
|
||||
<string name="operator_updated_conditions">حُدثت الشروط</string>
|
||||
<string name="button_remove_members_question">إزالة الأعضاء؟</string>
|
||||
<string name="block_members_desc">سيتم إخفاء جميع الرسائل الجديدة من هؤلاء الأعضاء!</string>
|
||||
<string name="members_will_be_removed_from_chat_cannot_be_undone">سيتم إزالة الأعضاء من الدردشة - لا يمكن التراجع عن هذا!</string>
|
||||
<string name="unblock_members_for_all_question">إلغاء حظر الأعضاء للجميع؟</string>
|
||||
<string name="block_members_for_all_question">حظر الأعضاء للجميع؟</string>
|
||||
<string name="unblock_members_desc">سيتم عرض رسائل من هؤلاء الأعضاء!</string>
|
||||
<string name="restore_passphrase_can_not_be_read_enter_manually_desc">لا يمكن قراءة عبارة المرور في Keystore، يُرجى إدخالها يدويًا. قد يكون هذا قد حدث بعد تحديث النظام غير متوافق مع التطبيق. إذا لم يكن الأمر كذلك، فيُرجى التواصل مع المطورين.</string>
|
||||
<string name="members_will_be_removed_from_group_cannot_be_undone">سيتم إزالة الأعضاء من المجموعة - لا يمكن التراجع عن هذا!</string>
|
||||
<string name="feature_roles_moderators">المشرفين</string>
|
||||
<string name="restore_passphrase_can_not_be_read_desc">لا يمكن قراءة عبارة المرور في Keystore. قد يكون هذا قد حدث بعد تحديث النظام غير متوافق مع التطبيق. إذا لم يكن الأمر كذلك، فيُرجى التواصل مع المطورين.</string>
|
||||
<string name="group_member_status_pending_approval">موافقة الانتظار</string>
|
||||
</resources>
|
||||
|
||||
@@ -460,7 +460,6 @@
|
||||
<string name="group_reports_active_one">1 report</string>
|
||||
<string name="group_reports_active">%d reports</string>
|
||||
<string name="group_reports_member_reports">Member reports</string>
|
||||
<string name="group_reports_archived_member_reports">Archived member reports</string>
|
||||
|
||||
<!-- ShareListView.kt -->
|
||||
<string name="share_message">Share message…</string>
|
||||
@@ -1738,25 +1737,32 @@
|
||||
|
||||
<!-- GroupMemberInfoView.kt -->
|
||||
<string name="button_remove_member_question">Remove member?</string>
|
||||
<string name="button_remove_members_question">Remove members?</string>
|
||||
<string name="button_remove_member">Remove member</string>
|
||||
|
||||
<string name="button_send_direct_message">Send direct message</string>
|
||||
<string name="member_will_be_removed_from_group_cannot_be_undone">Member will be removed from group - this cannot be undone!</string>
|
||||
<string name="members_will_be_removed_from_group_cannot_be_undone">Members will be removed from group - this cannot be undone!</string>
|
||||
<string name="member_will_be_removed_from_chat_cannot_be_undone">Member will be removed from chat - this cannot be undone!</string>
|
||||
<string name="members_will_be_removed_from_chat_cannot_be_undone">Members will be removed from chat - this cannot be undone!</string>
|
||||
<string name="remove_member_confirmation">Remove</string>
|
||||
<string name="remove_member_button">Remove member</string>
|
||||
<string name="block_member_question">Block member?</string>
|
||||
<string name="block_member_button">Block member</string>
|
||||
<string name="block_member_confirmation">Block</string>
|
||||
<string name="block_for_all_question">Block member for all?</string>
|
||||
<string name="block_members_for_all_question">Block members for all?</string>
|
||||
<string name="block_for_all">Block for all</string>
|
||||
<string name="block_member_desc">All new messages from %s will be hidden!</string>
|
||||
<string name="block_members_desc">All new messages from these members will be hidden!</string>
|
||||
<string name="unblock_member_question">Unblock member?</string>
|
||||
<string name="unblock_member_button">Unblock member</string>
|
||||
<string name="unblock_member_confirmation">Unblock</string>
|
||||
<string name="unblock_for_all_question">Unblock member for all?</string>
|
||||
<string name="unblock_members_for_all_question">Unblock members for all?</string>
|
||||
<string name="unblock_for_all">Unblock for all</string>
|
||||
<string name="unblock_member_desc">Messages from %s will be shown!</string>
|
||||
<string name="unblock_members_desc">Messages from these members will be shown!</string>
|
||||
<string name="member_blocked_by_admin">Blocked by admin</string>
|
||||
<string name="member_info_member_blocked">blocked</string>
|
||||
<string name="member_info_member_disabled">disabled</string>
|
||||
@@ -2122,6 +2128,7 @@
|
||||
<string name="feature_offered_item_with_param">offered %s: %2s</string>
|
||||
<string name="feature_cancelled_item">cancelled %s</string>
|
||||
<string name="feature_roles_all_members">all members</string>
|
||||
<string name="feature_roles_moderators">moderators</string>
|
||||
<string name="feature_roles_admins">admins</string>
|
||||
<string name="feature_roles_owners">owners</string>
|
||||
<string name="feature_enabled_for">Enabled for</string>
|
||||
|
||||
@@ -2269,7 +2269,6 @@
|
||||
<string name="file_error_blocked">El fitxer està blocat per l\'operador del servidor:\n%1$s.</string>
|
||||
<string name="report_reason_alert_title">Motiu de l\'informe?</string>
|
||||
<string name="group_reports_active_one">1 informe</string>
|
||||
<string name="group_reports_archived_member_reports">Informes de membres arxivats</string>
|
||||
<string name="group_reports_active">%d informes</string>
|
||||
<string name="group_reports_member_reports">Informes de membres</string>
|
||||
<string name="chat_list_group_reports">Informes</string>
|
||||
@@ -2323,4 +2322,6 @@
|
||||
<string name="v6_3_better_groups_performance">Millor rendiment dels grups</string>
|
||||
<string name="v6_3_faster_deletion_of_groups">Supressió més ràpida de grups.</string>
|
||||
<string name="v6_3_reports_descr">Ajudar els administradors a moderar els seus grups.</string>
|
||||
<string name="group_preview_rejected">rebutjat</string>
|
||||
<string name="group_member_status_rejected">rebutjat</string>
|
||||
</resources>
|
||||
|
||||
@@ -72,10 +72,10 @@
|
||||
<string name="only_you_can_delete_messages">Nevratně mazat zprávy můžete pouze vy (váš kontakt je může označit ke smazání). (24 hodin)</string>
|
||||
<string name="message_deletion_prohibited">Nevratné mazání zpráv je v tomto chatu zakázáno.</string>
|
||||
<string name="prohibit_direct_messages">Přímé zprávy členům zakázány.</string>
|
||||
<string name="ttl_sec">%d sec</string>
|
||||
<string name="ttl_sec">%d s</string>
|
||||
<string name="ttl_s">%ds</string>
|
||||
<string name="ttl_min">%d min</string>
|
||||
<string name="ttl_hour">%d hodinu</string>
|
||||
<string name="ttl_hour">%d hodina</string>
|
||||
<string name="feature_offered_item_with_param">nabízeno %s: %2s</string>
|
||||
<string name="v4_2_group_links">Odkazy na skupiny</string>
|
||||
<string name="v4_3_voice_messages">Hlasové zprávy</string>
|
||||
@@ -208,7 +208,7 @@
|
||||
<string name="connection_request_sent">Požadavek na připojení byl odeslán!</string>
|
||||
<string name="one_time_link">Jednorázová pozvánka</string>
|
||||
<string name="security_code">Bezpečnostní kód</string>
|
||||
<string name="is_verified">%s je ověřeno</string>
|
||||
<string name="is_verified">%s ověřen</string>
|
||||
<string name="chat_console">Chat konzole</string>
|
||||
<string name="smp_servers">SMP servery</string>
|
||||
<string name="smp_servers_preset_address">Přednastavená adresa serveru</string>
|
||||
@@ -243,7 +243,7 @@
|
||||
<string name="decentralized">Decentralizovaná</string>
|
||||
<string name="how_it_works">Jak to funguje</string>
|
||||
<string name="how_simplex_works">Jak funguje SimpleX</string>
|
||||
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages"><![CDATA[Pouze klientská zařízení ukládají uživatelské profily, kontakty, skupiny a zprávy odesílané pomocí <b>2 vrstvého koncového šifrování</b>.]]></string>
|
||||
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages">Pouze klientská zařízení ukládají uživatelské profily, kontakty, skupiny a zprávy.</string>
|
||||
<string name="onboarding_notifications_mode_title">Soukromé oznámení</string>
|
||||
<string name="onboarding_notifications_mode_periodic">Pravidelné</string>
|
||||
<string name="ignore">Ignorovat</string>
|
||||
@@ -320,7 +320,7 @@
|
||||
<string name="smp_server_test_secure_queue">Zabezpečit frontu</string>
|
||||
<string name="service_notifications">Okamžitá oznámení!</string>
|
||||
<string name="it_can_disabled_via_settings_notifications_still_shown"><![CDATA[<b>V nastavení ji lze vypnout</b> - oznámení se budou zobrazovat pokud aplikace běží.]]></string>
|
||||
<string name="turn_off_battery_optimization"><![CDATA[Pro použití, prosím <b>povolte pro SimpleX běh na pozadí</b> v dalším dialogu. Jinak budou oznámení vypnuta.]]></string>
|
||||
<string name="turn_off_battery_optimization"><![CDATA[<b>Povolte</b> v příštím dotazu okamžité přijímání notifikací.]]></string>
|
||||
<string name="periodic_notifications_desc">Aplikace pravidelně načítá nové zprávy - denně spotřebuje několik procent baterie. Aplikace nepoužívá push oznámení - data ze zařízení nejsou odesílána na servery.</string>
|
||||
<string name="enter_passphrase_notification_title">Je vyžadována přístupová fráze</string>
|
||||
<string name="enter_passphrase_notification_desc">Chcete-li dostávat oznámení, zadejte přístupovou frázi do databáze.</string>
|
||||
@@ -343,8 +343,8 @@
|
||||
<string name="callstatus_calling">volání…</string>
|
||||
<string name="callstate_connected">připojen</string>
|
||||
<string name="callstate_ended">ukončen</string>
|
||||
<string name="next_generation_of_private_messaging">Příští generace soukromé komunikace</string>
|
||||
<string name="people_can_connect_only_via_links_you_share">Lidé se s vámi mohou spojit pouze prostřednictvím odkazu, který sdílíte.</string>
|
||||
<string name="next_generation_of_private_messaging">Budoucnost soukromé komunikace</string>
|
||||
<string name="people_can_connect_only_via_links_you_share">Rozhodněte, kdo se může připojit.</string>
|
||||
<string name="integrity_msg_bad_hash">špatný kontrolní součet zprávy</string>
|
||||
<string name="chat_database_imported">Databáze chatu importována</string>
|
||||
<string name="new_passphrase">Nová přístupová fráze…</string>
|
||||
@@ -384,7 +384,7 @@
|
||||
<string name="delete_address">Smazat adresu</string>
|
||||
<string name="full_name__field">Celé jméno:</string>
|
||||
<string name="your_current_profile">Váš současný profil</string>
|
||||
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Pro zachování vašeho soukromí používá aplikace místo push oznámení <b>SimpleX službu na pozadí</b> - denně využije několik procent baterie.]]></string>
|
||||
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Pro zvýšení soukromí, <b>SimpleX běží na pozadí</b> místo používání oznámení.]]></string>
|
||||
<string name="periodic_notifications">Pravidelná oznámení</string>
|
||||
<string name="simplex_service_notification_title">SimpleX Chat služba</string>
|
||||
<string name="simplex_service_notification_text">Příjem zpráv…</string>
|
||||
@@ -468,7 +468,7 @@
|
||||
<string name="voice_messages">Hlasové zprávy</string>
|
||||
<string name="both_you_and_your_contacts_can_delete">Vy i váš kontakt můžete nevratně mazat odeslané zprávy. (24 hodin)</string>
|
||||
<string name="ttl_m">%dm</string>
|
||||
<string name="ttl_mth">%dmth</string>
|
||||
<string name="ttl_mth">%dm</string>
|
||||
<string name="ttl_hours">%d hodin</string>
|
||||
<string name="ttl_h">%dh</string>
|
||||
<string name="ttl_d">%dd</string>
|
||||
@@ -574,7 +574,7 @@
|
||||
<string name="to_connect_via_link_title">Připojení prostřednictvím odkazu</string>
|
||||
<string name="if_you_received_simplex_invitation_link_you_can_open_in_browser">Pokud jste dostali SimpleX Chat pozvánku, můžete ji otevřít v prohlížeči:</string>
|
||||
<string name="if_you_choose_to_reject_the_sender_will_not_be_notified">Pokud zvolíte odmítnutí, odesílatel NEBUDE upozorněn.</string>
|
||||
<string name="mobile_tap_open_in_mobile_app_then_tap_connect_in_app"><![CDATA[📱 telefon: <b>Otevřete v mobilní aplikaci</b>, potom klikněte na <b>Připojit</b>.]]></string>
|
||||
<string name="mobile_tap_open_in_mobile_app_then_tap_connect_in_app"><![CDATA[📱 telefon: <b>Otevřete v mobilní aplikaci</b>, potom v aplikaci klepněte na <b>Připojit</b>.]]></string>
|
||||
<string name="reject_contact_button">Odmítnout</string>
|
||||
<string name="clear_chat_button">Smazat chat</string>
|
||||
<string name="clear_chat_menu_action">Vyčistit</string>
|
||||
@@ -604,7 +604,7 @@
|
||||
<string name="paste_button">Vložit</string>
|
||||
<string name="this_string_is_not_a_connection_link">Tento řetězec není odkazem na připojení!</string>
|
||||
<string name="you_can_also_connect_by_clicking_the_link"><![CDATA[Můžete se také připojit kliknutím na odkaz. Pokud se otevře v prohlížeči, klikněte na tlačítko <b>Otevřít v mobilní aplikaci</b>.]]></string>
|
||||
<string name="is_not_verified">%s není ověřeno</string>
|
||||
<string name="is_not_verified">%s neověřen</string>
|
||||
<string name="how_to_use_simplex_chat">Návod k použití</string>
|
||||
<string name="markdown_help">Nápověda k markdown</string>
|
||||
<string name="smp_servers_save">Uložit servery</string>
|
||||
@@ -664,10 +664,10 @@
|
||||
<string name="privacy_redefined">Nové vymezení soukromí</string>
|
||||
<string name="first_platform_without_user_ids">Bez uživatelských identifikátorů</string>
|
||||
<string name="immune_to_spam_and_abuse">Odolná vůči spamu</string>
|
||||
<string name="to_protect_privacy_simplex_has_ids_for_queues">K ochraně soukromí, místo uživatelských ID užívaných všemi ostatními platformami, SimpleX používá identifikátory pro fronty zpráv, zvlášť pro každý z vašich kontaktů.</string>
|
||||
<string name="to_protect_privacy_simplex_has_ids_for_queues">K ochraně soukromí, SimpleX používá ID pro každý z vašich kontaktů.</string>
|
||||
<string name="read_more_in_github_with_link"><![CDATA[Další informace najdete v našem <font color="#0088ff">úložišti GitHub</font>.]]></string>
|
||||
<string name="use_chat">Použijte chat</string>
|
||||
<string name="onboarding_notifications_mode_subtitle">Lze změnit později v nastavení.</string>
|
||||
<string name="onboarding_notifications_mode_subtitle">Jak ovlivňuje baterii</string>
|
||||
<string name="onboarding_notifications_mode_off">Když aplikace běží</string>
|
||||
<string name="onboarding_notifications_mode_service">Okamžité</string>
|
||||
<string name="onboarding_notifications_mode_off_desc"><![CDATA[<b>Nejlepší pro baterii</b>. Budete přijímat oznámení pouze když aplikace běží (žádná služba na pozadí).]]></string>
|
||||
@@ -678,7 +678,7 @@
|
||||
<string name="incoming_audio_call">Příchozí zvukový hovor</string>
|
||||
<string name="contact_wants_to_connect_via_call">%1$s se s vámi chce spojit prostřednictvím</string>
|
||||
<string name="video_call_no_encryption">videohovoru (nešifrovaného e2e).</string>
|
||||
<string name="audio_call_no_encryption">zvukový hovor (nešifrováno e2e)</string>
|
||||
<string name="audio_call_no_encryption">zvukový hovor (nešifrován e2e)</string>
|
||||
<string name="reject">Odmítnout</string>
|
||||
<string name="your_calls">Vaše hovory</string>
|
||||
<string name="always_use_relay">Spojení přes relé</string>
|
||||
@@ -730,9 +730,9 @@
|
||||
<string name="delete_files_and_media_all">Odstranit všechny soubory</string>
|
||||
<string name="delete_files_and_media_desc">Tuto akci nelze vrátit zpět - všechny přijaté a odeslané soubory a média budou smazány. Obrázky s nízkým rozlišením zůstanou zachovány.</string>
|
||||
<string name="no_received_app_files">Žádné přijaté ani odeslané soubory</string>
|
||||
<string name="total_files_count_and_size">%d soubor(ů) s celkovou velikostí %s</string>
|
||||
<string name="total_files_count_and_size">%d soubor(y) s celkovou velikostí %s</string>
|
||||
<string name="chat_item_ttl_none">nikdy</string>
|
||||
<string name="chat_item_ttl_seconds">%s vteřin(y)</string>
|
||||
<string name="chat_item_ttl_seconds">%s sekund(y)</string>
|
||||
<string name="messages_section_title">Zprávy</string>
|
||||
<string name="messages_section_description">Toto nastavení se vztahuje na zprávy ve vašem aktuálním chat profilu.</string>
|
||||
<string name="delete_messages_after">Smazat zprávy po</string>
|
||||
@@ -766,7 +766,7 @@
|
||||
<string name="restore_database_alert_title">Obnovit zálohu databáze\?</string>
|
||||
<string name="restore_database_alert_confirm">Obnovit</string>
|
||||
<string name="database_restore_error">Chyba při obnovování databáze</string>
|
||||
<string name="restore_passphrase_not_found_desc">Přístupová fráze nebyla v klíčence nalezena, zadejte jej prosím ručně. K této situaci mohlo dojít, pokud jste obnovili data aplikace pomocí zálohovacího nástroje. Pokud tomu tak není, obraťte se na vývojáře.</string>
|
||||
<string name="restore_passphrase_not_found_desc">Přístupová fráze nebyla v klíčence nalezena, zadejte ji prosím ručně. K této situaci mohlo dojít, pokud jste obnovili data aplikace pomocí zálohovacího nástroje. Pokud tomu tak není, kontaktujte prosím vývojáře.</string>
|
||||
<string name="you_can_start_chat_via_setting_or_by_restarting_the_app">Chat můžete spustit v Nastavení / Databáze nebo restartováním aplikace.</string>
|
||||
<string name="group_invitation_item_description">pozvánka do skupiny %1$s</string>
|
||||
<string name="you_are_invited_to_group_join_to_connect_with_group_members">Jste zváni do skupiny. Připojte se k členům skupiny.</string>
|
||||
@@ -893,22 +893,22 @@
|
||||
<string name="prohibit_sending_disappearing">Posílání mizících zpráv zakázáno.</string>
|
||||
<string name="prohibit_message_deletion">Nevratné mazání odeslaných zpráv zakázáno.</string>
|
||||
<string name="prohibit_sending_voice">Hlasové zprávy zakázány.</string>
|
||||
<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="group_members_can_send_disappearing">Členové mohou posílat mizící zprávy.</string>
|
||||
<string name="disappearing_messages_are_prohibited">Mizící zprávy jsou zakázány.</string>
|
||||
<string name="group_members_can_send_dms">Členové mohou posílat přímé zprávy.</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>
|
||||
<string name="voice_messages_are_prohibited">Hlasové zprávy jsou v této skupině zakázány.</string>
|
||||
<string name="group_members_can_delete">Členové mohou nevratně mazat odeslané zprávy. (24 hodin)</string>
|
||||
<string name="message_deletion_prohibited_in_chat">Nevratné mazání zpráv je zakázáno.</string>
|
||||
<string name="group_members_can_send_voice">Členové mohou posílat hlasové zprávy.</string>
|
||||
<string name="voice_messages_are_prohibited">Hlasové zprávy jsou zakázány.</string>
|
||||
<string name="delete_after">Smazat za</string>
|
||||
<string name="ttl_month">%d měsíc</string>
|
||||
<string name="ttl_months">%d měsíců</string>
|
||||
<string name="ttl_day">%d den</string>
|
||||
<string name="ttl_days">%d dnů</string>
|
||||
<string name="ttl_days">%d dní</string>
|
||||
<string name="ttl_week">%d týden</string>
|
||||
<string name="ttl_weeks">%d týdnů</string>
|
||||
<string name="ttl_w">%dw</string>
|
||||
<string name="ttl_w">%dt</string>
|
||||
<string name="feature_offered_item">nabízeno %s</string>
|
||||
<string name="feature_cancelled_item">zrušeno %s</string>
|
||||
<string name="whats_new">Co je nového</string>
|
||||
@@ -1038,7 +1038,7 @@
|
||||
<string name="la_no_app_password">Bez hesla aplikace</string>
|
||||
<string name="la_could_not_be_verified">Nemohli jste být ověřeni; Zkuste to prosím znovu.</string>
|
||||
<string name="la_minutes">%d minut</string>
|
||||
<string name="la_seconds">%d vteřin</string>
|
||||
<string name="la_seconds">%d sekund</string>
|
||||
<string name="la_immediately">Ihned</string>
|
||||
<string name="la_please_remember_to_store_password">Zapamatujte si jej nebo bezpečně uložte - neexistuje způsob, jak obnovit ztracené heslo!</string>
|
||||
<string name="lock_not_enabled">Zámek SimpleX není povolen!</string>
|
||||
@@ -1063,7 +1063,7 @@
|
||||
<string name="decryption_error">Chyba dešifrování</string>
|
||||
<string name="alert_title_msg_bad_hash">Špatný hash zprávy</string>
|
||||
<string name="alert_title_msg_bad_id">Špatné ID zprávy</string>
|
||||
<string name="alert_text_msg_bad_hash">Hash předchozí zprávy se liší.</string>
|
||||
<string name="alert_text_msg_bad_hash">Kontrolní součet předchozí zprávy se liší.</string>
|
||||
<string name="alert_text_msg_bad_id">ID další zprávy je nesprávné (menší nebo rovno předchozí).
|
||||
\nMůže se to stát kvůli nějaké chybě, nebo pokud je spojení kompromitováno.</string>
|
||||
<string name="alert_text_decryption_error_n_messages_failed_to_decrypt">%1$d zpráv se nepodařilo dešifrovat.</string>
|
||||
@@ -1114,7 +1114,7 @@
|
||||
<string name="error_loading_details">Chyba načítání podrobností</string>
|
||||
<string name="info_menu">Info</string>
|
||||
<string name="search_verb">Hledat</string>
|
||||
<string name="auth_open_chat_profiles">Otevřít chat profily</string>
|
||||
<string name="auth_open_chat_profiles">Změnit chat profily</string>
|
||||
<string name="edit_history">Historie</string>
|
||||
<string name="received_message">Přijatá zpráva</string>
|
||||
<string name="sent_message">Poslaná zpráva</string>
|
||||
@@ -1141,7 +1141,7 @@
|
||||
<string name="share_text_sent_at">Posláno: %s</string>
|
||||
<string name="share_text_disappears_at">Zmizí: %s</string>
|
||||
<string name="share_text_moderated_at">Upraveno: %s</string>
|
||||
<string name="current_version_timestamp">%s (aktuální)</string>
|
||||
<string name="current_version_timestamp">%s (aktuálně)</string>
|
||||
<string name="dark_theme">Tmavý motiv</string>
|
||||
<string name="import_theme">Import motivu</string>
|
||||
<string name="theme_simplex">SimpleX</string>
|
||||
@@ -1154,8 +1154,8 @@
|
||||
<string name="message_reactions_prohibited_in_this_chat">Reakce na zprávy jsou v tomto chatu zakázány.</string>
|
||||
<string name="prohibit_message_reactions">Zakázat reakce na zprávy.</string>
|
||||
<string name="prohibit_message_reactions_group">Zakázat reakce na zprávy.</string>
|
||||
<string name="group_members_can_add_message_reactions">Členové skupin mohou přidávat reakce na zprávy.</string>
|
||||
<string name="message_reactions_are_prohibited">Reakce na zprávy jsou v této skupině zakázány.</string>
|
||||
<string name="group_members_can_add_message_reactions">Členové mohou přidávat reakce na zprávy.</string>
|
||||
<string name="message_reactions_are_prohibited">Reakce na zprávy jsou zakázány.</string>
|
||||
<string name="custom_time_unit_months">měsíců</string>
|
||||
<string name="learn_more">Zjistit více</string>
|
||||
<string name="share_with_contacts">Sdílet s kontakty</string>
|
||||
@@ -1192,9 +1192,7 @@
|
||||
<string name="custom_time_unit_minutes">minut</string>
|
||||
<string name="custom_time_unit_seconds">vteřin</string>
|
||||
<string name="whats_new_thanks_to_users_contribute_weblate">Díky uživatelům - překládejte prostřednictvím Weblate!</string>
|
||||
<string name="v5_1_better_messages_descr">- 5 minutové hlasové zprávy.
|
||||
\n- vlastní čas mizení.
|
||||
\n- historie úprav.</string>
|
||||
<string name="v5_1_better_messages_descr">- 5 minutové hlasové zprávy.\n- volitelný čas mizení zpráv.\n- historie úprav.</string>
|
||||
<string name="custom_time_unit_days">dní</string>
|
||||
<string name="custom_time_unit_hours">hodin</string>
|
||||
<string name="custom_time_unit_weeks">týdnů</string>
|
||||
@@ -1228,7 +1226,7 @@
|
||||
<string name="you_wont_lose_your_contacts_if_delete_address">Pokud později adresu odstraníte, o kontakty nepřijdete.</string>
|
||||
<string name="app_passcode_replaced_with_self_destruct">Přístupový kód aplikace je nahrazen sebedestrukčním přístupovým heslem.</string>
|
||||
<string name="item_info_no_text">žádný text</string>
|
||||
<string name="non_fatal_errors_occured_during_import">Během importu došlo k nezávažným chybám - podrobnosti naleznete v chat konzoli.</string>
|
||||
<string name="non_fatal_errors_occured_during_import">Během importu došlo k nezávažným chybám:</string>
|
||||
<string name="shutdown_alert_question">Vypnout\?</string>
|
||||
<string name="shutdown_alert_desc">Oznámení přestanou fungovat až do nového spuštění aplikace</string>
|
||||
<string name="settings_shutdown">Vypnout</string>
|
||||
@@ -1246,9 +1244,7 @@
|
||||
<string name="fix_connection_not_supported_by_group_member">Opravit nepodporované členem skupiny</string>
|
||||
<string name="fix_connection_not_supported_by_contact">Opravit nepodporované kontaktem</string>
|
||||
<string name="v5_2_fix_encryption">Zachovat vaše připojení</string>
|
||||
<string name="v5_2_more_things_descr">- více stabilní doručovaní zpráv.
|
||||
\n- o trochu lepší skupiny.
|
||||
\n- a více!</string>
|
||||
<string name="v5_2_more_things_descr">- stabilnější doručování zpráv.\n- trochu lepší skupiny.\n- a více!</string>
|
||||
<string name="snd_conn_event_ratchet_sync_agreed">šifrování povoleno pro %s</string>
|
||||
<string name="snd_conn_event_ratchet_sync_required">vyžadováno opětovné vyjednávání šifrování pro %s</string>
|
||||
<string name="receipts_contacts_override_disabled">Odesílání potvrzení o doručení je vypnuto pro %d kontakty.</string>
|
||||
@@ -1267,9 +1263,9 @@
|
||||
<string name="unfavorite_chat">Odoblíbit</string>
|
||||
<string name="abort_switch_receiving_address">Přerušit změnu adresy</string>
|
||||
<string name="allow_to_send_files">Povolit odesílání souborů a médii.</string>
|
||||
<string name="group_members_can_send_files">Členové skupiny mohou posílat soubory a média.</string>
|
||||
<string name="group_members_can_send_files">Členové mohou posílat soubory a média.</string>
|
||||
<string name="only_owners_can_enable_files_and_media">Pouze majitelé skupiny mohou povolit soubory a média.</string>
|
||||
<string name="files_are_prohibited_in_group">Soubory a média jsou zakázány v této skupině.</string>
|
||||
<string name="files_are_prohibited_in_group">Soubory a média jsou zakázány.</string>
|
||||
<string name="receipts_contacts_disable_keep_overrides">Vypnout (zachovat přepsání)</string>
|
||||
<string name="receipts_contacts_enable_for_all">Povolit pro všechny</string>
|
||||
<string name="receipts_contacts_enable_keep_overrides">Povolit (zachovat přepisování)</string>
|
||||
@@ -1345,7 +1341,7 @@
|
||||
<string name="recipient_colon_delivery_status">%s: %s</string>
|
||||
<string name="rcv_group_event_2_members_connected">%s a %s připojen</string>
|
||||
<string name="rcv_group_event_3_members_connected">%s, %s a %s připojen</string>
|
||||
<string name="rcv_group_event_n_members_connected">%s, %s a %d další členové připojeni</string>
|
||||
<string name="rcv_group_event_n_members_connected">%s, %s a %d jiných členů připojeno</string>
|
||||
<string name="privacy_message_draft">Rozepsáno</string>
|
||||
<string name="privacy_show_last_messages">Zobrazit poslední zprávy</string>
|
||||
<string name="send_receipts_disabled_alert_msg">Tato skupina má více než %1$d členů, doručenky nejsou odeslány.</string>
|
||||
@@ -1390,7 +1386,7 @@
|
||||
<string name="desktop_address">Adresa počítače</string>
|
||||
<string name="connect_plan_join_your_group">Připojit se do skupiny?</string>
|
||||
<string name="connect_plan_group_already_exists">Skupina již existuje!</string>
|
||||
<string name="rcv_group_event_1_member_connected">%s připojený</string>
|
||||
<string name="rcv_group_event_1_member_connected">%s připojen</string>
|
||||
<string name="this_device">Toto zařízení</string>
|
||||
<string name="desktop_device">Počítač</string>
|
||||
<string name="this_device_name">Jméno tohoto zařízení</string>
|
||||
@@ -1429,8 +1425,8 @@
|
||||
<string name="connect_plan_you_are_already_joining_the_group_vName"><![CDATA[Již se připojujete ke skupině <b>%1$s</b>.]]></string>
|
||||
<string name="v5_4_link_mobile_desktop">Propojit mobilní a stolní aplikace! 🔗</string>
|
||||
<string name="connect_plan_this_is_your_own_one_time_link">To je váš vlastní jednorázový odkaz!</string>
|
||||
<string name="marked_deleted_items_description">%d zpráv označeno jako smazaná</string>
|
||||
<string name="v5_4_link_mobile_desktop_descr">Prostřednictvím zabezpečeného kvant rezistentního protokolu.</string>
|
||||
<string name="marked_deleted_items_description">%d zpráv označeno jako smazané</string>
|
||||
<string name="v5_4_link_mobile_desktop_descr">Díky kvantům odolnému protokolu zabezpečení.</string>
|
||||
<string name="open_on_mobile_and_scan_qr_code"><![CDATA[Otevřete <i>Použijte z PC</i> v aplikaci telefonu a naskenujte QR kód.]]></string>
|
||||
<string name="connect_plan_already_connecting">Již připojuji!</string>
|
||||
<string name="v5_4_block_group_members_descr">Skrýt nežádoucí zprávy.</string>
|
||||
@@ -1472,7 +1468,7 @@
|
||||
<string name="connect_with_contact_name_question">Připojit s %1$s?</string>
|
||||
<string name="block_member_confirmation">Blokovat</string>
|
||||
<string name="unblock_member_question">Odblokovat člena?</string>
|
||||
<string name="blocked_items_description">%d zpráv zablokováno</string>
|
||||
<string name="blocked_items_description">%d zpráv blokováno</string>
|
||||
<string name="open_port_in_firewall_desc">Chcete-li povolit telefonu připojení k PC, otevřete tento port ve vašem firewallu, pokud je povolen</string>
|
||||
<string name="block_member_button">Blokovat člena</string>
|
||||
<string name="settings_section_title_use_from_desktop">Použít z PC</string>
|
||||
@@ -1489,18 +1485,16 @@
|
||||
<string name="verify_code_on_mobile">Ověřit kód v telefonu</string>
|
||||
<string name="open_port_in_firewall_title">Otevřít port ve firewallu</string>
|
||||
<string name="enter_this_device_name">Zadejte jméno tohoto zařízení…</string>
|
||||
<string name="non_content_uri_alert_text">Sdílíte neplatnou cestu souboru. Nahlaste problém vývojářům aplikace.</string>
|
||||
<string name="non_content_uri_alert_text">Sdíleli jste neplatnou cestu souboru. Nahlaste problém vývojářům aplikace.</string>
|
||||
<string name="disconnect_remote_hosts">Odpojit mobilní telefony</string>
|
||||
<string name="block_member_question">Blokovat člena?</string>
|
||||
<string name="rcv_group_events_count">%d skupinových událostí</string>
|
||||
<string name="rcv_group_events_count">%d událostí skupiny</string>
|
||||
<string name="connect_plan_this_is_your_link_for_group_vName"><![CDATA[To je váš odkaz pro skupinu <b>%1$s</b>!]]></string>
|
||||
<string name="verify_code_with_desktop">Ověřit kód s PC</string>
|
||||
<string name="scan_qr_code_from_desktop">Skenovat QR kód z PC</string>
|
||||
<string name="unblock_member_confirmation">Odblokovat</string>
|
||||
<string name="multicast_discoverable_via_local_network">Objevitelný přes lokální síť</string>
|
||||
<string name="v5_4_more_things_descr">- volitelně oznámení odstraněným kontaktům.
|
||||
\n- profilová jména s mezeramy.
|
||||
\n- a více!</string>
|
||||
<string name="v5_4_more_things_descr">- volitelné oznámení odstraněným kontaktům.\n- profilová jména s mezeramy.\n- a více!</string>
|
||||
<string name="non_content_uri_alert_title">Neplatná cesta souboru</string>
|
||||
<string name="connect_plan_you_have_already_requested_connection_via_this_address">Již jste požádali o spojení přes tuto adresu!</string>
|
||||
<string name="terminal_always_visible">Zobrazit konzoli v novém okně</string>
|
||||
@@ -1543,7 +1537,7 @@
|
||||
<string name="possible_slow_function_desc">Provedení funkce trvá příliš dlouho: %1$d vteřin: %2$s</string>
|
||||
<string name="v5_5_join_group_conversation">Připojit se ke skupině</string>
|
||||
<string name="blocked_by_admin_item_description">blokováno adminem</string>
|
||||
<string name="blocked_by_admin_items_description">%d zpráv zablokováno správcem</string>
|
||||
<string name="blocked_by_admin_items_description">%d zpráv blokováno správcem</string>
|
||||
<string name="error_creating_message">Chyba vytváření zprávy</string>
|
||||
<string name="error_deleting_note_folder">Chyba odstranění soukromých poznámek</string>
|
||||
<string name="clear_note_folder_question">Smazat soukromé poznámky?</string>
|
||||
@@ -1735,7 +1729,7 @@
|
||||
<string name="network_option_rcv_concurrency">Souběžné přijímání</string>
|
||||
<string name="simplex_links">SimpleX odkazy</string>
|
||||
<string name="feature_enabled_for">Povoleno pro</string>
|
||||
<string name="group_members_can_send_simplex_links">Členové skupiny mohou odesílat SimpleX odkazy.</string>
|
||||
<string name="group_members_can_send_simplex_links">Členové mohou odesílat SimpleX odkazy.</string>
|
||||
<string name="v5_7_call_sounds">Zvuky v hovoru</string>
|
||||
<string name="v5_7_forward_descr">Zdroje zpráv zůstávají důvěrné.</string>
|
||||
<string name="v5_7_network">Správa sítě</string>
|
||||
@@ -1751,7 +1745,7 @@
|
||||
<string name="v5_6_quantum_resistant_encryption">Kvantům odolné šifrování</string>
|
||||
<string name="permissions_camera">Kamera</string>
|
||||
<string name="permissions_camera_and_record_audio">Kamera a mikrofon</string>
|
||||
<string name="simplex_links_are_prohibited_in_group">SimpleX odkazy jsou v této skupině zakázány.</string>
|
||||
<string name="simplex_links_are_prohibited_in_group">SimpleX odkazy jsou zakázány.</string>
|
||||
<string name="e2ee_info_no_pq"><![CDATA[Zprávy, soubory a hovory jsou chráněny <b>koncovým</b> šifrováním s dokonalým dopředným utajením, odmítnutím a obnovením po vloupání.]]></string>
|
||||
<string name="wallpaper_advanced_settings">Pokročilé nastavení</string>
|
||||
<string name="chat_theme_apply_to_all_modes">Všechny barevné režimy</string>
|
||||
@@ -1860,7 +1854,7 @@
|
||||
<string name="smp_servers_configured">Nastavené SMP servery</string>
|
||||
<string name="servers_info_subscriptions_connections_pending">Probíhá</string>
|
||||
<string name="chunks_uploaded">Části nahrány</string>
|
||||
<string name="n_file_errors">%1$d chyba souboru(ů):\n%2$s</string>
|
||||
<string name="n_file_errors">%1$d chyba souboru:\n%2$s</string>
|
||||
<string name="n_other_file_errors">%1$d jiná chyba souboru(ů).</string>
|
||||
<string name="error_forwarding_messages">Chyba přeposílaní zpráv</string>
|
||||
<string name="srv_error_host">Adresa serveru není kompatibilní s nastavením sítě.</string>
|
||||
@@ -1940,7 +1934,7 @@
|
||||
<string name="network_session_mode_server_description">Nové přihlašovací údaje SOCKS budou použity pro každý server.</string>
|
||||
<string name="servers_info_reconnect_servers_message">Znovu připojte všechny připojené servery pro vynucení doručení. Využívá další provoz.</string>
|
||||
<string name="reset_all_hints">Resetovat všechny tipy</string>
|
||||
<string name="forward_files_in_progress_desc">%1$d soubor(y) stále stahuji.</string>
|
||||
<string name="forward_files_in_progress_desc">%1$d soubor(y) se stále stahují.</string>
|
||||
<string name="v6_1_message_dates_descr">Lepší datování zpráv.</string>
|
||||
<string name="v6_1_better_security">Lepší zabezpečení ✅</string>
|
||||
<string name="chunks_deleted">Části odstraněny</string>
|
||||
@@ -2014,7 +2008,7 @@
|
||||
<string name="servers_info_detailed_statistics_sent_messages_header">Odeslané zprávy</string>
|
||||
<string name="servers_info_detailed_statistics_sent_messages_total">Odeslaných celkem</string>
|
||||
<string name="server_address">Adresa serveru</string>
|
||||
<string name="one_hand_ui">Dosažitelný panel nástrojů chatu</string>
|
||||
<string name="one_hand_ui">Dosažitelné panely nástrojů</string>
|
||||
<string name="acknowledgement_errors">Chyba potvrzení</string>
|
||||
<string name="connections">Připojení</string>
|
||||
<string name="created">Vytvořen</string>
|
||||
@@ -2050,7 +2044,7 @@
|
||||
<string name="no_media_servers_configured_for_sending">Žádné servery pro odesílání souborů.</string>
|
||||
<string name="onboarding_network_operators_continue">Pokračovat</string>
|
||||
<string name="operator_open_changes">Otevřít změny</string>
|
||||
<string name="no_chats_found">Žádné chaty nebyly nalezeny</string>
|
||||
<string name="no_chats_found">Nenalezen žádný chat</string>
|
||||
<string name="report_item_archived_by">archivovaná hlášení podle %s</string>
|
||||
<string name="display_name_accepted_invitation">přijmuté pozvání</string>
|
||||
<string name="report_reason_community">Porušení pokynů komunity</string>
|
||||
@@ -2060,7 +2054,7 @@
|
||||
<string name="report_reason_profile">Nevhodný profil</string>
|
||||
<string name="for_chat_profile">Pro profil chatu %s:</string>
|
||||
<string name="no_message_servers_configured">Žádné chatovací servery.</string>
|
||||
<string name="no_message_servers_configured_for_private_routing">Žádné servery pro soukromé směřování chatů.</string>
|
||||
<string name="no_message_servers_configured_for_private_routing">Žádné servery pro soukromé směrování chatů.</string>
|
||||
<string name="no_media_servers_configured_for_private_routing">Žádné servery pro příjem souborů.</string>
|
||||
<string name="no_message_servers_configured_for_receiving">Žádné servery pro příjem zpráv.</string>
|
||||
<string name="delete_chat_list_warning">Všechny chaty budou ze seznamu odebrány %s, a seznam bude smazán</string>
|
||||
@@ -2161,7 +2155,7 @@
|
||||
<string name="report_archive_alert_title_nth">Archivovat %d hlášení?</string>
|
||||
<string name="report_archive_for_all_moderators">Pro všechny moderátory</string>
|
||||
<string name="report_archive_for_me">Pro mě</string>
|
||||
<string name="group_reports_active">%d hlášení</string>
|
||||
<string name="group_reports_active">%d reportů</string>
|
||||
<string name="chat_list_groups">Skupiny</string>
|
||||
<string name="list_menu">Seznam</string>
|
||||
<string name="group_reports_member_reports">Hlášení členů</string>
|
||||
@@ -2179,9 +2173,8 @@
|
||||
<string name="group_members_can_send_reports">Členové mohou zprávy nahlásit moderátorům.</string>
|
||||
<string name="disable_sending_member_reports">Zakázat nahlašování zpráv moderátorům.</string>
|
||||
<string name="error_updating_server_title">Chyba aktualizace serveru</string>
|
||||
<string name="operator_server_alert_title">Operátor server</string>
|
||||
<string name="operator_server_alert_title">Operátor serveru</string>
|
||||
<string name="v6_2_network_decentralization">Decentralizace sítě</string>
|
||||
<string name="group_reports_archived_member_reports">Archivována hlášení členů</string>
|
||||
<string name="archive_reports">Archivovat hlášení</string>
|
||||
<string name="leave_chat_question">Opustit chat?</string>
|
||||
<string name="address_settings">Nastavení adres</string>
|
||||
@@ -2197,7 +2190,7 @@
|
||||
<string name="delete_chat_question">Vymazat chat?</string>
|
||||
<string name="operator_conditions_accepted_for_some"><![CDATA[Podmínky jsou již přijaty pro tohoto/tyto operátora(y): <b>%s</b>.]]></string>
|
||||
<string name="operators_conditions_will_also_apply"><![CDATA[Tyto podmínky budou také platit pro: <b>%s</b>.]]></string>
|
||||
<string name="connect_plan_you_are_already_connected_with_vName"><![CDATA[Již jste spojený s <b>%1$s</b>.]]></string>
|
||||
<string name="connect_plan_you_are_already_connected_with_vName"><![CDATA[Již jste spojeni s <b>%1$s</b>.]]></string>
|
||||
<string name="network_session_mode_session">Relace aplikace</string>
|
||||
<string name="onboarding_network_operators_conditions_will_be_accepted">Podmínky budou přijaty pro povolené operátory po 30 dnech.</string>
|
||||
<string name="sync_connection_desc">Připojení vyžaduje opětovné vyjednání šifrování.</string>
|
||||
@@ -2211,4 +2204,159 @@
|
||||
<string name="error_creating_report">Chyba vytváření hlášení</string>
|
||||
<string name="chat_item_ttl_year">1 rok</string>
|
||||
<string name="chat_item_ttl_default">výchozí (%s)</string>
|
||||
<string name="network_proxy_random_credentials">Použijte náhodné přihlašovací údaje</string>
|
||||
<string name="report_compose_reason_header_spam">Nahlásit spam: uvidí pouze skupinový moderátoři.</string>
|
||||
<string name="operator_review_conditions">Přečíst podmínky</string>
|
||||
<string name="operator_website">Webové stránky</string>
|
||||
<string name="subscribed">Odebírán</string>
|
||||
<string name="display_name_requested_to_connect">požádáno o připojení</string>
|
||||
<string name="report_reason_spam">Spam</string>
|
||||
<string name="no_media_servers_configured">Žádné mediální a souborové servery.</string>
|
||||
<string name="temporary_file_error">Chyba dočasného souboru</string>
|
||||
<string name="servers_info_transport_sessions_section_header">Přesunout sezení</string>
|
||||
<string name="network_option_tcp_connection">TCP připojení</string>
|
||||
<string name="operator_use_operator_toggle_description">Použité servery</string>
|
||||
<string name="use_servers_of_operator_x">Použit %s</string>
|
||||
<string name="operator_use_for_messages_receiving">Pro příjem</string>
|
||||
<string name="color_mode_system">Systém</string>
|
||||
<string name="blocking_reason_spam">Spam</string>
|
||||
<string name="connection_error_quota">Nedoručené zprávy</string>
|
||||
<string name="message_deleted_or_not_received_error_desc">Tato zpráva byla smazána, nebo dosud nebyla přijata.</string>
|
||||
<string name="report_reason_alert_title">Důvod nahlášení?</string>
|
||||
<string name="report_archive_alert_desc">Report bude archivován.</string>
|
||||
<string name="moderate_messages_will_be_marked_warning">Zprávy budou pro všechny členy označeny jako moderované.</string>
|
||||
<string name="chat_list_group_reports">Reporty</string>
|
||||
<string name="report_compose_reason_header_profile">Nahlašte profil člena: uvidí pouze skupinový moderátoři.</string>
|
||||
<string name="report_compose_reason_header_community">Nahlásit porušení: Uvidí pouze moderátoři skupiny.</string>
|
||||
<string name="private_routing_show_message_status">Zobrazit stav zpráv</string>
|
||||
<string name="app_check_for_updates_button_skip">Přeskočit tuto verzi</string>
|
||||
<string name="chat_list_always_visible">Zobrazit seznam v novém okně</string>
|
||||
<string name="v6_0_upgrade_app">Aktualizovat aplikaci automaticky</string>
|
||||
<string name="chat_database_exported_not_all_files">Některé soubory nebyly exportovány</string>
|
||||
<string name="unread_mentions">Nepřečtené zmínky</string>
|
||||
<string name="share_address_publicly">Sdílet adresu veřejně</string>
|
||||
<string name="share_simplex_address_on_social_media">Sdílent SimpleX adresu na sociálních médiích.</string>
|
||||
<string name="share_1_time_link_with_a_friend">Sdílejte 1 rázový odkaz s přítelem</string>
|
||||
<string name="network_socks_proxy">SOCKS Proxy</string>
|
||||
<string name="app_check_for_updates_update_available">Dostupná aktualizace: %s</string>
|
||||
<string name="app_check_for_updates_stable">Stabilní</string>
|
||||
<string name="onboarding_network_operators_conditions_you_can_configure">Můžete nastavit operátory v nastavení sítě a serverů.</string>
|
||||
<string name="settings_message_shape_tail">Ocas</string>
|
||||
<string name="you_will_stop_receiving_messages_from_this_chat_chat_history_will_be_preserved">Zastavíte přijímání zpráv z tohoto chatu. Chat historie bude zachována.</string>
|
||||
<string name="xftp_servers_per_user">Servery pro nové soubory vašeho aktuálního chat profilu</string>
|
||||
<string name="error_server_protocol_changed">Protokolu serveru se změnil.</string>
|
||||
<string name="error_server_operator_changed">Operátor serveru se změnil.</string>
|
||||
<string name="appearance_zoom">Zoom</string>
|
||||
<string name="chat_theme_set_default_theme">Nastavit výchozí téma</string>
|
||||
<string name="servers_info_uploaded">Nahráno</string>
|
||||
<string name="privacy_chat_list_open_links_yes">Ano</string>
|
||||
<string name="one_hand_ui_card_title">Přepnout chat seznam:</string>
|
||||
<string name="change_automatic_chat_deletion_message">Tuto akci nelze zrušit - zprávy odeslané a přijaté v tomto chatu dříve než vybraná, budou smazány.</string>
|
||||
<string name="servers_info_reset_stats_alert_message">Statistiky serverů budou obnoveny - nemůže být vráceno!</string>
|
||||
<string name="v6_3_reports">Odeslat soukromý report</string>
|
||||
<string name="v6_3_reports_descr">Pomozte administrátorům moderovat své skupiny.</string>
|
||||
<string name="v6_3_faster_deletion_of_groups">Rychlejší mazání skupin.</string>
|
||||
<string name="servers_info_starting_from">Od %s.</string>
|
||||
<string name="max_group_mentions_per_message_reached">Můžete zmínit až %1$s členů ve zprávě!</string>
|
||||
<string name="maximum_message_size_reached_forwarding">Musíte kopírovat a snížit velikost zprávy, abyste ji poslali.</string>
|
||||
<string name="network_proxy_username">Jméno</string>
|
||||
<string name="simplex_address_or_1_time_link">SimpleX adresa nebo 1 rázový odkaz?</string>
|
||||
<string name="toolbar_settings">Nastavení</string>
|
||||
<string name="save_list">Uložit seznam</string>
|
||||
<string name="app_check_for_updates_canceled">Stažení aktualizace zrušeno</string>
|
||||
<string name="chat_database_exported_save">Můžete uložit exportovaný archiv.</string>
|
||||
<string name="operator_use_for_messages">Použit pro zprávy</string>
|
||||
<string name="server_added_to_operator__name">Server přidán k operátoru %s.</string>
|
||||
<string name="appearance_in_app_bars_alpha">Průhlednost</string>
|
||||
<string name="v6_1_switch_chat_profile_descr">Přepínání chat profilu pro 1-rázové pozvánky.</string>
|
||||
<string name="info_view_video_button">video</string>
|
||||
<string name="new_chat_share_profile">Sdílet profil</string>
|
||||
<string name="member_reports_are_prohibited">Reportování zpráv je zakázáno v této skupině.</string>
|
||||
<string name="xftp_server">XFTP servr</string>
|
||||
<string name="uploaded_files">Nahrané soubory</string>
|
||||
<string name="subscription_results_ignored">Odběr ignorován</string>
|
||||
<string name="srv_error_version">Verze serveru není kompatibilní s nastavením sítě.</string>
|
||||
<string name="address_creation_instruction">Pro pozdější vytvoření adresy, klepněte v menu na Vytvořit SimpleX adresu.</string>
|
||||
<string name="your_servers">Vaše servery</string>
|
||||
<string name="view_updated_conditions">Zobrazit aktualizované podmínky</string>
|
||||
<string name="group_reports_active_one">1 report</string>
|
||||
<string name="group_preview_rejected">zamítnuto</string>
|
||||
<string name="notification_group_report">Report: %s</string>
|
||||
<string name="report_compose_reason_header_other">Nahlásit další: uvidí pouze skupinový moderátoři.</string>
|
||||
<string name="you_can_set_connection_name_to_remember">Můžete nastavit název připojení, pro pamatování, s kým byl odkaz sdílen.</string>
|
||||
<string name="switching_profile_error_message">Vaše připojení bylo přesunuto na %s, ale došlo k neočekávané chybě při přesměrování na profil.</string>
|
||||
<string name="network_proxy_auth_mode_isolate_by_auth_user">Pro každý profil použijte různé přihlašovací údaje</string>
|
||||
<string name="network_smp_proxy_mode_unknown">Neznámé servery</string>
|
||||
<string name="private_routing_explanation">Pro ochranu vaší IP adresy, soukromé směrování používá vaše servery SMP k doručování zpráv.</string>
|
||||
<string name="network_smp_web_port_toggle">Použít web portu</string>
|
||||
<string name="network_smp_web_port_section_title">TCP port pro zprávy</string>
|
||||
<string name="chat_main_profile_sent">Váš chat profil bude zaslán členům</string>
|
||||
<string name="system_mode_toast">Režim systému</string>
|
||||
<string name="v6_3_mentions">Zmínky členů 👋</string>
|
||||
<string name="v6_3_organize_chat_lists">Organizujte konverzace do seznamů</string>
|
||||
<string name="v6_3_better_groups_performance">Lepší výkon skupin</string>
|
||||
<string name="v6_3_better_privacy_and_security">Lepší soukromí a bezpečnost</string>
|
||||
<string name="v6_3_organize_chat_lists_descr">Nenechte si ujít důležité zprávy.</string>
|
||||
<string name="v6_3_faster_sending_messages">Rychlejší odesílání zpráv.</string>
|
||||
<string name="v6_3_private_media_file_names">Vlastní názvy souborů médií.</string>
|
||||
<string name="servers_info_target">Zobrazuji informace pro</string>
|
||||
<string name="upload_errors">Chyby nahrávání</string>
|
||||
<string name="servers_info_proxied_servers_section_footer">Soukromé směrování se používá k doručování zpráv těmto serverům, protože k nim nejste připojeni.</string>
|
||||
<string name="size">Velikost</string>
|
||||
<string name="onboarding_network_operators_review_later">Přečíst později</string>
|
||||
<string name="onboarding_network_operators_update">Aktualizovat</string>
|
||||
<string name="operator_servers_title">%s servery</string>
|
||||
<string name="servers_info_subscriptions_total">Celkem</string>
|
||||
<string name="network_error_broker_version_desc">Verze serveru není kompatibilní s vaší aplikací: %1$s.</string>
|
||||
<string name="connection_error_quota_desc">Připojení dosáhlo limitu nedoručených zpráv, váš kontakt je asi offline.</string>
|
||||
<string name="operator_use_for_sending">Pro odeslílání</string>
|
||||
<string name="operator_use_for_files">Použit pro soubory</string>
|
||||
<string name="v6_2_network_decentralization_descr">Druhý přednastavený operátor v aplikaci!</string>
|
||||
<string name="call_desktop_permission_denied_title">Chcete-li volat, povolte použití mikrofonu. Ukončete hovor a zkuste to znovu.</string>
|
||||
<string name="servers_info_statistics_section_header">Statistiky</string>
|
||||
<string name="subscription_errors">Chyby odběru</string>
|
||||
<string name="onboarding_network_about_operators">O operátorech</string>
|
||||
<string name="onboarding_network_operators_simplex_flux_agreement">SimpleX Chat a Flux udělali dohodu, a zahrnuly servery spravované Flux do aplikace.</string>
|
||||
<string name="smp_server">SMP server</string>
|
||||
<string name="contact_list_header_title">Vaše kontakty</string>
|
||||
<string name="servers_info_private_data_disclaimer">Od %s.\nJsou všechna data uchovávána ve vašem zařízení.</string>
|
||||
<string name="onboarding_choose_server_operators">Serverový operátoři</string>
|
||||
<string name="onboarding_select_network_operators_to_use">Vybrat provozovatele sítě pro použití.</string>
|
||||
<string name="onboarding_network_operators_configure_via_settings">Můžete nakonfigurovat servery v nastavení.</string>
|
||||
<string name="icon_descr_sound_muted">Zvuk ztlumen</string>
|
||||
<string name="v6_0_reachable_chat_toolbar_descr">Používat aplikaci jednou rukou.</string>
|
||||
<string name="v6_1_better_security_descr">SinpleX protokoly přezkoumány Trail Bits.</string>
|
||||
<string name="v6_1_better_calls_descr">Přepnínání zvuku a videa během hovoru.</string>
|
||||
<string name="network_proxy_auth_mode_username_password">Vaše přihlašovací údaje mohou být zaslány nešifrované.</string>
|
||||
<string name="onboarding_network_operators_cant_see_who_talks_to_whom">Pokud je povolen více než jeden operátor, nikdo z nich nemá metadata, aby poznal, kdo s kým komunikuje.</string>
|
||||
<string name="text_field_set_chat_placeholder">Nastavit název chatu..</string>
|
||||
<string name="network_smp_web_port_footer">Použít TCP port %1$s, když není zadán žádný port.</string>
|
||||
<string name="remote_ctrl_connection_stopped_identity_desc">Tento odkaz byl použit s jiným mobilním zařízením, vytvořte na počítači nový odkaz.</string>
|
||||
<string name="v6_3_mentions_descr">Získejte upozornění, když jste zmíněni.</string>
|
||||
<string name="simplex_address_and_1_time_links_are_safe_to_share">SimpleX adresa a 1 rázové odkazy je bezpečné sdílet přes všechny komunikátory.</string>
|
||||
<string name="moderate_messages_will_be_deleted_warning">Zprávy budou smazány pro všechny členy.</string>
|
||||
<string name="app_will_ask_to_confirm_unknown_file_servers">Aplikace vyžaduje potvrzení stahování z neznámých serverů (s výjimkou .onion nebo při aktivaci SOCKS proxy).</string>
|
||||
<string name="you_need_to_allow_calls">Musíte povolit kontaktům volání, abyste jim mohli zavolat.</string>
|
||||
<string name="v6_3_set_message_expiration_in_chats">Nastavit expirace zpráv.</string>
|
||||
<string name="subscription_percentage">Zobrazit procenta</string>
|
||||
<string name="migrate_from_device_uploaded_archive_will_be_removed">Nahraný archiv databáze bude ze serverů trvale odstraněn.</string>
|
||||
<string name="to_protect_against_your_link_replaced_compare_codes">Pro ochranu před záměnou odkazů, můžete porovnat bezpečnostní kódy.</string>
|
||||
<string name="you_can_still_view_conversation_with_contact">Stále si můžete prohlédnout rozhovor s %1$s v chat seznamu.</string>
|
||||
<string name="onboarding_network_operators_app_will_use_different_operators">Aplikace chrání vaše soukromí pomocí různých operátorů v každé konverzaci.</string>
|
||||
<string name="one_hand_ui_change_instruction">Můžete jej změnit v nastavení Vzhledu.</string>
|
||||
<string name="member_role_will_be_changed_with_notification_chat">Role se změní na %s. Každý v chatu bude upozorněn.</string>
|
||||
<string name="app_check_for_updates_notice_desc">Chcete-li být informováni o nových verzích, zapněte periodickou kontrolu pro Stabilní nebo Beta verze.</string>
|
||||
<string name="network_proxy_auth_mode_isolate_by_auth_entity">Pro každé připojení použijte různé přihlašovací údaje.</string>
|
||||
<string name="privacy_media_blur_radius_strong">Silný</string>
|
||||
<string name="view_conditions">Zobrazit podmínky</string>
|
||||
<string name="you_can_still_send_messages_to_contact">Můžete posílat zprávy %1$s z archivovaných kontaktů.</string>
|
||||
<string name="chat_database_exported_migrate">Můžete přenést exportovanou databázi.</string>
|
||||
<string name="group_member_status_rejected">zamítnuto</string>
|
||||
<string name="privacy_media_blur_radius_soft">Jemný</string>
|
||||
<string name="error_reading_passphrase">Chyba čtení přístupové fráze databáze</string>
|
||||
<string name="restore_passphrase_can_not_be_read_enter_manually_desc">Přístupová fráze v úlozišti klíčů nelze načíst, prosím zadejte ji ručně. To se může stát po aktualizaci systému nekompatibilní s aplikací. Pokud to tak není, kontaktujte prosím vývojáře.</string>
|
||||
<string name="restore_passphrase_can_not_be_read_desc">Přístupovou frázi v ůložišti klíčů nelze načíst. Mohlo se to stát po aktualizaci systému nekompatibilní s aplikací. Pokud to není váš případ, kontaktujte prosím vývojáře.</string>
|
||||
<string name="operator_updated_conditions">Aktualizované podmínky</string>
|
||||
<string name="group_member_status_pending_approval">čekám na schválení</string>
|
||||
<string name="group_member_status_pending_approval_short">čekám</string>
|
||||
</resources>
|
||||
|
||||
@@ -355,8 +355,8 @@
|
||||
<string name="chat_console">Chat-Konsole</string>
|
||||
<string name="smp_servers">SMP-Server</string>
|
||||
<string name="smp_servers_preset_address">Voreingestellte Serveradresse</string>
|
||||
<string name="smp_servers_preset_add">Füge voreingestellte Server hinzu</string>
|
||||
<string name="smp_servers_add">Füge Server hinzu</string>
|
||||
<string name="smp_servers_preset_add">Voreingestellte Server hinzufügen</string>
|
||||
<string name="smp_servers_add">Server hinzufügen</string>
|
||||
<string name="smp_servers_test_server">Teste Server</string>
|
||||
<string name="smp_servers_test_servers">Teste alle Server</string>
|
||||
<string name="smp_servers_save">Alle Server speichern</string>
|
||||
@@ -661,7 +661,7 @@
|
||||
<string name="restore_database_alert_desc">Bitte geben Sie das vorherige Passwort ein, nachdem Sie die Datenbanksicherung wiederhergestellt haben. Diese Aktion kann nicht rückgängig gemacht werden!</string>
|
||||
<string name="restore_database_alert_confirm">Wiederherstellen</string>
|
||||
<string name="database_restore_error">Fehler bei der Wiederherstellung der Datenbank</string>
|
||||
<string name="restore_passphrase_not_found_desc">Das Passwort wurde nicht im Schlüsselbund gefunden. Bitte geben Sie es manuell ein. Das kann passieren, wenn Sie die App-Daten mit einem Backup-Programm wieder hergestellt haben. Bitte nehmen Sie Kontakt mit den Entwicklern auf, wenn das nicht der Fall ist.</string>
|
||||
<string name="restore_passphrase_not_found_desc">Das Passwort wurde nicht im Schlüsselbund gefunden. Bitte geben Sie es manuell ein. Dies kann passieren, wenn Sie die App-Daten mit einem Backup-Programm wieder hergestellt haben. Wenden Sie sich bitte an die Entwickler, wenn dies nicht der Fall ist.</string>
|
||||
<!-- ChatModel.chatRunning interactions -->
|
||||
<string name="chat_is_stopped_indication">Der Chat wurde beendet</string>
|
||||
<string name="you_can_start_chat_via_setting_or_by_restarting_the_app">Sie können den Chat über die App-Einstellungen/Datenbank oder durch Neustart der App starten.</string>
|
||||
@@ -923,7 +923,7 @@
|
||||
<string name="prohibit_sending_disappearing_messages">Das Senden von verschwindenden Nachrichten nicht erlauben.</string>
|
||||
<string name="disappearing_messages_are_prohibited">Verschwindende Nachrichten sind nicht erlaubt.</string>
|
||||
<string name="group_members_can_send_disappearing">Mitglieder können verschwindende Nachrichten versenden.</string>
|
||||
<string name="v4_3_improved_server_configuration_desc">Fügen Sie Server durch Scannen der QR-Codes hinzu.</string>
|
||||
<string name="v4_3_improved_server_configuration_desc">Server durch Scannen von QR-Codes hinzufügen.</string>
|
||||
<string name="v4_4_disappearing_messages">Verschwindende Nachrichten</string>
|
||||
<string name="accept_feature">Übernehmen</string>
|
||||
<string name="accept_feature_set_1_day">Einen Tag festlegen</string>
|
||||
@@ -1304,7 +1304,7 @@
|
||||
<string name="share_text_deleted_at">Gelöscht um: %s</string>
|
||||
<string name="info_row_disappears_at">Verschwindet um</string>
|
||||
<string name="share_text_disappears_at">Verschwindet um: %s</string>
|
||||
<string name="edit_history">Nachrichtenverlauf bearbeiten</string>
|
||||
<string name="edit_history">Nachrichtenverlauf</string>
|
||||
<string name="message_reactions_prohibited_in_this_chat">In diesem Chat sind Reaktionen auf Nachrichten nicht erlaubt.</string>
|
||||
<string name="item_info_no_text">Kein Text</string>
|
||||
<string name="non_fatal_errors_occured_during_import">Während des Imports sind nicht schwerwiegende Fehler aufgetreten:</string>
|
||||
@@ -1483,7 +1483,7 @@
|
||||
<string name="connect_plan_you_are_already_in_group_vName"><![CDATA[Sie sind bereits Mitglied in der Gruppe <b>%1$s</b>.]]></string>
|
||||
<string name="connect_plan_this_is_your_own_simplex_address">Das ist Ihre eigene SimpleX-Adresse!</string>
|
||||
<string name="correct_name_to">Richtiger Name für %s?</string>
|
||||
<string name="delete_messages__question">%d Nachrichten löschen?</string>
|
||||
<string name="delete_messages__question">Sollen %d Nachrichten gelöscht werden?</string>
|
||||
<string name="connect_with_contact_name_question">Mit %1$s verbinden?</string>
|
||||
<string name="remove_member_button">Mitglied entfernen</string>
|
||||
<string name="block_member_confirmation">Blockieren</string>
|
||||
@@ -1652,8 +1652,8 @@
|
||||
<string name="v5_5_private_notes">Private Notizen</string>
|
||||
<string name="clear_note_folder_warning">Es werden alle Nachrichten gelöscht. Dies kann nicht rückgängig gemacht werden!</string>
|
||||
<string name="clear_note_folder_question">Private Notizen entfernen?</string>
|
||||
<string name="rcv_group_event_member_blocked">%s wurde blockiert</string>
|
||||
<string name="rcv_group_event_member_unblocked">%s wurde freigegeben</string>
|
||||
<string name="rcv_group_event_member_blocked">es wurde %s blockiert</string>
|
||||
<string name="rcv_group_event_member_unblocked">Es wurden %s freigegeben</string>
|
||||
<string name="snd_group_event_member_blocked">Sie haben %s blockiert</string>
|
||||
<string name="snd_group_event_member_unblocked">Sie haben %s freigegeben</string>
|
||||
<string name="block_for_all_question">Mitglied für Alle blockieren?</string>
|
||||
@@ -2089,10 +2089,10 @@
|
||||
<string name="toolbar_settings">Einstellungen</string>
|
||||
<string name="moderate_messages_will_be_deleted_warning">Die Nachrichten werden für alle Gruppenmitglieder gelöscht.</string>
|
||||
<string name="moderate_messages_will_be_marked_warning">Die Nachrichten werden für alle Mitglieder als moderiert markiert.</string>
|
||||
<string name="delete_members_messages__question">%d Nachrichten der Mitglieder löschen?</string>
|
||||
<string name="delete_members_messages__question">Sollen %d Nachrichten von Mitgliedern gelöscht werden?</string>
|
||||
<string name="compose_message_placeholder">Nachricht</string>
|
||||
<string name="delete_messages_mark_deleted_warning">Nachrichten werden zur Löschung markiert. Der/Die Empfänger hat/haben die Möglichkeit, diese Nachrichten aufzudecken.</string>
|
||||
<string name="selected_chat_items_selected_n">%d ausgewählt</string>
|
||||
<string name="selected_chat_items_selected_n">Es wurden %d ausgewählt</string>
|
||||
<string name="selected_chat_items_nothing_selected">Es wurde Nichts ausgewählt</string>
|
||||
<string name="select_verb">Auswählen</string>
|
||||
<string name="invite_friends_short">Einladen</string>
|
||||
@@ -2154,7 +2154,7 @@
|
||||
<string name="forward_files_messages_deleted_after_selection_desc">Die Nachrichten wurden gelöscht, nachdem Sie sie ausgewählt hatten.</string>
|
||||
<string name="forward_alert_title_nothing_to_forward">Es gibt nichts zum Weiterleiten!</string>
|
||||
<string name="n_other_file_errors">%1$d andere(r) Datei-Fehler.</string>
|
||||
<string name="forward_alert_title_messages_to_forward">%1$s Nachricht(en) weiterleiten?</string>
|
||||
<string name="forward_alert_title_messages_to_forward">Soll(en) %1$s Nachricht(en) weitergeleitet werden?</string>
|
||||
<string name="forward_files_missing_desc">%1$d Datei(en) wurde(n) gelöscht.</string>
|
||||
<string name="forward_files_not_accepted_desc">%1$d Datei(en) wurde(n) nicht heruntergeladen.</string>
|
||||
<string name="forward_alert_forward_messages_without_files">Nachrichten ohne Dateien weiterleiten?</string>
|
||||
@@ -2382,7 +2382,6 @@
|
||||
<string name="group_reports_active">%d Meldungen</string>
|
||||
<string name="group_reports_member_reports">Mitglieder-Meldungen</string>
|
||||
<string name="chat_list_group_reports">Meldungen</string>
|
||||
<string name="group_reports_archived_member_reports">Archivierte Mitglieder-Meldungen</string>
|
||||
<string name="blocking_reason_content">Inhalt verletzt Nutzungsbedingungen</string>
|
||||
<string name="blocking_reason_spam">Spam</string>
|
||||
<string name="connection_error_blocked">Verbindung blockiert</string>
|
||||
@@ -2420,4 +2419,32 @@
|
||||
<string name="enable_sending_member_reports">Melden von Nachrichten an Moderatoren erlauben.</string>
|
||||
<string name="report_archive_alert_desc_all">Alle Meldungen werden für Sie archiviert.</string>
|
||||
<string name="notification_group_report">Meldung: %s</string>
|
||||
<string name="v6_3_reports_descr">Helfen Sie Administratoren bei der Moderation ihrer Gruppen.</string>
|
||||
<string name="v6_3_mentions">Erwähnung von Mitgliedern 👋</string>
|
||||
<string name="v6_3_reports">Private Meldungen senden</string>
|
||||
<string name="v6_3_mentions_descr">Bei Erwähnung benachrichtigt werden.</string>
|
||||
<string name="v6_3_private_media_file_names">Medien mit anonymisierten Dateinamen.</string>
|
||||
<string name="v6_3_set_message_expiration_in_chats">Verfallsdatum von Nachrichten in Chats festlegen.</string>
|
||||
<string name="v6_3_better_groups_performance">Bessere Leistung von Gruppen</string>
|
||||
<string name="v6_3_faster_deletion_of_groups">Schnelleres löschen von Gruppen</string>
|
||||
<string name="v6_3_faster_sending_messages">Schnelleres versenden von Nachrichten.</string>
|
||||
<string name="group_preview_rejected">abgelehnt</string>
|
||||
<string name="v6_3_better_privacy_and_security">Bessere(r) Security und Datenschutz</string>
|
||||
<string name="v6_3_organize_chat_lists_descr">Verpassen Sie keine wichtigen Nachrichten.</string>
|
||||
<string name="v6_3_organize_chat_lists">Chats in Listen verwalten</string>
|
||||
<string name="group_member_status_rejected">abgelehnt</string>
|
||||
<string name="restore_passphrase_can_not_be_read_desc">Das Passwort kann nicht aus dem Schlüsselbund gelesen werden. Dies kann nach einer Systemaktualisierung passiert sein, die nicht mit der App kompatibel war. Wenden Sie sich bitte an die Entwickler, wenn dies nicht der Fall ist.</string>
|
||||
<string name="group_member_status_pending_approval_short">ausstehend</string>
|
||||
<string name="error_reading_passphrase">Fehler beim Lesen des Datenbank-Passworts</string>
|
||||
<string name="operator_updated_conditions">Aktualisierte Nutzungsbedingungen</string>
|
||||
<string name="group_member_status_pending_approval">ausstehende Genehmigung</string>
|
||||
<string name="restore_passphrase_can_not_be_read_enter_manually_desc">Das Passwort kann nicht aus dem Schlüsselbund gelesen werden. Bitte geben Sie es manuell ein. Dies kann nach einer Systemaktualisierung passiert sein, die nicht mit der App kompatibel war. Wenden Sie sich bitte an die Entwickler, wenn dies nicht der Fall ist.</string>
|
||||
<string name="button_remove_members_question">Mitglieder entfernen?</string>
|
||||
<string name="members_will_be_removed_from_chat_cannot_be_undone">Mitglieder werden aus dem Chat entfernt. Dies kann nicht rückgängig gemacht werden!</string>
|
||||
<string name="members_will_be_removed_from_group_cannot_be_undone">Mitglieder werden aus der Gruppe entfernt. Dies kann nicht rückgängig gemacht werden!</string>
|
||||
<string name="unblock_members_for_all_question">Mitglieder für Alle freigeben?</string>
|
||||
<string name="unblock_members_desc">Nachrichten dieser Mitglieder werden angezeigt!</string>
|
||||
<string name="feature_roles_moderators">Moderatoren</string>
|
||||
<string name="block_members_for_all_question">Mitglieder für Alle blockieren?</string>
|
||||
<string name="block_members_desc">Alle neuen Nachrichten dieser Mitglieder werden nicht angezeigt!</string>
|
||||
</resources>
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
<string name="smp_servers_add_to_another_device">Añadir a otro dispositivo</string>
|
||||
<string name="app_version_name">Versión de la aplicación: v%s</string>
|
||||
<string name="icon_descr_asked_to_receive">Solicita recibir la imagen</string>
|
||||
<string name="impossible_to_recover_passphrase"><![CDATA[<b>Recuerda</b>: NO podrás recuperar o cambiar la frase de contraseña si la pierdes.]]></string>
|
||||
<string name="impossible_to_recover_passphrase"><![CDATA[<b>Recuerda</b>: Si la pierdes NO podrás recuperar o cambiar la frase de contraseña.]]></string>
|
||||
<string name="both_you_and_your_contact_can_send_voice">Tanto tú como tu contacto podéis enviar mensajes de voz.</string>
|
||||
<string name="onboarding_notifications_mode_service_desc"><![CDATA[<b>¡Consume más energía!</b> La aplicación está siempre en segundo plano y las notificaciones se muestran de inmediato.]]></string>
|
||||
<string name="both_you_and_your_contacts_can_delete">Tanto tú como tu contacto podéis eliminar los mensajes enviados de forma irreversible. (24 horas)</string>
|
||||
@@ -129,7 +129,7 @@
|
||||
<string name="ttl_week">%d semana</string>
|
||||
<string name="ttl_weeks">%d semanas</string>
|
||||
<string name="v4_4_disappearing_messages">Mensajes temporales</string>
|
||||
<string name="auth_confirm_credential">Canfirma tus credenciales</string>
|
||||
<string name="auth_confirm_credential">Confirma tus credenciales</string>
|
||||
<string name="group_member_status_introduced">conectando (presentado)</string>
|
||||
<string name="group_member_status_intro_invitation">conectando (invitación de presentación )</string>
|
||||
<string name="group_member_status_accepted">conectando (aceptado)</string>
|
||||
@@ -680,7 +680,7 @@
|
||||
<string name="open_chat">Abrir chat</string>
|
||||
<string name="restore_database">Restaurar copia de seguridad de la base de datos</string>
|
||||
<string name="save_passphrase_and_open_chat">Guardar contraseña y abrir el chat</string>
|
||||
<string name="restore_passphrase_not_found_desc">La contraseña no se ha encontrado en Keystore, introdúcela manualmente. Esto puede haber ocurrido si has restaurado los datos de la aplicación con una herramienta de copia de seguridad. Si no es así, por favor ponte en contacto con los desarrolladores.</string>
|
||||
<string name="restore_passphrase_not_found_desc">La frase de contraseña no se ha encontrado en Keystore. Por favor, introdúcela manualmente. Puede deberse a que hayas restaurado los datos de la aplicación mediante alguna herramienta para copias de seguridad. Si no es así, por favor, ponte en contacto con los desarrolladores.</string>
|
||||
<string name="remove_member_confirmation">Expulsar</string>
|
||||
<string name="button_remove_member">Expulsar miembro</string>
|
||||
<string name="button_send_direct_message">Enviar mensaje directo</string>
|
||||
@@ -1758,7 +1758,7 @@
|
||||
\nError del servidor de destino: %2$s</string>
|
||||
<string name="snd_error_proxy">Servidor de reenvío: %1$s
|
||||
\nError: %2$s</string>
|
||||
<string name="snd_error_expired">Problema en la red - el mensaje ha expirado tras muchos intentos de envío.</string>
|
||||
<string name="snd_error_expired">Problema en la red - el mensaje ha caducado tras muchos intentos de envío.</string>
|
||||
<string name="srv_error_version">La versión del servidor es incompatible con la configuración de la red.</string>
|
||||
<string name="network_smp_proxy_mode_private_routing">Enrutamiento privado</string>
|
||||
<string name="network_smp_proxy_mode_unknown">Servidores desconocidos</string>
|
||||
@@ -1951,7 +1951,7 @@
|
||||
<string name="downloaded_files">Archivos descargados</string>
|
||||
<string name="download_errors">Errores de descarga</string>
|
||||
<string name="duplicates_label">duplicados</string>
|
||||
<string name="expired_label">expirados</string>
|
||||
<string name="expired_label">caducados</string>
|
||||
<string name="open_server_settings_button">Abrir configuración del servidor</string>
|
||||
<string name="other_label">otros</string>
|
||||
<string name="other_errors">otros errores</string>
|
||||
@@ -2304,7 +2304,6 @@
|
||||
<string name="archive_verb">Archivar</string>
|
||||
<string name="archive_report">Archivar informe</string>
|
||||
<string name="group_reports_member_reports">Informes de miembro</string>
|
||||
<string name="group_reports_archived_member_reports">Informes de miembros archivados</string>
|
||||
<string name="group_reports_active">%d informes</string>
|
||||
<string name="report_compose_reason_header_profile">Informar del perfil de un miembro: sólo los moderadores del grupo lo verán.</string>
|
||||
<string name="report_reason_other">Otro motivo</string>
|
||||
@@ -2347,16 +2346,32 @@
|
||||
<string name="member_reports_are_prohibited">No se permite informar de mensajes en este grupo.</string>
|
||||
<string name="report_archive_alert_desc_all">Todos los informes serán archivados para ti.</string>
|
||||
<string name="report_archive_alert_title_all">¿Archivar todos los informes?</string>
|
||||
<string name="v6_3_mentions_descr">Las menciones ahora notifican.</string>
|
||||
<string name="v6_3_mentions">Mencionar miembros 👋</string>
|
||||
<string name="v6_3_mentions_descr">Las menciones ahora se notifican.</string>
|
||||
<string name="v6_3_mentions">Menciona a miembros 👋</string>
|
||||
<string name="v6_3_organize_chat_lists_descr">No pierdas los mensajes importantes.</string>
|
||||
<string name="v6_3_organize_chat_lists">Organiza los chats en listas</string>
|
||||
<string name="v6_3_private_media_file_names">Nombres privados de archivos de media.</string>
|
||||
<string name="v6_3_organize_chat_lists">Organiza tus chats en listas</string>
|
||||
<string name="v6_3_private_media_file_names">Nombres privados en archivos de media.</string>
|
||||
<string name="v6_3_faster_deletion_of_groups">Eliminación más rápida de grupos.</string>
|
||||
<string name="v6_3_faster_sending_messages">Envío más rápido de mensajes.</string>
|
||||
<string name="v6_3_reports_descr">Ayuda a los admins moderar sus grupos.</string>
|
||||
<string name="v6_3_better_groups_performance">Mejor rendimiento de los grupos</string>
|
||||
<string name="v6_3_better_privacy_and_security">Mejor privacidad y seguridad</string>
|
||||
<string name="v6_3_reports">Envia informes privados</string>
|
||||
<string name="v6_3_set_message_expiration_in_chats">Establece la expiración de mensajes en chats.</string>
|
||||
<string name="v6_3_reports_descr">Ayuda a los admins a moderar sus grupos.</string>
|
||||
<string name="v6_3_better_groups_performance">Rendimiento de grupos mejorado</string>
|
||||
<string name="v6_3_better_privacy_and_security">Privacidad y seguridad mejoradas</string>
|
||||
<string name="v6_3_reports">Envía informes privados</string>
|
||||
<string name="v6_3_set_message_expiration_in_chats">Establece el vencimiento para los mensajes en los chats.</string>
|
||||
<string name="group_preview_rejected">rechazado</string>
|
||||
<string name="group_member_status_rejected">rechazado</string>
|
||||
<string name="button_remove_members_question">¿Expulsar miembros?</string>
|
||||
<string name="unblock_members_desc">¡Los mensajes de estos miembros serán mostrados!</string>
|
||||
<string name="unblock_members_for_all_question">¿Desbloquear miembros para todos?</string>
|
||||
<string name="block_members_desc">¡Todos los mensajes nuevos de estos miembros estarán ocultos!</string>
|
||||
<string name="block_members_for_all_question">¿Bloquear miembros para todos?</string>
|
||||
<string name="members_will_be_removed_from_chat_cannot_be_undone">Los miembros serán expulsados del chat. ¡No podrá deshacerse!</string>
|
||||
<string name="operator_updated_conditions">Condiciones actualizadas</string>
|
||||
<string name="feature_roles_moderators">moderadores</string>
|
||||
<string name="members_will_be_removed_from_group_cannot_be_undone">Los miembros serán expulsados del grupo. ¡No podrá deshacerse!</string>
|
||||
<string name="group_member_status_pending_approval">pendiente de aprobación</string>
|
||||
<string name="group_member_status_pending_approval_short">pendiente</string>
|
||||
<string name="error_reading_passphrase">Error al leer la frase de contraseña de la base de datos</string>
|
||||
<string name="restore_passphrase_can_not_be_read_desc">La frase de contraseña no se ha podido leer en Keystore. Puede deberse a alguna actualización del sistema incompatible con la aplicación. Si no es así, por favor, ponte en contacto con los desarrolladores.</string>
|
||||
<string name="restore_passphrase_can_not_be_read_enter_manually_desc">La frase de contraseña no se ha podido leer en Keystore. Por favor, introdúcela manualmente. Puede deberse a alguna actualización del sistema incompatible con la aplicación. Si no es así, por favor, ponte en contacto con los desarrolladores.</string>
|
||||
</resources>
|
||||
|
||||
@@ -2124,7 +2124,6 @@
|
||||
<string name="display_name_accepted_invitation">invitation acceptée</string>
|
||||
<string name="archive_report">Archiver le signalement</string>
|
||||
<string name="privacy_chat_list_open_links_ask">Demander</string>
|
||||
<string name="group_reports_archived_member_reports">Rapports du membre archivés</string>
|
||||
<string name="add_to_list">Ajouter à la liste</string>
|
||||
<string name="delete_chat_list_warning">Toutes les discussions seront supprimées de la liste %s, et la liste sera supprimée</string>
|
||||
<string name="button_add_team_members">Ajouter des membres à l\'équipe</string>
|
||||
|
||||
@@ -301,7 +301,7 @@
|
||||
<string name="disable_notifications_button">Onemogućiti obavještenja</string>
|
||||
<string name="is_not_verified">%s nije verifikovan</string>
|
||||
<string name="clear_note_folder_warning">Sve poruke biće odstranjene - ovo ne može biti vraćeno!</string>
|
||||
<string name="network_session_mode_user">Profil razgovora</string>
|
||||
<string name="network_session_mode_user">Profil Chata</string>
|
||||
<string name="app_check_for_updates_notice_disable">Onemogućiti</string>
|
||||
<string name="ttl_week">%d nedelja</string>
|
||||
<string name="v5_4_more_things_descr">- neobavezno obavestiti o obrisanim kontaktima.\n- imena profila sa razmacima.\n- i još mnogo toga!\"</string>
|
||||
@@ -309,11 +309,11 @@
|
||||
<string name="servers_info_files_tab">Datoteke</string>
|
||||
<string name="servers_info_uploaded">Otpremljeno</string>
|
||||
<string name="is_verified">%s je verifikovan</string>
|
||||
<string name="chat_console">Konzola razgovora</string>
|
||||
<string name="chat_console">Konzola chata</string>
|
||||
<string name="scan_QR_code">Skenirati QR kod</string>
|
||||
<string name="network_session_mode_server">Server</string>
|
||||
<string name="no_call_on_lock_screen">Onemogućiti</string>
|
||||
<string name="settings_section_title_chat_database">BAZA PODATAKA RAZGOVORA</string>
|
||||
<string name="settings_section_title_chat_database">BAZA PODATAKA CHATA</string>
|
||||
<string name="send_receipts_disabled">onemogućeno</string>
|
||||
<string name="import_theme_error">Greška pri uvoženju teme</string>
|
||||
<string name="files_are_prohibited_in_group">Datoteke i medijski sadržaji su zabranjeni.</string>
|
||||
@@ -332,13 +332,13 @@
|
||||
<string name="settings_section_title_chats">RAZGOVORI</string>
|
||||
<string name="files_and_media_prohibited">Datoteke i medijski sadržaji su zabranjeni!</string>
|
||||
<string name="disappearing_prohibited_in_this_chat">Poruke koje nestaju su zabranjene u ovom razgovoru.</string>
|
||||
<string name="chat_is_stopped_indication">Razgovor je zaustavljen</string>
|
||||
<string name="chat_is_stopped_indication">Chat je zaustavljen</string>
|
||||
<string name="file_saved">Datoteka sačuvana</string>
|
||||
<string name="app_version_title">Verzija aplikacije</string>
|
||||
<string name="app_version_name">Verzija aplikacije: v%s</string>
|
||||
<string name="settings_section_title_chat_theme">Tema razgovora</string>
|
||||
<string name="chat_item_ttl_seconds">%s sekunda(i)</string>
|
||||
<string name="chat_database_exported_title">Baza podataka razgovora izvezena</string>
|
||||
<string name="chat_database_exported_title">Baza podataka Chata izvezena</string>
|
||||
<string name="operator">Operator</string>
|
||||
<string name="operator_server_alert_title">Operacioni server</string>
|
||||
<string name="timed_messages">Poruke koje nestaju</string>
|
||||
@@ -356,32 +356,32 @@
|
||||
<string name="turn_off_battery_optimization_button">Dozvoliti</string>
|
||||
<string name="direct_messages">Direktne poruke</string>
|
||||
<string name="receipts_contacts_disable_for_all">Onemogućeno za sve</string>
|
||||
<string name="migrate_to_device_chat_migrated">Razgovor migriran!</string>
|
||||
<string name="migrate_to_device_chat_migrated">Chat migriran!</string>
|
||||
<string name="group_members_n">%s, %s i %d članovi</string>
|
||||
<string name="smp_server_test_disconnect">Prekinuti vezu</string>
|
||||
<string name="connect_plan_chat_already_exists">Razgovor već postoji!</string>
|
||||
<string name="chat_database_deleted">Baza podataka razgovora odstranjena</string>
|
||||
<string name="connect_plan_chat_already_exists">Chat već postoji!</string>
|
||||
<string name="chat_database_deleted">Baza podataka Chata odstranjena</string>
|
||||
<string name="app_check_for_updates_notice_title">Proveri ažuriranje</string>
|
||||
<string name="chat_is_stopped_you_should_transfer_database">Razgovor je zaustavljen. Ako već koristiš ovu bazu podataka na drugom uređaju, trebala bi se vratiti pre nego što se pokrene razgovor.</string>
|
||||
<string name="chat_is_stopped_you_should_transfer_database">Chat je zaustavljen. Ako već koristiš ovu bazu podataka na drugom uređaju, trebala bi se vratiti pre nego što se pokrene chat.</string>
|
||||
<string name="onboarding_notifications_mode_periodic_desc_short">Proveri poruke svakih 10 minuta</string>
|
||||
<string name="rcv_group_event_1_member_connected">%s povezan</string>
|
||||
<string name="rcv_group_event_3_members_connected">%s, %s i %s povezani</string>
|
||||
<string name="conn_level_desc_direct">direktno</string>
|
||||
<string name="info_row_chat">Razgovor</string>
|
||||
<string name="info_row_chat">Chat</string>
|
||||
<string name="image_descr_qr_code">QR kod</string>
|
||||
<string name="chat_is_running">Razgovor je pokrenut</string>
|
||||
<string name="chat_is_running">Chat je pokrenut</string>
|
||||
<string name="import_database">Uvesti bazu podataka</string>
|
||||
<string name="chat_database_section">BAZA PODATAKA RAZGOVORA</string>
|
||||
<string name="chat_is_stopped">Razgovor je zaustavljen</string>
|
||||
<string name="chat_database_section">BAZA PODATAKA CHATA</string>
|
||||
<string name="chat_is_stopped">Chat je zaustavljen</string>
|
||||
<string name="rcv_group_event_n_members_connected">%s, %s i %d ostali članovi povezani</string>
|
||||
<string name="migrate_to_device_import_failed">Uvoz neuspešan</string>
|
||||
<string name="delete_chat_for_self_cannot_undo_warning">Razgovor će biti odstranjen za tebe - ovo se ne može vratiti!</string>
|
||||
<string name="import_theme">Uvesti temu</string>
|
||||
<string name="chat_database_imported">Baza podataka razgovora uvezena</string>
|
||||
<string name="chat_database_imported">Baza podataka Chata uvezena</string>
|
||||
<string name="current_version_timestamp">%s (sadašnji)</string>
|
||||
<string name="share_text_disappears_at">Nestaje u: %s</string>
|
||||
<string name="import_database_confirmation">Uvesti</string>
|
||||
<string name="settings_section_title_chat_colors">Boje razgovora</string>
|
||||
<string name="settings_section_title_chat_colors">Boje Chata</string>
|
||||
<string name="recipient_colon_delivery_status">%s: %s</string>
|
||||
<string name="chat_archive">Ili uvesti arhiviranu datoteku</string>
|
||||
<string name="delete_chat_for_all_members_cannot_undo_warning">Razgovor će biti odstranjen za sve članove - ovo se ne može vratiti!</string>
|
||||
@@ -598,14 +598,14 @@
|
||||
<string name="reset_color">Obnoviti boje</string>
|
||||
<string name="link_a_mobile">Povezati telefon</string>
|
||||
<string name="report_archive_alert_title">Arhiviraj izveštaj?</string>
|
||||
<string name="delivery">Dostava</string>
|
||||
<string name="delivery">Prijem</string>
|
||||
<string name="report_verb">Izveštaj</string>
|
||||
<string name="in_reply_to">U odgovoru na</string>
|
||||
<string name="chat_list_group_reports">Izveštaji</string>
|
||||
<string name="chat_list_notes">Beleške</string>
|
||||
<string name="send_live_message">Poslati živu poruku</string>
|
||||
<string name="delete_pending_connection__question">Odstraniti veze na čekanju?</string>
|
||||
<string name="scan_paste_link">Skenirati / Nalepiti vezu</string>
|
||||
<string name="scan_paste_link">Skenirati / Nalepiti link</string>
|
||||
<string name="incorrect_code">Neispravan bezbednostni kod!</string>
|
||||
<string name="callstatus_rejected">odbijeni poziv</string>
|
||||
<string name="action_button_add_members">Pozvati</string>
|
||||
@@ -975,7 +975,7 @@
|
||||
<string name="icon_descr_image_snd_complete">Poslana slika</string>
|
||||
<string name="confirm_verb">Potvrditi</string>
|
||||
<string name="v5_2_more_things">Još nekoliko stvari</string>
|
||||
<string name="connect_via_invitation_link">Povezati pomoću jednokratne veze?</string>
|
||||
<string name="connect_via_invitation_link">Povezati pomoću jednokratnog linka?</string>
|
||||
<string name="la_mode_passcode">Pin kod</string>
|
||||
<string name="both_you_and_your_contact_can_send_disappearing">Vi i Vaš kontakt, možete da šaljete poruke koje nestaju.</string>
|
||||
<string name="v5_7_call_sounds">Zvukovi u pozivu</string>
|
||||
@@ -1170,7 +1170,7 @@
|
||||
<string name="servers_info_detailed_statistics_received_total">Ukupno primljeno</string>
|
||||
<string name="remote_host_error_inactive"><![CDATA[Mobilni <b>%s</b> je neaktivan]]></string>
|
||||
<string name="notification_preview_mode_contact">Ime kontakta</string>
|
||||
<string name="message_delivery_error_title">Greška u isporuci poruke</string>
|
||||
<string name="message_delivery_error_title">Greška pri isporuci poruke</string>
|
||||
<string name="delete_messages_mark_deleted_warning">Poruke će biti označene za odstranjivanje. Primaoci će moći da otkriju te poruke.</string>
|
||||
<string name="delete_files_and_media_question">Odstraniti datoteke i medijski sadržaj?</string>
|
||||
<string name="stop_rcv_file__message">Primanje datoteke biće zaustavljeno.</string>
|
||||
@@ -1245,7 +1245,7 @@
|
||||
<string name="error_joining_group">Greška pri pristupanju grupi</string>
|
||||
<string name="developer_options_section">Opcije za programere</string>
|
||||
<string name="settings_developer_tools">Alati za programere</string>
|
||||
<string name="chat_preferences">Preference razgovora</string>
|
||||
<string name="chat_preferences">Preference chata</string>
|
||||
<string name="migrate_to_device_confirm_network_settings_footer">Potvrdite da su mrežna podešavanja za ovaj uređaj ispravna.</string>
|
||||
<string name="blocking_reason_content">Sadržaj krši uslove korišćenja</string>
|
||||
<string name="cannot_receive_file">Nije moguće primiti datoteku</string>
|
||||
@@ -1412,4 +1412,76 @@
|
||||
<string name="your_ice_servers">Vaši ICE serveri</string>
|
||||
<string name="use_random_passphrase">Koristiti nasumičnu pristupnu frazu</string>
|
||||
<string name="auth_disable_simplex_lock">Onemogućiti SimpleX Zaključavanje</string>
|
||||
<string name="servers_info_reconnect_server_title">Ponovo povezati server?</string>
|
||||
<string name="no_received_app_files">Nema primljenih niti poslanih datoteka</string>
|
||||
<string name="integrity_msg_bad_hash">neispravan hash poruke</string>
|
||||
<string name="alert_title_msg_bad_id">Neispravan ID poruke</string>
|
||||
<string name="servers_info_reconnect_servers_title">Ponovo povezati servere?</string>
|
||||
<string name="notification_preview_mode_message_desc">Prikazati kontakt i poruku</string>
|
||||
<string name="show_developer_options">Prikazati opcije za programere</string>
|
||||
<string name="alert_title_msg_bad_hash">Neispravan hash poruke</string>
|
||||
<string name="servers_info_reconnect_server_message">Ponovo povezati server kako biste prisilili dostavu poruke. To koristi dodatni saobraćaj.</string>
|
||||
<string name="integrity_msg_bad_id">neispravan ID poruke</string>
|
||||
<string name="xftp_servers_configured">Konfigurisani XFTP serveri</string>
|
||||
<string name="message_delivery_warning_title">Upozorenje pri isporuci poruke</string>
|
||||
<string name="connect_via_link_or_qr">Povezati se pomoću linka / QR koda</string>
|
||||
<string name="failed_to_create_user_duplicate_desc">Već imate chat profil sa istim prikaznim imenom. Molimo vas da odaberete drugo ime.</string>
|
||||
<string name="la_auth_failed">Greška u autentifikaciji</string>
|
||||
<string name="v4_3_improved_server_configuration">Unapređena konfiguracija servera</string>
|
||||
<string name="n_other_file_errors">%1$d ostale greška datoteke(a).</string>
|
||||
<string name="auth_unavailable">Autentifikacija nije dostupna</string>
|
||||
<string name="smp_servers_configured">Konfigurisani SMP serveri</string>
|
||||
<string name="auto_accept_contact">Automatsko prihvatanje</string>
|
||||
<string name="save_preferences_question">Sačuvati preference?</string>
|
||||
<string name="unable_to_open_browser_desc">Za pozive je potreban podrazumevani veb pretraživač. Molimo vas da konfigurišete podrazumevani pretraživač u sistemu i podelite više informacija sa programerima.</string>
|
||||
<string name="snd_group_event_member_unblocked">odblokirali ste %s</string>
|
||||
<string name="you_are_observer">Vi ste posmatrač.</string>
|
||||
<string name="v4_3_improved_privacy_and_security">Unapređena privatnost i bezbednost</string>
|
||||
<string name="v5_6_app_data_migration_descr">Migriraj na drugi uređaj pomoću QR koda.</string>
|
||||
<string name="group_preview_rejected">odbijeno</string>
|
||||
<string name="new_passphrase">Nova pristupna fraza…</string>
|
||||
<string name="v4_2_auto_accept_contact_requests">Automatsko prihvatanje zahteva za kontakt</string>
|
||||
<string name="only_your_contact_can_send_disappearing">Samo Vaši kontakti mogu slati poruke koje nestaju.</string>
|
||||
<string name="only_your_contact_can_send_voice">Samo Vaši kontakti mogu slati glasovne poruke.</string>
|
||||
<string name="chat_preferences_you_allow">Vi dozvoljavate</string>
|
||||
<string name="open_database_folder">Otvoriti fasciklu baze podataka</string>
|
||||
<string name="save_and_update_group_profile">Sačuvati i ažurirati grupni profil</string>
|
||||
<string name="v5_8_message_delivery_descr">Uz smanjenu potrošnju baterije.</string>
|
||||
<string name="connect_via_link_or_qr_from_clipboard_or_in_person">(skenirati ili nalepiti iz memorije)</string>
|
||||
<string name="connection_error_auth">Greška u vezi (AUTH)</string>
|
||||
<string name="contact_developers">Ažurirajte aplikaciju i kontaktirajte programere.</string>
|
||||
<string name="non_fatal_errors_occured_during_import">Tokom uvoza došlo je do nekih nefatalnih grešaka:</string>
|
||||
<string name="save_passphrase_in_settings">Sačuvati pristupnu frazu u podešavanjima</string>
|
||||
<string name="you_sent_group_invitation">Poslali ste grupnu pozivnicu</string>
|
||||
<string name="conn_event_enabled_pq">kvantno otporna e2e šifrovanju</string>
|
||||
<string name="only_your_contact_can_make_calls">Samo Vaši kontakti mogu upućivati pozive.</string>
|
||||
<string name="disable_sending_recent_history">Ne slati istoriju novim članovima.</string>
|
||||
<string name="group_members_can_send_voice">Članovi mogu da šalju glasovne poruke.</string>
|
||||
<string name="v5_5_message_delivery_descr">Uz smanjenu potrošnju baterije.</string>
|
||||
<string name="migrate_to_device_error_downloading_archive">Greška pri preuzimanju arhive</string>
|
||||
<string name="delete_chat_list_warning">Svi razgovori biće uklonjeni sa liste %s, a lista odstranjena</string>
|
||||
<string name="this_QR_code_is_not_a_link">Ovaj QR kod nije link!</string>
|
||||
<string name="connect_plan_already_connecting">Već se povezujete!</string>
|
||||
<string name="migrate_from_device_to_another_device">Migriraj na drugi uređaj</string>
|
||||
<string name="operator_open_changes">Otvoriti promene</string>
|
||||
<string name="decentralized">Decentralizovano</string>
|
||||
<string name="no_info_on_delivery">Nema informacija o prijem</string>
|
||||
<string name="connect_via_link">Povezati se pomoću linka</string>
|
||||
<string name="v5_2_fix_encryption">Zadržati Vaše konekcije</string>
|
||||
<string name="migrate_to_device_title">Migriraj ovde</string>
|
||||
<string name="connect_plan_connect_via_link">Povezati se pomoću linka?</string>
|
||||
<string name="install_simplex_chat_for_terminal">Instaliraj SimpleX Chat za terminal</string>
|
||||
<string name="network_smp_web_port_toggle">Koristiti web port</string>
|
||||
<string name="only_you_can_make_calls">Samo Vi možete da upućujete pozive.</string>
|
||||
<string name="app_check_for_updates_button_open">Otvoriti lokaciju datoteke</string>
|
||||
<string name="group_member_status_rejected">odbijeno</string>
|
||||
<string name="save_group_profile">Sačuvati grupni profil</string>
|
||||
<string name="only_you_can_send_disappearing">Samo vi možete slati poruke koje nestaju.</string>
|
||||
<string name="v4_4_verify_connection_security_desc">Uporedite sigurnosne kodove sa vašim kontaktima.</string>
|
||||
<string name="auto_accept_images">Automatsko prihvatanje slika</string>
|
||||
<string name="color_title">Naslov</string>
|
||||
<string name="wrong_passphrase">Neispravna pristupna fraza baze podataka</string>
|
||||
<string name="migrate_from_another_device">Migriraj sa drugog uređaja</string>
|
||||
<string name="only_you_can_send_voice">Samo vi možete slati glasovne poruke</string>
|
||||
<string name="only_your_contact_can_add_message_reactions">Samo vi možete stavljati reakcije na poruke.</string>
|
||||
</resources>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="m225.5-216-140-140 40-40.5 100 99 179-179L445-435 225.5-216Zm0-320-140-140 40-40.5 100 99 179-179L445-755 225.5-536ZM521-291.5V-349h354v57.5H521Zm0-320V-669h354v57.5H521Z"/></svg>
|
||||
|
After Width: | Height: | Size: 295 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M500-224Zm-335.5 57.5v-91q0-37.75 18.75-64.12Q202-348 231.68-361.67 298-391 358.5-406t121.28-15q37.97 0 74.55 6t74.17 17l-45.43 45q-26.57-5.5-51.47-8-24.89-2.5-51.36-2.5-56.74 0-109.74 11.5-53 11.5-116 42-14 7-23.25 21.73T222-257.26V-224h278v57.5H164.5Zm393 41.5v-121.5L778-466q9-8.5 19.75-12.5 10.76-4 21.51-4 11.73 0 22.49 4.25Q852.5-474 861.5-465l37 37q8.76 8.85 12.63 19.68Q915-397.5 915-386.75t-4.38 22.03q-4.38 11.28-13.05 19.74L679-125H557.5Zm299-262-37-37 37 37Zm-240 203h37.76L776.5-307l-17.89-19-18.88-18L616.5-222v38Zm142-142-19-18 37 37-18-19ZM480-480.5q-62 0-104.75-42.75T332.5-628q0-62 42.75-104.75T480-775.5q62 0 104.75 42.75T627.5-628q0 62-42.75 104.75T480-480.5Zm0-57.5q38 0 64-26t26-64q0-38-26-64t-64-26q-38 0-64 26t-26 64q0 38 26 64t64 26Zm0-90Z"/></svg>
|
||||
|
After Width: | Height: | Size: 889 B |
@@ -2250,7 +2250,6 @@
|
||||
<string name="chat_list_all">Semua</string>
|
||||
<string name="group_reports_active_one">1 laporan</string>
|
||||
<string name="archive_verb">Arsip</string>
|
||||
<string name="group_reports_archived_member_reports">Laporan anggota arsip</string>
|
||||
<string name="report_reason_other">Alasan lain</string>
|
||||
<string name="report_item_archived_by">laporan arsip oleh %s</string>
|
||||
<string name="archive_report">Arsip laporan</string>
|
||||
|
||||
@@ -266,7 +266,7 @@
|
||||
<string name="group_full_name_field">Nome completo del gruppo:</string>
|
||||
<string name="if_you_cannot_meet_in_person_scan_QR_in_video_call_or_ask_for_invitation_link"><![CDATA[Se non potete incontrarvi di persona, puoi <b>scansionare il codice QR nella videochiamata</b>, oppure il tuo contatto può condividere un link di invito.]]></string>
|
||||
<string name="full_backup">Backup dei dati dell\'app</string>
|
||||
<string name="keychain_is_storing_securely">Android Keystore è usato per memorizzare in modo sicuro la password; permette il funzionamento del servizio di notifica.</string>
|
||||
<string name="keychain_is_storing_securely">L\'archivio chiavi di Android è usato per memorizzare in modo sicuro la password; permette il funzionamento del servizio di notifica.</string>
|
||||
<string name="allow_your_contacts_to_send_voice_messages">Permetti ai tuoi contatti di inviare messaggi vocali.</string>
|
||||
<string name="chat_database_deleted">Database della chat eliminato</string>
|
||||
<string name="settings_section_title_icon">ICONA APP</string>
|
||||
@@ -274,7 +274,7 @@
|
||||
<string name="onboarding_notifications_mode_service_desc"><![CDATA[<b>Consuma più batteria</b>! L\'app funziona sempre in secondo piano: le notifiche vengono mostrate istantaneamente.]]></string>
|
||||
<string name="callstatus_calling">chiamata…</string>
|
||||
<string name="icon_descr_cancel_link_preview">annulla anteprima link</string>
|
||||
<string name="cannot_access_keychain">Impossibile accedere al Keystore per salvare la password del database</string>
|
||||
<string name="cannot_access_keychain">Impossibile accedere all\'archivio chiavi per salvare la password del database</string>
|
||||
<string name="alert_title_cant_invite_contacts">Impossibile invitare i contatti!</string>
|
||||
<string name="change_role">Cambia ruolo</string>
|
||||
<string name="snd_conn_event_switch_queue_phase_changing">cambio indirizzo…</string>
|
||||
@@ -285,7 +285,7 @@
|
||||
<string name="delete_link">Elimina link</string>
|
||||
<string name="create_address">Crea indirizzo</string>
|
||||
<string name="button_create_group_link">Crea link</string>
|
||||
<string name="database_encryption_will_be_updated">La password di crittografia del database verrà aggiornata e conservata nel Keystore.</string>
|
||||
<string name="database_encryption_will_be_updated">La password di crittografia del database verrà aggiornata e conservata nell\'archivio chiavi.</string>
|
||||
<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>
|
||||
@@ -399,7 +399,7 @@
|
||||
<string name="settings_section_title_help">AIUTO</string>
|
||||
<string name="chat_is_stopped_indication">Chat fermata</string>
|
||||
<string name="database_error">Errore del database</string>
|
||||
<string name="passphrase_is_different">La password del database è diversa da quella salvata nel Keystore.</string>
|
||||
<string name="passphrase_is_different">La password del database è diversa da quella salvata nell\'archivio chiavi.</string>
|
||||
<string name="encrypted_database">Database crittografato</string>
|
||||
<string name="enter_correct_passphrase">Inserisci la password giusta.</string>
|
||||
<string name="enter_passphrase">Inserisci la password…</string>
|
||||
@@ -497,7 +497,7 @@
|
||||
<string name="v4_4_verify_connection_security_desc">Confronta i codici di sicurezza con i tuoi contatti.</string>
|
||||
<string name="v4_4_disappearing_messages">Messaggi a tempo</string>
|
||||
<string name="v4_3_improved_privacy_and_security_desc">Nascondi la schermata dell\'app nelle app recenti.</string>
|
||||
<string name="keychain_allows_to_receive_ntfs">Android Keystore verrà usato per memorizzare in modo sicuro la password dopo il riavvio dell\'app o la modifica della password; consentirà di ricevere le notifiche.</string>
|
||||
<string name="keychain_allows_to_receive_ntfs">L\'archivio chiavi di Android verrà usato per memorizzare in modo sicuro la password dopo il riavvio dell\'app o la modifica della password; consentirà di ricevere le notifiche.</string>
|
||||
<string name="impossible_to_recover_passphrase"><![CDATA[<b>Nota bene</b>: NON potrai recuperare o cambiare la password se la perdi.]]></string>
|
||||
<string name="change_database_passphrase_question">Cambiare password del database\?</string>
|
||||
<string name="confirm_new_passphrase">Conferma nuova password…</string>
|
||||
@@ -505,7 +505,7 @@
|
||||
<string name="database_encrypted">Database crittografato!</string>
|
||||
<string name="database_passphrase_will_be_updated">La password di crittografia del database verrà aggiornata.</string>
|
||||
<string name="database_will_be_encrypted">Il database verrà crittografato.</string>
|
||||
<string name="database_will_be_encrypted_and_passphrase_stored">Il database verrà crittografato e la password conservata nel Keystore.</string>
|
||||
<string name="database_will_be_encrypted_and_passphrase_stored">Il database verrà crittografato e la password conservata nell\'archivio chiavi.</string>
|
||||
<string name="delete_files_and_media_question">Eliminare i file e i multimediali\?</string>
|
||||
<string name="delete_messages">Elimina messaggi</string>
|
||||
<string name="delete_messages_after">Elimina messaggi dopo</string>
|
||||
@@ -729,7 +729,7 @@
|
||||
<string name="leave_group_button">Esci</string>
|
||||
<string name="leave_group_question">Uscire dal gruppo\?</string>
|
||||
<string name="open_chat">Apri chat</string>
|
||||
<string name="restore_passphrase_not_found_desc">Password non trovata nel Keystore, inseriscila a mano. Potrebbe essere successo se hai ripristinato i dati dell\'app usando uno strumento di backup. In caso contrario, contatta gli sviluppatori.</string>
|
||||
<string name="restore_passphrase_not_found_desc">Password non trovata nell\'archivio chiavi, inseriscila a mano. Potrebbe essere successo se hai ripristinato i dati dell\'app usando uno strumento di backup. In caso contrario, contatta gli sviluppatori.</string>
|
||||
<string name="restore_database_alert_desc">Inserisci la password precedente dopo aver ripristinato il backup del database. Questa azione non può essere annullata.</string>
|
||||
<string name="store_passphrase_securely_without_recover">Conserva la password in modo sicuro, NON potrai accedere alla chat se la perdi.</string>
|
||||
<string name="restore_database_alert_confirm">Ripristina</string>
|
||||
@@ -871,8 +871,8 @@
|
||||
<string name="enter_correct_current_passphrase">Inserisci la password attuale corretta.</string>
|
||||
<string name="store_passphrase_securely">Conserva la password in modo sicuro, NON potrai cambiarla se la perdi.</string>
|
||||
<string name="remove_passphrase">Rimuovi</string>
|
||||
<string name="remove_passphrase_from_keychain">Rimuovere la password dal Keystore\?</string>
|
||||
<string name="save_passphrase_in_keychain">Salva la password nel Keystore</string>
|
||||
<string name="remove_passphrase_from_keychain">Rimuovere la password dall\'archivio chiavi?</string>
|
||||
<string name="save_passphrase_in_keychain">Salva la password nell\'archivio chiavi</string>
|
||||
<string name="chat_item_ttl_seconds">%s secondo/i</string>
|
||||
<string name="delete_files_and_media_desc">Questa azione non può essere annullata: tutti i file e i media ricevuti e inviati verranno eliminati. Rimarranno le immagini a bassa risoluzione.</string>
|
||||
<string name="enable_automatic_deletion_message">Questa azione non può essere annullata: i messaggi inviati e ricevuti prima di quanto selezionato verranno eliminati. Potrebbe richiedere diversi minuti.</string>
|
||||
@@ -2307,7 +2307,6 @@
|
||||
<string name="archive_report">Archivia la segnalazione</string>
|
||||
<string name="delete_report">Elimina la segnalazione</string>
|
||||
<string name="chat_list_group_reports">Segnalazioni</string>
|
||||
<string name="group_reports_archived_member_reports">Segnalazioni dei membri archiviate</string>
|
||||
<string name="group_reports_active_one">1 segnalazione</string>
|
||||
<string name="report_item_archived_by">segnalazione archiviata da %s</string>
|
||||
<string name="group_reports_active">%d segnalazioni</string>
|
||||
@@ -2359,6 +2358,22 @@
|
||||
<string name="v6_3_better_groups_performance">Prestazioni dei gruppi migliorate</string>
|
||||
<string name="v6_3_organize_chat_lists">Organizza le chat in elenchi</string>
|
||||
<string name="v6_3_set_message_expiration_in_chats">Imposta la scadenza dei messaggi nelle chat.</string>
|
||||
<string name="v6_3_reports">Invia resoconti privati</string>
|
||||
<string name="v6_3_reports">Invia segnalazioni private</string>
|
||||
<string name="v6_3_private_media_file_names">Nomi privati dei file multimediali.</string>
|
||||
<string name="group_member_status_rejected">rifiutato</string>
|
||||
<string name="group_preview_rejected">rifiutato</string>
|
||||
<string name="error_reading_passphrase">Errore di lettura della password del database</string>
|
||||
<string name="group_member_status_pending_approval">in attesa di approvazione</string>
|
||||
<string name="group_member_status_pending_approval_short">in attesa</string>
|
||||
<string name="operator_updated_conditions">Condizioni aggiornate</string>
|
||||
<string name="restore_passphrase_can_not_be_read_desc">La password nell\'archivio chiavi non può essere letta. Potrebbe essere successo dopo un aggiornamento di sistema incompatibile con l\'app. In caso contrario, contatta gli sviluppatori.</string>
|
||||
<string name="restore_passphrase_can_not_be_read_enter_manually_desc">La password nell\'archivio chiavi non può essere letta, inseriscila a mano. Potrebbe essere successo dopo un aggiornamento di sistema incompatibile con l\'app. In caso contrario, contatta gli sviluppatori.</string>
|
||||
<string name="members_will_be_removed_from_chat_cannot_be_undone">I membri verranno rimossi dalla chat, non è reversibile!</string>
|
||||
<string name="members_will_be_removed_from_group_cannot_be_undone">I membri verranno rimossi dal gruppo, non è reversibile!</string>
|
||||
<string name="button_remove_members_question">Rimuovere i membri?</string>
|
||||
<string name="unblock_members_desc">I messaggi di questi membri verranno mostrati!</string>
|
||||
<string name="unblock_members_for_all_question">Sbloccare i membri per tutti?</string>
|
||||
<string name="block_members_for_all_question">Bloccare i membri per tutti?</string>
|
||||
<string name="feature_roles_moderators">moderatori</string>
|
||||
<string name="block_members_desc">Tutti i nuovi messaggi di questi membri verranno nascosti!</string>
|
||||
</resources>
|
||||
|
||||
@@ -1496,9 +1496,30 @@
|
||||
<string name="group_reports_active_one">1 보고서</string>
|
||||
<string name="chat_list_add_list">리스트 추가</string>
|
||||
<string name="chat_list_all">전부</string>
|
||||
<string name="group_reports_archived_member_reports">보관된 멤버 리포트</string>
|
||||
<string name="delete_chat_list_warning">목록 %s의 모든 차트가 제거되었고, 목록도 삭제되었습니다.</string>
|
||||
<string name="chat_item_ttl_year">1 년</string>
|
||||
<string name="add_to_list">리스트에 추가하기</string>
|
||||
<string name="report_item_archived">보관된 보고서</string>
|
||||
<string name="report_item_archived_by">보관된 신고: %s</string>
|
||||
<string name="report_reason_community">커뮤니티 가이드라인 위반</string>
|
||||
<string name="report_archive_alert_title">신고를 보관하시겠습니까?</string>
|
||||
<string name="archive_report">신고 보관</string>
|
||||
<string name="chat_list_contacts">연락처</string>
|
||||
<string name="connection_error_blocked">연결이 차단되었습니다</string>
|
||||
<string name="connection_error_blocked_desc">연결이 서버 운영자에 의해 차단되었습니다:\n%1$s</string>
|
||||
<string name="chat_list_businesses">비즈니스</string>
|
||||
<string name="change_order_chat_list_menu_action">순서 변경</string>
|
||||
<string name="privacy_chat_list_open_links_ask">문의</string>
|
||||
<string name="connection_not_ready">연결이 준비되지 않았습니다.</string>
|
||||
<string name="change_automatic_deletion_question">자동 메시지 삭제를 변경하시겠습니까?</string>
|
||||
<string name="v6_3_better_groups_performance">그룹 성능 향상</string>
|
||||
<string name="report_archive_alert_desc_all">모든 신고가 보관됩니다.</string>
|
||||
<string name="report_archive_alert_title_all">모든 신고를 보관하시겠습니까?</string>
|
||||
<string name="archive_reports">신고 보관</string>
|
||||
<string name="change_list">목록 변경</string>
|
||||
<string name="enable_sending_member_reports">메시지를 운영자에게 신고할 수 있도록 허용합니다.</string>
|
||||
<string name="v6_3_better_privacy_and_security">더 나은 개인정보 보호 및 보안</string>
|
||||
<string name="report_archive_alert_title_nth">신고 %d건을 보관하시겠습니까?</string>
|
||||
<string name="failed_to_create_user_invalid_desc">이 표시 이름은 유효하지 않습니다. 다른 이름을 선택하세요.</string>
|
||||
<string name="remote_ctrl_error_timeout">데스크톱에 연결하는 동안 시간 초과되었습니다</string>
|
||||
</resources>
|
||||
|
||||
@@ -2305,7 +2305,6 @@
|
||||
<string name="delete_report">Rapport verwijderen</string>
|
||||
<string name="report_item_archived_by">gearchiveerd rapport door %s</string>
|
||||
<string name="group_reports_active_one">1 rapport</string>
|
||||
<string name="group_reports_archived_member_reports">Gearchiveerde ledenrapporten</string>
|
||||
<string name="group_reports_active">%d rapporten</string>
|
||||
<string name="group_reports_member_reports">Ledenrapporten</string>
|
||||
<string name="blocking_reason_content">Inhoud schendt de gebruiksvoorwaarden</string>
|
||||
@@ -2356,6 +2355,8 @@
|
||||
<string name="v6_3_mentions">Vermeld leden 👋</string>
|
||||
<string name="v6_3_organize_chat_lists">Organiseer chats in lijsten</string>
|
||||
<string name="v6_3_private_media_file_names">Namen van persoonlijke mediabestanden.</string>
|
||||
<string name="v6_3_reports">Privérapporten verzenden</string>
|
||||
<string name="v6_3_reports">Verstuur rapporten privé</string>
|
||||
<string name="v6_3_faster_sending_messages">Sneller verzenden van berichten.</string>
|
||||
<string name="group_preview_rejected">afgewezen</string>
|
||||
<string name="group_member_status_rejected">afgewezen</string>
|
||||
</resources>
|
||||
|
||||
@@ -2131,7 +2131,6 @@
|
||||
<string name="chat_list_all">Wszystkie</string>
|
||||
<string name="chat_list_businesses">Biznesy</string>
|
||||
<string name="group_reports_active_one">raport</string>
|
||||
<string name="group_reports_archived_member_reports">Zarchiwizowane raporty członków</string>
|
||||
<string name="privacy_chat_list_open_links_ask">Zapytaj</string>
|
||||
<string name="operator_conditions_accepted_for_some"><![CDATA[Warunki są już akceptowane dla następujących operatorów: <b>%s</b>.]]></string>
|
||||
<string name="operator_same_conditions_will_be_applied"><![CDATA[Te same warunki będą miały zastosowanie do operatora <b>%s</b>.]]></string>
|
||||
|
||||
@@ -323,7 +323,7 @@
|
||||
<string name="auth_device_authentication_is_not_enabled_you_can_turn_on_in_settings_once_enabled">A autenticação do dispositivo não está habilitada. Você pode ativar o Bloqueio SimpleX em Configurações, depois de ativar a autenticação do dispositivo.</string>
|
||||
<string name="no_call_on_lock_screen">Desativar</string>
|
||||
<string name="icon_descr_server_status_disconnected">Desconectado</string>
|
||||
<string name="disappearing_messages_are_prohibited">Mensagens que temporárias são proibidas neste grupo.</string>
|
||||
<string name="disappearing_messages_are_prohibited">Mensagens temporárias são proibidas.</string>
|
||||
<string name="error_saving_file">Erro ao salvar arquivo</string>
|
||||
<string name="display_name_cannot_contain_whitespace">O nome de exibição não pode conter espaços em branco.</string>
|
||||
<string name="encrypted_audio_call">chamada de áudio criptografada ponta-a-ponta</string>
|
||||
@@ -552,7 +552,7 @@
|
||||
<string name="sender_may_have_deleted_the_connection_request">O remetente pode ter excluído a solicitação de conexão.</string>
|
||||
<string name="periodic_notifications_disabled">Notificações periódicas estão desativadas!</string>
|
||||
<string name="service_notifications_disabled">As notificações instantâneas estão desativadas!</string>
|
||||
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Para preservar sua privacidade, em vez de notificações push, o aplicativo tem um<b>serviço em segundo plano SimpleX</b> - ele usa uma porcentagem da bateria por dia.]]></string>
|
||||
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Para melhorar a privacidade, <b>SimpleX executa em segundo plano</b> em vez de usar notificações push.]]></string>
|
||||
<string name="notifications_mode_off">Executa quando o aplicativo está aberto</string>
|
||||
<string name="icon_descr_sent_msg_status_sent">enviado</string>
|
||||
<string name="icon_descr_sent_msg_status_send_failed">o envio falhou</string>
|
||||
@@ -587,7 +587,7 @@
|
||||
<string name="smp_servers">Servidores SMP</string>
|
||||
<string name="smp_servers_preset_address">Endereço do servidor pré-definido</string>
|
||||
<string name="reject">Rejeitar</string>
|
||||
<string name="integrity_msg_skipped">%1$d mensagem(s) ignorada(s)</string>
|
||||
<string name="integrity_msg_skipped">%1$d mensagem(ens) ignorada(s)</string>
|
||||
<string name="protect_app_screen">Proteger a tela do aplicativo</string>
|
||||
<string name="send_link_previews">Enviar prévias de links</string>
|
||||
<string name="privacy_and_security">Privacidade e segurança</string>
|
||||
@@ -1062,7 +1062,7 @@
|
||||
<string name="you_can_turn_on_lock">Você pode ativar o bloqueio SimpleX via configurações.</string>
|
||||
<string name="alert_title_msg_bad_hash">Hash de mensagem incorreta</string>
|
||||
<string name="alert_text_msg_bad_hash">O hash da mensagem anterior é diferente.</string>
|
||||
<string name="alert_text_decryption_error_n_messages_failed_to_decrypt">%1$d descriptografia das mensagens falhou</string>
|
||||
<string name="alert_text_decryption_error_n_messages_failed_to_decrypt">%1$d mensagens falharam em serem descriptografadas.</string>
|
||||
<string name="alert_title_msg_bad_id">ID de mensagem incorreta</string>
|
||||
<string name="alert_text_msg_bad_id">A ID da próxima mensagem está incorreta (menor ou igual à anterior).
|
||||
\nIsso pode acontecer por causa de algum bug ou quando a conexão está comprometida.</string>
|
||||
@@ -1149,7 +1149,7 @@
|
||||
<string name="enter_welcome_message_optional">Digite a mensagem de boas-vindas... (opcional)</string>
|
||||
<string name="save_auto_accept_settings">Salvar configurações de aceitação automática</string>
|
||||
<string name="opening_database">Abrindo banco de dados…</string>
|
||||
<string name="auth_open_chat_profiles">Abrir perfis de bate-papo</string>
|
||||
<string name="auth_open_chat_profiles">Alterar perfis de conversa</string>
|
||||
<string name="share_address_with_contacts_question">Compartilhar endereço com os contatos\?</string>
|
||||
<string name="your_contacts_will_remain_connected">Seus contatos continuarão conectados.</string>
|
||||
<string name="all_app_data_will_be_cleared">Todos os dados do aplicativo serão excluídos.</string>
|
||||
@@ -1249,7 +1249,7 @@
|
||||
<string name="rcv_conn_event_verification_code_reset">código de segurança alterado</string>
|
||||
<string name="renegotiate_encryption">Renegociar criptografia</string>
|
||||
<string name="sender_at_ts">%s em %s</string>
|
||||
<string name="files_are_prohibited_in_group">Arquivos e mídia são proibidos neste grupo.</string>
|
||||
<string name="files_are_prohibited_in_group">Arquivos e mídias são proibidos.</string>
|
||||
<string name="prohibit_sending_files">Proibir o envio de arquivos e mídia.</string>
|
||||
<string name="snd_conn_event_ratchet_sync_ok">criptografia OK para %s</string>
|
||||
<string name="fix_connection_not_supported_by_group_member">Correção não suportada pelo membro do grupo</string>
|
||||
@@ -2065,15 +2065,15 @@
|
||||
<string name="switching_profile_error_message">Sua conexão foi movida para %s, mas um erro inesperado ocorreu ao redirecioná-lo para o seu perfil.</string>
|
||||
<string name="n_file_errors">%1$d erro(s) de arquivo(s):
|
||||
\n%2$s</string>
|
||||
<string name="n_other_file_errors">%1$d outro erro de arquivo.</string>
|
||||
<string name="n_other_file_errors">%1$d outro(s) erro(s) de arquivo(s).</string>
|
||||
<string name="error_forwarding_messages">Erro ao encaminhar mensagens.</string>
|
||||
<string name="forward_alert_title_messages_to_forward">Encaminhar %1$s mensagens?</string>
|
||||
<string name="forward_alert_forward_messages_without_files">Encaminhar mensagens sem arquivos?</string>
|
||||
<string name="forward_files_messages_deleted_after_selection_desc">As mensagens foram excluidas após vocês selecioná-las.</string>
|
||||
<string name="forward_alert_title_nothing_to_forward">Nada para encaminhar!</string>
|
||||
<string name="forward_files_in_progress_desc">%1$d arquivo(s) ainda estão sendo baixados.</string>
|
||||
<string name="forward_files_missing_desc">%1$d arquivos foram excluidos.</string>
|
||||
<string name="forward_files_not_accepted_desc">%1$d arquivos não foram baixados.</string>
|
||||
<string name="forward_files_in_progress_desc">%1$d o(s) arquivo(s) ainda está(ão) sendo baixado(s).</string>
|
||||
<string name="forward_files_missing_desc">%1$d arquivo(s) foi(ram) excluído(s).</string>
|
||||
<string name="forward_files_not_accepted_desc">%1$d arquivo(s) não foi(ram) baixado(s).</string>
|
||||
<string name="forward_files_not_accepted_receive_files">Baixar</string>
|
||||
<string name="forward_multiple">Emcaminhar mensagens…</string>
|
||||
<string name="compose_forward_messages_n">Encaminhando %1$s mensagens.</string>
|
||||
@@ -2121,9 +2121,103 @@
|
||||
<string name="v6_1_better_user_experience">Melhor experiência do usuário</string>
|
||||
<string name="connect_plan_you_are_already_connected_with_vName"><![CDATA[Você já está conectado com <b>%1$s</b>.]]></string>
|
||||
<string name="archive_verb">Arquivar</string>
|
||||
<string name="privacy_chat_list_open_links_ask">Pergunte</string>
|
||||
<string name="privacy_chat_list_open_links_ask">Perguntar</string>
|
||||
<string name="appearance_bars_blur_radius">Desfoque</string>
|
||||
<string name="group_reports_archived_member_reports">Denúncias arquivadas de membros</string>
|
||||
<string name="business_address">Endereço comercial</string>
|
||||
<string name="report_item_archived">denúncia arquivada</string>
|
||||
<string name="button_delete_chat">Deletar chat</string>
|
||||
<string name="operator_conditions_failed_to_load">O texto das condições atuais não pôde ser carregado, você pode revisar as condições por meio deste link:</string>
|
||||
<string name="operator_same_conditions_will_be_applied"><![CDATA[As mesmas condições serão aplicadas ao operador <b>%s</b>.]]></string>
|
||||
<string name="v6_1_customizable_message_descr">Formato de mensagem personalizável.</string>
|
||||
<string name="v6_3_faster_sending_messages">Envio de mensagens mais rápido.</string>
|
||||
<string name="onboarding_notifications_mode_periodic_desc_short">Checar mensagens a cada 10 minutos</string>
|
||||
<string name="block_members_desc">Todas novas mensagens destes membros serão ocultadas</string>
|
||||
<string name="error_updating_server_title">Erro ao atualizar servidor</string>
|
||||
<string name="enable_sending_member_reports">Permitir denunciar mensagens aos moderadores.</string>
|
||||
<string name="v6_3_better_privacy_and_security">Melhorias de privacidade e segurança</string>
|
||||
<string name="v6_3_organize_chat_lists_descr">Não perca mensagens importantes.</string>
|
||||
<string name="connect_plan_chat_already_exists">Chat já existente!</string>
|
||||
<string name="debug_logs">Ativar logs</string>
|
||||
<string name="block_members_for_all_question">Bloquear membros para todos?</string>
|
||||
<string name="v6_1_delete_many_messages_descr">Deletar ou moderar até 200 mensagens.</string>
|
||||
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[As condições serão aceitas pelo(s) operador(es): <b>%s</b>.]]></string>
|
||||
<string name="operators_conditions_will_also_apply"><![CDATA[Essas condições também serão aplicadas para: <b>%s</b>.]]></string>
|
||||
<string name="direct_messages_are_prohibited_in_chat">Mensagens diretas entre membros são proibidas neste chat.</string>
|
||||
<string name="v6_3_better_groups_performance">Melhor desempenho de grupos</string>
|
||||
<string name="all_message_and_files_e2e_encrypted"><![CDATA[Todas mensagens e arquivos são enviados <b>com criptografia de ponta-a-ponta</b>, e com segurança pós-quântica em mensagens diretas.]]></string>
|
||||
<string name="delete_chat_for_self_cannot_undo_warning">Chat será deletado para você - essa ação não pode ser desfeita!</string>
|
||||
<string name="operator_conditions_accepted_on">Condições aceitas em: %s.</string>
|
||||
<string name="direct_messages_are_prohibited">Mensagens diretas entre membros são proibidas.</string>
|
||||
<string name="operator_conditions_will_be_applied"><![CDATA[Essas condições também serão aplicadas para: <b>%s</b>.]]></string>
|
||||
<string name="change_order_chat_list_menu_action">Alterar ordem</string>
|
||||
<string name="error_reading_passphrase">Erro ao ler a senha do banco de dados</string>
|
||||
<string name="error_accepting_operator_conditions">Erro ao aceitar condições</string>
|
||||
<string name="report_reason_community">Violação das diretrizes da comunidade</string>
|
||||
<string name="failed_to_save_servers">Erro ao salvar servidores</string>
|
||||
<string name="group_reports_active">%d denúncias</string>
|
||||
<string name="group_reports_active_one">1 denúncia</string>
|
||||
<string name="one_time_link_can_be_used_with_one_contact_only"><![CDATA[1-link temporário pode ser usado <i>com apenas um contato</i> - compartilhe pessoalmente ou por qualquer aplicativo de mensagens.]]></string>
|
||||
<string name="prefs_error_saving_settings">Erro ao salvar configurações</string>
|
||||
<string name="create_1_time_link">Criar link único</string>
|
||||
<string name="sync_connection_confirm">Reparar</string>
|
||||
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[Para usar os servidores de <b>%s</b>, aceite as condições de uso.]]></string>
|
||||
<string name="blocking_reason_content">O conteúdo viola as condições de uso</string>
|
||||
<string name="connection_error_blocked">Conexão bloqueada</string>
|
||||
<string name="connection_error_blocked_desc">A conexão está bloqueada pelo operador do servidor:\n%1$s.</string>
|
||||
<string name="file_error_blocked">O arquivo está bloqueado pelo operador do servidor:\n%1$s.</string>
|
||||
<string name="delete_report">Deletar denúncia</string>
|
||||
<string name="chat_list_businesses">Empresas</string>
|
||||
<string name="change_list">Alterar lista</string>
|
||||
<string name="onboarding_network_operators_continue">Continuar</string>
|
||||
<string name="error_saving_database">Erro ao salvar banco de dados</string>
|
||||
<string name="operators_conditions_accepted_for"><![CDATA[As condições são aceitas pelo(s) operador(es): <b>%s</b>.]]></string>
|
||||
<string name="error_initializing_web_view_wrong_arch">Erro ao inicializar o WebView. Certifique-se de que você tenha o WebView instalado e que sua arquitetura suportada seja arm64.\nErro: %s</string>
|
||||
<string name="change_automatic_deletion_question">Alterar exclusão automática de mensagens?</string>
|
||||
<string name="disable_automatic_deletion_question">Desativar exclusão automática de mensagens?</string>
|
||||
<string name="delete_chat_list_question">Deletar lista?</string>
|
||||
<string name="chat_item_ttl_year">1 ano</string>
|
||||
<string name="chat_item_ttl_default">padrão (%s)</string>
|
||||
<string name="operators_conditions_will_be_accepted_for"><![CDATA[As condições serão aceitas pelo(s) operador(es): <b>%s</b>.]]></string>
|
||||
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[As mesmas condições serão aplicadas ao(s) operador(es): <b>%s</b>.]]></string>
|
||||
<string name="operator_conditions_accepted_for_enabled_operators_on">As condições serão aceitas automaticamente para operadores habilitados em: %s.</string>
|
||||
<string name="connection_security">Segurança de conexão</string>
|
||||
<string name="operator_conditions_will_be_accepted_on">As condições serão aceitas em: %s.</string>
|
||||
<string name="operator_conditions_accepted_for_some"><![CDATA[As condições já foram aceitas pelo(s) seguinte(s) operador(es): <b>%s</b>.]]></string>
|
||||
<string name="operator_conditions_of_use">Condições de uso</string>
|
||||
<string name="error_adding_server">Erro ao adicionar servidor</string>
|
||||
<string name="v6_2_business_chats">Chats de empresas</string>
|
||||
<string name="v6_2_network_decentralization_enable_flux_reason">para melhoria da privacidade de metadados.</string>
|
||||
<string name="v6_3_faster_deletion_of_groups">Exclusão mais rápida de grupos.</string>
|
||||
<string name="error_creating_chat_tags">Erro ao criar lista de chat</string>
|
||||
<string name="error_loading_chat_tags">Erro ao carregar lista de chats</string>
|
||||
<string name="error_updating_chat_tags">Erro ao atualizar a lista de chats</string>
|
||||
<string name="chat_list_contacts">Contatos</string>
|
||||
<string name="chat_list_favorites">Favoritos</string>
|
||||
<string name="create_list">Criar lista</string>
|
||||
<string name="edit_chat_list_menu_action">Editar</string>
|
||||
<string name="settings_message_shape_corner">Canto</string>
|
||||
<string name="v6_2_network_decentralization_enable_flux">Ativar flux</string>
|
||||
<string name="report_archive_alert_desc_all">Todas denúncias serão arquivadas para você.</string>
|
||||
<string name="report_archive_alert_title_all">Arquivar todas denúncias?</string>
|
||||
<string name="report_archive_alert_title_nth">Arquivar %d denúncias?</string>
|
||||
<string name="archive_reports">Arquivar denúncias</string>
|
||||
<string name="report_archive_for_all_moderators">Para todos moderadores</string>
|
||||
<string name="report_archive_for_me">Para mim</string>
|
||||
<string name="chat_ttl_options_footer">Deletar mensagens de chat do seu dispositivo.</string>
|
||||
<string name="delete_chat_question">Excluir chat?</string>
|
||||
<string name="delete_chat_for_all_members_cannot_undo_warning">O chat será deletado para todos os membros - essa ação não pode ser desfeita!</string>
|
||||
<string name="disable_automatic_deletion">Desativar exclusão de mensagens</string>
|
||||
<string name="encryption_renegotiation_in_progress">Renegociação de criptografia em andamento.</string>
|
||||
<string name="delete_chat_list_menu_action">Deletar</string>
|
||||
<string name="call_desktop_permission_denied_chrome">Clique no botão de informação perto do campo de endereço para permitir usar o microfone.</string>
|
||||
<string name="onboarding_network_operators_conditions_will_be_accepted">As condições serão aceitas para operadores habilitados após 30 dias.</string>
|
||||
<string name="onboarding_network_operators_app_will_use_for_routing">Por exemplo, se o seu contato receber mensagens por meio de um servidor SimpleX Chat, seu aplicativo as entregará por meio de um servidor Flux.</string>
|
||||
<string name="connection_not_ready">A conexão não está pronta.</string>
|
||||
<string name="errors_in_servers_configuration">Erros nas configurações de servidores.</string>
|
||||
<string name="for_chat_profile">Para o perfil de chat %s:</string>
|
||||
<string name="sync_connection_desc">A conexão requer renegociação de criptografia.</string>
|
||||
<string name="sync_connection_question">Reparar conexão?</string>
|
||||
<string name="error_creating_report">Erro ao criar denúncia</string>
|
||||
<string name="info_row_chat">Chat</string>
|
||||
<string name="your_servers">Seus servidores</string>
|
||||
</resources>
|
||||
|
||||
@@ -971,4 +971,4 @@
|
||||
<string name="all_users">Todos os perfis</string>
|
||||
<string name="connect_plan_already_connecting">Já conectando!</string>
|
||||
<string name="connect_plan_already_joining_the_group">Já entrando no grupo!</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -754,7 +754,7 @@
|
||||
<string name="invite_prohibited_description">Вы пытаетесь пригласить инкогнито контакт в группу, где Вы используете свой основной профиль</string>
|
||||
<!-- GroupChatInfoView.kt -->
|
||||
<string name="button_add_members">Пригласить членов группы</string>
|
||||
<string name="group_info_section_title_num_members">УЧАСТНИКОВ ГРУППЫ: %1$s</string>
|
||||
<string name="group_info_section_title_num_members">%1$s ЧЛЕНОВ ГРУППЫ</string>
|
||||
<string name="group_info_member_you">Вы: %1$s</string>
|
||||
<string name="button_delete_group">Удалить группу</string>
|
||||
<string name="delete_group_question">Удалить группу?</string>
|
||||
@@ -2296,8 +2296,8 @@
|
||||
<string name="network_preset_servers_title">Серверы по умолчанию</string>
|
||||
<string name="member_role_will_be_changed_with_notification_chat">Роль будет изменена на %s. Все участники разговора получат уведомление.</string>
|
||||
<string name="chat_main_profile_sent">Ваш профиль будет отправлен участникам разговора.</string>
|
||||
<string name="operator_same_conditions_will_be_applied"><![CDATA[The same conditions will apply to operator <b>%s</b>.]]></string>
|
||||
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[The same conditions will apply to operator(s): <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_conditions_of_use">Условия использования</string>
|
||||
<string name="operator_added_xftp_servers">Дополнительные серверы файлов и медиа</string>
|
||||
<string name="error_updating_server_title">Ошибка сохранения сервера</string>
|
||||
@@ -2365,4 +2365,97 @@
|
||||
<string name="error_loading_chat_tags">Ошибка при загрузке списков чатов</string>
|
||||
<string name="chat_list_contacts">Контакты</string>
|
||||
<string name="duplicated_list_error">Название списка и эмодзи должны быть разными для всех списков.</string>
|
||||
</resources>
|
||||
<string name="report_verb">Пожаловаться</string>
|
||||
<string name="report_reason_spam">Спам</string>
|
||||
<string name="report_compose_reason_header_spam">Пожаловаться на спам: увидят только модераторы группы.</string>
|
||||
<string name="change_automatic_chat_deletion_message">Это действие не может быть отмененено - сообщения, отправленные и полученные в этом чате ранее чем выбранное, будут удалены</string>
|
||||
<string name="v6_3_mentions_descr">Получайте уведомления от упоминаний.</string>
|
||||
<string name="member_reports_are_prohibited">Сообщения о нарушениях запрещены в этой группе.</string>
|
||||
<string name="report_compose_reason_header_community">Пожаловаться на нарушение: увидят только модераторы группы.</string>
|
||||
<string name="text_field_set_chat_placeholder">Установить имя чата…</string>
|
||||
<string name="v6_3_better_groups_performance">Улучшенная производительность групп</string>
|
||||
<string name="v6_3_private_media_file_names">Приватные названия медиафайлов.</string>
|
||||
<string name="blocking_reason_spam">Спам</string>
|
||||
<string name="chat_list_group_reports">Сообщения о нарушениях</string>
|
||||
<string name="unread_mentions">Непрочитанные упоминания</string>
|
||||
<string name="privacy_chat_list_open_links_yes">Да</string>
|
||||
<string name="v6_3_mentions">Упоминайте участников 👋</string>
|
||||
<string name="v6_3_better_privacy_and_security">Улучшенная приватность и безопасность</string>
|
||||
<string name="v6_3_faster_deletion_of_groups">Ускорено удаление групп.</string>
|
||||
<string name="v6_3_faster_sending_messages">Ускорена отправка сообщений.</string>
|
||||
<string name="v6_3_reports_descr">Помогайте администраторам модерировать их группы.</string>
|
||||
<string name="v6_3_organize_chat_lists">Организуйте чаты в списки</string>
|
||||
<string name="v6_3_reports">Вы можете сообщить о нарушениях</string>
|
||||
<string name="v6_3_set_message_expiration_in_chats">Установите время исчезания сообщений в чатах.</string>
|
||||
<string name="max_group_mentions_per_message_reached">Вы можете упомянуть до %1$s пользователей в одном сообщении!</string>
|
||||
<string name="report_reason_alert_title">Причина сообщения?</string>
|
||||
<string name="report_archive_alert_desc">Эта жалоба будет архивирована для вас.</string>
|
||||
<string name="enable_sending_member_reports">Разрешить отправлять сообщения о нарушениях модераторам.</string>
|
||||
<string name="blocking_reason_content">Содержание нарушает условия использования</string>
|
||||
<string name="error_reading_passphrase">Ошибка чтения пароля базы данных</string>
|
||||
<string name="report_item_archived_by">сообщение о нарушении заархивировано %s</string>
|
||||
<string name="report_reason_community">Нарушение правил группы</string>
|
||||
<string name="report_reason_illegal">Неприемлемое сообщение</string>
|
||||
<string name="report_reason_other">Другая причина</string>
|
||||
<string name="report_reason_profile">Неприемлемый профиль</string>
|
||||
<string name="group_reports_active">%d сообщений о нарушениях</string>
|
||||
<string name="error_creating_report">Ошибка создания сообщения о нарушении</string>
|
||||
<string name="connection_error_blocked">Соединение заблокировано</string>
|
||||
<string name="connection_error_blocked_desc">Соединение заблокировано сервером оператора:\n%1$s.</string>
|
||||
<string name="privacy_chat_list_open_links_ask">Спросить</string>
|
||||
<string name="disable_automatic_deletion_question">Отключить автоматическое удаление сообщений?</string>
|
||||
<string name="chat_ttl_options_footer">Удалить сообщения с вашего устройства.</string>
|
||||
<string name="disable_automatic_deletion">Отключить удаление сообщений</string>
|
||||
<string name="chat_item_ttl_default">по умолчанию (%s)</string>
|
||||
<string name="report_archive_alert_desc_all">Все сообщения о нарушениях будут заархивированы для вас.</string>
|
||||
<string name="report_archive_alert_title_all">Архивировать все сообщения о нарушениях?</string>
|
||||
<string name="report_archive_alert_title_nth">Архивировать %d сообщений о нарушениях?</string>
|
||||
<string name="report_archive_for_me">Для меня</string>
|
||||
<string name="archive_report">Архивировать сообщение о нарушении</string>
|
||||
<string name="archive_reports">Архивировать сообщения о нарушениях</string>
|
||||
<string name="delete_report">Удалить сообщение о нарушении</string>
|
||||
<string name="file_error_blocked">Файл заблокирован оператором сервера:\n%1$s.</string>
|
||||
<string name="report_archive_for_all_moderators">Для всех модераторов</string>
|
||||
<string name="group_reports_active_one">1 сообщение о нарушении</string>
|
||||
<string name="change_automatic_deletion_question">Измененить автоматическое удаление сообщений?</string>
|
||||
<string name="chat_item_ttl_year">1 год</string>
|
||||
<string name="v6_3_organize_chat_lists_descr">Не пропустите важные сообщения.</string>
|
||||
<string name="prefs_error_saving_settings">Ошибка сохранения настроек</string>
|
||||
<string name="report_item_archived">заархивированное сообщение о нарушении</string>
|
||||
<string name="archive_verb">архивировать</string>
|
||||
<string name="report_archive_alert_title">Архивировать сообщение о нарушении?</string>
|
||||
<string name="restore_passphrase_can_not_be_read_desc">Пароль не может быть прочитан из Keystore. Это могло произойти после обновления системы, несовместимого с приложением. Если это не так, обратитесь к разработчикам.</string>
|
||||
<string name="restore_passphrase_can_not_be_read_enter_manually_desc">Пароль не может быть прочитан из Keystore, пожалуйста, введите его. Это могло произойти после обновления системы, несовместимого с приложением. Если это не так, обратитесь к разработчикам.</string>
|
||||
<string name="group_member_role_moderator">модератор</string>
|
||||
<string name="group_member_status_pending_approval">ожидает утверждения</string>
|
||||
<string name="group_member_status_pending_approval_short">ожидает</string>
|
||||
<string name="operator_updated_conditions">Обновленные условия</string>
|
||||
<string name="disable_sending_member_reports">Запретить жаловаться модераторам группы.</string>
|
||||
<string name="group_members_can_send_reports">Члены группы могут пожаловаться модераторам.</string>
|
||||
<string name="disable_automatic_deletion_message">Сообщения в этом чате никогда не будут удалены.</string>
|
||||
<string name="privacy_chat_list_open_links">Открыть ссылку из списка чатов</string>
|
||||
<string name="privacy_chat_list_open_web_link_question">Открыть веб-ссылку?</string>
|
||||
<string name="report_compose_reason_header_profile">Пожаловаться на профиль: увидят только модераторы группы.</string>
|
||||
<string name="group_reports_member_reports">Сообщения о нарушениях</string>
|
||||
<string name="report_compose_reason_header_other">Пожаловаться: увидят только модераторы группы.</string>
|
||||
<string name="mute_all_chat">Выключить уведомления для всех</string>
|
||||
<string name="network_smp_web_port_footer">Использовать TCP-порт %1$s, когда порт не указан.</string>
|
||||
<string name="network_smp_web_port_toggle">Использовать веб-порт</string>
|
||||
<string name="privacy_chat_list_open_links_no">Нет</string>
|
||||
<string name="report_compose_reason_header_illegal">Пожаловаться на сообщение: увидят только модераторы группы.</string>
|
||||
<string name="group_preview_rejected">отклонён</string>
|
||||
<string name="notification_group_report">Сообщение о нарушении: %s</string>
|
||||
<string name="network_smp_web_port_section_title">TCP-порт для отправки сообщений</string>
|
||||
<string name="privacy_chat_list_open_web_link">Открыть ссылку</string>
|
||||
<string name="group_member_status_rejected">отклонён</string>
|
||||
<string name="report_item_visibility_moderators">Только отправитель и модераторы видят это</string>
|
||||
<string name="report_item_visibility_submitter">Только вы и модераторы видят это</string>
|
||||
<string name="unblock_members_for_all_question">Разблокировать членов для всех?</string>
|
||||
<string name="unblock_members_desc">Сообщения от этих членов группы будут показаны!</string>
|
||||
<string name="block_members_desc">Все новые сообщения от этих членов группы будут скрыты!</string>
|
||||
<string name="block_members_for_all_question">Заблокировать членов для всех?</string>
|
||||
<string name="members_will_be_removed_from_group_cannot_be_undone">Члены группы будут удалены - это действие нельзя отменить!</string>
|
||||
<string name="members_will_be_removed_from_chat_cannot_be_undone">Участники будут удалены из разговора - это действие нельзя отменить!</string>
|
||||
<string name="feature_roles_moderators">модераторы</string>
|
||||
<string name="button_remove_members_question">Удалить членов группы?</string>
|
||||
</resources>
|
||||
|
||||
@@ -2143,7 +2143,6 @@
|
||||
<string name="archive_report">Raporu arşivle</string>
|
||||
<string name="report_item_archived_by">%s tarafından arşivlenen rapor</string>
|
||||
<string name="group_reports_active_one">1 rapor</string>
|
||||
<string name="group_reports_archived_member_reports">Arşivlenmiş üye raporları</string>
|
||||
<string name="operators_conditions_will_be_accepted_for"><![CDATA[Operatör(ler) için koşullar kabul edilecektir: <b>%s</b>.]]></string>
|
||||
<string name="privacy_chat_list_open_links_ask">Sor</string>
|
||||
<string name="chat_item_ttl_year">1 yıl</string>
|
||||
|
||||
@@ -1226,7 +1226,7 @@
|
||||
<string name="change_database_passphrase_question">Змінити ключову фразу бази даних?</string>
|
||||
<string name="cannot_access_keychain">Не вдається отримати доступ до сховища ключів для збереження пароля бази даних</string>
|
||||
<string name="save_passphrase_and_open_chat">Зберегти ключову фразу і відкрити чат</string>
|
||||
<string name="restore_passphrase_not_found_desc">Ключова фраза не знайдена в сховищі ключів, будь ласка, введіть її вручну. Це може трапитися, якщо ви відновили дані додатка за допомогою інструменту резервного копіювання. Якщо це не так, зверніться до розробників.</string>
|
||||
<string name="restore_passphrase_not_found_desc">Пароль не знайдено в сховищі ключів, введіть його вручну. Це могло статися, якщо ви відновили дані додатка за допомогою інструмента резервного копіювання. Якщо це не так, зверніться до розробників.</string>
|
||||
<string name="delete_chat_profile">Видалити профіль чату</string>
|
||||
<string name="ttl_sec">%d сек</string>
|
||||
<string name="search_verb">Пошук</string>
|
||||
@@ -2308,7 +2308,6 @@
|
||||
<string name="group_reports_active">%d повідомлень</string>
|
||||
<string name="group_reports_member_reports">Повідомлення учасників</string>
|
||||
<string name="chat_list_group_reports">Повідомлення</string>
|
||||
<string name="group_reports_archived_member_reports">Архівовані повідомлення учасників</string>
|
||||
<string name="blocking_reason_content">Вміст порушує умови використання</string>
|
||||
<string name="blocking_reason_spam">Спам</string>
|
||||
<string name="file_error_blocked">Файл заблоковано оператором сервера: \n%1$s.</string>
|
||||
@@ -2346,4 +2345,32 @@
|
||||
<string name="member_reports_are_prohibited">Повідомлення модераторам заборонено в цій групі.</string>
|
||||
<string name="group_members_can_send_reports">Учасники можуть повідомляти повідомлення модераторам.</string>
|
||||
<string name="enable_sending_member_reports">Дозволити повідомляти повідомлення модераторам.</string>
|
||||
<string name="group_preview_rejected">відхилено</string>
|
||||
<string name="group_member_status_rejected">відхилено</string>
|
||||
<string name="v6_3_better_groups_performance">Краща продуктивність груп</string>
|
||||
<string name="v6_3_organize_chat_lists_descr">Не пропускайте важливі повідомлення.</string>
|
||||
<string name="v6_3_mentions_descr">Отримуйте сповіщення, коли вас згадують.</string>
|
||||
<string name="v6_3_reports_descr">Допоможіть адміністраторам модерувати їхні групи.</string>
|
||||
<string name="v6_3_organize_chat_lists">Організовуйте чати в списки</string>
|
||||
<string name="v6_3_private_media_file_names">Приватні імена медіа-файлів.</string>
|
||||
<string name="v6_3_reports">Надсилати приватні звіти</string>
|
||||
<string name="v6_3_better_privacy_and_security">Краща конфіденційність та безпека</string>
|
||||
<string name="v6_3_faster_sending_messages">Швидша відправка повідомлень.</string>
|
||||
<string name="v6_3_mentions">Згадуйте учасників 👋</string>
|
||||
<string name="v6_3_set_message_expiration_in_chats">Встановлюйте термін придатності повідомлень у чатах.</string>
|
||||
<string name="v6_3_faster_deletion_of_groups">Швидше видалення груп.</string>
|
||||
<string name="error_reading_passphrase">Помилка зчитування пароля бази даних</string>
|
||||
<string name="restore_passphrase_can_not_be_read_desc">Пароль у сховищі ключів не можна зчитати. Це могло статися після оновлення системи, несумісного з додатком. Якщо це не так, зверніться до розробників.</string>
|
||||
<string name="restore_passphrase_can_not_be_read_enter_manually_desc">Пароль у сховищі ключів не можна зчитати, введіть його вручну. Це могло статися після оновлення системи, несумісного з додатком. Якщо це не так, зверніться до розробників.</string>
|
||||
<string name="group_member_status_pending_approval_short">очікує</string>
|
||||
<string name="group_member_status_pending_approval">очікує на схвалення</string>
|
||||
<string name="button_remove_members_question">Видалити учасників?</string>
|
||||
<string name="block_members_desc">Усі нові повідомлення від цих учасників будуть приховані!</string>
|
||||
<string name="block_members_for_all_question">Заблокувати учасників для всіх?</string>
|
||||
<string name="members_will_be_removed_from_group_cannot_be_undone">Учасників буде видалено з групи – це неможливо скасувати!</string>
|
||||
<string name="feature_roles_moderators">модератори</string>
|
||||
<string name="unblock_members_desc">Повідомлення від цих учасників буде показано!</string>
|
||||
<string name="members_will_be_removed_from_chat_cannot_be_undone">Учасників буде видалено з чату – це неможливо скасувати!</string>
|
||||
<string name="unblock_members_for_all_question">Розблокувати учасників для всіх?</string>
|
||||
<string name="operator_updated_conditions">Оновлені умови</string>
|
||||
</resources>
|
||||
|
||||
@@ -1869,7 +1869,6 @@
|
||||
<string name="group_reports_active_one">1 báo cáo</string>
|
||||
<string name="group_reports_active">%d báo cáo</string>
|
||||
<string name="group_reports_member_reports">Các báo cáo của thành viên</string>
|
||||
<string name="group_reports_archived_member_reports">Các báo cáo thành viên đã được lưu trữ</string>
|
||||
<string name="subscription_errors">Lỗi đăng ký dài hạn</string>
|
||||
<string name="chat_list_group_reports">Các báo cáo</string>
|
||||
<string name="servers_info_private_data_disclaimer">Bắt đầu từ %s.\nTất cả dữ liệu được lưu trữ một cách riêng tư trên thiết bị của bạn.</string>
|
||||
@@ -2320,4 +2319,18 @@
|
||||
<string name="enable_sending_member_reports">Cho phép báo cáo tin nhắn tới các kiểm duyệt viên.</string>
|
||||
<string name="disable_sending_member_reports">Cấm báo cáo tin nhắn tới các kiểm duyệt viên.</string>
|
||||
<string name="member_reports_are_prohibited">Báo cáo tin nhắn bị cấm trong nhóm này.</string>
|
||||
<string name="v6_3_mentions_descr">Nhận thông báo khi được nhắc đến.</string>
|
||||
<string name="v6_3_reports_descr">Giúp các quản trị viên quản lý các nhóm của họ.</string>
|
||||
<string name="v6_3_mentions">Nhắc đến các thành viên 👋</string>
|
||||
<string name="v6_3_organize_chat_lists">Sắp xếp các cuộc trò chuyện thành danh sách</string>
|
||||
<string name="v6_3_faster_deletion_of_groups">Xóa nhóm nhanh hơn.</string>
|
||||
<string name="v6_3_faster_sending_messages">Gửi tin nhắn nhanh hơn.</string>
|
||||
<string name="v6_3_organize_chat_lists_descr">Không còn bỏ lỡ các tin nhắn quan trọng nữa.</string>
|
||||
<string name="v6_3_better_privacy_and_security">Bảo mật và riêng tư hơn</string>
|
||||
<string name="v6_3_better_groups_performance">Nhóm hoạt động hiệu quả hơn</string>
|
||||
<string name="v6_3_reports">Gửi các báo cáo riêng tư</string>
|
||||
<string name="group_preview_rejected">đã từ chối</string>
|
||||
<string name="group_member_status_rejected">đã từ chối</string>
|
||||
<string name="v6_3_set_message_expiration_in_chats">Thiết lập giờ hết hạn cho tin nhắn trong các cuộc trò chuyện.</string>
|
||||
<string name="v6_3_private_media_file_names">Tên các tệp tin đa phương tiện riêng tư.</string>
|
||||
</resources>
|
||||
|
||||
@@ -1961,7 +1961,7 @@
|
||||
<string name="proxy_destination_error_failed_to_connect">转发服务器 %1$s 连接目的地服务器 %2$s 失败。请稍后尝试。</string>
|
||||
<string name="smp_proxy_error_broker_host">转发服务器地址不兼容网络设置:%1$s。</string>
|
||||
<string name="smp_proxy_error_broker_version">转发服务器版本不兼容网络设置:%1$s。</string>
|
||||
<string name="proxy_destination_error_broker_host">%1$s 的目的地服务器地址不兼容转发服务器 %2$s 的设置</string>
|
||||
<string name="proxy_destination_error_broker_host">%1$s 的目的地服务器地址不兼容转发服务器 %2$s 的设置。</string>
|
||||
<string name="smp_proxy_error_connecting">连接转发服务器 %1$s 出错。请稍后尝试。</string>
|
||||
<string name="privacy_media_blur_radius">模糊媒体文件</string>
|
||||
<string name="privacy_media_blur_radius_medium">中度</string>
|
||||
@@ -2294,7 +2294,6 @@
|
||||
<string name="chat_list_group_reports">举报</string>
|
||||
<string name="group_reports_active_one">1 个举报</string>
|
||||
<string name="group_reports_member_reports">成员举报</string>
|
||||
<string name="group_reports_archived_member_reports">已存档的成员举报</string>
|
||||
<string name="group_reports_active">%d 个举报</string>
|
||||
<string name="blocking_reason_spam">垃圾信息</string>
|
||||
<string name="connection_error_blocked">连接被阻止</string>
|
||||
@@ -2345,4 +2344,20 @@
|
||||
<string name="v6_3_private_media_file_names">私密媒体文件名。</string>
|
||||
<string name="v6_3_reports">发送私下举报</string>
|
||||
<string name="v6_3_set_message_expiration_in_chats">在聊天中设置消息过期时间。</string>
|
||||
<string name="group_preview_rejected">被拒绝</string>
|
||||
<string name="group_member_status_rejected">被拒绝</string>
|
||||
<string name="error_reading_passphrase">数据库密码短语读取出错</string>
|
||||
<string name="restore_passphrase_can_not_be_read_desc">无法读取 Keystore 中的密码短语,请手动输入它。这可能在不兼容本应用的系统更新后出现。如果不是这种情况,请联系开发者。</string>
|
||||
<string name="restore_passphrase_can_not_be_read_enter_manually_desc">无法读取 Keystore 中的密码短语,请手动输入它。这可能在不兼容本应用的系统更新后出现。如果不是这种情况,请联系开发者。</string>
|
||||
<string name="group_member_status_pending_approval_short">待批准</string>
|
||||
<string name="group_member_status_pending_approval">待批准</string>
|
||||
<string name="operator_updated_conditions">条款已更新</string>
|
||||
<string name="block_members_desc">所有来自这些成员的新消息都将被隐藏!</string>
|
||||
<string name="block_members_for_all_question">为所有其他成员封禁这些成员?</string>
|
||||
<string name="members_will_be_removed_from_group_cannot_be_undone">将从群中移除这些成员 — 此操作无法撤销!</string>
|
||||
<string name="unblock_members_desc">将显示来自这些成员的消息!</string>
|
||||
<string name="button_remove_members_question">删除成员吗?</string>
|
||||
<string name="unblock_members_for_all_question">为所有其他成员解封这些成员吗?</string>
|
||||
<string name="feature_roles_moderators">moderators</string>
|
||||
<string name="members_will_be_removed_from_chat_cannot_be_undone">将从聊天中移除这些成员 — 此操作无法撤销!</string>
|
||||
</resources>
|
||||
|
||||
Reference in New Issue
Block a user