mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2024-12-17 17:20:21 +01:00
Compare commits
253 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 09f916b5e4 | |||
| 554cfbfcc7 | |||
| eff4f2f603 | |||
| fb4f0503a1 | |||
| 61ab15bbb5 | |||
| c53d56ba00 | |||
| 4aaff20fd8 | |||
| b42cde2519 | |||
| 2b0c229dbb | |||
| 9e54ae7295 | |||
| ddd639a86c | |||
| ab5bd911c2 | |||
| b75602f248 | |||
| 5d599a59b7 | |||
| af6b57e453 | |||
| 6bd2794548 | |||
| 59d86274cd | |||
| b6a9b25acd | |||
| 0e3b71866b | |||
| 3e9e7e29c0 | |||
| 531248f61a | |||
| 2defbdc361 | |||
| 8ce3d335b0 | |||
| 2295c2a85f | |||
| aa06b08e69 | |||
| 0b681d900b | |||
| a87153714f | |||
| a08200b3ab | |||
| 810f05d88f | |||
| 00aa615df7 | |||
| 6c3fd9b428 | |||
| c9f5066c60 | |||
| bc96e95849 | |||
| 8a301567e1 | |||
| afa6083cb3 | |||
| 160c253966 | |||
| 3d7434c52f | |||
| c78df15cd6 | |||
| 701bef2a50 | |||
| 560d9b1b03 | |||
| b82349164f | |||
| 30df42d20d | |||
| 01345cd423 | |||
| 38a2f3b458 | |||
| f739c7f226 | |||
| 28fb67fe92 | |||
| d2b643de01 | |||
| bae9685950 | |||
| ccd34f5ab1 | |||
| dd8081a9d4 | |||
| d65909cb53 | |||
| e99b543c2f | |||
| 312d315d73 | |||
| cdf5520084 | |||
| 170e8ddeaf | |||
| 68f7956512 | |||
| e424b3eb66 | |||
| fb7a414e3c | |||
| 5966d6d648 | |||
| c6ebc9a4d9 | |||
| 05ec8b0676 | |||
| 6980f643ff | |||
| b60dd3e3e8 | |||
| 17a5770442 | |||
| 439bbc15a5 | |||
| 3688141972 | |||
| d79f8f8345 | |||
| 923ad7470c | |||
| 833abb252e | |||
| c60207f211 | |||
| d5665a421f | |||
| b2aa0ffc3c | |||
| e50a5cfaa1 | |||
| 73ec44a9be | |||
| 59fe6ab8ce | |||
| ec64be7c89 | |||
| 41984e56c0 | |||
| c435510b2e | |||
| de65d0e0a2 | |||
| 9cde37c6f5 | |||
| 9514acf6aa | |||
| 40d54f3f16 | |||
| 3249c5e463 | |||
| e440fba582 | |||
| 43cedbce26 | |||
| ebad009553 | |||
| 35cf113d98 | |||
| e82d2cbea2 | |||
| a0e056994e | |||
| e4d8ea17fc | |||
| e69db17804 | |||
| 9282cca396 | |||
| ad2eaeb004 | |||
| 3f44c9af24 | |||
| 4296515473 | |||
| 88830a2e09 | |||
| c8a269e391 | |||
| a45897007c | |||
| 42ea1df342 | |||
| 47214e33ea | |||
| ff239d81e5 | |||
| 0a6e47dd61 | |||
| ee75219ed3 | |||
| 2e337a753f | |||
| 9918d91def | |||
| 82dd5751c1 | |||
| de637fab50 | |||
| cb49f6f01d | |||
| 6d0a83aa58 | |||
| 05f57e98ad | |||
| 6a66525927 | |||
| 9530a6055a | |||
| f5ed8debcc | |||
| 355d2449c5 | |||
| f7382cdd6f | |||
| dc8d10d068 | |||
| 951245d33f | |||
| 521b901cc9 | |||
| 6311ba451b | |||
| 754c76d6fd | |||
| aea7ff1c89 | |||
| 77ac972e09 | |||
| 256f85024f | |||
| 870f9e42dd | |||
| 0a4a3a24e1 | |||
| 8a66390a78 | |||
| 3d48eded3d | |||
| 6546426ec0 | |||
| 4a7ceb00fb | |||
| 53560378bb | |||
| cdb3b6aafd | |||
| 9f3d3e8ba4 | |||
| 047aad592e | |||
| 087acd9180 | |||
| 0b822e4a5c | |||
| f8a469488e | |||
| 3b5e806418 | |||
| 79e208193a | |||
| ef5c13b1c1 | |||
| 38533213d2 | |||
| 5f1aa6fa9d | |||
| b0002fe07d | |||
| ef21fd1d26 | |||
| 4a311b9578 | |||
| b8da5e225b | |||
| f27de052cf | |||
| 5cc537f14c | |||
| dc8ca4cf89 | |||
| b62dd801f1 | |||
| 0c096e2c89 | |||
| cc127e56fe | |||
| 1781495ee3 | |||
| 831231d8e6 | |||
| 45102442f4 | |||
| f323c8e112 | |||
| 3bdc6b5e28 | |||
| d8373262bc | |||
| 3597d34716 | |||
| bd4259e89e | |||
| 55ead740cc | |||
| 5ef0eda2d7 | |||
| 49a9b0e7d6 | |||
| 45ada450a2 | |||
| 307a1b3c5e | |||
| ed6b3bbead | |||
| 901610eec5 | |||
| 7d4127c51d | |||
| 13215d91d7 | |||
| e1a8099474 | |||
| daa8d9bb21 | |||
| 5fcbade1bc | |||
| 3937ffa9a6 | |||
| 80ddb50e1c | |||
| f6e66f1c53 | |||
| 0c23ff9ae3 | |||
| 1570bc2b99 | |||
| 1e2104cabf | |||
| f3014f258d | |||
| f0991cc0ba | |||
| 74b78a8d7b | |||
| 82cd70a75c | |||
| fe4eb7b5af | |||
| c459e71d02 | |||
| 2516d5a393 | |||
| 477d98d75a | |||
| 4253cd7fb9 | |||
| ca78958667 | |||
| 1f5b80d560 | |||
| 2de111e76c | |||
| 8343285d93 | |||
| 5dbe2b2745 | |||
| fb9485190d | |||
| 6881600e06 | |||
| 9ed723bafa | |||
| 9ded1c9821 | |||
| bb374c68b1 | |||
| c3e82a6a4e | |||
| 7c12e82042 | |||
| e7e66ff873 | |||
| c4d7e5307c | |||
| d6b9a45a39 | |||
| 7fd3b4d6ba | |||
| 4004aafbc5 | |||
| 95008eeeaf | |||
| c7a8992043 | |||
| ea2b5f2ccf | |||
| ed9f277421 | |||
| 5c14c3b349 | |||
| d8fb31f167 | |||
| 02db38ffd3 | |||
| 7692195bfa | |||
| c435cbdc7b | |||
| effc281271 | |||
| 41eb2e5689 | |||
| 67d74a0a27 | |||
| f66405e79b | |||
| 74d186af16 | |||
| 187fef0c5a | |||
| 4782cab507 | |||
| bcbee67709 | |||
| 2501cbe55d | |||
| 2bd049db87 | |||
| 6b8b9ab4fd | |||
| 30db24265e | |||
| 316d605899 | |||
| b4257f7767 | |||
| a3f2d5c919 | |||
| cf46469cd5 | |||
| 0312fde818 | |||
| 9defa44f0c | |||
| 915b53054c | |||
| f81557b4fd | |||
| e273bd1239 | |||
| a63caf4640 | |||
| e7f0234134 | |||
| 340552321e | |||
| 98a3fc214d | |||
| 6a578cfe3c | |||
| dacc075fe8 | |||
| 55418e2bc0 | |||
| f2b5c0f3a8 | |||
| 5ebdf5dba9 | |||
| 8e045764df | |||
| 503d3d77e6 | |||
| 81bd7d97c5 | |||
| 8f57925067 | |||
| 9bf99db82e | |||
| 5615cdbf1a | |||
| d802ae0058 | |||
| 8f2278198c | |||
| 10937a5a4e | |||
| 6aff6e9804 | |||
| 95477cae7e |
@@ -233,7 +233,7 @@ You can use SimpleX with your own servers and still communicate with people usin
|
||||
|
||||
Recent and important updates:
|
||||
|
||||
[Dec 10, 2024. SimpleX network: preset servers operated by Flux, business chats and more with v6.2 of the apps](./20241210-simplex-network-v6-2-servers-by-flux-business-chats.md)
|
||||
[Nov 25, 2025. Servers operated by Flux - true privacy and decentralization for all users](./20241125-servers-operated-by-flux-true-privacy-and-decentralization-for-all-users.md)
|
||||
|
||||
[Oct 14, 2024. SimpleX network: security review of protocols design by Trail of Bits, v6.1 released with better calls and user experience.](./blog/20241014-simplex-network-v6-1-security-review-better-calls-user-experience.md)
|
||||
|
||||
@@ -243,14 +243,20 @@ Recent and important updates:
|
||||
|
||||
[Mar 14, 2024. SimpleX Chat v5.6 beta: adding quantum resistance to Signal double ratchet algorithm.](./blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.md)
|
||||
|
||||
[Jan 24, 2024. SimpleX Chat: free infrastructure from Linode, v5.5 released with private notes, group history and a simpler UX to connect.](./blog/20240124-simplex-chat-infrastructure-costs-v5-5-simplex-ux-private-notes-group-history.md)
|
||||
|
||||
[Nov 25, 2023. SimpleX Chat v5.4 released: link mobile and desktop apps via quantum resistant protocol, and much better groups](./blog/20231125-simplex-chat-v5-4-link-mobile-desktop-quantum-resistant-better-groups.md).
|
||||
|
||||
[Sep 25, 2023. SimpleX Chat v5.3 released: desktop app, local file encryption, improved groups and directory service](./blog/20230925-simplex-chat-v5-3-desktop-app-local-file-encryption-directory-service.md).
|
||||
|
||||
[Apr 22, 2023. SimpleX Chat: vision and funding, v5.0 released with videos and files up to 1gb](./blog/20230422-simplex-chat-vision-funding-v5-videos-files-passcode.md).
|
||||
|
||||
[Mar 1, 2023. SimpleX File Transfer Protocol – send large files efficiently, privately and securely, soon to be integrated into SimpleX Chat apps.](./blog/20230301-simplex-file-transfer-protocol.md).
|
||||
|
||||
[Nov 8, 2022. Security audit by Trail of Bits, the new website and v4.2 released](./blog/20221108-simplex-chat-v4.2-security-audit-new-website.md).
|
||||
|
||||
[Sep 28, 2022. v4.0: encrypted local chat database and many other changes](./blog/20220928-simplex-chat-v4-encrypted-database.md).
|
||||
|
||||
[All updates](./blog)
|
||||
|
||||
## :zap: Quick installation of a terminal app
|
||||
@@ -378,11 +384,9 @@ Please also join [#simplex-devs](https://simplex.chat/contact#/?v=1-2&smp=smp%3A
|
||||
- ✅ Improve sending videos (including encryption of locally stored videos).
|
||||
- ✅ Post-quantum resistant key exchange in double ratchet protocol.
|
||||
- ✅ Message delivery relay for senders (to conceal IP address from the recipients' servers and to reduce the traffic).
|
||||
- ✅ Support multiple network operators in the app.
|
||||
- 🏗 Large groups, communities and public channels.
|
||||
- 🏗 Short links to connect and join groups.
|
||||
- 🏗 Improve stability and reduce battery usage.
|
||||
- 🏗 Improve experience for the new users.
|
||||
- 🏗 Large groups, communities and public channels.
|
||||
- Privacy & security slider - a simple way to set all settings at once.
|
||||
- SMP queue redundancy and rotation (manual is supported).
|
||||
- Include optional message into connection request sent via contact address.
|
||||
|
||||
@@ -156,8 +156,8 @@ struct ChatInfoView: View {
|
||||
HStack(alignment: .center, spacing: 8) {
|
||||
let buttonWidth = g.size.width / 4
|
||||
searchButton(width: buttonWidth)
|
||||
AudioCallButton(chat: chat, contact: contact, connectionStats: $connectionStats, width: buttonWidth) { alert = .someAlert(alert: $0) }
|
||||
VideoButton(chat: chat, contact: contact, connectionStats: $connectionStats, width: buttonWidth) { alert = .someAlert(alert: $0) }
|
||||
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)
|
||||
}
|
||||
}
|
||||
@@ -314,15 +314,7 @@ struct ChatInfoView: View {
|
||||
case .networkStatusAlert: return networkStatusAlert()
|
||||
case .switchAddressAlert: return switchAddressAlert(switchContactAddress)
|
||||
case .abortSwitchAddressAlert: return abortSwitchAddressAlert(abortSwitchContactAddress)
|
||||
case .syncConnectionForceAlert:
|
||||
return syncConnectionForceAlert({
|
||||
Task {
|
||||
if let stats = await syncContactConnection(contact, force: true, showAlert: { alert = .someAlert(alert: $0) }) {
|
||||
connectionStats = stats
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
})
|
||||
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)
|
||||
@@ -501,12 +493,7 @@ struct ChatInfoView: View {
|
||||
|
||||
private func synchronizeConnectionButton() -> some View {
|
||||
Button {
|
||||
Task {
|
||||
if let stats = await syncContactConnection(contact, force: false, showAlert: { alert = .someAlert(alert: $0) }) {
|
||||
connectionStats = stats
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
syncContactConnection(force: false)
|
||||
} label: {
|
||||
Label("Fix connection", systemImage: "exclamationmark.arrow.triangle.2.circlepath")
|
||||
.foregroundColor(.orange)
|
||||
@@ -625,6 +612,25 @@ struct ChatInfoView: View {
|
||||
}
|
||||
}
|
||||
|
||||
private func syncContactConnection(force: Bool) {
|
||||
Task {
|
||||
do {
|
||||
let stats = try apiSyncContactRatchet(contact.apiId, force)
|
||||
connectionStats = stats
|
||||
await MainActor.run {
|
||||
chatModel.updateContactConnectionStats(contact, stats)
|
||||
dismiss()
|
||||
}
|
||||
} catch let error {
|
||||
logger.error("syncContactConnection apiSyncContactRatchet error: \(responseError(error))")
|
||||
let a = getErrorAlert(error, "Error synchronizing connection")
|
||||
await MainActor.run {
|
||||
alert = .error(title: a.title, error: a.message)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private func savePreferences() {
|
||||
Task {
|
||||
do {
|
||||
@@ -643,32 +649,9 @@ struct ChatInfoView: View {
|
||||
}
|
||||
}
|
||||
|
||||
func syncContactConnection(_ contact: Contact, force: Bool, showAlert: (SomeAlert) -> Void) async -> ConnectionStats? {
|
||||
do {
|
||||
let stats = try apiSyncContactRatchet(contact.apiId, force)
|
||||
await MainActor.run {
|
||||
ChatModel.shared.updateContactConnectionStats(contact, stats)
|
||||
}
|
||||
return stats
|
||||
} catch let error {
|
||||
logger.error("syncContactConnection apiSyncContactRatchet error: \(responseError(error))")
|
||||
let a = getErrorAlert(error, "Error synchronizing connection")
|
||||
await MainActor.run {
|
||||
showAlert(
|
||||
SomeAlert(
|
||||
alert: mkAlert(title: a.title, message: a.message),
|
||||
id: "syncContactConnection error"
|
||||
)
|
||||
)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
struct AudioCallButton: View {
|
||||
var chat: Chat
|
||||
var contact: Contact
|
||||
@Binding var connectionStats: ConnectionStats?
|
||||
var width: CGFloat
|
||||
var showAlert: (SomeAlert) -> Void
|
||||
|
||||
@@ -676,7 +659,6 @@ struct AudioCallButton: View {
|
||||
CallButton(
|
||||
chat: chat,
|
||||
contact: contact,
|
||||
connectionStats: $connectionStats,
|
||||
image: "phone.fill",
|
||||
title: "call",
|
||||
mediaType: .audio,
|
||||
@@ -689,7 +671,6 @@ struct AudioCallButton: View {
|
||||
struct VideoButton: View {
|
||||
var chat: Chat
|
||||
var contact: Contact
|
||||
@Binding var connectionStats: ConnectionStats?
|
||||
var width: CGFloat
|
||||
var showAlert: (SomeAlert) -> Void
|
||||
|
||||
@@ -697,7 +678,6 @@ struct VideoButton: View {
|
||||
CallButton(
|
||||
chat: chat,
|
||||
contact: contact,
|
||||
connectionStats: $connectionStats,
|
||||
image: "video.fill",
|
||||
title: "video",
|
||||
mediaType: .video,
|
||||
@@ -710,7 +690,6 @@ struct VideoButton: View {
|
||||
private struct CallButton: View {
|
||||
var chat: Chat
|
||||
var contact: Contact
|
||||
@Binding var connectionStats: ConnectionStats?
|
||||
var image: String
|
||||
var title: LocalizedStringKey
|
||||
var mediaType: CallMediaType
|
||||
@@ -722,40 +701,12 @@ private struct CallButton: View {
|
||||
|
||||
InfoViewButton(image: image, title: title, disabledLook: !canCall, width: width) {
|
||||
if canCall {
|
||||
if let connStats = connectionStats {
|
||||
if connStats.ratchetSyncState == .ok {
|
||||
if CallController.useCallKit() {
|
||||
CallController.shared.startCall(contact, mediaType)
|
||||
} else {
|
||||
// When CallKit is not used, colorscheme will be changed and it will be visible if not hiding sheets first
|
||||
dismissAllSheets(animated: true) {
|
||||
CallController.shared.startCall(contact, mediaType)
|
||||
}
|
||||
}
|
||||
} else if connStats.ratchetSyncAllowed {
|
||||
showAlert(SomeAlert(
|
||||
alert: Alert(
|
||||
title: Text("Fix connection?"),
|
||||
message: Text("Connection requires encryption renegotiation."),
|
||||
primaryButton: .default(Text("Fix")) {
|
||||
Task {
|
||||
if let stats = await syncContactConnection(contact, force: false, showAlert: showAlert) {
|
||||
connectionStats = stats
|
||||
}
|
||||
}
|
||||
},
|
||||
secondaryButton: .cancel()
|
||||
),
|
||||
id: "can't call contact, fix connection"
|
||||
))
|
||||
} else {
|
||||
showAlert(SomeAlert(
|
||||
alert: mkAlert(
|
||||
title: "Can't call contact",
|
||||
message: "Encryption renegotiation in progress."
|
||||
),
|
||||
id: "can't call contact, encryption renegotiation in progress"
|
||||
))
|
||||
if CallController.useCallKit() {
|
||||
CallController.shared.startCall(contact, mediaType)
|
||||
} else {
|
||||
// When CallKit is not used, colorscheme will be changed and it will be visible if not hiding sheets first
|
||||
dismissAllSheets(animated: true) {
|
||||
CallController.shared.startCall(contact, mediaType)
|
||||
}
|
||||
}
|
||||
} else if contact.nextSendGrpInv {
|
||||
|
||||
@@ -20,9 +20,6 @@ struct GroupMemberInfoView: View {
|
||||
@State private var connectionStats: ConnectionStats? = nil
|
||||
@State private var connectionCode: String? = nil
|
||||
@State private var connectionLoaded: Bool = false
|
||||
@State private var knownContactChat: Chat? = nil
|
||||
@State private var knownContact: Contact? = nil
|
||||
@State private var knownContactConnectionStats: ConnectionStats? = nil
|
||||
@State private var newRole: GroupMemberRole = .member
|
||||
@State private var alert: GroupMemberInfoViewAlert?
|
||||
@State private var sheet: PlanAndConnectActionSheet?
|
||||
@@ -122,8 +119,8 @@ struct GroupMemberInfoView: View {
|
||||
} label: {
|
||||
Label("Share address", systemImage: "square.and.arrow.up")
|
||||
}
|
||||
if member.memberContactId != nil {
|
||||
if knownContactChat == nil && !groupInfo.fullGroupPreferences.directMessages.on(for: groupInfo.membership) {
|
||||
if let contactId = member.memberContactId {
|
||||
if knownDirectChat(contactId) == nil && !groupInfo.fullGroupPreferences.directMessages.on(for: groupInfo.membership) {
|
||||
connectViaAddressButton(contactLink)
|
||||
}
|
||||
} else {
|
||||
@@ -232,18 +229,6 @@ struct GroupMemberInfoView: View {
|
||||
}
|
||||
logger.error("apiGroupMemberInfo or apiGetGroupMemberCode error: \(responseError(error))")
|
||||
}
|
||||
if let contactId = member.memberContactId, let (contactChat, contact) = knownDirectChat(contactId) {
|
||||
knownContactChat = contactChat
|
||||
knownContact = contact
|
||||
do {
|
||||
let (stats, _) = try await apiContactInfo(contactChat.chatInfo.apiId)
|
||||
await MainActor.run {
|
||||
knownContactConnectionStats = stats
|
||||
}
|
||||
} catch let error {
|
||||
logger.error("apiContactInfo error: \(responseError(error))")
|
||||
}
|
||||
}
|
||||
}
|
||||
.onChange(of: newRole) { newRole in
|
||||
if newRole != member.memberRole {
|
||||
@@ -289,10 +274,10 @@ struct GroupMemberInfoView: View {
|
||||
GeometryReader { g in
|
||||
let buttonWidth = g.size.width / 4
|
||||
HStack(alignment: .center, spacing: 8) {
|
||||
if let chat = knownContactChat, let contact = knownContact {
|
||||
if let contactId = member.memberContactId, let (chat, contact) = knownDirectChat(contactId) {
|
||||
knownDirectChatButton(chat, width: buttonWidth)
|
||||
AudioCallButton(chat: chat, contact: contact, connectionStats: $knownContactConnectionStats, width: buttonWidth) { alert = .someAlert(alert: $0) }
|
||||
VideoButton(chat: chat, contact: contact, connectionStats: $knownContactConnectionStats, width: buttonWidth) { alert = .someAlert(alert: $0) }
|
||||
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)
|
||||
@@ -381,49 +366,25 @@ struct GroupMemberInfoView: View {
|
||||
|
||||
func createMemberContactButton(width: CGFloat) -> some View {
|
||||
InfoViewButton(image: "message.fill", title: "message", width: width) {
|
||||
if let connStats = connectionStats {
|
||||
if connStats.ratchetSyncState == .ok {
|
||||
progressIndicator = true
|
||||
Task {
|
||||
do {
|
||||
let memberContact = try await apiCreateMemberContact(groupInfo.apiId, groupMember.groupMemberId)
|
||||
await MainActor.run {
|
||||
progressIndicator = false
|
||||
chatModel.addChat(Chat(chatInfo: .direct(contact: memberContact)))
|
||||
ItemsModel.shared.loadOpenChat(memberContact.id) {
|
||||
dismissAllSheets(animated: true)
|
||||
}
|
||||
NetworkModel.shared.setContactNetworkStatus(memberContact, .connected)
|
||||
}
|
||||
} catch let error {
|
||||
logger.error("createMemberContactButton apiCreateMemberContact error: \(responseError(error))")
|
||||
let a = getErrorAlert(error, "Error creating member contact")
|
||||
await MainActor.run {
|
||||
progressIndicator = false
|
||||
alert = .error(title: a.title, error: a.message)
|
||||
}
|
||||
progressIndicator = true
|
||||
Task {
|
||||
do {
|
||||
let memberContact = try await apiCreateMemberContact(groupInfo.apiId, groupMember.groupMemberId)
|
||||
await MainActor.run {
|
||||
progressIndicator = false
|
||||
chatModel.addChat(Chat(chatInfo: .direct(contact: memberContact)))
|
||||
ItemsModel.shared.loadOpenChat(memberContact.id) {
|
||||
dismissAllSheets(animated: true)
|
||||
}
|
||||
NetworkModel.shared.setContactNetworkStatus(memberContact, .connected)
|
||||
}
|
||||
} catch let error {
|
||||
logger.error("createMemberContactButton apiCreateMemberContact error: \(responseError(error))")
|
||||
let a = getErrorAlert(error, "Error creating member contact")
|
||||
await MainActor.run {
|
||||
progressIndicator = false
|
||||
alert = .error(title: a.title, error: a.message)
|
||||
}
|
||||
} else if connStats.ratchetSyncAllowed {
|
||||
alert = .someAlert(alert: SomeAlert(
|
||||
alert: Alert(
|
||||
title: Text("Fix connection?"),
|
||||
message: Text("Connection requires encryption renegotiation."),
|
||||
primaryButton: .default(Text("Fix")) {
|
||||
syncMemberConnection(force: false)
|
||||
},
|
||||
secondaryButton: .cancel()
|
||||
),
|
||||
id: "can't message member, fix connection"
|
||||
))
|
||||
} else {
|
||||
alert = .someAlert(alert: SomeAlert(
|
||||
alert: mkAlert(
|
||||
title: "Can't message member",
|
||||
message: "Encryption renegotiation in progress."
|
||||
),
|
||||
id: "can't message contact, encryption renegotiation in progress"
|
||||
))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -587,7 +587,7 @@ struct SMPStatsView: View {
|
||||
} header: {
|
||||
Text("Statistics")
|
||||
} footer: {
|
||||
Text("Starting from \(localTimestamp(statsStartedAt)).") + Text("\n") + Text("All data is kept private on your device.")
|
||||
Text("Starting from \(localTimestamp(statsStartedAt)).") + Text("\n") + Text("All data is private to your device.")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -703,7 +703,7 @@ struct XFTPStatsView: View {
|
||||
} header: {
|
||||
Text("Statistics")
|
||||
} footer: {
|
||||
Text("Starting from \(localTimestamp(statsStartedAt)).") + Text("\n") + Text("All data is kept private on your device.")
|
||||
Text("Starting from \(localTimestamp(statsStartedAt)).") + Text("\n") + Text("All data is private to your device.")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -731,8 +731,8 @@
|
||||
<target>Всички данни се изтриват при въвеждане.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="All data is kept private on your device." xml:space="preserve">
|
||||
<source>All data is kept private on your device.</source>
|
||||
<trans-unit id="All data is private to your device." xml:space="preserve">
|
||||
<source>All data is private to your device.</source>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="All group members will remain connected." xml:space="preserve">
|
||||
|
||||
@@ -712,8 +712,8 @@
|
||||
<target>Všechna data se při zadání vymažou.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="All data is kept private on your device." xml:space="preserve">
|
||||
<source>All data is kept private on your device.</source>
|
||||
<trans-unit id="All data is private to your device." xml:space="preserve">
|
||||
<source>All data is private to your device.</source>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="All group members will remain connected." xml:space="preserve">
|
||||
|
||||
@@ -579,7 +579,6 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="About operators" xml:space="preserve">
|
||||
<source>About operators</source>
|
||||
<target>Über Betreiber</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Accent" xml:space="preserve">
|
||||
@@ -642,7 +641,6 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="Add friends" xml:space="preserve">
|
||||
<source>Add friends</source>
|
||||
<target>Freunde aufnehmen</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Add profile" xml:space="preserve">
|
||||
@@ -662,7 +660,6 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="Add team members" xml:space="preserve">
|
||||
<source>Add team members</source>
|
||||
<target>Team-Mitglieder aufnehmen</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Add to another device" xml:space="preserve">
|
||||
@@ -677,7 +674,6 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="Add your team members to the conversations." xml:space="preserve">
|
||||
<source>Add your team members to the conversations.</source>
|
||||
<target>Nehmen Sie Team-Mitglieder in Ihre Unterhaltungen auf.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Added media & file servers" xml:space="preserve">
|
||||
@@ -760,8 +756,8 @@
|
||||
<target>Alle Daten werden gelöscht, sobald dieser eingegeben wird.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="All data is kept private on your device." xml:space="preserve">
|
||||
<source>All data is kept private on your device.</source>
|
||||
<trans-unit id="All data is private to your device." xml:space="preserve">
|
||||
<source>All data is private to your device.</source>
|
||||
<target>Alle Daten werden nur auf Ihrem Gerät gespeichert.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
@@ -1252,12 +1248,10 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="Business address" xml:space="preserve">
|
||||
<source>Business address</source>
|
||||
<target>Geschäftliche Adresse</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Business chats" xml:space="preserve">
|
||||
<source>Business chats</source>
|
||||
<target>Geschäftliche Chats</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." xml:space="preserve">
|
||||
@@ -1404,17 +1398,14 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="Chat" xml:space="preserve">
|
||||
<source>Chat</source>
|
||||
<target>Chat</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Chat already exists" xml:space="preserve">
|
||||
<source>Chat already exists</source>
|
||||
<target>Chat besteht bereits</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Chat already exists!" xml:space="preserve">
|
||||
<source>Chat already exists!</source>
|
||||
<target>Chat besteht bereits!</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Chat colors" xml:space="preserve">
|
||||
@@ -1494,12 +1485,10 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="Chat will be deleted for all members - this cannot be undone!" xml:space="preserve">
|
||||
<source>Chat will be deleted for all members - this cannot be undone!</source>
|
||||
<target>Der Chat wird für alle Mitglieder gelöscht. Dies kann nicht rückgängig gemacht werden!</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Chat will be deleted for you - this cannot be undone!" xml:space="preserve">
|
||||
<source>Chat will be deleted for you - this cannot be undone!</source>
|
||||
<target>Der Chat wird für Sie gelöscht. Dies kann nicht rückgängig gemacht werden!</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Chats" xml:space="preserve">
|
||||
@@ -2258,7 +2247,6 @@ Das ist Ihr eigener Einmal-Link!</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Delete chat" xml:space="preserve">
|
||||
<source>Delete chat</source>
|
||||
<target>Chat löschen</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Delete chat profile" xml:space="preserve">
|
||||
@@ -2273,7 +2261,6 @@ Das ist Ihr eigener Einmal-Link!</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Delete chat?" xml:space="preserve">
|
||||
<source>Delete chat?</source>
|
||||
<target>Chat löschen?</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Delete connection" xml:space="preserve">
|
||||
@@ -2543,7 +2530,6 @@ Das ist Ihr eigener Einmal-Link!</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Direct messages between members are prohibited in this chat." xml:space="preserve">
|
||||
<source>Direct messages between members are prohibited in this chat.</source>
|
||||
<target>In diesem Chat sind Direktnachrichten zwischen Mitgliedern nicht erlaubt.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Direct messages between members are prohibited." xml:space="preserve">
|
||||
@@ -4119,7 +4105,6 @@ Weitere Verbesserungen sind bald verfügbar!</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Invite to chat" xml:space="preserve">
|
||||
<source>Invite to chat</source>
|
||||
<target>Zum Chat einladen</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Invite to group" xml:space="preserve">
|
||||
@@ -4282,12 +4267,10 @@ Das ist Ihr Link für die Gruppe %@!</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Leave chat" xml:space="preserve">
|
||||
<source>Leave chat</source>
|
||||
<target>Chat verlassen</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Leave chat?" xml:space="preserve">
|
||||
<source>Leave chat?</source>
|
||||
<target>Chat verlassen?</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Leave group" xml:space="preserve">
|
||||
@@ -4422,7 +4405,6 @@ Das ist Ihr Link für die Gruppe %@!</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Member role will be changed to "%@". All chat members will be notified." xml:space="preserve">
|
||||
<source>Member role will be changed to "%@". All chat members will be notified.</source>
|
||||
<target>Die Rolle des Mitglieds wird auf "%@" geändert. Alle Chat-Mitglieder werden darüber informiert.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Member role will be changed to "%@". All group members will be notified." xml:space="preserve">
|
||||
@@ -4437,7 +4419,6 @@ Das ist Ihr Link für die Gruppe %@!</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Member will be removed from chat - this cannot be undone!" xml:space="preserve">
|
||||
<source>Member will be removed from chat - this cannot be undone!</source>
|
||||
<target>Das Mitglied wird aus dem Chat entfernt. Dies kann nicht rückgängig gemacht werden!</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Member will be removed from group - this cannot be undone!" xml:space="preserve">
|
||||
@@ -5055,7 +5036,6 @@ Dies erfordert die Aktivierung eines VPNs.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Only chat owners can change preferences." xml:space="preserve">
|
||||
<source>Only chat owners can change preferences.</source>
|
||||
<target>Nur Chat-Eigentümer können die Präferenzen ändern.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Only client devices store user profiles, contacts, groups, and messages." xml:space="preserve">
|
||||
@@ -5190,7 +5170,6 @@ Dies erfordert die Aktivierung eines VPNs.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Or import archive file" xml:space="preserve">
|
||||
<source>Or import archive file</source>
|
||||
<target>Oder importieren Sie eine Archiv-Datei</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Or paste archive link" xml:space="preserve">
|
||||
@@ -5456,7 +5435,6 @@ Fehler: %@</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Privacy for your customers." xml:space="preserve">
|
||||
<source>Privacy for your customers.</source>
|
||||
<target>Schutz der Privatsphäre Ihrer Kunden.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Privacy redefined" xml:space="preserve">
|
||||
@@ -7033,7 +7011,6 @@ Aktivieren Sie es in den *Netzwerk & Server* Einstellungen.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Tap Create SimpleX address in the menu to create it later." xml:space="preserve">
|
||||
<source>Tap Create SimpleX address in the menu to create it later.</source>
|
||||
<target>Tippen Sie im Menü auf SimpleX-Adresse erstellen, um sie später zu erstellen.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Tap button " xml:space="preserve">
|
||||
@@ -7235,12 +7212,12 @@ Dies kann passieren, wenn es einen Fehler gegeben hat oder die Verbindung kompro
|
||||
</trans-unit>
|
||||
<trans-unit id="The servers for new connections of your current chat profile **%@**." xml:space="preserve">
|
||||
<source>The servers for new connections of your current chat profile **%@**.</source>
|
||||
<target>Nachrichten-Server für neue Verbindungen über Ihr aktuelles Chat-Profil **%@**.</target>
|
||||
<target>Mögliche Server für neue Verbindungen von Ihrem aktuellen Chat-Profil **%@**.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="The servers for new files of your current chat profile **%@**." xml:space="preserve">
|
||||
<source>The servers for new files of your current chat profile **%@**.</source>
|
||||
<target>Medien- und Datei-Server für neue Daten über Ihr aktuelles Chat-Profil **%@**.</target>
|
||||
<target>Die Server Deines aktuellen Chat-Profils für neue Dateien **%@**.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="The text you pasted is not a SimpleX link." xml:space="preserve">
|
||||
@@ -8084,7 +8061,6 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s
|
||||
</trans-unit>
|
||||
<trans-unit id="You are already connected with %@." xml:space="preserve">
|
||||
<source>You are already connected with %@.</source>
|
||||
<target>Sie sind bereits mit %@ verbunden.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="You are already connecting to %@." xml:space="preserve">
|
||||
@@ -8363,7 +8339,6 @@ Verbindungsanfrage wiederholen?</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="You will stop receiving messages from this chat. Chat history will be preserved." xml:space="preserve">
|
||||
<source>You will stop receiving messages from this chat. Chat history will be preserved.</source>
|
||||
<target>Sie werden von diesem Chat keine Nachrichten mehr erhalten. Der Nachrichtenverlauf wird beibehalten.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="You will stop receiving messages from this group. Chat history will be preserved." xml:space="preserve">
|
||||
@@ -8553,7 +8528,6 @@ Verbindungsanfrage wiederholen?</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="accepted invitation" xml:space="preserve">
|
||||
<source>accepted invitation</source>
|
||||
<target>Einladung akzeptiert</target>
|
||||
<note>chat list item title</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="admin" xml:space="preserve">
|
||||
@@ -9240,7 +9214,6 @@ Verbindungsanfrage wiederholen?</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="requested to connect" xml:space="preserve">
|
||||
<source>requested to connect</source>
|
||||
<target>Zur Verbindung aufgefordert</target>
|
||||
<note>chat list item title</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="saved" xml:space="preserve">
|
||||
|
||||
@@ -760,9 +760,9 @@
|
||||
<target>All data is erased when it is entered.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="All data is kept private on your device." xml:space="preserve">
|
||||
<source>All data is kept private on your device.</source>
|
||||
<target>All data is kept private on your device.</target>
|
||||
<trans-unit id="All data is private to your device." xml:space="preserve">
|
||||
<source>All data is private to your device.</source>
|
||||
<target>All data is private to your device.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="All group members will remain connected." xml:space="preserve">
|
||||
|
||||
@@ -550,11 +550,11 @@
|
||||
<target>Se usará una conexión TCP independiente **por cada perfil que tengas en la aplicación**.</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**. **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">
|
||||
<trans-unit id="A separate TCP connection will be used **for each contact and group member**. **Please note**: if you have many connections, your battery and traffic consumption can be substantially higher and some connections may fail." xml:space="preserve">
|
||||
<source>A separate TCP connection will be used **for each contact and group member**.
|
||||
**Please note**: if you have many connections, your battery and traffic consumption can be substantially higher and some connections may fail.</source>
|
||||
<target state="translated">Se usará una conexión TCP independiente **por cada contacto y miembro de grupo**.
|
||||
**Atención**: si tienes muchas conexiones, tu consumo de batería y tráfico pueden aumentar bastante y algunas conexiones pueden fallar.</target>
|
||||
<target>Se usará una conexión TCP independiente **por cada contacto y miembro de grupo**.
|
||||
**Atención**: si tienes muchas conexiones, tu consumo de batería y tráfico pueden ser sustancialmente mayores y algunas conexiones pueden fallar.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Abort" xml:space="preserve">
|
||||
@@ -579,7 +579,6 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="About operators" xml:space="preserve">
|
||||
<source>About operators</source>
|
||||
<target>Acerca de los operadores</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Accent" xml:space="preserve">
|
||||
@@ -642,7 +641,6 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="Add friends" xml:space="preserve">
|
||||
<source>Add friends</source>
|
||||
<target>Añadir amigos</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Add profile" xml:space="preserve">
|
||||
@@ -662,7 +660,6 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="Add team members" xml:space="preserve">
|
||||
<source>Add team members</source>
|
||||
<target>Añadir miembros del equipo</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Add to another device" xml:space="preserve">
|
||||
@@ -677,7 +674,6 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="Add your team members to the conversations." xml:space="preserve">
|
||||
<source>Add your team members to the conversations.</source>
|
||||
<target>Añade a los miembros de tu equipo a las conversaciones.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Added media & file servers" xml:space="preserve">
|
||||
@@ -760,8 +756,8 @@
|
||||
<target>Al introducirlo todos los datos son eliminados.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="All data is kept private on your device." xml:space="preserve">
|
||||
<source>All data is kept private on your device.</source>
|
||||
<trans-unit id="All data is private to your device." xml:space="preserve">
|
||||
<source>All data is private to your device.</source>
|
||||
<target>Todos los datos son privados y están en tu dispositivo.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
@@ -990,9 +986,9 @@
|
||||
<target>El código de acceso será reemplazado por código de autodestrucción.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="App session" xml:space="preserve" approved="no">
|
||||
<trans-unit id="App session" xml:space="preserve">
|
||||
<source>App session</source>
|
||||
<target state="translated">por sesión</target>
|
||||
<target>Sesión de aplicación</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="App version" xml:space="preserve">
|
||||
@@ -1252,12 +1248,10 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="Business address" xml:space="preserve">
|
||||
<source>Business address</source>
|
||||
<target>Dirección empresarial</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Business chats" xml:space="preserve">
|
||||
<source>Business chats</source>
|
||||
<target>Chats empresariales</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." xml:space="preserve">
|
||||
@@ -1404,17 +1398,14 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="Chat" xml:space="preserve">
|
||||
<source>Chat</source>
|
||||
<target>Chat</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Chat already exists" xml:space="preserve">
|
||||
<source>Chat already exists</source>
|
||||
<target>El chat ya existe</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Chat already exists!" xml:space="preserve">
|
||||
<source>Chat already exists!</source>
|
||||
<target>¡El chat ya existe!</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Chat colors" xml:space="preserve">
|
||||
@@ -1494,12 +1485,10 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="Chat will be deleted for all members - this cannot be undone!" xml:space="preserve">
|
||||
<source>Chat will be deleted for all members - this cannot be undone!</source>
|
||||
<target>El chat será eliminado para todos los miembros. ¡No podrá deshacerse!</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Chat will be deleted for you - this cannot be undone!" xml:space="preserve">
|
||||
<source>Chat will be deleted for you - this cannot be undone!</source>
|
||||
<target>El chat será eliminado para tí. ¡No podrá deshacerse!</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Chats" xml:space="preserve">
|
||||
@@ -2258,7 +2247,6 @@ This is your own one-time link!</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Delete chat" xml:space="preserve">
|
||||
<source>Delete chat</source>
|
||||
<target>Eliminar chat</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Delete chat profile" xml:space="preserve">
|
||||
@@ -2273,7 +2261,6 @@ This is your own one-time link!</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Delete chat?" xml:space="preserve">
|
||||
<source>Delete chat?</source>
|
||||
<target>¿Eliminar chat?</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Delete connection" xml:space="preserve">
|
||||
@@ -2308,7 +2295,7 @@ This is your own one-time link!</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Delete files and media?" xml:space="preserve">
|
||||
<source>Delete files and media?</source>
|
||||
<target>¿Eliminar archivos y multimedia?</target>
|
||||
<target>Eliminar archivos y multimedia?</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Delete files for all chat profiles" xml:space="preserve">
|
||||
@@ -2543,7 +2530,6 @@ This is your own one-time link!</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Direct messages between members are prohibited in this chat." xml:space="preserve">
|
||||
<source>Direct messages between members are prohibited in this chat.</source>
|
||||
<target>Mensajes directos no permitidos entre miembros de este chat.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Direct messages between members are prohibited." xml:space="preserve">
|
||||
@@ -2754,7 +2740,7 @@ This is your own one-time link!</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Enable Flux" xml:space="preserve">
|
||||
<source>Enable Flux</source>
|
||||
<target>Habilita Flux</target>
|
||||
<target>Habilitar Flux</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Enable SimpleX Lock" xml:space="preserve">
|
||||
@@ -2837,9 +2823,9 @@ This is your own one-time link!</source>
|
||||
<target>¿Cifrar base de datos?</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Encrypt local files" xml:space="preserve" approved="no">
|
||||
<trans-unit id="Encrypt local files" xml:space="preserve">
|
||||
<source>Encrypt local files</source>
|
||||
<target state="translated">Cifrar archivos locales</target>
|
||||
<target>Cifra archivos locales</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Encrypt stored files & media" xml:space="preserve">
|
||||
@@ -3529,9 +3515,9 @@ This is your own one-time link!</source>
|
||||
<target>Si por ejemplo tu contacto recibe los mensajes a través de un servidor de SimpleX Chat, tu aplicación los entregará a través de un servidor de Flux.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="For private routing" xml:space="preserve" approved="no">
|
||||
<trans-unit id="For private routing" xml:space="preserve">
|
||||
<source>For private routing</source>
|
||||
<target state="translated">Para enrutamiento privado</target>
|
||||
<target>Para el enrutamiento privado</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="For social media" xml:space="preserve">
|
||||
@@ -4119,7 +4105,6 @@ More improvements are coming soon!</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Invite to chat" xml:space="preserve">
|
||||
<source>Invite to chat</source>
|
||||
<target>Invitar al chat</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Invite to group" xml:space="preserve">
|
||||
@@ -4282,12 +4267,10 @@ This is your link for group %@!</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Leave chat" xml:space="preserve">
|
||||
<source>Leave chat</source>
|
||||
<target>Salir del chat</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Leave chat?" xml:space="preserve">
|
||||
<source>Leave chat?</source>
|
||||
<target>¿Salir del chat?</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Leave group" xml:space="preserve">
|
||||
@@ -4422,7 +4405,6 @@ This is your link for group %@!</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Member role will be changed to "%@". All chat members will be notified." xml:space="preserve">
|
||||
<source>Member role will be changed to "%@". All chat members will be notified.</source>
|
||||
<target>El rol del miembro cambiará a "%@" y todos serán notificados.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Member role will be changed to "%@". All group members will be notified." xml:space="preserve">
|
||||
@@ -4437,7 +4419,6 @@ This is your link for group %@!</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Member will be removed from chat - this cannot be undone!" xml:space="preserve">
|
||||
<source>Member will be removed from chat - this cannot be undone!</source>
|
||||
<target>El miembro será eliminado del chat. ¡No podrá deshacerse!</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Member will be removed from group - this cannot be undone!" xml:space="preserve">
|
||||
@@ -4780,9 +4761,9 @@ This is your link for group %@!</source>
|
||||
<target>Se usarán credenciales SOCKS nuevas cada vez que inicies la aplicación.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="New SOCKS credentials will be used for each server." xml:space="preserve" approved="no">
|
||||
<trans-unit id="New SOCKS credentials will be used for each server." xml:space="preserve">
|
||||
<source>New SOCKS credentials will be used for each server.</source>
|
||||
<target state="translated">Se usarán credenciales SOCKS nuevas para cada servidor.</target>
|
||||
<target>Se usarán credenciales SOCKS nuevas por cada servidor.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="New chat" xml:space="preserve">
|
||||
@@ -4905,14 +4886,14 @@ This is your link for group %@!</source>
|
||||
<target>No hay información, intenta recargar</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="No media & file servers." xml:space="preserve" approved="no">
|
||||
<trans-unit id="No media & file servers." xml:space="preserve">
|
||||
<source>No media & file servers.</source>
|
||||
<target state="translated">Sin servidores para archivos y multimedia.</target>
|
||||
<target>Ningún servidor de archivos y multimedia.</target>
|
||||
<note>servers error</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="No message servers." xml:space="preserve" approved="no">
|
||||
<trans-unit id="No message servers." xml:space="preserve">
|
||||
<source>No message servers.</source>
|
||||
<target state="translated">Sin servidores para mensajes.</target>
|
||||
<target>Ningún servidor de mensajes.</target>
|
||||
<note>servers error</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="No network connection" xml:space="preserve">
|
||||
@@ -4935,9 +4916,9 @@ This is your link for group %@!</source>
|
||||
<target>Sin permiso para grabar mensajes de voz</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="No push server" xml:space="preserve" approved="no">
|
||||
<trans-unit id="No push server" xml:space="preserve">
|
||||
<source>No push server</source>
|
||||
<target state="translated">Sin servidores push</target>
|
||||
<target>Ningún servidor push</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="No received or sent files" xml:space="preserve">
|
||||
@@ -4945,24 +4926,24 @@ This is your link for group %@!</source>
|
||||
<target>Sin archivos recibidos o enviados</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="No servers for private message routing." xml:space="preserve" approved="no">
|
||||
<trans-unit id="No servers for private message routing." xml:space="preserve">
|
||||
<source>No servers for private message routing.</source>
|
||||
<target state="translated">Sin servidores para enrutamiento privado.</target>
|
||||
<target>Ningún servidor para enrutamiento privado.</target>
|
||||
<note>servers error</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="No servers to receive files." xml:space="preserve" approved="no">
|
||||
<trans-unit id="No servers to receive files." xml:space="preserve">
|
||||
<source>No servers to receive files.</source>
|
||||
<target state="translated">Sin servidores para recibir archivos.</target>
|
||||
<target>Ningún servidor para recibir archivos.</target>
|
||||
<note>servers error</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="No servers to receive messages." xml:space="preserve" approved="no">
|
||||
<trans-unit id="No servers to receive messages." xml:space="preserve">
|
||||
<source>No servers to receive messages.</source>
|
||||
<target state="translated">Sin servidores para recibir mensajes.</target>
|
||||
<target>Ningún servidor para recibir mensajes.</target>
|
||||
<note>servers error</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="No servers to send files." xml:space="preserve" approved="no">
|
||||
<trans-unit id="No servers to send files." xml:space="preserve">
|
||||
<source>No servers to send files.</source>
|
||||
<target state="translated">Sin servidores para enviar archivos.</target>
|
||||
<target>Ningún servidor para enviar archivos.</target>
|
||||
<note>servers error</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="No user identifiers." xml:space="preserve">
|
||||
@@ -5055,7 +5036,6 @@ Requiere activación de la VPN.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Only chat owners can change preferences." xml:space="preserve">
|
||||
<source>Only chat owners can change preferences.</source>
|
||||
<target>Sólo los propietarios del chat pueden cambiar las preferencias.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Only client devices store user profiles, contacts, groups, and messages." xml:space="preserve">
|
||||
@@ -5190,7 +5170,6 @@ Requiere activación de la VPN.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Or import archive file" xml:space="preserve">
|
||||
<source>Or import archive file</source>
|
||||
<target>O importa desde un archivo</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Or paste archive link" xml:space="preserve">
|
||||
@@ -5431,7 +5410,7 @@ Error: %@</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Preset server address" xml:space="preserve">
|
||||
<source>Preset server address</source>
|
||||
<target>Dirección predefinida del servidor</target>
|
||||
<target>Dirección del servidor predefinida</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Preset servers" xml:space="preserve">
|
||||
@@ -5456,7 +5435,6 @@ Error: %@</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Privacy for your customers." xml:space="preserve">
|
||||
<source>Privacy for your customers.</source>
|
||||
<target>Privacidad para tus clientes.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Privacy redefined" xml:space="preserve">
|
||||
@@ -5653,7 +5631,7 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Read more" xml:space="preserve">
|
||||
<source>Read more</source>
|
||||
<target>Saber más</target>
|
||||
<target>Conoce más</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)." xml:space="preserve">
|
||||
@@ -6611,7 +6589,7 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Share SimpleX address on social media." xml:space="preserve">
|
||||
<source>Share SimpleX address on social media.</source>
|
||||
<target>Comparte tu dirección SimpleX en redes sociales.</target>
|
||||
<target>Compartir dirección SimpleX en redes sociales.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Share address" xml:space="preserve">
|
||||
@@ -6751,12 +6729,12 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="SimpleX address and 1-time links are safe to share via any messenger." xml:space="preserve">
|
||||
<source>SimpleX address and 1-time links are safe to share via any messenger.</source>
|
||||
<target>Compartir los enlaces de un uso y las direcciones SimpleX es seguro a través de cualquier medio.</target>
|
||||
<target>Compartir enlaces de un uso y direcciones SimpleX es seguro a través de cualquier medio.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="SimpleX address or 1-time link?" xml:space="preserve">
|
||||
<source>SimpleX address or 1-time link?</source>
|
||||
<target>¿Dirección SimpleX o enlace de un uso?</target>
|
||||
<target>Dirección SimpleX o enlace de un uso?</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="SimpleX contact address" xml:space="preserve">
|
||||
@@ -7033,7 +7011,6 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Tap Create SimpleX address in the menu to create it later." xml:space="preserve">
|
||||
<source>Tap Create SimpleX address in the menu to create it later.</source>
|
||||
<target>Pulsa Crear dirección SimpleX en el menú para crearla más tarde.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Tap button " xml:space="preserve">
|
||||
@@ -7220,7 +7197,7 @@ Puede ocurrir por algún bug o cuando la conexión está comprometida.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
|
||||
<source>The second preset operator in the app!</source>
|
||||
<target>¡Segundo operador predefinido!</target>
|
||||
<target>El segundo operador predefinido!</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="The second tick we missed! ✅" xml:space="preserve">
|
||||
@@ -7233,14 +7210,14 @@ Puede ocurrir por algún bug o cuando la conexión está comprometida.</target>
|
||||
<target>El remitente NO será notificado</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="The servers for new connections of your current chat profile **%@**." xml:space="preserve" approved="no">
|
||||
<trans-unit id="The servers for new connections of your current chat profile **%@**." xml:space="preserve">
|
||||
<source>The servers for new connections of your current chat profile **%@**.</source>
|
||||
<target state="translated">Servidores para conexiones nuevas en tu perfil **%@**.</target>
|
||||
<target>Lista de servidores para las conexiones nuevas de tu perfil actual **%@**.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="The servers for new files of your current chat profile **%@**." xml:space="preserve" approved="no">
|
||||
<trans-unit id="The servers for new files of your current chat profile **%@**." xml:space="preserve">
|
||||
<source>The servers for new files of your current chat profile **%@**.</source>
|
||||
<target state="translated">Servidores para archivos nuevos en tu perfil **%@**.</target>
|
||||
<target>Los servidores para archivos nuevos en tu perfil actual **%@**.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="The text you pasted is not a SimpleX link." xml:space="preserve">
|
||||
@@ -7425,9 +7402,9 @@ Se te pedirá que completes la autenticación antes de activar esta función.</t
|
||||
<target>Para permitir las notificaciones automáticas instantáneas, la base de datos se debe migrar.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="To use the servers of **%@**, accept conditions of use." xml:space="preserve" approved="no">
|
||||
<trans-unit id="To use the servers of **%@**, accept conditions of use." xml:space="preserve">
|
||||
<source>To use the servers of **%@**, accept conditions of use.</source>
|
||||
<target state="translated">Para usar los servidores de **%@**, debes aceptar las condiciones de uso.</target>
|
||||
<target>Para usar los servidores de **%@**, acepta las condiciones de uso.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="To verify end-to-end encryption with your contact compare (or scan) the code on your devices." xml:space="preserve">
|
||||
@@ -7722,9 +7699,9 @@ Para conectarte pide a tu contacto que cree otro enlace y comprueba la conexión
|
||||
<target>Usar para mensajes</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Use for new connections" xml:space="preserve" approved="no">
|
||||
<trans-unit id="Use for new connections" xml:space="preserve">
|
||||
<source>Use for new connections</source>
|
||||
<target state="translated">Para conexiones nuevas</target>
|
||||
<target>Usar para conexiones nuevas</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Use from desktop" xml:space="preserve">
|
||||
@@ -8079,12 +8056,11 @@ Para conectarte pide a tu contacto que cree otro enlace y comprueba la conexión
|
||||
</trans-unit>
|
||||
<trans-unit id="You are already connected to %@." xml:space="preserve">
|
||||
<source>You are already connected to %@.</source>
|
||||
<target>Ya estás conectado con %@.</target>
|
||||
<target>Ya estás conectado a %@.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="You are already connected with %@." xml:space="preserve">
|
||||
<source>You are already connected with %@.</source>
|
||||
<target>Ya estás conectado con %@.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="You are already connecting to %@." xml:space="preserve">
|
||||
@@ -8306,9 +8282,9 @@ Repeat connection request?</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" approved="no">
|
||||
<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 state="translated">Debes permitir que tus contacto te llamen para poder llamarles.</target>
|
||||
<target>Necesitas permitir que tus contacto llamen para poder llamarles.</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">
|
||||
@@ -8363,7 +8339,6 @@ Repeat connection request?</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="You will stop receiving messages from this chat. Chat history will be preserved." xml:space="preserve">
|
||||
<source>You will stop receiving messages from this chat. Chat history will be preserved.</source>
|
||||
<target>Dejarás de recibir mensajes de este chat. El historial del chat se conserva.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="You will stop receiving messages from this group. Chat history will be preserved." xml:space="preserve">
|
||||
@@ -8553,7 +8528,6 @@ Repeat connection request?</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="accepted invitation" xml:space="preserve">
|
||||
<source>accepted invitation</source>
|
||||
<target>invitación aceptada</target>
|
||||
<note>chat list item title</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="admin" xml:space="preserve">
|
||||
@@ -8938,7 +8912,7 @@ Repeat connection request?</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="for better metadata privacy." xml:space="preserve">
|
||||
<source>for better metadata privacy.</source>
|
||||
<target>para mejorar la privacidad de los metadatos.</target>
|
||||
<target>para mayor privacidad de los metadatos.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="forwarded" xml:space="preserve">
|
||||
@@ -9240,7 +9214,6 @@ Repeat connection request?</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="requested to connect" xml:space="preserve">
|
||||
<source>requested to connect</source>
|
||||
<target>solicitado para conectar</target>
|
||||
<note>chat list item title</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="saved" xml:space="preserve">
|
||||
@@ -9519,9 +9492,9 @@ last received msg: %2$@</source>
|
||||
<target>SimpleX</target>
|
||||
<note>Bundle name</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="NSCameraUsageDescription" xml:space="preserve" approved="no">
|
||||
<trans-unit id="NSCameraUsageDescription" xml:space="preserve">
|
||||
<source>SimpleX needs camera access to scan QR codes to connect to other users and for video calls.</source>
|
||||
<target state="translated">SimpleX necesita acceso a la cámara para escanear códigos QR para conectarse con otros usuarios y para las videollamadas.</target>
|
||||
<target>SimpleX necesita acceso a la cámara para escanear códigos QR para conectarse con otros usuarios y para las videollamadas.</target>
|
||||
<note>Privacy - Camera Usage Description</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="NSFaceIDUsageDescription" xml:space="preserve">
|
||||
@@ -9534,9 +9507,9 @@ last received msg: %2$@</source>
|
||||
<target>SimpleX utiliza el acceso a la red local para abrir el perfil de chat en la aplicación de ordenador en la misma red.</target>
|
||||
<note>Privacy - Local Network Usage Description</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="NSMicrophoneUsageDescription" xml:space="preserve" approved="no">
|
||||
<trans-unit id="NSMicrophoneUsageDescription" xml:space="preserve">
|
||||
<source>SimpleX needs microphone access for audio and video calls, and to record voice messages.</source>
|
||||
<target state="translated">SimpleX necesita acceso al micrófono para las llamadas de audio, vídeo y para grabar mensajes de voz.</target>
|
||||
<target>SimpleX necesita acceso al micrófono para las llamadas de audio, vídeo y para grabar mensajes de voz.</target>
|
||||
<note>Privacy - Microphone Usage Description</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="NSPhotoLibraryAddUsageDescription" xml:space="preserve">
|
||||
|
||||
@@ -707,8 +707,8 @@
|
||||
<target>Kaikki tiedot poistetaan, kun se syötetään.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="All data is kept private on your device." xml:space="preserve">
|
||||
<source>All data is kept private on your device.</source>
|
||||
<trans-unit id="All data is private to your device." xml:space="preserve">
|
||||
<source>All data is private to your device.</source>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="All group members will remain connected." xml:space="preserve">
|
||||
|
||||
@@ -745,8 +745,8 @@
|
||||
<target>Toutes les données sont effacées lorsqu'il est saisi.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="All data is kept private on your device." xml:space="preserve">
|
||||
<source>All data is kept private on your device.</source>
|
||||
<trans-unit id="All data is private to your device." xml:space="preserve">
|
||||
<source>All data is private to your device.</source>
|
||||
<target>Toutes les données restent confinées dans votre appareil.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
|
||||
@@ -530,9 +530,9 @@
|
||||
<p><a href="%@">Csatlakozzon hozzám a SimpleX Chaten keresztül</a></p></target>
|
||||
<note>email text</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="A few more things" xml:space="preserve" approved="no">
|
||||
<trans-unit id="A few more things" xml:space="preserve">
|
||||
<source>A few more things</source>
|
||||
<target state="translated">Néhány további dolog</target>
|
||||
<target>Még néhány dolog</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="A new contact" xml:space="preserve">
|
||||
@@ -574,12 +574,11 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="About SimpleX Chat" xml:space="preserve">
|
||||
<source>About SimpleX Chat</source>
|
||||
<target>SimpleX Chat névjegye</target>
|
||||
<target>A SimpleX Chatről</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="About operators" xml:space="preserve">
|
||||
<source>About operators</source>
|
||||
<target>Az üzemeltetőkről</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Accent" xml:space="preserve">
|
||||
@@ -660,9 +659,9 @@
|
||||
<target>Kiszolgáló hozzáadása QR-kód beolvasásával.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Add team members" xml:space="preserve" approved="no">
|
||||
<trans-unit id="Add team members" xml:space="preserve">
|
||||
<source>Add team members</source>
|
||||
<target state="translated">Kollégák hozzáadása</target>
|
||||
<target>Csapattagok hozzáadása</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Add to another device" xml:space="preserve">
|
||||
@@ -675,9 +674,9 @@
|
||||
<target>Üdvözlőüzenet hozzáadása</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Add your team members to the conversations." xml:space="preserve" approved="no">
|
||||
<trans-unit id="Add your team members to the conversations." xml:space="preserve">
|
||||
<source>Add your team members to the conversations.</source>
|
||||
<target state="translated">Adja hozzá a kollégáit a beszélgetésekhez.</target>
|
||||
<target>Adja hozzá csapattagjait a beszélgetésekhez.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Added media & file servers" xml:space="preserve">
|
||||
@@ -760,9 +759,9 @@
|
||||
<target>A jelkód megadása után az összes adat törlésre kerül.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="All data is kept private on your device." xml:space="preserve" approved="no">
|
||||
<source>All data is kept private on your device.</source>
|
||||
<target state="translated">Az összes adat privát módon van tárolva az Ön eszközén.</target>
|
||||
<trans-unit id="All data is private to your device." xml:space="preserve">
|
||||
<source>All data is private to your device.</source>
|
||||
<target>Az összes adat biztonságban van az eszközén.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="All group members will remain connected." xml:space="preserve">
|
||||
@@ -770,9 +769,9 @@
|
||||
<target>Az összes csoporttag kapcsolatban marad.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="All messages and files are sent **end-to-end encrypted**, with post-quantum security in direct messages." xml:space="preserve" approved="no">
|
||||
<trans-unit id="All messages and files are sent **end-to-end encrypted**, with post-quantum security in direct messages." xml:space="preserve">
|
||||
<source>All messages and files are sent **end-to-end encrypted**, with post-quantum security in direct messages.</source>
|
||||
<target state="translated">Az összes üzenet és fájl **végpontok közötti titkosítással**, a közvetlen üzenetek továbbá kvantumálló titkosítással is rendelkeznek.</target>
|
||||
<target>Az összes üzenetet és fájlt **végpontok közötti titkosítással** küldi, a közvetlen üzenetekben pedig kvantumrezisztens biztonsággal.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="All messages will be deleted - this cannot be undone!" xml:space="preserve">
|
||||
@@ -960,9 +959,9 @@
|
||||
<target>Bárki üzemeltethet kiszolgálókat.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="App build: %@" xml:space="preserve" approved="no">
|
||||
<trans-unit id="App build: %@" xml:space="preserve">
|
||||
<source>App build: %@</source>
|
||||
<target state="translated">Az alkalmazás összeállítási száma: %@</target>
|
||||
<target>Az alkalmazás build száma: %@</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="App data migration" xml:space="preserve">
|
||||
@@ -1353,7 +1352,7 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="Change chat profiles" xml:space="preserve">
|
||||
<source>Change chat profiles</source>
|
||||
<target>Csevegési profilok megváltoztatása</target>
|
||||
<target>Felhasználói profilok megváltoztatása</target>
|
||||
<note>authentication reason</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Change database passphrase?" xml:space="preserve">
|
||||
@@ -2887,9 +2886,9 @@ Ez az Ön egyszer használható meghívó-hivatkozása!</target>
|
||||
<target>Titkosított üzenet: váratlan hiba</target>
|
||||
<note>notification</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Encryption re-negotiation error" xml:space="preserve" approved="no">
|
||||
<trans-unit id="Encryption re-negotiation error" xml:space="preserve">
|
||||
<source>Encryption re-negotiation error</source>
|
||||
<target state="translated">Titkosítás-újraegyeztetési hiba</target>
|
||||
<target>Titkosítás újraegyeztetési hiba</target>
|
||||
<note>message decrypt error item</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Encryption re-negotiation failed." xml:space="preserve">
|
||||
@@ -3526,7 +3525,7 @@ Ez az Ön egyszer használható meghívó-hivatkozása!</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="For example, if your contact receives messages via a SimpleX Chat server, your app will deliver them via a Flux server." xml:space="preserve">
|
||||
<source>For example, if your contact receives messages via a SimpleX Chat server, your app will deliver them via a Flux server.</source>
|
||||
<target>Például, ha az Ön ismerőse egy SimpleX Chat-kiszolgálón keresztül fogadja az üzeneteket, az Ön alkalmazása egy Flux-kiszolgálón keresztül fogja azokat kézbesíteni.</target>
|
||||
<target>Ha például az ismerőse a SimpleX Chat kiszolgálón keresztül fogadja az üzeneteket, az Ön alkalmazása a Flux egyik kiszolgálóját használja a kézbesítéshez.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="For private routing" xml:space="preserve">
|
||||
@@ -4610,9 +4609,9 @@ Ez az Ön hivatkozása a(z) %@ nevű csoporthoz!</target>
|
||||
<target>Az üzeneteket, fájlokat és hívásokat **végpontok közötti titkosítással**, sérülés utáni titkosság-védelemmel és -helyreállítással, továbbá visszautasítással védi.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." xml:space="preserve" approved="no">
|
||||
<trans-unit id="Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." xml:space="preserve">
|
||||
<source>Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.</source>
|
||||
<target state="translated">Az üzenetek, fájlok és hívások **végpontok közötti kvantumálló titkosítással** sérülés utáni titkosságvédelemmel, visszautasítással és feltörés utáni helyreállítással vannak védve.</target>
|
||||
<target>Az üzeneteket, fájlokat és hívásokat **végpontok közötti kvantumrezisztens titkosítással**, sérülés utáni titkosság-védelemmel és -helyreállítással, továbbá visszautasítással védi.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Migrate device" xml:space="preserve">
|
||||
@@ -5571,7 +5570,7 @@ Hiba: %@</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Protect IP address" xml:space="preserve">
|
||||
<source>Protect IP address</source>
|
||||
<target>IP-cím védelme</target>
|
||||
<target>IP-cím védelem</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Protect app screen" xml:space="preserve">
|
||||
@@ -5626,9 +5625,9 @@ Engedélyezze a „Beállítások -> Hálózat és kiszolgálók” menüben.
|
||||
<target>Push-kiszolgáló</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Quantum resistant encryption" xml:space="preserve" approved="no">
|
||||
<trans-unit id="Quantum resistant encryption" xml:space="preserve">
|
||||
<source>Quantum resistant encryption</source>
|
||||
<target state="translated">Kvantumálló titkosítás</target>
|
||||
<target>Kvantumrezisztens titkosítás</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Rate the app" xml:space="preserve">
|
||||
@@ -6716,7 +6715,6 @@ Engedélyezze a „Beállítások -> Hálózat és kiszolgálók” menüben.
|
||||
</trans-unit>
|
||||
<trans-unit id="SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app." xml:space="preserve">
|
||||
<source>SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app.</source>
|
||||
<target>A SimpleX Chat és a Flux megállapodást kötött arról, hogy a Flux által üzemeltetett kiszolgálókat beépítik az alkalmazásba.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="SimpleX Chat security was audited by Trail of Bits." xml:space="preserve">
|
||||
@@ -7210,7 +7208,7 @@ Ez valamilyen hiba, vagy sérült kapcsolat esetén fordulhat elő.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
|
||||
<source>The same conditions will apply to operator **%@**.</source>
|
||||
<target>Ugyanezek a feltételek lesznek elfogadva a következő üzemeltetőre is: **%@**.</target>
|
||||
<target>Ugyanezek a feltételek vonatkoznak a következő üzemeltetőre is: **%@**.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
|
||||
@@ -7233,14 +7231,14 @@ Ez valamilyen hiba, vagy sérült kapcsolat esetén fordulhat elő.</target>
|
||||
<target>A feladó NEM fog értesítést kapni</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="The servers for new connections of your current chat profile **%@**." xml:space="preserve" approved="no">
|
||||
<trans-unit id="The servers for new connections of your current chat profile **%@**." xml:space="preserve">
|
||||
<source>The servers for new connections of your current chat profile **%@**.</source>
|
||||
<target state="translated">Az Ön jelenlegi **%@** nevű csevegő-profiljához tartozó új kapcsolatok kiszolgálói.</target>
|
||||
<target>A jelenlegi csevegési profilhoz tartozó új kapcsolatok kiszolgálói **%@**.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="The servers for new files of your current chat profile **%@**." xml:space="preserve" approved="no">
|
||||
<trans-unit id="The servers for new files of your current chat profile **%@**." xml:space="preserve">
|
||||
<source>The servers for new files of your current chat profile **%@**.</source>
|
||||
<target state="translated">Az Ön jelenlegi **%@** nevű csevegő-profiljához tartozó új fájlok kiszolgálói.</target>
|
||||
<target>Az Ön jelenlegi **%@** nevű csevegőprofiljához tartozó új fájlok kiszolgálói.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="The text you pasted is not a SimpleX link." xml:space="preserve">
|
||||
@@ -7263,9 +7261,9 @@ Ez valamilyen hiba, vagy sérült kapcsolat esetén fordulhat elő.</target>
|
||||
<target>Ezek a feltételek lesznek elfogadva a következő számára is: **%@**.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="These settings are for your current profile **%@**." xml:space="preserve" approved="no">
|
||||
<trans-unit id="These settings are for your current profile **%@**." xml:space="preserve">
|
||||
<source>These settings are for your current profile **%@**.</source>
|
||||
<target state="translated">Ezek a beállítások csak az Ön jelenlegi **%@** nevű csevegő-profiljára vonatkoznak.</target>
|
||||
<target>Ezek a beállítások csak a jelenlegi (**%@**) profiljára vonatkoznak.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="They can be overridden in contact and group settings." xml:space="preserve">
|
||||
@@ -7293,9 +7291,9 @@ Ez valamilyen hiba, vagy sérült kapcsolat esetén fordulhat elő.</target>
|
||||
<target>Ez a csevegés végpontok közötti titkosítással védett.</target>
|
||||
<note>E2EE info chat item</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="This chat is protected by quantum resistant end-to-end encryption." xml:space="preserve" approved="no">
|
||||
<trans-unit id="This chat is protected by quantum resistant end-to-end encryption." xml:space="preserve">
|
||||
<source>This chat is protected by quantum resistant end-to-end encryption.</source>
|
||||
<target state="translated">Ez a csevegés végpontok közötti kvantumálló tikosítással védett.</target>
|
||||
<target>Ez a csevegés végpontok közötti kvantumrezisztens tikosítással védett.</target>
|
||||
<note>E2EE info chat item</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="This device name" xml:space="preserve">
|
||||
@@ -7333,9 +7331,9 @@ Ez valamilyen hiba, vagy sérült kapcsolat esetén fordulhat elő.</target>
|
||||
<target>Ezt a hivatkozást egy másik hordozható eszközön már használták, hozzon létre egy új hivatkozást a számítógépén.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="This setting applies to messages in your current chat profile **%@**." xml:space="preserve" approved="no">
|
||||
<trans-unit id="This setting applies to messages in your current chat profile **%@**." xml:space="preserve">
|
||||
<source>This setting applies to messages in your current chat profile **%@**.</source>
|
||||
<target state="translated">Ez a beállítás csak az Ön jelenlegi **%@** nevű csevegő-profiljában lévő üzenetekre vonatkozik.</target>
|
||||
<target>Ez a beállítás csak a jelenlegi (**%@**) profiljában lévő üzenetekre vonatkozik.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Title" xml:space="preserve">
|
||||
@@ -7832,9 +7830,9 @@ A kapcsolódáshoz kérje meg az ismerősét, hogy hozzon létre egy másik kapc
|
||||
<target>Böngészőn keresztül</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Via secure quantum resistant protocol." xml:space="preserve" approved="no">
|
||||
<trans-unit id="Via secure quantum resistant protocol." xml:space="preserve">
|
||||
<source>Via secure quantum resistant protocol.</source>
|
||||
<target state="translated">Biztonságos kvantumálló-protokollon keresztül.</target>
|
||||
<target>Biztonságos kvantumrezisztens-protokollon keresztül.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Video call" xml:space="preserve">
|
||||
@@ -7927,9 +7925,9 @@ A kapcsolódáshoz kérje meg az ismerősét, hogy hozzon létre egy másik kapc
|
||||
<target>Várakozás a videóra</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Wallpaper accent" xml:space="preserve" approved="no">
|
||||
<trans-unit id="Wallpaper accent" xml:space="preserve">
|
||||
<source>Wallpaper accent</source>
|
||||
<target state="translated">Háttérkép kiemelőszíne</target>
|
||||
<target>Háttérkép kiemelés</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Wallpaper background" xml:space="preserve">
|
||||
@@ -8077,9 +8075,9 @@ A kapcsolódáshoz kérje meg az ismerősét, hogy hozzon létre egy másik kapc
|
||||
<target>Már van egy csevegési profil ugyanezzel a megjelenített névvel. Válasszon egy másik nevet.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="You are already connected to %@." xml:space="preserve" approved="no">
|
||||
<trans-unit id="You are already connected to %@." xml:space="preserve">
|
||||
<source>You are already connected to %@.</source>
|
||||
<target state="translated">Ön már kapcsolódva van a következőhöz: %@.</target>
|
||||
<target>Ön már kapcsolódva van ehhez: %@.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="You are already connected with %@." xml:space="preserve">
|
||||
@@ -8087,9 +8085,9 @@ A kapcsolódáshoz kérje meg az ismerősét, hogy hozzon létre egy másik kapc
|
||||
<target>Ön már kapcsolódva van vele: %@.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="You are already connecting to %@." xml:space="preserve" approved="no">
|
||||
<trans-unit id="You are already connecting to %@." xml:space="preserve">
|
||||
<source>You are already connecting to %@.</source>
|
||||
<target state="translated">Már folyamatban van a kapcsolódás a következőhöz: %@.</target>
|
||||
<target>Már folyamatban van a kapcsolódás ehhez: %@.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="You are already connecting via this one-time link!" xml:space="preserve">
|
||||
@@ -8156,7 +8154,7 @@ Csatlakozáskérés megismétlése?</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="You can configure servers via settings." xml:space="preserve">
|
||||
<source>You can configure servers via settings.</source>
|
||||
<target>A kiszolgálókat a „Hálózat és kiszolgálók” menüben konfigurálhatja.</target>
|
||||
<target>A kiszolgálókat a beállításokon keresztül konfigurálhatja.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="You can create it later" xml:space="preserve">
|
||||
@@ -8206,7 +8204,7 @@ Csatlakozáskérés megismétlése?</target>
|
||||
</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>A lezárási képernyő értesítési előnézetét az „Értesítések” menüben állíthatja be.</target>
|
||||
<target>A beállításokon keresztül beállíthatja a lezárási képernyő értesítési előnézetét.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="You can share a link or a QR code - anybody will be able to join the group. You won't lose members of the group if you later delete it." xml:space="preserve">
|
||||
@@ -8553,7 +8551,6 @@ Kapcsolatkérés megismétlése?</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="accepted invitation" xml:space="preserve">
|
||||
<source>accepted invitation</source>
|
||||
<target>elfogadott meghívó</target>
|
||||
<note>chat list item title</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="admin" xml:space="preserve">
|
||||
@@ -8781,9 +8778,9 @@ Kapcsolatkérés megismétlése?</target>
|
||||
<target>egyedi</target>
|
||||
<note>dropdown time picker choice</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="database version is newer than the app, but no down migration for: %@" xml:space="preserve" approved="no">
|
||||
<trans-unit id="database version is newer than the app, but no down migration for: %@" xml:space="preserve">
|
||||
<source>database version is newer than the app, but no down migration for: %@</source>
|
||||
<target state="translated">az adatbázis verziója újabb, mint az alkalmazásé, de nincs visszafelé átköltöztetés a következőhöz: %@</target>
|
||||
<target>az adatbázis verziója újabb, mint az alkalmazásé, de nincs visszafelé átköltöztetés ehhez: %@</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="days" xml:space="preserve">
|
||||
@@ -8891,24 +8888,24 @@ Kapcsolatkérés megismétlése?</target>
|
||||
<target>titkosítás rendben vele: %@</target>
|
||||
<note>chat item text</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="encryption re-negotiation allowed" xml:space="preserve" approved="no">
|
||||
<trans-unit id="encryption re-negotiation allowed" xml:space="preserve">
|
||||
<source>encryption re-negotiation allowed</source>
|
||||
<target state="translated">titkosítás-újraegyeztetés engedélyezve</target>
|
||||
<target>titkosítás újraegyeztetés engedélyezve</target>
|
||||
<note>chat item text</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="encryption re-negotiation allowed for %@" xml:space="preserve" approved="no">
|
||||
<trans-unit id="encryption re-negotiation allowed for %@" xml:space="preserve">
|
||||
<source>encryption re-negotiation allowed for %@</source>
|
||||
<target state="translated">a titkosítás újraegyeztetése engedélyezve van a következőhöz: %@</target>
|
||||
<target>titkosítás újraegyeztetés engedélyezve vele: %@</target>
|
||||
<note>chat item text</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="encryption re-negotiation required" xml:space="preserve" approved="no">
|
||||
<trans-unit id="encryption re-negotiation required" xml:space="preserve">
|
||||
<source>encryption re-negotiation required</source>
|
||||
<target state="translated">titkosítás-újraegyeztetés szükséges</target>
|
||||
<target>titkosítás újraegyeztetés szükséges</target>
|
||||
<note>chat item text</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="encryption re-negotiation required for %@" xml:space="preserve" approved="no">
|
||||
<trans-unit id="encryption re-negotiation required for %@" xml:space="preserve">
|
||||
<source>encryption re-negotiation required for %@</source>
|
||||
<target state="translated">a titkosítás újraegyeztetése szükséges a következőhöz: %@</target>
|
||||
<target>titkosítás újraegyeztetés szükséges %@ számára</target>
|
||||
<note>chat item text</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="ended" xml:space="preserve">
|
||||
@@ -9193,9 +9190,9 @@ Kapcsolatkérés megismétlése?</target>
|
||||
<target>ponttól-pontig</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="quantum resistant e2e encryption" xml:space="preserve" approved="no">
|
||||
<trans-unit id="quantum resistant e2e encryption" xml:space="preserve">
|
||||
<source>quantum resistant e2e encryption</source>
|
||||
<target state="translated">végpontok közötti kvantumálló titkosítás</target>
|
||||
<target>végpontok közötti kvantumrezisztens titkosítás</target>
|
||||
<note>chat item text</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="received answer…" xml:space="preserve">
|
||||
@@ -9240,7 +9237,6 @@ Kapcsolatkérés megismétlése?</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="requested to connect" xml:space="preserve">
|
||||
<source>requested to connect</source>
|
||||
<target>kérelmezve a kapcsolódáshoz</target>
|
||||
<note>chat list item title</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="saved" xml:space="preserve">
|
||||
|
||||
@@ -577,9 +577,8 @@
|
||||
<target>Riguardo SimpleX Chat</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="About operators" xml:space="preserve" approved="no">
|
||||
<trans-unit id="About operators" xml:space="preserve">
|
||||
<source>About operators</source>
|
||||
<target state="translated">Info sugli operatori</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Accent" xml:space="preserve">
|
||||
@@ -760,8 +759,8 @@
|
||||
<target>Tutti i dati vengono cancellati quando inserito.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="All data is kept private on your device." xml:space="preserve">
|
||||
<source>All data is kept private on your device.</source>
|
||||
<trans-unit id="All data is private to your device." xml:space="preserve">
|
||||
<source>All data is private to your device.</source>
|
||||
<target>Tutti i dati sono privati, nel tuo dispositivo.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
@@ -1092,12 +1091,12 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="Auto-accept contact requests" xml:space="preserve">
|
||||
<source>Auto-accept contact requests</source>
|
||||
<target>Auto-accetta le richieste di contatto</target>
|
||||
<target>Auto-accetta richieste di contatto</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Auto-accept images" xml:space="preserve">
|
||||
<source>Auto-accept images</source>
|
||||
<target>Auto-accetta le immagini</target>
|
||||
<target>Auto-accetta immagini</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Auto-accept settings" xml:space="preserve">
|
||||
@@ -1217,7 +1216,7 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="Blur media" xml:space="preserve">
|
||||
<source>Blur media</source>
|
||||
<target>Sfocatura dei file multimediali</target>
|
||||
<target>Sfocatura file multimediali</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Both you and your contact can add message reactions." xml:space="preserve">
|
||||
@@ -4502,7 +4501,7 @@ Questo è il tuo link per il gruppo %@!</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Message draft" xml:space="preserve">
|
||||
<source>Message draft</source>
|
||||
<target>Bozza del messaggio</target>
|
||||
<target>Bozza dei messaggi</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Message forwarded" xml:space="preserve">
|
||||
@@ -5989,12 +5988,12 @@ Attivalo nelle impostazioni *Rete e server*.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Review conditions" xml:space="preserve">
|
||||
<source>Review conditions</source>
|
||||
<target>Leggi le condizioni</target>
|
||||
<target>Esamina le condizioni</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Review later" xml:space="preserve">
|
||||
<source>Review later</source>
|
||||
<target>Leggi più tardi</target>
|
||||
<target>Esamina più tardi</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Revoke" xml:space="preserve">
|
||||
@@ -6290,7 +6289,7 @@ Attivalo nelle impostazioni *Rete e server*.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Send link previews" xml:space="preserve">
|
||||
<source>Send link previews</source>
|
||||
<target>Invia le anteprime dei link</target>
|
||||
<target>Invia anteprime dei link</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Send live message" xml:space="preserve">
|
||||
@@ -6611,7 +6610,7 @@ Attivalo nelle impostazioni *Rete e server*.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Share SimpleX address on social media." xml:space="preserve">
|
||||
<source>Share SimpleX address on social media.</source>
|
||||
<target>Condividi l'indirizzo SimpleX sui social media.</target>
|
||||
<target>Condividi indirizzo SimpleX sui social media.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Share address" xml:space="preserve">
|
||||
@@ -6714,9 +6713,8 @@ Attivalo nelle impostazioni *Rete e server*.</target>
|
||||
<target>Indirizzo SimpleX</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app." xml:space="preserve" approved="no">
|
||||
<trans-unit id="SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app." xml:space="preserve">
|
||||
<source>SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app.</source>
|
||||
<target state="translated">SimpleX Chat e Flux hanno concluso un accordo per includere server gestiti da Flux nell'app.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="SimpleX Chat security was audited by Trail of Bits." xml:space="preserve">
|
||||
@@ -7033,7 +7031,7 @@ Attivalo nelle impostazioni *Rete e server*.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Tap Create SimpleX address in the menu to create it later." xml:space="preserve">
|
||||
<source>Tap Create SimpleX address in the menu to create it later.</source>
|
||||
<target>Tocca Crea indirizzo SimpleX nel menu per crearlo più tardi.</target>
|
||||
<target>Tocca "Crea indirizzo SimpleX" nel menu per crearlo più tardi.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Tap button " xml:space="preserve">
|
||||
@@ -8551,9 +8549,8 @@ Ripetere la richiesta di connessione?</target>
|
||||
<target>chiamata accettata</target>
|
||||
<note>call status</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="accepted invitation" xml:space="preserve" approved="no">
|
||||
<trans-unit id="accepted invitation" xml:space="preserve">
|
||||
<source>accepted invitation</source>
|
||||
<target state="translated">invito accettato</target>
|
||||
<note>chat list item title</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="admin" xml:space="preserve">
|
||||
@@ -9238,9 +9235,8 @@ Ripetere la richiesta di connessione?</target>
|
||||
<target>ti ha rimosso/a</target>
|
||||
<note>rcv group event chat item</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="requested to connect" xml:space="preserve" approved="no">
|
||||
<trans-unit id="requested to connect" xml:space="preserve">
|
||||
<source>requested to connect</source>
|
||||
<target state="translated">richiesto di connettersi</target>
|
||||
<note>chat list item title</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="saved" xml:space="preserve">
|
||||
|
||||
@@ -724,8 +724,8 @@
|
||||
<target>入力するとすべてのデータが消去されます。</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="All data is kept private on your device." xml:space="preserve">
|
||||
<source>All data is kept private on your device.</source>
|
||||
<trans-unit id="All data is private to your device." xml:space="preserve">
|
||||
<source>All data is private to your device.</source>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="All group members will remain connected." xml:space="preserve">
|
||||
@@ -2478,9 +2478,9 @@ This is your own one-time link!</source>
|
||||
<source>Do not use credentials with proxy.</source>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Don't create address" xml:space="preserve" approved="no">
|
||||
<trans-unit id="Don't create address" xml:space="preserve">
|
||||
<source>Don't create address</source>
|
||||
<target state="translated">アドレスを作成しない</target>
|
||||
<target>アドレスを作成しないでください</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Don't enable" xml:space="preserve">
|
||||
@@ -3760,9 +3760,9 @@ More improvements are coming soon!</source>
|
||||
<target>インストール [ターミナル用SimpleX Chat](https://github.com/simplex-chat/simplex-chat)</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Instant" xml:space="preserve" approved="no">
|
||||
<trans-unit id="Instant" xml:space="preserve">
|
||||
<source>Instant</source>
|
||||
<target state="translated">即時</target>
|
||||
<target>すぐに</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Instant push notifications will be hidden! " xml:space="preserve">
|
||||
@@ -4298,9 +4298,8 @@ This is your link for group %@!</source>
|
||||
<source>Migrate device</source>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Migrate from another device" xml:space="preserve" approved="no">
|
||||
<trans-unit id="Migrate from another device" xml:space="preserve">
|
||||
<source>Migrate from another device</source>
|
||||
<target state="translated">別の端末から移行</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Migrate here" xml:space="preserve">
|
||||
@@ -5084,9 +5083,8 @@ Error: %@</source>
|
||||
<source>Private message routing 🚀</source>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Private notes" xml:space="preserve" approved="no">
|
||||
<trans-unit id="Private notes" xml:space="preserve">
|
||||
<source>Private notes</source>
|
||||
<target state="translated">プライベートノート</target>
|
||||
<note>name of notes to self</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Private routing" xml:space="preserve">
|
||||
@@ -7539,9 +7537,8 @@ Repeat join request?</source>
|
||||
<target>ユーザープロファイルを右にスワイプすると、非表示またはミュートにすることができます。</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="You can make it visible to your SimpleX contacts via Settings." xml:space="preserve" approved="no">
|
||||
<trans-unit id="You can make it visible to your SimpleX contacts via Settings." xml:space="preserve">
|
||||
<source>You can make it visible to your SimpleX contacts via Settings.</source>
|
||||
<target state="translated">設定でSimpleXの連絡先に表示させることができます。</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="You can now chat with %@" xml:space="preserve">
|
||||
|
||||
@@ -579,7 +579,6 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="About operators" xml:space="preserve">
|
||||
<source>About operators</source>
|
||||
<target>Over operatoren</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Accent" xml:space="preserve">
|
||||
@@ -760,8 +759,8 @@
|
||||
<target>Alle gegevens worden bij het invoeren gewist.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="All data is kept private on your device." xml:space="preserve">
|
||||
<source>All data is kept private on your device.</source>
|
||||
<trans-unit id="All data is private to your device." xml:space="preserve">
|
||||
<source>All data is private to your device.</source>
|
||||
<target>Alle gegevens zijn privé op uw apparaat.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
@@ -8553,7 +8552,6 @@ Verbindingsverzoek herhalen?</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="accepted invitation" xml:space="preserve">
|
||||
<source>accepted invitation</source>
|
||||
<target>geaccepteerde uitnodiging</target>
|
||||
<note>chat list item title</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="admin" xml:space="preserve">
|
||||
@@ -9240,7 +9238,6 @@ Verbindingsverzoek herhalen?</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="requested to connect" xml:space="preserve">
|
||||
<source>requested to connect</source>
|
||||
<target>gevraagd om verbinding te maken</target>
|
||||
<note>chat list item title</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="saved" xml:space="preserve">
|
||||
|
||||
@@ -745,8 +745,8 @@
|
||||
<target>Wszystkie dane są usuwane po jego wprowadzeniu.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="All data is kept private on your device." xml:space="preserve">
|
||||
<source>All data is kept private on your device.</source>
|
||||
<trans-unit id="All data is private to your device." xml:space="preserve">
|
||||
<source>All data is private to your device.</source>
|
||||
<target>Wszystkie dane są prywatne na Twoim urządzeniu.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
|
||||
@@ -5425,8 +5425,8 @@ Isso pode acontecer por causa de algum bug ou quando a conexão está comprometi
|
||||
<source>Advanced settings</source>
|
||||
<target state="translated">Configurações avançadas</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="All data is kept private on your device." xml:space="preserve" approved="no">
|
||||
<source>All data is kept private on your device.</source>
|
||||
<trans-unit id="All data is private to your device." xml:space="preserve" approved="no">
|
||||
<source>All data is private to your device.</source>
|
||||
<target state="translated">Toda informação é privada em seu dispositivo.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays." xml:space="preserve" approved="no">
|
||||
|
||||
@@ -384,7 +384,7 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="**Scan / Paste link**: to connect via a link you received." xml:space="preserve">
|
||||
<source>**Scan / Paste link**: to connect via a link you received.</source>
|
||||
<target>**Сканировать / Вставить ссылку**: чтобы соединиться через полученную ссылку.</target>
|
||||
<target>**Сканировать / Вставить ссылку**: чтобы соединится через полученную ссылку.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="**Warning**: Instant push notifications require passphrase saved in Keychain." xml:space="preserve">
|
||||
@@ -760,8 +760,8 @@
|
||||
<target>Все данные удаляются при его вводе.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="All data is kept private on your device." xml:space="preserve">
|
||||
<source>All data is kept private on your device.</source>
|
||||
<trans-unit id="All data is private to your device." xml:space="preserve">
|
||||
<source>All data is private to your device.</source>
|
||||
<target>Все данные хранятся только на вашем устройстве.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
@@ -5582,7 +5582,7 @@ Error: %@</source>
|
||||
<source>Protect your IP address from the messaging relays chosen by your contacts.
|
||||
Enable in *Network & servers* settings.</source>
|
||||
<target>Защитите ваш IP адрес от серверов сообщений, выбранных Вашими контактами.
|
||||
Включите в настройках *Сети и серверов*.</target>
|
||||
Включите в настройках *Сеть и серверы*.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Protect your chat profiles with a password!" xml:space="preserve">
|
||||
@@ -8150,7 +8150,7 @@ Repeat join request?</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="You can configure operators in Network & servers settings." xml:space="preserve">
|
||||
<source>You can configure operators in Network & servers settings.</source>
|
||||
<target>Вы можете настроить операторов в настройках Сети и серверов.</target>
|
||||
<target>Вы можете настроить операторов в настройках Сеть и серверы.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="You can configure servers via settings." xml:space="preserve">
|
||||
|
||||
@@ -699,8 +699,8 @@
|
||||
<target>ข้อมูลทั้งหมดจะถูกลบเมื่อถูกป้อน</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="All data is kept private on your device." xml:space="preserve">
|
||||
<source>All data is kept private on your device.</source>
|
||||
<trans-unit id="All data is private to your device." xml:space="preserve">
|
||||
<source>All data is private to your device.</source>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="All group members will remain connected." xml:space="preserve">
|
||||
|
||||
@@ -745,8 +745,8 @@
|
||||
<target>Kullanıldığında bütün veriler silinir.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="All data is kept private on your device." xml:space="preserve">
|
||||
<source>All data is kept private on your device.</source>
|
||||
<trans-unit id="All data is private to your device." xml:space="preserve">
|
||||
<source>All data is private to your device.</source>
|
||||
<target>Tüm veriler cihazınıza özeldir.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
|
||||
@@ -756,8 +756,8 @@
|
||||
<target>Всі дані стираються при введенні.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="All data is kept private on your device." xml:space="preserve">
|
||||
<source>All data is kept private on your device.</source>
|
||||
<trans-unit id="All data is private to your device." xml:space="preserve">
|
||||
<source>All data is private to your device.</source>
|
||||
<target>Всі дані є приватними для вашого пристрою.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
|
||||
@@ -739,8 +739,8 @@
|
||||
<target>所有数据在输入后将被删除。</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="All data is kept private on your device." xml:space="preserve">
|
||||
<source>All data is kept private on your device.</source>
|
||||
<trans-unit id="All data is private to your device." xml:space="preserve">
|
||||
<source>All data is private to your device.</source>
|
||||
<target>所有数据都是您设备的私有数据.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
|
||||
@@ -156,6 +156,11 @@
|
||||
6442E0BE2880182D00CEC0F9 /* GroupChatInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6442E0BD2880182D00CEC0F9 /* GroupChatInfoView.swift */; };
|
||||
64466DCC29FFE3E800E3D48D /* MailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64466DCB29FFE3E800E3D48D /* MailView.swift */; };
|
||||
6448BBB628FA9D56000D2AB9 /* GroupLinkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6448BBB528FA9D56000D2AB9 /* GroupLinkView.swift */; };
|
||||
6449333A2AF8E51000AC506E /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 644933352AF8E51000AC506E /* libgmpxx.a */; };
|
||||
6449333B2AF8E51000AC506E /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 644933362AF8E51000AC506E /* libgmp.a */; };
|
||||
6449333C2AF8E51000AC506E /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 644933372AF8E51000AC506E /* libffi.a */; };
|
||||
6449333D2AF8E51000AC506E /* libHSsimplex-chat-5.4.0.3-EnhmkSQK6HvJ11g1uZERg8-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 644933382AF8E51000AC506E /* libHSsimplex-chat-5.4.0.3-EnhmkSQK6HvJ11g1uZERg8-ghc9.6.3.a */; };
|
||||
6449333E2AF8E51000AC506E /* libHSsimplex-chat-5.4.0.3-EnhmkSQK6HvJ11g1uZERg8.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 644933392AF8E51000AC506E /* libHSsimplex-chat-5.4.0.3-EnhmkSQK6HvJ11g1uZERg8.a */; };
|
||||
644EFFDE292BCD9D00525D5B /* ComposeVoiceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 644EFFDD292BCD9D00525D5B /* ComposeVoiceView.swift */; };
|
||||
644EFFE0292CFD7F00525D5B /* CIVoiceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 644EFFDF292CFD7F00525D5B /* CIVoiceView.swift */; };
|
||||
644EFFE2292D089800525D5B /* FramedCIVoiceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 644EFFE1292D089800525D5B /* FramedCIVoiceView.swift */; };
|
||||
@@ -167,9 +172,9 @@
|
||||
648010AB281ADD15009009B9 /* CIFileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 648010AA281ADD15009009B9 /* CIFileView.swift */; };
|
||||
648679AB2BC96A74006456E7 /* ChatItemForwardingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 648679AA2BC96A74006456E7 /* ChatItemForwardingView.swift */; };
|
||||
649B28DD2CFE07CF00536B68 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28D82CFE07CF00536B68 /* libffi.a */; };
|
||||
649B28DE2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28D92CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E-ghc9.6.3.a */; };
|
||||
649B28DE2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28D92CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo-ghc9.6.3.a */; };
|
||||
649B28DF2CFE07CF00536B68 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28DA2CFE07CF00536B68 /* libgmpxx.a */; };
|
||||
649B28E02CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28DB2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E.a */; };
|
||||
649B28E02CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28DB2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo.a */; };
|
||||
649B28E12CFE07CF00536B68 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28DC2CFE07CF00536B68 /* libgmp.a */; };
|
||||
649BCDA0280460FD00C3A862 /* ComposeImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649BCD9F280460FD00C3A862 /* ComposeImageView.swift */; };
|
||||
649BCDA22805D6EF00C3A862 /* CIImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649BCDA12805D6EF00C3A862 /* CIImageView.swift */; };
|
||||
@@ -504,6 +509,11 @@
|
||||
6442E0BD2880182D00CEC0F9 /* GroupChatInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupChatInfoView.swift; sourceTree = "<group>"; };
|
||||
64466DCB29FFE3E800E3D48D /* MailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MailView.swift; sourceTree = "<group>"; };
|
||||
6448BBB528FA9D56000D2AB9 /* GroupLinkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupLinkView.swift; sourceTree = "<group>"; };
|
||||
644933352AF8E51000AC506E /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = "<group>"; };
|
||||
644933362AF8E51000AC506E /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = "<group>"; };
|
||||
644933372AF8E51000AC506E /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = "<group>"; };
|
||||
644933382AF8E51000AC506E /* libHSsimplex-chat-5.4.0.3-EnhmkSQK6HvJ11g1uZERg8-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.4.0.3-EnhmkSQK6HvJ11g1uZERg8-ghc9.6.3.a"; sourceTree = "<group>"; };
|
||||
644933392AF8E51000AC506E /* libHSsimplex-chat-5.4.0.3-EnhmkSQK6HvJ11g1uZERg8.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.4.0.3-EnhmkSQK6HvJ11g1uZERg8.a"; sourceTree = "<group>"; };
|
||||
644EFFDD292BCD9D00525D5B /* ComposeVoiceView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeVoiceView.swift; sourceTree = "<group>"; };
|
||||
644EFFDF292CFD7F00525D5B /* CIVoiceView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIVoiceView.swift; sourceTree = "<group>"; };
|
||||
644EFFE1292D089800525D5B /* FramedCIVoiceView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FramedCIVoiceView.swift; sourceTree = "<group>"; };
|
||||
@@ -516,9 +526,9 @@
|
||||
648679AA2BC96A74006456E7 /* ChatItemForwardingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatItemForwardingView.swift; sourceTree = "<group>"; };
|
||||
6493D667280ED77F007A76FB /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
649B28D82CFE07CF00536B68 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = "<group>"; };
|
||||
649B28D92CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E-ghc9.6.3.a"; sourceTree = "<group>"; };
|
||||
649B28D92CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo-ghc9.6.3.a"; sourceTree = "<group>"; };
|
||||
649B28DA2CFE07CF00536B68 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = "<group>"; };
|
||||
649B28DB2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E.a"; sourceTree = "<group>"; };
|
||||
649B28DB2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo.a"; sourceTree = "<group>"; };
|
||||
649B28DC2CFE07CF00536B68 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = "<group>"; };
|
||||
649BCD9F280460FD00C3A862 /* ComposeImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeImageView.swift; sourceTree = "<group>"; };
|
||||
649BCDA12805D6EF00C3A862 /* CIImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIImageView.swift; sourceTree = "<group>"; };
|
||||
@@ -671,9 +681,9 @@
|
||||
5CE2BA93284534B000EC33A6 /* libiconv.tbd in Frameworks */,
|
||||
649B28E12CFE07CF00536B68 /* libgmp.a in Frameworks */,
|
||||
5CE2BA94284534BB00EC33A6 /* libz.tbd in Frameworks */,
|
||||
649B28E02CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E.a in Frameworks */,
|
||||
649B28E02CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo.a in Frameworks */,
|
||||
CE38A29C2C3FCD72005ED185 /* SwiftyGif in Frameworks */,
|
||||
649B28DE2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E-ghc9.6.3.a in Frameworks */,
|
||||
649B28DE2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo-ghc9.6.3.a in Frameworks */,
|
||||
649B28DD2CFE07CF00536B68 /* libffi.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@@ -754,8 +764,8 @@
|
||||
649B28D82CFE07CF00536B68 /* libffi.a */,
|
||||
649B28DC2CFE07CF00536B68 /* libgmp.a */,
|
||||
649B28DA2CFE07CF00536B68 /* libgmpxx.a */,
|
||||
649B28D92CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E-ghc9.6.3.a */,
|
||||
649B28DB2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E.a */,
|
||||
649B28D92CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo-ghc9.6.3.a */,
|
||||
649B28DB2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo.a */,
|
||||
);
|
||||
path = Libraries;
|
||||
sourceTree = "<group>";
|
||||
@@ -1931,7 +1941,7 @@
|
||||
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 254;
|
||||
CURRENT_PROJECT_VERSION = 253;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEVELOPMENT_TEAM = 5NN7GUYB6T;
|
||||
ENABLE_BITCODE = NO;
|
||||
@@ -1980,7 +1990,7 @@
|
||||
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 254;
|
||||
CURRENT_PROJECT_VERSION = 253;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEVELOPMENT_TEAM = 5NN7GUYB6T;
|
||||
ENABLE_BITCODE = NO;
|
||||
@@ -2021,7 +2031,7 @@
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 254;
|
||||
CURRENT_PROJECT_VERSION = 253;
|
||||
DEVELOPMENT_TEAM = 5NN7GUYB6T;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||
@@ -2041,7 +2051,7 @@
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 254;
|
||||
CURRENT_PROJECT_VERSION = 253;
|
||||
DEVELOPMENT_TEAM = 5NN7GUYB6T;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||
@@ -2066,7 +2076,7 @@
|
||||
CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements";
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 254;
|
||||
CURRENT_PROJECT_VERSION = 253;
|
||||
DEVELOPMENT_TEAM = 5NN7GUYB6T;
|
||||
ENABLE_BITCODE = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = s;
|
||||
@@ -2103,7 +2113,7 @@
|
||||
CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements";
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 254;
|
||||
CURRENT_PROJECT_VERSION = 253;
|
||||
DEVELOPMENT_TEAM = 5NN7GUYB6T;
|
||||
ENABLE_BITCODE = NO;
|
||||
ENABLE_CODE_COVERAGE = NO;
|
||||
@@ -2140,7 +2150,7 @@
|
||||
CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES;
|
||||
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 254;
|
||||
CURRENT_PROJECT_VERSION = 253;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = 5NN7GUYB6T;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
@@ -2191,7 +2201,7 @@
|
||||
CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES;
|
||||
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 254;
|
||||
CURRENT_PROJECT_VERSION = 253;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = 5NN7GUYB6T;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
@@ -2242,7 +2252,7 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
||||
CODE_SIGN_ENTITLEMENTS = "SimpleX SE/SimpleX SE.entitlements";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 254;
|
||||
CURRENT_PROJECT_VERSION = 253;
|
||||
DEVELOPMENT_TEAM = 5NN7GUYB6T;
|
||||
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu17;
|
||||
@@ -2276,7 +2286,7 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
||||
CODE_SIGN_ENTITLEMENTS = "SimpleX SE/SimpleX SE.entitlements";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 254;
|
||||
CURRENT_PROJECT_VERSION = 253;
|
||||
DEVELOPMENT_TEAM = 5NN7GUYB6T;
|
||||
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu17;
|
||||
|
||||
@@ -343,9 +343,6 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Abort changing address?" = "Wechsel der Empfängeradresse beenden?";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"About operators" = "Über Betreiber";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"About SimpleX Chat" = "Über SimpleX Chat";
|
||||
|
||||
@@ -379,9 +376,6 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Accepted conditions" = "Akzeptierte Nutzungsbedingungen";
|
||||
|
||||
/* chat list item title */
|
||||
"accepted invitation" = "Einladung akzeptiert";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Acknowledged" = "Bestätigt";
|
||||
|
||||
@@ -394,9 +388,6 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Fügen Sie die Adresse Ihrem Profil hinzu, damit Ihre Kontakte sie mit anderen Personen teilen können. Es wird eine Profilaktualisierung an Ihre Kontakte gesendet.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Add friends" = "Freunde aufnehmen";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Add profile" = "Profil hinzufügen";
|
||||
|
||||
@@ -406,18 +397,12 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Add servers by scanning QR codes." = "Fügen Sie Server durch Scannen der QR Codes hinzu.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Add team members" = "Team-Mitglieder aufnehmen";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Add to another device" = "Einem anderen Gerät hinzufügen";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Add welcome message" = "Begrüßungsmeldung hinzufügen";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Add your team members to the conversations." = "Nehmen Sie Team-Mitglieder in Ihre Unterhaltungen auf.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Added media & file servers" = "Medien- und Dateiserver hinzugefügt";
|
||||
|
||||
@@ -479,7 +464,7 @@
|
||||
"All data is erased when it is entered." = "Alle Daten werden gelöscht, sobald dieser eingegeben wird.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"All data is kept private on your device." = "Alle Daten werden nur auf Ihrem Gerät gespeichert.";
|
||||
"All data is private to your device." = "Alle Daten werden nur auf Ihrem Gerät gespeichert.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"All group members will remain connected." = "Alle Gruppenmitglieder bleiben verbunden.";
|
||||
@@ -808,12 +793,6 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Bulgarisch, Finnisch, Thailändisch und Ukrainisch - Dank der Nutzer und [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Business address" = "Geschäftliche Adresse";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Business chats" = "Geschäftliche Chats";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." = "Per Chat-Profil (Voreinstellung) oder [per Verbindung](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).";
|
||||
|
||||
@@ -930,15 +909,6 @@
|
||||
/* chat item text */
|
||||
"changing address…" = "Wechsel der Empfängeradresse wurde gestartet…";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Chat" = "Chat";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Chat already exists" = "Chat besteht bereits";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Chat already exists!" = "Chat besteht bereits!";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Chat colors" = "Chat-Farben";
|
||||
|
||||
@@ -984,12 +954,6 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Chat theme" = "Chat-Design";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Chat will be deleted for all members - this cannot be undone!" = "Der Chat wird für alle Mitglieder gelöscht. Dies kann nicht rückgängig gemacht werden!";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Chat will be deleted for you - this cannot be undone!" = "Der Chat wird für Sie gelöscht. Dies kann nicht rückgängig gemacht werden!";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Chats" = "Chats";
|
||||
|
||||
@@ -1511,18 +1475,12 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Delete and notify contact" = "Kontakt löschen und benachrichtigen";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Delete chat" = "Chat löschen";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Delete chat profile" = "Chat-Profil löschen";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Delete chat profile?" = "Chat-Profil löschen?";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Delete chat?" = "Chat löschen?";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Delete connection" = "Verbindung löschen";
|
||||
|
||||
@@ -1697,9 +1655,6 @@
|
||||
/* chat feature */
|
||||
"Direct messages" = "Direkte Nachrichten";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Direct messages between members are prohibited in this chat." = "In diesem Chat sind Direktnachrichten zwischen Mitgliedern nicht erlaubt.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Direct messages between members are prohibited." = "In dieser Gruppe sind Direktnachrichten zwischen Mitgliedern nicht erlaubt.";
|
||||
|
||||
@@ -2739,9 +2694,6 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Invite members" = "Mitglieder einladen";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Invite to chat" = "Zum Chat einladen";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Invite to group" = "In Gruppe einladen";
|
||||
|
||||
@@ -2856,12 +2808,6 @@
|
||||
/* swipe action */
|
||||
"Leave" = "Verlassen";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Leave chat" = "Chat verlassen";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Leave chat?" = "Chat verlassen?";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Leave group" = "Gruppe verlassen";
|
||||
|
||||
@@ -2958,18 +2904,12 @@
|
||||
/* item status text */
|
||||
"Member inactive" = "Mitglied inaktiv";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Member role will be changed to \"%@\". All chat members will be notified." = "Die Rolle des Mitglieds wird auf \"%@\" geändert. Alle Chat-Mitglieder werden darüber informiert.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Member role will be changed to \"%@\". All group members will be notified." = "Die Mitgliederrolle wird auf \"%@\" geändert. Alle Mitglieder der Gruppe werden benachrichtigt.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Member role will be changed to \"%@\". The member will receive a new invitation." = "Die Mitgliederrolle wird auf \"%@\" geändert. Das Mitglied wird eine neue Einladung erhalten.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Member will be removed from chat - this cannot be undone!" = "Das Mitglied wird aus dem Chat entfernt. Dies kann nicht rückgängig gemacht werden!";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Member will be removed from group - this cannot be undone!" = "Das Mitglied wird aus der Gruppe entfernt. Dies kann nicht rückgängig gemacht werden!";
|
||||
|
||||
@@ -3389,9 +3329,6 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Onion hosts will not be used." = "Onion-Hosts werden nicht verwendet.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Only chat owners can change preferences." = "Nur Chat-Eigentümer können die Präferenzen ändern.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Only client devices store user profiles, contacts, groups, and messages." = "Nur die Endgeräte speichern die Benutzerprofile, Kontakte, Gruppen und Nachrichten, welche über eine **2-Schichten Ende-zu-Ende-Verschlüsselung** gesendet werden.";
|
||||
|
||||
@@ -3470,9 +3407,6 @@
|
||||
/* alert title */
|
||||
"Operator server" = "Betreiber-Server";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Or import archive file" = "Oder importieren Sie eine Archiv-Datei";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Or paste archive link" = "Oder fügen Sie den Archiv-Link ein";
|
||||
|
||||
@@ -3641,9 +3575,6 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Privacy & security" = "Datenschutz & Sicherheit";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Privacy for your customers." = "Schutz der Privatsphäre Ihrer Kunden.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Privacy redefined" = "Datenschutz neu definiert";
|
||||
|
||||
@@ -3936,9 +3867,6 @@
|
||||
/* chat item action */
|
||||
"Reply" = "Antwort";
|
||||
|
||||
/* chat list item title */
|
||||
"requested to connect" = "Zur Verbindung aufgefordert";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Required" = "Erforderlich";
|
||||
|
||||
@@ -4646,9 +4574,6 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Tap button " = "Schaltfläche antippen ";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Tap Create SimpleX address in the menu to create it later." = "Tippen Sie im Menü auf SimpleX-Adresse erstellen, um sie später zu erstellen.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Tap to activate profile." = "Zum Aktivieren des Profils tippen.";
|
||||
|
||||
@@ -4779,10 +4704,10 @@
|
||||
"The sender will NOT be notified" = "Der Absender wird NICHT benachrichtigt";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"The servers for new connections of your current chat profile **%@**." = "Nachrichten-Server für neue Verbindungen über Ihr aktuelles Chat-Profil **%@**.";
|
||||
"The servers for new connections of your current chat profile **%@**." = "Mögliche Server für neue Verbindungen von Ihrem aktuellen Chat-Profil **%@**.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"The servers for new files of your current chat profile **%@**." = "Medien- und Datei-Server für neue Daten über Ihr aktuelles Chat-Profil **%@**.";
|
||||
"The servers for new files of your current chat profile **%@**." = "Die Server Deines aktuellen Chat-Profils für neue Dateien **%@**.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"The text you pasted is not a SimpleX link." = "Der von Ihnen eingefügte Text ist kein SimpleX-Link.";
|
||||
@@ -5357,9 +5282,6 @@
|
||||
/* No comment provided by engineer. */
|
||||
"You are already connected to %@." = "Sie sind bereits mit %@ verbunden.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"You are already connected with %@." = "Sie sind bereits mit %@ verbunden.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"You are already connecting to %@." = "Sie sind bereits mit %@ verbunden.";
|
||||
|
||||
@@ -5558,9 +5480,6 @@
|
||||
/* No comment provided by engineer. */
|
||||
"You will still receive calls and notifications from muted profiles when they are active." = "Sie können Anrufe und Benachrichtigungen auch von stummgeschalteten Profilen empfangen, solange diese aktiv sind.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"You will stop receiving messages from this chat. Chat history will be preserved." = "Sie werden von diesem Chat keine Nachrichten mehr erhalten. Der Nachrichtenverlauf wird beibehalten.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"You will stop receiving messages from this group. Chat history will be preserved." = "Sie werden von dieser Gruppe keine Nachrichten mehr erhalten. Der Nachrichtenverlauf wird beibehalten.";
|
||||
|
||||
|
||||
@@ -343,9 +343,6 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Abort changing address?" = "¿Cancelar el cambio de servidor?";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"About operators" = "Acerca de los operadores";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"About SimpleX Chat" = "Sobre SimpleX Chat";
|
||||
|
||||
@@ -379,9 +376,6 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Accepted conditions" = "Condiciones aceptadas";
|
||||
|
||||
/* chat list item title */
|
||||
"accepted invitation" = "invitación aceptada";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Acknowledged" = "Confirmaciones";
|
||||
|
||||
@@ -394,9 +388,6 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Añade la dirección a tu perfil para que tus contactos puedan compartirla con otros. La actualización del perfil se enviará a tus contactos.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Add friends" = "Añadir amigos";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Add profile" = "Añadir perfil";
|
||||
|
||||
@@ -406,18 +397,12 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Add servers by scanning QR codes." = "Añadir servidores mediante el escaneo de códigos QR.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Add team members" = "Añadir miembros del equipo";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Add to another device" = "Añadir a otro dispositivo";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Add welcome message" = "Añadir mensaje de bienvenida";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Add your team members to the conversations." = "Añade a los miembros de tu equipo a las conversaciones.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Added media & file servers" = "Servidores de archivos y multimedia añadidos";
|
||||
|
||||
@@ -479,7 +464,7 @@
|
||||
"All data is erased when it is entered." = "Al introducirlo todos los datos son eliminados.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"All data is kept private on your device." = "Todos los datos son privados y están en tu dispositivo.";
|
||||
"All data is private to your device." = "Todos los datos son privados y están en tu dispositivo.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"All group members will remain connected." = "Todos los miembros del grupo permanecerán conectados.";
|
||||
@@ -808,12 +793,6 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Búlgaro, Finlandés, Tailandés y Ucraniano - gracias a los usuarios y [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Business address" = "Dirección empresarial";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Business chats" = "Chats empresariales";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." = "Mediante perfil (predeterminado) o [por conexión](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).";
|
||||
|
||||
@@ -930,15 +909,6 @@
|
||||
/* chat item text */
|
||||
"changing address…" = "cambiando de servidor…";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Chat" = "Chat";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Chat already exists" = "El chat ya existe";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Chat already exists!" = "¡El chat ya existe!";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Chat colors" = "Colores del chat";
|
||||
|
||||
@@ -984,12 +954,6 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Chat theme" = "Tema de chat";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Chat will be deleted for all members - this cannot be undone!" = "El chat será eliminado para todos los miembros. ¡No podrá deshacerse!";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Chat will be deleted for you - this cannot be undone!" = "El chat será eliminado para tí. ¡No podrá deshacerse!";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Chats" = "Chats";
|
||||
|
||||
@@ -1511,18 +1475,12 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Delete and notify contact" = "Eliminar y notificar contacto";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Delete chat" = "Eliminar chat";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Delete chat profile" = "Eliminar perfil";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Delete chat profile?" = "¿Eliminar perfil?";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Delete chat?" = "¿Eliminar chat?";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Delete connection" = "Eliminar conexión";
|
||||
|
||||
@@ -1542,7 +1500,7 @@
|
||||
"Delete file" = "Eliminar archivo";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Delete files and media?" = "¿Eliminar archivos y multimedia?";
|
||||
"Delete files and media?" = "Eliminar archivos y multimedia?";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Delete files for all chat profiles" = "Eliminar archivos de todos los perfiles";
|
||||
@@ -1697,9 +1655,6 @@
|
||||
/* chat feature */
|
||||
"Direct messages" = "Mensajes directos";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Direct messages between members are prohibited in this chat." = "Mensajes directos no permitidos entre miembros de este chat.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Direct messages between members are prohibited." = "Los mensajes directos entre miembros del grupo no están permitidos.";
|
||||
|
||||
@@ -1843,7 +1798,7 @@
|
||||
"Enable camera access" = "Permitir acceso a la cámara";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Enable Flux" = "Habilita Flux";
|
||||
"Enable Flux" = "Habilitar Flux";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Enable for all" = "Activar para todos";
|
||||
@@ -2341,7 +2296,7 @@
|
||||
"Fix not supported by group member" = "Corrección no compatible con miembro del grupo";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"for better metadata privacy." = "para mejorar la privacidad de los metadatos.";
|
||||
"for better metadata privacy." = "para mayor privacidad de los metadatos.";
|
||||
|
||||
/* servers error */
|
||||
"For chat profile %@:" = "Para el perfil de chat %@:";
|
||||
@@ -2739,9 +2694,6 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Invite members" = "Invitar miembros";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Invite to chat" = "Invitar al chat";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Invite to group" = "Invitar al grupo";
|
||||
|
||||
@@ -2856,12 +2808,6 @@
|
||||
/* swipe action */
|
||||
"Leave" = "Salir";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Leave chat" = "Salir del chat";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Leave chat?" = "¿Salir del chat?";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Leave group" = "Salir del grupo";
|
||||
|
||||
@@ -2958,18 +2904,12 @@
|
||||
/* item status text */
|
||||
"Member inactive" = "Miembro inactivo";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Member role will be changed to \"%@\". All chat members will be notified." = "El rol del miembro cambiará a \"%@\" y todos serán notificados.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Member role will be changed to \"%@\". All group members will be notified." = "El rol del miembro cambiará a \"%@\" y se notificará al grupo.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Member role will be changed to \"%@\". The member will receive a new invitation." = "El rol del miembro cambiará a \"%@\" y recibirá una invitación nueva.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Member will be removed from chat - this cannot be undone!" = "El miembro será eliminado del chat. ¡No podrá deshacerse!";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Member will be removed from group - this cannot be undone!" = "El miembro será expulsado del grupo. ¡No podrá deshacerse!";
|
||||
|
||||
@@ -3389,9 +3329,6 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Onion hosts will not be used." = "No se usarán hosts .onion.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Only chat owners can change preferences." = "Sólo los propietarios del chat pueden cambiar las preferencias.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Only client devices store user profiles, contacts, groups, and messages." = "Sólo los dispositivos cliente almacenan perfiles de usuario, contactos, grupos y mensajes enviados con **cifrado de extremo a extremo de 2 capas**.";
|
||||
|
||||
@@ -3470,9 +3407,6 @@
|
||||
/* alert title */
|
||||
"Operator server" = "Servidor del operador";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Or import archive file" = "O importa desde un archivo";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Or paste archive link" = "O pegar enlace del archivo";
|
||||
|
||||
@@ -3627,7 +3561,7 @@
|
||||
"Preserve the last message draft, with attachments." = "Conserva el último borrador del mensaje con los datos adjuntos.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Preset server address" = "Dirección predefinida del servidor";
|
||||
"Preset server address" = "Dirección del servidor predefinida";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Preset servers" = "Servidores predefinidos";
|
||||
@@ -3641,9 +3575,6 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Privacy & security" = "Seguridad y Privacidad";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Privacy for your customers." = "Privacidad para tus clientes.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Privacy redefined" = "Privacidad redefinida";
|
||||
|
||||
@@ -3762,7 +3693,7 @@
|
||||
"Read" = "Leer";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Read more" = "Saber más";
|
||||
"Read more" = "Conoce más";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)." = "Conoce más en la [Guía del Usuario](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode).";
|
||||
@@ -3936,9 +3867,6 @@
|
||||
/* chat item action */
|
||||
"Reply" = "Responder";
|
||||
|
||||
/* chat list item title */
|
||||
"requested to connect" = "solicitado para conectar";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Required" = "Obligatorio";
|
||||
|
||||
@@ -4410,7 +4338,7 @@
|
||||
"Share profile" = "Comparte perfil";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Share SimpleX address on social media." = "Comparte tu dirección SimpleX en redes sociales.";
|
||||
"Share SimpleX address on social media." = "Compartir dirección SimpleX en redes sociales.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Share this 1-time invite link" = "Comparte este enlace de un solo uso";
|
||||
@@ -4458,10 +4386,10 @@
|
||||
"SimpleX Address" = "Dirección SimpleX";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"SimpleX address and 1-time links are safe to share via any messenger." = "Compartir los enlaces de un uso y las direcciones SimpleX es seguro a través de cualquier medio.";
|
||||
"SimpleX address and 1-time links are safe to share via any messenger." = "Compartir enlaces de un uso y direcciones SimpleX es seguro a través de cualquier medio.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"SimpleX address or 1-time link?" = "¿Dirección SimpleX o enlace de un uso?";
|
||||
"SimpleX address or 1-time link?" = "Dirección SimpleX o enlace de un uso?";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app." = "Simplex Chat y Flux han acordado incluir servidores operados por Flux en la aplicación";
|
||||
@@ -4646,9 +4574,6 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Tap button " = "Pulsa el botón ";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Tap Create SimpleX address in the menu to create it later." = "Pulsa Crear dirección SimpleX en el menú para crearla más tarde.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Tap to activate profile." = "Pulsa sobre un perfil para activarlo.";
|
||||
|
||||
@@ -4770,7 +4695,7 @@
|
||||
"The same conditions will apply to operator(s): **%@**." = "Las mismas condiciones se aplicarán a el/los operador(es) **%@**.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"The second preset operator in the app!" = "¡Segundo operador predefinido!";
|
||||
"The second preset operator in the app!" = "El segundo operador predefinido!";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"The second tick we missed! ✅" = "¡El doble check que nos faltaba! ✅";
|
||||
@@ -4779,7 +4704,7 @@
|
||||
"The sender will NOT be notified" = "El remitente NO será notificado";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"The servers for new connections of your current chat profile **%@**." = "Lista de servidores para las conexiones nuevas del perfil **%@**.";
|
||||
"The servers for new connections of your current chat profile **%@**." = "Lista de servidores para las conexiones nuevas de tu perfil actual **%@**.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"The servers for new files of your current chat profile **%@**." = "Los servidores para archivos nuevos en tu perfil actual **%@**.";
|
||||
@@ -5355,10 +5280,7 @@
|
||||
"You already have a chat profile with the same display name. Please choose another name." = "Ya tienes un perfil con este nombre mostrado. Por favor, elige otro nombre.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"You are already connected to %@." = "Ya estás conectado con %@.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"You are already connected with %@." = "Ya estás conectado con %@.";
|
||||
"You are already connected to %@." = "Ya estás conectado a %@.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"You are already connecting to %@." = "Ya estás conectando con %@.";
|
||||
@@ -5558,9 +5480,6 @@
|
||||
/* No comment provided by engineer. */
|
||||
"You will still receive calls and notifications from muted profiles when they are active." = "Seguirás recibiendo llamadas y notificaciones de los perfiles silenciados cuando estén activos.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"You will stop receiving messages from this chat. Chat history will be preserved." = "Dejarás de recibir mensajes de este chat. El historial del chat se conserva.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"You will stop receiving messages from this group. Chat history will be preserved." = "Dejarás de recibir mensajes de este grupo. El historial del chat se conservará.";
|
||||
|
||||
|
||||
@@ -431,7 +431,7 @@
|
||||
"All data is erased when it is entered." = "Toutes les données sont effacées lorsqu'il est saisi.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"All data is kept private on your device." = "Toutes les données restent confinées dans votre appareil.";
|
||||
"All data is private to your device." = "Toutes les données restent confinées dans votre appareil.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"All group members will remain connected." = "Tous les membres du groupe resteront connectés.";
|
||||
|
||||
@@ -344,10 +344,7 @@
|
||||
"Abort changing address?" = "Címváltoztatás megszakítása??";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"About operators" = "Az üzemeltetőkről";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"About SimpleX Chat" = "SimpleX Chat névjegye";
|
||||
"About SimpleX Chat" = "A SimpleX Chatről";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"above, then choose:" = "gombra fent, majd válassza ki:";
|
||||
@@ -379,9 +376,6 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Accepted conditions" = "Elfogadott feltételek";
|
||||
|
||||
/* chat list item title */
|
||||
"accepted invitation" = "elfogadott meghívó";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Acknowledged" = "Nyugtázva";
|
||||
|
||||
@@ -479,7 +473,7 @@
|
||||
"All data is erased when it is entered." = "A jelkód megadása után az összes adat törlésre kerül.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"All data is kept private on your device." = "Az összes adat biztonságban van az eszközén.";
|
||||
"All data is private to your device." = "Az összes adat biztonságban van az eszközén.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"All group members will remain connected." = "Az összes csoporttag kapcsolatban marad.";
|
||||
@@ -885,7 +879,7 @@
|
||||
"Change" = "Változtatás";
|
||||
|
||||
/* authentication reason */
|
||||
"Change chat profiles" = "Csevegési profilok megváltoztatása";
|
||||
"Change chat profiles" = "Felhasználói profilok megváltoztatása";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Change database passphrase?" = "Adatbázis-jelmondat megváltoztatása?";
|
||||
@@ -2350,7 +2344,7 @@
|
||||
"For console" = "Konzolhoz";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"For example, if your contact receives messages via a SimpleX Chat server, your app will deliver them via a Flux server." = "Például, ha az Ön ismerőse egy SimpleX Chat-kiszolgálón keresztül fogadja az üzeneteket, az Ön alkalmazása egy Flux-kiszolgálón keresztül fogja azokat kézbesíteni.";
|
||||
"For example, if your contact receives messages via a SimpleX Chat server, your app will deliver them via a Flux server." = "Ha például az ismerőse a SimpleX Chat kiszolgálón keresztül fogadja az üzeneteket, az Ön alkalmazása a Flux egyik kiszolgálóját használja a kézbesítéshez.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"For private routing" = "A privát útválasztáshoz";
|
||||
@@ -3714,7 +3708,7 @@
|
||||
"Protect app screen" = "Alkalmazás képernyőjének védelme";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Protect IP address" = "IP-cím védelme";
|
||||
"Protect IP address" = "IP-cím védelem";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Protect your chat profiles with a password!" = "Védje meg a csevegési profiljait egy jelszóval!";
|
||||
@@ -3936,9 +3930,6 @@
|
||||
/* chat item action */
|
||||
"Reply" = "Válasz";
|
||||
|
||||
/* chat list item title */
|
||||
"requested to connect" = "kérelmezve a kapcsolódáshoz";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Required" = "Szükséges";
|
||||
|
||||
@@ -4463,9 +4454,6 @@
|
||||
/* No comment provided by engineer. */
|
||||
"SimpleX address or 1-time link?" = "SimpleX-cím vagy egyszer használható meghívó-hivatkozás?";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app." = "A SimpleX Chat és a Flux megállapodást kötött arról, hogy a Flux által üzemeltetett kiszolgálókat beépítik az alkalmazásba.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"SimpleX Chat security was audited by Trail of Bits." = "A SimpleX Chat biztonsága a Trail of Bits által lett auditálva.";
|
||||
|
||||
@@ -4764,7 +4752,7 @@
|
||||
"The profile is only shared with your contacts." = "A profilja csak az ismerőseivel kerül megosztásra.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"The same conditions will apply to operator **%@**." = "Ugyanezek a feltételek lesznek elfogadva a következő üzemeltetőre is: **%@**.";
|
||||
"The same conditions will apply to operator **%@**." = "Ugyanezek a feltételek vonatkoznak a következő üzemeltetőre is: **%@**.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"The same conditions will apply to operator(s): **%@**." = "Ugyanezek a feltételek lesznek elfogadva a következő üzemeltető(k)re is: **%@**.";
|
||||
@@ -5409,7 +5397,7 @@
|
||||
"You can configure operators in Network & servers settings." = "Az üzemeltetőket a „Hálózat és kiszolgálók” beállításaban konfigurálhatja.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"You can configure servers via settings." = "A kiszolgálókat a „Hálózat és kiszolgálók” menüben konfigurálhatja.";
|
||||
"You can configure servers via settings." = "A kiszolgálókat a beállításokon keresztül konfigurálhatja.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"You can create it later" = "Létrehozás később";
|
||||
@@ -5439,7 +5427,7 @@
|
||||
"You can set connection name, to remember who the link was shared with." = "Beállíthatja az ismerős nevét, hogy emlékezzen arra, hogy kivel osztotta meg a hivatkozást.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"You can set lock screen notification preview via settings." = "A lezárási képernyő értesítési előnézetét az „Értesítések” menüben állíthatja be.";
|
||||
"You can set lock screen notification preview via settings." = "A beállításokon keresztül beállíthatja a lezárási képernyő értesítési előnézetét.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"You can share a link or a QR code - anybody will be able to join the group. You won't lose members of the group if you later delete it." = "Megoszthat egy hivatkozást vagy QR-kódot - így bárki csatlakozhat a csoporthoz. Ha a csoport később törlésre kerül, akkor nem fogja elveszíteni annak tagjait.";
|
||||
|
||||
@@ -473,7 +473,7 @@
|
||||
"All data is erased when it is entered." = "Tutti i dati vengono cancellati quando inserito.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"All data is kept private on your device." = "Tutti i dati sono privati, nel tuo dispositivo.";
|
||||
"All data is private to your device." = "Tutti i dati sono privati, nel tuo dispositivo.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"All group members will remain connected." = "Tutti i membri del gruppo resteranno connessi.";
|
||||
@@ -689,10 +689,10 @@
|
||||
"Auto-accept" = "Accetta automaticamente";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Auto-accept contact requests" = "Auto-accetta le richieste di contatto";
|
||||
"Auto-accept contact requests" = "Auto-accetta richieste di contatto";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Auto-accept images" = "Auto-accetta le immagini";
|
||||
"Auto-accept images" = "Auto-accetta immagini";
|
||||
|
||||
/* alert title */
|
||||
"Auto-accept settings" = "Accetta automaticamente le impostazioni";
|
||||
@@ -779,7 +779,7 @@
|
||||
"Blur for better privacy." = "Sfoca per una privacy maggiore.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Blur media" = "Sfocatura dei file multimediali";
|
||||
"Blur media" = "Sfocatura file multimediali";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"bold" = "grassetto";
|
||||
@@ -3004,7 +3004,7 @@
|
||||
"Message delivery warning" = "Avviso di consegna del messaggio";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Message draft" = "Bozza del messaggio";
|
||||
"Message draft" = "Bozza dei messaggi";
|
||||
|
||||
/* item status text */
|
||||
"Message forwarded" = "Messaggio inoltrato";
|
||||
@@ -3982,10 +3982,10 @@
|
||||
"Reveal" = "Rivela";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Review conditions" = "Leggi le condizioni";
|
||||
"Review conditions" = "Esamina le condizioni";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Review later" = "Leggi più tardi";
|
||||
"Review later" = "Esamina più tardi";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Revoke" = "Revoca";
|
||||
@@ -4181,7 +4181,7 @@
|
||||
"Send errors" = "Errori di invio";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Send link previews" = "Invia le anteprime dei link";
|
||||
"Send link previews" = "Invia anteprime dei link";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Send live message" = "Invia messaggio in diretta";
|
||||
@@ -4401,7 +4401,7 @@
|
||||
"Share profile" = "Condividi il profilo";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Share SimpleX address on social media." = "Condividi l'indirizzo SimpleX sui social media.";
|
||||
"Share SimpleX address on social media." = "Condividi indirizzo SimpleX sui social media.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Share this 1-time invite link" = "Condividi questo link di invito una tantum";
|
||||
@@ -4454,9 +4454,6 @@
|
||||
/* No comment provided by engineer. */
|
||||
"SimpleX address or 1-time link?" = "Indirizzo SimpleX o link una tantum?";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app." = "SimpleX Chat e Flux hanno concluso un accordo per includere server gestiti da Flux nell'app";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"SimpleX Chat security was audited by Trail of Bits." = "La sicurezza di SimpleX Chat è stata verificata da Trail of Bits.";
|
||||
|
||||
@@ -4638,7 +4635,7 @@
|
||||
"Tap button " = "Tocca il pulsante ";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Tap Create SimpleX address in the menu to create it later." = "Tocca Crea indirizzo SimpleX nel menu per crearlo più tardi.";
|
||||
"Tap Create SimpleX address in the menu to create it later." = "Tocca \"Crea indirizzo SimpleX\" nel menu per crearlo più tardi.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Tap to activate profile." = "Tocca per attivare il profilo.";
|
||||
|
||||
@@ -343,9 +343,6 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Abort changing address?" = "Adres wijziging afbreken?";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"About operators" = "Over operatoren";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"About SimpleX Chat" = "Over SimpleX Chat";
|
||||
|
||||
@@ -379,9 +376,6 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Accepted conditions" = "Geaccepteerde voorwaarden";
|
||||
|
||||
/* chat list item title */
|
||||
"accepted invitation" = "geaccepteerde uitnodiging";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Acknowledged" = "Erkend";
|
||||
|
||||
@@ -479,7 +473,7 @@
|
||||
"All data is erased when it is entered." = "Alle gegevens worden bij het invoeren gewist.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"All data is kept private on your device." = "Alle gegevens zijn privé op uw apparaat.";
|
||||
"All data is private to your device." = "Alle gegevens zijn privé op uw apparaat.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"All group members will remain connected." = "Alle groepsleden blijven verbonden.";
|
||||
@@ -3936,9 +3930,6 @@
|
||||
/* chat item action */
|
||||
"Reply" = "Antwoord";
|
||||
|
||||
/* chat list item title */
|
||||
"requested to connect" = "gevraagd om verbinding te maken";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Required" = "Vereist";
|
||||
|
||||
|
||||
@@ -431,7 +431,7 @@
|
||||
"All data is erased when it is entered." = "Wszystkie dane są usuwane po jego wprowadzeniu.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"All data is kept private on your device." = "Wszystkie dane są prywatne na Twoim urządzeniu.";
|
||||
"All data is private to your device." = "Wszystkie dane są prywatne na Twoim urządzeniu.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"All group members will remain connected." = "Wszyscy członkowie grupy pozostaną połączeni.";
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
"**Recommended**: device token and end-to-end encrypted notifications are sent to SimpleX Chat push server, but it does not see the message content, size or who it is from." = "**Рекомендовано**: токен устройства и уведомления отправляются на сервер SimpleX Chat, но сервер не получает сами сообщения, их размер или от кого они.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"**Scan / Paste link**: to connect via a link you received." = "**Сканировать / Вставить ссылку**: чтобы соединиться через полученную ссылку.";
|
||||
"**Scan / Paste link**: to connect via a link you received." = "**Сканировать / Вставить ссылку**: чтобы соединится через полученную ссылку.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"**Warning**: Instant push notifications require passphrase saved in Keychain." = "**Внимание**: для работы мгновенных уведомлений пароль должен быть сохранен в Keychain.";
|
||||
@@ -479,7 +479,7 @@
|
||||
"All data is erased when it is entered." = "Все данные удаляются при его вводе.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"All data is kept private on your device." = "Все данные хранятся только на вашем устройстве.";
|
||||
"All data is private to your device." = "Все данные хранятся только на вашем устройстве.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"All group members will remain connected." = "Все члены группы, которые соединились через эту ссылку, останутся в группе.";
|
||||
@@ -3720,7 +3720,7 @@
|
||||
"Protect your chat profiles with a password!" = "Защитите Ваши профили чата паролем!";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Protect your IP address from the messaging relays chosen by your contacts.\nEnable in *Network & servers* settings." = "Защитите ваш IP адрес от серверов сообщений, выбранных Вашими контактами.\nВключите в настройках *Сети и серверов*.";
|
||||
"Protect your IP address from the messaging relays chosen by your contacts.\nEnable in *Network & servers* settings." = "Защитите ваш IP адрес от серверов сообщений, выбранных Вашими контактами.\nВключите в настройках *Сеть и серверы*.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Protocol timeout" = "Таймаут протокола";
|
||||
@@ -5406,7 +5406,7 @@
|
||||
"You can change it in Appearance settings." = "Вы можете изменить это в настройках Интерфейса.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"You can configure operators in Network & servers settings." = "Вы можете настроить операторов в настройках Сети и серверов.";
|
||||
"You can configure operators in Network & servers settings." = "Вы можете настроить операторов в настройках Сеть и серверы.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"You can configure servers via settings." = "Вы можете настроить серверы позже.";
|
||||
|
||||
@@ -431,7 +431,7 @@
|
||||
"All data is erased when it is entered." = "Kullanıldığında bütün veriler silinir.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"All data is kept private on your device." = "Tüm veriler cihazınıza özeldir.";
|
||||
"All data is private to your device." = "Tüm veriler cihazınıza özeldir.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"All group members will remain connected." = "Tüm grup üyeleri bağlı kalacaktır.";
|
||||
|
||||
@@ -464,7 +464,7 @@
|
||||
"All data is erased when it is entered." = "Всі дані стираються при введенні.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"All data is kept private on your device." = "Всі дані є приватними для вашого пристрою.";
|
||||
"All data is private to your device." = "Всі дані є приватними для вашого пристрою.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"All group members will remain connected." = "Всі учасники групи залишаться на зв'язку.";
|
||||
|
||||
@@ -413,7 +413,7 @@
|
||||
"All data is erased when it is entered." = "所有数据在输入后将被删除。";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"All data is kept private on your device." = "所有数据都是您设备的私有数据.";
|
||||
"All data is private to your device." = "所有数据都是您设备的私有数据.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"All group members will remain connected." = "所有群组成员将保持连接。";
|
||||
|
||||
@@ -115,6 +115,7 @@
|
||||
android:launchMode="singleInstance"
|
||||
android:supportsPictureInPicture="true"
|
||||
android:autoRemoveFromRecents="true"
|
||||
android:screenOrientation="portrait"
|
||||
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"/>
|
||||
|
||||
<provider
|
||||
|
||||
@@ -360,8 +360,6 @@ class SimplexApp: Application(), LifecycleEventObserver {
|
||||
return true
|
||||
}
|
||||
|
||||
override fun androidCreateActiveCallState(): Closeable = ActiveCallState()
|
||||
|
||||
override val androidApiLevel: Int get() = Build.VERSION.SDK_INT
|
||||
}
|
||||
}
|
||||
|
||||
+2
-6
@@ -71,12 +71,8 @@ class PostSCallAudioDeviceManager: CallAudioDeviceManagerInterface {
|
||||
}
|
||||
|
||||
override fun stop() {
|
||||
try {
|
||||
am.unregisterAudioDeviceCallback(audioCallback)
|
||||
am.removeOnCommunicationDeviceChangedListener(listener)
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, e.stackTraceToString())
|
||||
}
|
||||
am.unregisterAudioDeviceCallback(audioCallback)
|
||||
am.removeOnCommunicationDeviceChangedListener(listener)
|
||||
}
|
||||
|
||||
override fun selectLastExternalDeviceOrDefault(speaker: Boolean, keepAnyExternal: Boolean) {
|
||||
|
||||
+51
-62
@@ -6,12 +6,12 @@ import android.Manifest
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.Activity
|
||||
import android.content.*
|
||||
import android.content.pm.ActivityInfo
|
||||
import android.content.pm.PackageManager
|
||||
import android.media.*
|
||||
import android.os.Build
|
||||
import android.os.PowerManager
|
||||
import android.os.PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK
|
||||
import android.os.PowerManager.WakeLock
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.webkit.*
|
||||
@@ -23,6 +23,7 @@ import androidx.compose.foundation.shape.CircleShape
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material.*
|
||||
import androidx.compose.runtime.*
|
||||
import androidx.compose.runtime.saveable.rememberSaveable
|
||||
import androidx.compose.runtime.snapshots.SnapshotStateList
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
@@ -46,6 +47,7 @@ import chat.simplex.common.model.ChatController.appPrefs
|
||||
import chat.simplex.common.platform.*
|
||||
import chat.simplex.common.ui.theme.*
|
||||
import chat.simplex.common.views.helpers.*
|
||||
import chat.simplex.common.views.onboarding.OnboardingStage
|
||||
import chat.simplex.res.MR
|
||||
import com.google.accompanist.permissions.*
|
||||
import dev.icerock.moko.resources.StringResource
|
||||
@@ -56,7 +58,6 @@ import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
import kotlinx.coroutines.flow.filterNotNull
|
||||
import kotlinx.datetime.Clock
|
||||
import kotlinx.serialization.encodeToString
|
||||
import java.io.Closeable
|
||||
|
||||
// Should be destroy()'ed and set as null when call is ended. Otherwise, it will be a leak
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
@@ -71,62 +72,49 @@ fun activeCallDestroyWebView() = withApi {
|
||||
Log.d(TAG, "CallView: webview was destroyed")
|
||||
}
|
||||
|
||||
class ActiveCallState: Closeable {
|
||||
val proximityLock: WakeLock? = screenOffWakeLock()
|
||||
var wasConnected = false
|
||||
val callAudioDeviceManager = CallAudioDeviceManagerInterface.new()
|
||||
private var closed = false
|
||||
|
||||
init {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||
callAudioDeviceManager.start()
|
||||
}
|
||||
}
|
||||
|
||||
override fun close() {
|
||||
if (closed) return
|
||||
closed = true
|
||||
CallSoundsPlayer.stop()
|
||||
if (wasConnected) {
|
||||
CallSoundsPlayer.vibrate()
|
||||
}
|
||||
callAudioDeviceManager.stop()
|
||||
dropAudioManagerOverrides()
|
||||
if (proximityLock?.isHeld == true) {
|
||||
proximityLock.release()
|
||||
}
|
||||
}
|
||||
|
||||
private fun screenOffWakeLock(): WakeLock? {
|
||||
@SuppressLint("SourceLockedOrientationActivity")
|
||||
@Composable
|
||||
actual fun ActiveCallView() {
|
||||
val call = remember { chatModel.activeCall }.value
|
||||
val scope = rememberCoroutineScope()
|
||||
val proximityLock = remember {
|
||||
val pm = (androidAppContext.getSystemService(Context.POWER_SERVICE) as PowerManager)
|
||||
return if (pm.isWakeLockLevelSupported(PROXIMITY_SCREEN_OFF_WAKE_LOCK)) {
|
||||
if (pm.isWakeLockLevelSupported(PROXIMITY_SCREEN_OFF_WAKE_LOCK)) {
|
||||
pm.newWakeLock(PROXIMITY_SCREEN_OFF_WAKE_LOCK, androidAppContext.packageName + ":proximityLock")
|
||||
} else {
|
||||
null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@SuppressLint("SourceLockedOrientationActivity")
|
||||
@Composable
|
||||
actual fun ActiveCallView() {
|
||||
val call = remember { chatModel.activeCall }.value
|
||||
val callState = call?.androidCallState as ActiveCallState?
|
||||
val scope = rememberCoroutineScope()
|
||||
val wasConnected = rememberSaveable { mutableStateOf(false) }
|
||||
LaunchedEffect(call) {
|
||||
if (call?.callState == CallState.Connected && callState != null && !callState.wasConnected) {
|
||||
if (call?.callState == CallState.Connected && !wasConnected.value) {
|
||||
CallSoundsPlayer.vibrate(2)
|
||||
callState.wasConnected = true
|
||||
wasConnected.value = true
|
||||
}
|
||||
}
|
||||
LaunchedEffect(callState, chatModel.activeCallViewIsCollapsed.value) {
|
||||
callState ?: return@LaunchedEffect
|
||||
val callAudioDeviceManager = remember { CallAudioDeviceManagerInterface.new() }
|
||||
DisposableEffect(Unit) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||
callAudioDeviceManager.start()
|
||||
}
|
||||
onDispose {
|
||||
CallSoundsPlayer.stop()
|
||||
if (wasConnected.value) {
|
||||
CallSoundsPlayer.vibrate()
|
||||
}
|
||||
callAudioDeviceManager.stop()
|
||||
dropAudioManagerOverrides()
|
||||
if (proximityLock?.isHeld == true) {
|
||||
proximityLock.release()
|
||||
}
|
||||
}
|
||||
}
|
||||
LaunchedEffect(chatModel.activeCallViewIsCollapsed.value) {
|
||||
if (chatModel.activeCallViewIsCollapsed.value) {
|
||||
if (callState.proximityLock?.isHeld == true) callState.proximityLock.release()
|
||||
if (proximityLock?.isHeld == true) proximityLock.release()
|
||||
} else {
|
||||
delay(1000)
|
||||
if (callState.proximityLock?.isHeld == false) callState.proximityLock.acquire()
|
||||
if (proximityLock?.isHeld == false) proximityLock.acquire()
|
||||
}
|
||||
}
|
||||
Box(Modifier.fillMaxSize()) {
|
||||
@@ -134,7 +122,6 @@ actual fun ActiveCallView() {
|
||||
Log.d(TAG, "received from WebRTCView: $apiMsg")
|
||||
val call = chatModel.activeCall.value
|
||||
if (call != null) {
|
||||
val callState = call.androidCallState as ActiveCallState
|
||||
Log.d(TAG, "has active call $call")
|
||||
val callRh = call.remoteHostId
|
||||
when (val r = apiMsg.resp) {
|
||||
@@ -144,9 +131,9 @@ actual fun ActiveCallView() {
|
||||
updateActiveCall(call) { it.copy(callState = CallState.InvitationSent, localCapabilities = r.capabilities) }
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) {
|
||||
// Starting is delayed to make Android <= 11 working good with Bluetooth
|
||||
callState.callAudioDeviceManager.start()
|
||||
callAudioDeviceManager.start()
|
||||
} else {
|
||||
callState.callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.hasVideo, true)
|
||||
callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.hasVideo, true)
|
||||
}
|
||||
CallSoundsPlayer.startConnectingCallSound(scope)
|
||||
activeCallWaitDeliveryReceipt(scope)
|
||||
@@ -156,9 +143,9 @@ actual fun ActiveCallView() {
|
||||
updateActiveCall(call) { it.copy(callState = CallState.OfferSent, localCapabilities = r.capabilities) }
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) {
|
||||
// Starting is delayed to make Android <= 11 working good with Bluetooth
|
||||
callState.callAudioDeviceManager.start()
|
||||
callAudioDeviceManager.start()
|
||||
} else {
|
||||
callState.callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.hasVideo, true)
|
||||
callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.hasVideo, true)
|
||||
}
|
||||
}
|
||||
is WCallResponse.Answer -> withBGApi {
|
||||
@@ -241,14 +228,14 @@ actual fun ActiveCallView() {
|
||||
!chatModel.activeCallViewIsCollapsed.value -> true
|
||||
else -> false
|
||||
}
|
||||
if (call != null && showOverlay && callState != null) {
|
||||
ActiveCallOverlay(call, chatModel, callState.callAudioDeviceManager)
|
||||
if (call != null && showOverlay) {
|
||||
ActiveCallOverlay(call, chatModel, callAudioDeviceManager)
|
||||
}
|
||||
}
|
||||
KeyChangeEffect(callState, call?.localMediaSources?.hasVideo) {
|
||||
if (call != null && call.hasVideo && callState != null && callState.callAudioDeviceManager.currentDevice.value?.type == AudioDeviceInfo.TYPE_BUILTIN_EARPIECE) {
|
||||
KeyChangeEffect(call?.localMediaSources?.hasVideo) {
|
||||
if (call != null && call.hasVideo && callAudioDeviceManager.currentDevice.value?.type == AudioDeviceInfo.TYPE_BUILTIN_EARPIECE) {
|
||||
// enabling speaker on user action (peer action ignored) and not disabling it again
|
||||
callState.callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.hasVideo, true)
|
||||
callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.hasVideo, true)
|
||||
}
|
||||
}
|
||||
val context = LocalContext.current
|
||||
@@ -256,12 +243,16 @@ actual fun ActiveCallView() {
|
||||
val activity = context as? Activity ?: return@DisposableEffect onDispose {}
|
||||
val prevVolumeControlStream = activity.volumeControlStream
|
||||
activity.volumeControlStream = AudioManager.STREAM_VOICE_CALL
|
||||
// Lock orientation to portrait in order to have good experience with calls
|
||||
activity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
|
||||
chatModel.activeCallViewIsVisible.value = true
|
||||
// After the first call, End command gets added to the list which prevents making another calls
|
||||
chatModel.callCommand.removeAll { it is WCallCommand.End }
|
||||
keepScreenOn(true)
|
||||
onDispose {
|
||||
activity.volumeControlStream = prevVolumeControlStream
|
||||
// Unlock orientation
|
||||
activity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
|
||||
chatModel.activeCallViewIsVisible.value = false
|
||||
chatModel.callCommand.clear()
|
||||
keepScreenOn(false)
|
||||
@@ -273,8 +264,8 @@ actual fun ActiveCallView() {
|
||||
private fun ActiveCallOverlay(call: Call, chatModel: ChatModel, callAudioDeviceManager: CallAudioDeviceManagerInterface) {
|
||||
ActiveCallOverlayLayout(
|
||||
call = call,
|
||||
devices = remember(callAudioDeviceManager) { callAudioDeviceManager.devices }.value,
|
||||
currentDevice = remember(callAudioDeviceManager) { callAudioDeviceManager.currentDevice },
|
||||
devices = remember { callAudioDeviceManager.devices }.value,
|
||||
currentDevice = remember { callAudioDeviceManager.currentDevice },
|
||||
dismiss = { withBGApi { chatModel.callManager.endCall(call) } },
|
||||
toggleAudio = { chatModel.callCommand.add(WCallCommand.Media(CallMediaSource.Mic, enable = !call.localMediaSources.mic)) },
|
||||
selectDevice = { callAudioDeviceManager.selectDevice(it.id) },
|
||||
@@ -841,8 +832,7 @@ fun PreviewActiveCallOverlayVideo() {
|
||||
connectionInfo = ConnectionInfo(
|
||||
RTCIceCandidate(RTCIceCandidateType.Host, "tcp"),
|
||||
RTCIceCandidate(RTCIceCandidateType.Host, "tcp")
|
||||
),
|
||||
androidCallState = {}
|
||||
)
|
||||
),
|
||||
devices = emptyList(),
|
||||
currentDevice = remember { mutableStateOf(null) },
|
||||
@@ -851,7 +841,7 @@ fun PreviewActiveCallOverlayVideo() {
|
||||
selectDevice = {},
|
||||
toggleVideo = {},
|
||||
toggleSound = {},
|
||||
flipCamera = {},
|
||||
flipCamera = {}
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -872,8 +862,7 @@ fun PreviewActiveCallOverlayAudio() {
|
||||
connectionInfo = ConnectionInfo(
|
||||
RTCIceCandidate(RTCIceCandidateType.Host, "udp"),
|
||||
RTCIceCandidate(RTCIceCandidateType.Host, "udp")
|
||||
),
|
||||
androidCallState = {}
|
||||
)
|
||||
),
|
||||
devices = emptyList(),
|
||||
currentDevice = remember { mutableStateOf(null) },
|
||||
|
||||
@@ -71,7 +71,7 @@ if(NOT APPLE)
|
||||
else()
|
||||
# Without direct linking it can't find hs_init in linking step
|
||||
add_library( rts SHARED IMPORTED )
|
||||
FILE(GLOB RTSLIB ${CMAKE_SOURCE_DIR}/libs/${OS_LIB_PATH}-${OS_LIB_ARCH}/libHSrts*_thr-*.${OS_LIB_EXT})
|
||||
FILE(GLOB RTSLIB ${CMAKE_SOURCE_DIR}/libs/${OS_LIB_PATH}-${OS_LIB_ARCH}/deps/libHSrts*_thr-*.${OS_LIB_EXT})
|
||||
set_target_properties( rts PROPERTIES IMPORTED_LOCATION ${RTSLIB})
|
||||
|
||||
target_link_libraries(app-lib rts simplex)
|
||||
|
||||
-2
@@ -10,7 +10,6 @@ import chat.simplex.common.model.ChatId
|
||||
import chat.simplex.common.model.NotificationsMode
|
||||
import chat.simplex.common.ui.theme.CurrentColors
|
||||
import kotlinx.coroutines.Job
|
||||
import java.io.Closeable
|
||||
|
||||
interface PlatformInterface {
|
||||
suspend fun androidServiceStart() {}
|
||||
@@ -27,7 +26,6 @@ interface PlatformInterface {
|
||||
fun androidPictureInPictureAllowed(): Boolean = true
|
||||
fun androidCallEnded() {}
|
||||
fun androidRestartNetworkObserver() {}
|
||||
fun androidCreateActiveCallState(): Closeable = Closeable { }
|
||||
fun androidIsXiaomiDevice(): Boolean = false
|
||||
val androidApiLevel: Int? get() = null
|
||||
@Composable fun androidLockPortraitOrientation() {}
|
||||
|
||||
-3
@@ -43,7 +43,6 @@ class CallManager(val chatModel: ChatModel) {
|
||||
|
||||
private fun justAcceptIncomingCall(invitation: RcvCallInvitation, userProfile: Profile) {
|
||||
with (chatModel) {
|
||||
activeCall.value?.androidCallState?.close()
|
||||
activeCall.value = Call(
|
||||
remoteHostId = invitation.remoteHostId,
|
||||
userProfile = userProfile,
|
||||
@@ -52,7 +51,6 @@ class CallManager(val chatModel: ChatModel) {
|
||||
callState = CallState.InvitationAccepted,
|
||||
initialCallType = invitation.callType.media,
|
||||
sharedKey = invitation.sharedKey,
|
||||
androidCallState = platform.androidCreateActiveCallState()
|
||||
)
|
||||
showCallView.value = true
|
||||
val useRelay = controller.appPrefs.webrtcPolicyRelay.get()
|
||||
@@ -80,7 +78,6 @@ class CallManager(val chatModel: ChatModel) {
|
||||
// Don't destroy WebView if you plan to accept next call right after this one
|
||||
if (!switchingCall.value) {
|
||||
showCallView.value = false
|
||||
activeCall.value?.androidCallState?.close()
|
||||
activeCall.value = null
|
||||
activeCallViewIsCollapsed.value = false
|
||||
platform.androidCallEnded()
|
||||
|
||||
+1
-4
@@ -7,7 +7,6 @@ import chat.simplex.res.MR
|
||||
import kotlinx.datetime.Instant
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
import java.io.Closeable
|
||||
import java.net.URI
|
||||
import kotlin.collections.ArrayList
|
||||
|
||||
@@ -28,9 +27,7 @@ data class Call(
|
||||
|
||||
// When a user has audio call, and then he wants to enable camera but didn't grant permissions for using camera yet,
|
||||
// we show permissions view without enabling camera before permissions are granted. After they are granted, enabling camera
|
||||
val wantsToEnableCamera: Boolean = false,
|
||||
|
||||
val androidCallState: Closeable
|
||||
val wantsToEnableCamera: Boolean = false
|
||||
) {
|
||||
val encrypted: Boolean get() = localEncrypted && sharedKey != null
|
||||
private val localEncrypted: Boolean get() = localCapabilities?.encryption ?: false
|
||||
|
||||
+20
-48
@@ -131,14 +131,26 @@ fun ChatInfoView(
|
||||
},
|
||||
syncContactConnection = {
|
||||
withBGApi {
|
||||
syncContactConnection(chatRh, contact, connStats, force = false)
|
||||
val cStats = chatModel.controller.apiSyncContactRatchet(chatRh, contact.contactId, force = false)
|
||||
connStats.value = cStats
|
||||
if (cStats != null) {
|
||||
withChats {
|
||||
updateContactConnectionStats(chatRh, contact, cStats)
|
||||
}
|
||||
}
|
||||
close.invoke()
|
||||
}
|
||||
},
|
||||
syncContactConnectionForce = {
|
||||
showSyncConnectionForceAlert(syncConnectionForce = {
|
||||
withBGApi {
|
||||
syncContactConnection(chatRh, contact, connStats, force = true)
|
||||
val cStats = chatModel.controller.apiSyncContactRatchet(chatRh, contact.contactId, force = true)
|
||||
connStats.value = cStats
|
||||
if (cStats != null) {
|
||||
withChats {
|
||||
updateContactConnectionStats(chatRh, contact, cStats)
|
||||
}
|
||||
}
|
||||
close.invoke()
|
||||
}
|
||||
})
|
||||
@@ -177,16 +189,6 @@ fun ChatInfoView(
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun syncContactConnection(rhId: Long?, contact: Contact, connectionStats: MutableState<ConnectionStats?>, force: Boolean) {
|
||||
val cStats = chatModel.controller.apiSyncContactRatchet(rhId, contact.contactId, force = force)
|
||||
connectionStats.value = cStats
|
||||
if (cStats != null) {
|
||||
withChats {
|
||||
updateContactConnectionStats(rhId, contact, cStats)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sealed class SendReceipts {
|
||||
object Yes: SendReceipts()
|
||||
object No: SendReceipts()
|
||||
@@ -503,7 +505,7 @@ fun ChatInfoLayout(
|
||||
currentUser: User,
|
||||
sendReceipts: State<SendReceipts>,
|
||||
setSendReceipts: (SendReceipts) -> Unit,
|
||||
connStats: MutableState<ConnectionStats?>,
|
||||
connStats: State<ConnectionStats?>,
|
||||
contactNetworkStatus: NetworkStatus,
|
||||
customUserProfile: Profile?,
|
||||
localAlias: String,
|
||||
@@ -551,8 +553,8 @@ fun ChatInfoLayout(
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
SearchButton(modifier = Modifier.fillMaxWidth(0.25f), chat, contact, close, onSearchClicked)
|
||||
AudioCallButton(modifier = Modifier.fillMaxWidth(0.33f), chat, contact, connStats)
|
||||
VideoButton(modifier = Modifier.fillMaxWidth(0.5f), chat, contact, connStats)
|
||||
AudioCallButton(modifier = Modifier.fillMaxWidth(0.33f), chat, contact)
|
||||
VideoButton(modifier = Modifier.fillMaxWidth(0.5f), chat, contact)
|
||||
MuteButton(modifier = Modifier.fillMaxWidth(1f), chat, contact)
|
||||
}
|
||||
}
|
||||
@@ -823,14 +825,12 @@ fun MuteButton(
|
||||
fun AudioCallButton(
|
||||
modifier: Modifier,
|
||||
chat: Chat,
|
||||
contact: Contact,
|
||||
connectionStats: MutableState<ConnectionStats?>
|
||||
contact: Contact
|
||||
) {
|
||||
CallButton(
|
||||
modifier = modifier,
|
||||
chat,
|
||||
contact,
|
||||
connectionStats,
|
||||
icon = painterResource(MR.images.ic_call),
|
||||
title = generalGetString(MR.strings.info_view_call_button),
|
||||
mediaType = CallMediaType.Audio
|
||||
@@ -841,14 +841,12 @@ fun AudioCallButton(
|
||||
fun VideoButton(
|
||||
modifier: Modifier,
|
||||
chat: Chat,
|
||||
contact: Contact,
|
||||
connectionStats: MutableState<ConnectionStats?>
|
||||
contact: Contact
|
||||
) {
|
||||
CallButton(
|
||||
modifier = modifier,
|
||||
chat,
|
||||
contact,
|
||||
connectionStats,
|
||||
icon = painterResource(MR.images.ic_videocam),
|
||||
title = generalGetString(MR.strings.info_view_video_button),
|
||||
mediaType = CallMediaType.Video
|
||||
@@ -860,7 +858,6 @@ fun CallButton(
|
||||
modifier: Modifier,
|
||||
chat: Chat,
|
||||
contact: Contact,
|
||||
connectionStats: MutableState<ConnectionStats?>,
|
||||
icon: Painter,
|
||||
title: String,
|
||||
mediaType: CallMediaType
|
||||
@@ -882,23 +879,7 @@ fun CallButton(
|
||||
disabledLook = !canCall,
|
||||
onClick =
|
||||
when {
|
||||
canCall -> { {
|
||||
val connStats = connectionStats.value
|
||||
if (connStats != null) {
|
||||
if (connStats.ratchetSyncState == RatchetSyncState.Ok) {
|
||||
startChatCall(chat.remoteHostId, chat.chatInfo, mediaType)
|
||||
} else if (connStats.ratchetSyncAllowed) {
|
||||
showFixConnectionAlert(syncConnection = {
|
||||
withBGApi { syncContactConnection(chat.remoteHostId, contact, connectionStats, force = false) }
|
||||
})
|
||||
} else {
|
||||
AlertManager.shared.showAlertMsg(
|
||||
generalGetString(MR.strings.cant_call_contact_alert_title),
|
||||
generalGetString(MR.strings.encryption_renegotiation_in_progress)
|
||||
)
|
||||
}
|
||||
}
|
||||
} }
|
||||
canCall -> { { startChatCall(chat.remoteHostId, chat.chatInfo, mediaType) } }
|
||||
contact.nextSendGrpInv -> { { showCantCallContactSendMessageAlert() } }
|
||||
!contact.active -> { { showCantCallContactDeletedAlert() } }
|
||||
!contact.ready -> { { showCantCallContactConnectingAlert() } }
|
||||
@@ -1284,15 +1265,6 @@ fun showSyncConnectionForceAlert(syncConnectionForce: () -> Unit) {
|
||||
)
|
||||
}
|
||||
|
||||
fun showFixConnectionAlert(syncConnection: () -> Unit) {
|
||||
AlertManager.shared.showAlertDialog(
|
||||
title = generalGetString(MR.strings.sync_connection_question),
|
||||
text = generalGetString(MR.strings.sync_connection_desc),
|
||||
confirmText = generalGetString(MR.strings.sync_connection_confirm),
|
||||
onConfirm = syncConnection,
|
||||
)
|
||||
}
|
||||
|
||||
fun queueInfoText(info: Pair<RcvMsgInfo?, ServerQueueInfo>): String {
|
||||
val (rcvMsgInfo, qInfo) = info
|
||||
val msgInfo: String = if (rcvMsgInfo != null) json.encodeToString(rcvMsgInfo) else generalGetString(MR.strings.message_queue_info_none)
|
||||
|
||||
+8
-35
@@ -29,7 +29,6 @@ import androidx.compose.ui.unit.*
|
||||
import chat.simplex.common.model.*
|
||||
import chat.simplex.common.model.CIDirection.GroupRcv
|
||||
import chat.simplex.common.model.ChatController.appPrefs
|
||||
import chat.simplex.common.model.ChatModel.activeCall
|
||||
import chat.simplex.common.model.ChatModel.controller
|
||||
import chat.simplex.common.model.ChatModel.withChats
|
||||
import chat.simplex.common.ui.theme.*
|
||||
@@ -574,8 +573,7 @@ fun startChatCall(remoteHostId: Long?, chatInfo: ChatInfo, media: CallMediaType)
|
||||
if (chatInfo is ChatInfo.Direct) {
|
||||
val contactInfo = chatModel.controller.apiContactInfo(remoteHostId, chatInfo.contact.contactId)
|
||||
val profile = contactInfo?.second ?: chatModel.currentUser.value?.profile?.toProfile() ?: return@withBGApi
|
||||
activeCall.value?.androidCallState?.close()
|
||||
chatModel.activeCall.value = Call(remoteHostId = remoteHostId, contact = chatInfo.contact, callUUID = null, callState = CallState.WaitCapabilities, initialCallType = media, userProfile = profile, androidCallState = platform.androidCreateActiveCallState())
|
||||
chatModel.activeCall.value = Call(remoteHostId = remoteHostId, contact = chatInfo.contact, callUUID = null, callState = CallState.WaitCapabilities, initialCallType = media, userProfile = profile)
|
||||
chatModel.showCallView.value = true
|
||||
chatModel.callCommand.add(WCallCommand.Capabilities(media))
|
||||
}
|
||||
@@ -984,7 +982,6 @@ fun BoxScope.ChatItemsList(
|
||||
})
|
||||
val maxHeight = remember { derivedStateOf { listState.value.layoutInfo.viewportEndOffset - topPaddingToContentPx.value } }
|
||||
val loadingMoreItems = remember { mutableStateOf(false) }
|
||||
val animatedScrollingInProgress = remember { mutableStateOf(false) }
|
||||
val ignoreLoadingRequests = remember(remoteHostId) { mutableSetOf<Long>() }
|
||||
if (!loadingMoreItems.value) {
|
||||
PreloadItems(chatInfo.id, if (searchValueIsEmpty.value) ignoreLoadingRequests else mutableSetOf(), mergedItems, listState, ChatPagination.UNTIL_PRELOAD_COUNT) { chatId, pagination ->
|
||||
@@ -1005,7 +1002,7 @@ fun BoxScope.ChatItemsList(
|
||||
val chatInfoUpdated = rememberUpdatedState(chatInfo)
|
||||
val highlightedItems = remember { mutableStateOf(setOf<Long>()) }
|
||||
val scope = rememberCoroutineScope()
|
||||
val scrollToItem: (Long) -> Unit = remember { scrollToItem(searchValue, loadingMoreItems, animatedScrollingInProgress, highlightedItems, chatInfoUpdated, maxHeight, scope, reversedChatItems, mergedItems, listState, loadMessages) }
|
||||
val scrollToItem: (Long) -> Unit = remember { scrollToItem(searchValue, loadingMoreItems, highlightedItems, chatInfoUpdated, maxHeight, scope, reversedChatItems, mergedItems, listState, loadMessages) }
|
||||
val scrollToQuotedItemFromItem: (Long) -> Unit = remember { findQuotedItemFromItem(remoteHostIdUpdated, chatInfoUpdated, scope, scrollToItem) }
|
||||
|
||||
LoadLastItems(loadingMoreItems, remoteHostId, chatInfo)
|
||||
@@ -1315,7 +1312,7 @@ fun BoxScope.ChatItemsList(
|
||||
}
|
||||
}
|
||||
}
|
||||
FloatingButtons(loadingMoreItems, animatedScrollingInProgress, mergedItems, unreadCount, maxHeight, composeViewHeight, searchValue, markChatRead, listState)
|
||||
FloatingButtons(loadingMoreItems, mergedItems, unreadCount, maxHeight, composeViewHeight, searchValue, markChatRead, listState)
|
||||
FloatingDate(Modifier.padding(top = 10.dp + topPaddingToContent(true)).align(Alignment.TopCenter), mergedItems, listState)
|
||||
|
||||
LaunchedEffect(Unit) {
|
||||
@@ -1324,15 +1321,6 @@ fun BoxScope.ChatItemsList(
|
||||
chatViewScrollState.value = it
|
||||
}
|
||||
}
|
||||
LaunchedEffect(Unit) {
|
||||
snapshotFlow { listState.value.isScrollInProgress }
|
||||
.filter { !it }
|
||||
.collect {
|
||||
if (animatedScrollingInProgress.value) {
|
||||
animatedScrollingInProgress.value = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
@@ -1410,7 +1398,6 @@ private fun NotifyChatListOnFinishingComposition(
|
||||
@Composable
|
||||
fun BoxScope.FloatingButtons(
|
||||
loadingMoreItems: MutableState<Boolean>,
|
||||
animatedScrollingInProgress: MutableState<Boolean>,
|
||||
mergedItems: State<MergedItems>,
|
||||
unreadCount: State<Int>,
|
||||
maxHeight: State<Int>,
|
||||
@@ -1450,14 +1437,8 @@ fun BoxScope.FloatingButtons(
|
||||
bottomUnreadCount,
|
||||
showBottomButtonWithCounter,
|
||||
showBottomButtonWithArrow,
|
||||
animatedScrollingInProgress,
|
||||
composeViewHeight,
|
||||
onClick = {
|
||||
scope.launch {
|
||||
animatedScrollingInProgress.value = true
|
||||
tryBlockAndSetLoadingMore(loadingMoreItems) { listState.value.animateScrollToItem(0) }
|
||||
}
|
||||
}
|
||||
onClick = { scope.launch { tryBlockAndSetLoadingMore(loadingMoreItems) { listState.value.animateScrollToItem(0) } } }
|
||||
)
|
||||
// Don't show top FAB if is in search
|
||||
if (searchValue.value.isNotEmpty()) return
|
||||
@@ -1468,15 +1449,11 @@ fun BoxScope.FloatingButtons(
|
||||
TopEndFloatingButton(
|
||||
Modifier.padding(end = DEFAULT_PADDING, top = 24.dp + topPaddingToContent(true)).align(Alignment.TopEnd),
|
||||
topUnreadCount,
|
||||
animatedScrollingInProgress,
|
||||
onClick = {
|
||||
val index = mergedItems.value.items.indexOfLast { it.hasUnread() }
|
||||
if (index != -1) {
|
||||
// scroll to the top unread item
|
||||
scope.launch {
|
||||
animatedScrollingInProgress.value = true
|
||||
tryBlockAndSetLoadingMore(loadingMoreItems) { listState.value.animateScrollToItem(index + 1, -maxHeight.value) }
|
||||
}
|
||||
scope.launch { tryBlockAndSetLoadingMore(loadingMoreItems) { listState.value.animateScrollToItem(index + 1, -maxHeight.value) } }
|
||||
}
|
||||
},
|
||||
onLongClick = { showDropDown.value = true }
|
||||
@@ -1616,11 +1593,10 @@ fun MemberImage(member: GroupMember) {
|
||||
private fun TopEndFloatingButton(
|
||||
modifier: Modifier = Modifier,
|
||||
unreadCount: State<Int>,
|
||||
animatedScrollingInProgress: State<Boolean>,
|
||||
onClick: () -> Unit,
|
||||
onLongClick: () -> Unit
|
||||
) {
|
||||
if (remember { derivedStateOf { unreadCount.value > 0 && !animatedScrollingInProgress.value } }.value) {
|
||||
if (unreadCount.value > 0) {
|
||||
val interactionSource = interactionSourceWithDetection(onClick, onLongClick)
|
||||
FloatingActionButton(
|
||||
{}, // no action here
|
||||
@@ -1861,7 +1837,6 @@ private fun lastFullyVisibleIemInListState(topPaddingToContentPx: State<Int>, de
|
||||
private fun scrollToItem(
|
||||
searchValue: State<String>,
|
||||
loadingMoreItems: MutableState<Boolean>,
|
||||
animatedScrollingInProgress: MutableState<Boolean>,
|
||||
highlightedItems: MutableState<Set<Long>>,
|
||||
chatInfo: State<ChatInfo>,
|
||||
maxHeight: State<Int>,
|
||||
@@ -1899,7 +1874,6 @@ private fun scrollToItem(
|
||||
highlightedItems.value = setOf(itemId)
|
||||
} else {
|
||||
withContext(scope.coroutineContext) {
|
||||
animatedScrollingInProgress.value = true
|
||||
listState.value.animateScrollToItem(min(reversedChatItems.value.lastIndex, index + 1), -maxHeight.value)
|
||||
highlightedItems.value = setOf(itemId)
|
||||
}
|
||||
@@ -1961,11 +1935,10 @@ private fun BoxScope.BottomEndFloatingButton(
|
||||
unreadCount: State<Int>,
|
||||
showButtonWithCounter: State<Boolean>,
|
||||
showButtonWithArrow: State<Boolean>,
|
||||
animatedScrollingInProgress: State<Boolean>,
|
||||
composeViewHeight: State<Dp>,
|
||||
onClick: () -> Unit
|
||||
) = when {
|
||||
showButtonWithCounter.value && !animatedScrollingInProgress.value -> {
|
||||
showButtonWithCounter.value -> {
|
||||
FloatingActionButton(
|
||||
onClick = onClick,
|
||||
elevation = FloatingActionButtonDefaults.elevation(0.dp, 0.dp, 0.dp, 0.dp),
|
||||
@@ -1979,7 +1952,7 @@ private fun BoxScope.BottomEndFloatingButton(
|
||||
)
|
||||
}
|
||||
}
|
||||
showButtonWithArrow.value && !animatedScrollingInProgress.value -> {
|
||||
showButtonWithArrow.value -> {
|
||||
FloatingActionButton(
|
||||
onClick = onClick,
|
||||
elevation = FloatingActionButtonDefaults.elevation(0.dp, 0.dp, 0.dp, 0.dp),
|
||||
|
||||
+25
-49
@@ -8,6 +8,8 @@ import SectionSpacer
|
||||
import SectionTextFooter
|
||||
import SectionView
|
||||
import androidx.compose.desktop.ui.tooling.preview.Preview
|
||||
import java.net.URI
|
||||
import androidx.compose.foundation.*
|
||||
import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.foundation.text.InlineTextContent
|
||||
import androidx.compose.foundation.text.appendInlineContent
|
||||
@@ -56,19 +58,6 @@ fun GroupMemberInfoView(
|
||||
val developerTools = chatModel.controller.appPrefs.developerTools.get()
|
||||
var progressIndicator by remember { mutableStateOf(false) }
|
||||
|
||||
fun syncMemberConnection() {
|
||||
withBGApi {
|
||||
val r = chatModel.controller.apiSyncGroupMemberRatchet(rhId, groupInfo.apiId, member.groupMemberId, force = false)
|
||||
if (r != null) {
|
||||
connStats.value = r.second
|
||||
withChats {
|
||||
updateGroupMemberConnectionStats(rhId, groupInfo, r.first, r.second)
|
||||
}
|
||||
close.invoke()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (chat != null) {
|
||||
val newRole = remember { mutableStateOf(member.memberRole) }
|
||||
GroupMemberInfoLayout(
|
||||
@@ -89,30 +78,19 @@ fun GroupMemberInfoView(
|
||||
}
|
||||
},
|
||||
createMemberContact = {
|
||||
if (connectionStats != null) {
|
||||
if (connectionStats.ratchetSyncState == RatchetSyncState.Ok) {
|
||||
withBGApi {
|
||||
progressIndicator = true
|
||||
val memberContact = chatModel.controller.apiCreateMemberContact(rhId, groupInfo.apiId, member.groupMemberId)
|
||||
if (memberContact != null) {
|
||||
val memberChat = Chat(remoteHostId = rhId, ChatInfo.Direct(memberContact), chatItems = arrayListOf())
|
||||
withChats {
|
||||
addChat(memberChat)
|
||||
openLoadedChat(memberChat)
|
||||
}
|
||||
closeAll()
|
||||
chatModel.setContactNetworkStatus(memberContact, NetworkStatus.Connected())
|
||||
}
|
||||
progressIndicator = false
|
||||
withBGApi {
|
||||
progressIndicator = true
|
||||
val memberContact = chatModel.controller.apiCreateMemberContact(rhId, groupInfo.apiId, member.groupMemberId)
|
||||
if (memberContact != null) {
|
||||
val memberChat = Chat(remoteHostId = rhId, ChatInfo.Direct(memberContact), chatItems = arrayListOf())
|
||||
withChats {
|
||||
addChat(memberChat)
|
||||
openLoadedChat(memberChat)
|
||||
}
|
||||
} else if (connectionStats.ratchetSyncAllowed) {
|
||||
showFixConnectionAlert(syncConnection = { syncMemberConnection() })
|
||||
} else {
|
||||
AlertManager.shared.showAlertMsg(
|
||||
generalGetString(MR.strings.cant_send_message_to_member_alert_title),
|
||||
generalGetString(MR.strings.encryption_renegotiation_in_progress)
|
||||
)
|
||||
closeAll()
|
||||
chatModel.setContactNetworkStatus(memberContact, NetworkStatus.Connected())
|
||||
}
|
||||
progressIndicator = false
|
||||
}
|
||||
},
|
||||
connectViaAddress = { connReqUri ->
|
||||
@@ -171,7 +149,16 @@ fun GroupMemberInfoView(
|
||||
})
|
||||
},
|
||||
syncMemberConnection = {
|
||||
syncMemberConnection()
|
||||
withBGApi {
|
||||
val r = chatModel.controller.apiSyncGroupMemberRatchet(rhId, groupInfo.apiId, member.groupMemberId, force = false)
|
||||
if (r != null) {
|
||||
connStats.value = r.second
|
||||
withChats {
|
||||
updateGroupMemberConnectionStats(rhId, groupInfo, r.first, r.second)
|
||||
}
|
||||
close.invoke()
|
||||
}
|
||||
}
|
||||
},
|
||||
syncMemberConnectionForce = {
|
||||
showSyncConnectionForceAlert(syncConnectionForce = {
|
||||
@@ -348,20 +335,9 @@ fun GroupMemberInfoLayout(
|
||||
val knownChat = if (contactId != null) knownDirectChat(contactId) else null
|
||||
if (knownChat != null) {
|
||||
val (chat, contact) = knownChat
|
||||
val knownContactConnectionStats: MutableState<ConnectionStats?> = remember { mutableStateOf(null) }
|
||||
|
||||
LaunchedEffect(contact.contactId) {
|
||||
withBGApi {
|
||||
val contactInfo = chatModel.controller.apiContactInfo(chat.remoteHostId, chat.chatInfo.apiId)
|
||||
if (contactInfo != null) {
|
||||
knownContactConnectionStats.value = contactInfo.first
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
OpenChatButton(modifier = Modifier.fillMaxWidth(0.33f), onClick = { openDirectChat(contact.contactId) })
|
||||
AudioCallButton(modifier = Modifier.fillMaxWidth(0.5f), chat, contact, knownContactConnectionStats)
|
||||
VideoButton(modifier = Modifier.fillMaxWidth(1f), chat, contact, knownContactConnectionStats)
|
||||
AudioCallButton(modifier = Modifier.fillMaxWidth(0.5f), chat, contact)
|
||||
VideoButton(modifier = Modifier.fillMaxWidth(1f), chat, contact)
|
||||
} else if (groupInfo.fullGroupPreferences.directMessages.on(groupInfo.membership)) {
|
||||
if (contactId != null) {
|
||||
OpenChatButton(modifier = Modifier.fillMaxWidth(0.33f), onClick = { openDirectChat(contactId) }) // legacy - only relevant for direct contacts created when joining group
|
||||
|
||||
+7
-8
@@ -14,8 +14,10 @@ import androidx.compose.runtime.*
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.text.AnnotatedString
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import chat.simplex.common.model.*
|
||||
import chat.simplex.common.model.ChatController.appPrefs
|
||||
import chat.simplex.common.platform.*
|
||||
@@ -53,7 +55,7 @@ fun ModalData.ChooseServerOperators(
|
||||
Column(Modifier.fillMaxWidth().padding(horizontal = DEFAULT_PADDING), horizontalAlignment = Alignment.CenterHorizontally) {
|
||||
OnboardingInformationButton(
|
||||
stringResource(MR.strings.how_it_helps_privacy),
|
||||
onClick = { modalManager.showModal { ChooseServerOperatorsInfoView(modalManager) } }
|
||||
onClick = { modalManager.showModal { ChooseServerOperatorsInfoView() } }
|
||||
)
|
||||
}
|
||||
|
||||
@@ -344,9 +346,7 @@ private fun enabledOperators(operators: List<ServerOperator>, selectedOperatorId
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun ChooseServerOperatorsInfoView(
|
||||
modalManager: ModalManager
|
||||
) {
|
||||
private fun ChooseServerOperatorsInfoView() {
|
||||
ColumnWithScrollBar {
|
||||
AppBarTitle(stringResource(MR.strings.onboarding_network_operators))
|
||||
|
||||
@@ -362,7 +362,7 @@ private fun ChooseServerOperatorsInfoView(
|
||||
|
||||
SectionView(title = stringResource(MR.strings.onboarding_network_about_operators).uppercase()) {
|
||||
chatModel.conditions.value.serverOperators.forEach { op ->
|
||||
ServerOperatorRow(op, modalManager)
|
||||
ServerOperatorRow(op)
|
||||
}
|
||||
}
|
||||
SectionBottomSpacer()
|
||||
@@ -371,12 +371,11 @@ private fun ChooseServerOperatorsInfoView(
|
||||
|
||||
@Composable()
|
||||
private fun ServerOperatorRow(
|
||||
operator: ServerOperator,
|
||||
modalManager: ModalManager
|
||||
operator: ServerOperator
|
||||
) {
|
||||
SectionItemView(
|
||||
{
|
||||
modalManager.showModalCloseable { close ->
|
||||
ModalManager.start.showModalCloseable { close ->
|
||||
OperatorInfoView(operator)
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -524,10 +524,6 @@
|
||||
<string name="sync_connection_force_question">Renegotiate encryption?</string>
|
||||
<string name="sync_connection_force_desc">The encryption is working and the new encryption agreement is not required. It may result in connection errors!</string>
|
||||
<string name="sync_connection_force_confirm">Renegotiate</string>
|
||||
<string name="sync_connection_question">Fix connection?</string>
|
||||
<string name="sync_connection_desc">Connection requires encryption renegotiation.</string>
|
||||
<string name="sync_connection_confirm">Fix</string>
|
||||
<string name="encryption_renegotiation_in_progress">Encryption renegotiation in progress.</string>
|
||||
<string name="view_security_code">View security code</string>
|
||||
<string name="verify_security_code">Verify security code</string>
|
||||
|
||||
@@ -1756,6 +1752,7 @@
|
||||
<string name="operator_same_conditions_will_be_applied"><![CDATA[The same conditions will apply to operator <b>%s</b>.]]></string>
|
||||
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[The same conditions will apply to operator(s): <b>%s</b>.]]></string>
|
||||
<string name="operator_conditions_will_be_applied"><![CDATA[These conditions will also apply for: <b>%s</b>.]]></string>
|
||||
<string name="operator_same_conditions_will_be_applied"><![CDATA[The same conditions will apply to operator: <b>%s</b>.]]></string>
|
||||
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[Conditions will be accepted for operator(s): <b>%s</b>.]]></string>
|
||||
<string name="operators_conditions_will_also_apply"><![CDATA[These conditions will also apply for: <b>%s</b>.]]></string>
|
||||
<string name="view_conditions">View conditions</string>
|
||||
@@ -2406,7 +2403,7 @@
|
||||
<string name="servers_info_messages_sent">Messages sent</string>
|
||||
<string name="servers_info_messages_received">Messages received</string>
|
||||
<string name="servers_info_details">Details</string>
|
||||
<string name="servers_info_private_data_disclaimer">Starting from %s.\nAll data is kept private on your device..</string>
|
||||
<string name="servers_info_private_data_disclaimer">Starting from %s.\nAll data is private to your device.</string>
|
||||
<string name="servers_info_subscriptions_section_header">Message reception</string>
|
||||
<string name="servers_info_subscriptions_connections_subscribed">Active connections</string>
|
||||
<string name="servers_info_subscriptions_connections_pending">Pending</string>
|
||||
|
||||
@@ -1860,7 +1860,7 @@
|
||||
<string name="smp_servers_configured">Nastavené SMP servery</string>
|
||||
<string name="servers_info_subscriptions_connections_pending">Probíhá</string>
|
||||
<string name="chunks_uploaded">Části nahrány</string>
|
||||
<string name="n_file_errors">%1$d chyba souboru(ů):\n%2$s</string>
|
||||
<string name="n_file_errors">%1$d chuba souboru(ů):\n%2$s</string>
|
||||
<string name="n_other_file_errors">%1$d jiná chyba souboru(ů).</string>
|
||||
<string name="error_forwarding_messages">Chyba přeposílaní zpráv</string>
|
||||
<string name="srv_error_host">Adresa serveru není kompatibilní s nastavením sítě.</string>
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
<string name="sender_cancelled_file_transfer">Der Absender hat die Dateiübertragung abgebrochen.</string>
|
||||
<string name="error_receiving_file">Fehler beim Empfangen der Datei</string>
|
||||
<string name="error_creating_address">Fehler beim Erstellen der Adresse</string>
|
||||
<string name="contact_already_exists">Kontakt besteht bereits</string>
|
||||
<string name="contact_already_exists">Kontakt ist bereits vorhanden</string>
|
||||
<string name="you_are_already_connected_to_vName_via_this_link">Sie sind bereits mit %1$s verbunden.</string>
|
||||
<string name="invalid_connection_link">Ungültiger Verbindungslink</string>
|
||||
<string name="please_check_correct_link_and_maybe_ask_for_a_new_one">Überprüfen Sie bitte, ob Sie den richtigen Link genutzt haben, oder bitten Sie Ihren Kontakt darum, Ihnen nochmal einen Link zuzusenden.</string>
|
||||
@@ -88,9 +88,9 @@
|
||||
<string name="icon_descr_instant_notifications">Sofortige Benachrichtigungen</string>
|
||||
<string name="service_notifications">Sofortige Benachrichtigungen!</string>
|
||||
<string name="service_notifications_disabled">Sofortige Benachrichtigungen sind deaktiviert!</string>
|
||||
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Um Ihre Privatsphäre zu schützen, <b>läuft SimpleX im Hintergrund ab</b>, anstatt Push-Benachrichtigungen zu nutzen.]]></string>
|
||||
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Um Ihre Privatsphäre zu schützen, kann statt der Push-Benachrichtigung der <b>SimpleX-Hintergrunddienst genutzt werden</b> – dieser benötigt ein paar Prozent Akkuleistung am Tag.]]></string>
|
||||
<string name="it_can_disabled_via_settings_notifications_still_shown"><![CDATA[<b>Diese können über die Einstellungen deaktiviert werden</b> – solange die App läuft, werden Benachrichtigungen weiterhin angezeigt.]]></string>
|
||||
<string name="turn_off_battery_optimization"><![CDATA[Um Benachrichtigungen sofort zu erhalten, <b>Erlauben Sie es</b> im nächsten Dialog.]]></string>
|
||||
<string name="turn_off_battery_optimization"><![CDATA[Um diese Funktion zu nutzen, wählen Sie im nächsten Dialog bitte die Einstellung <b>Erlauben Sie SimpleX im Hintergrund abzulaufen</b>. Ansonsten werden die Benachrichtigungen deaktiviert.]]></string>
|
||||
<string name="turning_off_service_and_periodic">Die Akkuoptimierung ist aktiv, der Hintergrunddienst und die periodische Nachfrage nach neuen Nachrichten ist abgeschaltet. Sie können diese Funktion in den Einstellungen wieder aktivieren.</string>
|
||||
<string name="periodic_notifications">Periodische Benachrichtigungen</string>
|
||||
<string name="periodic_notifications_disabled">Periodische Benachrichtigungen sind deaktiviert!</string>
|
||||
@@ -462,7 +462,7 @@
|
||||
<string name="callstate_connected">Verbunden</string>
|
||||
<string name="callstate_ended">Beendet</string>
|
||||
<!-- SimpleXInfo -->
|
||||
<string name="next_generation_of_private_messaging">Die Zukunft des Messagings</string>
|
||||
<string name="next_generation_of_private_messaging">Die nächste Generation \ndes privaten Messagings</string>
|
||||
<string name="privacy_redefined">Datenschutz neu definiert</string>
|
||||
<string name="first_platform_without_user_ids">Keine Benutzerkennungen.</string>
|
||||
<string name="immune_to_spam_and_abuse">Immun gegen Spam</string>
|
||||
@@ -474,8 +474,8 @@
|
||||
<string name="how_it_works">Wie es funktioniert</string>
|
||||
<!-- How SimpleX Works -->
|
||||
<string name="how_simplex_works">Wie SimpleX funktioniert</string>
|
||||
<string name="to_protect_privacy_simplex_has_ids_for_queues">SimpleX nutzt individuelle Kennungen für jeden Ihrer Kontakte, um Ihre Privatsphäre zu schützen.</string>
|
||||
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages">Nur die Endgeräte speichern Benutzerprofile, Kontakte, Gruppen und Nachrichten.</string>
|
||||
<string name="to_protect_privacy_simplex_has_ids_for_queues">Zum Schutz Ihrer Privatsphäre verwendet SimpleX anstelle von Benutzerkennungen, die von allen anderen Plattformen verwendet werden, Kennungen für Nachrichtenwarteschlangen, die für jeden Ihrer Kontakte individuell sind.</string>
|
||||
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages"><![CDATA[Nur die Endgeräte speichern die Benutzerprofile, Kontakte, Gruppen und Nachrichten, welche über eine <b>zweischichtige Ende-zu-Ende-Verschlüsselung</b> gesendet werden.]]></string>
|
||||
<string name="read_more_in_github_with_link"><![CDATA[Erfahren Sie in unserem <font color="#0088ff">GitHub-Repository</font> mehr dazu.]]></string>
|
||||
<!-- MakeConnection -->
|
||||
<string name="paste_the_link_you_received">Fügen Sie den erhaltenen Link ein</string>
|
||||
@@ -683,7 +683,7 @@
|
||||
<string name="alert_title_group_invitation_expired">Die Einladung ist abgelaufen!</string>
|
||||
<string name="alert_message_group_invitation_expired">Die Gruppeneinladung ist nicht mehr gültig, da sie vom Absender entfernt wurde.</string>
|
||||
<string name="alert_title_no_group">Die Gruppe wurde nicht gefunden!</string>
|
||||
<string name="alert_message_no_group">Diese Gruppe ist nicht mehr vorhanden.</string>
|
||||
<string name="alert_message_no_group">Diese Gruppe existiert nicht mehr.</string>
|
||||
<string name="alert_title_cant_invite_contacts">Kontakte können nicht eingeladen werden!</string>
|
||||
<string name="alert_title_cant_invite_contacts_descr">Sie verwenden ein Inkognito-Profil für diese Gruppe. Um zu verhindern, dass Sie Ihr Hauptprofil teilen, ist in diesem Fall das Einladen von Kontakten nicht erlaubt.</string>
|
||||
<!-- CIGroupInvitationView.kt -->
|
||||
@@ -781,8 +781,8 @@
|
||||
<string name="change_verb">Ändern</string>
|
||||
<string name="switch_verb">Wechseln</string>
|
||||
<string name="change_member_role_question">Die Mitgliederrolle ändern?</string>
|
||||
<string name="member_role_will_be_changed_with_notification">Die Rolle wird auf %s geändert. Alle Mitglieder der Gruppe werden benachrichtigt.</string>
|
||||
<string name="member_role_will_be_changed_with_invitation">Die Rolle wird auf %s geändert. Das Mitglied wird eine neue Einladung erhalten.</string>
|
||||
<string name="member_role_will_be_changed_with_notification">Die Mitgliederrolle wird auf "%s" geändert. Alle Mitglieder der Gruppe werden benachrichtigt.</string>
|
||||
<string name="member_role_will_be_changed_with_invitation">Die Mitgliederrolle wird auf "%s" geändert. Das Mitglied wird eine neue Einladung erhalten.</string>
|
||||
<string name="error_removing_member">Fehler beim Entfernen des Mitglieds</string>
|
||||
<string name="error_changing_role">Fehler beim Ändern der Rolle</string>
|
||||
<string name="info_row_group">Gruppe</string>
|
||||
@@ -872,12 +872,12 @@
|
||||
<string name="prohibit_message_deletion">Unwiederbringliches Löschen von Nachrichten nicht erlauben.</string>
|
||||
<string name="allow_to_send_voice">Das Senden von Sprachnachrichten erlauben.</string>
|
||||
<string name="prohibit_sending_voice">Das Senden von Sprachnachrichten nicht erlauben.</string>
|
||||
<string name="group_members_can_send_dms">Mitglieder können Direktnachrichten versenden.</string>
|
||||
<string name="group_members_can_send_dms">Gruppenmitglieder können Direktnachrichten versenden.</string>
|
||||
<string name="direct_messages_are_prohibited_in_group">In dieser Gruppe sind Direktnachrichten zwischen Mitgliedern nicht erlaubt.</string>
|
||||
<string name="group_members_can_delete">Mitglieder können gesendete Nachrichten unwiederbringlich löschen (bis zu 24 Stunden).</string>
|
||||
<string name="message_deletion_prohibited_in_chat">Das unwiederbringliche Löschen von Nachrichten ist nicht erlaubt.</string>
|
||||
<string name="group_members_can_send_voice">Mitglieder können Sprachnachrichten versenden.</string>
|
||||
<string name="voice_messages_are_prohibited">Sprachnachrichten sind nicht erlaubt.</string>
|
||||
<string name="group_members_can_delete">Gruppenmitglieder können gesendete Nachrichten unwiederbringlich löschen (bis zu 24 Stunden).</string>
|
||||
<string name="message_deletion_prohibited_in_chat">In dieser Gruppe ist das unwiederbringliche Löschen von Nachrichten nicht erlaubt.</string>
|
||||
<string name="group_members_can_send_voice">Gruppenmitglieder können Sprachnachrichten versenden.</string>
|
||||
<string name="voice_messages_are_prohibited">In dieser Gruppe sind Sprachnachrichten nicht erlaubt.</string>
|
||||
<string name="live">LIVE</string>
|
||||
<string name="view_security_code">Schauen Sie sich den Sicherheitscode an</string>
|
||||
<string name="onboarding_notifications_mode_service">Sofort</string>
|
||||
@@ -887,7 +887,7 @@
|
||||
<string name="is_verified">%s wurde erfolgreich überprüft</string>
|
||||
<string name="clear_verification">Verifikation zurücknehmen</string>
|
||||
<string name="onboarding_notifications_mode_off">Solange die App abläuft</string>
|
||||
<string name="onboarding_notifications_mode_subtitle">Auswirkung auf den Akku</string>
|
||||
<string name="onboarding_notifications_mode_subtitle">Kann später über die Einstellungen geändert werden.</string>
|
||||
<string name="delete_after">Löschen nach</string>
|
||||
<string name="ttl_hour">%d Stunde</string>
|
||||
<string name="ttl_hours">%d Stunden</string>
|
||||
@@ -922,8 +922,8 @@
|
||||
<string name="create_group_link">Gruppenlink erstellen</string>
|
||||
<string name="allow_your_contacts_to_send_disappearing_messages">Erlauben Sie Ihren Kontakten das Senden von verschwindenden Nachrichten.</string>
|
||||
<string name="prohibit_sending_disappearing_messages">Das Senden von verschwindenden Nachrichten nicht erlauben.</string>
|
||||
<string name="disappearing_messages_are_prohibited">Verschwindende Nachrichten sind nicht erlaubt.</string>
|
||||
<string name="group_members_can_send_disappearing">Mitglieder können verschwindende Nachrichten senden.</string>
|
||||
<string name="disappearing_messages_are_prohibited">In dieser Gruppe sind verschwindende Nachrichten nicht erlaubt.</string>
|
||||
<string name="group_members_can_send_disappearing">Gruppenmitglieder können verschwindende Nachrichten senden.</string>
|
||||
<string name="v4_3_improved_server_configuration_desc">Fügen Sie Server durch Scannen der QR-Codes hinzu.</string>
|
||||
<string name="v4_4_disappearing_messages">Verschwindende Nachrichten</string>
|
||||
<string name="accept_feature">Übernehmen</string>
|
||||
@@ -978,7 +978,7 @@
|
||||
<string name="users_delete_profile_for">Chat-Profil löschen für</string>
|
||||
<string name="network_option_ping_count">PING-Zähler</string>
|
||||
<string name="update_network_session_mode_question">Transport-Isolations-Modus aktualisieren\?</string>
|
||||
<string name="smp_servers_per_user">Nachrichten-Server für neue Verbindungen über Ihr aktuelles Chat-Profil</string>
|
||||
<string name="smp_servers_per_user">Mögliche Server für neue Verbindungen über Ihr aktuelles Chat-Profil</string>
|
||||
<string name="files_and_media_section">Dateien & Medien</string>
|
||||
<string name="network_session_mode_transport_isolation">Transport-Isolation</string>
|
||||
<string name="users_delete_question">Chat-Profil löschen\?</string>
|
||||
@@ -1248,7 +1248,7 @@
|
||||
<string name="if_you_enter_passcode_data_removed">Wenn Sie diesen Zugangscode während des Öffnens der App eingeben, werden alle App-Daten unwiederbringlich gelöscht!</string>
|
||||
<string name="self_destruct_passcode">Selbstzerstörungs-Zugangscode</string>
|
||||
<string name="set_passcode">Zugangscode einstellen</string>
|
||||
<string name="message_reactions_are_prohibited">Reaktionen auf Nachrichten sind nicht erlaubt.</string>
|
||||
<string name="message_reactions_are_prohibited">In dieser Gruppe sind Reaktionen auf Nachrichten nicht erlaubt.</string>
|
||||
<string name="error_loading_details">Fehler beim Laden von Details</string>
|
||||
<string name="received_message">Empfangene Nachricht</string>
|
||||
<string name="info_menu">Information</string>
|
||||
@@ -1279,7 +1279,7 @@
|
||||
<string name="only_your_contact_can_add_message_reactions">Nur Ihr Kontakt kann Reaktionen auf Nachrichten geben.</string>
|
||||
<string name="allow_message_reactions">Reaktionen auf Nachrichten erlauben.</string>
|
||||
<string name="prohibit_message_reactions_group">Reaktionen auf Nachrichten nicht erlauben.</string>
|
||||
<string name="group_members_can_add_message_reactions">Mitglieder können eine Reaktion auf Nachrichten geben.</string>
|
||||
<string name="group_members_can_add_message_reactions">Gruppenmitglieder können eine Reaktion auf Nachrichten geben.</string>
|
||||
<string name="whats_new_read_more">Mehr erfahren</string>
|
||||
<string name="v5_1_message_reactions_descr">Endlich haben wir sie! 🚀</string>
|
||||
<string name="v5_1_message_reactions">Reaktionen auf Nachrichten</string>
|
||||
@@ -1294,7 +1294,9 @@
|
||||
<string name="v5_1_custom_themes_descr">Farbdesigns anpassen und weitergeben.</string>
|
||||
<string name="custom_time_unit_days">Tage</string>
|
||||
<string name="custom_time_unit_hours">Stunden</string>
|
||||
<string name="v5_1_better_messages_descr">- Bis zu 5 Minuten lange Sprachnachrichten\n- Zeitdauer für verschwindende Nachrichten anpassen\n- Nachrichtenverlauf bearbeiten</string>
|
||||
<string name="v5_1_better_messages_descr">- Bis zu 5 Minuten lange Sprachnachrichten
|
||||
\n- Zeitdauer für verschwindende Nachrichten anpassen
|
||||
\n- Nachrichtenverlauf bearbeiten</string>
|
||||
<string name="custom_time_picker_custom">benutzerdefiniert</string>
|
||||
<string name="custom_time_unit_months">Monate</string>
|
||||
<string name="custom_time_picker_select">Auswählen</string>
|
||||
@@ -1323,9 +1325,9 @@
|
||||
<string name="abort_switch_receiving_address_question">Wechsel der Empfängeradresse beenden?</string>
|
||||
<string name="files_and_media_prohibited">Dateien und Medien sind nicht erlaubt!</string>
|
||||
<string name="only_owners_can_enable_files_and_media">Nur Gruppenbesitzer können Dateien und Medien aktivieren.</string>
|
||||
<string name="group_members_can_send_files">Mitglieder können Dateien und Medien senden.</string>
|
||||
<string name="group_members_can_send_files">Gruppenmitglieder können Dateien und Medien senden.</string>
|
||||
<string name="abort_switch_receiving_address_desc">Der Wechsel der Empfängeradresse wird beendet. Die bisherige Adresse wird weiter verwendet.</string>
|
||||
<string name="files_are_prohibited_in_group">Dateien und Medien sind nicht erlaubt.</string>
|
||||
<string name="files_are_prohibited_in_group">In dieser Gruppe sind Dateien und Medien nicht erlaubt.</string>
|
||||
<string name="unfavorite_chat">Favorit entfernen</string>
|
||||
<string name="favorite_chat">Favorit</string>
|
||||
<string name="no_filtered_chats">Keine gefilterten Chats</string>
|
||||
@@ -1383,7 +1385,9 @@
|
||||
<string name="v5_2_fix_encryption_descr">Reparatur der Verschlüsselung nach Wiedereinspielen von Backups.</string>
|
||||
<string name="v5_2_more_things">Ein paar weitere Dinge</string>
|
||||
<string name="v5_2_disappear_one_message_descr">Auch wenn sie in den Unterhaltungen deaktiviert sind.</string>
|
||||
<string name="v5_2_more_things_descr">- Stabilere Zustellung von Nachrichten.\n- Ein bisschen verbesserte Gruppen.\n- Und mehr!</string>
|
||||
<string name="v5_2_more_things_descr">- stabilere Zustellung von Nachrichten.
|
||||
\n- ein bisschen verbesserte Gruppen.
|
||||
\n- und mehr!</string>
|
||||
<string name="dont_enable_receipts">Nicht aktivieren</string>
|
||||
<string name="sending_delivery_receipts_will_be_enabled">Das Senden von Empfangsbestätigungen an alle Kontakte wird aktiviert.</string>
|
||||
<string name="you_can_enable_delivery_receipts_later_alert">Sie können diese später in den Datenschutz- und Sicherheits-Einstellungen der App aktivieren.</string>
|
||||
@@ -1453,7 +1457,9 @@
|
||||
<string name="v5_3_new_interface_languages_descr">Arabisch, Bulgarisch, Finnisch, Hebräisch, Thailändisch und Ukrainisch - Dank der Nutzer und Weblate.</string>
|
||||
<string name="v5_3_new_desktop_app_descr">Erstellen eines neuen Profils in der Desktop-App. 💻</string>
|
||||
<string name="v5_3_simpler_incognito_mode_descr">Inkognito beim Verbinden einschalten.</string>
|
||||
<string name="v5_3_discover_join_groups_descr">- Verbindung mit dem Directory-Service (BETA)!\n- Empfangsbestätigungen (für bis zu 20 Mitglieder).\n- Schneller und stabiler.</string>
|
||||
<string name="v5_3_discover_join_groups_descr">- Verbindung mit dem Directory-Service (BETA)!
|
||||
\n- Empfangsbestätigungen (für bis zu 20 Mitglieder).
|
||||
\n- Schneller und stabiler.</string>
|
||||
<string name="member_contact_send_direct_message">Direktnachricht senden</string>
|
||||
<string name="rcv_group_event_member_created_contact">Direkt miteinander verbunden</string>
|
||||
<string name="expand_verb">Erweitern</string>
|
||||
@@ -1562,7 +1568,9 @@
|
||||
<string name="paste_desktop_address">Desktop-Adresse einfügen</string>
|
||||
<string name="verify_code_with_desktop">Code mit dem Desktop überprüfen</string>
|
||||
<string name="scan_qr_code_from_desktop">Den QR-Code vom Desktop scannen</string>
|
||||
<string name="v5_4_more_things_descr">- Optionale Benachrichtigung von gelöschten Kontakten.\n- Profilnamen mit Leerzeichen.\n- Und mehr!</string>
|
||||
<string name="v5_4_more_things_descr">- Optionale Benachrichtigung von gelöschten Kontakten.
|
||||
\n- Profilnamen mit Leerzeichen.
|
||||
\n- Und mehr!</string>
|
||||
<string name="scan_from_mobile">Vom Mobiltelefon scannen</string>
|
||||
<string name="verify_connections">Verbindungen überprüfen</string>
|
||||
<string name="loading_remote_file_desc">Bitte warten Sie, solange die Datei von dem verknüpften Mobiltelefon geladen wird</string>
|
||||
@@ -1791,12 +1799,12 @@
|
||||
<string name="simplex_links_not_allowed">SimpleX-Links sind nicht erlaubt</string>
|
||||
<string name="voice_messages_not_allowed">Sprachnachrichten sind nicht erlaubt</string>
|
||||
<string name="simplex_links">SimpleX-Links</string>
|
||||
<string name="group_members_can_send_simplex_links">Mitglieder können SimpleX-Links senden.</string>
|
||||
<string name="group_members_can_send_simplex_links">Gruppenmitglieder können SimpleX-Links senden.</string>
|
||||
<string name="feature_roles_admins">Administratoren</string>
|
||||
<string name="feature_roles_all_members">Alle Mitglieder</string>
|
||||
<string name="feature_enabled_for">Aktiviert für</string>
|
||||
<string name="feature_roles_owners">Eigentümer</string>
|
||||
<string name="simplex_links_are_prohibited_in_group">SimpleX-Links sind nicht erlaubt.</string>
|
||||
<string name="simplex_links_are_prohibited_in_group">In dieser Gruppe sind SimpleX-Links nicht erlaubt.</string>
|
||||
<string name="prohibit_sending_simplex_links">Das Senden von SimpleX-Links nicht erlauben.</string>
|
||||
<string name="allow_to_send_simplex_links">Das Senden von SimpleX-Links erlauben.</string>
|
||||
<string name="audio_device_speaker">Lautsprecher</string>
|
||||
@@ -2025,7 +2033,8 @@
|
||||
<string name="appearance_zoom">Zoom</string>
|
||||
<string name="smp_server">SMP-Server</string>
|
||||
<string name="servers_info_target">Informationen zeigen für</string>
|
||||
<string name="servers_info_private_data_disclaimer">Beginnend mit %s.\nAlle Daten werden nur auf Ihrem Gerät gespeichert.</string>
|
||||
<string name="servers_info_private_data_disclaimer">Beginnend mit %s.
|
||||
\nAlle Daten werden nur auf Ihrem Gerät gespeichert.</string>
|
||||
<string name="servers_info_statistics_section_header">Statistiken</string>
|
||||
<string name="servers_info_transport_sessions_section_header">Transport-Sitzungen</string>
|
||||
<string name="servers_info_uploaded">Hochgeladen</string>
|
||||
@@ -2068,7 +2077,7 @@
|
||||
<string name="deleted_chats">Archivierte Kontakte</string>
|
||||
<string name="no_filtered_contacts">Keine gefilterten Kontakte</string>
|
||||
<string name="contact_list_header_title">Ihre Kontakte</string>
|
||||
<string name="one_hand_ui">App-Symbolleiste unten</string>
|
||||
<string name="one_hand_ui">Chat-Symbolleiste unten</string>
|
||||
<string name="calls_prohibited_ask_to_enable_calls_alert_text">Bitten Sie Ihren Kontakt darum, Anrufe zu aktivieren.</string>
|
||||
<string name="you_need_to_allow_calls">Sie müssen Ihrem Kontakt Anrufe zu Ihnen erlauben, bevor Sie ihn selbst anrufen können.</string>
|
||||
<string name="allow_calls_question">Anrufe erlauben?</string>
|
||||
@@ -2148,7 +2157,8 @@
|
||||
<string name="network_proxy_auth_mode_isolate_by_auth_user">Verwenden Sie für jedes Profil unterschiedliche Proxy-Anmeldeinformationen.</string>
|
||||
<string name="network_proxy_random_credentials">Verwenden Sie zufällige Anmeldeinformationen</string>
|
||||
<string name="network_proxy_username">Benutzername</string>
|
||||
<string name="n_file_errors">%1$d Datei-Fehler:\n%2$s</string>
|
||||
<string name="n_file_errors">%1$d Datei-Fehler:
|
||||
\n%2$s</string>
|
||||
<string name="forward_files_in_progress_desc">%1$d Datei(en) wird/werden immer noch heruntergeladen.</string>
|
||||
<string name="forward_files_failed_to_receive_desc">Bei %1$d Datei(en) ist das Herunterladen fehlgeschlagen.</string>
|
||||
<string name="error_forwarding_messages">Fehler beim Weiterleiten der Nachrichten</string>
|
||||
@@ -2205,11 +2215,11 @@
|
||||
<string name="for_social_media">Für soziale Medien</string>
|
||||
<string name="or_to_share_privately">Oder zum privaten Teilen</string>
|
||||
<string name="simplex_address_or_1_time_link">SimpleX-Adresse oder Einmal-Link?</string>
|
||||
<string name="onboarding_choose_server_operators">Server-Betreiber</string>
|
||||
<string name="onboarding_choose_server_operators">Betreiber auswählen</string>
|
||||
<string name="onboarding_network_operators">Netzwerk-Betreiber</string>
|
||||
<string name="onboarding_network_operators_app_will_use_different_operators">Die App verwendet für jede Unterhaltung Server von unterschiedlichen Betreibern, um Ihre Privatsphäre zu schützen.</string>
|
||||
<string name="onboarding_network_operators_app_will_use_different_operators">Wenn mehr als ein Netzwerk-Betreiber aktiviert ist, verwendet die App für jede Unterhaltung Server der verschiedenen Betreiber.</string>
|
||||
<string name="onboarding_network_operators_conditions_will_be_accepted">Die Nutzungsbedingungen der aktivierten Betreiber werden nach 30 Tagen akzeptiert.</string>
|
||||
<string name="onboarding_network_operators_app_will_use_for_routing">Wenn Ihr Kontakt beispielsweise Nachrichten über einen SimpleX-Chat-Server empfängt, wird Ihre App diese über einen Flux-Server versenden.</string>
|
||||
<string name="onboarding_network_operators_app_will_use_for_routing">Wenn Sie beispielsweise Nachrichten über einen SimpleX-Chatserver empfangen, verwendet die App einen der Server von Flux für die private Weiterleitung.</string>
|
||||
<string name="onboarding_network_operators_review_later">Später einsehen</string>
|
||||
<string name="onboarding_select_network_operators_to_use">Wählen sie die zu nutzenden Netzwerk-Betreiber aus.</string>
|
||||
<string name="onboarding_network_operators_conditions_you_can_configure">Sie können die Betreiber in den Netzwerk- und Servereinstellungen konfigurieren.</string>
|
||||
@@ -2236,7 +2246,7 @@
|
||||
<string name="operator_use_for_messages">Für Nachrichten verwenden</string>
|
||||
<string name="operator_added_message_servers">Nachrichtenserver hinzugefügt</string>
|
||||
<string name="operator_use_for_messages_private_routing">Für privates Routing</string>
|
||||
<string name="xftp_servers_per_user">Medien- und Datei-Server für neue Daten über Ihr aktuelles Chat-Profil</string>
|
||||
<string name="xftp_servers_per_user">Die Server Deines aktuellen Chat-Profils für neue Dateien</string>
|
||||
<string name="operator_use_for_sending">Für das Senden</string>
|
||||
<string name="operator_use_for_files">Für Dateien verwenden</string>
|
||||
<string name="error_adding_server">Fehler beim Hinzufügen des Servers</string>
|
||||
@@ -2261,7 +2271,7 @@
|
||||
<string name="one_time_link_can_be_used_with_one_contact_only"><![CDATA[Ein Einmal-Link kann <i>nur mit einem Kontakt</i> genutzt werden - teilen Sie in nur persönlich oder über einen beliebigen Messenger.]]></string>
|
||||
<string name="operator_conditions_accepted_for_some"><![CDATA[Die Nutzungsbedingungen der/des folgenden Betreiber(s) wurden schon akzeptiert: <b>%s</b>.]]></string>
|
||||
<string name="operators_conditions_will_be_accepted_for"><![CDATA[Die Nutzungsbedingungen der/des Betreiber(s) werden akzeptiert: <b>%s</b>.]]></string>
|
||||
<string name="operator_conditions_will_be_accepted_on">Die Nutzungsbedingungen wurden akzeptiert am: %s</string>
|
||||
<string name="operator_conditions_will_be_accepted_on">Die Nutzungsbedingungen werden akzeptiert am: %s.</string>
|
||||
<string name="operator_conditions_will_be_applied"><![CDATA[Diese Nutzungsbedingungen gelten auch für: <b>%s</b>.]]></string>
|
||||
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[Um die Server von <b>%s</b> zu nutzen, müssen Sie dessen Nutzungsbedingungen akzeptieren.]]></string>
|
||||
<string name="error_accepting_operator_conditions">Fehler beim Akzeptieren der Nutzungsbedingungen</string>
|
||||
@@ -2275,50 +2285,10 @@
|
||||
<string name="connection_error_quota_desc">Diese Verbindung hat das Limit der nicht ausgelieferten Nachrichten erreicht. Ihr Kontakt ist möglicherweise offline.</string>
|
||||
<string name="message_deleted_or_not_received_error_desc">Diese Nachricht wurde gelöscht oder bisher noch nicht empfangen.</string>
|
||||
<string name="to_protect_against_your_link_replaced_compare_codes">Zum Schutz vor dem Austausch Ihres Links können Sie die Sicherheitscodes Ihrer Kontakte vergleichen.</string>
|
||||
<string name="operators_conditions_accepted_for"><![CDATA[Die Nutzungsbedingungen der/des Betreiber(s) wurden akzeptiert: <b>%s</b>.]]></string>
|
||||
<string name="operators_conditions_accepted_for"><![CDATA[Die Nutzungsbedingungen der/des Betreiber(s) werden akzeptiert: <b>%s</b>.]]></string>
|
||||
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[Die Nutzungsbedingungen der/des Betreiber(s) werden akzeptiert: <b>%s</b>.]]></string>
|
||||
<string name="operator_conditions_accepted_on">Die Nutzungsbedingungen wurden akzeptiert am: %s.</string>
|
||||
<string name="operator_conditions_failed_to_load">Der Text der aktuellen Nutzungsbedingungen konnte nicht geladen werden. Sie können die Nutzungsbedingungen unter diesem Link einsehen:</string>
|
||||
<string name="remote_hosts_section">Ferngesteuerte Mobiltelefone</string>
|
||||
<string name="chat_archive">Oder importieren Sie eine Archiv-Datei</string>
|
||||
<string name="xiaomi_ignore_battery_optimization"><![CDATA[<b>Hinweis für Geräte von Xiaomi</b>: Bitte aktivieren Sie in den System-Einstellungen die Option "Autostart", damit Benachrichtigungen funktionieren.]]></string>
|
||||
<string name="all_message_and_files_e2e_encrypted"><![CDATA[Alle Nachrichten und Dateien werden <b>Ende-zu-Ende-verschlüsselt</b> versendet. In Direktnachrichten sogar mit Post-Quantum-Security.]]></string>
|
||||
<string name="button_add_team_members">Team-Mitglieder aufnehmen</string>
|
||||
<string name="button_add_friends">Freunde aufnehmen</string>
|
||||
<string name="display_name_accepted_invitation">Einladung akzeptiert</string>
|
||||
<string name="business_address">Geschäftliche Adresse</string>
|
||||
<string name="v6_2_business_chats">Geschäftliche Chats</string>
|
||||
<string name="add_your_team_members_to_conversations">Nehmen Sie Team-Mitglieder in Ihre Unterhaltungen auf.</string>
|
||||
<string name="onboarding_notifications_mode_service_desc_short">Die App läuft immer im Hintergrund ab</string>
|
||||
<string name="direct_messages_are_prohibited_in_chat">In diesem Chat sind Direktnachrichten zwischen Mitgliedern nicht erlaubt.</string>
|
||||
<string name="onboarding_notifications_mode_off_desc_short">Kein Hintergrund-Service</string>
|
||||
<string name="onboarding_notifications_mode_periodic_desc_short">Nachrichten alle 10 Minuten überprüfen</string>
|
||||
<string name="onboarding_notifications_mode_battery">Benachrichtigungen und Akku</string>
|
||||
<string name="invite_to_chat_button">Zum Chat einladen</string>
|
||||
<string name="connect_plan_chat_already_exists">Chat besteht bereits!</string>
|
||||
<string name="chat_bottom_bar">Chat-Symbolleiste unten</string>
|
||||
<string name="button_leave_chat">Chat verlassen</string>
|
||||
<string name="member_will_be_removed_from_chat_cannot_be_undone">Das Mitglied wird aus dem Chat entfernt. Dies kann nicht rückgängig gemacht werden!</string>
|
||||
<string name="chat_main_profile_sent">Ihr Chat-Profil wird an die Chat-Mitglieder gesendet.</string>
|
||||
<string name="direct_messages_are_prohibited">Direktnachrichten zwischen Mitgliedern sind nicht erlaubt.</string>
|
||||
<string name="how_it_helps_privacy">Wie die Privatsphäre geschützt wird</string>
|
||||
<string name="leave_chat_question">Chat verlassen?</string>
|
||||
<string name="delete_chat_question">Chat löschen?</string>
|
||||
<string name="delete_chat_for_all_members_cannot_undo_warning">Der Chat wird für alle Mitglieder gelöscht. Dies kann nicht rückgängig gemacht werden!</string>
|
||||
<string name="v6_2_business_chats_descr">Schutz der Privatsphäre Ihrer Kunden.</string>
|
||||
<string name="display_name_requested_to_connect">Zur Verbindung aufgefordert</string>
|
||||
<string name="maximum_message_size_reached_non_text">Bitte verkleinern Sie die Nachrichten-Größe oder entfernen Sie Medien und versenden Sie diese erneut.</string>
|
||||
<string name="only_chat_owners_can_change_prefs">Nur Chat-Eigentümer können die Präferenzen ändern.</string>
|
||||
<string name="maximum_message_size_reached_text">Bitte verkleinern Sie die Nachrichten-Größe und versenden Sie diese erneut.</string>
|
||||
<string name="member_role_will_be_changed_with_notification_chat">Die Rolle wird auf %s geändert. Im Chat wird Jeder darüber informiert.</string>
|
||||
<string name="you_will_stop_receiving_messages_from_this_chat_chat_history_will_be_preserved">Sie werden von diesem Chat keine Nachrichten mehr erhalten. Der Nachrichtenverlauf wird beibehalten.</string>
|
||||
<string name="maximum_message_size_reached_forwarding">Sie können die Nachricht kopieren und verkleinern, um sie zu versenden.</string>
|
||||
<string name="button_delete_chat">Chat löschen</string>
|
||||
<string name="delete_chat_for_self_cannot_undo_warning">Der Chat wird für Sie gelöscht. Dies kann nicht rückgängig gemacht werden!</string>
|
||||
<string name="maximum_message_size_title">Die Nachricht ist zu umfangreich!</string>
|
||||
<string name="onboarding_network_operators_cant_see_who_talks_to_whom">Wenn mehr als ein Betreiber aktiviert ist, hat keiner von ihnen Metadaten, um zu erfahren, wer mit wem kommuniziert.</string>
|
||||
<string name="info_row_chat">Chat</string>
|
||||
<string name="connect_plan_you_are_already_connected_with_vName"><![CDATA[Sie sind bereits mit <b>%1$s</b> verbunden.]]></string>
|
||||
<string name="onboarding_network_about_operators">Über Betreiber</string>
|
||||
<string name="onboarding_network_operators_simplex_flux_agreement">SimpleX-Chat und Flux haben vereinbart, die von Flux betriebenen Server in die App aufzunehmen.</string>
|
||||
</resources>
|
||||
@@ -36,7 +36,8 @@
|
||||
<string name="appearance_settings">Apariencia</string>
|
||||
<string name="app_version_title">Versión</string>
|
||||
<string name="network_session_mode_user_description"><![CDATA[Se usará una conexión TCP (y credenciales SOCKS) independiente <b>por cada perfil que tengas en la aplicación</b>.]]></string>
|
||||
<string name="network_session_mode_entity_description">Se usará una conexión TCP (y credenciales SOCKS) independiente <b>por cada contacto y miembro del grupo</b>. \n<b>Recuerda</b>: si tienes muchas conexiones, el consumo de batería y tráfico pueden aumentar bastante y algunas conexiones pueden fallar.</string>
|
||||
<string name="network_session_mode_entity_description">Se usará una conexión TCP (y credenciales SOCKS) independiente <b>por cada contacto y miembro del grupo</b>.
|
||||
\n<b>Recuerda</b>: si tienes muchas conexiones, el consumo de batería y tráfico pueden ser sustancialmente mayores y algunas conexiones pueden fallar.</string>
|
||||
<string name="a_plus_b">a + b</string>
|
||||
<string name="about_simplex">Acerca de SimpleX</string>
|
||||
<string name="bold_text">negrita</string>
|
||||
@@ -93,7 +94,7 @@
|
||||
<string name="auth_device_authentication_is_not_enabled_you_can_turn_on_in_settings_once_enabled">Autenticación de dispositivo desactivada. Puedes habilitar Bloqueo SimpleX en Configuración, después de activar la autenticación de dispositivo.</string>
|
||||
<string name="no_call_on_lock_screen">Desactivar</string>
|
||||
<string name="disappearing_prohibited_in_this_chat">Los mensajes temporales no están permitidos en este chat.</string>
|
||||
<string name="disappearing_messages_are_prohibited">Mensajes temporales no permitidos.</string>
|
||||
<string name="disappearing_messages_are_prohibited">Los mensajes temporales no están permitidos en este grupo.</string>
|
||||
<string name="display_name_cannot_contain_whitespace">El nombre mostrado no puede contener espacios en blanco.</string>
|
||||
<string name="encrypted_video_call">Videollamada con cifrado de extremo a extremo</string>
|
||||
<string name="display_name_connection_established">conexión establecida</string>
|
||||
@@ -336,7 +337,7 @@
|
||||
<string name="enter_passphrase">Introduce la contraseña…</string>
|
||||
<string name="icon_descr_group_inactive">Grupo inactivo</string>
|
||||
<string name="group_member_status_group_deleted">grupo eliminado</string>
|
||||
<string name="group_members_can_send_disappearing">Los miembros pueden enviar mensajes temporales.</string>
|
||||
<string name="group_members_can_send_disappearing">Los miembros del grupo pueden enviar mensajes temporales.</string>
|
||||
<string name="v4_2_group_links">Enlaces de grupo</string>
|
||||
<string name="invalid_connection_link">Enlace de conexión no válido</string>
|
||||
<string name="error_accepting_contact_request">Error al aceptar solicitud del contacto</string>
|
||||
@@ -356,7 +357,7 @@
|
||||
<string name="error_deleting_database">Error al eliminar base de datos</string>
|
||||
<string name="encrypted_database">Base de datos cifrada</string>
|
||||
<string name="error_removing_member">Error al eliminar miembro</string>
|
||||
<string name="group_members_can_send_voice">Los miembros pueden enviar mensajes de voz.</string>
|
||||
<string name="group_members_can_send_voice">Los miembros del grupo pueden enviar mensajes de voz.</string>
|
||||
<string name="description_via_contact_address_link_incognito">en modo incógnito mediante enlace de dirección del contacto</string>
|
||||
<string name="failed_to_create_user_title">¡Error al crear perfil!</string>
|
||||
<string name="failed_to_parse_chat_title">No se pudo cargar el chat</string>
|
||||
@@ -406,8 +407,8 @@
|
||||
<string name="conn_stats_section_title_servers">SERVIDORES</string>
|
||||
<string name="group_display_name_field">Nombre del grupo:</string>
|
||||
<string name="group_preferences">Preferencias del grupo</string>
|
||||
<string name="group_members_can_send_dms">Los miembros pueden enviar mensajes directos.</string>
|
||||
<string name="group_members_can_delete">Los miembros pueden eliminar mensajes enviados de forma irreversible. (24 horas)</string>
|
||||
<string name="group_members_can_send_dms">Los miembros del grupo pueden enviar mensajes directos.</string>
|
||||
<string name="group_members_can_delete">Los miembros del grupo pueden eliminar mensajes de forma irreversible. (24 horas)</string>
|
||||
<string name="v4_3_improved_privacy_and_security_desc">Ocultar pantalla de aplicaciones en aplicaciones recientes.</string>
|
||||
<string name="encrypt_database">Cifrar</string>
|
||||
<string name="icon_descr_expand_role">Ampliar la selección de roles</string>
|
||||
@@ -430,7 +431,7 @@
|
||||
<string name="how_it_works">Cómo funciona</string>
|
||||
<string name="delete_message_cannot_be_undone_warning">El mensaje será eliminado. ¡No podrá deshacerse!</string>
|
||||
<string name="incognito_info_protects">El modo incógnito protege tu privacidad creando un perfil aleatorio por cada contacto.</string>
|
||||
<string name="turn_off_battery_optimization"><![CDATA[<b>Da permiso</b> en el siguiente diálogo para recibir notificaciones instantáneas.]]></string>
|
||||
<string name="turn_off_battery_optimization"><![CDATA[Para usar SimpleX, por favor <b>permite que SimpleX se ejecute en segundo plano</b> en el siguiente cuadro de diálogo. De lo contrario las notificaciones se desactivarán.]]></string>
|
||||
<string name="install_simplex_chat_for_terminal">Instalar terminal de SimpleX Chat</string>
|
||||
<string name="group_invitation_item_description">invitación al grupo %1$s</string>
|
||||
<string name="rcv_group_event_member_added">ha invitado a %1$s</string>
|
||||
@@ -442,7 +443,7 @@
|
||||
<string name="icon_descr_instant_notifications">Notificación instantánea</string>
|
||||
<string name="network_settings_title">Configuración avanzada</string>
|
||||
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages">Sólo los dispositivos cliente almacenan perfiles de usuario, contactos, grupos y mensajes.</string>
|
||||
<string name="onboarding_notifications_mode_subtitle">Cómo afecta a la batería</string>
|
||||
<string name="onboarding_notifications_mode_subtitle">Puedes cambiar estos ajustes más tarde en Configuración.</string>
|
||||
<string name="onboarding_notifications_mode_service">Instantánea</string>
|
||||
<string name="join_group_button">Unirte</string>
|
||||
<string name="join_group_incognito_button">Unirte en modo incógnito</string>
|
||||
@@ -450,7 +451,7 @@
|
||||
<string name="theme_light">Claro</string>
|
||||
<string name="chat_preferences_on">Activado</string>
|
||||
<string name="message_deletion_prohibited">La eliminación irreversible de mensajes no está permitida en este chat.</string>
|
||||
<string name="message_deletion_prohibited_in_chat">Eliminación irreversible no permitida.</string>
|
||||
<string name="message_deletion_prohibited_in_chat">La eliminación irreversible de mensajes no está permitida en este grupo.</string>
|
||||
<string name="v4_3_improved_server_configuration">Configuración del servidor mejorada</string>
|
||||
<string name="alert_text_skipped_messages_it_can_happen_when">Esto puede ocurrir cuando:
|
||||
\n1. Los mensajes hayan caducado en el cliente saliente tras 2 días o en el servidor tras 30 días.
|
||||
@@ -554,7 +555,7 @@
|
||||
<string name="snd_conn_event_switch_queue_phase_completed_for_member">has cambiado el servidor para %s</string>
|
||||
<string name="rcv_group_event_member_left">ha salido</string>
|
||||
<string name="button_leave_group">Salir del grupo</string>
|
||||
<string name="only_group_owners_can_change_prefs">Sólo los propietarios del grupo pueden cambiar las preferencias.</string>
|
||||
<string name="only_group_owners_can_change_prefs">Sólo los propietarios pueden modificar las preferencias del grupo.</string>
|
||||
<string name="users_delete_data_only">Eliminar sólo el perfil</string>
|
||||
<string name="chat_preferences_no">no</string>
|
||||
<string name="thousand_abbreviation">k</string>
|
||||
@@ -641,7 +642,7 @@
|
||||
<string name="icon_descr_profile_image_placeholder">Espacio reservado para la imagen del perfil</string>
|
||||
<string name="image_descr_qr_code">Código QR</string>
|
||||
<string name="chat_with_the_founder">Consultas y sugerencias</string>
|
||||
<string name="smp_servers_preset_address">Dirección predefinida del servidor</string>
|
||||
<string name="smp_servers_preset_address">Dirección del servidor predefinida</string>
|
||||
<string name="send_us_an_email">Contacta vía email</string>
|
||||
<string name="rate_the_app">Valora la aplicación</string>
|
||||
<string name="save_servers_button">Guardar</string>
|
||||
@@ -717,7 +718,7 @@
|
||||
<string name="icon_descr_sent_msg_status_unauthorized_send">envío no autorizado</string>
|
||||
<string name="set_contact_name">Escribe un nombre para el contacto</string>
|
||||
<string name="unknown_error">Error desconocido</string>
|
||||
<string name="member_role_will_be_changed_with_notification">El rol cambiará a %s. Todos serán notificados.</string>
|
||||
<string name="member_role_will_be_changed_with_notification">El rol del miembro cambiará a "%s" y se notificará al grupo.</string>
|
||||
<string name="v4_2_security_assessment_desc">La seguridad de SimpleX Chat ha sido auditada por Trail of Bits.</string>
|
||||
<string name="v4_4_disappearing_messages_desc">Los mensajes enviados se eliminarán una vez transcurrido el tiempo establecido.</string>
|
||||
<string name="ntf_channel_messages">Mensajes de chat SimpleX</string>
|
||||
@@ -735,12 +736,12 @@
|
||||
<string name="connection_you_accepted_will_be_cancelled">¡La conexión que has aceptado se cancelará!</string>
|
||||
<string name="database_initialization_error_desc">La base de datos no funciona correctamente. Pulsa para conocer más</string>
|
||||
<string name="moderate_message_will_be_marked_warning">El mensaje será marcado como moderado para todos los miembros.</string>
|
||||
<string name="next_generation_of_private_messaging">El futuro de la mensajería</string>
|
||||
<string name="next_generation_of_private_messaging">La nueva generación \nde mensajería privada</string>
|
||||
<string name="delete_files_and_media_desc">Esta acción es irreversible. Se eliminarán todos los archivos y multimedia recibidos y enviados. Las imágenes de baja resolución permanecerán.</string>
|
||||
<string name="enable_automatic_deletion_message">Esta acción es irreversible. Los mensajes enviados y recibidos anteriores a la selección serán eliminados. Podría tardar varios minutos.</string>
|
||||
<string name="messages_section_description">Esta configuración se aplica a los mensajes del perfil actual</string>
|
||||
<string name="this_string_is_not_a_connection_link">¡Esta cadena no es un enlace de conexión!</string>
|
||||
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Para mejorar la privacidad <b>SimpleX se ejecuta en segundo plano</b> en lugar de usar notificaciones push.]]></string>
|
||||
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Para preservar tu privacidad, en lugar de notificaciones automáticas la aplicación cuenta con un <b>servicio en segundo planoSimpleX</b>, usa un pequeño porcentaje de la batería al día.]]></string>
|
||||
<string name="icon_descr_settings">Configuración</string>
|
||||
<string name="icon_descr_speaker_off">Altavoz desactivado</string>
|
||||
<string name="add_contact_or_create_group">Inciar chat nuevo</string>
|
||||
@@ -784,7 +785,7 @@
|
||||
<string name="smp_servers_test_server">Probar servidor</string>
|
||||
<string name="smp_servers_test_servers">Probar servidores</string>
|
||||
<string name="star_on_github">Estrella en GitHub</string>
|
||||
<string name="smp_servers_per_user">Servidores para conexiones nuevas en tu perfil</string>
|
||||
<string name="smp_servers_per_user">Lista de servidores para las conexiones nuevas de tu perfil actual</string>
|
||||
<string name="network_disable_socks">¿Usar conexión directa a Internet\?</string>
|
||||
<string name="profile_is_only_shared_with_your_contacts">El perfil sólo se comparte con tus contactos.</string>
|
||||
<string name="callstate_starting">inicializando…</string>
|
||||
@@ -803,7 +804,7 @@
|
||||
<string name="update_database_passphrase">Actualizar contraseña base de datos</string>
|
||||
<string name="group_invitation_tap_to_join_incognito">Pulsa para unirte en modo incógnito</string>
|
||||
<string name="switch_verb">Cambiar</string>
|
||||
<string name="member_role_will_be_changed_with_invitation">El rol cambiará a %s y el miembro recibirá una invitación nueva.</string>
|
||||
<string name="member_role_will_be_changed_with_invitation">El rol del miembro cambiará a "%s" y recibirá una invitación nueva.</string>
|
||||
<string name="update_network_settings_confirmation">Actualizar</string>
|
||||
<string name="update_network_settings_question">¿Actualizar la configuración de red\?</string>
|
||||
<string name="trying_to_connect_to_server_to_receive_messages">Intentando conectar con el servidor para recibir mensajes de este contacto.</string>
|
||||
@@ -824,7 +825,7 @@
|
||||
<string name="smp_servers_test_failed">¡Prueba no superada!</string>
|
||||
<string name="smp_servers_test_some_failed">Algunos servidores no han superado la prueba:</string>
|
||||
<string name="smp_servers_use_server">Usar servidor</string>
|
||||
<string name="smp_servers_use_server_for_new_conn">Para conexiones nuevas</string>
|
||||
<string name="smp_servers_use_server_for_new_conn">Usar para conexiones nuevas</string>
|
||||
<string name="theme_system">Sistema</string>
|
||||
<string name="description_via_one_time_link">mediante enlace de un solo uso</string>
|
||||
<string name="your_chats">Chats</string>
|
||||
@@ -839,9 +840,9 @@
|
||||
<string name="v4_3_voice_messages">Mensajes de voz</string>
|
||||
<string name="v4_3_irreversible_message_deletion_desc">Tus contactos pueden permitir la eliminación completa de mensajes.</string>
|
||||
<string name="voice_messages">Mensajes de voz</string>
|
||||
<string name="voice_messages_are_prohibited">Mensajes de voz no permitidos.</string>
|
||||
<string name="voice_messages_are_prohibited">Los mensajes de voz no están permitidos en este grupo.</string>
|
||||
<string name="v4_4_verify_connection_security">Comprobar la seguridad de la conexión</string>
|
||||
<string name="you_are_already_connected_to_vName_via_this_link">¡Ya estás conectado con %1$s.</string>
|
||||
<string name="you_are_already_connected_to_vName_via_this_link">¡Ya estás conectado a %1$s.</string>
|
||||
<string name="welcome">¡Bienvenido!</string>
|
||||
<string name="your_chat_profile_will_be_sent_to_your_contact">Tu perfil será enviado
|
||||
\na tu contacto</string>
|
||||
@@ -1027,7 +1028,7 @@
|
||||
<string name="your_XFTP_servers">Servidores XFTP</string>
|
||||
<string name="port_verb">Puerto</string>
|
||||
<string name="network_proxy_port">puerto %d</string>
|
||||
<string name="disable_onion_hosts_when_not_supported"><![CDATA[<i>Usar hosts .onion</i> debe estar a <i>No</i> si el proxy SOCKS no los admite.]]></string>
|
||||
<string name="disable_onion_hosts_when_not_supported"><![CDATA[Configura <i>Usar hosts .onion</i> como <i>No</i> si el proxy SOCKS no los admite.]]></string>
|
||||
<string name="smp_server_test_download_file">Descargar archivo</string>
|
||||
<string name="network_socks_toggle_use_socks_proxy">Usar proxy SOCKS</string>
|
||||
<string name="host_verb">Host</string>
|
||||
@@ -1207,7 +1208,7 @@
|
||||
<string name="custom_time_unit_weeks">semanas</string>
|
||||
<string name="error_loading_details">Error al cargar detalles</string>
|
||||
<string name="group_members_can_add_message_reactions">Los miembros pueden añadir reacciones a los mensajes.</string>
|
||||
<string name="message_reactions_are_prohibited">Reacciones a los mensajes no permitidas.</string>
|
||||
<string name="message_reactions_are_prohibited">Las reacciones a los mensajes no están permitidas en este grupo.</string>
|
||||
<string name="only_your_contact_can_add_message_reactions">Sólo tu contacto puede añadir reacciones a los mensajes.</string>
|
||||
<string name="send_disappearing_message_1_minute">1 minuto</string>
|
||||
<string name="info_row_updated_at">Registro actualiz</string>
|
||||
@@ -1227,12 +1228,12 @@
|
||||
<string name="v5_1_custom_themes_descr">Personalizar y compartir temas de color.</string>
|
||||
<string name="v5_1_message_reactions_descr">¡Por fin los tenemos! 🚀</string>
|
||||
<string name="v5_1_message_reactions">Reacciones a los mensajes</string>
|
||||
<string name="whats_new_read_more">Saber más</string>
|
||||
<string name="whats_new_read_more">Conoce más</string>
|
||||
<string name="v5_1_japanese_portuguese_interface">Interfaz en japonés y portugués</string>
|
||||
<string name="item_info_no_text">sin texto</string>
|
||||
<string name="non_fatal_errors_occured_during_import">Han ocurrido algunos errores no críticos durante la importación:</string>
|
||||
<string name="shutdown_alert_question">¿Cerrar\?</string>
|
||||
<string name="settings_section_title_app">APLICACIÓN</string>
|
||||
<string name="settings_section_title_app">Aplicación</string>
|
||||
<string name="settings_restart_app">Reiniciar</string>
|
||||
<string name="settings_shutdown">Cerrar</string>
|
||||
<string name="shutdown_alert_desc">Las notificaciones dejarán de funcionar hasta que reinicies la aplicación</string>
|
||||
@@ -1247,8 +1248,8 @@
|
||||
<string name="abort_switch_receiving_address">Cancelar cambio de dirección</string>
|
||||
<string name="files_and_media">Archivos y multimedia</string>
|
||||
<string name="prohibit_sending_files">No se permite el envío de archivos y multimedia.</string>
|
||||
<string name="files_are_prohibited_in_group">Archivos y multimedia no permitidos.</string>
|
||||
<string name="group_members_can_send_files">Los miembros pueden enviar archivos y multimedia.</string>
|
||||
<string name="files_are_prohibited_in_group">Los archivos y multimedia no están permitidos en este grupo.</string>
|
||||
<string name="group_members_can_send_files">Los miembros del grupo pueden enviar archivos y multimedia.</string>
|
||||
<string name="allow_to_send_files">Se permite enviar archivos y multimedia</string>
|
||||
<string name="favorite_chat">Favorito</string>
|
||||
<string name="only_owners_can_enable_files_and_media">Sólo los propietarios del grupo pueden activar los archivos y multimedia.</string>
|
||||
@@ -1355,7 +1356,7 @@
|
||||
<string name="you_can_change_it_later">La contraseña aleatoria se almacenará en Configuración como texto plano.
|
||||
\nPuedes cambiarlo más tarde.</string>
|
||||
<string name="database_encryption_will_be_updated_in_settings">La contraseña para el cifrado de la base de datos se actualizará y almacenará en Configuración</string>
|
||||
<string name="remove_passphrase_from_settings">¿Eliminar contraseña de configuración?</string>
|
||||
<string name="remove_passphrase_from_settings">Eliminar contraseña de configuración\?</string>
|
||||
<string name="use_random_passphrase">Usar contraseña aleatoria</string>
|
||||
<string name="save_passphrase_in_settings">Guardar contraseña en configuración</string>
|
||||
<string name="setup_database_passphrase">Configuración contraseña base de datos</string>
|
||||
@@ -1367,7 +1368,7 @@
|
||||
<string name="v5_3_encrypt_local_files">Cifra archivos almacenados y multimedia</string>
|
||||
<string name="error_creating_member_contact">Error al establecer contacto con el miembro</string>
|
||||
<string name="socks_proxy_setting_limitations"><![CDATA[<b>Recuerda</b>: los servidores están conectados mediante proxy SOCKS, pero las llamadas y las previsualizaciones de enlaces usan conexión directa.]]></string>
|
||||
<string name="encrypt_local_files">Cifrar archivos locales</string>
|
||||
<string name="encrypt_local_files">Cifra archivos locales</string>
|
||||
<string name="v5_3_new_desktop_app">Nueva aplicación para ordenador!</string>
|
||||
<string name="v5_3_new_interface_languages">6 idiomas nuevos para el interfaz</string>
|
||||
<string name="v5_3_encrypt_local_files_descr">Cifrado de los nuevos archivos locales (excepto vídeos).</string>
|
||||
@@ -1714,8 +1715,8 @@
|
||||
<string name="simplex_links_not_allowed">Enlaces SimpleX no permitidos</string>
|
||||
<string name="voice_messages_not_allowed">Mensajes de voz no permitidos</string>
|
||||
<string name="simplex_links">Enlaces SimpleX</string>
|
||||
<string name="group_members_can_send_simplex_links">Los miembros pueden enviar enlaces SimpleX.</string>
|
||||
<string name="simplex_links_are_prohibited_in_group">Enlaces SimpleX no permitidos.</string>
|
||||
<string name="group_members_can_send_simplex_links">Los miembros del grupo pueden enviar enlaces SimpleX.</string>
|
||||
<string name="simplex_links_are_prohibited_in_group">Los enlaces SimpleX no se permiten en este grupo.</string>
|
||||
<string name="feature_roles_owners">propietarios</string>
|
||||
<string name="network_type_cellular">Móvil</string>
|
||||
<string name="network_type_no_network_connection">Sin conexión de red</string>
|
||||
@@ -1896,7 +1897,7 @@
|
||||
<string name="decryption_errors">errores de descifrado</string>
|
||||
<string name="deleted">Eliminadas</string>
|
||||
<string name="deletion_errors">Errores de eliminación</string>
|
||||
<string name="member_info_member_disabled">inactivo</string>
|
||||
<string name="member_info_member_disabled">desactivado</string>
|
||||
<string name="message_forwarded_title">Mensaje reenviado</string>
|
||||
<string name="member_inactive_desc">El mensaje puede ser entregado más tarde si el miembro vuelve a estar activo.</string>
|
||||
<string name="member_inactive_title">Miembro inactivo</string>
|
||||
@@ -1967,7 +1968,8 @@
|
||||
<string name="size">Tamaño</string>
|
||||
<string name="servers_info_subscriptions_connections_subscribed">Conexiones activas</string>
|
||||
<string name="servers_info_starting_from">Iniciado el %s.</string>
|
||||
<string name="servers_info_private_data_disclaimer">Iniciado el %s \nLa información es privada en tu dispositivo.</string>
|
||||
<string name="servers_info_private_data_disclaimer">Iniciado el %s
|
||||
\nTodos los datos son privados a tu dispositivo</string>
|
||||
<string name="chunks_deleted">Bloques eliminados</string>
|
||||
<string name="chunks_downloaded">Bloques descargados</string>
|
||||
<string name="chunks_uploaded">Bloques subidos</string>
|
||||
@@ -1988,7 +1990,7 @@
|
||||
<string name="privacy_media_blur_radius_medium">Medio</string>
|
||||
<string name="privacy_media_blur_radius_soft">Suave</string>
|
||||
<string name="one_hand_ui">Barra de herramientas accesible</string>
|
||||
<string name="info_view_call_button">llamar</string>
|
||||
<string name="info_view_call_button">llamada</string>
|
||||
<string name="info_view_connect_button">conectar</string>
|
||||
<string name="delete_members_messages__question">¿Eliminar %d mensajes de miembros?</string>
|
||||
<string name="info_view_message_button">mensaje</string>
|
||||
@@ -2037,7 +2039,7 @@
|
||||
<string name="proxy_destination_error_broker_host">La dirección del servidor de destino de %1$s es incompatible con la configuración del servidor de reenvío %2$s.</string>
|
||||
<string name="proxy_destination_error_broker_version">La versión del servidor de destino de %1$s es incompatible con el servidor de reenvío %2$s.</string>
|
||||
<string name="contact_list_header_title">Tus contactos</string>
|
||||
<string name="you_need_to_allow_calls">Debes permitir que tus contacto te llamen para poder llamarles.</string>
|
||||
<string name="you_need_to_allow_calls">Necesitas permitir que tus contacto llamen para poder llamarles.</string>
|
||||
<string name="smp_proxy_error_connecting">Error al conectar con el servidor de reenvío %1$s. Por favor, inténtalo más tarde.</string>
|
||||
<string name="smp_proxy_error_broker_host">La dirección del servidor de reenvío es incompatible con la configuración de red: %1$s.</string>
|
||||
<string name="proxy_destination_error_failed_to_connect">El servidor de reenvío %1$s no ha podido conectarse al servidor de destino %2$s. Por favor, intentalo más tarde.</string>
|
||||
@@ -2081,8 +2083,8 @@
|
||||
<string name="network_proxy_incorrect_config_title">Error guardando proxy</string>
|
||||
<string name="network_proxy_password">Contraseña</string>
|
||||
<string name="network_proxy_auth">Autenticación proxy</string>
|
||||
<string name="network_proxy_auth_mode_isolate_by_auth_entity">Se usan credenciales proxy diferentes para cada conexión.</string>
|
||||
<string name="network_proxy_auth_mode_isolate_by_auth_user">Se usan credenciales proxy diferentes para cada perfil.</string>
|
||||
<string name="network_proxy_auth_mode_isolate_by_auth_entity">Credenciales proxy diferentes para cada conexión.</string>
|
||||
<string name="network_proxy_auth_mode_isolate_by_auth_user">Credenciales proxy diferentes para cada perfil.</string>
|
||||
<string name="network_proxy_random_credentials">Credenciales aleatorias</string>
|
||||
<string name="network_proxy_username">Nombre de usuario</string>
|
||||
<string name="network_proxy_auth_mode_username_password">Tus credenciales podrían ser enviadas sin cifrar.</string>
|
||||
@@ -2099,12 +2101,12 @@
|
||||
<string name="settings_message_shape_corner">Esquinas</string>
|
||||
<string name="settings_message_shape_tail">Cola</string>
|
||||
<string name="network_session_mode_session_description">Se usarán credenciales SOCKS nuevas cada vez que inicies la aplicación.</string>
|
||||
<string name="network_session_mode_session">por sesión</string>
|
||||
<string name="network_session_mode_session">Sesión de aplicación</string>
|
||||
<string name="call_desktop_permission_denied_safari">Abre la configuración de Safari / Sitios Web / Micrófono y a continuación selecciona Permitir para localhost.</string>
|
||||
<string name="call_desktop_permission_denied_chrome">Pulsa el botón info del campo dirección para permitir el uso del micrófono.</string>
|
||||
<string name="call_desktop_permission_denied_title">Para hacer llamadas, permite el uso del micrófono. Cuelga e intenta llamar de nuevo.</string>
|
||||
<string name="network_session_mode_server_description">Se usarán credenciales SOCKS nuevas para cada servidor.</string>
|
||||
<string name="network_session_mode_server">por servidor</string>
|
||||
<string name="network_session_mode_server_description">Se usarán credenciales SOCKS nuevas por cada servidor.</string>
|
||||
<string name="network_session_mode_server">Servidor</string>
|
||||
<string name="v6_1_better_calls">Llamadas mejoradas</string>
|
||||
<string name="v6_1_message_dates_descr">Sistema de fechas mejorado.</string>
|
||||
<string name="v6_1_better_user_experience">Experiencia de usuario mejorada</string>
|
||||
@@ -2118,17 +2120,17 @@
|
||||
<string name="failed_to_save_servers">Error al guardar servidores</string>
|
||||
<string name="errors_in_servers_configuration">Error en la configuración del servidor.</string>
|
||||
<string name="for_chat_profile">Para el perfil de chat %s:</string>
|
||||
<string name="no_message_servers_configured">Sin servidores para mensajes.</string>
|
||||
<string name="no_media_servers_configured_for_private_routing">Sin servidores para recibir archivos.</string>
|
||||
<string name="no_media_servers_configured_for_sending">Sin servidores para enviar archivos.</string>
|
||||
<string name="no_message_servers_configured">Ningún servidor de mensajes.</string>
|
||||
<string name="no_media_servers_configured_for_private_routing">Ningún servidor para recibir archivos.</string>
|
||||
<string name="no_media_servers_configured_for_sending">Ningún servidor para enviar archivos.</string>
|
||||
<string name="connection_security">Seguridad de conexión</string>
|
||||
<string name="share_1_time_link_with_a_friend">Compartir enlace de un uso con un amigo</string>
|
||||
<string name="share_simplex_address_on_social_media">Comparte tu dirección SimpleX en redes sociales.</string>
|
||||
<string name="share_simplex_address_on_social_media">Compartir dirección SimpleX en redes sociales.</string>
|
||||
<string name="address_settings">Configuración de dirección</string>
|
||||
<string name="create_1_time_link">Crear enlace de un uso</string>
|
||||
<string name="for_social_media">Para redes sociales</string>
|
||||
<string name="simplex_address_or_1_time_link">¿Dirección SimpleX o enlace de un uso?</string>
|
||||
<string name="onboarding_choose_server_operators">Operadores de servidores</string>
|
||||
<string name="simplex_address_or_1_time_link">Dirección SimpleX o enlace de un uso?</string>
|
||||
<string name="onboarding_choose_server_operators">Selecciona operadores</string>
|
||||
<string name="onboarding_network_operators">Operadores de red</string>
|
||||
<string name="onboarding_network_operators_conditions_will_be_accepted">Las condiciones de los operadores habilitados serán aceptadas después de 30 días.</string>
|
||||
<string name="onboarding_network_operators_review_later">Revisar más tarde</string>
|
||||
@@ -2140,7 +2142,7 @@
|
||||
<string name="operator_servers_title">%s servidores</string>
|
||||
<string name="operator_conditions_will_be_accepted_on">Las condiciones serán aceptadas el: %s.</string>
|
||||
<string name="operator_conditions_of_use">Condiciones de uso</string>
|
||||
<string name="operator_use_for_messages_private_routing">Para enrutamiento privado</string>
|
||||
<string name="operator_use_for_messages_private_routing">Para el enrutamiento privado</string>
|
||||
<string name="error_adding_server">Error al añadir servidor</string>
|
||||
<string name="operator_open_changes">Abrir cambios</string>
|
||||
<string name="operator_open_conditions">Abrir condiciones</string>
|
||||
@@ -2160,20 +2162,20 @@
|
||||
<string name="operator_conditions_accepted_for_enabled_operators_on">Las condiciones serán aceptadas automáticamente para los operadores habilitados el: %s.</string>
|
||||
<string name="onboarding_network_operators_continue">Continuar</string>
|
||||
<string name="operator_conditions_failed_to_load">El texto con las condiciones actuales no se ha podido cargar, puedes revisar las condiciones en el siguiente enlace:</string>
|
||||
<string name="v6_2_network_decentralization_enable_flux">Habilita Flux</string>
|
||||
<string name="v6_2_network_decentralization_enable_flux">Habilitar Flux</string>
|
||||
<string name="error_accepting_operator_conditions">Error al aceptar las condiciones</string>
|
||||
<string name="error_updating_server_title">Error al actualizar el servidor</string>
|
||||
<string name="v6_2_network_decentralization_enable_flux_reason">para mejorar la privacidad de los metadatos.</string>
|
||||
<string name="v6_2_network_decentralization_enable_flux_reason">para mayor privacidad de los metadatos.</string>
|
||||
<string name="message_deleted_or_not_received_error_title">Ningún mensaje</string>
|
||||
<string name="smp_servers_new_server">Servidor nuevo</string>
|
||||
<string name="no_media_servers_configured">Sin servidores para archivos y multimedia.</string>
|
||||
<string name="no_message_servers_configured_for_private_routing">Sin servidores para enrutamiento privado.</string>
|
||||
<string name="no_message_servers_configured_for_receiving">Sin servidores para recibir mensajes.</string>
|
||||
<string name="no_media_servers_configured">Ningún servidor de archivos y multimedia.</string>
|
||||
<string name="no_message_servers_configured_for_private_routing">Ningún servidor para enrutamiento privado.</string>
|
||||
<string name="no_message_servers_configured_for_receiving">Ningún servidor para recibir mensajes.</string>
|
||||
<string name="operator_server_alert_title">Servidor del operador</string>
|
||||
<string name="or_to_share_privately">O para compartir en privado</string>
|
||||
<string name="onboarding_select_network_operators_to_use">Selecciona los operadores de red a utilizar</string>
|
||||
<string name="share_address_publicly">Campartir dirección públicamente</string>
|
||||
<string name="simplex_address_and_1_time_links_are_safe_to_share">Compartir los enlaces de un uso y las direcciones SimpleX es seguro a través de cualquier medio.</string>
|
||||
<string name="simplex_address_and_1_time_links_are_safe_to_share">Compartir enlaces de un uso y direcciones SimpleX es seguro a través de cualquier medio.</string>
|
||||
<string name="onboarding_network_operators_update">Actualizar</string>
|
||||
<string name="operator_website">Sitio web</string>
|
||||
<string name="your_servers">Tus servidores</string>
|
||||
@@ -2189,65 +2191,25 @@
|
||||
<string name="connection_error_quota">Mensajes no entregados</string>
|
||||
<string name="one_time_link_can_be_used_with_one_contact_only"><![CDATA[Los enlaces de un uso pueden ser usados <i>solamente con un contacto</i> - comparte en persona o mediante cualquier aplicación de mensajería.]]></string>
|
||||
<string name="you_can_set_connection_name_to_remember">Puedes añadir un nombre a la conexión para recordar a quién corresponde.</string>
|
||||
<string name="onboarding_network_operators_app_will_use_different_operators">La aplicación protege tu privacidad mediante el uso de diferentes operadores en cada conversación.</string>
|
||||
<string name="onboarding_network_operators_app_will_use_different_operators">Cuando está habilitado más de un operador de red, la aplicación usa servidores de diferentes operadores para cada conversación.</string>
|
||||
<string name="onboarding_network_operators_conditions_you_can_configure">Puedes configurar los operadores desde Servidores y Redes.</string>
|
||||
<string name="operators_conditions_accepted_for"><![CDATA[Las condiciones se han aceptado para el(los) operador(s): <b>%s</b>.]]></string>
|
||||
<string name="operators_conditions_will_be_accepted_for"><![CDATA[Las condiciones serán aceptadas para el/los operador(es): <b>%s</b>.]]></string>
|
||||
<string name="operator_conditions_accepted_for_some"><![CDATA[Las condiciones ya se han aceptado para el/los siguiente(s) operador(s): <b>%s</b>.]]></string>
|
||||
<string name="operator_same_conditions_will_be_applied"><![CDATA[Las mismas condiciones se aplican al operador <b>%s</b>.]]></string>
|
||||
<string name="operator_same_conditions_will_be_applied"><![CDATA[Las mismas condiciones se aplicarán al operador <b>%s</b>.]]></string>
|
||||
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[Las condiciones serán aceptadas para el/los operador(es): <b>%s</b>.]]></string>
|
||||
<string name="operators_conditions_will_also_apply"><![CDATA[Estas condiciones también se aplican para: <b>%s</b>.]]></string>
|
||||
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[Para usar los servidores de <b>%s</b>, debes aceptar las condiciones de uso.]]></string>
|
||||
<string name="xftp_servers_per_user">Servidores para archivos nuevos en tu perfil</string>
|
||||
<string name="v6_2_network_decentralization_descr">¡Segundo operador predefinido!</string>
|
||||
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[Para usar los servidores de <b>%s</b>, acepta las condiciones de uso.]]></string>
|
||||
<string name="xftp_servers_per_user">Los servidores para archivos nuevos en tu perfil actual</string>
|
||||
<string name="v6_2_network_decentralization_descr">El segundo operador predefinido!</string>
|
||||
<string name="onboarding_network_operators_configure_via_settings">Puedes configurar los servidores a través de su configuración.</string>
|
||||
<string name="to_protect_against_your_link_replaced_compare_codes">Para protegerte contra una sustitución del enlace, puedes comparar los códigos de seguridad con tu contacto.</string>
|
||||
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[Las mismas condiciones se aplican a el/los operador(es) <b>%s</b>.]]></string>
|
||||
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[Las mismas condiciones se aplicarán a el/los operador(es) <b>%s</b>.]]></string>
|
||||
<string name="operator_conditions_will_be_applied"><![CDATA[Estas condiciones también se aplican para: <b>%s</b>.]]></string>
|
||||
<string name="onboarding_network_operators_app_will_use_for_routing">Por ejemplo, si tu contacto recibe a través de un servidor de SimpleX Chat, tu aplicación enviará a través de un servidor de Flux.</string>
|
||||
<string name="onboarding_network_operators_app_will_use_for_routing">Si por ejemplo recibes los mensajes a través de un servidor de SimpleX Chat, la aplicación usará uno de Flux para el enrutamiento privado.</string>
|
||||
<string name="address_creation_instruction">Pulsa Crear dirección SimpleX en el menú para crearla más tarde.</string>
|
||||
<string name="connection_error_quota_desc">La conexión ha alcanzado el límite de mensajes no entregados. es posible que tu contacto esté desconectado.</string>
|
||||
<string name="message_deleted_or_not_received_error_desc">El mensaje ha sido borrado o aún no se ha recibido.</string>
|
||||
<string name="remote_hosts_section">Móvil remoto</string>
|
||||
<string name="chat_archive">O importa desde un archivo</string>
|
||||
<string name="direct_messages_are_prohibited_in_chat">Mensajes directos entre miembros de este chat no permitidos.</string>
|
||||
<string name="xiaomi_ignore_battery_optimization"><![CDATA[<b>En dispositivos Xiaomi:</b> por favor, habilita el Autoinicio en los ajustes del sistema para que las notificaciones funcionen.]]></string>
|
||||
<string name="maximum_message_size_reached_text">Por favor, reduce el tamaño del mensaje y envíalo de nuevo.</string>
|
||||
<string name="maximum_message_size_reached_non_text">Por favor, reduce el tamaño del mensaje o elimina los archivos y envíalo de nuevo.</string>
|
||||
<string name="maximum_message_size_reached_forwarding">Puedes copiar y reducir el tamaño del mensaje para enviarlo.</string>
|
||||
<string name="add_your_team_members_to_conversations">Añade a los miembros de tu equipo a las conversaciones.</string>
|
||||
<string name="onboarding_notifications_mode_battery">Notificaciones y batería</string>
|
||||
<string name="invite_to_chat_button">Invitar al chat</string>
|
||||
<string name="button_add_friends">Añadir amigos</string>
|
||||
<string name="button_add_team_members">Añadir miembros del equipo</string>
|
||||
<string name="delete_chat_for_all_members_cannot_undo_warning">El chat será eliminado para todos los miembros. ¡No podrá deshacerse!</string>
|
||||
<string name="button_delete_chat">Eliminar chat</string>
|
||||
<string name="delete_chat_question">¿Eliminar chat?</string>
|
||||
<string name="button_leave_chat">Salir del chat</string>
|
||||
<string name="delete_chat_for_self_cannot_undo_warning">El chat será eliminado para tí. ¡No podrá deshacerse!</string>
|
||||
<string name="only_chat_owners_can_change_prefs">Sólo los propietarios del chat pueden cambiar las preferencias.</string>
|
||||
<string name="member_will_be_removed_from_chat_cannot_be_undone">El miembro será eliminado del chat. ¡No podrá deshacerse!</string>
|
||||
<string name="member_role_will_be_changed_with_notification_chat">El rol cambiará a %s. Todos serán notificados.</string>
|
||||
<string name="you_will_stop_receiving_messages_from_this_chat_chat_history_will_be_preserved">Dejarás de recibir mensajes de este chat. El historial del chat se conserva.</string>
|
||||
<string name="how_it_helps_privacy">Cómo ayuda a la privacidad</string>
|
||||
<string name="onboarding_network_operators_cant_see_who_talks_to_whom">Cuando está habilitado más de un operador, ninguno dispone de los metadatos para conocer quién se comunica con quién.</string>
|
||||
<string name="chat_main_profile_sent">Tu perfil de chat será enviado a los miembros de chat</string>
|
||||
<string name="v6_2_business_chats">Chats empresariales</string>
|
||||
<string name="leave_chat_question">¿Salir del chat?</string>
|
||||
<string name="v6_2_business_chats_descr">Privacidad para tus clientes.</string>
|
||||
<string name="display_name_accepted_invitation">invitación aceptada</string>
|
||||
<string name="display_name_requested_to_connect">solicitado para conectar</string>
|
||||
<string name="business_address">Dirección empresarial</string>
|
||||
<string name="onboarding_notifications_mode_periodic_desc_short">Comprobar mensajes cada 10 min.</string>
|
||||
<string name="onboarding_notifications_mode_off_desc_short">Sin servicio en segundo plano</string>
|
||||
<string name="info_row_chat">Chat</string>
|
||||
<string name="chat_bottom_bar">Barra de herramientas accesible</string>
|
||||
<string name="direct_messages_are_prohibited">Mensajes directos entre miembros no permitidos.</string>
|
||||
<string name="connect_plan_you_are_already_connected_with_vName"><![CDATA[Ya estás conectado con <b>%1$s</b>.]]></string>
|
||||
<string name="connect_plan_chat_already_exists">¡El chat ya existe!</string>
|
||||
<string name="onboarding_network_about_operators">Acerca de los operadores</string>
|
||||
<string name="onboarding_notifications_mode_service_desc_short">La aplicación siempre funciona en segundo plano</string>
|
||||
<string name="all_message_and_files_e2e_encrypted"><![CDATA[Todos los mensajes y archivos son enviados <b>cifrados de extremo a extremo</b> y con seguridad postcuántica en mensajes directos.]]></string>
|
||||
<string name="maximum_message_size_title">¡Mensaje demasiado largo!</string>
|
||||
<string name="onboarding_network_operators_simplex_flux_agreement">Simplex Chat y Flux han acordado incluir servidores operados por Flux en la aplicación.</string>
|
||||
</resources>
|
||||
@@ -1951,7 +1951,8 @@
|
||||
<string name="servers_info">Infos serveurs</string>
|
||||
<string name="servers_info_target">Afficher les informations pour</string>
|
||||
<string name="servers_info_starting_from">À partir de %s.</string>
|
||||
<string name="servers_info_private_data_disclaimer">À partir de %s. \nToutes les données restent confinées dans votre appareil.</string>
|
||||
<string name="servers_info_private_data_disclaimer">À partir de %s.
|
||||
\nToutes les données restent confinées dans votre appareil.</string>
|
||||
<string name="servers_info_statistics_section_header">Statistiques</string>
|
||||
<string name="servers_info_subscriptions_total">Total</string>
|
||||
<string name="xftp_server">Serveur XFTP</string>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<string name="send_disappearing_message_30_seconds">30 másodperc</string>
|
||||
<string name="one_time_link_short">Egyszer használható meghívó-hivatkozás</string>
|
||||
<string name="contact_wants_to_connect_via_call">%1$s szeretne kapcsolatba lépni Önnel ezen keresztül:</string>
|
||||
<string name="about_simplex_chat">SimpleX Chat névjegye</string>
|
||||
<string name="about_simplex_chat">A SimpleX Chatről</string>
|
||||
<string name="chat_item_ttl_day">1 nap</string>
|
||||
<string name="abort_switch_receiving_address">Címváltoztatás megszakítása</string>
|
||||
<string name="about_simplex">A SimpleXről</string>
|
||||
@@ -52,7 +52,7 @@
|
||||
<string name="v4_5_transport_isolation_descr">A csevegési profillal (alapértelmezett), vagy a kapcsolattal (BÉTA).</string>
|
||||
<string name="connect__a_new_random_profile_will_be_shared">Egy új véletlenszerű profil lesz megosztva.</string>
|
||||
<string name="allow_voice_messages_only_if">A hangüzenetek küldése csak abban az esetben van engedélyezve, ha az ismerőse is engedélyezi.</string>
|
||||
<string name="app_version_code">Az alkalmazás összeállítási száma: %s</string>
|
||||
<string name="app_version_code">Az alkalmazás build száma: %s</string>
|
||||
<string name="audio_video_calls">Hang- és videóhívások</string>
|
||||
<string name="network_settings">Speciális hálózati beállítások</string>
|
||||
<string name="allow_your_contacts_to_send_voice_messages">A hangüzenetek küldése engedélyezve van az ismerősei számára.</string>
|
||||
@@ -106,7 +106,7 @@
|
||||
<string name="v5_1_self_destruct_passcode_descr">A jelkód megadása után az összes adat törlésre kerül.</string>
|
||||
<string name="icon_descr_video_asked_to_receive">Felkérték a videó fogadására</string>
|
||||
<string name="block_member_button">Letiltás</string>
|
||||
<string name="v5_2_more_things">Néhány további dolog</string>
|
||||
<string name="v5_2_more_things">Még néhány dolog</string>
|
||||
<string name="authentication_cancelled">Hitelesítés visszavonva</string>
|
||||
<string name="allow_to_send_files">A fájlok- és a médiatartalmak küldése engedélyezve van.</string>
|
||||
<string name="users_delete_all_chats_deleted">Az összes csevegés és üzenet törlésre kerül - ez a művelet nem vonható vissza!</string>
|
||||
@@ -460,7 +460,7 @@
|
||||
<string name="error_sending_message">Hiba az üzenet küldésekor</string>
|
||||
<string name="la_enter_app_passcode">Jelkód megadása</string>
|
||||
<string name="for_everybody">Mindenkinél</string>
|
||||
<string name="encryption_renegotiation_error">Titkosítás-újraegyeztetési hiba</string>
|
||||
<string name="encryption_renegotiation_error">Titkosítás újraegyeztetési hiba</string>
|
||||
<string name="error_encrypting_database">Hiba az adatbázis titkosításakor</string>
|
||||
<string name="error_deleting_group">Hiba a csoport törlésekor</string>
|
||||
<string name="exit_without_saving">Kilépés mentés nélkül</string>
|
||||
@@ -507,7 +507,7 @@
|
||||
<string name="v4_6_group_moderation">Csoport moderáció</string>
|
||||
<string name="choose_file">Fájl</string>
|
||||
<string name="group_link">Csoporthivatkozás</string>
|
||||
<string name="snd_conn_event_ratchet_sync_required">a titkosítás újraegyeztetése szükséges a következőhöz: %s</string>
|
||||
<string name="snd_conn_event_ratchet_sync_required">titkosítás-újraegyeztetés szükséges ehhez: %s</string>
|
||||
<string name="failed_to_active_user_title">Hiba a profilváltáskor!</string>
|
||||
<string name="settings_experimental_features">Kísérleti funkciók</string>
|
||||
<string name="receipts_contacts_enable_keep_overrides">Engedélyezés (felülírások megtartásával)</string>
|
||||
@@ -532,7 +532,7 @@
|
||||
<string name="fix_connection_question">Kapcsolat javítása?</string>
|
||||
<string name="files_and_media">Fájlok és médiatartalmak</string>
|
||||
<string name="section_title_for_console">KONZOLHOZ</string>
|
||||
<string name="alert_text_encryption_renegotiation_failed">Nem sikerült a titkosítást újraegyeztetni.</string>
|
||||
<string name="alert_text_encryption_renegotiation_failed">Sikertelen titkosítás-újraegyeztetés.</string>
|
||||
<string name="error_deleting_user">Hiba a felhasználó-profil törlésekor</string>
|
||||
<string name="fix_connection_not_supported_by_group_member">Csoporttag általi javítás nem támogatott</string>
|
||||
<string name="enter_welcome_message">Üdvözlőüzenet megadása…</string>
|
||||
@@ -610,7 +610,7 @@
|
||||
<string name="feature_enabled">engedélyezve</string>
|
||||
<string name="error_loading_details">Hiba a részletek betöltésekor</string>
|
||||
<string name="error_accepting_contact_request">Hiba történt a kapcsolatkérés elfogadásakor</string>
|
||||
<string name="snd_conn_event_ratchet_sync_allowed">a titkosítás újraegyeztetése engedélyezve van a következőhöz: %s</string>
|
||||
<string name="snd_conn_event_ratchet_sync_allowed">titkosítás újraegyeztetése engedélyezett %s számára</string>
|
||||
<string name="conn_event_ratchet_sync_required">titkosítás-újraegyeztetés szükséges</string>
|
||||
<string name="v4_6_hidden_chat_profiles">Rejtett csevegési profilok</string>
|
||||
<string name="files_and_media_section">Fájlok és médiatartalmak</string>
|
||||
@@ -1332,7 +1332,7 @@
|
||||
<string name="this_link_is_not_a_valid_connection_link">Ez nem egy érvényes kapcsolattartási hivatkozás!</string>
|
||||
<string name="to_verify_compare">A végpontok közötti titkosítás hitelesítéséhez hasonlítsa össze (vagy olvassa be a QR-kódot) az ismerőse eszközén lévő kóddal.</string>
|
||||
<string name="you_must_use_the_most_recent_version_of_database">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ősétől.</string>
|
||||
<string name="messages_section_description">Ez a beállítás csak az Ön jelenlegi csevegő-profiljában lévő üzenetekre vonatkozik</string>
|
||||
<string name="messages_section_description">Ez a beállítás csak a jelenlegi csevegési profiljában lévő üzenetekre vonatkozik</string>
|
||||
<string name="you_are_invited_to_group_join_to_connect_with_group_members">Meghívást kapott a csoportba. Csatlakozzon, hogy kapcsolatba léphessen a csoport tagjaival.</string>
|
||||
<string name="alert_message_no_group">Ez a csoport már nem létezik.</string>
|
||||
<string name="connect_plan_you_are_already_joining_the_group_via_this_link">A csatlakozás már folyamatban van a csoporthoz ezen a hivatkozáson keresztül.</string>
|
||||
@@ -1350,7 +1350,7 @@
|
||||
<string name="you_will_be_connected_when_your_connection_request_is_accepted">Akkor lesz kapcsolódva, ha a kapcsolatkérése elfogadásra kerül, várjon, vagy ellenőrizze később!</string>
|
||||
<string name="voice_messages_are_prohibited">A hangüzenetek küldése le van tiltva.</string>
|
||||
<string name="system_restricted_background_in_call_warn"><![CDATA[A háttérben való hívásokhoz válassza ki az <b>Alkalmazás akkumulátor-használata</b> / <b>Korlátlan</b> módot az alkalmazás beállításaiban.]]></string>
|
||||
<string name="v5_4_link_mobile_desktop_descr">Biztonságos kvantumálló-protokollon keresztül.</string>
|
||||
<string name="v5_4_link_mobile_desktop_descr">Biztonságos kvantumrezisztens-protokollon keresztül.</string>
|
||||
<string name="v5_1_better_messages_descr">- 5 perc hosszúságú hangüzenetek.\n- egyéni üzenet-eltűnési időkorlát.\n- előzmények szerkesztése.</string>
|
||||
<string name="open_on_mobile_and_scan_qr_code"><![CDATA[Válassza a <i>Társítás számítógéppel</i> menüt a hordozható eszköz alkalmazásban és olvassa be a QR-kódot.]]></string>
|
||||
<string name="sender_at_ts">%s ekkor: %s</string>
|
||||
@@ -1465,7 +1465,7 @@
|
||||
<string name="v4_4_live_messages_desc">A címzettek a beírás közben látják a szövegváltozásokat.</string>
|
||||
<string name="store_passphrase_securely">Tárolja el biztonságosan jelmondatát, mert ha elveszíti azt, NEM tudja megváltoztatni.</string>
|
||||
<string name="passphrase_will_be_saved_in_settings">A jelmondat a beállításokban egyszerű szövegként kerül tárolásra, miután megváltoztatta vagy újraindította az alkalmazást.</string>
|
||||
<string name="smp_servers_per_user">Az Ön jelenlegi csevegőprofiljához tartozó új kapcsolatok kiszolgálói</string>
|
||||
<string name="smp_servers_per_user">A jelenlegi csevegési profilhoz tartozó új kapcsolatok kiszolgálói</string>
|
||||
<string name="receiving_via">Fogadás ezen keresztül:</string>
|
||||
<string name="store_passphrase_securely_without_recover">Tárolja el biztonságosan jelmondát, mert ha elveszti azt, akkor NEM férhet hozzá a csevegéshez.</string>
|
||||
<string name="member_role_will_be_changed_with_invitation">A szerepkör meg fog változni erre: %s. A tag új meghívót fog kapni.</string>
|
||||
@@ -1477,7 +1477,7 @@
|
||||
<string name="settings_is_storing_in_clear_text">A jelmondat a beállításokban egyszerű szövegként van tárolva.</string>
|
||||
<string name="terminal_always_visible">Konzol megjelenítése új ablakban</string>
|
||||
<string name="alert_text_msg_bad_hash">Az előző üzenet hasító értéke különbözik.</string>
|
||||
<string name="receipts_section_description">Ezek a beállítások csak az Ön jelenlegi csevegő-profiljára vonatkoznak</string>
|
||||
<string name="receipts_section_description">Ezek a beállítások csak a jelenlegi profiljára vonatkoznak</string>
|
||||
<string name="loading_remote_file_desc">Várjon, amíg a fájl betöltődik a társított hordozható eszközről</string>
|
||||
<string name="read_more_in_github_with_link"><![CDATA[További információ a <font color="#0088ff">GitHub tárolónkban</font>.]]></string>
|
||||
<string name="error_showing_content">hiba a tartalom megjelenítésekor</string>
|
||||
@@ -1653,7 +1653,7 @@
|
||||
<string name="migrate_from_device_to_another_device">Átköltöztetés egy másik eszközre</string>
|
||||
<string name="migrate_from_device_archive_will_be_deleted"><![CDATA[<b>Figyelmeztetés:</b> az archívum törlésre kerül.]]></string>
|
||||
<string name="migrate_from_another_device">Átköltöztetés egy másik eszközről</string>
|
||||
<string name="v5_6_quantum_resistant_encryption">Kvantumálló titkosítás</string>
|
||||
<string name="v5_6_quantum_resistant_encryption">Kvantumrezisztens titkosítás</string>
|
||||
<string name="migrate_from_device_try_again">Megpróbálhatja még egyszer.</string>
|
||||
<string name="migrate_from_device_migration_complete">Átköltöztetés befejezve</string>
|
||||
<string name="v5_6_app_data_migration_descr">Átköltöztetés egy másik eszközre QR-kód használatával.</string>
|
||||
@@ -1661,12 +1661,12 @@
|
||||
<string name="migrate_from_device_using_on_two_device_breaks_encryption"><![CDATA[<b>Megjegyzés:</b> ha két eszközön is ugyanazt az adatbázist használja, akkor biztonsági védelemként megszakítja az ismerőseitől érkező üzenetek visszafejtését.]]></string>
|
||||
<string name="migrate_to_device_try_again">Megpróbálhatja még egyszer.</string>
|
||||
<string name="invalid_file_link">Érvénytelen hivatkozás</string>
|
||||
<string name="conn_event_enabled_pq">végpontok közötti kvantumálló titkosítás</string>
|
||||
<string name="conn_event_enabled_pq">végpontok közötti kvantumrezisztens titkosítás</string>
|
||||
<string name="e2ee_info_no_pq_short">Ez a csevegés végpontok közötti titkosítással védett.</string>
|
||||
<string name="auth_open_migration_to_another_device">Átköltöztetési párbeszédablak megnyitása</string>
|
||||
<string name="e2ee_info_pq_short">Ez a csevegés végpontok közötti kvantumálló tikosítással védett.</string>
|
||||
<string name="e2ee_info_pq_short">Ez a csevegés végpontok közötti kvantumrezisztens tikosítással védett.</string>
|
||||
<string name="e2ee_info_no_pq"><![CDATA[Az üzeneteket, fájlokat és hívásokat <b>végpontok közötti titkosítással</b>, sérülés utáni titkosság-védelemmel és -helyreállítással, továbbá visszautasítással védi.]]></string>
|
||||
<string name="e2ee_info_pq"><![CDATA[Az üzenetek, fájlok és hívások <b>végpontok közötti kvantumálló titkosítással</b> sérülés utáni titkosságvédelemmel, visszautasítással és feltörés utáni helyreállítással vannak védve.]]></string>
|
||||
<string name="e2ee_info_pq"><![CDATA[Az üzeneteket, fájlokat és hívásokat <b>végpontok közötti kvantumrezisztens titkosítással</b>, sérülés utáni titkosság-védelemmel és -helyreállítással, továbbá visszautasítással védi.]]></string>
|
||||
<string name="error_showing_desktop_notification">Hiba az értesítés megjelenítésekor, lépjen kapcsolatba a fejlesztőkkel.</string>
|
||||
<string name="permissions_find_in_settings_and_grant">Keresse meg ezt az engedélyt az Android beállításaiban, és adja meg kézzel.</string>
|
||||
<string name="permissions_grant_in_settings">Engedélyezés a beállításokban</string>
|
||||
@@ -1754,7 +1754,7 @@
|
||||
<string name="network_smp_proxy_fallback_prohibit_description">Ne küldjön üzeneteket közvetlenül, még akkor sem, ha az Ön kiszolgálója vagy a célkiszolgáló nem támogatja a privát útválasztást.</string>
|
||||
<string name="without_tor_or_vpn_ip_address_will_be_visible_to_file_servers">Tor vagy VPN nélkül az IP-címe látható lesz a fájlkiszolgálók számára.</string>
|
||||
<string name="settings_section_title_files">FÁJLOK</string>
|
||||
<string name="protect_ip_address">IP-cím védelme</string>
|
||||
<string name="protect_ip_address">IP-cím védelem</string>
|
||||
<string name="app_will_ask_to_confirm_unknown_file_servers">Az alkalmazás kérni fogja az ismeretlen fájlkiszolgálókról történő letöltések megerősítését (kivéve, ha az .onion vagy a SOCKS proxy engedélyezve van).</string>
|
||||
<string name="file_not_approved_title">Ismeretlen kiszolgálók!</string>
|
||||
<string name="file_not_approved_descr">Tor vagy VPN nélkül az IP-címe látható lesz az XFTP-közvetítő-kiszolgálók számára:\n%1$s.</string>
|
||||
@@ -1784,7 +1784,7 @@
|
||||
<string name="color_sent_quote">Válaszüzenet-buborék színe</string>
|
||||
<string name="chat_theme_set_default_theme">Alapértelmezett téma beállítása</string>
|
||||
<string name="color_mode_system">Rendszer</string>
|
||||
<string name="color_wallpaper_tint">Háttérkép kiemelőszíne</string>
|
||||
<string name="color_wallpaper_tint">Háttérkép kiemelés</string>
|
||||
<string name="color_wallpaper_background">Háttérkép háttérszíne</string>
|
||||
<string name="color_primary_variant2">További kiemelés 2</string>
|
||||
<string name="theme_destination_app_theme">Alkalmazás téma</string>
|
||||
@@ -1835,7 +1835,7 @@
|
||||
<string name="servers_info_sessions_connecting">Kapcsolódás</string>
|
||||
<string name="servers_info_sessions_errors">Hibák</string>
|
||||
<string name="servers_info_subscriptions_connections_pending">Függőben</string>
|
||||
<string name="servers_info_private_data_disclaimer">Statisztikagyűjtés kezdete: %s.\nAz összes adat privát módon van tárolva az Ön eszközén.</string>
|
||||
<string name="servers_info_private_data_disclaimer">Statisztikagyűjtés kezdete: %s.\nAz összes adat biztonságban van az eszközén.</string>
|
||||
<string name="servers_info_messages_sent">Elküldött üzenetek</string>
|
||||
<string name="servers_info_proxied_servers_section_header">Proxyzott kiszolgálók</string>
|
||||
<string name="servers_info_reconnect_servers_title">Újrakapcsolódás a kiszolgálókhoz?</string>
|
||||
@@ -1906,7 +1906,7 @@
|
||||
<string name="servers_info_transport_sessions_section_header">Munkamenetek átvitele</string>
|
||||
<string name="servers_info_subscriptions_total">Összes kapcsolat</string>
|
||||
<string name="servers_info_statistics_section_header">Statisztikák</string>
|
||||
<string name="servers_info_target">Információk megjelenítése a következőhöz:</string>
|
||||
<string name="servers_info_target">Információk megjelenítése ehhez:</string>
|
||||
<string name="network_error_broker_version_desc">A kiszolgáló verziója nem kompatibilis az alkalmazással: %1$s.</string>
|
||||
<string name="servers_info_proxied_servers_section_footer">Ön nem kapcsolódik ezekhez a kiszolgálókhoz. A privát útválasztás az üzenetek kézbesítésére szolgál.</string>
|
||||
<string name="servers_info_subscriptions_connections_subscribed">Aktív kapcsolatok száma</string>
|
||||
@@ -2109,13 +2109,13 @@
|
||||
<string name="create_1_time_link">Egyszer használható meghívó-hivatkozás létrehozása</string>
|
||||
<string name="onboarding_choose_server_operators">Kiszolgáló-üzemeltetők</string>
|
||||
<string name="onboarding_network_operators">Hálózati üzemeltetők</string>
|
||||
<string name="onboarding_network_operators_app_will_use_different_operators">Az alkalmazás úgy védi az adatait, hogy minden egyes beszélgetésben más-más üzemeltetőt használ.</string>
|
||||
<string name="onboarding_network_operators_app_will_use_for_routing">Például, ha az Ön ismerőse egy SimpleX Chat-kiszolgálón keresztül fogadja az üzeneteket, az Ön alkalmazása egy Flux-kiszolgálón keresztül fogja azokat kézbesíteni.</string>
|
||||
<string name="onboarding_network_operators_app_will_use_different_operators">Amikor egynél több hálózati üzemeltető van engedélyezve, akkor az alkalmazás minden egyes beszélgetéshez a különböző üzemeltetők kiszolgálóit használja.</string>
|
||||
<string name="onboarding_network_operators_app_will_use_for_routing">Ha például a SimpleX Chat kiszolgálón keresztül fogadja az üzeneteket, az alkalmazás a Flux egyik kiszolgálóját használja a privát útválasztáshoz.</string>
|
||||
<string name="onboarding_select_network_operators_to_use">Válassza ki a használni kívánt hálózati üzemeltetőket.</string>
|
||||
<string name="onboarding_network_operators_review_later">Felülvizsgálat később</string>
|
||||
<string name="onboarding_network_operators_configure_via_settings">A kiszolgálókat a „Hálózat és kiszolgálók” menüben konfigurálhatja.</string>
|
||||
<string name="onboarding_network_operators_configure_via_settings">A kiszolgálókat a beállításokon keresztül konfigurálhatja.</string>
|
||||
<string name="onboarding_network_operators_conditions_will_be_accepted">A feltételek 30 nap elteltével lesznek elfogadva az engedélyezett üzemeltetők számára.</string>
|
||||
<string name="onboarding_network_operators_conditions_you_can_configure">Az üzemeltetőket a „Hálózat és kiszolgálók” menüben konfigurálhatja.</string>
|
||||
<string name="onboarding_network_operators_conditions_you_can_configure">Az üzemeltetőket a „Hálózat és kiszolgálók” beállításaban konfigurálhatja.</string>
|
||||
<string name="onboarding_network_operators_update">Frissítés</string>
|
||||
<string name="onboarding_network_operators_continue">Folytatás</string>
|
||||
<string name="operator_review_conditions">Feltételek felülvizsgálata</string>
|
||||
@@ -2133,14 +2133,14 @@
|
||||
<string name="use_servers_of_operator_x">%s használata</string>
|
||||
<string name="operator_conditions_failed_to_load">A jelenlegi feltételek szövegét nem lehetett betölteni, a feltételeket ezen a hivatkozáson keresztül vizsgálhatja felül:</string>
|
||||
<string name="operator_conditions_accepted_for_some"><![CDATA[A feltételek már el lettek fogadva a következő üzemeltető(k) számára: <b>%s</b>.]]></string>
|
||||
<string name="operator_same_conditions_will_be_applied"><![CDATA[Ugyanezek a feltételek lesznek elfogadva a következő üzemeltető számára: <b>%s</b>.]]></string>
|
||||
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[Ugyanezek a feltételek lesznek elfogadva a következő üzemeltető(k) számára: <b>%s</b>.]]></string>
|
||||
<string name="operator_same_conditions_will_be_applied"><![CDATA[Ugyanezek a feltételek vonatkoznak a következő üzemeltetőre is: <b>%s</b>.]]></string>
|
||||
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[Ugyanezek a feltételek lesznek elfogadva a következő üzemeltető(k)re is: <b>%s</b>.]]></string>
|
||||
<string name="operator_conditions_will_be_applied"><![CDATA[Ezek a feltételek lesznek elfogadva a következő számára is: <b>%s</b>.]]></string>
|
||||
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[A feltételek el lesznek fogadva a következő üzemeltető(k) számára: <b>%s</b>.]]></string>
|
||||
<string name="operators_conditions_will_also_apply"><![CDATA[Ezek a feltételek lesznek elfogadva a következő számára is: <b>%s</b>.]]></string>
|
||||
<string name="accept_conditions">Feltételek elfogadása</string>
|
||||
<string name="operator_conditions_of_use">Használati feltételek</string>
|
||||
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[A(z) <b>%s</b> kiszolgálók használatához fogadja el a használati feltételeket.]]></string>
|
||||
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[A(z) <b>%s</b> kiszolgálóinak használatához fogadja el a használati feltételeket.]]></string>
|
||||
<string name="operator_use_for_messages">Használat az üzenetekhez</string>
|
||||
<string name="operator_use_for_messages_receiving">A fogadáshoz</string>
|
||||
<string name="operator_use_for_messages_private_routing">A privát útválasztáshoz</string>
|
||||
@@ -2171,9 +2171,9 @@
|
||||
<string name="remote_hosts_section">Távoli hordozható eszközök</string>
|
||||
<string name="xiaomi_ignore_battery_optimization"><![CDATA[<b>Xiaomi eszközök</b>: engedélyezze az automatikus indítást a rendszerbeállításokban, hogy az értesítések működjenek.]]></string>
|
||||
<string name="maximum_message_size_reached_forwarding">A küldéshez másolhatja és csökkentheti az üzenet méretét.</string>
|
||||
<string name="add_your_team_members_to_conversations">Adja hozzá a kollégáit a beszélgetésekhez.</string>
|
||||
<string name="add_your_team_members_to_conversations">Adja hozzá csapattagjait a beszélgetésekhez.</string>
|
||||
<string name="business_address">Üzleti cím</string>
|
||||
<string name="all_message_and_files_e2e_encrypted"><![CDATA[Az összes üzenet és fájl <b>végpontok közötti titkosítással</b>, a közvetlen üzenetek továbbá kvantumálló titkosítással is rendelkeznek.]]></string>
|
||||
<string name="all_message_and_files_e2e_encrypted"><![CDATA[Az összes üzenet és fájl <b>végpontok közötti titkosítással</b>, a közvetlen üzenetek továbbá kvantumrezisztens titkosítással is rendelkeznek.]]></string>
|
||||
<string name="how_it_helps_privacy">Hogyan segíti az adatvédelmet</string>
|
||||
<string name="onboarding_notifications_mode_off_desc_short">Nincs háttérszolgáltatás</string>
|
||||
<string name="onboarding_notifications_mode_battery">Értesítések és akkumulátor</string>
|
||||
@@ -2183,7 +2183,7 @@
|
||||
<string name="button_delete_chat">Csevegés törlése</string>
|
||||
<string name="invite_to_chat_button">Meghívás a csevegésbe</string>
|
||||
<string name="button_add_friends">Barátok hozzáadása</string>
|
||||
<string name="button_add_team_members">Kollégák hozzáadása</string>
|
||||
<string name="button_add_team_members">Csapattagok hozzáadása</string>
|
||||
<string name="delete_chat_for_all_members_cannot_undo_warning">A csevegés minden tag számára törlésre kerül - ezt a műveletet nem lehet visszavonni!</string>
|
||||
<string name="delete_chat_for_self_cannot_undo_warning">A csevegés törlésre kerül az Ön számára - ezt a műveletet nem lehet visszavonni!</string>
|
||||
<string name="delete_chat_question">Csevegés törlése?</string>
|
||||
@@ -2204,13 +2204,4 @@
|
||||
<string name="maximum_message_size_title">Az üzenet túl nagy!</string>
|
||||
<string name="maximum_message_size_reached_non_text">Csökkentse az üzenet méretét vagy távolítsa el a médiát, és küldje el újra.</string>
|
||||
<string name="direct_messages_are_prohibited_in_chat">A tagok közötti közvetlen üzenetek le vannak tiltva ebben a csevegésben.</string>
|
||||
<string name="onboarding_network_operators_cant_see_who_talks_to_whom">Amikor egynél több üzemeltető van engedélyezve, akkor egyik sem rendelkezik olyan metaadatokkal, amelyekből megtudható, hogy ki kivel kommunikál.</string>
|
||||
<string name="display_name_accepted_invitation">elfogadott meghívó</string>
|
||||
<string name="display_name_requested_to_connect">kérelmezve a kapcsolódáshoz</string>
|
||||
<string name="onboarding_network_about_operators">Az üzemeltetőkről</string>
|
||||
<string name="onboarding_network_operators_simplex_flux_agreement">A SimpleX Chat és a Flux megállapodást kötött arról, hogy a Flux által üzemeltetett kiszolgálókat beépítik az alkalmazásba.</string>
|
||||
<string name="encryption_renegotiation_in_progress">A titkosítás újraegyeztetése folyamatban van.</string>
|
||||
<string name="sync_connection_desc">A kapcsolat titkosítása újraegyeztetést igényel.</string>
|
||||
<string name="sync_connection_confirm">Javítás</string>
|
||||
<string name="sync_connection_question">Kapcsolat javítása?</string>
|
||||
</resources>
|
||||
@@ -1347,655 +1347,4 @@
|
||||
<string name="conn_level_desc_direct">langsung</string>
|
||||
<string name="sending_via">Kirim via</string>
|
||||
<string name="receiving_via">Terima via</string>
|
||||
<string name="icon_descr_contact_checked">Kontak diperiksa</string>
|
||||
<string name="invite_prohibited">Tak dapat undang kontak!</string>
|
||||
<string name="snd_conn_event_ratchet_sync_agreed">enkripsi disetujui untuk %s</string>
|
||||
<string name="group_member_status_creator">pembuat</string>
|
||||
<string name="group_member_status_connecting">menghubungkan</string>
|
||||
<string name="delete_group_question">Hapus grup?</string>
|
||||
<string name="delete_group_for_all_members_cannot_undo_warning">Grup akan dihapus untuk semua anggota - ini tidak dapat dibatalkan!</string>
|
||||
<string name="create_group_link">Buat tautan grup</string>
|
||||
<string name="group_member_status_introduced">menghubungkan (diperkenalkan)</string>
|
||||
<string name="rcv_conn_event_verification_code_reset">kode keamanan berubah</string>
|
||||
<string name="num_contacts_selected">%d kontak dipilih</string>
|
||||
<string name="group_link">Tautan grup</string>
|
||||
<string name="past_member_vName">Anggota lama %1$s</string>
|
||||
<string name="conn_event_disabled_pq">enkripsi end-to-end standar</string>
|
||||
<string name="conn_event_enabled_pq">enkripsi e2e quantum resistant</string>
|
||||
<string name="group_member_status_intro_invitation">menghubungkan (undangan perkenalan)</string>
|
||||
<string name="group_member_status_unknown_short">tidak dikenal</string>
|
||||
<string name="button_delete_chat">Hapus obrolan</string>
|
||||
<string name="button_add_friends">Tambah teman</string>
|
||||
<string name="button_add_team_members">Tambah anggota tim</string>
|
||||
<string name="button_leave_group">Keluar grup</string>
|
||||
<string name="group_member_status_announced">menghubungkan (diumumkan)</string>
|
||||
<string name="group_member_status_accepted">menghubungkan (diterima)</string>
|
||||
<string name="button_delete_group">Hapus grup</string>
|
||||
<string name="delete_group_for_self_cannot_undo_warning">Grup akan dihapus untuk Anda - ini tidak dapat dibatalkan!</string>
|
||||
<string name="delete_chat_question">Hapus obrolan?</string>
|
||||
<string name="delete_chat_for_all_members_cannot_undo_warning">Obrolan akan dihapus untuk semua anggota - ini tidak dapat dibatalkan!</string>
|
||||
<string name="delete_chat_for_self_cannot_undo_warning">Obrolan akan dihapus untuk Anda - ini tidak dapat dibatalkan!</string>
|
||||
<string name="button_leave_chat">Tinggalkan obrolan</string>
|
||||
<string name="button_edit_group_profile">Edit profil grup</string>
|
||||
<string name="button_welcome_message">Pesan sambutan</string>
|
||||
<string name="button_add_members">Undang anggota</string>
|
||||
<string name="group_info_member_you">anda: %1$s</string>
|
||||
<string name="invite_prohibited_description">Anda mencoba mengundang kontak yang telah Anda bagikan profil samaran ke grup tempat Anda menggunakan profil utama</string>
|
||||
<string name="invite_to_group_button">Undang ke grup</string>
|
||||
<string name="invite_to_chat_button">Undang ke obrolan</string>
|
||||
<string name="select_contacts">Pilih kontak</string>
|
||||
<string name="skip_inviting_button">Lewati undang anggota</string>
|
||||
<string name="address_or_1_time_link">Alamat atau tautan 1-kali?</string>
|
||||
<string name="developer_options_section">Opsi pengembang</string>
|
||||
<string name="onboarding_choose_server_operators">Operator server</string>
|
||||
<string name="onboarding_network_operators">Operator jaringan</string>
|
||||
<string name="onboarding_network_operators_app_will_use_different_operators">Aplikasi ini melindungi privasi Anda dengan gunakan operator yang berbeda setiap percakapan.</string>
|
||||
<string name="onboarding_network_operators_conditions_will_be_accepted">Ketentuan akan diterima untuk operator yang diaktifkan setelah 30 hari.</string>
|
||||
<string name="settings_developer_tools">Alat pengembang</string>
|
||||
<string name="settings_section_title_chat_colors">Warna obrolan</string>
|
||||
<string name="rcv_group_event_member_created_contact">terhubung langsung</string>
|
||||
<string name="remote_ctrl_error_bad_state">Koneksi ke desktop dalam kondisi buruk</string>
|
||||
<string name="confirm_delete_contact_question">Konfirmasi hapus kontak?</string>
|
||||
<string name="send_disappearing_message_custom_time">Waktu kustom</string>
|
||||
<string name="choose_file_title">Pilih berkas</string>
|
||||
<string name="you_can_connect_to_simplex_chat_founder"><![CDATA[Anda dapat <font color="#0088ff">terhubung ke pengembang SimpleX Chat untuk mengajukan pertanyaan dan menerima pembaruan</font>.]]></string>
|
||||
<string name="clear_chat_question">Hapus obrolan?</string>
|
||||
<string name="network_proxy_auth_mode_no_auth">Jangan gunakan kredensial dengan proxy.</string>
|
||||
<string name="disable_onion_hosts_when_not_supported"><![CDATA[Atur <i>Gunakan host .onion</i> ke Tidak jika proxy SOCKS tidak mendukung.]]></string>
|
||||
<string name="socks_proxy_setting_limitations"><![CDATA[<b>Harap diperhatikan</b>: relay pesan dan berkas terhubung melalui proxy SOCKS. Panggilan dan pengiriman pratinjau tautan menggunakan koneksi langsung.]]></string>
|
||||
<string name="network_smp_proxy_fallback_prohibit_description">JANGAN mengirim pesan secara langsung, meskipun server Anda atau server tujuan tidak mendukung routing pribadi.</string>
|
||||
<string name="display_name_cannot_contain_whitespace">Nama tampilan tidak boleh terdapat spasi.</string>
|
||||
<string name="you_can_change_it_later">Frasa sandi acak disimpan dalam pengaturan sebagai teks biasa.\nAnda dapat mengubahnya nanti.</string>
|
||||
<string name="setup_database_passphrase">Pasang frasa sandi basis data</string>
|
||||
<string name="database_will_be_encrypted">Basis data akan dienkripsi.</string>
|
||||
<string name="database_upgrade">Peningkatan basis data</string>
|
||||
<string name="confirm_database_upgrades">Konfirmasi peningkatan basis data</string>
|
||||
<string name="downgrade_and_open_chat">Turunkan dan buka obrolan</string>
|
||||
<string name="rcv_group_event_changed_member_role">mengubah hak %s menjadi %s</string>
|
||||
<string name="share_text_deleted_at">Dihapus pada: %s</string>
|
||||
<string name="delete_profile">Hapus profil</string>
|
||||
<string name="connect_plan_this_is_your_link_for_group_vName"><![CDATA[Ini adalah tautan untuk grup <b>%1$s</b>!]]></string>
|
||||
<string name="migrate_from_device_cancel_migration">Batal pindah</string>
|
||||
<string name="chunks_uploaded">Potongan diunggah</string>
|
||||
<string name="info_view_connect_button">hubungkan</string>
|
||||
<string name="conversation_deleted">Percakapan dihapus!</string>
|
||||
<string name="disappearing_message">Pesan sementara</string>
|
||||
<string name="clear_note_folder_question">Hapus catatan pribadi?</string>
|
||||
<string name="chat_is_stopped">Obrolan dihentikan</string>
|
||||
<string name="database_passphrase">Frasa sandi basis data</string>
|
||||
<string name="confirm_new_passphrase">Konfirmasi frasa sandi baru…</string>
|
||||
<string name="change_database_passphrase_question">Ubah frasa sandi basis data?</string>
|
||||
<string name="cannot_access_keychain">Tidak dapat mengakses Keystore untuk menyimpan kata sandi basis data</string>
|
||||
<string name="database_downgrade">Penurunan basis data</string>
|
||||
<string name="chat_is_stopped_indication">Obrolan dihentikan</string>
|
||||
<string name="button_create_group_link">Buat tautan</string>
|
||||
<string name="info_row_deleted_at">Dihapus di</string>
|
||||
<string name="direct_messages_are_prohibited_in_chat">Pesan pribadi antar anggota dilarang dalam obrolan ini.</string>
|
||||
<string name="delivery_receipts_title">Tanda terima pengirim!</string>
|
||||
<string name="this_device_version"><![CDATA[<i>(perangkat ini v%s)</i>]]></string>
|
||||
<string name="devices">Perangkat</string>
|
||||
<string name="remote_ctrl_was_disconnected_title">Koneksi terputus</string>
|
||||
<string name="copy_error">Gagal salin</string>
|
||||
<string name="discover_on_network">Temukan melalui jaringan lokal</string>
|
||||
<string name="remote_ctrl_error_bad_invitation">Kode undangan desktop salah</string>
|
||||
<string name="remote_ctrl_error_disconnected">Desktop terputus</string>
|
||||
<string name="connect_plan_you_are_already_connecting_to_vName"><![CDATA[Anda sudah terhubung ke <b>%1$s</b>.]]></string>
|
||||
<string name="migrate_to_device_confirm_network_settings">Konfirmasi pengaturan jaringan</string>
|
||||
<string name="chunks_deleted">Potongan dihapus</string>
|
||||
<string name="chunks_downloaded">Potongan diunduh</string>
|
||||
<string name="downloaded_files">Berkas terunduh</string>
|
||||
<string name="download_errors">Gagal unduh</string>
|
||||
<string name="delete_files_and_media_all">Hapus semua berkas</string>
|
||||
<string name="delete_files_and_media_question">Hapus berkas dan media?</string>
|
||||
<string name="total_files_count_and_size">%d berkas dengan total ukuran %s</string>
|
||||
<string name="chat_database_exported_continue">Lanjutkan</string>
|
||||
<string name="rcv_direct_event_contact_deleted">kontak dihapus</string>
|
||||
<string name="alert_title_cant_invite_contacts">Tak dapat undang kontak!</string>
|
||||
<string name="info_row_disappears_at">Terhapus pada</string>
|
||||
<string name="share_text_disappears_at">Terhapus pada: %s</string>
|
||||
<string name="item_info_current">(saat ini)</string>
|
||||
<string name="operator_same_conditions_will_be_applied"><![CDATA[Ketentuan yang sama akan berlaku untuk operator <b>%s</b>.]]></string>
|
||||
<string name="appearance_bars_blur_radius">Buram</string>
|
||||
<string name="appearance_in_app_bars_alpha">Transparansi</string>
|
||||
<string name="appearance_app_toolbars">Bilah alat aplikasi</string>
|
||||
<string name="v6_0_connection_servers_status_descr">Status koneksi dan server.</string>
|
||||
<string name="remote_ctrl_error_bad_version">Desktop memiliki versi tidak didukung. Pastikan Anda gunakan versi yang sama di kedua perangkat</string>
|
||||
<string name="migrate_to_device_chat_migrated">Obrolan dipindahkan!</string>
|
||||
<string name="migrate_from_device_delete_database_from_device">Hapus basis data dari perangkat ini</string>
|
||||
<string name="delete_files_and_media_for_all_users">Hapus berkas untuk semua profil obrolan</string>
|
||||
<string name="info_row_created_at">Dibuat di</string>
|
||||
<string name="onboarding_notifications_mode_off_desc"><![CDATA[<b>Terbaik untuk baterai</b>. Anda akan menerima notifikasi saat aplikasi sedang berjalan (TANPA layanan latar belakang).]]></string>
|
||||
<string name="onboarding_notifications_mode_periodic_desc"><![CDATA[<b>Baik untuk baterai</b>. Aplikasi memeriksa pesan setiap 10 menit. Anda mungkin melewatkan panggilan atau pesan penting.]]></string>
|
||||
<string name="settings_section_title_chat_theme">Tema obrolan</string>
|
||||
<string name="chat_database_section">BASIS DATA OBROLAN</string>
|
||||
<string name="set_password_to_export_desc">Basis data dienkripsi menggunakan frasa sandi acak. Harap ubah frasa sandi sebelum mengekspor.</string>
|
||||
<string name="chat_database_exported_title">Basis data obrolan diekspor</string>
|
||||
<string name="current_passphrase">Frasa sandi saat ini…</string>
|
||||
<string name="impossible_to_recover_passphrase"><![CDATA[<b>Harap diperhatikan</b>: Anda TIDAK akan dapat pulihkan atau ubah frasa sandi jika hilang.]]></string>
|
||||
<string name="encrypted_with_random_passphrase">Basis data dienkripsi menggunakan frasa sandi acak, Anda dapat mengubahnya.</string>
|
||||
<string name="database_will_be_encrypted_and_passphrase_stored_in_settings">Basis data akan dienkripsi dan frasa sandi disimpan dalam pengaturan.</string>
|
||||
<string name="mtr_error_no_down_migration">versi database lebih baru daripada aplikasi, tetapi tidak ada penurunan migrasi untuk: %s</string>
|
||||
<string name="rcv_group_events_count">%d acara grup</string>
|
||||
<string name="rcv_conn_event_switch_queue_phase_completed">mengubah alamat untuk Anda</string>
|
||||
<string name="info_row_database_id">ID basis data</string>
|
||||
<string name="cant_call_contact_connecting_wait_alert_text">Menghubungkan ke kontak, harap tunggu atau periksa nanti!</string>
|
||||
<string name="users_delete_question">Hapus profil obrolan?</string>
|
||||
<string name="deletion_errors">Gagal hapus</string>
|
||||
<string name="xiaomi_ignore_battery_optimization"><![CDATA[<b>Perangkat Xiaomi</b>: harap aktifkan Autostart di pengaturan sistem agar notifikasi berfungsi.]]></string>
|
||||
<string name="clear_chat_button">Hapus obrolan</string>
|
||||
<string name="connect_via_link_or_qr">Hubungkan via tautan / kode QR</string>
|
||||
<string name="connect__a_new_random_profile_will_be_shared">Profil acak baru akan dibagikan.</string>
|
||||
<string name="connection_request_sent">Permintaan koneksi terkirim!</string>
|
||||
<string name="connection_security">Keamanan koneksi</string>
|
||||
<string name="correct_name_to">Nama telah benar untuk %s?</string>
|
||||
<string name="onboarding_network_operators_conditions_you_can_configure">Anda dapat konfigurasi operator di pengaturan Jaringan dan server.</string>
|
||||
<string name="database_error">Kesalahan basis data</string>
|
||||
<string name="passphrase_is_different">Frasa sandi basis data berbeda dengan yang disimpan di Keystore.</string>
|
||||
<string name="change_member_role_question">Ubah hak grup?</string>
|
||||
<string name="operators_conditions_will_also_apply"><![CDATA[Ketentuan ini juga berlaku untuk: <b>%s</b>.]]></string>
|
||||
<string name="operator_conditions_of_use">Ketentuan Penggunaan</string>
|
||||
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[Ketentuan akan diterima untuk operator: <b>%s</b>.]]></string>
|
||||
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[Untuk gunakan server <b>%s</b>, terima ketentuan penggunaan.]]></string>
|
||||
<string name="operator_added_message_servers">Menambahkan server pesan</string>
|
||||
<string name="delete_chat_profile">Hapus profil obrolan</string>
|
||||
<string name="v6_2_business_chats">Obrolan bisnis</string>
|
||||
<string name="remote_ctrl_disconnected_with_reason">Terputus dikarenakan: %s</string>
|
||||
<string name="remote_host_disconnected_from"><![CDATA[Terputus dari ponsel <b>%s</b> dengan alasan: %s]]></string>
|
||||
<string name="remote_ctrl_error_busy">Desktop sedang sibuk</string>
|
||||
<string name="rcv_group_event_group_deleted">grup dihapus</string>
|
||||
<string name="profile_update_event_contact_name_changed">kontak %1$s diubah menjadi %2$s</string>
|
||||
<string name="calls_prohibited_alert_title">Panggilan dilarang!</string>
|
||||
<string name="operator_conditions_accepted_for_some"><![CDATA[Ketentuan sudah diterima untuk operator berikut: <b>%s</b>.]]></string>
|
||||
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[Ketentuan yang sama akan berlaku untuk operator: <b>%s</b>.]]></string>
|
||||
<string name="operator_conditions_failed_to_load">Teks ketentuan saat ini tidak dapat dimuat, Anda dapat meninjau ketentuan via tautan ini:</string>
|
||||
<string name="direct_messages_are_prohibited">Pesan pribadi antar anggota dilarang.</string>
|
||||
<string name="migrate_from_device_choose_migrate_from_another_device"><![CDATA[Pilih <i>Pindah dari perangkat lain</i> pada perangkat baru dan pindai kode QR.]]></string>
|
||||
<string name="delete_contact_all_messages_deleted_cannot_undo_warning">Kontak dan semua pesan akan dihapus - ini tidak dapat dibatalkan!</string>
|
||||
<string name="delete_contact_cannot_undo_warning">Kontak akan dihapus - ini tidak dapat dibatalkan!</string>
|
||||
<string name="delete_contact_question">Hapus kontak?</string>
|
||||
<string name="contact_deleted">Kontak dihapus!</string>
|
||||
<string name="delete_without_notification">Hapus tanpa notifikasi</string>
|
||||
<string name="switch_receiving_address_question">Ubah alamat penerima?</string>
|
||||
<string name="icon_descr_server_status_disconnected">Terputus</string>
|
||||
<string name="add_contact_button_to_create_link_or_connect_via_link"><![CDATA[<b>Tambahkan kontak</b>: untuk buat tautan undangan baru, atau terhubung via tautan yang Anda terima.]]></string>
|
||||
<string name="delete_pending_connection__question">Hapus koneksi yang tertunda?</string>
|
||||
<string name="alert_title_contact_connection_pending">Kontak belum terhubung!</string>
|
||||
<string name="delete_address">Hapus alamat</string>
|
||||
<string name="delete_database">Hapus basis data</string>
|
||||
<string name="chat_database_deleted">Basis data obrolan dihapus</string>
|
||||
<string name="chat_database_imported">Basis data obrolan diimpor</string>
|
||||
<string name="send_receipts_disabled">Dimatikan</string>
|
||||
<string name="v6_0_connection_servers_status">Kontrol jaringan Anda</string>
|
||||
<string name="connecting_to_desktop">Menghubungkan ke desktop</string>
|
||||
<string name="desktop_app_version_is_incompatible">Versi aplikasi desktop %s tidak kompatibel dengan aplikasi ini.</string>
|
||||
<string name="remote_host_error_bad_state"><![CDATA[Koneksi ponsel <b>%s</b> dalam kondisi buruk]]></string>
|
||||
<string name="auth_device_authentication_is_not_enabled_you_can_turn_on_in_settings_once_enabled">Autentikasi perangkat tidak diaktifkan. Anda dapat aktifkan SimpleX Lock via Pengaturan, setelah mengaktifkan autentikasi perangkat.</string>
|
||||
<string name="auth_unavailable">Autentikasi tidak tersedia</string>
|
||||
<string name="auth_confirm_credential">Konfirmasi kredensial Anda</string>
|
||||
<string name="auth_device_authentication_is_disabled_turning_off">Autentikasi perangkat mati. Matikan SimpleX Lock.</string>
|
||||
<string name="auth_disable_simplex_lock">Matikan Kunci SimpleX</string>
|
||||
<string name="snd_error_relay">Kesalahan server tujuan: %1$s</string>
|
||||
<string name="delete_and_notify_contact">Hapus dan beritahu kontak</string>
|
||||
<string name="button_delete_contact">Hapus kontak</string>
|
||||
<string name="icon_descr_cancel_live_message">Batal pesan langsung</string>
|
||||
<string name="confirm_verb">Konfirmasi</string>
|
||||
<string name="create_group">Buat grup rahasia</string>
|
||||
<string name="camera_not_available">Kamera tidak tersedia</string>
|
||||
<string name="desktop_scan_QR_code_from_app_via_scan_QR_code"><![CDATA[💻 desktop: pindai kode QR yang ditampilkan dari aplikasi, via <b>Pindai kode QR</b>.]]></string>
|
||||
<string name="mobile_tap_open_in_mobile_app_then_tap_connect_in_app"><![CDATA[📱 ponsel: ketuk <b>Buka di aplikasi seluler</b>, lalu ketuk <b>Hubungkan</b> di aplikasi.]]></string>
|
||||
<string name="delete_contact_menu_action">Hapus</string>
|
||||
<string name="delete_group_menu_action">Hapus</string>
|
||||
<string name="icon_descr_cancel_link_preview">batal pratinjau tautan</string>
|
||||
<string name="icon_descr_close_button">Tombol tutup</string>
|
||||
<string name="icon_descr_email">Email</string>
|
||||
<string name="if_you_cannot_meet_in_person_scan_QR_in_video_call_or_ask_for_invitation_link"><![CDATA[Jika Anda tidak dapat bertemu langsung, Anda dapat <b>pindai kode QR dalam panggilan video</b>, atau kontak Anda dapat bagikan tautan undangan.]]></string>
|
||||
<string name="read_more_in_user_guide_with_link"><![CDATA[Lebih lanjut di <font color="#0088ff">Panduan Pengguna</font>.]]></string>
|
||||
<string name="enable_receipts_all">Aktifkan</string>
|
||||
<string name="onboarding_network_operators_cant_see_who_talks_to_whom">Ketika lebih dari satu operator diaktifkan, tidak satupun dari mereka memiliki metadata untuk mengetahui siapa yang berkomunikasi.</string>
|
||||
<string name="chat_is_running">Obrolan sedang berjalan</string>
|
||||
<string name="database_will_be_encrypted_and_passphrase_stored">Basis data akan dienkripsi dan frasa sandi disimpan di Keystore.</string>
|
||||
<string name="rcv_group_event_changed_your_role">mengubah hak Anda jadi %s</string>
|
||||
<string name="snd_conn_event_switch_queue_phase_changing">mengubah alamat…</string>
|
||||
<string name="snd_conn_event_switch_queue_phase_changing_for_member">mengubah alamat untuk %s…</string>
|
||||
<string name="share_text_database_id">ID basis data: %d</string>
|
||||
<string name="operator_added_xftp_servers">Menambahkan media dan berkas server</string>
|
||||
<string name="connect_plan_chat_already_exists">Obrolan sudah ada!</string>
|
||||
<string name="database_encrypted">Basis data dienkripsi!</string>
|
||||
<string name="database_encryption_will_be_updated_in_settings">Frasa sandi enkripsi basis data akan diperbarui dan disimpan di pengaturan.</string>
|
||||
<string name="database_encryption_will_be_updated">Frasa sandi enkripsi basis data akan diperbarui dan disimpan di Keystore.</string>
|
||||
<string name="mtr_error_different">migrasi berbeda di aplikasi/basis data: %s / %s</string>
|
||||
<string name="if_you_cannot_meet_in_person_show_QR_in_video_call_or_via_another_channel"><![CDATA[Jika Anda tidak dapat bertemu langsung, <b>tunjukkan kode QR dalam panggilan video</b>, atau bagikan tautan.]]></string>
|
||||
<string name="dont_create_address">Jangan buat alamat</string>
|
||||
<string name="servers_info_details">Rincian</string>
|
||||
<string name="connections">Koneksi</string>
|
||||
<string name="connected_to_mobile">Terhubung ke ponsel</string>
|
||||
<string name="dont_enable_receipts">Jangan aktifkan</string>
|
||||
<string name="open_on_mobile_and_scan_qr_code"><![CDATA[Buka <i>Gunakan dari desktop</i> di aplikasi seluler dan pindai kode QR.]]></string>
|
||||
<string name="desktop_device">Desktop</string>
|
||||
<string name="display_name_accepted_invitation">undangan diterima</string>
|
||||
<string name="display_name_requested_to_connect">diminta untuk terhubung</string>
|
||||
<string name="auth_open_chat_profiles">Ubah profil obrolan</string>
|
||||
<string name="snd_error_quota">Kapasitas terlampaui - penerima tidak menerima pesan yang dikirim sebelumnya.</string>
|
||||
<string name="one_time_link_can_be_used_with_one_contact_only"><![CDATA[tautan 1-kali dapat digunakan <i>hanya dengan satu kontak</i> - bagikan secara langsung atau melalui messenger apa pun.]]></string>
|
||||
<string name="copied">Disalin ke papan klip</string>
|
||||
<string name="share_one_time_link">Buat tautan undangan satu-kali</string>
|
||||
<string name="maximum_supported_file_size">Saat ini maksimal ukuran berkas adalah %1$s.</string>
|
||||
<string name="you_can_also_connect_by_clicking_the_link"><![CDATA[Anda juga dapat terhubung dengan ketuk tautan. Jika tautan terbuka di peramban, ketuk <b>Buka di ponsel</b>.]]></string>
|
||||
<string name="address_settings">Pengaturan alamat</string>
|
||||
<string name="add_your_team_members_to_conversations">Tambahkan anggota tim Anda ke percakapan.</string>
|
||||
<string name="business_address">Alamat bisnis</string>
|
||||
<string name="all_message_and_files_e2e_encrypted"><![CDATA[Semua pesan dan berkas dikirim <b>dengan enkripsi end-to-end</b>, dengan keamanan post-quantum dalam pesan pribadi.]]></string>
|
||||
<string name="create_1_time_link">Buat tautan 1-kali</string>
|
||||
<string name="onboarding_notifications_mode_battery">Notifikasi dan baterai</string>
|
||||
<string name="onboarding_notifications_mode_off_desc_short">Tiada layanan latar belakang</string>
|
||||
<string name="onboarding_notifications_mode_service_desc_short">Aplikasi selalu berjalan di latar belakang</string>
|
||||
<string name="onboarding_notifications_mode_periodic_desc_short">Periksa pesan setiap 10 menit</string>
|
||||
<string name="onboarding_select_network_operators_to_use">Pilih operator jaringan yang akan digunakan.</string>
|
||||
<string name="onboarding_network_operators_app_will_use_for_routing">Misalnya, jika kontak Anda menerima pesan melalui server SimpleX Chat, aplikasi Anda akan mengirimkannya melalui server Flux.</string>
|
||||
<string name="how_it_helps_privacy">Bagaimana ini membantu privasi</string>
|
||||
<string name="onboarding_network_operators_continue">Lanjutkan</string>
|
||||
<string name="onboarding_network_operators_configure_via_settings">Anda dapat konfigurasi server di pengaturan.</string>
|
||||
<string name="read_more_in_github_with_link"><![CDATA[Lebih lengkap di <font color="#0088ff">repositori GitHub</font> kami.]]></string>
|
||||
<string name="onboarding_network_operators_review_later">Nilai nanti</string>
|
||||
<string name="onboarding_network_operators_update">Perbarui</string>
|
||||
<string name="migrate_to_device_downloading_details">Rincian tautan unduhan</string>
|
||||
<string name="network_session_mode_user_description"><![CDATA[Koneksi TCP terpisah (dan kredensial SOCKS) akan digunakan <b>untuk setiap profil obrolan yang Anda miliki di aplikasi</b>.]]></string>
|
||||
<string name="network_session_mode_entity_description"><![CDATA[Koneksi TCP terpisah (dan kredensial SOCKS) akan digunakan <b>untuk setiap kontak dan anggota grup</b>.\n<b>Harap diperhatikan</b>: jika Anda memiliki banyak koneksi, konsumsi baterai dan lalu lintas dapat jauh lebih tinggi dan beberapa koneksi mungkin gagal.]]></string>
|
||||
<string name="app_check_for_updates_download_started">Mengunduh pembaruan aplikasi, jangan tutup aplikasi</string>
|
||||
<string name="app_check_for_updates_notice_disable">Mati</string>
|
||||
<string name="create_simplex_address">Buat alamat SimpleX</string>
|
||||
<string name="create_address_and_let_people_connect">Buat alamat agar orang dapat terhubung dengan Anda.</string>
|
||||
<string name="continue_to_next_step">Lanjutkan</string>
|
||||
<string name="delete_image">Hapus gambar</string>
|
||||
<string name="edit_image">Edit gambar</string>
|
||||
<string name="onboarding_notifications_mode_service_desc"><![CDATA[<b>Mengonsumsi banyak baterai</b>! Aplikasi selalu berjalan di latar belakang – notifikasi ditampilkan secara instan.]]></string>
|
||||
<string name="settings_message_shape_corner">Sudut</string>
|
||||
<string name="dont_show_again">Jangan tampilkan lagi</string>
|
||||
<string name="migrate_from_device_confirm_upload">Konfirmasi unggahan</string>
|
||||
<string name="migrate_from_device_archive_and_upload">Arsip dan unggah</string>
|
||||
<string name="deleted">Dihapus</string>
|
||||
<string name="desktop_connection_terminated">Koneksi dihentikan</string>
|
||||
<string name="desktop_address">Alamat desktop</string>
|
||||
<string name="desktop_devices">Perangkat desktop</string>
|
||||
<string name="onboarding_network_about_operators">Tentang operator</string>
|
||||
<string name="onboarding_network_operators_simplex_flux_agreement">SimpleX Chat dan Flux membuat kesepakatan untuk sertakan server yang dioperasikan Flux ke aplikasi.</string>
|
||||
<string name="delete_chat_profile_question">Hapus profil obrolan?</string>
|
||||
<string name="chat_is_stopped_you_should_transfer_database">Obrolan dihentikan. Jika Anda sudah gunakan basis data ini di perangkat lain, Anda harus transfer kembali sebelum memulai obrolan.</string>
|
||||
<string name="database_passphrase_will_be_updated">Frasa sandi enkripsi basis data akan diperbarui.</string>
|
||||
<string name="database_passphrase_is_required">Frasa sandi basis data diperlukan untuk membuka obrolan.</string>
|
||||
<string name="operator_conditions_will_be_applied"><![CDATA[Ketentuan ini juga berlaku untuk: <b>%s</b>.]]></string>
|
||||
<string name="migrate_from_device_you_must_not_start_database_on_two_device"><![CDATA[Anda <b>tidak</b> boleh menggunakan basis data yang sama pada dua perangkat.]]></string>
|
||||
<string name="connected_to_desktop">Terhubung ke desktop</string>
|
||||
<string name="connect_to_desktop">Hubungkan ke desktop</string>
|
||||
<string name="custom_time_unit_days">hari</string>
|
||||
<string name="decryption_errors">kesalahan dekripsi</string>
|
||||
<string name="disconnect_remote_hosts">Putuskan ponsel</string>
|
||||
<string name="multicast_discoverable_via_local_network">Dapat ditemukan melalui jaringan lokal</string>
|
||||
<string name="duplicates_label">duplikat</string>
|
||||
<string name="v6_1_better_security">Keamanan yang lebih baik ✅</string>
|
||||
<string name="v6_1_customizable_message_descr">Bentuk pesan yang dapat disesuaikan.</string>
|
||||
<string name="migrate_from_device_using_on_two_device_breaks_encryption"><![CDATA[<b>Harap diperhatikan</b>: menggunakan database yang sama pada dua perangkat akan merusak dekripsi pesan dari koneksi Anda, sebagai perlindungan keamanan.]]></string>
|
||||
<string name="connect_plan_you_are_already_joining_the_group_vName"><![CDATA[Anda sudah bergabung dengan grup <b>%1$s</b>.]]></string>
|
||||
<string name="rcv_conn_event_switch_queue_phase_changing">mengubah alamat…</string>
|
||||
<string name="delete_link_question">Hapus tautan?</string>
|
||||
<string name="delete_link">Hapus tautan</string>
|
||||
<string name="disconnect_remote_host">Putuskan</string>
|
||||
<string name="servers_info_connected_servers_section_header">Server terhubung</string>
|
||||
<string name="delete_member_message__question">Hapus pesan anggota?</string>
|
||||
<string name="v6_1_message_dates_descr">Tanggal pesan lebih baik.</string>
|
||||
<string name="new_desktop"><![CDATA[<i>(baru)</i>]]></string>
|
||||
<string name="connect_plan_you_are_already_connected_with_vName"><![CDATA[Anda sudah terhubung dengan <b>%1$s</b>.]]></string>
|
||||
<string name="created">Dibuat</string>
|
||||
<string name="delete_members_messages__question">Hapus %d pesan anggota?</string>
|
||||
<string name="failed_to_save_servers">Gagal simpan server</string>
|
||||
<string name="ci_status_other_error">Galat: %1$s</string>
|
||||
<string name="image_will_be_received_when_contact_completes_uploading">Gambar akan diterima setelah kontak Anda selesai mengunggah.</string>
|
||||
<string name="error_saving_file">Gagal simpan berkas</string>
|
||||
<string name="invalid_contact_link">Tautan tidak valid!</string>
|
||||
<string name="app_check_for_updates_button_install">Instal pembaruan</string>
|
||||
<string name="hide_dev_options">Sembunyikan:</string>
|
||||
<string name="for_social_media">Untuk media sosial</string>
|
||||
<string name="settings_experimental_features">Fitur eksperimental</string>
|
||||
<string name="auth_enable_simplex_lock">Aktifkan Kunci SimpleX</string>
|
||||
<string name="file_error_no_file">Berkas tidak ditemukan - kemungkinan besar telah dihapus atau dibatalkan.</string>
|
||||
<string name="file_error_relay">Kesalahan berkas server: %1$s</string>
|
||||
<string name="in_reply_to">Balasan untuk</string>
|
||||
<string name="choose_file">Berkas</string>
|
||||
<string name="gallery_image_button">gambar</string>
|
||||
<string name="favorite_chat">Favorit</string>
|
||||
<string name="exit_without_saving">Keluar tanpa menyimpan</string>
|
||||
<string name="file_with_path">Berkas: %s</string>
|
||||
<string name="group_invitation_item_description">undangan ke grup %1$s</string>
|
||||
<string name="alert_title_no_group">Grup tidak ditemukan!</string>
|
||||
<string name="error_sending_message_contact_invitation">Gagal kirim undangan</string>
|
||||
<string name="action_button_add_members">Undang</string>
|
||||
<string name="info_row_file_status">Status berkas</string>
|
||||
<string name="error_changing_role">Gagal ganti hak</string>
|
||||
<string name="error_removing_member">Gagal hapus anggota</string>
|
||||
<string name="incognito">Samaran</string>
|
||||
<string name="incognito_info_protects">Mode samaran melindungi privasi Anda dengan menggunakan profil acak baru untuk setiap kontak.</string>
|
||||
<string name="error_enabling_delivery_receipts">Gagal aktifkan tanda terima pengirim!</string>
|
||||
<string name="enter_this_device_name">Masukkan nama perangkat ini…</string>
|
||||
<string name="migrate_to_device_import_failed">Impor gagal</string>
|
||||
<string name="migrate_to_device_error_downloading_archive">Gagal unduh arsipan</string>
|
||||
<string name="migrate_from_device_exported_file_doesnt_exist">Berkas yang diekspor tidak ada</string>
|
||||
<string name="migrate_from_device_finalize_migration">Selesaikan migrasi</string>
|
||||
<string name="servers_info_reset_stats_alert_error_title">Gagal atur ulang statistik</string>
|
||||
<string name="error_importing_database">Gagal impor basis data obrolan</string>
|
||||
<string name="error_deleting_database">Gagal hapus basis data obrolan</string>
|
||||
<string name="files_and_media_section">Berkas dan media</string>
|
||||
<string name="encrypt_database_question">Enkripsi basis data?</string>
|
||||
<string name="incompatible_database_version">Versi basis data tidak kompatibel</string>
|
||||
<string name="section_title_for_console">UNTUK KONSOL</string>
|
||||
<string name="connect_plan_group_already_exists">Grup sudah ada!</string>
|
||||
<string name="migrate_to_device_enter_passphrase">Masukkan frasa sandi</string>
|
||||
<string name="enable_automatic_deletion_question">Aktifkan hapus pesan otomatis?</string>
|
||||
<string name="encrypted_database">Basis data terenkripsi</string>
|
||||
<string name="invalid_migration_confirmation">Konfirmasi migrasi tidak valid</string>
|
||||
<string name="group_invitation_expired">Undangan grup kedaluwarsa</string>
|
||||
<string name="conn_event_ratchet_sync_allowed">negosiasi ulang enkripsi diperbolehkan</string>
|
||||
<string name="conn_event_ratchet_sync_required">negosiasi ulang enkripsi diperlukan</string>
|
||||
<string name="snd_conn_event_ratchet_sync_allowed">negosiasi ulang enkripsi diizinkan untuk %s</string>
|
||||
<string name="v6_2_network_decentralization_enable_flux">Aktifkan flux</string>
|
||||
<string name="v6_2_network_decentralization_enable_flux_reason">untuk privasi metadata lebih baik.</string>
|
||||
<string name="v6_2_improved_chat_navigation">Navigasi obrolan ditingkatkan</string>
|
||||
<string name="error">Galat</string>
|
||||
<string name="migrate_to_device_finalize_migration">Selesaikan migrasi pada perangkat lain.</string>
|
||||
<string name="migrate_from_device_error_verifying_passphrase">Gagal verifikasi frasa sandi:</string>
|
||||
<string name="servers_info_reconnect_server_error">Gagal hubungkan ulang server</string>
|
||||
<string name="servers_info_reconnect_servers_error">Gagal hubungkan ulang server</string>
|
||||
<string name="settings_section_title_experimenta">EKSPERIMENTAL</string>
|
||||
<string name="export_database">Ekspor basis data</string>
|
||||
<string name="import_database">Impor basis data</string>
|
||||
<string name="error_stopping_chat">Gagal hentikan obrolan</string>
|
||||
<string name="error_changing_message_deletion">Gagal ganti pengaturan</string>
|
||||
<string name="error_with_info">Galat: %s</string>
|
||||
<string name="icon_descr_group_inactive">Grup tidak aktif</string>
|
||||
<string name="alert_title_group_invitation_expired">Undangan kedaluwarsa!</string>
|
||||
<string name="snd_group_event_group_profile_updated">profil grup diperbarui</string>
|
||||
<string name="initial_member_role">Hak awal</string>
|
||||
<string name="error_creating_link_for_group">Gagal membuat tautan grup</string>
|
||||
<string name="error_deleting_link_for_group">Gagal hapus tautan grup</string>
|
||||
<string name="error_updating_link_for_group">Gagal perbarui tautan grup</string>
|
||||
<string name="error_creating_member_contact">Gagal membuat kontak anggota</string>
|
||||
<string name="user_hide">Sembunyikan</string>
|
||||
<string name="image_will_be_received_when_contact_is_online">Gambar akan diterima saat kontak Anda online, harap tunggu atau periksa nanti!</string>
|
||||
<string name="file_error">Kesalahan berkas</string>
|
||||
<string name="from_gallery_button">Dari Galeri</string>
|
||||
<string name="how_to_use_markdown">Cara menggunakan markdown</string>
|
||||
<string name="alert_message_group_invitation_expired">Undangan grup tidak lagi berlaku, telah dihapus oleh pengirim.</string>
|
||||
<string name="operator_use_for_messages_private_routing">Untuk routing pribadi</string>
|
||||
<string name="error_updating_server_title">Gagal perbarui server</string>
|
||||
<string name="enter_password_to_show">Masukkan kata sandi dalam pencarian</string>
|
||||
<string name="enter_correct_passphrase">Masukkan frasa sandi yang benar.</string>
|
||||
<string name="custom_time_unit_hours">jam</string>
|
||||
<string name="desktop_incompatible_version">Versi tidak kompatibel</string>
|
||||
<string name="servers_info_sessions_errors">Galat</string>
|
||||
<string name="snd_error_proxy">Server penerusan: %1$s\nKesalahan: %2$s</string>
|
||||
<string name="snd_error_proxy_relay">Server penerusan: %1$s\nKesalahan server tujuan: %2$s</string>
|
||||
<string name="files_and_media_prohibited">Berkas dan media dilarang!</string>
|
||||
<string name="file_will_be_received_when_contact_completes_uploading">Berkas akan diterima setelah kontak Anda selesai mengunggah.</string>
|
||||
<string name="file_will_be_received_when_contact_is_online">Berkas akan diterima saat kontak Anda online, harap tunggu atau periksa nanti!</string>
|
||||
<string name="enable_camera_access">Aktifkan akses kamera</string>
|
||||
<string name="if_you_received_simplex_invitation_link_you_can_open_in_browser">Jika Anda menerima tautan undangan SimpleX Chat, Anda dapat buka di peramban Anda:</string>
|
||||
<string name="icon_descr_help">bantuan</string>
|
||||
<string name="if_you_cant_meet_in_person">Jika Anda tidak dapat bertemu langsung, tunjukkan kode QR dalam panggilan video, atau bagikan tautan.</string>
|
||||
<string name="network_option_enable_tcp_keep_alive">Aktifkan TCP keep-alive</string>
|
||||
<string name="error_starting_chat">Gagal memulai obrolan</string>
|
||||
<string name="settings_section_title_incognito">Mode samaran</string>
|
||||
<string name="migrate_from_device_error_deleting_database">Gagal hapus basis data</string>
|
||||
<string name="invalid_QR_code">Kode QR tidak valid</string>
|
||||
<string name="error_encrypting_database">Gagal enkripsi basis data</string>
|
||||
<string name="icon_descr_server_status_error">Galat</string>
|
||||
<string name="import_database_confirmation">Impor</string>
|
||||
<string name="expired_label">kedaluwarsa</string>
|
||||
<string name="if_you_choose_to_reject_the_sender_will_not_be_notified">Jika Anda memilih menolak, pengirim TIDAK akan diberitahu.</string>
|
||||
<string name="errors_in_servers_configuration">Kesalahan dalam konfigurasi server.</string>
|
||||
<string name="for_chat_profile">Untuk profil obrolan %s:</string>
|
||||
<string name="error_accepting_operator_conditions">Gagal menerima ketentuan</string>
|
||||
<string name="app_check_for_updates_installed_successfully_title">Berhasil diinstal</string>
|
||||
<string name="hide_profile">Sembunyikan profil</string>
|
||||
<string name="enter_passphrase">Masukkan frasa sandi…</string>
|
||||
<string name="migrate_to_device_file_delete_or_link_invalid">Berkas telah dihapus atau tautan tidak valid</string>
|
||||
<string name="enter_welcome_message_optional">Masukkan pesan sambutan… (opsional)</string>
|
||||
<string name="full_name__field">Nama lengkap:</string>
|
||||
<string name="migrate_from_device_chat_should_be_stopped">Untuk melanjutkan, obrolan harus dihentikan.</string>
|
||||
<string name="snd_conn_event_ratchet_sync_required">negosiasi ulang enkripsi diperlukan untuk %s</string>
|
||||
<string name="icon_descr_expand_role">Perluas pemilihan hak</string>
|
||||
<string name="found_desktop">Ditemukan desktop</string>
|
||||
<string name="migrate_from_device_error_saving_settings">Gagal simpan pengaturan</string>
|
||||
<string name="snd_conn_event_ratchet_sync_ok">enkripsi ok untuk %s</string>
|
||||
<string name="error_exporting_chat_database">Gagal ekspor basis data obrolan</string>
|
||||
<string name="import_database_question">Impor basis data obrolan?</string>
|
||||
<string name="conn_level_desc_indirect">tidak langsung (%1$s)</string>
|
||||
<string name="error_adding_server">Gagal menambah server</string>
|
||||
<string name="migrate_from_device_error_uploading_archive">Gagal perbarui arsipan</string>
|
||||
<string name="error_blocking_member_for_all">Gagal blokir anggota untuk semua</string>
|
||||
<string name="error_saving_user_password">Gagal simpan kata sandi pengguna</string>
|
||||
<string name="invalid_file_link">Tautan tidak valid</string>
|
||||
<string name="no_message_servers_configured">Tiada server pesan.</string>
|
||||
<string name="no_message_servers_configured_for_private_routing">Tiada server untuk routing pesan pribadi.</string>
|
||||
<string name="no_media_servers_configured">Tiada server media dan berkas.</string>
|
||||
<string name="no_message_servers_configured_for_receiving">Tiada server untuk menerima pesan.</string>
|
||||
<string name="or_to_share_privately">Atau bagikan secara pribadi</string>
|
||||
<string name="save_and_notify_group_members">Simpan dan beritahu anggota grup</string>
|
||||
<string name="current_version_timestamp">%s (saat ini)</string>
|
||||
<string name="unblock_member_desc">Pesan dari %s akan ditampilkan!</string>
|
||||
<string name="auth_log_in_using_credential">Masuk dengan kredensial Anda</string>
|
||||
<string name="send_disappearing_message_send">Kirim</string>
|
||||
<string name="save_and_notify_contacts">Simpan dan beritahu kontak</string>
|
||||
<string name="alert_title_msg_bad_id">ID pesan salah</string>
|
||||
<string name="keychain_error">Kesalahan Keychain</string>
|
||||
<string name="save_passphrase_and_open_chat">Simpan frasa sandi dan buka obrolan</string>
|
||||
<string name="open_chat">Buka obrolan</string>
|
||||
<string name="restore_passphrase_not_found_desc">Frasa sandi tidak ditemukan di Keystore, silakan masukkan secara manual. Hal ini mungkin terjadi jika Anda pulihkan data aplikasi menggunakan alat cadangan. Jika tidak, silakan hubungi pengembang.</string>
|
||||
<string name="one_hand_ui">Toolbar aplikasi yang dijangkau</string>
|
||||
<string name="member_will_be_removed_from_group_cannot_be_undone">Anggota akan dihapus dari grup - ini tidak dapat dibatalkan!</string>
|
||||
<string name="network_option_protocol_timeout_per_kb">Batas waktu protokol per KB</string>
|
||||
<string name="network_option_rcv_concurrency">Menerima konkurensi</string>
|
||||
<string name="profile_password">Kata sandi profil</string>
|
||||
<string name="v4_5_italian_interface">Antarmuka Italia</string>
|
||||
<string name="link_a_mobile">Hubungkan ponsel</string>
|
||||
<string name="you_can_enable_delivery_receipts_later_alert">Anda dapat aktifkan nanti di pengaturan Privasi dan Keamanan aplikasi.</string>
|
||||
<string name="linked_desktop_options">Opsi desktop tertaut</string>
|
||||
<string name="migrate_from_device_try_again">Anda dapat mencoba lagi.</string>
|
||||
<string name="servers_info_reset_stats_alert_confirm">Reset</string>
|
||||
<string name="settings_restart_app">Mulai ulang</string>
|
||||
<string name="restart_the_app_to_use_imported_chat_database">Mulai ulang aplikasi untuk gunakan basis data obrolan yang diimpor.</string>
|
||||
<string name="restore_database">Pulihkan cadangan basis data</string>
|
||||
<string name="database_restore_error">Gagal pulihkan basis data</string>
|
||||
<string name="you_can_share_group_link_anybody_will_be_able_to_connect">Anda dapat bagikan tautan atau kode QR - siapa pun dapat bergabung ke grup. Anda tidak akan kehilangan anggota grup jika nanti Anda hapus.</string>
|
||||
<string name="send_receipts_disabled_alert_title">Tanda terima dimatikan</string>
|
||||
<string name="you_can_share_this_address_with_your_contacts">Anda dapat bagikan alamat ini dengan kontak agar dapat terhubung dengan %s.</string>
|
||||
<string name="you_can_enable_delivery_receipts_later">Anda dapat aktifkan nanti di Pengaturan</string>
|
||||
<string name="sending_delivery_receipts_will_be_enabled_all_profiles">Kirim tanda terima pengirim akan diaktifkan untuk semua kontak di semua profil obrolan yang terlihat.</string>
|
||||
<string name="or_paste_archive_link">Atau tempel tautan arsip</string>
|
||||
<string name="migrate_to_device_database_init">Mempersiapkan unduhan</string>
|
||||
<string name="migrate_to_device_title">Pindah ke sini</string>
|
||||
<string name="migrate_to_device_repeat_import">Impor ulang</string>
|
||||
<string name="migrate_to_device_confirm_network_settings_footer">Harap konfirmasi bahwa pengaturan jaringan sudah benar untuk perangkat ini.</string>
|
||||
<string name="migrate_from_device_database_init">Mempersiapkan unggahan</string>
|
||||
<string name="servers_info_reconnect_servers_message">Hubungkan ulang semua server yang terhubung untuk paksa kirim pesan. Ini menggunakan lalu lintas tambahan.</string>
|
||||
<string name="servers_info_reconnect_server_title">Hubungkan ulang server?</string>
|
||||
<string name="servers_info_reset_stats">Reset semua statistik</string>
|
||||
<string name="servers_info_reset_stats_alert_title">Reset seluruh statistik?</string>
|
||||
<string name="servers_info_reconnect_all_servers_button">Hubungkan ulang semua server</string>
|
||||
<string name="save_passphrase_in_keychain">Simpan frasa sandi di Keystore</string>
|
||||
<string name="info_row_local_name">Nama lokal</string>
|
||||
<string name="info_row_sent_at">Dikirim pada</string>
|
||||
<string name="info_row_received_at">Diterima pada</string>
|
||||
<string name="network_options_reset_to_defaults">Reset ke bawaan</string>
|
||||
<string name="v6_2_network_decentralization">Jaringan desentralisasi</string>
|
||||
<string name="sending_delivery_receipts_will_be_enabled">Kirim tanda terima pengirim akan diaktifkan untuk semua kontak.</string>
|
||||
<string name="linked_desktops">Desktop terhubung</string>
|
||||
<string name="migrate_to_device_bytes_downloaded">%s diunduh</string>
|
||||
<string name="servers_info_messages_received">Pesan diterima</string>
|
||||
<string name="info_row_updated_at">Catatan diperbarui pada</string>
|
||||
<string name="settings_section_title_messages">PESAN DAN BERKAS</string>
|
||||
<string name="settings_section_title_user_theme">Tema profil</string>
|
||||
<string name="settings_section_title_profile_images">Gambar profil</string>
|
||||
<string name="enter_correct_current_passphrase">Harap masukkan frasa sandi saat ini yang benar.</string>
|
||||
<string name="database_migrations">Migrasi: %s</string>
|
||||
<string name="rcv_group_event_1_member_connected">%s terhubung</string>
|
||||
<string name="profile_update_event_member_name_changed">anggota %1$s berubah menjadi %2$s</string>
|
||||
<string name="info_row_message_status">Status pesan</string>
|
||||
<string name="info_row_moderated_at">Dimoderasi pada</string>
|
||||
<string name="button_send_direct_message">Kirim pesan pribadi</string>
|
||||
<string name="network_option_protocol_timeout">Batas waktu protokol</string>
|
||||
<string name="network_options_save_and_reconnect">Simpan dan hubungkan ulang</string>
|
||||
<string name="incognito_info_allows">Memungkinkan adanya banyak koneksi anonim tanpa ada data bersama di antara mereka dalam satu profil obrolan.</string>
|
||||
<string name="servers_info_reconnect_servers_title">Hubungkan ulang server?</string>
|
||||
<string name="maximum_message_size_title">Pesan terlalu besar!</string>
|
||||
<string name="maximum_message_size_reached_non_text">Mohon kurangi ukuran pesan atau hapus media dan kirim lagi.</string>
|
||||
<string name="maximum_message_size_reached_text">Mohon kurangi ukuran pesan dan kirim lagi.</string>
|
||||
<string name="maximum_message_size_reached_forwarding">Anda dapat salin dan kurangi ukuran pesan untuk kirim.</string>
|
||||
<string name="reset_verb">Reset</string>
|
||||
<string name="send_live_message_desc">Kirim pesan langsung - pesan akan diperbarui pada penerima saat Anda mengetik</string>
|
||||
<string name="icon_descr_send_message">Kirim Pesan</string>
|
||||
<string name="mark_unread">Tandai belum dibaca</string>
|
||||
<string name="you_can_set_connection_name_to_remember">Anda dapat setel nama koneksi, untuk mengingat dengan siapa tautan dibagikan.</string>
|
||||
<string name="app_check_for_updates_button_open">Buka lokasi berkas</string>
|
||||
<string name="app_check_for_updates_installed_successfully_desc">Silakan mulai ulang aplikasi.</string>
|
||||
<string name="join_group_incognito_button">Gabung ke samaran</string>
|
||||
<string name="sender_at_ts">%s pada %s</string>
|
||||
<string name="member_will_be_removed_from_chat_cannot_be_undone">Anggota akan dihapus dari obrolan - ini tidak dapat dibatalkan!</string>
|
||||
<string name="operator_server_alert_title">Server operator</string>
|
||||
<string name="server_added_to_operator__name">Server ditambah ke operator %s.</string>
|
||||
<string name="error_server_operator_changed">Operator server berubah.</string>
|
||||
<string name="error_server_protocol_changed">Protokol server berubah.</string>
|
||||
<string name="network_option_ping_count">Jumlah PING</string>
|
||||
<string name="network_option_ping_interval">Interval PING</string>
|
||||
<string name="v6_2_improved_chat_navigation_descr">- Buka obrolan pada pesan belum dibaca pertama.\n- Lompat ke pesan yang dikutip.</string>
|
||||
<string name="custom_time_picker_select">Pilih</string>
|
||||
<string name="servers_info_reconnect_server_message">Hubungkan ulang server untuk paksa kirim pesan. Ini menggunakan lalu lintas tambahan.</string>
|
||||
<string name="chat_bottom_bar">Bilah alat obrolan yang dijangkau</string>
|
||||
<string name="profile_update_event_removed_picture">foto profil dihapus</string>
|
||||
<string name="rcv_group_event_2_members_connected">%s dan %s terhubung</string>
|
||||
<string name="v6_2_business_chats_descr">Privasi untuk pelanggan Anda.</string>
|
||||
<string name="migrate_to_device_repeat_download">Unduh ulang</string>
|
||||
<string name="migrate_to_device_try_again">Anda dapat mencoba lagi.</string>
|
||||
<string name="migrate_from_device_remove_archive_question">Hapus arsip?</string>
|
||||
<string name="migrate_from_device_repeat_upload">Unggah ulang</string>
|
||||
<string name="keep_conversation">Simpan percakapan</string>
|
||||
<string name="you_can_still_send_messages_to_contact">Anda dapat kirim pesan ke %1$s dari kontak yang diarsip.</string>
|
||||
<string name="switch_receiving_address_desc">Alamat penerima akan diubah ke server lain. Perubahan alamat akan selesai setelah pengirim online.</string>
|
||||
<string name="ask_your_contact_to_enable_voice">Minta kontak Anda untuk aktifkan kirim pesan suara.</string>
|
||||
<string name="image_descr_profile_image">gambar profil</string>
|
||||
<string name="save_auto_accept_settings">Simpan pengaturan terima otomatis</string>
|
||||
<string name="share_text_updated_at">Catatan diperbarui pada: %s</string>
|
||||
<string name="network_option_seconds_label">dtk</string>
|
||||
<string name="bad_desktop_address">Alamat desktop salah</string>
|
||||
<string name="scan_qr_code_from_desktop">Pindai kode QR dari desktop</string>
|
||||
<string name="servers_info_messages_sent">Pesan terkirim</string>
|
||||
<string name="moderated_item_description">dimoderasi oleh %s</string>
|
||||
<string name="auth_open_chat_console">Buka konsol obrolan</string>
|
||||
<string name="message_delivery_warning_title">Peringatan kirim pesan</string>
|
||||
<string name="message_delivery_error_title">Kesalahan kirim pesan</string>
|
||||
<string name="recipients_can_not_see_who_message_from">Penerima tidak dapat melihat siapa pengirim pesan ini.</string>
|
||||
<string name="observer_cant_send_message_desc">Silakan hubungi admin grup.</string>
|
||||
<string name="loading_remote_file_title">Memuat berkas</string>
|
||||
<string name="loading_remote_file_desc">Harap tunggu sementara berkas sedang dimuat dari ponsel yang terhubung</string>
|
||||
<string name="icon_descr_server_status_pending">Tertunda</string>
|
||||
<string name="sync_connection_force_question">Negosiasi ulang enkripsi?</string>
|
||||
<string name="sync_connection_force_confirm">Negosiasi ulang</string>
|
||||
<string name="send_disappearing_message">Kirim pesan sementara</string>
|
||||
<string name="send_verb">Kirim</string>
|
||||
<string name="scan_QR_code">Pindai kode QR</string>
|
||||
<string name="connect_via_link_or_qr_from_clipboard_or_in_person">(pindai atau tempel dari papan klip)</string>
|
||||
<string name="toast_permission_denied">Izin Ditolak!</string>
|
||||
<string name="mark_read">Tandai dibaca</string>
|
||||
<string name="image_descr_link_preview">tautan pratinjau gambar</string>
|
||||
<string name="you_can_share_your_address">Anda dapat bagikan alamat sebagai tautan atau kode QR - siapa pun dapat terhubung dengan Anda.</string>
|
||||
<string name="network_options_save">Simpan</string>
|
||||
<string name="make_profile_private">Jadikan profil pribadi!</string>
|
||||
<string name="remote_hosts_section">Ponsel jarak jauh</string>
|
||||
<string name="run_chat_section">JALANKAN OBROLAN</string>
|
||||
<string name="store_passphrase_securely_without_recover">Harap simpan frasa sandi dengan aman, Anda TIDAK akan dapat mengakses obrolan jika hilang.</string>
|
||||
<string name="rcv_group_event_member_deleted">dihapus %1$s</string>
|
||||
<string name="share_text_sent_at">Dikirim pada: %s</string>
|
||||
<string name="integrity_msg_bad_id">ID pesan salah</string>
|
||||
<string name="remove_passphrase_from_keychain">Hapus frasa sandi dari Keystore?</string>
|
||||
<string name="remove_passphrase_from_settings">Hapus frasa sandi dari pengaturan?</string>
|
||||
<string name="save_passphrase_in_settings">Simpan frasa sandi di pengaturan</string>
|
||||
<string name="proxied">Diproxy</string>
|
||||
<string name="paste_the_link_you_received_to_connect_with_your_contact">Tempel tautan yang Anda terima untuk terhubung dengan kontak…</string>
|
||||
<string name="other_label">lainnya</string>
|
||||
<string name="send_live_message">Kirim pesan langsung</string>
|
||||
<string name="live_message">Pesan langsung!</string>
|
||||
<string name="image_descr_qr_code">Kode QR</string>
|
||||
<string name="migrate_to_device_migrating">Memindah</string>
|
||||
<string name="server_address">Alamat server</string>
|
||||
<string name="open_server_settings_button">Buka pengaturan server</string>
|
||||
<string name="profile_update_event_removed_address">alamat kontak dihapus</string>
|
||||
<string name="v6_0_chat_list_media">Putar dari daftar obrolan.</string>
|
||||
<string name="linked_mobiles">Ponsel terhubung</string>
|
||||
<string name="scan_from_mobile">Pindai dari ponsel</string>
|
||||
<string name="network_type_other">Lainnya</string>
|
||||
<string name="no_media_servers_configured_for_private_routing">Tiada server untuk menerima berkas.</string>
|
||||
<string name="no_media_servers_configured_for_sending">Tiada server untuk kirim berkas.</string>
|
||||
<string name="message_deleted_or_not_received_error_title">Tiada pesan</string>
|
||||
<string name="auth_open_migration_to_another_device">Buka layar migrasi</string>
|
||||
<string name="delete_messages_cannot_be_undone_warning">Pesan akan dihapus - ini tidak dapat dibatalkan!</string>
|
||||
<string name="icon_descr_profile_image_placeholder">tempat penampung gambar profil</string>
|
||||
<string name="srv_error_host">Alamat server tidak kompatibel dengan pengaturan jaringan.</string>
|
||||
<string name="password_to_show">Kata sandi ditampilkan</string>
|
||||
<string name="app_check_for_updates_button_remind_later">Ingatkan nanti</string>
|
||||
<string name="restore_database_alert_desc">Harap masukkan kata sandi sebelumnya setelah memulihkan cadangan basis data. Tindakan ini tidak dapat dibatalkan.</string>
|
||||
<string name="restore_database_alert_confirm">Pulihkan</string>
|
||||
<string name="you_can_start_chat_via_setting_or_by_restarting_the_app">Anda dapat mulai obrolan via Pengaturan aplikasi / Basis Data atau dengan mulai ulang aplikasi.</string>
|
||||
<string name="only_chat_owners_can_change_prefs">Hanya pemilik obrolan yang dapat ubah preferensi.</string>
|
||||
<string name="send_receipts">Kirim tanda terima</string>
|
||||
<string name="custom_time_unit_seconds">detik</string>
|
||||
<string name="agent_critical_error_desc">Harap laporkan ke pengembang:\n%s\n\nDisarankan untuk memulai ulang aplikasi.</string>
|
||||
<string name="custom_time_unit_minutes">menit</string>
|
||||
<string name="network_session_mode_session_description">Kredensial SOCKS baru akan digunakan setiap kali Anda memulai aplikasi.</string>
|
||||
<string name="email_invite_subject">Mari bicara di SimpleX Chat</string>
|
||||
<string name="save_and_notify_contact">Simpan dan beritahu kontak</string>
|
||||
<string name="save_preferences_question">Simpan preferensi?</string>
|
||||
<string name="you_can_create_it_later">Anda dapat buat nanti</string>
|
||||
<string name="join_group_question">Gabung ke grup?</string>
|
||||
<string name="joining_group">Bergabung dengan grup</string>
|
||||
<string name="calls_prohibited_ask_to_enable_calls_alert_text">Minta kontak Anda untuk aktifkan panggilan.</string>
|
||||
<string name="you_can_hide_or_mute_user_profile">Anda dapat sembunyikan atau matikan profil pengguna - tekan tahan untuk buka menu.</string>
|
||||
<string name="v4_5_reduced_battery_usage">Penggunaan baterai sedikit</string>
|
||||
<string name="migrate_from_device_migration_complete">Berhasil dipindah</string>
|
||||
<string name="icon_descr_record_voice_message">Rekam pesan suara</string>
|
||||
<string name="servers_info_subscriptions_section_header">Penerima pesan</string>
|
||||
<string name="alert_title_msg_bad_hash">Hash pesan salah</string>
|
||||
<string name="leave_chat_question">Keluar dari obrolan?</string>
|
||||
<string name="store_passphrase_securely">Harap simpan frasa sandi dengan aman, Anda TIDAK akan dapat mengubahnya jika hilang.</string>
|
||||
<string name="restore_database_alert_title">Pulihkan cadangan basis data?</string>
|
||||
<string name="share_text_moderated_at">Dimoderasi pada: %s</string>
|
||||
<string name="share_text_received_at">Diterima pada: %s</string>
|
||||
<string name="chat_archive">Atau impor berkas arsip</string>
|
||||
<string name="agent_internal_error_desc">Harap laporkan ke pengembang:\n%S</string>
|
||||
<string name="display_name__field">Nama profil:</string>
|
||||
<string name="servers_info_subscriptions_connections_pending">Tertunda</string>
|
||||
<string name="servers_info_previously_connected_servers_section_header">Server yang terhubung sebelumnya</string>
|
||||
<string name="servers_info_proxied_servers_section_header">Server proxy</string>
|
||||
<string name="delete_messages_mark_deleted_warning">Pesan akan ditandai sebagai dihapus. Penerima tetap dapat melihat pesan tersebut.</string>
|
||||
<string name="delete_message_mark_deleted_warning">Pesan akan ditandai sebagai dihapus. Penerima tetap dapat melihat pesan ini.</string>
|
||||
<string name="sync_connection_confirm">Perbaiki</string>
|
||||
<string name="sync_connection_question">Perbaiki koneksi?</string>
|
||||
<string name="smp_servers_new_server">Server baru</string>
|
||||
<string name="message_queue_info">Info antrian pesan</string>
|
||||
<string name="settings_section_title_message_shape">Bentuk pesan</string>
|
||||
<string name="settings_section_title_private_message_routing">ROUTING PESAN PRIBADI</string>
|
||||
<string name="message_queue_info_server_info">info antrean server: %1$s\n\npesan terakhir diterima: %2$s</string>
|
||||
<string name="users_delete_data_only">Hanya data profil lokal</string>
|
||||
<string name="operator_open_changes">Buka perubahan</string>
|
||||
<string name="operator_open_conditions">Ketentuan terbuka</string>
|
||||
<string name="migrate_from_device_or_share_this_file_link">Atau bagikan tautan berkas dengan aman</string>
|
||||
<string name="paste_desktop_address">Tempel alamat desktop</string>
|
||||
<string name="users_delete_with_connections">Profil dan koneksi server</string>
|
||||
<string name="other_errors">Kesalahan lainnya</string>
|
||||
<string name="secured">Aman</string>
|
||||
<string name="send_errors">Kesalahan kirim</string>
|
||||
<string name="sent_directly">Dikirim langsung</string>
|
||||
<string name="sent_via_proxy">Dikirim via proxy</string>
|
||||
<string name="profile_update_will_be_sent_to_contacts">Pembaruan profil akan dikirim ke kontak Anda.</string>
|
||||
<string name="paste_archive_link">Tempel tautan arsip</string>
|
||||
<string name="remote_ctrl_connection_stopped_desc">Harap periksa apakah perangkat seluler dan desktop terhubung ke jaringan lokal yang sama, dan firewall desktop mengizinkan koneksi.\nHarap sampaikan masalah lain kepada pengembang.</string>
|
||||
<string name="sync_connection_desc">Koneksi memerlukan negosiasi ulang enkripsi.</string>
|
||||
<string name="encryption_renegotiation_in_progress">Negosiasi ulang enkripsi sedang berlangsung.</string>
|
||||
</resources>
|
||||
@@ -363,7 +363,7 @@
|
||||
<string name="icon_descr_audio_off">Audio spento</string>
|
||||
<string name="icon_descr_audio_on">Audio acceso</string>
|
||||
<string name="settings_audio_video_calls">Chiamate audio e video</string>
|
||||
<string name="auto_accept_images">Auto-accetta le immagini</string>
|
||||
<string name="auto_accept_images">Auto-accetta immagini</string>
|
||||
<string name="integrity_msg_bad_hash">hash del messaggio errato</string>
|
||||
<string name="integrity_msg_bad_id">ID messaggio errato</string>
|
||||
<string name="icon_descr_call_ended">Chiamata terminata</string>
|
||||
@@ -470,7 +470,7 @@
|
||||
<string name="feature_enabled_for_contact">attivato per il contatto</string>
|
||||
<string name="feature_enabled_for_you">attivato per te</string>
|
||||
<string name="group_preferences">Preferenze del gruppo</string>
|
||||
<string name="v4_2_auto_accept_contact_requests">Auto-accetta le richieste di contatto</string>
|
||||
<string name="v4_2_auto_accept_contact_requests">Auto-accetta richieste di contatto</string>
|
||||
<string name="ttl_d">%dg</string>
|
||||
<string name="ttl_day">%d giorno</string>
|
||||
<string name="ttl_days">%d giorni</string>
|
||||
@@ -538,7 +538,7 @@
|
||||
<string name="invalid_QR_code">Codice QR non valido</string>
|
||||
<string name="image_descr_link_preview">immagine di anteprima link</string>
|
||||
<string name="mark_read">Segna come già letto</string>
|
||||
<string name="mark_unread">Segna come non letta</string>
|
||||
<string name="mark_unread">Segna come non letto</string>
|
||||
<string name="icon_descr_more_button">Altro</string>
|
||||
<string name="mute_chat">Silenzia</string>
|
||||
<string name="image_descr_profile_image">immagine del profilo</string>
|
||||
@@ -704,7 +704,7 @@
|
||||
<string name="restart_the_app_to_create_a_new_chat_profile">Riavvia l\'app per creare un profilo di chat nuovo.</string>
|
||||
<string name="restart_the_app_to_use_imported_chat_database">Riavvia l\'app per usare il database della chat importato.</string>
|
||||
<string name="run_chat_section">AVVIA CHAT</string>
|
||||
<string name="send_link_previews">Invia le anteprime dei link</string>
|
||||
<string name="send_link_previews">Invia anteprime dei link</string>
|
||||
<string name="set_password_to_export">Imposta la password per esportare</string>
|
||||
<string name="settings_section_title_settings">IMPOSTAZIONI</string>
|
||||
<string name="settings_section_title_socks">PROXY SOCKS</string>
|
||||
@@ -918,7 +918,7 @@
|
||||
<string name="v4_5_italian_interface_descr">Grazie agli utenti – contribuite via Weblate!</string>
|
||||
<string name="v4_4_french_interface">Interfaccia francese</string>
|
||||
<string name="v4_5_italian_interface">Interfaccia italiana</string>
|
||||
<string name="v4_5_message_draft">Bozza del messaggio</string>
|
||||
<string name="v4_5_message_draft">Bozza dei messaggi</string>
|
||||
<string name="v4_5_message_draft_descr">Conserva la bozza dell\'ultimo messaggio, con gli allegati.</string>
|
||||
<string name="v4_5_private_filenames">Nomi di file privati</string>
|
||||
<string name="v4_5_transport_isolation_descr">Per profilo di chat (predefinito) o per connessione (BETA).</string>
|
||||
@@ -1348,7 +1348,7 @@
|
||||
<string name="rcv_group_event_2_members_connected">%s e %s si sono connessi/e</string>
|
||||
<string name="rcv_group_event_n_members_connected">%s, %s e altri %d membri si sono connessi</string>
|
||||
<string name="rcv_group_event_3_members_connected">%s, %s e %s si sono connessi/e</string>
|
||||
<string name="privacy_message_draft">Bozza del messaggio</string>
|
||||
<string name="privacy_message_draft">Bozza</string>
|
||||
<string name="privacy_show_last_messages">Mostra gli ultimi messaggi</string>
|
||||
<string name="database_will_be_encrypted_and_passphrase_stored_in_settings">Il database verrà crittografato e la password conservata nelle impostazioni.</string>
|
||||
<string name="you_can_change_it_later">La password casuale viene conservata nelle impostazioni come testo normale.
|
||||
@@ -1615,7 +1615,8 @@
|
||||
<string name="snd_group_event_member_blocked">hai bloccato %s</string>
|
||||
<string name="welcome_message_is_too_long">Il messaggio di benvenuto è troppo lungo</string>
|
||||
<string name="message_too_large">Messaggio troppo grande</string>
|
||||
<string name="database_migration_in_progress">Migrazione del database in corso.\nPuò richiedere qualche minuto.</string>
|
||||
<string name="database_migration_in_progress">Migrazione database in corso.
|
||||
\nPuò richiedere qualche minuto.</string>
|
||||
<string name="call_service_notification_audio_call">Chiamata audio</string>
|
||||
<string name="call_service_notification_end_call">Termina chiamata</string>
|
||||
<string name="call_service_notification_video_call">Videochiamata</string>
|
||||
@@ -1947,7 +1948,8 @@
|
||||
<string name="appearance_font_size">Dimensione carattere</string>
|
||||
<string name="servers_info_detailed_statistics_sent_messages_total">Totale inviato</string>
|
||||
<string name="message_forwarded_title">Messaggio inoltrato</string>
|
||||
<string name="servers_info_private_data_disclaimer">Partendo da %s. \nTutti i dati sono privati, nel tuo dispositivo.</string>
|
||||
<string name="servers_info_private_data_disclaimer">Inizio da %s.
|
||||
\nTutti i dati sono privati, nel tuo dispositivo.</string>
|
||||
<string name="message_forwarded_desc">Ancora nessuna connessione diretta, il messaggio viene inoltrato dall\'amministratore.</string>
|
||||
<string name="servers_info_proxied_servers_section_footer">Non sei connesso/a a questi server. L\'instradamento privato è usato per consegnare loro i messaggi.</string>
|
||||
<string name="xftp_servers_other">Altri server XFTP</string>
|
||||
@@ -1978,7 +1980,7 @@
|
||||
<string name="smp_proxy_error_connecting">Errore di connessione al server di inoltro %1$s. Riprova più tardi.</string>
|
||||
<string name="smp_proxy_error_broker_version">La versione server di inoltro è incompatibile con le impostazioni di rete: %1$s.</string>
|
||||
<string name="privacy_media_blur_radius_off">Off</string>
|
||||
<string name="privacy_media_blur_radius">Sfocatura dei file multimediali</string>
|
||||
<string name="privacy_media_blur_radius">Sfocatura file multimediali</string>
|
||||
<string name="privacy_media_blur_radius_soft">Leggera</string>
|
||||
<string name="privacy_media_blur_radius_medium">Media</string>
|
||||
<string name="privacy_media_blur_radius_strong">Forte</string>
|
||||
@@ -2129,18 +2131,18 @@
|
||||
<string name="for_social_media">Per i social media</string>
|
||||
<string name="or_to_share_privately">O per condividere in modo privato</string>
|
||||
<string name="onboarding_network_operators">Operatori di rete</string>
|
||||
<string name="onboarding_network_operators_app_will_use_different_operators">L\'app protegge la tua privacy usando diversi operatori per ogni conversazione.</string>
|
||||
<string name="onboarding_network_operators_app_will_use_different_operators">Quando più di un operatore di rete è attivato, l\'app userà i server di diversi operatori per ogni conversazione.</string>
|
||||
<string name="onboarding_network_operators_conditions_you_can_configure">Puoi configurare gli operatori nelle impostazioni di rete e server.</string>
|
||||
<string name="onboarding_choose_server_operators">Operatori del server</string>
|
||||
<string name="onboarding_select_network_operators_to_use">Seleziona gli operatori di rete da usare.</string>
|
||||
<string name="onboarding_network_operators_continue">Continua</string>
|
||||
<string name="onboarding_network_operators_update">Aggiorna</string>
|
||||
<string name="onboarding_network_operators_review_later">Leggi più tardi</string>
|
||||
<string name="onboarding_network_operators_review_later">Esamina più tardi</string>
|
||||
<string name="network_preset_servers_title">Server preimpostati</string>
|
||||
<string name="operator_conditions_accepted">Condizioni accettate</string>
|
||||
<string name="operator_conditions_accepted_for_enabled_operators_on">Le condizioni verranno accettate automaticamente per gli operatori attivati il: %s.</string>
|
||||
<string name="your_servers">I tuoi server</string>
|
||||
<string name="operator_review_conditions">Leggi le condizioni</string>
|
||||
<string name="operator_review_conditions">Esamina le condizioni</string>
|
||||
<string name="operators_conditions_accepted_for"><![CDATA[Condizioni accettate per gli operatori: <b>%s</b>.]]></string>
|
||||
<string name="operator_conditions_accepted_for_some"><![CDATA[Condizioni già accettate per i seguenti operatori: <b>%s</b>.]]></string>
|
||||
<string name="operator_conditions_failed_to_load">Il testo delle condizioni attuali testo non è stato caricato, puoi consultare le condizioni tramite questo link:</string>
|
||||
@@ -2190,13 +2192,13 @@
|
||||
<string name="error_accepting_operator_conditions">Errore di accettazione delle condizioni</string>
|
||||
<string name="failed_to_save_servers">Errore di salvataggio dei server</string>
|
||||
<string name="v6_2_network_decentralization_enable_flux_reason">per una migliore privacy dei metadati.</string>
|
||||
<string name="onboarding_network_operators_app_will_use_for_routing">Ad esempio, se il tuo contatto riceve i messaggi tramite un server di SimpleX Chat, la tua app li consegnerà tramite un server di Flux.</string>
|
||||
<string name="onboarding_network_operators_app_will_use_for_routing">Ad esempio, se ricevi messaggi tramite il server di SimpleX Chat, l\'app userà uno dei server Flux per l\'instradamento privato.</string>
|
||||
<string name="v6_2_improved_chat_navigation">Navigazione della chat migliorata</string>
|
||||
<string name="smp_servers_new_server">Nuovo server</string>
|
||||
<string name="operator_use_for_files">Usa per i file</string>
|
||||
<string name="simplex_address_or_1_time_link">Indirizzo SimpleX o link una tantum?</string>
|
||||
<string name="message_deleted_or_not_received_error_desc">Questo messaggio è stato eliminato o non ancora ricevuto.</string>
|
||||
<string name="address_creation_instruction">Tocca Crea indirizzo SimpleX nel menu per crearlo più tardi.</string>
|
||||
<string name="address_creation_instruction">Tocca \"Crea indirizzo SimpleX\" nel menu per crearlo più tardi.</string>
|
||||
<string name="connection_error_quota_desc">La connessione ha raggiunto il limite di messaggi non consegnati, il contatto potrebbe essere offline.</string>
|
||||
<string name="operator_use_operator_toggle_description">Usa i server</string>
|
||||
<string name="onboarding_network_operators_configure_via_settings">Puoi configurare i server nelle impostazioni.</string>
|
||||
@@ -2206,7 +2208,7 @@
|
||||
<string name="no_media_servers_configured_for_sending">Nessun server per inviare file.</string>
|
||||
<string name="v6_2_improved_chat_navigation_descr">- Apri la chat sul primo messaggio non letto.\n- Salta ai messaggi citati.</string>
|
||||
<string name="share_address_publicly">Condividi indirizzo pubblicamente</string>
|
||||
<string name="share_simplex_address_on_social_media">Condividi l\'indirizzo SimpleX sui social media.</string>
|
||||
<string name="share_simplex_address_on_social_media">Condividi indirizzo SimpleX sui social media.</string>
|
||||
<string name="chat_archive">O importa file archivio</string>
|
||||
<string name="remote_hosts_section">Telefoni remoti</string>
|
||||
<string name="direct_messages_are_prohibited_in_chat">I messaggi diretti tra i membri sono vietati in questa chat.</string>
|
||||
@@ -2244,13 +2246,4 @@
|
||||
<string name="member_role_will_be_changed_with_notification_chat">Il ruolo verrà cambiato in %s. Verrà notificato a tutti nella chat.</string>
|
||||
<string name="chat_main_profile_sent">Il tuo profilo di chat verrà inviato ai membri della chat</string>
|
||||
<string name="you_will_stop_receiving_messages_from_this_chat_chat_history_will_be_preserved">Non riceverai più messaggi da questa chat. La cronologia della chat verrà conservata.</string>
|
||||
<string name="onboarding_network_operators_cant_see_who_talks_to_whom">Quando più di un operatore è attivato, nessuno di essi ha metadati per capire chi comunica con chi.</string>
|
||||
<string name="display_name_accepted_invitation">invito accettato</string>
|
||||
<string name="display_name_requested_to_connect">richiesto di connettersi</string>
|
||||
<string name="onboarding_network_operators_simplex_flux_agreement">SimpleX Chat e Flux hanno concluso un accordo per includere server gestiti da Flux nell\'app.</string>
|
||||
<string name="onboarding_network_about_operators">Info sugli operatori</string>
|
||||
<string name="sync_connection_desc">La connessione richiede la rinegoziazione della crittografia.</string>
|
||||
<string name="sync_connection_confirm">Correggi</string>
|
||||
<string name="sync_connection_question">Correggere la connessione?</string>
|
||||
<string name="encryption_renegotiation_in_progress">Rinegoziazione della crittografia in corso.</string>
|
||||
</resources>
|
||||
@@ -1872,7 +1872,8 @@
|
||||
<string name="servers_info_details">Details</string>
|
||||
<string name="servers_info_messages_received">Berichten ontvangen</string>
|
||||
<string name="servers_info_subscriptions_section_header">Bericht ontvangst</string>
|
||||
<string name="servers_info_private_data_disclaimer">Beginnend vanaf %s. \nAlle gegevens zijn privé op uw apparaat.</string>
|
||||
<string name="servers_info_private_data_disclaimer">Beginnend vanaf %s.
|
||||
\nAlle gegevens zijn privé op uw apparaat.</string>
|
||||
<string name="servers_info_connected_servers_section_header">Verbonden servers</string>
|
||||
<string name="servers_info_subscriptions_connections_pending">In behandeling</string>
|
||||
<string name="servers_info_previously_connected_servers_section_header">Eerder verbonden servers</string>
|
||||
@@ -2146,7 +2147,7 @@
|
||||
<string name="onboarding_network_operators_review_later">Later beoordelen</string>
|
||||
<string name="onboarding_select_network_operators_to_use">Selecteer welke netwerkoperators u wilt gebruiken.</string>
|
||||
<string name="onboarding_network_operators_update">Update</string>
|
||||
<string name="onboarding_network_operators_app_will_use_different_operators">De app beschermt uw privacy door in elk gesprek verschillende operators te gebruiken.</string>
|
||||
<string name="onboarding_network_operators_app_will_use_different_operators">Wanneer er meer dan één netwerkoperator is ingeschakeld, gebruikt de app voor elk gesprek de servers van verschillende operators.</string>
|
||||
<string name="onboarding_network_operators_conditions_you_can_configure">U kunt operators configureren in Netwerk- en serverinstellingen.</string>
|
||||
<string name="onboarding_network_operators_continue">Doorgaan</string>
|
||||
<string name="operator_review_conditions">Voorwaarden bekijken</string>
|
||||
@@ -2182,7 +2183,7 @@
|
||||
<string name="v6_2_improved_chat_navigation">Verbeterde chatnavigatie</string>
|
||||
<string name="v6_2_network_decentralization">Netwerk decentralisatie</string>
|
||||
<string name="v6_2_network_decentralization_descr">De tweede vooraf ingestelde operator in de app!</string>
|
||||
<string name="onboarding_network_operators_app_will_use_for_routing">Als uw contactpersoon bijvoorbeeld berichten ontvangt via een SimpleX Chat-server, worden deze door uw app via een Flux-server verzonden.</string>
|
||||
<string name="onboarding_network_operators_app_will_use_for_routing">Als u bijvoorbeeld berichten ontvangt via de SimpleX Chat-server, gebruikt de app een van de Flux-servers voor privéroutering.</string>
|
||||
<string name="v6_2_network_decentralization_enable_flux">Flux inschakelen</string>
|
||||
<string name="message_deleted_or_not_received_error_title">Geen bericht</string>
|
||||
<string name="appearance_app_toolbars">App-werkbalken</string>
|
||||
@@ -2241,9 +2242,4 @@
|
||||
<string name="onboarding_notifications_mode_off_desc_short">Geen achtergrondservice</string>
|
||||
<string name="only_chat_owners_can_change_prefs">Alleen chateigenaren kunnen voorkeuren wijzigen.</string>
|
||||
<string name="maximum_message_size_reached_non_text">Verklein de berichtgrootte of verwijder de media en verzend het bericht opnieuw.</string>
|
||||
<string name="display_name_accepted_invitation">geaccepteerde uitnodiging</string>
|
||||
<string name="onboarding_network_operators_cant_see_who_talks_to_whom">Wanneer er meer dan één operator is ingeschakeld, beschikt geen enkele operator over metagegevens om te achterhalen wie met wie communiceert.</string>
|
||||
<string name="display_name_requested_to_connect">gevraagd om verbinding te maken</string>
|
||||
<string name="onboarding_network_about_operators">Over operatoren</string>
|
||||
<string name="onboarding_network_operators_simplex_flux_agreement">Simplex-chat en flux hebben een overeenkomst gemaakt om door flux geëxploiteerde servers in de app op te nemen.</string>
|
||||
</resources>
|
||||
@@ -1932,7 +1932,8 @@
|
||||
<string name="servers_info_target">Wyświetlanie informacji dla</string>
|
||||
<string name="servers_info_statistics_section_header">Statystyki</string>
|
||||
<string name="servers_info_transport_sessions_section_header">Sesje transportowe</string>
|
||||
<string name="servers_info_private_data_disclaimer">Zaczynanie od %s. \nWszystkie dane są prywatne na Twoim urządzeniu.</string>
|
||||
<string name="servers_info_private_data_disclaimer">Zaczynanie od %s.
|
||||
\nWszystkie dane są prywatne na Twoim urządzeniu.</string>
|
||||
<string name="servers_info_reconnect_all_servers_button">Połącz ponownie wszystkie serwery</string>
|
||||
<string name="servers_info_reconnect_server_title">Połączyć ponownie serwer?</string>
|
||||
<string name="servers_info_proxied_servers_section_footer">Nie jesteś połączony z tymi serwerami. Prywatne trasowanie jest używane do dostarczania do nich wiadomości.</string>
|
||||
|
||||
@@ -1982,7 +1982,8 @@
|
||||
<string name="servers_info_transport_sessions_section_header">Sessões de transporte</string>
|
||||
<string name="servers_info_subscriptions_section_header">Recepção de mensagem</string>
|
||||
<string name="servers_info_subscriptions_connections_pending">Pendente</string>
|
||||
<string name="servers_info_private_data_disclaimer">Começando de %s. \nTodos os dados são privados do seu dispositivo.</string>
|
||||
<string name="servers_info_private_data_disclaimer">Começando de %s.
|
||||
\nTodos os dados são privados do seu dispositivo.</string>
|
||||
<string name="servers_info_subscriptions_total">Total</string>
|
||||
<string name="servers_info_proxied_servers_section_header">Servidores proxiados</string>
|
||||
<string name="servers_info_previously_connected_servers_section_header">Servidores conectados anteriormente</string>
|
||||
|
||||
@@ -1882,7 +1882,8 @@
|
||||
<string name="message_queue_info">Информация об очереди сообщений</string>
|
||||
<string name="v5_8_persian_ui">Персидский интерфейс</string>
|
||||
<string name="protect_ip_address">Защитить IP адрес</string>
|
||||
<string name="v5_8_private_routing_descr">Защитите ваш IP адрес от серверов сообщений, выбранных Вашими контактами. \nВключите в настройках Сети и серверов.</string>
|
||||
<string name="v5_8_private_routing_descr">Защитите ваш IP адрес от серверов сообщений, выбранных Вашими контактами.
|
||||
\nВключите в настройках Сеть и серверы.</string>
|
||||
<string name="network_smp_proxy_fallback_allow_description">Отправьте сообщения напрямую, когда Ваш сервер или сервер получателя не поддерживает конфиденциальную доставку.</string>
|
||||
<string name="network_smp_proxy_mode_private_routing">Конфиденциальная доставка</string>
|
||||
<string name="network_smp_proxy_mode_unknown_description">Использовать конфиденциальную доставку с неизвестными серверами.</string>
|
||||
@@ -2027,7 +2028,8 @@
|
||||
<string name="servers_info_connected_servers_section_header">Подключенные серверы</string>
|
||||
<string name="servers_info_previously_connected_servers_section_header">Ранее подключенные серверы</string>
|
||||
<string name="servers_info_proxied_servers_section_header">Проксированные серверы</string>
|
||||
<string name="servers_info_private_data_disclaimer">Начиная с %s. \nВсе данные хранятся только на вашем устройстве.</string>
|
||||
<string name="servers_info_private_data_disclaimer">Начиная с %s.
|
||||
\nВсе данные хранятся только на вашем устройстве.</string>
|
||||
<string name="servers_info_reconnect_server_message">Переподключить сервер для устранения неполадок доставки сообщений. Это использует дополнительный трафик.</string>
|
||||
<string name="servers_info_modal_error_title">Ошибка</string>
|
||||
<string name="servers_info_reconnect_server_error">Ошибка переподключения к серверу</string>
|
||||
@@ -2263,7 +2265,7 @@
|
||||
<string name="how_it_helps_privacy">Как это улучшает конфиденциальность</string>
|
||||
<string name="onboarding_network_operators">Операторы серверов</string>
|
||||
<string name="onboarding_select_network_operators_to_use">Выберите операторов сети.</string>
|
||||
<string name="onboarding_network_operators_conditions_you_can_configure">Вы можете настроить операторов в настройках Сети и серверов.</string>
|
||||
<string name="onboarding_network_operators_conditions_you_can_configure">Вы можете настроить операторов в настройках Сеть и серверы.</string>
|
||||
<string name="onboarding_network_operators_continue">Продолжить</string>
|
||||
<string name="onboarding_network_operators_review_later">Посмотреть позже</string>
|
||||
<string name="onboarding_network_operators_update">Обновить</string>
|
||||
@@ -2303,7 +2305,7 @@
|
||||
<string name="error_updating_server_title">Ошибка сохранения сервера</string>
|
||||
<string name="operator_use_for_messages_private_routing">Для доставки сообщений</string>
|
||||
<string name="operator_open_changes">Открыть изменения</string>
|
||||
<string name="error_server_operator_changed">Оператор сервера изменен.</string>
|
||||
<string name="error_server_operator_changed">Оператор серверов изменен.</string>
|
||||
<string name="error_server_protocol_changed">Протокол сервера изменен.</string>
|
||||
<string name="xftp_servers_per_user">Серверы для новых файлов Вашего текущего профиля</string>
|
||||
<string name="operator_use_for_messages_receiving">Для получения</string>
|
||||
|
||||
@@ -219,7 +219,7 @@
|
||||
<string name="ok">OK</string>
|
||||
<string name="copied">Скопійовано в буфер обміну</string>
|
||||
<string name="to_connect_via_link_title">Для підключення через посилання</string>
|
||||
<string name="mobile_tap_open_in_mobile_app_then_tap_connect_in_app"><![CDATA[📱 мобільний: натисніть <b>Відкрити у мобільному додатку</b>, а потім торкніться <b>Підключити</b> в додатку.]]></string>
|
||||
<string name="mobile_tap_open_in_mobile_app_then_tap_connect_in_app"><![CDATA[📱 мобільний телефон: натисніть <b>Відкрити у мобільному додатку</b>, а потім торкніться <b>Підключити</b> в додатку.]]></string>
|
||||
<string name="mute_chat">Приглушити</string>
|
||||
<string name="unmute_chat">Скасувати приглушення</string>
|
||||
<string name="you_invited_a_contact">Ви запросили контакт</string>
|
||||
@@ -233,7 +233,7 @@
|
||||
<string name="one_time_link">Одноразове запрошення</string>
|
||||
<string name="incorrect_code">Невірний код безпеки!</string>
|
||||
<string name="to_verify_compare">Для перевірки end-to-end шифрування порівняйте (або скануйте) код на своїх пристроях.</string>
|
||||
<string name="your_settings">Налаштування</string>
|
||||
<string name="your_settings">Ваші налаштування</string>
|
||||
<string name="your_simplex_contact_address">Ваша SimpleX-адреса</string>
|
||||
<string name="markdown_help">Допомога з Markdown</string>
|
||||
<string name="chat_lock">Блокування SimpleX</string>
|
||||
@@ -268,7 +268,7 @@
|
||||
<string name="first_platform_without_user_ids">Ніяких ідентифікаторів користувачів.</string>
|
||||
<string name="decentralized">Децентралізована</string>
|
||||
<string name="use_chat">Використовувати чат</string>
|
||||
<string name="onboarding_notifications_mode_subtitle">Як це впливає на батарею</string>
|
||||
<string name="onboarding_notifications_mode_subtitle">Це можна змінити пізніше в налаштуваннях.</string>
|
||||
<string name="onboarding_notifications_mode_service">Миттєво</string>
|
||||
<string name="call_already_ended">Виклик вже завершено!</string>
|
||||
<string name="your_calls">Ваші виклики</string>
|
||||
@@ -496,7 +496,7 @@
|
||||
<string name="only_your_contact_can_send_voice">Тільки ваш контакт може надсилати голосові повідомлення.</string>
|
||||
<string name="prohibit_sending_disappearing">Забороняйте надсилання повідомлень, які зникають.</string>
|
||||
<string name="prohibit_message_deletion">Забороняйте невідворотне видалення повідомлень.</string>
|
||||
<string name="group_members_can_send_voice">Учасники можуть надсилати голосові повідомлення.</string>
|
||||
<string name="group_members_can_send_voice">Учасники групи можуть надсилати голосові повідомлення.</string>
|
||||
<string name="ttl_m">%dm</string>
|
||||
<string name="new_in_version">Нове в %s</string>
|
||||
<string name="v5_1_self_destruct_passcode">Самознищуючий пароль</string>
|
||||
@@ -544,7 +544,7 @@
|
||||
<string name="smp_server_test_create_file">Створити файл</string>
|
||||
<string name="error_deleting_user">Помилка видалення користувача</string>
|
||||
<string name="error_updating_user_privacy">Помилка оновлення конфіденційності користувача</string>
|
||||
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Для покращення конфіденційності, <b>SimpleX працює у фоновому режимі</b> замість використання пуш-повідомлень.]]></string>
|
||||
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Для збереження вашої конфіденційності, замість торкання сповіщень, програма використовує <b>фоновий сервіс SimpleX</b> – він використовує кілька відсотків батареї щодня.]]></string>
|
||||
<string name="periodic_notifications">Періодичні сповіщення</string>
|
||||
<string name="simplex_service_notification_title">Служба чату SimpleX</string>
|
||||
<string name="notifications_mode_periodic_desc">Перевіряє нові повідомлення кожні 10 хвилин протягом 1 хвилини</string>
|
||||
@@ -649,7 +649,7 @@
|
||||
<string name="you_can_use_markdown_to_format_messages__prompt">Ви можете використовувати markdown для форматування повідомлень:</string>
|
||||
<string name="create_your_profile">Створіть свій профіль</string>
|
||||
<string name="make_private_connection">Створіть приватне підключення</string>
|
||||
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages">Тільки клієнтські пристрої зберігають профілі, контакти, групи та повідомлення.</string>
|
||||
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages"><![CDATA[Тільки пристрої клієнта зберігають профілі користувачів, контакти, групи та повідомлення, відправлені за допомогою <b>шифрування на двох рівнях</b>.]]></string>
|
||||
<string name="onboarding_notifications_mode_title">Приватні сповіщення</string>
|
||||
<string name="onboarding_notifications_mode_service_desc"><![CDATA[<b>Споживає більше акумулятора</b>! Додаток завжди працює у фоновому режимі – сповіщення відображаються миттєво.]]></string>
|
||||
<string name="paste_the_link_you_received">Вставте отримане посилання</string>
|
||||
@@ -746,14 +746,14 @@
|
||||
<string name="only_you_can_send_voice">Тільки ви можете надсилати голосові повідомлення.</string>
|
||||
<string name="only_you_can_add_message_reactions">Тільки ви можете додавати реакції на повідомлення.</string>
|
||||
<string name="prohibit_message_reactions_group">Заборонити реакції на повідомлення.</string>
|
||||
<string name="disappearing_messages_are_prohibited">Повідомлення, що зникають, заборонені.</string>
|
||||
<string name="group_members_can_send_dms">Учасники можуть надсилати прямі повідомлення.</string>
|
||||
<string name="disappearing_messages_are_prohibited">Самознищувальні повідомлення заборонені в цій групі.</string>
|
||||
<string name="group_members_can_send_dms">Учасники групи можуть надсилати приватні повідомлення.</string>
|
||||
<string name="direct_messages_are_prohibited_in_group">Приватні повідомлення між учасниками заборонені в цій групі.</string>
|
||||
<string name="group_members_can_delete">Учасники можуть необоротно видаляти надіслані повідомлення (протягом 24 годин).</string>
|
||||
<string name="message_deletion_prohibited_in_chat">Заборонено необоротне видалення повідомлень.</string>
|
||||
<string name="voice_messages_are_prohibited">Голосові повідомлення заборонені</string>
|
||||
<string name="group_members_can_add_message_reactions">Учасники можуть додавати реакції на повідомлення.</string>
|
||||
<string name="message_reactions_are_prohibited">Реакції на повідомлення заборонені.</string>
|
||||
<string name="group_members_can_delete">Учасники групи можуть назавжди видаляти відправлені повідомлення. (24 години)</string>
|
||||
<string name="message_deletion_prohibited_in_chat">Назавжди видалення повідомлень заборонене в цій групі.</string>
|
||||
<string name="voice_messages_are_prohibited">Голосові повідомлення заборонені в цій групі.</string>
|
||||
<string name="group_members_can_add_message_reactions">Учасники групи можуть додавати реакції на повідомлення.</string>
|
||||
<string name="message_reactions_are_prohibited">Реакції на повідомлення заборонені в цій групі.</string>
|
||||
<string name="ttl_hour">%d година</string>
|
||||
<string name="ttl_week">%d тиждень</string>
|
||||
<string name="ttl_weeks">%d тижні</string>
|
||||
@@ -805,7 +805,7 @@
|
||||
<string name="smp_server_test_secure_queue">Безпечна черга</string>
|
||||
<string name="smp_server_test_delete_queue">Видалити чергу</string>
|
||||
<string name="please_check_correct_link_and_maybe_ask_for_a_new_one">Будь ласка, перевірте, що ви використали правильне посилання або попросіть вашого контакту вислати інше.</string>
|
||||
<string name="turn_off_battery_optimization"><![CDATA[<b>Дозвольте це</b> в наступному діалозі, щоб отримувати сповіщення миттєво.]]></string>
|
||||
<string name="turn_off_battery_optimization"><![CDATA[Щоб його використовувати, будь ласка, <b>дозвольте SimpleX працювати в фоновому режимі</b> в наступному діалозі. В іншому випадку сповіщення будуть вимкнені.]]></string>
|
||||
<string name="icon_descr_instant_notifications">Миттєві сповіщення</string>
|
||||
<string name="notification_preview_somebody">Контакт прихований:</string>
|
||||
<string name="notification_preview_new_message">нове повідомлення</string>
|
||||
@@ -892,7 +892,7 @@
|
||||
<string name="v4_6_chinese_spanish_interface_descr">Дякуємо користувачам – приєднуйтеся через Weblate!</string>
|
||||
<string name="la_lock_mode">Режим блокування SimpleX</string>
|
||||
<string name="la_lock_mode_system">Системна аутентифікація</string>
|
||||
<string name="to_protect_privacy_simplex_has_ids_for_queues">Для захисту вашої конфіденційності SimpleX використовує окремі ID для кожного вашого контакту.</string>
|
||||
<string name="to_protect_privacy_simplex_has_ids_for_queues">Для захисту приватності, замість ідентифікаторів користувачів, які використовуються всіма іншими платформами, у SimpleX є ідентифікатори черг повідомлень, окремі для кожного з ваших контактів.</string>
|
||||
<string name="onboarding_notifications_mode_off">Коли додаток запущено</string>
|
||||
<string name="onboarding_notifications_mode_periodic">Періодично</string>
|
||||
<string name="status_contact_has_no_e2e_encryption">контакт не має зашифрування e2e</string>
|
||||
@@ -919,7 +919,7 @@
|
||||
<string name="snd_group_event_member_deleted">ви видалили %1$s</string>
|
||||
<string name="tap_to_activate_profile">Торкніться для активації профілю.</string>
|
||||
<string name="prohibit_sending_voice">Забороняйте надсилання голосових повідомлень.</string>
|
||||
<string name="group_members_can_send_disappearing">Учасники можуть надсилати повідомлення, що зникають.</string>
|
||||
<string name="group_members_can_send_disappearing">Учасники групи можуть надсилати самознищувальні повідомлення.</string>
|
||||
<string name="ttl_min">%d хв</string>
|
||||
<string name="v4_5_reduced_battery_usage">Зменшене споживання енергії батареї</string>
|
||||
<string name="edit_image">Редагувати зображення</string>
|
||||
@@ -1012,7 +1012,7 @@
|
||||
<string name="clear_verification">Очистити перевірку</string>
|
||||
<string name="is_verified">%s перевірено</string>
|
||||
<string name="is_not_verified">%s не перевірено</string>
|
||||
<string name="send_us_an_email">Написати нам ел. листа</string>
|
||||
<string name="send_us_an_email">Надішліть нам електронного листа</string>
|
||||
<string name="smp_servers_test_server">Тестовий сервер</string>
|
||||
<string name="smp_save_servers_question">Зберегти сервери\?</string>
|
||||
<string name="your_ICE_servers">Ваші сервери ICE</string>
|
||||
@@ -1089,7 +1089,7 @@
|
||||
<string name="chat_preferences_no">ні</string>
|
||||
<string name="chat_preferences_off">вимк</string>
|
||||
<string name="set_group_preferences">Встановити налаштування групи</string>
|
||||
<string name="your_preferences">Налаштування</string>
|
||||
<string name="your_preferences">Ваші налаштування</string>
|
||||
<string name="direct_messages">Прямі повідомлення</string>
|
||||
<string name="icon_descr_server_status_error">Помилка</string>
|
||||
<string name="add_contact">Одноразове запрошення</string>
|
||||
@@ -1161,7 +1161,7 @@
|
||||
<string name="colored_text">кольоровий</string>
|
||||
<string name="callstatus_ended">дзвінок завершено %1$s</string>
|
||||
<string name="callstatus_error">помилка дзвінка</string>
|
||||
<string name="next_generation_of_private_messaging">Майбутнє обміну повідомленнями</string>
|
||||
<string name="next_generation_of_private_messaging">Наступне покоління \nприватних повідомлень</string>
|
||||
<string name="opensource_protocol_and_code_anybody_can_run_servers">Кожен може хостити сервери.</string>
|
||||
<string name="settings_developer_tools">Інструменти розробника</string>
|
||||
<string name="settings_experimental_features">Експериментальні функції</string>
|
||||
@@ -1178,7 +1178,7 @@
|
||||
<string name="to_share_with_your_contact">(щоб поділитися з вашим контактом)</string>
|
||||
<string name="connect_via_link_or_qr_from_clipboard_or_in_person">(сканувати або вставити з буферу обміну)</string>
|
||||
<string name="you_can_connect_to_simplex_chat_founder"><![CDATA[Ви можете <font color="#0088ff">підключитися до розробників SimpleX Chat, щоб задати будь-які питання і отримувати оновлення</font>.]]></string>
|
||||
<string name="desktop_scan_QR_code_from_app_via_scan_QR_code"><![CDATA[💻 на комп\'ютері: скануйте відображений QR-код з додатка за допомогою <b>Сканувати QR-код</b>.]]></string>
|
||||
<string name="desktop_scan_QR_code_from_app_via_scan_QR_code"><![CDATA[💻 настільний комп\'ютер: скануйте відображений QR-код з додатка за допомогою <b>Сканувати QR-код</b>.]]></string>
|
||||
<string name="icon_descr_address">Адреса SimpleX</string>
|
||||
<string name="show_QR_code">Показати QR-код</string>
|
||||
<string name="joining_group">Приєднання до групи</string>
|
||||
@@ -1249,7 +1249,7 @@
|
||||
<string name="error_aborting_address_change">Помилка відміни зміни адреси</string>
|
||||
<string name="abort_switch_receiving_address">Перервати зміну адреси</string>
|
||||
<string name="allow_to_send_files">Дозволити надсилання файлів та медіафайлів.</string>
|
||||
<string name="files_are_prohibited_in_group">Файли та медіа заборонені.</string>
|
||||
<string name="files_are_prohibited_in_group">Файли та медіафайли заборонені в цій групі.</string>
|
||||
<string name="connect_via_link_incognito">Підключити інкогніто</string>
|
||||
<string name="connect_use_current_profile">Використовувати поточний профіль</string>
|
||||
<string name="turn_off_battery_optimization_button">Дозволити</string>
|
||||
@@ -1347,7 +1347,7 @@
|
||||
<string name="abort_switch_receiving_address_desc">Зміна адреси буде скасована. Буде використовуватися стара адреса для отримання.</string>
|
||||
<string name="sync_connection_force_question">Повторно узгодити шифрування?</string>
|
||||
<string name="sync_connection_force_desc">Шифрування працює і нова угода про шифрування не потрібна. Це може призвести до помилок підключення!</string>
|
||||
<string name="group_members_can_send_files">Учасники можуть надсилати файли та медіа.</string>
|
||||
<string name="group_members_can_send_files">Учасники групи можуть надсилати файли та медіафайли.</string>
|
||||
<string name="database_will_be_encrypted_and_passphrase_stored_in_settings">База даних буде зашифрована, і ключова фраза буде збережена в налаштуваннях.</string>
|
||||
<string name="expand_verb">Розгорнути</string>
|
||||
<string name="connect_plan_repeat_connection_request">Повторити запит на підключення?</string>
|
||||
@@ -1441,7 +1441,7 @@
|
||||
<string name="multicast_connect_automatically">Підключати автоматично</string>
|
||||
<string name="desktop_address">Адреса робочого столу</string>
|
||||
<string name="only_one_device_can_work_at_the_same_time">Одночасно може працювати лише один пристрій</string>
|
||||
<string name="v5_4_link_mobile_desktop">Підключіть мобільний і десктопний додатки! 🔗</string>
|
||||
<string name="v5_4_link_mobile_desktop">Посилання на мобільний та комп\'ютерний додатки! 🔗</string>
|
||||
<string name="v5_4_link_mobile_desktop_descr">Через безпечний квантовостійкий протокол.</string>
|
||||
<string name="open_on_mobile_and_scan_qr_code"><![CDATA[Відкрийте <i>Використовувати з робочого столу</i> у мобільному додатку і скануйте QR-код.]]></string>
|
||||
<string name="v5_4_block_group_members_descr">Щоб приховати небажані повідомлення.</string>
|
||||
@@ -1734,7 +1734,7 @@
|
||||
<string name="forward_chat_item">Переслати</string>
|
||||
<string name="forwarded_chat_item_info_tab">Переслано</string>
|
||||
<string name="forwarded_from_chat_item_info_title">Переслано з</string>
|
||||
<string name="group_members_can_send_simplex_links">Учасники можуть надсилати посилання SimpleX.</string>
|
||||
<string name="group_members_can_send_simplex_links">Учасники групи можуть надсилати посилання SimpleX.</string>
|
||||
<string name="v5_7_call_sounds">Звуки вхідного дзвінка</string>
|
||||
<string name="chat_theme_apply_to_light_mode">Світлий режим</string>
|
||||
<string name="update_network_smp_proxy_fallback_question">Запасний варіант маршрутизації повідомлень</string>
|
||||
@@ -1828,7 +1828,7 @@
|
||||
<string name="network_smp_proxy_fallback_allow_protected">Коли IP приховано</string>
|
||||
<string name="network_smp_proxy_fallback_allow">Так</string>
|
||||
<string name="network_option_rcv_concurrency">Отримання паралелізму</string>
|
||||
<string name="simplex_links_are_prohibited_in_group">Посилання SimpleX заборонені.</string>
|
||||
<string name="simplex_links_are_prohibited_in_group">У цій групі заборонені посилання на SimpleX.</string>
|
||||
<string name="v5_7_shape_profile_images">Сформуйте зображення профілю</string>
|
||||
<string name="v5_7_call_sounds_descr">При підключенні аудіо та відеодзвінків.</string>
|
||||
<string name="reset_single_color">Скинути колір</string>
|
||||
@@ -1953,7 +1953,8 @@
|
||||
<string name="servers_info_subscriptions_connections_pending">В очікуванні</string>
|
||||
<string name="servers_info_proxied_servers_section_header">Проксіровані сервери</string>
|
||||
<string name="servers_info_target">Показувати інформацію для</string>
|
||||
<string name="servers_info_private_data_disclaimer">Починаючи з %s.\nУсі дані зберігаються приватно на вашому пристрої.</string>
|
||||
<string name="servers_info_private_data_disclaimer">Починаючи з %s.
|
||||
\nВсі дані зберігаються лише на вашому пристрою.</string>
|
||||
<string name="servers_info_reconnect_server_message">Перепідключити сервер для примусової доставки повідомлень. Це використовує додатковий трафік.</string>
|
||||
<string name="servers_info_reset_stats">Скинути всю статистику</string>
|
||||
<string name="servers_info_reset_stats_alert_title">Скинути всю статистику?</string>
|
||||
@@ -2010,7 +2011,7 @@
|
||||
<string name="app_check_for_updates_button_download">Завантажити %s (%s)</string>
|
||||
<string name="app_check_for_updates_button_open">Відкрити розташування файлу</string>
|
||||
<string name="app_check_for_updates_button_skip">Пропустити цю версію</string>
|
||||
<string name="one_hand_ui">Доступні панелі додатка</string>
|
||||
<string name="one_hand_ui">Доступна панель чату</string>
|
||||
<string name="cant_call_contact_alert_title">Не можна зателефонувати контакту</string>
|
||||
<string name="cant_call_contact_connecting_wait_alert_text">Підключення до контакту, будь ласка, зачекайте або перевірте пізніше!</string>
|
||||
<string name="calls_prohibited_alert_title">Дзвінки заборонені!</string>
|
||||
@@ -2128,10 +2129,10 @@
|
||||
<string name="to_protect_against_your_link_replaced_compare_codes">Щоб захиститися від заміни вашого посилання, ви можете порівняти коди безпеки контактів.</string>
|
||||
<string name="for_social_media">Для соціальних мереж</string>
|
||||
<string name="or_to_share_privately">Або поділитися приватно</string>
|
||||
<string name="onboarding_choose_server_operators">Оператори серверів</string>
|
||||
<string name="onboarding_choose_server_operators">Обирайте операторів</string>
|
||||
<string name="onboarding_network_operators">Мережеві оператори</string>
|
||||
<string name="onboarding_network_operators_conditions_will_be_accepted">Умови будуть прийняті для ввімкнених операторів через 30 днів.</string>
|
||||
<string name="onboarding_network_operators_app_will_use_for_routing">Наприклад, якщо ваш контакт отримує повідомлення через сервер SimpleX Chat, ваш додаток доставлятиме їх через сервер Flux.</string>
|
||||
<string name="onboarding_network_operators_app_will_use_for_routing">Наприклад, якщо ви отримуєте повідомлення через сервер SimpleX Chat, програма використовуватиме один із серверів Flux для приватної маршрутизації.</string>
|
||||
<string name="onboarding_select_network_operators_to_use">Виберіть мережевих операторів для використання.</string>
|
||||
<string name="onboarding_network_operators_configure_via_settings">Ви можете налаштувати сервери за допомогою налаштувань.</string>
|
||||
<string name="onboarding_network_operators_review_later">Перегляньте пізніше</string>
|
||||
@@ -2144,16 +2145,16 @@
|
||||
<string name="your_servers">Ваші сервери</string>
|
||||
<string name="use_servers_of_operator_x">Використовуйте %s</string>
|
||||
<string name="operator_use_operator_toggle_description">Використовуйте сервери</string>
|
||||
<string name="operator_same_conditions_will_be_applied"><![CDATA[Ті ж умови будуть застосовуватись до оператора <b>%s</b>.]]></string>
|
||||
<string name="operator_same_conditions_will_be_applied"><![CDATA[Ті самі умови стосуватимуться оператора <b>%s</b>.]]></string>
|
||||
<string name="operator_conditions_will_be_applied"><![CDATA[Ці умови також застосовуватимуться для: <b>%s</b>.]]></string>
|
||||
<string name="accept_conditions">Прийняти умови</string>
|
||||
<string name="view_conditions">Переглянути умови</string>
|
||||
<string name="view_conditions">Умови перегляду</string>
|
||||
<string name="operator_added_message_servers">Додано сервери повідомлень</string>
|
||||
<string name="operator_use_for_messages_private_routing">Для приватної маршрутизації</string>
|
||||
<string name="operator_use_for_messages_receiving">Щоб отримати</string>
|
||||
<string name="operator_use_for_files">Використовуйте для файлів</string>
|
||||
<string name="operator_added_xftp_servers">Додано медіа та файлові сервери</string>
|
||||
<string name="operator_open_changes">Відкрити зміни</string>
|
||||
<string name="operator_open_changes">Відкриті зміни</string>
|
||||
<string name="operator_open_conditions">Відкриті умови</string>
|
||||
<string name="xftp_servers_per_user">Сервери для нових файлів вашого поточного профілю чату</string>
|
||||
<string name="operator_use_for_sending">Щоб відправити</string>
|
||||
@@ -2176,7 +2177,7 @@
|
||||
<string name="operator_conditions_accepted_for_some"><![CDATA[Умови вже прийняті для наступних операторів: <b>%s</b>.]]></string>
|
||||
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[Умови будуть прийняті для оператора(ів): <b>%s</b>.]]></string>
|
||||
<string name="operators_conditions_will_be_accepted_for"><![CDATA[Умови будуть прийняті для оператора(ів): <b>%s</b>.]]></string>
|
||||
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[Ті ж умови будуть застосовуватись до оператора(ів): <b>%s</b>.]]></string>
|
||||
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[Ті самі умови застосовуватимуться до оператора(ів): <b>%s</b>.]]></string>
|
||||
<string name="operators_conditions_will_also_apply"><![CDATA[Ці умови також застосовуватимуться для: <b>%s</b>.]]></string>
|
||||
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[Щоб використовувати сервери <b>%s</b>, прийміть умови використання.]]></string>
|
||||
<string name="operator_conditions_failed_to_load">Текст поточних умов не вдалося завантажити, ви можете переглянути умови за цим посиланням:</string>
|
||||
@@ -2194,7 +2195,7 @@
|
||||
<string name="simplex_address_or_1_time_link">SimpleX адреса або одноразове посилання?</string>
|
||||
<string name="smp_servers_new_server">Новий сервер</string>
|
||||
<string name="no_media_servers_configured_for_private_routing">Немає серверів для отримання файлів.</string>
|
||||
<string name="operator_review_conditions">Переглянути умови</string>
|
||||
<string name="operator_review_conditions">Умови перегляду</string>
|
||||
<string name="no_media_servers_configured_for_sending">Немає серверів для надсилання файлів.</string>
|
||||
<string name="network_preset_servers_title">Попередньо встановлені сервери</string>
|
||||
<string name="error_server_protocol_changed">Протокол сервера змінено.</string>
|
||||
@@ -2202,53 +2203,9 @@
|
||||
<string name="simplex_address_and_1_time_links_are_safe_to_share">SimpleX-адреси та одноразові посилання можна безпечно ділитися через будь-який месенджер.</string>
|
||||
<string name="connection_error_quota_desc">З\'єднання досягло ліміту недоставлених повідомлень, ваш контакт може бути офлайн.</string>
|
||||
<string name="address_creation_instruction">Натисніть Створити адресу SimpleX у меню, щоб створити її пізніше.</string>
|
||||
<string name="onboarding_network_operators_app_will_use_different_operators">Додаток захищає вашу конфіденційність, використовуючи різних операторів у кожній розмові.</string>
|
||||
<string name="onboarding_network_operators_app_will_use_different_operators">Якщо увімкнено більше одного оператора, програма використовуватиме сервери різних операторів для кожної розмови.</string>
|
||||
<string name="operator_use_for_messages">Використовуйте для повідомлень</string>
|
||||
<string name="onboarding_network_operators_conditions_you_can_configure">Ви можете налаштувати операторів у налаштуваннях Мережі та серверів.</string>
|
||||
<string name="chat_archive">Або імпортуйте архівний файл</string>
|
||||
<string name="remote_hosts_section">Віддалені мобільні</string>
|
||||
<string name="xiaomi_ignore_battery_optimization"><![CDATA[<b>Пристрої Xiaomi</b>: будь ласка, увімкніть Автозапуск у налаштуваннях системи, щоб сповіщення працювали.]]></string>
|
||||
<string name="maximum_message_size_title">Повідомлення занадто велике!</string>
|
||||
<string name="maximum_message_size_reached_non_text">Будь ласка, зменшіть розмір повідомлення або видаліть медіа та надішліть знову.</string>
|
||||
<string name="add_your_team_members_to_conversations">Додайте учасників команди до розмов.</string>
|
||||
<string name="business_address">Бізнес адреса</string>
|
||||
<string name="onboarding_notifications_mode_periodic_desc_short">Перевіряти повідомлення кожні 10 хвилин.</string>
|
||||
<string name="onboarding_notifications_mode_off_desc_short">Без фонової служби</string>
|
||||
<string name="onboarding_notifications_mode_battery">Сповіщення та батарея</string>
|
||||
<string name="onboarding_notifications_mode_service_desc_short">Додаток завжди працює у фоні.</string>
|
||||
<string name="all_message_and_files_e2e_encrypted"><![CDATA[Усі повідомлення та файли надсилаються <b>зашифрованими end-to-end</b>, з пост-квантовою безпекою в особистих повідомленнях.]]></string>
|
||||
<string name="leave_chat_question">Покинути чат?</string>
|
||||
<string name="member_will_be_removed_from_chat_cannot_be_undone">Учасник буде видалений з чату — це неможливо скасувати!</string>
|
||||
<string name="v6_2_business_chats">Бізнес чати</string>
|
||||
<string name="v6_2_business_chats_descr">Конфіденційність для ваших клієнтів.</string>
|
||||
<string name="chat_bottom_bar">Доступна панель чату</string>
|
||||
<string name="button_add_friends">Додати друзів</string>
|
||||
<string name="button_add_team_members">Додати учасників команди</string>
|
||||
<string name="invite_to_chat_button">Запросити до чату</string>
|
||||
<string name="delete_chat_for_all_members_cannot_undo_warning">Чат буде видалений для всіх учасників — це неможливо скасувати!</string>
|
||||
<string name="button_delete_chat">Видалити чат</string>
|
||||
<string name="delete_chat_question">Видалити чат?</string>
|
||||
<string name="only_chat_owners_can_change_prefs">Тільки власники чату можуть змінювати налаштування.</string>
|
||||
<string name="member_role_will_be_changed_with_notification_chat">Роль буде змінена на %s. Усі учасники чату отримають повідомлення.</string>
|
||||
<string name="direct_messages_are_prohibited">Прямі повідомлення між учасниками заборонені.</string>
|
||||
<string name="connect_plan_you_are_already_connected_with_vName"><![CDATA[Ви вже підключені до <b>%1$s</b>.]]></string>
|
||||
<string name="connect_plan_chat_already_exists">Чат вже існує!</string>
|
||||
<string name="how_it_helps_privacy">Як це допомагає зберігати конфіденційність</string>
|
||||
<string name="direct_messages_are_prohibited_in_chat">Прямі повідомлення між учасниками заборонені в цьому чаті.</string>
|
||||
<string name="button_leave_chat">Покинути чат</string>
|
||||
<string name="info_row_chat">Чат</string>
|
||||
<string name="delete_chat_for_self_cannot_undo_warning">Чат буде видалений для вас — це неможливо скасувати!</string>
|
||||
<string name="maximum_message_size_reached_text">Будь ласка, зменшіть розмір повідомлення та надішліть знову.</string>
|
||||
<string name="maximum_message_size_reached_forwarding">Скопіюйте та зменшіть розмір повідомлення для відправки.</string>
|
||||
<string name="you_will_stop_receiving_messages_from_this_chat_chat_history_will_be_preserved">Ви припините отримувати повідомлення з цього чату. Історія чату буде збережена.</string>
|
||||
<string name="chat_main_profile_sent">Ваш профіль чату буде надіслано учасникам чату.</string>
|
||||
<string name="onboarding_network_operators_cant_see_who_talks_to_whom">Коли увімкнено більше ніж одного оператора, жоден з них не має метаданих, щоб дізнатися, хто спілкується з ким.</string>
|
||||
<string name="display_name_accepted_invitation">прийнято запрошення</string>
|
||||
<string name="display_name_requested_to_connect">запит на підключення</string>
|
||||
<string name="onboarding_network_about_operators">Про операторів</string>
|
||||
<string name="onboarding_network_operators_simplex_flux_agreement">SimpleX Chat та Flux уклали угоду про включення серверів, що працюють на Flux, до додатку.</string>
|
||||
<string name="sync_connection_desc">Підключення вимагає повторного узгодження шифрування.</string>
|
||||
<string name="encryption_renegotiation_in_progress">Виконується повторне узгодження шифрування.</string>
|
||||
<string name="sync_connection_confirm">Виправити</string>
|
||||
<string name="sync_connection_question">Виправити підключення?</string>
|
||||
</resources>
|
||||
@@ -1217,7 +1217,7 @@
|
||||
<string name="selected_chat_items_nothing_selected">Không có gì được chọn</string>
|
||||
<string name="open_verb">Mở</string>
|
||||
<string name="auth_open_chat_console">Mở bảng điều khiển trò chuyện</string>
|
||||
<string name="auth_open_chat_profiles">Thay đổi hồ sơ trò chuyện</string>
|
||||
<string name="auth_open_chat_profiles">Mở hồ sơ trò chuyện</string>
|
||||
<string name="network_use_onion_hosts_required_desc">Dịch vụ onion sẽ được yêu cầu để kết nối.\nXin lưu ý: bạn sẽ không thể kết nối tới các máy chủ mà không có địa chỉ .onion.</string>
|
||||
<string name="rcv_group_event_open_chat">Mở</string>
|
||||
<string name="open_database_folder">Mở thư mục cơ sở dữ liệu</string>
|
||||
@@ -1373,9 +1373,9 @@
|
||||
<string name="connect_plan_you_are_already_connecting_to_vName"><![CDATA[Bạn đã kết nối tới <b>%1$s</b> rồi.]]></string>
|
||||
<string name="system_restricted_background_in_call_warn"><![CDATA[Để thực hiện cuộc gọi trong nền, vui lòng chọn <b>Mức sử dụng pin ứng dụng</b> / <b>Không hạn chế</b> trong phần cài đặt ứng dụng.]]></string>
|
||||
<string name="remote_host_error_timeout"><![CDATA[Đã hết thời gian chờ khi kết nối tới thiết bị di động <b>%s</b>]]></string>
|
||||
<string name="turn_off_battery_optimization"><![CDATA[<b>Chọn cho phép</b> trong hộp thoại tiếp theo để nhận thông báo ngay lập tức.]]></string>
|
||||
<string name="turn_off_battery_optimization"><![CDATA[Để sử dụng, xin vui lòng <b>cho phép SimpleX chạy trong nền</b> trong hộp thoại tiếp theo. Nếu không, thông báo sẽ bị vô hiệu hóa.]]></string>
|
||||
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[Để sử dụng các máy chủ của <b>%s</b>, vui lòng chấp nhận điều kiện sử dụng.]]></string>
|
||||
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Để tăng cường sự riêng tư, <b>SimpleX chạy trong nền</b> thay vì dùng thông báo đẩy.]]></string>
|
||||
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Để bảo vệ sự riêng tư của bạn, thay vì sử dụng thông báo đẩy thì ứng dụng dùng <b>Dịch vụ nền SimpleX</b> – nó tiêu tốn một vài phần trăm pin mỗi ngày.]]></string>
|
||||
<string name="system_restricted_background_warn"><![CDATA[Để bật thông báo, vui lòng chọn <b>Mức sử dụng pin ứng dụng</b> / <b>Không hạn chế</b> trong phần cài đặt ứng dụng.]]></string>
|
||||
<string name="connect_plan_you_are_already_in_group_vName"><![CDATA[Bạn đã ở trong nhóm <b>%1$s</b> rồi.]]></string>
|
||||
<string name="connect_plan_this_is_your_link_for_group_vName"><![CDATA[Đây là đường dẫn của bạn cho nhóm <b>%1$s</b>!]]></string>
|
||||
@@ -1399,19 +1399,4 @@
|
||||
<string name="error_updating_server_title">Lỗi cập nhật máy chủ</string>
|
||||
<string name="operator_conditions_accepted_on">Các điều kiện đã được chấp nhận vào: %s.</string>
|
||||
<string name="operator_conditions_accepted_for_enabled_operators_on">Các điều kiện sẽ được tự động chấp nhận với các nhà cung cấp được cho phép vào: %s.</string>
|
||||
<string name="xiaomi_ignore_battery_optimization"><![CDATA[<b>Thiết bị Xiaomi</b>: vui lòng bật Tự động khởi động trong phần cài đặt hệ thống để thông báo có thể hoạt động bình thường.]]></string>
|
||||
<string name="onboarding_notifications_mode_service_desc_short">Ứng dụng luôn chạy dưới nền</string>
|
||||
<string name="delete_chat_for_all_members_cannot_undo_warning">Cuộc trò chuyện sẽ bị xóa cho tất cả các thành viên - việc này không thể được hoàn tác!</string>
|
||||
<string name="delete_chat_for_self_cannot_undo_warning">Cuộc trò chuyện sẽ bị xóa cho bạn - việc này không thể được hoàn tác!</string>
|
||||
<string name="v6_2_business_chats">Các cuộc trò chuyện công việc</string>
|
||||
<string name="button_add_team_members">Thêm các thành viên nhóm</string>
|
||||
<string name="info_row_chat">Cuộc trò chuyện</string>
|
||||
<string name="connect_plan_you_are_already_connected_with_vName"><![CDATA[Bạn đã kết nối với <b>%1$s</b> rồi.]]></string>
|
||||
<string name="connect_plan_chat_already_exists">Cuộc trò chuyện đã tồn tại!</string>
|
||||
<string name="button_add_friends">Thêm bạn bè</string>
|
||||
<string name="display_name_accepted_invitation">đã chấp nhận lời mời</string>
|
||||
<string name="all_message_and_files_e2e_encrypted"><![CDATA[Tất cả các tin nhắn và tệp gửi đi đều được <b>mã hóa đầu cuối</b>, với bảo mật sau ượng tử trong các tin nhắn trực tiếp.]]></string>
|
||||
<string name="onboarding_network_about_operators">Giới thiệu về các nhà cung cấp</string>
|
||||
<string name="add_your_team_members_to_conversations">Thêm các thành viên nhóm của bạn vào các cuộc trò chuyện.</string>
|
||||
<string name="business_address">Địa chỉ doanh nghiệp</string>
|
||||
</resources>
|
||||
@@ -1917,7 +1917,8 @@
|
||||
<string name="servers_info_reset_stats_alert_confirm">重置</string>
|
||||
<string name="network_error_broker_host_desc">服务器地址不兼容网络设置:%1$s。</string>
|
||||
<string name="servers_info_starting_from">起始自 %s。</string>
|
||||
<string name="servers_info_private_data_disclaimer">自 %s 起 \n所有数据均私密地保存在你的设备上..</string>
|
||||
<string name="servers_info_private_data_disclaimer">起始自 %s.
|
||||
\n所有数据都是设备的私有数据。</string>
|
||||
<string name="subscribed">已订阅</string>
|
||||
<string name="acknowledged">已认可</string>
|
||||
<string name="network_error_broker_version_desc">服务器版本不兼容你的应用:%1$s.</string>
|
||||
@@ -2156,8 +2157,8 @@
|
||||
<string name="v6_2_network_decentralization_descr">应用中的第二个预设运营者!</string>
|
||||
<string name="v6_2_improved_chat_navigation">改进了聊天导航</string>
|
||||
<string name="view_updated_conditions">查看更新后的条款</string>
|
||||
<string name="onboarding_network_operators_app_will_use_for_routing">比如,如果你通过 SimpleX 服务器收到消息,应用会通过 Flux 服务器传送它们。</string>
|
||||
<string name="onboarding_network_operators_app_will_use_different_operators">应用通过在每个对话中使用不同运营者保护你的隐私。</string>
|
||||
<string name="onboarding_network_operators_app_will_use_for_routing">比如,如果你通过 SimpleX 服务器收到消息,应用会使用 Flux 服务器中的一台进行私密路由。</string>
|
||||
<string name="onboarding_network_operators_app_will_use_different_operators">启用了多于一个网络运营者时,应用会为每个对话使用不同运营者的服务器。</string>
|
||||
<string name="accept_conditions">接受条款</string>
|
||||
<string name="appearance_bars_blur_radius">模糊</string>
|
||||
<string name="address_or_1_time_link">地址或一次性链接?</string>
|
||||
@@ -2228,13 +2229,4 @@
|
||||
<string name="info_row_chat">聊天</string>
|
||||
<string name="member_will_be_removed_from_chat_cannot_be_undone">将从聊天中删除成员 - 此操作无法撤销!</string>
|
||||
<string name="maximum_message_size_reached_text">请减小消息尺寸并再次发送。</string>
|
||||
<string name="onboarding_network_operators_cant_see_who_talks_to_whom">当启用了超过一个运营者时,没有一个运营者拥有了解谁和谁联络的元数据。</string>
|
||||
<string name="display_name_accepted_invitation">已接受邀请</string>
|
||||
<string name="display_name_requested_to_connect">被请求连接</string>
|
||||
<string name="onboarding_network_about_operators">关于运营者</string>
|
||||
<string name="onboarding_network_operators_simplex_flux_agreement">SimpleX Chat 和 Flux 达成协议将 Flux 运营的服务器包括在应用中。</string>
|
||||
<string name="sync_connection_confirm">修复</string>
|
||||
<string name="sync_connection_question">修复连接?</string>
|
||||
<string name="encryption_renegotiation_in_progress">正进行加密重协商。</string>
|
||||
<string name="sync_connection_desc">连接需要加密重协商。</string>
|
||||
</resources>
|
||||
@@ -12,60 +12,26 @@ body {
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
@media (orientation: portrait) {
|
||||
#remote-video-stream.collapsed {
|
||||
position: absolute;
|
||||
width: 30%;
|
||||
max-width: 30%;
|
||||
height: 39.9vw;
|
||||
object-fit: cover;
|
||||
margin: 16px;
|
||||
border-radius: 16px;
|
||||
bottom: 80px;
|
||||
right: 0;
|
||||
}
|
||||
#remote-video-stream.collapsed {
|
||||
position: absolute;
|
||||
max-width: 30%;
|
||||
max-height: 30%;
|
||||
object-fit: cover;
|
||||
margin: 16px;
|
||||
border-radius: 16px;
|
||||
bottom: 80px;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
@media (orientation: landscape) {
|
||||
#remote-video-stream.collapsed {
|
||||
position: absolute;
|
||||
width: 20%;
|
||||
max-width: 20%;
|
||||
height: 15.03vw;
|
||||
object-fit: cover;
|
||||
margin: 16px;
|
||||
border-radius: 16px;
|
||||
bottom: 80px;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (orientation: portrait) {
|
||||
#remote-video-stream.collapsed-pip {
|
||||
position: absolute;
|
||||
width: 50%;
|
||||
max-width: 50%;
|
||||
height: 66.5vw;
|
||||
object-fit: cover;
|
||||
margin: 8px;
|
||||
border-radius: 8px;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (orientation: landscape) {
|
||||
#remote-video-stream.collapsed-pip {
|
||||
position: absolute;
|
||||
width: 50%;
|
||||
max-width: 50%;
|
||||
height: 37.59vw;
|
||||
object-fit: cover;
|
||||
margin: 8px;
|
||||
border-radius: 8px;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
}
|
||||
#remote-video-stream.collapsed-pip {
|
||||
position: absolute;
|
||||
max-width: 50%;
|
||||
max-height: 50%;
|
||||
object-fit: cover;
|
||||
margin: 8px;
|
||||
border-radius: 8px;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
#remote-screen-video-stream.inline {
|
||||
@@ -75,32 +41,15 @@ body {
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
@media (orientation: portrait) {
|
||||
#local-video-stream.inline {
|
||||
position: absolute;
|
||||
width: 30%;
|
||||
max-width: 30%;
|
||||
height: 39.9vw;
|
||||
object-fit: cover;
|
||||
margin: 16px;
|
||||
border-radius: 16px;
|
||||
top: 0;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (orientation: landscape) {
|
||||
#local-video-stream.inline {
|
||||
position: absolute;
|
||||
width: 20%;
|
||||
max-width: 20%;
|
||||
height: 15.03vw;
|
||||
object-fit: cover;
|
||||
margin: 16px;
|
||||
border-radius: 16px;
|
||||
top: 0;
|
||||
right: 0;
|
||||
}
|
||||
#local-video-stream.inline {
|
||||
position: absolute;
|
||||
width: 30%;
|
||||
max-width: 30%;
|
||||
object-fit: cover;
|
||||
margin: 16px;
|
||||
border-radius: 16px;
|
||||
top: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
#local-screen-video-stream.inline {
|
||||
|
||||
@@ -301,7 +301,6 @@ const processCommand = (function () {
|
||||
localStream = await getLocalMediaStream(true, command.media == CallMediaType.Video && (await browserHasCamera()), VideoCamera.User);
|
||||
const videos = getVideoElements();
|
||||
if (videos) {
|
||||
setupLocalVideoRatio(videos.local);
|
||||
videos.local.srcObject = localStream;
|
||||
videos.local.play().catch((e) => console.log(e));
|
||||
}
|
||||
@@ -331,12 +330,9 @@ const processCommand = (function () {
|
||||
console.log("starting incoming call - create webrtc session");
|
||||
if (activeCall)
|
||||
endCall();
|
||||
// It can be already defined on Android when switching calls (if the previous call was outgoing)
|
||||
notConnectedCall = undefined;
|
||||
inactiveCallMediaSources.mic = true;
|
||||
inactiveCallMediaSources.camera = command.media == CallMediaType.Video;
|
||||
inactiveCallMediaSourcesChanged(inactiveCallMediaSources);
|
||||
setupLocalVideoRatio(getVideoElements().local);
|
||||
const { media, iceServers, relay } = command;
|
||||
const encryption = supportsInsertableStreams(useWorker);
|
||||
const aesKey = encryption ? command.aesKey : undefined;
|
||||
@@ -551,13 +547,13 @@ const processCommand = (function () {
|
||||
}
|
||||
function endCall() {
|
||||
var _a;
|
||||
shutdownCameraAndMic();
|
||||
try {
|
||||
(_a = activeCall === null || activeCall === void 0 ? void 0 : activeCall.connection) === null || _a === void 0 ? void 0 : _a.close();
|
||||
}
|
||||
catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
shutdownCameraAndMic();
|
||||
activeCall = undefined;
|
||||
resetVideoElements();
|
||||
}
|
||||
@@ -646,21 +642,27 @@ const processCommand = (function () {
|
||||
}
|
||||
// Without doing it manually Firefox shows black screen but video can be played in Picture-in-Picture
|
||||
videos.local.play().catch((e) => console.log(e));
|
||||
setupLocalVideoRatio(videos.local);
|
||||
}
|
||||
function setupLocalVideoRatio(local) {
|
||||
const ratio = isDesktop ? 1.33 : 1 / 1.33;
|
||||
const currentRect = local.getBoundingClientRect();
|
||||
// better to get percents from here than to hardcode values from styles (the styles can be changed)
|
||||
const screenWidth = currentRect.left + currentRect.width;
|
||||
const percents = currentRect.width / screenWidth;
|
||||
local.style.width = `${percents * 100}%`;
|
||||
local.style.height = `${(percents / ratio) * 100}vw`;
|
||||
local.addEventListener("loadedmetadata", function () {
|
||||
console.log("Local video videoWidth: " + local.videoWidth + "px, videoHeight: " + local.videoHeight + "px");
|
||||
if (local.videoWidth == 0 || local.videoHeight == 0)
|
||||
return;
|
||||
const ratio = local.videoWidth > local.videoHeight ? 0.2 : 0.3;
|
||||
local.style.height = `${(ratio / (local.videoWidth / local.videoHeight)) * 100}vw`;
|
||||
local.style.height = `${(percents / (local.videoWidth / local.videoHeight)) * 100}vw`;
|
||||
});
|
||||
local.onresize = function () {
|
||||
console.log("Local video size changed to " + local.videoWidth + "x" + local.videoHeight);
|
||||
if (local.videoWidth == 0 || local.videoHeight == 0)
|
||||
return;
|
||||
const ratio = local.videoWidth > local.videoHeight ? 0.2 : 0.3;
|
||||
local.style.height = `${(ratio / (local.videoWidth / local.videoHeight)) * 100}vw`;
|
||||
local.style.height = `${(percents / (local.videoWidth / local.videoHeight)) * 100}vw`;
|
||||
};
|
||||
}
|
||||
function setupEncryptionForLocalStream(call) {
|
||||
@@ -1126,9 +1128,8 @@ const processCommand = (function () {
|
||||
(!!useWorker && "RTCRtpScriptTransform" in window));
|
||||
}
|
||||
function shutdownCameraAndMic() {
|
||||
if (activeCall) {
|
||||
if (activeCall === null || activeCall === void 0 ? void 0 : activeCall.localStream) {
|
||||
activeCall.localStream.getTracks().forEach((track) => track.stop());
|
||||
activeCall.localScreenStream.getTracks().forEach((track) => track.stop());
|
||||
}
|
||||
}
|
||||
function resetVideoElements() {
|
||||
@@ -1294,9 +1295,6 @@ function changeLayout(layout) {
|
||||
break;
|
||||
}
|
||||
videos.localScreen.style.visibility = localSources.screenVideo ? "visible" : "hidden";
|
||||
if (!isDesktop && !localSources.camera) {
|
||||
resetLocalVideoElementHeight(videos.local);
|
||||
}
|
||||
}
|
||||
function getVideoElements() {
|
||||
const local = document.getElementById("local-video-stream");
|
||||
@@ -1314,11 +1312,6 @@ function getVideoElements() {
|
||||
return;
|
||||
return { local, localScreen, remote, remoteScreen };
|
||||
}
|
||||
// Allow CSS to figure out the size of view by itself on Android because rotating to different orientation
|
||||
// without dropping override will cause the view to have not normal proportion while no video is present
|
||||
function resetLocalVideoElementHeight(local) {
|
||||
local.style.height = "";
|
||||
}
|
||||
function desktopShowPermissionsAlert(mediaType) {
|
||||
if (!isDesktop)
|
||||
return;
|
||||
|
||||
@@ -15,9 +15,8 @@ body {
|
||||
|
||||
#remote-video-stream.collapsed {
|
||||
position: absolute;
|
||||
width: 20%;
|
||||
max-width: 20%;
|
||||
height: 15.03vw;
|
||||
max-height: 20%;
|
||||
object-fit: cover;
|
||||
margin: 16px;
|
||||
border-radius: 16px;
|
||||
@@ -48,7 +47,6 @@ body {
|
||||
position: absolute;
|
||||
width: 20%;
|
||||
max-width: 20%;
|
||||
height: 15.03vw;
|
||||
object-fit: cover;
|
||||
margin: 16px;
|
||||
border-radius: 16px;
|
||||
|
||||
@@ -24,11 +24,11 @@ android.nonTransitiveRClass=true
|
||||
kotlin.mpp.androidSourceSetLayoutVersion=2
|
||||
kotlin.jvm.target=11
|
||||
|
||||
android.version_name=6.2
|
||||
android.version_code=259
|
||||
android.version_name=6.2-beta.6
|
||||
android.version_code=258
|
||||
|
||||
desktop.version_name=6.2
|
||||
desktop.version_code=82
|
||||
desktop.version_name=6.2-beta.6
|
||||
desktop.version_code=81
|
||||
|
||||
kotlin.version=1.9.23
|
||||
gradle.plugin.version=8.2.0
|
||||
|
||||
@@ -68,7 +68,7 @@ So, for Android we can now deliver instant message notifications without comprom
|
||||
|
||||
Please let us know what needs to be improved - it's only the first version of instant notifications for Android!
|
||||
|
||||
## iOS notifications require a server
|
||||
## Our iOS approach has one trade-off
|
||||
|
||||
iOS is much more protective of what apps are allowed to run on the devices, and the solution that worked on Android is not viable on iOS.
|
||||
|
||||
|
||||
@@ -1,88 +1,23 @@
|
||||
---
|
||||
layout: layouts/article.html
|
||||
title: "SimpleX network: preset servers operated by Flux, business chats and more with v6.2 of the apps"
|
||||
title: "Servers operated by Flux - true privacy and decentralization for all users"
|
||||
date: 2024-12-10
|
||||
previewBody: blog_previews/20241210.html
|
||||
image: images/20241210-operators-1.png
|
||||
# previewBody: blog_previews/20241210.html
|
||||
# image: images/simplexonflux.png
|
||||
# imageWide: true
|
||||
draft: true
|
||||
permalink: "/blog/20241210-simplex-network-v6-2-servers-by-flux-business-chats.html"
|
||||
---
|
||||
|
||||
# SimpleX network: preset servers operated by Flux, business chats and more with v6.2 of the apps
|
||||
|
||||
**Published:** Dec 10, 2024
|
||||
**Will be published:** Dec 10, 2024
|
||||
|
||||
What's new in v6.2:
|
||||
This is a placeholder page for the upcoming v6.2 release announcement!
|
||||
|
||||
- [SimpleX Chat and Flux](#simplex-chat-and-flux-improve-metadata-privacy-in-simplex-network) improve metadata privacy in SimpleX network.
|
||||
- [Business chats](#business-chats) to provide support from your business to users of SimpleX network.
|
||||
- [Better user experience](#better-user-experience): open on the first unread, jump to quoted messages, see who reacted.
|
||||
- [Improving notifications in iOS app](#improving-notifications-in-ios-app).
|
||||
|
||||
## What's new in v6.2
|
||||
|
||||
### SimpleX Chat and Flux improve metadata privacy in SimpleX network
|
||||
|
||||
<img src="./images/20241210-operators-1.png" width=288 class="float-to-right"> <img src="./images/20241210-operators-2.png" width=288 class="float-to-right">
|
||||
|
||||
SimpleX Chat and [Flux](https://runonflux.com) (Influx Technology Limited) made an agreement to include messaging and file servers operated by Flux into the app.
|
||||
|
||||
SimpleX network is decentralized by design, but in the users of the previous app versions had to find other servers online or host servers themselves to use any other servers than operated by us.
|
||||
|
||||
Now all users can choose between servers of two companies, use both of them, and continue using any other servers they host or available online.
|
||||
|
||||
To use Flux servers enable them when the app offers it, or at any point later via Network & servers settings in the app.
|
||||
|
||||
When both SimpleX Chat and Flux servers are enabled, the app will use servers of both operators in each connection to receive messages and for [private message routing](./20240604-simplex-chat-v5.8-private-message-routing-chat-themes.md), increasing metadata privacy for all users.
|
||||
|
||||
Read more about why SimpleX network benefits from multiple operators in [our previous post](./20241125-servers-operated-by-flux-true-privacy-and-decentralization-for-all-users.md).
|
||||
|
||||
You can also read about our plan [how network operators will make money](https://github.com/simplex-chat/simplex-chat/blob/stable/docs/rfcs/2024-04-26-commercial-model.md), while continuing to protect users privacy, based on network design rather than on trust to operators, and without any cryptocurrency emission.
|
||||
|
||||
### Business chats
|
||||
|
||||
<img src="./images/20241210-business.png" width=288 class="float-to-right">
|
||||
|
||||
We use SimpleX Chat to provide support to SimpleX Chat users, and we also see some other companies offering SimpleX Chat as a support channel.
|
||||
|
||||
One of the problem of providing support via general purpose messengers is that the customers don't see who they talk to, as they can in all dedicated support systems.
|
||||
|
||||
It is not possible in most messengers, including SimpleX Chat prior to v6.2 - every new customer joins a one-to-one conversation, where the customers see that they talk to a company, not knowing who they talk to, and if it's a bot or a human.
|
||||
|
||||
The new business chats in SimpleX Chat solve this problem: to use them enable the toggle under the contact address in your chat profile. It is safe to do, and you can always toggle it off, if needed - the address itself does not change.
|
||||
|
||||
Once you do it, the app will be creating a new business chat with each connecting customer where multiple people can participate. Business chat is a hybrid of one-to-one and group conversation. In the list of chats you will see customer names and avatars, and the customer will see your business name and avatar, like with one-to-one conversations. But inside it works as a group, allowing customer to see who sent the message, and allowing you to add other participants from the business side, for delegation and escalation of customer questions.
|
||||
|
||||
This can be done manually, or you can automate these conversations using bots that can answer some customer questions and then add a human to the conversation when appropriate or requested by the customer. We will be offering more bot-related features to the app and a simpler way to program bots very soon - watch our announcements.
|
||||
|
||||
### Better user experience
|
||||
|
||||
<img src="./images/20241210-reactions.png" width=288 class="float-to-right">
|
||||
|
||||
**Chat navigation**
|
||||
|
||||
This has been a long-standing complaint from the users: *why does the app opens conversations on the last message, and not on the first unread message*?
|
||||
|
||||
Android and desktop apps now open the chat on the first unread message. It will soon be done in the iOS app too.
|
||||
|
||||
Also, the app can scroll to the replied message anywhere in the conversation (when you tap it), even if it was sent a very long time ago.
|
||||
|
||||
**See who reacted!**
|
||||
|
||||
This is a small but important change - you can now see who reacted to your messages!
|
||||
|
||||
### Improving notifications in iOS app
|
||||
|
||||
iOS notifications in a decentralized network is a complex problems. We [support iOS notifications](./20220404-simplex-chat-instant-notifications.md#ios-notifications-require-a-server) from early versions of the app, focussing on preserving privacy as much as possible. But the reliability of notifications was not good enough.
|
||||
|
||||
We solved several problems of notification delivery in this release:
|
||||
- messaging servers no longer lose notifications while notification servers are restarted.
|
||||
- Apple can drop notifications while your device is offline - about 15-20% of notifications are dropped because of it. The servers and the new version of the app work around this problem by delivering several last notifications, to show notifications correctly even when Apple drops them.
|
||||
|
||||
With these changes the iOS notifications remained as private and secure as before. The notifications only contain metadata, without the actual messages, and even the metadata is end-to-end encrypted between SimpleX notification servers and the client device, inaccessible to Apple push notification servers.
|
||||
|
||||
There are two remaining problems we will solve soon:
|
||||
- iOS only allows to use 25mb of device memory when processing notifications in the background. This limit didn't change for many years, and it is challenging for decentralized design. If the app uses more memory, iOS kills it and the notification is not shown – approximately 10% of notifications can be lost because of that.
|
||||
- for notifications to work, the app communicates with the notification server. If the user puts the app in background too quickly, the app may fail to enable notification for the new contacts. We plan to change clients and servers to delegate this task to messaging servers, to remove the need for this additional communication entirely, without any impact on privacy and security. This will happen early next year.
|
||||
- Preset servers are now operated by two companies - SimpleX Chat and Flux. Read [this post](./20241125-servers-operated-by-flux-true-privacy-and-decentralization-for-all-users.md).
|
||||
- Business chats to provide support from your business to users of SimpleX network. Read [this page](../docs/BUSINESS.md).
|
||||
- and more!
|
||||
|
||||
## SimpleX network
|
||||
|
||||
|
||||
+1
-10
@@ -1,15 +1,6 @@
|
||||
# Blog
|
||||
|
||||
Dec 10, 2024 [SimpleX network: preset servers operated by Flux, business chats and more with v6.2 of the apps](./20241210-simplex-network-v6-2-servers-by-flux-business-chats.md)
|
||||
|
||||
- SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app to improve metadata privacy in SimpleX network.
|
||||
- Business chats for better privacy and support of your customers.
|
||||
- Better user experience: open on the first unread, jump to quoted messages, see who reacted.
|
||||
- Improving notifications in iOS app.
|
||||
|
||||
--
|
||||
|
||||
Nov 25, 2024 [Servers operated by Flux - true privacy and decentralization for all users](./20241125-servers-operated-by-flux-true-privacy-and-decentralization-for-all-users.md)
|
||||
Nov 25, 2025 [Servers operated by Flux - true privacy and decentralization for all users](./20241125-servers-operated-by-flux-true-privacy-and-decentralization-for-all-users.md)
|
||||
|
||||
- Welcome, Flux - the new servers in v6.2-beta.1!
|
||||
- What's the problem?
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 364 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 224 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 257 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 471 KiB |
Generated
+470
-282
@@ -16,6 +16,21 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"blank": {
|
||||
"locked": {
|
||||
"lastModified": 1625557891,
|
||||
"narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=",
|
||||
"owner": "divnix",
|
||||
"repo": "blank",
|
||||
"rev": "5a5d2684073d9f563072ed07c871d577a6c614a8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "divnix",
|
||||
"repo": "blank",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"cabal-32": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
@@ -83,6 +98,64 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"devshell": {
|
||||
"inputs": {
|
||||
"flake-utils": [
|
||||
"haskellNix",
|
||||
"tullia",
|
||||
"std",
|
||||
"flake-utils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"haskellNix",
|
||||
"tullia",
|
||||
"std",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1663445644,
|
||||
"narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=",
|
||||
"owner": "numtide",
|
||||
"repo": "devshell",
|
||||
"rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "devshell",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"dmerge": {
|
||||
"inputs": {
|
||||
"nixlib": [
|
||||
"haskellNix",
|
||||
"tullia",
|
||||
"std",
|
||||
"nixpkgs"
|
||||
],
|
||||
"yants": [
|
||||
"haskellNix",
|
||||
"tullia",
|
||||
"std",
|
||||
"yants"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1659548052,
|
||||
"narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=",
|
||||
"owner": "divnix",
|
||||
"repo": "data-merge",
|
||||
"rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "divnix",
|
||||
"repo": "data-merge",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
@@ -100,34 +173,74 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": "nixpkgs-lib"
|
||||
},
|
||||
"flake-compat_2": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1698579227,
|
||||
"narHash": "sha256-KVWjFZky+gRuWennKsbo6cWyo7c/z/VgCte5pR9pEKg=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "f76e870d64779109e41370848074ac4eaa1606ec",
|
||||
"lastModified": 1650374568,
|
||||
"narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "b4a34015c698c7793d592d66adbab377907a2be8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1701680307,
|
||||
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
|
||||
"lastModified": 1676283394,
|
||||
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
|
||||
"rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_2": {
|
||||
"locked": {
|
||||
"lastModified": 1667395993,
|
||||
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_3": {
|
||||
"locked": {
|
||||
"lastModified": 1653893745,
|
||||
"narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_4": {
|
||||
"locked": {
|
||||
"lastModified": 1659877975,
|
||||
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -153,51 +266,33 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"ghc98X": {
|
||||
"flake": false,
|
||||
"gomod2nix": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"utils": "utils"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1715066704,
|
||||
"narHash": "sha256-F0EVR8x/fcpj1st+hz96Wdsz5uwVIOziGKAwRxLOYJw=",
|
||||
"ref": "ghc-9.8",
|
||||
"rev": "78a253543d466ac511a1664a3e6aff032ca684d5",
|
||||
"revCount": 61757,
|
||||
"submodules": true,
|
||||
"type": "git",
|
||||
"url": "https://gitlab.haskell.org/ghc/ghc"
|
||||
"lastModified": 1655245309,
|
||||
"narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=",
|
||||
"owner": "tweag",
|
||||
"repo": "gomod2nix",
|
||||
"rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"ref": "ghc-9.8",
|
||||
"submodules": true,
|
||||
"type": "git",
|
||||
"url": "https://gitlab.haskell.org/ghc/ghc"
|
||||
}
|
||||
},
|
||||
"ghc99": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1726585445,
|
||||
"narHash": "sha256-IdwQBex4boY6s0Plj5+ixf36rfYSUyMdTWrztKvZH30=",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "7fd9e5e29ab54eb406880077463e8552e2ddd39a",
|
||||
"revCount": 67238,
|
||||
"submodules": true,
|
||||
"type": "git",
|
||||
"url": "https://gitlab.haskell.org/ghc/ghc"
|
||||
},
|
||||
"original": {
|
||||
"submodules": true,
|
||||
"type": "git",
|
||||
"url": "https://gitlab.haskell.org/ghc/ghc"
|
||||
"owner": "tweag",
|
||||
"repo": "gomod2nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hackage": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1702513363,
|
||||
"narHash": "sha256-kloro9uEe8aYhPMoMjVNq2rfrXNgMOZhOPwVH5DH2K0=",
|
||||
"lastModified": 1702340598,
|
||||
"narHash": "sha256-CC0HI+6iKPtH+8r/ZfcpW5v/OYvL7zMwpr0xfkXV1zU=",
|
||||
"owner": "input-output-hk",
|
||||
"repo": "hackage.nix",
|
||||
"rev": "a9d931d0398da67846fa257922a924829233cb91",
|
||||
"rev": "24617c569995e38bf3b83b48eec6628a50fdb4fb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -214,43 +309,33 @@
|
||||
"cabal-36": "cabal-36",
|
||||
"cardano-shell": "cardano-shell",
|
||||
"flake-compat": "flake-compat",
|
||||
"flake-utils": "flake-utils_2",
|
||||
"ghc-8.6.5-iohk": "ghc-8.6.5-iohk",
|
||||
"ghc98X": "ghc98X",
|
||||
"ghc99": "ghc99",
|
||||
"hackage": [
|
||||
"hackage"
|
||||
],
|
||||
"hls-1.10": "hls-1.10",
|
||||
"hls-2.0": "hls-2.0",
|
||||
"hls-2.2": "hls-2.2",
|
||||
"hls-2.3": "hls-2.3",
|
||||
"hls-2.4": "hls-2.4",
|
||||
"hls-2.5": "hls-2.5",
|
||||
"hls-2.6": "hls-2.6",
|
||||
"hpc-coveralls": "hpc-coveralls",
|
||||
"hydra": "hydra",
|
||||
"iserv-proxy": "iserv-proxy",
|
||||
"nixpkgs": [
|
||||
"haskellNix",
|
||||
"nixpkgs-unstable"
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-2003": "nixpkgs-2003",
|
||||
"nixpkgs-2105": "nixpkgs-2105",
|
||||
"nixpkgs-2111": "nixpkgs-2111",
|
||||
"nixpkgs-2205": "nixpkgs-2205",
|
||||
"nixpkgs-2211": "nixpkgs-2211",
|
||||
"nixpkgs-2305": "nixpkgs-2305",
|
||||
"nixpkgs-2311": "nixpkgs-2311",
|
||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||
"old-ghc-nix": "old-ghc-nix",
|
||||
"stackage": "stackage"
|
||||
"stackage": "stackage",
|
||||
"tullia": "tullia"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1705833500,
|
||||
"narHash": "sha256-rUIr6JNbCedt1g4gVYVvE9t0oFU6FUspCA0DS5cA8Bg=",
|
||||
"lastModified": 1677975916,
|
||||
"narHash": "sha256-dbe8lEEPyfzjdRwpePClv7J9p9lQg7BwbBqAMCw4RLw=",
|
||||
"owner": "input-output-hk",
|
||||
"repo": "haskell.nix",
|
||||
"rev": "d0c35e75cbbc6858770af42ac32b0b85495fbd71",
|
||||
"rev": "ab5efd87ce3fd8ade38a01d97693d29a4f1ae7e4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -260,125 +345,6 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-1.10": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1680000865,
|
||||
"narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "1.10.0.0",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.0": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1687698105,
|
||||
"narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "783905f211ac63edf982dd1889c671653327e441",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.0.0.1",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.2": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1693064058,
|
||||
"narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.2.0.0",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.3": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1695910642,
|
||||
"narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.3.0.0",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.4": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1699862708,
|
||||
"narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.4.0.1",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.5": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1701080174,
|
||||
"narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "27f8c3d3892e38edaef5bea3870161815c4d014c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.5.0.0",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.6": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1705325287,
|
||||
"narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.6.0.0",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hpc-coveralls": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
@@ -418,14 +384,37 @@
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"incl": {
|
||||
"inputs": {
|
||||
"nixlib": [
|
||||
"haskellNix",
|
||||
"tullia",
|
||||
"std",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1669263024,
|
||||
"narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=",
|
||||
"owner": "divnix",
|
||||
"repo": "incl",
|
||||
"rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "divnix",
|
||||
"repo": "incl",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"iserv-proxy": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1707968597,
|
||||
"narHash": "sha256-C53NqToxl+n9s1pQ0iLtiH6P5vX3rM+NW/mFt4Ykpsk=",
|
||||
"lastModified": 1670983692,
|
||||
"narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=",
|
||||
"ref": "hkm/remote-iserv",
|
||||
"rev": "1b7f8aeb37bbc7c00f04e44d9379aa15a4409e8b",
|
||||
"revCount": 18,
|
||||
"rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300",
|
||||
"revCount": 10,
|
||||
"type": "git",
|
||||
"url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git"
|
||||
},
|
||||
@@ -451,22 +440,32 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"mac2ios": {
|
||||
"n2c": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts",
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
"flake-utils": [
|
||||
"haskellNix",
|
||||
"tullia",
|
||||
"std",
|
||||
"flake-utils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"haskellNix",
|
||||
"tullia",
|
||||
"std",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1699767871,
|
||||
"narHash": "sha256-kxeCUfwC/Vgh2FvVMlBUq0eVx1JvfHyN+5MPKUik9mE=",
|
||||
"owner": "zw3rk",
|
||||
"repo": "mobile-core-tools",
|
||||
"rev": "4dcb77d5ea896d749381806dfab5358851b08951",
|
||||
"lastModified": 1665039323,
|
||||
"narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=",
|
||||
"owner": "nlewo",
|
||||
"repo": "nix2container",
|
||||
"rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "zw3rk",
|
||||
"repo": "mobile-core-tools",
|
||||
"owner": "nlewo",
|
||||
"repo": "nix2container",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
@@ -491,6 +490,95 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-nomad": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_2",
|
||||
"flake-utils": [
|
||||
"haskellNix",
|
||||
"tullia",
|
||||
"nix2container",
|
||||
"flake-utils"
|
||||
],
|
||||
"gomod2nix": "gomod2nix",
|
||||
"nixpkgs": [
|
||||
"haskellNix",
|
||||
"tullia",
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-lib": [
|
||||
"haskellNix",
|
||||
"tullia",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1658277770,
|
||||
"narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=",
|
||||
"owner": "tristanpemble",
|
||||
"repo": "nix-nomad",
|
||||
"rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tristanpemble",
|
||||
"repo": "nix-nomad",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix2container": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_3",
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1658567952,
|
||||
"narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=",
|
||||
"owner": "nlewo",
|
||||
"repo": "nix2container",
|
||||
"rev": "60bb43d405991c1378baf15a40b5811a53e32ffa",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nlewo",
|
||||
"repo": "nix2container",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixago": {
|
||||
"inputs": {
|
||||
"flake-utils": [
|
||||
"haskellNix",
|
||||
"tullia",
|
||||
"std",
|
||||
"flake-utils"
|
||||
],
|
||||
"nixago-exts": [
|
||||
"haskellNix",
|
||||
"tullia",
|
||||
"std",
|
||||
"blank"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"haskellNix",
|
||||
"tullia",
|
||||
"std",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1661824785,
|
||||
"narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixago",
|
||||
"rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixago",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1657693803,
|
||||
@@ -557,11 +645,11 @@
|
||||
},
|
||||
"nixpkgs-2205": {
|
||||
"locked": {
|
||||
"lastModified": 1685573264,
|
||||
"narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=",
|
||||
"lastModified": 1672580127,
|
||||
"narHash": "sha256-3lW3xZslREhJogoOkjeZtlBtvFMyxHku7I/9IVehhT8=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "380be19fbd2d9079f677978361792cb25e8a3635",
|
||||
"rev": "0874168639713f547c05947c76124f78441ea46c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -573,11 +661,11 @@
|
||||
},
|
||||
"nixpkgs-2211": {
|
||||
"locked": {
|
||||
"lastModified": 1688392541,
|
||||
"narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=",
|
||||
"lastModified": 1675730325,
|
||||
"narHash": "sha256-uNvD7fzO5hNlltNQUAFBPlcEjNG5Gkbhl/ROiX+GZU4=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b",
|
||||
"rev": "b7ce17b1ebf600a72178f6302c77b6382d09323f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -587,56 +675,6 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-2305": {
|
||||
"locked": {
|
||||
"lastModified": 1705033721,
|
||||
"narHash": "sha256-K5eJHmL1/kev6WuqyqqbS1cdNnSidIZ3jeqJ7GbrYnQ=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a1982c92d8980a0114372973cbdfe0a307f1bdea",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-23.05-darwin",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-2311": {
|
||||
"locked": {
|
||||
"lastModified": 1719957072,
|
||||
"narHash": "sha256-gvFhEf5nszouwLAkT9nWsDzocUTqLWHuL++dvNjMp9I=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "7144d6241f02d171d25fba3edeaf15e0f2592105",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-23.11-darwin",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-lib": {
|
||||
"locked": {
|
||||
"dir": "lib",
|
||||
"lastModified": 1696019113,
|
||||
"narHash": "sha256-X3+DKYWJm93DRSdC5M6K5hLqzSya9BjibtBsuARoPco=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "f5892ddac112a1e9b3612c39af1b72987ee5783a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"dir": "lib",
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-regression": {
|
||||
"locked": {
|
||||
"lastModified": 1643052045,
|
||||
@@ -655,36 +693,98 @@
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1694822471,
|
||||
"narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=",
|
||||
"lastModified": 1675758091,
|
||||
"narHash": "sha256-7gFSQbSVAFUHtGCNHPF7mPc5CcqDk9M2+inlVPZSneg=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "47585496bcb13fb72e4a90daeea2f434e2501998",
|
||||
"rev": "747927516efcb5e31ba03b7ff32f61f6d47e7d87",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "47585496bcb13fb72e4a90daeea2f434e2501998",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1698434055,
|
||||
"narHash": "sha256-Phxi5mUKSoL7A0IYUiYtkI9e8NcGaaV5PJEaJApU1Ko=",
|
||||
"lastModified": 1653581809,
|
||||
"narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "1a3c95e3b23b3cdb26750621c08cc2f1560cb883",
|
||||
"rev": "83658b28fe638a170a19b8933aa008b30640fbd1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-23.05",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1654807842,
|
||||
"narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "fc909087cc3386955f21b4665731dbdaceefb1d8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1665087388,
|
||||
"narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_5": {
|
||||
"locked": {
|
||||
"lastModified": 1676726892,
|
||||
"narHash": "sha256-M7OYVR6dKmzmlebIjybFf3l18S2uur8lMyWWnHQooLY=",
|
||||
"owner": "angerman",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "729469087592bdea58b360de59dadf6d58714c42",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "angerman",
|
||||
"ref": "release-22.11",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nosys": {
|
||||
"locked": {
|
||||
"lastModified": 1667881534,
|
||||
"narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=",
|
||||
"owner": "divnix",
|
||||
"repo": "nosys",
|
||||
"rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "divnix",
|
||||
"repo": "nosys",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"old-ghc-nix": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
@@ -707,21 +807,17 @@
|
||||
"flake-utils": "flake-utils",
|
||||
"hackage": "hackage",
|
||||
"haskellNix": "haskellNix",
|
||||
"mac2ios": "mac2ios",
|
||||
"nixpkgs": [
|
||||
"haskellNix",
|
||||
"nixpkgs-2305"
|
||||
]
|
||||
"nixpkgs": "nixpkgs_5"
|
||||
}
|
||||
},
|
||||
"stackage": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1726532152,
|
||||
"narHash": "sha256-LRXbVY3M2S8uQWdwd2zZrsnVPEvt2GxaHGoy8EFFdJA=",
|
||||
"lastModified": 1677888571,
|
||||
"narHash": "sha256-YkhRNOaN6QVagZo1cfykYV8KqkI8/q6r2F5+jypOma4=",
|
||||
"owner": "input-output-hk",
|
||||
"repo": "stackage.nix",
|
||||
"rev": "c77b3530cebad603812cb111c6f64968c2d2337d",
|
||||
"rev": "cb50e6fabdfb2d7e655059039012ad0623f06a27",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -730,18 +826,110 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"std": {
|
||||
"inputs": {
|
||||
"arion": [
|
||||
"haskellNix",
|
||||
"tullia",
|
||||
"std",
|
||||
"blank"
|
||||
],
|
||||
"blank": "blank",
|
||||
"devshell": "devshell",
|
||||
"dmerge": "dmerge",
|
||||
"flake-utils": "flake-utils_4",
|
||||
"incl": "incl",
|
||||
"makes": [
|
||||
"haskellNix",
|
||||
"tullia",
|
||||
"std",
|
||||
"blank"
|
||||
],
|
||||
"microvm": [
|
||||
"haskellNix",
|
||||
"tullia",
|
||||
"std",
|
||||
"blank"
|
||||
],
|
||||
"n2c": "n2c",
|
||||
"nixago": "nixago",
|
||||
"nixpkgs": "nixpkgs_4",
|
||||
"nosys": "nosys",
|
||||
"yants": "yants"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"lastModified": 1674526466,
|
||||
"narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=",
|
||||
"owner": "divnix",
|
||||
"repo": "std",
|
||||
"rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"owner": "divnix",
|
||||
"repo": "std",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"tullia": {
|
||||
"inputs": {
|
||||
"nix-nomad": "nix-nomad",
|
||||
"nix2container": "nix2container",
|
||||
"nixpkgs": [
|
||||
"haskellNix",
|
||||
"nixpkgs"
|
||||
],
|
||||
"std": "std"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1675695930,
|
||||
"narHash": "sha256-B7rEZ/DBUMlK1AcJ9ajnAPPxqXY6zW2SBX+51bZV0Ac=",
|
||||
"owner": "input-output-hk",
|
||||
"repo": "tullia",
|
||||
"rev": "621365f2c725608f381b3ad5b57afef389fd4c31",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "input-output-hk",
|
||||
"repo": "tullia",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"utils": {
|
||||
"locked": {
|
||||
"lastModified": 1653893745,
|
||||
"narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"yants": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"haskellNix",
|
||||
"tullia",
|
||||
"std",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1667096281,
|
||||
"narHash": "sha256-wRRec6ze0gJHmGn6m57/zhz/Kdvp9HS4Nl5fkQ+uIuA=",
|
||||
"owner": "divnix",
|
||||
"repo": "yants",
|
||||
"rev": "d18f356ec25cb94dc9c275870c3a7927a10f8c3c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "divnix",
|
||||
"repo": "yants",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
description = "nix flake for simplex-chat";
|
||||
inputs.nixpkgs.url = "github:angerman/nixpkgs/release-22.11";
|
||||
inputs.haskellNix.url = "github:input-output-hk/haskell.nix/armv7a";
|
||||
inputs.nixpkgs.follows = "haskellNix/nixpkgs-2305";
|
||||
inputs.mac2ios.url = "github:zw3rk/mobile-core-tools";
|
||||
inputs.haskellNix.inputs.nixpkgs.follows = "nixpkgs";
|
||||
inputs.hackage = {
|
||||
url = "github:input-output-hk/hackage.nix";
|
||||
flake = false;
|
||||
};
|
||||
inputs.haskellNix.inputs.hackage.follows = "hackage";
|
||||
inputs.flake-utils.url = "github:numtide/flake-utils";
|
||||
outputs = { self, haskellNix, nixpkgs, flake-utils, mac2ios, ... }:
|
||||
outputs = { self, haskellNix, nixpkgs, flake-utils, ... }:
|
||||
let systems = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ]; in
|
||||
flake-utils.lib.eachSystem systems (system:
|
||||
# this android26 overlay makes the pkgsCross.{aarch64-android,armv7a-android-prebuilt} to set stdVer to 26 (Android 8).
|
||||
@@ -30,7 +30,7 @@
|
||||
# `appendOverlays` with a singleton is identical to `extend`.
|
||||
let pkgs = haskellNix.legacyPackages.${system}.appendOverlays [android26]; in
|
||||
let drv' = { extra-modules, pkgs', ... }: pkgs'.haskell-nix.project {
|
||||
compiler-nix-name = "ghc963";
|
||||
compiler-nix-name = "ghc8107";
|
||||
index-state = "2023-12-12T00:00:00Z";
|
||||
# We need this, to specify we want the cabal project.
|
||||
# If the stack.yaml was dropped, this would not be necessary.
|
||||
@@ -40,12 +40,9 @@
|
||||
src = ./.;
|
||||
};
|
||||
sha256map = import ./scripts/nix/sha256map.nix;
|
||||
modules = [
|
||||
({ pkgs, lib, ...}: lib.mkIf (!pkgs.stdenv.hostPlatform.isWindows) {
|
||||
# This patch adds `dl` as an extra-library to direct-sqlciper, which is needed
|
||||
# on pretty much all unix platforms, but then blows up on windows m(
|
||||
modules = [{
|
||||
packages.direct-sqlcipher.patches = [ ./scripts/nix/direct-sqlcipher-2.3.27.patch ];
|
||||
})
|
||||
}
|
||||
({ pkgs,lib, ... }: lib.mkIf (pkgs.stdenv.hostPlatform.isAndroid) {
|
||||
packages.simplex-chat.components.library.ghcOptions = [ "-pie" ];
|
||||
})] ++ extra-modules;
|
||||
@@ -67,9 +64,6 @@
|
||||
}); in
|
||||
let iosPostInstall = bundleName: ''
|
||||
${pkgs.tree}/bin/tree $out
|
||||
mkdir tmp
|
||||
find ./dist -name "libHS*-ghc*.a" -exec cp {} tmp \;
|
||||
(cd tmp; ${pkgs.tree}/bin/tree .; ar x libHS*.a; for o in *.o; do if /usr/bin/otool -xv $o|grep ldadd ; then echo $o; fi; done; cd ..; rm -fR tmp)
|
||||
mkdir -p $out/_pkg
|
||||
# copy over includes, we might want those, but maybe not.
|
||||
# cp -r $out/lib/*/*/include $out/_pkg/
|
||||
@@ -80,18 +74,6 @@
|
||||
find ${pkgs.gmp6.override { withStatic = true; }}/lib -name "*.a" -exec cp {} $out/_pkg \;
|
||||
# There is no static libc
|
||||
${pkgs.tree}/bin/tree $out/_pkg
|
||||
for pkg in $out/_pkg/*.a; do
|
||||
chmod +w $pkg
|
||||
${mac2ios.packages.${system}.mac2ios}/bin/mac2ios $pkg
|
||||
chmod -w $pkg
|
||||
done
|
||||
|
||||
mkdir tmp
|
||||
find $out/_pkg -name "libHS*-ghc*.a" -exec cp {} tmp \;
|
||||
(cd tmp; ${pkgs.tree}/bin/tree .; ar x libHS*.a; for o in *.o; do if /usr/bin/otool -xv $o|grep ldadd ; then echo $o; fi; done; cd ..; rm -fR tmp)
|
||||
|
||||
sha256sum $out/_pkg/*.a
|
||||
|
||||
(cd $out/_pkg; ${pkgs.zip}/bin/zip -r -9 $out/${bundleName}.zip *)
|
||||
rm -fR $out/_pkg
|
||||
mkdir -p $out/nix-support
|
||||
@@ -137,150 +119,13 @@
|
||||
hardeningDisable = [ "fortify" ];
|
||||
}
|
||||
);in {
|
||||
# STATIC x86_64-linux
|
||||
"${pkgs.pkgsCross.musl64.hostPlatform.system}-static:exe:simplex-chat" = (drv pkgs.pkgsCross.musl64).simplex-chat.components.exes.simplex-chat;
|
||||
# STATIC i686-linux
|
||||
"${pkgs.pkgsCross.musl32.hostPlatform.system}-static:exe:simplex-chat" = (drv' {
|
||||
pkgs' = pkgs.pkgsCross.musl32;
|
||||
extra-modules = [{
|
||||
# 32 bit patches
|
||||
packages.basement.patches = [
|
||||
./scripts/nix/basement-pr-573.patch
|
||||
];
|
||||
packages.memory.patches = [
|
||||
./scripts/nix/memory-pr-99.patch
|
||||
];
|
||||
}];
|
||||
}).simplex-chat.components.exes.simplex-chat;
|
||||
# WINDOWS x86_64-mingwW64
|
||||
"${pkgs.pkgsCross.mingwW64.hostPlatform.system}:exe:simplex-chat" = (drv' {
|
||||
pkgs' = pkgs.pkgsCross.mingwW64;
|
||||
extra-modules = [{
|
||||
packages.direct-sqlcipher.flags.openssl = true;
|
||||
packages.bitvec.flags.simd = false;
|
||||
packages.direct-sqlcipher.patches = [
|
||||
./scripts/nix/direct-sqlcipher-2.3.27-win.patch
|
||||
];
|
||||
packages.direct-sqlcipher.components.library.libs = pkgs.lib.mkForce [
|
||||
(pkgs.pkgsCross.mingwW64.openssl) #.override) # { static = true; enableKTLS = false; })
|
||||
];
|
||||
packages.simplexmq.components.library.libs = pkgs.lib.mkForce [
|
||||
(pkgs.pkgsCross.mingwW64.openssl) #.override) # { static = true; enableKTLS = false; })
|
||||
];
|
||||
packages.unix-time.postPatch = ''
|
||||
sed -i 's/mingwex//g' unix-time.cabal
|
||||
'';
|
||||
}];
|
||||
}).simplex-chat.components.exes.simplex-chat.override {
|
||||
postInstall = ''
|
||||
set -x
|
||||
${pkgs.tree}/bin/tree $out
|
||||
mkdir -p $out/_pkg
|
||||
cp $out/bin/* $out/_pkg
|
||||
${pkgs.tree}/bin/tree $out/_pkg
|
||||
(cd $out/_pkg; ${pkgs.zip}/bin/zip -r -9 $out/${pkgs.pkgsCross.mingwW64.hostPlatform.system}-simplex-chat.zip *)
|
||||
rm -fR $out/_pkg
|
||||
mkdir -p $out/nix-support
|
||||
echo "file binary-dist \"$(echo $out/*.zip)\"" \
|
||||
> $out/nix-support/hydra-build-products
|
||||
'';
|
||||
};
|
||||
"${pkgs.pkgsCross.mingwW64.hostPlatform.system}:lib:simplex-chat" = (drv' rec {
|
||||
pkgs' = pkgs.pkgsCross.mingwW64;
|
||||
extra-modules = [{
|
||||
packages.direct-sqlcipher.flags.openssl = true;
|
||||
# simd will try to read __cpu_model, which we don't expose
|
||||
# from the rts (yet!).
|
||||
packages.bitvec.flags.simd = false;
|
||||
packages.direct-sqlcipher.patches = [
|
||||
./scripts/nix/direct-sqlcipher-2.3.27-win.patch
|
||||
];
|
||||
packages.direct-sqlcipher.components.library.libs = pkgs.lib.mkForce [
|
||||
pkgs.pkgsCross.mingwW64.openssl
|
||||
];
|
||||
packages.simplexmq.flags.client_library = true;
|
||||
packages.simplexmq.components.library.libs = pkgs.lib.mkForce [
|
||||
pkgs.pkgsCross.mingwW64.openssl
|
||||
];
|
||||
packages.unix-time.postPatch = ''
|
||||
sed -i 's/mingwex//g' unix-time.cabal
|
||||
'';
|
||||
}];
|
||||
}).simplex-chat.components.library
|
||||
.override (p: {
|
||||
# enableShared = false;
|
||||
setupBuildFlags = p.component.setupBuildFlags ++ map (x: "--ghc-option=${x}") [
|
||||
"-shared"
|
||||
"-threaded"
|
||||
"-o" "libsimplex.dll"
|
||||
# "-optl-lHSrts_thr"
|
||||
"-optl-lffi"
|
||||
# "-optl-static-libgcc"
|
||||
# We can't do -optl-static-libstdc++ with gcc. g++ might
|
||||
# but then we are chaning the compiler altogether.
|
||||
"${./libsimplex.dll.def}"
|
||||
];
|
||||
postInstall = ''
|
||||
set -x
|
||||
function deps() {
|
||||
${pkgs.binutils}/bin/strings "$1" | grep '.\.dll'|grep -v -E 'Winsock|ADVAPI32|dbghelp|KERNEL32|msvcrt|ntdll|ole32|RPCRT4|SHELL32|USER32|WINMM|WS2_32|kernel32|GDI32'|grep -v "$1"
|
||||
}
|
||||
${pkgs.tree}/bin/tree $out
|
||||
mkdir -p $out/_pkg
|
||||
cp libsimplex.dll $out/_pkg
|
||||
cp libsimplex.dll.a $out/_pkg
|
||||
mkdir $out/libs
|
||||
find ${pkgs.lib.getBin pkgs.pkgsCross.mingwW64.openssl} -name "*.dll" -exec cp {} $out/libs \;
|
||||
find ${pkgs.lib.getBin pkgs.pkgsCross.mingwW64.libffi} -name "*.dll" -exec cp {} $out/libs \;
|
||||
find ${pkgs.lib.getBin pkgs.pkgsCross.mingwW64.gmp} -name "*.dll" -exec cp {} $out/libs \;
|
||||
find ${pkgs.lib.getBin pkgs.pkgsCross.mingwW64.stdenv.cc.cc} -name "*.dll" -exec cp {} $out/libs \;
|
||||
find ${pkgs.lib.getBin pkgs.pkgsCross.mingwW64.windows.mcfgthreads} -name "*.dll" -exec cp {} $out/libs \;
|
||||
|
||||
pushd $out/_pkg
|
||||
function copyDeps() {
|
||||
for dep in $(deps "$1"); do
|
||||
if [ ! -f "$dep" ]; then
|
||||
if [ ! -f ../libs/"$dep" ]; then
|
||||
echo "WARN: $1 -> $dep not found!"
|
||||
else
|
||||
cp ../libs/"$dep" .
|
||||
copyDeps "$dep"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
}
|
||||
copyDeps libsimplex.dll
|
||||
popd
|
||||
${pkgs.tree}/bin/tree $out/_pkg
|
||||
(cd $out/_pkg; ${pkgs.zip}/bin/zip -r -9 $out/pkg-${pkgs.pkgsCross.mingwW64.hostPlatform.system}-libsimplex.zip *)
|
||||
rm -fR $out/_pkg
|
||||
mkdir -p $out/nix-support
|
||||
echo "file binary-dist \"$(echo $out/*.zip)\"" \
|
||||
> $out/nix-support/hydra-build-products
|
||||
'';
|
||||
});
|
||||
"${pkgs.pkgsCross.musl32.hostPlatform.system}-static:exe:simplex-chat" = (drv pkgs.pkgsCross.musl32).simplex-chat.components.exes.simplex-chat;
|
||||
# "${pkgs.pkgsCross.muslpi.hostPlatform.system}-static:exe:simplex-chat" = (drv pkgs.pkgsCross.muslpi).simplex-chat.components.exes.simplex-chat;
|
||||
|
||||
# STATIC aarch64-linux
|
||||
"${pkgs.pkgsCross.aarch64-multiplatform-musl.hostPlatform.system}-static:exe:simplex-chat" = (drv pkgs.pkgsCross.aarch64-multiplatform-musl).simplex-chat.components.exes.simplex-chat;
|
||||
"armv7a-android:lib:support" = (drv android32Pkgs).android-support.components.library.override (p: {
|
||||
smallAddressSpace = true;
|
||||
# we won't want -dyamic (see aarch64-android:lib:simplex-chat)
|
||||
enableShared = false;
|
||||
# we also do not want to have any dependencies listed (especially no rts!)
|
||||
enableStatic = false;
|
||||
|
||||
# This used to work with 8.10.7...
|
||||
# setupBuildFlags = p.component.setupBuildFlags ++ map (x: "--ghc-option=${x}") [ "-shared" "-o" "libsupport.so" ];
|
||||
# ... but now with 9.6+
|
||||
# we have to do the -shared thing by hand.
|
||||
postBuild = ''
|
||||
armv7a-unknown-linux-androideabi-ghc -shared -o libsupport.so \
|
||||
-optl-Wl,-u,setLineBuffering \
|
||||
-optl-Wl,-u,pipe_std_to_socket \
|
||||
dist/build/*.a
|
||||
'';
|
||||
|
||||
"armv7a-android:lib:support" = (drv android32Pkgs).android-support.components.library.override {
|
||||
smallAddressSpace = true; enableShared = false;
|
||||
setupBuildFlags = map (x: "--ghc-option=${x}") [ "-shared" "-o" "libsupport.so" ];
|
||||
postInstall = ''
|
||||
|
||||
mkdir -p $out/_pkg
|
||||
@@ -293,29 +138,14 @@
|
||||
echo "file binary-dist \"$(echo $out/*.zip)\"" \
|
||||
> $out/nix-support/hydra-build-products
|
||||
'';
|
||||
});
|
||||
# The android-support package is at
|
||||
# https://github.com/simplex-chat/android-support
|
||||
"aarch64-android:lib:support" = (drv androidPkgs).android-support.components.library.override (p: {
|
||||
smallAddressSpace = true;
|
||||
# no -dynamic
|
||||
enableShared = false;
|
||||
# but also no -staticlib
|
||||
enableStatic = false;
|
||||
|
||||
# we have to do the -shared thing by hand.
|
||||
postBuild = ''
|
||||
aarch64-unknown-linux-android-ghc -shared -o libsupport.so \
|
||||
-optl-Wl,-u,setLineBuffering \
|
||||
-optl-Wl,-u,pipe_std_to_socket \
|
||||
dist/build/*.a
|
||||
'';
|
||||
|
||||
};
|
||||
"aarch64-android:lib:support" = (drv androidPkgs).android-support.components.library.override {
|
||||
smallAddressSpace = true; enableShared = false;
|
||||
setupBuildFlags = map (x: "--ghc-option=${x}") [ "-shared" "-o" "libsupport.so" ];
|
||||
postInstall = ''
|
||||
|
||||
mkdir -p $out/_pkg
|
||||
cp libsupport.so $out/_pkg
|
||||
ls -lah $out/_pkg/*
|
||||
${pkgs.patchelf}/bin/patchelf --remove-needed libunwind.so.1 $out/_pkg/libsupport.so
|
||||
(cd $out/_pkg; ${pkgs.zip}/bin/zip -r -9 $out/pkg-aarch64-android-libsupport.zip *)
|
||||
rm -fR $out/_pkg
|
||||
@@ -324,11 +154,10 @@
|
||||
echo "file binary-dist \"$(echo $out/*.zip)\"" \
|
||||
> $out/nix-support/hydra-build-products
|
||||
'';
|
||||
});
|
||||
};
|
||||
"armv7a-android:lib:simplex-chat" = (drv' {
|
||||
pkgs' = android32Pkgs;
|
||||
extra-modules = [{
|
||||
packages.text.flags.simdutf = false;
|
||||
packages.direct-sqlcipher.flags.openssl = true;
|
||||
packages.direct-sqlcipher.components.library.libs = pkgs.lib.mkForce [
|
||||
(android32Pkgs.openssl.override { static = true; enableKTLS = false; })
|
||||
@@ -340,56 +169,13 @@
|
||||
packages.simplexmq.components.library.libs = pkgs.lib.mkForce [
|
||||
(android32Pkgs.openssl.override { static = true; enableKTLS = false; })
|
||||
];
|
||||
# 32 bit patches
|
||||
packages.basement.patches = [
|
||||
./scripts/nix/basement-pr-573.patch
|
||||
];
|
||||
packages.memory.patches = [
|
||||
./scripts/nix/memory-pr-99.patch
|
||||
];
|
||||
}];
|
||||
}).simplex-chat.components.library.override (p: {
|
||||
smallAddressSpace = true;
|
||||
# we want -shared, but not -dyanmic, hence `enableShared = false`.
|
||||
enableShared = false;
|
||||
# we _do_ want rts, and other libs. Hence `enableStatic = true`.
|
||||
enableStatic = true;
|
||||
}).simplex-chat.components.library.override {
|
||||
smallAddressSpace = true; enableShared = false;
|
||||
# for android we build a shared library, passing these arguments is a bit tricky, as
|
||||
# we want only the threaded rts (HSrts_thr) and ffi to be linked, but not fed into iserv for
|
||||
# template haskell cross compilation. Thus we just pass them as linker options (-optl).
|
||||
setupBuildFlags = p.component.setupBuildFlags
|
||||
# flags to tell GHC we want to produce a -shared object, and we want to also link
|
||||
# - the ffi library (ffi)
|
||||
++ map (x: "--ghc-option=${x}") [
|
||||
"-shared" "-o" "libsimplex.so"
|
||||
"-threaded"
|
||||
# "-debug"
|
||||
"-optl-lffi"
|
||||
]
|
||||
# This is fairly idiotic. LLD will strip out foreign exported
|
||||
# symbols (a GHC bug? Codegen bug?). So we need to pass `-u <sym>`
|
||||
# to ensure they stay in the produced library. Having them
|
||||
# _undefined_ and _lazy_ (lld will tell with -y <sym> that the
|
||||
# symbol is lazy), makes them _defined_. m(
|
||||
++ map (sym: "--ghc-option=-optl-Wl,-u,${sym}") [
|
||||
"chat_close_store"
|
||||
"chat_decrypt_file"
|
||||
"chat_decrypt_media"
|
||||
"chat_encrypt_file"
|
||||
"chat_encrypt_media"
|
||||
"chat_migrate_init"
|
||||
"chat_parse_markdown"
|
||||
"chat_parse_server"
|
||||
"chat_password_hash"
|
||||
"chat_read_file"
|
||||
"chat_recv_msg"
|
||||
"chat_recv_msg_wait"
|
||||
"chat_send_cmd"
|
||||
"chat_send_remote_cmd"
|
||||
"chat_valid_name"
|
||||
"chat_json_length"
|
||||
"chat_write_file"
|
||||
];
|
||||
setupBuildFlags = map (x: "--ghc-option=${x}") [ "-shared" "-o" "libsimplex.so" "-optl-lHSrts_thr" "-optl-lffi"];
|
||||
postInstall = ''
|
||||
set -x
|
||||
${pkgs.tree}/bin/tree $out
|
||||
@@ -433,11 +219,10 @@
|
||||
echo "file binary-dist \"$(echo $out/*.zip)\"" \
|
||||
> $out/nix-support/hydra-build-products
|
||||
'';
|
||||
});
|
||||
};
|
||||
"aarch64-android:lib:simplex-chat" = (drv' {
|
||||
pkgs' = androidPkgs;
|
||||
extra-modules = [{
|
||||
packages.text.flags.simdutf = false;
|
||||
packages.direct-sqlcipher.flags.openssl = true;
|
||||
packages.direct-sqlcipher.components.library.libs = pkgs.lib.mkForce [
|
||||
(androidPkgs.openssl.override { static = true; })
|
||||
@@ -450,50 +235,12 @@
|
||||
(androidPkgs.openssl.override { static = true; })
|
||||
];
|
||||
}];
|
||||
}).simplex-chat.components.library.override (p: {
|
||||
smallAddressSpace = true;
|
||||
# we do not want a dynamically linked object, even though we _do_
|
||||
# want to produce a _shared_ object. But `shared` implied -dyanmic
|
||||
# with cabal, so we disable and pass `-shared` explicitly.
|
||||
enableShared = false;
|
||||
# we do want static (e.g. pass all dependencies in, so we get -staticlib)
|
||||
enableStatic = true;
|
||||
}).simplex-chat.components.library.override {
|
||||
smallAddressSpace = true; enableShared = false;
|
||||
# for android we build a shared library, passing these arguments is a bit tricky, as
|
||||
# we want only the threaded rts (HSrts_thr) and ffi to be linked, but not fed into iserv for
|
||||
# template haskell cross compilation. Thus we just pass them as linker options (-optl).
|
||||
setupBuildFlags = p.component.setupBuildFlags
|
||||
# flags to tell GHC we want to produce a -shared object, and we want to also link
|
||||
# - the ffi library (ffi)
|
||||
++ map (x: "--ghc-option=${x}") [
|
||||
"-shared" "-o" "libsimplex.so"
|
||||
"-threaded"
|
||||
# "-debug"
|
||||
"-optl-lffi"
|
||||
]
|
||||
# This is fairly idiotic. LLD will strip out foreign exported
|
||||
# symbols (a GHC bug? Codegen bug?). So we need to pass `-u <sym>`
|
||||
# to ensure they stay in the produced library. Having them
|
||||
# _undefined_ and _lazy_ (lld will tell with -y <sym> that the
|
||||
# symbol is lazy), makes them _defined_. m(
|
||||
++ map (sym: "--ghc-option=-optl-Wl,-u,${sym}") [
|
||||
"chat_close_store"
|
||||
"chat_decrypt_file"
|
||||
"chat_decrypt_media"
|
||||
"chat_encrypt_file"
|
||||
"chat_encrypt_media"
|
||||
"chat_migrate_init"
|
||||
"chat_parse_markdown"
|
||||
"chat_parse_server"
|
||||
"chat_password_hash"
|
||||
"chat_read_file"
|
||||
"chat_recv_msg"
|
||||
"chat_recv_msg_wait"
|
||||
"chat_send_cmd"
|
||||
"chat_send_remote_cmd"
|
||||
"chat_valid_name"
|
||||
"chat_json_length"
|
||||
"chat_write_file"
|
||||
];
|
||||
setupBuildFlags = map (x: "--ghc-option=${x}") [ "-shared" "-o" "libsimplex.so" "-optl-lHSrts_thr" "-optl-lffi"];
|
||||
postInstall = ''
|
||||
set -x
|
||||
${pkgs.tree}/bin/tree $out
|
||||
@@ -537,7 +284,7 @@
|
||||
echo "file binary-dist \"$(echo $out/*.zip)\"" \
|
||||
> $out/nix-support/hydra-build-products
|
||||
'';
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
# builds for iOS and iOS simulator
|
||||
@@ -552,8 +299,7 @@
|
||||
packages.entropy.flags.DoNotGetEntropy = true;
|
||||
packages.simplexmq.flags.client_library = true;
|
||||
packages.simplexmq.components.library.libs = pkgs.lib.mkForce [
|
||||
# TODO: have a cross override for iOS, that sets this.
|
||||
((pkgs.openssl.override { static = true; }).overrideDerivation (old: { CFLAGS = "-mcpu=apple-a7 -march=armv8-a+norcpc" ;}))
|
||||
(pkgs.openssl.override { static = true; })
|
||||
];
|
||||
}];
|
||||
}).simplex-chat.components.library.override (
|
||||
|
||||
@@ -12,60 +12,26 @@ body {
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
@media (orientation: portrait) {
|
||||
#remote-video-stream.collapsed {
|
||||
position: absolute;
|
||||
width: 30%;
|
||||
max-width: 30%;
|
||||
height: 39.9vw;
|
||||
object-fit: cover;
|
||||
margin: 16px;
|
||||
border-radius: 16px;
|
||||
bottom: 80px;
|
||||
right: 0;
|
||||
}
|
||||
#remote-video-stream.collapsed {
|
||||
position: absolute;
|
||||
max-width: 30%;
|
||||
max-height: 30%;
|
||||
object-fit: cover;
|
||||
margin: 16px;
|
||||
border-radius: 16px;
|
||||
bottom: 80px;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
@media (orientation: landscape) {
|
||||
#remote-video-stream.collapsed {
|
||||
position: absolute;
|
||||
width: 20%;
|
||||
max-width: 20%;
|
||||
height: 15.03vw;
|
||||
object-fit: cover;
|
||||
margin: 16px;
|
||||
border-radius: 16px;
|
||||
bottom: 80px;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (orientation: portrait) {
|
||||
#remote-video-stream.collapsed-pip {
|
||||
position: absolute;
|
||||
width: 50%;
|
||||
max-width: 50%;
|
||||
height: 66.5vw;
|
||||
object-fit: cover;
|
||||
margin: 8px;
|
||||
border-radius: 8px;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (orientation: landscape) {
|
||||
#remote-video-stream.collapsed-pip {
|
||||
position: absolute;
|
||||
width: 50%;
|
||||
max-width: 50%;
|
||||
height: 37.59vw;
|
||||
object-fit: cover;
|
||||
margin: 8px;
|
||||
border-radius: 8px;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
}
|
||||
#remote-video-stream.collapsed-pip {
|
||||
position: absolute;
|
||||
max-width: 50%;
|
||||
max-height: 50%;
|
||||
object-fit: cover;
|
||||
margin: 8px;
|
||||
border-radius: 8px;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
#remote-screen-video-stream.inline {
|
||||
@@ -75,32 +41,15 @@ body {
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
@media (orientation: portrait) {
|
||||
#local-video-stream.inline {
|
||||
position: absolute;
|
||||
width: 30%;
|
||||
max-width: 30%;
|
||||
height: 39.9vw;
|
||||
object-fit: cover;
|
||||
margin: 16px;
|
||||
border-radius: 16px;
|
||||
top: 0;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (orientation: landscape) {
|
||||
#local-video-stream.inline {
|
||||
position: absolute;
|
||||
width: 20%;
|
||||
max-width: 20%;
|
||||
height: 15.03vw;
|
||||
object-fit: cover;
|
||||
margin: 16px;
|
||||
border-radius: 16px;
|
||||
top: 0;
|
||||
right: 0;
|
||||
}
|
||||
#local-video-stream.inline {
|
||||
position: absolute;
|
||||
width: 30%;
|
||||
max-width: 30%;
|
||||
object-fit: cover;
|
||||
margin: 16px;
|
||||
border-radius: 16px;
|
||||
top: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
#local-screen-video-stream.inline {
|
||||
|
||||
@@ -593,7 +593,6 @@ const processCommand = (function () {
|
||||
)
|
||||
const videos = getVideoElements()
|
||||
if (videos) {
|
||||
setupLocalVideoRatio(videos.local)
|
||||
videos.local.srcObject = localStream
|
||||
videos.local.play().catch((e) => console.log(e))
|
||||
}
|
||||
@@ -622,12 +621,9 @@ const processCommand = (function () {
|
||||
console.log("starting incoming call - create webrtc session")
|
||||
if (activeCall) endCall()
|
||||
|
||||
// It can be already defined on Android when switching calls (if the previous call was outgoing)
|
||||
notConnectedCall = undefined
|
||||
inactiveCallMediaSources.mic = true
|
||||
inactiveCallMediaSources.camera = command.media == CallMediaType.Video
|
||||
inactiveCallMediaSourcesChanged(inactiveCallMediaSources)
|
||||
setupLocalVideoRatio(getVideoElements()!.local)
|
||||
|
||||
const {media, iceServers, relay} = command
|
||||
const encryption = supportsInsertableStreams(useWorker)
|
||||
@@ -831,12 +827,12 @@ const processCommand = (function () {
|
||||
}
|
||||
|
||||
function endCall() {
|
||||
shutdownCameraAndMic()
|
||||
try {
|
||||
activeCall?.connection?.close()
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
}
|
||||
shutdownCameraAndMic()
|
||||
activeCall = undefined
|
||||
resetVideoElements()
|
||||
}
|
||||
@@ -929,21 +925,28 @@ const processCommand = (function () {
|
||||
}
|
||||
// Without doing it manually Firefox shows black screen but video can be played in Picture-in-Picture
|
||||
videos.local.play().catch((e) => console.log(e))
|
||||
setupLocalVideoRatio(videos.local)
|
||||
}
|
||||
|
||||
function setupLocalVideoRatio(local: HTMLVideoElement) {
|
||||
const ratio = isDesktop ? 1.33 : 1 / 1.33
|
||||
const currentRect = local.getBoundingClientRect()
|
||||
// better to get percents from here than to hardcode values from styles (the styles can be changed)
|
||||
const screenWidth = currentRect.left + currentRect.width
|
||||
const percents = currentRect.width / screenWidth
|
||||
local.style.width = `${percents * 100}%`
|
||||
local.style.height = `${(percents / ratio) * 100}vw`
|
||||
|
||||
local.addEventListener("loadedmetadata", function () {
|
||||
console.log("Local video videoWidth: " + local.videoWidth + "px, videoHeight: " + local.videoHeight + "px")
|
||||
if (local.videoWidth == 0 || local.videoHeight == 0) return
|
||||
const ratio = local.videoWidth > local.videoHeight ? 0.2 : 0.3
|
||||
local.style.height = `${(ratio / (local.videoWidth / local.videoHeight)) * 100}vw`
|
||||
local.style.height = `${(percents / (local.videoWidth / local.videoHeight)) * 100}vw`
|
||||
})
|
||||
|
||||
local.onresize = function () {
|
||||
console.log("Local video size changed to " + local.videoWidth + "x" + local.videoHeight)
|
||||
if (local.videoWidth == 0 || local.videoHeight == 0) return
|
||||
const ratio = local.videoWidth > local.videoHeight ? 0.2 : 0.3
|
||||
local.style.height = `${(ratio / (local.videoWidth / local.videoHeight)) * 100}vw`
|
||||
local.style.height = `${(percents / (local.videoWidth / local.videoHeight)) * 100}vw`
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1438,9 +1441,8 @@ const processCommand = (function () {
|
||||
}
|
||||
|
||||
function shutdownCameraAndMic() {
|
||||
if (activeCall) {
|
||||
if (activeCall?.localStream) {
|
||||
activeCall.localStream.getTracks().forEach((track) => track.stop())
|
||||
activeCall.localScreenStream.getTracks().forEach((track) => track.stop())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1612,9 +1614,6 @@ function changeLayout(layout: LayoutType) {
|
||||
break
|
||||
}
|
||||
videos.localScreen.style.visibility = localSources.screenVideo ? "visible" : "hidden"
|
||||
if (!isDesktop && !localSources.camera) {
|
||||
resetLocalVideoElementHeight(videos.local)
|
||||
}
|
||||
}
|
||||
|
||||
function getVideoElements(): VideoElements | undefined {
|
||||
@@ -1638,12 +1637,6 @@ function getVideoElements(): VideoElements | undefined {
|
||||
return {local, localScreen, remote, remoteScreen}
|
||||
}
|
||||
|
||||
// Allow CSS to figure out the size of view by itself on Android because rotating to different orientation
|
||||
// without dropping override will cause the view to have not normal proportion while no video is present
|
||||
function resetLocalVideoElementHeight(local: HTMLVideoElement) {
|
||||
local.style.height = ""
|
||||
}
|
||||
|
||||
function desktopShowPermissionsAlert(mediaType: CallMediaType) {
|
||||
if (!isDesktop) return
|
||||
|
||||
|
||||
@@ -15,9 +15,8 @@ body {
|
||||
|
||||
#remote-video-stream.collapsed {
|
||||
position: absolute;
|
||||
width: 20%;
|
||||
max-width: 20%;
|
||||
height: 15.03vw;
|
||||
max-height: 20%;
|
||||
object-fit: cover;
|
||||
margin: 16px;
|
||||
border-radius: 16px;
|
||||
@@ -48,7 +47,6 @@ body {
|
||||
position: absolute;
|
||||
width: 20%;
|
||||
max-width: 20%;
|
||||
height: 15.03vw;
|
||||
object-fit: cover;
|
||||
margin: 16px;
|
||||
border-radius: 16px;
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
security create-keychain -p "" simplex.keychain
|
||||
security set-keychain-settings -u simplex.keychain
|
||||
security add-certificates -k simplex.keychain "Developer ID Application: SimpleX Chat Ltd (5NN7GUYB6T).cer"
|
||||
security add-certificates -k simplex.keychain "Developer ID Certification Authority.cer"
|
||||
# Private key with access from any app
|
||||
security import "SimpleX Chat.p12" -P "" -k simplex.keychain -A
|
||||
# Public key
|
||||
security import "SimpleX Chat.pem" -k simplex.keychain
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
set -e
|
||||
|
||||
trap "rm apps/multiplatform/local.properties 2> /dev/null || true; rm local.properties 2> /dev/null || true; rm /tmp/simplex.keychain" EXIT
|
||||
trap "rm apps/multiplatform/local.properties || true; rm local.properties || true; rm /tmp/simplex.keychain || true" EXIT
|
||||
echo "desktop.mac.signing.identity=Developer ID Application: SimpleX Chat Ltd (5NN7GUYB6T)" >> apps/multiplatform/local.properties
|
||||
echo "desktop.mac.signing.keychain=/tmp/simplex.keychain" >> apps/multiplatform/local.properties
|
||||
echo "desktop.mac.notarization.apple_id=$APPLE_SIMPLEX_NOTARIZATION_APPLE_ID" >> apps/multiplatform/local.properties
|
||||
@@ -10,10 +10,6 @@ echo "desktop.mac.notarization.password=$APPLE_SIMPLEX_NOTARIZATION_PASSWORD" >>
|
||||
echo "desktop.mac.notarization.team_id=5NN7GUYB6T" >> apps/multiplatform/local.properties
|
||||
echo "$APPLE_SIMPLEX_SIGNING_KEYCHAIN" | base64 --decode -o /tmp/simplex.keychain
|
||||
|
||||
security unlock-keychain -p "" /tmp/simplex.keychain
|
||||
# Adding keychain to the list of keychains.
|
||||
# Otherwise, it can find cert but exits while signing with "error: The specified item could not be found in the keychain."
|
||||
security list-keychains -s `security list-keychains | xargs` /tmp/simplex.keychain
|
||||
scripts/desktop/build-lib-mac.sh
|
||||
cd apps/multiplatform
|
||||
./gradlew packageDmg
|
||||
@@ -8,7 +8,7 @@ function readlink() {
|
||||
|
||||
OS=linux
|
||||
ARCH=${1:-`uname -a | rev | cut -d' ' -f2 | rev`}
|
||||
GHC_VERSION=9.6.3
|
||||
GHC_VERSION=8.10.7
|
||||
|
||||
if [ "$ARCH" == "aarch64" ]; then
|
||||
COMPOSE_ARCH=arm64
|
||||
@@ -25,7 +25,7 @@ for elem in "${exports[@]}"; do count=$(grep -R "$elem$" libsimplex.dll.def | wc
|
||||
for elem in "${exports[@]}"; do count=$(grep -R "\"$elem\"" flake.nix | wc -l); if [ $count -ne 2 ]; then echo Wrong exports in flake.nix. Add \"$elem\" in two places of the file; exit 1; fi ; done
|
||||
|
||||
rm -rf $BUILD_DIR
|
||||
cabal build lib:simplex-chat --ghc-options='-optl-Wl,-rpath,$ORIGIN -flink-rts -threaded' --constraint 'simplexmq +client_library'
|
||||
cabal build lib:simplex-chat --ghc-options='-optl-Wl,-rpath,$ORIGIN' --ghc-options="-optl-L$(ghc --print-libdir)/rts -optl-Wl,--as-needed,-lHSrts_thr-ghc$GHC_VERSION" --constraint 'simplexmq +client_library'
|
||||
cd $BUILD_DIR/build
|
||||
#patchelf --add-needed libHSrts_thr-ghc${GHC_VERSION}.so libHSsimplex-chat-*-inplace-ghc${GHC_VERSION}.so
|
||||
#patchelf --add-rpath '$ORIGIN' libHSsimplex-chat-*-inplace-ghc${GHC_VERSION}.so
|
||||
|
||||
@@ -5,14 +5,13 @@ set -e
|
||||
OS=mac
|
||||
ARCH="${1:-`uname -a | rev | cut -d' ' -f1 | rev`}"
|
||||
COMPOSE_ARCH=$ARCH
|
||||
GHC_VERSION=9.6.3
|
||||
GHC_VERSION=8.10.7
|
||||
|
||||
if [ "$ARCH" == "arm64" ]; then
|
||||
ARCH=aarch64
|
||||
else
|
||||
COMPOSE_ARCH=x64
|
||||
fi
|
||||
|
||||
LIB_EXT=dylib
|
||||
LIB=libHSsimplex-chat-*-inplace-ghc*.$LIB_EXT
|
||||
GHC_LIBS_DIR=$(ghc --print-libdir)
|
||||
@@ -24,26 +23,13 @@ for elem in "${exports[@]}"; do count=$(grep -R "$elem$" libsimplex.dll.def | wc
|
||||
for elem in "${exports[@]}"; do count=$(grep -R "\"$elem\"" flake.nix | wc -l); if [ $count -ne 2 ]; then echo Wrong exports in flake.nix. Add \"$elem\" in two places of the file; exit 1; fi ; done
|
||||
|
||||
rm -rf $BUILD_DIR
|
||||
cabal build lib:simplex-chat lib:simplex-chat --ghc-options="-optl-Wl,-rpath,@loader_path -optl-Wl,-L$GHC_LIBS_DIR/$ARCH-osx-ghc-$GHC_VERSION -optl-lHSrts_thr-ghc$GHC_VERSION -optl-lffi" --constraint 'simplexmq +client_library'
|
||||
cabal build lib:simplex-chat lib:simplex-chat --ghc-options="-optl-Wl,-rpath,@loader_path -optl-Wl,-L$GHC_LIBS_DIR/rts -optl-lHSrts_thr-ghc8.10.7 -optl-lffi" --constraint 'simplexmq +client_library'
|
||||
|
||||
cd $BUILD_DIR/build
|
||||
mkdir deps 2> /dev/null || true
|
||||
|
||||
# It's not included by default for some reason. Compiled lib tries to find system one but it's not always available
|
||||
#cp $GHC_LIBS_DIR/libffi.dylib ./deps
|
||||
(
|
||||
BUILD=$PWD
|
||||
cp /tmp/libffi-3.4.4/*-apple-darwin*/.libs/libffi.dylib $BUILD/deps || \
|
||||
( \
|
||||
cd /tmp && \
|
||||
curl --tlsv1.2 "https://gitlab.haskell.org/ghc/libffi-tarballs/-/raw/libffi-3.4.4/libffi-3.4.4.tar.gz?inline=false" -o libffi.tar.gz && \
|
||||
tar -xzvf libffi.tar.gz && \
|
||||
cd "libffi-3.4.4" && \
|
||||
./configure && \
|
||||
make && \
|
||||
cp *-apple-darwin*/.libs/libffi.dylib $BUILD/deps \
|
||||
)
|
||||
)
|
||||
cp $GHC_LIBS_DIR/rts/libffi.dylib ./deps
|
||||
|
||||
DYLIBS=`otool -L $LIB | grep @rpath | tail -n +2 | cut -d' ' -f 1 | cut -d'/' -f2`
|
||||
RPATHS=`otool -l $LIB | grep "path "| cut -d' ' -f11`
|
||||
@@ -84,8 +70,6 @@ function copy_deps() {
|
||||
}
|
||||
|
||||
copy_deps $LIB
|
||||
# Special case
|
||||
cp $(ghc --print-libdir)/$ARCH-osx-ghc-$GHC_VERSION/libHSghc-boot-th-$GHC_VERSION-ghc$GHC_VERSION.dylib deps
|
||||
rm deps/`basename $LIB`
|
||||
|
||||
cd -
|
||||
|
||||
@@ -40,10 +40,10 @@ if [ ! -f ../appimagetool-x86_64.AppImage ]; then
|
||||
wget --secure-protocol=TLSv1_3 https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage -O ../appimagetool-x86_64.AppImage
|
||||
chmod +x ../appimagetool-x86_64.AppImage
|
||||
fi
|
||||
if [ ! -f ../runtime-x86_64 ]; then
|
||||
wget --secure-protocol=TLSv1_3 https://github.com/AppImage/type2-runtime/releases/download/continuous/runtime-x86_64 -O ../runtime-x86_64
|
||||
chmod +x ../runtime-x86_64
|
||||
if [ ! -f ../runtime-fuse3-x86_64 ]; then
|
||||
wget --secure-protocol=TLSv1_3 https://github.com/AppImage/type2-runtime/releases/download/old/runtime-fuse3-x86_64 -O ../runtime-fuse3-x86_64
|
||||
chmod +x ../runtime-fuse3-x86_64
|
||||
fi
|
||||
../appimagetool-x86_64.AppImage --runtime-file ../runtime-x86_64 .
|
||||
../appimagetool-x86_64.AppImage --runtime-file ../runtime-fuse3-x86_64 .
|
||||
|
||||
mv *imple*.AppImage ../../
|
||||
|
||||
@@ -38,17 +38,6 @@
|
||||
</description>
|
||||
|
||||
<releases>
|
||||
<release version="6.2.0" date="2024-12-08">
|
||||
<url type="details">https://simplex.chat/blog/20241210-simplex-network-v6-2-servers-by-flux-business-chats.html</url>
|
||||
<description>
|
||||
<p>New in v6.2:</p>
|
||||
<ul>
|
||||
<li>SimpleX Chat and Flux made an agreement to include servers operated by Flux into the app – to improve metadata privacy.</li>
|
||||
<li>Business chats – your customers privacy.</li>
|
||||
<li>Improved user experience in chats: open on the first unread, jump to quoted messages, see who reacted.</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="6.1.1" date="2024-10-18">
|
||||
<url type="details">https://simplex.chat/blog/20241014-simplex-network-v6-1-security-review-better-calls-user-experience.html</url>
|
||||
<description>
|
||||
|
||||
@@ -1,242 +0,0 @@
|
||||
From 38be2c93acb6f459d24ed6c626981c35ccf44095 Mon Sep 17 00:00:00 2001
|
||||
From: Sylvain Henry <sylvain@haskus.fr>
|
||||
Date: Thu, 16 Feb 2023 15:40:45 +0100
|
||||
Subject: [PATCH] Fix build on 32-bit architectures
|
||||
|
||||
---
|
||||
Basement/Bits.hs | 4 ++++
|
||||
Basement/From.hs | 24 -----------------------
|
||||
Basement/Numerical/Additive.hs | 4 ++++
|
||||
Basement/Numerical/Conversion.hs | 20 +++++++++++++++++++
|
||||
Basement/PrimType.hs | 6 +++++-
|
||||
Basement/Types/OffsetSize.hs | 22 +++++++++++++++++++--
|
||||
6 files changed, 53 insertions(+), 27 deletions(-)
|
||||
|
||||
diff --git a/Basement/Bits.hs b/Basement/Bits.hs
|
||||
index 7eeea0f5..24520ed7 100644
|
||||
--- a/Basement/Bits.hs
|
||||
+++ b/Basement/Bits.hs
|
||||
@@ -54,8 +54,12 @@ import GHC.Int
|
||||
import Basement.Compat.Primitive
|
||||
|
||||
#if WORD_SIZE_IN_BITS < 64
|
||||
+#if __GLASGOW_HASKELL__ >= 904
|
||||
+import GHC.Exts
|
||||
+#else
|
||||
import GHC.IntWord64
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
-- | operation over finite bits
|
||||
class FiniteBitsOps bits where
|
||||
diff --git a/Basement/From.hs b/Basement/From.hs
|
||||
index 7bbe141c..80014b3e 100644
|
||||
--- a/Basement/From.hs
|
||||
+++ b/Basement/From.hs
|
||||
@@ -272,23 +272,11 @@ instance (NatWithinBound (CountOf ty) n, KnownNat n, PrimType ty)
|
||||
tryFrom = BlockN.toBlockN . UArray.toBlock . BoxArray.mapToUnboxed id
|
||||
|
||||
instance (KnownNat n, NatWithinBound Word8 n) => From (Zn64 n) Word8 where
|
||||
-#if __GLASGOW_HASKELL__ >= 904
|
||||
- from = narrow . unZn64 where narrow (W64# w) = W8# (wordToWord8# (word64ToWord# (GHC.Prim.word64ToWord# w)))
|
||||
-#else
|
||||
from = narrow . unZn64 where narrow (W64# w) = W8# (wordToWord8# (word64ToWord# w))
|
||||
-#endif
|
||||
instance (KnownNat n, NatWithinBound Word16 n) => From (Zn64 n) Word16 where
|
||||
-#if __GLASGOW_HASKELL__ >= 904
|
||||
- from = narrow . unZn64 where narrow (W64# w) = W16# (wordToWord16# (word64ToWord# (GHC.Prim.word64ToWord# w)))
|
||||
-#else
|
||||
from = narrow . unZn64 where narrow (W64# w) = W16# (wordToWord16# (word64ToWord# w))
|
||||
-#endif
|
||||
instance (KnownNat n, NatWithinBound Word32 n) => From (Zn64 n) Word32 where
|
||||
-#if __GLASGOW_HASKELL__ >= 904
|
||||
- from = narrow . unZn64 where narrow (W64# w) = W32# (wordToWord32# (word64ToWord# (GHC.Prim.word64ToWord# w)))
|
||||
-#else
|
||||
from = narrow . unZn64 where narrow (W64# w) = W32# (wordToWord32# (word64ToWord# w))
|
||||
-#endif
|
||||
instance From (Zn64 n) Word64 where
|
||||
from = unZn64
|
||||
instance From (Zn64 n) Word128 where
|
||||
@@ -297,23 +285,11 @@ instance From (Zn64 n) Word256 where
|
||||
from = from . unZn64
|
||||
|
||||
instance (KnownNat n, NatWithinBound Word8 n) => From (Zn n) Word8 where
|
||||
-#if __GLASGOW_HASKELL__ >= 904
|
||||
- from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W8# (wordToWord8# (word64ToWord# (GHC.Prim.word64ToWord# w)))
|
||||
-#else
|
||||
from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W8# (wordToWord8# (word64ToWord# w))
|
||||
-#endif
|
||||
instance (KnownNat n, NatWithinBound Word16 n) => From (Zn n) Word16 where
|
||||
-#if __GLASGOW_HASKELL__ >= 904
|
||||
- from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W16# (wordToWord16# (word64ToWord# (GHC.Prim.word64ToWord# w)))
|
||||
-#else
|
||||
from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W16# (wordToWord16# (word64ToWord# w))
|
||||
-#endif
|
||||
instance (KnownNat n, NatWithinBound Word32 n) => From (Zn n) Word32 where
|
||||
-#if __GLASGOW_HASKELL__ >= 904
|
||||
- from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W32# (wordToWord32# (word64ToWord# (GHC.Prim.word64ToWord# w)))
|
||||
-#else
|
||||
from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W32# (wordToWord32# (word64ToWord# w))
|
||||
-#endif
|
||||
instance (KnownNat n, NatWithinBound Word64 n) => From (Zn n) Word64 where
|
||||
from = naturalToWord64 . unZn
|
||||
instance (KnownNat n, NatWithinBound Word128 n) => From (Zn n) Word128 where
|
||||
diff --git a/Basement/Numerical/Additive.hs b/Basement/Numerical/Additive.hs
|
||||
index d0dfb973..8ab65aa0 100644
|
||||
--- a/Basement/Numerical/Additive.hs
|
||||
+++ b/Basement/Numerical/Additive.hs
|
||||
@@ -30,8 +30,12 @@ import qualified Basement.Types.Word128 as Word128
|
||||
import qualified Basement.Types.Word256 as Word256
|
||||
|
||||
#if WORD_SIZE_IN_BITS < 64
|
||||
+#if __GLASGOW_HASKELL__ >= 904
|
||||
+import GHC.Exts
|
||||
+#else
|
||||
import GHC.IntWord64
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
-- | Represent class of things that can be added together,
|
||||
-- contains a neutral element and is commutative.
|
||||
diff --git a/Basement/Numerical/Conversion.hs b/Basement/Numerical/Conversion.hs
|
||||
index db502c07..fddc8232 100644
|
||||
--- a/Basement/Numerical/Conversion.hs
|
||||
+++ b/Basement/Numerical/Conversion.hs
|
||||
@@ -26,8 +26,12 @@ import GHC.Word
|
||||
import Basement.Compat.Primitive
|
||||
|
||||
#if WORD_SIZE_IN_BITS < 64
|
||||
+#if __GLASGOW_HASKELL__ >= 904
|
||||
+import GHC.Exts
|
||||
+#else
|
||||
import GHC.IntWord64
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
intToInt64 :: Int -> Int64
|
||||
#if WORD_SIZE_IN_BITS == 64
|
||||
@@ -96,11 +100,22 @@ int64ToWord64 (I64# i) = W64# (int64ToWord64# i)
|
||||
#endif
|
||||
|
||||
#if WORD_SIZE_IN_BITS == 64
|
||||
+#if __GLASGOW_HASKELL__ >= 904
|
||||
+word64ToWord# :: Word64# -> Word#
|
||||
+word64ToWord# i = word64ToWord# i
|
||||
+#else
|
||||
word64ToWord# :: Word# -> Word#
|
||||
word64ToWord# i = i
|
||||
+#endif
|
||||
{-# INLINE word64ToWord# #-}
|
||||
#endif
|
||||
|
||||
+#if WORD_SIZE_IN_BITS < 64
|
||||
+word64ToWord32# :: Word64# -> Word32#
|
||||
+word64ToWord32# i = wordToWord32# (word64ToWord# i)
|
||||
+{-# INLINE word64ToWord32# #-}
|
||||
+#endif
|
||||
+
|
||||
-- | 2 Word32s
|
||||
data Word32x2 = Word32x2 {-# UNPACK #-} !Word32
|
||||
{-# UNPACK #-} !Word32
|
||||
@@ -113,9 +128,14 @@ word64ToWord32s (W64# w64) = Word32x2 (W32# (wordToWord32# (uncheckedShiftRL# (G
|
||||
word64ToWord32s (W64# w64) = Word32x2 (W32# (wordToWord32# (uncheckedShiftRL# w64 32#))) (W32# (wordToWord32# w64))
|
||||
#endif
|
||||
#else
|
||||
+#if __GLASGOW_HASKELL__ >= 904
|
||||
+word64ToWord32s :: Word64 -> Word32x2
|
||||
+word64ToWord32s (W64# w64) = Word32x2 (W32# (word64ToWord32# (uncheckedShiftRL64# w64 32#))) (W32# (word64ToWord32# w64))
|
||||
+#else
|
||||
word64ToWord32s :: Word64 -> Word32x2
|
||||
word64ToWord32s (W64# w64) = Word32x2 (W32# (word64ToWord# (uncheckedShiftRL64# w64 32#))) (W32# (word64ToWord# w64))
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
wordToChar :: Word -> Char
|
||||
wordToChar (W# word) = C# (chr# (word2Int# word))
|
||||
diff --git a/Basement/PrimType.hs b/Basement/PrimType.hs
|
||||
index f8ca2926..a888ec91 100644
|
||||
--- a/Basement/PrimType.hs
|
||||
+++ b/Basement/PrimType.hs
|
||||
@@ -54,7 +54,11 @@ import Basement.Nat
|
||||
import qualified Prelude (quot)
|
||||
|
||||
#if WORD_SIZE_IN_BITS < 64
|
||||
-import GHC.IntWord64
|
||||
+#if __GLASGOW_HASKELL__ >= 904
|
||||
+import GHC.Exts
|
||||
+#else
|
||||
+import GHC.IntWord64
|
||||
+#endif
|
||||
#endif
|
||||
|
||||
#ifdef FOUNDATION_BOUNDS_CHECK
|
||||
diff --git a/Basement/Types/OffsetSize.hs b/Basement/Types/OffsetSize.hs
|
||||
index cd944927..1ea80dad 100644
|
||||
--- a/Basement/Types/OffsetSize.hs
|
||||
+++ b/Basement/Types/OffsetSize.hs
|
||||
@@ -70,8 +70,12 @@ import Data.List (foldl')
|
||||
import qualified Prelude
|
||||
|
||||
#if WORD_SIZE_IN_BITS < 64
|
||||
+#if __GLASGOW_HASKELL__ >= 904
|
||||
+import GHC.Exts
|
||||
+#else
|
||||
import GHC.IntWord64
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
-- | File size in bytes
|
||||
newtype FileSize = FileSize Word64
|
||||
@@ -225,20 +229,26 @@ countOfRoundUp alignment (CountOf n) = CountOf ((n + (alignment-1)) .&. compleme
|
||||
|
||||
csizeOfSize :: CountOf Word8 -> CSize
|
||||
#if WORD_SIZE_IN_BITS < 64
|
||||
+#if __GLASGOW_HASKELL__ >= 904
|
||||
+csizeOfSize (CountOf (I# sz)) = CSize (W32# (wordToWord32# (int2Word# sz)))
|
||||
+#else
|
||||
csizeOfSize (CountOf (I# sz)) = CSize (W32# (int2Word# sz))
|
||||
+#endif
|
||||
#else
|
||||
#if __GLASGOW_HASKELL__ >= 904
|
||||
csizeOfSize (CountOf (I# sz)) = CSize (W64# (wordToWord64# (int2Word# sz)))
|
||||
-
|
||||
#else
|
||||
csizeOfSize (CountOf (I# sz)) = CSize (W64# (int2Word# sz))
|
||||
-
|
||||
#endif
|
||||
#endif
|
||||
|
||||
csizeOfOffset :: Offset8 -> CSize
|
||||
#if WORD_SIZE_IN_BITS < 64
|
||||
+#if __GLASGOW_HASKELL__ >= 904
|
||||
+csizeOfOffset (Offset (I# sz)) = CSize (W32# (wordToWord32# (int2Word# sz)))
|
||||
+#else
|
||||
csizeOfOffset (Offset (I# sz)) = CSize (W32# (int2Word# sz))
|
||||
+#endif
|
||||
#else
|
||||
#if __GLASGOW_HASKELL__ >= 904
|
||||
csizeOfOffset (Offset (I# sz)) = CSize (W64# (wordToWord64# (int2Word# sz)))
|
||||
@@ -250,7 +260,11 @@ csizeOfOffset (Offset (I# sz)) = CSize (W64# (int2Word# sz))
|
||||
sizeOfCSSize :: CSsize -> CountOf Word8
|
||||
sizeOfCSSize (CSsize (-1)) = error "invalid size: CSSize is -1"
|
||||
#if WORD_SIZE_IN_BITS < 64
|
||||
+#if __GLASGOW_HASKELL__ >= 904
|
||||
+sizeOfCSSize (CSsize (I32# sz)) = CountOf (I# (int32ToInt# sz))
|
||||
+#else
|
||||
sizeOfCSSize (CSsize (I32# sz)) = CountOf (I# sz)
|
||||
+#endif
|
||||
#else
|
||||
#if __GLASGOW_HASKELL__ >= 904
|
||||
sizeOfCSSize (CSsize (I64# sz)) = CountOf (I# (int64ToInt# sz))
|
||||
@@ -261,7 +275,11 @@ sizeOfCSSize (CSsize (I64# sz)) = CountOf (I# sz)
|
||||
|
||||
sizeOfCSize :: CSize -> CountOf Word8
|
||||
#if WORD_SIZE_IN_BITS < 64
|
||||
+#if __GLASGOW_HASKELL__ >= 904
|
||||
+sizeOfCSize (CSize (W32# sz)) = CountOf (I# (word2Int# (word32ToWord# sz)))
|
||||
+#else
|
||||
sizeOfCSize (CSize (W32# sz)) = CountOf (I# (word2Int# sz))
|
||||
+#endif
|
||||
#else
|
||||
#if __GLASGOW_HASKELL__ >= 904
|
||||
sizeOfCSize (CSize (W64# sz)) = CountOf (I# (word2Int# (word64ToWord# sz)))
|
||||
@@ -1,12 +0,0 @@
|
||||
diff --git a/direct-sqlcipher.cabal b/direct-sqlcipher.cabal
|
||||
index 728ba3e..c63745e 100644
|
||||
--- a/direct-sqlcipher.cabal
|
||||
+++ b/direct-sqlcipher.cabal
|
||||
@@ -84,6 +84,8 @@ library
|
||||
cc-options: -DSQLITE_TEMP_STORE=2
|
||||
-DSQLITE_HAS_CODEC
|
||||
|
||||
+ extra-libraries: ws2_32
|
||||
+
|
||||
if !os(windows) && !os(android)
|
||||
extra-libraries: pthread
|
||||
@@ -1,36 +0,0 @@
|
||||
From 2738929ce15b4c8704bbbac24a08539b5d4bf30e Mon Sep 17 00:00:00 2001
|
||||
From: sternenseemann <sternenseemann@systemli.org>
|
||||
Date: Mon, 14 Aug 2023 10:51:30 +0200
|
||||
Subject: [PATCH] Data.Memory.Internal.CompatPrim64: fix 32 bit with GHC >= 9.4
|
||||
|
||||
Since 9.4, GHC.Prim exports Word64# operations like timesWord64# even on
|
||||
i686 whereas GHC.IntWord64 no longer exists. Therefore, we can just use
|
||||
the ready made solution.
|
||||
|
||||
Closes #98, as it should be the better solution.
|
||||
---
|
||||
Data/Memory/Internal/CompatPrim64.hs | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/Data/Memory/Internal/CompatPrim64.hs b/Data/Memory/Internal/CompatPrim64.hs
|
||||
index b9eef8a..a134c88 100644
|
||||
--- a/Data/Memory/Internal/CompatPrim64.hs
|
||||
+++ b/Data/Memory/Internal/CompatPrim64.hs
|
||||
@@ -150,6 +150,7 @@ w64# :: Word# -> Word# -> Word# -> Word64#
|
||||
w64# w _ _ = w
|
||||
|
||||
#elif WORD_SIZE_IN_BITS == 32
|
||||
+#if __GLASGOW_HASKELL__ < 904
|
||||
import GHC.IntWord64
|
||||
import GHC.Prim (Word#)
|
||||
|
||||
@@ -158,6 +159,9 @@ timesWord64# a b =
|
||||
let !ai = word64ToInt64# a
|
||||
!bi = word64ToInt64# b
|
||||
in int64ToWord64# (timesInt64# ai bi)
|
||||
+#else
|
||||
+import GHC.Prim
|
||||
+#endif
|
||||
|
||||
w64# :: Word# -> Word# -> Word# -> Word64#
|
||||
w64# _ hw lw =
|
||||
@@ -255,6 +255,5 @@
|
||||
"docs-dropdown-10": "الشفافية",
|
||||
"docs-dropdown-11": "الأسئلة الأكثر شيوعًا",
|
||||
"docs-dropdown-12": "الأمان",
|
||||
"hero-overlay-card-3-p-3": "قامت Trail of Bits بمراجعة التصميم التعموي لبروتوكولات شبكة SimpleX في يوليو 2024. <a href=\"/blog/20241014-simplex-network-v6-1-security-review-better-calls-user-experience.html\">اقرأ المزيد</a>.",
|
||||
"docs-dropdown-14": "SimpleX للأعمال التجارية"
|
||||
"hero-overlay-card-3-p-3": "قامت Trail of Bits بمراجعة التصميم التعموي لبروتوكولات شبكة SimpleX في يوليو 2024. <a href=\"/blog/20241014-simplex-network-v6-1-security-review-better-calls-user-experience.html\">اقرأ المزيد</a>."
|
||||
}
|
||||
|
||||
@@ -255,6 +255,5 @@
|
||||
"docs-dropdown-10": "Transparent",
|
||||
"docs-dropdown-11": "FAQ",
|
||||
"docs-dropdown-12": "Sicherheit",
|
||||
"hero-overlay-card-3-p-3": "Trail of Bits hat das kryptografische Design des Netzwerk-Protokolls von SimpleX im Juli 2024 überprüft. <a href=\"/blog/20241014-simplex-network-v6-1-security-review-better-calls-user-experience.html\">Hier finden Sie weitere Informationen dazu</a>.",
|
||||
"docs-dropdown-14": "SimpleX für geschäftliche Anwendungen"
|
||||
"hero-overlay-card-3-p-3": "Trail of Bits hat das kryptografische Design des Netzwerk-Protokolls von SimpleX im Juli 2024 überprüft. <a href=\"/blog/20241014-simplex-network-v6-1-security-review-better-calls-user-experience.html\">Hier finden Sie weitere Informationen dazu</a>."
|
||||
}
|
||||
|
||||
@@ -255,6 +255,5 @@
|
||||
"docs-dropdown-11": "ПОШИРЕНІ ЗАПИТАННЯ",
|
||||
"docs-dropdown-10": "Прозорість",
|
||||
"docs-dropdown-12": "Безпека",
|
||||
"hero-overlay-card-3-p-3": "Trail of Bits переглянув криптографічний дизайн мережевих протоколів SimpleX в липні 2024 року. <a href=\"/blog/20241014-simplex-network-v6-1-security-review-better-calls-user-experience.html\">Детальніше</a>.",
|
||||
"docs-dropdown-14": "SimpleX для бізнесу"
|
||||
"hero-overlay-card-3-p-3": "Trail of Bits переглянув криптографічний дизайн мережевих протоколів SimpleX в липні 2024 року. <a href=\"/blog/20241014-simplex-network-v6-1-security-review-better-calls-user-experience.html\">Детальніше</a>."
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
<p></p>
|
||||
|
||||
<ul>
|
||||
<li><strong>Welcome, Flux</strong> — the new servers in <strong>v6.2-beta.1!</strong></li>
|
||||
<li>What's the problem?</li>
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
<p><strong>v6.2 is released:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li>SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app to improve metadata privacy in SimpleX network.</li>
|
||||
<li>Business chats for better privacy and support of your customers.</li>
|
||||
<li>Better user experience: open on the first unread, jump to quoted messages, see who reacted.</li>
|
||||
<li>Improving notifications in iOS app.</li>
|
||||
</ul>
|
||||
Reference in New Issue
Block a user