Merge branch 'master' into master-android

This commit is contained in:
Evgeny Poberezkin
2024-08-06 19:55:42 +01:00
174 changed files with 10361 additions and 13107 deletions
+14 -15
View File
@@ -333,8 +333,7 @@ final class ChatModel: ObservableObject {
[cItem]
}
if case .rcvNew = cItem.meta.itemStatus {
chats[i].chatStats.unreadCount = chats[i].chatStats.unreadCount + 1
increaseUnreadCounter(user: currentUser!)
unreadCollector.changeUnreadCounter(cInfo.id, by: 1)
}
popChatCollector.addChat(cInfo.id)
} else {
@@ -414,8 +413,8 @@ final class ChatModel: ObservableObject {
}
func removeChatItem(_ cInfo: ChatInfo, _ cItem: ChatItem) {
if cItem.isRcvNew, let chatIndex = getChatIndex(cInfo.id) {
decreaseUnreadCounter(chatIndex)
if cItem.isRcvNew {
unreadCollector.changeUnreadCounter(cInfo.id, by: -1)
}
// update previews
if let chat = getChat(cInfo.id) {
@@ -570,7 +569,7 @@ final class ChatModel: ObservableObject {
// update current chat
markChatItemRead_(itemIndex)
// update preview
unreadCollector.decreaseUnreadCounter(cInfo.id)
unreadCollector.changeUnreadCounter(cInfo.id, by: -1)
}
}
}
@@ -590,17 +589,18 @@ final class ChatModel: ObservableObject {
let m = ChatModel.shared
for (chatId, count) in self.unreadCounts {
if let i = m.getChatIndex(chatId) {
m.decreaseUnreadCounter(i, by: count)
m.changeUnreadCounter(i, by: count)
}
}
self.unreadCounts = [:]
}
.store(in: &bag)
}
// Only call from main thread
func decreaseUnreadCounter(_ chatId: ChatId) {
unreadCounts[chatId] = (unreadCounts[chatId] ?? 0) + 1
func changeUnreadCounter(_ chatId: ChatId, by count: Int) {
DispatchQueue.main.async {
self.unreadCounts[chatId] = (self.unreadCounts[chatId] ?? 0) + count
}
subject.send()
}
}
@@ -646,25 +646,24 @@ final class ChatModel: ObservableObject {
}
}
func decreaseUnreadCounter(_ chatIndex: Int, by count: Int = 1) {
chats[chatIndex].chatStats.unreadCount = chats[chatIndex].chatStats.unreadCount - count
decreaseUnreadCounter(user: currentUser!, by: count)
func changeUnreadCounter(_ chatIndex: Int, by count: Int) {
chats[chatIndex].chatStats.unreadCount = chats[chatIndex].chatStats.unreadCount + count
changeUnreadCounter(user: currentUser!, by: count)
}
func increaseUnreadCounter(user: any UserLike) {
changeUnreadCounter(user: user, by: 1)
NtfManager.shared.incNtfBadgeCount()
}
func decreaseUnreadCounter(user: any UserLike, by: Int = 1) {
changeUnreadCounter(user: user, by: -by)
NtfManager.shared.decNtfBadgeCount(by: by)
}
private func changeUnreadCounter(user: any UserLike, by: Int) {
if let i = users.firstIndex(where: { $0.user.userId == user.userId }) {
users[i].unreadCount += by
}
NtfManager.shared.changeNtfBadgeCount(by: by)
}
func totalUnreadCountForAllUsers() -> Int {
+2 -6
View File
@@ -238,12 +238,8 @@ class NtfManager: NSObject, UNUserNotificationCenterDelegate, ObservableObject {
ntfBadgeCountGroupDefault.set(count)
}
func decNtfBadgeCount(by count: Int = 1) {
setNtfBadgeCount(max(0, UIApplication.shared.applicationIconBadgeNumber - count))
}
func incNtfBadgeCount(by count: Int = 1) {
setNtfBadgeCount(UIApplication.shared.applicationIconBadgeNumber + count)
func changeNtfBadgeCount(by count: Int = 1) {
setNtfBadgeCount(max(0, UIApplication.shared.applicationIconBadgeNumber + count))
}
private func addNotification(_ content: UNMutableNotificationContent) {
+76 -9
View File
@@ -137,8 +137,8 @@ func apiGetActiveUser(ctrl: chat_ctrl? = nil) throws -> User? {
}
}
func apiCreateActiveUser(_ p: Profile?, sameServers: Bool = false, pastTimestamp: Bool = false, ctrl: chat_ctrl? = nil) throws -> User {
let r = chatSendCmdSync(.createActiveUser(profile: p, sameServers: sameServers, pastTimestamp: pastTimestamp), ctrl)
func apiCreateActiveUser(_ p: Profile?, pastTimestamp: Bool = false, ctrl: chat_ctrl? = nil) throws -> User {
let r = chatSendCmdSync(.createActiveUser(profile: p, pastTimestamp: pastTimestamp), ctrl)
if case let .activeUser(user) = r { return user }
throw r
}
@@ -340,7 +340,13 @@ func loadChat(chat: Chat, search: String = "") {
m.chatItemStatuses = [:]
im.reversedChatItems = []
let chat = try apiGetChat(type: cInfo.chatType, id: cInfo.apiId, search: search)
m.updateChatInfo(chat.chatInfo)
if case let .direct(contact) = chat.chatInfo, !cInfo.chatDeleted, chat.chatInfo.chatDeleted {
var updatedContact = contact
updatedContact.chatDeleted = false
m.updateContact(updatedContact)
} else {
m.updateChatInfo(chat.chatInfo)
}
im.reversedChatItems = chat.chatItems.reversed()
} catch let error {
logger.error("loadChat error: \(responseError(error))")
@@ -761,22 +767,38 @@ func apiConnectContactViaAddress(incognito: Bool, contactId: Int64) async -> (Co
return (nil, alert)
}
func apiDeleteChat(type: ChatType, id: Int64, notify: Bool? = nil) async throws {
func apiDeleteChat(type: ChatType, id: Int64, chatDeleteMode: ChatDeleteMode = .full(notify: true)) async throws {
let chatId = type.rawValue + id.description
DispatchQueue.main.async { ChatModel.shared.deletedChats.insert(chatId) }
defer { DispatchQueue.main.async { ChatModel.shared.deletedChats.remove(chatId) } }
let r = await chatSendCmd(.apiDeleteChat(type: type, id: id, notify: notify), bgTask: false)
let r = await chatSendCmd(.apiDeleteChat(type: type, id: id, chatDeleteMode: chatDeleteMode), bgTask: false)
if case .direct = type, case .contactDeleted = r { return }
if case .contactConnection = type, case .contactConnectionDeleted = r { return }
if case .group = type, case .groupDeletedUser = r { return }
throw r
}
func deleteChat(_ chat: Chat, notify: Bool? = nil) async {
func apiDeleteContact(id: Int64, chatDeleteMode: ChatDeleteMode = .full(notify: true)) async throws -> Contact {
let type: ChatType = .direct
let chatId = type.rawValue + id.description
if case .full = chatDeleteMode {
DispatchQueue.main.async { ChatModel.shared.deletedChats.insert(chatId) }
}
defer {
if case .full = chatDeleteMode {
DispatchQueue.main.async { ChatModel.shared.deletedChats.remove(chatId) }
}
}
let r = await chatSendCmd(.apiDeleteChat(type: type, id: id, chatDeleteMode: chatDeleteMode), bgTask: false)
if case let .contactDeleted(_, contact) = r { return contact }
throw r
}
func deleteChat(_ chat: Chat, chatDeleteMode: ChatDeleteMode = .full(notify: true)) async {
do {
let cInfo = chat.chatInfo
try await apiDeleteChat(type: cInfo.chatType, id: cInfo.apiId, notify: notify)
DispatchQueue.main.async { ChatModel.shared.removeChat(cInfo.id) }
try await apiDeleteChat(type: cInfo.chatType, id: cInfo.apiId, chatDeleteMode: chatDeleteMode)
await MainActor.run { ChatModel.shared.removeChat(cInfo.id) }
} catch let error {
logger.error("deleteChat apiDeleteChat error: \(responseError(error))")
AlertManager.shared.showAlertMsg(
@@ -786,6 +808,39 @@ func deleteChat(_ chat: Chat, notify: Bool? = nil) async {
}
}
func deleteContactChat(_ chat: Chat, chatDeleteMode: ChatDeleteMode = .full(notify: true)) async -> Alert? {
do {
let cInfo = chat.chatInfo
let ct = try await apiDeleteContact(id: cInfo.apiId, chatDeleteMode: chatDeleteMode)
await MainActor.run {
switch chatDeleteMode {
case .full:
ChatModel.shared.removeChat(cInfo.id)
case .entity:
ChatModel.shared.removeChat(cInfo.id)
ChatModel.shared.addChat(Chat(
chatInfo: .direct(contact: ct),
chatItems: chat.chatItems
))
case .messages:
ChatModel.shared.removeChat(cInfo.id)
ChatModel.shared.addChat(Chat(
chatInfo: .direct(contact: ct),
chatItems: []
))
}
}
} catch let error {
logger.error("deleteContactChat apiDeleteContact error: \(responseError(error))")
return mkAlert(
title: "Error deleting chat!",
message: "Error: \(responseError(error))"
)
}
return nil
}
func apiClearChat(type: ChatType, id: Int64) async throws -> ChatInfo {
let r = await chatSendCmd(.apiClearChat(type: type, id: id), bgTask: false)
if case let .chatCleared(_, updatedChatInfo) = r { return updatedChatInfo }
@@ -1114,10 +1169,17 @@ func networkErrorAlert(_ r: ChatResponse) -> Alert? {
func acceptContactRequest(incognito: Bool, contactRequest: UserContactRequest) async {
if let contact = await apiAcceptContactRequest(incognito: incognito, contactReqId: contactRequest.apiId) {
let chat = Chat(chatInfo: ChatInfo.direct(contact: contact), chatItems: [])
DispatchQueue.main.async {
await MainActor.run {
ChatModel.shared.replaceChat(contactRequest.id, chat)
ChatModel.shared.setContactNetworkStatus(contact, .connected)
}
if contact.sndReady {
DispatchQueue.main.async {
dismissAllSheets(animated: true) {
ChatModel.shared.chatId = chat.id
}
}
}
}
}
@@ -1713,6 +1775,11 @@ func processReceivedMsg(_ res: ChatResponse) async {
let cItem = aChatItem.chatItem
await MainActor.run {
if active(user) {
if case let .direct(contact) = cInfo, contact.chatDeleted {
var updatedContact = contact
updatedContact.chatDeleted = false
m.updateContact(updatedContact)
}
m.addChatItem(cInfo, cItem)
} else if cItem.isRcvNew && cInfo.ntfsEnabled {
m.increaseUnreadCounter(user: user)
+468 -74
View File
@@ -94,17 +94,20 @@ struct ChatInfoView: View {
@Environment(\.dismiss) var dismiss: DismissAction
@ObservedObject var chat: Chat
@State var contact: Contact
@Binding var connectionStats: ConnectionStats?
@Binding var customUserProfile: Profile?
@State var localAlias: String
@Binding var connectionCode: String?
var onSearch: () -> Void
@State private var connectionStats: ConnectionStats? = nil
@State private var customUserProfile: Profile? = nil
@State private var connectionCode: String? = nil
@FocusState private var aliasTextFieldFocused: Bool
@State private var alert: ChatInfoViewAlert? = nil
@State private var showDeleteContactActionSheet = false
@State private var actionSheet: SomeActionSheet? = nil
@State private var sheet: SomeSheet<AnyView>? = nil
@State private var showConnectContactViaAddressDialog = false
@State private var sendReceipts = SendReceipts.userDefault(true)
@State private var sendReceiptsUserDefault = true
@AppStorage(DEFAULT_DEVELOPER_TOOLS) private var developerTools = false
enum ChatInfoViewAlert: Identifiable {
case clearChatAlert
case networkStatusAlert
@@ -112,6 +115,7 @@ struct ChatInfoView: View {
case abortSwitchAddressAlert
case syncConnectionForceAlert
case queueInfo(info: String)
case someAlert(alert: SomeAlert)
case error(title: LocalizedStringKey, error: LocalizedStringKey?)
var id: String {
@@ -122,11 +126,12 @@ struct ChatInfoView: View {
case .abortSwitchAddressAlert: return "abortSwitchAddressAlert"
case .syncConnectionForceAlert: return "syncConnectionForceAlert"
case let .queueInfo(info): return "queueInfo \(info)"
case let .someAlert(alert): return "chatInfoSomeAlert \(alert.id)"
case let .error(title, _): return "error \(title)"
}
}
}
var body: some View {
NavigationView {
List {
@@ -136,12 +141,29 @@ struct ChatInfoView: View {
.onTapGesture {
aliasTextFieldFocused = false
}
Group {
localAliasTextEdit()
}
.listRowBackground(Color.clear)
.listRowSeparator(.hidden)
.padding(.bottom, 18)
GeometryReader { g in
HStack(alignment: .center, spacing: 8) {
let buttonWidth = g.size.width / 4
searchButton(width: buttonWidth)
AudioCallButton(chat: chat, contact: contact, width: buttonWidth) { alert = .someAlert(alert: $0) }
VideoButton(chat: chat, contact: contact, width: buttonWidth) { alert = .someAlert(alert: $0) }
muteButton(width: buttonWidth)
}
}
.padding(.trailing)
.frame(maxWidth: .infinity)
.frame(height: infoViewActionButtonHeight)
.listRowBackground(Color.clear)
.listRowSeparator(.hidden)
.listRowInsets(EdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 8))
if let customUserProfile = customUserProfile {
Section(header: Text("Incognito").foregroundColor(theme.colors.secondary)) {
@@ -153,7 +175,7 @@ struct ChatInfoView: View {
}
}
}
Section {
Group {
if let code = connectionCode { verifyCodeButton(code) }
@@ -173,14 +195,18 @@ struct ChatInfoView: View {
} label: {
Label("Chat theme", systemImage: "photo")
}
// } else if developerTools {
// synchronizeConnectionButtonForce()
// }
}
.disabled(!contact.ready || !contact.active)
if let conn = contact.activeConn {
Section {
infoRow(Text(String("E2E encryption")), conn.connPQEnabled ? "Quantum resistant" : "Standard")
}
}
if let contactLink = contact.contactLink {
Section {
SimpleXLinkQRCode(uri: contactLink)
@@ -197,7 +223,7 @@ struct ChatInfoView: View {
.foregroundColor(theme.colors.secondary)
}
}
if contact.ready && contact.active {
Section(header: Text("Servers").foregroundColor(theme.colors.secondary)) {
networkStatusRow()
@@ -226,12 +252,12 @@ struct ChatInfoView: View {
}
}
}
Section {
clearChatButton()
deleteContactButton()
}
if developerTools {
Section(header: Text("For console").foregroundColor(theme.colors.secondary)) {
infoRow("Local name", chat.chatInfo.localDisplayName)
@@ -260,6 +286,24 @@ struct ChatInfoView: View {
sendReceiptsUserDefault = currentUser.sendRcptsContacts
}
sendReceipts = SendReceipts.fromBool(contact.chatSettings.sendRcpts, userDefault: sendReceiptsUserDefault)
Task {
do {
let (stats, profile) = try await apiContactInfo(chat.chatInfo.apiId)
let (ct, code) = try await apiGetContactCode(chat.chatInfo.apiId)
await MainActor.run {
connectionStats = stats
customUserProfile = profile
connectionCode = code
if contact.activeConn?.connectionCode != ct.activeConn?.connectionCode {
chat.chatInfo = .direct(contact: ct)
}
}
} catch let error {
logger.error("apiContactInfo or apiGetContactCode error: \(responseError(error))")
}
}
}
.alert(item: $alert) { alertItem in
switch(alertItem) {
@@ -269,37 +313,26 @@ struct ChatInfoView: View {
case .abortSwitchAddressAlert: return abortSwitchAddressAlert(abortSwitchContactAddress)
case .syncConnectionForceAlert: return syncConnectionForceAlert({ syncContactConnection(force: true) })
case let .queueInfo(info): return queueInfoAlert(info)
case let .someAlert(a): return a.alert
case let .error(title, error): return mkAlert(title: title, message: error)
}
}
.actionSheet(isPresented: $showDeleteContactActionSheet) {
if contact.sndReady && contact.active {
return ActionSheet(
title: Text("Delete contact?\nThis cannot be undone!"),
buttons: [
.destructive(Text("Delete and notify contact")) { deleteContact(notify: true) },
.destructive(Text("Delete")) { deleteContact(notify: false) },
.cancel()
]
)
.actionSheet(item: $actionSheet) { $0.actionSheet }
.sheet(item: $sheet) {
if #available(iOS 16.0, *) {
$0.content
.presentationDetents([.fraction(0.4)])
} else {
return ActionSheet(
title: Text("Delete contact?\nThis cannot be undone!"),
buttons: [
.destructive(Text("Delete")) { deleteContact() },
.cancel()
]
)
$0.content
}
}
}
private func contactInfoHeader() -> some View {
VStack {
VStack(spacing: 8) {
let cInfo = chat.chatInfo
ChatInfoImage(chat: chat, size: 192, color: Color(uiColor: .tertiarySystemFill))
.padding(.top, 12)
.padding()
.padding(.vertical, 12)
if contact.verified {
(
Text(Image(systemName: "checkmark.shield"))
@@ -328,7 +361,7 @@ struct ChatInfoView: View {
}
.frame(maxWidth: .infinity, alignment: .center)
}
private func localAliasTextEdit() -> some View {
TextField("Set contact name…", text: $localAlias)
.disableAutocorrection(true)
@@ -345,7 +378,7 @@ struct ChatInfoView: View {
.multilineTextAlignment(.center)
.foregroundColor(theme.colors.secondary)
}
private func setContactAlias() {
Task {
do {
@@ -360,6 +393,25 @@ struct ChatInfoView: View {
}
}
private func searchButton(width: CGFloat) -> some View {
InfoViewButton(image: "magnifyingglass", title: "search", width: width) {
dismiss()
onSearch()
}
.disabled(!contact.ready || chat.chatItems.isEmpty)
}
private func muteButton(width: CGFloat) -> some View {
InfoViewButton(
image: chat.chatInfo.ntfsEnabled ? "speaker.slash.fill" : "speaker.wave.2.fill",
title: chat.chatInfo.ntfsEnabled ? "mute" : "unmute",
width: width
) {
toggleNotifications(chat, enableNtfs: !chat.chatInfo.ntfsEnabled)
}
.disabled(!contact.ready || !contact.active)
}
private func verifyCodeButton(_ code: String) -> some View {
NavigationLink {
VerifyCodeView(
@@ -389,7 +441,7 @@ struct ChatInfoView: View {
)
}
}
private func contactPreferencesButton() -> some View {
NavigationLink {
ContactPreferencesView(
@@ -404,7 +456,7 @@ struct ChatInfoView: View {
Label("Contact preferences", systemImage: "switch.2")
}
}
private func sendReceiptsOption() -> some View {
Picker(selection: $sendReceipts) {
ForEach([.yes, .no, .userDefault(sendReceiptsUserDefault)]) { (opt: SendReceipts) in
@@ -418,13 +470,13 @@ struct ChatInfoView: View {
setSendReceipts()
}
}
private func setSendReceipts() {
var chatSettings = chat.chatInfo.chatSettings ?? ChatSettings.defaults
chatSettings.sendRcpts = sendReceipts.bool()
updateChatSettings(chat, chatSettings: chatSettings)
}
private func synchronizeConnectionButton() -> some View {
Button {
syncContactConnection(force: false)
@@ -433,7 +485,7 @@ struct ChatInfoView: View {
.foregroundColor(.orange)
}
}
private func synchronizeConnectionButtonForce() -> some View {
Button {
alert = .syncConnectionForceAlert
@@ -442,7 +494,7 @@ struct ChatInfoView: View {
.foregroundColor(.red)
}
}
private func networkStatusRow() -> some View {
HStack {
Text("Network status")
@@ -455,23 +507,30 @@ struct ChatInfoView: View {
serverImage()
}
}
private func serverImage() -> some View {
let status = chatModel.contactNetworkStatus(contact)
return Image(systemName: status.imageName)
.foregroundColor(status == .connected ? .green : theme.colors.secondary)
.font(.system(size: 12))
}
private func deleteContactButton() -> some View {
Button(role: .destructive) {
showDeleteContactActionSheet = true
deleteContactDialog(
chat,
contact,
dismissToChatList: true,
showAlert: { alert = .someAlert(alert: $0) },
showActionSheet: { actionSheet = $0 },
showSheetContent: { sheet = $0 }
)
} label: {
Label("Delete contact", systemImage: "trash")
Label("Delete contact", systemImage: "person.badge.minus")
.foregroundColor(Color.red)
}
}
private func clearChatButton() -> some View {
Button() {
alert = .clearChatAlert
@@ -480,26 +539,7 @@ struct ChatInfoView: View {
.foregroundColor(Color.orange)
}
}
private func deleteContact(notify: Bool? = nil) {
Task {
do {
try await apiDeleteChat(type: chat.chatInfo.chatType, id: chat.chatInfo.apiId, notify: notify)
await MainActor.run {
dismiss()
chatModel.chatId = nil
chatModel.removeChat(chat.chatInfo.id)
}
} catch let error {
logger.error("deleteContactAlert apiDeleteChat error: \(responseError(error))")
let a = getErrorAlert(error, "Error deleting contact")
await MainActor.run {
alert = .error(title: a.title, error: a.message)
}
}
}
}
private func clearChatAlert() -> Alert {
Alert(
title: Text("Clear conversation?"),
@@ -513,14 +553,14 @@ struct ChatInfoView: View {
secondaryButton: .cancel()
)
}
private func networkStatusAlert() -> Alert {
Alert(
title: Text("Network status"),
message: Text(chatModel.contactNetworkStatus(contact).statusExplanation)
)
}
private func switchContactAddress() {
Task {
do {
@@ -539,7 +579,7 @@ struct ChatInfoView: View {
}
}
}
private func abortSwitchContactAddress() {
Task {
do {
@@ -557,7 +597,7 @@ struct ChatInfoView: View {
}
}
}
private func syncContactConnection(force: Bool) {
Task {
do {
@@ -578,6 +618,153 @@ struct ChatInfoView: View {
}
}
struct AudioCallButton: View {
var chat: Chat
var contact: Contact
var width: CGFloat
var showAlert: (SomeAlert) -> Void
var body: some View {
CallButton(
chat: chat,
contact: contact,
image: "phone.fill",
title: "call",
mediaType: .audio,
width: width,
showAlert: showAlert
)
}
}
struct VideoButton: View {
var chat: Chat
var contact: Contact
var width: CGFloat
var showAlert: (SomeAlert) -> Void
var body: some View {
CallButton(
chat: chat,
contact: contact,
image: "video.fill",
title: "video",
mediaType: .video,
width: width,
showAlert: showAlert
)
}
}
private struct CallButton: View {
var chat: Chat
var contact: Contact
var image: String
var title: LocalizedStringKey
var mediaType: CallMediaType
var width: CGFloat
var showAlert: (SomeAlert) -> Void
var body: some View {
let canCall = contact.ready && contact.active && chat.chatInfo.featureEnabled(.calls) && ChatModel.shared.activeCall == nil
InfoViewButton(image: image, title: title, disabledLook: !canCall, width: width) {
if canCall {
CallController.shared.startCall(contact, mediaType)
} else if contact.nextSendGrpInv {
showAlert(SomeAlert(
alert: mkAlert(
title: "Can't call contact",
message: "Send message to enable calls."
),
id: "can't call contact, send message"
))
} else if !contact.active {
showAlert(SomeAlert(
alert: mkAlert(
title: "Can't call contact",
message: "Contact is deleted."
),
id: "can't call contact, contact deleted"
))
} else if !contact.ready {
showAlert(SomeAlert(
alert: mkAlert(
title: "Can't call contact",
message: "Connecting to contact, please wait or check later!"
),
id: "can't call contact, contact not ready"
))
} else if !chat.chatInfo.featureEnabled(.calls) {
switch chat.chatInfo.showEnableCallsAlert {
case .userEnable:
showAlert(SomeAlert(
alert: Alert(
title: Text("Allow calls?"),
message: Text("You need to allow your contact to call to be able to call them."),
primaryButton: .default(Text("Allow")) {
allowFeatureToContact(contact, .calls)
},
secondaryButton: .cancel()
),
id: "allow calls"
))
case .askContact:
showAlert(SomeAlert(
alert: mkAlert(
title: "Calls prohibited!",
message: "Please ask your contact to enable calls."
),
id: "calls prohibited, ask contact"
))
case .other:
showAlert(SomeAlert(
alert: mkAlert(
title: "Calls prohibited!",
message: "Please check yours and your contact preferences."
)
, id: "calls prohibited, other"
))
}
} else {
showAlert(SomeAlert(
alert: mkAlert(title: "Can't call contact"),
id: "can't call contact"
))
}
}
.disabled(ChatModel.shared.activeCall != nil)
}
}
let infoViewActionButtonHeight: CGFloat = 60
struct InfoViewButton: View {
var image: String
var title: LocalizedStringKey
var disabledLook: Bool = false
var width: CGFloat
var action: () -> Void
var body: some View {
VStack(spacing: 4) {
Image(systemName: image)
.resizable()
.scaledToFit()
.frame(width: 20, height: 20)
Text(title)
.font(.caption)
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.foregroundColor(.accentColor)
.background(Color(.secondarySystemGroupedBackground))
.cornerRadius(10.0)
.frame(width: width, height: infoViewActionButtonHeight)
.disabled(disabledLook)
.onTapGesture(perform: action)
}
}
struct ChatWallpaperEditorSheet: View {
@Environment(\.dismiss) var dismiss
@EnvironmentObject var theme: AppTheme
@@ -763,15 +950,222 @@ func queueInfoAlert(_ info: String) -> Alert {
)
}
func deleteContactDialog(
_ chat: Chat,
_ contact: Contact,
dismissToChatList: Bool,
showAlert: @escaping (SomeAlert) -> Void,
showActionSheet: @escaping (SomeActionSheet) -> Void,
showSheetContent: @escaping (SomeSheet<AnyView>) -> Void
) {
if contact.sndReady && contact.active && !contact.chatDeleted {
deleteContactOrConversationDialog(chat, contact, dismissToChatList, showAlert, showActionSheet, showSheetContent)
} else if contact.sndReady && contact.active && contact.chatDeleted {
deleteContactWithoutConversation(chat, contact, dismissToChatList, showAlert, showActionSheet)
} else { // !(contact.sndReady && contact.active)
deleteNotReadyContact(chat, contact, dismissToChatList, showAlert, showActionSheet)
}
}
private func deleteContactOrConversationDialog(
_ chat: Chat,
_ contact: Contact,
_ dismissToChatList: Bool,
_ showAlert: @escaping (SomeAlert) -> Void,
_ showActionSheet: @escaping (SomeActionSheet) -> Void,
_ showSheetContent: @escaping (SomeSheet<AnyView>) -> Void
) {
showActionSheet(SomeActionSheet(
actionSheet: ActionSheet(
title: Text("Delete contact?"),
buttons: [
.destructive(Text("Only delete conversation")) {
deleteContactMaybeErrorAlert(chat, contact, chatDeleteMode: .messages, dismissToChatList, showAlert)
},
.destructive(Text("Delete contact")) {
showSheetContent(SomeSheet(
content: { AnyView(
DeleteActiveContactDialog(
chat: chat,
contact: contact,
dismissToChatList: dismissToChatList,
showAlert: showAlert
)
) },
id: "DeleteActiveContactDialog"
))
},
.cancel()
]
),
id: "deleteContactOrConversationDialog"
))
}
private func deleteContactMaybeErrorAlert(
_ chat: Chat,
_ contact: Contact,
chatDeleteMode: ChatDeleteMode,
_ dismissToChatList: Bool,
_ showAlert: @escaping (SomeAlert) -> Void
) {
Task {
let alert_ = await deleteContactChat(chat, chatDeleteMode: chatDeleteMode)
if let alert = alert_ {
showAlert(SomeAlert(alert: alert, id: "deleteContactMaybeErrorAlert, error"))
} else {
if dismissToChatList {
await MainActor.run {
ChatModel.shared.chatId = nil
}
DispatchQueue.main.async {
dismissAllSheets(animated: true) {
if case .messages = chatDeleteMode, showDeleteConversationNoticeDefault.get() {
AlertManager.shared.showAlert(deleteConversationNotice(contact))
} else if chatDeleteMode.isEntity, showDeleteContactNoticeDefault.get() {
AlertManager.shared.showAlert(deleteContactNotice(contact))
}
}
}
} else {
if case .messages = chatDeleteMode, showDeleteConversationNoticeDefault.get() {
showAlert(SomeAlert(alert: deleteConversationNotice(contact), id: "deleteContactMaybeErrorAlert, deleteConversationNotice"))
} else if chatDeleteMode.isEntity, showDeleteContactNoticeDefault.get() {
showAlert(SomeAlert(alert: deleteContactNotice(contact), id: "deleteContactMaybeErrorAlert, deleteContactNotice"))
}
}
}
}
}
private func deleteConversationNotice(_ contact: Contact) -> Alert {
return Alert(
title: Text("Conversation deleted!"),
message: Text("You can send messages to \(contact.displayName) from Archived contacts."),
primaryButton: .default(Text("Don't show again")) {
showDeleteConversationNoticeDefault.set(false)
},
secondaryButton: .default(Text("Ok"))
)
}
private func deleteContactNotice(_ contact: Contact) -> Alert {
return Alert(
title: Text("Contact deleted!"),
message: Text("You can still view conversation with \(contact.displayName) in the list of chats."),
primaryButton: .default(Text("Don't show again")) {
showDeleteContactNoticeDefault.set(false)
},
secondaryButton: .default(Text("Ok"))
)
}
enum ContactDeleteMode {
case full
case entity
public func toChatDeleteMode(notify: Bool) -> ChatDeleteMode {
switch self {
case .full: .full(notify: notify)
case .entity: .entity(notify: notify)
}
}
}
struct DeleteActiveContactDialog: View {
@Environment(\.dismiss) var dismiss
@EnvironmentObject var theme: AppTheme
var chat: Chat
var contact: Contact
var dismissToChatList: Bool
var showAlert: (SomeAlert) -> Void
@State private var keepConversation = false
var body: some View {
NavigationView {
List {
Section {
Toggle("Keep conversation", isOn: $keepConversation)
Button(role: .destructive) {
dismiss()
deleteContactMaybeErrorAlert(chat, contact, chatDeleteMode: contactDeleteMode.toChatDeleteMode(notify: false), dismissToChatList, showAlert)
} label: {
Text("Delete without notification")
}
Button(role: .destructive) {
dismiss()
deleteContactMaybeErrorAlert(chat, contact, chatDeleteMode: contactDeleteMode.toChatDeleteMode(notify: true), dismissToChatList, showAlert)
} label: {
Text("Delete and notify contact")
}
} footer: {
Text("Contact will be deleted - this cannot be undone!")
.foregroundColor(theme.colors.secondary)
}
}
.modifier(ThemedBackground(grouped: true))
}
}
var contactDeleteMode: ContactDeleteMode {
keepConversation ? .entity : .full
}
}
private func deleteContactWithoutConversation(
_ chat: Chat,
_ contact: Contact,
_ dismissToChatList: Bool,
_ showAlert: @escaping (SomeAlert) -> Void,
_ showActionSheet: @escaping (SomeActionSheet) -> Void
) {
showActionSheet(SomeActionSheet(
actionSheet: ActionSheet(
title: Text("Confirm contact deletion?"),
buttons: [
.destructive(Text("Delete and notify contact")) {
deleteContactMaybeErrorAlert(chat, contact, chatDeleteMode: .full(notify: true), dismissToChatList, showAlert)
},
.destructive(Text("Delete without notification")) {
deleteContactMaybeErrorAlert(chat, contact, chatDeleteMode: .full(notify: false), dismissToChatList, showAlert)
},
.cancel()
]
),
id: "deleteContactWithoutConversation"
))
}
private func deleteNotReadyContact(
_ chat: Chat,
_ contact: Contact,
_ dismissToChatList: Bool,
_ showAlert: @escaping (SomeAlert) -> Void,
_ showActionSheet: @escaping (SomeActionSheet) -> Void
) {
showActionSheet(SomeActionSheet(
actionSheet: ActionSheet(
title: Text("Confirm contact deletion?"),
buttons: [
.destructive(Text("Confirm")) {
deleteContactMaybeErrorAlert(chat, contact, chatDeleteMode: .full(notify: false), dismissToChatList, showAlert)
},
.cancel()
]
),
id: "deleteNotReadyContact"
))
}
struct ChatInfoView_Previews: PreviewProvider {
static var previews: some View {
ChatInfoView(
chat: Chat(chatInfo: ChatInfo.sampleData.direct, chatItems: []),
contact: Contact.sampleData,
connectionStats: Binding.constant(nil),
customUserProfile: Binding.constant(nil),
localAlias: "",
connectionCode: Binding.constant(nil)
onSearch: {}
)
}
}
@@ -440,7 +440,7 @@ struct ChatItemInfoView: View {
private func memberDeliveryStatusView(_ member: GroupMember, _ status: GroupSndStatus, _ sentViaProxy: Bool?) -> some View {
HStack{
ProfileImage(imageStr: member.image, size: 30)
MemberProfileImage(member, size: 30)
.padding(.trailing, 2)
Text(member.chatViewName)
.lineLimit(1)
+21 -30
View File
@@ -179,32 +179,18 @@ struct ChatView: View {
} else if case let .direct(contact) = cInfo {
Button {
Task {
do {
let (stats, profile) = try await apiContactInfo(chat.chatInfo.apiId)
let (ct, code) = try await apiGetContactCode(chat.chatInfo.apiId)
await MainActor.run {
connectionStats = stats
customUserProfile = profile
connectionCode = code
if contact.activeConn?.connectionCode != ct.activeConn?.connectionCode {
chat.chatInfo = .direct(contact: ct)
}
}
} catch let error {
logger.error("apiContactInfo or apiGetContactCode error: \(responseError(error))")
}
await MainActor.run { showChatInfoSheet = true }
showChatInfoSheet = true
}
} label: {
ChatInfoToolbar(chat: chat)
}
.appSheet(isPresented: $showChatInfoSheet, onDismiss: {
connectionStats = nil
customUserProfile = nil
connectionCode = nil
theme = buildTheme()
}) {
ChatInfoView(chat: chat, contact: contact, connectionStats: $connectionStats, customUserProfile: $customUserProfile, localAlias: chat.chatInfo.localAlias, connectionCode: $connectionCode)
.appSheet(isPresented: $showChatInfoSheet) {
ChatInfoView(
chat: chat,
contact: contact,
localAlias: chat.chatInfo.localAlias,
onSearch: { focusSearch() }
)
}
} else if case let .group(groupInfo) = cInfo {
Button {
@@ -222,7 +208,8 @@ struct ChatView: View {
chat.chatInfo = .group(groupInfo: gInfo)
chat.created = Date.now
}
)
),
onSearch: { focusSearch() }
)
}
} else if case .local = cInfo {
@@ -376,7 +363,7 @@ struct ChatView: View {
reversedChatItems
.enumerated()
.filter { (index, chatItem) in
if let mergeCategory = chatItem.mergeCategory, index > .zero {
if let mergeCategory = chatItem.mergeCategory, index > 0 {
mergeCategory != reversedChatItems[index - 1].mergeCategory
} else {
true
@@ -456,7 +443,7 @@ struct ChatView: View {
init() {
unreadChatItemCounts = UnreadChatItemCounts(
isNearBottom: true,
unreadBelow: .zero
unreadBelow: 0
)
events
.receive(on: DispatchQueue.global(qos: .background))
@@ -564,14 +551,18 @@ struct ChatView: View {
private func searchButton() -> some View {
Button {
searchMode = true
searchFocussed = true
searchText = ""
focusSearch()
} label: {
Label("Search", systemImage: "magnifyingglass")
}
}
private func focusSearch() {
searchMode = true
searchFocussed = true
searchText = ""
}
private func addMembersButton() -> some View {
Button {
if case let .group(gInfo) = chat.chatInfo {
@@ -813,7 +804,7 @@ struct ChatView: View {
.padding(.trailing, 12)
}
HStack(alignment: .top, spacing: 8) {
ProfileImage(imageStr: member.memberProfile.image, size: memberImageSize, backgroundColor: theme.colors.background)
MemberProfileImage(member, size: memberImageSize, backgroundColor: theme.colors.background)
.onTapGesture {
if m.membersLoaded {
selectedMember = m.getGroupMember(member.groupMemberId)
@@ -1098,7 +1089,7 @@ struct ChatView: View {
}
func reactions(from: Int? = nil, till: Int? = nil) -> some View {
ForEach(availableReactions[(from ?? .zero)..<(till ?? availableReactions.count)]) { reaction in
ForEach(availableReactions[(from ?? 0)..<(till ?? availableReactions.count)]) { reaction in
Button(reaction.text) {
setReaction(chatItem, add: true, reaction: reaction)
}
@@ -47,14 +47,13 @@ struct AddGroupMembersViewCommon: View {
var body: some View {
if creatingGroup {
NavigationView {
addGroupMembersView()
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
Button ("Skip") { addedMembersCb(selectedContacts) }
}
addGroupMembersView()
.navigationBarBackButtonHidden()
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
Button ("Skip") { addedMembersCb(selectedContacts) }
}
}
}
} else {
addGroupMembersView()
}
@@ -17,10 +17,12 @@ struct GroupChatInfoView: View {
@Environment(\.dismiss) var dismiss: DismissAction
@ObservedObject var chat: Chat
@Binding var groupInfo: GroupInfo
var onSearch: () -> Void
@State private var alert: GroupChatInfoViewAlert? = nil
@State private var groupLink: String?
@State private var groupLinkMemberRole: GroupMemberRole = .member
@State private var showAddMembersSheet: Bool = false
@State private var groupLinkNavLinkActive: Bool = false
@State private var addMembersNavLinkActive: Bool = false
@State private var connectionStats: ConnectionStats?
@State private var connectionCode: String?
@State private var sendReceipts = SendReceipts.userDefault(true)
@@ -68,6 +70,15 @@ struct GroupChatInfoView: View {
List {
groupInfoHeader()
.listRowBackground(Color.clear)
.padding(.bottom, 18)
infoActionButtons()
.padding(.horizontal)
.frame(maxWidth: .infinity)
.frame(height: infoViewActionButtonHeight)
.listRowBackground(Color.clear)
.listRowSeparator(.hidden)
.listRowInsets(EdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 0))
Section {
if groupInfo.canEdit {
@@ -198,24 +209,95 @@ struct GroupChatInfoView: View {
.frame(maxWidth: .infinity, alignment: .center)
}
func infoActionButtons() -> some View {
GeometryReader { g in
let buttonWidth = g.size.width / 4
HStack(alignment: .center, spacing: 8) {
searchButton(width: buttonWidth)
if groupInfo.canAddMembers {
addMembersActionButton(width: buttonWidth)
}
muteButton(width: buttonWidth)
}
.frame(maxWidth: .infinity, alignment: .center)
}
}
private func searchButton(width: CGFloat) -> some View {
InfoViewButton(image: "magnifyingglass", title: "search", width: width) {
dismiss()
onSearch()
}
.disabled(!groupInfo.ready || chat.chatItems.isEmpty)
}
@ViewBuilder private func addMembersActionButton(width: CGFloat) -> some View {
if chat.chatInfo.incognito {
ZStack {
InfoViewButton(image: "link.badge.plus", title: "invite", width: width) {
groupLinkNavLinkActive = true
}
NavigationLink(isActive: $groupLinkNavLinkActive) {
groupLinkDestinationView()
} label: {
EmptyView()
}
.frame(width: 1, height: 1)
.hidden()
}
.disabled(!groupInfo.ready)
} else {
ZStack {
InfoViewButton(image: "person.fill.badge.plus", title: "invite", width: width) {
addMembersNavLinkActive = true
}
NavigationLink(isActive: $addMembersNavLinkActive) {
addMembersDestinationView()
} label: {
EmptyView()
}
.frame(width: 1, height: 1)
.hidden()
}
.disabled(!groupInfo.ready)
}
}
private func muteButton(width: CGFloat) -> some View {
InfoViewButton(
image: chat.chatInfo.ntfsEnabled ? "speaker.slash.fill" : "speaker.wave.2.fill",
title: chat.chatInfo.ntfsEnabled ? "mute" : "unmute",
width: width
) {
toggleNotifications(chat, enableNtfs: !chat.chatInfo.ntfsEnabled)
}
.disabled(!groupInfo.ready)
}
private func addMembersButton() -> some View {
NavigationLink {
AddGroupMembersView(chat: chat, groupInfo: groupInfo)
.onAppear {
searchFocussed = false
Task {
let groupMembers = await apiListMembers(groupInfo.groupId)
await MainActor.run {
chatModel.groupMembers = groupMembers.map { GMember.init($0) }
chatModel.populateGroupMembersIndexes()
}
}
}
addMembersDestinationView()
} label: {
Label("Invite members", systemImage: "plus")
}
}
private func addMembersDestinationView() -> some View {
AddGroupMembersView(chat: chat, groupInfo: groupInfo)
.onAppear {
searchFocussed = false
Task {
let groupMembers = await apiListMembers(groupInfo.groupId)
await MainActor.run {
chatModel.groupMembers = groupMembers.map { GMember.init($0) }
chatModel.populateGroupMembersIndexes()
}
}
}
}
private struct MemberRowView: View {
var groupInfo: GroupInfo
@ObservedObject var groupMember: GMember
@@ -226,7 +308,7 @@ struct GroupChatInfoView: View {
var body: some View {
let member = groupMember.wrapped
let v = HStack{
ProfileImage(imageStr: member.image, size: 38)
MemberProfileImage(member, size: 38)
.padding(.trailing, 2)
// TODO server connection status
VStack(alignment: .leading) {
@@ -352,16 +434,7 @@ struct GroupChatInfoView: View {
private func groupLinkButton() -> some View {
NavigationLink {
GroupLinkView(
groupId: groupInfo.groupId,
groupLink: $groupLink,
groupLinkMemberRole: $groupLinkMemberRole,
showTitle: false,
creatingGroup: false
)
.navigationBarTitle("Group link")
.modifier(ThemedBackground(grouped: true))
.navigationBarTitleDisplayMode(.large)
groupLinkDestinationView()
} label: {
if groupLink == nil {
Label("Create group link", systemImage: "link.badge.plus")
@@ -371,6 +444,19 @@ struct GroupChatInfoView: View {
}
}
private func groupLinkDestinationView() -> some View {
GroupLinkView(
groupId: groupInfo.groupId,
groupLink: $groupLink,
groupLinkMemberRole: $groupLinkMemberRole,
showTitle: false,
creatingGroup: false
)
.navigationBarTitle("Group link")
.modifier(ThemedBackground(grouped: true))
.navigationBarTitleDisplayMode(.large)
}
private func editGroupButton() -> some View {
NavigationLink {
GroupProfileView(
@@ -577,7 +663,8 @@ struct GroupChatInfoView_Previews: PreviewProvider {
static var previews: some View {
GroupChatInfoView(
chat: Chat(chatInfo: ChatInfo.sampleData.group, chatItems: []),
groupInfo: Binding.constant(GroupInfo.sampleData)
groupInfo: Binding.constant(GroupInfo.sampleData),
onSearch: {}
)
}
}
@@ -34,14 +34,13 @@ struct GroupLinkView: View {
var body: some View {
if creatingGroup {
NavigationView {
groupLinkView()
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
Button ("Continue") { linkCreatedCb?() }
}
groupLinkView()
.navigationBarBackButtonHidden()
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
Button ("Continue") { linkCreatedCb?() }
}
}
}
} else {
groupLinkView()
}
@@ -37,6 +37,7 @@ struct GroupMemberInfoView: View {
case syncConnectionForceAlert
case planAndConnectAlert(alert: PlanAndConnectAlert)
case queueInfo(info: String)
case someAlert(alert: SomeAlert)
case error(title: LocalizedStringKey, error: LocalizedStringKey?)
var id: String {
@@ -52,6 +53,7 @@ struct GroupMemberInfoView: View {
case .syncConnectionForceAlert: return "syncConnectionForceAlert"
case let .planAndConnectAlert(alert): return "planAndConnectAlert \(alert.id)"
case let .queueInfo(info): return "queueInfo \(info)"
case let .someAlert(alert): return "someAlert \(alert.id)"
case let .error(title, _): return "error \(title)"
}
}
@@ -65,10 +67,11 @@ struct GroupMemberInfoView: View {
}
}
private func knownDirectChat(_ contactId: Int64) -> Chat? {
private func knownDirectChat(_ contactId: Int64) -> (Chat, Contact)? {
if let chat = chatModel.getContactChat(contactId),
chat.chatInfo.contact?.directOrUsed == true {
return chat
let contact = chat.chatInfo.contact,
contact.directOrUsed == true {
return (chat, contact)
} else {
return nil
}
@@ -80,21 +83,22 @@ struct GroupMemberInfoView: View {
List {
groupMemberInfoHeader(member)
.listRowBackground(Color.clear)
.listRowSeparator(.hidden)
.padding(.bottom, 18)
infoActionButtons(member)
.padding(.horizontal)
.frame(maxWidth: .infinity)
.frame(height: infoViewActionButtonHeight)
.listRowBackground(Color.clear)
.listRowSeparator(.hidden)
.listRowInsets(EdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 0))
if member.memberActive {
Section {
if let contactId = member.memberContactId, let chat = knownDirectChat(contactId) {
knownDirectChatButton(chat)
} else if groupInfo.fullGroupPreferences.directMessages.on(for: groupInfo.membership) {
if let contactId = member.memberContactId {
newDirectChatButton(contactId)
} else if member.activeConn?.peerChatVRange.isCompatibleRange(CREATE_MEMBER_CONTACT_VRANGE) ?? false {
createMemberContactButton()
}
}
if let code = connectionCode { verifyCodeButton(code) }
if let connStats = connectionStats,
connStats.ratchetSyncAllowed {
connStats.ratchetSyncAllowed {
synchronizeConnectionButton()
}
// } else if developerTools {
@@ -237,6 +241,7 @@ struct GroupMemberInfoView: View {
case .syncConnectionForceAlert: return syncConnectionForceAlert({ syncMemberConnection(force: true) })
case let .planAndConnectAlert(alert): return planAndConnectAlert(alert, dismiss: true)
case let .queueInfo(info): return queueInfoAlert(info)
case let .someAlert(a): return a.alert
case let .error(title, error): return mkAlert(title: title, message: error)
}
}
@@ -249,6 +254,57 @@ struct GroupMemberInfoView: View {
.modifier(ThemedBackground(grouped: true))
}
func infoActionButtons(_ member: GroupMember) -> some View {
GeometryReader { g in
let buttonWidth = g.size.width / 4
HStack(alignment: .center, spacing: 8) {
if let contactId = member.memberContactId, let (chat, contact) = knownDirectChat(contactId) {
knownDirectChatButton(chat, width: buttonWidth)
AudioCallButton(chat: chat, contact: contact, width: buttonWidth) { alert = .someAlert(alert: $0) }
VideoButton(chat: chat, contact: contact, width: buttonWidth) { alert = .someAlert(alert: $0) }
} else if groupInfo.fullGroupPreferences.directMessages.on(for: groupInfo.membership) {
if let contactId = member.memberContactId {
newDirectChatButton(contactId, width: buttonWidth)
} else if member.activeConn?.peerChatVRange.isCompatibleRange(CREATE_MEMBER_CONTACT_VRANGE) ?? false {
createMemberContactButton(width: buttonWidth)
}
InfoViewButton(image: "phone.fill", title: "call", disabledLook: true, width: buttonWidth) { showSendMessageToEnableCallsAlert()
}
InfoViewButton(image: "video.fill", title: "video", disabledLook: true, width: buttonWidth) { showSendMessageToEnableCallsAlert()
}
} else { // no known contact chat && directMessages are off
InfoViewButton(image: "message.fill", title: "message", disabledLook: true, width: buttonWidth) { showDirectMessagesProhibitedAlert("Can't message member")
}
InfoViewButton(image: "phone.fill", title: "call", disabledLook: true, width: buttonWidth) { showDirectMessagesProhibitedAlert("Can't call member")
}
InfoViewButton(image: "video.fill", title: "video", disabledLook: true, width: buttonWidth) { showDirectMessagesProhibitedAlert("Can't call member")
}
}
}
.frame(maxWidth: .infinity, alignment: .center)
}
}
func showSendMessageToEnableCallsAlert() {
alert = .someAlert(alert: SomeAlert(
alert: mkAlert(
title: "Can't call member",
message: "Send message to enable calls."
),
id: "can't call member, send message"
))
}
func showDirectMessagesProhibitedAlert(_ title: LocalizedStringKey) {
alert = .someAlert(alert: SomeAlert(
alert: mkAlert(
title: title,
message: "Direct messages between members are prohibited in this group."
),
id: "can't message member, direct messages prohibited"
))
}
func connectViaAddressButton(_ contactLink: String) -> some View {
Button {
planAndConnect(
@@ -263,19 +319,17 @@ struct GroupMemberInfoView: View {
}
}
func knownDirectChatButton(_ chat: Chat) -> some View {
Button {
func knownDirectChatButton(_ chat: Chat, width: CGFloat) -> some View {
InfoViewButton(image: "message.fill", title: "message", width: width) {
dismissAllSheets(animated: true)
DispatchQueue.main.async {
chatModel.chatId = chat.id
}
} label: {
Label("Send direct message", systemImage: "message")
}
}
func newDirectChatButton(_ contactId: Int64) -> some View {
Button {
func newDirectChatButton(_ contactId: Int64, width: CGFloat) -> some View {
InfoViewButton(image: "message.fill", title: "message", width: width) {
do {
let chat = try apiGetChat(type: .direct, id: contactId)
chatModel.addChat(chat)
@@ -286,13 +340,11 @@ struct GroupMemberInfoView: View {
} catch let error {
logger.error("openDirectChatButton apiGetChat error: \(responseError(error))")
}
} label: {
Label("Send direct message", systemImage: "message")
}
}
func createMemberContactButton() -> some View {
Button {
func createMemberContactButton(width: CGFloat) -> some View {
InfoViewButton(image: "message.fill", title: "message", width: width) {
progressIndicator = true
Task {
do {
@@ -313,14 +365,12 @@ struct GroupMemberInfoView: View {
}
}
}
} label: {
Label("Send direct message", systemImage: "message")
}
}
private func groupMemberInfoHeader(_ mem: GroupMember) -> some View {
VStack {
ProfileImage(imageStr: mem.image, size: 192, color: Color(uiColor: .tertiarySystemFill))
MemberProfileImage(mem, size: 192, color: Color(uiColor: .tertiarySystemFill))
.padding(.top, 12)
.padding()
if mem.verified {
@@ -582,6 +632,21 @@ struct GroupMemberInfoView: View {
}
}
func MemberProfileImage(
_ mem: GroupMember,
size: CGFloat,
color: Color = Color(uiColor: .tertiarySystemGroupedBackground),
backgroundColor: Color? = nil
) -> some View {
ProfileImage(
imageStr: mem.image,
size: size,
color: color,
backgroundColor: backgroundColor,
blurred: mem.blocked
)
}
func blockMemberAlert(_ gInfo: GroupInfo, _ mem: GroupMember) -> Alert {
Alert(
title: Text("Block member?"),
+5 -5
View File
@@ -33,7 +33,7 @@ struct ReverseList<Item: Identifiable & Hashable & Sendable, Content: View>: UIV
case let .item(id):
controller.scroll(to: items.firstIndex(where: { $0.id == id }), position: .bottom)
case .bottom:
controller.scroll(to: .zero, position: .top)
controller.scroll(to: 0, position: .top)
}
} else {
controller.update(items: items)
@@ -45,7 +45,7 @@ struct ReverseList<Item: Identifiable & Hashable & Sendable, Content: View>: UIV
private enum Section { case main }
private let representer: ReverseList
private var dataSource: UITableViewDiffableDataSource<Section, Item>!
private var itemCount: Int = .zero
private var itemCount: Int = 0
private var bag = Set<AnyCancellable>()
init(representer: ReverseList) {
@@ -80,7 +80,7 @@ struct ReverseList<Item: Identifiable & Hashable & Sendable, Content: View>: UIV
let cell = tableView.dequeueReusableCell(withIdentifier: cellReuseId, for: indexPath)
if #available(iOS 16.0, *) {
cell.contentConfiguration = UIHostingConfiguration { self.representer.content(item) }
.margins(.all, .zero)
.margins(.all, 0)
.minSize(height: 1) // Passing zero will result in system default of 44 points being used
} else {
if let cell = cell as? HostingCell<Content> {
@@ -153,7 +153,7 @@ struct ReverseList<Item: Identifiable & Hashable & Sendable, Content: View>: UIV
animated = true
}
tableView.scrollToRow(
at: IndexPath(row: index, section: .zero),
at: IndexPath(row: index, section: 0),
at: position,
animated: animated
)
@@ -168,7 +168,7 @@ struct ReverseList<Item: Identifiable & Hashable & Sendable, Content: View>: UIV
dataSource.defaultRowAnimation = .none
dataSource.apply(
snapshot,
animatingDifferences: itemCount != .zero && abs(items.count - itemCount) == 1
animatingDifferences: itemCount != 0 && abs(items.count - itemCount) == 1
)
itemCount = items.count
}
@@ -11,7 +11,6 @@ import SwiftUI
struct ChatHelp: View {
@EnvironmentObject var chatModel: ChatModel
@Binding var showSettings: Bool
@State private var newChatMenuOption: NewChatMenuOption? = nil
var body: some View {
ScrollView { chatHelp() }
@@ -39,7 +38,7 @@ struct ChatHelp: View {
HStack(spacing: 8) {
Text("Tap button ")
NewChatMenuButton(newChatMenuOption: $newChatMenuOption)
NewChatMenuButton()
Text("above, then choose:")
}
@@ -49,7 +49,9 @@ struct ChatListNavLink: View {
@State private var showJoinGroupDialog = false
@State private var showContactConnectionInfo = false
@State private var showInvalidJSON = false
@State private var showDeleteContactActionSheet = false
@State private var alert: SomeAlert? = nil
@State private var actionSheet: SomeActionSheet? = nil
@State private var sheet: SomeSheet<AnyView>? = nil
@State private var showConnectContactViaAddressDialog = false
@State private var inProgress = false
@State private var progressByTimeout = false
@@ -83,15 +85,22 @@ struct ChatListNavLink: View {
}
}
}
@ViewBuilder private func contactNavLink(_ contact: Contact) -> some View {
Group {
if contact.activeConn == nil && contact.profile.contactLink != nil {
if contact.activeConn == nil && contact.profile.contactLink != nil && contact.active {
ChatPreviewView(chat: chat, progressByTimeout: Binding.constant(false))
.frame(height: dynamicRowHeight)
.swipeActions(edge: .trailing, allowsFullSwipe: true) {
Button {
showDeleteContactActionSheet = true
deleteContactDialog(
chat,
contact,
dismissToChatList: false,
showAlert: { alert = $0 },
showActionSheet: { actionSheet = $0 },
showSheetContent: { sheet = $0 }
)
} label: {
Label("Delete", systemImage: "trash")
}
@@ -118,11 +127,14 @@ struct ChatListNavLink: View {
clearChatButton()
}
Button {
if contact.sndReady || !contact.active {
showDeleteContactActionSheet = true
} else {
AlertManager.shared.showAlert(deletePendingContactAlert(chat, contact))
}
deleteContactDialog(
chat,
contact,
dismissToChatList: false,
showAlert: { alert = $0 },
showActionSheet: { actionSheet = $0 },
showSheetContent: { sheet = $0 }
)
} label: {
Label("Delete", systemImage: "trash")
}
@@ -131,24 +143,14 @@ struct ChatListNavLink: View {
.frame(height: dynamicRowHeight)
}
}
.actionSheet(isPresented: $showDeleteContactActionSheet) {
if contact.sndReady && contact.active {
return ActionSheet(
title: Text("Delete contact?\nThis cannot be undone!"),
buttons: [
.destructive(Text("Delete and notify contact")) { Task { await deleteChat(chat, notify: true) } },
.destructive(Text("Delete")) { Task { await deleteChat(chat, notify: false) } },
.cancel()
]
)
.alert(item: $alert) { $0.alert }
.actionSheet(item: $actionSheet) { $0.actionSheet }
.sheet(item: $sheet) {
if #available(iOS 16.0, *) {
$0.content
.presentationDetents([.fraction(0.4)])
} else {
return ActionSheet(
title: Text("Delete contact?\nThis cannot be undone!"),
buttons: [
.destructive(Text("Delete")) { Task { await deleteChat(chat) } },
.cancel()
]
)
$0.content
}
}
}
@@ -430,28 +432,6 @@ struct ChatListNavLink: View {
)
}
private func rejectContactRequestAlert(_ contactRequest: UserContactRequest) -> Alert {
Alert(
title: Text("Reject contact request"),
message: Text("The sender will NOT be notified"),
primaryButton: .destructive(Text("Reject")) {
Task { await rejectContactRequest(contactRequest) }
},
secondaryButton: .cancel()
)
}
private func pendingContactAlert(_ chat: Chat, _ contact: Contact) -> Alert {
Alert(
title: Text("Contact is not connected yet!"),
message: Text("Your contact needs to be online for the connection to complete.\nYou can cancel this connection and remove the contact (and try later with a new link)."),
primaryButton: .cancel(),
secondaryButton: .destructive(Text("Delete Contact")) {
removePendingContact(chat, contact)
}
)
}
private func groupInvitationAcceptedAlert() -> Alert {
Alert(
title: Text("Joining group"),
@@ -459,30 +439,6 @@ struct ChatListNavLink: View {
)
}
private func deletePendingContactAlert(_ chat: Chat, _ contact: Contact) -> Alert {
Alert(
title: Text("Delete pending connection"),
message: Text("Your contact needs to be online for the connection to complete.\nYou can cancel this connection and remove the contact (and try later with a new link)."),
primaryButton: .destructive(Text("Delete")) {
removePendingContact(chat, contact)
},
secondaryButton: .cancel()
)
}
private func removePendingContact(_ chat: Chat, _ contact: Contact) {
Task {
do {
try await apiDeleteChat(type: chat.chatInfo.chatType, id: chat.chatInfo.apiId)
DispatchQueue.main.async {
chatModel.removeChat(contact.id)
}
} catch let error {
logger.error("ChatListNavLink.removePendingContact apiDeleteChat error: \(responseError(error))")
}
}
}
private func invalidJSONPreview(_ json: String) -> some View {
Text("invalid chat data")
.foregroundColor(.red)
@@ -497,16 +453,28 @@ struct ChatListNavLink: View {
private func connectContactViaAddress_(_ contact: Contact, _ incognito: Bool) {
Task {
let ok = await connectContactViaAddress(contact.contactId, incognito)
let ok = await connectContactViaAddress(contact.contactId, incognito, showAlert: { AlertManager.shared.showAlert($0) })
if ok {
await MainActor.run {
chatModel.chatId = contact.id
}
AlertManager.shared.showAlert(connReqSentAlert(.contact))
}
}
}
}
func rejectContactRequestAlert(_ contactRequest: UserContactRequest) -> Alert {
Alert(
title: Text("Reject contact request"),
message: Text("The sender will NOT be notified"),
primaryButton: .destructive(Text("Reject")) {
Task { await rejectContactRequest(contactRequest) }
},
secondaryButton: .cancel()
)
}
func deleteContactConnectionAlert(_ contactConnection: PendingContactConnection, showError: @escaping (ErrorAlert) -> Void, success: @escaping () -> Void = {}) -> Alert {
Alert(
title: Text("Delete pending connection?"),
@@ -533,15 +501,14 @@ func deleteContactConnectionAlert(_ contactConnection: PendingContactConnection,
)
}
func connectContactViaAddress(_ contactId: Int64, _ incognito: Bool) async -> Bool {
func connectContactViaAddress(_ contactId: Int64, _ incognito: Bool, showAlert: (Alert) -> Void) async -> Bool {
let (contact, alert) = await apiConnectContactViaAddress(incognito: incognito, contactId: contactId)
if let alert = alert {
AlertManager.shared.showAlert(alert)
showAlert(alert)
return false
} else if let contact = contact {
await MainActor.run {
ChatModel.shared.updateContact(contact)
AlertManager.shared.showAlert(connReqSentAlert(.contact))
}
return true
}
@@ -18,12 +18,12 @@ struct ChatListView: View {
@State private var searchText = ""
@State private var searchShowingSimplexLink = false
@State private var searchChatFilteredBySimplexLink: String? = nil
@State private var newChatMenuOption: NewChatMenuOption? = nil
@State private var userPickerVisible = false
@State private var showConnectDesktop = false
@AppStorage(DEFAULT_SHOW_UNREAD_AND_FAVORITES) private var showUnreadAndFavorites = false
@AppStorage(DEFAULT_ONE_HAND_UI) private var oneHandUI = false
var body: some View {
if #available(iOS 16.0, *) {
viewBody.scrollDismissesKeyboard(.immediately)
@@ -42,9 +42,6 @@ struct ChatListView: View {
destination: chatView
) {
VStack {
if chatModel.chats.isEmpty {
onboardingButtons()
}
chatListView
}
}
@@ -69,7 +66,9 @@ struct ChatListView: View {
private var chatListView: some View {
VStack {
chatList
toolbar
}
.scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center)
.onDisappear() { withAnimation { userPickerVisible = false } }
.refreshable {
AlertManager.shared.showAlert(Alert(
@@ -91,7 +90,10 @@ struct ChatListView: View {
.background(theme.colors.background)
.navigationBarTitleDisplayMode(.inline)
.navigationBarHidden(searchMode)
.toolbar {
}
@ViewBuilder private var toolbar: some View {
let t = VStack{}.toolbar {
ToolbarItem(placement: .navigationBarLeading) {
let user = chatModel.currentUser ?? User.sampleData
ZStack(alignment: .topTrailing) {
@@ -124,12 +126,20 @@ struct ChatListView: View {
}
ToolbarItem(placement: .navigationBarTrailing) {
switch chatModel.chatRunning {
case .some(true): NewChatMenuButton(newChatMenuOption: $newChatMenuOption)
case .some(true): NewChatMenuButton()
case .some(false): chatStoppedIcon()
case .none: EmptyView()
}
}
}
if #unavailable(iOS 16) {
t
} else if oneHandUI {
t.toolbarBackground(.visible, for: .navigationBar)
} else {
t.toolbarBackground(.visible, for: .bottomBar)
}
}
@ViewBuilder private var chatList: some View {
@@ -145,12 +155,14 @@ struct ChatListView: View {
searchShowingSimplexLink: $searchShowingSimplexLink,
searchChatFilteredBySimplexLink: $searchChatFilteredBySimplexLink
)
.scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center)
.listRowSeparator(.hidden)
.listRowBackground(Color.clear)
.frame(maxWidth: .infinity)
}
ForEach(cs, id: \.viewId) { chat in
ChatListNavLink(chat: chat)
.scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center)
.padding(.trailing, -16)
.disabled(chatModel.chatRunning != true || chatModel.deletedChats.contains(chat.chatInfo.id))
.listRowBackground(Color.clear)
@@ -169,7 +181,9 @@ struct ChatListView: View {
stopAudioPlayer()
}
if cs.isEmpty && !chatModel.chats.isEmpty {
Text("No filtered chats").foregroundColor(theme.colors.secondary)
Text("No filtered chats")
.scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center)
.foregroundColor(.secondary)
}
}
}
@@ -180,42 +194,6 @@ struct ChatListView: View {
.foregroundColor(theme.colors.primary)
}
private func onboardingButtons() -> some View {
VStack(alignment: .trailing, spacing: 0) {
Path { p in
p.move(to: CGPoint(x: 8, y: 0))
p.addLine(to: CGPoint(x: 16, y: 10))
p.addLine(to: CGPoint(x: 0, y: 10))
p.addLine(to: CGPoint(x: 8, y: 0))
}
.fill(theme.colors.primary)
.frame(width: 20, height: 10)
.padding(.trailing, 12)
connectButton("Tap to start a new chat") {
newChatMenuOption = .newContact
}
Spacer()
Text("You have no chats")
.foregroundColor(theme.colors.secondary)
.frame(maxWidth: .infinity)
}
.padding(.trailing, 6)
.frame(maxHeight: .infinity)
}
private func connectButton(_ label: LocalizedStringKey, action: @escaping () -> Void) -> some View {
Button(action: action) {
Text(label)
.padding(.vertical, 10)
.padding(.horizontal, 20)
}
.background(theme.colors.primary)
.foregroundColor(.white)
.clipShape(RoundedRectangle(cornerRadius: 16))
}
@ViewBuilder private func chatView() -> some View {
if let chatId = chatModel.chatId, let chat = chatModel.getChat(chatId) {
ChatView(chat: chat)
@@ -233,16 +211,20 @@ struct ChatListView: View {
} else {
let s = searchString()
return s == "" && !showUnreadAndFavorites
? chatModel.chats
? chatModel.chats.filter { chat in
!chat.chatInfo.chatDeleted && chatContactType(chat: chat) != ContactType.card
}
: chatModel.chats.filter { chat in
let cInfo = chat.chatInfo
switch cInfo {
case let .direct(contact):
return s == ""
? filtered(chat)
: (viewNameContains(cInfo, s) ||
contact.profile.displayName.localizedLowercase.contains(s) ||
contact.fullName.localizedLowercase.contains(s))
return !contact.chatDeleted && chatContactType(chat: chat) != ContactType.card && (
s == ""
? filtered(chat)
: (viewNameContains(cInfo, s) ||
contact.profile.displayName.localizedLowercase.contains(s) ||
contact.fullName.localizedLowercase.contains(s))
)
case let .group(gInfo):
return s == ""
? (filtered(chat) || gInfo.membership.memberStatus == .memInvited)
@@ -300,8 +282,9 @@ struct SubsStatusIndicator: View {
.onDisappear {
stopTimer()
}
.sheet(isPresented: $showServersSummary) {
.appSheet(isPresented: $showServersSummary) {
ServersSummaryView()
.environment(\EnvironmentValues.refresh as! WritableKeyPath<EnvironmentValues, RefreshAction?>, nil)
}
}
@@ -275,7 +275,7 @@ struct ChatPreviewView: View {
} else {
switch (chat.chatInfo) {
case let .direct(contact):
if contact.activeConn == nil && contact.profile.contactLink != nil {
if contact.activeConn == nil && contact.profile.contactLink != nil && contact.active {
chatPreviewInfoText("Tap to Connect")
.foregroundColor(theme.colors.primary)
} else if !contact.sndReady && contact.activeConn != nil {
@@ -448,19 +448,23 @@ func subscriptionStatusColorAndPercentage(_ online: Bool, _ onionHosts: OnionHos
let noConnColorAndPercent: (Color, Double, Double, Double) = (Color(uiColor: .tertiaryLabel), 1, 1, 0)
let activeSubsRounded = roundedToQuarter(subs.shareOfActive)
return online && subs.total > 0
? (
subs.ssActive == 0
? (
hasSess ? (activeColor, activeSubsRounded, subs.shareOfActive, subs.shareOfActive) : noConnColorAndPercent
return !online
? noConnColorAndPercent
: (
subs.total == 0 && !hasSess
? (activeColor, 0, 0.33, 0) // On freshly installed app (without chats) and on app start
: (
subs.ssActive == 0
? (
hasSess ? (activeColor, activeSubsRounded, subs.shareOfActive, subs.shareOfActive) : noConnColorAndPercent
)
: ( // ssActive > 0
hasSess
? (activeColor, activeSubsRounded, subs.shareOfActive, subs.shareOfActive)
: (.orange, activeSubsRounded, subs.shareOfActive, subs.shareOfActive) // This would mean implementation error
)
)
: ( // ssActive > 0
hasSess
? (activeColor, activeSubsRounded, subs.shareOfActive, subs.shareOfActive)
: (.orange, activeSubsRounded, subs.shareOfActive, subs.shareOfActive) // This would mean implementation error
)
)
: noConnColorAndPercent
}
struct SMPServerSummaryView: View {
@@ -0,0 +1,272 @@
//
// ContactListNavLink.swift
// SimpleX (iOS)
//
// Created by Diogo Cunha on 01/08/2024.
// Copyright © 2024 SimpleX Chat. All rights reserved.
//
import SwiftUI
import SimpleXChat
struct ContactListNavLink: View {
@EnvironmentObject var theme: AppTheme
@ObservedObject var chat: Chat
var showDeletedChatIcon: Bool
@State private var alert: SomeAlert? = nil
@State private var actionSheet: SomeActionSheet? = nil
@State private var sheet: SomeSheet<AnyView>? = nil
@State private var showConnectContactViaAddressDialog = false
@State private var showContactRequestDialog = false
var body: some View {
let contactType = chatContactType(chat: chat)
Group {
switch (chat.chatInfo) {
case let .direct(contact):
switch contactType {
case .recent:
recentContactNavLink(contact)
case .chatDeleted:
deletedChatNavLink(contact)
case .card:
contactCardNavLink(contact)
default:
EmptyView()
}
case let .contactRequest(contactRequest):
contactRequestNavLink(contactRequest)
default:
EmptyView()
}
}
.alert(item: $alert) { $0.alert }
.actionSheet(item: $actionSheet) { $0.actionSheet }
.sheet(item: $sheet) {
if #available(iOS 16.0, *) {
$0.content
.presentationDetents([.fraction(0.4)])
} else {
$0.content
}
}
}
func recentContactNavLink(_ contact: Contact) -> some View {
Button {
dismissAllSheets(animated: true) {
ChatModel.shared.chatId = contact.id
}
} label: {
contactPreview(contact, titleColor: theme.colors.onBackground)
}
.swipeActions(edge: .trailing, allowsFullSwipe: true) {
Button {
deleteContactDialog(
chat,
contact,
dismissToChatList: false,
showAlert: { alert = $0 },
showActionSheet: { actionSheet = $0 },
showSheetContent: { sheet = $0 }
)
} label: {
Label("Delete", systemImage: "trash")
}
.tint(.red)
}
}
func deletedChatNavLink(_ contact: Contact) -> some View {
Button {
Task {
await MainActor.run {
var updatedContact = contact
updatedContact.chatDeleted = false
ChatModel.shared.updateContact(updatedContact)
dismissAllSheets(animated: true) {
ChatModel.shared.chatId = contact.id
}
}
}
} label: {
contactPreview(contact, titleColor: theme.colors.onBackground)
}
.swipeActions(edge: .trailing, allowsFullSwipe: true) {
Button {
deleteContactDialog(
chat,
contact,
dismissToChatList: false,
showAlert: { alert = $0 },
showActionSheet: { actionSheet = $0 },
showSheetContent: { sheet = $0 }
)
} label: {
Label("Delete", systemImage: "trash")
}
.tint(.red)
}
}
func contactPreview(_ contact: Contact, titleColor: Color) -> some View {
HStack{
ProfileImage(imageStr: contact.image, size: 30)
previewTitle(contact, titleColor: titleColor)
Spacer()
HStack {
if showDeletedChatIcon && contact.chatDeleted {
Image(systemName: "archivebox")
.resizable()
.scaledToFit()
.frame(width: 18, height: 18)
.foregroundColor(.secondary.opacity(0.65))
} else if chat.chatInfo.chatSettings?.favorite ?? false {
Image(systemName: "star.fill")
.resizable()
.scaledToFill()
.frame(width: 18, height: 18)
.foregroundColor(.secondary.opacity(0.65))
}
if contact.contactConnIncognito {
Image(systemName: "theatermasks")
.resizable()
.scaledToFit()
.frame(width: 22, height: 22)
.foregroundColor(.secondary)
}
}
}
}
@ViewBuilder private func previewTitle(_ contact: Contact, titleColor: Color) -> some View {
let t = Text(chat.chatInfo.chatViewName).foregroundColor(titleColor)
(
contact.verified == true
? verifiedIcon + t
: t
)
.lineLimit(1)
}
private var verifiedIcon: Text {
(Text(Image(systemName: "checkmark.shield")) + Text(" "))
.foregroundColor(.secondary)
.baselineOffset(1)
.kerning(-2)
}
func contactCardNavLink(_ contact: Contact) -> some View {
Button {
showConnectContactViaAddressDialog = true
} label: {
contactCardPreview(contact)
}
.swipeActions(edge: .trailing, allowsFullSwipe: true) {
Button {
deleteContactDialog(
chat,
contact,
dismissToChatList: false,
showAlert: { alert = $0 },
showActionSheet: { actionSheet = $0 },
showSheetContent: { sheet = $0 }
)
} label: {
Label("Delete", systemImage: "trash")
}
.tint(.red)
}
.confirmationDialog("Connect with \(contact.chatViewName)", isPresented: $showConnectContactViaAddressDialog, titleVisibility: .visible) {
Button("Use current profile") { connectContactViaAddress_(contact, false) }
Button("Use new incognito profile") { connectContactViaAddress_(contact, true) }
}
}
private func connectContactViaAddress_(_ contact: Contact, _ incognito: Bool) {
Task {
let ok = await connectContactViaAddress(contact.contactId, incognito, showAlert: { alert = SomeAlert(alert: $0, id: "ContactListNavLink connectContactViaAddress") })
if ok {
await MainActor.run {
ChatModel.shared.chatId = contact.id
}
DispatchQueue.main.async {
dismissAllSheets(animated: true) {
AlertManager.shared.showAlert(connReqSentAlert(.contact))
}
}
}
}
}
func contactCardPreview(_ contact: Contact) -> some View {
HStack{
ProfileImage(imageStr: contact.image, size: 30)
Text(chat.chatInfo.chatViewName)
.foregroundColor(.accentColor)
.lineLimit(1)
Spacer()
Image(systemName: "envelope")
.resizable()
.scaledToFill()
.frame(width: 14, height: 14)
.foregroundColor(.accentColor)
}
}
func contactRequestNavLink(_ contactRequest: UserContactRequest) -> some View {
Button {
showContactRequestDialog = true
} label: {
contactRequestPreview(contactRequest)
}
.swipeActions(edge: .trailing, allowsFullSwipe: true) {
Button {
Task { await acceptContactRequest(incognito: false, contactRequest: contactRequest) }
} label: { Label("Accept", systemImage: "checkmark") }
.tint(theme.colors.primary)
Button {
Task { await acceptContactRequest(incognito: true, contactRequest: contactRequest) }
} label: {
Label("Accept incognito", systemImage: "theatermasks")
}
.tint(.indigo)
Button {
alert = SomeAlert(alert: rejectContactRequestAlert(contactRequest), id: "rejectContactRequestAlert")
} label: {
Label("Reject", systemImage: "multiply")
}
.tint(.red)
}
.confirmationDialog("Accept connection request?", isPresented: $showContactRequestDialog, titleVisibility: .visible) {
Button("Accept") { Task { await acceptContactRequest(incognito: false, contactRequest: contactRequest) } }
Button("Accept incognito") { Task { await acceptContactRequest(incognito: true, contactRequest: contactRequest) } }
Button("Reject (sender NOT notified)", role: .destructive) { Task { await rejectContactRequest(contactRequest) } }
}
}
func contactRequestPreview(_ contactRequest: UserContactRequest) -> some View {
HStack{
ProfileImage(imageStr: contactRequest.image, size: 30)
Text(chat.chatInfo.chatViewName)
.foregroundColor(.accentColor)
.lineLimit(1)
Spacer()
Image(systemName: "checkmark")
.resizable()
.scaledToFill()
.frame(width: 14, height: 14)
.foregroundColor(.accentColor)
}
}
}
@@ -16,11 +16,12 @@ struct ProfileImage: View {
var size: CGFloat
var color = Color(uiColor: .tertiarySystemGroupedBackground)
var backgroundColor: Color? = nil
var blurred = false
@AppStorage(DEFAULT_PROFILE_IMAGE_CORNER_RADIUS) private var radius = defaultProfileImageCorner
var body: some View {
if let uiImage = UIImage(base64Encoded: imageStr) {
clipProfileImage(Image(uiImage: uiImage), size: size, radius: radius)
clipProfileImage(Image(uiImage: uiImage), size: size, radius: radius, blurred: blurred)
} else {
let c = color.asAnotherColorFromSecondaryVariant(theme)
Image(systemName: iconName)
@@ -9,8 +9,8 @@
import SwiftUI
extension View {
@ViewBuilder func `if`<Content: View>(_ condition: @autoclosure () -> Bool, transform: (Self) -> Content) -> some View {
if condition() {
@ViewBuilder func `if`<Content: View>(_ condition: Bool, transform: (Self) -> Content) -> some View {
if condition {
transform(self)
} else {
self
@@ -30,7 +30,7 @@ struct AddContactLearnMore: View {
}
.listRowBackground(Color.clear)
}
.modifier(ThemedBackground())
.modifier(ThemedBackground(grouped: true))
}
}
@@ -35,24 +35,28 @@ struct AddGroupView: View {
creatingGroup: true,
showFooterCounter: false
) { _ in
dismiss()
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
m.chatId = groupInfo.id
dismissAllSheets(animated: true) {
m.chatId = groupInfo.id
}
}
}
.navigationBarTitleDisplayMode(.inline)
} else {
GroupLinkView(
groupId: groupInfo.groupId,
groupLink: $groupLink,
groupLinkMemberRole: $groupLinkMemberRole,
showTitle: true,
showTitle: false,
creatingGroup: true
) {
dismiss()
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
m.chatId = groupInfo.id
dismissAllSheets(animated: true) {
m.chatId = groupInfo.id
}
}
}
.navigationBarTitle("Group link")
}
} else {
createGroupView().keyboardPadding()
@@ -62,13 +66,6 @@ struct AddGroupView: View {
func createGroupView() -> some View {
List {
Group {
Text("Create secret group")
.font(.largeTitle)
.bold()
.fixedSize(horizontal: false, vertical: true)
.padding(.bottom, 24)
.onTapGesture(perform: hideKeyboard)
ZStack(alignment: .center) {
ZStack(alignment: .topTrailing) {
ProfileImage(imageStr: profile.image, size: 128)
@@ -204,13 +201,14 @@ struct AddGroupView: View {
chat = c
}
} catch {
dismiss()
AlertManager.shared.showAlert(
Alert(
title: Text("Error creating group"),
message: Text(responseError(error))
dismissAllSheets(animated: true) {
AlertManager.shared.showAlert(
Alert(
title: Text("Error creating group"),
message: Text(responseError(error))
)
)
)
}
}
}
@@ -7,53 +7,454 @@
//
import SwiftUI
import SimpleXChat
enum NewChatMenuOption: Identifiable {
case newContact
case scanPaste
case newGroup
var id: Self { self }
enum ContactType: Int {
case card, request, recent, chatDeleted, unlisted
}
struct NewChatMenuButton: View {
@Binding var newChatMenuOption: NewChatMenuOption?
@State private var showNewChatSheet = false
@State private var alert: SomeAlert? = nil
@State private var globalAlert: SomeAlert? = nil
var body: some View {
Menu {
Button {
newChatMenuOption = .newContact
} label: {
Text("Add contact")
}
Button {
newChatMenuOption = .scanPaste
} label: {
Text("Scan / Paste link")
}
Button {
newChatMenuOption = .newGroup
} label: {
Text("Create group")
}
showNewChatSheet = true
} label: {
Image(systemName: "square.and.pencil")
.resizable()
.scaledToFit()
.frame(width: 24, height: 24)
}
.sheet(item: $newChatMenuOption) { opt in
switch opt {
case .newContact: NewChatView(selection: .invite)
case .scanPaste: NewChatView(selection: .connect, showQRCodeScanner: true)
case .newGroup: AddGroupView()
.appSheet(isPresented: $showNewChatSheet) {
NewChatSheet(alert: $alert)
.environment(\EnvironmentValues.refresh as! WritableKeyPath<EnvironmentValues, RefreshAction?>, nil)
.alert(item: $alert) { a in
return a.alert
}
}
// This is a workaround to show "Keep unused invitation" alert in both following cases:
// - on going back from NewChatView to NewChatSheet,
// - on dismissing NewChatMenuButton sheet while on NewChatView (skipping NewChatSheet)
.onChange(of: alert?.id) { a in
if !showNewChatSheet && alert != nil {
globalAlert = alert
alert = nil
}
}
.alert(item: $globalAlert) { a in
return a.alert
}
}
}
#Preview {
NewChatMenuButton(
newChatMenuOption: Binding.constant(nil)
)
private var indent: CGFloat = 36
struct NewChatSheet: View {
@EnvironmentObject var theme: AppTheme
@State private var baseContactTypes: [ContactType] = [.card, .request, .recent]
@EnvironmentObject var chatModel: ChatModel
@State private var searchMode = false
@FocusState var searchFocussed: Bool
@State private var searchText = ""
@State private var searchShowingSimplexLink = false
@State private var searchChatFilteredBySimplexLink: String? = nil
@Binding var alert: SomeAlert?
var body: some View {
NavigationView {
viewBody()
.navigationTitle("New Chat")
.navigationBarTitleDisplayMode(.large)
.navigationBarHidden(searchMode)
.modifier(ThemedBackground(grouped: true))
}
}
@ViewBuilder private func viewBody() -> some View {
List {
HStack {
ContactsListSearchBar(
searchMode: $searchMode,
searchFocussed: $searchFocussed,
searchText: $searchText,
searchShowingSimplexLink: $searchShowingSimplexLink,
searchChatFilteredBySimplexLink: $searchChatFilteredBySimplexLink
)
.frame(maxWidth: .infinity)
}
.listRowSeparator(.hidden)
.listRowBackground(Color.clear)
.listRowInsets(EdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 0))
if (searchText.isEmpty) {
Section {
NavigationLink {
NewChatView(selection: .invite, parentAlert: $alert)
.navigationTitle("New chat")
.modifier(ThemedBackground(grouped: true))
.navigationBarTitleDisplayMode(.large)
} label: {
Label("Add contact", systemImage: "link.badge.plus")
}
NavigationLink {
NewChatView(selection: .connect, showQRCodeScanner: true, parentAlert: $alert)
.navigationTitle("New chat")
.modifier(ThemedBackground(grouped: true))
.navigationBarTitleDisplayMode(.large)
} label: {
Label("Scan / Paste link", systemImage: "qrcode")
}
NavigationLink {
AddGroupView()
.navigationTitle("Create secret group")
.modifier(ThemedBackground(grouped: true))
.navigationBarTitleDisplayMode(.large)
} label: {
Label("Create group", systemImage: "person.2")
}
}
if (!filterContactTypes(chats: chatModel.chats, contactTypes: [.chatDeleted]).isEmpty) {
Section {
NavigationLink {
DeletedChats()
} label: {
newChatActionButton("archivebox", color: theme.colors.secondary) { Text("Archived contacts") }
}
}
}
}
ContactsList(
baseContactTypes: $baseContactTypes,
searchMode: $searchMode,
searchText: $searchText,
header: "Your Contacts",
searchFocussed: $searchFocussed,
searchShowingSimplexLink: $searchShowingSimplexLink,
searchChatFilteredBySimplexLink: $searchChatFilteredBySimplexLink,
showDeletedChatIcon: true
)
}
}
func newChatActionButton<Content : View>(_ icon: String, color: Color/* = .secondary*/, content: @escaping () -> Content) -> some View {
ZStack(alignment: .leading) {
Image(systemName: icon).frame(maxWidth: 24, maxHeight: 24, alignment: .center)
.symbolRenderingMode(.monochrome)
.foregroundColor(color)
content().foregroundColor(theme.colors.onBackground).padding(.leading, indent)
}
}
}
func chatContactType(chat: Chat) -> ContactType {
switch chat.chatInfo {
case .contactRequest:
return .request
case let .direct(contact):
if contact.activeConn == nil && contact.profile.contactLink != nil {
return .card
} else if contact.chatDeleted {
return .chatDeleted
} else if contact.contactStatus == .active {
return .recent
} else {
return .unlisted
}
default:
return .unlisted
}
}
private func filterContactTypes(chats: [Chat], contactTypes: [ContactType]) -> [Chat] {
return chats.filter { chat in
contactTypes.contains(chatContactType(chat: chat))
}
}
struct ContactsList: View {
@EnvironmentObject var theme: AppTheme
@EnvironmentObject var chatModel: ChatModel
@Binding var baseContactTypes: [ContactType]
@Binding var searchMode: Bool
@Binding var searchText: String
var header: String? = nil
@FocusState.Binding var searchFocussed: Bool
@Binding var searchShowingSimplexLink: Bool
@Binding var searchChatFilteredBySimplexLink: String?
var showDeletedChatIcon: Bool
@AppStorage(DEFAULT_SHOW_UNREAD_AND_FAVORITES) private var showUnreadAndFavorites = false
var body: some View {
let contactTypes = contactTypesSearchTargets(baseContactTypes: baseContactTypes, searchEmpty: searchText.isEmpty)
let contactChats = filterContactTypes(chats: chatModel.chats, contactTypes: contactTypes)
let filteredContactChats = filteredContactChats(
showUnreadAndFavorites: showUnreadAndFavorites,
searchShowingSimplexLink: searchShowingSimplexLink,
searchChatFilteredBySimplexLink: searchChatFilteredBySimplexLink,
searchText: searchText,
contactChats: contactChats
)
if !filteredContactChats.isEmpty {
Section(header: Group {
if let header = header {
Text(header)
.textCase(.uppercase)
.foregroundColor(theme.colors.secondary)
}
}
) {
ForEach(filteredContactChats, id: \.viewId) { chat in
ContactListNavLink(chat: chat, showDeletedChatIcon: showDeletedChatIcon)
.disabled(chatModel.chatRunning != true)
}
}
}
if filteredContactChats.isEmpty && !contactChats.isEmpty {
noResultSection(text: "No filtered contacts")
} else if contactChats.isEmpty {
noResultSection(text: "No contacts")
}
}
@ViewBuilder private func noResultSection(text: String) -> some View {
Section {
Text(text)
.foregroundColor(theme.colors.secondary)
.frame(maxWidth: .infinity, alignment: .center)
}
.listRowSeparator(.hidden)
.listRowBackground(Color.clear)
.listRowInsets(EdgeInsets(top: 7, leading: 0, bottom: 7, trailing: 0))
}
private func contactTypesSearchTargets(baseContactTypes: [ContactType], searchEmpty: Bool) -> [ContactType] {
if baseContactTypes.contains(.chatDeleted) || searchEmpty {
return baseContactTypes
} else {
return baseContactTypes + [.chatDeleted]
}
}
private func chatsByTypeComparator(chat1: Chat, chat2: Chat) -> Bool {
let chat1Type = chatContactType(chat: chat1)
let chat2Type = chatContactType(chat: chat2)
if chat1Type.rawValue < chat2Type.rawValue {
return true
} else if chat1Type.rawValue > chat2Type.rawValue {
return false
} else {
return chat2.chatInfo.chatTs < chat1.chatInfo.chatTs
}
}
private func filterChat(chat: Chat, searchText: String, showUnreadAndFavorites: Bool) -> Bool {
var meetsPredicate = true
let s = searchText.trimmingCharacters(in: .whitespacesAndNewlines).lowercased()
let cInfo = chat.chatInfo
if !searchText.isEmpty {
if (!cInfo.chatViewName.lowercased().contains(searchText.lowercased())) {
if case let .direct(contact) = cInfo {
meetsPredicate = contact.profile.displayName.lowercased().contains(s) || contact.fullName.lowercased().contains(s)
} else {
meetsPredicate = false
}
}
}
if showUnreadAndFavorites {
meetsPredicate = meetsPredicate && (cInfo.chatSettings?.favorite ?? false)
}
return meetsPredicate
}
func filteredContactChats(
showUnreadAndFavorites: Bool,
searchShowingSimplexLink: Bool,
searchChatFilteredBySimplexLink: String?,
searchText: String,
contactChats: [Chat]
) -> [Chat] {
let linkChatId = searchChatFilteredBySimplexLink
let s = searchShowingSimplexLink ? "" : searchText.trimmingCharacters(in: .whitespacesAndNewlines).lowercased()
let filteredChats: [Chat]
if let linkChatId = linkChatId {
filteredChats = contactChats.filter { $0.id == linkChatId }
} else {
filteredChats = contactChats.filter { chat in
filterChat(chat: chat, searchText: s, showUnreadAndFavorites: showUnreadAndFavorites)
}
}
return filteredChats.sorted(by: chatsByTypeComparator)
}
}
struct ContactsListSearchBar: View {
@EnvironmentObject var m: ChatModel
@EnvironmentObject var theme: AppTheme
@Binding var searchMode: Bool
@FocusState.Binding var searchFocussed: Bool
@Binding var searchText: String
@Binding var searchShowingSimplexLink: Bool
@Binding var searchChatFilteredBySimplexLink: String?
@State private var ignoreSearchTextChange = false
@State private var alert: PlanAndConnectAlert?
@State private var sheet: PlanAndConnectActionSheet?
@AppStorage(DEFAULT_SHOW_UNREAD_AND_FAVORITES) private var showUnreadAndFavorites = false
var body: some View {
HStack(spacing: 12) {
HStack(spacing: 4) {
Spacer()
.frame(width: 8)
Image(systemName: "magnifyingglass")
.resizable()
.scaledToFit()
.frame(width: 16, height: 16)
TextField("Search or paste SimpleX link", text: $searchText)
.foregroundColor(searchShowingSimplexLink ? theme.colors.secondary : theme.colors.onBackground)
.disabled(searchShowingSimplexLink)
.focused($searchFocussed)
.frame(maxWidth: .infinity)
if !searchText.isEmpty {
Image(systemName: "xmark.circle.fill")
.resizable()
.scaledToFit()
.frame(width: 16, height: 16)
.onTapGesture {
searchText = ""
}
}
}
.padding(EdgeInsets(top: 7, leading: 7, bottom: 7, trailing: 7))
.foregroundColor(theme.colors.secondary)
.background(theme.colors.isLight ? theme.colors.background : theme.colors.secondaryVariant)
.cornerRadius(10.0)
if searchFocussed {
Text("Cancel")
.foregroundColor(theme.colors.primary)
.onTapGesture {
searchText = ""
searchFocussed = false
}
} else if m.chats.count > 0 {
toggleFilterButton()
}
}
.onChange(of: searchFocussed) { sf in
withAnimation { searchMode = sf }
}
.onChange(of: searchText) { t in
if ignoreSearchTextChange {
ignoreSearchTextChange = false
} else {
if let link = strHasSingleSimplexLink(t.trimmingCharacters(in: .whitespaces)) { // if SimpleX link is pasted, show connection dialogue
searchFocussed = false
if case let .simplexLink(linkType, _, smpHosts) = link.format {
ignoreSearchTextChange = true
searchText = simplexLinkText(linkType, smpHosts)
}
searchShowingSimplexLink = true
searchChatFilteredBySimplexLink = nil
connect(link.text)
} else {
if t != "" { // if some other text is pasted, enter search mode
searchFocussed = true
}
searchShowingSimplexLink = false
searchChatFilteredBySimplexLink = nil
}
}
}
.alert(item: $alert) { a in
planAndConnectAlert(a, dismiss: true, cleanup: { searchText = "" })
}
.actionSheet(item: $sheet) { s in
planAndConnectActionSheet(s, dismiss: true, cleanup: { searchText = "" })
}
}
private func toggleFilterButton() -> some View {
ZStack {
Color.clear
.frame(width: 22, height: 22)
Image(systemName: showUnreadAndFavorites ? "line.3.horizontal.decrease.circle.fill" : "line.3.horizontal.decrease")
.resizable()
.scaledToFit()
.foregroundColor(showUnreadAndFavorites ? theme.colors.primary : theme.colors.secondary)
.frame(width: showUnreadAndFavorites ? 22 : 16, height: showUnreadAndFavorites ? 22 : 16)
.onTapGesture {
showUnreadAndFavorites = !showUnreadAndFavorites
}
}
}
private func connect(_ link: String) {
planAndConnect(
link,
showAlert: { alert = $0 },
showActionSheet: { sheet = $0 },
dismiss: true,
incognito: nil,
filterKnownContact: { searchChatFilteredBySimplexLink = $0.id }
)
}
}
struct DeletedChats: View {
@State private var baseContactTypes: [ContactType] = [.chatDeleted]
@State private var searchMode = false
@FocusState var searchFocussed: Bool
@State private var searchText = ""
@State private var searchShowingSimplexLink = false
@State private var searchChatFilteredBySimplexLink: String? = nil
var body: some View {
List {
ContactsListSearchBar(
searchMode: $searchMode,
searchFocussed: $searchFocussed,
searchText: $searchText,
searchShowingSimplexLink: $searchShowingSimplexLink,
searchChatFilteredBySimplexLink: $searchChatFilteredBySimplexLink
)
.listRowSeparator(.hidden)
.listRowBackground(Color.clear)
.listRowInsets(EdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 0))
.frame(maxWidth: .infinity)
ContactsList(
baseContactTypes: $baseContactTypes,
searchMode: $searchMode,
searchText: $searchText,
searchFocussed: $searchFocussed,
searchShowingSimplexLink: $searchShowingSimplexLink,
searchChatFilteredBySimplexLink: $searchChatFilteredBySimplexLink,
showDeletedChatIcon: false
)
}
.navigationTitle("Deleted chats")
.navigationBarTitleDisplayMode(.inline)
.navigationBarHidden(searchMode)
.modifier(ThemedBackground(grouped: true))
}
}
#Preview {
NewChatMenuButton()
}
+47 -31
View File
@@ -17,10 +17,19 @@ struct SomeAlert: Identifiable {
var id: String
}
struct SomeActionSheet: Identifiable {
var actionSheet: ActionSheet
var id: String
}
struct SomeSheet<Content: View>: Identifiable {
@ViewBuilder var content: Content
var id: String
}
private enum NewChatViewAlert: Identifiable {
case planAndConnectAlert(alert: PlanAndConnectAlert)
case newChatSomeAlert(alert: SomeAlert)
var id: String {
switch self {
case let .planAndConnectAlert(alert): return "planAndConnectAlert \(alert.id)"
@@ -47,22 +56,10 @@ struct NewChatView: View {
@State private var creatingConnReq = false
@State private var pastedLink: String = ""
@State private var alert: NewChatViewAlert?
@Binding var parentAlert: SomeAlert?
var body: some View {
VStack(alignment: .leading) {
HStack {
Text("New chat")
.font(.largeTitle)
.bold()
.fixedSize(horizontal: false, vertical: true)
Spacer()
InfoSheetButton {
AddContactLearnMore(showTitle: true)
}
}
.padding()
.padding(.top)
Picker("New chat", selection: $selection) {
Label("Add contact", systemImage: "link")
.tag(NewChatOption.invite)
@@ -88,6 +85,7 @@ struct NewChatView: View {
}
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.modifier(ThemedBackground(grouped: true))
.background(
// Rectangle is needed for swipe gesture to work on mostly empty views (creatingLinkProgressView and retryButton)
Rectangle()
@@ -110,6 +108,13 @@ struct NewChatView: View {
}
)
}
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
InfoSheetButton {
AddContactLearnMore(showTitle: true)
}
}
}
.modifier(ThemedBackground(grouped: true))
.onChange(of: invitationUsed) { used in
if used && !(m.showingInvitation?.connChatUsed ?? true) {
@@ -119,19 +124,22 @@ struct NewChatView: View {
.onDisappear {
if !(m.showingInvitation?.connChatUsed ?? true),
let conn = contactConnection {
AlertManager.shared.showAlert(Alert(
title: Text("Keep unused invitation?"),
message: Text("You can view invitation link again in connection details."),
primaryButton: .default(Text("Keep")) {},
secondaryButton: .destructive(Text("Delete")) {
Task {
await deleteChat(Chat(
chatInfo: .contactConnection(contactConnection: conn),
chatItems: []
))
parentAlert = SomeAlert(
alert: Alert(
title: Text("Keep unused invitation?"),
message: Text("You can view invitation link again in connection details."),
primaryButton: .default(Text("Keep")) {},
secondaryButton: .destructive(Text("Delete")) {
Task {
await deleteChat(Chat(
chatInfo: .contactConnection(contactConnection: conn),
chatItems: []
))
}
}
}
))
),
id: "keepUnusedInvitation"
)
}
m.showingInvitation = nil
}
@@ -837,7 +845,10 @@ private func connectContactViaAddress_(_ contact: Contact, dismiss: Bool, incogn
dismissAllSheets(animated: true)
}
}
_ = await connectContactViaAddress(contact.contactId, incognito)
let ok = await connectContactViaAddress(contact.contactId, incognito, showAlert: { AlertManager.shared.showAlert($0) })
if ok {
AlertManager.shared.showAlert(connReqSentAlert(.contact))
}
cleanup?()
}
}
@@ -961,8 +972,13 @@ func connReqSentAlert(_ type: ConnReqType) -> Alert {
)
}
#Preview {
NewChatView(
selection: .invite
)
struct NewChatView_Previews: PreviewProvider {
static var previews: some View {
@State var parentAlert: SomeAlert?
NewChatView(
selection: .invite,
parentAlert: $parentAlert
)
}
}
@@ -428,6 +428,42 @@ private let versionDescriptions: [VersionDescription] = [
)
]
),
VersionDescription(
version: "v6.0",
post: URL(string: "https://simplex.chat/blog/20240814-simplex-chat-vision-funding-v6-private-routing-new-user-experience.html"),
features: [
FeatureDescription(
icon: "arrow.forward",
title: "Private message routing 🚀",
description: "It protects your IP address and connections."
),
FeatureDescription(
icon: "person.text.rectangle",
title: "Your contacts your way",
description: "- Search contacts when starting chat.\n- Archive contacts to chat later."
),
FeatureDescription(
icon: "platter.filled.bottom.iphone",
title: "Reachable chat toolbar 👋",
description: "Use the app with one hand."
),
FeatureDescription(
icon: "link",
title: "Connect to your friends faster",
description: "Even when they are offline."
),
FeatureDescription(
icon: "trash",
title: "Moderate like a pro ✋",
description: "Delete up to 20 messages at once."
),
FeatureDescription(
icon: "network",
title: "Control your network",
description: "Connection and servers status."
)
]
),
]
private let lastVersion = versionDescriptions.last!.version
@@ -24,34 +24,114 @@ enum NetworkSettingsAlert: Identifiable {
}
struct AdvancedNetworkSettings: View {
@Environment(\.dismiss) var dismiss: DismissAction
@EnvironmentObject var theme: AppTheme
@AppStorage(DEFAULT_DEVELOPER_TOOLS) private var developerTools = false
@AppStorage(DEFAULT_SHOW_SENT_VIA_RPOXY) private var showSentViaProxy = false
@State private var netCfg = NetCfg.defaults
@State private var currentNetCfg = NetCfg.defaults
@State private var cfgLoaded = false
@State private var enableKeepAlive = true
@State private var keepAliveOpts = KeepAliveOpts.defaults
@State private var showSettingsAlert: NetworkSettingsAlert?
@State private var onionHosts: OnionHosts = .no
@State private var showSaveDialog = false
var body: some View {
VStack {
List {
Section {
Button {
updateNetCfgView(NetCfg.defaults)
showSettingsAlert = .update
NavigationLink {
List {
Section {
SelectionListView(list: SMPProxyMode.values, selection: $netCfg.smpProxyMode) { mode in
netCfg.smpProxyMode = mode
}
} footer: {
Text(proxyModeInfo(netCfg.smpProxyMode))
.font(.callout)
.foregroundColor(theme.colors.secondary)
}
}
.navigationTitle("Private routing")
.modifier(ThemedBackground(grouped: true))
.navigationBarTitleDisplayMode(.inline)
} label: {
Text("Reset to defaults")
HStack {
Text("Private routing")
Spacer()
Text(netCfg.smpProxyMode.label)
}
}
.disabled(currentNetCfg == NetCfg.defaults)
Button {
updateNetCfgView(NetCfg.proxyDefaults)
showSettingsAlert = .update
NavigationLink {
List {
Section {
SelectionListView(list: SMPProxyFallback.values, selection: $netCfg.smpProxyFallback) { mode in
netCfg.smpProxyFallback = mode
}
.disabled(netCfg.smpProxyMode == .never)
} footer: {
Text(proxyFallbackInfo(netCfg.smpProxyFallback))
.font(.callout)
.foregroundColor(theme.colors.secondary)
}
}
.navigationTitle("Allow downgrade")
.modifier(ThemedBackground(grouped: true))
.navigationBarTitleDisplayMode(.inline)
} label: {
Text("Set timeouts for proxy/VPN")
HStack {
Text("Allow downgrade")
Spacer()
Text(netCfg.smpProxyFallback.label)
}
}
.disabled(currentNetCfg == NetCfg.proxyDefaults)
Toggle("Show message status", isOn: $showSentViaProxy)
} header: {
Text("Private message routing")
.foregroundColor(theme.colors.secondary)
} footer: {
VStack(alignment: .leading) {
Text("To protect your IP address, private routing uses your SMP servers to deliver messages.")
if showSentViaProxy {
Text("Show → on messages sent via private routing.")
}
}
.foregroundColor(theme.colors.secondary)
}
Section {
Picker("Use .onion hosts", selection: $onionHosts) {
ForEach(OnionHosts.values, id: \.self) { Text($0.text) }
}
.frame(height: 36)
} footer: {
Text(onionHostsInfo(onionHosts))
.foregroundColor(theme.colors.secondary)
}
.onChange(of: onionHosts) { hosts in
if hosts != OnionHosts(netCfg: currentNetCfg) {
let (hostMode, requiredHostMode) = hosts.hostMode
netCfg.hostMode = hostMode
netCfg.requiredHostMode = requiredHostMode
}
}
if developerTools {
Section {
Picker("Transport isolation", selection: $netCfg.sessionMode) {
ForEach(TransportSessionMode.values, id: \.self) { Text($0.text) }
}
.frame(height: 36)
} footer: {
Text(sessionModeInfo(netCfg.sessionMode))
.foregroundColor(theme.colors.secondary)
}
}
Section("TCP connection") {
timeoutSettingPicker("TCP connection timeout", selection: $netCfg.tcpConnectTimeout, values: [10_000000, 15_000000, 20_000000, 30_000000, 45_000000, 60_000000, 90_000000], label: secondsLabel)
timeoutSettingPicker("Protocol timeout", selection: $netCfg.tcpTimeout, values: [5_000000, 7_000000, 10_000000, 15_000000, 20_000000, 30_000000], label: secondsLabel)
timeoutSettingPicker("Protocol timeout per KB", selection: $netCfg.tcpTimeoutPerKb, values: [2_500, 5_000, 10_000, 15_000, 20_000, 30_000], label: secondsLabel)
@@ -72,24 +152,21 @@ struct AdvancedNetworkSettings: View {
}
.foregroundColor(theme.colors.secondary)
}
} header: {
Text("")
.foregroundColor(theme.colors.secondary)
} footer: {
HStack {
Button {
updateNetCfgView(currentNetCfg)
} label: {
Label("Revert", systemImage: "arrow.counterclockwise").font(.callout)
}
}
Section {
Button("Reset to defaults") {
updateNetCfgView(NetCfg.defaults)
}
.disabled(netCfg == NetCfg.defaults)
Spacer()
Button {
showSettingsAlert = .update
} label: {
Label("Save", systemImage: "checkmark").font(.callout)
}
Button("Set timeouts for proxy/VPN") {
updateNetCfgView(netCfg.withProxyTimeouts)
}
.disabled(netCfg.hasProxyTimeouts)
Button("Save and reconnect") {
showSettingsAlert = .update
}
.disabled(netCfg == currentNetCfg)
}
@@ -111,10 +188,10 @@ struct AdvancedNetworkSettings: View {
switch a {
case .update:
return Alert(
title: Text("Update network settings?"),
title: Text("Update settings?"),
message: Text("Updating settings will re-connect the client to all servers."),
primaryButton: .default(Text("Ok")) {
saveNetCfg()
_ = saveNetCfg()
},
secondaryButton: .cancel()
)
@@ -125,23 +202,43 @@ struct AdvancedNetworkSettings: View {
)
}
}
.modifier(BackButton(disabled: Binding.constant(false)) {
if netCfg == currentNetCfg {
dismiss()
cfgLoaded = false
} else {
showSaveDialog = true
}
})
.confirmationDialog("Update network settings?", isPresented: $showSaveDialog, titleVisibility: .visible) {
Button("Save and reconnect") {
if saveNetCfg() {
dismiss()
cfgLoaded = false
}
}
Button("Exit without saving") { dismiss() }
}
}
private func updateNetCfgView(_ cfg: NetCfg) {
netCfg = cfg
onionHosts = OnionHosts(netCfg: netCfg)
enableKeepAlive = netCfg.enableKeepAlive
keepAliveOpts = netCfg.tcpKeepAlive ?? KeepAliveOpts.defaults
}
private func saveNetCfg() {
private func saveNetCfg() -> Bool {
do {
try setNetworkConfig(netCfg)
currentNetCfg = netCfg
setNetCfg(netCfg)
return true
} catch let error {
let err = responseError(error)
showSettingsAlert = .error(err: err)
logger.error("\(err)")
return false
}
}
@@ -164,6 +261,38 @@ struct AdvancedNetworkSettings: View {
}
.frame(height: 36)
}
private func onionHostsInfo(_ hosts: OnionHosts) -> LocalizedStringKey {
switch hosts {
case .no: return "Onion hosts will not be used."
case .prefer: return "Onion hosts will be used when available.\nRequires compatible VPN."
case .require: return "Onion hosts will be **required** for connection.\nRequires compatible VPN."
}
}
private func sessionModeInfo(_ mode: TransportSessionMode) -> LocalizedStringKey {
switch mode {
case .user: return "A separate TCP connection will be used **for each chat profile you have in the app**."
case .entity: return "A separate TCP connection will be used **for each contact and group member**.\n**Please note**: if you have many connections, your battery and traffic consumption can be substantially higher and some connections may fail."
}
}
private func proxyModeInfo(_ mode: SMPProxyMode) -> LocalizedStringKey {
switch mode {
case .always: return "Always use private routing."
case .unknown: return "Use private routing with unknown servers."
case .unprotected: return "Use private routing with unknown servers when IP address is not protected."
case .never: return "Do NOT use private routing."
}
}
private func proxyFallbackInfo(_ proxyFallback: SMPProxyFallback) -> LocalizedStringKey {
switch proxyFallback {
case .allow: return "Send messages directly when your or destination server does not support private routing."
case .allowProtected: return "Send messages directly when IP address is protected and your or destination server does not support private routing."
case .prohibit: return "Do NOT send messages directly, even if your or destination server does not support private routing."
}
}
}
struct AdvancedNetworkSettings_Previews: PreviewProvider {
@@ -50,6 +50,7 @@ extension AppSettings {
if let val = uiDarkColorScheme { def.setValue(val, forKey: DEFAULT_SYSTEM_DARK_THEME) }
if let val = uiCurrentThemeIds { def.setValue(val, forKey: DEFAULT_CURRENT_THEME_IDS) }
if let val = uiThemes { def.setValue(val.skipDuplicates(), forKey: DEFAULT_THEME_OVERRIDES) }
if let val = oneHandUI { def.setValue(val, forKey: DEFAULT_ONE_HAND_UI) }
}
public static var current: AppSettings {
@@ -81,6 +82,7 @@ extension AppSettings {
c.uiDarkColorScheme = systemDarkThemeDefault.get()
c.uiCurrentThemeIds = currentThemeIdsDefault.get()
c.uiThemes = themeOverridesDefault.get()
c.oneHandUI = def.bool(forKey: DEFAULT_ONE_HAND_UI)
return c
}
}
@@ -33,6 +33,7 @@ struct AppearanceSettings: View {
}()
@State private var darkModeTheme: String = UserDefaults.standard.string(forKey: DEFAULT_SYSTEM_DARK_THEME) ?? DefaultTheme.DARK.themeName
@AppStorage(DEFAULT_PROFILE_IMAGE_CORNER_RADIUS) private var profileImageCornerRadius = defaultProfileImageCorner
@AppStorage(DEFAULT_ONE_HAND_UI) private var oneHandUI = false
@State var themeUserDestination: (Int64, ThemeModeOverrides?)? = {
if let currentUser = ChatModel.shared.currentUser, let uiThemes = currentUser.uiThemes, uiThemes.preferredMode(!CurrentColors.colors.isLight) != nil {
@@ -13,6 +13,7 @@ struct DeveloperView: View {
@EnvironmentObject var theme: AppTheme
@AppStorage(DEFAULT_DEVELOPER_TOOLS) private var developerTools = false
@AppStorage(GROUP_DEFAULT_CONFIRM_DB_UPGRADES, store: groupDefaults) private var confirmDatabaseUpgrades = false
@AppStorage(DEFAULT_ONE_HAND_UI) private var oneHandUI = false
@Environment(\.colorScheme) var colorScheme
var body: some View {
@@ -33,9 +34,6 @@ struct DeveloperView: View {
} label: {
settingsRow("terminal", color: theme.colors.secondary) { Text("Chat console") }
}
settingsRow("internaldrive", color: theme.colors.secondary) {
Toggle("Confirm database upgrades", isOn: $confirmDatabaseUpgrades)
}
settingsRow("chevron.left.forwardslash.chevron.right", color: theme.colors.secondary) {
Toggle("Show developer options", isOn: $developerTools)
}
@@ -45,6 +43,19 @@ struct DeveloperView: View {
((developerTools ? Text("Show:") : Text("Hide:")) + Text(" ") + Text("Database IDs and Transport isolation option."))
.foregroundColor(theme.colors.secondary)
}
if developerTools {
Section {
settingsRow("internaldrive", color: theme.colors.secondary) {
Toggle("Confirm database upgrades", isOn: $confirmDatabaseUpgrades)
}
settingsRow("hand.wave", color: theme.colors.secondary) {
Toggle("One-hand UI", isOn: $oneHandUI)
}
} header: {
Text("Developer options")
}
}
}
}
}
@@ -10,18 +10,10 @@ import SwiftUI
import SimpleXChat
private enum NetworkAlert: Identifiable {
case updateOnionHosts(hosts: OnionHosts)
case updateSessionMode(mode: TransportSessionMode)
case updateSMPProxyMode(proxyMode: SMPProxyMode)
case updateSMPProxyFallback(proxyFallback: SMPProxyFallback)
case error(err: String)
var id: String {
switch self {
case let .updateOnionHosts(hosts): return "updateOnionHosts \(hosts)"
case let .updateSessionMode(mode): return "updateSessionMode \(mode)"
case let .updateSMPProxyMode(proxyMode): return "updateSMPProxyMode \(proxyMode)"
case let .updateSMPProxyFallback(proxyFallback): return "updateSMPProxyFallback \(proxyFallback)"
case let .error(err): return "error \(err)"
}
}
@@ -30,16 +22,6 @@ private enum NetworkAlert: Identifiable {
struct NetworkAndServers: View {
@EnvironmentObject var m: ChatModel
@EnvironmentObject var theme: AppTheme
@AppStorage(DEFAULT_DEVELOPER_TOOLS) private var developerTools = false
@AppStorage(DEFAULT_SHOW_SENT_VIA_RPOXY) private var showSentViaProxy = false
@State private var cfgLoaded = false
@State private var currentNetCfg = NetCfg.defaults
@State private var netCfg = NetCfg.defaults
@State private var onionHosts: OnionHosts = .no
@State private var sessionMode: TransportSessionMode = .user
@State private var proxyMode: SMPProxyMode = .never
@State private var proxyFallback: SMPProxyFallback = .allow
@State private var alert: NetworkAlert?
var body: some View {
VStack {
@@ -50,7 +32,7 @@ struct NetworkAndServers: View {
.navigationTitle("Your SMP servers")
.modifier(ThemedBackground(grouped: true))
} label: {
Text("SMP servers")
Text("Message servers")
}
NavigationLink {
@@ -58,24 +40,12 @@ struct NetworkAndServers: View {
.navigationTitle("Your XFTP servers")
.modifier(ThemedBackground(grouped: true))
} label: {
Text("XFTP servers")
}
Picker("Use .onion hosts", selection: $onionHosts) {
ForEach(OnionHosts.values, id: \.self) { Text($0.text) }
}
.frame(height: 36)
if developerTools {
Picker("Transport isolation", selection: $sessionMode) {
ForEach(TransportSessionMode.values, id: \.self) { Text($0.text) }
}
.frame(height: 36)
Text("Media & file servers")
}
NavigationLink {
AdvancedNetworkSettings()
.navigationTitle("Network settings")
.navigationTitle("Advanced settings")
.modifier(ThemedBackground(grouped: true))
} label: {
Text("Advanced network settings")
@@ -83,35 +53,6 @@ struct NetworkAndServers: View {
} header: {
Text("Messages & files")
.foregroundColor(theme.colors.secondary)
} footer: {
Text("Using .onion hosts requires compatible VPN provider.")
.foregroundColor(theme.colors.secondary)
}
Section {
Picker("Private routing", selection: $proxyMode) {
ForEach(SMPProxyMode.values, id: \.self) { Text($0.text) }
}
.frame(height: 36)
Picker("Allow downgrade", selection: $proxyFallback) {
ForEach(SMPProxyFallback.values, id: \.self) { Text($0.text) }
}
.disabled(proxyMode == .never)
.frame(height: 36)
Toggle("Show message status", isOn: $showSentViaProxy)
} header: {
Text("Private message routing")
.foregroundColor(theme.colors.secondary)
} footer: {
VStack(alignment: .leading) {
Text("To protect your IP address, private routing uses your SMP servers to deliver messages.")
if showSentViaProxy {
Text("Show → on messages sent via private routing.")
}
}
.foregroundColor(theme.colors.secondary)
}
Section(header: Text("Calls").foregroundColor(theme.colors.secondary)) {
@@ -133,147 +74,6 @@ struct NetworkAndServers: View {
}
}
}
.onAppear {
if cfgLoaded { return }
cfgLoaded = true
currentNetCfg = getNetCfg()
resetNetCfgView()
}
.onChange(of: onionHosts) { hosts in
if hosts != OnionHosts(netCfg: currentNetCfg) {
alert = .updateOnionHosts(hosts: hosts)
}
}
.onChange(of: sessionMode) { mode in
if mode != netCfg.sessionMode {
alert = .updateSessionMode(mode: mode)
}
}
.onChange(of: proxyMode) { mode in
if mode != netCfg.smpProxyMode {
alert = .updateSMPProxyMode(proxyMode: mode)
}
}
.onChange(of: proxyFallback) { fallbackMode in
if fallbackMode != netCfg.smpProxyFallback {
alert = .updateSMPProxyFallback(proxyFallback: fallbackMode)
}
}
.alert(item: $alert) { a in
switch a {
case let .updateOnionHosts(hosts):
return Alert(
title: Text("Update .onion hosts setting?"),
message: Text(onionHostsInfo(hosts)) + Text("\n") + Text("Updating this setting will re-connect the client to all servers."),
primaryButton: .default(Text("Ok")) {
let (hostMode, requiredHostMode) = hosts.hostMode
netCfg.hostMode = hostMode
netCfg.requiredHostMode = requiredHostMode
saveNetCfg()
},
secondaryButton: .cancel() {
resetNetCfgView()
}
)
case let .updateSessionMode(mode):
return Alert(
title: Text("Update transport isolation mode?"),
message: Text(sessionModeInfo(mode)) + Text("\n") + Text("Updating this setting will re-connect the client to all servers."),
primaryButton: .default(Text("Ok")) {
netCfg.sessionMode = mode
saveNetCfg()
},
secondaryButton: .cancel() {
resetNetCfgView()
}
)
case let .updateSMPProxyMode(proxyMode):
return Alert(
title: Text("Message routing mode"),
message: Text(proxyModeInfo(proxyMode)) + Text("\n") + Text("Updating this setting will re-connect the client to all servers."),
primaryButton: .default(Text("Ok")) {
netCfg.smpProxyMode = proxyMode
saveNetCfg()
},
secondaryButton: .cancel() {
resetNetCfgView()
}
)
case let .updateSMPProxyFallback(proxyFallback):
return Alert(
title: Text("Message routing fallback"),
message: Text(proxyFallbackInfo(proxyFallback)) + Text("\n") + Text("Updating this setting will re-connect the client to all servers."),
primaryButton: .default(Text("Ok")) {
netCfg.smpProxyFallback = proxyFallback
saveNetCfg()
},
secondaryButton: .cancel() {
resetNetCfgView()
}
)
case let .error(err):
return Alert(
title: Text("Error updating settings"),
message: Text(err)
)
}
}
}
private func saveNetCfg() {
do {
let def = netCfg.hostMode == .onionHost ? NetCfg.proxyDefaults : NetCfg.defaults
netCfg.tcpConnectTimeout = def.tcpConnectTimeout
netCfg.tcpTimeout = def.tcpTimeout
try setNetworkConfig(netCfg)
currentNetCfg = netCfg
setNetCfg(netCfg)
} catch let error {
let err = responseError(error)
resetNetCfgView()
alert = .error(err: err)
logger.error("\(err)")
}
}
private func resetNetCfgView() {
netCfg = currentNetCfg
onionHosts = OnionHosts(netCfg: netCfg)
sessionMode = netCfg.sessionMode
proxyMode = netCfg.smpProxyMode
proxyFallback = netCfg.smpProxyFallback
}
private func onionHostsInfo(_ hosts: OnionHosts) -> LocalizedStringKey {
switch hosts {
case .no: return "Onion hosts will not be used."
case .prefer: return "Onion hosts will be used when available. Requires enabling VPN."
case .require: return "Onion hosts will be required for connection. Requires enabling VPN."
}
}
private func sessionModeInfo(_ mode: TransportSessionMode) -> LocalizedStringKey {
switch mode {
case .user: return "A separate TCP connection will be used **for each chat profile you have in the app**."
case .entity: return "A separate TCP connection will be used **for each contact and group member**.\n**Please note**: if you have many connections, your battery and traffic consumption can be substantially higher and some connections may fail."
}
}
private func proxyModeInfo(_ mode: SMPProxyMode) -> LocalizedStringKey {
switch mode {
case .always: return "Always use private routing."
case .unknown: return "Use private routing with unknown servers."
case .unprotected: return "Use private routing with unknown servers when IP address is not protected."
case .never: return "Do NOT use private routing."
}
}
private func proxyFallbackInfo(_ proxyFallback: SMPProxyFallback) -> LocalizedStringKey {
switch proxyFallback {
case .allow: return "Send messages directly when your or destination server does not support private routing."
case .allowProtected: return "Send messages directly when IP address is protected and your or destination server does not support private routing."
case .prohibit: return "Do NOT send messages directly, even if your or destination server does not support private routing."
}
}
}
@@ -130,7 +130,7 @@ struct ProtocolServersView: View {
showSaveDialog = true
}
})
.confirmationDialog("Save servers?", isPresented: $showSaveDialog) {
.confirmationDialog("Save servers?", isPresented: $showSaveDialog, titleVisibility: .visible) {
Button("Save") {
saveServers()
dismiss()
@@ -47,6 +47,7 @@ let DEFAULT_ACCENT_COLOR_GREEN = "accentColorGreen" // deprecated, only used for
let DEFAULT_ACCENT_COLOR_BLUE = "accentColorBlue" // deprecated, only used for migration
let DEFAULT_USER_INTERFACE_STYLE = "userInterfaceStyle" // deprecated, only used for migration
let DEFAULT_PROFILE_IMAGE_CORNER_RADIUS = "profileImageCornerRadius"
let DEFAULT_ONE_HAND_UI = "oneHandUI"
let DEFAULT_CONNECT_VIA_LINK_TAB = "connectViaLinkTab"
let DEFAULT_LIVE_MESSAGE_ALERT_SHOWN = "liveMessageAlertShown"
let DEFAULT_SHOW_HIDDEN_PROFILES_NOTICE = "showHiddenProfilesNotice"
@@ -61,6 +62,8 @@ let DEFAULT_DEVICE_NAME_FOR_REMOTE_ACCESS = "deviceNameForRemoteAccess"
let DEFAULT_CONFIRM_REMOTE_SESSIONS = "confirmRemoteSessions"
let DEFAULT_CONNECT_REMOTE_VIA_MULTICAST = "connectRemoteViaMulticast"
let DEFAULT_CONNECT_REMOTE_VIA_MULTICAST_AUTO = "connectRemoteViaMulticastAuto"
let DEFAULT_SHOW_DELETE_CONVERSATION_NOTICE = "showDeleteConversationNotice"
let DEFAULT_SHOW_DELETE_CONTACT_NOTICE = "showDeleteContactNotice"
let DEFAULT_SHOW_SENT_VIA_RPOXY = "showSentViaProxy"
let DEFAULT_SHOW_SUBSCRIPTION_PERCENTAGE = "showSubscriptionPercentage"
@@ -94,6 +97,7 @@ let appDefaults: [String: Any] = [
DEFAULT_DEVELOPER_TOOLS: false,
DEFAULT_ENCRYPTION_STARTED: false,
DEFAULT_PROFILE_IMAGE_CORNER_RADIUS: defaultProfileImageCorner,
DEFAULT_ONE_HAND_UI: false,
DEFAULT_CONNECT_VIA_LINK_TAB: ConnectViaLinkTab.scan.rawValue,
DEFAULT_LIVE_MESSAGE_ALERT_SHOWN: false,
DEFAULT_SHOW_HIDDEN_PROFILES_NOTICE: true,
@@ -104,6 +108,8 @@ let appDefaults: [String: Any] = [
DEFAULT_CONFIRM_REMOTE_SESSIONS: false,
DEFAULT_CONNECT_REMOTE_VIA_MULTICAST: true,
DEFAULT_CONNECT_REMOTE_VIA_MULTICAST_AUTO: true,
DEFAULT_SHOW_DELETE_CONVERSATION_NOTICE: true,
DEFAULT_SHOW_DELETE_CONTACT_NOTICE: true,
DEFAULT_SHOW_SENT_VIA_RPOXY: false,
DEFAULT_SHOW_SUBSCRIPTION_PERCENTAGE: false,
ANDROID_DEFAULT_CALL_ON_LOCK_SCREEN: AppSettingsLockScreenCalls.show.rawValue,
@@ -158,6 +164,9 @@ let onboardingStageDefault = EnumDefault<OnboardingStage>(defaults: UserDefaults
let customDisappearingMessageTimeDefault = IntDefault(defaults: UserDefaults.standard, forKey: DEFAULT_CUSTOM_DISAPPEARING_MESSAGE_TIME)
let showDeleteConversationNoticeDefault = BoolDefault(defaults: UserDefaults.standard, forKey: DEFAULT_SHOW_DELETE_CONVERSATION_NOTICE)
let showDeleteContactNoticeDefault = BoolDefault(defaults: UserDefaults.standard, forKey: DEFAULT_SHOW_DELETE_CONTACT_NOTICE)
let currentThemeDefault = StringDefault(defaults: UserDefaults.standard, forKey: DEFAULT_CURRENT_THEME, withDefault: DefaultTheme.SYSTEM_THEME_NAME)
let systemDarkThemeDefault = StringDefault(defaults: UserDefaults.standard, forKey: DEFAULT_SYSTEM_DARK_THEME, withDefault: DefaultTheme.DARK.themeName)
let currentThemeIdsDefault = CodableDefault<[String: String]>(defaults: UserDefaults.standard, forKey: DEFAULT_CURRENT_THEME_IDS, withDefault: [:] )
@@ -39,7 +39,7 @@
</trans-unit>
<trans-unit id="!1 colored!" xml:space="preserve" approved="no">
<source>!1 colored!</source>
<target state="translated">! 1 ملون!</target>
<target state="translated">! 1 مُلوَّن!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="#secret#" xml:space="preserve" approved="no">
@@ -69,7 +69,7 @@
</trans-unit>
<trans-unit id="%@ is not verified" xml:space="preserve" approved="no">
<source>%@ is not verified</source>
<target state="translated">%@ لم يتم التحقق منها</target>
<target state="translated">%@ لم يتم التحقق منه</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ is verified" xml:space="preserve" approved="no">
@@ -107,8 +107,9 @@
<target state="translated">%d ثانية</target>
<note>message ttl</note>
</trans-unit>
<trans-unit id="%d skipped message(s)" xml:space="preserve">
<trans-unit id="%d skipped message(s)" xml:space="preserve" approved="no">
<source>%d skipped message(s)</source>
<target state="translated">%d الرسائل المتخطية</target>
<note>integrity error chat item</note>
</trans-unit>
<trans-unit id="%lld" xml:space="preserve" approved="no">
@@ -121,12 +122,14 @@
<target state="needs-translation">%lld %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%lld contact(s) selected" xml:space="preserve">
<trans-unit id="%lld contact(s) selected" xml:space="preserve" approved="no">
<source>%lld contact(s) selected</source>
<target state="translated">%lld تم اختيار جهات الاتصال</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%lld file(s) with total size of %@" xml:space="preserve">
<trans-unit id="%lld file(s) with total size of %@" xml:space="preserve" approved="no">
<source>%lld file(s) with total size of %@</source>
<target state="translated">%lld الملفات ذات الحجم الإجمالي %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%lld members" xml:space="preserve" approved="no">
@@ -134,8 +137,9 @@
<target state="translated">%lld أعضاء</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%lld second(s)" xml:space="preserve">
<trans-unit id="%lld second(s)" xml:space="preserve" approved="no">
<source>%lld second(s)</source>
<target state="translated">%lld ثوانى</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%lldd" xml:space="preserve" approved="no">
@@ -185,7 +189,7 @@
</trans-unit>
<trans-unit id="**Add new contact**: to create your one-time QR Code for your contact." xml:space="preserve" approved="no">
<source>**Add new contact**: to create your one-time QR Code or link for your contact.</source>
<target state="translated">** إضافة جهة اتصال جديدة **: لإنشاء رمز QR لمرة واحدة أو رابط جهة الاتصال الخاصة بك.</target>
<target state="translated">** إضافة جهة اتصال جديدة **: لإنشاء رمز QR لمرة واحدة أو رابط جهة الاتصال الخاصة بكم.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Create link / QR code** for your contact to use." xml:space="preserve" approved="no">
@@ -195,12 +199,12 @@
</trans-unit>
<trans-unit id="**More private**: check new messages every 20 minutes. Device token is shared with SimpleX Chat server, but not how many contacts or messages you have." xml:space="preserve" approved="no">
<source>**More private**: check new messages every 20 minutes. Device token is shared with SimpleX Chat server, but not how many contacts or messages you have.</source>
<target state="translated">** المزيد من الخصوصية **: تحقق من الرسائل الجديدة كل 20 دقيقة. تتم مشاركة رمز الجهاز مع خادم SimpleX Chat ، ولكن ليس عدد جهات الاتصال أو الرسائل لديك.</target>
<target state="translated">** المزيد من الخصوصية **: تحققوا من الرسائل الجديدة كل 20 دقيقة. تتم مشاركة رمز الجهاز مع خادم SimpleX Chat ، ولكن ليس عدد جهات الاتصال أو الرسائل لديكم.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Most private**: do not use SimpleX Chat notifications server, check messages periodically in the background (depends on how often you use the app)." xml:space="preserve" approved="no">
<source>**Most private**: do not use SimpleX Chat notifications server, check messages periodically in the background (depends on how often you use the app).</source>
<target state="translated">** الأكثر خصوصية **: لا تستخدم خادم إشعارات SimpleX Chat ، وتحقق من الرسائل بشكل دوري في الخلفية (يعتمد على عدد مرات استخدامك للتطبيق).</target>
<target state="translated">** الأكثر خصوصية **: لا تستخدم خادم إشعارات SimpleX Chat ، وتحقق من الرسائل بشكل دوري في الخلفية (يعتمد على عدد مرات استخدامكم للتطبيق).</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Paste received link** or open it in the browser and tap **Open in mobile app**." xml:space="preserve" approved="no">
@@ -210,7 +214,7 @@
</trans-unit>
<trans-unit id="**Please note**: you will NOT be able to recover or change passphrase if you lose it." xml:space="preserve" approved="no">
<source>**Please note**: you will NOT be able to recover or change passphrase if you lose it.</source>
<target state="translated">** يرجى ملاحظة **: لن تتمكن من استعادة أو تغيير عبارة المرور إذا فقدتها.</target>
<target state="translated">** يرجى ملاحظة **: لن تتمكنوا من استعادة أو تغيير عبارة المرور إذا فقدتموها.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Recommended**: device token and notifications are sent to SimpleX Chat notification server, but not the message content, size or who it is from." xml:space="preserve" approved="no">
@@ -305,7 +309,7 @@
</trans-unit>
<trans-unit id="A separate TCP connection will be used **for each chat profile you have in the app**." xml:space="preserve" approved="no">
<source>A separate TCP connection will be used **for each chat profile you have in the app**.</source>
<target state="translated">سيتم استخدام اتصال TCP منفصل ** لكل ملف تعريف دردشة لديك في التطبيق **.</target>
<target state="translated">سيتم استخدام اتصال TCP منفصل ** لكل ملف تعريف دردشة لديكم في التطبيق **.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="A separate TCP connection will be used **for each contact and group member**.&#10;**Please note**: if you have many connections, your battery and traffic consumption can be substantially higher and some connections may fail." xml:space="preserve" approved="no">
@@ -355,24 +359,29 @@
<source>Accept requests</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add preset servers" xml:space="preserve">
<trans-unit id="Add preset servers" xml:space="preserve" approved="no">
<source>Add preset servers</source>
<target state="translated">إضافة خوادم محددة مسبقا</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add profile" xml:space="preserve">
<trans-unit id="Add profile" xml:space="preserve" approved="no">
<source>Add profile</source>
<target state="translated">إضافة الملف الشخصي</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add servers by scanning QR codes." xml:space="preserve">
<trans-unit id="Add servers by scanning QR codes." xml:space="preserve" approved="no">
<source>Add servers by scanning QR codes.</source>
<target state="translated">إضافة خوادم عن طريق مسح رموز QR.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add server" xml:space="preserve">
<trans-unit id="Add server" xml:space="preserve" approved="no">
<source>Add server</source>
<target state="translated">أضف الخادم</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add to another device" xml:space="preserve">
<trans-unit id="Add to another device" xml:space="preserve" approved="no">
<source>Add to another device</source>
<target state="translated">أضف إلى جهاز آخر</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Admins can create the links to join groups." xml:space="preserve">
@@ -3667,7 +3676,7 @@ SimpleX servers cannot see your profile.</source>
</trans-unit>
<trans-unit id="## In reply to" xml:space="preserve" approved="no">
<source>## In reply to</source>
<target state="translated">## ردًا على</target>
<target state="translated">## ردًّا على</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="%@ and %@ connected" xml:space="preserve" approved="no">
@@ -3675,6 +3684,208 @@ SimpleX servers cannot see your profile.</source>
<target state="translated">%@ و %@ متصل</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ downloaded" xml:space="preserve" approved="no">
<source>%@ downloaded</source>
<target state="translated">%@ تم التنزيل</target>
</trans-unit>
<trans-unit id="%@ and %@" xml:space="preserve" approved="no">
<source>%@ and %@</source>
<target state="translated">%@ و %@</target>
</trans-unit>
<trans-unit id="%@ connected" xml:space="preserve" approved="no">
<source>%@ connected</source>
<target state="translated">%@ متصل</target>
</trans-unit>
<trans-unit id="%lld minutes" xml:space="preserve" approved="no">
<source>%lld minutes</source>
<target state="translated">%lld دقائق</target>
</trans-unit>
<trans-unit id="%@, %@ and %lld members" xml:space="preserve" approved="no">
<source>%@, %@ and %lld members</source>
<target state="translated">%@, %@ و %lld أعضاء</target>
</trans-unit>
<trans-unit id="%d weeks" xml:space="preserve" approved="no">
<source>%d weeks</source>
<target state="translated">%d أسابيع</target>
</trans-unit>
<trans-unit id="%@ uploaded" xml:space="preserve" approved="no">
<source>%@ uploaded</source>
<target state="translated">%@ تم الرفع</target>
</trans-unit>
<trans-unit id="%@, %@ and %lld other members connected" xml:space="preserve" approved="no">
<source>%@, %@ and %lld other members connected</source>
<target state="translated">%@, %@ و %lld أعضاء آخرين متصلين</target>
</trans-unit>
<trans-unit id="%lld seconds" xml:space="preserve" approved="no">
<source>%lld seconds</source>
<target state="translated">%lld ثواني</target>
</trans-unit>
<trans-unit id="%u messages failed to decrypt." xml:space="preserve" approved="no">
<source>%u messages failed to decrypt.</source>
<target state="translated">%u فشلت عملية فك تشفير الرسائل.</target>
</trans-unit>
<trans-unit id="%lld messages marked deleted" xml:space="preserve" approved="no">
<source>%lld messages marked deleted</source>
<target state="translated">%lld الرسائل معلمه بالحذف</target>
</trans-unit>
<trans-unit id="%lld messages moderated by %@" xml:space="preserve" approved="no">
<source>%lld messages moderated by %@</source>
<target state="translated">%lld رسائل تمت إدارتها بواسطة %@</target>
</trans-unit>
<trans-unit id="%lld new interface languages" xml:space="preserve" approved="no">
<source>%lld new interface languages</source>
<target state="translated">%lld لغات واجهة جديدة</target>
</trans-unit>
<trans-unit id="%lld group events" xml:space="preserve" approved="no">
<source>%lld group events</source>
<target state="translated">%lld أحداث المجموعة</target>
</trans-unit>
<trans-unit id="%lld messages blocked by admin" xml:space="preserve" approved="no">
<source>%lld messages blocked by admin</source>
<target state="translated">%lld رسائل محظورة بواسطه المسؤول</target>
</trans-unit>
<trans-unit id="%lld messages blocked" xml:space="preserve" approved="no">
<source>%lld messages blocked</source>
<target state="translated">%lld رسائل تم حظرها</target>
</trans-unit>
<trans-unit id="%u messages skipped." xml:space="preserve" approved="no">
<source>%u messages skipped.</source>
<target state="translated">%u تم تخطي الرسائل.</target>
</trans-unit>
<trans-unit id="**Add contact**: to create a new invitation link, or connect via a link you received." xml:space="preserve" approved="no">
<source>**Add contact**: to create a new invitation link, or connect via a link you received.</source>
<target state="translated">**إضافة جهة اتصال**: لإنشاء رابط دعوة جديد، أو الاتصال عبر الرابط الذي تلقيتوهم.</target>
</trans-unit>
<trans-unit id="**Create group**: to create a new group." xml:space="preserve" approved="no">
<source>**Create group**: to create a new group.</source>
<target state="translated">**إنشاء مجموعة**: لإنشاء مجموعة جديدة.</target>
</trans-unit>
<trans-unit id="(this device v%@)" xml:space="preserve" approved="no">
<source>(this device v%@)</source>
<target state="translated">(هذا الجهاز v%@)</target>
</trans-unit>
<trans-unit id="(new)" xml:space="preserve" approved="no">
<source>(new)</source>
<target state="translated">(جديد)</target>
</trans-unit>
<trans-unit id="**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." xml:space="preserve" approved="no">
<source>**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.</source>
<target state="translated">**يرجى الملاحظة**: سيؤدي استخدام نفس قاعدة البيانات على جهازين إلى كسر فك تشفير الرسائل من اتصالاتكم كحماية أمنية.</target>
</trans-unit>
<trans-unit id="A new random profile will be shared." xml:space="preserve" approved="no">
<source>A new random profile will be shared.</source>
<target state="translated">سيتم مشاركة ملف تعريفي عشوائي جديد.</target>
</trans-unit>
<trans-unit id="30 seconds" xml:space="preserve" approved="no">
<source>30 seconds</source>
<target state="translated">30 ثانيه</target>
</trans-unit>
<trans-unit id="- more stable message delivery.&#10;- a bit better groups.&#10;- and more!" xml:space="preserve" approved="no">
<source>- more stable message delivery.
- a bit better groups.
- and more!</source>
<target state="translated">- تسليم رسائل أكثر استقرارًا.
- مجموعات أفضل قليلاً.
- والمزيد!</target>
</trans-unit>
<trans-unit id="0 sec" xml:space="preserve" approved="no">
<source>0 sec</source>
<target state="translated">0 ثانيه</target>
</trans-unit>
<trans-unit id="1 minute" xml:space="preserve" approved="no">
<source>1 minute</source>
<target state="translated">1 دقيقة</target>
</trans-unit>
<trans-unit id="5 minutes" xml:space="preserve" approved="no">
<source>5 minutes</source>
<target state="translated">5 دقائق</target>
</trans-unit>
<trans-unit id="&lt;p&gt;Hi!&lt;/p&gt;&#10;&lt;p&gt;&lt;a href=&quot;%@&quot;&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;" xml:space="preserve" approved="no">
<source>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;&lt;a href="%@"&gt;Connect to me via SimpleX Chat&lt;/a&gt;&lt;/p&gt;</source>
<target state="translated">&lt;p&gt;مرحبا!&lt;/p&gt;
&lt;p&gt;&lt;a href="%@"&gt;أتصل بى من خلال SimpleX Chat&lt;/a&gt;&lt;/p&gt;</target>
</trans-unit>
<trans-unit id="0s" xml:space="preserve" approved="no">
<source>0s</source>
<target state="translated">0 ث</target>
</trans-unit>
<trans-unit id="A few more things" xml:space="preserve" approved="no">
<source>A few more things</source>
<target state="translated">بعض الأشياء الأخرى</target>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve" approved="no">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
- faster and more stable.</source>
<target state="translated">- أتصل بـ [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
- أسرع و أكثر اسْتِقْرارًا.</target>
</trans-unit>
<trans-unit id="**Warning**: the archive will be removed." xml:space="preserve" approved="no">
<source>**Warning**: the archive will be removed.</source>
<target state="translated">**تحذير**: سيتم إزالة الأرشيف.</target>
</trans-unit>
<trans-unit id="- optionally notify deleted contacts.&#10;- profile names with spaces.&#10;- and more!" xml:space="preserve" approved="no">
<source>- optionally notify deleted contacts.
- profile names with spaces.
- and more!</source>
<target state="translated">- إخطار جهات الاتصال المحذوفة بشكل اختياري.
- أسماء الملفات الشخصية مع المسافات.
- والمزيد!</target>
</trans-unit>
<trans-unit id="- voice messages up to 5 minutes.&#10;- custom time to disappear.&#10;- editing history." xml:space="preserve" approved="no">
<source>- voice messages up to 5 minutes.
- custom time to disappear.
- editing history.</source>
<target state="translated">- رسائل صوتية تصل مدتها إلى 5 دقائق.
- وقت مخصص للاختفاء.
- تعديل السجل.</target>
</trans-unit>
<trans-unit id="Add welcome message" xml:space="preserve" approved="no">
<source>Add welcome message</source>
<target state="translated">إضافة رسالة ترحيب</target>
</trans-unit>
<trans-unit id="Abort changing address?" xml:space="preserve" approved="no">
<source>Abort changing address?</source>
<target state="translated">هل تريد إلغاء تغيير العنوان؟</target>
</trans-unit>
<trans-unit id="Add contact" xml:space="preserve" approved="no">
<source>Add contact</source>
<target state="translated">إضافة جهة اتصال</target>
</trans-unit>
<trans-unit id="Abort" xml:space="preserve" approved="no">
<source>Abort</source>
<target state="translated">إحباط</target>
</trans-unit>
<trans-unit id="About SimpleX address" xml:space="preserve" approved="no">
<source>About SimpleX address</source>
<target state="translated">حول عنوان SimpleX</target>
</trans-unit>
<trans-unit id="Accept connection request?" xml:space="preserve" approved="no">
<source>Accept connection request?</source>
<target state="translated">قبول طلب الاتصال؟</target>
</trans-unit>
<trans-unit id="Acknowledged" xml:space="preserve" approved="no">
<source>Acknowledged</source>
<target state="translated">معترف به</target>
</trans-unit>
<trans-unit id="Acknowledgement errors" xml:space="preserve" approved="no">
<source>Acknowledgement errors</source>
<target state="translated">أخطاء الإقرار</target>
</trans-unit>
<trans-unit id="Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." xml:space="preserve" approved="no">
<source>Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts.</source>
<target state="translated">أضف عنوانًا إلى ملفكم الشخصي، حتى تتمكن جهات الاتصال الخاصة بكم من مشاركته مع أشخاص اخرين. سيتم إرسال تحديث الملف الشخصي إلى جهات الاتصال الخاصة بكم.</target>
</trans-unit>
<trans-unit id="Abort changing address" xml:space="preserve" approved="no">
<source>Abort changing address</source>
<target state="translated">إحباط تغيير العنوان</target>
</trans-unit>
<trans-unit id="Active connections" xml:space="preserve" approved="no">
<source>Active connections</source>
<target state="translated">اتصالات نشطة</target>
</trans-unit>
</body>
</file>
<file original="en.lproj/SimpleX--iOS--InfoPlist.strings" source-language="en" target-language="ar" datatype="plaintext">
@@ -392,6 +392,11 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -738,6 +743,10 @@
<target>Позволи обаждания само ако вашият контакт ги разрешава.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow calls?" xml:space="preserve">
<source>Allow calls?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow disappearing messages only if your contact allows it to you." xml:space="preserve">
<source>Allow disappearing messages only if your contact allows it to you.</source>
<target>Позволи изчезващи съобщения само ако вашият контакт ги разрешава.</target>
@@ -924,6 +933,10 @@
<target>Архивиране и качване</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
<source>Archiving database</source>
<target>Архивиране на база данни</target>
@@ -1111,11 +1124,23 @@
<target>Обаждания</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Calls prohibited!" xml:space="preserve">
<source>Calls prohibited!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Camera not available" xml:space="preserve">
<source>Camera not available</source>
<target>Камерата е неодстъпна</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call contact" xml:space="preserve">
<source>Can't call contact</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call member" xml:space="preserve">
<source>Can't call member</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't invite contact!" xml:space="preserve">
<source>Can't invite contact!</source>
<target>Не може да покани контакта!</target>
@@ -1126,6 +1151,10 @@
<target>Не може да поканят контактите!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't message member" xml:space="preserve">
<source>Can't message member</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel" xml:space="preserve">
<source>Cancel</source>
<target>Отказ</target>
@@ -1234,6 +1263,10 @@
<target>Базата данни на чата е изтрита</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat database exported" xml:space="preserve">
<source>Chat database exported</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat database imported" xml:space="preserve">
<source>Chat database imported</source>
<target>Базата данни на чат е импортирана</target>
@@ -1372,6 +1405,10 @@
<target>Потвърди kодa за достъп</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm contact deletion?" xml:space="preserve">
<source>Confirm contact deletion?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm database upgrades" xml:space="preserve">
<source>Confirm database upgrades</source>
<target>Потвърди актуализаациите на базата данни</target>
@@ -1426,6 +1463,10 @@
<target>Свързване с настолно устройство</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
<source>Connect to yourself?</source>
<target>Свърване със себе си?</target>
@@ -1497,6 +1538,10 @@ This is your own one-time link!</source>
<target>Свързване със сървър…(грешка: %@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to contact, please wait or check later!" xml:space="preserve">
<source>Connecting to contact, please wait or check later!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to desktop" xml:space="preserve">
<source>Connecting to desktop</source>
<target>Свързване с настолно устройство</target>
@@ -1507,6 +1552,10 @@ This is your own one-time link!</source>
<target>Връзка</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection and servers status." xml:space="preserve">
<source>Connection and servers status.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection error" xml:space="preserve">
<source>Connection error</source>
<target>Грешка при свързване</target>
@@ -1554,6 +1603,10 @@ This is your own one-time link!</source>
<target>Контактът вече съществува</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact deleted!" xml:space="preserve">
<source>Contact deleted!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact hidden:" xml:space="preserve">
<source>Contact hidden:</source>
<target>Контактът е скрит:</target>
@@ -1564,9 +1617,8 @@ This is your own one-time link!</source>
<target>Контактът е свързан</target>
<note>notification</note>
</trans-unit>
<trans-unit id="Contact is not connected yet!" xml:space="preserve">
<source>Contact is not connected yet!</source>
<target>Контактът все още не е свързан!</target>
<trans-unit id="Contact is deleted." xml:space="preserve">
<source>Contact is deleted.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact name" xml:space="preserve">
@@ -1579,6 +1631,10 @@ This is your own one-time link!</source>
<target>Настройки за контакт</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact will be deleted - this cannot be undone!" xml:space="preserve">
<source>Contact will be deleted - this cannot be undone!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contacts" xml:space="preserve">
<source>Contacts</source>
<target>Контакти</target>
@@ -1594,6 +1650,14 @@ This is your own one-time link!</source>
<target>Продължи</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Copy" xml:space="preserve">
<source>Copy</source>
<target>Копирай</target>
@@ -1870,11 +1934,6 @@ This is your own one-time link!</source>
<target>Изтриване на %lld съобщения?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete Contact" xml:space="preserve">
<source>Delete Contact</source>
<target>Изтрий контакт</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete address" xml:space="preserve">
<source>Delete address</source>
<target>Изтрий адрес</target>
@@ -1930,11 +1989,8 @@ This is your own one-time link!</source>
<target>Изтрий контакт</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete contact?&#10;This cannot be undone!" xml:space="preserve">
<source>Delete contact?
This cannot be undone!</source>
<target>Изтрий контакт?
Това не може да бъде отменено!</target>
<trans-unit id="Delete contact?" xml:space="preserve">
<source>Delete contact?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database" xml:space="preserve">
@@ -2027,11 +2083,6 @@ This cannot be undone!</source>
<target>Изтрий старата база данни?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete pending connection" xml:space="preserve">
<source>Delete pending connection</source>
<target>Изтрий предстоящата връзка</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete pending connection?" xml:space="preserve">
<source>Delete pending connection?</source>
<target>Изтрий предстоящата връзка?</target>
@@ -2047,11 +2098,19 @@ This cannot be undone!</source>
<target>Изтрий опашка</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Delete up to 20 messages at once." xml:space="preserve">
<source>Delete up to 20 messages at once.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete user profile?" xml:space="preserve">
<source>Delete user profile?</source>
<target>Изтрий потребителския профил?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete without notification" xml:space="preserve">
<source>Delete without notification</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deleted" xml:space="preserve">
<source>Deleted</source>
<note>No comment provided by engineer.</note>
@@ -2066,6 +2125,10 @@ This cannot be undone!</source>
<target>Изтрито на: %@</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<note>No comment provided by engineer.</note>
@@ -2130,6 +2193,10 @@ This cannot be undone!</source>
<target>Разработване</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer options" xml:space="preserve">
<source>Developer options</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer tools" xml:space="preserve">
<source>Developer tools</source>
<target>Инструменти за разработчици</target>
@@ -2632,11 +2699,6 @@ This cannot be undone!</source>
<target>Грешка при изтриване на връзката</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error deleting contact" xml:space="preserve">
<source>Error deleting contact</source>
<target>Грешка при изтриване на контакт</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error deleting database" xml:space="preserve">
<source>Error deleting database</source>
<target>Грешка при изтриване на базата данни</target>
@@ -2868,6 +2930,10 @@ This cannot be undone!</source>
<target>Дори когато е деактивиран в разговора.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>Изход без запазване</target>
@@ -3662,6 +3728,10 @@ Error: %2$@</source>
3. Връзката е била компрометирана.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It protects your IP address and connections." xml:space="preserve">
<source>It protects your IP address and connections.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It seems like you are already connected via this link. If it is not the case, there was an error (%@)." xml:space="preserve">
<source>It seems like you are already connected via this link. If it is not the case, there was an error (%@).</source>
<target>Изглежда, че вече сте свързани чрез този линк. Ако не е така, има грешка (%@).</target>
@@ -3724,6 +3794,10 @@ This is your link for group %@!</source>
<target>Запази</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep conversation" xml:space="preserve">
<source>Keep conversation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep the app open to use it from desktop" xml:space="preserve">
<source>Keep the app open to use it from desktop</source>
<target>Дръжте приложението отворено, за да го използвате от настолното устройство</target>
@@ -3899,6 +3973,10 @@ This is your link for group %@!</source>
<target>Макс. 30 секунди, получено незабавно.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Media &amp; file servers" xml:space="preserve">
<source>Media &amp; file servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Medium" xml:space="preserve">
<source>Medium</source>
<note>blur media</note>
@@ -3981,12 +4059,8 @@ This is your link for group %@!</source>
<source>Message reception</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message routing fallback" xml:space="preserve">
<source>Message routing fallback</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message routing mode" xml:space="preserve">
<source>Message routing mode</source>
<trans-unit id="Message servers" xml:space="preserve">
<source>Message servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message source remains private." xml:space="preserve">
@@ -4110,6 +4184,10 @@ This is your link for group %@!</source>
<target>Модерирай</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>Модерирано в</target>
@@ -4184,6 +4262,10 @@ This is your link for group %@!</source>
<target>Състояние на мрежата</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>Нов kод за достъп</target>
@@ -4360,19 +4442,27 @@ This is your link for group %@!</source>
<target>Стар архив на база данни</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>Линк за еднократна покана</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will be required for connection. Requires enabling VPN." xml:space="preserve">
<source>Onion hosts will be required for connection. Requires enabling VPN.</source>
<target>За свързване ще са необходими Onion хостове. Изисква се активиране на VPN.</target>
<trans-unit id="Onion hosts will be **required** for connection.&#10;Requires compatible VPN." xml:space="preserve">
<source>Onion hosts will be **required** for connection.
Requires compatible VPN.</source>
<target>За свързване ще са **необходими** Onion хостове.
Изисква се активиране на VPN.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will be used when available. Requires enabling VPN." xml:space="preserve">
<source>Onion hosts will be used when available. Requires enabling VPN.</source>
<target>Ще се използват Onion хостове, когато са налични. Изисква се активиране на VPN.</target>
<trans-unit id="Onion hosts will be used when available.&#10;Requires compatible VPN." xml:space="preserve">
<source>Onion hosts will be used when available.
Requires compatible VPN.</source>
<target>Ще се използват Onion хостове, когато са налични.
Изисква се активиране на VPN.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will not be used." xml:space="preserve">
@@ -4385,6 +4475,10 @@ This is your link for group %@!</source>
<target>Само потребителските устройства съхраняват потребителски профили, контакти, групи и съобщения, изпратени с **двуслойно криптиране от край до край**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only delete conversation" xml:space="preserve">
<source>Only delete conversation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only group owners can change group preferences." xml:space="preserve">
<source>Only group owners can change group preferences.</source>
<target>Само собствениците на групата могат да променят груповите настройки.</target>
@@ -4617,6 +4711,10 @@ This is your link for group %@!</source>
<target>Обаждания "картина в картина"</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
<source>Please ask your contact to enable sending voice messages.</source>
<target>Моля, попитайте вашия контакт, за да активирате изпращане на гласови съобщения.</target>
@@ -4905,6 +5003,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Оценете приложението</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
<source>React…</source>
<target>Реагирай…</target>
@@ -5231,11 +5333,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>Покажи</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Revert" xml:space="preserve">
<source>Revert</source>
<target>Отмени промените</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Revoke" xml:space="preserve">
<source>Revoke</source>
<target>Отзови</target>
@@ -5265,11 +5362,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>SMP server</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SMP servers" xml:space="preserve">
<source>SMP servers</source>
<target>SMP сървъри</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Safely receive files" xml:space="preserve">
<source>Safely receive files</source>
<note>No comment provided by engineer.</note>
@@ -5299,6 +5391,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Запази и уведоми членовете на групата</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save and reconnect" xml:space="preserve">
<source>Save and reconnect</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save and update group profile" xml:space="preserve">
<source>Save and update group profile</source>
<target>Запази и актуализирай профила на групата</target>
@@ -5498,11 +5594,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>Изпращайте потвърждениe за доставка на</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send direct message" xml:space="preserve">
<source>Send direct message</source>
<target>Изпрати лично съобщение</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send direct message to connect" xml:space="preserve">
<source>Send direct message to connect</source>
<target>Изпрати лично съобщение за свързване</target>
@@ -5527,6 +5618,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Изпрати съобщение на живо</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send message to enable calls." xml:space="preserve">
<source>Send message to enable calls.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send messages directly when IP address is protected and your or destination server does not support private routing." xml:space="preserve">
<source>Send messages directly when IP address is protected and your or destination server does not support private routing.</source>
<note>No comment provided by engineer.</note>
@@ -5959,11 +6054,19 @@ Enable in *Network &amp; servers* settings.</source>
<source>Soft</source>
<note>blur media</note>
</trans-unit>
<trans-unit id="Some file(s) were not exported:" xml:space="preserve">
<source>Some file(s) were not exported:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import - you may see Chat console for more details." xml:space="preserve">
<source>Some non-fatal errors occurred during import - you may see Chat console for more details.</source>
<target>Някои не-фатални грешки са възникнали по време на импортиране - може да видите конзолата за повече подробности.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import:" xml:space="preserve">
<source>Some non-fatal errors occurred during import:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Somebody" xml:space="preserve">
<source>Somebody</source>
<target>Някой</target>
@@ -6093,6 +6196,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Системна идентификация</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="TCP connection" xml:space="preserve">
<source>TCP connection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="TCP connection timeout" xml:space="preserve">
<source>TCP connection timeout</source>
<target>Времето на изчакване за установяване на TCP връзка</target>
@@ -6153,11 +6260,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>Докосни за сканиране</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap to start a new chat" xml:space="preserve">
<source>Tap to start a new chat</source>
<target>Докосни за започване на нов чат</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Temporary file error" xml:space="preserve">
<source>Temporary file error</source>
<note>No comment provided by engineer.</note>
@@ -6623,11 +6725,6 @@ To connect, please ask your contact to create another connection link and check
<target>Актуализация</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update .onion hosts setting?" xml:space="preserve">
<source>Update .onion hosts setting?</source>
<target>Актуализиране на настройката за .onion хостове?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update database passphrase" xml:space="preserve">
<source>Update database passphrase</source>
<target>Актуализирай паролата на базата данни</target>
@@ -6638,9 +6735,8 @@ To connect, please ask your contact to create another connection link and check
<target>Актуализиране на мрежовите настройки?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update transport isolation mode?" xml:space="preserve">
<source>Update transport isolation mode?</source>
<target>Актуализиране на режима на изолация на транспорта?</target>
<trans-unit id="Update settings?" xml:space="preserve">
<source>Update settings?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating settings will re-connect the client to all servers." xml:space="preserve">
@@ -6648,11 +6744,6 @@ To connect, please ask your contact to create another connection link and check
<target>Актуализирането на настройките ще свърже отново клиента към всички сървъри.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating this setting will re-connect the client to all servers." xml:space="preserve">
<source>Updating this setting will re-connect the client to all servers.</source>
<target>Актуализирането на тази настройка ще свърже повторно клиента към всички сървъри.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upgrade and open chat" xml:space="preserve">
<source>Upgrade and open chat</source>
<target>Актуализирай и отвори чата</target>
@@ -6748,6 +6839,10 @@ To connect, please ask your contact to create another connection link and check
<target>Използвайте приложението по време на разговора.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use the app with one hand." xml:space="preserve">
<source>Use the app with one hand.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
<source>User profile</source>
<target>Потребителски профил</target>
@@ -6757,11 +6852,6 @@ To connect, please ask your contact to create another connection link and check
<source>User selection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Using .onion hosts requires compatible VPN provider." xml:space="preserve">
<source>Using .onion hosts requires compatible VPN provider.</source>
<target>Използването на .onion хостове изисква съвместим VPN доставчик.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Using SimpleX Chat servers." xml:space="preserve">
<source>Using SimpleX Chat servers.</source>
<target>Използват се сървърите на SimpleX Chat.</target>
@@ -7015,11 +7105,6 @@ To connect, please ask your contact to create another connection link and check
<source>XFTP server</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="XFTP servers" xml:space="preserve">
<source>XFTP servers</source>
<target>XFTP сървъри</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You" xml:space="preserve">
<source>You</source>
<target>Вие</target>
@@ -7141,6 +7226,10 @@ Repeat join request?</source>
<target>Вече можете да изпращате съобщения до %@</target>
<note>notification body</note>
</trans-unit>
<trans-unit id="You can send messages to %@ from Archived contacts." xml:space="preserve">
<source>You can send messages to %@ from Archived contacts.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can set lock screen notification preview via settings." xml:space="preserve">
<source>You can set lock screen notification preview via settings.</source>
<target>Можете да зададете визуализация на известията на заключен екран през настройките.</target>
@@ -7166,6 +7255,10 @@ Repeat join request?</source>
<target>Можете да започнете чат през Настройки на приложението / База данни или като рестартирате приложението</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can still view conversation with %@ in the list of chats." xml:space="preserve">
<source>You can still view conversation with %@ in the list of chats.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can turn on SimpleX Lock via Settings." xml:space="preserve">
<source>You can turn on SimpleX Lock via Settings.</source>
<target>Можете да включите SimpleX заключване през Настройки.</target>
@@ -7208,11 +7301,6 @@ Repeat connection request?</source>
Изпрати отново заявката за свързване?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You have no chats" xml:space="preserve">
<source>You have no chats</source>
<target>Нямате чатове</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You have to enter passphrase every time the app starts - it is not stored on the device." xml:space="preserve">
<source>You have to enter passphrase every time the app starts - it is not stored on the device.</source>
<target>Трябва да въвеждате парола при всяко стартиране на приложението - тя не се съхранява на устройството.</target>
@@ -7233,11 +7321,23 @@ Repeat connection request?</source>
<target>Вие се присъединихте към тази група. Свързване с поканващия член на групата.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You may migrate the exported database." xml:space="preserve">
<source>You may migrate the exported database.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You may save the exported archive." xml:space="preserve">
<source>You may save the exported archive.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts." xml:space="preserve">
<source>You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts.</source>
<target>Трябва да използвате най-новата версия на вашата чат база данни САМО на едно устройство, в противен случай може да спрете да получавате съобщения от някои контакти.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to call to be able to call them." xml:space="preserve">
<source>You need to allow your contact to call to be able to call them.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to send voice messages to be able to send them." xml:space="preserve">
<source>You need to allow your contact to send voice messages to be able to send them.</source>
<target>Трябва да разрешите на вашия контакт да изпраща гласови съобщения, за да можете да ги изпращате.</target>
@@ -7353,13 +7453,6 @@ Repeat connection request?</source>
<target>Вашите чат профили</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contact needs to be online for the connection to complete.&#10;You can cancel this connection and remove the contact (and try later with a new link)." xml:space="preserve">
<source>Your contact needs to be online for the connection to complete.
You can cancel this connection and remove the contact (and try later with a new link).</source>
<target>Вашият контакт трябва да бъде онлайн, за да осъществите връзката.
Можете да откажете тази връзка и да премахнете контакта (и да опитате по -късно с нов линк).</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contact sent a file that is larger than currently supported maximum size (%@)." xml:space="preserve">
<source>Your contact sent a file that is larger than currently supported maximum size (%@).</source>
<target>Вашият контакт изпрати файл, който е по-голям от поддържания в момента максимален размер (%@).</target>
@@ -7375,6 +7468,10 @@ You can cancel this connection and remove the contact (and try later with a new
<target>Вашите контакти ще останат свързани.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>Вашата текуща чат база данни ще бъде ИЗТРИТА и ЗАМЕНЕНА с импортираната.</target>
@@ -7551,6 +7648,10 @@ SimpleX сървърите не могат да видят вашия профи
<target>удебелен</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call" xml:space="preserve">
<source>call</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call error" xml:space="preserve">
<source>call error</source>
<target>грешка при повикване</target>
@@ -7917,6 +8018,10 @@ SimpleX сървърите не могат да видят вашия профи
<target>покана за група %@</target>
<note>group name</note>
</trans-unit>
<trans-unit id="invite" xml:space="preserve">
<source>invite</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="invited" xml:space="preserve">
<source>invited</source>
<target>поканен</target>
@@ -7972,6 +8077,10 @@ SimpleX сървърите не могат да видят вашия профи
<target>свързан</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="message" xml:space="preserve">
<source>message</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="message received" xml:space="preserve">
<source>message received</source>
<target>получено съобщение</target>
@@ -8002,6 +8111,10 @@ SimpleX сървърите не могат да видят вашия профи
<target>месеци</target>
<note>time unit</note>
</trans-unit>
<trans-unit id="mute" xml:space="preserve">
<source>mute</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="never" xml:space="preserve">
<source>never</source>
<target>никога</target>
@@ -8132,6 +8245,10 @@ SimpleX сървърите не могат да видят вашия профи
<target>запазено от %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="search" xml:space="preserve">
<source>search</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="sec" xml:space="preserve">
<source>sec</source>
<target>сек.</target>
@@ -8203,8 +8320,8 @@ last received msg: %2$@</source>
<target>неизвестен</target>
<note>connection info</note>
</trans-unit>
<trans-unit id="unknown relays" xml:space="preserve">
<source>unknown relays</source>
<trans-unit id="unknown servers" xml:space="preserve">
<source>unknown servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unknown status" xml:space="preserve">
@@ -8212,6 +8329,10 @@ last received msg: %2$@</source>
<target>неизвестен статус</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unmute" xml:space="preserve">
<source>unmute</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unprotected" xml:space="preserve">
<source>unprotected</source>
<note>No comment provided by engineer.</note>
@@ -8256,6 +8377,10 @@ last received msg: %2$@</source>
<target>чрез реле</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video" xml:space="preserve">
<source>video</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video call (not e2e encrypted)" xml:space="preserve">
<source>video call (not e2e encrypted)</source>
<target>видео разговор (не е e2e криптиран)</target>
@@ -8502,10 +8627,6 @@ last received msg: %2$@</source>
<source>Database upgrade required</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Dismiss Sheet" xml:space="preserve">
<source>Dismiss Sheet</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error preparing file" xml:space="preserve">
<source>Error preparing file</source>
<note>No comment provided by engineer.</note>
@@ -8530,10 +8651,6 @@ last received msg: %2$@</source>
<source>Invalid migration confirmation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep Trying" xml:space="preserve">
<source>Keep Trying</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keychain error" xml:space="preserve">
<source>Keychain error</source>
<note>No comment provided by engineer.</note>
@@ -8546,10 +8663,6 @@ last received msg: %2$@</source>
<source>No active profile</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="No network connection" xml:space="preserve">
<source>No network connection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Ok" xml:space="preserve">
<source>Ok</source>
<note>No comment provided by engineer.</note>
@@ -8574,14 +8687,22 @@ last received msg: %2$@</source>
<source>Selected chat preferences prohibit this message.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Sending File" xml:space="preserve">
<source>Sending File</source>
<trans-unit id="Sending a message takes longer than expected." xml:space="preserve">
<source>Sending a message takes longer than expected.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Sending message…" xml:space="preserve">
<source>Sending message…</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share" xml:space="preserve">
<source>Share</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Slow network?" xml:space="preserve">
<source>Slow network?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Unknown database error: %@" xml:space="preserve">
<source>Unknown database error: %@</source>
<note>No comment provided by engineer.</note>
@@ -8590,6 +8711,10 @@ last received msg: %2$@</source>
<source>Unsupported format</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wait" xml:space="preserve">
<source>Wait</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wrong database passphrase" xml:space="preserve">
<source>Wrong database passphrase</source>
<note>No comment provided by engineer.</note>
@@ -378,6 +378,11 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -715,6 +720,10 @@
<target>Povolte hovory, pouze pokud je váš kontakt povolí.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow calls?" xml:space="preserve">
<source>Allow calls?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow disappearing messages only if your contact allows it to you." xml:space="preserve">
<source>Allow disappearing messages only if your contact allows it to you.</source>
<target>Povolte mizící zprávy, pouze pokud vám to váš kontakt dovolí.</target>
@@ -895,6 +904,10 @@
<source>Archive and upload</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
<source>Archiving database</source>
<note>No comment provided by engineer.</note>
@@ -1072,10 +1085,22 @@
<target>Hovory</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Calls prohibited!" xml:space="preserve">
<source>Calls prohibited!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Camera not available" xml:space="preserve">
<source>Camera not available</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call contact" xml:space="preserve">
<source>Can't call contact</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call member" xml:space="preserve">
<source>Can't call member</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't invite contact!" xml:space="preserve">
<source>Can't invite contact!</source>
<target>Nelze pozvat kontakt!</target>
@@ -1086,6 +1111,10 @@
<target>Nelze pozvat kontakty!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't message member" xml:space="preserve">
<source>Can't message member</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel" xml:space="preserve">
<source>Cancel</source>
<target>Zrušit</target>
@@ -1192,6 +1221,10 @@
<target>Databáze chatu odstraněna</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat database exported" xml:space="preserve">
<source>Chat database exported</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat database imported" xml:space="preserve">
<source>Chat database imported</source>
<target>Importovaná databáze chatu</target>
@@ -1326,6 +1359,10 @@
<target>Potvrdit heslo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm contact deletion?" xml:space="preserve">
<source>Confirm contact deletion?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm database upgrades" xml:space="preserve">
<source>Confirm database upgrades</source>
<target>Potvrdit aktualizaci databáze</target>
@@ -1375,6 +1412,10 @@
<source>Connect to desktop</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
<source>Connect to yourself?</source>
<note>No comment provided by engineer.</note>
@@ -1437,6 +1478,10 @@ This is your own one-time link!</source>
<target>Připojování k serveru... (chyba: %@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to contact, please wait or check later!" xml:space="preserve">
<source>Connecting to contact, please wait or check later!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to desktop" xml:space="preserve">
<source>Connecting to desktop</source>
<note>No comment provided by engineer.</note>
@@ -1446,6 +1491,10 @@ This is your own one-time link!</source>
<target>Připojení</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection and servers status." xml:space="preserve">
<source>Connection and servers status.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection error" xml:space="preserve">
<source>Connection error</source>
<target>Chyba připojení</target>
@@ -1492,6 +1541,10 @@ This is your own one-time link!</source>
<target>Kontakt již existuje</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact deleted!" xml:space="preserve">
<source>Contact deleted!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact hidden:" xml:space="preserve">
<source>Contact hidden:</source>
<target>Skrytý kontakt:</target>
@@ -1502,9 +1555,8 @@ This is your own one-time link!</source>
<target>Kontakt je připojen</target>
<note>notification</note>
</trans-unit>
<trans-unit id="Contact is not connected yet!" xml:space="preserve">
<source>Contact is not connected yet!</source>
<target>Kontakt ještě není připojen!</target>
<trans-unit id="Contact is deleted." xml:space="preserve">
<source>Contact is deleted.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact name" xml:space="preserve">
@@ -1517,6 +1569,10 @@ This is your own one-time link!</source>
<target>Předvolby kontaktů</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact will be deleted - this cannot be undone!" xml:space="preserve">
<source>Contact will be deleted - this cannot be undone!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contacts" xml:space="preserve">
<source>Contacts</source>
<target>Kontakty</target>
@@ -1532,6 +1588,14 @@ This is your own one-time link!</source>
<target>Pokračovat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Copy" xml:space="preserve">
<source>Copy</source>
<target>Kopírovat</target>
@@ -1799,11 +1863,6 @@ This is your own one-time link!</source>
<source>Delete %lld messages?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete Contact" xml:space="preserve">
<source>Delete Contact</source>
<target>Smazat kontakt</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete address" xml:space="preserve">
<source>Delete address</source>
<target>Odstranit adresu</target>
@@ -1858,9 +1917,8 @@ This is your own one-time link!</source>
<target>Smazat kontakt</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete contact?&#10;This cannot be undone!" xml:space="preserve">
<source>Delete contact?
This cannot be undone!</source>
<trans-unit id="Delete contact?" xml:space="preserve">
<source>Delete contact?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database" xml:space="preserve">
@@ -1952,11 +2010,6 @@ This cannot be undone!</source>
<target>Smazat starou databázi?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete pending connection" xml:space="preserve">
<source>Delete pending connection</source>
<target>Smazat čekající připojení</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete pending connection?" xml:space="preserve">
<source>Delete pending connection?</source>
<target>Smazat čekající připojení?</target>
@@ -1972,11 +2025,19 @@ This cannot be undone!</source>
<target>Odstranit frontu</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Delete up to 20 messages at once." xml:space="preserve">
<source>Delete up to 20 messages at once.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete user profile?" xml:space="preserve">
<source>Delete user profile?</source>
<target>Smazat uživatelský profil?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete without notification" xml:space="preserve">
<source>Delete without notification</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deleted" xml:space="preserve">
<source>Deleted</source>
<note>No comment provided by engineer.</note>
@@ -1991,6 +2052,10 @@ This cannot be undone!</source>
<target>Smazáno v: %@</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<note>No comment provided by engineer.</note>
@@ -2052,6 +2117,10 @@ This cannot be undone!</source>
<target>Vyvinout</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer options" xml:space="preserve">
<source>Developer options</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer tools" xml:space="preserve">
<source>Developer tools</source>
<target>Nástroje pro vývojáře</target>
@@ -2536,11 +2605,6 @@ This cannot be undone!</source>
<target>Chyba při mazání připojení</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error deleting contact" xml:space="preserve">
<source>Error deleting contact</source>
<target>Chyba mazání kontaktu</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error deleting database" xml:space="preserve">
<source>Error deleting database</source>
<target>Chyba při mazání databáze</target>
@@ -2766,6 +2830,10 @@ This cannot be undone!</source>
<target>I při vypnutí v konverzaci.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>Ukončit bez uložení</target>
@@ -3530,6 +3598,10 @@ Error: %2$@</source>
3. Spojení je kompromitováno.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It protects your IP address and connections." xml:space="preserve">
<source>It protects your IP address and connections.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It seems like you are already connected via this link. If it is not the case, there was an error (%@)." xml:space="preserve">
<source>It seems like you are already connected via this link. If it is not the case, there was an error (%@).</source>
<target>Zdá se, že jste již připojeni prostřednictvím tohoto odkazu. Pokud tomu tak není, došlo k chybě (%@).</target>
@@ -3586,6 +3658,10 @@ This is your link for group %@!</source>
<source>Keep</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep conversation" xml:space="preserve">
<source>Keep conversation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep the app open to use it from desktop" xml:space="preserve">
<source>Keep the app open to use it from desktop</source>
<note>No comment provided by engineer.</note>
@@ -3756,6 +3832,10 @@ This is your link for group %@!</source>
<target>Max 30 vteřin, přijato okamžitě.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Media &amp; file servers" xml:space="preserve">
<source>Media &amp; file servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Medium" xml:space="preserve">
<source>Medium</source>
<note>blur media</note>
@@ -3838,12 +3918,8 @@ This is your link for group %@!</source>
<source>Message reception</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message routing fallback" xml:space="preserve">
<source>Message routing fallback</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message routing mode" xml:space="preserve">
<source>Message routing mode</source>
<trans-unit id="Message servers" xml:space="preserve">
<source>Message servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message source remains private." xml:space="preserve">
@@ -3955,6 +4031,10 @@ This is your link for group %@!</source>
<target>Moderovat</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>Upraveno v</target>
@@ -4026,6 +4106,10 @@ This is your link for group %@!</source>
<target>Stav sítě</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>Nové heslo</target>
@@ -4198,19 +4282,27 @@ This is your link for group %@!</source>
<target>Archiv staré databáze</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>Jednorázový zvací odkaz</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will be required for connection. Requires enabling VPN." xml:space="preserve">
<source>Onion hosts will be required for connection. Requires enabling VPN.</source>
<target>Pro připojení budou vyžadováni Onion hostitelé. Vyžaduje povolení sítě VPN.</target>
<trans-unit id="Onion hosts will be **required** for connection.&#10;Requires compatible VPN." xml:space="preserve">
<source>Onion hosts will be **required** for connection.
Requires compatible VPN.</source>
<target>Pro připojení budou vyžadováni Onion hostitelé.
Vyžaduje povolení sítě VPN.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will be used when available. Requires enabling VPN." xml:space="preserve">
<source>Onion hosts will be used when available. Requires enabling VPN.</source>
<target>Onion hostitelé budou použiti, pokud jsou k dispozici. Vyžaduje povolení sítě VPN.</target>
<trans-unit id="Onion hosts will be used when available.&#10;Requires compatible VPN." xml:space="preserve">
<source>Onion hosts will be used when available.
Requires compatible VPN.</source>
<target>Onion hostitelé budou použiti, pokud jsou k dispozici.
Vyžaduje povolení sítě VPN.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will not be used." xml:space="preserve">
@@ -4223,6 +4315,10 @@ This is your link for group %@!</source>
<target>Pouze klientská zařízení ukládají uživatelské profily, kontakty, skupiny a zprávy odeslané s **2vrstvým šifrováním typu end-to-end**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only delete conversation" xml:space="preserve">
<source>Only delete conversation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only group owners can change group preferences." xml:space="preserve">
<source>Only group owners can change group preferences.</source>
<target>Předvolby skupiny mohou měnit pouze vlastníci skupiny.</target>
@@ -4442,6 +4538,10 @@ This is your link for group %@!</source>
<source>Picture-in-picture calls</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
<source>Please ask your contact to enable sending voice messages.</source>
<target>Prosím, požádejte kontaktní osobu, aby umožnila odesílání hlasových zpráv.</target>
@@ -4720,6 +4820,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Ohodnoťte aplikaci</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
<source>React…</source>
<target>Reagovat…</target>
@@ -5037,11 +5141,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>Odhalit</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Revert" xml:space="preserve">
<source>Revert</source>
<target>Vrátit</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Revoke" xml:space="preserve">
<source>Revoke</source>
<target>Odvolat</target>
@@ -5071,11 +5170,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>SMP server</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SMP servers" xml:space="preserve">
<source>SMP servers</source>
<target>SMP servery</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Safely receive files" xml:space="preserve">
<source>Safely receive files</source>
<note>No comment provided by engineer.</note>
@@ -5104,6 +5198,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Uložit a upozornit členy skupiny</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save and reconnect" xml:space="preserve">
<source>Save and reconnect</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save and update group profile" xml:space="preserve">
<source>Save and update group profile</source>
<target>Uložit a aktualizovat profil skupiny</target>
@@ -5297,11 +5395,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>Potvrzení o doručení zasílat na</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send direct message" xml:space="preserve">
<source>Send direct message</source>
<target>Odeslat přímou zprávu</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send direct message to connect" xml:space="preserve">
<source>Send direct message to connect</source>
<target>Odeslat přímou zprávu pro připojení</target>
@@ -5326,6 +5419,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Odeslat živou zprávu</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send message to enable calls." xml:space="preserve">
<source>Send message to enable calls.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send messages directly when IP address is protected and your or destination server does not support private routing." xml:space="preserve">
<source>Send messages directly when IP address is protected and your or destination server does not support private routing.</source>
<note>No comment provided by engineer.</note>
@@ -5750,11 +5847,19 @@ Enable in *Network &amp; servers* settings.</source>
<source>Soft</source>
<note>blur media</note>
</trans-unit>
<trans-unit id="Some file(s) were not exported:" xml:space="preserve">
<source>Some file(s) were not exported:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import - you may see Chat console for more details." xml:space="preserve">
<source>Some non-fatal errors occurred during import - you may see Chat console for more details.</source>
<target>Během importu došlo k nezávažným chybám - podrobnosti naleznete v chat konzoli.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import:" xml:space="preserve">
<source>Some non-fatal errors occurred during import:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Somebody" xml:space="preserve">
<source>Somebody</source>
<target>Někdo</target>
@@ -5880,6 +5985,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Ověření systému</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="TCP connection" xml:space="preserve">
<source>TCP connection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="TCP connection timeout" xml:space="preserve">
<source>TCP connection timeout</source>
<target>Časový limit připojení TCP</target>
@@ -5937,11 +6046,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>Tap to scan</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap to start a new chat" xml:space="preserve">
<source>Tap to start a new chat</source>
<target>Klepnutím na zahájíte nový chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Temporary file error" xml:space="preserve">
<source>Temporary file error</source>
<note>No comment provided by engineer.</note>
@@ -6389,11 +6493,6 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu
<target>Aktualizovat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update .onion hosts setting?" xml:space="preserve">
<source>Update .onion hosts setting?</source>
<target>Aktualizovat nastavení hostitelů .onion?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update database passphrase" xml:space="preserve">
<source>Update database passphrase</source>
<target>Aktualizovat přístupovou frázi databáze</target>
@@ -6404,9 +6503,8 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu
<target>Aktualizovat nastavení sítě?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update transport isolation mode?" xml:space="preserve">
<source>Update transport isolation mode?</source>
<target>Aktualizovat režim dopravní izolace?</target>
<trans-unit id="Update settings?" xml:space="preserve">
<source>Update settings?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating settings will re-connect the client to all servers." xml:space="preserve">
@@ -6414,11 +6512,6 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu
<target>Aktualizací nastavení se klient znovu připojí ke všem serverům.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating this setting will re-connect the client to all servers." xml:space="preserve">
<source>Updating this setting will re-connect the client to all servers.</source>
<target>Aktualizace tohoto nastavení znovu připojí klienta ke všem serverům.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upgrade and open chat" xml:space="preserve">
<source>Upgrade and open chat</source>
<target>Zvýšit a otevřít chat</target>
@@ -6509,6 +6602,10 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu
<source>Use the app while in the call.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use the app with one hand." xml:space="preserve">
<source>Use the app with one hand.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
<source>User profile</source>
<target>Profil uživatele</target>
@@ -6518,11 +6615,6 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu
<source>User selection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Using .onion hosts requires compatible VPN provider." xml:space="preserve">
<source>Using .onion hosts requires compatible VPN provider.</source>
<target>Použití hostitelů .onion vyžaduje kompatibilního poskytovatele VPN.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Using SimpleX Chat servers." xml:space="preserve">
<source>Using SimpleX Chat servers.</source>
<target>Používat servery SimpleX Chat.</target>
@@ -6759,11 +6851,6 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu
<source>XFTP server</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="XFTP servers" xml:space="preserve">
<source>XFTP servers</source>
<target>XFTP servery</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You" xml:space="preserve">
<source>You</source>
<target>Vy</target>
@@ -6874,6 +6961,10 @@ Repeat join request?</source>
<target>Nyní můžete posílat zprávy %@</target>
<note>notification body</note>
</trans-unit>
<trans-unit id="You can send messages to %@ from Archived contacts." xml:space="preserve">
<source>You can send messages to %@ from Archived contacts.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can set lock screen notification preview via settings." xml:space="preserve">
<source>You can set lock screen notification preview via settings.</source>
<target>Náhled oznámení na zamykací obrazovce můžete změnit v nastavení.</target>
@@ -6899,6 +6990,10 @@ Repeat join request?</source>
<target>Chat můžete zahájit prostřednictvím aplikace Nastavení / Databáze nebo restartováním aplikace</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can still view conversation with %@ in the list of chats." xml:space="preserve">
<source>You can still view conversation with %@ in the list of chats.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can turn on SimpleX Lock via Settings." xml:space="preserve">
<source>You can turn on SimpleX Lock via Settings.</source>
<target>Zámek SimpleX můžete zapnout v Nastavení.</target>
@@ -6937,11 +7032,6 @@ Repeat join request?</source>
Repeat connection request?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You have no chats" xml:space="preserve">
<source>You have no chats</source>
<target>Nemáte žádné konverzace</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You have to enter passphrase every time the app starts - it is not stored on the device." xml:space="preserve">
<source>You have to enter passphrase every time the app starts - it is not stored on the device.</source>
<target>Musíte zadat přístupovou frázi při každém spuštění aplikace - není uložena v zařízení.</target>
@@ -6962,11 +7052,23 @@ Repeat connection request?</source>
<target>Připojili jste se k této skupině. Připojení k pozvání člena skupiny.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You may migrate the exported database." xml:space="preserve">
<source>You may migrate the exported database.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You may save the exported archive." xml:space="preserve">
<source>You may save the exported archive.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts." xml:space="preserve">
<source>You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts.</source>
<target>Nejnovější verzi databáze chatu musíte používat POUZE v jednom zařízení, jinak se může stát, že přestanete přijímat zprávy od některých kontaktů.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to call to be able to call them." xml:space="preserve">
<source>You need to allow your contact to call to be able to call them.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to send voice messages to be able to send them." xml:space="preserve">
<source>You need to allow your contact to send voice messages to be able to send them.</source>
<target>Abyste mohli odesílat hlasové zprávy, musíte je povolit svému kontaktu.</target>
@@ -7080,13 +7182,6 @@ Repeat connection request?</source>
<target>Vaše chat profily</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contact needs to be online for the connection to complete.&#10;You can cancel this connection and remove the contact (and try later with a new link)." xml:space="preserve">
<source>Your contact needs to be online for the connection to complete.
You can cancel this connection and remove the contact (and try later with a new link).</source>
<target>K dokončení připojení, musí být váš kontakt online.
Toto připojení můžete zrušit a kontakt odebrat (a zkusit to později s novým odkazem).</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contact sent a file that is larger than currently supported maximum size (%@)." xml:space="preserve">
<source>Your contact sent a file that is larger than currently supported maximum size (%@).</source>
<target>Kontakt odeslal soubor, který je větší než aktuálně podporovaná maximální velikost (%@).</target>
@@ -7102,6 +7197,10 @@ Toto připojení můžete zrušit a kontakt odebrat (a zkusit to později s nov
<target>Vaše kontakty zůstanou připojeny.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>Vaše aktuální chat databáze bude ODSTRANĚNA a NAHRAZENA importovanou.</target>
@@ -7270,6 +7369,10 @@ Servery SimpleX nevidí váš profil.</target>
<target>tučně</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call" xml:space="preserve">
<source>call</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call error" xml:space="preserve">
<source>call error</source>
<target>chyba volání</target>
@@ -7632,6 +7735,10 @@ Servery SimpleX nevidí váš profil.</target>
<target>pozvánka do skupiny %@</target>
<note>group name</note>
</trans-unit>
<trans-unit id="invite" xml:space="preserve">
<source>invite</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="invited" xml:space="preserve">
<source>invited</source>
<target>pozvánka</target>
@@ -7686,6 +7793,10 @@ Servery SimpleX nevidí váš profil.</target>
<target>připojeno</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="message" xml:space="preserve">
<source>message</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="message received" xml:space="preserve">
<source>message received</source>
<target>zpráva přijata</target>
@@ -7716,6 +7827,10 @@ Servery SimpleX nevidí váš profil.</target>
<target>měsíců</target>
<note>time unit</note>
</trans-unit>
<trans-unit id="mute" xml:space="preserve">
<source>mute</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="never" xml:space="preserve">
<source>never</source>
<target>nikdy</target>
@@ -7840,6 +7955,10 @@ Servery SimpleX nevidí váš profil.</target>
<source>saved from %@</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="search" xml:space="preserve">
<source>search</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="sec" xml:space="preserve">
<source>sec</source>
<target>sek</target>
@@ -7907,14 +8026,18 @@ last received msg: %2$@</source>
<target>neznámý</target>
<note>connection info</note>
</trans-unit>
<trans-unit id="unknown relays" xml:space="preserve">
<source>unknown relays</source>
<trans-unit id="unknown servers" xml:space="preserve">
<source>unknown servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unknown status" xml:space="preserve">
<source>unknown status</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unmute" xml:space="preserve">
<source>unmute</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unprotected" xml:space="preserve">
<source>unprotected</source>
<note>No comment provided by engineer.</note>
@@ -7957,6 +8080,10 @@ last received msg: %2$@</source>
<target>přes relé</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video" xml:space="preserve">
<source>video</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video call (not e2e encrypted)" xml:space="preserve">
<source>video call (not e2e encrypted)</source>
<target>videohovoru (nešifrovaného e2e)</target>
@@ -8199,10 +8326,6 @@ last received msg: %2$@</source>
<source>Database upgrade required</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Dismiss Sheet" xml:space="preserve">
<source>Dismiss Sheet</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error preparing file" xml:space="preserve">
<source>Error preparing file</source>
<note>No comment provided by engineer.</note>
@@ -8227,10 +8350,6 @@ last received msg: %2$@</source>
<source>Invalid migration confirmation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep Trying" xml:space="preserve">
<source>Keep Trying</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keychain error" xml:space="preserve">
<source>Keychain error</source>
<note>No comment provided by engineer.</note>
@@ -8243,10 +8362,6 @@ last received msg: %2$@</source>
<source>No active profile</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="No network connection" xml:space="preserve">
<source>No network connection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Ok" xml:space="preserve">
<source>Ok</source>
<note>No comment provided by engineer.</note>
@@ -8271,14 +8386,22 @@ last received msg: %2$@</source>
<source>Selected chat preferences prohibit this message.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Sending File" xml:space="preserve">
<source>Sending File</source>
<trans-unit id="Sending a message takes longer than expected." xml:space="preserve">
<source>Sending a message takes longer than expected.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Sending message…" xml:space="preserve">
<source>Sending message…</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share" xml:space="preserve">
<source>Share</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Slow network?" xml:space="preserve">
<source>Slow network?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Unknown database error: %@" xml:space="preserve">
<source>Unknown database error: %@</source>
<note>No comment provided by engineer.</note>
@@ -8287,6 +8410,10 @@ last received msg: %2$@</source>
<source>Unsupported format</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wait" xml:space="preserve">
<source>Wait</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wrong database passphrase" xml:space="preserve">
<source>Wrong database passphrase</source>
<note>No comment provided by engineer.</note>
File diff suppressed because it is too large Load Diff
@@ -392,6 +392,13 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<target>- Search contacts when starting chat.
- Archive contacts to chat later.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -748,6 +755,11 @@
<target>Allow calls only if your contact allows them.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow calls?" xml:space="preserve">
<source>Allow calls?</source>
<target>Allow calls?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow disappearing messages only if your contact allows it to you." xml:space="preserve">
<source>Allow disappearing messages only if your contact allows it to you.</source>
<target>Allow disappearing messages only if your contact allows it to you.</target>
@@ -938,6 +950,11 @@
<target>Archive and upload</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<target>Archived contacts</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
<source>Archiving database</source>
<target>Archiving database</target>
@@ -1128,11 +1145,26 @@
<target>Calls</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Calls prohibited!" xml:space="preserve">
<source>Calls prohibited!</source>
<target>Calls prohibited!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Camera not available" xml:space="preserve">
<source>Camera not available</source>
<target>Camera not available</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call contact" xml:space="preserve">
<source>Can't call contact</source>
<target>Can't call contact</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call member" xml:space="preserve">
<source>Can't call member</source>
<target>Can't call member</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't invite contact!" xml:space="preserve">
<source>Can't invite contact!</source>
<target>Can't invite contact!</target>
@@ -1143,6 +1175,11 @@
<target>Can't invite contacts!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't message member" xml:space="preserve">
<source>Can't message member</source>
<target>Can't message member</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel" xml:space="preserve">
<source>Cancel</source>
<target>Cancel</target>
@@ -1254,6 +1291,11 @@
<target>Chat database deleted</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat database exported" xml:space="preserve">
<source>Chat database exported</source>
<target>Chat database exported</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat database imported" xml:space="preserve">
<source>Chat database imported</source>
<target>Chat database imported</target>
@@ -1399,6 +1441,11 @@
<target>Confirm Passcode</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm contact deletion?" xml:space="preserve">
<source>Confirm contact deletion?</source>
<target>Confirm contact deletion?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm database upgrades" xml:space="preserve">
<source>Confirm database upgrades</source>
<target>Confirm database upgrades</target>
@@ -1454,6 +1501,11 @@
<target>Connect to desktop</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<target>Connect to your friends faster</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
<source>Connect to yourself?</source>
<target>Connect to yourself?</target>
@@ -1528,6 +1580,11 @@ This is your own one-time link!</target>
<target>Connecting to server… (error: %@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to contact, please wait or check later!" xml:space="preserve">
<source>Connecting to contact, please wait or check later!</source>
<target>Connecting to contact, please wait or check later!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to desktop" xml:space="preserve">
<source>Connecting to desktop</source>
<target>Connecting to desktop</target>
@@ -1538,6 +1595,11 @@ This is your own one-time link!</target>
<target>Connection</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection and servers status." xml:space="preserve">
<source>Connection and servers status.</source>
<target>Connection and servers status.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection error" xml:space="preserve">
<source>Connection error</source>
<target>Connection error</target>
@@ -1588,6 +1650,11 @@ This is your own one-time link!</target>
<target>Contact already exists</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact deleted!" xml:space="preserve">
<source>Contact deleted!</source>
<target>Contact deleted!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact hidden:" xml:space="preserve">
<source>Contact hidden:</source>
<target>Contact hidden:</target>
@@ -1598,9 +1665,9 @@ This is your own one-time link!</target>
<target>Contact is connected</target>
<note>notification</note>
</trans-unit>
<trans-unit id="Contact is not connected yet!" xml:space="preserve">
<source>Contact is not connected yet!</source>
<target>Contact is not connected yet!</target>
<trans-unit id="Contact is deleted." xml:space="preserve">
<source>Contact is deleted.</source>
<target>Contact is deleted.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact name" xml:space="preserve">
@@ -1613,6 +1680,11 @@ This is your own one-time link!</target>
<target>Contact preferences</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact will be deleted - this cannot be undone!" xml:space="preserve">
<source>Contact will be deleted - this cannot be undone!</source>
<target>Contact will be deleted - this cannot be undone!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contacts" xml:space="preserve">
<source>Contacts</source>
<target>Contacts</target>
@@ -1628,6 +1700,16 @@ This is your own one-time link!</target>
<target>Continue</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<target>Control your network</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<target>Conversation deleted!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Copy" xml:space="preserve">
<source>Copy</source>
<target>Copy</target>
@@ -1911,11 +1993,6 @@ This is your own one-time link!</target>
<target>Delete %lld messages?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete Contact" xml:space="preserve">
<source>Delete Contact</source>
<target>Delete Contact</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete address" xml:space="preserve">
<source>Delete address</source>
<target>Delete address</target>
@@ -1971,11 +2048,9 @@ This is your own one-time link!</target>
<target>Delete contact</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete contact?&#10;This cannot be undone!" xml:space="preserve">
<source>Delete contact?
This cannot be undone!</source>
<target>Delete contact?
This cannot be undone!</target>
<trans-unit id="Delete contact?" xml:space="preserve">
<source>Delete contact?</source>
<target>Delete contact?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database" xml:space="preserve">
@@ -2068,11 +2143,6 @@ This cannot be undone!</target>
<target>Delete old database?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete pending connection" xml:space="preserve">
<source>Delete pending connection</source>
<target>Delete pending connection</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete pending connection?" xml:space="preserve">
<source>Delete pending connection?</source>
<target>Delete pending connection?</target>
@@ -2088,11 +2158,21 @@ This cannot be undone!</target>
<target>Delete queue</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Delete up to 20 messages at once." xml:space="preserve">
<source>Delete up to 20 messages at once.</source>
<target>Delete up to 20 messages at once.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete user profile?" xml:space="preserve">
<source>Delete user profile?</source>
<target>Delete user profile?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete without notification" xml:space="preserve">
<source>Delete without notification</source>
<target>Delete without notification</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deleted" xml:space="preserve">
<source>Deleted</source>
<target>Deleted</target>
@@ -2108,6 +2188,11 @@ This cannot be undone!</target>
<target>Deleted at: %@</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<target>Deleted chats</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<target>Deletion errors</target>
@@ -2178,6 +2263,11 @@ This cannot be undone!</target>
<target>Develop</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer options" xml:space="preserve">
<source>Developer options</source>
<target>Developer options</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer tools" xml:space="preserve">
<source>Developer tools</source>
<target>Developer tools</target>
@@ -2688,11 +2778,6 @@ This cannot be undone!</target>
<target>Error deleting connection</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error deleting contact" xml:space="preserve">
<source>Error deleting contact</source>
<target>Error deleting contact</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error deleting database" xml:space="preserve">
<source>Error deleting database</source>
<target>Error deleting database</target>
@@ -2929,6 +3014,11 @@ This cannot be undone!</target>
<target>Even when disabled in the conversation.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<target>Even when they are offline.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>Exit without saving</target>
@@ -3741,6 +3831,11 @@ Error: %2$@</target>
3. The connection was compromised.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It protects your IP address and connections." xml:space="preserve">
<source>It protects your IP address and connections.</source>
<target>It protects your IP address and connections.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It seems like you are already connected via this link. If it is not the case, there was an error (%@)." xml:space="preserve">
<source>It seems like you are already connected via this link. If it is not the case, there was an error (%@).</source>
<target>It seems like you are already connected via this link. If it is not the case, there was an error (%@).</target>
@@ -3803,6 +3898,11 @@ This is your link for group %@!</target>
<target>Keep</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep conversation" xml:space="preserve">
<source>Keep conversation</source>
<target>Keep conversation</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep the app open to use it from desktop" xml:space="preserve">
<source>Keep the app open to use it from desktop</source>
<target>Keep the app open to use it from desktop</target>
@@ -3978,6 +4078,11 @@ This is your link for group %@!</target>
<target>Max 30 seconds, received instantly.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Media &amp; file servers" xml:space="preserve">
<source>Media &amp; file servers</source>
<target>Media &amp; file servers</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Medium" xml:space="preserve">
<source>Medium</source>
<target>Medium</target>
@@ -4068,14 +4173,9 @@ This is your link for group %@!</target>
<target>Message reception</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message routing fallback" xml:space="preserve">
<source>Message routing fallback</source>
<target>Message routing fallback</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message routing mode" xml:space="preserve">
<source>Message routing mode</source>
<target>Message routing mode</target>
<trans-unit id="Message servers" xml:space="preserve">
<source>Message servers</source>
<target>Message servers</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message source remains private." xml:space="preserve">
@@ -4203,6 +4303,11 @@ This is your link for group %@!</target>
<target>Moderate</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<target>Moderate like a pro ✋</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>Moderated at</target>
@@ -4278,6 +4383,11 @@ This is your link for group %@!</target>
<target>Network status</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<target>New Chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>New Passcode</target>
@@ -4457,19 +4567,28 @@ This is your link for group %@!</target>
<target>Old database archive</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<target>One-hand UI</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>One-time invitation link</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will be required for connection. Requires enabling VPN." xml:space="preserve">
<source>Onion hosts will be required for connection. Requires enabling VPN.</source>
<target>Onion hosts will be required for connection. Requires enabling VPN.</target>
<trans-unit id="Onion hosts will be **required** for connection.&#10;Requires compatible VPN." xml:space="preserve">
<source>Onion hosts will be **required** for connection.
Requires compatible VPN.</source>
<target>Onion hosts will be **required** for connection.
Requires compatible VPN.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will be used when available. Requires enabling VPN." xml:space="preserve">
<source>Onion hosts will be used when available. Requires enabling VPN.</source>
<target>Onion hosts will be used when available. Requires enabling VPN.</target>
<trans-unit id="Onion hosts will be used when available.&#10;Requires compatible VPN." xml:space="preserve">
<source>Onion hosts will be used when available.
Requires compatible VPN.</source>
<target>Onion hosts will be used when available.
Requires compatible VPN.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will not be used." xml:space="preserve">
@@ -4482,6 +4601,11 @@ This is your link for group %@!</target>
<target>Only client devices store user profiles, contacts, groups, and messages sent with **2-layer end-to-end encryption**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only delete conversation" xml:space="preserve">
<source>Only delete conversation</source>
<target>Only delete conversation</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only group owners can change group preferences." xml:space="preserve">
<source>Only group owners can change group preferences.</source>
<target>Only group owners can change group preferences.</target>
@@ -4717,6 +4841,11 @@ This is your link for group %@!</target>
<target>Picture-in-picture calls</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<target>Please ask your contact to enable calls.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
<source>Please ask your contact to enable sending voice messages.</source>
<target>Please ask your contact to enable sending voice messages.</target>
@@ -5018,6 +5147,11 @@ Enable in *Network &amp; servers* settings.</target>
<target>Rate the app</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<target>Reachable chat toolbar 👋</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
<source>React…</source>
<target>React…</target>
@@ -5358,11 +5492,6 @@ Enable in *Network &amp; servers* settings.</target>
<target>Reveal</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Revert" xml:space="preserve">
<source>Revert</source>
<target>Revert</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Revoke" xml:space="preserve">
<source>Revoke</source>
<target>Revoke</target>
@@ -5393,11 +5522,6 @@ Enable in *Network &amp; servers* settings.</target>
<target>SMP server</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SMP servers" xml:space="preserve">
<source>SMP servers</source>
<target>SMP servers</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Safely receive files" xml:space="preserve">
<source>Safely receive files</source>
<target>Safely receive files</target>
@@ -5428,6 +5552,11 @@ Enable in *Network &amp; servers* settings.</target>
<target>Save and notify group members</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save and reconnect" xml:space="preserve">
<source>Save and reconnect</source>
<target>Save and reconnect</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save and update group profile" xml:space="preserve">
<source>Save and update group profile</source>
<target>Save and update group profile</target>
@@ -5633,11 +5762,6 @@ Enable in *Network &amp; servers* settings.</target>
<target>Send delivery receipts to</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send direct message" xml:space="preserve">
<source>Send direct message</source>
<target>Send direct message</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send direct message to connect" xml:space="preserve">
<source>Send direct message to connect</source>
<target>Send direct message to connect</target>
@@ -5663,6 +5787,11 @@ Enable in *Network &amp; servers* settings.</target>
<target>Send live message</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send message to enable calls." xml:space="preserve">
<source>Send message to enable calls.</source>
<target>Send message to enable calls.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send messages directly when IP address is protected and your or destination server does not support private routing." xml:space="preserve">
<source>Send messages directly when IP address is protected and your or destination server does not support private routing.</source>
<target>Send messages directly when IP address is protected and your or destination server does not support private routing.</target>
@@ -6118,11 +6247,21 @@ Enable in *Network &amp; servers* settings.</target>
<target>Soft</target>
<note>blur media</note>
</trans-unit>
<trans-unit id="Some file(s) were not exported:" xml:space="preserve">
<source>Some file(s) were not exported:</source>
<target>Some file(s) were not exported:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import - you may see Chat console for more details." xml:space="preserve">
<source>Some non-fatal errors occurred during import - you may see Chat console for more details.</source>
<target>Some non-fatal errors occurred during import - you may see Chat console for more details.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import:" xml:space="preserve">
<source>Some non-fatal errors occurred during import:</source>
<target>Some non-fatal errors occurred during import:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Somebody" xml:space="preserve">
<source>Somebody</source>
<target>Somebody</target>
@@ -6258,6 +6397,11 @@ Enable in *Network &amp; servers* settings.</target>
<target>System authentication</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="TCP connection" xml:space="preserve">
<source>TCP connection</source>
<target>TCP connection</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="TCP connection timeout" xml:space="preserve">
<source>TCP connection timeout</source>
<target>TCP connection timeout</target>
@@ -6318,11 +6462,6 @@ Enable in *Network &amp; servers* settings.</target>
<target>Tap to scan</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap to start a new chat" xml:space="preserve">
<source>Tap to start a new chat</source>
<target>Tap to start a new chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Temporary file error" xml:space="preserve">
<source>Temporary file error</source>
<target>Temporary file error</target>
@@ -6799,11 +6938,6 @@ To connect, please ask your contact to create another connection link and check
<target>Update</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update .onion hosts setting?" xml:space="preserve">
<source>Update .onion hosts setting?</source>
<target>Update .onion hosts setting?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update database passphrase" xml:space="preserve">
<source>Update database passphrase</source>
<target>Update database passphrase</target>
@@ -6814,9 +6948,9 @@ To connect, please ask your contact to create another connection link and check
<target>Update network settings?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update transport isolation mode?" xml:space="preserve">
<source>Update transport isolation mode?</source>
<target>Update transport isolation mode?</target>
<trans-unit id="Update settings?" xml:space="preserve">
<source>Update settings?</source>
<target>Update settings?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating settings will re-connect the client to all servers." xml:space="preserve">
@@ -6824,11 +6958,6 @@ To connect, please ask your contact to create another connection link and check
<target>Updating settings will re-connect the client to all servers.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating this setting will re-connect the client to all servers." xml:space="preserve">
<source>Updating this setting will re-connect the client to all servers.</source>
<target>Updating this setting will re-connect the client to all servers.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upgrade and open chat" xml:space="preserve">
<source>Upgrade and open chat</source>
<target>Upgrade and open chat</target>
@@ -6929,6 +7058,11 @@ To connect, please ask your contact to create another connection link and check
<target>Use the app while in the call.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use the app with one hand." xml:space="preserve">
<source>Use the app with one hand.</source>
<target>Use the app with one hand.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
<source>User profile</source>
<target>User profile</target>
@@ -6939,11 +7073,6 @@ To connect, please ask your contact to create another connection link and check
<target>User selection</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Using .onion hosts requires compatible VPN provider." xml:space="preserve">
<source>Using .onion hosts requires compatible VPN provider.</source>
<target>Using .onion hosts requires compatible VPN provider.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Using SimpleX Chat servers." xml:space="preserve">
<source>Using SimpleX Chat servers.</source>
<target>Using SimpleX Chat servers.</target>
@@ -7204,11 +7333,6 @@ To connect, please ask your contact to create another connection link and check
<target>XFTP server</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="XFTP servers" xml:space="preserve">
<source>XFTP servers</source>
<target>XFTP servers</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You" xml:space="preserve">
<source>You</source>
<target>You</target>
@@ -7331,6 +7455,11 @@ Repeat join request?</target>
<target>You can now chat with %@</target>
<note>notification body</note>
</trans-unit>
<trans-unit id="You can send messages to %@ from Archived contacts." xml:space="preserve">
<source>You can send messages to %@ from Archived contacts.</source>
<target>You can send messages to %@ from Archived contacts.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can set lock screen notification preview via settings." xml:space="preserve">
<source>You can set lock screen notification preview via settings.</source>
<target>You can set lock screen notification preview via settings.</target>
@@ -7356,6 +7485,11 @@ Repeat join request?</target>
<target>You can start chat via app Settings / Database or by restarting the app</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can still view conversation with %@ in the list of chats." xml:space="preserve">
<source>You can still view conversation with %@ in the list of chats.</source>
<target>You can still view conversation with %@ in the list of chats.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can turn on SimpleX Lock via Settings." xml:space="preserve">
<source>You can turn on SimpleX Lock via Settings.</source>
<target>You can turn on SimpleX Lock via Settings.</target>
@@ -7398,11 +7532,6 @@ Repeat connection request?</source>
Repeat connection request?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You have no chats" xml:space="preserve">
<source>You have no chats</source>
<target>You have no chats</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You have to enter passphrase every time the app starts - it is not stored on the device." xml:space="preserve">
<source>You have to enter passphrase every time the app starts - it is not stored on the device.</source>
<target>You have to enter passphrase every time the app starts - it is not stored on the device.</target>
@@ -7423,11 +7552,26 @@ Repeat connection request?</target>
<target>You joined this group. Connecting to inviting group member.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You may migrate the exported database." xml:space="preserve">
<source>You may migrate the exported database.</source>
<target>You may migrate the exported database.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You may save the exported archive." xml:space="preserve">
<source>You may save the exported archive.</source>
<target>You may save the exported archive.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts." xml:space="preserve">
<source>You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts.</source>
<target>You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to call to be able to call them." xml:space="preserve">
<source>You need to allow your contact to call to be able to call them.</source>
<target>You need to allow your contact to call to be able to call them.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to send voice messages to be able to send them." xml:space="preserve">
<source>You need to allow your contact to send voice messages to be able to send them.</source>
<target>You need to allow your contact to send voice messages to be able to send them.</target>
@@ -7543,13 +7687,6 @@ Repeat connection request?</target>
<target>Your chat profiles</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contact needs to be online for the connection to complete.&#10;You can cancel this connection and remove the contact (and try later with a new link)." xml:space="preserve">
<source>Your contact needs to be online for the connection to complete.
You can cancel this connection and remove the contact (and try later with a new link).</source>
<target>Your contact needs to be online for the connection to complete.
You can cancel this connection and remove the contact (and try later with a new link).</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contact sent a file that is larger than currently supported maximum size (%@)." xml:space="preserve">
<source>Your contact sent a file that is larger than currently supported maximum size (%@).</source>
<target>Your contact sent a file that is larger than currently supported maximum size (%@).</target>
@@ -7565,6 +7702,11 @@ You can cancel this connection and remove the contact (and try later with a new
<target>Your contacts will remain connected.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<target>Your contacts your way</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>Your current chat database will be DELETED and REPLACED with the imported one.</target>
@@ -7742,6 +7884,11 @@ SimpleX servers cannot see your profile.</target>
<target>bold</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call" xml:space="preserve">
<source>call</source>
<target>call</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call error" xml:space="preserve">
<source>call error</source>
<target>call error</target>
@@ -8112,6 +8259,11 @@ SimpleX servers cannot see your profile.</target>
<target>invitation to group %@</target>
<note>group name</note>
</trans-unit>
<trans-unit id="invite" xml:space="preserve">
<source>invite</source>
<target>invite</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="invited" xml:space="preserve">
<source>invited</source>
<target>invited</target>
@@ -8167,6 +8319,11 @@ SimpleX servers cannot see your profile.</target>
<target>connected</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="message" xml:space="preserve">
<source>message</source>
<target>message</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="message received" xml:space="preserve">
<source>message received</source>
<target>message received</target>
@@ -8197,6 +8354,11 @@ SimpleX servers cannot see your profile.</target>
<target>months</target>
<note>time unit</note>
</trans-unit>
<trans-unit id="mute" xml:space="preserve">
<source>mute</source>
<target>mute</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="never" xml:space="preserve">
<source>never</source>
<target>never</target>
@@ -8329,6 +8491,11 @@ SimpleX servers cannot see your profile.</target>
<target>saved from %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="search" xml:space="preserve">
<source>search</source>
<target>search</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="sec" xml:space="preserve">
<source>sec</source>
<target>sec</target>
@@ -8403,9 +8570,9 @@ last received msg: %2$@</target>
<target>unknown</target>
<note>connection info</note>
</trans-unit>
<trans-unit id="unknown relays" xml:space="preserve">
<source>unknown relays</source>
<target>unknown relays</target>
<trans-unit id="unknown servers" xml:space="preserve">
<source>unknown servers</source>
<target>unknown servers</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unknown status" xml:space="preserve">
@@ -8413,6 +8580,11 @@ last received msg: %2$@</target>
<target>unknown status</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unmute" xml:space="preserve">
<source>unmute</source>
<target>unmute</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unprotected" xml:space="preserve">
<source>unprotected</source>
<target>unprotected</target>
@@ -8458,6 +8630,11 @@ last received msg: %2$@</target>
<target>via relay</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video" xml:space="preserve">
<source>video</source>
<target>video</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video call (not e2e encrypted)" xml:space="preserve">
<source>video call (not e2e encrypted)</source>
<target>video call (not e2e encrypted)</target>
@@ -8721,11 +8898,6 @@ last received msg: %2$@</target>
<target>Database upgrade required</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Dismiss Sheet" xml:space="preserve">
<source>Dismiss Sheet</source>
<target>Dismiss Sheet</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error preparing file" xml:space="preserve">
<source>Error preparing file</source>
<target>Error preparing file</target>
@@ -8756,11 +8928,6 @@ last received msg: %2$@</target>
<target>Invalid migration confirmation</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep Trying" xml:space="preserve">
<source>Keep Trying</source>
<target>Keep Trying</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keychain error" xml:space="preserve">
<source>Keychain error</source>
<target>Keychain error</target>
@@ -8776,11 +8943,6 @@ last received msg: %2$@</target>
<target>No active profile</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="No network connection" xml:space="preserve">
<source>No network connection</source>
<target>No network connection</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Ok" xml:space="preserve">
<source>Ok</source>
<target>Ok</target>
@@ -8811,9 +8973,14 @@ last received msg: %2$@</target>
<target>Selected chat preferences prohibit this message.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Sending File" xml:space="preserve">
<source>Sending File</source>
<target>Sending File</target>
<trans-unit id="Sending a message takes longer than expected." xml:space="preserve">
<source>Sending a message takes longer than expected.</source>
<target>Sending a message takes longer than expected.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Sending message…" xml:space="preserve">
<source>Sending message…</source>
<target>Sending message…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share" xml:space="preserve">
@@ -8821,6 +8988,11 @@ last received msg: %2$@</target>
<target>Share</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Slow network?" xml:space="preserve">
<source>Slow network?</source>
<target>Slow network?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Unknown database error: %@" xml:space="preserve">
<source>Unknown database error: %@</source>
<target>Unknown database error: %@</target>
@@ -8831,6 +9003,11 @@ last received msg: %2$@</target>
<target>Unsupported format</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wait" xml:space="preserve">
<source>Wait</source>
<target>Wait</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wrong database passphrase" xml:space="preserve">
<source>Wrong database passphrase</source>
<target>Wrong database passphrase</target>
@@ -392,6 +392,11 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -748,6 +753,10 @@
<target>Se permiten las llamadas pero sólo si tu contacto también las permite.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow calls?" xml:space="preserve">
<source>Allow calls?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow disappearing messages only if your contact allows it to you." xml:space="preserve">
<source>Allow disappearing messages only if your contact allows it to you.</source>
<target>Se permiten los mensajes temporales pero sólo si tu contacto también los permite para tí.</target>
@@ -937,6 +946,10 @@
<target>Archivar y subir</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
<source>Archiving database</source>
<target>Archivando base de datos</target>
@@ -1126,11 +1139,23 @@
<target>Llamadas</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Calls prohibited!" xml:space="preserve">
<source>Calls prohibited!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Camera not available" xml:space="preserve">
<source>Camera not available</source>
<target>Cámara no disponible</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call contact" xml:space="preserve">
<source>Can't call contact</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call member" xml:space="preserve">
<source>Can't call member</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't invite contact!" xml:space="preserve">
<source>Can't invite contact!</source>
<target>¡No se puede invitar el contacto!</target>
@@ -1141,6 +1166,10 @@
<target>¡No se pueden invitar contactos!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't message member" xml:space="preserve">
<source>Can't message member</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel" xml:space="preserve">
<source>Cancel</source>
<target>Cancelar</target>
@@ -1252,6 +1281,10 @@
<target>Base de datos eliminada</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat database exported" xml:space="preserve">
<source>Chat database exported</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat database imported" xml:space="preserve">
<source>Chat database imported</source>
<target>Base de datos importada</target>
@@ -1397,6 +1430,10 @@
<target>Confirma Código</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm contact deletion?" xml:space="preserve">
<source>Confirm contact deletion?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm database upgrades" xml:space="preserve">
<source>Confirm database upgrades</source>
<target>Confirmar actualizaciones de la bases de datos</target>
@@ -1452,6 +1489,10 @@
<target>Conectar con ordenador</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
<source>Connect to yourself?</source>
<target>¿Conectarte a tí mismo?</target>
@@ -1526,6 +1567,10 @@ This is your own one-time link!</source>
<target>Conectando con el servidor... (error: %@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to contact, please wait or check later!" xml:space="preserve">
<source>Connecting to contact, please wait or check later!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to desktop" xml:space="preserve">
<source>Connecting to desktop</source>
<target>Conectando con ordenador</target>
@@ -1536,6 +1581,10 @@ This is your own one-time link!</source>
<target>Conexión</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection and servers status." xml:space="preserve">
<source>Connection and servers status.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection error" xml:space="preserve">
<source>Connection error</source>
<target>Error conexión</target>
@@ -1585,6 +1634,10 @@ This is your own one-time link!</source>
<target>El contácto ya existe</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact deleted!" xml:space="preserve">
<source>Contact deleted!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact hidden:" xml:space="preserve">
<source>Contact hidden:</source>
<target>Contacto oculto:</target>
@@ -1595,9 +1648,8 @@ This is your own one-time link!</source>
<target>El contacto está en línea</target>
<note>notification</note>
</trans-unit>
<trans-unit id="Contact is not connected yet!" xml:space="preserve">
<source>Contact is not connected yet!</source>
<target>¡El contacto aun no se ha conectado!</target>
<trans-unit id="Contact is deleted." xml:space="preserve">
<source>Contact is deleted.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact name" xml:space="preserve">
@@ -1610,6 +1662,10 @@ This is your own one-time link!</source>
<target>Preferencias de contacto</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact will be deleted - this cannot be undone!" xml:space="preserve">
<source>Contact will be deleted - this cannot be undone!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contacts" xml:space="preserve">
<source>Contacts</source>
<target>Contactos</target>
@@ -1625,6 +1681,14 @@ This is your own one-time link!</source>
<target>Continuar</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Copy" xml:space="preserve">
<source>Copy</source>
<target>Copiar</target>
@@ -1907,11 +1971,6 @@ This is your own one-time link!</source>
<target>¿Elimina %lld mensajes?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete Contact" xml:space="preserve">
<source>Delete Contact</source>
<target>Eliminar contacto</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete address" xml:space="preserve">
<source>Delete address</source>
<target>Eliminar dirección</target>
@@ -1967,11 +2026,8 @@ This is your own one-time link!</source>
<target>Eliminar contacto</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete contact?&#10;This cannot be undone!" xml:space="preserve">
<source>Delete contact?
This cannot be undone!</source>
<target>¿Eliminar contacto?
¡No podrá deshacerse!</target>
<trans-unit id="Delete contact?" xml:space="preserve">
<source>Delete contact?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database" xml:space="preserve">
@@ -2064,11 +2120,6 @@ This cannot be undone!</source>
<target>¿Eliminar base de datos antigua?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete pending connection" xml:space="preserve">
<source>Delete pending connection</source>
<target>Eliminar conexión pendiente</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete pending connection?" xml:space="preserve">
<source>Delete pending connection?</source>
<target>¿Eliminar conexión pendiente?</target>
@@ -2084,11 +2135,19 @@ This cannot be undone!</source>
<target>Eliminar cola</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Delete up to 20 messages at once." xml:space="preserve">
<source>Delete up to 20 messages at once.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete user profile?" xml:space="preserve">
<source>Delete user profile?</source>
<target>¿Eliminar perfil de usuario?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete without notification" xml:space="preserve">
<source>Delete without notification</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deleted" xml:space="preserve">
<source>Deleted</source>
<target>Eliminado</target>
@@ -2104,6 +2163,10 @@ This cannot be undone!</source>
<target>Eliminado: %@</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<target>Errores de borrado</target>
@@ -2172,6 +2235,10 @@ This cannot be undone!</source>
<target>Desarrollo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer options" xml:space="preserve">
<source>Developer options</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer tools" xml:space="preserve">
<source>Developer tools</source>
<target>Herramientas desarrollo</target>
@@ -2679,11 +2746,6 @@ This cannot be undone!</source>
<target>Error al eliminar conexión</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error deleting contact" xml:space="preserve">
<source>Error deleting contact</source>
<target>Error al eliminar contacto</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error deleting database" xml:space="preserve">
<source>Error deleting database</source>
<target>Error al eliminar base de datos</target>
@@ -2920,6 +2982,10 @@ This cannot be undone!</source>
<target>Incluso si está desactivado para la conversación.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>Salir sin guardar</target>
@@ -3729,6 +3795,10 @@ Error: %2$@</target>
3. La conexión ha sido comprometida.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It protects your IP address and connections." xml:space="preserve">
<source>It protects your IP address and connections.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It seems like you are already connected via this link. If it is not the case, there was an error (%@)." xml:space="preserve">
<source>It seems like you are already connected via this link. If it is not the case, there was an error (%@).</source>
<target>Parece que ya estás conectado mediante este enlace. Si no es así ha habido un error (%@).</target>
@@ -3791,6 +3861,10 @@ This is your link for group %@!</source>
<target>Guardar</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep conversation" xml:space="preserve">
<source>Keep conversation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep the app open to use it from desktop" xml:space="preserve">
<source>Keep the app open to use it from desktop</source>
<target>Mantén la aplicación abierta para usarla desde el ordenador</target>
@@ -3966,6 +4040,10 @@ This is your link for group %@!</source>
<target>Máximo 30 segundos, recibido al instante.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Media &amp; file servers" xml:space="preserve">
<source>Media &amp; file servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Medium" xml:space="preserve">
<source>Medium</source>
<note>blur media</note>
@@ -4055,14 +4133,8 @@ This is your link for group %@!</source>
<target>Recepción de mensaje</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message routing fallback" xml:space="preserve">
<source>Message routing fallback</source>
<target>Enrutamiento de mensajes alternativo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message routing mode" xml:space="preserve">
<source>Message routing mode</source>
<target>Modo de enrutamiento de mensajes</target>
<trans-unit id="Message servers" xml:space="preserve">
<source>Message servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message source remains private." xml:space="preserve">
@@ -4190,6 +4262,10 @@ This is your link for group %@!</source>
<target>Moderar</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>Moderado</target>
@@ -4265,6 +4341,10 @@ This is your link for group %@!</source>
<target>Estado de la red</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>Código Nuevo</target>
@@ -4443,19 +4523,27 @@ This is your link for group %@!</source>
<target>Archivo de bases de datos antiguas</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>Enlace de invitación de un solo uso</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will be required for connection. Requires enabling VPN." xml:space="preserve">
<source>Onion hosts will be required for connection. Requires enabling VPN.</source>
<target>Se requieren hosts .onion para la conexión. Requiere activación de la VPN.</target>
<trans-unit id="Onion hosts will be **required** for connection.&#10;Requires compatible VPN." xml:space="preserve">
<source>Onion hosts will be **required** for connection.
Requires compatible VPN.</source>
<target>Se **requieren** hosts .onion para la conexión.
Requiere activación de la VPN.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will be used when available. Requires enabling VPN." xml:space="preserve">
<source>Onion hosts will be used when available. Requires enabling VPN.</source>
<target>Se usarán hosts .onion si están disponibles. Requiere activación de la VPN.</target>
<trans-unit id="Onion hosts will be used when available.&#10;Requires compatible VPN." xml:space="preserve">
<source>Onion hosts will be used when available.
Requires compatible VPN.</source>
<target>Se usarán hosts .onion si están disponibles.
Requiere activación de la VPN.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will not be used." xml:space="preserve">
@@ -4468,6 +4556,10 @@ This is your link for group %@!</source>
<target>Sólo los dispositivos cliente almacenan perfiles de usuario, contactos, grupos y mensajes enviados con **cifrado de extremo a extremo de 2 capas**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only delete conversation" xml:space="preserve">
<source>Only delete conversation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only group owners can change group preferences." xml:space="preserve">
<source>Only group owners can change group preferences.</source>
<target>Sólo los propietarios pueden modificar las preferencias del grupo.</target>
@@ -4703,6 +4795,10 @@ This is your link for group %@!</source>
<target>Llamadas picture-in-picture</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
<source>Please ask your contact to enable sending voice messages.</source>
<target>Solicita que tu contacto habilite el envío de mensajes de voz.</target>
@@ -5004,6 +5100,10 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
<target>Valora la aplicación</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
<source>React…</source>
<target>Reacciona…</target>
@@ -5344,11 +5444,6 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
<target>Revelar</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Revert" xml:space="preserve">
<source>Revert</source>
<target>Revertir</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Revoke" xml:space="preserve">
<source>Revoke</source>
<target>Revocar</target>
@@ -5379,11 +5474,6 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
<target>Servidor SMP</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SMP servers" xml:space="preserve">
<source>SMP servers</source>
<target>Servidores SMP</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Safely receive files" xml:space="preserve">
<source>Safely receive files</source>
<target>Recibe archivos de forma segura</target>
@@ -5414,6 +5504,10 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
<target>Guardar y notificar grupo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save and reconnect" xml:space="preserve">
<source>Save and reconnect</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save and update group profile" xml:space="preserve">
<source>Save and update group profile</source>
<target>Guardar y actualizar perfil del grupo</target>
@@ -5618,11 +5712,6 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
<target>Enviar confirmaciones de entrega a</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send direct message" xml:space="preserve">
<source>Send direct message</source>
<target>Enviar mensaje directo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send direct message to connect" xml:space="preserve">
<source>Send direct message to connect</source>
<target>Envia un mensaje para conectar</target>
@@ -5648,6 +5737,10 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
<target>Mensaje en vivo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send message to enable calls." xml:space="preserve">
<source>Send message to enable calls.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send messages directly when IP address is protected and your or destination server does not support private routing." xml:space="preserve">
<source>Send messages directly when IP address is protected and your or destination server does not support private routing.</source>
<target>Enviar mensajes directamente cuando tu dirección IP está protegida y tu servidor o el de destino no admitan enrutamiento privado.</target>
@@ -6101,11 +6194,19 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
<source>Soft</source>
<note>blur media</note>
</trans-unit>
<trans-unit id="Some file(s) were not exported:" xml:space="preserve">
<source>Some file(s) were not exported:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import - you may see Chat console for more details." xml:space="preserve">
<source>Some non-fatal errors occurred during import - you may see Chat console for more details.</source>
<target>Algunos errores no críticos ocurrieron durante la importación - para más detalles puedes ver la consola de Chat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import:" xml:space="preserve">
<source>Some non-fatal errors occurred during import:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Somebody" xml:space="preserve">
<source>Somebody</source>
<target>Alguien</target>
@@ -6240,6 +6341,10 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
<target>Autenticación del sistema</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="TCP connection" xml:space="preserve">
<source>TCP connection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="TCP connection timeout" xml:space="preserve">
<source>TCP connection timeout</source>
<target>Timeout de la conexión TCP</target>
@@ -6300,11 +6405,6 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
<target>Pulsa para escanear</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap to start a new chat" xml:space="preserve">
<source>Tap to start a new chat</source>
<target>Pulsa para iniciar chat nuevo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Temporary file error" xml:space="preserve">
<source>Temporary file error</source>
<target>Error en archivo temporal</target>
@@ -6779,11 +6879,6 @@ Para conectarte pide a tu contacto que cree otro enlace y comprueba la conexión
<target>Actualizar</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update .onion hosts setting?" xml:space="preserve">
<source>Update .onion hosts setting?</source>
<target>¿Actualizar la configuración de los hosts .onion?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update database passphrase" xml:space="preserve">
<source>Update database passphrase</source>
<target>Actualizar contraseña de la base de datos</target>
@@ -6794,9 +6889,8 @@ Para conectarte pide a tu contacto que cree otro enlace y comprueba la conexión
<target>¿Actualizar la configuración de red?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update transport isolation mode?" xml:space="preserve">
<source>Update transport isolation mode?</source>
<target>¿Actualizar el modo de aislamiento de transporte?</target>
<trans-unit id="Update settings?" xml:space="preserve">
<source>Update settings?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating settings will re-connect the client to all servers." xml:space="preserve">
@@ -6804,11 +6898,6 @@ Para conectarte pide a tu contacto que cree otro enlace y comprueba la conexión
<target>Al actualizar la configuración el cliente se reconectará a todos los servidores.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating this setting will re-connect the client to all servers." xml:space="preserve">
<source>Updating this setting will re-connect the client to all servers.</source>
<target>Al actualizar esta configuración el cliente se reconectará a todos los servidores.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upgrade and open chat" xml:space="preserve">
<source>Upgrade and open chat</source>
<target>Actualizar y abrir Chat</target>
@@ -6909,6 +6998,10 @@ Para conectarte pide a tu contacto que cree otro enlace y comprueba la conexión
<target>Usar la aplicación durante la llamada.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use the app with one hand." xml:space="preserve">
<source>Use the app with one hand.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
<source>User profile</source>
<target>Perfil de usuario</target>
@@ -6919,11 +7012,6 @@ Para conectarte pide a tu contacto que cree otro enlace y comprueba la conexión
<target>Selección de usuarios</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Using .onion hosts requires compatible VPN provider." xml:space="preserve">
<source>Using .onion hosts requires compatible VPN provider.</source>
<target>Usar hosts .onion requiere un proveedor VPN compatible.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Using SimpleX Chat servers." xml:space="preserve">
<source>Using SimpleX Chat servers.</source>
<target>Usar servidores SimpleX Chat.</target>
@@ -7184,11 +7272,6 @@ Para conectarte pide a tu contacto que cree otro enlace y comprueba la conexión
<target>Servidor XFTP</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="XFTP servers" xml:space="preserve">
<source>XFTP servers</source>
<target>Servidores XFTP</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You" xml:space="preserve">
<source>You</source>
<target>Tú</target>
@@ -7311,6 +7394,10 @@ Repeat join request?</source>
<target>Ya puedes chatear con %@</target>
<note>notification body</note>
</trans-unit>
<trans-unit id="You can send messages to %@ from Archived contacts." xml:space="preserve">
<source>You can send messages to %@ from Archived contacts.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can set lock screen notification preview via settings." xml:space="preserve">
<source>You can set lock screen notification preview via settings.</source>
<target>Puedes configurar las notificaciones de la pantalla de bloqueo desde Configuración.</target>
@@ -7336,6 +7423,10 @@ Repeat join request?</source>
<target>Puede iniciar Chat a través de la Configuración / Base de datos de la aplicación o reiniciando la aplicación</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can still view conversation with %@ in the list of chats." xml:space="preserve">
<source>You can still view conversation with %@ in the list of chats.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can turn on SimpleX Lock via Settings." xml:space="preserve">
<source>You can turn on SimpleX Lock via Settings.</source>
<target>Puedes activar el Bloqueo SimpleX a través de Configuración.</target>
@@ -7378,11 +7469,6 @@ Repeat connection request?</source>
¿Repetir solicitud?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You have no chats" xml:space="preserve">
<source>You have no chats</source>
<target>No tienes chats</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You have to enter passphrase every time the app starts - it is not stored on the device." xml:space="preserve">
<source>You have to enter passphrase every time the app starts - it is not stored on the device.</source>
<target>La contraseña no se almacena en el dispositivo, tienes que introducirla cada vez que inicies la aplicación.</target>
@@ -7403,11 +7489,23 @@ Repeat connection request?</source>
<target>Te has unido a este grupo. Conectando con el emisor de la invitacíon.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You may migrate the exported database." xml:space="preserve">
<source>You may migrate the exported database.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You may save the exported archive." xml:space="preserve">
<source>You may save the exported archive.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts." xml:space="preserve">
<source>You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts.</source>
<target>Debes usar la versión más reciente de tu base de datos ÚNICAMENTE en un dispositivo, de lo contrario podrías dejar de recibir mensajes de algunos contactos.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to call to be able to call them." xml:space="preserve">
<source>You need to allow your contact to call to be able to call them.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to send voice messages to be able to send them." xml:space="preserve">
<source>You need to allow your contact to send voice messages to be able to send them.</source>
<target>Para poder enviar mensajes de voz antes debes permitir que tu contacto pueda enviarlos.</target>
@@ -7523,13 +7621,6 @@ Repeat connection request?</source>
<target>Mis perfiles</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contact needs to be online for the connection to complete.&#10;You can cancel this connection and remove the contact (and try later with a new link)." xml:space="preserve">
<source>Your contact needs to be online for the connection to complete.
You can cancel this connection and remove the contact (and try later with a new link).</source>
<target>El contacto debe estar en línea para completar la conexión.
Puedes cancelarla y eliminar el contacto (e intentarlo más tarde con un enlace nuevo).</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contact sent a file that is larger than currently supported maximum size (%@)." xml:space="preserve">
<source>Your contact sent a file that is larger than currently supported maximum size (%@).</source>
<target>El contacto ha enviado un archivo mayor al máximo admitido (%@).</target>
@@ -7545,6 +7636,10 @@ Puedes cancelarla y eliminar el contacto (e intentarlo más tarde con un enlace
<target>Tus contactos permanecerán conectados.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>La base de datos actual será ELIMINADA y SUSTITUIDA por la importada.</target>
@@ -7722,6 +7817,10 @@ Los servidores SimpleX no pueden ver tu perfil.</target>
<target>negrita</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call" xml:space="preserve">
<source>call</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call error" xml:space="preserve">
<source>call error</source>
<target>error en llamada</target>
@@ -8092,6 +8191,10 @@ Los servidores SimpleX no pueden ver tu perfil.</target>
<target>invitación al grupo %@</target>
<note>group name</note>
</trans-unit>
<trans-unit id="invite" xml:space="preserve">
<source>invite</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="invited" xml:space="preserve">
<source>invited</source>
<target>ha sido invitado</target>
@@ -8147,6 +8250,10 @@ Los servidores SimpleX no pueden ver tu perfil.</target>
<target>conectado</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="message" xml:space="preserve">
<source>message</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="message received" xml:space="preserve">
<source>message received</source>
<target>mensaje recibido</target>
@@ -8177,6 +8284,10 @@ Los servidores SimpleX no pueden ver tu perfil.</target>
<target>meses</target>
<note>time unit</note>
</trans-unit>
<trans-unit id="mute" xml:space="preserve">
<source>mute</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="never" xml:space="preserve">
<source>never</source>
<target>nunca</target>
@@ -8309,6 +8420,10 @@ Los servidores SimpleX no pueden ver tu perfil.</target>
<target>Guardado desde %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="search" xml:space="preserve">
<source>search</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="sec" xml:space="preserve">
<source>sec</source>
<target>seg</target>
@@ -8383,8 +8498,8 @@ last received msg: %2$@</source>
<target>desconocido</target>
<note>connection info</note>
</trans-unit>
<trans-unit id="unknown relays" xml:space="preserve">
<source>unknown relays</source>
<trans-unit id="unknown servers" xml:space="preserve">
<source>unknown servers</source>
<target>con servidores desconocidos</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -8393,6 +8508,10 @@ last received msg: %2$@</source>
<target>estado desconocido</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unmute" xml:space="preserve">
<source>unmute</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unprotected" xml:space="preserve">
<source>unprotected</source>
<target>con IP desprotegida</target>
@@ -8438,6 +8557,10 @@ last received msg: %2$@</source>
<target>mediante retransmisor</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video" xml:space="preserve">
<source>video</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video call (not e2e encrypted)" xml:space="preserve">
<source>video call (not e2e encrypted)</source>
<target>videollamada (sin cifrar)</target>
@@ -8685,10 +8808,6 @@ last received msg: %2$@</source>
<source>Database upgrade required</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Dismiss Sheet" xml:space="preserve">
<source>Dismiss Sheet</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error preparing file" xml:space="preserve">
<source>Error preparing file</source>
<note>No comment provided by engineer.</note>
@@ -8713,10 +8832,6 @@ last received msg: %2$@</source>
<source>Invalid migration confirmation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep Trying" xml:space="preserve">
<source>Keep Trying</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keychain error" xml:space="preserve">
<source>Keychain error</source>
<note>No comment provided by engineer.</note>
@@ -8729,10 +8844,6 @@ last received msg: %2$@</source>
<source>No active profile</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="No network connection" xml:space="preserve">
<source>No network connection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Ok" xml:space="preserve">
<source>Ok</source>
<note>No comment provided by engineer.</note>
@@ -8757,14 +8868,22 @@ last received msg: %2$@</source>
<source>Selected chat preferences prohibit this message.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Sending File" xml:space="preserve">
<source>Sending File</source>
<trans-unit id="Sending a message takes longer than expected." xml:space="preserve">
<source>Sending a message takes longer than expected.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Sending message…" xml:space="preserve">
<source>Sending message…</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share" xml:space="preserve">
<source>Share</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Slow network?" xml:space="preserve">
<source>Slow network?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Unknown database error: %@" xml:space="preserve">
<source>Unknown database error: %@</source>
<note>No comment provided by engineer.</note>
@@ -8773,6 +8892,10 @@ last received msg: %2$@</source>
<source>Unsupported format</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wait" xml:space="preserve">
<source>Wait</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wrong database passphrase" xml:space="preserve">
<source>Wrong database passphrase</source>
<note>No comment provided by engineer.</note>
@@ -376,6 +376,11 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -710,6 +715,10 @@
<target>Salli puhelut vain, jos kontaktisi sallii ne.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow calls?" xml:space="preserve">
<source>Allow calls?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow disappearing messages only if your contact allows it to you." xml:space="preserve">
<source>Allow disappearing messages only if your contact allows it to you.</source>
<target>Salli katoavat viestit vain, jos kontaktisi sallii sen sinulle.</target>
@@ -889,6 +898,10 @@
<source>Archive and upload</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
<source>Archiving database</source>
<note>No comment provided by engineer.</note>
@@ -1065,10 +1078,22 @@
<target>Puhelut</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Calls prohibited!" xml:space="preserve">
<source>Calls prohibited!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Camera not available" xml:space="preserve">
<source>Camera not available</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call contact" xml:space="preserve">
<source>Can't call contact</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call member" xml:space="preserve">
<source>Can't call member</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't invite contact!" xml:space="preserve">
<source>Can't invite contact!</source>
<target>Kontaktia ei voi kutsua!</target>
@@ -1079,6 +1104,10 @@
<target>Kontakteja ei voi kutsua!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't message member" xml:space="preserve">
<source>Can't message member</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel" xml:space="preserve">
<source>Cancel</source>
<target>Peruuta</target>
@@ -1185,6 +1214,10 @@
<target>Chat-tietokanta poistettu</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat database exported" xml:space="preserve">
<source>Chat database exported</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat database imported" xml:space="preserve">
<source>Chat database imported</source>
<target>Chat-tietokanta tuotu</target>
@@ -1319,6 +1352,10 @@
<target>Vahvista pääsykoodi</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm contact deletion?" xml:space="preserve">
<source>Confirm contact deletion?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm database upgrades" xml:space="preserve">
<source>Confirm database upgrades</source>
<target>Vahvista tietokannan päivitykset</target>
@@ -1368,6 +1405,10 @@
<source>Connect to desktop</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
<source>Connect to yourself?</source>
<note>No comment provided by engineer.</note>
@@ -1430,6 +1471,10 @@ This is your own one-time link!</source>
<target>Yhteyden muodostaminen palvelimeen... (virhe: %@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to contact, please wait or check later!" xml:space="preserve">
<source>Connecting to contact, please wait or check later!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to desktop" xml:space="preserve">
<source>Connecting to desktop</source>
<note>No comment provided by engineer.</note>
@@ -1439,6 +1484,10 @@ This is your own one-time link!</source>
<target>Yhteys</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection and servers status." xml:space="preserve">
<source>Connection and servers status.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection error" xml:space="preserve">
<source>Connection error</source>
<target>Yhteysvirhe</target>
@@ -1485,6 +1534,10 @@ This is your own one-time link!</source>
<target>Kontakti on jo olemassa</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact deleted!" xml:space="preserve">
<source>Contact deleted!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact hidden:" xml:space="preserve">
<source>Contact hidden:</source>
<target>Kontakti piilotettu:</target>
@@ -1495,9 +1548,8 @@ This is your own one-time link!</source>
<target>Kontakti on yhdistetty</target>
<note>notification</note>
</trans-unit>
<trans-unit id="Contact is not connected yet!" xml:space="preserve">
<source>Contact is not connected yet!</source>
<target>Kontaktia ei ole vielä yhdistetty!</target>
<trans-unit id="Contact is deleted." xml:space="preserve">
<source>Contact is deleted.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact name" xml:space="preserve">
@@ -1510,6 +1562,10 @@ This is your own one-time link!</source>
<target>Kontaktin asetukset</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact will be deleted - this cannot be undone!" xml:space="preserve">
<source>Contact will be deleted - this cannot be undone!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contacts" xml:space="preserve">
<source>Contacts</source>
<target>Kontaktit</target>
@@ -1525,6 +1581,14 @@ This is your own one-time link!</source>
<target>Jatka</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Copy" xml:space="preserve">
<source>Copy</source>
<target>Kopioi</target>
@@ -1792,11 +1856,6 @@ This is your own one-time link!</source>
<source>Delete %lld messages?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete Contact" xml:space="preserve">
<source>Delete Contact</source>
<target>Poista kontakti</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete address" xml:space="preserve">
<source>Delete address</source>
<target>Poista osoite</target>
@@ -1851,9 +1910,8 @@ This is your own one-time link!</source>
<target>Poista kontakti</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete contact?&#10;This cannot be undone!" xml:space="preserve">
<source>Delete contact?
This cannot be undone!</source>
<trans-unit id="Delete contact?" xml:space="preserve">
<source>Delete contact?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database" xml:space="preserve">
@@ -1945,11 +2003,6 @@ This cannot be undone!</source>
<target>Poista vanha tietokanta?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete pending connection" xml:space="preserve">
<source>Delete pending connection</source>
<target>Poista vireillä oleva yhteys</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete pending connection?" xml:space="preserve">
<source>Delete pending connection?</source>
<target>Poistetaanko odottava yhteys?</target>
@@ -1965,11 +2018,19 @@ This cannot be undone!</source>
<target>Poista jono</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Delete up to 20 messages at once." xml:space="preserve">
<source>Delete up to 20 messages at once.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete user profile?" xml:space="preserve">
<source>Delete user profile?</source>
<target>Poista käyttäjäprofiili?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete without notification" xml:space="preserve">
<source>Delete without notification</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deleted" xml:space="preserve">
<source>Deleted</source>
<note>No comment provided by engineer.</note>
@@ -1984,6 +2045,10 @@ This cannot be undone!</source>
<target>Poistettu klo: %@</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<note>No comment provided by engineer.</note>
@@ -2045,6 +2110,10 @@ This cannot be undone!</source>
<target>Kehitä</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer options" xml:space="preserve">
<source>Developer options</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer tools" xml:space="preserve">
<source>Developer tools</source>
<target>Kehittäjätyökalut</target>
@@ -2527,11 +2596,6 @@ This cannot be undone!</source>
<target>Virhe yhteyden poistamisessa</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error deleting contact" xml:space="preserve">
<source>Error deleting contact</source>
<target>Virhe kontaktin poistamisessa</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error deleting database" xml:space="preserve">
<source>Error deleting database</source>
<target>Virhe tietokannan poistamisessa</target>
@@ -2756,6 +2820,10 @@ This cannot be undone!</source>
<target>Jopa kun ei käytössä keskustelussa.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>Poistu tallentamatta</target>
@@ -3520,6 +3588,10 @@ Error: %2$@</source>
3. Yhteys vaarantui.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It protects your IP address and connections." xml:space="preserve">
<source>It protects your IP address and connections.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It seems like you are already connected via this link. If it is not the case, there was an error (%@)." xml:space="preserve">
<source>It seems like you are already connected via this link. If it is not the case, there was an error (%@).</source>
<target>Näyttäisi, että olet jo yhteydessä tämän linkin kautta. Jos näin ei ole, tapahtui virhe (%@).</target>
@@ -3576,6 +3648,10 @@ This is your link for group %@!</source>
<source>Keep</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep conversation" xml:space="preserve">
<source>Keep conversation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep the app open to use it from desktop" xml:space="preserve">
<source>Keep the app open to use it from desktop</source>
<note>No comment provided by engineer.</note>
@@ -3746,6 +3822,10 @@ This is your link for group %@!</source>
<target>Enintään 30 sekuntia, vastaanotetaan välittömästi.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Media &amp; file servers" xml:space="preserve">
<source>Media &amp; file servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Medium" xml:space="preserve">
<source>Medium</source>
<note>blur media</note>
@@ -3828,12 +3908,8 @@ This is your link for group %@!</source>
<source>Message reception</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message routing fallback" xml:space="preserve">
<source>Message routing fallback</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message routing mode" xml:space="preserve">
<source>Message routing mode</source>
<trans-unit id="Message servers" xml:space="preserve">
<source>Message servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message source remains private." xml:space="preserve">
@@ -3945,6 +4021,10 @@ This is your link for group %@!</source>
<target>Moderoi</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>Moderoitu klo</target>
@@ -4016,6 +4096,10 @@ This is your link for group %@!</source>
<target>Verkon tila</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>Uusi pääsykoodi</target>
@@ -4187,19 +4271,27 @@ This is your link for group %@!</source>
<target>Vanha tietokanta-arkisto</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>Kertakutsulinkki</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will be required for connection. Requires enabling VPN." xml:space="preserve">
<source>Onion hosts will be required for connection. Requires enabling VPN.</source>
<target>Yhteyden muodostamiseen tarvitaan Onion-isäntiä. Edellyttää VPN:n sallimista.</target>
<trans-unit id="Onion hosts will be **required** for connection.&#10;Requires compatible VPN." xml:space="preserve">
<source>Onion hosts will be **required** for connection.
Requires compatible VPN.</source>
<target>Yhteyden muodostamiseen tarvitaan Onion-isäntiä.
Edellyttää VPN:n sallimista.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will be used when available. Requires enabling VPN." xml:space="preserve">
<source>Onion hosts will be used when available. Requires enabling VPN.</source>
<target>Onion-isäntiä käytetään, kun niitä on saatavilla. Edellyttää VPN:n sallimista.</target>
<trans-unit id="Onion hosts will be used when available.&#10;Requires compatible VPN." xml:space="preserve">
<source>Onion hosts will be used when available.
Requires compatible VPN.</source>
<target>Onion-isäntiä käytetään, kun niitä on saatavilla.
Edellyttää VPN:n sallimista.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will not be used." xml:space="preserve">
@@ -4212,6 +4304,10 @@ This is your link for group %@!</source>
<target>Vain asiakaslaitteet tallentavat käyttäjäprofiileja, yhteystietoja, ryhmiä ja viestejä, jotka on lähetetty **kaksinkertaisella päästä päähän -salauksella**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only delete conversation" xml:space="preserve">
<source>Only delete conversation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only group owners can change group preferences." xml:space="preserve">
<source>Only group owners can change group preferences.</source>
<target>Vain ryhmän omistajat voivat muuttaa ryhmän asetuksia.</target>
@@ -4430,6 +4526,10 @@ This is your link for group %@!</source>
<source>Picture-in-picture calls</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
<source>Please ask your contact to enable sending voice messages.</source>
<target>Pyydä kontaktiasi sallimaan ääniviestien lähettäminen.</target>
@@ -4708,6 +4808,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Arvioi sovellus</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
<source>React…</source>
<target>Reagoi…</target>
@@ -5025,11 +5129,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>Paljasta</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Revert" xml:space="preserve">
<source>Revert</source>
<target>Palauta</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Revoke" xml:space="preserve">
<source>Revoke</source>
<target>Peruuta</target>
@@ -5059,11 +5158,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>SMP server</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SMP servers" xml:space="preserve">
<source>SMP servers</source>
<target>SMP-palvelimet</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Safely receive files" xml:space="preserve">
<source>Safely receive files</source>
<note>No comment provided by engineer.</note>
@@ -5092,6 +5186,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Tallenna ja ilmoita ryhmän jäsenille</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save and reconnect" xml:space="preserve">
<source>Save and reconnect</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save and update group profile" xml:space="preserve">
<source>Save and update group profile</source>
<target>Tallenna ja päivitä ryhmäprofiili</target>
@@ -5285,11 +5383,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>Lähetä toimituskuittaukset vastaanottajalle</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send direct message" xml:space="preserve">
<source>Send direct message</source>
<target>Lähetä yksityisviesti</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send direct message to connect" xml:space="preserve">
<source>Send direct message to connect</source>
<note>No comment provided by engineer.</note>
@@ -5313,6 +5406,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Lähetä live-viesti</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send message to enable calls." xml:space="preserve">
<source>Send message to enable calls.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send messages directly when IP address is protected and your or destination server does not support private routing." xml:space="preserve">
<source>Send messages directly when IP address is protected and your or destination server does not support private routing.</source>
<note>No comment provided by engineer.</note>
@@ -5736,11 +5833,19 @@ Enable in *Network &amp; servers* settings.</source>
<source>Soft</source>
<note>blur media</note>
</trans-unit>
<trans-unit id="Some file(s) were not exported:" xml:space="preserve">
<source>Some file(s) were not exported:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import - you may see Chat console for more details." xml:space="preserve">
<source>Some non-fatal errors occurred during import - you may see Chat console for more details.</source>
<target>Tuonnin aikana tapahtui joitakin ei-vakavia virheitä saatat nähdä Chat-konsolissa lisätietoja.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import:" xml:space="preserve">
<source>Some non-fatal errors occurred during import:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Somebody" xml:space="preserve">
<source>Somebody</source>
<target>Joku</target>
@@ -5866,6 +5971,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Järjestelmän todennus</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="TCP connection" xml:space="preserve">
<source>TCP connection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="TCP connection timeout" xml:space="preserve">
<source>TCP connection timeout</source>
<target>TCP-yhteyden aikakatkaisu</target>
@@ -5923,11 +6032,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>Tap to scan</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap to start a new chat" xml:space="preserve">
<source>Tap to start a new chat</source>
<target>Aloita uusi keskustelu napauttamalla</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Temporary file error" xml:space="preserve">
<source>Temporary file error</source>
<note>No comment provided by engineer.</note>
@@ -6374,11 +6478,6 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja
<target>Päivitä</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update .onion hosts setting?" xml:space="preserve">
<source>Update .onion hosts setting?</source>
<target>Päivitä .onion-isäntien asetus?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update database passphrase" xml:space="preserve">
<source>Update database passphrase</source>
<target>Päivitä tietokannan tunnuslause</target>
@@ -6389,9 +6488,8 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja
<target>Päivitä verkkoasetukset?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update transport isolation mode?" xml:space="preserve">
<source>Update transport isolation mode?</source>
<target>Päivitä kuljetuksen eristystila?</target>
<trans-unit id="Update settings?" xml:space="preserve">
<source>Update settings?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating settings will re-connect the client to all servers." xml:space="preserve">
@@ -6399,11 +6497,6 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja
<target>Asetusten päivittäminen yhdistää asiakkaan uudelleen kaikkiin palvelimiin.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating this setting will re-connect the client to all servers." xml:space="preserve">
<source>Updating this setting will re-connect the client to all servers.</source>
<target>Tämän asetuksen päivittäminen yhdistää asiakkaan uudelleen kaikkiin palvelimiin.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upgrade and open chat" xml:space="preserve">
<source>Upgrade and open chat</source>
<target>Päivitä ja avaa keskustelu</target>
@@ -6494,6 +6587,10 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja
<source>Use the app while in the call.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use the app with one hand." xml:space="preserve">
<source>Use the app with one hand.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
<source>User profile</source>
<target>Käyttäjäprofiili</target>
@@ -6503,11 +6600,6 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja
<source>User selection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Using .onion hosts requires compatible VPN provider." xml:space="preserve">
<source>Using .onion hosts requires compatible VPN provider.</source>
<target>.onion-isäntien käyttäminen vaatii yhteensopivan VPN-palveluntarjoajan.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Using SimpleX Chat servers." xml:space="preserve">
<source>Using SimpleX Chat servers.</source>
<target>Käyttää SimpleX Chat -palvelimia.</target>
@@ -6744,11 +6836,6 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja
<source>XFTP server</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="XFTP servers" xml:space="preserve">
<source>XFTP servers</source>
<target>XFTP-palvelimet</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You" xml:space="preserve">
<source>You</source>
<target>Sinä</target>
@@ -6859,6 +6946,10 @@ Repeat join request?</source>
<target>Voit nyt lähettää viestejä %@:lle</target>
<note>notification body</note>
</trans-unit>
<trans-unit id="You can send messages to %@ from Archived contacts." xml:space="preserve">
<source>You can send messages to %@ from Archived contacts.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can set lock screen notification preview via settings." xml:space="preserve">
<source>You can set lock screen notification preview via settings.</source>
<target>Voit määrittää lukitusnäytön ilmoituksen esikatselun asetuksista.</target>
@@ -6884,6 +6975,10 @@ Repeat join request?</source>
<target>Voit aloittaa keskustelun sovelluksen Asetukset / Tietokanta kautta tai käynnistämällä sovelluksen uudelleen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can still view conversation with %@ in the list of chats." xml:space="preserve">
<source>You can still view conversation with %@ in the list of chats.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can turn on SimpleX Lock via Settings." xml:space="preserve">
<source>You can turn on SimpleX Lock via Settings.</source>
<target>Voit ottaa SimpleX Lockin käyttöön Asetusten kautta.</target>
@@ -6922,11 +7017,6 @@ Repeat join request?</source>
Repeat connection request?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You have no chats" xml:space="preserve">
<source>You have no chats</source>
<target>Sinulla ei ole keskusteluja</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You have to enter passphrase every time the app starts - it is not stored on the device." xml:space="preserve">
<source>You have to enter passphrase every time the app starts - it is not stored on the device.</source>
<target>Sinun on annettava tunnuslause aina, kun sovellus käynnistyy - sitä ei tallenneta laitteeseen.</target>
@@ -6947,11 +7037,23 @@ Repeat connection request?</source>
<target>Liityit tähän ryhmään. Muodostetaan yhteyttä ryhmän jäsenten kutsumiseksi.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You may migrate the exported database." xml:space="preserve">
<source>You may migrate the exported database.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You may save the exported archive." xml:space="preserve">
<source>You may save the exported archive.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts." xml:space="preserve">
<source>You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts.</source>
<target>Sinun tulee käyttää keskustelujen-tietokannan uusinta versiota AINOSTAAN yhdessä laitteessa, muuten saatat lakata vastaanottamasta viestejä joiltakin kontakteilta.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to call to be able to call them." xml:space="preserve">
<source>You need to allow your contact to call to be able to call them.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to send voice messages to be able to send them." xml:space="preserve">
<source>You need to allow your contact to send voice messages to be able to send them.</source>
<target>Sinun on sallittava kontaktiesi lähettää ääniviestejä, jotta voit lähettää niitä.</target>
@@ -7065,13 +7167,6 @@ Repeat connection request?</source>
<target>Keskusteluprofiilisi</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contact needs to be online for the connection to complete.&#10;You can cancel this connection and remove the contact (and try later with a new link)." xml:space="preserve">
<source>Your contact needs to be online for the connection to complete.
You can cancel this connection and remove the contact (and try later with a new link).</source>
<target>Kontaktin tulee olla online-tilassa, jotta yhteys voidaan muodostaa.
Voit peruuttaa tämän yhteyden ja poistaa kontaktin (ja yrittää myöhemmin uudella linkillä).</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contact sent a file that is larger than currently supported maximum size (%@)." xml:space="preserve">
<source>Your contact sent a file that is larger than currently supported maximum size (%@).</source>
<target>Yhteyshenkilösi lähetti tiedoston, joka on suurempi kuin tällä hetkellä tuettu enimmäiskoko (%@).</target>
@@ -7087,6 +7182,10 @@ Voit peruuttaa tämän yhteyden ja poistaa kontaktin (ja yrittää myöhemmin uu
<target>Kontaktisi pysyvät yhdistettyinä.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>Nykyinen keskustelut-tietokantasi poistetaan ja korvataan tuodulla tietokannalla.</target>
@@ -7255,6 +7354,10 @@ SimpleX-palvelimet eivät näe profiiliasi.</target>
<target>lihavoitu</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call" xml:space="preserve">
<source>call</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call error" xml:space="preserve">
<source>call error</source>
<target>soittovirhe</target>
@@ -7617,6 +7720,10 @@ SimpleX-palvelimet eivät näe profiiliasi.</target>
<target>kutsu ryhmään %@</target>
<note>group name</note>
</trans-unit>
<trans-unit id="invite" xml:space="preserve">
<source>invite</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="invited" xml:space="preserve">
<source>invited</source>
<target>kutsuttu</target>
@@ -7671,6 +7778,10 @@ SimpleX-palvelimet eivät näe profiiliasi.</target>
<target>yhdistetty</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="message" xml:space="preserve">
<source>message</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="message received" xml:space="preserve">
<source>message received</source>
<target>viesti vastaanotettu</target>
@@ -7701,6 +7812,10 @@ SimpleX-palvelimet eivät näe profiiliasi.</target>
<target>kuukautta</target>
<note>time unit</note>
</trans-unit>
<trans-unit id="mute" xml:space="preserve">
<source>mute</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="never" xml:space="preserve">
<source>never</source>
<target>ei koskaan</target>
@@ -7825,6 +7940,10 @@ SimpleX-palvelimet eivät näe profiiliasi.</target>
<source>saved from %@</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="search" xml:space="preserve">
<source>search</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="sec" xml:space="preserve">
<source>sec</source>
<target>sek</target>
@@ -7891,14 +8010,18 @@ last received msg: %2$@</source>
<target>tuntematon</target>
<note>connection info</note>
</trans-unit>
<trans-unit id="unknown relays" xml:space="preserve">
<source>unknown relays</source>
<trans-unit id="unknown servers" xml:space="preserve">
<source>unknown servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unknown status" xml:space="preserve">
<source>unknown status</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unmute" xml:space="preserve">
<source>unmute</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unprotected" xml:space="preserve">
<source>unprotected</source>
<note>No comment provided by engineer.</note>
@@ -7941,6 +8064,10 @@ last received msg: %2$@</source>
<target>releellä</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video" xml:space="preserve">
<source>video</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video call (not e2e encrypted)" xml:space="preserve">
<source>video call (not e2e encrypted)</source>
<target>videopuhelu (ei e2e-salattu)</target>
@@ -8183,10 +8310,6 @@ last received msg: %2$@</source>
<source>Database upgrade required</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Dismiss Sheet" xml:space="preserve">
<source>Dismiss Sheet</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error preparing file" xml:space="preserve">
<source>Error preparing file</source>
<note>No comment provided by engineer.</note>
@@ -8211,10 +8334,6 @@ last received msg: %2$@</source>
<source>Invalid migration confirmation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep Trying" xml:space="preserve">
<source>Keep Trying</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keychain error" xml:space="preserve">
<source>Keychain error</source>
<note>No comment provided by engineer.</note>
@@ -8227,10 +8346,6 @@ last received msg: %2$@</source>
<source>No active profile</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="No network connection" xml:space="preserve">
<source>No network connection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Ok" xml:space="preserve">
<source>Ok</source>
<note>No comment provided by engineer.</note>
@@ -8255,14 +8370,22 @@ last received msg: %2$@</source>
<source>Selected chat preferences prohibit this message.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Sending File" xml:space="preserve">
<source>Sending File</source>
<trans-unit id="Sending a message takes longer than expected." xml:space="preserve">
<source>Sending a message takes longer than expected.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Sending message…" xml:space="preserve">
<source>Sending message…</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share" xml:space="preserve">
<source>Share</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Slow network?" xml:space="preserve">
<source>Slow network?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Unknown database error: %@" xml:space="preserve">
<source>Unknown database error: %@</source>
<note>No comment provided by engineer.</note>
@@ -8271,6 +8394,10 @@ last received msg: %2$@</source>
<source>Unsupported format</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wait" xml:space="preserve">
<source>Wait</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wrong database passphrase" xml:space="preserve">
<source>Wrong database passphrase</source>
<note>No comment provided by engineer.</note>
File diff suppressed because it is too large Load Diff
@@ -5316,6 +5316,278 @@ SimpleX servers cannot see your profile.</source>
<target state="translated">%@ ו-%@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect automatically" xml:space="preserve" approved="no">
<source>Connect automatically</source>
<target state="translated">התבר אוטומטי</target>
</trans-unit>
<trans-unit id="Create profile" xml:space="preserve" approved="no">
<source>Create profile</source>
<target state="translated">צור פרופיל</target>
</trans-unit>
<trans-unit id="Created at: %@" xml:space="preserve" approved="no">
<source>Created at: %@</source>
<target state="translated">נוצר ב:%@</target>
</trans-unit>
<trans-unit id="Desktop devices" xml:space="preserve" approved="no">
<source>Desktop devices</source>
<target state="translated">מכשירי מחשב</target>
</trans-unit>
<trans-unit id="Discover via local network" xml:space="preserve" approved="no">
<source>Discover via local network</source>
<target state="translated">גלה באמצעות הרשת המקומית</target>
</trans-unit>
<trans-unit id="Forward" xml:space="preserve" approved="no">
<source>Forward</source>
<target state="translated">העבר</target>
</trans-unit>
<trans-unit id="Group already exists" xml:space="preserve" approved="no">
<source>Group already exists</source>
<target state="translated">קבוצה כבר קיימת</target>
</trans-unit>
<trans-unit id="Connected to desktop" xml:space="preserve" approved="no">
<source>Connected to desktop</source>
<target state="translated">מחובר למחשב</target>
</trans-unit>
<trans-unit id="Group already exists!" xml:space="preserve" approved="no">
<source>Group already exists!</source>
<target state="translated">קבוצה כבר קיימת!</target>
</trans-unit>
<trans-unit id="Confirm upload" xml:space="preserve" approved="no">
<source>Confirm upload</source>
<target state="translated">אשר ההעלאה</target>
</trans-unit>
<trans-unit id="Block for all" xml:space="preserve" approved="no">
<source>Block for all</source>
<target state="translated">חסום לכולם</target>
</trans-unit>
<trans-unit id="Blocked by admin" xml:space="preserve" approved="no">
<source>Blocked by admin</source>
<target state="translated">נחסם ע"י מנהל</target>
</trans-unit>
<trans-unit id="Block member for all?" xml:space="preserve" approved="no">
<source>Block member for all?</source>
<target state="translated">לחסום את החבר לכולם?</target>
</trans-unit>
<trans-unit id="Camera not available" xml:space="preserve" approved="no">
<source>Camera not available</source>
<target state="translated">מצלמה לא זמינה</target>
</trans-unit>
<trans-unit id="Connect to desktop" xml:space="preserve" approved="no">
<source>Connect to desktop</source>
<target state="translated">חבר למחשב</target>
</trans-unit>
<trans-unit id="Created at" xml:space="preserve" approved="no">
<source>Created at</source>
<target state="translated">נוצר ב</target>
</trans-unit>
<trans-unit id="(new)" xml:space="preserve" approved="no">
<source>(new)</source>
<target state="translated">(חדש)</target>
</trans-unit>
<trans-unit id="Block member" xml:space="preserve" approved="no">
<source>Block member</source>
<target state="translated">חבר חסום</target>
</trans-unit>
<trans-unit id="Block member?" xml:space="preserve" approved="no">
<source>Block member?</source>
<target state="translated">לחסום חבר?</target>
</trans-unit>
<trans-unit id="Creating link…" xml:space="preserve" approved="no">
<source>Creating link…</source>
<target state="translated">יוצר קישור…</target>
</trans-unit>
<trans-unit id="Files" xml:space="preserve" approved="no">
<source>Files</source>
<target state="translated">קבצים</target>
</trans-unit>
<trans-unit id="Disabled" xml:space="preserve" approved="no">
<source>Disabled</source>
<target state="translated">מושבת</target>
</trans-unit>
<trans-unit id="Enter passphrase" xml:space="preserve" approved="no">
<source>Enter passphrase</source>
<target state="translated">הכנס סיסמא</target>
</trans-unit>
<trans-unit id="Apply" xml:space="preserve" approved="no">
<source>Apply</source>
<target state="translated">החל</target>
</trans-unit>
<trans-unit id="Apply to" xml:space="preserve" approved="no">
<source>Apply to</source>
<target state="translated">החל ל</target>
</trans-unit>
<trans-unit id="Background" xml:space="preserve" approved="no">
<source>Background</source>
<target state="translated">ברקע</target>
</trans-unit>
<trans-unit id="Black" xml:space="preserve" approved="no">
<source>Black</source>
<target state="translated">שחור</target>
</trans-unit>
<trans-unit id="Blur media" xml:space="preserve" approved="no">
<source>Blur media</source>
<target state="translated">טשטש מדיה</target>
</trans-unit>
<trans-unit id="Chat theme" xml:space="preserve" approved="no">
<source>Chat theme</source>
<target state="translated">צבע ערכת נושא</target>
</trans-unit>
<trans-unit id="Completed" xml:space="preserve" approved="no">
<source>Completed</source>
<target state="translated">הושלם</target>
</trans-unit>
<trans-unit id="Connected" xml:space="preserve" approved="no">
<source>Connected</source>
<target state="translated">מחובר</target>
</trans-unit>
<trans-unit id="Connection notifications" xml:space="preserve" approved="no">
<source>Connection notifications</source>
<target state="translated">התראות חיבור</target>
</trans-unit>
<trans-unit id="Connections" xml:space="preserve" approved="no">
<source>Connections</source>
<target state="translated">חיבורים</target>
</trans-unit>
<trans-unit id="Current profile" xml:space="preserve" approved="no">
<source>Current profile</source>
<target state="translated">פרופיל נוכחי</target>
</trans-unit>
<trans-unit id="Disconnect desktop?" xml:space="preserve" approved="no">
<source>Disconnect desktop?</source>
<target state="translated">להתנתק מהמחשב?</target>
</trans-unit>
<trans-unit id="Discover and join groups" xml:space="preserve" approved="no">
<source>Discover and join groups</source>
<target state="translated">גלה והצטרף לקבוצות</target>
</trans-unit>
<trans-unit id="Enabled" xml:space="preserve" approved="no">
<source>Enabled</source>
<target state="translated">מופעל</target>
</trans-unit>
<trans-unit id="Error opening chat" xml:space="preserve" approved="no">
<source>Error opening chat</source>
<target state="translated">שגיאה בפתיחת הצ'אט</target>
</trans-unit>
<trans-unit id="Good morning!" xml:space="preserve" approved="no">
<source>Good morning!</source>
<target state="translated">בוקר טוב!</target>
</trans-unit>
<trans-unit id="Connect to yourself?&#10;This is your own SimpleX address!" xml:space="preserve" approved="no">
<source>Connect to yourself?
This is your own SimpleX address!</source>
<target state="translated">להתחבר אליך?
זו כתובת הSimpleX שלך!</target>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve" approved="no">
<source>Connect to yourself?</source>
<target state="translated">להתחבר אליך?</target>
</trans-unit>
<trans-unit id="Connect to yourself?&#10;This is your own one-time link!" xml:space="preserve" approved="no">
<source>Connect to yourself?
This is your own one-time link!</source>
<target state="translated">להתחבר אליך?
זו כתובת ההזמנה החד-פעמי שלך!</target>
</trans-unit>
<trans-unit id="Connected desktop" xml:space="preserve" approved="no">
<source>Connected desktop</source>
<target state="translated">מחשב מחובר</target>
</trans-unit>
<trans-unit id="Connected servers" xml:space="preserve" approved="no">
<source>Connected servers</source>
<target state="translated">שרתים מחוברים</target>
</trans-unit>
<trans-unit id="Enter group name…" xml:space="preserve" approved="no">
<source>Enter group name…</source>
<target state="translated">הכנס שם לקבוצה…</target>
</trans-unit>
<trans-unit id="Enter this device name…" xml:space="preserve" approved="no">
<source>Enter this device name…</source>
<target state="translated">הכנס שם למכשיר הזה…</target>
</trans-unit>
<trans-unit id="Enter your name…" xml:space="preserve" approved="no">
<source>Enter your name…</source>
<target state="translated">הכנס את השם שלך…</target>
</trans-unit>
<trans-unit id="Error decrypting file" xml:space="preserve" approved="no">
<source>Error decrypting file</source>
<target state="translated">שגיאה בפענוח הקובץ</target>
</trans-unit>
<trans-unit id="Errors" xml:space="preserve" approved="no">
<source>Errors</source>
<target state="translated">שגיאות</target>
</trans-unit>
<trans-unit id="File status" xml:space="preserve" approved="no">
<source>File status</source>
<target state="translated">מצב הקובץ</target>
</trans-unit>
<trans-unit id="Connecting" xml:space="preserve" approved="no">
<source>Connecting</source>
<target state="translated">מתחבר</target>
</trans-unit>
<trans-unit id="Connecting to desktop" xml:space="preserve" approved="no">
<source>Connecting to desktop</source>
<target state="translated">מתחבר למחשב</target>
</trans-unit>
<trans-unit id="Deleted" xml:space="preserve" approved="no">
<source>Deleted</source>
<target state="translated">נמחק</target>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve" approved="no">
<source>Deletion errors</source>
<target state="translated">שגיאות במחיקה</target>
</trans-unit>
<trans-unit id="Details" xml:space="preserve" approved="no">
<source>Details</source>
<target state="translated">פרטים</target>
</trans-unit>
<trans-unit id="Forwarded" xml:space="preserve" approved="no">
<source>Forwarded</source>
<target state="translated">הועבר</target>
</trans-unit>
<trans-unit id="Found desktop" xml:space="preserve" approved="no">
<source>Found desktop</source>
<target state="translated">נמצא מחשב</target>
</trans-unit>
<trans-unit id="Good afternoon!" xml:space="preserve" approved="no">
<source>Good afternoon!</source>
<target state="translated">אחר צהריים טובים!</target>
</trans-unit>
<trans-unit id="Desktop address" xml:space="preserve" approved="no">
<source>Desktop address</source>
<target state="translated">כתובת מחשב</target>
</trans-unit>
<trans-unit id="Forwarded from" xml:space="preserve" approved="no">
<source>Forwarded from</source>
<target state="translated">הועבר מ</target>
</trans-unit>
<trans-unit id="History is not sent to new members." xml:space="preserve" approved="no">
<source>History is not sent to new members.</source>
<target state="translated">היסטוריה לא נשלחת לחברים חדשים.</target>
</trans-unit>
<trans-unit id="Created" xml:space="preserve" approved="no">
<source>Created</source>
<target state="translated">נוצר</target>
</trans-unit>
<trans-unit id="Copy error" xml:space="preserve" approved="no">
<source>Copy error</source>
<target state="translated">שגיאת העתקה</target>
</trans-unit>
<trans-unit id="Create group" xml:space="preserve" approved="no">
<source>Create group</source>
<target state="translated">צור קבוצה</target>
</trans-unit>
<trans-unit id="Enabled for" xml:space="preserve" approved="no">
<source>Enabled for</source>
<target state="translated">מופעל עבור</target>
</trans-unit>
<trans-unit id="Error creating message" xml:space="preserve" approved="no">
<source>Error creating message</source>
<target state="translated">שגיאה ביצירת הודעה</target>
</trans-unit>
<trans-unit id="File error" xml:space="preserve" approved="no">
<source>File error</source>
<target state="translated">שגיאה בקובץ</target>
</trans-unit>
</body>
</file>
<file original="en.lproj/SimpleX--iOS--InfoPlist.strings" source-language="en" target-language="he" datatype="plaintext">
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -392,6 +392,11 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -728,6 +733,10 @@
<target>連絡先が通話を許可している場合のみ通話を許可する。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow calls?" xml:space="preserve">
<source>Allow calls?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow disappearing messages only if your contact allows it to you." xml:space="preserve">
<source>Allow disappearing messages only if your contact allows it to you.</source>
<target>連絡先が許可している場合のみ消えるメッセージを許可する。</target>
@@ -912,6 +921,10 @@
<source>Archive and upload</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
<source>Archiving database</source>
<note>No comment provided by engineer.</note>
@@ -1089,10 +1102,22 @@
<target>通話</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Calls prohibited!" xml:space="preserve">
<source>Calls prohibited!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Camera not available" xml:space="preserve">
<source>Camera not available</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call contact" xml:space="preserve">
<source>Can't call contact</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call member" xml:space="preserve">
<source>Can't call member</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't invite contact!" xml:space="preserve">
<source>Can't invite contact!</source>
<target>連絡先を招待できません!</target>
@@ -1103,6 +1128,10 @@
<target>連絡先を招待できません!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't message member" xml:space="preserve">
<source>Can't message member</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel" xml:space="preserve">
<source>Cancel</source>
<target>中止</target>
@@ -1209,6 +1238,10 @@
<target>チャットのデータベースが削除されました</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat database exported" xml:space="preserve">
<source>Chat database exported</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat database imported" xml:space="preserve">
<source>Chat database imported</source>
<target>チャットのデータベースが読み込まれました</target>
@@ -1343,6 +1376,10 @@
<target>パスコードを確認</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm contact deletion?" xml:space="preserve">
<source>Confirm contact deletion?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm database upgrades" xml:space="preserve">
<source>Confirm database upgrades</source>
<target>データベースのアップグレードを確認</target>
@@ -1392,6 +1429,10 @@
<source>Connect to desktop</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
<source>Connect to yourself?</source>
<note>No comment provided by engineer.</note>
@@ -1454,6 +1495,10 @@ This is your own one-time link!</source>
<target>サーバーに接続中… (エラー: %@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to contact, please wait or check later!" xml:space="preserve">
<source>Connecting to contact, please wait or check later!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to desktop" xml:space="preserve">
<source>Connecting to desktop</source>
<note>No comment provided by engineer.</note>
@@ -1463,6 +1508,10 @@ This is your own one-time link!</source>
<target>接続</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection and servers status." xml:space="preserve">
<source>Connection and servers status.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection error" xml:space="preserve">
<source>Connection error</source>
<target>接続エラー</target>
@@ -1509,6 +1558,10 @@ This is your own one-time link!</source>
<target>連絡先に既に存在します</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact deleted!" xml:space="preserve">
<source>Contact deleted!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact hidden:" xml:space="preserve">
<source>Contact hidden:</source>
<target>連絡先が非表示:</target>
@@ -1519,9 +1572,8 @@ This is your own one-time link!</source>
<target>連絡先は接続中</target>
<note>notification</note>
</trans-unit>
<trans-unit id="Contact is not connected yet!" xml:space="preserve">
<source>Contact is not connected yet!</source>
<target>連絡先がまだ繋がってません!</target>
<trans-unit id="Contact is deleted." xml:space="preserve">
<source>Contact is deleted.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact name" xml:space="preserve">
@@ -1534,6 +1586,10 @@ This is your own one-time link!</source>
<target>連絡先の設定</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact will be deleted - this cannot be undone!" xml:space="preserve">
<source>Contact will be deleted - this cannot be undone!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contacts" xml:space="preserve">
<source>Contacts</source>
<target>連絡先</target>
@@ -1549,6 +1605,14 @@ This is your own one-time link!</source>
<target>続ける</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Copy" xml:space="preserve">
<source>Copy</source>
<target>コピー</target>
@@ -1816,11 +1880,6 @@ This is your own one-time link!</source>
<source>Delete %lld messages?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete Contact" xml:space="preserve">
<source>Delete Contact</source>
<target>連絡先を削除</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete address" xml:space="preserve">
<source>Delete address</source>
<target>アドレスを削除</target>
@@ -1875,9 +1934,8 @@ This is your own one-time link!</source>
<target>連絡先を削除</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete contact?&#10;This cannot be undone!" xml:space="preserve">
<source>Delete contact?
This cannot be undone!</source>
<trans-unit id="Delete contact?" xml:space="preserve">
<source>Delete contact?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database" xml:space="preserve">
@@ -1969,11 +2027,6 @@ This cannot be undone!</source>
<target>古いデータベースを削除しますか?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete pending connection" xml:space="preserve">
<source>Delete pending connection</source>
<target>確認待ちの接続を削除</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete pending connection?" xml:space="preserve">
<source>Delete pending connection?</source>
<target>接続待ちの接続を削除しますか?</target>
@@ -1989,11 +2042,19 @@ This cannot be undone!</source>
<target>待ち行列を削除</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Delete up to 20 messages at once." xml:space="preserve">
<source>Delete up to 20 messages at once.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete user profile?" xml:space="preserve">
<source>Delete user profile?</source>
<target>ユーザープロフィールを削除しますか?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete without notification" xml:space="preserve">
<source>Delete without notification</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deleted" xml:space="preserve">
<source>Deleted</source>
<note>No comment provided by engineer.</note>
@@ -2008,6 +2069,10 @@ This cannot be undone!</source>
<target>削除完了: %@</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<note>No comment provided by engineer.</note>
@@ -2069,6 +2134,10 @@ This cannot be undone!</source>
<target>開発</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer options" xml:space="preserve">
<source>Developer options</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer tools" xml:space="preserve">
<source>Developer tools</source>
<target>開発ツール</target>
@@ -2553,11 +2622,6 @@ This cannot be undone!</source>
<target>接続の削除エラー</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error deleting contact" xml:space="preserve">
<source>Error deleting contact</source>
<target>連絡先の削除にエラー発生</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error deleting database" xml:space="preserve">
<source>Error deleting database</source>
<target>データベースの削除にエラー発生</target>
@@ -2781,6 +2845,10 @@ This cannot be undone!</source>
<target>会話中に無効になっている場合でも。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>保存せずに閉じる</target>
@@ -3545,6 +3613,10 @@ Error: %2$@</source>
3. 接続に問題があった。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It protects your IP address and connections." xml:space="preserve">
<source>It protects your IP address and connections.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It seems like you are already connected via this link. If it is not the case, there was an error (%@)." xml:space="preserve">
<source>It seems like you are already connected via this link. If it is not the case, there was an error (%@).</source>
<target>このリンクからすでに接続されているようです。そうでない場合は、エラー(%@)が発生しました。</target>
@@ -3601,6 +3673,10 @@ This is your link for group %@!</source>
<source>Keep</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep conversation" xml:space="preserve">
<source>Keep conversation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep the app open to use it from desktop" xml:space="preserve">
<source>Keep the app open to use it from desktop</source>
<note>No comment provided by engineer.</note>
@@ -3771,6 +3847,10 @@ This is your link for group %@!</source>
<target>最大 30 秒で即時受信します。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Media &amp; file servers" xml:space="preserve">
<source>Media &amp; file servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Medium" xml:space="preserve">
<source>Medium</source>
<note>blur media</note>
@@ -3852,12 +3932,8 @@ This is your link for group %@!</source>
<source>Message reception</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message routing fallback" xml:space="preserve">
<source>Message routing fallback</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message routing mode" xml:space="preserve">
<source>Message routing mode</source>
<trans-unit id="Message servers" xml:space="preserve">
<source>Message servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message source remains private." xml:space="preserve">
@@ -3969,6 +4045,10 @@ This is your link for group %@!</source>
<target>モデレート</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>モデレーターによって介入済み</target>
@@ -4040,6 +4120,10 @@ This is your link for group %@!</source>
<target>ネットワーク状況</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>新しいパスコード</target>
@@ -4212,19 +4296,27 @@ This is your link for group %@!</source>
<target>過去のデータベースアーカイブ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>使い捨ての招待リンク</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will be required for connection. Requires enabling VPN." xml:space="preserve">
<source>Onion hosts will be required for connection. Requires enabling VPN.</source>
<target>接続にオニオンのホストが必要となります。VPN を有効にする必要があります。</target>
<trans-unit id="Onion hosts will be **required** for connection.&#10;Requires compatible VPN." xml:space="preserve">
<source>Onion hosts will be **required** for connection.
Requires compatible VPN.</source>
<target>接続にオニオンのホストが必要となります。
VPN を有効にする必要があります。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will be used when available. Requires enabling VPN." xml:space="preserve">
<source>Onion hosts will be used when available. Requires enabling VPN.</source>
<target>オニオンのホストが利用可能時に使われます。VPN を有効にする必要があります。</target>
<trans-unit id="Onion hosts will be used when available.&#10;Requires compatible VPN." xml:space="preserve">
<source>Onion hosts will be used when available.
Requires compatible VPN.</source>
<target>オニオンのホストが利用可能時に使われます。
VPN を有効にする必要があります。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will not be used." xml:space="preserve">
@@ -4237,6 +4329,10 @@ This is your link for group %@!</source>
<target>**2 レイヤーのエンドツーエンド暗号化**を使用して送信されたユーザー プロファイル、連絡先、グループ、メッセージを保存できるのはクライアント デバイスのみです。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only delete conversation" xml:space="preserve">
<source>Only delete conversation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only group owners can change group preferences." xml:space="preserve">
<source>Only group owners can change group preferences.</source>
<target>グループ設定を変えられるのはグループのオーナーだけです。</target>
@@ -4456,6 +4552,10 @@ This is your link for group %@!</source>
<source>Picture-in-picture calls</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
<source>Please ask your contact to enable sending voice messages.</source>
<target>音声メッセージを有効にするように連絡相手に要求してください。</target>
@@ -4734,6 +4834,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>アプリを評価</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
<source>React…</source>
<target>反応する…</target>
@@ -5050,11 +5154,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>開示する</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Revert" xml:space="preserve">
<source>Revert</source>
<target>元に戻す</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Revoke" xml:space="preserve">
<source>Revoke</source>
<target>取り消す</target>
@@ -5084,11 +5183,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>SMP server</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SMP servers" xml:space="preserve">
<source>SMP servers</source>
<target>SMPサーバ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Safely receive files" xml:space="preserve">
<source>Safely receive files</source>
<note>No comment provided by engineer.</note>
@@ -5117,6 +5211,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>保存して、グループのメンバーにに知らせる</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save and reconnect" xml:space="preserve">
<source>Save and reconnect</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save and update group profile" xml:space="preserve">
<source>Save and update group profile</source>
<target>グループプロファイルの保存と更新</target>
@@ -5309,11 +5407,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>Send delivery receipts to</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send direct message" xml:space="preserve">
<source>Send direct message</source>
<target>ダイレクトメッセージを送信</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send direct message to connect" xml:space="preserve">
<source>Send direct message to connect</source>
<target>ダイレクトメッセージを送信して接続する</target>
@@ -5338,6 +5431,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>ライブメッセージを送信</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send message to enable calls." xml:space="preserve">
<source>Send message to enable calls.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send messages directly when IP address is protected and your or destination server does not support private routing." xml:space="preserve">
<source>Send messages directly when IP address is protected and your or destination server does not support private routing.</source>
<note>No comment provided by engineer.</note>
@@ -5755,11 +5852,19 @@ Enable in *Network &amp; servers* settings.</source>
<source>Soft</source>
<note>blur media</note>
</trans-unit>
<trans-unit id="Some file(s) were not exported:" xml:space="preserve">
<source>Some file(s) were not exported:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import - you may see Chat console for more details." xml:space="preserve">
<source>Some non-fatal errors occurred during import - you may see Chat console for more details.</source>
<target>インポート中に致命的でないエラーが発生しました - 詳細はチャットコンソールを参照してください。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import:" xml:space="preserve">
<source>Some non-fatal errors occurred during import:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Somebody" xml:space="preserve">
<source>Somebody</source>
<target>誰か</target>
@@ -5885,6 +5990,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>システム認証</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="TCP connection" xml:space="preserve">
<source>TCP connection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="TCP connection timeout" xml:space="preserve">
<source>TCP connection timeout</source>
<target>TCP接続タイムアウト</target>
@@ -5942,11 +6051,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>Tap to scan</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap to start a new chat" xml:space="preserve">
<source>Tap to start a new chat</source>
<target>タップして新しいチャットを始める</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Temporary file error" xml:space="preserve">
<source>Temporary file error</source>
<note>No comment provided by engineer.</note>
@@ -6392,11 +6496,6 @@ To connect, please ask your contact to create another connection link and check
<target>更新</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update .onion hosts setting?" xml:space="preserve">
<source>Update .onion hosts setting?</source>
<target>.onionのホスト設定を更新しますか?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update database passphrase" xml:space="preserve">
<source>Update database passphrase</source>
<target>データベースのパスフレーズを更新</target>
@@ -6407,9 +6506,8 @@ To connect, please ask your contact to create another connection link and check
<target>ネットワーク設定を更新しますか?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update transport isolation mode?" xml:space="preserve">
<source>Update transport isolation mode?</source>
<target>トランスポート隔離モードを更新しますか?</target>
<trans-unit id="Update settings?" xml:space="preserve">
<source>Update settings?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating settings will re-connect the client to all servers." xml:space="preserve">
@@ -6417,11 +6515,6 @@ To connect, please ask your contact to create another connection link and check
<target>設定を更新すると、全サーバにクライントの再接続が行われます。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating this setting will re-connect the client to all servers." xml:space="preserve">
<source>Updating this setting will re-connect the client to all servers.</source>
<target>設定を更新すると、全サーバにクライントの再接続が行われます。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upgrade and open chat" xml:space="preserve">
<source>Upgrade and open chat</source>
<target>アップグレードしてチャットを開く</target>
@@ -6512,6 +6605,10 @@ To connect, please ask your contact to create another connection link and check
<source>Use the app while in the call.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use the app with one hand." xml:space="preserve">
<source>Use the app with one hand.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
<source>User profile</source>
<target>ユーザープロフィール</target>
@@ -6521,11 +6618,6 @@ To connect, please ask your contact to create another connection link and check
<source>User selection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Using .onion hosts requires compatible VPN provider." xml:space="preserve">
<source>Using .onion hosts requires compatible VPN provider.</source>
<target>.onionホストを使用するには、互換性のあるVPNプロバイダーが必要です。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Using SimpleX Chat servers." xml:space="preserve">
<source>Using SimpleX Chat servers.</source>
<target>SimpleX チャット サーバーを使用する。</target>
@@ -6762,11 +6854,6 @@ To connect, please ask your contact to create another connection link and check
<source>XFTP server</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="XFTP servers" xml:space="preserve">
<source>XFTP servers</source>
<target>XFTPサーバ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You" xml:space="preserve">
<source>You</source>
<target>あなた</target>
@@ -6877,6 +6964,10 @@ Repeat join request?</source>
<target>%@ にメッセージを送信できるようになりました</target>
<note>notification body</note>
</trans-unit>
<trans-unit id="You can send messages to %@ from Archived contacts." xml:space="preserve">
<source>You can send messages to %@ from Archived contacts.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can set lock screen notification preview via settings." xml:space="preserve">
<source>You can set lock screen notification preview via settings.</source>
<target>設定からロック画面の通知プレビューを設定できます。</target>
@@ -6902,6 +6993,10 @@ Repeat join request?</source>
<target>アプリの設定/データベースから、またはアプリを再起動することでチャットを開始できます</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can still view conversation with %@ in the list of chats." xml:space="preserve">
<source>You can still view conversation with %@ in the list of chats.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can turn on SimpleX Lock via Settings." xml:space="preserve">
<source>You can turn on SimpleX Lock via Settings.</source>
<target>設定からSimpleXのロックをオンにすることができます。</target>
@@ -6940,11 +7035,6 @@ Repeat join request?</source>
Repeat connection request?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You have no chats" xml:space="preserve">
<source>You have no chats</source>
<target>あなたはチャットがありません</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You have to enter passphrase every time the app starts - it is not stored on the device." xml:space="preserve">
<source>You have to enter passphrase every time the app starts - it is not stored on the device.</source>
<target>アプリ起動時にパスフレーズを入力しなければなりません。端末に保存されてません。</target>
@@ -6965,11 +7055,23 @@ Repeat connection request?</source>
<target>グループに参加しました。招待をくれたメンバーに接続してます。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You may migrate the exported database." xml:space="preserve">
<source>You may migrate the exported database.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You may save the exported archive." xml:space="preserve">
<source>You may save the exported archive.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts." xml:space="preserve">
<source>You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts.</source>
<target>あなたの最新データベースを1つの端末にしか使わなければ、一部の連絡先からメッセージが届きかねます。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to call to be able to call them." xml:space="preserve">
<source>You need to allow your contact to call to be able to call them.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to send voice messages to be able to send them." xml:space="preserve">
<source>You need to allow your contact to send voice messages to be able to send them.</source>
<target>音声メッセージを送るには、連絡相手からの音声メッセージを許可しなければなりません。</target>
@@ -7083,13 +7185,6 @@ Repeat connection request?</source>
<target>あなたのチャットプロフィール</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contact needs to be online for the connection to complete.&#10;You can cancel this connection and remove the contact (and try later with a new link)." xml:space="preserve">
<source>Your contact needs to be online for the connection to complete.
You can cancel this connection and remove the contact (and try later with a new link).</source>
<target>接続を完了するには、連絡相手がオンラインになる必要があります。
この接続をキャンセルして、連絡先を削除をすることもできます (後でやり直すこともできます)。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contact sent a file that is larger than currently supported maximum size (%@)." xml:space="preserve">
<source>Your contact sent a file that is larger than currently supported maximum size (%@).</source>
<target>連絡先が現在サポートされている最大サイズ (%@) より大きいファイルを送信しました。</target>
@@ -7105,6 +7200,10 @@ You can cancel this connection and remove the contact (and try later with a new
<target>連絡先は接続されたままになります。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>現在のチャット データベースは削除され、インポートされたデータベースに置き換えられます。</target>
@@ -7273,6 +7372,10 @@ SimpleX サーバーはあなたのプロファイルを参照できません。
<target>太文字</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call" xml:space="preserve">
<source>call</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call error" xml:space="preserve">
<source>call error</source>
<target>通話エラー</target>
@@ -7635,6 +7738,10 @@ SimpleX サーバーはあなたのプロファイルを参照できません。
<target>グループ %@ への招待</target>
<note>group name</note>
</trans-unit>
<trans-unit id="invite" xml:space="preserve">
<source>invite</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="invited" xml:space="preserve">
<source>invited</source>
<target>招待済み</target>
@@ -7689,6 +7796,10 @@ SimpleX サーバーはあなたのプロファイルを参照できません。
<target>接続中</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="message" xml:space="preserve">
<source>message</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="message received" xml:space="preserve">
<source>message received</source>
<target>メッセージを受信</target>
@@ -7719,6 +7830,10 @@ SimpleX サーバーはあなたのプロファイルを参照できません。
<target>月</target>
<note>time unit</note>
</trans-unit>
<trans-unit id="mute" xml:space="preserve">
<source>mute</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="never" xml:space="preserve">
<source>never</source>
<target>一度も</target>
@@ -7843,6 +7958,10 @@ SimpleX サーバーはあなたのプロファイルを参照できません。
<source>saved from %@</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="search" xml:space="preserve">
<source>search</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="sec" xml:space="preserve">
<source>sec</source>
<target>秒</target>
@@ -7909,14 +8028,18 @@ last received msg: %2$@</source>
<target>不明</target>
<note>connection info</note>
</trans-unit>
<trans-unit id="unknown relays" xml:space="preserve">
<source>unknown relays</source>
<trans-unit id="unknown servers" xml:space="preserve">
<source>unknown servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unknown status" xml:space="preserve">
<source>unknown status</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unmute" xml:space="preserve">
<source>unmute</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unprotected" xml:space="preserve">
<source>unprotected</source>
<note>No comment provided by engineer.</note>
@@ -7959,6 +8082,10 @@ last received msg: %2$@</source>
<target>リレー経由</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video" xml:space="preserve">
<source>video</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video call (not e2e encrypted)" xml:space="preserve">
<source>video call (not e2e encrypted)</source>
<target>ビデオ通話 (非エンドツーエンド暗号化)</target>
@@ -8201,10 +8328,6 @@ last received msg: %2$@</source>
<source>Database upgrade required</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Dismiss Sheet" xml:space="preserve">
<source>Dismiss Sheet</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error preparing file" xml:space="preserve">
<source>Error preparing file</source>
<note>No comment provided by engineer.</note>
@@ -8229,10 +8352,6 @@ last received msg: %2$@</source>
<source>Invalid migration confirmation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep Trying" xml:space="preserve">
<source>Keep Trying</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keychain error" xml:space="preserve">
<source>Keychain error</source>
<note>No comment provided by engineer.</note>
@@ -8245,10 +8364,6 @@ last received msg: %2$@</source>
<source>No active profile</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="No network connection" xml:space="preserve">
<source>No network connection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Ok" xml:space="preserve">
<source>Ok</source>
<note>No comment provided by engineer.</note>
@@ -8273,14 +8388,22 @@ last received msg: %2$@</source>
<source>Selected chat preferences prohibit this message.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Sending File" xml:space="preserve">
<source>Sending File</source>
<trans-unit id="Sending a message takes longer than expected." xml:space="preserve">
<source>Sending a message takes longer than expected.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Sending message…" xml:space="preserve">
<source>Sending message…</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share" xml:space="preserve">
<source>Share</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Slow network?" xml:space="preserve">
<source>Slow network?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Unknown database error: %@" xml:space="preserve">
<source>Unknown database error: %@</source>
<note>No comment provided by engineer.</note>
@@ -8289,6 +8412,10 @@ last received msg: %2$@</source>
<source>Unsupported format</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wait" xml:space="preserve">
<source>Wait</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wrong database passphrase" xml:space="preserve">
<source>Wrong database passphrase</source>
<note>No comment provided by engineer.</note>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -392,6 +392,11 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -748,6 +753,10 @@
<target>Zezwalaj na połączenia tylko wtedy, gdy Twój kontakt na to pozwala.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow calls?" xml:space="preserve">
<source>Allow calls?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow disappearing messages only if your contact allows it to you." xml:space="preserve">
<source>Allow disappearing messages only if your contact allows it to you.</source>
<target>Zezwól na znikające wiadomości tylko wtedy, gdy Twój kontakt Ci na to pozwoli.</target>
@@ -937,6 +946,10 @@
<target>Archiwizuj i prześlij</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
<source>Archiving database</source>
<target>Archiwizowanie bazy danych</target>
@@ -1126,11 +1139,23 @@
<target>Połączenia</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Calls prohibited!" xml:space="preserve">
<source>Calls prohibited!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Camera not available" xml:space="preserve">
<source>Camera not available</source>
<target>Kamera nie dostępna</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call contact" xml:space="preserve">
<source>Can't call contact</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call member" xml:space="preserve">
<source>Can't call member</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't invite contact!" xml:space="preserve">
<source>Can't invite contact!</source>
<target>Nie można zaprosić kontaktu!</target>
@@ -1141,6 +1166,10 @@
<target>Nie można zaprosić kontaktów!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't message member" xml:space="preserve">
<source>Can't message member</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel" xml:space="preserve">
<source>Cancel</source>
<target>Anuluj</target>
@@ -1252,6 +1281,10 @@
<target>Baza danych czatu usunięta</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat database exported" xml:space="preserve">
<source>Chat database exported</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat database imported" xml:space="preserve">
<source>Chat database imported</source>
<target>Zaimportowano bazę danych czatu</target>
@@ -1397,6 +1430,10 @@
<target>Potwierdź Pin</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm contact deletion?" xml:space="preserve">
<source>Confirm contact deletion?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm database upgrades" xml:space="preserve">
<source>Confirm database upgrades</source>
<target>Potwierdź aktualizacje bazy danych</target>
@@ -1452,6 +1489,10 @@
<target>Połącz do komputera</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
<source>Connect to yourself?</source>
<target>Połączyć się ze sobą?</target>
@@ -1526,6 +1567,10 @@ To jest twój jednorazowy link!</target>
<target>Łączenie z serwerem... (błąd: %@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to contact, please wait or check later!" xml:space="preserve">
<source>Connecting to contact, please wait or check later!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to desktop" xml:space="preserve">
<source>Connecting to desktop</source>
<target>Łączenie z komputerem</target>
@@ -1536,6 +1581,10 @@ To jest twój jednorazowy link!</target>
<target>Połączenie</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection and servers status." xml:space="preserve">
<source>Connection and servers status.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection error" xml:space="preserve">
<source>Connection error</source>
<target>Błąd połączenia</target>
@@ -1585,6 +1634,10 @@ To jest twój jednorazowy link!</target>
<target>Kontakt już istnieje</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact deleted!" xml:space="preserve">
<source>Contact deleted!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact hidden:" xml:space="preserve">
<source>Contact hidden:</source>
<target>Kontakt ukryty:</target>
@@ -1595,9 +1648,8 @@ To jest twój jednorazowy link!</target>
<target>Kontakt jest połączony</target>
<note>notification</note>
</trans-unit>
<trans-unit id="Contact is not connected yet!" xml:space="preserve">
<source>Contact is not connected yet!</source>
<target>Kontakt nie jest jeszcze połączony!</target>
<trans-unit id="Contact is deleted." xml:space="preserve">
<source>Contact is deleted.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact name" xml:space="preserve">
@@ -1610,6 +1662,10 @@ To jest twój jednorazowy link!</target>
<target>Preferencje kontaktu</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact will be deleted - this cannot be undone!" xml:space="preserve">
<source>Contact will be deleted - this cannot be undone!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contacts" xml:space="preserve">
<source>Contacts</source>
<target>Kontakty</target>
@@ -1625,6 +1681,14 @@ To jest twój jednorazowy link!</target>
<target>Kontynuuj</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Copy" xml:space="preserve">
<source>Copy</source>
<target>Kopiuj</target>
@@ -1907,11 +1971,6 @@ To jest twój jednorazowy link!</target>
<target>Usunąć %lld wiadomości?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete Contact" xml:space="preserve">
<source>Delete Contact</source>
<target>Usuń Kontakt</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete address" xml:space="preserve">
<source>Delete address</source>
<target>Usuń adres</target>
@@ -1967,11 +2026,8 @@ To jest twój jednorazowy link!</target>
<target>Usuń kontakt</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete contact?&#10;This cannot be undone!" xml:space="preserve">
<source>Delete contact?
This cannot be undone!</source>
<target>Usunąć kontakt?
To nie może być cofnięte!</target>
<trans-unit id="Delete contact?" xml:space="preserve">
<source>Delete contact?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database" xml:space="preserve">
@@ -2064,11 +2120,6 @@ To nie może być cofnięte!</target>
<target>Usunąć starą bazę danych?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete pending connection" xml:space="preserve">
<source>Delete pending connection</source>
<target>Usuń oczekujące połączenie</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete pending connection?" xml:space="preserve">
<source>Delete pending connection?</source>
<target>Usunąć oczekujące połączenie?</target>
@@ -2084,11 +2135,19 @@ To nie może być cofnięte!</target>
<target>Usuń kolejkę</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Delete up to 20 messages at once." xml:space="preserve">
<source>Delete up to 20 messages at once.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete user profile?" xml:space="preserve">
<source>Delete user profile?</source>
<target>Usunąć profil użytkownika?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete without notification" xml:space="preserve">
<source>Delete without notification</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deleted" xml:space="preserve">
<source>Deleted</source>
<target>Usunięto</target>
@@ -2104,6 +2163,10 @@ To nie może być cofnięte!</target>
<target>Usunięto o: %@</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<target>Błędy usuwania</target>
@@ -2172,6 +2235,10 @@ To nie może być cofnięte!</target>
<target>Deweloperskie</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer options" xml:space="preserve">
<source>Developer options</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer tools" xml:space="preserve">
<source>Developer tools</source>
<target>Narzędzia deweloperskie</target>
@@ -2679,11 +2746,6 @@ To nie może być cofnięte!</target>
<target>Błąd usuwania połączenia</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error deleting contact" xml:space="preserve">
<source>Error deleting contact</source>
<target>Błąd usuwania kontaktu</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error deleting database" xml:space="preserve">
<source>Error deleting database</source>
<target>Błąd usuwania bazy danych</target>
@@ -2920,6 +2982,10 @@ To nie może być cofnięte!</target>
<target>Nawet po wyłączeniu w rozmowie.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>Wyjdź bez zapisywania</target>
@@ -3729,6 +3795,10 @@ Błąd: %2$@</target>
3. Połączenie zostało skompromitowane.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It protects your IP address and connections." xml:space="preserve">
<source>It protects your IP address and connections.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It seems like you are already connected via this link. If it is not the case, there was an error (%@)." xml:space="preserve">
<source>It seems like you are already connected via this link. If it is not the case, there was an error (%@).</source>
<target>Wygląda na to, że jesteś już połączony przez ten link. Jeśli tak nie jest, wystąpił błąd (%@).</target>
@@ -3791,6 +3861,10 @@ To jest twój link do grupy %@!</target>
<target>Zachowaj</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep conversation" xml:space="preserve">
<source>Keep conversation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep the app open to use it from desktop" xml:space="preserve">
<source>Keep the app open to use it from desktop</source>
<target>Zostaw aplikację otwartą i używaj ją z komputera</target>
@@ -3966,6 +4040,10 @@ To jest twój link do grupy %@!</target>
<target>Maksymalnie 30 sekund, odbierane natychmiast.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Media &amp; file servers" xml:space="preserve">
<source>Media &amp; file servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Medium" xml:space="preserve">
<source>Medium</source>
<note>blur media</note>
@@ -4055,14 +4133,8 @@ To jest twój link do grupy %@!</target>
<target>Odebranie wiadomości</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message routing fallback" xml:space="preserve">
<source>Message routing fallback</source>
<target>Rezerwowe trasowania wiadomości</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message routing mode" xml:space="preserve">
<source>Message routing mode</source>
<target>Tryb trasowania wiadomości</target>
<trans-unit id="Message servers" xml:space="preserve">
<source>Message servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message source remains private." xml:space="preserve">
@@ -4190,6 +4262,10 @@ To jest twój link do grupy %@!</target>
<target>Moderowany</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>Moderowany o</target>
@@ -4265,6 +4341,10 @@ To jest twój link do grupy %@!</target>
<target>Status sieci</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>Nowy Pin</target>
@@ -4443,19 +4523,27 @@ To jest twój link do grupy %@!</target>
<target>Stare archiwum bazy danych</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>Jednorazowy link zaproszenia</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will be required for connection. Requires enabling VPN." xml:space="preserve">
<source>Onion hosts will be required for connection. Requires enabling VPN.</source>
<target>Hosty onion będą wymagane do połączenia. Wymaga włączenia VPN.</target>
<trans-unit id="Onion hosts will be **required** for connection.&#10;Requires compatible VPN." xml:space="preserve">
<source>Onion hosts will be **required** for connection.
Requires compatible VPN.</source>
<target>Hosty onion będą wymagane do połączenia.
Wymaga włączenia VPN.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will be used when available. Requires enabling VPN." xml:space="preserve">
<source>Onion hosts will be used when available. Requires enabling VPN.</source>
<target>Hosty onion będą używane, gdy będą dostępne. Wymaga włączenia VPN.</target>
<trans-unit id="Onion hosts will be used when available.&#10;Requires compatible VPN." xml:space="preserve">
<source>Onion hosts will be used when available.
Requires compatible VPN.</source>
<target>Hosty onion będą używane, gdy będą dostępne.
Wymaga włączenia VPN.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will not be used." xml:space="preserve">
@@ -4468,6 +4556,10 @@ To jest twój link do grupy %@!</target>
<target>Tylko urządzenia klienckie przechowują profile użytkowników, kontakty, grupy i wiadomości wysyłane za pomocą **2-warstwowego szyfrowania end-to-end**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only delete conversation" xml:space="preserve">
<source>Only delete conversation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only group owners can change group preferences." xml:space="preserve">
<source>Only group owners can change group preferences.</source>
<target>Tylko właściciele grup mogą zmieniać preferencje grupy.</target>
@@ -4703,6 +4795,10 @@ To jest twój link do grupy %@!</target>
<target>Połączenia obraz-w-obrazie</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
<source>Please ask your contact to enable sending voice messages.</source>
<target>Poproś Twój kontakt o włączenie wysyłania wiadomości głosowych.</target>
@@ -5004,6 +5100,10 @@ Włącz w ustawianiach *Sieć i serwery* .</target>
<target>Oceń aplikację</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
<source>React…</source>
<target>Reaguj…</target>
@@ -5344,11 +5444,6 @@ Włącz w ustawianiach *Sieć i serwery* .</target>
<target>Ujawnij</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Revert" xml:space="preserve">
<source>Revert</source>
<target>Przywrócić</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Revoke" xml:space="preserve">
<source>Revoke</source>
<target>Odwołaj</target>
@@ -5379,11 +5474,6 @@ Włącz w ustawianiach *Sieć i serwery* .</target>
<target>Serwer SMP</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SMP servers" xml:space="preserve">
<source>SMP servers</source>
<target>Serwery SMP</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Safely receive files" xml:space="preserve">
<source>Safely receive files</source>
<target>Bezpiecznie otrzymuj pliki</target>
@@ -5414,6 +5504,10 @@ Włącz w ustawianiach *Sieć i serwery* .</target>
<target>Zapisz i powiadom członków grupy</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save and reconnect" xml:space="preserve">
<source>Save and reconnect</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save and update group profile" xml:space="preserve">
<source>Save and update group profile</source>
<target>Zapisz i zaktualizuj profil grupowy</target>
@@ -5618,11 +5712,6 @@ Włącz w ustawianiach *Sieć i serwery* .</target>
<target>Wyślij potwierdzenia dostawy do</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send direct message" xml:space="preserve">
<source>Send direct message</source>
<target>Wyślij wiadomość bezpośrednią</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send direct message to connect" xml:space="preserve">
<source>Send direct message to connect</source>
<target>Wyślij wiadomość bezpośrednią aby połączyć</target>
@@ -5648,6 +5737,10 @@ Włącz w ustawianiach *Sieć i serwery* .</target>
<target>Wyślij wiadomość na żywo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send message to enable calls." xml:space="preserve">
<source>Send message to enable calls.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send messages directly when IP address is protected and your or destination server does not support private routing." xml:space="preserve">
<source>Send messages directly when IP address is protected and your or destination server does not support private routing.</source>
<target>Wysyłaj wiadomości bezpośrednio, gdy adres IP jest chroniony i Twój lub docelowy serwer nie obsługuje prywatnego trasowania.</target>
@@ -6101,11 +6194,19 @@ Włącz w ustawianiach *Sieć i serwery* .</target>
<source>Soft</source>
<note>blur media</note>
</trans-unit>
<trans-unit id="Some file(s) were not exported:" xml:space="preserve">
<source>Some file(s) were not exported:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import - you may see Chat console for more details." xml:space="preserve">
<source>Some non-fatal errors occurred during import - you may see Chat console for more details.</source>
<target>Podczas importu wystąpiły niekrytyczne błędy - więcej szczegółów można znaleźć w konsoli czatu.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import:" xml:space="preserve">
<source>Some non-fatal errors occurred during import:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Somebody" xml:space="preserve">
<source>Somebody</source>
<target>Ktoś</target>
@@ -6240,6 +6341,10 @@ Włącz w ustawianiach *Sieć i serwery* .</target>
<target>Uwierzytelnianie systemu</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="TCP connection" xml:space="preserve">
<source>TCP connection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="TCP connection timeout" xml:space="preserve">
<source>TCP connection timeout</source>
<target>Limit czasu połączenia TCP</target>
@@ -6300,11 +6405,6 @@ Włącz w ustawianiach *Sieć i serwery* .</target>
<target>Dotknij, aby zeskanować</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap to start a new chat" xml:space="preserve">
<source>Tap to start a new chat</source>
<target>Dotknij, aby rozpocząć nowy czat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Temporary file error" xml:space="preserve">
<source>Temporary file error</source>
<target>Tymczasowy błąd pliku</target>
@@ -6779,11 +6879,6 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc
<target>Aktualizuj</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update .onion hosts setting?" xml:space="preserve">
<source>Update .onion hosts setting?</source>
<target>Zaktualizować ustawienie hostów .onion?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update database passphrase" xml:space="preserve">
<source>Update database passphrase</source>
<target>Aktualizuj hasło do bazy danych</target>
@@ -6794,9 +6889,8 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc
<target>Zaktualizować ustawienia sieci?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update transport isolation mode?" xml:space="preserve">
<source>Update transport isolation mode?</source>
<target>Zaktualizować tryb izolacji transportu?</target>
<trans-unit id="Update settings?" xml:space="preserve">
<source>Update settings?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating settings will re-connect the client to all servers." xml:space="preserve">
@@ -6804,11 +6898,6 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc
<target>Aktualizacja ustawień spowoduje ponowne połączenie klienta ze wszystkimi serwerami.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating this setting will re-connect the client to all servers." xml:space="preserve">
<source>Updating this setting will re-connect the client to all servers.</source>
<target>Aktualizacja tych ustawień spowoduje ponowne połączenie klienta ze wszystkimi serwerami.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upgrade and open chat" xml:space="preserve">
<source>Upgrade and open chat</source>
<target>Zaktualizuj i otwórz czat</target>
@@ -6909,6 +6998,10 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc
<target>Używaj aplikacji podczas połączenia.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use the app with one hand." xml:space="preserve">
<source>Use the app with one hand.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
<source>User profile</source>
<target>Profil użytkownika</target>
@@ -6919,11 +7012,6 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc
<target>Wybór użytkownika</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Using .onion hosts requires compatible VPN provider." xml:space="preserve">
<source>Using .onion hosts requires compatible VPN provider.</source>
<target>Używanie hostów .onion wymaga kompatybilnego dostawcy VPN.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Using SimpleX Chat servers." xml:space="preserve">
<source>Using SimpleX Chat servers.</source>
<target>Używanie serwerów SimpleX Chat.</target>
@@ -7184,11 +7272,6 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc
<target>Serwer XFTP</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="XFTP servers" xml:space="preserve">
<source>XFTP servers</source>
<target>Serwery XFTP</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You" xml:space="preserve">
<source>You</source>
<target>Ty</target>
@@ -7311,6 +7394,10 @@ Powtórzyć prośbę dołączenia?</target>
<target>Możesz teraz wysyłać wiadomości do %@</target>
<note>notification body</note>
</trans-unit>
<trans-unit id="You can send messages to %@ from Archived contacts." xml:space="preserve">
<source>You can send messages to %@ from Archived contacts.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can set lock screen notification preview via settings." xml:space="preserve">
<source>You can set lock screen notification preview via settings.</source>
<target>Podgląd powiadomień na ekranie blokady można ustawić w ustawieniach.</target>
@@ -7336,6 +7423,10 @@ Powtórzyć prośbę dołączenia?</target>
<target>Możesz rozpocząć czat poprzez Ustawienia aplikacji / Baza danych lub poprzez ponowne uruchomienie aplikacji</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can still view conversation with %@ in the list of chats." xml:space="preserve">
<source>You can still view conversation with %@ in the list of chats.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can turn on SimpleX Lock via Settings." xml:space="preserve">
<source>You can turn on SimpleX Lock via Settings.</source>
<target>Możesz włączyć blokadę SimpleX poprzez Ustawienia.</target>
@@ -7378,11 +7469,6 @@ Repeat connection request?</source>
Powtórzyć prośbę połączenia?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You have no chats" xml:space="preserve">
<source>You have no chats</source>
<target>Nie masz czatów</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You have to enter passphrase every time the app starts - it is not stored on the device." xml:space="preserve">
<source>You have to enter passphrase every time the app starts - it is not stored on the device.</source>
<target>Musisz wprowadzić hasło przy każdym uruchomieniu aplikacji - nie jest one przechowywane na urządzeniu.</target>
@@ -7403,11 +7489,23 @@ Powtórzyć prośbę połączenia?</target>
<target>Dołączyłeś do tej grupy. Łączenie z zapraszającym członkiem grupy.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You may migrate the exported database." xml:space="preserve">
<source>You may migrate the exported database.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You may save the exported archive." xml:space="preserve">
<source>You may save the exported archive.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts." xml:space="preserve">
<source>You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts.</source>
<target>Musisz używać najnowszej wersji bazy danych czatu TYLKO na jednym urządzeniu, w przeciwnym razie możesz przestać otrzymywać wiadomości od niektórych kontaktów.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to call to be able to call them." xml:space="preserve">
<source>You need to allow your contact to call to be able to call them.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to send voice messages to be able to send them." xml:space="preserve">
<source>You need to allow your contact to send voice messages to be able to send them.</source>
<target>Musisz zezwolić Twojemu kontaktowi na wysyłanie wiadomości głosowych, aby móc je wysyłać.</target>
@@ -7523,13 +7621,6 @@ Powtórzyć prośbę połączenia?</target>
<target>Twoje profile czatu</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contact needs to be online for the connection to complete.&#10;You can cancel this connection and remove the contact (and try later with a new link)." xml:space="preserve">
<source>Your contact needs to be online for the connection to complete.
You can cancel this connection and remove the contact (and try later with a new link).</source>
<target>Twój kontakt musi być online, aby połączenie zostało zakończone.
Możesz anulować to połączenie i usunąć kontakt (i spróbować później z nowym linkiem).</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contact sent a file that is larger than currently supported maximum size (%@)." xml:space="preserve">
<source>Your contact sent a file that is larger than currently supported maximum size (%@).</source>
<target>Twój kontakt wysłał plik, który jest większy niż obecnie obsługiwany maksymalny rozmiar (%@).</target>
@@ -7545,6 +7636,10 @@ Możesz anulować to połączenie i usunąć kontakt (i spróbować później z
<target>Twoje kontakty pozostaną połączone.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>Twoja obecna baza danych czatu zostanie usunięta i zastąpiona zaimportowaną.</target>
@@ -7722,6 +7817,10 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu.</target>
<target>pogrubiona</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call" xml:space="preserve">
<source>call</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call error" xml:space="preserve">
<source>call error</source>
<target>błąd połączenia</target>
@@ -8092,6 +8191,10 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu.</target>
<target>zaproszenie do grupy %@</target>
<note>group name</note>
</trans-unit>
<trans-unit id="invite" xml:space="preserve">
<source>invite</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="invited" xml:space="preserve">
<source>invited</source>
<target>zaproszony</target>
@@ -8147,6 +8250,10 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu.</target>
<target>połączony</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="message" xml:space="preserve">
<source>message</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="message received" xml:space="preserve">
<source>message received</source>
<target>wiadomość otrzymana</target>
@@ -8177,6 +8284,10 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu.</target>
<target>miesiące</target>
<note>time unit</note>
</trans-unit>
<trans-unit id="mute" xml:space="preserve">
<source>mute</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="never" xml:space="preserve">
<source>never</source>
<target>nigdy</target>
@@ -8309,6 +8420,10 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu.</target>
<target>zapisane od %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="search" xml:space="preserve">
<source>search</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="sec" xml:space="preserve">
<source>sec</source>
<target>sek</target>
@@ -8383,8 +8498,8 @@ ostatnia otrzymana wiadomość: %2$@</target>
<target>nieznany</target>
<note>connection info</note>
</trans-unit>
<trans-unit id="unknown relays" xml:space="preserve">
<source>unknown relays</source>
<trans-unit id="unknown servers" xml:space="preserve">
<source>unknown servers</source>
<target>nieznane przekaźniki</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -8393,6 +8508,10 @@ ostatnia otrzymana wiadomość: %2$@</target>
<target>nieznany status</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unmute" xml:space="preserve">
<source>unmute</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unprotected" xml:space="preserve">
<source>unprotected</source>
<target>niezabezpieczony</target>
@@ -8438,6 +8557,10 @@ ostatnia otrzymana wiadomość: %2$@</target>
<target>przez przekaźnik</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video" xml:space="preserve">
<source>video</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video call (not e2e encrypted)" xml:space="preserve">
<source>video call (not e2e encrypted)</source>
<target>połączenie wideo (bez szyfrowania e2e)</target>
@@ -8685,10 +8808,6 @@ ostatnia otrzymana wiadomość: %2$@</target>
<source>Database upgrade required</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Dismiss Sheet" xml:space="preserve">
<source>Dismiss Sheet</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error preparing file" xml:space="preserve">
<source>Error preparing file</source>
<note>No comment provided by engineer.</note>
@@ -8713,10 +8832,6 @@ ostatnia otrzymana wiadomość: %2$@</target>
<source>Invalid migration confirmation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep Trying" xml:space="preserve">
<source>Keep Trying</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keychain error" xml:space="preserve">
<source>Keychain error</source>
<note>No comment provided by engineer.</note>
@@ -8729,10 +8844,6 @@ ostatnia otrzymana wiadomość: %2$@</target>
<source>No active profile</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="No network connection" xml:space="preserve">
<source>No network connection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Ok" xml:space="preserve">
<source>Ok</source>
<note>No comment provided by engineer.</note>
@@ -8757,14 +8868,22 @@ ostatnia otrzymana wiadomość: %2$@</target>
<source>Selected chat preferences prohibit this message.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Sending File" xml:space="preserve">
<source>Sending File</source>
<trans-unit id="Sending a message takes longer than expected." xml:space="preserve">
<source>Sending a message takes longer than expected.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Sending message…" xml:space="preserve">
<source>Sending message…</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share" xml:space="preserve">
<source>Share</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Slow network?" xml:space="preserve">
<source>Slow network?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Unknown database error: %@" xml:space="preserve">
<source>Unknown database error: %@</source>
<note>No comment provided by engineer.</note>
@@ -8773,6 +8892,10 @@ ostatnia otrzymana wiadomość: %2$@</target>
<source>Unsupported format</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wait" xml:space="preserve">
<source>Wait</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wrong database passphrase" xml:space="preserve">
<source>Wrong database passphrase</source>
<note>No comment provided by engineer.</note>
@@ -392,6 +392,11 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -738,6 +743,10 @@
<target>Разрешить звонки, только если их разрешает Ваш контакт.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow calls?" xml:space="preserve">
<source>Allow calls?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow disappearing messages only if your contact allows it to you." xml:space="preserve">
<source>Allow disappearing messages only if your contact allows it to you.</source>
<target>Разрешить исчезающие сообщения, только если Ваш контакт разрешает их Вам.</target>
@@ -926,6 +935,10 @@
<target>Архивировать и загрузить</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
<source>Archiving database</source>
<target>Подготовка архива</target>
@@ -1113,11 +1126,23 @@
<target>Звонки</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Calls prohibited!" xml:space="preserve">
<source>Calls prohibited!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Camera not available" xml:space="preserve">
<source>Camera not available</source>
<target>Камера недоступна</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call contact" xml:space="preserve">
<source>Can't call contact</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call member" xml:space="preserve">
<source>Can't call member</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't invite contact!" xml:space="preserve">
<source>Can't invite contact!</source>
<target>Нельзя пригласить контакт!</target>
@@ -1128,6 +1153,10 @@
<target>Нельзя пригласить контакты!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't message member" xml:space="preserve">
<source>Can't message member</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel" xml:space="preserve">
<source>Cancel</source>
<target>Отменить</target>
@@ -1237,6 +1266,10 @@
<target>Данные чата удалены</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat database exported" xml:space="preserve">
<source>Chat database exported</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat database imported" xml:space="preserve">
<source>Chat database imported</source>
<target>Архив чата импортирован</target>
@@ -1375,6 +1408,10 @@
<target>Подтвердить Код</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm contact deletion?" xml:space="preserve">
<source>Confirm contact deletion?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm database upgrades" xml:space="preserve">
<source>Confirm database upgrades</source>
<target>Подтвердить обновление базы данных</target>
@@ -1430,6 +1467,10 @@
<target>Подключиться к компьютеру</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
<source>Connect to yourself?</source>
<target>Соединиться с самим собой?</target>
@@ -1501,6 +1542,10 @@ This is your own one-time link!</source>
<target>Устанавливается соединение с сервером… (ошибка: %@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to contact, please wait or check later!" xml:space="preserve">
<source>Connecting to contact, please wait or check later!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to desktop" xml:space="preserve">
<source>Connecting to desktop</source>
<target>Подключение к компьютеру</target>
@@ -1511,6 +1556,10 @@ This is your own one-time link!</source>
<target>Соединение</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection and servers status." xml:space="preserve">
<source>Connection and servers status.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection error" xml:space="preserve">
<source>Connection error</source>
<target>Ошибка соединения</target>
@@ -1558,6 +1607,10 @@ This is your own one-time link!</source>
<target>Существующий контакт</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact deleted!" xml:space="preserve">
<source>Contact deleted!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact hidden:" xml:space="preserve">
<source>Contact hidden:</source>
<target>Контакт скрыт:</target>
@@ -1568,9 +1621,8 @@ This is your own one-time link!</source>
<target>Соединение с контактом установлено</target>
<note>notification</note>
</trans-unit>
<trans-unit id="Contact is not connected yet!" xml:space="preserve">
<source>Contact is not connected yet!</source>
<target>Соединение еще не установлено!</target>
<trans-unit id="Contact is deleted." xml:space="preserve">
<source>Contact is deleted.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact name" xml:space="preserve">
@@ -1583,6 +1635,10 @@ This is your own one-time link!</source>
<target>Предпочтения контакта</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact will be deleted - this cannot be undone!" xml:space="preserve">
<source>Contact will be deleted - this cannot be undone!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contacts" xml:space="preserve">
<source>Contacts</source>
<target>Контакты</target>
@@ -1598,6 +1654,14 @@ This is your own one-time link!</source>
<target>Продолжить</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Copy" xml:space="preserve">
<source>Copy</source>
<target>Скопировать</target>
@@ -1874,11 +1938,6 @@ This is your own one-time link!</source>
<target>Удалить %lld сообщений?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete Contact" xml:space="preserve">
<source>Delete Contact</source>
<target>Удалить контакт</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete address" xml:space="preserve">
<source>Delete address</source>
<target>Удалить адрес</target>
@@ -1934,11 +1993,8 @@ This is your own one-time link!</source>
<target>Удалить контакт</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete contact?&#10;This cannot be undone!" xml:space="preserve">
<source>Delete contact?
This cannot be undone!</source>
<target>Удалить контакт?
Это не может быть отменено!</target>
<trans-unit id="Delete contact?" xml:space="preserve">
<source>Delete contact?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database" xml:space="preserve">
@@ -2031,11 +2087,6 @@ This cannot be undone!</source>
<target>Удалить предыдущую версию данных?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete pending connection" xml:space="preserve">
<source>Delete pending connection</source>
<target>Удалить соединение</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete pending connection?" xml:space="preserve">
<source>Delete pending connection?</source>
<target>Удалить ожидаемое соединение?</target>
@@ -2051,11 +2102,19 @@ This cannot be undone!</source>
<target>Удаление очереди</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Delete up to 20 messages at once." xml:space="preserve">
<source>Delete up to 20 messages at once.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete user profile?" xml:space="preserve">
<source>Delete user profile?</source>
<target>Удалить профиль пользователя?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete without notification" xml:space="preserve">
<source>Delete without notification</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deleted" xml:space="preserve">
<source>Deleted</source>
<note>No comment provided by engineer.</note>
@@ -2070,6 +2129,10 @@ This cannot be undone!</source>
<target>Удалено: %@</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<note>No comment provided by engineer.</note>
@@ -2135,6 +2198,10 @@ This cannot be undone!</source>
<target>Для разработчиков</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer options" xml:space="preserve">
<source>Developer options</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer tools" xml:space="preserve">
<source>Developer tools</source>
<target>Инструменты разработчика</target>
@@ -2639,11 +2706,6 @@ This cannot be undone!</source>
<target>Ошибка при удалении соединения</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error deleting contact" xml:space="preserve">
<source>Error deleting contact</source>
<target>Ошибка при удалении контакта</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error deleting database" xml:space="preserve">
<source>Error deleting database</source>
<target>Ошибка при удалении данных чата</target>
@@ -2875,6 +2937,10 @@ This cannot be undone!</source>
<target>Даже когда они выключены в разговоре.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>Выйти без сохранения</target>
@@ -3674,6 +3740,10 @@ Error: %2$@</source>
3. Соединение компроментировано.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It protects your IP address and connections." xml:space="preserve">
<source>It protects your IP address and connections.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It seems like you are already connected via this link. If it is not the case, there was an error (%@)." xml:space="preserve">
<source>It seems like you are already connected via this link. If it is not the case, there was an error (%@).</source>
<target>Возможно, Вы уже соединились через эту ссылку. Если это не так, то это ошибка (%@).</target>
@@ -3736,6 +3806,10 @@ This is your link for group %@!</source>
<target>Оставить</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep conversation" xml:space="preserve">
<source>Keep conversation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep the app open to use it from desktop" xml:space="preserve">
<source>Keep the app open to use it from desktop</source>
<target>Оставьте приложение открытым, чтобы использовать его с компьютера</target>
@@ -3911,6 +3985,10 @@ This is your link for group %@!</source>
<target>Макс. 30 секунд, доставляются мгновенно.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Media &amp; file servers" xml:space="preserve">
<source>Media &amp; file servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Medium" xml:space="preserve">
<source>Medium</source>
<note>blur media</note>
@@ -3994,14 +4072,8 @@ This is your link for group %@!</source>
<source>Message reception</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message routing fallback" xml:space="preserve">
<source>Message routing fallback</source>
<target>Прямая доставка сообщений</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message routing mode" xml:space="preserve">
<source>Message routing mode</source>
<target>Режим доставки сообщений</target>
<trans-unit id="Message servers" xml:space="preserve">
<source>Message servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message source remains private." xml:space="preserve">
@@ -4125,6 +4197,10 @@ This is your link for group %@!</source>
<target>Модерировать</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>Модерировано</target>
@@ -4200,6 +4276,10 @@ This is your link for group %@!</source>
<target>Состояние сети</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>Новый Код</target>
@@ -4376,19 +4456,27 @@ This is your link for group %@!</source>
<target>Старый архив чата</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>Одноразовая ссылка</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will be required for connection. Requires enabling VPN." xml:space="preserve">
<source>Onion hosts will be required for connection. Requires enabling VPN.</source>
<target>Подключаться только к onion хостам. Требуется включенный VPN.</target>
<trans-unit id="Onion hosts will be **required** for connection.&#10;Requires compatible VPN." xml:space="preserve">
<source>Onion hosts will be **required** for connection.
Requires compatible VPN.</source>
<target>Подключаться только к **onion** хостам.
Требуется совместимый VPN.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will be used when available. Requires enabling VPN." xml:space="preserve">
<source>Onion hosts will be used when available. Requires enabling VPN.</source>
<target>Onion хосты используются, если возможно. Требуется включенный VPN.</target>
<trans-unit id="Onion hosts will be used when available.&#10;Requires compatible VPN." xml:space="preserve">
<source>Onion hosts will be used when available.
Requires compatible VPN.</source>
<target>Onion хосты используются, если возможно.
Требуется совместимый VPN.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will not be used." xml:space="preserve">
@@ -4401,6 +4489,10 @@ This is your link for group %@!</source>
<target>Только пользовательские устройства хранят контакты, группы и сообщения, которые отправляются **с двухуровневым end-to-end шифрованием**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only delete conversation" xml:space="preserve">
<source>Only delete conversation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only group owners can change group preferences." xml:space="preserve">
<source>Only group owners can change group preferences.</source>
<target>Только владельцы группы могут изменять предпочтения группы.</target>
@@ -4633,6 +4725,10 @@ This is your link for group %@!</source>
<target>Звонки с картинкой-в-картинке</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
<source>Please ask your contact to enable sending voice messages.</source>
<target>Попросите у Вашего контакта разрешить отправку голосовых сообщений.</target>
@@ -4927,6 +5023,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Оценить приложение</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
<source>React…</source>
<target>Реакция…</target>
@@ -5253,11 +5353,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>Показать</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Revert" xml:space="preserve">
<source>Revert</source>
<target>Отменить изменения</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Revoke" xml:space="preserve">
<source>Revoke</source>
<target>Отозвать</target>
@@ -5287,11 +5382,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>SMP server</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SMP servers" xml:space="preserve">
<source>SMP servers</source>
<target>SMP серверы</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Safely receive files" xml:space="preserve">
<source>Safely receive files</source>
<target>Получайте файлы безопасно</target>
@@ -5322,6 +5412,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Сохранить и уведомить членов группы</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save and reconnect" xml:space="preserve">
<source>Save and reconnect</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save and update group profile" xml:space="preserve">
<source>Save and update group profile</source>
<target>Сохранить сообщение и обновить группу</target>
@@ -5521,11 +5615,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>Отправка отчётов о доставке</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send direct message" xml:space="preserve">
<source>Send direct message</source>
<target>Отправить сообщение</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send direct message to connect" xml:space="preserve">
<source>Send direct message to connect</source>
<target>Отправьте сообщение чтобы соединиться</target>
@@ -5550,6 +5639,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Отправить живое сообщение</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send message to enable calls." xml:space="preserve">
<source>Send message to enable calls.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send messages directly when IP address is protected and your or destination server does not support private routing." xml:space="preserve">
<source>Send messages directly when IP address is protected and your or destination server does not support private routing.</source>
<target>Отправлять сообщения напрямую, когда IP адрес защищен, и Ваш сервер или сервер получателя не поддерживает конфиденциальную доставку.</target>
@@ -5988,11 +6081,19 @@ Enable in *Network &amp; servers* settings.</source>
<source>Soft</source>
<note>blur media</note>
</trans-unit>
<trans-unit id="Some file(s) were not exported:" xml:space="preserve">
<source>Some file(s) were not exported:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import - you may see Chat console for more details." xml:space="preserve">
<source>Some non-fatal errors occurred during import - you may see Chat console for more details.</source>
<target>Во время импорта произошли некоторые ошибки - для получения более подробной информации вы можете обратиться к консоли.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import:" xml:space="preserve">
<source>Some non-fatal errors occurred during import:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Somebody" xml:space="preserve">
<source>Somebody</source>
<target>Контакт</target>
@@ -6122,6 +6223,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Системная аутентификация</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="TCP connection" xml:space="preserve">
<source>TCP connection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="TCP connection timeout" xml:space="preserve">
<source>TCP connection timeout</source>
<target>Таймаут TCP соединения</target>
@@ -6182,11 +6287,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>Нажмите, чтобы сканировать</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap to start a new chat" xml:space="preserve">
<source>Tap to start a new chat</source>
<target>Нажмите, чтобы начать чат</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Temporary file error" xml:space="preserve">
<source>Temporary file error</source>
<note>No comment provided by engineer.</note>
@@ -6655,11 +6755,6 @@ To connect, please ask your contact to create another connection link and check
<target>Обновить</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update .onion hosts setting?" xml:space="preserve">
<source>Update .onion hosts setting?</source>
<target>Обновить настройки .onion хостов?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update database passphrase" xml:space="preserve">
<source>Update database passphrase</source>
<target>Поменять пароль</target>
@@ -6670,9 +6765,8 @@ To connect, please ask your contact to create another connection link and check
<target>Обновить настройки сети?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update transport isolation mode?" xml:space="preserve">
<source>Update transport isolation mode?</source>
<target>Обновить режим отдельных сессий?</target>
<trans-unit id="Update settings?" xml:space="preserve">
<source>Update settings?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating settings will re-connect the client to all servers." xml:space="preserve">
@@ -6680,11 +6774,6 @@ To connect, please ask your contact to create another connection link and check
<target>Обновление настроек приведет к сбросу и установке нового соединения со всеми серверами.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating this setting will re-connect the client to all servers." xml:space="preserve">
<source>Updating this setting will re-connect the client to all servers.</source>
<target>Обновление этих настроек приведет к сбросу и установке нового соединения со всеми серверами.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upgrade and open chat" xml:space="preserve">
<source>Upgrade and open chat</source>
<target>Обновить и открыть чат</target>
@@ -6782,6 +6871,10 @@ To connect, please ask your contact to create another connection link and check
<target>Используйте приложение во время звонка.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use the app with one hand." xml:space="preserve">
<source>Use the app with one hand.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
<source>User profile</source>
<target>Профиль чата</target>
@@ -6791,11 +6884,6 @@ To connect, please ask your contact to create another connection link and check
<source>User selection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Using .onion hosts requires compatible VPN provider." xml:space="preserve">
<source>Using .onion hosts requires compatible VPN provider.</source>
<target>Для использования .onion хостов требуется совместимый VPN провайдер.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Using SimpleX Chat servers." xml:space="preserve">
<source>Using SimpleX Chat servers.</source>
<target>Используются серверы, предоставленные SimpleX Chat.</target>
@@ -7052,11 +7140,6 @@ To connect, please ask your contact to create another connection link and check
<source>XFTP server</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="XFTP servers" xml:space="preserve">
<source>XFTP servers</source>
<target>XFTP серверы</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You" xml:space="preserve">
<source>You</source>
<target>Вы</target>
@@ -7178,6 +7261,10 @@ Repeat join request?</source>
<target>Вы теперь можете общаться с %@</target>
<note>notification body</note>
</trans-unit>
<trans-unit id="You can send messages to %@ from Archived contacts." xml:space="preserve">
<source>You can send messages to %@ from Archived contacts.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can set lock screen notification preview via settings." xml:space="preserve">
<source>You can set lock screen notification preview via settings.</source>
<target>Вы можете установить просмотр уведомлений на экране блокировки в настройках.</target>
@@ -7203,6 +7290,10 @@ Repeat join request?</source>
<target>Вы можете запустить чат через Настройки приложения или перезапустив приложение.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can still view conversation with %@ in the list of chats." xml:space="preserve">
<source>You can still view conversation with %@ in the list of chats.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can turn on SimpleX Lock via Settings." xml:space="preserve">
<source>You can turn on SimpleX Lock via Settings.</source>
<target>Вы можете включить Блокировку SimpleX через Настройки.</target>
@@ -7245,11 +7336,6 @@ Repeat connection request?</source>
Повторить запрос?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You have no chats" xml:space="preserve">
<source>You have no chats</source>
<target>У Вас нет чатов</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You have to enter passphrase every time the app starts - it is not stored on the device." xml:space="preserve">
<source>You have to enter passphrase every time the app starts - it is not stored on the device.</source>
<target>Пароль не сохранен на устройстве — Вы будете должны ввести его при каждом запуске чата.</target>
@@ -7270,11 +7356,23 @@ Repeat connection request?</source>
<target>Вы вступили в эту группу. Устанавливается соединение с пригласившим членом группы.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You may migrate the exported database." xml:space="preserve">
<source>You may migrate the exported database.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You may save the exported archive." xml:space="preserve">
<source>You may save the exported archive.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts." xml:space="preserve">
<source>You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts.</source>
<target>Вы должны всегда использовать самую новую версию данных чата, ТОЛЬКО на одном устройстве, иначе Вы можете перестать получать сообщения от каких то контактов.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to call to be able to call them." xml:space="preserve">
<source>You need to allow your contact to call to be able to call them.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to send voice messages to be able to send them." xml:space="preserve">
<source>You need to allow your contact to send voice messages to be able to send them.</source>
<target>Чтобы включить отправку голосовых сообщений, разрешите их Вашему контакту.</target>
@@ -7390,13 +7488,6 @@ Repeat connection request?</source>
<target>Ваши профили чата</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contact needs to be online for the connection to complete.&#10;You can cancel this connection and remove the contact (and try later with a new link)." xml:space="preserve">
<source>Your contact needs to be online for the connection to complete.
You can cancel this connection and remove the contact (and try later with a new link).</source>
<target>Ваш контакт должен быть в сети чтобы установить соединение.
Вы можете отменить соединение и удалить контакт (и попробовать позже с другой ссылкой).</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contact sent a file that is larger than currently supported maximum size (%@)." xml:space="preserve">
<source>Your contact sent a file that is larger than currently supported maximum size (%@).</source>
<target>Ваш контакт отправил файл, размер которого превышает максимальный размер (%@).</target>
@@ -7412,6 +7503,10 @@ You can cancel this connection and remove the contact (and try later with a new
<target>Ваши контакты сохранятся.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>Текущие данные Вашего чата будет УДАЛЕНЫ и ЗАМЕНЕНЫ импортированными.</target>
@@ -7588,6 +7683,10 @@ SimpleX серверы не могут получить доступ к Ваше
<target>жирный</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call" xml:space="preserve">
<source>call</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call error" xml:space="preserve">
<source>call error</source>
<target>ошибка звонка</target>
@@ -7954,6 +8053,10 @@ SimpleX серверы не могут получить доступ к Ваше
<target>приглашение в группу %@</target>
<note>group name</note>
</trans-unit>
<trans-unit id="invite" xml:space="preserve">
<source>invite</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="invited" xml:space="preserve">
<source>invited</source>
<target>приглашен(а)</target>
@@ -8009,6 +8112,10 @@ SimpleX серверы не могут получить доступ к Ваше
<target>соединен(а)</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="message" xml:space="preserve">
<source>message</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="message received" xml:space="preserve">
<source>message received</source>
<target>получено сообщение</target>
@@ -8039,6 +8146,10 @@ SimpleX серверы не могут получить доступ к Ваше
<target>месяцев</target>
<note>time unit</note>
</trans-unit>
<trans-unit id="mute" xml:space="preserve">
<source>mute</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="never" xml:space="preserve">
<source>never</source>
<target>никогда</target>
@@ -8169,6 +8280,10 @@ SimpleX серверы не могут получить доступ к Ваше
<target>сохранено из %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="search" xml:space="preserve">
<source>search</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="sec" xml:space="preserve">
<source>sec</source>
<target>сек</target>
@@ -8240,8 +8355,8 @@ last received msg: %2$@</source>
<target>неизвестно</target>
<note>connection info</note>
</trans-unit>
<trans-unit id="unknown relays" xml:space="preserve">
<source>unknown relays</source>
<trans-unit id="unknown servers" xml:space="preserve">
<source>unknown servers</source>
<target>неизвестные серверы</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -8250,6 +8365,10 @@ last received msg: %2$@</source>
<target>неизвестный статус</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unmute" xml:space="preserve">
<source>unmute</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unprotected" xml:space="preserve">
<source>unprotected</source>
<target>незащищённый</target>
@@ -8295,6 +8414,10 @@ last received msg: %2$@</source>
<target>через relay сервер</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video" xml:space="preserve">
<source>video</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video call (not e2e encrypted)" xml:space="preserve">
<source>video call (not e2e encrypted)</source>
<target>видеозвонок (не e2e зашифрованный)</target>
@@ -8542,10 +8665,6 @@ last received msg: %2$@</source>
<source>Database upgrade required</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Dismiss Sheet" xml:space="preserve">
<source>Dismiss Sheet</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error preparing file" xml:space="preserve">
<source>Error preparing file</source>
<note>No comment provided by engineer.</note>
@@ -8570,10 +8689,6 @@ last received msg: %2$@</source>
<source>Invalid migration confirmation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep Trying" xml:space="preserve">
<source>Keep Trying</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keychain error" xml:space="preserve">
<source>Keychain error</source>
<note>No comment provided by engineer.</note>
@@ -8586,10 +8701,6 @@ last received msg: %2$@</source>
<source>No active profile</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="No network connection" xml:space="preserve">
<source>No network connection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Ok" xml:space="preserve">
<source>Ok</source>
<note>No comment provided by engineer.</note>
@@ -8614,8 +8725,12 @@ last received msg: %2$@</source>
<source>Selected chat preferences prohibit this message.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Sending File" xml:space="preserve">
<source>Sending File</source>
<trans-unit id="Sending a message takes longer than expected." xml:space="preserve">
<source>Sending a message takes longer than expected.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Sending message…" xml:space="preserve">
<source>Sending message…</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share" xml:space="preserve">
@@ -8623,6 +8738,10 @@ last received msg: %2$@</source>
<target>Поделиться</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Slow network?" xml:space="preserve">
<source>Slow network?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Unknown database error: %@" xml:space="preserve">
<source>Unknown database error: %@</source>
<note>No comment provided by engineer.</note>
@@ -8631,6 +8750,10 @@ last received msg: %2$@</source>
<source>Unsupported format</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wait" xml:space="preserve">
<source>Wait</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wrong database passphrase" xml:space="preserve">
<source>Wrong database passphrase</source>
<note>No comment provided by engineer.</note>
@@ -370,6 +370,11 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -702,6 +707,10 @@
<target>อนุญาตการโทรเฉพาะเมื่อผู้ติดต่อของคุณอนุญาตเท่านั้น.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow calls?" xml:space="preserve">
<source>Allow calls?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow disappearing messages only if your contact allows it to you." xml:space="preserve">
<source>Allow disappearing messages only if your contact allows it to you.</source>
<target>อนุญาตให้ข้อความที่หายไปเฉพาะในกรณีที่ผู้ติดต่อของคุณอนุญาตเท่านั้น.</target>
@@ -881,6 +890,10 @@
<source>Archive and upload</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
<source>Archiving database</source>
<note>No comment provided by engineer.</note>
@@ -1057,10 +1070,22 @@
<target>โทร</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Calls prohibited!" xml:space="preserve">
<source>Calls prohibited!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Camera not available" xml:space="preserve">
<source>Camera not available</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call contact" xml:space="preserve">
<source>Can't call contact</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call member" xml:space="preserve">
<source>Can't call member</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't invite contact!" xml:space="preserve">
<source>Can't invite contact!</source>
<target>ไม่สามารถเชิญผู้ติดต่อได้!</target>
@@ -1071,6 +1096,10 @@
<target>ไม่สามารถเชิญผู้ติดต่อได้!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't message member" xml:space="preserve">
<source>Can't message member</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel" xml:space="preserve">
<source>Cancel</source>
<target>ยกเลิก</target>
@@ -1177,6 +1206,10 @@
<target>ลบฐานข้อมูลแชทแล้ว</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat database exported" xml:space="preserve">
<source>Chat database exported</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat database imported" xml:space="preserve">
<source>Chat database imported</source>
<target>นำฐานข้อมูลแชทเข้าแล้ว</target>
@@ -1311,6 +1344,10 @@
<target>ยืนยันรหัสผ่าน</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm contact deletion?" xml:space="preserve">
<source>Confirm contact deletion?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm database upgrades" xml:space="preserve">
<source>Confirm database upgrades</source>
<target>ยืนยันการอัพเกรดฐานข้อมูล</target>
@@ -1359,6 +1396,10 @@
<source>Connect to desktop</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
<source>Connect to yourself?</source>
<note>No comment provided by engineer.</note>
@@ -1420,6 +1461,10 @@ This is your own one-time link!</source>
<target>กำลังเชื่อมต่อกับเซิร์ฟเวอร์... (ข้อผิดพลาด: %@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to contact, please wait or check later!" xml:space="preserve">
<source>Connecting to contact, please wait or check later!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to desktop" xml:space="preserve">
<source>Connecting to desktop</source>
<note>No comment provided by engineer.</note>
@@ -1429,6 +1474,10 @@ This is your own one-time link!</source>
<target>การเชื่อมต่อ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection and servers status." xml:space="preserve">
<source>Connection and servers status.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection error" xml:space="preserve">
<source>Connection error</source>
<target>การเชื่อมต่อผิดพลาด</target>
@@ -1475,6 +1524,10 @@ This is your own one-time link!</source>
<target>ผู้ติดต่อรายนี้มีอยู่แล้ว</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact deleted!" xml:space="preserve">
<source>Contact deleted!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact hidden:" xml:space="preserve">
<source>Contact hidden:</source>
<target>ผู้ติดต่อถูกซ่อน:</target>
@@ -1485,9 +1538,8 @@ This is your own one-time link!</source>
<target>เชื่อมต่อกับผู้ติดต่อแล้ว</target>
<note>notification</note>
</trans-unit>
<trans-unit id="Contact is not connected yet!" xml:space="preserve">
<source>Contact is not connected yet!</source>
<target>ผู้ติดต่อยังไม่ได้เชื่อมต่อ!</target>
<trans-unit id="Contact is deleted." xml:space="preserve">
<source>Contact is deleted.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact name" xml:space="preserve">
@@ -1500,6 +1552,10 @@ This is your own one-time link!</source>
<target>การกําหนดลักษณะการติดต่อ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact will be deleted - this cannot be undone!" xml:space="preserve">
<source>Contact will be deleted - this cannot be undone!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contacts" xml:space="preserve">
<source>Contacts</source>
<target>ติดต่อ</target>
@@ -1515,6 +1571,14 @@ This is your own one-time link!</source>
<target>ดำเนินการต่อ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Copy" xml:space="preserve">
<source>Copy</source>
<target>คัดลอก</target>
@@ -1781,11 +1845,6 @@ This is your own one-time link!</source>
<source>Delete %lld messages?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete Contact" xml:space="preserve">
<source>Delete Contact</source>
<target>ลบผู้ติดต่อ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete address" xml:space="preserve">
<source>Delete address</source>
<target>ลบที่อยู่</target>
@@ -1840,9 +1899,8 @@ This is your own one-time link!</source>
<target>ลบผู้ติดต่อ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete contact?&#10;This cannot be undone!" xml:space="preserve">
<source>Delete contact?
This cannot be undone!</source>
<trans-unit id="Delete contact?" xml:space="preserve">
<source>Delete contact?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database" xml:space="preserve">
@@ -1934,11 +1992,6 @@ This cannot be undone!</source>
<target>ลบฐานข้อมูลเก่า?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete pending connection" xml:space="preserve">
<source>Delete pending connection</source>
<target>ลบการเชื่อมต่อที่รอดำเนินการ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete pending connection?" xml:space="preserve">
<source>Delete pending connection?</source>
<target>ลบการเชื่อมต่อที่รอดำเนินการหรือไม่?</target>
@@ -1954,11 +2007,19 @@ This cannot be undone!</source>
<target>ลบคิว</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Delete up to 20 messages at once." xml:space="preserve">
<source>Delete up to 20 messages at once.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete user profile?" xml:space="preserve">
<source>Delete user profile?</source>
<target>ลบโปรไฟล์ผู้ใช้?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete without notification" xml:space="preserve">
<source>Delete without notification</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deleted" xml:space="preserve">
<source>Deleted</source>
<note>No comment provided by engineer.</note>
@@ -1973,6 +2034,10 @@ This cannot be undone!</source>
<target>ลบที่: %@</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<note>No comment provided by engineer.</note>
@@ -2033,6 +2098,10 @@ This cannot be undone!</source>
<target>พัฒนา</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer options" xml:space="preserve">
<source>Developer options</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer tools" xml:space="preserve">
<source>Developer tools</source>
<target>เครื่องมือสำหรับนักพัฒนา</target>
@@ -2512,11 +2581,6 @@ This cannot be undone!</source>
<target>เกิดข้อผิดพลาดในการลบการเชื่อมต่อ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error deleting contact" xml:space="preserve">
<source>Error deleting contact</source>
<target>เกิดข้อผิดพลาดในการลบผู้ติดต่อ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error deleting database" xml:space="preserve">
<source>Error deleting database</source>
<target>เกิดข้อผิดพลาดในการลบฐานข้อมูล</target>
@@ -2741,6 +2805,10 @@ This cannot be undone!</source>
<target>แม้ในขณะที่ปิดใช้งานในการสนทนา</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>ออกโดยไม่บันทึก</target>
@@ -3503,6 +3571,10 @@ Error: %2$@</source>
3. การเชื่อมต่อถูกบุกรุก</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It protects your IP address and connections." xml:space="preserve">
<source>It protects your IP address and connections.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It seems like you are already connected via this link. If it is not the case, there was an error (%@)." xml:space="preserve">
<source>It seems like you are already connected via this link. If it is not the case, there was an error (%@).</source>
<target>ดูเหมือนว่าคุณได้เชื่อมต่อผ่านลิงก์นี้แล้ว หากไม่เป็นเช่นนั้น แสดงว่ามีข้อผิดพลาด (%@).</target>
@@ -3559,6 +3631,10 @@ This is your link for group %@!</source>
<source>Keep</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep conversation" xml:space="preserve">
<source>Keep conversation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep the app open to use it from desktop" xml:space="preserve">
<source>Keep the app open to use it from desktop</source>
<note>No comment provided by engineer.</note>
@@ -3729,6 +3805,10 @@ This is your link for group %@!</source>
<target>สูงสุด 30 วินาที รับทันที</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Media &amp; file servers" xml:space="preserve">
<source>Media &amp; file servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Medium" xml:space="preserve">
<source>Medium</source>
<note>blur media</note>
@@ -3811,12 +3891,8 @@ This is your link for group %@!</source>
<source>Message reception</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message routing fallback" xml:space="preserve">
<source>Message routing fallback</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message routing mode" xml:space="preserve">
<source>Message routing mode</source>
<trans-unit id="Message servers" xml:space="preserve">
<source>Message servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message source remains private." xml:space="preserve">
@@ -3928,6 +4004,10 @@ This is your link for group %@!</source>
<target>กลั่นกรอง</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>กลั่นกรองที่</target>
@@ -3998,6 +4078,10 @@ This is your link for group %@!</source>
<target>สถานะเครือข่าย</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>รหัสผ่านใหม่</target>
@@ -4168,18 +4252,24 @@ This is your link for group %@!</source>
<target>คลังฐานข้อมูลเก่า</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>ลิงก์คำเชิญแบบใช้ครั้งเดียว</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will be required for connection. Requires enabling VPN." xml:space="preserve">
<source>Onion hosts will be required for connection. Requires enabling VPN.</source>
<trans-unit id="Onion hosts will be **required** for connection.&#10;Requires compatible VPN." xml:space="preserve">
<source>Onion hosts will be **required** for connection.
Requires compatible VPN.</source>
<target>จำเป็นต้องมีโฮสต์หัวหอมสำหรับการเชื่อมต่อ ต้องเปิดใช้งาน VPN สำหรับการเชื่อมต่อ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will be used when available. Requires enabling VPN." xml:space="preserve">
<source>Onion hosts will be used when available. Requires enabling VPN.</source>
<trans-unit id="Onion hosts will be used when available.&#10;Requires compatible VPN." xml:space="preserve">
<source>Onion hosts will be used when available.
Requires compatible VPN.</source>
<target>จำเป็นต้องมีโฮสต์หัวหอมสำหรับการเชื่อมต่อ ต้องเปิดใช้งาน VPN สำหรับการเชื่อมต่อ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -4193,6 +4283,10 @@ This is your link for group %@!</source>
<target>เฉพาะอุปกรณ์ไคลเอนต์เท่านั้นที่จัดเก็บโปรไฟล์ผู้ใช้ ผู้ติดต่อ กลุ่ม และข้อความที่ส่งด้วย **การเข้ารหัส encrypt แบบ 2 ชั้น**</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only delete conversation" xml:space="preserve">
<source>Only delete conversation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only group owners can change group preferences." xml:space="preserve">
<source>Only group owners can change group preferences.</source>
<target>เฉพาะเจ้าของกลุ่มเท่านั้นที่สามารถเปลี่ยนค่ากําหนดลักษณะกลุ่มได้</target>
@@ -4411,6 +4505,10 @@ This is your link for group %@!</source>
<source>Picture-in-picture calls</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
<source>Please ask your contact to enable sending voice messages.</source>
<target>โปรดขอให้ผู้ติดต่อของคุณเปิดใช้งานการส่งข้อความเสียง</target>
@@ -4689,6 +4787,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>ให้คะแนนแอป</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
<source>React…</source>
<target>ตอบสนอง…</target>
@@ -5004,11 +5106,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>เปิดเผย</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Revert" xml:space="preserve">
<source>Revert</source>
<target>เปลี่ยนกลับ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Revoke" xml:space="preserve">
<source>Revoke</source>
<target>ถอน</target>
@@ -5038,11 +5135,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>SMP server</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SMP servers" xml:space="preserve">
<source>SMP servers</source>
<target>เซิร์ฟเวอร์ SMP</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Safely receive files" xml:space="preserve">
<source>Safely receive files</source>
<note>No comment provided by engineer.</note>
@@ -5071,6 +5163,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>บันทึกและแจ้งให้สมาชิกในกลุ่มทราบ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save and reconnect" xml:space="preserve">
<source>Save and reconnect</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save and update group profile" xml:space="preserve">
<source>Save and update group profile</source>
<target>บันทึกและอัปเดตโปรไฟล์กลุ่ม</target>
@@ -5264,11 +5360,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>ส่งใบเสร็จรับการจัดส่งข้อความไปที่</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send direct message" xml:space="preserve">
<source>Send direct message</source>
<target>ส่งข้อความโดยตรง</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send direct message to connect" xml:space="preserve">
<source>Send direct message to connect</source>
<note>No comment provided by engineer.</note>
@@ -5292,6 +5383,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>ส่งข้อความสด</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send message to enable calls." xml:space="preserve">
<source>Send message to enable calls.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send messages directly when IP address is protected and your or destination server does not support private routing." xml:space="preserve">
<source>Send messages directly when IP address is protected and your or destination server does not support private routing.</source>
<note>No comment provided by engineer.</note>
@@ -5711,11 +5806,19 @@ Enable in *Network &amp; servers* settings.</source>
<source>Soft</source>
<note>blur media</note>
</trans-unit>
<trans-unit id="Some file(s) were not exported:" xml:space="preserve">
<source>Some file(s) were not exported:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import - you may see Chat console for more details." xml:space="preserve">
<source>Some non-fatal errors occurred during import - you may see Chat console for more details.</source>
<target>ข้อผิดพลาดที่ไม่ร้ายแรงบางอย่างเกิดขึ้นระหว่างการนำเข้า - คุณอาจดูรายละเอียดเพิ่มเติมได้ที่คอนโซล Chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import:" xml:space="preserve">
<source>Some non-fatal errors occurred during import:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Somebody" xml:space="preserve">
<source>Somebody</source>
<target>ใครบางคน</target>
@@ -5841,6 +5944,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>การรับรองความถูกต้องของระบบ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="TCP connection" xml:space="preserve">
<source>TCP connection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="TCP connection timeout" xml:space="preserve">
<source>TCP connection timeout</source>
<target>หมดเวลาการเชื่อมต่อ TCP</target>
@@ -5898,11 +6005,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>Tap to scan</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap to start a new chat" xml:space="preserve">
<source>Tap to start a new chat</source>
<target>แตะเพื่อเริ่มแชทใหม่</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Temporary file error" xml:space="preserve">
<source>Temporary file error</source>
<note>No comment provided by engineer.</note>
@@ -6348,11 +6450,6 @@ To connect, please ask your contact to create another connection link and check
<target>อัปเดต</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update .onion hosts setting?" xml:space="preserve">
<source>Update .onion hosts setting?</source>
<target>อัปเดตการตั้งค่าโฮสต์ .onion ไหม?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update database passphrase" xml:space="preserve">
<source>Update database passphrase</source>
<target>อัปเดตรหัสผ่านของฐานข้อมูล</target>
@@ -6363,9 +6460,8 @@ To connect, please ask your contact to create another connection link and check
<target>อัปเดตการตั้งค่าเครือข่ายไหม?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update transport isolation mode?" xml:space="preserve">
<source>Update transport isolation mode?</source>
<target>อัปเดตโหมดการแยกการขนส่งไหม?</target>
<trans-unit id="Update settings?" xml:space="preserve">
<source>Update settings?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating settings will re-connect the client to all servers." xml:space="preserve">
@@ -6373,11 +6469,6 @@ To connect, please ask your contact to create another connection link and check
<target>การอัปเดตการตั้งค่าจะเชื่อมต่อไคลเอนต์กับเซิร์ฟเวอร์ทั้งหมดอีกครั้ง</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating this setting will re-connect the client to all servers." xml:space="preserve">
<source>Updating this setting will re-connect the client to all servers.</source>
<target>การอัปเดตการตั้งค่านี้จะเชื่อมต่อไคลเอนต์กับเซิร์ฟเวอร์ทั้งหมดอีกครั้ง</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upgrade and open chat" xml:space="preserve">
<source>Upgrade and open chat</source>
<target>อัปเกรดและเปิดการแชท</target>
@@ -6466,6 +6557,10 @@ To connect, please ask your contact to create another connection link and check
<source>Use the app while in the call.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use the app with one hand." xml:space="preserve">
<source>Use the app with one hand.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
<source>User profile</source>
<target>โปรไฟล์ผู้ใช้</target>
@@ -6475,11 +6570,6 @@ To connect, please ask your contact to create another connection link and check
<source>User selection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Using .onion hosts requires compatible VPN provider." xml:space="preserve">
<source>Using .onion hosts requires compatible VPN provider.</source>
<target>การใช้โฮสต์ .onion ต้องการผู้ให้บริการ VPN ที่เข้ากันได้</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Using SimpleX Chat servers." xml:space="preserve">
<source>Using SimpleX Chat servers.</source>
<target>กำลังใช้เซิร์ฟเวอร์ SimpleX Chat อยู่</target>
@@ -6716,11 +6806,6 @@ To connect, please ask your contact to create another connection link and check
<source>XFTP server</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="XFTP servers" xml:space="preserve">
<source>XFTP servers</source>
<target>เซิร์ฟเวอร์ XFTP</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You" xml:space="preserve">
<source>You</source>
<target>คุณ</target>
@@ -6831,6 +6916,10 @@ Repeat join request?</source>
<target>ตอนนี้คุณสามารถส่งข้อความถึง %@</target>
<note>notification body</note>
</trans-unit>
<trans-unit id="You can send messages to %@ from Archived contacts." xml:space="preserve">
<source>You can send messages to %@ from Archived contacts.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can set lock screen notification preview via settings." xml:space="preserve">
<source>You can set lock screen notification preview via settings.</source>
<target>คุณสามารถตั้งค่าแสดงตัวอย่างการแจ้งเตือนบนหน้าจอล็อคผ่านการตั้งค่า</target>
@@ -6856,6 +6945,10 @@ Repeat join request?</source>
<target>คุณสามารถเริ่มแชทผ่านการตั้งค่าแอป / ฐานข้อมูล หรือโดยการรีสตาร์ทแอป</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can still view conversation with %@ in the list of chats." xml:space="preserve">
<source>You can still view conversation with %@ in the list of chats.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can turn on SimpleX Lock via Settings." xml:space="preserve">
<source>You can turn on SimpleX Lock via Settings.</source>
<target>คุณสามารถเปิด SimpleX Lock ผ่านการตั้งค่า</target>
@@ -6894,11 +6987,6 @@ Repeat join request?</source>
Repeat connection request?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You have no chats" xml:space="preserve">
<source>You have no chats</source>
<target>คุณไม่มีการแชท</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You have to enter passphrase every time the app starts - it is not stored on the device." xml:space="preserve">
<source>You have to enter passphrase every time the app starts - it is not stored on the device.</source>
<target>คุณต้องใส่รหัสผ่านทุกครั้งที่เริ่มแอป - รหัสผ่านไม่ได้จัดเก็บไว้ในอุปกรณ์</target>
@@ -6918,11 +7006,23 @@ Repeat connection request?</source>
<target>คุณเข้าร่วมกลุ่มนี้แล้ว กำลังเชื่อมต่อเพื่อเชิญสมาชิกกลุ่ม</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You may migrate the exported database." xml:space="preserve">
<source>You may migrate the exported database.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You may save the exported archive." xml:space="preserve">
<source>You may save the exported archive.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts." xml:space="preserve">
<source>You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts.</source>
<target>คุณต้องใช้ฐานข้อมูลแชทเวอร์ชันล่าสุดบนอุปกรณ์เครื่องเดียวเท่านั้น มิฉะนั้น คุณอาจหยุดได้รับข้อความจากผู้ติดต่อบางคน</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to call to be able to call them." xml:space="preserve">
<source>You need to allow your contact to call to be able to call them.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to send voice messages to be able to send them." xml:space="preserve">
<source>You need to allow your contact to send voice messages to be able to send them.</source>
<target>คุณต้องอนุญาตให้ผู้ติดต่อของคุณส่งข้อความเสียงจึงจะสามารถส่งได้</target>
@@ -7036,13 +7136,6 @@ Repeat connection request?</source>
<target>โปรไฟล์แชทของคุณ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contact needs to be online for the connection to complete.&#10;You can cancel this connection and remove the contact (and try later with a new link)." xml:space="preserve">
<source>Your contact needs to be online for the connection to complete.
You can cancel this connection and remove the contact (and try later with a new link).</source>
<target>ผู้ติดต่อของคุณจะต้องออนไลน์เพื่อให้การเชื่อมต่อเสร็จสมบูรณ์
คุณสามารถยกเลิกการเชื่อมต่อนี้และลบผู้ติดต่อออก (และลองใหม่ในภายหลังด้วยลิงก์ใหม่)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contact sent a file that is larger than currently supported maximum size (%@)." xml:space="preserve">
<source>Your contact sent a file that is larger than currently supported maximum size (%@).</source>
<target>ผู้ติดต่อของคุณส่งไฟล์ที่ใหญ่กว่าขนาดสูงสุดที่รองรับในปัจจุบัน (%@)</target>
@@ -7058,6 +7151,10 @@ You can cancel this connection and remove the contact (and try later with a new
<target>ผู้ติดต่อของคุณจะยังคงเชื่อมต่ออยู่</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>ฐานข้อมูลแชทปัจจุบันของคุณจะถูกลบและแทนที่ด้วยฐานข้อมูลที่นำเข้า</target>
@@ -7225,6 +7322,10 @@ SimpleX servers cannot see your profile.</source>
<target>ตัวหนา</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call" xml:space="preserve">
<source>call</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call error" xml:space="preserve">
<source>call error</source>
<target>การโทรผิดพลาด</target>
@@ -7585,6 +7686,10 @@ SimpleX servers cannot see your profile.</source>
<target>คำเชิญเข้าร่วมกลุ่ม %@</target>
<note>group name</note>
</trans-unit>
<trans-unit id="invite" xml:space="preserve">
<source>invite</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="invited" xml:space="preserve">
<source>invited</source>
<target>เชิญ</target>
@@ -7639,6 +7744,10 @@ SimpleX servers cannot see your profile.</source>
<target>เชื่อมต่อสำเร็จ</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="message" xml:space="preserve">
<source>message</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="message received" xml:space="preserve">
<source>message received</source>
<target>ข้อความที่ได้รับ</target>
@@ -7669,6 +7778,10 @@ SimpleX servers cannot see your profile.</source>
<target>เดือน</target>
<note>time unit</note>
</trans-unit>
<trans-unit id="mute" xml:space="preserve">
<source>mute</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="never" xml:space="preserve">
<source>never</source>
<target>ไม่เคย</target>
@@ -7793,6 +7906,10 @@ SimpleX servers cannot see your profile.</source>
<source>saved from %@</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="search" xml:space="preserve">
<source>search</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="sec" xml:space="preserve">
<source>sec</source>
<target>วินาที</target>
@@ -7859,14 +7976,18 @@ last received msg: %2$@</source>
<target>ไม่ทราบ</target>
<note>connection info</note>
</trans-unit>
<trans-unit id="unknown relays" xml:space="preserve">
<source>unknown relays</source>
<trans-unit id="unknown servers" xml:space="preserve">
<source>unknown servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unknown status" xml:space="preserve">
<source>unknown status</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unmute" xml:space="preserve">
<source>unmute</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unprotected" xml:space="preserve">
<source>unprotected</source>
<note>No comment provided by engineer.</note>
@@ -7909,6 +8030,10 @@ last received msg: %2$@</source>
<target>ผ่านรีเลย์</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video" xml:space="preserve">
<source>video</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video call (not e2e encrypted)" xml:space="preserve">
<source>video call (not e2e encrypted)</source>
<target>การสนทนาทางวิดีโอ (ไม่ได้ encrypt จากต้นจนจบ)</target>
@@ -8151,10 +8276,6 @@ last received msg: %2$@</source>
<source>Database upgrade required</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Dismiss Sheet" xml:space="preserve">
<source>Dismiss Sheet</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error preparing file" xml:space="preserve">
<source>Error preparing file</source>
<note>No comment provided by engineer.</note>
@@ -8179,10 +8300,6 @@ last received msg: %2$@</source>
<source>Invalid migration confirmation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep Trying" xml:space="preserve">
<source>Keep Trying</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keychain error" xml:space="preserve">
<source>Keychain error</source>
<note>No comment provided by engineer.</note>
@@ -8195,10 +8312,6 @@ last received msg: %2$@</source>
<source>No active profile</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="No network connection" xml:space="preserve">
<source>No network connection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Ok" xml:space="preserve">
<source>Ok</source>
<note>No comment provided by engineer.</note>
@@ -8223,14 +8336,22 @@ last received msg: %2$@</source>
<source>Selected chat preferences prohibit this message.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Sending File" xml:space="preserve">
<source>Sending File</source>
<trans-unit id="Sending a message takes longer than expected." xml:space="preserve">
<source>Sending a message takes longer than expected.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Sending message…" xml:space="preserve">
<source>Sending message…</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share" xml:space="preserve">
<source>Share</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Slow network?" xml:space="preserve">
<source>Slow network?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Unknown database error: %@" xml:space="preserve">
<source>Unknown database error: %@</source>
<note>No comment provided by engineer.</note>
@@ -8239,6 +8360,10 @@ last received msg: %2$@</source>
<source>Unsupported format</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wait" xml:space="preserve">
<source>Wait</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wrong database passphrase" xml:space="preserve">
<source>Wrong database passphrase</source>
<note>No comment provided by engineer.</note>
@@ -392,6 +392,11 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -738,6 +743,10 @@
<target>Yalnızca irtibat kişiniz izin veriyorsa aramalara izin verin.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow calls?" xml:space="preserve">
<source>Allow calls?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow disappearing messages only if your contact allows it to you." xml:space="preserve">
<source>Allow disappearing messages only if your contact allows it to you.</source>
<target>Eğer kişide izin verirse kaybolan mesajlara izin ver.</target>
@@ -926,6 +935,10 @@
<target>Arşivle ve yükle</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
<source>Archiving database</source>
<target>Veritabanı arşivleniyor</target>
@@ -1113,11 +1126,23 @@
<target>Aramalar</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Calls prohibited!" xml:space="preserve">
<source>Calls prohibited!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Camera not available" xml:space="preserve">
<source>Camera not available</source>
<target>Kamera mevcut değil</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call contact" xml:space="preserve">
<source>Can't call contact</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call member" xml:space="preserve">
<source>Can't call member</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't invite contact!" xml:space="preserve">
<source>Can't invite contact!</source>
<target>Kişi davet edilemiyor!</target>
@@ -1128,6 +1153,10 @@
<target>Kişiler davet edilemiyor!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't message member" xml:space="preserve">
<source>Can't message member</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel" xml:space="preserve">
<source>Cancel</source>
<target>İptal et</target>
@@ -1237,6 +1266,10 @@
<target>Sohbet veritabanı silindi</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat database exported" xml:space="preserve">
<source>Chat database exported</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat database imported" xml:space="preserve">
<source>Chat database imported</source>
<target>Sohbet veritabanı içe aktarıldı</target>
@@ -1375,6 +1408,10 @@
<target>Parolayı onayla</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm contact deletion?" xml:space="preserve">
<source>Confirm contact deletion?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm database upgrades" xml:space="preserve">
<source>Confirm database upgrades</source>
<target>Veritabanı geliştirmelerini onayla</target>
@@ -1430,6 +1467,10 @@
<target>Bilgisayara bağlan</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
<source>Connect to yourself?</source>
<target>Kendine mi bağlanacaksın?</target>
@@ -1501,6 +1542,10 @@ Bu senin kendi tek kullanımlık bağlantın!</target>
<target>Sunucuya bağlanıyor…(hata:%@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to contact, please wait or check later!" xml:space="preserve">
<source>Connecting to contact, please wait or check later!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to desktop" xml:space="preserve">
<source>Connecting to desktop</source>
<target>Bilgisayara bağlanıyor</target>
@@ -1511,6 +1556,10 @@ Bu senin kendi tek kullanımlık bağlantın!</target>
<target>Bağlantı</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection and servers status." xml:space="preserve">
<source>Connection and servers status.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection error" xml:space="preserve">
<source>Connection error</source>
<target>Bağlantı hatası</target>
@@ -1558,6 +1607,10 @@ Bu senin kendi tek kullanımlık bağlantın!</target>
<target>Kişi zaten mevcut</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact deleted!" xml:space="preserve">
<source>Contact deleted!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact hidden:" xml:space="preserve">
<source>Contact hidden:</source>
<target>Kişi gizli:</target>
@@ -1568,9 +1621,8 @@ Bu senin kendi tek kullanımlık bağlantın!</target>
<target>Kişi bağlandı</target>
<note>notification</note>
</trans-unit>
<trans-unit id="Contact is not connected yet!" xml:space="preserve">
<source>Contact is not connected yet!</source>
<target>Kişi şuan bağlanmadı!</target>
<trans-unit id="Contact is deleted." xml:space="preserve">
<source>Contact is deleted.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact name" xml:space="preserve">
@@ -1583,6 +1635,10 @@ Bu senin kendi tek kullanımlık bağlantın!</target>
<target>Kişi tercihleri</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact will be deleted - this cannot be undone!" xml:space="preserve">
<source>Contact will be deleted - this cannot be undone!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contacts" xml:space="preserve">
<source>Contacts</source>
<target>Kişiler</target>
@@ -1598,6 +1654,14 @@ Bu senin kendi tek kullanımlık bağlantın!</target>
<target>Devam et</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Copy" xml:space="preserve">
<source>Copy</source>
<target>Kopyala</target>
@@ -1875,11 +1939,6 @@ Bu senin kendi tek kullanımlık bağlantın!</target>
<target>%lld mesaj silinsin mi?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete Contact" xml:space="preserve">
<source>Delete Contact</source>
<target>Kişiyi sil</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete address" xml:space="preserve">
<source>Delete address</source>
<target>Adresi sil</target>
@@ -1935,11 +1994,8 @@ Bu senin kendi tek kullanımlık bağlantın!</target>
<target>Kişiyi sil</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete contact?&#10;This cannot be undone!" xml:space="preserve">
<source>Delete contact?
This cannot be undone!</source>
<target>Kişi silinsin mi?
Bu geri alınamaz!</target>
<trans-unit id="Delete contact?" xml:space="preserve">
<source>Delete contact?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database" xml:space="preserve">
@@ -2032,11 +2088,6 @@ Bu geri alınamaz!</target>
<target>Eski veritabanı silinsin mi?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete pending connection" xml:space="preserve">
<source>Delete pending connection</source>
<target>Bekleyen bağlantıyı sil</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete pending connection?" xml:space="preserve">
<source>Delete pending connection?</source>
<target>Bekleyen bağlantı silinsin mi?</target>
@@ -2052,11 +2103,19 @@ Bu geri alınamaz!</target>
<target>Sırayı sil</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Delete up to 20 messages at once." xml:space="preserve">
<source>Delete up to 20 messages at once.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete user profile?" xml:space="preserve">
<source>Delete user profile?</source>
<target>Kullanıcı profili silinsin mi?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete without notification" xml:space="preserve">
<source>Delete without notification</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deleted" xml:space="preserve">
<source>Deleted</source>
<note>No comment provided by engineer.</note>
@@ -2071,6 +2130,10 @@ Bu geri alınamaz!</target>
<target>%@ de silindi</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<note>No comment provided by engineer.</note>
@@ -2136,6 +2199,10 @@ Bu geri alınamaz!</target>
<target>Geliştir</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer options" xml:space="preserve">
<source>Developer options</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer tools" xml:space="preserve">
<source>Developer tools</source>
<target>Geliştirici araçları</target>
@@ -2640,11 +2707,6 @@ Bu geri alınamaz!</target>
<target>Bağlantı silinirken hata oluştu</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error deleting contact" xml:space="preserve">
<source>Error deleting contact</source>
<target>Kişi silinirken hata oluştu</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error deleting database" xml:space="preserve">
<source>Error deleting database</source>
<target>Veritabanı silinirken hata oluştu</target>
@@ -2876,6 +2938,10 @@ Bu geri alınamaz!</target>
<target>Konuşma sırasında devre dışı bırakılsa bile.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>Kaydetmeden çık</target>
@@ -3675,6 +3741,10 @@ Hata: %2$@</target>
3. Bağlantı tehlikeye girmiştir.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It protects your IP address and connections." xml:space="preserve">
<source>It protects your IP address and connections.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It seems like you are already connected via this link. If it is not the case, there was an error (%@)." xml:space="preserve">
<source>It seems like you are already connected via this link. If it is not the case, there was an error (%@).</source>
<target>Bu bağlantı üzerinden zaten bağlanmışsınız gibi görünüyor. Eğer durum böyle değilse, bir hata oluştu (%@).</target>
@@ -3737,6 +3807,10 @@ Bu senin grup için bağlantın %@!</target>
<target>Tut</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep conversation" xml:space="preserve">
<source>Keep conversation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep the app open to use it from desktop" xml:space="preserve">
<source>Keep the app open to use it from desktop</source>
<target>Bilgisayardan kullanmak için uygulamayı açık tut</target>
@@ -3912,6 +3986,10 @@ Bu senin grup için bağlantın %@!</target>
<target>Maksimum 30 saniye, anında alındı.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Media &amp; file servers" xml:space="preserve">
<source>Media &amp; file servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Medium" xml:space="preserve">
<source>Medium</source>
<note>blur media</note>
@@ -3996,14 +4074,8 @@ Bu senin grup için bağlantın %@!</target>
<source>Message reception</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message routing fallback" xml:space="preserve">
<source>Message routing fallback</source>
<target>Mesaj yönlendirme yedeklemesi</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message routing mode" xml:space="preserve">
<source>Message routing mode</source>
<target>Mesaj yönlendirme modu</target>
<trans-unit id="Message servers" xml:space="preserve">
<source>Message servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message source remains private." xml:space="preserve">
@@ -4127,6 +4199,10 @@ Bu senin grup için bağlantın %@!</target>
<target>Yönet</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>de yönetildi</target>
@@ -4202,6 +4278,10 @@ Bu senin grup için bağlantın %@!</target>
<target>Ağ durumu</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>Yeni şifre</target>
@@ -4378,19 +4458,27 @@ Bu senin grup için bağlantın %@!</target>
<target>Eski veritabanı arşivi</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>Tek zamanlı bağlantı daveti</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will be required for connection. Requires enabling VPN." xml:space="preserve">
<source>Onion hosts will be required for connection. Requires enabling VPN.</source>
<target>Bağlantı için Onion ana bilgisayarları gerekecektir. VPN'nin etkinleştirilmesi gerekir.</target>
<trans-unit id="Onion hosts will be **required** for connection.&#10;Requires compatible VPN." xml:space="preserve">
<source>Onion hosts will be **required** for connection.
Requires compatible VPN.</source>
<target>Bağlantı için Onion ana bilgisayarları gerekecektir.
VPN'nin etkinleştirilmesi gerekir.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will be used when available. Requires enabling VPN." xml:space="preserve">
<source>Onion hosts will be used when available. Requires enabling VPN.</source>
<target>Onion ana bilgisayarları mevcutsa kullanılacaktır. VPN'nin etkinleştirilmesi gerekir.</target>
<trans-unit id="Onion hosts will be used when available.&#10;Requires compatible VPN." xml:space="preserve">
<source>Onion hosts will be used when available.
Requires compatible VPN.</source>
<target>Onion ana bilgisayarları mevcutsa kullanılacaktır.
VPN'nin etkinleştirilmesi gerekir.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will not be used." xml:space="preserve">
@@ -4403,6 +4491,10 @@ Bu senin grup için bağlantın %@!</target>
<target>Yalnızca istemci cihazlar kullanıcı profillerini, kişileri, grupları ve **2 katmanlı uçtan uca şifreleme** ile gönderilen mesajları depolar.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only delete conversation" xml:space="preserve">
<source>Only delete conversation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only group owners can change group preferences." xml:space="preserve">
<source>Only group owners can change group preferences.</source>
<target>Grup tercihlerini yalnızca grup sahipleri değiştirebilir.</target>
@@ -4635,6 +4727,10 @@ Bu senin grup için bağlantın %@!</target>
<target>Resim içinde resim aramaları</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
<source>Please ask your contact to enable sending voice messages.</source>
<target>Lütfen konuştuğunuz kişiden sesli mesaj göndermeyi etkinleştirmesini isteyin.</target>
@@ -4929,6 +5025,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Uygulamayı değerlendir</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
<source>React…</source>
<target>Tepki ver…</target>
@@ -5255,11 +5355,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>Göster</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Revert" xml:space="preserve">
<source>Revert</source>
<target>Geri al</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Revoke" xml:space="preserve">
<source>Revoke</source>
<target>İptal et</target>
@@ -5289,11 +5384,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>SMP server</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SMP servers" xml:space="preserve">
<source>SMP servers</source>
<target>SMP sunucuları</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Safely receive files" xml:space="preserve">
<source>Safely receive files</source>
<target>Dosyaları güvenle alın</target>
@@ -5324,6 +5414,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Kaydet ve grup üyelerine bildir</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save and reconnect" xml:space="preserve">
<source>Save and reconnect</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save and update group profile" xml:space="preserve">
<source>Save and update group profile</source>
<target>Kaydet ve grup profilini güncelle</target>
@@ -5523,11 +5617,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>Görüldü bilgilerini şuraya gönder</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send direct message" xml:space="preserve">
<source>Send direct message</source>
<target>Doğrudan mesaj gönder</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send direct message to connect" xml:space="preserve">
<source>Send direct message to connect</source>
<target>Bağlanmak için doğrudan mesaj gönder</target>
@@ -5552,6 +5641,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Canlı mesaj gönder</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send message to enable calls." xml:space="preserve">
<source>Send message to enable calls.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send messages directly when IP address is protected and your or destination server does not support private routing." xml:space="preserve">
<source>Send messages directly when IP address is protected and your or destination server does not support private routing.</source>
<target>IP adresi korumalı olduğunda ve sizin veya hedef sunucunun özel yönlendirmeyi desteklemediği durumlarda mesajları doğrudan gönderin.</target>
@@ -5990,11 +6083,19 @@ Enable in *Network &amp; servers* settings.</source>
<source>Soft</source>
<note>blur media</note>
</trans-unit>
<trans-unit id="Some file(s) were not exported:" xml:space="preserve">
<source>Some file(s) were not exported:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import - you may see Chat console for more details." xml:space="preserve">
<source>Some non-fatal errors occurred during import - you may see Chat console for more details.</source>
<target>İçe aktarma sırasında bazı ölümcül olmayan hatalar oluştu - daha fazla ayrıntı için Sohbet konsoluna bakabilirsiniz.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import:" xml:space="preserve">
<source>Some non-fatal errors occurred during import:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Somebody" xml:space="preserve">
<source>Somebody</source>
<target>Biri</target>
@@ -6124,6 +6225,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Sistem yetkilendirilmesi</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="TCP connection" xml:space="preserve">
<source>TCP connection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="TCP connection timeout" xml:space="preserve">
<source>TCP connection timeout</source>
<target>TCP bağlantı zaman aşımı</target>
@@ -6184,11 +6289,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>Taramak için tıkla</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap to start a new chat" xml:space="preserve">
<source>Tap to start a new chat</source>
<target>Yeni bir sohbet başlatmak için tıkla</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Temporary file error" xml:space="preserve">
<source>Temporary file error</source>
<note>No comment provided by engineer.</note>
@@ -6657,11 +6757,6 @@ Bağlanmak için lütfen kişinizden başka bir bağlantı oluşturmasını iste
<target>Güncelle</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update .onion hosts setting?" xml:space="preserve">
<source>Update .onion hosts setting?</source>
<target>.onion ana bilgisayarların ayarı güncellensin mi?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update database passphrase" xml:space="preserve">
<source>Update database passphrase</source>
<target>Veritabanı parolasını güncelle</target>
@@ -6672,9 +6767,8 @@ Bağlanmak için lütfen kişinizden başka bir bağlantı oluşturmasını iste
<target>Bağlantı ayarları güncellensin mi?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update transport isolation mode?" xml:space="preserve">
<source>Update transport isolation mode?</source>
<target>Taşıma izolasyon modu güncellensin mi?</target>
<trans-unit id="Update settings?" xml:space="preserve">
<source>Update settings?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating settings will re-connect the client to all servers." xml:space="preserve">
@@ -6682,11 +6776,6 @@ Bağlanmak için lütfen kişinizden başka bir bağlantı oluşturmasını iste
<target>Ayarların güncellenmesi, istemciyi tüm sunuculara yeniden bağlayacaktır.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating this setting will re-connect the client to all servers." xml:space="preserve">
<source>Updating this setting will re-connect the client to all servers.</source>
<target>Bu ayarın güncellenmesi, istemciyi tüm sunuculara yeniden bağlayacaktır.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upgrade and open chat" xml:space="preserve">
<source>Upgrade and open chat</source>
<target>Yükselt ve sohbeti aç</target>
@@ -6784,6 +6873,10 @@ Bağlanmak için lütfen kişinizden başka bir bağlantı oluşturmasını iste
<target>Görüşme sırasında uygulamayı kullanın.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use the app with one hand." xml:space="preserve">
<source>Use the app with one hand.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
<source>User profile</source>
<target>Kullanıcı profili</target>
@@ -6793,11 +6886,6 @@ Bağlanmak için lütfen kişinizden başka bir bağlantı oluşturmasını iste
<source>User selection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Using .onion hosts requires compatible VPN provider." xml:space="preserve">
<source>Using .onion hosts requires compatible VPN provider.</source>
<target>.onion ana bilgisayarlarını kullanmak için uyumlu VPN sağlayıcısı gerekir.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Using SimpleX Chat servers." xml:space="preserve">
<source>Using SimpleX Chat servers.</source>
<target>SimpleX Chat sunucuları kullanılıyor.</target>
@@ -7054,11 +7142,6 @@ Bağlanmak için lütfen kişinizden başka bir bağlantı oluşturmasını iste
<source>XFTP server</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="XFTP servers" xml:space="preserve">
<source>XFTP servers</source>
<target>XFTP sunucuları</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You" xml:space="preserve">
<source>You</source>
<target>Sen</target>
@@ -7180,6 +7263,10 @@ Katılma isteği tekrarlansın mı?</target>
<target>Artık %@ adresine mesaj gönderebilirsin</target>
<note>notification body</note>
</trans-unit>
<trans-unit id="You can send messages to %@ from Archived contacts." xml:space="preserve">
<source>You can send messages to %@ from Archived contacts.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can set lock screen notification preview via settings." xml:space="preserve">
<source>You can set lock screen notification preview via settings.</source>
<target>Kilit ekranı bildirim önizlemesini ayarlar üzerinden ayarlayabilirsiniz.</target>
@@ -7205,6 +7292,10 @@ Katılma isteği tekrarlansın mı?</target>
<target>Sohbeti uygulamada Ayarlar / Veritabanı üzerinden veya uygulamayı yeniden başlatarak başlatabilirsiniz</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can still view conversation with %@ in the list of chats." xml:space="preserve">
<source>You can still view conversation with %@ in the list of chats.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can turn on SimpleX Lock via Settings." xml:space="preserve">
<source>You can turn on SimpleX Lock via Settings.</source>
<target>SimpleX Kilidini Ayarlar üzerinden açabilirsiniz.</target>
@@ -7247,11 +7338,6 @@ Repeat connection request?</source>
Bağlantı isteği tekrarlansın mı?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You have no chats" xml:space="preserve">
<source>You have no chats</source>
<target>Hiç sohbetiniz yok</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You have to enter passphrase every time the app starts - it is not stored on the device." xml:space="preserve">
<source>You have to enter passphrase every time the app starts - it is not stored on the device.</source>
<target>Uygulama her başladığında parola girmeniz gerekir - parola cihazınızda saklanmaz.</target>
@@ -7272,11 +7358,23 @@ Bağlantı isteği tekrarlansın mı?</target>
<target>Bu gruba katıldınız. Davet eden grup üyesine bağlanılıyor.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You may migrate the exported database." xml:space="preserve">
<source>You may migrate the exported database.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You may save the exported archive." xml:space="preserve">
<source>You may save the exported archive.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts." xml:space="preserve">
<source>You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts.</source>
<target>Sohbet veritabanınızın en son sürümünü SADECE bir cihazda kullanmalısınız, aksi takdirde bazı kişilerden daha fazla mesaj alamayabilirsiniz.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to call to be able to call them." xml:space="preserve">
<source>You need to allow your contact to call to be able to call them.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to send voice messages to be able to send them." xml:space="preserve">
<source>You need to allow your contact to send voice messages to be able to send them.</source>
<target>Sesli mesaj gönderebilmeniz için kişinizin de sesli mesaj göndermesine izin vermeniz gerekir.</target>
@@ -7392,13 +7490,6 @@ Bağlantı isteği tekrarlansın mı?</target>
<target>Sohbet profillerin</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contact needs to be online for the connection to complete.&#10;You can cancel this connection and remove the contact (and try later with a new link)." xml:space="preserve">
<source>Your contact needs to be online for the connection to complete.
You can cancel this connection and remove the contact (and try later with a new link).</source>
<target>Bağlantının tamamlanması için kişinizin çevrimiçi olması gerekir.
Bu bağlantıyı iptal edebilir ve kişiyi kaldırabilirsiniz (ve daha sonra yeni bir bağlantıyla deneyebilirsiniz).</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contact sent a file that is larger than currently supported maximum size (%@)." xml:space="preserve">
<source>Your contact sent a file that is larger than currently supported maximum size (%@).</source>
<target>Kişiniz şu anda desteklenen maksimum boyuttan (%@) daha büyük bir dosya gönderdi.</target>
@@ -7414,6 +7505,10 @@ Bu bağlantıyı iptal edebilir ve kişiyi kaldırabilirsiniz (ve daha sonra yen
<target>Kişileriniz bağlı kalacaktır.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>Mevcut sohbet veritabanınız SİLİNECEK ve içe aktarılan veritabanıyla DEĞİŞTİRİLECEKTİR.</target>
@@ -7590,6 +7685,10 @@ SimpleX sunucuları profilinizi göremez.</target>
<target>kalın</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call" xml:space="preserve">
<source>call</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call error" xml:space="preserve">
<source>call error</source>
<target>arama hatası</target>
@@ -7956,6 +8055,10 @@ SimpleX sunucuları profilinizi göremez.</target>
<target>%@ grubuna davet</target>
<note>group name</note>
</trans-unit>
<trans-unit id="invite" xml:space="preserve">
<source>invite</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="invited" xml:space="preserve">
<source>invited</source>
<target>davet edildi</target>
@@ -8011,6 +8114,10 @@ SimpleX sunucuları profilinizi göremez.</target>
<target>bağlanıldı</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="message" xml:space="preserve">
<source>message</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="message received" xml:space="preserve">
<source>message received</source>
<target>mesaj alındı</target>
@@ -8041,6 +8148,10 @@ SimpleX sunucuları profilinizi göremez.</target>
<target>aylar</target>
<note>time unit</note>
</trans-unit>
<trans-unit id="mute" xml:space="preserve">
<source>mute</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="never" xml:space="preserve">
<source>never</source>
<target>asla</target>
@@ -8171,6 +8282,10 @@ SimpleX sunucuları profilinizi göremez.</target>
<target>%@ tarafından kaydedildi</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="search" xml:space="preserve">
<source>search</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="sec" xml:space="preserve">
<source>sec</source>
<target>sn</target>
@@ -8245,8 +8360,8 @@ son alınan msj: %2$@</target>
<target>bilinmeyen</target>
<note>connection info</note>
</trans-unit>
<trans-unit id="unknown relays" xml:space="preserve">
<source>unknown relays</source>
<trans-unit id="unknown servers" xml:space="preserve">
<source>unknown servers</source>
<target>bilinmeyen yönlendiriciler</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -8255,6 +8370,10 @@ son alınan msj: %2$@</target>
<target>bilinmeyen durum</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unmute" xml:space="preserve">
<source>unmute</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unprotected" xml:space="preserve">
<source>unprotected</source>
<target>korumasız</target>
@@ -8300,6 +8419,10 @@ son alınan msj: %2$@</target>
<target>yönlendirici aracılığıyla</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video" xml:space="preserve">
<source>video</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video call (not e2e encrypted)" xml:space="preserve">
<source>video call (not e2e encrypted)</source>
<target>Görüntülü arama (şifrelenmiş değil)</target>
@@ -8547,10 +8670,6 @@ son alınan msj: %2$@</target>
<source>Database upgrade required</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Dismiss Sheet" xml:space="preserve">
<source>Dismiss Sheet</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error preparing file" xml:space="preserve">
<source>Error preparing file</source>
<note>No comment provided by engineer.</note>
@@ -8575,10 +8694,6 @@ son alınan msj: %2$@</target>
<source>Invalid migration confirmation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep Trying" xml:space="preserve">
<source>Keep Trying</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keychain error" xml:space="preserve">
<source>Keychain error</source>
<note>No comment provided by engineer.</note>
@@ -8591,10 +8706,6 @@ son alınan msj: %2$@</target>
<source>No active profile</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="No network connection" xml:space="preserve">
<source>No network connection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Ok" xml:space="preserve">
<source>Ok</source>
<note>No comment provided by engineer.</note>
@@ -8619,14 +8730,22 @@ son alınan msj: %2$@</target>
<source>Selected chat preferences prohibit this message.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Sending File" xml:space="preserve">
<source>Sending File</source>
<trans-unit id="Sending a message takes longer than expected." xml:space="preserve">
<source>Sending a message takes longer than expected.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Sending message…" xml:space="preserve">
<source>Sending message…</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share" xml:space="preserve">
<source>Share</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Slow network?" xml:space="preserve">
<source>Slow network?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Unknown database error: %@" xml:space="preserve">
<source>Unknown database error: %@</source>
<note>No comment provided by engineer.</note>
@@ -8635,6 +8754,10 @@ son alınan msj: %2$@</target>
<source>Unsupported format</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wait" xml:space="preserve">
<source>Wait</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wrong database passphrase" xml:space="preserve">
<source>Wrong database passphrase</source>
<note>No comment provided by engineer.</note>
@@ -392,6 +392,11 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -738,6 +743,10 @@
<target>Дозволяйте дзвінки, тільки якщо ваш контакт дозволяє їх.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow calls?" xml:space="preserve">
<source>Allow calls?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow disappearing messages only if your contact allows it to you." xml:space="preserve">
<source>Allow disappearing messages only if your contact allows it to you.</source>
<target>Дозволяйте зникати повідомленням, тільки якщо контакт дозволяє вам це робити.</target>
@@ -926,6 +935,10 @@
<target>Архівування та завантаження</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
<source>Archiving database</source>
<target>Архівування бази даних</target>
@@ -1113,11 +1126,23 @@
<target>Дзвінки</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Calls prohibited!" xml:space="preserve">
<source>Calls prohibited!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Camera not available" xml:space="preserve">
<source>Camera not available</source>
<target>Камера недоступна</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call contact" xml:space="preserve">
<source>Can't call contact</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call member" xml:space="preserve">
<source>Can't call member</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't invite contact!" xml:space="preserve">
<source>Can't invite contact!</source>
<target>Не вдається запросити контакт!</target>
@@ -1128,6 +1153,10 @@
<target>Неможливо запросити контакти!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't message member" xml:space="preserve">
<source>Can't message member</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel" xml:space="preserve">
<source>Cancel</source>
<target>Скасувати</target>
@@ -1237,6 +1266,10 @@
<target>Видалено базу даних чату</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat database exported" xml:space="preserve">
<source>Chat database exported</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat database imported" xml:space="preserve">
<source>Chat database imported</source>
<target>Імпорт бази даних чату</target>
@@ -1375,6 +1408,10 @@
<target>Підтвердити пароль</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm contact deletion?" xml:space="preserve">
<source>Confirm contact deletion?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm database upgrades" xml:space="preserve">
<source>Confirm database upgrades</source>
<target>Підтвердити оновлення бази даних</target>
@@ -1430,6 +1467,10 @@
<target>Підключення до комп'ютера</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
<source>Connect to yourself?</source>
<target>З'єднатися з самим собою?</target>
@@ -1501,6 +1542,10 @@ This is your own one-time link!</source>
<target>Підключення до сервера... (помилка: %@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to contact, please wait or check later!" xml:space="preserve">
<source>Connecting to contact, please wait or check later!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to desktop" xml:space="preserve">
<source>Connecting to desktop</source>
<target>Підключення до ПК</target>
@@ -1511,6 +1556,10 @@ This is your own one-time link!</source>
<target>Підключення</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection and servers status." xml:space="preserve">
<source>Connection and servers status.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection error" xml:space="preserve">
<source>Connection error</source>
<target>Помилка підключення</target>
@@ -1558,6 +1607,10 @@ This is your own one-time link!</source>
<target>Контакт вже існує</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact deleted!" xml:space="preserve">
<source>Contact deleted!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact hidden:" xml:space="preserve">
<source>Contact hidden:</source>
<target>Контакт приховано:</target>
@@ -1568,9 +1621,8 @@ This is your own one-time link!</source>
<target>Контакт підключений</target>
<note>notification</note>
</trans-unit>
<trans-unit id="Contact is not connected yet!" xml:space="preserve">
<source>Contact is not connected yet!</source>
<target>Контакт ще не підключено!</target>
<trans-unit id="Contact is deleted." xml:space="preserve">
<source>Contact is deleted.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact name" xml:space="preserve">
@@ -1583,6 +1635,10 @@ This is your own one-time link!</source>
<target>Налаштування контактів</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact will be deleted - this cannot be undone!" xml:space="preserve">
<source>Contact will be deleted - this cannot be undone!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contacts" xml:space="preserve">
<source>Contacts</source>
<target>Контакти</target>
@@ -1598,6 +1654,14 @@ This is your own one-time link!</source>
<target>Продовжуйте</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Copy" xml:space="preserve">
<source>Copy</source>
<target>Копіювати</target>
@@ -1875,11 +1939,6 @@ This is your own one-time link!</source>
<target>Видалити %lld повідомлень?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete Contact" xml:space="preserve">
<source>Delete Contact</source>
<target>Видалити контакт</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete address" xml:space="preserve">
<source>Delete address</source>
<target>Видалити адресу</target>
@@ -1935,11 +1994,8 @@ This is your own one-time link!</source>
<target>Видалити контакт</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete contact?&#10;This cannot be undone!" xml:space="preserve">
<source>Delete contact?
This cannot be undone!</source>
<target>Видалити контакт?
Це не можна скасувати!</target>
<trans-unit id="Delete contact?" xml:space="preserve">
<source>Delete contact?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database" xml:space="preserve">
@@ -2032,11 +2088,6 @@ This cannot be undone!</source>
<target>Видалити стару базу даних?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete pending connection" xml:space="preserve">
<source>Delete pending connection</source>
<target>Видалити очікуване з'єднання</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete pending connection?" xml:space="preserve">
<source>Delete pending connection?</source>
<target>Видалити очікуване з'єднання?</target>
@@ -2052,11 +2103,19 @@ This cannot be undone!</source>
<target>Видалити чергу</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Delete up to 20 messages at once." xml:space="preserve">
<source>Delete up to 20 messages at once.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete user profile?" xml:space="preserve">
<source>Delete user profile?</source>
<target>Видалити профіль користувача?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete without notification" xml:space="preserve">
<source>Delete without notification</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deleted" xml:space="preserve">
<source>Deleted</source>
<note>No comment provided by engineer.</note>
@@ -2071,6 +2130,10 @@ This cannot be undone!</source>
<target>Видалено за: %@</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<note>No comment provided by engineer.</note>
@@ -2136,6 +2199,10 @@ This cannot be undone!</source>
<target>Розробник</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer options" xml:space="preserve">
<source>Developer options</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer tools" xml:space="preserve">
<source>Developer tools</source>
<target>Інструменти для розробників</target>
@@ -2640,11 +2707,6 @@ This cannot be undone!</source>
<target>Помилка видалення з'єднання</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error deleting contact" xml:space="preserve">
<source>Error deleting contact</source>
<target>Помилка видалення контакту</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error deleting database" xml:space="preserve">
<source>Error deleting database</source>
<target>Помилка видалення бази даних</target>
@@ -2876,6 +2938,10 @@ This cannot be undone!</source>
<target>Навіть коли вимкнений у розмові.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>Вихід без збереження</target>
@@ -3675,6 +3741,10 @@ Error: %2$@</source>
3. З'єднання було скомпрометовано.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It protects your IP address and connections." xml:space="preserve">
<source>It protects your IP address and connections.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It seems like you are already connected via this link. If it is not the case, there was an error (%@)." xml:space="preserve">
<source>It seems like you are already connected via this link. If it is not the case, there was an error (%@).</source>
<target>Схоже, що ви вже підключені за цим посиланням. Якщо це не так, сталася помилка (%@).</target>
@@ -3737,6 +3807,10 @@ This is your link for group %@!</source>
<target>Тримай</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep conversation" xml:space="preserve">
<source>Keep conversation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep the app open to use it from desktop" xml:space="preserve">
<source>Keep the app open to use it from desktop</source>
<target>Тримайте додаток відкритим, щоб використовувати його з робочого столу</target>
@@ -3912,6 +3986,10 @@ This is your link for group %@!</source>
<target>Максимум 30 секунд, отримується миттєво.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Media &amp; file servers" xml:space="preserve">
<source>Media &amp; file servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Medium" xml:space="preserve">
<source>Medium</source>
<note>blur media</note>
@@ -3996,14 +4074,8 @@ This is your link for group %@!</source>
<source>Message reception</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message routing fallback" xml:space="preserve">
<source>Message routing fallback</source>
<target>Запасний варіант маршрутизації повідомлень</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message routing mode" xml:space="preserve">
<source>Message routing mode</source>
<target>Режим маршрутизації повідомлень</target>
<trans-unit id="Message servers" xml:space="preserve">
<source>Message servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message source remains private." xml:space="preserve">
@@ -4127,6 +4199,10 @@ This is your link for group %@!</source>
<target>Модерується</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>Модерується на</target>
@@ -4202,6 +4278,10 @@ This is your link for group %@!</source>
<target>Стан мережі</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>Новий пароль</target>
@@ -4378,19 +4458,27 @@ This is your link for group %@!</source>
<target>Старий архів бази даних</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>Посилання на одноразове запрошення</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will be required for connection. Requires enabling VPN." xml:space="preserve">
<source>Onion hosts will be required for connection. Requires enabling VPN.</source>
<target>Для підключення будуть потрібні хости onion. Потрібно увімкнути VPN.</target>
<trans-unit id="Onion hosts will be **required** for connection.&#10;Requires compatible VPN." xml:space="preserve">
<source>Onion hosts will be **required** for connection.
Requires compatible VPN.</source>
<target>Для підключення будуть потрібні хости onion.
Потрібно увімкнути VPN.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will be used when available. Requires enabling VPN." xml:space="preserve">
<source>Onion hosts will be used when available. Requires enabling VPN.</source>
<target>Onion хости будуть використовуватися, коли вони будуть доступні. Потрібно увімкнути VPN.</target>
<trans-unit id="Onion hosts will be used when available.&#10;Requires compatible VPN." xml:space="preserve">
<source>Onion hosts will be used when available.
Requires compatible VPN.</source>
<target>Onion хости будуть використовуватися, коли вони будуть доступні.
Потрібно увімкнути VPN.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will not be used." xml:space="preserve">
@@ -4403,6 +4491,10 @@ This is your link for group %@!</source>
<target>Тільки клієнтські пристрої зберігають профілі користувачів, контакти, групи та повідомлення, надіслані за допомогою **2-шарового наскрізного шифрування**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only delete conversation" xml:space="preserve">
<source>Only delete conversation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only group owners can change group preferences." xml:space="preserve">
<source>Only group owners can change group preferences.</source>
<target>Тільки власники груп можуть змінювати налаштування групи.</target>
@@ -4635,6 +4727,10 @@ This is your link for group %@!</source>
<target>Дзвінки "картинка в картинці</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
<source>Please ask your contact to enable sending voice messages.</source>
<target>Будь ласка, попросіть вашого контакту увімкнути відправку голосових повідомлень.</target>
@@ -4929,6 +5025,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Оцініть додаток</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
<source>React…</source>
<target>Реагуй…</target>
@@ -5255,11 +5355,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>Показувати</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Revert" xml:space="preserve">
<source>Revert</source>
<target>Повернутися</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Revoke" xml:space="preserve">
<source>Revoke</source>
<target>Відкликати</target>
@@ -5289,11 +5384,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>SMP server</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SMP servers" xml:space="preserve">
<source>SMP servers</source>
<target>Сервери SMP</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Safely receive files" xml:space="preserve">
<source>Safely receive files</source>
<target>Безпечне отримання файлів</target>
@@ -5324,6 +5414,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Зберегти та повідомити учасників групи</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save and reconnect" xml:space="preserve">
<source>Save and reconnect</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save and update group profile" xml:space="preserve">
<source>Save and update group profile</source>
<target>Збереження та оновлення профілю групи</target>
@@ -5523,11 +5617,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>Надсилання звітів про доставку</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send direct message" xml:space="preserve">
<source>Send direct message</source>
<target>Надішліть пряме повідомлення</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send direct message to connect" xml:space="preserve">
<source>Send direct message to connect</source>
<target>Надішліть пряме повідомлення, щоб підключитися</target>
@@ -5552,6 +5641,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Надіслати живе повідомлення</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send message to enable calls." xml:space="preserve">
<source>Send message to enable calls.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send messages directly when IP address is protected and your or destination server does not support private routing." xml:space="preserve">
<source>Send messages directly when IP address is protected and your or destination server does not support private routing.</source>
<target>Надсилайте повідомлення напряму, якщо IP-адреса захищена, а ваш сервер або сервер призначення не підтримує приватну маршрутизацію.</target>
@@ -5990,11 +6083,19 @@ Enable in *Network &amp; servers* settings.</source>
<source>Soft</source>
<note>blur media</note>
</trans-unit>
<trans-unit id="Some file(s) were not exported:" xml:space="preserve">
<source>Some file(s) were not exported:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import - you may see Chat console for more details." xml:space="preserve">
<source>Some non-fatal errors occurred during import - you may see Chat console for more details.</source>
<target>Під час імпорту виникли деякі нефатальні помилки – ви можете переглянути консоль чату, щоб дізнатися більше.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import:" xml:space="preserve">
<source>Some non-fatal errors occurred during import:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Somebody" xml:space="preserve">
<source>Somebody</source>
<target>Хтось</target>
@@ -6124,6 +6225,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Автентифікація системи</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="TCP connection" xml:space="preserve">
<source>TCP connection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="TCP connection timeout" xml:space="preserve">
<source>TCP connection timeout</source>
<target>Тайм-аут TCP-з'єднання</target>
@@ -6184,11 +6289,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>Натисніть, щоб сканувати</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap to start a new chat" xml:space="preserve">
<source>Tap to start a new chat</source>
<target>Натисніть, щоб почати новий чат</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Temporary file error" xml:space="preserve">
<source>Temporary file error</source>
<note>No comment provided by engineer.</note>
@@ -6657,11 +6757,6 @@ To connect, please ask your contact to create another connection link and check
<target>Оновлення</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update .onion hosts setting?" xml:space="preserve">
<source>Update .onion hosts setting?</source>
<target>Оновити налаштування хостів .onion?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update database passphrase" xml:space="preserve">
<source>Update database passphrase</source>
<target>Оновити парольну фразу бази даних</target>
@@ -6672,9 +6767,8 @@ To connect, please ask your contact to create another connection link and check
<target>Оновити налаштування мережі?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update transport isolation mode?" xml:space="preserve">
<source>Update transport isolation mode?</source>
<target>Оновити режим транспортної ізоляції?</target>
<trans-unit id="Update settings?" xml:space="preserve">
<source>Update settings?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating settings will re-connect the client to all servers." xml:space="preserve">
@@ -6682,11 +6776,6 @@ To connect, please ask your contact to create another connection link and check
<target>Оновлення налаштувань призведе до перепідключення клієнта до всіх серверів.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating this setting will re-connect the client to all servers." xml:space="preserve">
<source>Updating this setting will re-connect the client to all servers.</source>
<target>Оновлення цього параметра призведе до перепідключення клієнта до всіх серверів.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upgrade and open chat" xml:space="preserve">
<source>Upgrade and open chat</source>
<target>Оновлення та відкритий чат</target>
@@ -6784,6 +6873,10 @@ To connect, please ask your contact to create another connection link and check
<target>Використовуйте додаток під час розмови.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use the app with one hand." xml:space="preserve">
<source>Use the app with one hand.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
<source>User profile</source>
<target>Профіль користувача</target>
@@ -6793,11 +6886,6 @@ To connect, please ask your contact to create another connection link and check
<source>User selection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Using .onion hosts requires compatible VPN provider." xml:space="preserve">
<source>Using .onion hosts requires compatible VPN provider.</source>
<target>Для використання хостів .onion потрібен сумісний VPN-провайдер.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Using SimpleX Chat servers." xml:space="preserve">
<source>Using SimpleX Chat servers.</source>
<target>Використання серверів SimpleX Chat.</target>
@@ -7054,11 +7142,6 @@ To connect, please ask your contact to create another connection link and check
<source>XFTP server</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="XFTP servers" xml:space="preserve">
<source>XFTP servers</source>
<target>Сервери XFTP</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You" xml:space="preserve">
<source>You</source>
<target>Ти</target>
@@ -7180,6 +7263,10 @@ Repeat join request?</source>
<target>Тепер ви можете надсилати повідомлення на адресу %@</target>
<note>notification body</note>
</trans-unit>
<trans-unit id="You can send messages to %@ from Archived contacts." xml:space="preserve">
<source>You can send messages to %@ from Archived contacts.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can set lock screen notification preview via settings." xml:space="preserve">
<source>You can set lock screen notification preview via settings.</source>
<target>Ви можете налаштувати попередній перегляд сповіщень на екрані блокування за допомогою налаштувань.</target>
@@ -7205,6 +7292,10 @@ Repeat join request?</source>
<target>Запустити чат можна через Налаштування програми / База даних або перезапустивши програму</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can still view conversation with %@ in the list of chats." xml:space="preserve">
<source>You can still view conversation with %@ in the list of chats.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can turn on SimpleX Lock via Settings." xml:space="preserve">
<source>You can turn on SimpleX Lock via Settings.</source>
<target>Увімкнути SimpleX Lock можна в Налаштуваннях.</target>
@@ -7247,11 +7338,6 @@ Repeat connection request?</source>
Повторити запит на підключення?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You have no chats" xml:space="preserve">
<source>You have no chats</source>
<target>У вас немає чатів</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You have to enter passphrase every time the app starts - it is not stored on the device." xml:space="preserve">
<source>You have to enter passphrase every time the app starts - it is not stored on the device.</source>
<target>Вам доведеться вводити парольну фразу щоразу під час запуску програми - вона не зберігається на пристрої.</target>
@@ -7272,11 +7358,23 @@ Repeat connection request?</source>
<target>Ви приєдналися до цієї групи. Підключення до запрошеного учасника групи.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You may migrate the exported database." xml:space="preserve">
<source>You may migrate the exported database.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You may save the exported archive." xml:space="preserve">
<source>You may save the exported archive.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts." xml:space="preserve">
<source>You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts.</source>
<target>Ви повинні використовувати найновішу версію бази даних чату ТІЛЬКИ на одному пристрої, інакше ви можете перестати отримувати повідомлення від деяких контактів.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to call to be able to call them." xml:space="preserve">
<source>You need to allow your contact to call to be able to call them.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to send voice messages to be able to send them." xml:space="preserve">
<source>You need to allow your contact to send voice messages to be able to send them.</source>
<target>Щоб мати змогу надсилати голосові повідомлення, вам потрібно дозволити контакту надсилати їх.</target>
@@ -7392,13 +7490,6 @@ Repeat connection request?</source>
<target>Ваші профілі чату</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contact needs to be online for the connection to complete.&#10;You can cancel this connection and remove the contact (and try later with a new link)." xml:space="preserve">
<source>Your contact needs to be online for the connection to complete.
You can cancel this connection and remove the contact (and try later with a new link).</source>
<target>Для завершення з'єднання ваш контакт має бути онлайн.
Ви можете скасувати це з'єднання і видалити контакт (і спробувати пізніше з новим посиланням).</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contact sent a file that is larger than currently supported maximum size (%@)." xml:space="preserve">
<source>Your contact sent a file that is larger than currently supported maximum size (%@).</source>
<target>Ваш контакт надіслав файл, розмір якого перевищує підтримуваний на цей момент максимальний розмір (%@).</target>
@@ -7414,6 +7505,10 @@ You can cancel this connection and remove the contact (and try later with a new
<target>Ваші контакти залишаться на зв'язку.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>Ваша поточна база даних чату буде ВИДАЛЕНА і ЗАМІНЕНА імпортованою.</target>
@@ -7590,6 +7685,10 @@ SimpleX servers cannot see your profile.</source>
<target>жирний</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call" xml:space="preserve">
<source>call</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call error" xml:space="preserve">
<source>call error</source>
<target>помилка дзвінка</target>
@@ -7956,6 +8055,10 @@ SimpleX servers cannot see your profile.</source>
<target>запрошення до групи %@</target>
<note>group name</note>
</trans-unit>
<trans-unit id="invite" xml:space="preserve">
<source>invite</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="invited" xml:space="preserve">
<source>invited</source>
<target>запрошені</target>
@@ -8011,6 +8114,10 @@ SimpleX servers cannot see your profile.</source>
<target>з'єднаний</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="message" xml:space="preserve">
<source>message</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="message received" xml:space="preserve">
<source>message received</source>
<target>повідомлення отримано</target>
@@ -8041,6 +8148,10 @@ SimpleX servers cannot see your profile.</source>
<target>місяців</target>
<note>time unit</note>
</trans-unit>
<trans-unit id="mute" xml:space="preserve">
<source>mute</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="never" xml:space="preserve">
<source>never</source>
<target>ніколи</target>
@@ -8171,6 +8282,10 @@ SimpleX servers cannot see your profile.</source>
<target>збережено з %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="search" xml:space="preserve">
<source>search</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="sec" xml:space="preserve">
<source>sec</source>
<target>сек</target>
@@ -8245,8 +8360,8 @@ last received msg: %2$@</source>
<target>невідомий</target>
<note>connection info</note>
</trans-unit>
<trans-unit id="unknown relays" xml:space="preserve">
<source>unknown relays</source>
<trans-unit id="unknown servers" xml:space="preserve">
<source>unknown servers</source>
<target>невідомі реле</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -8255,6 +8370,10 @@ last received msg: %2$@</source>
<target>невідомий статус</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unmute" xml:space="preserve">
<source>unmute</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unprotected" xml:space="preserve">
<source>unprotected</source>
<target>незахищені</target>
@@ -8300,6 +8419,10 @@ last received msg: %2$@</source>
<target>за допомогою ретранслятора</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video" xml:space="preserve">
<source>video</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video call (not e2e encrypted)" xml:space="preserve">
<source>video call (not e2e encrypted)</source>
<target>відеодзвінок (без шифрування e2e)</target>
@@ -8547,10 +8670,6 @@ last received msg: %2$@</source>
<source>Database upgrade required</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Dismiss Sheet" xml:space="preserve">
<source>Dismiss Sheet</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error preparing file" xml:space="preserve">
<source>Error preparing file</source>
<note>No comment provided by engineer.</note>
@@ -8575,10 +8694,6 @@ last received msg: %2$@</source>
<source>Invalid migration confirmation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep Trying" xml:space="preserve">
<source>Keep Trying</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keychain error" xml:space="preserve">
<source>Keychain error</source>
<note>No comment provided by engineer.</note>
@@ -8591,10 +8706,6 @@ last received msg: %2$@</source>
<source>No active profile</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="No network connection" xml:space="preserve">
<source>No network connection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Ok" xml:space="preserve">
<source>Ok</source>
<note>No comment provided by engineer.</note>
@@ -8619,14 +8730,22 @@ last received msg: %2$@</source>
<source>Selected chat preferences prohibit this message.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Sending File" xml:space="preserve">
<source>Sending File</source>
<trans-unit id="Sending a message takes longer than expected." xml:space="preserve">
<source>Sending a message takes longer than expected.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Sending message…" xml:space="preserve">
<source>Sending message…</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share" xml:space="preserve">
<source>Share</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Slow network?" xml:space="preserve">
<source>Slow network?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Unknown database error: %@" xml:space="preserve">
<source>Unknown database error: %@</source>
<note>No comment provided by engineer.</note>
@@ -8635,6 +8754,10 @@ last received msg: %2$@</source>
<source>Unsupported format</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wait" xml:space="preserve">
<source>Wait</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wrong database passphrase" xml:space="preserve">
<source>Wrong database passphrase</source>
<note>No comment provided by engineer.</note>
@@ -381,6 +381,11 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -725,6 +730,10 @@
<target>仅当您的联系人允许时才允许呼叫。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow calls?" xml:space="preserve">
<source>Allow calls?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow disappearing messages only if your contact allows it to you." xml:space="preserve">
<source>Allow disappearing messages only if your contact allows it to you.</source>
<target>仅当您的联系人允许时才允许限时消息。</target>
@@ -911,6 +920,10 @@
<target>存档和上传</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
<source>Archiving database</source>
<target>正在存档数据库</target>
@@ -1098,11 +1111,23 @@
<target>通话</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Calls prohibited!" xml:space="preserve">
<source>Calls prohibited!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Camera not available" xml:space="preserve">
<source>Camera not available</source>
<target>相机不可用</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call contact" xml:space="preserve">
<source>Can't call contact</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call member" xml:space="preserve">
<source>Can't call member</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't invite contact!" xml:space="preserve">
<source>Can't invite contact!</source>
<target>无法邀请联系人!</target>
@@ -1113,6 +1138,10 @@
<target>无法邀请联系人!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't message member" xml:space="preserve">
<source>Can't message member</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel" xml:space="preserve">
<source>Cancel</source>
<target>取消</target>
@@ -1221,6 +1250,10 @@
<target>聊天数据库已删除</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat database exported" xml:space="preserve">
<source>Chat database exported</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat database imported" xml:space="preserve">
<source>Chat database imported</source>
<target>聊天数据库已导入</target>
@@ -1358,6 +1391,10 @@
<target>确认密码</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm contact deletion?" xml:space="preserve">
<source>Confirm contact deletion?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm database upgrades" xml:space="preserve">
<source>Confirm database upgrades</source>
<target>确认数据库升级</target>
@@ -1412,6 +1449,10 @@
<target>连接到桌面</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
<source>Connect to yourself?</source>
<target>连接到你自己?</target>
@@ -1477,6 +1518,10 @@ This is your own one-time link!</source>
<target>连接服务器中……(错误:%@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to contact, please wait or check later!" xml:space="preserve">
<source>Connecting to contact, please wait or check later!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to desktop" xml:space="preserve">
<source>Connecting to desktop</source>
<target>正连接到桌面</target>
@@ -1487,6 +1532,10 @@ This is your own one-time link!</source>
<target>连接</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection and servers status." xml:space="preserve">
<source>Connection and servers status.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection error" xml:space="preserve">
<source>Connection error</source>
<target>连接错误</target>
@@ -1534,6 +1583,10 @@ This is your own one-time link!</source>
<target>联系人已存在</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact deleted!" xml:space="preserve">
<source>Contact deleted!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact hidden:" xml:space="preserve">
<source>Contact hidden:</source>
<target>联系人已隐藏:</target>
@@ -1544,9 +1597,8 @@ This is your own one-time link!</source>
<target>联系已连接</target>
<note>notification</note>
</trans-unit>
<trans-unit id="Contact is not connected yet!" xml:space="preserve">
<source>Contact is not connected yet!</source>
<target>联系人尚未连接!</target>
<trans-unit id="Contact is deleted." xml:space="preserve">
<source>Contact is deleted.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact name" xml:space="preserve">
@@ -1559,6 +1611,10 @@ This is your own one-time link!</source>
<target>联系人偏好设置</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact will be deleted - this cannot be undone!" xml:space="preserve">
<source>Contact will be deleted - this cannot be undone!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contacts" xml:space="preserve">
<source>Contacts</source>
<target>联系人</target>
@@ -1574,6 +1630,14 @@ This is your own one-time link!</source>
<target>继续</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Copy" xml:space="preserve">
<source>Copy</source>
<target>复制</target>
@@ -1847,11 +1911,6 @@ This is your own one-time link!</source>
<source>Delete %lld messages?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete Contact" xml:space="preserve">
<source>Delete Contact</source>
<target>删除联系人</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete address" xml:space="preserve">
<source>Delete address</source>
<target>删除地址</target>
@@ -1907,9 +1966,8 @@ This is your own one-time link!</source>
<target>删除联系人</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete contact?&#10;This cannot be undone!" xml:space="preserve">
<source>Delete contact?
This cannot be undone!</source>
<trans-unit id="Delete contact?" xml:space="preserve">
<source>Delete contact?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database" xml:space="preserve">
@@ -2002,11 +2060,6 @@ This cannot be undone!</source>
<target>删除旧数据库吗?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete pending connection" xml:space="preserve">
<source>Delete pending connection</source>
<target>删除挂起连接</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete pending connection?" xml:space="preserve">
<source>Delete pending connection?</source>
<target>删除待定连接?</target>
@@ -2022,11 +2075,19 @@ This cannot be undone!</source>
<target>删除队列</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Delete up to 20 messages at once." xml:space="preserve">
<source>Delete up to 20 messages at once.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete user profile?" xml:space="preserve">
<source>Delete user profile?</source>
<target>删除用户资料?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete without notification" xml:space="preserve">
<source>Delete without notification</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deleted" xml:space="preserve">
<source>Deleted</source>
<note>No comment provided by engineer.</note>
@@ -2041,6 +2102,10 @@ This cannot be undone!</source>
<target>已删除于:%@</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<note>No comment provided by engineer.</note>
@@ -2104,6 +2169,10 @@ This cannot be undone!</source>
<target>开发</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer options" xml:space="preserve">
<source>Developer options</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer tools" xml:space="preserve">
<source>Developer tools</source>
<target>开发者工具</target>
@@ -2603,11 +2672,6 @@ This cannot be undone!</source>
<target>删除连接错误</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error deleting contact" xml:space="preserve">
<source>Error deleting contact</source>
<target>删除联系人错误</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error deleting database" xml:space="preserve">
<source>Error deleting database</source>
<target>删除数据库错误</target>
@@ -2837,6 +2901,10 @@ This cannot be undone!</source>
<target>即使在对话中被禁用。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>退出而不保存</target>
@@ -3628,6 +3696,10 @@ Error: %2$@</source>
3.连接被破坏。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It protects your IP address and connections." xml:space="preserve">
<source>It protects your IP address and connections.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It seems like you are already connected via this link. If it is not the case, there was an error (%@)." xml:space="preserve">
<source>It seems like you are already connected via this link. If it is not the case, there was an error (%@).</source>
<target>您似乎已经通过此链接连接。如果不是这样,则有一个错误 (%@)。</target>
@@ -3687,6 +3759,10 @@ This is your link for group %@!</source>
<target>保留</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep conversation" xml:space="preserve">
<source>Keep conversation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep the app open to use it from desktop" xml:space="preserve">
<source>Keep the app open to use it from desktop</source>
<note>No comment provided by engineer.</note>
@@ -3861,6 +3937,10 @@ This is your link for group %@!</source>
<target>最长30秒,立即接收。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Media &amp; file servers" xml:space="preserve">
<source>Media &amp; file servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Medium" xml:space="preserve">
<source>Medium</source>
<note>blur media</note>
@@ -3943,12 +4023,8 @@ This is your link for group %@!</source>
<source>Message reception</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message routing fallback" xml:space="preserve">
<source>Message routing fallback</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message routing mode" xml:space="preserve">
<source>Message routing mode</source>
<trans-unit id="Message servers" xml:space="preserve">
<source>Message servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message source remains private." xml:space="preserve">
@@ -4069,6 +4145,10 @@ This is your link for group %@!</source>
<target>管理员移除</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>已被管理员移除于</target>
@@ -4143,6 +4223,10 @@ This is your link for group %@!</source>
<target>网络状态</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>新密码</target>
@@ -4319,18 +4403,24 @@ This is your link for group %@!</source>
<target>旧数据库存档</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>一次性邀请链接</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will be required for connection. Requires enabling VPN." xml:space="preserve">
<source>Onion hosts will be required for connection. Requires enabling VPN.</source>
<trans-unit id="Onion hosts will be **required** for connection.&#10;Requires compatible VPN." xml:space="preserve">
<source>Onion hosts will be **required** for connection.
Requires compatible VPN.</source>
<target>Onion 主机将用于连接。需要启用 VPN。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Onion hosts will be used when available. Requires enabling VPN." xml:space="preserve">
<source>Onion hosts will be used when available. Requires enabling VPN.</source>
<trans-unit id="Onion hosts will be used when available.&#10;Requires compatible VPN." xml:space="preserve">
<source>Onion hosts will be used when available.
Requires compatible VPN.</source>
<target>当可用时,将使用 Onion 主机。需要启用 VPN。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -4344,6 +4434,10 @@ This is your link for group %@!</source>
<target>只有客户端设备存储用户资料、联系人、群组和**双层端到端加密**发送的消息。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only delete conversation" xml:space="preserve">
<source>Only delete conversation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only group owners can change group preferences." xml:space="preserve">
<source>Only group owners can change group preferences.</source>
<target>只有群主可以改变群组偏好设置。</target>
@@ -4573,6 +4667,10 @@ This is your link for group %@!</source>
<target>画中画通话</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
<source>Please ask your contact to enable sending voice messages.</source>
<target>请让您的联系人启用发送语音消息。</target>
@@ -4856,6 +4954,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>评价此应用程序</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
<source>React…</source>
<target>回应…</target>
@@ -5181,11 +5283,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>揭示</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Revert" xml:space="preserve">
<source>Revert</source>
<target>恢复</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Revoke" xml:space="preserve">
<source>Revoke</source>
<target>撤销</target>
@@ -5215,11 +5312,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>SMP server</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SMP servers" xml:space="preserve">
<source>SMP servers</source>
<target>SMP 服务器</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Safely receive files" xml:space="preserve">
<source>Safely receive files</source>
<note>No comment provided by engineer.</note>
@@ -5249,6 +5341,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>保存并通知群组成员</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save and reconnect" xml:space="preserve">
<source>Save and reconnect</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save and update group profile" xml:space="preserve">
<source>Save and update group profile</source>
<target>保存和更新组配置文件</target>
@@ -5448,11 +5544,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>将送达回执发送给</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send direct message" xml:space="preserve">
<source>Send direct message</source>
<target>发送私信</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send direct message to connect" xml:space="preserve">
<source>Send direct message to connect</source>
<target>发送私信来连接</target>
@@ -5477,6 +5568,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>发送实时消息</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send message to enable calls." xml:space="preserve">
<source>Send message to enable calls.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send messages directly when IP address is protected and your or destination server does not support private routing." xml:space="preserve">
<source>Send messages directly when IP address is protected and your or destination server does not support private routing.</source>
<note>No comment provided by engineer.</note>
@@ -5909,11 +6004,19 @@ Enable in *Network &amp; servers* settings.</source>
<source>Soft</source>
<note>blur media</note>
</trans-unit>
<trans-unit id="Some file(s) were not exported:" xml:space="preserve">
<source>Some file(s) were not exported:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import - you may see Chat console for more details." xml:space="preserve">
<source>Some non-fatal errors occurred during import - you may see Chat console for more details.</source>
<target>导入过程中发生了一些非致命错误——您可以查看聊天控制台了解更多详细信息。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import:" xml:space="preserve">
<source>Some non-fatal errors occurred during import:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Somebody" xml:space="preserve">
<source>Somebody</source>
<target>某人</target>
@@ -6043,6 +6146,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>系统验证</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="TCP connection" xml:space="preserve">
<source>TCP connection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="TCP connection timeout" xml:space="preserve">
<source>TCP connection timeout</source>
<target>TCP 连接超时</target>
@@ -6103,11 +6210,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>轻按扫描</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap to start a new chat" xml:space="preserve">
<source>Tap to start a new chat</source>
<target>点击开始一个新聊天</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Temporary file error" xml:space="preserve">
<source>Temporary file error</source>
<note>No comment provided by engineer.</note>
@@ -6572,11 +6674,6 @@ To connect, please ask your contact to create another connection link and check
<target>更新</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update .onion hosts setting?" xml:space="preserve">
<source>Update .onion hosts setting?</source>
<target>更新 .onion 主机设置?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update database passphrase" xml:space="preserve">
<source>Update database passphrase</source>
<target>更新数据库密码</target>
@@ -6587,9 +6684,8 @@ To connect, please ask your contact to create another connection link and check
<target>更新网络设置?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Update transport isolation mode?" xml:space="preserve">
<source>Update transport isolation mode?</source>
<target>更新传输隔离模式?</target>
<trans-unit id="Update settings?" xml:space="preserve">
<source>Update settings?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating settings will re-connect the client to all servers." xml:space="preserve">
@@ -6597,11 +6693,6 @@ To connect, please ask your contact to create another connection link and check
<target>更新设置会将客户端重新连接到所有服务器。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating this setting will re-connect the client to all servers." xml:space="preserve">
<source>Updating this setting will re-connect the client to all servers.</source>
<target>更新此设置将重新连接客户端到所有服务器。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upgrade and open chat" xml:space="preserve">
<source>Upgrade and open chat</source>
<target>升级并打开聊天</target>
@@ -6696,6 +6787,10 @@ To connect, please ask your contact to create another connection link and check
<target>通话时使用本应用</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use the app with one hand." xml:space="preserve">
<source>Use the app with one hand.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
<source>User profile</source>
<target>用户资料</target>
@@ -6705,11 +6800,6 @@ To connect, please ask your contact to create another connection link and check
<source>User selection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Using .onion hosts requires compatible VPN provider." xml:space="preserve">
<source>Using .onion hosts requires compatible VPN provider.</source>
<target>使用 .onion 主机需要兼容的 VPN 提供商。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Using SimpleX Chat servers." xml:space="preserve">
<source>Using SimpleX Chat servers.</source>
<target>使用 SimpleX Chat 服务器。</target>
@@ -6962,11 +7052,6 @@ To connect, please ask your contact to create another connection link and check
<source>XFTP server</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="XFTP servers" xml:space="preserve">
<source>XFTP servers</source>
<target>XFTP 服务器</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You" xml:space="preserve">
<source>You</source>
<target>您</target>
@@ -7081,6 +7166,10 @@ Repeat join request?</source>
<target>您现在可以给 %@ 发送消息</target>
<note>notification body</note>
</trans-unit>
<trans-unit id="You can send messages to %@ from Archived contacts." xml:space="preserve">
<source>You can send messages to %@ from Archived contacts.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can set lock screen notification preview via settings." xml:space="preserve">
<source>You can set lock screen notification preview via settings.</source>
<target>您可以通过设置来设置锁屏通知预览。</target>
@@ -7106,6 +7195,10 @@ Repeat join request?</source>
<target>您可以通过应用程序设置/数据库或重新启动应用程序开始聊天</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can still view conversation with %@ in the list of chats." xml:space="preserve">
<source>You can still view conversation with %@ in the list of chats.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can turn on SimpleX Lock via Settings." xml:space="preserve">
<source>You can turn on SimpleX Lock via Settings.</source>
<target>您可以通过设置开启 SimpleX 锁定。</target>
@@ -7146,11 +7239,6 @@ Repeat join request?</source>
Repeat connection request?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You have no chats" xml:space="preserve">
<source>You have no chats</source>
<target>您没有聊天记录</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You have to enter passphrase every time the app starts - it is not stored on the device." xml:space="preserve">
<source>You have to enter passphrase every time the app starts - it is not stored on the device.</source>
<target>您必须在每次应用程序启动时输入密码——它不存储在设备上。</target>
@@ -7171,11 +7259,23 @@ Repeat connection request?</source>
<target>你加入了这个群组。连接到邀请组成员。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You may migrate the exported database." xml:space="preserve">
<source>You may migrate the exported database.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You may save the exported archive." xml:space="preserve">
<source>You may save the exported archive.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts." xml:space="preserve">
<source>You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts.</source>
<target>您只能在一台设备上使用最新版本的聊天数据库,否则您可能会停止接收来自某些联系人的消息。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to call to be able to call them." xml:space="preserve">
<source>You need to allow your contact to call to be able to call them.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to send voice messages to be able to send them." xml:space="preserve">
<source>You need to allow your contact to send voice messages to be able to send them.</source>
<target>您需要允许您的联系人发送语音消息,以便您能够发送语音消息。</target>
@@ -7290,13 +7390,6 @@ Repeat connection request?</source>
<target>您的聊天资料</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contact needs to be online for the connection to complete.&#10;You can cancel this connection and remove the contact (and try later with a new link)." xml:space="preserve">
<source>Your contact needs to be online for the connection to complete.
You can cancel this connection and remove the contact (and try later with a new link).</source>
<target>您的联系人需要在线才能完成连接。
您可以取消此连接并删除联系人(然后尝试使用新链接)。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contact sent a file that is larger than currently supported maximum size (%@)." xml:space="preserve">
<source>Your contact sent a file that is larger than currently supported maximum size (%@).</source>
<target>您的联系人发送的文件大于当前支持的最大大小 (%@)。</target>
@@ -7312,6 +7405,10 @@ You can cancel this connection and remove the contact (and try later with a new
<target>与您的联系人保持连接。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>您当前的聊天数据库将被删除并替换为导入的数据库。</target>
@@ -7486,6 +7583,10 @@ SimpleX 服务器无法看到您的资料。</target>
<target>加粗</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call" xml:space="preserve">
<source>call</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call error" xml:space="preserve">
<source>call error</source>
<target>通话错误</target>
@@ -7851,6 +7952,10 @@ SimpleX 服务器无法看到您的资料。</target>
<target>邀请您加入群组 %@</target>
<note>group name</note>
</trans-unit>
<trans-unit id="invite" xml:space="preserve">
<source>invite</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="invited" xml:space="preserve">
<source>invited</source>
<target>已邀请</target>
@@ -7905,6 +8010,10 @@ SimpleX 服务器无法看到您的资料。</target>
<target>已连接</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="message" xml:space="preserve">
<source>message</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="message received" xml:space="preserve">
<source>message received</source>
<target>消息已收到</target>
@@ -7935,6 +8044,10 @@ SimpleX 服务器无法看到您的资料。</target>
<target>月</target>
<note>time unit</note>
</trans-unit>
<trans-unit id="mute" xml:space="preserve">
<source>mute</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="never" xml:space="preserve">
<source>never</source>
<target>从不</target>
@@ -8064,6 +8177,10 @@ SimpleX 服务器无法看到您的资料。</target>
<source>saved from %@</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="search" xml:space="preserve">
<source>search</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="sec" xml:space="preserve">
<source>sec</source>
<target>秒</target>
@@ -8134,8 +8251,8 @@ last received msg: %2$@</source>
<target>未知</target>
<note>connection info</note>
</trans-unit>
<trans-unit id="unknown relays" xml:space="preserve">
<source>unknown relays</source>
<trans-unit id="unknown servers" xml:space="preserve">
<source>unknown servers</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unknown status" xml:space="preserve">
@@ -8143,6 +8260,10 @@ last received msg: %2$@</source>
<target>未知状态</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unmute" xml:space="preserve">
<source>unmute</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unprotected" xml:space="preserve">
<source>unprotected</source>
<note>No comment provided by engineer.</note>
@@ -8186,6 +8307,10 @@ last received msg: %2$@</source>
<target>通过中继</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video" xml:space="preserve">
<source>video</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video call (not e2e encrypted)" xml:space="preserve">
<source>video call (not e2e encrypted)</source>
<target>视频通话(非端到端加密)</target>
@@ -8429,10 +8554,6 @@ last received msg: %2$@</source>
<source>Database upgrade required</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Dismiss Sheet" xml:space="preserve">
<source>Dismiss Sheet</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error preparing file" xml:space="preserve">
<source>Error preparing file</source>
<note>No comment provided by engineer.</note>
@@ -8457,10 +8578,6 @@ last received msg: %2$@</source>
<source>Invalid migration confirmation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep Trying" xml:space="preserve">
<source>Keep Trying</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keychain error" xml:space="preserve">
<source>Keychain error</source>
<note>No comment provided by engineer.</note>
@@ -8473,10 +8590,6 @@ last received msg: %2$@</source>
<source>No active profile</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="No network connection" xml:space="preserve">
<source>No network connection</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Ok" xml:space="preserve">
<source>Ok</source>
<note>No comment provided by engineer.</note>
@@ -8501,14 +8614,22 @@ last received msg: %2$@</source>
<source>Selected chat preferences prohibit this message.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Sending File" xml:space="preserve">
<source>Sending File</source>
<trans-unit id="Sending a message takes longer than expected." xml:space="preserve">
<source>Sending a message takes longer than expected.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Sending message…" xml:space="preserve">
<source>Sending message…</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share" xml:space="preserve">
<source>Share</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Slow network?" xml:space="preserve">
<source>Slow network?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Unknown database error: %@" xml:space="preserve">
<source>Unknown database error: %@</source>
<note>No comment provided by engineer.</note>
@@ -8517,6 +8638,10 @@ last received msg: %2$@</source>
<source>Unsupported format</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wait" xml:space="preserve">
<source>Wait</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wrong database passphrase" xml:space="preserve">
<source>Wrong database passphrase</source>
<note>No comment provided by engineer.</note>
+6 -6
View File
@@ -29,6 +29,7 @@ class ShareModel: ObservableObject {
@Published var errorAlert: ErrorAlert?
@Published var hasSimplexLink = false
@Published var alertRequiresPassword = false
var networkTimeout = CFAbsoluteTimeGetCurrent()
enum BottomBar {
case sendButton
@@ -148,7 +149,7 @@ class ShareModel: ObservableObject {
if selected.chatInfo.chatType == .local {
completion()
} else {
await MainActor.run { self.bottomBar = .loadingBar(progress: .zero) }
await MainActor.run { self.bottomBar = .loadingBar(progress: 0) }
if let e = await handleEvents(
isGroupChat: ci.chatInfo.chatType == .group,
isWithoutFile: sharedContent.cryptoFile == nil,
@@ -290,14 +291,13 @@ class ShareModel: ObservableObject {
CompletionHandler.isEventLoopEnabled = true
let ch = CompletionHandler()
if isWithoutFile { await ch.completeFile() }
var networkTimeout = CFAbsoluteTimeGetCurrent()
networkTimeout = CFAbsoluteTimeGetCurrent()
while await ch.isRunning {
if CFAbsoluteTimeGetCurrent() - networkTimeout > 30 {
networkTimeout = CFAbsoluteTimeGetCurrent()
await MainActor.run {
self.errorAlert = ErrorAlert(title: "No network connection") {
Button("Keep Trying", role: .cancel) { }
Button("Dismiss Sheet", role: .destructive) { self.completion() }
self.errorAlert = ErrorAlert(title: "Slow network?", message: "Sending a message takes longer than expected.") {
Button("Wait", role: .cancel) { self.networkTimeout = CFAbsoluteTimeGetCurrent() }
Button("Cancel", role: .destructive) { self.completion() }
}
}
}
+2 -2
View File
@@ -85,7 +85,7 @@ struct ShareView: View {
}
private func compose(isLoading: Bool) -> some View {
VStack(spacing: .zero) {
VStack(spacing: 0) {
Divider()
if let content = model.sharedContent {
itemPreview(content)
@@ -179,7 +179,7 @@ struct ShareView: View {
private func loadingBar(progress: Double) -> some View {
VStack {
Text("Sending File")
Text("Sending message…")
ProgressView(value: progress)
}
.padding()
@@ -1,7 +1,9 @@
/*
InfoPlist.strings
SimpleX
/* Bundle display name */
"CFBundleDisplayName" = "SimpleX SE";
/* Bundle name */
"CFBundleName" = "SimpleX SE";
/* Copyright (human-readable) */
"NSHumanReadableCopyright" = "Copyright © 2024 SimpleX Chat. Alle Rechte vorbehalten.";
Created by EP on 30/07/2024.
Copyright © 2024 SimpleX Chat. All rights reserved.
*/
@@ -1,7 +1,111 @@
/*
Localizable.strings
SimpleX
/* No comment provided by engineer. */
"%@" = "%@";
/* No comment provided by engineer. */
"App is locked!" = "Die App ist gesperrt!";
/* No comment provided by engineer. */
"Cancel" = "Abbrechen";
/* No comment provided by engineer. */
"Cannot access keychain to save database password" = "Es ist nicht möglich, auf den Schlüsselbund zuzugreifen, um das Datenbankpasswort zu speichern";
/* No comment provided by engineer. */
"Cannot forward message" = "Nachricht kann nicht weitergeleitet werden";
/* No comment provided by engineer. */
"Comment" = "Kommentieren";
/* No comment provided by engineer. */
"Currently maximum supported file size is %@." = "Die maximale erlaubte Dateigröße beträgt aktuell %@.";
/* No comment provided by engineer. */
"Database downgrade required" = "Datenbank-Herabstufung erforderlich";
/* No comment provided by engineer. */
"Database encrypted!" = "Datenbank verschlüsselt!";
/* No comment provided by engineer. */
"Database error" = "Datenbankfehler";
/* No comment provided by engineer. */
"Database passphrase is different from saved in the keychain." = "Das Datenbank-Passwort unterscheidet sich vom im Schlüsselbund gespeicherten.";
/* No comment provided by engineer. */
"Database passphrase is required to open chat." = "Ein Datenbank-Passwort ist erforderlich, um den Chat zu öffnen.";
/* No comment provided by engineer. */
"Database upgrade required" = "Datenbank-Aktualisierung erforderlich";
/* No comment provided by engineer. */
"Error preparing file" = "Fehler beim Vorbereiten der Datei";
/* No comment provided by engineer. */
"Error preparing message" = "Fehler beim Vorbereiten der Nachricht";
/* No comment provided by engineer. */
"Error: %@" = "Fehler: %@";
/* No comment provided by engineer. */
"File error" = "Dateifehler";
/* No comment provided by engineer. */
"Incompatible database version" = "Datenbank-Version nicht kompatibel";
/* No comment provided by engineer. */
"Invalid migration confirmation" = "Migrations-Bestätigung ungültig";
/* No comment provided by engineer. */
"Keychain error" = "Schlüsselbund-Fehler";
/* No comment provided by engineer. */
"Large file!" = "Große Datei!";
/* No comment provided by engineer. */
"No active profile" = "Kein aktives Profil";
/* No comment provided by engineer. */
"Ok" = "OK";
/* No comment provided by engineer. */
"Open the app to downgrade the database." = "Öffne die App, um die Datenbank herabzustufen.";
/* No comment provided by engineer. */
"Open the app to upgrade the database." = "Öffne die App, um die Datenbank zu aktualisieren.";
/* No comment provided by engineer. */
"Passphrase" = "Passwort";
/* No comment provided by engineer. */
"Please create a profile in the SimpleX app" = "Bitte erstelle ein Profil in der SimpleX-App";
/* No comment provided by engineer. */
"Selected chat preferences prohibit this message." = "Diese Nachricht ist wegen der gewählten Chat-Einstellungen nicht erlaubt.";
/* No comment provided by engineer. */
"Sending a message takes longer than expected." = "Das Senden einer Nachricht dauert länger als erwartet.";
/* No comment provided by engineer. */
"Sending message…" = "Nachricht wird gesendet…";
/* No comment provided by engineer. */
"Share" = "Teilen";
/* No comment provided by engineer. */
"Slow network?" = "Langsames Netzwerk?";
/* No comment provided by engineer. */
"Unknown database error: %@" = "Unbekannter Datenbankfehler: %@";
/* No comment provided by engineer. */
"Unsupported format" = "Nicht unterstütztes Format";
/* No comment provided by engineer. */
"Wait" = "Warten";
/* No comment provided by engineer. */
"Wrong database passphrase" = "Falsches Datenbank-Passwort";
/* No comment provided by engineer. */
"You can allow sharing in Privacy & Security / SimpleX Lock settings." = "Du kannst das Teilen in den Einstellungen zu Datenschutz & Sicherheit bzw. SimpleX-Sperre erlauben.";
Created by EP on 30/07/2024.
Copyright © 2024 SimpleX Chat. All rights reserved.
*/
@@ -1,7 +1,9 @@
/*
InfoPlist.strings
SimpleX
/* Bundle display name */
"CFBundleDisplayName" = "SimpleX SE";
/* Bundle name */
"CFBundleName" = "SimpleX SE";
/* Copyright (human-readable) */
"NSHumanReadableCopyright" = "Copyright © 2024 SimpleX Chat. Tous droits réservés.";
Created by EP on 30/07/2024.
Copyright © 2024 SimpleX Chat. All rights reserved.
*/
@@ -1,7 +1,99 @@
/*
Localizable.strings
SimpleX
/* No comment provided by engineer. */
"%@" = "%@";
/* No comment provided by engineer. */
"App is locked!" = "L'app est verrouillée!";
/* No comment provided by engineer. */
"Cancel" = "Annuler";
/* No comment provided by engineer. */
"Cannot access keychain to save database password" = "Impossible d'accéder à la keychain pour enregistrer le mot de passe de la base de données";
/* No comment provided by engineer. */
"Cannot forward message" = "Impossible de transférer le message";
/* No comment provided by engineer. */
"Comment" = "Commenter";
/* No comment provided by engineer. */
"Currently maximum supported file size is %@." = "Actuellement, la taille maximale des fichiers supportés est de %@.";
/* No comment provided by engineer. */
"Database downgrade required" = "Mise à jour de la base de données nécessaire";
/* No comment provided by engineer. */
"Database encrypted!" = "Base de données chiffrée!";
/* No comment provided by engineer. */
"Database error" = "Erreur de base de données";
/* No comment provided by engineer. */
"Database passphrase is different from saved in the keychain." = "La phrase secrète de la base de données est différente de celle enregistrée dans la keychain.";
/* No comment provided by engineer. */
"Database passphrase is required to open chat." = "La phrase secrète de la base de données est nécessaire pour ouvrir le chat.";
/* No comment provided by engineer. */
"Database upgrade required" = "Mise à niveau de la base de données nécessaire";
/* No comment provided by engineer. */
"Error preparing file" = "Erreur lors de la préparation du fichier";
/* No comment provided by engineer. */
"Error preparing message" = "Erreur lors de la préparation du message";
/* No comment provided by engineer. */
"Error: %@" = "Erreur: %@";
/* No comment provided by engineer. */
"File error" = "Erreur de fichier";
/* No comment provided by engineer. */
"Incompatible database version" = "Version de la base de données incompatible";
/* No comment provided by engineer. */
"Invalid migration confirmation" = "Confirmation de migration invalide";
/* No comment provided by engineer. */
"Keychain error" = "Erreur de la keychain";
/* No comment provided by engineer. */
"Large file!" = "Fichier trop lourd!";
/* No comment provided by engineer. */
"No active profile" = "Pas de profil actif";
/* No comment provided by engineer. */
"Ok" = "Ok";
/* No comment provided by engineer. */
"Open the app to downgrade the database." = "Ouvrez l'app pour rétrograder la base de données.";
/* No comment provided by engineer. */
"Open the app to upgrade the database." = "Ouvrez l'app pour mettre à jour la base de données.";
/* No comment provided by engineer. */
"Passphrase" = "Phrase secrète";
/* No comment provided by engineer. */
"Please create a profile in the SimpleX app" = "Veuillez créer un profil dans l'app SimpleX";
/* No comment provided by engineer. */
"Selected chat preferences prohibit this message." = "Les paramètres de chat sélectionnés ne permettent pas l'envoi de ce message.";
/* No comment provided by engineer. */
"Share" = "Partager";
/* No comment provided by engineer. */
"Unknown database error: %@" = "Erreur inconnue de la base de données: %@";
/* No comment provided by engineer. */
"Unsupported format" = "Format non pris en charge";
/* No comment provided by engineer. */
"Wrong database passphrase" = "Mauvaise phrase secrète pour la base de données";
/* No comment provided by engineer. */
"You can allow sharing in Privacy & Security / SimpleX Lock settings." = "Vous pouvez autoriser le partage dans les paramètres Confidentialité et sécurité / SimpleX Lock.";
Created by EP on 30/07/2024.
Copyright © 2024 SimpleX Chat. All rights reserved.
*/
@@ -1,7 +1,9 @@
/*
InfoPlist.strings
SimpleX
/* Bundle display name */
"CFBundleDisplayName" = "SimpleX SE";
/* Bundle name */
"CFBundleName" = "SimpleX SE";
/* Copyright (human-readable) */
"NSHumanReadableCopyright" = "Copyright © 2024 SimpleX Chat. Minden jog fenntartva.";
Created by EP on 30/07/2024.
Copyright © 2024 SimpleX Chat. All rights reserved.
*/
@@ -1,7 +1,111 @@
/*
Localizable.strings
SimpleX
/* No comment provided by engineer. */
"%@" = "%@";
/* No comment provided by engineer. */
"App is locked!" = "Az alkalmazás zárolva!";
/* No comment provided by engineer. */
"Cancel" = "Mégse";
/* No comment provided by engineer. */
"Cannot access keychain to save database password" = "Nem lehet hozzáférni a kulcstartóhoz az adatbázis jelszavának mentéséhez";
/* No comment provided by engineer. */
"Cannot forward message" = "Nem lehet továbbítani az üzenetet";
/* No comment provided by engineer. */
"Comment" = "Hozzászólás";
/* No comment provided by engineer. */
"Currently maximum supported file size is %@." = "Jelenleg a maximális támogatott fájlméret %@.";
/* No comment provided by engineer. */
"Database downgrade required" = "Adatbázis visszafejlesztése szükséges";
/* No comment provided by engineer. */
"Database encrypted!" = "Adatbázis titkosítva!";
/* No comment provided by engineer. */
"Database error" = "Adatbázis hiba";
/* No comment provided by engineer. */
"Database passphrase is different from saved in the keychain." = "Az adatbázis jelmondata eltér a kulcstartóban lévőtől.";
/* No comment provided by engineer. */
"Database passphrase is required to open chat." = "Adatbázis jelmondat szükséges a csevegés megnyitásához.";
/* No comment provided by engineer. */
"Database upgrade required" = "Adatbázis fejlesztése szükséges";
/* No comment provided by engineer. */
"Error preparing file" = "Hiba a fájl előkészítésekor";
/* No comment provided by engineer. */
"Error preparing message" = "Hiba az üzenet előkészítésekor";
/* No comment provided by engineer. */
"Error: %@" = "Hiba: %@";
/* No comment provided by engineer. */
"File error" = "Fájlhiba";
/* No comment provided by engineer. */
"Incompatible database version" = "Nem kompatibilis adatbázis verzió";
/* No comment provided by engineer. */
"Invalid migration confirmation" = "Érvénytelen átköltöztetési visszaigazolás";
/* No comment provided by engineer. */
"Keychain error" = "Kulcstartó hiba";
/* No comment provided by engineer. */
"Large file!" = "Nagy fájl!";
/* No comment provided by engineer. */
"No active profile" = "Nincs aktív profil";
/* No comment provided by engineer. */
"Ok" = "Rendben";
/* No comment provided by engineer. */
"Open the app to downgrade the database." = "Nyissa meg az alkalmazást az adatbázis visszafejlesztéséhez.";
/* No comment provided by engineer. */
"Open the app to upgrade the database." = "Nyissa meg az alkalmazást az adatbázis fejlesztéséhez.";
/* No comment provided by engineer. */
"Passphrase" = "Jelmondat";
/* No comment provided by engineer. */
"Please create a profile in the SimpleX app" = "Hozzon létre egy profilt a SimpleX alkalmazásban";
/* No comment provided by engineer. */
"Selected chat preferences prohibit this message." = "A kiválasztott csevegési beállítások tiltják ezt az üzenetet.";
/* No comment provided by engineer. */
"Sending a message takes longer than expected." = "Az üzenet elküldése a vártnál tovább tart.";
/* No comment provided by engineer. */
"Sending message…" = "Üzenet küldése…";
/* No comment provided by engineer. */
"Share" = "Megosztás";
/* No comment provided by engineer. */
"Slow network?" = "Lassú internetkapcsolat?";
/* No comment provided by engineer. */
"Unknown database error: %@" = "Ismeretlen adatbázis hiba: %@";
/* No comment provided by engineer. */
"Unsupported format" = "Nem támogatott formátum";
/* No comment provided by engineer. */
"Wait" = "Várjon";
/* No comment provided by engineer. */
"Wrong database passphrase" = "Hibás adatbázis jelmondat";
/* No comment provided by engineer. */
"You can allow sharing in Privacy & Security / SimpleX Lock settings." = "A megosztást az Adatvédelem és biztonság / SimpleX zár menüpontban engedélyezheti.";
Created by EP on 30/07/2024.
Copyright © 2024 SimpleX Chat. All rights reserved.
*/
@@ -1,7 +1,9 @@
/*
InfoPlist.strings
SimpleX
/* Bundle display name */
"CFBundleDisplayName" = "SimpleX SE";
/* Bundle name */
"CFBundleName" = "SimpleX SE";
/* Copyright (human-readable) */
"NSHumanReadableCopyright" = "Copyright © 2024 SimpleX Chat. Tutti i diritti riservati.";
Created by EP on 30/07/2024.
Copyright © 2024 SimpleX Chat. All rights reserved.
*/
@@ -1,7 +1,111 @@
/*
Localizable.strings
SimpleX
/* No comment provided by engineer. */
"%@" = "%@";
/* No comment provided by engineer. */
"App is locked!" = "L'app è bloccata!";
/* No comment provided by engineer. */
"Cancel" = "Annulla";
/* No comment provided by engineer. */
"Cannot access keychain to save database password" = "Impossibile accedere al portachiavi per salvare la password del database";
/* No comment provided by engineer. */
"Cannot forward message" = "Impossibile inoltrare il messaggio";
/* No comment provided by engineer. */
"Comment" = "Commento";
/* No comment provided by engineer. */
"Currently maximum supported file size is %@." = "Attualmente la dimensione massima supportata è di %@.";
/* No comment provided by engineer. */
"Database downgrade required" = "Downgrade del database necessario";
/* No comment provided by engineer. */
"Database encrypted!" = "Database crittografato!";
/* No comment provided by engineer. */
"Database error" = "Errore del database";
/* No comment provided by engineer. */
"Database passphrase is different from saved in the keychain." = "La password del database è diversa da quella salvata nel portachiavi.";
/* No comment provided by engineer. */
"Database passphrase is required to open chat." = "La password del database è necessaria per aprire la chat.";
/* No comment provided by engineer. */
"Database upgrade required" = "Aggiornamento del database necessario";
/* No comment provided by engineer. */
"Error preparing file" = "Errore nella preparazione del file";
/* No comment provided by engineer. */
"Error preparing message" = "Errore nella preparazione del messaggio";
/* No comment provided by engineer. */
"Error: %@" = "Errore: %@";
/* No comment provided by engineer. */
"File error" = "Errore del file";
/* No comment provided by engineer. */
"Incompatible database version" = "Versione del database incompatibile";
/* No comment provided by engineer. */
"Invalid migration confirmation" = "Conferma di migrazione non valida";
/* No comment provided by engineer. */
"Keychain error" = "Errore del portachiavi";
/* No comment provided by engineer. */
"Large file!" = "File grande!";
/* No comment provided by engineer. */
"No active profile" = "Nessun profilo attivo";
/* No comment provided by engineer. */
"Ok" = "Ok";
/* No comment provided by engineer. */
"Open the app to downgrade the database." = "Apri l'app per eseguire il downgrade del database.";
/* No comment provided by engineer. */
"Open the app to upgrade the database." = "Apri l'app per aggiornare il database.";
/* No comment provided by engineer. */
"Passphrase" = "Password";
/* No comment provided by engineer. */
"Please create a profile in the SimpleX app" = "Crea un profilo nell'app SimpleX";
/* No comment provided by engineer. */
"Selected chat preferences prohibit this message." = "Le preferenze della chat selezionata vietano questo messaggio.";
/* No comment provided by engineer. */
"Sending a message takes longer than expected." = "L'invio di un messaggio richiede più tempo del previsto.";
/* No comment provided by engineer. */
"Sending message…" = "Invio messaggio…";
/* No comment provided by engineer. */
"Share" = "Condividi";
/* No comment provided by engineer. */
"Slow network?" = "Rete lenta?";
/* No comment provided by engineer. */
"Unknown database error: %@" = "Errore del database sconosciuto: %@";
/* No comment provided by engineer. */
"Unsupported format" = "Formato non supportato";
/* No comment provided by engineer. */
"Wait" = "Attendi";
/* No comment provided by engineer. */
"Wrong database passphrase" = "Password del database sbagliata";
/* No comment provided by engineer. */
"You can allow sharing in Privacy & Security / SimpleX Lock settings." = "Puoi consentire la condivisione in Privacy e sicurezza / impostazioni di SimpleX Lock.";
Created by EP on 30/07/2024.
Copyright © 2024 SimpleX Chat. All rights reserved.
*/
@@ -1,7 +1,9 @@
/*
InfoPlist.strings
SimpleX
/* Bundle display name */
"CFBundleDisplayName" = "SimpleX SE";
/* Bundle name */
"CFBundleName" = "SimpleX SE";
/* Copyright (human-readable) */
"NSHumanReadableCopyright" = "Copyright © 2024 SimpleX Chat. All rights reserved.";
Created by EP on 30/07/2024.
Copyright © 2024 SimpleX Chat. All rights reserved.
*/
@@ -1,7 +1,111 @@
/*
Localizable.strings
SimpleX
/* No comment provided by engineer. */
"%@" = "%@";
/* No comment provided by engineer. */
"App is locked!" = "App is vergrendeld!";
/* No comment provided by engineer. */
"Cancel" = "Annuleren";
/* No comment provided by engineer. */
"Cannot access keychain to save database password" = "Kan geen toegang krijgen tot de keychain om het database wachtwoord op te slaan";
/* No comment provided by engineer. */
"Cannot forward message" = "Kan bericht niet doorsturen";
/* No comment provided by engineer. */
"Comment" = "Opmerking";
/* No comment provided by engineer. */
"Currently maximum supported file size is %@." = "De momenteel maximaal ondersteunde bestandsgrootte is %@.";
/* No comment provided by engineer. */
"Database downgrade required" = "Database downgrade vereist";
/* No comment provided by engineer. */
"Database encrypted!" = "Database versleuteld!";
/* No comment provided by engineer. */
"Database error" = "Database fout";
/* No comment provided by engineer. */
"Database passphrase is different from saved in the keychain." = "Het wachtwoord van de database verschilt van het wachtwoord die in de keychain is opgeslagen.";
/* No comment provided by engineer. */
"Database passphrase is required to open chat." = "Database wachtwoord is vereist om je gesprekken te openen.";
/* No comment provided by engineer. */
"Database upgrade required" = "Database upgrade vereist";
/* No comment provided by engineer. */
"Error preparing file" = "Fout bij voorbereiden bestand";
/* No comment provided by engineer. */
"Error preparing message" = "Fout bij het voorbereiden van bericht";
/* No comment provided by engineer. */
"Error: %@" = "Fout: %@";
/* No comment provided by engineer. */
"File error" = "Bestandsfout";
/* No comment provided by engineer. */
"Incompatible database version" = "Incompatibele database versie";
/* No comment provided by engineer. */
"Invalid migration confirmation" = "Ongeldige migratie bevestiging";
/* No comment provided by engineer. */
"Keychain error" = "Keychain fout";
/* No comment provided by engineer. */
"Large file!" = "Groot bestand!";
/* No comment provided by engineer. */
"No active profile" = "Geen actief profiel";
/* No comment provided by engineer. */
"Ok" = "Ok";
/* No comment provided by engineer. */
"Open the app to downgrade the database." = "Open de app om de database te downgraden.";
/* No comment provided by engineer. */
"Open the app to upgrade the database." = "Open de app om de database te upgraden.";
/* No comment provided by engineer. */
"Passphrase" = "Wachtwoord";
/* No comment provided by engineer. */
"Please create a profile in the SimpleX app" = "Maak een profiel aan in de SimpleX app";
/* No comment provided by engineer. */
"Selected chat preferences prohibit this message." = "Geselecteerde chat voorkeuren verbieden dit bericht.";
/* No comment provided by engineer. */
"Sending a message takes longer than expected." = "Het verzenden van een bericht duurt langer dan verwacht.";
/* No comment provided by engineer. */
"Sending message…" = "Bericht versturen…";
/* No comment provided by engineer. */
"Share" = "Deel";
/* No comment provided by engineer. */
"Slow network?" = "Traag netwerk?";
/* No comment provided by engineer. */
"Unknown database error: %@" = "Onbekende database fout: %@";
/* No comment provided by engineer. */
"Unsupported format" = "Niet ondersteund formaat";
/* No comment provided by engineer. */
"Wait" = "wachten";
/* No comment provided by engineer. */
"Wrong database passphrase" = "Verkeerde database wachtwoord";
/* No comment provided by engineer. */
"You can allow sharing in Privacy & Security / SimpleX Lock settings." = "U kunt delen toestaan in de instellingen voor Privacy en beveiliging / SimpleX Lock.";
Created by EP on 30/07/2024.
Copyright © 2024 SimpleX Chat. All rights reserved.
*/
@@ -199,6 +199,7 @@
8CC4ED902BD7B8530078AEE8 /* CallAudioDeviceManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8CC4ED8F2BD7B8530078AEE8 /* CallAudioDeviceManager.swift */; };
8CC956EE2BC0041000412A11 /* NetworkObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8CC956ED2BC0041000412A11 /* NetworkObserver.swift */; };
8CE848A32C5A0FA000D5C7C8 /* SelectableChatItemToolbars.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8CE848A22C5A0FA000D5C7C8 /* SelectableChatItemToolbars.swift */; };
B76E6C312C5C41D900EC11AA /* ContactListNavLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = B76E6C302C5C41D900EC11AA /* ContactListNavLink.swift */; };
CE1EB0E42C459A660099D896 /* ShareAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE1EB0E32C459A660099D896 /* ShareAPI.swift */; };
CE2AD9CE2C452A4D00E844E3 /* ChatUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE2AD9CD2C452A4D00E844E3 /* ChatUtils.swift */; };
CE3097FB2C4C0C9F00180898 /* ErrorAlert.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE3097FA2C4C0C9F00180898 /* ErrorAlert.swift */; };
@@ -541,6 +542,7 @@
8CC4ED8F2BD7B8530078AEE8 /* CallAudioDeviceManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallAudioDeviceManager.swift; sourceTree = "<group>"; };
8CC956ED2BC0041000412A11 /* NetworkObserver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkObserver.swift; sourceTree = "<group>"; };
8CE848A22C5A0FA000D5C7C8 /* SelectableChatItemToolbars.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectableChatItemToolbars.swift; sourceTree = "<group>"; };
B76E6C302C5C41D900EC11AA /* ContactListNavLink.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactListNavLink.swift; sourceTree = "<group>"; };
CE1EB0E32C459A660099D896 /* ShareAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareAPI.swift; sourceTree = "<group>"; };
CE2AD9CD2C452A4D00E844E3 /* ChatUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatUtils.swift; sourceTree = "<group>"; };
CE3097FA2C4C0C9F00180898 /* ErrorAlert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ErrorAlert.swift; sourceTree = "<group>"; };
@@ -695,6 +697,7 @@
5C2E260D27A30E2400F70299 /* Views */ = {
isa = PBXGroup;
children = (
B76E6C2F2C5C41C300EC11AA /* Contacts */,
5CB0BA8C282711BC00B3292C /* Onboarding */,
3C714775281C080100CB4D4B /* Call */,
5C971E1F27AEBF7000C8A3CE /* Helpers */,
@@ -1086,6 +1089,14 @@
path = Theme;
sourceTree = "<group>";
};
B76E6C2F2C5C41C300EC11AA /* Contacts */ = {
isa = PBXGroup;
children = (
B76E6C302C5C41D900EC11AA /* ContactListNavLink.swift */,
);
path = Contacts;
sourceTree = "<group>";
};
CEE723A82C3BD3D70009AE93 /* SimpleX SE */ = {
isa = PBXGroup;
children = (
@@ -1392,6 +1403,7 @@
64466DC829FC2B3B00E3D48D /* CreateSimpleXAddress.swift in Sources */,
3CDBCF4827FF621E00354CDD /* CILinkView.swift in Sources */,
5C7505A827B6D34800BE3227 /* ChatInfoToolbar.swift in Sources */,
B76E6C312C5C41D900EC11AA /* ContactListNavLink.swift in Sources */,
5C10D88A28F187F300E58BF0 /* FullScreenMediaView.swift in Sources */,
D72A9088294BD7A70047C86D /* NativeTextEditor.swift in Sources */,
CE984D4B2C36C5D500E3AEFF /* ChatItemClipShape.swift in Sources */,
+59 -22
View File
@@ -15,7 +15,7 @@ public let jsonEncoder = getJSONEncoder()
public enum ChatCommand {
case showActiveUser
case createActiveUser(profile: Profile?, sameServers: Bool, pastTimestamp: Bool)
case createActiveUser(profile: Profile?, pastTimestamp: Bool)
case listUsers
case apiSetActiveUser(userId: Int64, viewPwd: String?)
case setAllContactReceipts(enable: Bool)
@@ -101,7 +101,7 @@ public enum ChatCommand {
case apiConnectPlan(userId: Int64, connReq: String)
case apiConnect(userId: Int64, incognito: Bool, connReq: String)
case apiConnectContactViaAddress(userId: Int64, incognito: Bool, contactId: Int64)
case apiDeleteChat(type: ChatType, id: Int64, notify: Bool?)
case apiDeleteChat(type: ChatType, id: Int64, chatDeleteMode: ChatDeleteMode)
case apiClearChat(type: ChatType, id: Int64)
case apiListContacts(userId: Int64)
case apiUpdateProfile(userId: Int64, profile: Profile)
@@ -156,8 +156,8 @@ public enum ChatCommand {
get {
switch self {
case .showActiveUser: return "/u"
case let .createActiveUser(profile, sameServers, pastTimestamp):
let user = NewUser(profile: profile, sameServers: sameServers, pastTimestamp: pastTimestamp)
case let .createActiveUser(profile, pastTimestamp):
let user = NewUser(profile: profile, pastTimestamp: pastTimestamp)
return "/_create user \(encodeJSON(user))"
case .listUsers: return "/users"
case let .apiSetActiveUser(userId, viewPwd): return "/_user \(userId)\(maybePwd(viewPwd))"
@@ -266,11 +266,7 @@ public enum ChatCommand {
case let .apiConnectPlan(userId, connReq): return "/_connect plan \(userId) \(connReq)"
case let .apiConnect(userId, incognito, connReq): return "/_connect \(userId) incognito=\(onOff(incognito)) \(connReq)"
case let .apiConnectContactViaAddress(userId, incognito, contactId): return "/_connect contact \(userId) incognito=\(onOff(incognito)) \(contactId)"
case let .apiDeleteChat(type, id, notify): if let notify = notify {
return "/_delete \(ref(type, id)) notify=\(onOff(notify))"
} else {
return "/_delete \(ref(type, id))"
}
case let .apiDeleteChat(type, id, chatDeleteMode): return "/_delete \(ref(type, id)) \(chatDeleteMode.cmdString)"
case let .apiClearChat(type, id): return "/_clear chat \(ref(type, id))"
case let .apiListContacts(userId): return "/_contacts \(userId)"
case let .apiUpdateProfile(userId, profile): return "/_profile \(userId) \(encodeJSON(profile))"
@@ -505,10 +501,6 @@ public enum ChatCommand {
return nil
}
private func onOff(_ b: Bool) -> String {
b ? "on" : "off"
}
private func onOffParam(_ param: String, _ b: Bool?) -> String {
if let b = b {
return " \(param)=\(onOff(b))"
@@ -521,6 +513,10 @@ public enum ChatCommand {
}
}
private func onOff(_ b: Bool) -> String {
b ? "on" : "off"
}
public struct APIResponse: Decodable {
var resp: ChatResponse
}
@@ -1048,6 +1044,27 @@ public func chatError(_ chatResponse: ChatResponse) -> ChatErrorType? {
}
}
public enum ChatDeleteMode: Codable {
case full(notify: Bool)
case entity(notify: Bool)
case messages
var cmdString: String {
switch self {
case let .full(notify): "full notify=\(onOff(notify))"
case let .entity(notify): "entity notify=\(onOff(notify))"
case .messages: "messages"
}
}
public var isEntity: Bool {
switch self {
case .entity: return true
default: return false
}
}
}
public enum ConnectionPlan: Decodable, Hashable {
case invitationLink(invitationLinkPlan: InvitationLinkPlan)
case contactAddress(contactAddressPlan: ContactAddressPlan)
@@ -1080,7 +1097,6 @@ public enum GroupLinkPlan: Decodable, Hashable {
struct NewUser: Encodable, Hashable {
var profile: Profile?
var sameServers: Bool
var pastTimestamp: Bool
}
@@ -1325,13 +1341,31 @@ public struct NetCfg: Codable, Equatable, Hashable {
smpPingInterval: 1200_000_000
)
public static let proxyDefaults: NetCfg = NetCfg(
static let proxyDefaults: NetCfg = NetCfg(
tcpConnectTimeout: 35_000_000,
tcpTimeout: 20_000_000,
tcpTimeoutPerKb: 15_000,
rcvConcurrency: 8,
smpPingInterval: 1200_000_000
)
public var withProxyTimeouts: NetCfg {
var cfg = self
cfg.tcpConnectTimeout = NetCfg.proxyDefaults.tcpConnectTimeout
cfg.tcpTimeout = NetCfg.proxyDefaults.tcpTimeout
cfg.tcpTimeoutPerKb = NetCfg.proxyDefaults.tcpTimeoutPerKb
cfg.rcvConcurrency = NetCfg.proxyDefaults.rcvConcurrency
cfg.smpPingInterval = NetCfg.proxyDefaults.smpPingInterval
return cfg
}
public var hasProxyTimeouts: Bool {
tcpConnectTimeout == NetCfg.proxyDefaults.tcpConnectTimeout &&
tcpTimeout == NetCfg.proxyDefaults.tcpTimeout &&
tcpTimeoutPerKb == NetCfg.proxyDefaults.tcpTimeoutPerKb &&
rcvConcurrency == NetCfg.proxyDefaults.rcvConcurrency &&
smpPingInterval == NetCfg.proxyDefaults.smpPingInterval
}
public var enableKeepAlive: Bool { tcpKeepAlive != nil }
}
@@ -1347,16 +1381,16 @@ public enum SocksMode: String, Codable, Hashable {
case onion = "onion"
}
public enum SMPProxyMode: String, Codable, Hashable {
public enum SMPProxyMode: String, Codable, Hashable, SelectableItem {
case always = "always"
case unknown = "unknown"
case unprotected = "unprotected"
case never = "never"
public var text: LocalizedStringKey {
public var label: LocalizedStringKey {
switch self {
case .always: return "always"
case .unknown: return "unknown relays"
case .unknown: return "unknown servers"
case .unprotected: return "unprotected"
case .never: return "never"
}
@@ -1367,12 +1401,12 @@ public enum SMPProxyMode: String, Codable, Hashable {
public static let values: [SMPProxyMode] = [.always, .unknown, .unprotected, .never]
}
public enum SMPProxyFallback: String, Codable, Hashable {
public enum SMPProxyFallback: String, Codable, Hashable, SelectableItem {
case allow = "allow"
case allowProtected = "allowProtected"
case prohibit = "prohibit"
public var text: LocalizedStringKey {
public var label: LocalizedStringKey {
switch self {
case .allow: return "yes"
case .allowProtected: return "when IP hidden"
@@ -2123,7 +2157,8 @@ public struct AppSettings: Codable, Equatable, Hashable {
public var uiDarkColorScheme: String? = nil
public var uiCurrentThemeIds: [String: String]? = nil
public var uiThemes: [ThemeOverrides]? = nil
public var oneHandUI: Bool? = nil
public func prepareForExport() -> AppSettings {
var empty = AppSettings()
let def = AppSettings.defaults
@@ -2153,6 +2188,7 @@ public struct AppSettings: Codable, Equatable, Hashable {
if uiDarkColorScheme != def.uiDarkColorScheme { empty.uiDarkColorScheme = uiDarkColorScheme }
if uiCurrentThemeIds != def.uiCurrentThemeIds { empty.uiCurrentThemeIds = uiCurrentThemeIds }
if uiThemes != def.uiThemes { empty.uiThemes = uiThemes }
if oneHandUI != def.oneHandUI { empty.oneHandUI = oneHandUI }
return empty
}
@@ -2183,7 +2219,8 @@ public struct AppSettings: Codable, Equatable, Hashable {
uiColorScheme: DefaultTheme.SYSTEM_THEME_NAME,
uiDarkColorScheme: DefaultTheme.SIMPLEX.themeName,
uiCurrentThemeIds: nil as [String: String]?,
uiThemes: nil as [ThemeOverrides]?
uiThemes: nil as [ThemeOverrides]?,
oneHandUI: false
)
}
}
+4 -4
View File
@@ -66,8 +66,8 @@ public func registerGroupDefaults() {
GROUP_DEFAULT_NTF_ENABLE_PERIODIC: false,
GROUP_DEFAULT_NETWORK_USE_ONION_HOSTS: OnionHosts.no.rawValue,
GROUP_DEFAULT_NETWORK_SESSION_MODE: TransportSessionMode.user.rawValue,
GROUP_DEFAULT_NETWORK_SMP_PROXY_MODE: SMPProxyMode.never.rawValue,
GROUP_DEFAULT_NETWORK_SMP_PROXY_FALLBACK: SMPProxyFallback.allow.rawValue,
GROUP_DEFAULT_NETWORK_SMP_PROXY_MODE: SMPProxyMode.unknown.rawValue,
GROUP_DEFAULT_NETWORK_SMP_PROXY_FALLBACK: SMPProxyFallback.allowProtected.rawValue,
GROUP_DEFAULT_NETWORK_TCP_CONNECT_TIMEOUT: NetCfg.defaults.tcpConnectTimeout,
GROUP_DEFAULT_NETWORK_TCP_TIMEOUT: NetCfg.defaults.tcpTimeout,
GROUP_DEFAULT_NETWORK_TCP_TIMEOUT_PER_KB: NetCfg.defaults.tcpTimeoutPerKb,
@@ -235,13 +235,13 @@ public let networkSessionModeGroupDefault = EnumDefault<TransportSessionMode>(
public let networkSMPProxyModeGroupDefault = EnumDefault<SMPProxyMode>(
defaults: groupDefaults,
forKey: GROUP_DEFAULT_NETWORK_SMP_PROXY_MODE,
withDefault: .never
withDefault: .unknown
)
public let networkSMPProxyFallbackGroupDefault = EnumDefault<SMPProxyFallback>(
defaults: groupDefaults,
forKey: GROUP_DEFAULT_NETWORK_SMP_PROXY_FALLBACK,
withDefault: .allow
withDefault: .allowProtected
)
public let storeDBPassphraseGroupDefault = BoolDefault(defaults: groupDefaults, forKey: GROUP_DEFAULT_STORE_DB_PASSPHRASE)
+35 -2
View File
@@ -1289,6 +1289,15 @@ public enum ChatInfo: Identifiable, Decodable, NamedChat, Hashable {
}
}
}
public var chatDeleted: Bool {
get {
switch self {
case let .direct(contact): return contact.chatDeleted
default: return false
}
}
}
public var sendMsgEnabled: Bool {
get {
@@ -1401,6 +1410,27 @@ public enum ChatInfo: Identifiable, Decodable, NamedChat, Hashable {
}
}
public enum ShowEnableCallsAlert: Hashable {
case userEnable
case askContact
case other
}
public var showEnableCallsAlert: ShowEnableCallsAlert {
switch self {
case let .direct(contact):
if contact.mergedPreferences.calls.userPreference.preference.allow == .no {
return .userEnable
} else if contact.mergedPreferences.calls.contactPreference.allow == .no {
return .askContact
} else {
return .other
}
default:
return .other
}
}
public var ntfsEnabled: Bool {
self.chatSettings?.enableNtfs == .all
}
@@ -1508,7 +1538,8 @@ public struct Contact: Identifiable, Decodable, NamedChat, Hashable {
var contactGroupMemberId: Int64?
var contactGrpInvSent: Bool
public var uiThemes: ThemeModeOverrides?
public var chatDeleted: Bool
public var id: ChatId { get { "@\(contactId)" } }
public var apiId: Int64 { get { contactId } }
public var ready: Bool { get { activeConn?.connStatus == .ready } }
@@ -1575,13 +1606,15 @@ public struct Contact: Identifiable, Decodable, NamedChat, Hashable {
mergedPreferences: ContactUserPreferences.sampleData,
createdAt: .now,
updatedAt: .now,
contactGrpInvSent: false
contactGrpInvSent: false,
chatDeleted: false
)
}
public enum ContactStatus: String, Decodable, Hashable {
case active = "active"
case deleted = "deleted"
case deletedByUser = "deletedByUser"
}
public struct ContactRef: Decodable, Equatable, Hashable {
+14 -6
View File
@@ -174,7 +174,7 @@ public func downsampleImage(at url: URL, to size: Int64) -> UIImage? {
if let source = CGImageSourceCreateWithURL(url as CFURL, nil) {
CGImageSourceCreateThumbnailAtIndex(
source,
Int.zero,
0,
[
kCGImageSourceCreateThumbnailFromImageAlways: true,
kCGImageSourceShouldCacheImmediately: true,
@@ -433,17 +433,25 @@ private let squareToCircleRatio = 0.935
private let radiusFactor = (1 - squareToCircleRatio) / 50
@ViewBuilder public func clipProfileImage(_ img: Image, size: CGFloat, radius: Double) -> some View {
let v = img.resizable()
@ViewBuilder public func clipProfileImage(_ img: Image, size: CGFloat, radius: Double, blurred: Bool = false) -> some View {
if radius >= 50 {
v.frame(width: size, height: size).clipShape(Circle())
blurredFrame(img, size, blurred).clipShape(Circle())
} else if radius <= 0 {
let sz = size * squareToCircleRatio
v.frame(width: sz, height: sz).padding((size - sz) / 2)
blurredFrame(img, sz, blurred).padding((size - sz) / 2)
} else {
let sz = size * (squareToCircleRatio + radius * radiusFactor)
v.frame(width: sz, height: sz)
blurredFrame(img, sz, blurred)
.clipShape(RoundedRectangle(cornerRadius: sz * radius / 100, style: .continuous))
.padding((size - sz) / 2)
}
}
@ViewBuilder private func blurredFrame(_ img: Image, _ size: CGFloat, _ blurred: Bool) -> some View {
let v = img.resizable().frame(width: size, height: size)
if blurred {
v.blur(radius: size / 4)
} else {
v
}
}
+4 -52
View File
@@ -641,7 +641,7 @@
/* rcv group event chat item */
"blocked %@" = "блокиран %@";
/* blocked chat item */
/* marked deleted chat item preview text */
"blocked by admin" = "блокиран от админ";
/* No comment provided by engineer. */
@@ -984,9 +984,6 @@
/* notification */
"Contact is connected" = "Контактът е свързан";
/* No comment provided by engineer. */
"Contact is not connected yet!" = "Контактът все още не е свързан!";
/* No comment provided by engineer. */
"Contact name" = "Име на контакт";
@@ -1200,12 +1197,6 @@
/* No comment provided by engineer. */
"Delete contact" = "Изтрий контакт";
/* No comment provided by engineer. */
"Delete Contact" = "Изтрий контакт";
/* No comment provided by engineer. */
"Delete contact?\nThis cannot be undone!" = "Изтрий контакт?\nТова не може да бъде отменено!";
/* No comment provided by engineer. */
"Delete database" = "Изтрий базата данни";
@@ -1260,9 +1251,6 @@
/* No comment provided by engineer. */
"Delete old database?" = "Изтрий старата база данни?";
/* No comment provided by engineer. */
"Delete pending connection" = "Изтрий предстоящата връзка";
/* No comment provided by engineer. */
"Delete pending connection?" = "Изтрий предстоящата връзка?";
@@ -1653,9 +1641,6 @@
/* No comment provided by engineer. */
"Error deleting connection" = "Грешка при изтриване на връзката";
/* No comment provided by engineer. */
"Error deleting contact" = "Грешка при изтриване на контакт";
/* No comment provided by engineer. */
"Error deleting database" = "Грешка при изтриване на базата данни";
@@ -2719,10 +2704,10 @@
"One-time invitation link" = "Линк за еднократна покана";
/* No comment provided by engineer. */
"Onion hosts will be required for connection. Requires enabling VPN." = "За свързване ще са необходими Onion хостове. Изисква се активиране на VPN.";
"Onion hosts will be **required** for connection.\nRequires compatible VPN." = "За свързване ще са **необходими** Onion хостове.\nИзисква се активиране на VPN.";
/* No comment provided by engineer. */
"Onion hosts will be used when available. Requires enabling VPN." = "Ще се използват Onion хостове, когато са налични. Изисква се активиране на VPN.";
"Onion hosts will be used when available.\nRequires compatible VPN." = "Ще се използват Onion хостове, когато са налични.\nИзисква се активиране на VPN.";
/* No comment provided by engineer. */
"Onion hosts will not be used." = "Няма се използват Onion хостове.";
@@ -3204,9 +3189,6 @@
/* chat item action */
"Reveal" = "Покажи";
/* No comment provided by engineer. */
"Revert" = "Отмени промените";
/* No comment provided by engineer. */
"Revoke" = "Отзови";
@@ -3336,7 +3318,7 @@
/* chat item text */
"security code changed" = "кодът за сигурност е променен";
/* No comment provided by engineer. */
/* chat item action */
"Select" = "Избери";
/* No comment provided by engineer. */
@@ -3363,9 +3345,6 @@
/* No comment provided by engineer. */
"send direct message" = "изпрати лично съобщение";
/* No comment provided by engineer. */
"Send direct message" = "Изпрати лично съобщение";
/* No comment provided by engineer. */
"Send direct message to connect" = "Изпрати лично съобщение за свързване";
@@ -3588,9 +3567,6 @@
/* No comment provided by engineer. */
"Small groups (max 20)" = "Малки групи (максимум 20)";
/* No comment provided by engineer. */
"SMP servers" = "SMP сървъри";
/* No comment provided by engineer. */
"Some non-fatal errors occurred during import - you may see Chat console for more details." = "Някои не-фатални грешки са възникнали по време на импортиране - може да видите конзолата за повече подробности.";
@@ -3690,9 +3666,6 @@
/* No comment provided by engineer. */
"Tap to scan" = "Докосни за сканиране";
/* No comment provided by engineer. */
"Tap to start a new chat" = "Докосни за започване на нов чат";
/* No comment provided by engineer. */
"TCP connection timeout" = "Времето на изчакване за установяване на TCP връзка";
@@ -3966,18 +3939,12 @@
/* No comment provided by engineer. */
"Update" = "Актуализация";
/* No comment provided by engineer. */
"Update .onion hosts setting?" = "Актуализиране на настройката за .onion хостове?";
/* No comment provided by engineer. */
"Update database passphrase" = "Актуализирай паролата на базата данни";
/* No comment provided by engineer. */
"Update network settings?" = "Актуализиране на мрежовите настройки?";
/* No comment provided by engineer. */
"Update transport isolation mode?" = "Актуализиране на режима на изолация на транспорта?";
/* rcv group event chat item */
"updated group profile" = "актуализиран профил на групата";
@@ -3987,9 +3954,6 @@
/* No comment provided by engineer. */
"Updating settings will re-connect the client to all servers." = "Актуализирането на настройките ще свърже отново клиента към всички сървъри.";
/* No comment provided by engineer. */
"Updating this setting will re-connect the client to all servers." = "Актуализирането на тази настройка ще свърже повторно клиента към всички сървъри.";
/* No comment provided by engineer. */
"Upgrade and open chat" = "Актуализирай и отвори чата";
@@ -4038,9 +4002,6 @@
/* No comment provided by engineer. */
"User profile" = "Потребителски профил";
/* No comment provided by engineer. */
"Using .onion hosts requires compatible VPN provider." = "Използването на .onion хостове изисква съвместим VPN доставчик.";
/* No comment provided by engineer. */
"Using SimpleX Chat servers." = "Използват се сървърите на SimpleX Chat.";
@@ -4209,9 +4170,6 @@
/* No comment provided by engineer. */
"Wrong passphrase!" = "Грешна парола!";
/* No comment provided by engineer. */
"XFTP servers" = "XFTP сървъри";
/* pref value */
"yes" = "да";
@@ -4347,9 +4305,6 @@
/* No comment provided by engineer. */
"You have already requested connection!\nRepeat connection request?" = "Вече сте направили заявката за връзка!\nИзпрати отново заявката за свързване?";
/* No comment provided by engineer. */
"You have no chats" = "Нямате чатове";
/* No comment provided by engineer. */
"You have to enter passphrase every time the app starts - it is not stored on the device." = "Трябва да въвеждате парола при всяко стартиране на приложението - тя не се съхранява на устройството.";
@@ -4440,9 +4395,6 @@
/* No comment provided by engineer. */
"Your chat profiles" = "Вашите чат профили";
/* No comment provided by engineer. */
"Your contact needs to be online for the connection to complete.\nYou can cancel this connection and remove the contact (and try later with a new link)." = "Вашият контакт трябва да бъде онлайн, за да осъществите връзката.\nМожете да откажете тази връзка и да премахнете контакта (и да опитате по -късно с нов линк).";
/* No comment provided by engineer. */
"Your contact sent a file that is larger than currently supported maximum size (%@)." = "Вашият контакт изпрати файл, който е по-голям от поддържания в момента максимален размер (%@).";
+3 -48
View File
@@ -786,9 +786,6 @@
/* notification */
"Contact is connected" = "Kontakt je připojen";
/* No comment provided by engineer. */
"Contact is not connected yet!" = "Kontakt ještě není připojen!";
/* No comment provided by engineer. */
"Contact name" = "Jméno kontaktu";
@@ -972,9 +969,6 @@
/* No comment provided by engineer. */
"Delete contact" = "Smazat kontakt";
/* No comment provided by engineer. */
"Delete Contact" = "Smazat kontakt";
/* No comment provided by engineer. */
"Delete database" = "Odstranění databáze";
@@ -1026,9 +1020,6 @@
/* No comment provided by engineer. */
"Delete old database?" = "Smazat starou databázi?";
/* No comment provided by engineer. */
"Delete pending connection" = "Smazat čekající připojení";
/* No comment provided by engineer. */
"Delete pending connection?" = "Smazat čekající připojení?";
@@ -1353,9 +1344,6 @@
/* No comment provided by engineer. */
"Error deleting connection" = "Chyba při mazání připojení";
/* No comment provided by engineer. */
"Error deleting contact" = "Chyba mazání kontaktu";
/* No comment provided by engineer. */
"Error deleting database" = "Chyba při mazání databáze";
@@ -2215,10 +2203,10 @@
"One-time invitation link" = "Jednorázový zvací odkaz";
/* No comment provided by engineer. */
"Onion hosts will be required for connection. Requires enabling VPN." = "Pro připojení budou vyžadováni Onion hostitelé. Vyžaduje povolení sítě VPN.";
"Onion hosts will be **required** for connection.\nRequires compatible VPN." = "Pro připojení budou vyžadováni Onion hostitelé.\nVyžaduje povolení sítě VPN.";
/* No comment provided by engineer. */
"Onion hosts will be used when available. Requires enabling VPN." = "Onion hostitelé budou použiti, pokud jsou k dispozici. Vyžaduje povolení sítě VPN.";
"Onion hosts will be used when available.\nRequires compatible VPN." = "Onion hostitelé budou použiti, pokud jsou k dispozici.\nVyžaduje povolení sítě VPN.";
/* No comment provided by engineer. */
"Onion hosts will not be used." = "Onion hostitelé nebudou použiti.";
@@ -2595,9 +2583,6 @@
/* chat item action */
"Reveal" = "Odhalit";
/* No comment provided by engineer. */
"Revert" = "Vrátit";
/* No comment provided by engineer. */
"Revoke" = "Odvolat";
@@ -2700,7 +2685,7 @@
/* chat item text */
"security code changed" = "bezpečnostní kód změněn";
/* No comment provided by engineer. */
/* chat item action */
"Select" = "Vybrat";
/* No comment provided by engineer. */
@@ -2727,9 +2712,6 @@
/* No comment provided by engineer. */
"send direct message" = "odeslat přímou zprávu";
/* No comment provided by engineer. */
"Send direct message" = "Odeslat přímou zprávu";
/* No comment provided by engineer. */
"Send direct message to connect" = "Odeslat přímou zprávu pro připojení";
@@ -2922,9 +2904,6 @@
/* No comment provided by engineer. */
"Small groups (max 20)" = "Malé skupiny (max. 20)";
/* No comment provided by engineer. */
"SMP servers" = "SMP servery";
/* No comment provided by engineer. */
"Some non-fatal errors occurred during import - you may see Chat console for more details." = "Během importu došlo k nezávažným chybám - podrobnosti naleznete v chat konzoli.";
@@ -3000,9 +2979,6 @@
/* No comment provided by engineer. */
"Tap to join incognito" = "Klepnutím se připojíte inkognito";
/* No comment provided by engineer. */
"Tap to start a new chat" = "Klepnutím na zahájíte nový chat";
/* No comment provided by engineer. */
"TCP connection timeout" = "Časový limit připojení TCP";
@@ -3216,27 +3192,18 @@
/* No comment provided by engineer. */
"Update" = "Aktualizovat";
/* No comment provided by engineer. */
"Update .onion hosts setting?" = "Aktualizovat nastavení hostitelů .onion?";
/* No comment provided by engineer. */
"Update database passphrase" = "Aktualizovat přístupovou frázi databáze";
/* No comment provided by engineer. */
"Update network settings?" = "Aktualizovat nastavení sítě?";
/* No comment provided by engineer. */
"Update transport isolation mode?" = "Aktualizovat režim dopravní izolace?";
/* rcv group event chat item */
"updated group profile" = "aktualizoval profil skupiny";
/* No comment provided by engineer. */
"Updating settings will re-connect the client to all servers." = "Aktualizací nastavení se klient znovu připojí ke všem serverům.";
/* No comment provided by engineer. */
"Updating this setting will re-connect the client to all servers." = "Aktualizace tohoto nastavení znovu připojí klienta ke všem serverům.";
/* No comment provided by engineer. */
"Upgrade and open chat" = "Zvýšit a otevřít chat";
@@ -3270,9 +3237,6 @@
/* No comment provided by engineer. */
"User profile" = "Profil uživatele";
/* No comment provided by engineer. */
"Using .onion hosts requires compatible VPN provider." = "Použití hostitelů .onion vyžaduje kompatibilního poskytovatele VPN.";
/* No comment provided by engineer. */
"Using SimpleX Chat servers." = "Používat servery SimpleX Chat.";
@@ -3387,9 +3351,6 @@
/* No comment provided by engineer. */
"Wrong passphrase!" = "Špatná přístupová fráze!";
/* No comment provided by engineer. */
"XFTP servers" = "XFTP servery";
/* pref value */
"yes" = "ano";
@@ -3480,9 +3441,6 @@
/* No comment provided by engineer. */
"You could not be verified; please try again." = "Nemohli jste být ověřeni; Zkuste to prosím znovu.";
/* No comment provided by engineer. */
"You have no chats" = "Nemáte žádné konverzace";
/* No comment provided by engineer. */
"You have to enter passphrase every time the app starts - it is not stored on the device." = "Musíte zadat přístupovou frázi při každém spuštění aplikace - není uložena v zařízení.";
@@ -3564,9 +3522,6 @@
/* No comment provided by engineer. */
"Your chat profiles" = "Vaše chat profily";
/* No comment provided by engineer. */
"Your contact needs to be online for the connection to complete.\nYou can cancel this connection and remove the contact (and try later with a new link)." = "K dokončení připojení, musí být váš kontakt online.\nToto připojení můžete zrušit a kontakt odebrat (a zkusit to později s novým odkazem).";
/* No comment provided by engineer. */
"Your contact sent a file that is larger than currently supported maximum size (%@)." = "Kontakt odeslal soubor, který je větší než aktuálně podporovaná maximální velikost (%@).";
+87 -51
View File
@@ -491,6 +491,9 @@
/* No comment provided by engineer. */
"Allow sending disappearing messages." = "Das Senden von verschwindenden Nachrichten erlauben.";
/* No comment provided by engineer. */
"Allow sharing" = "Teilen erlauben";
/* No comment provided by engineer. */
"Allow to irreversibly delete sent messages. (24 hours)" = "Unwiederbringliches löschen von gesendeten Nachrichten erlauben. (24 Stunden)";
@@ -689,12 +692,15 @@
/* rcv group event chat item */
"blocked %@" = "%@ wurde blockiert";
/* blocked chat item */
/* marked deleted chat item preview text */
"blocked by admin" = "wurde vom Administrator blockiert";
/* No comment provided by engineer. */
"Blocked by admin" = "wurde vom Administrator blockiert";
/* No comment provided by engineer. */
"Blur media" = "Medium unscharf machen";
/* No comment provided by engineer. */
"bold" = "fett";
@@ -828,6 +834,9 @@
/* No comment provided by engineer. */
"Chat database deleted" = "Chat-Datenbank gelöscht";
/* No comment provided by engineer. */
"Chat database exported" = "Chat-Datenbank wurde exportiert";
/* No comment provided by engineer. */
"Chat database imported" = "Chat-Datenbank importiert";
@@ -1041,6 +1050,9 @@
/* chat list item title (it should not be shown */
"connection established" = "Verbindung hergestellt";
/* No comment provided by engineer. */
"Connection notifications" = "Verbindungsbenachrichtigungen";
/* No comment provided by engineer. */
"Connection request sent!" = "Verbindungsanfrage wurde gesendet!";
@@ -1080,9 +1092,6 @@
/* notification */
"Contact is connected" = "Mit Ihrem Kontakt verbunden";
/* No comment provided by engineer. */
"Contact is not connected yet!" = "Ihr Kontakt ist noch nicht verbunden!";
/* No comment provided by engineer. */
"Contact name" = "Kontaktname";
@@ -1281,6 +1290,9 @@
/* chat item action */
"Delete" = "Löschen";
/* No comment provided by engineer. */
"Delete %lld messages of members?" = "%lld Nachrichten der Mitglieder löschen?";
/* No comment provided by engineer. */
"Delete %lld messages?" = "%lld Nachrichten löschen?";
@@ -1317,12 +1329,6 @@
/* No comment provided by engineer. */
"Delete contact" = "Kontakt löschen";
/* No comment provided by engineer. */
"Delete Contact" = "Kontakt löschen";
/* No comment provided by engineer. */
"Delete contact?\nThis cannot be undone!" = "Kontakt löschen?\nDies kann nicht rückgängig gemacht werden!";
/* No comment provided by engineer. */
"Delete database" = "Datenbank löschen";
@@ -1377,9 +1383,6 @@
/* No comment provided by engineer. */
"Delete old database?" = "Alte Datenbank löschen?";
/* No comment provided by engineer. */
"Delete pending connection" = "Ausstehende Verbindung löschen";
/* No comment provided by engineer. */
"Delete pending connection?" = "Ausstehende Verbindung löschen?";
@@ -1434,9 +1437,15 @@
/* No comment provided by engineer. */
"Desktop devices" = "Desktop-Geräte";
/* No comment provided by engineer. */
"Destination server address of %@ is incompatible with forwarding server %@ settings." = "Adresse des Zielservers von %@ ist nicht kompatibel mit den Einstellungen des Weiterleitungsservers %@.";
/* snd error text */
"Destination server error: %@" = "Zielserver-Fehler: %@";
/* No comment provided by engineer. */
"Destination server version of %@ is incompatible with forwarding server %@." = "Die Version des Zielservers %@ ist nicht kompatibel mit dem Weiterleitungsserver %@.";
/* No comment provided by engineer. */
"Detailed statistics" = "Detaillierte Statistiken";
@@ -1485,6 +1494,9 @@
/* No comment provided by engineer. */
"disabled" = "deaktiviert";
/* No comment provided by engineer. */
"Disabled" = "Deaktiviert";
/* No comment provided by engineer. */
"Disappearing message" = "Verschwindende Nachricht";
@@ -1632,6 +1644,9 @@
/* enabled status */
"enabled" = "Aktiviert";
/* No comment provided by engineer. */
"Enabled" = "Aktiviert";
/* No comment provided by engineer. */
"Enabled for" = "Aktiviert für";
@@ -1773,6 +1788,9 @@
/* No comment provided by engineer. */
"Error changing setting" = "Fehler beim Ändern der Einstellung";
/* No comment provided by engineer. */
"Error connecting to forwarding server %@. Please try later." = "Fehler beim Verbinden mit dem Weiterleitungsserver %@. Bitte versuchen Sie es später erneut.";
/* No comment provided by engineer. */
"Error creating address" = "Fehler beim Erstellen der Adresse";
@@ -1803,9 +1821,6 @@
/* No comment provided by engineer. */
"Error deleting connection" = "Fehler beim Löschen der Verbindung";
/* No comment provided by engineer. */
"Error deleting contact" = "Fehler beim Löschen des Kontakts";
/* No comment provided by engineer. */
"Error deleting database" = "Fehler beim Löschen der Datenbank";
@@ -2086,6 +2101,15 @@
/* No comment provided by engineer. */
"Forwarded from" = "Weitergeleitet aus";
/* No comment provided by engineer. */
"Forwarding server %@ failed to connect to destination server %@. Please try later." = "Weiterleitungsserver %@ konnte sich nicht mit dem Zielserver %@ verbinden. Bitte versuchen Sie es später erneut.";
/* No comment provided by engineer. */
"Forwarding server address is incompatible with network settings: %@." = "Adresse des Weiterleitungsservers ist nicht kompatibel mit den Netzwerkeinstellungen: %@.";
/* No comment provided by engineer. */
"Forwarding server version is incompatible with network settings: %@." = "Version des Weiterleitungsservers ist nicht kompatibel mit den Netzwerkeinstellungen: %@.";
/* snd error text */
"Forwarding server: %@\nDestination server error: %@" = "Weiterleitungsserver: %1$@\nZielserver Fehler: %2$@";
@@ -2635,6 +2659,12 @@
/* No comment provided by engineer. */
"Max 30 seconds, received instantly." = "Max. 30 Sekunden, sofort erhalten.";
/* No comment provided by engineer. */
"Media & file servers" = "Medien- und Datei-Server";
/* blur media */
"Medium" = "Medium";
/* member role */
"member" = "Mitglied";
@@ -2699,10 +2729,7 @@
"Message reception" = "Nachrichtenempfang";
/* No comment provided by engineer. */
"Message routing fallback" = "Fallback für das Nachrichten-Routing";
/* No comment provided by engineer. */
"Message routing mode" = "Modus für das Nachrichten-Routing";
"Message servers" = "Nachrichten-Server";
/* No comment provided by engineer. */
"Message source remains private." = "Die Nachrichtenquelle bleibt privat.";
@@ -2932,6 +2959,9 @@
/* No comment provided by engineer. */
"Not compatible!" = "Nicht kompatibel!";
/* No comment provided by engineer. */
"Nothing selected" = "Nichts ausgewählt";
/* No comment provided by engineer. */
"Notifications" = "Benachrichtigungen";
@@ -2977,10 +3007,10 @@
"One-time invitation link" = "Einmal-Einladungslink";
/* No comment provided by engineer. */
"Onion hosts will be required for connection. Requires enabling VPN." = "Für diese Verbindung werden Onion-Hosts benötigt. Dies erfordert die Aktivierung eines VPNs.";
"Onion hosts will be **required** for connection.\nRequires compatible VPN." = "Für diese Verbindung werden Onion-Hosts benötigt.\nDies erfordert die Aktivierung eines VPNs.";
/* No comment provided by engineer. */
"Onion hosts will be used when available. Requires enabling VPN." = "Wenn Onion-Hosts verfügbar sind, werden sie verwendet. Dies erfordert die Aktivierung eines VPNs.";
"Onion hosts will be used when available.\nRequires compatible VPN." = "Wenn Onion-Hosts verfügbar sind, werden sie verwendet.\nDies erfordert die Aktivierung eines VPNs.";
/* No comment provided by engineer. */
"Onion hosts will not be used." = "Onion-Hosts werden nicht verwendet.";
@@ -3552,9 +3582,6 @@
/* chat item action */
"Reveal" = "Aufdecken";
/* No comment provided by engineer. */
"Revert" = "Zurückkehren";
/* No comment provided by engineer. */
"Revoke" = "Widerrufen";
@@ -3588,6 +3615,9 @@
/* No comment provided by engineer. */
"Save and notify group members" = "Speichern und Gruppenmitglieder benachrichtigen";
/* No comment provided by engineer. */
"Save and reconnect" = "Speichern und neu verbinden";
/* No comment provided by engineer. */
"Save and update group profile" = "Gruppen-Profil sichern und aktualisieren";
@@ -3699,9 +3729,12 @@
/* chat item text */
"security code changed" = "Sicherheitscode wurde geändert";
/* No comment provided by engineer. */
/* chat item action */
"Select" = "Auswählen";
/* No comment provided by engineer. */
"Selected %lld" = "%lld ausgewählt";
/* No comment provided by engineer. */
"Selected chat preferences prohibit this message." = "Diese Nachricht ist wegen der gewählten Chat-Einstellungen nicht erlaubt.";
@@ -3729,9 +3762,6 @@
/* No comment provided by engineer. */
"send direct message" = "Direktnachricht senden";
/* No comment provided by engineer. */
"Send direct message" = "Direktnachricht senden";
/* No comment provided by engineer. */
"Send direct message to connect" = "Eine Direktnachricht zum Verbinden senden";
@@ -3933,6 +3963,9 @@
/* No comment provided by engineer. */
"Share this 1-time invite link" = "Teilen Sie diesen Einmal-Einladungslink";
/* No comment provided by engineer. */
"Share to SimpleX" = "Mit SimpleX teilen";
/* No comment provided by engineer. */
"Share with contacts" = "Mit Kontakten teilen";
@@ -4026,12 +4059,18 @@
/* No comment provided by engineer. */
"SMP server" = "SMP-Server";
/* blur media */
"Soft" = "Weich";
/* No comment provided by engineer. */
"SMP servers" = "SMP-Server";
"Some file(s) were not exported:" = "Einzelne Datei(en) wurde(n) nicht exportiert:";
/* No comment provided by engineer. */
"Some non-fatal errors occurred during import - you may see Chat console for more details." = "Während des Imports sind einige nicht schwerwiegende Fehler aufgetreten - in der Chat-Konsole finden Sie weitere Einzelheiten.";
/* No comment provided by engineer. */
"Some non-fatal errors occurred during import:" = "Während des Imports traten ein paar nicht schwerwiegende Fehler auf:";
/* notification title */
"Somebody" = "Jemand";
@@ -4098,6 +4137,9 @@
/* No comment provided by engineer. */
"strike" = "durchstreichen";
/* blur media */
"Strong" = "Hart";
/* No comment provided by engineer. */
"Submit" = "Bestätigen";
@@ -4144,7 +4186,7 @@
"Tap to scan" = "Zum Scannen tippen";
/* No comment provided by engineer. */
"Tap to start a new chat" = "Zum Starten eines neuen Chats tippen";
"TCP connection" = "TCP-Verbindung";
/* No comment provided by engineer. */
"TCP connection timeout" = "Timeout der TCP-Verbindung";
@@ -4221,6 +4263,12 @@
/* No comment provided by engineer. */
"The message will be marked as moderated for all members." = "Diese Nachricht wird für alle Mitglieder als moderiert gekennzeichnet.";
/* No comment provided by engineer. */
"The messages will be deleted for all members." = "Die Nachrichten werden für alle Mitglieder gelöscht werden.";
/* No comment provided by engineer. */
"The messages will be marked as moderated for all members." = "Die Nachrichten werden für alle Mitglieder als moderiert gekennzeichnet werden.";
/* No comment provided by engineer. */
"The next generation of private messaging" = "Die nächste Generation von privatem Messaging";
@@ -4411,7 +4459,7 @@
"Unknown error" = "Unbekannter Fehler";
/* No comment provided by engineer. */
"unknown relays" = "Unbekannte Relais";
"unknown servers" = "Unbekannte Relais";
/* No comment provided by engineer. */
"Unknown servers!" = "Unbekannte Server!";
@@ -4452,9 +4500,6 @@
/* No comment provided by engineer. */
"Update" = "Aktualisieren";
/* No comment provided by engineer. */
"Update .onion hosts setting?" = "Einstellung für .onion-Hosts aktualisieren?";
/* No comment provided by engineer. */
"Update database passphrase" = "Datenbank-Passwort aktualisieren";
@@ -4462,7 +4507,7 @@
"Update network settings?" = "Netzwerkeinstellungen aktualisieren?";
/* No comment provided by engineer. */
"Update transport isolation mode?" = "Transport-Isolations-Modus aktualisieren?";
"Update settings?" = "Einstellungen aktualisieren?";
/* rcv group event chat item */
"updated group profile" = "Aktualisiertes Gruppenprofil";
@@ -4473,9 +4518,6 @@
/* No comment provided by engineer. */
"Updating settings will re-connect the client to all servers." = "Die Aktualisierung der Einstellungen wird den Client wieder mit allen Servern verbinden.";
/* No comment provided by engineer. */
"Updating this setting will re-connect the client to all servers." = "Die Aktualisierung dieser Einstellung wird den Client wieder mit allen Servern verbinden.";
/* No comment provided by engineer. */
"Upgrade and open chat" = "Aktualisieren und den Chat öffnen";
@@ -4542,9 +4584,6 @@
/* No comment provided by engineer. */
"User selection" = "Benutzer-Auswahl";
/* No comment provided by engineer. */
"Using .onion hosts requires compatible VPN provider." = "Für die Nutzung von .onion-Hosts sind kompatible VPN-Anbieter erforderlich.";
/* No comment provided by engineer. */
"Using SimpleX Chat servers." = "Verwendung von SimpleX-Chat-Servern.";
@@ -4737,9 +4776,6 @@
/* No comment provided by engineer. */
"XFTP server" = "XFTP-Server";
/* No comment provided by engineer. */
"XFTP servers" = "XFTP-Server";
/* pref value */
"yes" = "Ja";
@@ -4878,9 +4914,6 @@
/* No comment provided by engineer. */
"You have already requested connection!\nRepeat connection request?" = "Sie haben bereits ein Verbindungsanfrage beantragt!\nVerbindungsanfrage wiederholen?";
/* No comment provided by engineer. */
"You have no chats" = "Sie haben keine Chats";
/* No comment provided by engineer. */
"You have to enter passphrase every time the app starts - it is not stored on the device." = "Sie müssen das Passwort jedes Mal eingeben, wenn die App startet. Es wird nicht auf dem Gerät gespeichert.";
@@ -4896,6 +4929,12 @@
/* snd group event chat item */
"you left" = "Sie haben verlassen";
/* No comment provided by engineer. */
"You may migrate the exported database." = "Sie können die exportierte Datenbank migrieren.";
/* No comment provided by engineer. */
"You may save the exported archive." = "Sie können das exportierte Archiv speichern.";
/* No comment provided by engineer. */
"You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts." = "Sie dürfen die neueste Version Ihrer Chat-Datenbank NUR auf einem Gerät verwenden, andernfalls erhalten Sie möglicherweise keine Nachrichten mehr von einigen Ihrer Kontakte.";
@@ -4971,9 +5010,6 @@
/* No comment provided by engineer. */
"Your chat profiles" = "Ihre Chat-Profile";
/* No comment provided by engineer. */
"Your contact needs to be online for the connection to complete.\nYou can cancel this connection and remove the contact (and try later with a new link)." = "Damit die Verbindung hergestellt werden kann, muss Ihr Kontakt online sein.\nSie können diese Verbindung abbrechen und den Kontakt entfernen (und es später nochmals mit einem neuen Link versuchen).";
/* No comment provided by engineer. */
"Your contact sent a file that is larger than currently supported maximum size (%@)." = "Ihr Kontakt hat eine Datei gesendet, die größer ist als die derzeit unterstützte maximale Größe (%@).";
+5 -59
View File
@@ -689,7 +689,7 @@
/* rcv group event chat item */
"blocked %@" = "ha bloqueado a %@";
/* blocked chat item */
/* marked deleted chat item preview text */
"blocked by admin" = "bloqueado por administrador";
/* No comment provided by engineer. */
@@ -1080,9 +1080,6 @@
/* notification */
"Contact is connected" = "El contacto está en línea";
/* No comment provided by engineer. */
"Contact is not connected yet!" = "¡El contacto aun no se ha conectado!";
/* No comment provided by engineer. */
"Contact name" = "Contacto";
@@ -1317,12 +1314,6 @@
/* No comment provided by engineer. */
"Delete contact" = "Eliminar contacto";
/* No comment provided by engineer. */
"Delete Contact" = "Eliminar contacto";
/* No comment provided by engineer. */
"Delete contact?\nThis cannot be undone!" = "¿Eliminar contacto?\n¡No podrá deshacerse!";
/* No comment provided by engineer. */
"Delete database" = "Eliminar base de datos";
@@ -1377,9 +1368,6 @@
/* No comment provided by engineer. */
"Delete old database?" = "¿Eliminar base de datos antigua?";
/* No comment provided by engineer. */
"Delete pending connection" = "Eliminar conexión pendiente";
/* No comment provided by engineer. */
"Delete pending connection?" = "¿Eliminar conexión pendiente?";
@@ -1803,9 +1791,6 @@
/* No comment provided by engineer. */
"Error deleting connection" = "Error al eliminar conexión";
/* No comment provided by engineer. */
"Error deleting contact" = "Error al eliminar contacto";
/* No comment provided by engineer. */
"Error deleting database" = "Error al eliminar base de datos";
@@ -2698,12 +2683,6 @@
/* No comment provided by engineer. */
"Message reception" = "Recepción de mensaje";
/* No comment provided by engineer. */
"Message routing fallback" = "Enrutamiento de mensajes alternativo";
/* No comment provided by engineer. */
"Message routing mode" = "Modo de enrutamiento de mensajes";
/* No comment provided by engineer. */
"Message source remains private." = "El autor del mensaje se mantiene privado.";
@@ -2977,10 +2956,10 @@
"One-time invitation link" = "Enlace de invitación de un solo uso";
/* No comment provided by engineer. */
"Onion hosts will be required for connection. Requires enabling VPN." = "Se requieren hosts .onion para la conexión. Requiere activación de la VPN.";
"Onion hosts will be **required** for connection.\nRequires compatible VPN." = "Se **requieren** hosts .onion para la conexión.\nRequiere activación de la VPN.";
/* No comment provided by engineer. */
"Onion hosts will be used when available. Requires enabling VPN." = "Se usarán hosts .onion si están disponibles. Requiere activación de la VPN.";
"Onion hosts will be used when available.\nRequires compatible VPN." = "Se usarán hosts .onion si están disponibles.\nRequiere activación de la VPN.";
/* No comment provided by engineer. */
"Onion hosts will not be used." = "No se usarán hosts .onion.";
@@ -3552,9 +3531,6 @@
/* chat item action */
"Reveal" = "Revelar";
/* No comment provided by engineer. */
"Revert" = "Revertir";
/* No comment provided by engineer. */
"Revoke" = "Revocar";
@@ -3699,7 +3675,7 @@
/* chat item text */
"security code changed" = "código de seguridad cambiado";
/* No comment provided by engineer. */
/* chat item action */
"Select" = "Seleccionar";
/* No comment provided by engineer. */
@@ -3729,9 +3705,6 @@
/* No comment provided by engineer. */
"send direct message" = "Enviar mensaje directo";
/* No comment provided by engineer. */
"Send direct message" = "Enviar mensaje directo";
/* No comment provided by engineer. */
"Send direct message to connect" = "Envia un mensaje para conectar";
@@ -4026,9 +3999,6 @@
/* No comment provided by engineer. */
"SMP server" = "Servidor SMP";
/* No comment provided by engineer. */
"SMP servers" = "Servidores SMP";
/* No comment provided by engineer. */
"Some non-fatal errors occurred during import - you may see Chat console for more details." = "Algunos errores no críticos ocurrieron durante la importación - para más detalles puedes ver la consola de Chat.";
@@ -4143,9 +4113,6 @@
/* No comment provided by engineer. */
"Tap to scan" = "Pulsa para escanear";
/* No comment provided by engineer. */
"Tap to start a new chat" = "Pulsa para iniciar chat nuevo";
/* No comment provided by engineer. */
"TCP connection timeout" = "Timeout de la conexión TCP";
@@ -4411,7 +4378,7 @@
"Unknown error" = "Error desconocido";
/* No comment provided by engineer. */
"unknown relays" = "con servidores desconocidos";
"unknown servers" = "con servidores desconocidos";
/* No comment provided by engineer. */
"Unknown servers!" = "¡Servidores desconocidos!";
@@ -4452,18 +4419,12 @@
/* No comment provided by engineer. */
"Update" = "Actualizar";
/* No comment provided by engineer. */
"Update .onion hosts setting?" = "¿Actualizar la configuración de los hosts .onion?";
/* No comment provided by engineer. */
"Update database passphrase" = "Actualizar contraseña de la base de datos";
/* No comment provided by engineer. */
"Update network settings?" = "¿Actualizar la configuración de red?";
/* No comment provided by engineer. */
"Update transport isolation mode?" = "¿Actualizar el modo de aislamiento de transporte?";
/* rcv group event chat item */
"updated group profile" = "ha actualizado el perfil del grupo";
@@ -4473,9 +4434,6 @@
/* No comment provided by engineer. */
"Updating settings will re-connect the client to all servers." = "Al actualizar la configuración el cliente se reconectará a todos los servidores.";
/* No comment provided by engineer. */
"Updating this setting will re-connect the client to all servers." = "Al actualizar esta configuración el cliente se reconectará a todos los servidores.";
/* No comment provided by engineer. */
"Upgrade and open chat" = "Actualizar y abrir Chat";
@@ -4542,9 +4500,6 @@
/* No comment provided by engineer. */
"User selection" = "Selección de usuarios";
/* No comment provided by engineer. */
"Using .onion hosts requires compatible VPN provider." = "Usar hosts .onion requiere un proveedor VPN compatible.";
/* No comment provided by engineer. */
"Using SimpleX Chat servers." = "Usar servidores SimpleX Chat.";
@@ -4737,9 +4692,6 @@
/* No comment provided by engineer. */
"XFTP server" = "Servidor XFTP";
/* No comment provided by engineer. */
"XFTP servers" = "Servidores XFTP";
/* pref value */
"yes" = "sí";
@@ -4878,9 +4830,6 @@
/* No comment provided by engineer. */
"You have already requested connection!\nRepeat connection request?" = "Ya has solicitado la conexión\n¿Repetir solicitud?";
/* No comment provided by engineer. */
"You have no chats" = "No tienes chats";
/* No comment provided by engineer. */
"You have to enter passphrase every time the app starts - it is not stored on the device." = "La contraseña no se almacena en el dispositivo, tienes que introducirla cada vez que inicies la aplicación.";
@@ -4971,9 +4920,6 @@
/* No comment provided by engineer. */
"Your chat profiles" = "Mis perfiles";
/* No comment provided by engineer. */
"Your contact needs to be online for the connection to complete.\nYou can cancel this connection and remove the contact (and try later with a new link)." = "El contacto debe estar en línea para completar la conexión.\nPuedes cancelarla y eliminar el contacto (e intentarlo más tarde con un enlace nuevo).";
/* No comment provided by engineer. */
"Your contact sent a file that is larger than currently supported maximum size (%@)." = "El contacto ha enviado un archivo mayor al máximo admitido (%@).";
+3 -48
View File
@@ -768,9 +768,6 @@
/* notification */
"Contact is connected" = "Kontakti on yhdistetty";
/* No comment provided by engineer. */
"Contact is not connected yet!" = "Kontaktia ei ole vielä yhdistetty!";
/* No comment provided by engineer. */
"Contact name" = "Kontaktin nimi";
@@ -954,9 +951,6 @@
/* No comment provided by engineer. */
"Delete contact" = "Poista kontakti";
/* No comment provided by engineer. */
"Delete Contact" = "Poista kontakti";
/* No comment provided by engineer. */
"Delete database" = "Poista tietokanta";
@@ -1008,9 +1002,6 @@
/* No comment provided by engineer. */
"Delete old database?" = "Poista vanha tietokanta?";
/* No comment provided by engineer. */
"Delete pending connection" = "Poista vireillä oleva yhteys";
/* No comment provided by engineer. */
"Delete pending connection?" = "Poistetaanko odottava yhteys?";
@@ -1329,9 +1320,6 @@
/* No comment provided by engineer. */
"Error deleting connection" = "Virhe yhteyden poistamisessa";
/* No comment provided by engineer. */
"Error deleting contact" = "Virhe kontaktin poistamisessa";
/* No comment provided by engineer. */
"Error deleting database" = "Virhe tietokannan poistamisessa";
@@ -2188,10 +2176,10 @@
"One-time invitation link" = "Kertakutsulinkki";
/* No comment provided by engineer. */
"Onion hosts will be required for connection. Requires enabling VPN." = "Yhteyden muodostamiseen tarvitaan Onion-isäntiä. Edellyttää VPN:n sallimista.";
"Onion hosts will be **required** for connection.\nRequires compatible VPN." = "Yhteyden muodostamiseen tarvitaan Onion-isäntiä.\nEdellyttää VPN:n sallimista.";
/* No comment provided by engineer. */
"Onion hosts will be used when available. Requires enabling VPN." = "Onion-isäntiä käytetään, kun niitä on saatavilla. Edellyttää VPN:n sallimista.";
"Onion hosts will be used when available.\nRequires compatible VPN." = "Onion-isäntiä käytetään, kun niitä on saatavilla.\nEdellyttää VPN:n sallimista.";
/* No comment provided by engineer. */
"Onion hosts will not be used." = "Onion-isäntiä ei käytetä.";
@@ -2565,9 +2553,6 @@
/* chat item action */
"Reveal" = "Paljasta";
/* No comment provided by engineer. */
"Revert" = "Palauta";
/* No comment provided by engineer. */
"Revoke" = "Peruuta";
@@ -2670,7 +2655,7 @@
/* chat item text */
"security code changed" = "turvakoodi on muuttunut";
/* No comment provided by engineer. */
/* chat item action */
"Select" = "Valitse";
/* No comment provided by engineer. */
@@ -2694,9 +2679,6 @@
/* No comment provided by engineer. */
"Send delivery receipts to" = "Lähetä toimituskuittaukset vastaanottajalle";
/* No comment provided by engineer. */
"Send direct message" = "Lähetä yksityisviesti";
/* No comment provided by engineer. */
"Send disappearing message" = "Lähetä katoava viesti";
@@ -2883,9 +2865,6 @@
/* No comment provided by engineer. */
"Small groups (max 20)" = "Pienryhmät (max 20)";
/* No comment provided by engineer. */
"SMP servers" = "SMP-palvelimet";
/* No comment provided by engineer. */
"Some non-fatal errors occurred during import - you may see Chat console for more details." = "Tuonnin aikana tapahtui joitakin ei-vakavia virheitä saatat nähdä Chat-konsolissa lisätietoja.";
@@ -2961,9 +2940,6 @@
/* No comment provided by engineer. */
"Tap to join incognito" = "Napauta liittyäksesi incognito-tilassa";
/* No comment provided by engineer. */
"Tap to start a new chat" = "Aloita uusi keskustelu napauttamalla";
/* No comment provided by engineer. */
"TCP connection timeout" = "TCP-yhteyden aikakatkaisu";
@@ -3174,27 +3150,18 @@
/* No comment provided by engineer. */
"Update" = "Päivitä";
/* No comment provided by engineer. */
"Update .onion hosts setting?" = "Päivitä .onion-isäntien asetus?";
/* No comment provided by engineer. */
"Update database passphrase" = "Päivitä tietokannan tunnuslause";
/* No comment provided by engineer. */
"Update network settings?" = "Päivitä verkkoasetukset?";
/* No comment provided by engineer. */
"Update transport isolation mode?" = "Päivitä kuljetuksen eristystila?";
/* rcv group event chat item */
"updated group profile" = "päivitetty ryhmäprofiili";
/* No comment provided by engineer. */
"Updating settings will re-connect the client to all servers." = "Asetusten päivittäminen yhdistää asiakkaan uudelleen kaikkiin palvelimiin.";
/* No comment provided by engineer. */
"Updating this setting will re-connect the client to all servers." = "Tämän asetuksen päivittäminen yhdistää asiakkaan uudelleen kaikkiin palvelimiin.";
/* No comment provided by engineer. */
"Upgrade and open chat" = "Päivitä ja avaa keskustelu";
@@ -3228,9 +3195,6 @@
/* No comment provided by engineer. */
"User profile" = "Käyttäjäprofiili";
/* No comment provided by engineer. */
"Using .onion hosts requires compatible VPN provider." = ".onion-isäntien käyttäminen vaatii yhteensopivan VPN-palveluntarjoajan.";
/* No comment provided by engineer. */
"Using SimpleX Chat servers." = "Käyttää SimpleX Chat -palvelimia.";
@@ -3345,9 +3309,6 @@
/* No comment provided by engineer. */
"Wrong passphrase!" = "Väärä tunnuslause!";
/* No comment provided by engineer. */
"XFTP servers" = "XFTP-palvelimet";
/* pref value */
"yes" = "kyllä";
@@ -3438,9 +3399,6 @@
/* No comment provided by engineer. */
"You could not be verified; please try again." = "Sinua ei voitu todentaa; yritä uudelleen.";
/* No comment provided by engineer. */
"You have no chats" = "Sinulla ei ole keskusteluja";
/* No comment provided by engineer. */
"You have to enter passphrase every time the app starts - it is not stored on the device." = "Sinun on annettava tunnuslause aina, kun sovellus käynnistyy - sitä ei tallenneta laitteeseen.";
@@ -3522,9 +3480,6 @@
/* No comment provided by engineer. */
"Your chat profiles" = "Keskusteluprofiilisi";
/* No comment provided by engineer. */
"Your contact needs to be online for the connection to complete.\nYou can cancel this connection and remove the contact (and try later with a new link)." = "Kontaktin tulee olla online-tilassa, jotta yhteys voidaan muodostaa.\nVoit peruuttaa tämän yhteyden ja poistaa kontaktin (ja yrittää myöhemmin uudella linkillä).";
/* No comment provided by engineer. */
"Your contact sent a file that is larger than currently supported maximum size (%@)." = "Yhteyshenkilösi lähetti tiedoston, joka on suurempi kuin tällä hetkellä tuettu enimmäiskoko (%@).";
+67 -58
View File
@@ -491,6 +491,9 @@
/* No comment provided by engineer. */
"Allow sending disappearing messages." = "Autorise lenvoi de messages éphémères.";
/* No comment provided by engineer. */
"Allow sharing" = "Autoriser le partage";
/* No comment provided by engineer. */
"Allow to irreversibly delete sent messages. (24 hours)" = "Autoriser la suppression irréversible de messages envoyés. (24 heures)";
@@ -689,12 +692,15 @@
/* rcv group event chat item */
"blocked %@" = "%@ bloqué";
/* blocked chat item */
/* marked deleted chat item preview text */
"blocked by admin" = "bloqué par l'administrateur";
/* No comment provided by engineer. */
"Blocked by admin" = "Bloqué par l'administrateur";
/* No comment provided by engineer. */
"Blur media" = "Flouter les médias";
/* No comment provided by engineer. */
"bold" = "gras";
@@ -1041,6 +1047,9 @@
/* chat list item title (it should not be shown */
"connection established" = "connexion établie";
/* No comment provided by engineer. */
"Connection notifications" = "Notifications de connexion";
/* No comment provided by engineer. */
"Connection request sent!" = "Demande de connexion envoyée !";
@@ -1080,9 +1089,6 @@
/* notification */
"Contact is connected" = "Le contact est connecté";
/* No comment provided by engineer. */
"Contact is not connected yet!" = "Le contact n'est pas encore connecté !";
/* No comment provided by engineer. */
"Contact name" = "Nom du contact";
@@ -1281,6 +1287,9 @@
/* chat item action */
"Delete" = "Supprimer";
/* No comment provided by engineer. */
"Delete %lld messages of members?" = "Supprimer %lld messages de membres?";
/* No comment provided by engineer. */
"Delete %lld messages?" = "Supprimer %lld messages ?";
@@ -1317,12 +1326,6 @@
/* No comment provided by engineer. */
"Delete contact" = "Supprimer le contact";
/* No comment provided by engineer. */
"Delete Contact" = "Supprimer le contact";
/* No comment provided by engineer. */
"Delete contact?\nThis cannot be undone!" = "Supprimer le contact ?\nCette opération ne peut être annulée !";
/* No comment provided by engineer. */
"Delete database" = "Supprimer la base de données";
@@ -1377,9 +1380,6 @@
/* No comment provided by engineer. */
"Delete old database?" = "Supprimer l'ancienne base de données?";
/* No comment provided by engineer. */
"Delete pending connection" = "Supprimer la connexion en attente";
/* No comment provided by engineer. */
"Delete pending connection?" = "Supprimer la connexion en attente ?";
@@ -1434,9 +1434,15 @@
/* No comment provided by engineer. */
"Desktop devices" = "Appareils de bureau";
/* No comment provided by engineer. */
"Destination server address of %@ is incompatible with forwarding server %@ settings." = "L'adresse du serveur de destination %@ est incompatible avec les paramètres du serveur de redirection %@.";
/* snd error text */
"Destination server error: %@" = "Erreur du serveur de destination: %@";
/* No comment provided by engineer. */
"Destination server version of %@ is incompatible with forwarding server %@." = "La version du serveur de destination %@ est incompatible avec le serveur de redirection %@.";
/* No comment provided by engineer. */
"Detailed statistics" = "Statistiques détaillées";
@@ -1485,6 +1491,9 @@
/* No comment provided by engineer. */
"disabled" = "désactivé";
/* No comment provided by engineer. */
"Disabled" = "Désactivé";
/* No comment provided by engineer. */
"Disappearing message" = "Message éphémère";
@@ -1632,6 +1641,9 @@
/* enabled status */
"enabled" = "activé";
/* No comment provided by engineer. */
"Enabled" = "Activé";
/* No comment provided by engineer. */
"Enabled for" = "Activé pour";
@@ -1773,6 +1785,9 @@
/* No comment provided by engineer. */
"Error changing setting" = "Erreur de changement de paramètre";
/* No comment provided by engineer. */
"Error connecting to forwarding server %@. Please try later." = "Erreur de connexion au serveur de redirection %@. Veuillez réessayer plus tard.";
/* No comment provided by engineer. */
"Error creating address" = "Erreur lors de la création de l'adresse";
@@ -1803,9 +1818,6 @@
/* No comment provided by engineer. */
"Error deleting connection" = "Erreur lors de la suppression de la connexion";
/* No comment provided by engineer. */
"Error deleting contact" = "Erreur lors de la suppression du contact";
/* No comment provided by engineer. */
"Error deleting database" = "Erreur lors de la suppression de la base de données";
@@ -2086,6 +2098,15 @@
/* No comment provided by engineer. */
"Forwarded from" = "Transféré depuis";
/* No comment provided by engineer. */
"Forwarding server %@ failed to connect to destination server %@. Please try later." = "Le serveur de redirection %@ n'a pas réussi à se connecter au serveur de destination %@. Veuillez réessayer plus tard.";
/* No comment provided by engineer. */
"Forwarding server address is incompatible with network settings: %@." = "L'adresse du serveur de redirection est incompatible avec les paramètres du réseau: %@.";
/* No comment provided by engineer. */
"Forwarding server version is incompatible with network settings: %@." = "La version du serveur de redirection est incompatible avec les paramètres du réseau: %@.";
/* snd error text */
"Forwarding server: %@\nDestination server error: %@" = "Serveur de transfert: %1$@\nErreur du serveur de destination: %2$@";
@@ -2635,6 +2656,9 @@
/* No comment provided by engineer. */
"Max 30 seconds, received instantly." = "Max 30 secondes, réception immédiate.";
/* blur media */
"Medium" = "Modéré";
/* member role */
"member" = "membre";
@@ -2698,12 +2722,6 @@
/* No comment provided by engineer. */
"Message reception" = "Réception de message";
/* No comment provided by engineer. */
"Message routing fallback" = "Rabattement du routage des messages";
/* No comment provided by engineer. */
"Message routing mode" = "Mode de routage des messages";
/* No comment provided by engineer. */
"Message source remains private." = "La source du message reste privée.";
@@ -2932,6 +2950,9 @@
/* No comment provided by engineer. */
"Not compatible!" = "Non compatible !";
/* No comment provided by engineer. */
"Nothing selected" = "Aucune sélection";
/* No comment provided by engineer. */
"Notifications" = "Notifications";
@@ -2977,10 +2998,10 @@
"One-time invitation link" = "Lien d'invitation unique";
/* No comment provided by engineer. */
"Onion hosts will be required for connection. Requires enabling VPN." = "Les hôtes .onion seront nécessaires pour la connexion. Nécessite l'activation d'un VPN.";
"Onion hosts will be **required** for connection.\nRequires compatible VPN." = "Les hôtes .onion seront **nécessaires** pour la connexion.\nNécessite l'activation d'un VPN.";
/* No comment provided by engineer. */
"Onion hosts will be used when available. Requires enabling VPN." = "Les hôtes .onion seront utilisés dès que possible. Nécessite l'activation d'un VPN.";
"Onion hosts will be used when available.\nRequires compatible VPN." = "Les hôtes .onion seront utilisés dès que possible.\nNécessite l'activation d'un VPN.";
/* No comment provided by engineer. */
"Onion hosts will not be used." = "Les hôtes .onion ne seront pas utilisés.";
@@ -3552,9 +3573,6 @@
/* chat item action */
"Reveal" = "Révéler";
/* No comment provided by engineer. */
"Revert" = "Revenir en arrière";
/* No comment provided by engineer. */
"Revoke" = "Révoquer";
@@ -3699,9 +3717,12 @@
/* chat item text */
"security code changed" = "code de sécurité modifié";
/* No comment provided by engineer. */
/* chat item action */
"Select" = "Choisir";
/* No comment provided by engineer. */
"Selected %lld" = "%lld sélectionné(s)";
/* No comment provided by engineer. */
"Selected chat preferences prohibit this message." = "Les préférences de chat sélectionnées interdisent ce message.";
@@ -3729,9 +3750,6 @@
/* No comment provided by engineer. */
"send direct message" = "envoyer un message direct";
/* No comment provided by engineer. */
"Send direct message" = "Envoyer un message direct";
/* No comment provided by engineer. */
"Send direct message to connect" = "Envoyer un message direct pour vous connecter";
@@ -3933,6 +3951,9 @@
/* No comment provided by engineer. */
"Share this 1-time invite link" = "Partager ce lien d'invitation unique";
/* No comment provided by engineer. */
"Share to SimpleX" = "Partager sur SimpleX";
/* No comment provided by engineer. */
"Share with contacts" = "Partager avec vos contacts";
@@ -3963,6 +3984,9 @@
/* No comment provided by engineer. */
"Show:" = "Afficher :";
/* No comment provided by engineer. */
"SimpleX" = "SimpleX";
/* No comment provided by engineer. */
"SimpleX address" = "Adresse SimpleX";
@@ -4023,8 +4047,8 @@
/* No comment provided by engineer. */
"SMP server" = "Serveur SMP";
/* No comment provided by engineer. */
"SMP servers" = "Serveurs SMP";
/* blur media */
"Soft" = "Léger";
/* No comment provided by engineer. */
"Some non-fatal errors occurred during import - you may see Chat console for more details." = "Des erreurs non fatales se sont produites lors de l'importation - vous pouvez consulter la console de chat pour plus de détails.";
@@ -4095,6 +4119,9 @@
/* No comment provided by engineer. */
"strike" = "barré";
/* blur media */
"Strong" = "Fort";
/* No comment provided by engineer. */
"Submit" = "Soumettre";
@@ -4140,9 +4167,6 @@
/* No comment provided by engineer. */
"Tap to scan" = "Appuyez pour scanner";
/* No comment provided by engineer. */
"Tap to start a new chat" = "Appuyez ici pour démarrer une nouvelle discussion";
/* No comment provided by engineer. */
"TCP connection timeout" = "Délai de connexion TCP";
@@ -4218,6 +4242,12 @@
/* No comment provided by engineer. */
"The message will be marked as moderated for all members." = "Le message sera marqué comme modéré pour tous les membres.";
/* No comment provided by engineer. */
"The messages will be deleted for all members." = "Les messages seront supprimés pour tous les membres.";
/* No comment provided by engineer. */
"The messages will be marked as moderated for all members." = "Les messages seront marqués comme modérés pour tous les membres.";
/* No comment provided by engineer. */
"The next generation of private messaging" = "La nouvelle génération de messagerie privée";
@@ -4408,7 +4438,7 @@
"Unknown error" = "Erreur inconnue";
/* No comment provided by engineer. */
"unknown relays" = "relais inconnus";
"unknown servers" = "relais inconnus";
/* No comment provided by engineer. */
"Unknown servers!" = "Serveurs inconnus!";
@@ -4449,18 +4479,12 @@
/* No comment provided by engineer. */
"Update" = "Mise à jour";
/* No comment provided by engineer. */
"Update .onion hosts setting?" = "Mettre à jour le paramètre des hôtes .onion ?";
/* No comment provided by engineer. */
"Update database passphrase" = "Mise à jour de la phrase secrète de la base de données";
/* No comment provided by engineer. */
"Update network settings?" = "Mettre à jour les paramètres réseau ?";
/* No comment provided by engineer. */
"Update transport isolation mode?" = "Mettre à jour le mode d'isolement du transport ?";
/* rcv group event chat item */
"updated group profile" = "mise à jour du profil de groupe";
@@ -4470,9 +4494,6 @@
/* No comment provided by engineer. */
"Updating settings will re-connect the client to all servers." = "La mise à jour des ces paramètres reconnectera le client à tous les serveurs.";
/* No comment provided by engineer. */
"Updating this setting will re-connect the client to all servers." = "La mise à jour de ce paramètre reconnectera le client à tous les serveurs.";
/* No comment provided by engineer. */
"Upgrade and open chat" = "Mettre à niveau et ouvrir le chat";
@@ -4539,9 +4560,6 @@
/* No comment provided by engineer. */
"User selection" = "Sélection de l'utilisateur";
/* No comment provided by engineer. */
"Using .onion hosts requires compatible VPN provider." = "L'utilisation des hôtes .onion nécessite un fournisseur VPN compatible.";
/* No comment provided by engineer. */
"Using SimpleX Chat servers." = "Vous utilisez les serveurs SimpleX.";
@@ -4734,9 +4752,6 @@
/* No comment provided by engineer. */
"XFTP server" = "Serveur XFTP";
/* No comment provided by engineer. */
"XFTP servers" = "Serveurs XFTP";
/* pref value */
"yes" = "oui";
@@ -4875,9 +4890,6 @@
/* No comment provided by engineer. */
"You have already requested connection!\nRepeat connection request?" = "Vous avez déjà demandé une connexion !\nRépéter la demande de connexion ?";
/* No comment provided by engineer. */
"You have no chats" = "Vous n'avez aucune discussion";
/* No comment provided by engineer. */
"You have to enter passphrase every time the app starts - it is not stored on the device." = "Vous devez saisir la phrase secrète à chaque fois que l'application démarre - elle n'est pas stockée sur l'appareil.";
@@ -4968,9 +4980,6 @@
/* No comment provided by engineer. */
"Your chat profiles" = "Vos profils de chat";
/* No comment provided by engineer. */
"Your contact needs to be online for the connection to complete.\nYou can cancel this connection and remove the contact (and try later with a new link)." = "Votre contact a besoin d'être en ligne pour completer la connexion.\nVous pouvez annuler la connexion et supprimer le contact (et réessayer plus tard avec un autre lien).";
/* No comment provided by engineer. */
"Your contact sent a file that is larger than currently supported maximum size (%@)." = "Votre contact a envoyé un fichier plus grand que la taille maximale supportée actuellement(%@).";
+110 -74
View File
@@ -95,7 +95,7 @@
"**Recommended**: device token and notifications are sent to SimpleX Chat notification server, but not the message content, size or who it is from." = "**Javasolt**: az eszköztoken és az értesítések elküldésre kerülnek a SimpleX Chat értesítési kiszolgálóra, kivéve az üzenet tartalma, mérete vagy az, hogy kitől származik.";
/* No comment provided by engineer. */
"**Warning**: Instant push notifications require passphrase saved in Keychain." = "**Figyelmeztetés**: Az azonnali push-értesítésekhez a kulcstárolóban tárolt jelmondat megadása szükséges.";
"**Warning**: Instant push notifications require passphrase saved in Keychain." = "**Figyelmeztetés**: Az azonnali push-értesítésekhez a kulcstartóban tárolt jelmondat megadása szükséges.";
/* No comment provided by engineer. */
"**Warning**: the archive will be removed." = "**Figyelem**: az archívum törlésre kerül.";
@@ -474,7 +474,7 @@
"Allow disappearing messages only if your contact allows it to you." = "Az eltűnő üzenetek küldése kizárólag abban az esetben van engedélyezve, ha az ismerőse is engedélyezi az ön számára.";
/* No comment provided by engineer. */
"Allow downgrade" = "Korábbi verzióra történő visszatérés engedélyezése";
"Allow downgrade" = "Visszafejlesztés engedélyezése";
/* No comment provided by engineer. */
"Allow irreversible message deletion only if your contact allows it to you. (24 hours)" = "Az üzenetek végleges törlése kizárólag abban az esetben van engedélyezve, ha az ismerőse is engedélyezi. (24 óra)";
@@ -491,6 +491,9 @@
/* No comment provided by engineer. */
"Allow sending disappearing messages." = "Az eltűnő üzenetek küldése engedélyezve van.";
/* No comment provided by engineer. */
"Allow sharing" = "Megosztás engedélyezése";
/* No comment provided by engineer. */
"Allow to irreversibly delete sent messages. (24 hours)" = "Elküldött üzenetek végleges törlésének engedélyezése. (24 óra)";
@@ -689,12 +692,15 @@
/* rcv group event chat item */
"blocked %@" = "letiltotta őt: %@";
/* blocked chat item */
/* marked deleted chat item preview text */
"blocked by admin" = "letiltva az admin által";
/* No comment provided by engineer. */
"Blocked by admin" = "Letiltva az admin által";
/* No comment provided by engineer. */
"Blur media" = "Média elhomályosítása";
/* No comment provided by engineer. */
"bold" = "félkövér";
@@ -828,6 +834,9 @@
/* No comment provided by engineer. */
"Chat database deleted" = "Csevegési adatbázis törölve";
/* No comment provided by engineer. */
"Chat database exported" = "Csevegési adatbázis exportálva";
/* No comment provided by engineer. */
"Chat database imported" = "Csevegési adatbázis importálva";
@@ -919,7 +928,7 @@
"Confirm" = "Megerősítés";
/* No comment provided by engineer. */
"Confirm database upgrades" = "Adatbázis frissítés megerősítése";
"Confirm database upgrades" = "Adatbázis fejlesztésének megerősítése";
/* No comment provided by engineer. */
"Confirm files from unknown servers." = "Ismeretlen kiszolgálókról származó fájlok jóváhagyása.";
@@ -1041,6 +1050,9 @@
/* chat list item title (it should not be shown */
"connection established" = "kapcsolat létrehozva";
/* No comment provided by engineer. */
"Connection notifications" = "Kapcsolódási értesítések";
/* No comment provided by engineer. */
"Connection request sent!" = "Kapcsolódási kérés elküldve!";
@@ -1080,9 +1092,6 @@
/* notification */
"Contact is connected" = "Ismerőse kapcsolódott";
/* No comment provided by engineer. */
"Contact is not connected yet!" = "Az ismerőse még nem kapcsolódott!";
/* No comment provided by engineer. */
"Contact name" = "Ismerős neve";
@@ -1198,13 +1207,13 @@
"Dark mode colors" = "Sötét mód színei";
/* No comment provided by engineer. */
"Database downgrade" = "Visszatérés a korábbi adatbázis verzióra";
"Database downgrade" = "Adatbázis visszafejlesztése";
/* No comment provided by engineer. */
"Database encrypted!" = "Adatbázis titkosítva!";
/* No comment provided by engineer. */
"Database encryption passphrase will be updated and stored in the keychain.\n" = "Az adatbázis titkosítási jelmondata frissül és tárolódik a kulcstárolóban.\n";
"Database encryption passphrase will be updated and stored in the keychain.\n" = "Az adatbázis titkosítási jelmondata frissül és tárolódik a kulcstartóban.\n";
/* No comment provided by engineer. */
"Database encryption passphrase will be updated.\n" = "Adatbázis titkosítási jelmondat frissítve lesz.\n";
@@ -1234,10 +1243,10 @@
"Database passphrase & export" = "Adatbázis jelmondat és exportálás";
/* No comment provided by engineer. */
"Database passphrase is different from saved in the keychain." = "Az adatbázis jelmondata eltér a kulcstárlóban mentettől.";
"Database passphrase is different from saved in the keychain." = "Az adatbázis jelmondata eltér a kulcstartóban mentettől.";
/* No comment provided by engineer. */
"Database passphrase is required to open chat." = "Adatbázis jelmondat szükséges a csevegés megnyitásához.";
"Database passphrase is required to open chat." = "A csevegés megnyitásához adja meg az adatbázis jelmondatát.";
/* No comment provided by engineer. */
"Database upgrade" = "Adatbázis fejlesztése";
@@ -1246,7 +1255,7 @@
"database version is newer than the app, but no down migration for: %@" = "az adatbázis verziója újabb, mint az alkalmazásé, de nincs visszafelé átköltöztetés ehhez: %@";
/* No comment provided by engineer. */
"Database will be encrypted and the passphrase stored in the keychain.\n" = "Az adatbázis titkosítva lesz, a jelmondat pedig a kulcstárolóban lesz tárolva.\n";
"Database will be encrypted and the passphrase stored in the keychain.\n" = "Az adatbázis titkosítva lesz, a jelmondat pedig a kulcstartóban lesz tárolva.\n";
/* No comment provided by engineer. */
"Database will be encrypted.\n" = "Az adatbázis titkosításra kerül.\n";
@@ -1281,6 +1290,9 @@
/* chat item action */
"Delete" = "Törlés";
/* No comment provided by engineer. */
"Delete %lld messages of members?" = "Tagok %lld üzenetének törlése?";
/* No comment provided by engineer. */
"Delete %lld messages?" = "Töröl %lld üzenetet?";
@@ -1317,12 +1329,6 @@
/* No comment provided by engineer. */
"Delete contact" = "Ismerős törlése";
/* No comment provided by engineer. */
"Delete Contact" = "Ismerős törlése";
/* No comment provided by engineer. */
"Delete contact?\nThis cannot be undone!" = "Ismerős törlése?\nEz a művelet nem vonható vissza!";
/* No comment provided by engineer. */
"Delete database" = "Adatbázis törlése";
@@ -1377,9 +1383,6 @@
/* No comment provided by engineer. */
"Delete old database?" = "Régi adatbázis törlése?";
/* No comment provided by engineer. */
"Delete pending connection" = "Függőben lévő kapcsolat törlése";
/* No comment provided by engineer. */
"Delete pending connection?" = "Függő kapcsolatfelvételi kérések törlése?";
@@ -1434,9 +1437,15 @@
/* No comment provided by engineer. */
"Desktop devices" = "Számítógépek";
/* No comment provided by engineer. */
"Destination server address of %@ is incompatible with forwarding server %@ settings." = "A(z) %@ célkiszolgáló címe nem kompatibilis a(z) %@ továbbító kiszolgáló beállításaival.";
/* snd error text */
"Destination server error: %@" = "Célkiszolgáló hiba: %@";
/* No comment provided by engineer. */
"Destination server version of %@ is incompatible with forwarding server %@." = "A(z) %@ célkiszolgáló verziója nem kompatibilis a(z) %@ továbbító kiszolgálóval.";
/* No comment provided by engineer. */
"Detailed statistics" = "Részletes statisztikák";
@@ -1485,6 +1494,9 @@
/* No comment provided by engineer. */
"disabled" = "letiltva";
/* No comment provided by engineer. */
"Disabled" = "Letiltva";
/* No comment provided by engineer. */
"Disappearing message" = "Eltűnő üzenet";
@@ -1540,7 +1552,7 @@
"Don't show again" = "Ne mutasd újra";
/* No comment provided by engineer. */
"Downgrade and open chat" = "Visszatérés a korábbi verzióra és a csevegés megnyitása";
"Downgrade and open chat" = "Visszafejlesztés és a csevegés megnyitása";
/* chat item action */
"Download" = "Letöltés";
@@ -1632,6 +1644,9 @@
/* enabled status */
"enabled" = "engedélyezve";
/* No comment provided by engineer. */
"Enabled" = "Engedélyezve";
/* No comment provided by engineer. */
"Enabled for" = "Engedélyezve";
@@ -1669,7 +1684,7 @@
"Encrypted message: database migration error" = "Titkosított üzenet: adatbázis-átköltöztetés hiba";
/* notification */
"Encrypted message: keychain error" = "Titkosított üzenet: kulcstároló hiba";
"Encrypted message: keychain error" = "Titkosított üzenet: kulcstartó hiba";
/* notification */
"Encrypted message: no passphrase" = "Titkosított üzenet: nincs jelmondat";
@@ -1773,6 +1788,9 @@
/* No comment provided by engineer. */
"Error changing setting" = "Hiba a beállítás megváltoztatásakor";
/* No comment provided by engineer. */
"Error connecting to forwarding server %@. Please try later." = "Hiba a(z) %@ továbbító kiszolgálóhoz való kapcsolódáskor. Próbálja meg később.";
/* No comment provided by engineer. */
"Error creating address" = "Hiba a cím létrehozásakor";
@@ -1803,9 +1821,6 @@
/* No comment provided by engineer. */
"Error deleting connection" = "Hiba a kapcsolat törlésekor";
/* No comment provided by engineer. */
"Error deleting contact" = "Hiba az ismerős törlésekor";
/* No comment provided by engineer. */
"Error deleting database" = "Hiba az adatbázis törlésekor";
@@ -1876,7 +1891,7 @@
"Error saving passcode" = "Hiba a jelkód mentése közben";
/* No comment provided by engineer. */
"Error saving passphrase to keychain" = "Hiba a jelmondat kulcstárolóba történő mentésekor";
"Error saving passphrase to keychain" = "Hiba a jelmondat kulcstartóba történő mentésekor";
/* when migrating */
"Error saving settings" = "Hiba a beállítások mentésekor";
@@ -2086,6 +2101,15 @@
/* No comment provided by engineer. */
"Forwarded from" = "Továbbítva innen:";
/* No comment provided by engineer. */
"Forwarding server %@ failed to connect to destination server %@. Please try later." = "A(z) %@ továbbító kiszolgáló nem tudott csatlakozni a(z) %@ célkiszolgálóhoz. Próbálja meg később.";
/* No comment provided by engineer. */
"Forwarding server address is incompatible with network settings: %@." = "A továbbító kiszolgáló címe nem kompatibilis a hálózati beállításokkal: %@.";
/* No comment provided by engineer. */
"Forwarding server version is incompatible with network settings: %@." = "A továbbító kiszolgáló verziója nem kompatibilis a hálózati beállításokkal: %@.";
/* snd error text */
"Forwarding server: %@\nDestination server error: %@" = "Továbbító kiszolgáló: %1$@\nCélkiszolgáló hiba:%2$@";
@@ -2459,10 +2483,10 @@
"invited via your group link" = "meghíva az ön csoport hivatkozásán keresztül";
/* No comment provided by engineer. */
"iOS Keychain is used to securely store passphrase - it allows receiving push notifications." = "Az iOS kulcstár a jelmondat biztonságos tárolására szolgál - lehetővé teszi a push-értesítések fogadását.";
"iOS Keychain is used to securely store passphrase - it allows receiving push notifications." = "Az iOS kulcstartó a jelmondat biztonságos tárolására szolgál - lehetővé teszi a push-értesítések fogadását.";
/* No comment provided by engineer. */
"iOS Keychain will be used to securely store passphrase after you restart the app or change passphrase - it will allow receiving push notifications." = "Az iOS kulcstár az alkalmazás újraindítása, vagy a jelmondat módosítása után a jelmondat biztonságos tárolására szolgál - lehetővé teszi a push-értesítések fogadását.";
"iOS Keychain will be used to securely store passphrase after you restart the app or change passphrase - it will allow receiving push notifications." = "Az iOS kulcstartó az alkalmazás újraindítása, vagy a jelmondat módosítása után a jelmondat biztonságos tárolására szolgál - lehetővé teszi a push-értesítések fogadását.";
/* No comment provided by engineer. */
"Irreversible message deletion" = "Végleges üzenettörlés";
@@ -2534,10 +2558,10 @@
"Keep your connections" = "Kapcsolatok megtartása";
/* No comment provided by engineer. */
"Keychain error" = "Kulcstároló hiba";
"Keychain error" = "Kulcstartó hiba";
/* No comment provided by engineer. */
"KeyChain error" = "Kulcstároló hiba";
"KeyChain error" = "Kulcstartó hiba";
/* No comment provided by engineer. */
"Large file!" = "Nagy fájl!";
@@ -2635,6 +2659,12 @@
/* No comment provided by engineer. */
"Max 30 seconds, received instantly." = "Max. 30 másodperc, azonnal érkezett.";
/* No comment provided by engineer. */
"Media & file servers" = "Média és fájlkiszolgálók";
/* blur media */
"Medium" = "Közepes";
/* member role */
"member" = "tag";
@@ -2699,10 +2729,7 @@
"Message reception" = "Üzenetjelentés";
/* No comment provided by engineer. */
"Message routing fallback" = "Üzenet útválasztási tartalék";
/* No comment provided by engineer. */
"Message routing mode" = "Üzenet útválasztási mód";
"Message servers" = "Üzenetkiszolgálók";
/* No comment provided by engineer. */
"Message source remains private." = "Az üzenet forrása titokban marad.";
@@ -2932,6 +2959,9 @@
/* No comment provided by engineer. */
"Not compatible!" = "Nem kompatibilis!";
/* No comment provided by engineer. */
"Nothing selected" = "Semmi sincs kiválasztva";
/* No comment provided by engineer. */
"Notifications" = "Értesítések";
@@ -2977,10 +3007,10 @@
"One-time invitation link" = "Egyszer használatos meghívó hivatkozás";
/* No comment provided by engineer. */
"Onion hosts will be required for connection. Requires enabling VPN." = "A kapcsolódáshoz Onion kiszolgálókra lesz szükség. VPN engedélyezése szükséges.";
"Onion hosts will be **required** for connection.\nRequires compatible VPN." = "A kapcsolódáshoz Onion kiszolgálókra lesz szükség.\nVPN engedélyezése szükséges.";
/* No comment provided by engineer. */
"Onion hosts will be used when available. Requires enabling VPN." = "Onion kiszolgálók használata, ha azok rendelkezésre állnak. VPN engedélyezése szükséges.";
"Onion hosts will be used when available.\nRequires compatible VPN." = "Onion kiszolgálók használata, ha azok rendelkezésre állnak.\nVPN engedélyezése szükséges.";
/* No comment provided by engineer. */
"Onion hosts will not be used." = "Onion kiszolgálók nem lesznek használva.";
@@ -3460,7 +3490,7 @@
"Remove member?" = "Biztosan eltávolítja?";
/* No comment provided by engineer. */
"Remove passphrase from keychain?" = "Jelmondat eltávolítása a kulcstárolóból?";
"Remove passphrase from keychain?" = "Jelmondat eltávolítása a kulcstartóból?";
/* No comment provided by engineer. */
"removed" = "eltávolítva";
@@ -3505,7 +3535,7 @@
"Reply" = "Válasz";
/* No comment provided by engineer. */
"Required" = "Megkövetelt";
"Required" = "Szükséges";
/* No comment provided by engineer. */
"Reset" = "Alaphelyzetbe állítás";
@@ -3552,9 +3582,6 @@
/* chat item action */
"Reveal" = "Felfedés";
/* No comment provided by engineer. */
"Revert" = "Visszaállítás";
/* No comment provided by engineer. */
"Revoke" = "Visszavonás";
@@ -3588,6 +3615,9 @@
/* No comment provided by engineer. */
"Save and notify group members" = "Mentés és a csoporttagok értesítése";
/* No comment provided by engineer. */
"Save and reconnect" = "Mentés és újrakapcsolódás";
/* No comment provided by engineer. */
"Save and update group profile" = "Mentés és csoportprofil frissítése";
@@ -3604,7 +3634,7 @@
"Save passphrase and open chat" = "Jelmondat elmentése és csevegés megnyitása";
/* No comment provided by engineer. */
"Save passphrase in Keychain" = "Jelmondat mentése a kulcstárban";
"Save passphrase in Keychain" = "Jelmondat mentése a kulcstartóba";
/* No comment provided by engineer. */
"Save preferences?" = "Beállítások mentése?";
@@ -3699,9 +3729,12 @@
/* chat item text */
"security code changed" = "a biztonsági kód megváltozott";
/* No comment provided by engineer. */
/* chat item action */
"Select" = "Választás";
/* No comment provided by engineer. */
"Selected %lld" = "%lld kiválasztva";
/* No comment provided by engineer. */
"Selected chat preferences prohibit this message." = "A kiválasztott csevegési beállítások tiltják ezt az üzenetet.";
@@ -3729,9 +3762,6 @@
/* No comment provided by engineer. */
"send direct message" = "közvetlen üzenet küldése";
/* No comment provided by engineer. */
"Send direct message" = "Közvetlen üzenet küldése";
/* No comment provided by engineer. */
"Send direct message to connect" = "Közvetlen üzenet küldése a kapcsolódáshoz";
@@ -3934,7 +3964,10 @@
"Share this 1-time invite link" = "Egyszer használatos meghívó hivatkozás megosztása";
/* No comment provided by engineer. */
"Share with contacts" = "Megosztás ismerősökkel";
"Share to SimpleX" = "Megosztás a SimpleX-ben";
/* No comment provided by engineer. */
"Share with contacts" = "Megosztás az ismerősökkel";
/* No comment provided by engineer. */
"Show → on messages sent via private routing." = "Egy „→” jel megjelenítése a privát útválasztáson keresztül küldött üzeneteknél.";
@@ -4026,12 +4059,18 @@
/* No comment provided by engineer. */
"SMP server" = "SMP-kiszolgáló";
/* blur media */
"Soft" = "Enyhe";
/* No comment provided by engineer. */
"SMP servers" = "SMP kiszolgálók";
"Some file(s) were not exported:" = "Néhány fájl nem került exportálásra:";
/* No comment provided by engineer. */
"Some non-fatal errors occurred during import - you may see Chat console for more details." = "Néhány nem végzetes hiba történt az importálás során további részletekért a csevegési konzolban olvashat.";
/* No comment provided by engineer. */
"Some non-fatal errors occurred during import:" = "Néhány nem végzetes hiba történt az importálás során:";
/* notification title */
"Somebody" = "Valaki";
@@ -4098,6 +4137,9 @@
/* No comment provided by engineer. */
"strike" = "áthúzott";
/* blur media */
"Strong" = "Erős";
/* No comment provided by engineer. */
"Submit" = "Elküldés";
@@ -4144,7 +4186,7 @@
"Tap to scan" = "Koppintson a beolvasáshoz";
/* No comment provided by engineer. */
"Tap to start a new chat" = "Koppintson az új csevegés indításához";
"TCP connection" = "TCP kapcsolat";
/* No comment provided by engineer. */
"TCP connection timeout" = "TCP kapcsolat időtúllépés";
@@ -4221,6 +4263,12 @@
/* No comment provided by engineer. */
"The message will be marked as moderated for all members." = "Az üzenet minden tag számára moderáltként lesz megjelölve.";
/* No comment provided by engineer. */
"The messages will be deleted for all members." = "Az üzenetek minden tag számára törlésre kerülnek.";
/* No comment provided by engineer. */
"The messages will be marked as moderated for all members." = "Az üzenetek moderáltként lesznek megjelölve minden tag számára.";
/* No comment provided by engineer. */
"The next generation of private messaging" = "A privát üzenetküldés következő generációja";
@@ -4411,7 +4459,7 @@
"Unknown error" = "Ismeretlen hiba";
/* No comment provided by engineer. */
"unknown relays" = "ismeretlen átjátszók";
"unknown servers" = "ismeretlen átjátszók";
/* No comment provided by engineer. */
"Unknown servers!" = "Ismeretlen kiszolgálók!";
@@ -4452,9 +4500,6 @@
/* No comment provided by engineer. */
"Update" = "Frissítés";
/* No comment provided by engineer. */
"Update .onion hosts setting?" = "Tor .onion kiszolgálók beállításainak frissítése?";
/* No comment provided by engineer. */
"Update database passphrase" = "Adatbázis jelmondat megváltoztatása";
@@ -4462,7 +4507,7 @@
"Update network settings?" = "Hálózati beállítások megváltoztatása?";
/* No comment provided by engineer. */
"Update transport isolation mode?" = "Kapcsolat izolációs mód frissítése?";
"Update settings?" = "Beállítások frissítése?";
/* rcv group event chat item */
"updated group profile" = "frissítette a csoport profilját";
@@ -4474,10 +4519,7 @@
"Updating settings will re-connect the client to all servers." = "A beállítások frissítése a kiszolgálókhoz való újra kapcsolódással jár.";
/* No comment provided by engineer. */
"Updating this setting will re-connect the client to all servers." = "A beállítás frissítésével a kliens újrakapcsolódik az összes kiszolgálóhoz.";
/* No comment provided by engineer. */
"Upgrade and open chat" = "A csevegés frissítése és megnyitása";
"Upgrade and open chat" = "Fejlesztés és a csevegés megnyitása";
/* No comment provided by engineer. */
"Upload errors" = "Feltöltési hibák";
@@ -4542,9 +4584,6 @@
/* No comment provided by engineer. */
"User selection" = "Felhasználó kiválasztása";
/* No comment provided by engineer. */
"Using .onion hosts requires compatible VPN provider." = "A .onion kiszolgálók használatához kompatibilis VPN szolgáltatóra van szükség.";
/* No comment provided by engineer. */
"Using SimpleX Chat servers." = "SimpleX Chat kiszolgálók használatban.";
@@ -4723,23 +4762,20 @@
"Without Tor or VPN, your IP address will be visible to these XFTP relays: %@." = "Tor vagy VPN nélkül az IP-címe látható lesz ezen XFTP átjátszók számára: %@.";
/* No comment provided by engineer. */
"Wrong database passphrase" = "Téves adatbázis jelmondat";
"Wrong database passphrase" = "Hibás adatbázis jelmondat";
/* snd error text */
"Wrong key or unknown connection - most likely this connection is deleted." = "Rossz kulcs vagy ismeretlen kapcsolat - valószínűleg ez a kapcsolat törlődött.";
"Wrong key or unknown connection - most likely this connection is deleted." = "Hibás kulcs vagy ismeretlen kapcsolat - valószínűleg ez a kapcsolat törlődött.";
/* file error text */
"Wrong key or unknown file chunk address - most likely file is deleted." = "Hibás kulcs vagy ismeretlen fájltöredék cím - valószínűleg a fájl törlődött.";
/* No comment provided by engineer. */
"Wrong passphrase!" = "Téves jelmondat!";
"Wrong passphrase!" = "Hibás jelmondat!";
/* No comment provided by engineer. */
"XFTP server" = "XFTP-kiszolgáló";
/* No comment provided by engineer. */
"XFTP servers" = "XFTP kiszolgálók";
/* pref value */
"yes" = "igen";
@@ -4878,9 +4914,6 @@
/* No comment provided by engineer. */
"You have already requested connection!\nRepeat connection request?" = "Már kért egy kapcsolódási kérelmet!\nKapcsolódási kérés megismétlése?";
/* No comment provided by engineer. */
"You have no chats" = "Nincsenek csevegési üzenetek";
/* No comment provided by engineer. */
"You have to enter passphrase every time the app starts - it is not stored on the device." = "A jelmondatot minden alkalommal meg kell adnia, amikor az alkalmazás elindul - nem az eszközön kerül tárolásra.";
@@ -4896,6 +4929,12 @@
/* snd group event chat item */
"you left" = "elhagyta a csoportot";
/* No comment provided by engineer. */
"You may migrate the exported database." = "Az exportált adatbázist átköltöztetheti.";
/* No comment provided by engineer. */
"You may save the exported archive." = "Az exportált archívumot elmentheti.";
/* No comment provided by engineer. */
"You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts." = "A csevegési adatbázis legfrissebb verzióját CSAK egy eszközön kell használnia, ellenkező esetben előfordulhat, hogy az üzeneteket nem fogja megkapni valamennyi ismerőstől.";
@@ -4971,9 +5010,6 @@
/* No comment provided by engineer. */
"Your chat profiles" = "Csevegési profilok";
/* No comment provided by engineer. */
"Your contact needs to be online for the connection to complete.\nYou can cancel this connection and remove the contact (and try later with a new link)." = "Az ismerősének online kell lennie ahhoz, hogy a kapcsolat létrejöjjön.\nVisszavonhatja ezt a kapcsolatfelvételt és törölheti az ismerőst (ezt később ismét megpróbálhatja egy új hivatkozással).";
/* No comment provided by engineer. */
"Your contact sent a file that is larger than currently supported maximum size (%@)." = "Ismerőse olyan fájlt küldött, amely meghaladja a jelenleg támogatott maximális méretet (%@).";
+86 -50
View File
@@ -491,6 +491,9 @@
/* No comment provided by engineer. */
"Allow sending disappearing messages." = "Permetti l'invio di messaggi a tempo.";
/* No comment provided by engineer. */
"Allow sharing" = "Consenti la condivisione";
/* No comment provided by engineer. */
"Allow to irreversibly delete sent messages. (24 hours)" = "Permetti di eliminare irreversibilmente i messaggi inviati. (24 ore)";
@@ -695,6 +698,9 @@
/* No comment provided by engineer. */
"Blocked by admin" = "Bloccato dall'amministratore";
/* No comment provided by engineer. */
"Blur media" = "Sfocatura file multimediali";
/* No comment provided by engineer. */
"bold" = "grassetto";
@@ -828,6 +834,9 @@
/* No comment provided by engineer. */
"Chat database deleted" = "Database della chat eliminato";
/* No comment provided by engineer. */
"Chat database exported" = "Database della chat esportato";
/* No comment provided by engineer. */
"Chat database imported" = "Database della chat importato";
@@ -1041,6 +1050,9 @@
/* chat list item title (it should not be shown */
"connection established" = "connessione stabilita";
/* No comment provided by engineer. */
"Connection notifications" = "Notifiche di connessione";
/* No comment provided by engineer. */
"Connection request sent!" = "Richiesta di connessione inviata!";
@@ -1080,9 +1092,6 @@
/* notification */
"Contact is connected" = "Il contatto è connesso";
/* No comment provided by engineer. */
"Contact is not connected yet!" = "Il contatto non è ancora connesso!";
/* No comment provided by engineer. */
"Contact name" = "Nome del contatto";
@@ -1281,6 +1290,9 @@
/* chat item action */
"Delete" = "Elimina";
/* No comment provided by engineer. */
"Delete %lld messages of members?" = "Eliminare %lld messaggi dei membri?";
/* No comment provided by engineer. */
"Delete %lld messages?" = "Eliminare %lld messaggi?";
@@ -1317,12 +1329,6 @@
/* No comment provided by engineer. */
"Delete contact" = "Elimina contatto";
/* No comment provided by engineer. */
"Delete Contact" = "Elimina contatto";
/* No comment provided by engineer. */
"Delete contact?\nThis cannot be undone!" = "Eliminare il contatto?\nNon è reversibile!";
/* No comment provided by engineer. */
"Delete database" = "Elimina database";
@@ -1377,9 +1383,6 @@
/* No comment provided by engineer. */
"Delete old database?" = "Eliminare il database vecchio?";
/* No comment provided by engineer. */
"Delete pending connection" = "Elimina connessione in attesa";
/* No comment provided by engineer. */
"Delete pending connection?" = "Eliminare la connessione in attesa?";
@@ -1434,9 +1437,15 @@
/* No comment provided by engineer. */
"Desktop devices" = "Dispositivi desktop";
/* No comment provided by engineer. */
"Destination server address of %@ is incompatible with forwarding server %@ settings." = "L'indirizzo del server di destinazione di %@ è incompatibile con le impostazioni del server di inoltro %@.";
/* snd error text */
"Destination server error: %@" = "Errore del server di destinazione: %@";
/* No comment provided by engineer. */
"Destination server version of %@ is incompatible with forwarding server %@." = "La versione del server di destinazione di %@ è incompatibile con il server di inoltro %@.";
/* No comment provided by engineer. */
"Detailed statistics" = "Statistiche dettagliate";
@@ -1485,6 +1494,9 @@
/* No comment provided by engineer. */
"disabled" = "disattivato";
/* No comment provided by engineer. */
"Disabled" = "Disattivato";
/* No comment provided by engineer. */
"Disappearing message" = "Messaggio a tempo";
@@ -1632,6 +1644,9 @@
/* enabled status */
"enabled" = "attivato";
/* No comment provided by engineer. */
"Enabled" = "Attivato";
/* No comment provided by engineer. */
"Enabled for" = "Attivo per";
@@ -1773,6 +1788,9 @@
/* No comment provided by engineer. */
"Error changing setting" = "Errore nella modifica dell'impostazione";
/* No comment provided by engineer. */
"Error connecting to forwarding server %@. Please try later." = "Errore di connessione al server di inoltro %@. Riprova più tardi.";
/* No comment provided by engineer. */
"Error creating address" = "Errore nella creazione dell'indirizzo";
@@ -1803,9 +1821,6 @@
/* No comment provided by engineer. */
"Error deleting connection" = "Errore nell'eliminazione della connessione";
/* No comment provided by engineer. */
"Error deleting contact" = "Errore nell'eliminazione del contatto";
/* No comment provided by engineer. */
"Error deleting database" = "Errore nell'eliminazione del database";
@@ -2086,6 +2101,15 @@
/* No comment provided by engineer. */
"Forwarded from" = "Inoltrato da";
/* No comment provided by engineer. */
"Forwarding server %@ failed to connect to destination server %@. Please try later." = "Il server di inoltro %@ non è riuscito a connettersi al server di destinazione %@. Riprova più tardi.";
/* No comment provided by engineer. */
"Forwarding server address is incompatible with network settings: %@." = "L'indirizzo del server di inoltro è incompatibile con le impostazioni di rete: %@.";
/* No comment provided by engineer. */
"Forwarding server version is incompatible with network settings: %@." = "La versione del server di inoltro è incompatibile con le impostazioni di rete: %@.";
/* snd error text */
"Forwarding server: %@\nDestination server error: %@" = "Server di inoltro: %1$@\nErrore del server di destinazione: %2$@";
@@ -2635,6 +2659,12 @@
/* No comment provided by engineer. */
"Max 30 seconds, received instantly." = "Max 30 secondi, ricevuto istantaneamente.";
/* No comment provided by engineer. */
"Media & file servers" = "Server di multimediali e file";
/* blur media */
"Medium" = "Media";
/* member role */
"member" = "membro";
@@ -2699,10 +2729,7 @@
"Message reception" = "Ricezione messaggi";
/* No comment provided by engineer. */
"Message routing fallback" = "Ripiego instradamento messaggio";
/* No comment provided by engineer. */
"Message routing mode" = "Modalità instradamento messaggio";
"Message servers" = "Server dei messaggi";
/* No comment provided by engineer. */
"Message source remains private." = "La fonte del messaggio resta privata.";
@@ -2932,6 +2959,9 @@
/* No comment provided by engineer. */
"Not compatible!" = "Non compatibile!";
/* No comment provided by engineer. */
"Nothing selected" = "Nessuna selezione";
/* No comment provided by engineer. */
"Notifications" = "Notifiche";
@@ -2977,10 +3007,10 @@
"One-time invitation link" = "Link di invito una tantum";
/* No comment provided by engineer. */
"Onion hosts will be required for connection. Requires enabling VPN." = "Gli host Onion saranno necessari per la connessione. Richiede l'attivazione della VPN.";
"Onion hosts will be **required** for connection.\nRequires compatible VPN." = "Gli host Onion saranno **necessari** per la connessione.\nRichiede l'attivazione della VPN.";
/* No comment provided by engineer. */
"Onion hosts will be used when available. Requires enabling VPN." = "Gli host Onion verranno usati quando disponibili. Richiede l'attivazione della VPN.";
"Onion hosts will be used when available.\nRequires compatible VPN." = "Gli host Onion verranno usati quando disponibili.\nRichiede l'attivazione della VPN.";
/* No comment provided by engineer. */
"Onion hosts will not be used." = "Gli host Onion non verranno usati.";
@@ -3552,9 +3582,6 @@
/* chat item action */
"Reveal" = "Rivela";
/* No comment provided by engineer. */
"Revert" = "Ripristina";
/* No comment provided by engineer. */
"Revoke" = "Revoca";
@@ -3588,6 +3615,9 @@
/* No comment provided by engineer. */
"Save and notify group members" = "Salva e avvisa i membri del gruppo";
/* No comment provided by engineer. */
"Save and reconnect" = "Salva e riconnetti";
/* No comment provided by engineer. */
"Save and update group profile" = "Salva e aggiorna il profilo del gruppo";
@@ -3699,9 +3729,12 @@
/* chat item text */
"security code changed" = "codice di sicurezza modificato";
/* No comment provided by engineer. */
/* chat item action */
"Select" = "Seleziona";
/* No comment provided by engineer. */
"Selected %lld" = "%lld selezionato";
/* No comment provided by engineer. */
"Selected chat preferences prohibit this message." = "Le preferenze della chat selezionata vietano questo messaggio.";
@@ -3729,9 +3762,6 @@
/* No comment provided by engineer. */
"send direct message" = "invia messaggio diretto";
/* No comment provided by engineer. */
"Send direct message" = "Invia messaggio diretto";
/* No comment provided by engineer. */
"Send direct message to connect" = "Invia messaggio diretto per connetterti";
@@ -3933,6 +3963,9 @@
/* No comment provided by engineer. */
"Share this 1-time invite link" = "Condividi questo link di invito una tantum";
/* No comment provided by engineer. */
"Share to SimpleX" = "Condividi in SimpleX";
/* No comment provided by engineer. */
"Share with contacts" = "Condividi con i contatti";
@@ -4026,12 +4059,18 @@
/* No comment provided by engineer. */
"SMP server" = "Server SMP";
/* blur media */
"Soft" = "Leggera";
/* No comment provided by engineer. */
"SMP servers" = "Server SMP";
"Some file(s) were not exported:" = "Alcuni file non sono stati esportati:";
/* No comment provided by engineer. */
"Some non-fatal errors occurred during import - you may see Chat console for more details." = "Si sono verificati alcuni errori non gravi durante l'importazione: vedi la console della chat per i dettagli.";
/* No comment provided by engineer. */
"Some non-fatal errors occurred during import:" = "Si sono verificati alcuni errori non fatali durante l'importazione:";
/* notification title */
"Somebody" = "Qualcuno";
@@ -4098,6 +4137,9 @@
/* No comment provided by engineer. */
"strike" = "barrato";
/* blur media */
"Strong" = "Forte";
/* No comment provided by engineer. */
"Submit" = "Invia";
@@ -4144,7 +4186,7 @@
"Tap to scan" = "Tocca per scansionare";
/* No comment provided by engineer. */
"Tap to start a new chat" = "Tocca per iniziare una chat";
"TCP connection" = "Connessione TCP";
/* No comment provided by engineer. */
"TCP connection timeout" = "Scadenza connessione TCP";
@@ -4221,6 +4263,12 @@
/* No comment provided by engineer. */
"The message will be marked as moderated for all members." = "Il messaggio sarà segnato come moderato per tutti i membri.";
/* No comment provided by engineer. */
"The messages will be deleted for all members." = "I messaggi verranno eliminati per tutti i membri.";
/* No comment provided by engineer. */
"The messages will be marked as moderated for all members." = "I messaggi verranno contrassegnati come moderati per tutti i membri.";
/* No comment provided by engineer. */
"The next generation of private messaging" = "La nuova generazione di messaggistica privata";
@@ -4411,7 +4459,7 @@
"Unknown error" = "Errore sconosciuto";
/* No comment provided by engineer. */
"unknown relays" = "relay sconosciuti";
"unknown servers" = "relay sconosciuti";
/* No comment provided by engineer. */
"Unknown servers!" = "Server sconosciuti!";
@@ -4452,9 +4500,6 @@
/* No comment provided by engineer. */
"Update" = "Aggiorna";
/* No comment provided by engineer. */
"Update .onion hosts setting?" = "Aggiornare l'impostazione degli host .onion?";
/* No comment provided by engineer. */
"Update database passphrase" = "Aggiorna la password del database";
@@ -4462,7 +4507,7 @@
"Update network settings?" = "Aggiornare le impostazioni di rete?";
/* No comment provided by engineer. */
"Update transport isolation mode?" = "Aggiornare la modalità di isolamento del trasporto?";
"Update settings?" = "Aggiornare le impostazioni?";
/* rcv group event chat item */
"updated group profile" = "ha aggiornato il profilo del gruppo";
@@ -4473,9 +4518,6 @@
/* No comment provided by engineer. */
"Updating settings will re-connect the client to all servers." = "L'aggiornamento delle impostazioni riconnetterà il client a tutti i server.";
/* No comment provided by engineer. */
"Updating this setting will re-connect the client to all servers." = "L'aggiornamento di questa impostazione riconnetterà il client a tutti i server.";
/* No comment provided by engineer. */
"Upgrade and open chat" = "Aggiorna e apri chat";
@@ -4542,9 +4584,6 @@
/* No comment provided by engineer. */
"User selection" = "Selezione utente";
/* No comment provided by engineer. */
"Using .onion hosts requires compatible VPN provider." = "L'uso di host .onion richiede un fornitore di VPN compatibile.";
/* No comment provided by engineer. */
"Using SimpleX Chat servers." = "Utilizzo dei server SimpleX Chat.";
@@ -4737,9 +4776,6 @@
/* No comment provided by engineer. */
"XFTP server" = "Server XFTP";
/* No comment provided by engineer. */
"XFTP servers" = "Server XFTP";
/* pref value */
"yes" = "sì";
@@ -4878,9 +4914,6 @@
/* No comment provided by engineer. */
"You have already requested connection!\nRepeat connection request?" = "Hai già richiesto la connessione!\nRipetere la richiesta di connessione?";
/* No comment provided by engineer. */
"You have no chats" = "Non hai chat";
/* No comment provided by engineer. */
"You have to enter passphrase every time the app starts - it is not stored on the device." = "Devi inserire la password ogni volta che si avvia l'app: non viene memorizzata sul dispositivo.";
@@ -4896,6 +4929,12 @@
/* snd group event chat item */
"you left" = "sei uscito/a";
/* No comment provided by engineer. */
"You may migrate the exported database." = "Puoi migrare il database esportato.";
/* No comment provided by engineer. */
"You may save the exported archive." = "Puoi salvare l'archivio esportato.";
/* No comment provided by engineer. */
"You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts." = "Devi usare la versione più recente del tuo database della chat SOLO su un dispositivo, altrimenti potresti non ricevere più i messaggi da alcuni contatti.";
@@ -4971,9 +5010,6 @@
/* No comment provided by engineer. */
"Your chat profiles" = "I tuoi profili di chat";
/* No comment provided by engineer. */
"Your contact needs to be online for the connection to complete.\nYou can cancel this connection and remove the contact (and try later with a new link)." = "Il tuo contatto deve essere in linea per completare la connessione.\nPuoi annullare questa connessione e rimuovere il contatto (e riprovare più tardi con un link nuovo).";
/* No comment provided by engineer. */
"Your contact sent a file that is larger than currently supported maximum size (%@)." = "Il tuo contatto ha inviato un file più grande della dimensione massima attualmente supportata (%@).";
+3 -48
View File
@@ -840,9 +840,6 @@
/* notification */
"Contact is connected" = "連絡先は接続中";
/* No comment provided by engineer. */
"Contact is not connected yet!" = "連絡先がまだ繋がってません!";
/* No comment provided by engineer. */
"Contact name" = "連絡先の名前";
@@ -1026,9 +1023,6 @@
/* No comment provided by engineer. */
"Delete contact" = "連絡先を削除";
/* No comment provided by engineer. */
"Delete Contact" = "連絡先を削除";
/* No comment provided by engineer. */
"Delete database" = "データベースを削除";
@@ -1080,9 +1074,6 @@
/* No comment provided by engineer. */
"Delete old database?" = "古いデータベースを削除しますか?";
/* No comment provided by engineer. */
"Delete pending connection" = "確認待ちの接続を削除";
/* No comment provided by engineer. */
"Delete pending connection?" = "接続待ちの接続を削除しますか?";
@@ -1407,9 +1398,6 @@
/* No comment provided by engineer. */
"Error deleting connection" = "接続の削除エラー";
/* No comment provided by engineer. */
"Error deleting contact" = "連絡先の削除にエラー発生";
/* No comment provided by engineer. */
"Error deleting database" = "データベースの削除にエラー発生";
@@ -2263,10 +2251,10 @@
"One-time invitation link" = "使い捨ての招待リンク";
/* No comment provided by engineer. */
"Onion hosts will be required for connection. Requires enabling VPN." = "接続にオニオンのホストが必要となります。VPN を有効にする必要があります。";
"Onion hosts will be **required** for connection.\nRequires compatible VPN." = "接続にオニオンのホストが必要となります。\nVPN を有効にする必要があります。";
/* No comment provided by engineer. */
"Onion hosts will be used when available. Requires enabling VPN." = "オニオンのホストが利用可能時に使われます。VPN を有効にする必要があります。";
"Onion hosts will be used when available.\nRequires compatible VPN." = "オニオンのホストが利用可能時に使われます。\nVPN を有効にする必要があります。";
/* No comment provided by engineer. */
"Onion hosts will not be used." = "オニオンのホストが使われません。";
@@ -2640,9 +2628,6 @@
/* chat item action */
"Reveal" = "開示する";
/* No comment provided by engineer. */
"Revert" = "元に戻す";
/* No comment provided by engineer. */
"Revoke" = "取り消す";
@@ -2745,7 +2730,7 @@
/* chat item text */
"security code changed" = "セキュリティコードが変更されました";
/* No comment provided by engineer. */
/* chat item action */
"Select" = "選択";
/* No comment provided by engineer. */
@@ -2766,9 +2751,6 @@
/* No comment provided by engineer. */
"Send a live message - it will update for the recipient(s) as you type it" = "ライブメッセージを送信 (入力しながら宛先の画面で更新される)";
/* No comment provided by engineer. */
"Send direct message" = "ダイレクトメッセージを送信";
/* No comment provided by engineer. */
"Send direct message to connect" = "ダイレクトメッセージを送信して接続する";
@@ -2940,9 +2922,6 @@
/* No comment provided by engineer. */
"Small groups (max 20)" = "小グループ(最大20名)";
/* No comment provided by engineer. */
"SMP servers" = "SMPサーバ";
/* No comment provided by engineer. */
"Some non-fatal errors occurred during import - you may see Chat console for more details." = "インポート中に致命的でないエラーが発生しました - 詳細はチャットコンソールを参照してください。";
@@ -3018,9 +2997,6 @@
/* No comment provided by engineer. */
"Tap to join incognito" = "タップしてシークレットモードで参加";
/* No comment provided by engineer. */
"Tap to start a new chat" = "タップして新しいチャットを始める";
/* No comment provided by engineer. */
"TCP connection timeout" = "TCP接続タイムアウト";
@@ -3228,27 +3204,18 @@
/* No comment provided by engineer. */
"Update" = "更新";
/* No comment provided by engineer. */
"Update .onion hosts setting?" = ".onionのホスト設定を更新しますか?";
/* No comment provided by engineer. */
"Update database passphrase" = "データベースのパスフレーズを更新";
/* No comment provided by engineer. */
"Update network settings?" = "ネットワーク設定を更新しますか?";
/* No comment provided by engineer. */
"Update transport isolation mode?" = "トランスポート隔離モードを更新しますか?";
/* rcv group event chat item */
"updated group profile" = "グループプロフィールを更新しました";
/* No comment provided by engineer. */
"Updating settings will re-connect the client to all servers." = "設定を更新すると、全サーバにクライントの再接続が行われます。";
/* No comment provided by engineer. */
"Updating this setting will re-connect the client to all servers." = "設定を更新すると、全サーバにクライントの再接続が行われます。";
/* No comment provided by engineer. */
"Upgrade and open chat" = "アップグレードしてチャットを開く";
@@ -3282,9 +3249,6 @@
/* No comment provided by engineer. */
"User profile" = "ユーザープロフィール";
/* No comment provided by engineer. */
"Using .onion hosts requires compatible VPN provider." = ".onionホストを使用するには、互換性のあるVPNプロバイダーが必要です。";
/* No comment provided by engineer. */
"Using SimpleX Chat servers." = "SimpleX チャット サーバーを使用する。";
@@ -3399,9 +3363,6 @@
/* No comment provided by engineer. */
"Wrong passphrase!" = "パスフレーズが違います!";
/* No comment provided by engineer. */
"XFTP servers" = "XFTPサーバ";
/* pref value */
"yes" = "はい";
@@ -3492,9 +3453,6 @@
/* No comment provided by engineer. */
"You could not be verified; please try again." = "確認できませんでした。 もう一度お試しください。";
/* No comment provided by engineer. */
"You have no chats" = "あなたはチャットがありません";
/* No comment provided by engineer. */
"You have to enter passphrase every time the app starts - it is not stored on the device." = "アプリ起動時にパスフレーズを入力しなければなりません。端末に保存されてません。";
@@ -3576,9 +3534,6 @@
/* No comment provided by engineer. */
"Your chat profiles" = "あなたのチャットプロフィール";
/* No comment provided by engineer. */
"Your contact needs to be online for the connection to complete.\nYou can cancel this connection and remove the contact (and try later with a new link)." = "接続を完了するには、連絡相手がオンラインになる必要があります。\nこの接続をキャンセルして、連絡先を削除をすることもできます (後でやり直すこともできます)。";
/* No comment provided by engineer. */
"Your contact sent a file that is larger than currently supported maximum size (%@)." = "連絡先が現在サポートされている最大サイズ (%@) より大きいファイルを送信しました。";
+87 -51
View File
@@ -491,6 +491,9 @@
/* No comment provided by engineer. */
"Allow sending disappearing messages." = "Toestaan dat verdwijnende berichten worden verzonden.";
/* No comment provided by engineer. */
"Allow sharing" = "Delen toestaan";
/* No comment provided by engineer. */
"Allow to irreversibly delete sent messages. (24 hours)" = "Sta toe om verzonden berichten onomkeerbaar te verwijderen. (24 uur)";
@@ -689,12 +692,15 @@
/* rcv group event chat item */
"blocked %@" = "geblokkeerd %@";
/* blocked chat item */
/* marked deleted chat item preview text */
"blocked by admin" = "geblokkeerd door beheerder";
/* No comment provided by engineer. */
"Blocked by admin" = "Geblokkeerd door beheerder";
/* No comment provided by engineer. */
"Blur media" = "Vervaag media";
/* No comment provided by engineer. */
"bold" = "vetgedrukt";
@@ -828,6 +834,9 @@
/* No comment provided by engineer. */
"Chat database deleted" = "Chat database verwijderd";
/* No comment provided by engineer. */
"Chat database exported" = "Chat database geëxporteerd";
/* No comment provided by engineer. */
"Chat database imported" = "Chat database geïmporteerd";
@@ -1041,6 +1050,9 @@
/* chat list item title (it should not be shown */
"connection established" = "verbinding gemaakt";
/* No comment provided by engineer. */
"Connection notifications" = "Verbindingsmeldingen";
/* No comment provided by engineer. */
"Connection request sent!" = "Verbindingsverzoek verzonden!";
@@ -1080,9 +1092,6 @@
/* notification */
"Contact is connected" = "Contact is verbonden";
/* No comment provided by engineer. */
"Contact is not connected yet!" = "Contact is nog niet verbonden!";
/* No comment provided by engineer. */
"Contact name" = "Contact naam";
@@ -1281,6 +1290,9 @@
/* chat item action */
"Delete" = "Verwijderen";
/* No comment provided by engineer. */
"Delete %lld messages of members?" = "%lld berichten van leden verwijderen?";
/* No comment provided by engineer. */
"Delete %lld messages?" = "%lld berichten verwijderen?";
@@ -1317,12 +1329,6 @@
/* No comment provided by engineer. */
"Delete contact" = "Verwijder contact";
/* No comment provided by engineer. */
"Delete Contact" = "Verwijder contact";
/* No comment provided by engineer. */
"Delete contact?\nThis cannot be undone!" = "Verwijder contact?\nDit kan niet ongedaan gemaakt worden!";
/* No comment provided by engineer. */
"Delete database" = "Database verwijderen";
@@ -1377,9 +1383,6 @@
/* No comment provided by engineer. */
"Delete old database?" = "Oude database verwijderen?";
/* No comment provided by engineer. */
"Delete pending connection" = "Wachtende verbinding verwijderen";
/* No comment provided by engineer. */
"Delete pending connection?" = "Wachtende verbinding verwijderen?";
@@ -1434,9 +1437,15 @@
/* No comment provided by engineer. */
"Desktop devices" = "Desktop apparaten";
/* No comment provided by engineer. */
"Destination server address of %@ is incompatible with forwarding server %@ settings." = "Het bestemmingsserveradres van %@ is niet compatibel met de doorstuurserverinstellingen %@.";
/* snd error text */
"Destination server error: %@" = "Bestemmingsserverfout: %@";
/* No comment provided by engineer. */
"Destination server version of %@ is incompatible with forwarding server %@." = "De versie van de bestemmingsserver %@ is niet compatibel met de doorstuurserver %@.";
/* No comment provided by engineer. */
"Detailed statistics" = "Gedetailleerde statistieken";
@@ -1485,6 +1494,9 @@
/* No comment provided by engineer. */
"disabled" = "uitgeschakeld";
/* No comment provided by engineer. */
"Disabled" = "Uitgeschakeld";
/* No comment provided by engineer. */
"Disappearing message" = "Verdwijnend bericht";
@@ -1632,6 +1644,9 @@
/* enabled status */
"enabled" = "ingeschakeld";
/* No comment provided by engineer. */
"Enabled" = "Ingeschakeld";
/* No comment provided by engineer. */
"Enabled for" = "Ingeschakeld voor";
@@ -1773,6 +1788,9 @@
/* No comment provided by engineer. */
"Error changing setting" = "Fout bij wijzigen van instelling";
/* No comment provided by engineer. */
"Error connecting to forwarding server %@. Please try later." = "Fout bij het verbinden met doorstuurserver %@. Probeer het later opnieuw.";
/* No comment provided by engineer. */
"Error creating address" = "Fout bij aanmaken van adres";
@@ -1803,9 +1821,6 @@
/* No comment provided by engineer. */
"Error deleting connection" = "Fout bij verwijderen van verbinding";
/* No comment provided by engineer. */
"Error deleting contact" = "Fout bij het verwijderen van contact";
/* No comment provided by engineer. */
"Error deleting database" = "Fout bij het verwijderen van de database";
@@ -2086,6 +2101,15 @@
/* No comment provided by engineer. */
"Forwarded from" = "Doorgestuurd vanuit";
/* No comment provided by engineer. */
"Forwarding server %@ failed to connect to destination server %@. Please try later." = "De doorstuurserver %@ kon geen verbinding maken met de bestemmingsserver %@. Probeer het later opnieuw.";
/* No comment provided by engineer. */
"Forwarding server address is incompatible with network settings: %@." = "Het adres van de doorstuurserver is niet compatibel met de netwerkinstellingen: %@.";
/* No comment provided by engineer. */
"Forwarding server version is incompatible with network settings: %@." = "De doorstuurserverversie is niet compatibel met de netwerkinstellingen: %@.";
/* snd error text */
"Forwarding server: %@\nDestination server error: %@" = "Doorstuurserver: %1$@\nBestemmingsserverfout: %2$@";
@@ -2635,6 +2659,12 @@
/* No comment provided by engineer. */
"Max 30 seconds, received instantly." = "Max 30 seconden, direct ontvangen.";
/* No comment provided by engineer. */
"Media & file servers" = "Media- en bestandsservers";
/* blur media */
"Medium" = "Medium";
/* member role */
"member" = "lid";
@@ -2699,10 +2729,7 @@
"Message reception" = "Bericht ontvangst";
/* No comment provided by engineer. */
"Message routing fallback" = "Terugval op berichtroutering";
/* No comment provided by engineer. */
"Message routing mode" = "Berichtrouteringsmodus";
"Message servers" = "Berichtservers";
/* No comment provided by engineer. */
"Message source remains private." = "Berichtbron blijft privé.";
@@ -2932,6 +2959,9 @@
/* No comment provided by engineer. */
"Not compatible!" = "Niet compatibel!";
/* No comment provided by engineer. */
"Nothing selected" = "Niets geselecteerd";
/* No comment provided by engineer. */
"Notifications" = "Meldingen";
@@ -2977,10 +3007,10 @@
"One-time invitation link" = "Eenmalige uitnodiging link";
/* No comment provided by engineer. */
"Onion hosts will be required for connection. Requires enabling VPN." = "Onion hosts zullen nodig zijn voor verbinding. Vereist het inschakelen van VPN.";
"Onion hosts will be **required** for connection.\nRequires compatible VPN." = "Onion hosts zullen nodig zijn voor verbinding.\nVereist het inschakelen van VPN.";
/* No comment provided by engineer. */
"Onion hosts will be used when available. Requires enabling VPN." = "Onion hosts worden gebruikt indien beschikbaar. Vereist het inschakelen van VPN.";
"Onion hosts will be used when available.\nRequires compatible VPN." = "Onion hosts worden gebruikt indien beschikbaar.\nVereist het inschakelen van VPN.";
/* No comment provided by engineer. */
"Onion hosts will not be used." = "Onion hosts worden niet gebruikt.";
@@ -3552,9 +3582,6 @@
/* chat item action */
"Reveal" = "Onthullen";
/* No comment provided by engineer. */
"Revert" = "Terugdraaien";
/* No comment provided by engineer. */
"Revoke" = "Intrekken";
@@ -3588,6 +3615,9 @@
/* No comment provided by engineer. */
"Save and notify group members" = "Opslaan en groep leden melden";
/* No comment provided by engineer. */
"Save and reconnect" = "Opslaan en opnieuw verbinden";
/* No comment provided by engineer. */
"Save and update group profile" = "Groep profiel opslaan en bijwerken";
@@ -3699,9 +3729,12 @@
/* chat item text */
"security code changed" = "beveiligingscode gewijzigd";
/* No comment provided by engineer. */
/* chat item action */
"Select" = "Selecteer";
/* No comment provided by engineer. */
"Selected %lld" = "%lld geselecteerd";
/* No comment provided by engineer. */
"Selected chat preferences prohibit this message." = "Geselecteerde chat voorkeuren verbieden dit bericht.";
@@ -3729,9 +3762,6 @@
/* No comment provided by engineer. */
"send direct message" = "stuur een direct bericht";
/* No comment provided by engineer. */
"Send direct message" = "Direct bericht sturen";
/* No comment provided by engineer. */
"Send direct message to connect" = "Stuur een direct bericht om verbinding te maken";
@@ -3933,6 +3963,9 @@
/* No comment provided by engineer. */
"Share this 1-time invite link" = "Deel deze eenmalige uitnodigingslink";
/* No comment provided by engineer. */
"Share to SimpleX" = "Delen op SimpleX";
/* No comment provided by engineer. */
"Share with contacts" = "Delen met contacten";
@@ -4026,12 +4059,18 @@
/* No comment provided by engineer. */
"SMP server" = "SMP server";
/* blur media */
"Soft" = "Soft";
/* No comment provided by engineer. */
"SMP servers" = "SMP servers";
"Some file(s) were not exported:" = "Sommige bestanden zijn niet geëxporteerd:";
/* No comment provided by engineer. */
"Some non-fatal errors occurred during import - you may see Chat console for more details." = "Er zijn enkele niet-fatale fouten opgetreden tijdens het importeren - u kunt de Chat console raadplegen voor meer details.";
/* No comment provided by engineer. */
"Some non-fatal errors occurred during import:" = "Er zijn enkele niet-fatale fouten opgetreden tijdens het importeren:";
/* notification title */
"Somebody" = "Iemand";
@@ -4098,6 +4137,9 @@
/* No comment provided by engineer. */
"strike" = "staking";
/* blur media */
"Strong" = "Krachtig";
/* No comment provided by engineer. */
"Submit" = "Indienen";
@@ -4144,7 +4186,7 @@
"Tap to scan" = "Tik om te scannen";
/* No comment provided by engineer. */
"Tap to start a new chat" = "Tik om een nieuw gesprek te starten";
"TCP connection" = "TCP verbinding";
/* No comment provided by engineer. */
"TCP connection timeout" = "Timeout van TCP-verbinding";
@@ -4221,6 +4263,12 @@
/* No comment provided by engineer. */
"The message will be marked as moderated for all members." = "Het bericht wordt gemarkeerd als gemodereerd voor alle leden.";
/* No comment provided by engineer. */
"The messages will be deleted for all members." = "De berichten worden voor alle leden verwijderd.";
/* No comment provided by engineer. */
"The messages will be marked as moderated for all members." = "De berichten worden voor alle leden als gemodereerd gemarkeerd.";
/* No comment provided by engineer. */
"The next generation of private messaging" = "De volgende generatie privéberichten";
@@ -4411,7 +4459,7 @@
"Unknown error" = "Onbekende fout";
/* No comment provided by engineer. */
"unknown relays" = "onbekende relays";
"unknown servers" = "onbekende relays";
/* No comment provided by engineer. */
"Unknown servers!" = "Onbekende servers!";
@@ -4452,9 +4500,6 @@
/* No comment provided by engineer. */
"Update" = "Update";
/* No comment provided by engineer. */
"Update .onion hosts setting?" = ".onion hosts-instelling updaten?";
/* No comment provided by engineer. */
"Update database passphrase" = "Database wachtwoord bijwerken";
@@ -4462,7 +4507,7 @@
"Update network settings?" = "Netwerk instellingen bijwerken?";
/* No comment provided by engineer. */
"Update transport isolation mode?" = "Transportisolatiemodus updaten?";
"Update settings?" = "Instellingen actualiseren?";
/* rcv group event chat item */
"updated group profile" = "bijgewerkt groep profiel";
@@ -4473,9 +4518,6 @@
/* No comment provided by engineer. */
"Updating settings will re-connect the client to all servers." = "Door de instellingen bij te werken, wordt de client opnieuw verbonden met alle servers.";
/* No comment provided by engineer. */
"Updating this setting will re-connect the client to all servers." = "Als u deze instelling bijwerkt, wordt de client opnieuw verbonden met alle servers.";
/* No comment provided by engineer. */
"Upgrade and open chat" = "Upgrade en open chat";
@@ -4542,9 +4584,6 @@
/* No comment provided by engineer. */
"User selection" = "Gebruikersselectie";
/* No comment provided by engineer. */
"Using .onion hosts requires compatible VPN provider." = "Het gebruik van .onion-hosts vereist een compatibele VPN-provider.";
/* No comment provided by engineer. */
"Using SimpleX Chat servers." = "SimpleX Chat servers gebruiken.";
@@ -4737,9 +4776,6 @@
/* No comment provided by engineer. */
"XFTP server" = "XFTP server";
/* No comment provided by engineer. */
"XFTP servers" = "XFTP servers";
/* pref value */
"yes" = "Ja";
@@ -4878,9 +4914,6 @@
/* No comment provided by engineer. */
"You have already requested connection!\nRepeat connection request?" = "Je hebt al verbinding aangevraagd!\nVerbindingsverzoek herhalen?";
/* No comment provided by engineer. */
"You have no chats" = "Je hebt geen gesprekken";
/* No comment provided by engineer. */
"You have to enter passphrase every time the app starts - it is not stored on the device." = "U moet elke keer dat de app start het wachtwoord invoeren, deze wordt niet op het apparaat opgeslagen.";
@@ -4896,6 +4929,12 @@
/* snd group event chat item */
"you left" = "jij bent vertrokken";
/* No comment provided by engineer. */
"You may migrate the exported database." = "U kunt de geëxporteerde database migreren.";
/* No comment provided by engineer. */
"You may save the exported archive." = "U kunt het geëxporteerde archief opslaan.";
/* No comment provided by engineer. */
"You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts." = "U mag ALLEEN de meest recente versie van uw chat database op één apparaat gebruiken, anders ontvangt u mogelijk geen berichten meer van sommige contacten.";
@@ -4971,9 +5010,6 @@
/* No comment provided by engineer. */
"Your chat profiles" = "Uw chat profielen";
/* No comment provided by engineer. */
"Your contact needs to be online for the connection to complete.\nYou can cancel this connection and remove the contact (and try later with a new link)." = "Uw contact moet online zijn om de verbinding te voltooien.\nU kunt deze verbinding verbreken en het contact verwijderen en later proberen met een nieuwe link.";
/* No comment provided by engineer. */
"Your contact sent a file that is larger than currently supported maximum size (%@)." = "Uw contact heeft een bestand verzonden dat groter is dan de momenteel ondersteunde maximale grootte (%@).";
+5 -59
View File
@@ -689,7 +689,7 @@
/* rcv group event chat item */
"blocked %@" = "zablokowany %@";
/* blocked chat item */
/* marked deleted chat item preview text */
"blocked by admin" = "zablokowany przez admina";
/* No comment provided by engineer. */
@@ -1080,9 +1080,6 @@
/* notification */
"Contact is connected" = "Kontakt jest połączony";
/* No comment provided by engineer. */
"Contact is not connected yet!" = "Kontakt nie jest jeszcze połączony!";
/* No comment provided by engineer. */
"Contact name" = "Nazwa kontaktu";
@@ -1317,12 +1314,6 @@
/* No comment provided by engineer. */
"Delete contact" = "Usuń kontakt";
/* No comment provided by engineer. */
"Delete Contact" = "Usuń Kontakt";
/* No comment provided by engineer. */
"Delete contact?\nThis cannot be undone!" = "Usunąć kontakt?\nTo nie może być cofnięte!";
/* No comment provided by engineer. */
"Delete database" = "Usuń bazę danych";
@@ -1377,9 +1368,6 @@
/* No comment provided by engineer. */
"Delete old database?" = "Usunąć starą bazę danych?";
/* No comment provided by engineer. */
"Delete pending connection" = "Usuń oczekujące połączenie";
/* No comment provided by engineer. */
"Delete pending connection?" = "Usunąć oczekujące połączenie?";
@@ -1803,9 +1791,6 @@
/* No comment provided by engineer. */
"Error deleting connection" = "Błąd usuwania połączenia";
/* No comment provided by engineer. */
"Error deleting contact" = "Błąd usuwania kontaktu";
/* No comment provided by engineer. */
"Error deleting database" = "Błąd usuwania bazy danych";
@@ -2698,12 +2683,6 @@
/* No comment provided by engineer. */
"Message reception" = "Odebranie wiadomości";
/* No comment provided by engineer. */
"Message routing fallback" = "Rezerwowe trasowania wiadomości";
/* No comment provided by engineer. */
"Message routing mode" = "Tryb trasowania wiadomości";
/* No comment provided by engineer. */
"Message source remains private." = "Źródło wiadomości pozostaje prywatne.";
@@ -2977,10 +2956,10 @@
"One-time invitation link" = "Jednorazowy link zaproszenia";
/* No comment provided by engineer. */
"Onion hosts will be required for connection. Requires enabling VPN." = "Hosty onion będą wymagane do połączenia. Wymaga włączenia VPN.";
"Onion hosts will be **required** for connection.\nRequires compatible VPN." = "Hosty onion będą wymagane do połączenia.\nWymaga włączenia VPN.";
/* No comment provided by engineer. */
"Onion hosts will be used when available. Requires enabling VPN." = "Hosty onion będą używane, gdy będą dostępne. Wymaga włączenia VPN.";
"Onion hosts will be used when available.\nRequires compatible VPN." = "Hosty onion będą używane, gdy będą dostępne.\nWymaga włączenia VPN.";
/* No comment provided by engineer. */
"Onion hosts will not be used." = "Hosty onion nie będą używane.";
@@ -3552,9 +3531,6 @@
/* chat item action */
"Reveal" = "Ujawnij";
/* No comment provided by engineer. */
"Revert" = "Przywrócić";
/* No comment provided by engineer. */
"Revoke" = "Odwołaj";
@@ -3699,7 +3675,7 @@
/* chat item text */
"security code changed" = "kod bezpieczeństwa zmieniony";
/* No comment provided by engineer. */
/* chat item action */
"Select" = "Wybierz";
/* No comment provided by engineer. */
@@ -3729,9 +3705,6 @@
/* No comment provided by engineer. */
"send direct message" = "wyślij wiadomość bezpośrednią";
/* No comment provided by engineer. */
"Send direct message" = "Wyślij wiadomość bezpośrednią";
/* No comment provided by engineer. */
"Send direct message to connect" = "Wyślij wiadomość bezpośrednią aby połączyć";
@@ -4026,9 +3999,6 @@
/* No comment provided by engineer. */
"SMP server" = "Serwer SMP";
/* No comment provided by engineer. */
"SMP servers" = "Serwery SMP";
/* No comment provided by engineer. */
"Some non-fatal errors occurred during import - you may see Chat console for more details." = "Podczas importu wystąpiły niekrytyczne błędy - więcej szczegółów można znaleźć w konsoli czatu.";
@@ -4143,9 +4113,6 @@
/* No comment provided by engineer. */
"Tap to scan" = "Dotknij, aby zeskanować";
/* No comment provided by engineer. */
"Tap to start a new chat" = "Dotknij, aby rozpocząć nowy czat";
/* No comment provided by engineer. */
"TCP connection timeout" = "Limit czasu połączenia TCP";
@@ -4411,7 +4378,7 @@
"Unknown error" = "Nieznany błąd";
/* No comment provided by engineer. */
"unknown relays" = "nieznane przekaźniki";
"unknown servers" = "nieznane przekaźniki";
/* No comment provided by engineer. */
"Unknown servers!" = "Nieznane serwery!";
@@ -4452,18 +4419,12 @@
/* No comment provided by engineer. */
"Update" = "Aktualizuj";
/* No comment provided by engineer. */
"Update .onion hosts setting?" = "Zaktualizować ustawienie hostów .onion?";
/* No comment provided by engineer. */
"Update database passphrase" = "Aktualizuj hasło do bazy danych";
/* No comment provided by engineer. */
"Update network settings?" = "Zaktualizować ustawienia sieci?";
/* No comment provided by engineer. */
"Update transport isolation mode?" = "Zaktualizować tryb izolacji transportu?";
/* rcv group event chat item */
"updated group profile" = "zaktualizowano profil grupy";
@@ -4473,9 +4434,6 @@
/* No comment provided by engineer. */
"Updating settings will re-connect the client to all servers." = "Aktualizacja ustawień spowoduje ponowne połączenie klienta ze wszystkimi serwerami.";
/* No comment provided by engineer. */
"Updating this setting will re-connect the client to all servers." = "Aktualizacja tych ustawień spowoduje ponowne połączenie klienta ze wszystkimi serwerami.";
/* No comment provided by engineer. */
"Upgrade and open chat" = "Zaktualizuj i otwórz czat";
@@ -4542,9 +4500,6 @@
/* No comment provided by engineer. */
"User selection" = "Wybór użytkownika";
/* No comment provided by engineer. */
"Using .onion hosts requires compatible VPN provider." = "Używanie hostów .onion wymaga kompatybilnego dostawcy VPN.";
/* No comment provided by engineer. */
"Using SimpleX Chat servers." = "Używanie serwerów SimpleX Chat.";
@@ -4737,9 +4692,6 @@
/* No comment provided by engineer. */
"XFTP server" = "Serwer XFTP";
/* No comment provided by engineer. */
"XFTP servers" = "Serwery XFTP";
/* pref value */
"yes" = "tak";
@@ -4878,9 +4830,6 @@
/* No comment provided by engineer. */
"You have already requested connection!\nRepeat connection request?" = "Już prosiłeś o połączenie!\nPowtórzyć prośbę połączenia?";
/* No comment provided by engineer. */
"You have no chats" = "Nie masz czatów";
/* No comment provided by engineer. */
"You have to enter passphrase every time the app starts - it is not stored on the device." = "Musisz wprowadzić hasło przy każdym uruchomieniu aplikacji - nie jest one przechowywane na urządzeniu.";
@@ -4971,9 +4920,6 @@
/* No comment provided by engineer. */
"Your chat profiles" = "Twoje profile czatu";
/* No comment provided by engineer. */
"Your contact needs to be online for the connection to complete.\nYou can cancel this connection and remove the contact (and try later with a new link)." = "Twój kontakt musi być online, aby połączenie zostało zakończone.\nMożesz anulować to połączenie i usunąć kontakt (i spróbować później z nowym linkiem).";
/* No comment provided by engineer. */
"Your contact sent a file that is larger than currently supported maximum size (%@)." = "Twój kontakt wysłał plik, który jest większy niż obecnie obsługiwany maksymalny rozmiar (%@).";
+4 -58
View File
@@ -996,9 +996,6 @@
/* notification */
"Contact is connected" = "Соединение с контактом установлено";
/* No comment provided by engineer. */
"Contact is not connected yet!" = "Соединение еще не установлено!";
/* No comment provided by engineer. */
"Contact name" = "Имена контактов";
@@ -1212,12 +1209,6 @@
/* No comment provided by engineer. */
"Delete contact" = "Удалить контакт";
/* No comment provided by engineer. */
"Delete Contact" = "Удалить контакт";
/* No comment provided by engineer. */
"Delete contact?\nThis cannot be undone!" = "Удалить контакт?\nЭто не может быть отменено!";
/* No comment provided by engineer. */
"Delete database" = "Удалить данные чата";
@@ -1272,9 +1263,6 @@
/* No comment provided by engineer. */
"Delete old database?" = "Удалить предыдущую версию данных?";
/* No comment provided by engineer. */
"Delete pending connection" = "Удалить соединение";
/* No comment provided by engineer. */
"Delete pending connection?" = "Удалить ожидаемое соединение?";
@@ -1674,9 +1662,6 @@
/* No comment provided by engineer. */
"Error deleting connection" = "Ошибка при удалении соединения";
/* No comment provided by engineer. */
"Error deleting contact" = "Ошибка при удалении контакта";
/* No comment provided by engineer. */
"Error deleting database" = "Ошибка при удалении данных чата";
@@ -2500,12 +2485,6 @@
/* notification */
"message received" = "получено сообщение";
/* No comment provided by engineer. */
"Message routing fallback" = "Прямая доставка сообщений";
/* No comment provided by engineer. */
"Message routing mode" = "Режим доставки сообщений";
/* No comment provided by engineer. */
"Message source remains private." = "Источник сообщения остаётся конфиденциальным.";
@@ -2761,10 +2740,10 @@
"One-time invitation link" = "Одноразовая ссылка";
/* No comment provided by engineer. */
"Onion hosts will be required for connection. Requires enabling VPN." = "Подключаться только к onion хостам. Требуется включенный VPN.";
"Onion hosts will be **required** for connection.\nRequires compatible VPN." = "Подключаться только к **onion** хостам.\nТребуется совместимый VPN.";
/* No comment provided by engineer. */
"Onion hosts will be used when available. Requires enabling VPN." = "Onion хосты используются, если возможно. Требуется включенный VPN.";
"Onion hosts will be used when available.\nRequires compatible VPN." = "Onion хосты используются, если возможно.\nТребуется совместимый VPN.";
/* No comment provided by engineer. */
"Onion hosts will not be used." = "Onion хосты не используются.";
@@ -3261,9 +3240,6 @@
/* chat item action */
"Reveal" = "Показать";
/* No comment provided by engineer. */
"Revert" = "Отменить изменения";
/* No comment provided by engineer. */
"Revoke" = "Отозвать";
@@ -3396,7 +3372,7 @@
/* chat item text */
"security code changed" = "код безопасности изменился";
/* No comment provided by engineer. */
/* chat item action */
"Select" = "Выбрать";
/* No comment provided by engineer. */
@@ -3423,9 +3399,6 @@
/* No comment provided by engineer. */
"send direct message" = "отправьте сообщение";
/* No comment provided by engineer. */
"Send direct message" = "Отправить сообщение";
/* No comment provided by engineer. */
"Send direct message to connect" = "Отправьте сообщение чтобы соединиться";
@@ -3666,9 +3639,6 @@
/* No comment provided by engineer. */
"Small groups (max 20)" = "Маленькие группы (до 20)";
/* No comment provided by engineer. */
"SMP servers" = "SMP серверы";
/* No comment provided by engineer. */
"Some non-fatal errors occurred during import - you may see Chat console for more details." = "Во время импорта произошли некоторые ошибки - для получения более подробной информации вы можете обратиться к консоли.";
@@ -3768,9 +3738,6 @@
/* No comment provided by engineer. */
"Tap to scan" = "Нажмите, чтобы сканировать";
/* No comment provided by engineer. */
"Tap to start a new chat" = "Нажмите, чтобы начать чат";
/* No comment provided by engineer. */
"TCP connection timeout" = "Таймаут TCP соединения";
@@ -4018,7 +3985,7 @@
"Unknown error" = "Неизвестная ошибка";
/* No comment provided by engineer. */
"unknown relays" = "неизвестные серверы";
"unknown servers" = "неизвестные серверы";
/* No comment provided by engineer. */
"Unknown servers!" = "Неизвестные серверы!";
@@ -4059,18 +4026,12 @@
/* No comment provided by engineer. */
"Update" = "Обновить";
/* No comment provided by engineer. */
"Update .onion hosts setting?" = "Обновить настройки .onion хостов?";
/* No comment provided by engineer. */
"Update database passphrase" = "Поменять пароль";
/* No comment provided by engineer. */
"Update network settings?" = "Обновить настройки сети?";
/* No comment provided by engineer. */
"Update transport isolation mode?" = "Обновить режим отдельных сессий?";
/* rcv group event chat item */
"updated group profile" = "обновил(а) профиль группы";
@@ -4080,9 +4041,6 @@
/* No comment provided by engineer. */
"Updating settings will re-connect the client to all servers." = "Обновление настроек приведет к сбросу и установке нового соединения со всеми серверами.";
/* No comment provided by engineer. */
"Updating this setting will re-connect the client to all servers." = "Обновление этих настроек приведет к сбросу и установке нового соединения со всеми серверами.";
/* No comment provided by engineer. */
"Upgrade and open chat" = "Обновить и открыть чат";
@@ -4137,9 +4095,6 @@
/* No comment provided by engineer. */
"User profile" = "Профиль чата";
/* No comment provided by engineer. */
"Using .onion hosts requires compatible VPN provider." = "Для использования .onion хостов требуется совместимый VPN провайдер.";
/* No comment provided by engineer. */
"Using SimpleX Chat servers." = "Используются серверы, предоставленные SimpleX Chat.";
@@ -4320,9 +4275,6 @@
/* No comment provided by engineer. */
"Wrong passphrase!" = "Неправильный пароль!";
/* No comment provided by engineer. */
"XFTP servers" = "XFTP серверы";
/* pref value */
"yes" = "да";
@@ -4458,9 +4410,6 @@
/* No comment provided by engineer. */
"You have already requested connection!\nRepeat connection request?" = "Вы уже запросили соединение!\nПовторить запрос?";
/* No comment provided by engineer. */
"You have no chats" = "У Вас нет чатов";
/* No comment provided by engineer. */
"You have to enter passphrase every time the app starts - it is not stored on the device." = "Пароль не сохранен на устройстве — Вы будете должны ввести его при каждом запуске чата.";
@@ -4551,9 +4500,6 @@
/* No comment provided by engineer. */
"Your chat profiles" = "Ваши профили чата";
/* No comment provided by engineer. */
"Your contact needs to be online for the connection to complete.\nYou can cancel this connection and remove the contact (and try later with a new link)." = "Ваш контакт должен быть в сети чтобы установить соединение.\nВы можете отменить соединение и удалить контакт (и попробовать позже с другой ссылкой).";
/* No comment provided by engineer. */
"Your contact sent a file that is larger than currently supported maximum size (%@)." = "Ваш контакт отправил файл, размер которого превышает максимальный размер (%@).";
+3 -48
View File
@@ -738,9 +738,6 @@
/* notification */
"Contact is connected" = "เชื่อมต่อกับผู้ติดต่อแล้ว";
/* No comment provided by engineer. */
"Contact is not connected yet!" = "ผู้ติดต่อยังไม่ได้เชื่อมต่อ!";
/* No comment provided by engineer. */
"Contact name" = "ชื่อผู้ติดต่อ";
@@ -921,9 +918,6 @@
/* No comment provided by engineer. */
"Delete contact" = "ลบผู้ติดต่อ";
/* No comment provided by engineer. */
"Delete Contact" = "ลบผู้ติดต่อ";
/* No comment provided by engineer. */
"Delete database" = "ลบฐานข้อมูล";
@@ -975,9 +969,6 @@
/* No comment provided by engineer. */
"Delete old database?" = "ลบฐานข้อมูลเก่า?";
/* No comment provided by engineer. */
"Delete pending connection" = "ลบการเชื่อมต่อที่รอดำเนินการ";
/* No comment provided by engineer. */
"Delete pending connection?" = "ลบการเชื่อมต่อที่รอดำเนินการหรือไม่?";
@@ -1281,9 +1272,6 @@
/* No comment provided by engineer. */
"Error deleting connection" = "เกิดข้อผิดพลาดในการลบการเชื่อมต่อ";
/* No comment provided by engineer. */
"Error deleting contact" = "เกิดข้อผิดพลาดในการลบผู้ติดต่อ";
/* No comment provided by engineer. */
"Error deleting database" = "เกิดข้อผิดพลาดในการลบฐานข้อมูล";
@@ -2125,10 +2113,10 @@
"One-time invitation link" = "ลิงก์คำเชิญแบบใช้ครั้งเดียว";
/* No comment provided by engineer. */
"Onion hosts will be required for connection. Requires enabling VPN." = "จำเป็นต้องมีโฮสต์หัวหอมสำหรับการเชื่อมต่อ ต้องเปิดใช้งาน VPN สำหรับการเชื่อมต่อ";
"Onion hosts will be **required** for connection.\nRequires compatible VPN." = "จำเป็นต้องมีโฮสต์หัวหอมสำหรับการเชื่อมต่อ ต้องเปิดใช้งาน VPN สำหรับการเชื่อมต่อ";
/* No comment provided by engineer. */
"Onion hosts will be used when available. Requires enabling VPN." = "จำเป็นต้องมีโฮสต์หัวหอมสำหรับการเชื่อมต่อ ต้องเปิดใช้งาน VPN สำหรับการเชื่อมต่อ";
"Onion hosts will be used when available.\nRequires compatible VPN." = "จำเป็นต้องมีโฮสต์หัวหอมสำหรับการเชื่อมต่อ ต้องเปิดใช้งาน VPN สำหรับการเชื่อมต่อ";
/* No comment provided by engineer. */
"Onion hosts will not be used." = "โฮสต์หัวหอมจะไม่ถูกใช้";
@@ -2496,9 +2484,6 @@
/* chat item action */
"Reveal" = "เปิดเผย";
/* No comment provided by engineer. */
"Revert" = "เปลี่ยนกลับ";
/* No comment provided by engineer. */
"Revoke" = "ถอน";
@@ -2601,7 +2586,7 @@
/* chat item text */
"security code changed" = "เปลี่ยนรหัสความปลอดภัยแล้ว";
/* No comment provided by engineer. */
/* chat item action */
"Select" = "เลือก";
/* No comment provided by engineer. */
@@ -2625,9 +2610,6 @@
/* No comment provided by engineer. */
"Send delivery receipts to" = "ส่งใบเสร็จรับการจัดส่งข้อความไปที่";
/* No comment provided by engineer. */
"Send direct message" = "ส่งข้อความโดยตรง";
/* No comment provided by engineer. */
"Send disappearing message" = "ส่งข้อความแบบที่หายไป";
@@ -2802,9 +2784,6 @@
/* No comment provided by engineer. */
"Skipped messages" = "ข้อความที่ข้ามไป";
/* No comment provided by engineer. */
"SMP servers" = "เซิร์ฟเวอร์ SMP";
/* No comment provided by engineer. */
"Some non-fatal errors occurred during import - you may see Chat console for more details." = "ข้อผิดพลาดที่ไม่ร้ายแรงบางอย่างเกิดขึ้นระหว่างการนำเข้า - คุณอาจดูรายละเอียดเพิ่มเติมได้ที่คอนโซล Chat";
@@ -2880,9 +2859,6 @@
/* No comment provided by engineer. */
"Tap to join incognito" = "แตะเพื่อเข้าร่วมโหมดไม่ระบุตัวตน";
/* No comment provided by engineer. */
"Tap to start a new chat" = "แตะเพื่อเริ่มแชทใหม่";
/* No comment provided by engineer. */
"TCP connection timeout" = "หมดเวลาการเชื่อมต่อ TCP";
@@ -3087,27 +3063,18 @@
/* No comment provided by engineer. */
"Update" = "อัปเดต";
/* No comment provided by engineer. */
"Update .onion hosts setting?" = "อัปเดตการตั้งค่าโฮสต์ .onion ไหม?";
/* No comment provided by engineer. */
"Update database passphrase" = "อัปเดตรหัสผ่านของฐานข้อมูล";
/* No comment provided by engineer. */
"Update network settings?" = "อัปเดตการตั้งค่าเครือข่ายไหม?";
/* No comment provided by engineer. */
"Update transport isolation mode?" = "อัปเดตโหมดการแยกการขนส่งไหม?";
/* rcv group event chat item */
"updated group profile" = "อัปเดตโปรไฟล์กลุ่มแล้ว";
/* No comment provided by engineer. */
"Updating settings will re-connect the client to all servers." = "การอัปเดตการตั้งค่าจะเชื่อมต่อไคลเอนต์กับเซิร์ฟเวอร์ทั้งหมดอีกครั้ง";
/* No comment provided by engineer. */
"Updating this setting will re-connect the client to all servers." = "การอัปเดตการตั้งค่านี้จะเชื่อมต่อไคลเอนต์กับเซิร์ฟเวอร์ทั้งหมดอีกครั้ง";
/* No comment provided by engineer. */
"Upgrade and open chat" = "อัปเกรดและเปิดการแชท";
@@ -3135,9 +3102,6 @@
/* No comment provided by engineer. */
"User profile" = "โปรไฟล์ผู้ใช้";
/* No comment provided by engineer. */
"Using .onion hosts requires compatible VPN provider." = "การใช้โฮสต์ .onion ต้องการผู้ให้บริการ VPN ที่เข้ากันได้";
/* No comment provided by engineer. */
"Using SimpleX Chat servers." = "กำลังใช้เซิร์ฟเวอร์ SimpleX Chat อยู่";
@@ -3252,9 +3216,6 @@
/* No comment provided by engineer. */
"Wrong passphrase!" = "รหัสผ่านผิด!";
/* No comment provided by engineer. */
"XFTP servers" = "เซิร์ฟเวอร์ XFTP";
/* pref value */
"yes" = "ใช่";
@@ -3345,9 +3306,6 @@
/* No comment provided by engineer. */
"You could not be verified; please try again." = "เราไม่สามารถตรวจสอบคุณได้ กรุณาลองอีกครั้ง.";
/* No comment provided by engineer. */
"You have no chats" = "คุณไม่มีการแชท";
/* No comment provided by engineer. */
"You have to enter passphrase every time the app starts - it is not stored on the device." = "คุณต้องใส่รหัสผ่านทุกครั้งที่เริ่มแอป - รหัสผ่านไม่ได้จัดเก็บไว้ในอุปกรณ์";
@@ -3426,9 +3384,6 @@
/* No comment provided by engineer. */
"Your chat profiles" = "โปรไฟล์แชทของคุณ";
/* No comment provided by engineer. */
"Your contact needs to be online for the connection to complete.\nYou can cancel this connection and remove the contact (and try later with a new link)." = "ผู้ติดต่อของคุณจะต้องออนไลน์เพื่อให้การเชื่อมต่อเสร็จสมบูรณ์\nคุณสามารถยกเลิกการเชื่อมต่อนี้และลบผู้ติดต่อออก (และลองใหม่ในภายหลังด้วยลิงก์ใหม่)";
/* No comment provided by engineer. */
"Your contact sent a file that is larger than currently supported maximum size (%@)." = "ผู้ติดต่อของคุณส่งไฟล์ที่ใหญ่กว่าขนาดสูงสุดที่รองรับในปัจจุบัน (%@)";
+5 -59
View File
@@ -647,7 +647,7 @@
/* rcv group event chat item */
"blocked %@" = "engellendi %@";
/* blocked chat item */
/* marked deleted chat item preview text */
"blocked by admin" = "yönetici tarafından engellendi";
/* No comment provided by engineer. */
@@ -996,9 +996,6 @@
/* notification */
"Contact is connected" = "Kişi bağlandı";
/* No comment provided by engineer. */
"Contact is not connected yet!" = "Kişi şuan bağlanmadı!";
/* No comment provided by engineer. */
"Contact name" = "Kişi adı";
@@ -1215,12 +1212,6 @@
/* No comment provided by engineer. */
"Delete contact" = "Kişiyi sil";
/* No comment provided by engineer. */
"Delete Contact" = "Kişiyi sil";
/* No comment provided by engineer. */
"Delete contact?\nThis cannot be undone!" = "Kişi silinsin mi?\nBu geri alınamaz!";
/* No comment provided by engineer. */
"Delete database" = "Veritabanını sil";
@@ -1275,9 +1266,6 @@
/* No comment provided by engineer. */
"Delete old database?" = "Eski veritabanı silinsin mi?";
/* No comment provided by engineer. */
"Delete pending connection" = "Bekleyen bağlantıyı sil";
/* No comment provided by engineer. */
"Delete pending connection?" = "Bekleyen bağlantı silinsin mi?";
@@ -1677,9 +1665,6 @@
/* No comment provided by engineer. */
"Error deleting connection" = "Bağlantı silinirken hata oluştu";
/* No comment provided by engineer. */
"Error deleting contact" = "Kişi silinirken hata oluştu";
/* No comment provided by engineer. */
"Error deleting database" = "Veritabanı silinirken hata oluştu";
@@ -2506,12 +2491,6 @@
/* notification */
"message received" = "mesaj alındı";
/* No comment provided by engineer. */
"Message routing fallback" = "Mesaj yönlendirme yedeklemesi";
/* No comment provided by engineer. */
"Message routing mode" = "Mesaj yönlendirme modu";
/* No comment provided by engineer. */
"Message source remains private." = "Mesaj kaynağı gizli kalır.";
@@ -2767,10 +2746,10 @@
"One-time invitation link" = "Tek zamanlı bağlantı daveti";
/* No comment provided by engineer. */
"Onion hosts will be required for connection. Requires enabling VPN." = "Bağlantı için Onion ana bilgisayarları gerekecektir. VPN'nin etkinleştirilmesi gerekir.";
"Onion hosts will be **required** for connection.\nRequires compatible VPN." = "Bağlantı için Onion ana bilgisayarları gerekecektir.\nVPN'nin etkinleştirilmesi gerekir.";
/* No comment provided by engineer. */
"Onion hosts will be used when available. Requires enabling VPN." = "Onion ana bilgisayarları mevcutsa kullanılacaktır. VPN'nin etkinleştirilmesi gerekir.";
"Onion hosts will be used when available.\nRequires compatible VPN." = "Onion ana bilgisayarları mevcutsa kullanılacaktır.\nVPN'nin etkinleştirilmesi gerekir.";
/* No comment provided by engineer. */
"Onion hosts will not be used." = "Onion ana bilgisayarları kullanılmayacaktır.";
@@ -3267,9 +3246,6 @@
/* chat item action */
"Reveal" = "Göster";
/* No comment provided by engineer. */
"Revert" = "Geri al";
/* No comment provided by engineer. */
"Revoke" = "İptal et";
@@ -3402,7 +3378,7 @@
/* chat item text */
"security code changed" = "güvenlik kodu değiştirildi";
/* No comment provided by engineer. */
/* chat item action */
"Select" = "Seç";
/* No comment provided by engineer. */
@@ -3429,9 +3405,6 @@
/* No comment provided by engineer. */
"send direct message" = "doğrudan mesaj gönder";
/* No comment provided by engineer. */
"Send direct message" = "Doğrudan mesaj gönder";
/* No comment provided by engineer. */
"Send direct message to connect" = "Bağlanmak için doğrudan mesaj gönder";
@@ -3675,9 +3648,6 @@
/* No comment provided by engineer. */
"Small groups (max 20)" = "Küçük gruplar (en fazla 20 kişi)";
/* No comment provided by engineer. */
"SMP servers" = "SMP sunucuları";
/* No comment provided by engineer. */
"Some non-fatal errors occurred during import - you may see Chat console for more details." = "İçe aktarma sırasında bazı ölümcül olmayan hatalar oluştu - daha fazla ayrıntı için Sohbet konsoluna bakabilirsiniz.";
@@ -3777,9 +3747,6 @@
/* No comment provided by engineer. */
"Tap to scan" = "Taramak için tıkla";
/* No comment provided by engineer. */
"Tap to start a new chat" = "Yeni bir sohbet başlatmak için tıkla";
/* No comment provided by engineer. */
"TCP connection timeout" = "TCP bağlantı zaman aşımı";
@@ -4027,7 +3994,7 @@
"Unknown error" = "Bilinmeyen hata";
/* No comment provided by engineer. */
"unknown relays" = "bilinmeyen yönlendiriciler";
"unknown servers" = "bilinmeyen yönlendiriciler";
/* No comment provided by engineer. */
"Unknown servers!" = "Bilinmeyen sunucular!";
@@ -4068,18 +4035,12 @@
/* No comment provided by engineer. */
"Update" = "Güncelle";
/* No comment provided by engineer. */
"Update .onion hosts setting?" = ".onion ana bilgisayarların ayarı güncellensin mi?";
/* No comment provided by engineer. */
"Update database passphrase" = "Veritabanı parolasını güncelle";
/* No comment provided by engineer. */
"Update network settings?" = "Bağlantı ayarları güncellensin mi?";
/* No comment provided by engineer. */
"Update transport isolation mode?" = "Taşıma izolasyon modu güncellensin mi?";
/* rcv group event chat item */
"updated group profile" = "grup profili güncellendi";
@@ -4089,9 +4050,6 @@
/* No comment provided by engineer. */
"Updating settings will re-connect the client to all servers." = "Ayarların güncellenmesi, istemciyi tüm sunuculara yeniden bağlayacaktır.";
/* No comment provided by engineer. */
"Updating this setting will re-connect the client to all servers." = "Bu ayarın güncellenmesi, istemciyi tüm sunuculara yeniden bağlayacaktır.";
/* No comment provided by engineer. */
"Upgrade and open chat" = "Yükselt ve sohbeti aç";
@@ -4146,9 +4104,6 @@
/* No comment provided by engineer. */
"User profile" = "Kullanıcı profili";
/* No comment provided by engineer. */
"Using .onion hosts requires compatible VPN provider." = ".onion ana bilgisayarlarını kullanmak için uyumlu VPN sağlayıcısı gerekir.";
/* No comment provided by engineer. */
"Using SimpleX Chat servers." = "SimpleX Chat sunucuları kullanılıyor.";
@@ -4329,9 +4284,6 @@
/* No comment provided by engineer. */
"Wrong passphrase!" = "Yanlış parola!";
/* No comment provided by engineer. */
"XFTP servers" = "XFTP sunucuları";
/* pref value */
"yes" = "evet";
@@ -4467,9 +4419,6 @@
/* No comment provided by engineer. */
"You have already requested connection!\nRepeat connection request?" = "Zaten bağlantı isteğinde bulundunuz!\nBağlantı isteği tekrarlansın mı?";
/* No comment provided by engineer. */
"You have no chats" = "Hiç sohbetiniz yok";
/* No comment provided by engineer. */
"You have to enter passphrase every time the app starts - it is not stored on the device." = "Uygulama her başladığında parola girmeniz gerekir - parola cihazınızda saklanmaz.";
@@ -4560,9 +4509,6 @@
/* No comment provided by engineer. */
"Your chat profiles" = "Sohbet profillerin";
/* No comment provided by engineer. */
"Your contact needs to be online for the connection to complete.\nYou can cancel this connection and remove the contact (and try later with a new link)." = "Bağlantının tamamlanması için kişinizin çevrimiçi olması gerekir.\nBu bağlantıyı iptal edebilir ve kişiyi kaldırabilirsiniz (ve daha sonra yeni bir bağlantıyla deneyebilirsiniz).";
/* No comment provided by engineer. */
"Your contact sent a file that is larger than currently supported maximum size (%@)." = "Kişiniz şu anda desteklenen maksimum boyuttan (%@) daha büyük bir dosya gönderdi.";
+5 -59
View File
@@ -647,7 +647,7 @@
/* rcv group event chat item */
"blocked %@" = "заблоковано %@";
/* blocked chat item */
/* marked deleted chat item preview text */
"blocked by admin" = "заблоковано адміністратором";
/* No comment provided by engineer. */
@@ -996,9 +996,6 @@
/* notification */
"Contact is connected" = "Контакт підключений";
/* No comment provided by engineer. */
"Contact is not connected yet!" = "Контакт ще не підключено!";
/* No comment provided by engineer. */
"Contact name" = "Ім'я контактної особи";
@@ -1215,12 +1212,6 @@
/* No comment provided by engineer. */
"Delete contact" = "Видалити контакт";
/* No comment provided by engineer. */
"Delete Contact" = "Видалити контакт";
/* No comment provided by engineer. */
"Delete contact?\nThis cannot be undone!" = "Видалити контакт?\nЦе не можна скасувати!";
/* No comment provided by engineer. */
"Delete database" = "Видалити базу даних";
@@ -1275,9 +1266,6 @@
/* No comment provided by engineer. */
"Delete old database?" = "Видалити стару базу даних?";
/* No comment provided by engineer. */
"Delete pending connection" = "Видалити очікуване з'єднання";
/* No comment provided by engineer. */
"Delete pending connection?" = "Видалити очікуване з'єднання?";
@@ -1677,9 +1665,6 @@
/* No comment provided by engineer. */
"Error deleting connection" = "Помилка видалення з'єднання";
/* No comment provided by engineer. */
"Error deleting contact" = "Помилка видалення контакту";
/* No comment provided by engineer. */
"Error deleting database" = "Помилка видалення бази даних";
@@ -2506,12 +2491,6 @@
/* notification */
"message received" = "повідомлення отримано";
/* No comment provided by engineer. */
"Message routing fallback" = "Запасний варіант маршрутизації повідомлень";
/* No comment provided by engineer. */
"Message routing mode" = "Режим маршрутизації повідомлень";
/* No comment provided by engineer. */
"Message source remains private." = "Джерело повідомлення залишається приватним.";
@@ -2767,10 +2746,10 @@
"One-time invitation link" = "Посилання на одноразове запрошення";
/* No comment provided by engineer. */
"Onion hosts will be required for connection. Requires enabling VPN." = "Для підключення будуть потрібні хости onion. Потрібно увімкнути VPN.";
"Onion hosts will be **required** for connection.\nRequires compatible VPN." = "Для підключення будуть потрібні хости onion.\nПотрібно увімкнути VPN.";
/* No comment provided by engineer. */
"Onion hosts will be used when available. Requires enabling VPN." = "Onion хости будуть використовуватися, коли вони будуть доступні. Потрібно увімкнути VPN.";
"Onion hosts will be used when available.\nRequires compatible VPN." = "Onion хости будуть використовуватися, коли вони будуть доступні.\nПотрібно увімкнути VPN.";
/* No comment provided by engineer. */
"Onion hosts will not be used." = "Onion хости не будуть використовуватися.";
@@ -3267,9 +3246,6 @@
/* chat item action */
"Reveal" = "Показувати";
/* No comment provided by engineer. */
"Revert" = "Повернутися";
/* No comment provided by engineer. */
"Revoke" = "Відкликати";
@@ -3402,7 +3378,7 @@
/* chat item text */
"security code changed" = "змінено код безпеки";
/* No comment provided by engineer. */
/* chat item action */
"Select" = "Виберіть";
/* No comment provided by engineer. */
@@ -3429,9 +3405,6 @@
/* No comment provided by engineer. */
"send direct message" = "надіслати пряме повідомлення";
/* No comment provided by engineer. */
"Send direct message" = "Надішліть пряме повідомлення";
/* No comment provided by engineer. */
"Send direct message to connect" = "Надішліть пряме повідомлення, щоб підключитися";
@@ -3675,9 +3648,6 @@
/* No comment provided by engineer. */
"Small groups (max 20)" = "Невеликі групи (максимум 20 осіб)";
/* No comment provided by engineer. */
"SMP servers" = "Сервери SMP";
/* No comment provided by engineer. */
"Some non-fatal errors occurred during import - you may see Chat console for more details." = "Під час імпорту виникли деякі нефатальні помилки – ви можете переглянути консоль чату, щоб дізнатися більше.";
@@ -3777,9 +3747,6 @@
/* No comment provided by engineer. */
"Tap to scan" = "Натисніть, щоб сканувати";
/* No comment provided by engineer. */
"Tap to start a new chat" = "Натисніть, щоб почати новий чат";
/* No comment provided by engineer. */
"TCP connection timeout" = "Тайм-аут TCP-з'єднання";
@@ -4027,7 +3994,7 @@
"Unknown error" = "Невідома помилка";
/* No comment provided by engineer. */
"unknown relays" = "невідомі реле";
"unknown servers" = "невідомі реле";
/* No comment provided by engineer. */
"Unknown servers!" = "Невідомі сервери!";
@@ -4068,18 +4035,12 @@
/* No comment provided by engineer. */
"Update" = "Оновлення";
/* No comment provided by engineer. */
"Update .onion hosts setting?" = "Оновити налаштування хостів .onion?";
/* No comment provided by engineer. */
"Update database passphrase" = "Оновити парольну фразу бази даних";
/* No comment provided by engineer. */
"Update network settings?" = "Оновити налаштування мережі?";
/* No comment provided by engineer. */
"Update transport isolation mode?" = "Оновити режим транспортної ізоляції?";
/* rcv group event chat item */
"updated group profile" = "оновлений профіль групи";
@@ -4089,9 +4050,6 @@
/* No comment provided by engineer. */
"Updating settings will re-connect the client to all servers." = "Оновлення налаштувань призведе до перепідключення клієнта до всіх серверів.";
/* No comment provided by engineer. */
"Updating this setting will re-connect the client to all servers." = "Оновлення цього параметра призведе до перепідключення клієнта до всіх серверів.";
/* No comment provided by engineer. */
"Upgrade and open chat" = "Оновлення та відкритий чат";
@@ -4146,9 +4104,6 @@
/* No comment provided by engineer. */
"User profile" = "Профіль користувача";
/* No comment provided by engineer. */
"Using .onion hosts requires compatible VPN provider." = "Для використання хостів .onion потрібен сумісний VPN-провайдер.";
/* No comment provided by engineer. */
"Using SimpleX Chat servers." = "Використання серверів SimpleX Chat.";
@@ -4329,9 +4284,6 @@
/* No comment provided by engineer. */
"Wrong passphrase!" = "Неправильний пароль!";
/* No comment provided by engineer. */
"XFTP servers" = "Сервери XFTP";
/* pref value */
"yes" = "так";
@@ -4467,9 +4419,6 @@
/* No comment provided by engineer. */
"You have already requested connection!\nRepeat connection request?" = "Ви вже надіслали запит на підключення!\nПовторити запит на підключення?";
/* No comment provided by engineer. */
"You have no chats" = "У вас немає чатів";
/* No comment provided by engineer. */
"You have to enter passphrase every time the app starts - it is not stored on the device." = "Вам доведеться вводити парольну фразу щоразу під час запуску програми - вона не зберігається на пристрої.";
@@ -4560,9 +4509,6 @@
/* No comment provided by engineer. */
"Your chat profiles" = "Ваші профілі чату";
/* No comment provided by engineer. */
"Your contact needs to be online for the connection to complete.\nYou can cancel this connection and remove the contact (and try later with a new link)." = "Для завершення з'єднання ваш контакт має бути онлайн.\nВи можете скасувати це з'єднання і видалити контакт (і спробувати пізніше з новим посиланням).";
/* No comment provided by engineer. */
"Your contact sent a file that is larger than currently supported maximum size (%@)." = "Ваш контакт надіслав файл, розмір якого перевищує підтримуваний на цей момент максимальний розмір (%@).";
+4 -49
View File
@@ -599,7 +599,7 @@
/* rcv group event chat item */
"blocked %@" = "已封禁 %@";
/* blocked chat item */
/* marked deleted chat item preview text */
"blocked by admin" = "由管理员封禁";
/* No comment provided by engineer. */
@@ -924,9 +924,6 @@
/* notification */
"Contact is connected" = "联系已连接";
/* No comment provided by engineer. */
"Contact is not connected yet!" = "联系人尚未连接!";
/* No comment provided by engineer. */
"Contact name" = "联系人姓名";
@@ -1131,9 +1128,6 @@
/* No comment provided by engineer. */
"Delete contact" = "删除联系人";
/* No comment provided by engineer. */
"Delete Contact" = "删除联系人";
/* No comment provided by engineer. */
"Delete database" = "删除数据库";
@@ -1188,9 +1182,6 @@
/* No comment provided by engineer. */
"Delete old database?" = "删除旧数据库吗?";
/* No comment provided by engineer. */
"Delete pending connection" = "删除挂起连接";
/* No comment provided by engineer. */
"Delete pending connection?" = "删除待定连接?";
@@ -1569,9 +1560,6 @@
/* No comment provided by engineer. */
"Error deleting connection" = "删除连接错误";
/* No comment provided by engineer. */
"Error deleting contact" = "删除联系人错误";
/* No comment provided by engineer. */
"Error deleting database" = "删除数据库错误";
@@ -2599,10 +2587,10 @@
"One-time invitation link" = "一次性邀请链接";
/* No comment provided by engineer. */
"Onion hosts will be required for connection. Requires enabling VPN." = "Onion 主机将用于连接。需要启用 VPN。";
"Onion hosts will be **required** for connection.\nRequires compatible VPN." = "Onion 主机将用于连接。需要启用 VPN。";
/* No comment provided by engineer. */
"Onion hosts will be used when available. Requires enabling VPN." = "当可用时,将使用 Onion 主机。需要启用 VPN。";
"Onion hosts will be used when available.\nRequires compatible VPN." = "当可用时,将使用 Onion 主机。需要启用 VPN。";
/* No comment provided by engineer. */
"Onion hosts will not be used." = "将不会使用 Onion 主机。";
@@ -3060,9 +3048,6 @@
/* chat item action */
"Reveal" = "揭示";
/* No comment provided by engineer. */
"Revert" = "恢复";
/* No comment provided by engineer. */
"Revoke" = "撤销";
@@ -3189,7 +3174,7 @@
/* chat item text */
"security code changed" = "安全密码已更改";
/* No comment provided by engineer. */
/* chat item action */
"Select" = "选择";
/* No comment provided by engineer. */
@@ -3216,9 +3201,6 @@
/* No comment provided by engineer. */
"send direct message" = "发送私信";
/* No comment provided by engineer. */
"Send direct message" = "发送私信";
/* No comment provided by engineer. */
"Send direct message to connect" = "发送私信来连接";
@@ -3441,9 +3423,6 @@
/* No comment provided by engineer. */
"Small groups (max 20)" = "小群组(最多 20 人)";
/* No comment provided by engineer. */
"SMP servers" = "SMP 服务器";
/* No comment provided by engineer. */
"Some non-fatal errors occurred during import - you may see Chat console for more details." = "导入过程中发生了一些非致命错误——您可以查看聊天控制台了解更多详细信息。";
@@ -3543,9 +3522,6 @@
/* No comment provided by engineer. */
"Tap to scan" = "轻按扫描";
/* No comment provided by engineer. */
"Tap to start a new chat" = "点击开始一个新聊天";
/* No comment provided by engineer. */
"TCP connection timeout" = "TCP 连接超时";
@@ -3813,18 +3789,12 @@
/* No comment provided by engineer. */
"Update" = "更新";
/* No comment provided by engineer. */
"Update .onion hosts setting?" = "更新 .onion 主机设置?";
/* No comment provided by engineer. */
"Update database passphrase" = "更新数据库密码";
/* No comment provided by engineer. */
"Update network settings?" = "更新网络设置?";
/* No comment provided by engineer. */
"Update transport isolation mode?" = "更新传输隔离模式?";
/* rcv group event chat item */
"updated group profile" = "已更新的群组资料";
@@ -3834,9 +3804,6 @@
/* No comment provided by engineer. */
"Updating settings will re-connect the client to all servers." = "更新设置会将客户端重新连接到所有服务器。";
/* No comment provided by engineer. */
"Updating this setting will re-connect the client to all servers." = "更新此设置将重新连接客户端到所有服务器。";
/* No comment provided by engineer. */
"Upgrade and open chat" = "升级并打开聊天";
@@ -3882,9 +3849,6 @@
/* No comment provided by engineer. */
"User profile" = "用户资料";
/* No comment provided by engineer. */
"Using .onion hosts requires compatible VPN provider." = "使用 .onion 主机需要兼容的 VPN 提供商。";
/* No comment provided by engineer. */
"Using SimpleX Chat servers." = "使用 SimpleX Chat 服务器。";
@@ -4047,9 +4011,6 @@
/* No comment provided by engineer. */
"Wrong passphrase!" = "密码错误!";
/* No comment provided by engineer. */
"XFTP servers" = "XFTP 服务器";
/* pref value */
"yes" = "是";
@@ -4161,9 +4122,6 @@
/* No comment provided by engineer. */
"You have already requested connection via this address!" = "你已经请求通过此地址进行连接!";
/* No comment provided by engineer. */
"You have no chats" = "您没有聊天记录";
/* No comment provided by engineer. */
"You have to enter passphrase every time the app starts - it is not stored on the device." = "您必须在每次应用程序启动时输入密码——它不存储在设备上。";
@@ -4248,9 +4206,6 @@
/* No comment provided by engineer. */
"Your chat profiles" = "您的聊天资料";
/* No comment provided by engineer. */
"Your contact needs to be online for the connection to complete.\nYou can cancel this connection and remove the contact (and try later with a new link)." = "您的联系人需要在线才能完成连接。\n您可以取消此连接并删除联系人(然后尝试使用新链接)。";
/* No comment provided by engineer. */
"Your contact sent a file that is larger than currently supported maximum size (%@)." = "您的联系人发送的文件大于当前支持的最大大小 (%@)。";
@@ -11,11 +11,11 @@ import android.view.ViewGroup
import android.view.inputmethod.*
import android.widget.EditText
import android.widget.TextView
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.*
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.toArgb
@@ -51,6 +51,7 @@ actual fun PlatformTextField(
textStyle: MutableState<TextStyle>,
showDeleteTextButton: MutableState<Boolean>,
userIsObserver: Boolean,
placeholder: String,
onMessageChange: (String) -> Unit,
onUpArrow: () -> Unit,
onFilesPasted: (List<URI>) -> Unit,
@@ -58,10 +59,11 @@ actual fun PlatformTextField(
) {
val cs = composeState.value
val textColor = MaterialTheme.colors.onBackground
val padding = PaddingValues(12.dp, 7.dp, 45.dp, 0.dp)
val paddingStart = with(LocalDensity.current) { 12.dp.roundToPx() }
val hintColor = MaterialTheme.colors.secondary
val padding = PaddingValues(0.dp, 7.dp, 50.dp, 0.dp)
val paddingStart = 0
val paddingTop = with(LocalDensity.current) { 7.dp.roundToPx() }
val paddingEnd = with(LocalDensity.current) { 45.dp.roundToPx() }
val paddingEnd = with(LocalDensity.current) { 50.dp.roundToPx() }
val paddingBottom = with(LocalDensity.current) { 7.dp.roundToPx() }
var showKeyboard by remember { mutableStateOf(false) }
var freeFocus by remember { mutableStateOf(false) }
@@ -113,6 +115,8 @@ actual fun PlatformTextField(
editText.background = ColorDrawable(Color.Transparent.toArgb())
editText.setPadding(paddingStart, paddingTop, paddingEnd, paddingBottom)
editText.setText(cs.message)
editText.hint = placeholder
editText.setHintTextColor(hintColor.toArgb())
if (Build.VERSION.SDK_INT >= 29) {
editText.textCursorDrawable?.let { DrawableCompat.setTint(it, CurrentColors.value.colors.secondary.toArgb()) }
} else {
@@ -135,6 +139,8 @@ actual fun PlatformTextField(
editText
}) {
it.setTextColor(textColor.toArgb())
it.setHintTextColor(hintColor.toArgb())
it.hint = placeholder
it.textSize = textStyle.value.fontSize.value * appPrefs.fontScale.get()
it.isFocusable = composeState.value.preview !is ComposePreview.VoicePreview
it.isFocusableInTouchMode = it.isFocusable
@@ -6,7 +6,6 @@ import androidx.compose.material.Divider
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.scale
import androidx.compose.ui.unit.dp
import chat.simplex.common.platform.onRightClick
import chat.simplex.common.views.helpers.*
@@ -20,14 +19,9 @@ actual fun ChatListNavLinkLayout(
disabled: Boolean,
selectedChat: State<Boolean>,
nextChatSelected: State<Boolean>,
oneHandUI: State<Boolean>
) {
var modifier = Modifier.fillMaxWidth()
if (oneHandUI != null && oneHandUI.value) {
modifier = modifier.scale(scaleX = 1f, scaleY = -1f)
}
if (!disabled) modifier = modifier
.combinedClickable(onClick = click, onLongClick = { showMenu.value = true })
.onRightClick { showMenu.value = true }
@@ -276,7 +276,9 @@ fun AndroidScreen(settingsState: SettingsViewState) {
snapshotFlow { ModalManager.center.modalCount.value > 0 }
.filter { chatModel.chatId.value == null }
.collect { modalBackground ->
if (modalBackground && !chatModel.newChatSheetVisible.value) {
if (chatModel.newChatSheetVisible.value) {
platform.androidSetStatusAndNavBarColors(CurrentColors.value.colors.isLight, CurrentColors.value.colors.background, false, appPrefs.oneHandUI.get())
} else if (modalBackground) {
platform.androidSetStatusAndNavBarColors(CurrentColors.value.colors.isLight, CurrentColors.value.colors.background, false, false)
} else {
platform.androidSetStatusAndNavBarColors(CurrentColors.value.colors.isLight, CurrentColors.value.colors.background, !appPrefs.oneHandUI.get(), appPrefs.oneHandUI.get())
@@ -345,6 +345,9 @@ object ChatModel {
return withContext(Dispatchers.Main) {
// update current chat
if (chatId.value == cInfo.id) {
if (cItem.isDeletedContent || cItem.meta.itemDeleted != null) {
AudioPlayer.stop(cItem)
}
val items = chatItems.value
val itemIndex = items.indexOfFirst { it.id == cItem.id }
if (itemIndex >= 0) {
@@ -467,6 +470,21 @@ object ChatModel {
// update current chat
return if (chatId.value == groupInfo.id) {
val memberIndex = groupMembersIndexes[member.groupMemberId]
val updated = chatItems.value.map {
// Take into account only specific changes, not all. Other member updates are not important and can be skipped
if (it.chatDir is CIDirection.GroupRcv && it.chatDir.groupMember.groupMemberId == member.groupMemberId &&
(it.chatDir.groupMember.image != member.image ||
it.chatDir.groupMember.chatViewName != member.chatViewName ||
it.chatDir.groupMember.blocked != member.blocked ||
it.chatDir.groupMember.memberRole != member.memberRole)
)
it.copy(chatDir = CIDirection.GroupRcv(member))
else
it
}
if (updated != chatItems.value) {
chatItems.replaceAll(updated)
}
if (memberIndex != null) {
groupMembers[memberIndex] = member
false
@@ -1909,7 +1927,7 @@ data class ChatItem (
}
}
fun memberToModerate(chatInfo: ChatInfo): Pair<GroupInfo, GroupMember>? {
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) {
@@ -1917,11 +1935,30 @@ data class ChatItem (
} else {
null
}
} else if (chatInfo is ChatInfo.Group && chatDir is CIDirection.GroupSnd) {
val m = chatInfo.groupInfo.membership
if (m.memberRole >= GroupMemberRole.Admin) {
chatInfo.groupInfo to null
} else {
null
}
} else {
null
}
}
val showLocalDelete: Boolean
get() = when (content) {
is CIContent.SndDirectE2EEInfo -> false
is CIContent.RcvDirectE2EEInfo -> false
is CIContent.SndGroupE2EEInfo -> false
is CIContent.RcvGroupE2EEInfo -> false
else -> true
}
val canBeDeletedForSelf: Boolean
get() = (content.msgContent != null && !meta.isLive) || meta.itemDeleted != null || isDeletedContent || mergeCategory != null || showLocalDelete
val showNotification: Boolean get() =
when (content) {
is CIContent.SndMsgContent -> false
@@ -142,8 +142,8 @@ class AppPreferences {
},
set = fun(mode: TransportSessionMode) { _networkSessionMode.set(mode.name) }
)
val networkSMPProxyMode = mkStrPreference(SHARED_PREFS_NETWORK_SMP_PROXY_MODE, SMPProxyMode.Never.name)
val networkSMPProxyFallback = mkStrPreference(SHARED_PREFS_NETWORK_SMP_PROXY_FALLBACK, SMPProxyFallback.Allow.name)
val networkSMPProxyMode = mkStrPreference(SHARED_PREFS_NETWORK_SMP_PROXY_MODE, NetCfg.defaults.smpProxyMode.name)
val networkSMPProxyFallback = mkStrPreference(SHARED_PREFS_NETWORK_SMP_PROXY_FALLBACK, NetCfg.defaults.smpProxyFallback.name)
val networkHostMode = mkStrPreference(SHARED_PREFS_NETWORK_HOST_MODE, HostMode.OnionViaSocks.name)
val networkRequiredHostMode = mkBoolPreference(SHARED_PREFS_NETWORK_REQUIRED_HOST_MODE, false)
val networkTCPConnectTimeout = mkTimeoutPreference(SHARED_PREFS_NETWORK_TCP_CONNECT_TIMEOUT, NetCfg.defaults.tcpConnectTimeout, NetCfg.proxyDefaults.tcpConnectTimeout)
@@ -225,7 +225,7 @@ class AppPreferences {
val iosCallKitEnabled = mkBoolPreference(SHARED_PREFS_IOS_CALL_KIT_ENABLED, true)
val iosCallKitCallsInRecents = mkBoolPreference(SHARED_PREFS_IOS_CALL_KIT_CALLS_IN_RECENTS, false)
val oneHandUI = mkBoolPreference(SHARED_PREFS_ONE_HAND_UI, false)
val oneHandUI = mkBoolPreference(SHARED_PREFS_ONE_HAND_UI, appPlatform.isAndroid)
private fun mkIntPreference(prefName: String, default: Int) =
SharedPreference(
@@ -657,8 +657,8 @@ object ChatController {
return null
}
suspend fun apiCreateActiveUser(rh: Long?, p: Profile?, sameServers: Boolean = false, pastTimestamp: Boolean = false, ctrl: ChatCtrl? = null): User? {
val r = sendCmd(rh, CC.CreateActiveUser(p, sameServers = sameServers, pastTimestamp = pastTimestamp), ctrl)
suspend fun apiCreateActiveUser(rh: Long?, p: Profile?, pastTimestamp: Boolean = false, ctrl: ChatCtrl? = null): User? {
val r = sendCmd(rh, CC.CreateActiveUser(p, pastTimestamp = pastTimestamp), ctrl)
if (r is CR.ActiveUser) return r.user.updateRemoteHostId(rh)
else if (
r is CR.ChatCmdError && r.chatError is ChatError.ChatErrorStore && r.chatError.storeError is StoreError.DuplicateName ||
@@ -2176,7 +2176,10 @@ object ChatController {
r.chatItemDeletions.forEach { (deletedChatItem, toChatItem) ->
val cInfo = deletedChatItem.chatInfo
val cItem = deletedChatItem.chatItem
AudioPlayer.stop(cItem)
if (chatModel.chatId.value != null) {
// Stop voice playback only inside a chat, allow to play in a chat list
AudioPlayer.stop(cItem)
}
val isLastChatItem = chatModel.getChat(cInfo.id)?.chatItems?.lastOrNull()?.id == cItem.id
if (isLastChatItem && ntfManager.hasNotificationsForChat(cInfo.id)) {
ntfManager.cancelNotificationsForChat(cInfo.id)
@@ -2821,7 +2824,7 @@ class SharedPreference<T>(val get: () -> T, set: (T) -> Unit) {
sealed class CC {
class Console(val cmd: String): CC()
class ShowActiveUser: CC()
class CreateActiveUser(val profile: Profile?, val sameServers: Boolean, val pastTimestamp: Boolean): CC()
class CreateActiveUser(val profile: Profile?, val pastTimestamp: Boolean): CC()
class ListUsers: CC()
class ApiSetActiveUser(val userId: Long, val viewPwd: String?): CC()
class SetAllContactReceipts(val enable: Boolean): CC()
@@ -2959,7 +2962,7 @@ sealed class CC {
is Console -> cmd
is ShowActiveUser -> "/u"
is CreateActiveUser -> {
val user = NewUser(profile, sameServers = sameServers, pastTimestamp = pastTimestamp)
val user = NewUser(profile, pastTimestamp = pastTimestamp)
"/_create user ${json.encodeToString(user)}"
}
is ListUsers -> "/users"
@@ -3290,7 +3293,6 @@ fun onOff(b: Boolean): String = if (b) "on" else "off"
@Serializable
data class NewUser(
val profile: Profile?,
val sameServers: Boolean,
val pastTimestamp: Boolean
)
@@ -3586,10 +3588,6 @@ enum class SMPProxyMode {
@SerialName("unknown") Unknown,
@SerialName("unprotected") Unprotected,
@SerialName("never") Never;
companion object {
val default = Never
}
}
@Serializable
@@ -3597,10 +3595,6 @@ enum class SMPProxyFallback {
@SerialName("allow") Allow,
@SerialName("allowProtected") AllowProtected,
@SerialName("prohibit") Prohibit;
companion object {
val default = Allow
}
}
@Serializable
@@ -6227,7 +6221,7 @@ data class AppSettings(
uiDarkColorScheme?.let { def.systemDarkTheme.set(it) }
uiCurrentThemeIds?.let { def.currentThemeIds.set(it) }
uiThemes?.let { def.themeOverrides.set(it.skipDuplicates()) }
oneHandUI?.let { def.oneHandUI.set(it) }
oneHandUI?.let { def.oneHandUI.set(if (appPlatform.isAndroid) it else false) }
}
companion object {
@@ -6259,7 +6253,7 @@ data class AppSettings(
uiDarkColorScheme = DefaultTheme.SIMPLEX.themeName,
uiCurrentThemeIds = null,
uiThemes = null,
oneHandUI = false
oneHandUI = true
)
val current: AppSettings
@@ -14,6 +14,7 @@ expect fun PlatformTextField(
textStyle: MutableState<TextStyle>,
showDeleteTextButton: MutableState<Boolean>,
userIsObserver: Boolean,
placeholder: String,
onMessageChange: (String) -> Unit,
onUpArrow: () -> Unit,
onFilesPasted: (List<URI>) -> Unit,
@@ -20,6 +20,8 @@ import chat.simplex.common.views.chat.*
import chat.simplex.common.views.helpers.*
import chat.simplex.common.model.ChatModel
import chat.simplex.common.platform.*
import chat.simplex.res.MR
import dev.icerock.moko.resources.compose.stringResource
@Composable
fun TerminalView(chatModel: ChatModel, close: () -> Unit) {
@@ -77,29 +79,33 @@ fun TerminalLayout(
Scaffold(
topBar = { CloseSheetBar(close) },
bottomBar = {
Box(Modifier.padding(horizontal = 8.dp)) {
SendMsgView(
composeState = composeState,
showVoiceRecordIcon = false,
recState = remember { mutableStateOf(RecordingState.NotStarted) },
isDirectChat = false,
liveMessageAlertShown = SharedPreference(get = { false }, set = {}),
sendMsgEnabled = true,
sendButtonEnabled = true,
nextSendGrpInv = false,
needToAllowVoiceToContact = false,
allowedVoiceByPrefs = false,
userIsObserver = false,
userCanSend = true,
allowVoiceToContact = {},
sendMessage = { sendCommand() },
sendLiveMessage = null,
updateLiveMessage = null,
editPrevMessage = {},
onMessageChange = ::onMessageChange,
onFilesPasted = {},
textStyle = textStyle
)
Column {
Divider()
Box(Modifier.padding(horizontal = 8.dp)) {
SendMsgView(
composeState = composeState,
showVoiceRecordIcon = false,
recState = remember { mutableStateOf(RecordingState.NotStarted) },
isDirectChat = false,
liveMessageAlertShown = SharedPreference(get = { false }, set = {}),
sendMsgEnabled = true,
sendButtonEnabled = true,
nextSendGrpInv = false,
needToAllowVoiceToContact = false,
allowedVoiceByPrefs = false,
userIsObserver = false,
userCanSend = true,
allowVoiceToContact = {},
placeholder = "",
sendMessage = { sendCommand() },
sendLiveMessage = null,
updateLiveMessage = null,
editPrevMessage = {},
onMessageChange = ::onMessageChange,
onFilesPasted = {},
textStyle = textStyle
)
}
}
},
contentColor = LocalContentColor.current,
@@ -28,6 +28,7 @@ import chat.simplex.common.views.chat.item.ItemAction
import chat.simplex.common.views.chat.item.MarkdownText
import chat.simplex.common.views.helpers.*
import chat.simplex.common.ui.theme.*
import chat.simplex.common.views.chat.group.MemberProfileImage
import chat.simplex.common.views.chatlist.*
import chat.simplex.res.MR
import dev.icerock.moko.resources.ImageResource
@@ -334,7 +335,7 @@ fun ChatItemInfoView(chatRh: Long?, ci: ChatItem, ciInfo: ChatItemInfo, devTools
SectionItemView(
padding = PaddingValues(horizontal = 0.dp)
) {
ProfileImage(size = 36.dp, member.image)
MemberProfileImage(size = 36.dp, member)
Spacer(Modifier.width(DEFAULT_SPACE_AFTER_ICON))
Text(
member.chatViewName,
@@ -1,5 +1,7 @@
package chat.simplex.common.views.chat
import androidx.compose.animation.*
import androidx.compose.animation.core.*
import androidx.compose.desktop.ui.tooling.preview.Preview
import androidx.compose.foundation.*
import androidx.compose.foundation.gestures.*
@@ -50,13 +52,14 @@ fun ChatView(staleChatId: State<String?>, onComposed: suspend (chatId: String) -
val shouldReturn = remember { mutableStateOf(false) }
val remoteHostId = remember { derivedStateOf { chatModel.chats.value.firstOrNull { chat -> chat.chatInfo.id == staleChatId.value }?.remoteHostId } }
val showSearch = rememberSaveable { mutableStateOf(false) }
val activeChatInfo = remember { derivedStateOf {
val info = chatModel.chats.value.firstOrNull { chat -> chat.chatInfo.id == staleChatId.value }?.chatInfo
if (info == null) {
shouldReturn.value = true
val activeChatInfo = remember {
derivedStateOf {
val info = chatModel.chats.value.firstOrNull { chat -> chat.chatInfo.id == staleChatId.value }?.chatInfo
if (info == null) {
shouldReturn.value = true
}
return@derivedStateOf info ?: ChatInfo.Direct.sampleData
}
return@derivedStateOf info ?: ChatInfo.Direct.sampleData
}
}
val user = chatModel.currentUser.value
if (shouldReturn.value || user == null) {
@@ -82,6 +85,7 @@ fun ChatView(staleChatId: State<String?>, onComposed: suspend (chatId: String) -
val attachmentOption = rememberSaveable { mutableStateOf<AttachmentOption?>(null) }
val attachmentBottomSheetState = rememberModalBottomSheetState(initialValue = ModalBottomSheetValue.Hidden)
val scope = rememberCoroutineScope()
val selectedChatItems = rememberSaveable { mutableStateOf(null as Set<Long>?) }
LaunchedEffect(Unit) {
// snapshotFlow here is because it reacts much faster on changes in chatModel.chatId.value.
// With LaunchedEffect(chatModel.chatId.value) there is a noticeable delay before reconstruction of the view
@@ -95,8 +99,12 @@ fun ChatView(staleChatId: State<String?>, onComposed: suspend (chatId: String) -
}
}
}
KeyChangeEffect(chatModel.chatId.value) {
if (chatModel.chatId.value != null) {
selectedChatItems.value = null
}
}
val view = LocalMultiplatformView()
val chatRh = remoteHostId.value
// We need to have real unreadCount value for displaying it inside top right button
// Having activeChat reloaded on every change in it is inefficient (UI lags)
@@ -117,26 +125,61 @@ fun ChatView(staleChatId: State<String?>, onComposed: suspend (chatId: String) -
unreadCount,
composeState,
composeView = {
Column(
Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally
) {
if (
chatInfo is ChatInfo.Direct
&& !chatInfo.contact.sndReady
&& chatInfo.contact.active
&& !chatInfo.contact.nextSendGrpInv
if (selectedChatItems.value == null) {
Column(
Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(
generalGetString(MR.strings.contact_connection_pending),
Modifier.padding(top = 4.dp),
fontSize = 14.sp,
color = MaterialTheme.colors.secondary
if (
chatInfo is ChatInfo.Direct
&& !chatInfo.contact.sndReady
&& chatInfo.contact.active
&& !chatInfo.contact.nextSendGrpInv
) {
Text(
generalGetString(MR.strings.contact_connection_pending),
Modifier.padding(top = 4.dp),
fontSize = 14.sp,
color = MaterialTheme.colors.secondary
)
}
ComposeView(
chatModel, Chat(remoteHostId = chatRh, chatInfo = chatInfo, chatItems = emptyList()), composeState, attachmentOption,
showChooseAttachment = { scope.launch { attachmentBottomSheetState.show() } }
)
}
ComposeView(
chatModel, Chat(remoteHostId = chatRh, chatInfo = chatInfo, chatItems = emptyList()), composeState, attachmentOption,
showChooseAttachment = { scope.launch { attachmentBottomSheetState.show() } }
} else {
SelectedItemsBottomToolbar(
chatItems = remember { chatModel.chatItems }.value,
selectedChatItems = selectedChatItems,
chatInfo = chatInfo,
deleteItems = { canDeleteForAll ->
val itemIds = selectedChatItems.value
if (itemIds != null) {
deleteMessagesAlertDialog(
itemIds.sorted(),
generalGetString(if (itemIds.size == 1) MR.strings.delete_message_mark_deleted_warning else MR.strings.delete_messages_mark_deleted_warning),
forAll = canDeleteForAll,
deleteMessages = { ids, forAll ->
deleteMessages(chatRh, chatInfo, ids, forAll, moderate = false) {
selectedChatItems.value = null
}
}
)
}
},
moderateItems = {
if (chatInfo is ChatInfo.Group) {
val itemIds = selectedChatItems.value
if (itemIds != null) {
moderateMessagesAlertDialog(itemIds.sorted(), moderateMessageQuestionText(chatInfo.featureEnabled(ChatFeature.FullDelete), itemIds.size), deleteMessages = { ids ->
deleteMessages(chatRh, chatInfo, ids, true, moderate = true) {
selectedChatItems.value = null
}
})
}
}
}
)
}
},
@@ -145,6 +188,7 @@ fun ChatView(staleChatId: State<String?>, onComposed: suspend (chatId: String) -
searchText,
useLinkPreviews = useLinkPreviews,
linkMode = chatModel.simplexLinkMode.value,
selectedChatItems = selectedChatItems,
back = {
hideKeyboard(view)
AudioPlayer.stop()
@@ -271,22 +315,7 @@ fun ChatView(staleChatId: State<String?>, onComposed: suspend (chatId: String) -
}
}
},
deleteMessages = { itemIds ->
if (itemIds.isNotEmpty()) {
withBGApi {
val deleted = chatModel.controller.apiDeleteChatItems(
chatRh, chatInfo.chatType, chatInfo.apiId, itemIds, CIDeleteMode.cidmInternal
)
if (deleted != null) {
withChats {
for (di in deleted) {
removeChatItem(chatRh, chatInfo, di.deletedChatItem.chatItem)
}
}
}
}
}
},
deleteMessages = { itemIds -> deleteMessages(chatRh, chatInfo, itemIds, false, moderate = false) },
receiveFile = { fileId ->
withBGApi { chatModel.controller.receiveFile(chatRh, user, fileId) }
},
@@ -478,7 +507,7 @@ fun ChatView(staleChatId: State<String?>, onComposed: suspend (chatId: String) -
if (modalBackground) {
platform.androidSetStatusAndNavBarColors(CurrentColors.value.colors.isLight, CurrentColors.value.colors.background, false, false)
} else {
platform.androidSetStatusAndNavBarColors(CurrentColors.value.colors.isLight, backgroundColorState.value, true, true)
platform.androidSetStatusAndNavBarColors(CurrentColors.value.colors.isLight, backgroundColorState.value, true, false)
}
}
}
@@ -536,6 +565,7 @@ fun ChatLayout(
searchValue: State<String>,
useLinkPreviews: Boolean,
linkMode: SimplexLinkMode,
selectedChatItems: MutableState<Set<Long>?>,
back: () -> Unit,
info: () -> Unit,
showMemberInfo: (GroupInfo, GroupMember) -> Unit,
@@ -593,9 +623,11 @@ fun ChatLayout(
)
) {
ProvideWindowInsets(windowInsetsAnimationsEnabled = true) {
val elevation = remember { derivedStateOf { if (attachmentBottomSheetState.currentValue == ModalBottomSheetValue.Hidden) 0.dp else ModalBottomSheetDefaults.Elevation } }
ModalBottomSheetLayout(
scrimColor = Color.Black.copy(alpha = 0.12F),
modifier = Modifier.navigationBarsWithImePadding(),
sheetElevation = elevation.value,
sheetContent = {
ChooseAttachmentView(
attachmentOption,
@@ -611,7 +643,13 @@ fun ChatLayout(
}
Scaffold(
topBar = { ChatInfoToolbar(chatInfo, back, info, startCall, endCall, addMembers, openGroupLink, changeNtfsState, onSearchValueChanged, showSearch) },
topBar = {
if (selectedChatItems.value == null) {
ChatInfoToolbar(chatInfo, back, info, startCall, endCall, addMembers, openGroupLink, changeNtfsState, onSearchValueChanged, showSearch)
} else {
SelectedItemsTopToolbar(selectedChatItems)
}
},
bottomBar = composeView,
modifier = Modifier.navigationBarsWithImePadding(),
floatingActionButton = { floatingButton.value() },
@@ -634,7 +672,7 @@ fun ChatLayout(
) {
ChatItemsList(
remoteHostId, chatInfo, unreadCount, composeState, searchValue,
useLinkPreviews, linkMode, showMemberInfo, loadPrevMessages, deleteMessage, deleteMessages,
useLinkPreviews, linkMode, selectedChatItems, showMemberInfo, loadPrevMessages, deleteMessage, deleteMessages,
receiveFile, cancelFile, joinGroup, acceptCall, acceptFeature, openDirectChat, forwardItem,
updateContactStats, updateMemberStats, syncContactConnection, syncMemberConnection, findModelChat, findModelMember,
setReaction, showItemDetails, markRead, setFloatingButton, onComposed, developerTools, showViaProxy,
@@ -899,6 +937,7 @@ fun BoxWithConstraintsScope.ChatItemsList(
searchValue: State<String>,
useLinkPreviews: Boolean,
linkMode: SimplexLinkMode,
selectedChatItems: MutableState<Set<Long>?>,
showMemberInfo: (GroupInfo, GroupMember) -> Unit,
loadPrevMessages: () -> Unit,
deleteMessage: (Long, CIDeleteMode) -> Unit,
@@ -1012,86 +1051,117 @@ fun BoxWithConstraintsScope.ChatItemsList(
tryOrShowError("${cItem.id}ChatItem", error = {
CIBrokenComposableView(if (cItem.chatDir.sent) Alignment.CenterEnd else Alignment.CenterStart)
}) {
ChatItemView(remoteHostId, chatInfo, cItem, composeState, provider, useLinkPreviews = useLinkPreviews, linkMode = linkMode, revealed = revealed, range = range, deleteMessage = deleteMessage, deleteMessages = deleteMessages, 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, setReaction = setReaction, showItemDetails = showItemDetails, developerTools = developerTools, showViaProxy = showViaProxy)
ChatItemView(remoteHostId, chatInfo, cItem, composeState, provider, useLinkPreviews = useLinkPreviews, linkMode = linkMode, revealed = revealed, range = range, selectedChatItems = selectedChatItems, selectChatItem = { selectUnselectChatItem(true, cItem, revealed, selectedChatItems) }, deleteMessage = deleteMessage, deleteMessages = deleteMessages, 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, setReaction = setReaction, showItemDetails = showItemDetails, developerTools = developerTools, showViaProxy = showViaProxy)
}
}
@Composable
fun ChatItemView(cItem: ChatItem, range: IntRange?, prevItem: ChatItem?) {
val voiceWithTransparentBack = cItem.content.msgContent is MsgContent.MCVoice && cItem.content.text.isEmpty() && cItem.quotedItem == null && cItem.meta.itemForwarded == null
if (chatInfo is ChatInfo.Group) {
if (cItem.chatDir is CIDirection.GroupRcv) {
val member = cItem.chatDir.groupMember
val (prevMember, memCount) =
if (range != null) {
chatModel.getPrevHiddenMember(member, range)
} else {
null to 1
}
if (prevItem == null || showMemberImage(member, prevItem) || prevMember != null) {
Column(
Modifier
.padding(top = 8.dp)
.padding(start = 8.dp, end = if (voiceWithTransparentBack) 12.dp else 66.dp),
verticalArrangement = Arrangement.spacedBy(4.dp),
horizontalAlignment = Alignment.Start
) {
if (cItem.content.showMemberName) {
val memberNameStyle = SpanStyle(fontSize = 13.5.sp, color = CurrentColors.value.colors.secondary)
val memberNameString = if (memCount == 1 && member.memberRole > GroupMemberRole.Member) {
buildAnnotatedString {
withStyle(memberNameStyle.copy(fontWeight = FontWeight.Medium)) { append(member.memberRole.text) }
append(" ")
withStyle(memberNameStyle) { append(memberNames(member, prevMember, memCount)) }
}
} else {
buildAnnotatedString {
withStyle(memberNameStyle) { append(memberNames(member, prevMember, memCount)) }
}
}
Text(
memberNameString,
Modifier.padding(start = MEMBER_IMAGE_SIZE + 10.dp),
maxLines = 2
)
val sent = cItem.chatDir.sent
Box(Modifier.padding(bottom = 4.dp)) {
val voiceWithTransparentBack = cItem.content.msgContent is MsgContent.MCVoice && cItem.content.text.isEmpty() && cItem.quotedItem == null && cItem.meta.itemForwarded == null
val selectionVisible = selectedChatItems.value != null && cItem.canBeDeletedForSelf
val selectionOffset by animateDpAsState(if (selectionVisible && !sent) 4.dp + 22.dp * fontSizeMultiplier else 0.dp)
val swipeableOrSelectionModifier = (if (selectionVisible) Modifier else swipeableModifier).graphicsLayer { translationX = selectionOffset.toPx() }
if (chatInfo is ChatInfo.Group) {
if (cItem.chatDir is CIDirection.GroupRcv) {
val member = cItem.chatDir.groupMember
val (prevMember, memCount) =
if (range != null) {
chatModel.getPrevHiddenMember(member, range)
} else {
null to 1
}
Row(
swipeableModifier,
horizontalArrangement = Arrangement.spacedBy(4.dp)
if (prevItem == null || showMemberImage(member, prevItem) || prevMember != null) {
Column(
Modifier
.padding(top = 8.dp)
.padding(start = 8.dp, end = if (voiceWithTransparentBack) 12.dp else 66.dp),
verticalArrangement = Arrangement.spacedBy(4.dp),
horizontalAlignment = Alignment.Start
) {
Box(Modifier.clickable { showMemberInfo(chatInfo.groupInfo, member) }) {
MemberImage(member)
if (cItem.content.showMemberName) {
val memberNameStyle = SpanStyle(fontSize = 13.5.sp, color = CurrentColors.value.colors.secondary)
val memberNameString = if (memCount == 1 && member.memberRole > GroupMemberRole.Member) {
buildAnnotatedString {
withStyle(memberNameStyle.copy(fontWeight = FontWeight.Medium)) { append(member.memberRole.text) }
append(" ")
withStyle(memberNameStyle) { append(memberNames(member, prevMember, memCount)) }
}
} else {
buildAnnotatedString {
withStyle(memberNameStyle) { append(memberNames(member, prevMember, memCount)) }
}
}
Text(
memberNameString,
Modifier.padding(start = MEMBER_IMAGE_SIZE + 10.dp),
maxLines = 2
)
}
Box(contentAlignment = Alignment.CenterStart) {
androidx.compose.animation.AnimatedVisibility(selectionVisible, enter = fadeIn(), exit = fadeOut()) {
SelectedChatItem(Modifier, cItem.id, selectedChatItems)
}
Row(
swipeableOrSelectionModifier,
horizontalArrangement = Arrangement.spacedBy(4.dp)
) {
Box(Modifier.clickable { showMemberInfo(chatInfo.groupInfo, member) }) {
MemberImage(member)
}
ChatItemViewShortHand(cItem, range)
}
}
}
} else {
Box(contentAlignment = Alignment.CenterStart) {
AnimatedVisibility (selectionVisible, enter = fadeIn(), exit = fadeOut()) {
SelectedChatItem(Modifier.padding(start = 8.dp), cItem.id, selectedChatItems)
}
Row(
Modifier
.padding(start = 8.dp + MEMBER_IMAGE_SIZE + 4.dp, end = if (voiceWithTransparentBack) 12.dp else 66.dp)
.then(swipeableOrSelectionModifier)
) {
ChatItemViewShortHand(cItem, range)
}
ChatItemViewShortHand(cItem, range)
}
}
} else {
Row(
Modifier
.padding(start = 8.dp + MEMBER_IMAGE_SIZE + 4.dp, end = if (voiceWithTransparentBack) 12.dp else 66.dp)
.then(swipeableModifier)
Box(contentAlignment = Alignment.CenterStart) {
AnimatedVisibility (selectionVisible, enter = fadeIn(), exit = fadeOut()) {
SelectedChatItem(Modifier.padding(start = 8.dp), cItem.id, selectedChatItems)
}
Box(
Modifier
.padding(start = if (voiceWithTransparentBack) 12.dp else 104.dp, end = 12.dp)
.then(if (selectionVisible) Modifier else swipeableModifier)
) {
ChatItemViewShortHand(cItem, range)
}
}
}
} else { // direct message
Box(contentAlignment = Alignment.CenterStart) {
AnimatedVisibility (selectionVisible, enter = fadeIn(), exit = fadeOut()) {
SelectedChatItem(Modifier.padding(start = 8.dp), cItem.id, selectedChatItems)
}
Box(
Modifier.padding(
start = if (sent && !voiceWithTransparentBack) 76.dp else 12.dp,
end = if (sent || voiceWithTransparentBack) 12.dp else 76.dp,
).then(if (!selectionVisible || !sent) swipeableOrSelectionModifier else Modifier)
) {
ChatItemViewShortHand(cItem, range)
}
}
} else {
Box(
Modifier
.padding(start = if (voiceWithTransparentBack) 12.dp else 104.dp, end = 12.dp)
.then(swipeableModifier)
) {
ChatItemViewShortHand(cItem, range)
}
}
} else { // direct message
val sent = cItem.chatDir.sent
Box(
Modifier.padding(
start = if (sent && !voiceWithTransparentBack) 76.dp else 12.dp,
end = if (sent || voiceWithTransparentBack) 12.dp else 76.dp,
).then(swipeableModifier)
) {
ChatItemViewShortHand(cItem, range)
if (selectionVisible) {
Box(Modifier.matchParentSize().clickable {
val checked = selectedChatItems.value?.contains(cItem.id) == true
selectUnselectChatItem(select = !checked, cItem, revealed, selectedChatItems)
})
}
}
}
@@ -1317,7 +1387,7 @@ val MEMBER_IMAGE_SIZE: Dp = 38.dp
@Composable
fun MemberImage(member: GroupMember) {
ProfileImage(MEMBER_IMAGE_SIZE * fontSizeSqrtMultiplier, member.memberProfile.image, backgroundColor = MaterialTheme.colors.background)
MemberProfileImage(MEMBER_IMAGE_SIZE * fontSizeSqrtMultiplier, member, backgroundColor = MaterialTheme.colors.background)
}
@Composable
@@ -1416,6 +1486,96 @@ private fun bottomEndFloatingButton(
}
}
@Composable
private fun SelectedChatItem(
modifier: Modifier,
ciId: Long,
selectedChatItems: State<Set<Long>?>,
) {
val checked = remember { derivedStateOf { selectedChatItems.value?.contains(ciId) == true } }
Icon(
painterResource(if (checked.value) MR.images.ic_check_circle_filled else MR.images.ic_radio_button_unchecked),
null,
modifier.size(22.dp * fontSizeMultiplier),
tint = if (checked.value) {
MaterialTheme.colors.primary
} else if (isInDarkTheme()) {
// .tertiaryLabel instead of .secondary
Color(red = 235f / 255f, 235f / 255f, 245f / 255f, 76f / 255f)
} else {
// .tertiaryLabel instead of .secondary
Color(red = 60f / 255f, 60f / 255f, 67f / 255f, 76f / 255f)
}
)
}
private fun selectUnselectChatItem(select: Boolean, ci: ChatItem, revealed: State<Boolean>, selectedChatItems: MutableState<Set<Long>?>) {
val itemIds = mutableSetOf<Long>()
if (!revealed.value) {
val currIndex = chatModel.getChatItemIndexOrNull(ci)
val ciCategory = ci.mergeCategory
if (currIndex != null && ciCategory != null) {
val (prevHidden, _) = chatModel.getPrevShownChatItem(currIndex, ciCategory)
val range = chatViewItemsRange(currIndex, prevHidden)
if (range != null) {
val reversedChatItems = chatModel.chatItems.asReversed()
for (i in range) {
itemIds.add(reversedChatItems[i].id)
}
} else {
itemIds.add(ci.id)
}
} else {
itemIds.add(ci.id)
}
} else {
itemIds.add(ci.id)
}
if (select) {
val sel = selectedChatItems.value ?: setOf()
selectedChatItems.value = sel.union(itemIds)
} else {
val sel = (selectedChatItems.value ?: setOf()).toMutableSet()
sel.removeAll(itemIds)
selectedChatItems.value = sel
}
}
private fun deleteMessages(chatRh: Long?, chatInfo: ChatInfo, itemIds: List<Long>, forAll: Boolean, moderate: Boolean, onSuccess: () -> Unit = {}) {
if (itemIds.isNotEmpty()) {
withBGApi {
val deleted = if (chatInfo is ChatInfo.Group && forAll && moderate) {
chatModel.controller.apiDeleteMemberChatItems(
chatRh,
groupId = chatInfo.groupInfo.groupId,
itemIds = itemIds
)
} else {
chatModel.controller.apiDeleteChatItems(
chatRh,
type = chatInfo.chatType,
id = chatInfo.apiId,
itemIds = itemIds,
mode = if (forAll) CIDeleteMode.cidmBroadcast else CIDeleteMode.cidmInternal
)
}
if (deleted != null) {
withChats {
for (di in deleted) {
val toChatItem = di.toChatItem?.chatItem
if (toChatItem != null) {
upsertChatItem(chatRh, chatInfo, toChatItem)
} else {
removeChatItem(chatRh, chatInfo, di.deletedChatItem.chatItem)
}
}
}
onSuccess()
}
}
}
}
private fun markUnreadChatAsRead(chatId: String) {
val chat = chatModel.chats.value.firstOrNull { it.id == chatId }
if (chat?.chatStats?.unreadChat != true) return
@@ -1593,6 +1753,7 @@ fun PreviewChatLayout() {
searchValue,
useLinkPreviews = true,
linkMode = SimplexLinkMode.DESCRIPTION,
selectedChatItems = remember { mutableStateOf(setOf()) },
back = {},
info = {},
showMemberInfo = { _, _ -> },
@@ -1664,6 +1825,7 @@ fun PreviewGroupChatLayout() {
searchValue,
useLinkPreviews = true,
linkMode = SimplexLinkMode.DESCRIPTION,
selectedChatItems = remember { mutableStateOf(setOf()) },
back = {},
info = {},
showMemberInfo = { _, _ -> },
@@ -872,11 +872,9 @@ fun ComposeView(
}
}
}
Column(Modifier.background(MaterialTheme.colors.background)) {
Divider()
Row(
modifier = Modifier.background(MaterialTheme.colors.background).padding(end = 8.dp),
verticalAlignment = Alignment.Bottom,
) {
Row(Modifier.padding(end = 8.dp), verticalAlignment = Alignment.Bottom) {
val isGroupAndProhibitedFiles = chat.chatInfo is ChatInfo.Group && !chat.chatInfo.groupInfo.fullGroupPreferences.files.on(chat.chatInfo.groupInfo.membership)
val attachmentClicked = if (isGroupAndProhibitedFiles) {
{
@@ -896,7 +894,7 @@ fun ComposeView(
&& !nextSendGrpInv.value
IconButton(
attachmentClicked,
Modifier.padding(bottom = if (appPlatform.isAndroid) 2.dp else with(LocalDensity.current) { 7.sp.toDp() }),
Modifier.padding(bottom = if (appPlatform.isAndroid) 2.sp.toDp() else 5.sp.toDp() * fontSizeSqrtMultiplier),
enabled = attachmentEnabled
) {
Icon(
@@ -925,7 +923,7 @@ fun ComposeView(
snapshotFlow { recState.value }
.distinctUntilChanged()
.collect {
when(it) {
when (it) {
is RecordingState.Started -> onAudioAdded(it.filePath, it.progressMs, false)
is RecordingState.Finished -> if (it.durationMs > 300) {
onAudioAdded(it.filePath, it.durationMs, true)
@@ -1005,6 +1003,7 @@ fun ComposeView(
sendButtonColor = sendButtonColor,
timedMessageAllowed = timedMessageAllowed,
customDisappearingMessageTimePref = chatModel.controller.appPrefs.customDisappearingMessageTime,
placeholder = stringResource(MR.strings.compose_message_placeholder),
sendMessage = { ttl ->
sendMessage(ttl)
resetLinkPreview()
@@ -1022,4 +1021,5 @@ fun ComposeView(
)
}
}
}
}
@@ -0,0 +1,132 @@
package chat.simplex.common.views.chat
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.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.platform.BackHandler
import chat.simplex.common.platform.chatModel
import chat.simplex.common.views.helpers.*
import dev.icerock.moko.resources.compose.stringResource
import chat.simplex.res.MR
import dev.icerock.moko.resources.compose.painterResource
@Composable
fun SelectedItemsTopToolbar(selectedChatItems: MutableState<Set<Long>?>) {
val onBackClicked = { selectedChatItems.value = null }
BackHandler(onBack = onBackClicked)
val count = selectedChatItems.value?.size ?: 0
DefaultTopAppBar(
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,
showSearch = false,
onSearchValueChanged = {},
)
Divider(Modifier.padding(top = AppBarHeight * fontSizeSqrtMultiplier))
}
@Composable
fun SelectedItemsBottomToolbar(
chatInfo: ChatInfo,
chatItems: List<ChatItem>,
selectedChatItems: MutableState<Set<Long>?>,
deleteItems: (Boolean) -> Unit, // Boolean - delete for everyone is possible
moderateItems: () -> Unit,
// shareItems: () -> Unit,
) {
val deleteEnabled = remember { mutableStateOf(false) }
val deleteForEveryoneEnabled = remember { mutableStateOf(false) }
val canModerate = remember { mutableStateOf(false) }
val moderateEnabled = remember { mutableStateOf(false) }
val allButtonsDisabled = remember { mutableStateOf(false) }
Box {
// It's hard to measure exact height of ComposeView with different fontSizes. Better to depend on actual ComposeView, even empty
ComposeView(chatModel = chatModel, Chat.sampleData, remember { mutableStateOf(ComposeState(useLinkPreviews = false)) }, remember { mutableStateOf(null) }, {})
Row(Modifier.matchParentSize().background(MaterialTheme.colors.background), horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically) {
IconButton({ deleteItems(deleteForEveryoneEnabled.value) }, enabled = deleteEnabled.value && !allButtonsDisabled.value) {
Icon(
painterResource(MR.images.ic_delete),
null,
Modifier.size(24.dp),
tint = if (!deleteEnabled.value || allButtonsDisabled.value) MaterialTheme.colors.secondary else MaterialTheme.colors.error
)
}
IconButton({ moderateItems() }, Modifier.alpha(if (canModerate.value) 1f else 0f), enabled = moderateEnabled.value && !allButtonsDisabled.value) {
Icon(
painterResource(MR.images.ic_flag),
null,
Modifier.size(24.dp),
tint = if (!moderateEnabled.value || allButtonsDisabled.value) MaterialTheme.colors.secondary else MaterialTheme.colors.error
)
}
IconButton({ /*shareItems()*/ }, Modifier.alpha(0f), enabled = false/*!allButtonsDisabled.value*/) {
Icon(
painterResource(MR.images.ic_share),
null,
Modifier.size(24.dp),
tint = if (allButtonsDisabled.value) MaterialTheme.colors.secondary else MaterialTheme.colors.primary
)
}
}
}
LaunchedEffect(chatInfo, chatItems, selectedChatItems.value) {
recheckItems(chatInfo, chatItems, selectedChatItems, deleteEnabled, deleteForEveryoneEnabled, canModerate, moderateEnabled, allButtonsDisabled)
}
}
private fun recheckItems(chatInfo: ChatInfo,
chatItems: List<ChatItem>,
selectedChatItems: MutableState<Set<Long>?>,
deleteEnabled: MutableState<Boolean>,
deleteForEveryoneEnabled: MutableState<Boolean>,
canModerate: MutableState<Boolean>,
moderateEnabled: MutableState<Boolean>,
allButtonsDisabled: MutableState<Boolean>
) {
val count = selectedChatItems.value?.size ?: 0
allButtonsDisabled.value = count == 0 || count > 20
canModerate.value = possibleToModerate(chatInfo)
val selected = selectedChatItems.value ?: return
var rDeleteEnabled = true
var rDeleteForEveryoneEnabled = true
var rModerateEnabled = true
var rOnlyOwnGroupItems = true
val rSelectedChatItems = mutableSetOf<Long>()
for (ci in chatItems) {
if (selected.contains(ci.id)) {
rDeleteEnabled = rDeleteEnabled && ci.canBeDeletedForSelf
rDeleteForEveryoneEnabled = rDeleteForEveryoneEnabled && ci.meta.deletable && !ci.localNote
rOnlyOwnGroupItems = rOnlyOwnGroupItems && ci.chatDir is CIDirection.GroupSnd
rModerateEnabled = rModerateEnabled && !rOnlyOwnGroupItems && ci.content.msgContent != null && ci.memberToModerate(chatInfo) != null
rSelectedChatItems.add(ci.id) // we are collecting new selected items here to account for any changes in chat items list
}
}
deleteEnabled.value = rDeleteEnabled
deleteForEveryoneEnabled.value = rDeleteForEveryoneEnabled
moderateEnabled.value = rModerateEnabled
selectedChatItems.value = rSelectedChatItems
}
private fun possibleToModerate(chatInfo: ChatInfo): Boolean =
chatInfo is ChatInfo.Group && chatInfo.groupInfo.membership.memberRole >= GroupMemberRole.Admin
@@ -15,12 +15,10 @@ import androidx.compose.ui.draw.alpha
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.*
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.semantics.Role
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.unit.*
import chat.simplex.common.model.*
import chat.simplex.common.model.ChatController.appPrefs
import chat.simplex.common.ui.theme.*
import chat.simplex.common.views.chat.item.ItemAction
import chat.simplex.common.views.helpers.*
@@ -51,6 +49,7 @@ fun SendMsgView(
allowVoiceToContact: () -> Unit,
timedMessageAllowed: Boolean = false,
customDisappearingMessageTimePref: SharedPreference<Int>? = null,
placeholder: String,
sendMessage: (Int?) -> Unit,
sendLiveMessage: (suspend () -> Unit)? = null,
updateLiveMessage: (suspend () -> Unit)? = null,
@@ -62,7 +61,7 @@ fun SendMsgView(
) {
val showCustomDisappearingMessageDialog = remember { mutableStateOf(false) }
Box(Modifier.padding(vertical = 8.dp)) {
Box(Modifier.padding(vertical = if (appPlatform.isAndroid) 8.dp else 6.dp)) {
val cs = composeState.value
var progressByTimeout by rememberSaveable { mutableStateOf(false) }
LaunchedEffect(composeState.value.inProgress) {
@@ -80,13 +79,24 @@ fun SendMsgView(
(!allowedVoiceByPrefs && cs.preview is ComposePreview.VoicePreview) ||
cs.endLiveDisabled ||
!sendButtonEnabled
PlatformTextField(composeState, sendMsgEnabled, sendMsgButtonDisabled, textStyle, showDeleteTextButton, userIsObserver, onMessageChange, editPrevMessage, onFilesPasted) {
val clicksOnTextFieldDisabled = !sendMsgEnabled || cs.preview is ComposePreview.VoicePreview || !userCanSend || cs.inProgress
PlatformTextField(
composeState,
sendMsgEnabled,
sendMsgButtonDisabled,
textStyle,
showDeleteTextButton,
userIsObserver,
if (clicksOnTextFieldDisabled) "" else placeholder,
onMessageChange,
editPrevMessage,
onFilesPasted
) {
if (!cs.inProgress) {
sendMessage(null)
}
}
// Disable clicks on text field
if (!sendMsgEnabled || cs.preview is ComposePreview.VoicePreview || !userCanSend || cs.inProgress) {
if (clicksOnTextFieldDisabled) {
Box(
Modifier
.matchParentSize()
@@ -101,7 +111,7 @@ fun SendMsgView(
if (showDeleteTextButton.value) {
DeleteTextButton(composeState)
}
Box(Modifier.align(Alignment.BottomEnd).padding(bottom = if (appPlatform.isAndroid) 0.dp else with(LocalDensity.current) { 5.sp.toDp() } * fontSizeSqrtMultiplier)) {
Box(Modifier.align(Alignment.BottomEnd).padding(bottom = if (appPlatform.isAndroid) 0.dp else 5.sp.toDp() * fontSizeSqrtMultiplier)) {
val sendButtonSize = remember { Animatable(36f) }
val sendButtonAlpha = remember { Animatable(1f) }
val scope = rememberCoroutineScope()
@@ -564,6 +574,7 @@ fun PreviewSendMsgView() {
userCanSend = true,
allowVoiceToContact = {},
timedMessageAllowed = false,
placeholder = "",
sendMessage = {},
editPrevMessage = {},
onMessageChange = { _ -> },
@@ -599,6 +610,7 @@ fun PreviewSendMsgViewEditing() {
userCanSend = true,
allowVoiceToContact = {},
timedMessageAllowed = false,
placeholder = "",
sendMessage = {},
editPrevMessage = {},
onMessageChange = { _ -> },
@@ -634,6 +646,7 @@ fun PreviewSendMsgViewInProgress() {
userCanSend = true,
allowVoiceToContact = {},
timedMessageAllowed = false,
placeholder = "",
sendMessage = {},
editPrevMessage = {},
onMessageChange = { _ -> },
@@ -487,7 +487,7 @@ private fun MemberRow(member: GroupMember, user: Boolean = false, onClick: (() -
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(4.dp)
) {
ProfileImage(size = 46.dp, member.image)
MemberProfileImage(size = 46.dp, member)
Spacer(Modifier.width(DEFAULT_PADDING_HALF))
Column {
Row(verticalAlignment = Alignment.CenterVertically) {
@@ -25,8 +25,7 @@ import dev.icerock.moko.resources.compose.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.compose.ui.unit.*
import chat.simplex.common.model.*
import chat.simplex.common.model.ChatModel.controller
import chat.simplex.common.model.ChatModel.withChats
@@ -495,7 +494,7 @@ fun GroupMemberInfoHeader(member: GroupMember) {
Modifier.padding(horizontal = 16.dp),
horizontalAlignment = Alignment.CenterHorizontally
) {
ProfileImage(size = 192.dp, member.image, color = if (isInDarkTheme()) GroupDark else SettingsSecondaryLight)
MemberProfileImage(size = 192.dp, member, color = if (isInDarkTheme()) GroupDark else SettingsSecondaryLight)
val text = buildAnnotatedString {
if (member.verified) {
appendInlineContent(id = "shieldIcon")
@@ -625,6 +624,22 @@ private fun RoleSelectionRow(
}
}
@Composable
fun MemberProfileImage(
size: Dp,
mem: GroupMember,
color: Color = MaterialTheme.colors.secondaryVariant,
backgroundColor: Color? = null
) {
ProfileImage(
size = size,
image = mem.image,
color = color,
backgroundColor = backgroundColor,
blurred = mem.blocked
)
}
private fun updateMemberRoleDialog(
newRole: GroupMemberRole,
member: GroupMember,
@@ -269,7 +269,7 @@ fun CIImageView(
if (!smallView && (!showDownloadButton(file?.fileStatus) || !blurred.value)) {
loadingIndicator()
} else if (smallView && file?.showStatusIconInSmallView == true) {
Box(Modifier.align(Alignment.Center)) {
Box(Modifier.matchParentSize(), contentAlignment = Alignment.Center) {
loadingIndicator()
}
}

Some files were not shown because too many files have changed in this diff Show More