diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 6c588f1f7a..fcf9455ea5 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -675,7 +675,7 @@ jobs:
export PATH=$PATH:/c/ghcup/bin:$(echo /c/tools/ghc-*/bin || echo)
scripts/desktop/build-lib-windows.sh
cd apps/multiplatform
- ./gradlew packageMsi
+ ./gradlew -Psimplex.assets.dir=../../assets packageMsi
rm -rf dist-newstyle/src/direct-sq*
path=$(echo $PWD/release/main/msi/*imple*.msi | sed 's#/\([a-z]\)#\1:#' | sed 's#/#\\#g')
echo "package_path=$path" >> $GITHUB_OUTPUT
diff --git a/README.md b/README.md
index 818ed7142f..252fc95708 100644
--- a/README.md
+++ b/README.md
@@ -425,9 +425,9 @@ Please do NOT report security vulnerabilities via GitHub issues.
## License
-This software is licensed under the GNU Affero General Public License version 3 (AGPLv3). See the [LICENSE](./LICENSE) file for details. The SimpleX and SimpleX Chat name, logo, and associated branding materials are not covered by this license and are subject to the terms outlined in the [TRADEMARK](./docs/TRADEMARK.md) file.
+This software is licensed under the GNU Affero General Public License version 3 (AGPLv3). See the [LICENSE](./LICENSE) file for details. The SimpleX and SimpleX Chat name, logo, associated branding materials, and application and website graphic assets (illustrations, images, visual designs, etc.) are not covered by this license and are subject to the terms outlined in the [TRADEMARK](./docs/TRADEMARK.md) and [ASSETS_LICENSE](./assets/ASSETS_LICENSE.md) files respectively.
-Graphic designs, artworks and layouts are not licensed for re-use. If you want to use them in your publications, please ask for permission. Texts can be used as direct quotes, referencing the source.
+If you want to use any graphic assets in your publications, please ask for permission. Texts can be used as direct quotes, referencing the source.
[
](https://apps.apple.com/us/app/simplex-chat/id1605771084)
diff --git a/apps/ios/Shared/Model/SimpleXAPI.swift b/apps/ios/Shared/Model/SimpleXAPI.swift
index 20653ab9db..85bb8a30b4 100644
--- a/apps/ios/Shared/Model/SimpleXAPI.swift
+++ b/apps/ios/Shared/Model/SimpleXAPI.swift
@@ -2183,7 +2183,7 @@ func startChat(refreshInvitations: Bool = true, onboarding: Bool = false) throws
withAnimation {
let savedOnboardingStage = onboardingStageDefault.get()
m.onboardingStage = [.step1_SimpleXInfo, .step2_CreateProfile].contains(savedOnboardingStage) && m.users.count == 1
- ? .step3_ChooseServerOperators
+ ? .step4_NetworkCommitments
: savedOnboardingStage
if m.onboardingStage == .onboardingComplete && !privacyDeliveryReceiptsSet.get() {
m.setDeliveryReceipts = true
diff --git a/apps/ios/Shared/Views/Database/MigrateToAppGroupView.swift b/apps/ios/Shared/Views/Database/MigrateToAppGroupView.swift
index 76bdc898d5..56e343588d 100644
--- a/apps/ios/Shared/Views/Database/MigrateToAppGroupView.swift
+++ b/apps/ios/Shared/Views/Database/MigrateToAppGroupView.swift
@@ -110,8 +110,8 @@ struct MigrateToAppGroupView: View {
do {
resetChatCtrl()
try initializeChat(start: true)
- onboardingStageDefault.set(.step4_SetNotificationsMode)
- chatModel.onboardingStage = .step4_SetNotificationsMode
+ onboardingStageDefault.set(.step4_NetworkCommitments)
+ chatModel.onboardingStage = .step4_NetworkCommitments
setV3DBMigration(.ready)
} catch let error {
dbContainerGroupDefault.set(.documents)
diff --git a/apps/ios/Shared/Views/Helpers/DetermineWidth.swift b/apps/ios/Shared/Views/Helpers/DetermineWidth.swift
index b05ab17089..54e9fe0e80 100644
--- a/apps/ios/Shared/Views/Helpers/DetermineWidth.swift
+++ b/apps/ios/Shared/Views/Helpers/DetermineWidth.swift
@@ -21,6 +21,19 @@ struct DetermineWidth: View {
}
}
+struct DetermineHeight: View {
+ typealias Key = MaximumHeightPreferenceKey
+ var body: some View {
+ GeometryReader { proxy in
+ Color.clear
+ .preference(
+ key: MaximumHeightPreferenceKey.self,
+ value: proxy.size.height
+ )
+ }
+ }
+}
+
struct DetermineWidthImageVideoItem: View {
typealias Key = MaximumWidthImageVideoPreferenceKey
var body: some View {
@@ -41,6 +54,13 @@ struct MaximumWidthPreferenceKey: PreferenceKey {
}
}
+struct MaximumHeightPreferenceKey: PreferenceKey {
+ static var defaultValue: CGFloat = 0
+ static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) {
+ value = max(value, nextValue())
+ }
+}
+
struct MaximumWidthImageVideoPreferenceKey: PreferenceKey {
static var defaultValue: CGFloat = 0
static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) {
diff --git a/apps/ios/Shared/Views/Onboarding/ChooseServerOperators.swift b/apps/ios/Shared/Views/Onboarding/ChooseServerOperators.swift
index b5598c1f85..b61b81a46b 100644
--- a/apps/ios/Shared/Views/Onboarding/ChooseServerOperators.swift
+++ b/apps/ios/Shared/Views/Onboarding/ChooseServerOperators.swift
@@ -44,160 +44,147 @@ struct OnboardingButtonStyle: ButtonStyle {
}
}
-private enum OnboardingConditionsViewSheet: Identifiable {
- case showConditions
- case configureOperators
-
- var id: String {
- switch self {
- case .showConditions: return "showConditions"
- case .configureOperators: return "configureOperators"
- }
- }
-}
-
struct OnboardingConditionsView: View {
@EnvironmentObject var theme: AppTheme
- @State private var serverOperators: [ServerOperator] = []
- @State private var selectedOperatorIds = Set()
- @State private var sheetItem: OnboardingConditionsViewSheet? = nil
- @State private var notificationsModeNavLinkActive = false
- @State private var justOpened = true
+ @Environment(\.colorScheme) var colorScheme: ColorScheme
+ @State private var showConditionsSheet = false
+ var selectedOperatorIds: Set
var body: some View {
GeometryReader { g in
- let v = ScrollView {
- VStack(alignment: .leading, spacing: 20) {
- Text("Conditions of use")
- .font(.largeTitle)
- .bold()
- .frame(maxWidth: .infinity, alignment: .center)
- .padding(.top, 25)
+ VStack(alignment: .leading, spacing: 10) {
+ Spacer(minLength: 0)
- Spacer()
+ heroImage().frame(maxWidth: .infinity, minHeight: 80)
- VStack(alignment: .leading, spacing: 20) {
- Text("Private chats, groups and your contacts are not accessible to server operators.")
- .lineSpacing(2)
- .frame(maxWidth: .infinity, alignment: .leading)
- Text("""
- By using SimpleX Chat you agree to:
- - send only legal content in public groups.
- - respect other users – no spam.
- """)
- .lineSpacing(2)
- .frame(maxWidth: .infinity, alignment: .leading)
+ Text("Network commitments")
+ .font(.largeTitle)
+ .bold()
+ .multilineTextAlignment(.center)
+ .frame(maxWidth: .infinity, alignment: .center)
+ .fixedSize(horizontal: false, vertical: true)
- Button("Privacy policy and conditions of use.") {
- sheetItem = .showConditions
- }
- .frame(maxWidth: .infinity, alignment: .leading)
- }
- .padding(.horizontal, 4)
+ Text("Operators commit to:\n- Be independent\n- Minimize metadata usage\n- Run verified open-source code")
+ .font(.callout)
+ .lineSpacing(2)
+ .frame(maxWidth: .infinity, alignment: .leading)
+ .padding(.leading, 4)
+ .padding(.top, 10)
+ .fixedSize(horizontal: false, vertical: true)
- Spacer()
+ Text("You commit to:\n- Only legal content in public groups\n- Respect other users - no spam")
+ .font(.callout)
+ .lineSpacing(2)
+ .frame(maxWidth: .infinity, alignment: .leading)
+ .padding(.leading, 4)
+ .padding(.top, 10)
+ .fixedSize(horizontal: false, vertical: true)
- VStack(spacing: 12) {
- acceptConditionsButton()
-
- Button("Configure server operators") {
- sheetItem = .configureOperators
- }
- .frame(minHeight: 40)
- }
+ Button {
+ showConditionsSheet = true
+ } label: {
+ Text("Privacy policy and conditions of use.")
+ .fontWeight(.medium)
+ .fixedSize(horizontal: false, vertical: true)
}
- .padding(25)
- .frame(minHeight: g.size.height)
+ .frame(maxWidth: .infinity, alignment: .leading)
+ .padding(.leading, 4)
+ .padding(.top, 10)
+ .padding(.bottom, 15)
+
+ Spacer(minLength: 0)
+
+ acceptButton()
+ .padding(.bottom, g.safeAreaInsets.bottom == 0 ? 20 : 0)
}
- .onAppear {
- if justOpened {
- serverOperators = ChatModel.shared.conditions.serverOperators
- selectedOperatorIds = Set(serverOperators.filter { $0.enabled }.map { $0.operatorId })
- justOpened = false
+ .padding(.horizontal, 25)
+ .padding(.top, 25)
+ .padding(.bottom, 25)
+ .frame(minHeight: g.size.height)
+ }
+ .frame(maxHeight: .infinity)
+ .navigationBarHidden(true)
+ .sheet(isPresented: $showConditionsSheet) {
+ NavigationView {
+ VStack {
+ ConditionsTextView()
+ .padding()
+ acceptButton()
+ .padding(.horizontal, 25)
+ .padding(.bottom, 20)
}
- }
- .sheet(item: $sheetItem) { item in
- switch item {
- case .showConditions:
- SimpleConditionsView()
- .modifier(ThemedBackground(grouped: true))
- case .configureOperators:
- ChooseServerOperators(serverOperators: serverOperators, selectedOperatorIds: $selectedOperatorIds)
- .modifier(ThemedBackground())
- }
- }
- .frame(maxHeight: .infinity, alignment: .top)
- if #available(iOS 16.4, *) {
- v.scrollBounceBehavior(.basedOnSize)
- } else {
- v
+ .navigationTitle("Conditions of use")
+ .navigationBarTitleDisplayMode(.large)
+ .toolbar { ToolbarItem(placement: .navigationBarTrailing, content: conditionsLinkButton) }
+ .modifier(ThemedBackground(grouped: true))
}
}
- .frame(maxHeight: .infinity, alignment: .top)
- .navigationBarHidden(true) // necessary on iOS 15
}
- private func continueToNextStep() {
- onboardingStageDefault.set(.step4_SetNotificationsMode)
- notificationsModeNavLinkActive = true
- }
-
- func notificationsModeNavLinkButton(_ button: @escaping (() -> some View)) -> some View {
+ @ViewBuilder
+ private func heroImage() -> some View {
+ #if SIMPLEX_ASSETS
+ Image(colorScheme == .light ? "network-commitments" : "network-commitments-light")
+ .resizable()
+ .scaledToFit()
+ #else
ZStack {
- button()
-
- NavigationLink(isActive: $notificationsModeNavLinkActive) {
- notificationsModeDestinationView()
- } label: {
- EmptyView()
- }
- .frame(width: 1, height: 1)
- .hidden()
+ let gp = OnboardingCardView.gradientPoints(aspectRatio: 1.5, scale: colorScheme == .light ? 1.2 : 1.5)
+ LinearGradient(
+ stops: colorScheme == .light ? OnboardingCardView.lightStops : OnboardingCardView.darkStops,
+ startPoint: gp.start,
+ endPoint: gp.end
+ )
+ Image(systemName: "checkmark.shield")
+ .font(.system(size: 72))
+ .foregroundColor(theme.colors.primary)
}
+ .aspectRatio(1.5, contentMode: .fit)
+ .clipShape(RoundedRectangle(cornerRadius: 24))
+ .padding(.horizontal, 25)
+ #endif
}
- private func notificationsModeDestinationView() -> some View {
- SetNotificationsMode()
- .navigationBarBackButtonHidden(true)
- .modifier(ThemedBackground())
- }
-
- private func acceptConditionsButton() -> some View {
- notificationsModeNavLinkButton {
- Button {
- Task {
- do {
- let conditionsId = ChatModel.shared.conditions.currentConditions.conditionsId
- let r = try await acceptConditions(conditionsId: conditionsId, operatorIds: Array(selectedOperatorIds))
+ private func acceptButton() -> some View {
+ Button {
+ Task {
+ do {
+ let conditionsId = ChatModel.shared.conditions.currentConditions.conditionsId
+ let r = try await acceptConditions(conditionsId: conditionsId, operatorIds: Array(selectedOperatorIds))
+ await MainActor.run {
+ ChatModel.shared.conditions = r
+ }
+ if let enabledOps = enabledOperators(r.serverOperators) {
+ let r2 = try await setServerOperators(operators: enabledOps)
await MainActor.run {
- ChatModel.shared.conditions = r
+ ChatModel.shared.conditions = r2
+ completeOnboarding()
}
- if let enabledOperators = enabledOperators(r.serverOperators) {
- let r2 = try await setServerOperators(operators: enabledOperators)
- await MainActor.run {
- ChatModel.shared.conditions = r2
- continueToNextStep()
- }
- } else {
- await MainActor.run {
- continueToNextStep()
- }
- }
- } catch let error {
+ } else {
await MainActor.run {
- showAlert(
- NSLocalizedString("Error accepting conditions", comment: "alert title"),
- message: responseError(error)
- )
+ completeOnboarding()
}
}
+ } catch let error {
+ await MainActor.run {
+ showAlert(
+ NSLocalizedString("Error accepting conditions", comment: "alert title"),
+ message: responseError(error)
+ )
+ }
}
- } label: {
- Text("Accept")
}
- .buttonStyle(OnboardingButtonStyle(isDisabled: selectedOperatorIds.isEmpty))
- .disabled(selectedOperatorIds.isEmpty)
+ } label: {
+ Text("Accept")
}
+ .buttonStyle(OnboardingButtonStyle(isDisabled: selectedOperatorIds.isEmpty))
+ .disabled(selectedOperatorIds.isEmpty)
+ }
+
+ private func completeOnboarding() {
+ let m = ChatModel.shared
+ onboardingStageDefault.set(.onboardingComplete)
+ m.onboardingStage = .onboardingComplete
}
private func enabledOperators(_ operators: [ServerOperator]) -> [ServerOperator]? {
@@ -222,7 +209,7 @@ struct OnboardingConditionsView: View {
if !haveXFTPProxy { op.xftpRoles.proxy = true }
ops[firstEnabledIndex] = op
return ops
- } else { // Shouldn't happen - view doesn't let to proceed if no operators are enabled
+ } else {
return nil
}
} else {
@@ -405,5 +392,5 @@ struct ChooseServerOperatorsInfoView: View {
}
#Preview {
- OnboardingConditionsView()
+ OnboardingConditionsView(selectedOperatorIds: [])
}
diff --git a/apps/ios/Shared/Views/Onboarding/CreateProfile.swift b/apps/ios/Shared/Views/Onboarding/CreateProfile.swift
index 7301c0421d..35820fdbe0 100644
--- a/apps/ios/Shared/Views/Onboarding/CreateProfile.swift
+++ b/apps/ios/Shared/Views/Onboarding/CreateProfile.swift
@@ -133,61 +133,115 @@ struct CreateProfile: View {
struct CreateFirstProfile: View {
@EnvironmentObject var m: ChatModel
@EnvironmentObject var theme: AppTheme
- @Environment(\.dismiss) var dismiss
+ @Environment(\.colorScheme) var colorScheme: ColorScheme
@State private var displayName: String = ""
@FocusState private var focusDisplayName
@State private var nextStepNavLinkActive = false
+ @State private var showMigrateSheet = false
+ @State private var fixedContentHeight: CGFloat = 300
var body: some View {
- let v = VStack(alignment: .leading, spacing: 16) {
- VStack(alignment: .center, spacing: 16) {
- Text("Create profile")
- .font(.largeTitle)
- .bold()
- .multilineTextAlignment(.center)
-
- Text("Your profile is stored on your device and only shared with your contacts.")
- .font(.callout)
- .foregroundColor(theme.colors.secondary)
- .multilineTextAlignment(.center)
- }
- .fixedSize(horizontal: false, vertical: true)
- .frame(maxWidth: .infinity) // Ensures it takes up the full width
- .padding(.horizontal, 10)
- .onTapGesture { focusDisplayName = false }
-
- HStack {
- let name = displayName.trimmingCharacters(in: .whitespaces)
- let validName = mkValidName(name)
- ZStack(alignment: .trailing) {
- TextField("Enter your name…", text: $displayName)
- .focused($focusDisplayName)
- .padding(.horizontal)
- .padding(.trailing, 20)
- .padding(.vertical, 10)
- .background(
- RoundedRectangle(cornerRadius: 10, style: .continuous)
- .fill(Color(uiColor: .tertiarySystemFill))
+ let spacing: CGFloat = 10
+ let minImageHeight: CGFloat = 80
+ let topPadding: CGFloat = 8
+ let padding: CGFloat = 25
+ GeometryReader { g in
+ let v = ScrollView {
+ VStack(alignment: .center, spacing: spacing) {
+ #if SIMPLEX_ASSETS
+ Image(colorScheme == .light ? "your-profile" : "your-profile-light")
+ .resizable()
+ .scaledToFit()
+ .frame(maxWidth: .infinity, minHeight: minImageHeight)
+ .layoutPriority(1)
+ #else
+ ZStack {
+ let gp = OnboardingCardView.gradientPoints(aspectRatio: 1.0, scale: colorScheme == .light ? 1.2 : 1.5)
+ LinearGradient(
+ stops: colorScheme == .light ? OnboardingCardView.lightStops : OnboardingCardView.darkStops,
+ startPoint: gp.start,
+ endPoint: gp.end
)
- if name != validName {
- Button {
- showAlert(.invalidNameError(validName: validName))
- } label: {
- Image(systemName: "exclamationmark.circle")
- .foregroundColor(.red)
- .padding(.horizontal, 10)
- }
+ Image(systemName: "person.crop.rectangle")
+ .font(.system(size: 72))
+ .foregroundColor(theme.colors.primary)
}
+ .aspectRatio(1.0, contentMode: .fit)
+ .clipShape(RoundedRectangle(cornerRadius: 24))
+ .padding(.horizontal, 25)
+ .frame(maxWidth: .infinity, minHeight: minImageHeight)
+ .layoutPriority(1)
+ #endif
+
+ VStack(alignment: .center, spacing: spacing) {
+ Text("Your profile")
+ .font(.largeTitle)
+ .bold()
+ .multilineTextAlignment(.center)
+ .fixedSize(horizontal: false, vertical: true)
+
+ Text("On your phone, not on any server.")
+ .font(.title3)
+ .fontWeight(.medium)
+ .foregroundColor(theme.colors.secondary)
+ .multilineTextAlignment(.center)
+ .fixedSize(horizontal: false, vertical: true)
+
+ Text("No account. No phone. No email. No ID.\nThe most secure encryption.")
+ .font(.footnote)
+ .foregroundColor(theme.colors.secondary)
+ .multilineTextAlignment(.center)
+ .fixedSize(horizontal: false, vertical: true)
+
+ profileNameField()
+ .padding(.top)
+ .padding(.bottom, 5)
+
+ Spacer(minLength: 0)
+
+ createProfileButton()
+ .padding(.bottom, g.safeAreaInsets.bottom == 0 ? 20 : 0)
+ }
+ .overlay(DetermineHeight())
+ .onPreferenceChange(DetermineHeight.Key.self) { fixedContentHeight = $0 }
+ }
+ .padding(.horizontal, padding)
+ .padding(.top, topPadding)
+ .padding(.bottom, padding)
+ .frame(
+ minHeight: g.size.height,
+ idealHeight: max(g.size.height, fixedContentHeight + minImageHeight + spacing + topPadding + padding)
+ )
+ }
+ .onTapGesture { focusDisplayName = false }
+ .sheet(isPresented: $showMigrateSheet, onDismiss: { m.migrationState = nil }) {
+ NavigationView {
+ MigrateToDevice(migrationState: $m.migrationState)
+ .navigationTitle("Migrate here")
+ .modifier(ThemedBackground(grouped: true))
}
}
- .padding(.top)
-
- Spacer()
-
- VStack(spacing: 10) {
- createProfileButton()
- if !focusDisplayName {
- onboardingButtonPlaceholder()
+ if #available(iOS 17, *) {
+ v.scrollBounceBehavior(.basedOnSize).defaultScrollAnchor(.bottom)
+ } else if #available(iOS 16.4.0, *) {
+ v.scrollBounceBehavior(.basedOnSize)
+ } else {
+ v
+ }
+ }
+ .toolbar {
+ ToolbarItem(placement: .navigationBarTrailing) {
+ Button {
+ if m.migrationState == nil {
+ m.migrationState = .pasteOrScanLink
+ }
+ showMigrateSheet = true
+ } label: {
+ HStack(spacing: 4) {
+ Image(systemName: "tray.and.arrow.down")
+ Text("Migrate")
+ .fontWeight(.medium)
+ }
}
}
}
@@ -195,23 +249,40 @@ struct CreateFirstProfile: View {
if #available(iOS 16, *) {
focusDisplayName = true
} else {
- // it does not work before animation completes on iOS 15
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
focusDisplayName = true
}
}
}
- .padding(.horizontal, 25)
- .padding(.bottom, 25)
- .frame(maxWidth: .infinity, alignment: .leading)
- if #available(iOS 16, *) {
- return v.padding(.top, 10)
- } else {
- return v.padding(.top, 75).ignoresSafeArea(.all, edges: .top)
+ .frame(maxHeight: .infinity)
+ }
+
+ private func profileNameField() -> some View {
+ let name = displayName.trimmingCharacters(in: .whitespaces)
+ let validName = mkValidName(name)
+ return ZStack(alignment: .trailing) {
+ TextField("Enter profile name...", text: $displayName)
+ .focused($focusDisplayName)
+ .padding(.horizontal)
+ .padding(.trailing, name != validName ? 20 : 0)
+ .padding(.vertical, 10)
+ .background(
+ RoundedRectangle(cornerRadius: 10, style: .continuous)
+ .fill(Color(uiColor: .tertiarySystemFill))
+ )
+ if name != validName {
+ Button {
+ showAlert(.invalidNameError(validName: validName))
+ } label: {
+ Image(systemName: "exclamationmark.circle")
+ .foregroundColor(.red)
+ .padding(.horizontal, 10)
+ }
+ }
}
}
- func createProfileButton() -> some View {
+ private func createProfileButton() -> some View {
ZStack {
Button {
createProfile()
@@ -236,7 +307,7 @@ struct CreateFirstProfile: View {
}
private func nextStepDestinationView() -> some View {
- OnboardingConditionsView()
+ YourNetworkView()
.navigationBarBackButtonHidden(true)
.modifier(ThemedBackground())
}
diff --git a/apps/ios/Shared/Views/Onboarding/HowItWorks.swift b/apps/ios/Shared/Views/Onboarding/HowItWorks.swift
index c881146ef5..e9b9c6b970 100644
--- a/apps/ios/Shared/Views/Onboarding/HowItWorks.swift
+++ b/apps/ios/Shared/Views/Onboarding/HowItWorks.swift
@@ -9,7 +9,7 @@
import SwiftUI
-struct HowItWorks: View {
+struct OldHowItWorks: View {
@Environment(\.dismiss) var dismiss: DismissAction
@EnvironmentObject var m: ChatModel
var onboarding: Bool
@@ -61,9 +61,57 @@ struct HowItWorks: View {
}
}
-struct HowItWorks_Previews: PreviewProvider {
+struct WhySimpleX: View {
+ @Environment(\.dismiss) var dismiss: DismissAction
+ @EnvironmentObject var m: ChatModel
+ var onboarding: Bool
+ @Binding var createProfileNavLinkActive: Bool
+
+ var body: some View {
+ VStack(alignment: .leading) {
+ ScrollView {
+ VStack(alignment: .leading, spacing: 16) {
+ Text("You were born without an account")
+ .font(.title)
+ .bold()
+ .padding(.top)
+ Text("Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life.")
+ Text("Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible.")
+ Text("There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected.")
+ Text("Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign.")
+ Text("Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public.")
+ Text("The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it.")
+ Text("Because we destroyed the power to know who you are. So that your power can never be taken.")
+ Text("Be free in your network.")
+ }
+ }
+ .padding(.bottom, 16)
+
+ Spacer()
+
+ if onboarding {
+ createFirstProfileButton()
+ }
+ }
+ .padding(onboarding ? 25 : 16)
+ .frame(maxHeight: .infinity, alignment: .top)
+ .modifier(ThemedBackground())
+ }
+
+ private func createFirstProfileButton() -> some View {
+ Button {
+ dismiss()
+ createProfileNavLinkActive = true
+ } label: {
+ Text("Get started")
+ }
+ .buttonStyle(OnboardingButtonStyle(isDisabled: false))
+ }
+}
+
+struct WhySimpleX_Previews: PreviewProvider {
static var previews: some View {
- HowItWorks(
+ WhySimpleX(
onboarding: true,
createProfileNavLinkActive: Binding.constant(false)
)
diff --git a/apps/ios/Shared/Views/Onboarding/OnboardingView.swift b/apps/ios/Shared/Views/Onboarding/OnboardingView.swift
index daef95fbc6..39ccabce04 100644
--- a/apps/ios/Shared/Views/Onboarding/OnboardingView.swift
+++ b/apps/ios/Shared/Views/Onboarding/OnboardingView.swift
@@ -19,17 +19,18 @@ struct OnboardingView: View {
case .step1_SimpleXInfo:
SimpleXInfo(onboarding: true)
.modifier(ThemedBackground())
- case .step2_CreateProfile: // deprecated
+ case .step2_CreateProfile:
CreateFirstProfile()
.modifier(ThemedBackground())
case .step3_CreateSimpleXAddress: // deprecated
CreateSimpleXAddress()
- case .step3_ChooseServerOperators:
- OnboardingConditionsView()
+ case .step3_ChooseServerOperators,
+ .step4_SetNotificationsMode: // deprecated
+ YourNetworkView()
.navigationBarBackButtonHidden(true)
.modifier(ThemedBackground())
- case .step4_SetNotificationsMode:
- SetNotificationsMode()
+ case .step4_NetworkCommitments:
+ OnboardingConditionsView(selectedOperatorIds: Set(ChatModel.shared.conditions.serverOperators.filter { $0.enabled }.map { $0.operatorId }))
.navigationBarBackButtonHidden(true)
.modifier(ThemedBackground())
case .onboardingComplete: EmptyView()
@@ -45,10 +46,11 @@ func onboardingButtonPlaceholder() -> some View {
// Spec: spec/client/navigation.md#onboardingStage
enum OnboardingStage: String, Identifiable {
case step1_SimpleXInfo
- case step2_CreateProfile // deprecated
+ case step2_CreateProfile
case step3_CreateSimpleXAddress // deprecated
- case step3_ChooseServerOperators // changed to simplified conditions
- case step4_SetNotificationsMode
+ case step3_ChooseServerOperators
+ case step4_SetNotificationsMode // deprecated
+ case step4_NetworkCommitments
case onboardingComplete
public var id: Self { self }
diff --git a/apps/ios/Shared/Views/Onboarding/SetNotificationsMode.swift b/apps/ios/Shared/Views/Onboarding/SetNotificationsMode.swift
index 717405b03b..1a1f1bb68c 100644
--- a/apps/ios/Shared/Views/Onboarding/SetNotificationsMode.swift
+++ b/apps/ios/Shared/Views/Onboarding/SetNotificationsMode.swift
@@ -11,45 +11,39 @@ import SwiftUI
import SimpleXChat
struct SetNotificationsMode: View {
- @EnvironmentObject var m: ChatModel
- @State private var notificationMode = NotificationsMode.instant
- @State private var showAlert: NotificationAlert?
- @State private var showInfo: Bool = false
+ @Environment(\.dismiss) var dismiss
+ @Binding var notificationMode: NotificationsMode
+ @State private var showInfo = false
var body: some View {
GeometryReader { g in
- let v = ScrollView {
+ ScrollView {
VStack(alignment: .center, spacing: 20) {
Text("Push notifications")
.font(.largeTitle)
.bold()
.padding(.top, 25)
-
- infoText()
-
+
+ Button {
+ showInfo = true
+ } label: {
+ Label("How it affects privacy", systemImage: "info.circle")
+ .font(.headline)
+ }
+
Spacer()
ForEach(NotificationsMode.values) { mode in
NtfModeSelector(mode: mode, selection: $notificationMode)
}
-
+
Spacer()
-
+
VStack(spacing: 10) {
Button {
- if let token = m.deviceToken {
- setNotificationsMode(token, notificationMode)
- } else {
- AlertManager.shared.showAlertMsg(title: "No device token!")
- }
- onboardingStageDefault.set(.onboardingComplete)
- m.onboardingStage = .onboardingComplete
+ dismiss()
} label: {
- if case .off = notificationMode {
- Text("Use chat")
- } else {
- Text("Enable notifications")
- }
+ Text("OK")
}
.buttonStyle(OnboardingButtonStyle())
onboardingButtonPlaceholder()
@@ -58,50 +52,11 @@ struct SetNotificationsMode: View {
.padding(25)
.frame(minHeight: g.size.height)
}
- if #available(iOS 16.4, *) {
- v.scrollBounceBehavior(.basedOnSize)
- } else {
- v
- }
}
.frame(maxHeight: .infinity)
.sheet(isPresented: $showInfo) {
NotificationsInfoView()
}
- .navigationBarHidden(true) // necessary on iOS 15
- }
-
- private func setNotificationsMode(_ token: DeviceToken, _ mode: NotificationsMode) {
- switch mode {
- case .off:
- m.tokenStatus = .new
- m.notificationMode = .off
- default:
- Task {
- do {
- let status = try await apiRegisterToken(token: token, notificationMode: mode)
- await MainActor.run {
- m.tokenStatus = status
- m.notificationMode = mode
- }
- } catch let error {
- let a = getErrorAlert(error, "Error enabling notifications")
- AlertManager.shared.showAlertMsg(
- title: a.title,
- message: a.message
- )
- }
- }
- }
- }
-
- private func infoText() -> some View {
- Button {
- showInfo = true
- } label: {
- Label("How it affects privacy", systemImage: "info.circle")
- .font(.headline)
- }
}
}
@@ -180,6 +135,6 @@ struct NotificationsInfoView: View {
struct NotificationsModeView_Previews: PreviewProvider {
static var previews: some View {
- SetNotificationsMode()
+ SetNotificationsMode(notificationMode: .constant(.instant))
}
}
diff --git a/apps/ios/Shared/Views/Onboarding/SimpleXInfo.swift b/apps/ios/Shared/Views/Onboarding/SimpleXInfo.swift
index 80f35c1190..15b8e05b5e 100644
--- a/apps/ios/Shared/Views/Onboarding/SimpleXInfo.swift
+++ b/apps/ios/Shared/Views/Onboarding/SimpleXInfo.swift
@@ -12,68 +12,84 @@ import SimpleXChat
struct SimpleXInfo: View {
@EnvironmentObject var m: ChatModel
+ @EnvironmentObject var theme: AppTheme
@Environment(\.colorScheme) var colorScheme: ColorScheme
- @State private var showHowItWorks = false
+ @State private var showWhyBuilt = false
@State private var createProfileNavLinkActive = false
var onboarding: Bool
var body: some View {
GeometryReader { g in
- let v = ScrollView {
- VStack(alignment: .leading) {
- VStack(alignment: .center, spacing: 10) {
- Image(colorScheme == .light ? "logo" : "logo-light")
- .resizable()
- .aspectRatio(contentMode: .fit)
- .frame(width: g.size.width * 0.67)
- .padding(.bottom, 8)
- .padding(.leading, 4)
- .frame(maxWidth: .infinity, minHeight: 48, alignment: .top)
-
- Button {
- showHowItWorks = true
- } label: {
- Label("The future of messaging", systemImage: "info.circle")
- .font(.headline)
- }
- }
+ VStack(alignment: .center, spacing: 10) {
+ Image(colorScheme == .light ? "logo" : "logo-light")
+ .resizable()
+ .aspectRatio(contentMode: .fit)
+ .frame(width: (g.size.width - 50) * 0.55)
+ .padding(.leading, 4)
+ .frame(maxWidth: .infinity, minHeight: 48, alignment: .top)
- Spacer()
+ #if SIMPLEX_ASSETS
+ Image(colorScheme == .light ? "intro" : "intro-light")
+ .resizable()
+ .scaledToFit()
+ .frame(maxWidth: .infinity)
+ #else
+ ZStack {
+ let gp = OnboardingCardView.gradientPoints(aspectRatio: 1.0, scale: colorScheme == .light ? 1.2 : 1.5)
+ LinearGradient(
+ stops: colorScheme == .light ? OnboardingCardView.lightStops : OnboardingCardView.darkStops,
+ startPoint: gp.start,
+ endPoint: gp.end
+ )
+ Image(systemName: "bubble.left.and.bubble.right")
+ .font(.system(size: 72))
+ .foregroundColor(theme.colors.primary)
+ }
+ .aspectRatio(1.0, contentMode: .fit)
+ .clipShape(RoundedRectangle(cornerRadius: 24))
+ .padding(.horizontal, 25)
+ .frame(maxWidth: .infinity)
+ #endif
- VStack(alignment: .leading) {
- onboardingInfoRow("privacy", "Privacy redefined",
- "No user identifiers.", width: 48)
- onboardingInfoRow("shield", "Immune to spam",
- "You decide who can connect.", width: 46)
- onboardingInfoRow(colorScheme == .light ? "decentralized" : "decentralized-light", "Decentralized",
- "Anybody can host servers.", width: 46)
- }
- .padding(.leading, 16)
+ Text("Be free\nin your network")
+ .font(.largeTitle)
+ .bold()
+ .multilineTextAlignment(.center)
+ .fixedSize(horizontal: false, vertical: true)
- Spacer()
+ Text("Private and secure messaging.")
+ .font(.title3)
+ .fontWeight(.medium)
+ .foregroundColor(theme.colors.secondary)
+ .multilineTextAlignment(.center)
+ .fixedSize(horizontal: false, vertical: true)
- if onboarding {
- VStack(spacing: 10) {
- createFirstProfileButton()
+ Text("The first network where you own\nyour contacts and groups.")
+ .font(.footnote)
+ .foregroundColor(theme.colors.secondary)
+ .multilineTextAlignment(.center)
+ .fixedSize(horizontal: false, vertical: true)
- Button {
- m.migrationState = .pasteOrScanLink
- } label: {
- Label("Migrate from another device", systemImage: "tray.and.arrow.down")
- .font(.system(size: 17, weight: .semibold))
- .frame(minHeight: 40)
- }
- .frame(maxWidth: .infinity)
- }
+ if onboarding {
+ Spacer(minLength: 0)
+
+ createFirstProfileButton()
+ .padding(.vertical, 10)
+
+ Button {
+ showWhyBuilt = true
+ } label: {
+ Label("Why SimpleX is built.", systemImage: "info.circle")
+ .font(.headline)
}
}
- .padding(.horizontal, 25)
- .padding(.top, 75)
- .padding(.bottom, 25)
- .frame(minHeight: g.size.height)
}
+ .padding(.horizontal, 25)
+ .padding(.top, 28)
+ .padding(.bottom, 20)
+ .frame(minHeight: g.size.height)
.sheet(isPresented: Binding(
- get: { m.migrationState != nil },
+ get: { m.migrationState != nil && !createProfileNavLinkActive },
set: { _ in
m.migrationState = nil
MigrationToDeviceState.save(nil) }
@@ -86,17 +102,12 @@ struct SimpleXInfo: View {
.modifier(ThemedBackground(grouped: true))
}
}
- .sheet(isPresented: $showHowItWorks) {
- HowItWorks(
+ .sheet(isPresented: $showWhyBuilt) {
+ WhySimpleX(
onboarding: onboarding,
createProfileNavLinkActive: $createProfileNavLinkActive
)
}
- if #available(iOS 16.4, *) {
- v.scrollBounceBehavior(.basedOnSize)
- } else {
- v
- }
}
.onAppear() {
setLastVersionDefault()
@@ -105,32 +116,12 @@ struct SimpleXInfo: View {
.navigationBarHidden(true) // necessary on iOS 15
}
- private func onboardingInfoRow(_ image: String, _ title: LocalizedStringKey, _ text: LocalizedStringKey, width: CGFloat) -> some View {
- HStack(alignment: .top) {
- Image(image)
- .resizable()
- .scaledToFit()
- .frame(width: width, height: 54)
- .frame(width: 54)
- .padding(.trailing, 10)
- VStack(alignment: .leading, spacing: 4) {
- Text(title).font(.headline)
- Text(text).frame(minHeight: 40, alignment: .top)
- .font(.callout)
- .lineLimit(3)
- .fixedSize(horizontal: false, vertical: true)
- }
- .padding(.top, 4)
- }
- .padding(.bottom, 12)
- }
-
private func createFirstProfileButton() -> some View {
ZStack {
Button {
createProfileNavLinkActive = true
} label: {
- Text("Create your profile")
+ Text("Get started")
}
.buttonStyle(OnboardingButtonStyle(isDisabled: false))
diff --git a/apps/ios/Shared/Views/Onboarding/YourNetwork.swift b/apps/ios/Shared/Views/Onboarding/YourNetwork.swift
new file mode 100644
index 0000000000..d3727e196e
--- /dev/null
+++ b/apps/ios/Shared/Views/Onboarding/YourNetwork.swift
@@ -0,0 +1,193 @@
+//
+// YourNetwork.swift
+// SimpleX (iOS)
+//
+// Created by Evgeny on 22/04/2026.
+// Copyright © 2026 SimpleX Chat. All rights reserved.
+//
+
+import SwiftUI
+import SimpleXChat
+
+private enum YourNetworkSheet: Identifiable {
+ case configureOperators
+ case configureNotifications
+
+ var id: String {
+ switch self {
+ case .configureOperators: return "configureOperators"
+ case .configureNotifications: return "configureNotifications"
+ }
+ }
+}
+
+struct YourNetworkView: View {
+ @EnvironmentObject var theme: AppTheme
+ @Environment(\.colorScheme) var colorScheme: ColorScheme
+ @State private var serverOperators: [ServerOperator] = []
+ @State private var selectedOperatorIds = Set()
+ @State private var notificationMode: NotificationsMode = .instant
+ @State private var sheetItem: YourNetworkSheet? = nil
+ @State private var nextStepNavLinkActive = false
+ @State private var justOpened = true
+
+ var body: some View {
+ GeometryReader { g in
+ VStack(alignment: .center, spacing: 10) {
+ Spacer(minLength: 0)
+
+ #if SIMPLEX_ASSETS
+ Image(colorScheme == .light ? "your-network" : "your-network-light")
+ .resizable()
+ .scaledToFit()
+ .frame(maxWidth: .infinity)
+ #else
+ ZStack {
+ let gp = OnboardingCardView.gradientPoints(aspectRatio: 1.0, scale: colorScheme == .light ? 1.2 : 1.5)
+ LinearGradient(
+ stops: colorScheme == .light ? OnboardingCardView.lightStops : OnboardingCardView.darkStops,
+ startPoint: gp.start,
+ endPoint: gp.end
+ )
+ Image(systemName: "network")
+ .font(.system(size: 72))
+ .foregroundColor(theme.colors.primary)
+ }
+ .aspectRatio(1.0, contentMode: .fit)
+ .clipShape(RoundedRectangle(cornerRadius: 24))
+ .padding(.horizontal, 25)
+ .frame(maxWidth: .infinity)
+ #endif
+
+ Text("Your network")
+ .font(.largeTitle)
+ .bold()
+ .multilineTextAlignment(.center)
+ .fixedSize(horizontal: false, vertical: true)
+ .padding(.top, 15)
+
+ Text("Network routers cannot know\nwho talks to whom")
+ .font(.title3)
+ .fontWeight(.medium)
+ .foregroundColor(theme.colors.secondary)
+ .multilineTextAlignment(.center)
+ .fixedSize(horizontal: false, vertical: true)
+
+ VStack(alignment: .leading, spacing: 20) {
+ configureRoutersButton()
+ configureNotificationsButton()
+ }
+ .padding(.top, 15)
+ .padding(.bottom, 15)
+
+ Spacer(minLength: 0)
+
+ continueButton()
+ .padding(.bottom, g.safeAreaInsets.bottom == 0 ? 20 : 0)
+ }
+ .padding(.horizontal, 25)
+ .padding(.top, 8)
+ .padding(.bottom, 20)
+ .frame(minHeight: g.size.height)
+ }
+ .onAppear {
+ if justOpened {
+ serverOperators = ChatModel.shared.conditions.serverOperators
+ selectedOperatorIds = Set(serverOperators.filter { $0.enabled }.map { $0.operatorId })
+ justOpened = false
+ }
+ }
+ .sheet(item: $sheetItem) { item in
+ switch item {
+ case .configureOperators:
+ ChooseServerOperators(serverOperators: serverOperators, selectedOperatorIds: $selectedOperatorIds)
+ .modifier(ThemedBackground())
+ case .configureNotifications:
+ SetNotificationsMode(notificationMode: $notificationMode)
+ .modifier(ThemedBackground())
+ }
+ }
+ .frame(maxHeight: .infinity)
+ .navigationBarHidden(true)
+ }
+
+ private func configureRoutersButton() -> some View {
+ Button {
+ sheetItem = .configureOperators
+ } label: {
+ HStack(spacing: 6) {
+ Text("Setup routers")
+ .fontWeight(.medium)
+ ForEach(serverOperators.reversed()) { op in
+ Image(op.logo(colorScheme))
+ .resizable()
+ .scaledToFit()
+ .frame(width: 22, height: 22)
+ .grayscale(selectedOperatorIds.contains(op.operatorId) ? 0.0 : 1.0)
+ }
+ }
+ }
+ }
+
+ private func configureNotificationsButton() -> some View {
+ Button {
+ sheetItem = .configureNotifications
+ } label: {
+ HStack(spacing: 4) {
+ Text("Setup notifications")
+ .fontWeight(.medium)
+ Image(systemName: notificationMode.icon)
+ }
+ }
+ }
+
+ private func continueButton() -> some View {
+ ZStack {
+ Button {
+ applyNotificationMode()
+ onboardingStageDefault.set(.step4_NetworkCommitments)
+ nextStepNavLinkActive = true
+ } label: {
+ Text("Continue")
+ }
+ .buttonStyle(OnboardingButtonStyle())
+
+ NavigationLink(isActive: $nextStepNavLinkActive) {
+ OnboardingConditionsView(selectedOperatorIds: selectedOperatorIds)
+ .navigationBarBackButtonHidden(true)
+ .modifier(ThemedBackground())
+ } label: {
+ EmptyView()
+ }
+ .frame(width: 1, height: 1)
+ .hidden()
+ }
+ }
+
+ private func applyNotificationMode() {
+ let m = ChatModel.shared
+ if let token = m.deviceToken {
+ switch notificationMode {
+ case .off:
+ m.tokenStatus = .new
+ m.notificationMode = .off
+ default:
+ Task {
+ do {
+ let status = try await apiRegisterToken(token: token, notificationMode: notificationMode)
+ await MainActor.run {
+ m.tokenStatus = status
+ m.notificationMode = notificationMode
+ }
+ } catch let error {
+ let a = getErrorAlert(error, "Error enabling notifications")
+ AlertManager.shared.showAlertMsg(
+ title: a.title,
+ message: a.message
+ )
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/NetworkAndServers.swift b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/NetworkAndServers.swift
index c1f2470669..f10b945dc0 100644
--- a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/NetworkAndServers.swift
+++ b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/NetworkAndServers.swift
@@ -351,21 +351,6 @@ private func regularConditionsHeader() -> some View {
}
}
-struct SimpleConditionsView: View {
-
- var body: some View {
- VStack(alignment: .leading, spacing: 20) {
- regularConditionsHeader()
- .padding(.top)
- .padding(.top)
- ConditionsTextView()
- .padding(.bottom)
- .padding(.bottom)
- }
- .padding(.horizontal, 25)
- .frame(maxHeight: .infinity)
- }
-}
func validateServers_(
_ userServers: Binding<[UserOperatorServers]>,
diff --git a/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff b/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff
index c8c564ada7..ce993ecb02 100644
--- a/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff
+++ b/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff
@@ -1117,11 +1117,6 @@ swipe action
Отговор на повикване
No comment provided by engineer.
-
- Anybody can host servers.
- Протокол и код с отворен код – всеки може да оперира собствени сървъри.
- No comment provided by engineer.
-
App build: %@
Компилация на приложението: %@
@@ -1326,6 +1321,19 @@ swipe action
Лош хеш на съобщението
No comment provided by engineer.
+
+ Be free
+in your network
+ No comment provided by engineer.
+
+
+ Be free in your network.
+ No comment provided by engineer.
+
+
+ Because we destroyed the power to know who you are. So that your power can never be taken.
+ No comment provided by engineer.
+
Better calls
По-добри обаждания
@@ -1509,15 +1517,6 @@ swipe action
Чрез чат профил (по подразбиране) или [чрез връзка](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (БЕТА).
No comment provided by engineer.
-
- By using SimpleX Chat you agree to:
-- send only legal content in public groups.
-- respect other users – no spam.
- С използването на SimpleX Chat вие се съгласявате със:
-- изпращане само на легално съдържание в публични групи.
-- уважение към другите потребители – без спам.
- No comment provided by engineer.
-
Call already ended!
Разговорът вече приключи!
@@ -2048,11 +2047,6 @@ chat toolbar
Configure relays
No comment provided by engineer.
-
- Configure server operators
- Конфигуриране на сървърни оператори
- No comment provided by engineer.
-
Confirm
Потвърди
@@ -2650,11 +2644,6 @@ This is your own one-time link!
Debug delivery
No comment provided by engineer.
-
- Decentralized
- Децентрализиран
- No comment provided by engineer.
-
Decode link
relay test step
@@ -3461,6 +3450,10 @@ chat item action
Въведете парола по-горе, за да се покаже!
No comment provided by engineer.
+
+ Enter profile name...
+ No comment provided by engineer.
+
Enter relay name…
No comment provided by engineer.
@@ -4297,6 +4290,10 @@ Error: %2$@
Get notified when mentioned.
No comment provided by engineer.
+
+ Get started
+ No comment provided by engineer.
+
Good afternoon!
message preview
@@ -4560,11 +4557,6 @@ Error: %2$@
Веднага
No comment provided by engineer.
-
- Immune to spam
- Защитен от спам и злоупотреби
- No comment provided by engineer.
-
Import
Импортиране
@@ -5402,16 +5394,15 @@ This is your link for group %@!
Съобщенията, файловете и разговорите са защитени чрез **квантово устойчиво e2e криптиране** с перфектна секретност при препращане, правдоподобно опровержение и възстановяване при взлом.
No comment provided by engineer.
+
+ Migrate
+ No comment provided by engineer.
+
Migrate device
Мигрирай устройството
No comment provided by engineer.
-
- Migrate from another device
- Мигриране от друго устройство
- No comment provided by engineer.
-
Migrate here
Мигрирай тук
@@ -5524,6 +5515,11 @@ This is your link for group %@!
Име
swipe action
+
+ Network
+commitments
+ No comment provided by engineer.
+
Network & servers
Мрежа и сървъри
@@ -5555,6 +5551,11 @@ This is your link for group %@!
Network operator
No comment provided by engineer.
+
+ Network routers cannot know
+who talks to whom
+ No comment provided by engineer.
+
Network settings
Мрежови настройки
@@ -5664,6 +5665,11 @@ This is your link for group %@!
Не
No comment provided by engineer.
+
+ No account. No phone. No email. No ID.
+The most secure encryption.
+ No comment provided by engineer.
+
No active relays
No comment provided by engineer.
@@ -5808,15 +5814,18 @@ This is your link for group %@!
No unread chats
No comment provided by engineer.
-
- No user identifiers.
- Първата платформа без никакви потребителски идентификатори – поверителна по дизайн.
+
+ Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life.
No comment provided by engineer.
Non-profit governance
No comment provided by engineer.
+
+ Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign.
+ No comment provided by engineer.
+
Not all relays connected
alert title
@@ -5891,6 +5900,10 @@ new chat action
Стара база данни
No comment provided by engineer.
+
+ On your phone, not on any server.
+ No comment provided by engineer.
+
One-time invitation link
Линк за еднократна покана
@@ -6117,6 +6130,13 @@ alert button
Operator server
alert title
+
+ Operators commit to:
+- Be independent
+- Minimize metadata usage
+- Run verified open-source code
+ No comment provided by engineer.
+
Or import archive file
No comment provided by engineer.
@@ -6420,17 +6440,12 @@ Error: %@
Privacy policy and conditions of use.
No comment provided by engineer.
-
- Privacy redefined
- Поверителността преосмислена
- No comment provided by engineer.
-
Privacy: for owners and subscribers.
No comment provided by engineer.
-
- Private chats, groups and your contacts are not accessible to server operators.
+
+ Private and secure messaging.
No comment provided by engineer.
@@ -7720,6 +7735,14 @@ chat item action
Settings were changed.
alert message
+
+ Setup notifications
+ No comment provided by engineer.
+
+
+ Setup routers
+ No comment provided by engineer.
+
Shape profile images
Променете формата на профилните изображения
@@ -8435,9 +8458,9 @@ It can happen because of some bug or when the connection is compromised.Криптирането работи и новото споразумение за криптиране не е необходимо. Това може да доведе до грешки при свързване!
No comment provided by engineer.
-
- The future of messaging
- Ново поколение поверителни съобщения
+
+ The first network where you own
+your contacts and groups.
No comment provided by engineer.
@@ -8472,6 +8495,10 @@ It can happen because of some bug or when the connection is compromised.Старата база данни не бе премахната по време на миграцията, тя може да бъде изтрита.
No comment provided by engineer.
+
+ The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it.
+ No comment provided by engineer.
+
The same conditions will apply to operator **%@**.
No comment provided by engineer.
@@ -8512,6 +8539,14 @@ It can happen because of some bug or when the connection is compromised.Themes
No comment provided by engineer.
+
+ Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible.
+ No comment provided by engineer.
+
+
+ There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected.
+ No comment provided by engineer.
+
These conditions will also apply for: **%@**.
No comment provided by engineer.
@@ -9335,6 +9370,10 @@ To connect, please ask your contact to create another connection link and check
Когато споделяте инкогнито профил с някого, този профил ще се използва за групите, в които той ви кани.
No comment provided by engineer.
+
+ Why SimpleX is built.
+ No comment provided by engineer.
+
WiFi
WiFi
@@ -9581,6 +9620,12 @@ Repeat join request?
Не може да изпращате съобщения!
alert title
+
+ You commit to:
+- Only legal content in public groups
+- Respect other users - no spam
+ No comment provided by engineer.
+
You connected to the channel via this relay link.
No comment provided by engineer.
@@ -9590,11 +9635,6 @@ Repeat join request?
Не можахте да бъдете потвърдени; Моля, опитайте отново.
No comment provided by engineer.
-
- You decide who can connect.
- Хората могат да се свържат с вас само чрез ликовете, които споделяте.
- No comment provided by engineer.
-
You have already requested connection!
Repeat connection request?
@@ -9658,6 +9698,10 @@ Repeat connection request?
You should receive notifications.
token info
+
+ You were born without an account
+ No comment provided by engineer.
+
You will be able to send messages **only after your request is accepted**.
No comment provided by engineer.
@@ -9789,6 +9833,10 @@ Repeat connection request?
Вашите контакти ще останат свързани.
No comment provided by engineer.
+
+ Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public.
+ No comment provided by engineer.
+
Your credentials may be sent unencrypted.
No comment provided by engineer.
@@ -9807,6 +9855,10 @@ Repeat connection request?
Your group
No comment provided by engineer.
+
+ Your network
+ No comment provided by engineer.
+
Your preferences
Вашите настройки
diff --git a/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff b/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff
index 1a0a53b884..2f2059edd3 100644
--- a/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff
+++ b/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff
@@ -1102,11 +1102,6 @@ swipe action
Přijmout hovor
No comment provided by engineer.
-
- Anybody can host servers.
- Servery může provozovat kdokoli.
- No comment provided by engineer.
-
App build: %@
Sestavení aplikace: %@
@@ -1301,6 +1296,21 @@ swipe action
Špatný hash zprávy
No comment provided by engineer.
+
+ Be free
+in your network
+ No comment provided by engineer.
+
+
+ Be free in your network.
+ Buďte svobodní ve své síti.
+ No comment provided by engineer.
+
+
+ Because we destroyed the power to know who you are. So that your power can never be taken.
+ Protože jsme zničili sílu vědět, kdo jste. Aby vám vaši moc nikdo nemohl vzít.
+ No comment provided by engineer.
+
Better calls
Lepší volání
@@ -1471,12 +1481,6 @@ swipe action
Podle profilu chatu (výchozí) nebo [podle připojení](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).
No comment provided by engineer.
-
- By using SimpleX Chat you agree to:
-- send only legal content in public groups.
-- respect other users – no spam.
- No comment provided by engineer.
-
Call already ended!
Hovor již skončil!
@@ -1974,10 +1978,6 @@ chat toolbar
Configure relays
No comment provided by engineer.
-
- Configure server operators
- No comment provided by engineer.
-
Confirm
Potvrdit
@@ -2540,11 +2540,6 @@ Toto je váš vlastní jednorázový odkaz!
Debug delivery
No comment provided by engineer.
-
- Decentralized
- Decentralizované
- No comment provided by engineer.
-
Decode link
relay test step
@@ -3330,6 +3325,10 @@ chat item action
Zadejte heslo do hledání!
No comment provided by engineer.
+
+ Enter profile name...
+ No comment provided by engineer.
+
Enter relay name…
No comment provided by engineer.
@@ -4145,6 +4144,10 @@ Error: %2$@
Get notified when mentioned.
No comment provided by engineer.
+
+ Get started
+ No comment provided by engineer.
+
Good afternoon!
message preview
@@ -4404,11 +4407,6 @@ Error: %2$@
Ihned
No comment provided by engineer.
-
- Immune to spam
- Odolná vůči spamu a zneužití
- No comment provided by engineer.
-
Import
Import
@@ -5218,12 +5216,12 @@ This is your link for group %@!
Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.
No comment provided by engineer.
-
- Migrate device
+
+ Migrate
No comment provided by engineer.
-
- Migrate from another device
+
+ Migrate device
No comment provided by engineer.
@@ -5332,6 +5330,11 @@ This is your link for group %@!
Jméno
swipe action
+
+ Network
+commitments
+ No comment provided by engineer.
+
Network & servers
Síť a servery
@@ -5361,6 +5364,11 @@ This is your link for group %@!
Network operator
No comment provided by engineer.
+
+ Network routers cannot know
+who talks to whom
+ No comment provided by engineer.
+
Network settings
Nastavení sítě
@@ -5469,6 +5477,11 @@ This is your link for group %@!
Ne
No comment provided by engineer.
+
+ No account. No phone. No email. No ID.
+The most secure encryption.
+ No comment provided by engineer.
+
No active relays
No comment provided by engineer.
@@ -5612,15 +5625,20 @@ This is your link for group %@!
No unread chats
No comment provided by engineer.
-
- No user identifiers.
- Bez uživatelských identifikátorů.
+
+ Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life.
+ Nikdo nesledoval vaše konverzace. Nikdo nevytvořil mapu, kde jste byli. Soukromí nikdy nebylo funkcí - byl to způsob života.
No comment provided by engineer.
Non-profit governance
No comment provided by engineer.
+
+ Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign.
+ Nejde o to mít lepší zámek na dveřích někoho jiného. Ani o to mít nájemce, který respektuje vaše soukromí, ale vede evidenci všech vašich návštěvníků. Nejste host. Jste doma. Ani král k vám nemůže vstoupit - jste suverén.
+ No comment provided by engineer.
+
Not all relays connected
alert title
@@ -5693,6 +5711,10 @@ new chat action
Stará databáze
No comment provided by engineer.
+
+ On your phone, not on any server.
+ No comment provided by engineer.
+
One-time invitation link
Jednorázový zvací odkaz
@@ -5916,6 +5938,13 @@ alert button
Operator server
alert title
+
+ Operators commit to:
+- Be independent
+- Minimize metadata usage
+- Run verified open-source code
+ No comment provided by engineer.
+
Or import archive file
No comment provided by engineer.
@@ -6207,17 +6236,12 @@ Error: %@
Privacy policy and conditions of use.
No comment provided by engineer.
-
- Privacy redefined
- Nové vymezení soukromí
- No comment provided by engineer.
-
Privacy: for owners and subscribers.
No comment provided by engineer.
-
- Private chats, groups and your contacts are not accessible to server operators.
+
+ Private and secure messaging.
No comment provided by engineer.
@@ -7486,6 +7510,14 @@ chat item action
Settings were changed.
alert message
+
+ Setup notifications
+ No comment provided by engineer.
+
+
+ Setup routers
+ No comment provided by engineer.
+
Shape profile images
No comment provided by engineer.
@@ -8187,9 +8219,9 @@ Může se to stát kvůli nějaké chybě, nebo pokud je spojení kompromitován
Šifrování funguje a nové povolení šifrování není vyžadováno. To může vyvolat chybu v připojení!
No comment provided by engineer.
-
- The future of messaging
- Nová generace soukromých zpráv
+
+ The first network where you own
+your contacts and groups.
No comment provided by engineer.
@@ -8224,6 +8256,11 @@ Může se to stát kvůli nějaké chybě, nebo pokud je spojení kompromitován
Stará databáze nebyla během přenášení odstraněna, lze ji smazat.
No comment provided by engineer.
+
+ The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it.
+ Nejstarší lidská svoboda - mluvit s druhým člověkem, aniž by byl sledován - postavena na infrastruktuře, která ji nemůže zradit.
+ No comment provided by engineer.
+
The same conditions will apply to operator **%@**.
No comment provided by engineer.
@@ -8263,6 +8300,16 @@ Může se to stát kvůli nějaké chybě, nebo pokud je spojení kompromitován
Themes
No comment provided by engineer.
+
+ Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible.
+ Pak jsme se přesunuli na internet a každá platforma chtěla o vás něco vědět - vaše jméno, vaše číslo, vaše přátele. Smířili jsme se s tím, že cenou za komunikaci s ostatními je dát někomu vědět, s kým mluvíme. Každá generace, lidská i technická, to tak měla - telefon, e-mail, komunikátory, sociální sítě. Zdálo se, že je to jediný možný způsob.
+ No comment provided by engineer.
+
+
+ There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected.
+ Existuje i jiný způsob. Síť bez telefonních čísel. Bez uživatelských jmen. Bez účtů. Bez jakékoli uživatelské identity. Síť, která spojuje lidi a přenáší šifrované zprávy, aniž by bylo známo, kdo je připojen.
+ No comment provided by engineer.
+
These conditions will also apply for: **%@**.
No comment provided by engineer.
@@ -9055,6 +9102,10 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu
Pokud s někým sdílíte inkognito profil, bude tento profil použit pro skupiny, do kterých vás pozve.
No comment provided by engineer.
+
+ Why SimpleX is built.
+ No comment provided by engineer.
+
WiFi
No comment provided by engineer.
@@ -9285,6 +9336,12 @@ Repeat join request?
Nemůžete posílat zprávy!
alert title
+
+ You commit to:
+- Only legal content in public groups
+- Respect other users - no spam
+ No comment provided by engineer.
+
You connected to the channel via this relay link.
No comment provided by engineer.
@@ -9294,11 +9351,6 @@ Repeat join request?
Nemohli jste být ověřeni; Zkuste to prosím znovu.
No comment provided by engineer.
-
- You decide who can connect.
- Lidé se s vámi mohou spojit pouze prostřednictvím odkazu, který sdílíte.
- No comment provided by engineer.
-
You have already requested connection!
Repeat connection request?
@@ -9360,6 +9412,11 @@ Repeat connection request?
You should receive notifications.
token info
+
+ You were born without an account
+ Narodili jste se bez účtu.
+ No comment provided by engineer.
+
You will be able to send messages **only after your request is accepted**.
No comment provided by engineer.
@@ -9490,6 +9547,11 @@ Repeat connection request?
Vaše kontakty zůstanou připojeny.
No comment provided by engineer.
+
+ Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public.
+ Vaše konverzace patří vám, jako tomu bylo vždy před internetem. Síť není místo, které navštěvujete. Je to místo, které vytváříte a vlastníte. A nikdo vám ho nemůže vzít, ať už je soukromé, nebo veřejné.
+ No comment provided by engineer.
+
Your credentials may be sent unencrypted.
No comment provided by engineer.
@@ -9508,6 +9570,10 @@ Repeat connection request?
Your group
No comment provided by engineer.
+
+ Your network
+ No comment provided by engineer.
+
Your preferences
Vaše preference
diff --git a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff
index 6a603c8254..8755323ace 100644
--- a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff
+++ b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff
@@ -1127,11 +1127,6 @@ swipe action
Anruf annehmen
No comment provided by engineer.
-
- Anybody can host servers.
- Jeder kann seine eigenen Server aufsetzen.
- No comment provided by engineer.
-
App build: %@
App Build: %@
@@ -1337,6 +1332,21 @@ swipe action
Ungültiger Nachrichten-Hash
No comment provided by engineer.
+
+ Be free
+in your network
+ No comment provided by engineer.
+
+
+ Be free in your network.
+ Genießen Sie die Freiheit in Ihrem Netzwerk.
+ No comment provided by engineer.
+
+
+ Because we destroyed the power to know who you are. So that your power can never be taken.
+ Weil wir die Macht zerstört haben, zu wissen, wer Sie sind. Damit Ihnen Ihre Macht niemals genommen werden kann.
+ No comment provided by engineer.
+
Better calls
Verbesserte Anrufe
@@ -1522,15 +1532,6 @@ swipe action
Per Chat-Profil (Voreinstellung) oder [per Verbindung](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).
No comment provided by engineer.
-
- By using SimpleX Chat you agree to:
-- send only legal content in public groups.
-- respect other users – no spam.
- Durch die Nutzung von SimpleX Chat erklären Sie sich damit einverstanden:
-- nur legale Inhalte in öffentlichen Gruppen zu versenden.
-- andere Nutzer zu respektieren - kein Spam.
- No comment provided by engineer.
-
Call already ended!
Anruf ist bereits beendet!
@@ -2079,11 +2080,6 @@ chat toolbar
Relais konfigurieren
No comment provided by engineer.
-
- Configure server operators
- Server-Betreiber konfigurieren
- No comment provided by engineer.
-
Confirm
Bestätigen
@@ -2705,11 +2701,6 @@ Das ist Ihr eigener Einmal-Link!
Debugging-Zustellung
No comment provided by engineer.
-
- Decentralized
- Dezentral
- No comment provided by engineer.
-
Decode link
Link dekodieren
@@ -3569,6 +3560,10 @@ chat item action
Für die Anzeige das Passwort im Suchfeld eingeben!
No comment provided by engineer.
+
+ Enter profile name...
+ No comment provided by engineer.
+
Enter relay name…
Relais-Name eingeben…
@@ -4480,6 +4475,10 @@ Fehler: %2$@
Bei Erwähnung benachrichtigt werden.
No comment provided by engineer.
+
+ Get started
+ No comment provided by engineer.
+
Good afternoon!
Guten Nachmittag!
@@ -4755,11 +4754,6 @@ Fehler: %2$@
Sofort
No comment provided by engineer.
-
- Immune to spam
- Immun gegen Spam und Missbrauch
- No comment provided by engineer.
-
Import
Importieren
@@ -5656,16 +5650,15 @@ Das ist Ihr Link für die Gruppe %@!
Nachrichten, Dateien und Anrufe sind durch **Quantum-resistente E2E-Verschlüsselung** mit Perfect Forward Secrecy, Abstreitbarkeit und Wiederherstellung nach einer Kompromittierung geschützt.
No comment provided by engineer.
+
+ Migrate
+ No comment provided by engineer.
+
Migrate device
Gerät migrieren
No comment provided by engineer.
-
- Migrate from another device
- Von einem anderen Gerät migrieren
- No comment provided by engineer.
-
Migrate here
Hierher migrieren
@@ -5781,6 +5774,11 @@ Das ist Ihr Link für die Gruppe %@!
Name
swipe action
+
+ Network
+commitments
+ No comment provided by engineer.
+
Network & servers
Netzwerk & Server
@@ -5815,6 +5813,11 @@ Das ist Ihr Link für die Gruppe %@!
Netzwerk-Betreiber
No comment provided by engineer.
+
+ Network routers cannot know
+who talks to whom
+ No comment provided by engineer.
+
Network settings
Netzwerkeinstellungen
@@ -5934,6 +5937,11 @@ Das ist Ihr Link für die Gruppe %@!
Nein
No comment provided by engineer.
+
+ No account. No phone. No email. No ID.
+The most secure encryption.
+ No comment provided by engineer.
+
No active relays
No comment provided by engineer.
@@ -6098,15 +6106,20 @@ Das ist Ihr Link für die Gruppe %@!
Keine ungelesenen Chats
No comment provided by engineer.
-
- No user identifiers.
- Keine Benutzerkennungen.
+
+ Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life.
+ Niemand verfolgte Ihre Gespräche. Niemand erstellte eine Karte, wo Sie sich aufgehalten haben. Privatsphäre war nie ein Feature - sie war selbstverständlich.
No comment provided by engineer.
Non-profit governance
No comment provided by engineer.
+
+ Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign.
+ Nicht ein besseres Schloss an der Tür eines Anderen. Kein freundlicher Vermieter, der Ihre Privatsphäre respektiert, aber dennoch jeden Besucher registriert. Sie sind kein Gast. Sie sind zu Hause. Kein Vermieter, kein Fremder kann es betreten - Sie sind souverän.
+ No comment provided by engineer.
+
Not all relays connected
Es sind nicht alle Relais verbunden
@@ -6188,6 +6201,10 @@ new chat action
Alte Datenbank
No comment provided by engineer.
+
+ On your phone, not on any server.
+ No comment provided by engineer.
+
One-time invitation link
Einmal-Einladungslink
@@ -6435,6 +6452,13 @@ alert button
Betreiber-Server
alert title
+
+ Operators commit to:
+- Be independent
+- Minimize metadata usage
+- Run verified open-source code
+ No comment provided by engineer.
+
Or import archive file
Oder importieren Sie eine Archiv-Datei
@@ -6762,18 +6786,12 @@ Fehler: %@
Datenschutz- und Nutzungsbedingungen.
No comment provided by engineer.
-
- Privacy redefined
- Datenschutz neu definiert
- No comment provided by engineer.
-
Privacy: for owners and subscribers.
No comment provided by engineer.
-
- Private chats, groups and your contacts are not accessible to server operators.
- Private Chats, Gruppen und Ihre Kontakte sind für Server-Betreiber nicht zugänglich.
+
+ Private and secure messaging.
No comment provided by engineer.
@@ -8186,6 +8204,14 @@ chat item action
Die Einstellungen wurden geändert.
alert message
+
+ Setup notifications
+ No comment provided by engineer.
+
+
+ Setup routers
+ No comment provided by engineer.
+
Shape profile images
Form der Profil-Bilder
@@ -8972,9 +8998,9 @@ Dies kann passieren, wenn es einen Fehler gegeben hat oder die Verbindung kompro
Die Verschlüsselung funktioniert und ein neues Verschlüsselungsabkommen ist nicht erforderlich. Es kann zu Verbindungsfehlern kommen!
No comment provided by engineer.
-
- The future of messaging
- Die nächste Generation von privatem Messaging
+
+ The first network where you own
+your contacts and groups.
No comment provided by engineer.
@@ -9012,6 +9038,11 @@ Dies kann passieren, wenn es einen Fehler gegeben hat oder die Verbindung kompro
Die alte Datenbank wurde während der Migration nicht entfernt. Sie kann gelöscht werden.
No comment provided by engineer.
+
+ The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it.
+ Die älteste Freiheit des Menschen - mit einem anderen Menschen sprechen zu können, ohne beobachtet zu werden - gestützt auf einer Infrastruktur, die Sie nicht verraten kann.
+ No comment provided by engineer.
+
The same conditions will apply to operator **%@**.
Dieselben Nutzungsbedingungen gelten auch für den Betreiber **%@**.
@@ -9057,6 +9088,16 @@ Dies kann passieren, wenn es einen Fehler gegeben hat oder die Verbindung kompro
Design
No comment provided by engineer.
+
+ Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible.
+ Dann sind wir online gegangen, und jede Plattform wollte Etwas von Ihnen - Ihren Namen, Ihre Nummer, Ihre Freunde. Wir akzeptierten, dass es der Preis mit Anderen zu kommunizieren ist, Jemandem preiszugeben, mit wem und wie wir miteinander kommunizieren. Jede Generation, Menschen und Technologien, kannten es nur so - Telefon, E-Mail, Messenger, soziale Medien. Es schien der einzig mögliche Weg zu sein.
+ No comment provided by engineer.
+
+
+ There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected.
+ Es gibt einen anderen Weg. Ein Netzwerk ohne Telefonnummern, ohne Benutzernamen, ohne Benutzerkennungen und ohne jegliche Benutzeridentität. Ein Netzwerk, welches Menschen verbindet und verschlüsselte Nachrichten überträgt, ohne zu wissen, wer mit wem verbunden ist.
+ No comment provided by engineer.
+
These conditions will also apply for: **%@**.
Diese Nutzungsbedingungen gelten auch für: **%@**.
@@ -9947,6 +9988,10 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s
Wenn Sie ein Inkognito-Profil mit Jemandem teilen, wird dieses Profil auch für die Gruppen verwendet, für die Sie von diesem Kontakt eingeladen werden.
No comment provided by engineer.
+
+ Why SimpleX is built.
+ No comment provided by engineer.
+
WiFi
WiFi
@@ -10209,6 +10254,12 @@ Verbindungsanfrage wiederholen?
Sie können keine Nachrichten versenden!
alert title
+
+ You commit to:
+- Only legal content in public groups
+- Respect other users - no spam
+ No comment provided by engineer.
+
You connected to the channel via this relay link.
Sie haben sich über diesen Relais‑Link mit dem Kanal verbunden.
@@ -10219,11 +10270,6 @@ Verbindungsanfrage wiederholen?
Sie konnten nicht überprüft werden; bitte versuchen Sie es erneut.
No comment provided by engineer.
-
- You decide who can connect.
- Sie entscheiden, wer sich mit Ihnen verbinden kann.
- No comment provided by engineer.
-
You have already requested connection!
Repeat connection request?
@@ -10291,6 +10337,11 @@ Verbindungsanfrage wiederholen?
Sie sollten Benachrichtigungen erhalten.
token info
+
+ You were born without an account
+ Sie wurden ohne eine Benutzerkennung geboren.
+ No comment provided by engineer.
+
You will be able to send messages **only after your request is accepted**.
Sie können erst dann Nachrichten versenden, **sobald Ihre Anfrage angenommen wurde**.
@@ -10431,6 +10482,11 @@ Verbindungsanfrage wiederholen?
Ihre Kontakte bleiben weiterhin verbunden.
No comment provided by engineer.
+
+ Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public.
+ Ihre Kommunikation gehört Ihnen, so wie es immer war, bevor es das Internet gab. Das Netzwerk ist kein Ort, den Sie besuchen. Es ist ein Ort, den Sie erschaffen und besitzen und Niemand kann es Ihnen nehmen, egal ob Sie es privat oder öffentlich machen.
+ No comment provided by engineer.
+
Your credentials may be sent unencrypted.
Ihre Anmeldeinformationen können unverschlüsselt versendet werden.
@@ -10451,6 +10507,10 @@ Verbindungsanfrage wiederholen?
Ihre Gruppe
No comment provided by engineer.
+
+ Your network
+ No comment provided by engineer.
+
Your preferences
Ihre Präferenzen
diff --git a/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff b/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff
index 9ebdad1759..d7941b7981 100644
--- a/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff
+++ b/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff
@@ -1146,11 +1146,6 @@ swipe action
Answer call
No comment provided by engineer.
-
- Anybody can host servers.
- Anybody can host servers.
- No comment provided by engineer.
-
App build: %@
App build: %@
@@ -1356,6 +1351,23 @@ swipe action
Bad message hash
No comment provided by engineer.
+
+ Be free
+in your network
+ Be free
+in your network
+ No comment provided by engineer.
+
+
+ Be free in your network.
+ Be free in your network.
+ No comment provided by engineer.
+
+
+ Because we destroyed the power to know who you are. So that your power can never be taken.
+ Because we destroyed the power to know who you are. So that your power can never be taken.
+ No comment provided by engineer.
+
Better calls
Better calls
@@ -1541,15 +1553,6 @@ swipe action
By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).
No comment provided by engineer.
-
- By using SimpleX Chat you agree to:
-- send only legal content in public groups.
-- respect other users – no spam.
- By using SimpleX Chat you agree to:
-- send only legal content in public groups.
-- respect other users – no spam.
- No comment provided by engineer.
-
Call already ended!
Call already ended!
@@ -2105,11 +2108,6 @@ chat toolbar
Configure relays
No comment provided by engineer.
-
- Configure server operators
- Configure server operators
- No comment provided by engineer.
-
Confirm
Confirm
@@ -2735,11 +2733,6 @@ This is your own one-time link!
Debug delivery
No comment provided by engineer.
-
- Decentralized
- Decentralized
- No comment provided by engineer.
-
Decode link
Decode link
@@ -3603,6 +3596,11 @@ chat item action
Enter password above to show!
No comment provided by engineer.
+
+ Enter profile name...
+ Enter profile name...
+ No comment provided by engineer.
+
Enter relay name…
Enter relay name…
@@ -4516,6 +4514,11 @@ Error: %2$@
Get notified when mentioned.
No comment provided by engineer.
+
+ Get started
+ Get started
+ No comment provided by engineer.
+
Good afternoon!
Good afternoon!
@@ -4791,11 +4794,6 @@ Error: %2$@
Immediately
No comment provided by engineer.
-
- Immune to spam
- Immune to spam
- No comment provided by engineer.
-
Import
Import
@@ -5698,16 +5696,16 @@ This is your link for group %@!
Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.
No comment provided by engineer.
+
+ Migrate
+ Migrate
+ No comment provided by engineer.
+
Migrate device
Migrate device
No comment provided by engineer.
-
- Migrate from another device
- Migrate from another device
- No comment provided by engineer.
-
Migrate here
Migrate here
@@ -5823,6 +5821,13 @@ This is your link for group %@!
Name
swipe action
+
+ Network
+commitments
+ Network
+commitments
+ No comment provided by engineer.
+
Network & servers
Network & servers
@@ -5858,6 +5863,13 @@ This is your link for group %@!
Network operator
No comment provided by engineer.
+
+ Network routers cannot know
+who talks to whom
+ Network routers cannot know
+who talks to whom
+ No comment provided by engineer.
+
Network settings
Network settings
@@ -5978,6 +5990,13 @@ This is your link for group %@!
No
No comment provided by engineer.
+
+ No account. No phone. No email. No ID.
+The most secure encryption.
+ No account. No phone. No email. No ID.
+The most secure encryption.
+ No comment provided by engineer.
+
No active relays
No active relays
@@ -6143,9 +6162,9 @@ This is your link for group %@!
No unread chats
No comment provided by engineer.
-
- No user identifiers.
- No user identifiers.
+
+ Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life.
+ Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life.
No comment provided by engineer.
@@ -6153,6 +6172,11 @@ This is your link for group %@!
Non-profit governance
No comment provided by engineer.
+
+ Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign.
+ Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign.
+ No comment provided by engineer.
+
Not all relays connected
Not all relays connected
@@ -6234,6 +6258,11 @@ new chat action
Old database
No comment provided by engineer.
+
+ On your phone, not on any server.
+ On your phone, not on any server.
+ No comment provided by engineer.
+
One-time invitation link
One-time invitation link
@@ -6484,6 +6513,17 @@ alert button
Operator server
alert title
+
+ Operators commit to:
+- Be independent
+- Minimize metadata usage
+- Run verified open-source code
+ Operators commit to:
+- Be independent
+- Minimize metadata usage
+- Run verified open-source code
+ No comment provided by engineer.
+
Or import archive file
Or import archive file
@@ -6815,19 +6855,14 @@ Error: %@
Privacy policy and conditions of use.
No comment provided by engineer.
-
- Privacy redefined
- Privacy redefined
- No comment provided by engineer.
-
Privacy: for owners and subscribers.
Privacy: for owners and subscribers.
No comment provided by engineer.
-
- Private chats, groups and your contacts are not accessible to server operators.
- Private chats, groups and your contacts are not accessible to server operators.
+
+ Private and secure messaging.
+ Private and secure messaging.
No comment provided by engineer.
@@ -8250,6 +8285,16 @@ chat item action
Settings were changed.
alert message
+
+ Setup notifications
+ Setup notifications
+ No comment provided by engineer.
+
+
+ Setup routers
+ Setup routers
+ No comment provided by engineer.
+
Shape profile images
Shape profile images
@@ -9044,9 +9089,11 @@ It can happen because of some bug or when the connection is compromised.The encryption is working and the new encryption agreement is not required. It may result in connection errors!
No comment provided by engineer.
-
- The future of messaging
- The future of messaging
+
+ The first network where you own
+your contacts and groups.
+ The first network where you own
+your contacts and groups.
No comment provided by engineer.
@@ -9084,6 +9131,11 @@ It can happen because of some bug or when the connection is compromised.The old database was not removed during the migration, it can be deleted.
No comment provided by engineer.
+
+ The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it.
+ The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it.
+ No comment provided by engineer.
+
The same conditions will apply to operator **%@**.
The same conditions will apply to operator **%@**.
@@ -9129,6 +9181,16 @@ It can happen because of some bug or when the connection is compromised.Themes
No comment provided by engineer.
+
+ Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible.
+ Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible.
+ No comment provided by engineer.
+
+
+ There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected.
+ There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected.
+ No comment provided by engineer.
+
These conditions will also apply for: **%@**.
These conditions will also apply for: **%@**.
@@ -10023,6 +10085,11 @@ To connect, please ask your contact to create another connection link and check
When you share an incognito profile with somebody, this profile will be used for the groups they invite you to.
No comment provided by engineer.
+
+ Why SimpleX is built.
+ Why SimpleX is built.
+ No comment provided by engineer.
+
WiFi
WiFi
@@ -10285,6 +10352,15 @@ Repeat join request?
You can't send messages!
alert title
+
+ You commit to:
+- Only legal content in public groups
+- Respect other users - no spam
+ You commit to:
+- Only legal content in public groups
+- Respect other users - no spam
+ No comment provided by engineer.
+
You connected to the channel via this relay link.
You connected to the channel via this relay link.
@@ -10295,11 +10371,6 @@ Repeat join request?
You could not be verified; please try again.
No comment provided by engineer.
-
- You decide who can connect.
- You decide who can connect.
- No comment provided by engineer.
-
You have already requested connection!
Repeat connection request?
@@ -10367,6 +10438,11 @@ Repeat connection request?
You should receive notifications.
token info
+
+ You were born without an account
+ You were born without an account
+ No comment provided by engineer.
+
You will be able to send messages **only after your request is accepted**.
You will be able to send messages **only after your request is accepted**.
@@ -10507,6 +10583,11 @@ Repeat connection request?
Your contacts will remain connected.
No comment provided by engineer.
+
+ Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public.
+ Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public.
+ No comment provided by engineer.
+
Your credentials may be sent unencrypted.
Your credentials may be sent unencrypted.
@@ -10527,6 +10608,11 @@ Repeat connection request?
Your group
No comment provided by engineer.
+
+ Your network
+ Your network
+ No comment provided by engineer.
+
Your preferences
Your preferences
diff --git a/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff b/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff
index 07004c5432..acd97f2947 100644
--- a/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff
+++ b/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff
@@ -1127,11 +1127,6 @@ swipe action
Responder llamada
No comment provided by engineer.
-
- Anybody can host servers.
- Cualquiera puede alojar servidores.
- No comment provided by engineer.
-
App build: %@
Compilación app: %@
@@ -1337,6 +1332,21 @@ swipe action
Hash de mensaje incorrecto
No comment provided by engineer.
+
+ Be free
+in your network
+ No comment provided by engineer.
+
+
+ Be free in your network.
+ Se libre en tu red.
+ No comment provided by engineer.
+
+
+ Because we destroyed the power to know who you are. So that your power can never be taken.
+ Porque hemos destruido el poder de saber quien eres. De manera que tu poder nunca se pueda arrebatar.
+ No comment provided by engineer.
+
Better calls
Llamadas mejoradas
@@ -1522,15 +1532,6 @@ swipe action
Mediante perfil (predeterminado) o [por conexión](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).
No comment provided by engineer.
-
- By using SimpleX Chat you agree to:
-- send only legal content in public groups.
-- respect other users – no spam.
- Al usar SimpleX Chat, aceptas:
-- enviar únicamente contenido legal en los grupos públicos.
-- respetar a los demás usuarios – spam prohibido.
- No comment provided by engineer.
-
Call already ended!
¡La llamada ha terminado!
@@ -2079,11 +2080,6 @@ chat toolbar
Configurar servidores
No comment provided by engineer.
-
- Configure server operators
- Configurar operadores de servidores
- No comment provided by engineer.
-
Confirm
Confirmar
@@ -2705,11 +2701,6 @@ This is your own one-time link!
Informe debug
No comment provided by engineer.
-
- Decentralized
- Descentralizada
- No comment provided by engineer.
-
Decode link
Decodificar enlace
@@ -3569,6 +3560,10 @@ chat item action
¡Introduce la contraseña arriba para mostrar!
No comment provided by engineer.
+
+ Enter profile name...
+ No comment provided by engineer.
+
Enter relay name…
Introduce el nombre del servidor…
@@ -4480,6 +4475,10 @@ Error: %2$@
Las menciones ahora se notifican.
No comment provided by engineer.
+
+ Get started
+ No comment provided by engineer.
+
Good afternoon!
¡Buenas tardes!
@@ -4755,11 +4754,6 @@ Error: %2$@
Inmediatamente
No comment provided by engineer.
-
- Immune to spam
- Inmune a spam y abuso
- No comment provided by engineer.
-
Import
Importar
@@ -5656,16 +5650,15 @@ This is your link for group %@!
Los mensajes, archivos y llamadas están protegidos mediante **cifrado de extremo a extremo resistente a tecnología cuántica** con secreto perfecto hacía adelante, repudio y recuperación tras ataque.
No comment provided by engineer.
+
+ Migrate
+ No comment provided by engineer.
+
Migrate device
Migrar dispositivo
No comment provided by engineer.
-
- Migrate from another device
- Migrar desde otro dispositivo
- No comment provided by engineer.
-
Migrate here
Migrar aquí
@@ -5781,6 +5774,11 @@ This is your link for group %@!
Nombre
swipe action
+
+ Network
+commitments
+ No comment provided by engineer.
+
Network & servers
Servidores y Redes
@@ -5815,6 +5813,11 @@ This is your link for group %@!
Operador de red
No comment provided by engineer.
+
+ Network routers cannot know
+who talks to whom
+ No comment provided by engineer.
+
Network settings
Configuración de red
@@ -5934,6 +5937,11 @@ This is your link for group %@!
No
No comment provided by engineer.
+
+ No account. No phone. No email. No ID.
+The most secure encryption.
+ No comment provided by engineer.
+
No active relays
No comment provided by engineer.
@@ -6098,15 +6106,20 @@ This is your link for group %@!
Ningún chat sin leer
No comment provided by engineer.
-
- No user identifiers.
- Sin identificadores de usuario.
+
+ Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life.
+ Nadie monitorizaba tus conversaciones. Nadie registraba tus ubicaciones. La privacidad nunca fue un lujo, era la manera de vivir.
No comment provided by engineer.
Non-profit governance
No comment provided by engineer.
+
+ Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign.
+ No un candado mejorado en la puerta de otro. No un terrateniente que respeta tu privacidad pero sigue guardando un registro de tus visitantes. Tu no eres el invitado. Estás en tu casa y ningún rey podrá entrar. Tu eres el soberano.
+ No comment provided by engineer.
+
Not all relays connected
Hay servidores no conectados
@@ -6188,6 +6201,10 @@ new chat action
Base de datos antigua
No comment provided by engineer.
+
+ On your phone, not on any server.
+ No comment provided by engineer.
+
One-time invitation link
Enlace de invitación de un solo uso
@@ -6435,6 +6452,13 @@ alert button
Servidor del operador
alert title
+
+ Operators commit to:
+- Be independent
+- Minimize metadata usage
+- Run verified open-source code
+ No comment provided by engineer.
+
Or import archive file
O importa desde un archivo
@@ -6762,18 +6786,12 @@ Error: %@
Política de privacidad y condiciones de uso.
No comment provided by engineer.
-
- Privacy redefined
- Privacidad redefinida
- No comment provided by engineer.
-
Privacy: for owners and subscribers.
No comment provided by engineer.
-
- Private chats, groups and your contacts are not accessible to server operators.
- Los chats privados, los grupos y tus contactos no son accesibles para los operadores de servidores.
+
+ Private and secure messaging.
No comment provided by engineer.
@@ -8186,6 +8204,14 @@ chat item action
La configuración ha sido modificada.
alert message
+
+ Setup notifications
+ No comment provided by engineer.
+
+
+ Setup routers
+ No comment provided by engineer.
+
Shape profile images
Dar forma a las imágenes de perfil
@@ -8972,9 +8998,9 @@ Puede ocurrir por algún bug o cuando la conexión está comprometida.
El cifrado funciona y un cifrado nuevo no es necesario. ¡Podría dar lugar a errores de conexión!
No comment provided by engineer.
-
- The future of messaging
- La nueva generación de mensajería privada
+
+ The first network where you own
+your contacts and groups.
No comment provided by engineer.
@@ -9012,6 +9038,11 @@ Puede ocurrir por algún bug o cuando la conexión está comprometida.
La base de datos antigua no se eliminó durante la migración, puede eliminarse.
No comment provided by engineer.
+
+ The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it.
+ La libertad más antigua del ser humano, la de hablar con otra persona sin ser observado, materializada sobre una infraestructura que no puede traicionarla.
+ No comment provided by engineer.
+
The same conditions will apply to operator **%@**.
Las mismas condiciones se aplicarán al operador **%@**.
@@ -9057,6 +9088,16 @@ Puede ocurrir por algún bug o cuando la conexión está comprometida.
Temas
No comment provided by engineer.
+
+ Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible.
+ Después pasamos a internet y cada plataforma pedía una parte de tí: tu nombre, tu número, tus amistades. Aceptamos que el precio de hablar con los demás es informar a alguien de quién es interlocutor. Cada generación, personas y tecnología, ha funcionado así: teléfono, email, mensajería, redes sociales. Parecía el único camino.
+ No comment provided by engineer.
+
+
+ There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected.
+ Existe otro camino. Una red sin números de teléfono. Sin nombres de usuario. Sin cuentas. Sin identificadores de ningún tipo. Una red que conecta las personas y entrega mensajes cifrados sin saber quien está conectado.
+ No comment provided by engineer.
+
These conditions will also apply for: **%@**.
Estas condiciones también se aplican para: **%@**.
@@ -9947,6 +9988,10 @@ Para conectarte pide a tu contacto que cree otro enlace y comprueba la conexión
Cuando compartes un perfil incógnito con alguien, este perfil también se usará para los grupos a los que te inviten.
No comment provided by engineer.
+
+ Why SimpleX is built.
+ No comment provided by engineer.
+
WiFi
WiFi
@@ -10209,6 +10254,12 @@ Repeat join request?
¡No puedes enviar mensajes!
alert title
+
+ You commit to:
+- Only legal content in public groups
+- Respect other users - no spam
+ No comment provided by engineer.
+
You connected to the channel via this relay link.
Te conectaste al canal mediante este enlace de servidor.
@@ -10219,11 +10270,6 @@ Repeat join request?
No has podido ser autenticado. Inténtalo de nuevo.
No comment provided by engineer.
-
- You decide who can connect.
- Tu decides quién se conecta.
- No comment provided by engineer.
-
You have already requested connection!
Repeat connection request?
@@ -10291,6 +10337,11 @@ Repeat connection request?
Deberías recibir notificaciones.
token info
+
+ You were born without an account
+ Naciste sin una cuenta.
+ No comment provided by engineer.
+
You will be able to send messages **only after your request is accepted**.
Podrás enviar mensajes **después de que tu solicitud sea aceptada**.
@@ -10431,6 +10482,11 @@ Repeat connection request?
Tus contactos permanecerán conectados.
No comment provided by engineer.
+
+ Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public.
+ Tus conversaciones te pertenecen, tal como ha sido siempre antes de la llegada de internet. Tu red no es un lugar que visitas. Es un lugar que has creado, te pertenece y nadie te la podrá quitar, ya sea pública o privada.
+ No comment provided by engineer.
+
Your credentials may be sent unencrypted.
Tus credenciales podrían ser enviadas sin cifrar.
@@ -10451,6 +10507,10 @@ Repeat connection request?
Mi grupo
No comment provided by engineer.
+
+ Your network
+ No comment provided by engineer.
+
Your preferences
Mis preferencias
diff --git a/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff b/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff
index 93e0c2e3a7..89c71ec5ca 100644
--- a/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff
+++ b/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff
@@ -1033,11 +1033,6 @@ swipe action
Vastaa puheluun
No comment provided by engineer.
-
- Anybody can host servers.
- Avoimen lähdekoodin protokolla ja koodi - kuka tahansa voi käyttää palvelimia.
- No comment provided by engineer.
-
App build: %@
Sovellusversio: %@
@@ -1224,6 +1219,19 @@ swipe action
Virheellinen viestin tarkiste
No comment provided by engineer.
+
+ Be free
+in your network
+ No comment provided by engineer.
+
+
+ Be free in your network.
+ No comment provided by engineer.
+
+
+ Because we destroyed the power to know who you are. So that your power can never be taken.
+ No comment provided by engineer.
+
Better calls
No comment provided by engineer.
@@ -1379,12 +1387,6 @@ swipe action
Chat-profiilin mukaan (oletus) tai [yhteyden mukaan](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).
No comment provided by engineer.
-
- By using SimpleX Chat you agree to:
-- send only legal content in public groups.
-- respect other users – no spam.
- No comment provided by engineer.
-
Call already ended!
Puhelu on jo päättynyt!
@@ -1867,10 +1869,6 @@ chat toolbar
Configure relays
No comment provided by engineer.
-
- Configure server operators
- No comment provided by engineer.
-
Confirm
Vahvista
@@ -2429,11 +2427,6 @@ This is your own one-time link!
Debug delivery
No comment provided by engineer.
-
- Decentralized
- Hajautettu
- No comment provided by engineer.
-
Decode link
relay test step
@@ -3218,6 +3211,10 @@ chat item action
Kirjoita yllä oleva salasana näyttääksesi!
No comment provided by engineer.
+
+ Enter profile name...
+ No comment provided by engineer.
+
Enter relay name…
No comment provided by engineer.
@@ -4031,6 +4028,10 @@ Error: %2$@
Get notified when mentioned.
No comment provided by engineer.
+
+ Get started
+ No comment provided by engineer.
+
Good afternoon!
message preview
@@ -4290,11 +4291,6 @@ Error: %2$@
Heti
No comment provided by engineer.
-
- Immune to spam
- Immuuni roskapostille ja väärinkäytöksille
- No comment provided by engineer.
-
Import
Tuo
@@ -5104,12 +5100,12 @@ This is your link for group %@!
Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.
No comment provided by engineer.
-
- Migrate device
+
+ Migrate
No comment provided by engineer.
-
- Migrate from another device
+
+ Migrate device
No comment provided by engineer.
@@ -5218,6 +5214,11 @@ This is your link for group %@!
Nimi
swipe action
+
+ Network
+commitments
+ No comment provided by engineer.
+
Network & servers
Verkko ja palvelimet
@@ -5247,6 +5248,11 @@ This is your link for group %@!
Network operator
No comment provided by engineer.
+
+ Network routers cannot know
+who talks to whom
+ No comment provided by engineer.
+
Network settings
Verkkoasetukset
@@ -5354,6 +5360,11 @@ This is your link for group %@!
Ei
No comment provided by engineer.
+
+ No account. No phone. No email. No ID.
+The most secure encryption.
+ No comment provided by engineer.
+
No active relays
No comment provided by engineer.
@@ -5497,15 +5508,18 @@ This is your link for group %@!
No unread chats
No comment provided by engineer.
-
- No user identifiers.
- Ensimmäinen alusta ilman käyttäjätunnisteita – suunniteltu yksityiseksi.
+
+ Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life.
No comment provided by engineer.
Non-profit governance
No comment provided by engineer.
+
+ Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign.
+ No comment provided by engineer.
+
Not all relays connected
alert title
@@ -5578,6 +5592,10 @@ new chat action
Vanha tietokanta
No comment provided by engineer.
+
+ On your phone, not on any server.
+ No comment provided by engineer.
+
One-time invitation link
Kertakutsulinkki
@@ -5800,6 +5818,13 @@ alert button
Operator server
alert title
+
+ Operators commit to:
+- Be independent
+- Minimize metadata usage
+- Run verified open-source code
+ No comment provided by engineer.
+
Or import archive file
No comment provided by engineer.
@@ -6091,17 +6116,12 @@ Error: %@
Privacy policy and conditions of use.
No comment provided by engineer.
-
- Privacy redefined
- Yksityisyys uudelleen määritettynä
- No comment provided by engineer.
-
Privacy: for owners and subscribers.
No comment provided by engineer.
-
- Private chats, groups and your contacts are not accessible to server operators.
+
+ Private and secure messaging.
No comment provided by engineer.
@@ -7369,6 +7389,14 @@ chat item action
Settings were changed.
alert message
+
+ Setup notifications
+ No comment provided by engineer.
+
+
+ Setup routers
+ No comment provided by engineer.
+
Shape profile images
No comment provided by engineer.
@@ -8069,9 +8097,9 @@ Tämä voi johtua jostain virheestä tai siitä, että yhteys on vaarantunut.Salaus toimii ja uutta salaussopimusta ei tarvita. Tämä voi johtaa yhteysvirheisiin!
No comment provided by engineer.
-
- The future of messaging
- Seuraavan sukupolven yksityisviestit
+
+ The first network where you own
+your contacts and groups.
No comment provided by engineer.
@@ -8106,6 +8134,10 @@ Tämä voi johtua jostain virheestä tai siitä, että yhteys on vaarantunut.Vanhaa tietokantaa ei poistettu siirron aikana, se voidaan kuitenkin poistaa.
No comment provided by engineer.
+
+ The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it.
+ No comment provided by engineer.
+
The same conditions will apply to operator **%@**.
No comment provided by engineer.
@@ -8145,6 +8177,14 @@ Tämä voi johtua jostain virheestä tai siitä, että yhteys on vaarantunut.Themes
No comment provided by engineer.
+
+ Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible.
+ No comment provided by engineer.
+
+
+ There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected.
+ No comment provided by engineer.
+
These conditions will also apply for: **%@**.
No comment provided by engineer.
@@ -8936,6 +8976,10 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja
Kun jaat inkognitoprofiilin jonkun kanssa, tätä profiilia käytetään ryhmissä, joihin tämä sinut kutsuu.
No comment provided by engineer.
+
+ Why SimpleX is built.
+ No comment provided by engineer.
+
WiFi
No comment provided by engineer.
@@ -9166,6 +9210,12 @@ Repeat join request?
Et voi lähettää viestejä!
alert title
+
+ You commit to:
+- Only legal content in public groups
+- Respect other users - no spam
+ No comment provided by engineer.
+
You connected to the channel via this relay link.
No comment provided by engineer.
@@ -9175,11 +9225,6 @@ Repeat join request?
Sinua ei voitu todentaa; yritä uudelleen.
No comment provided by engineer.
-
- You decide who can connect.
- Kimin bağlanabileceğine siz karar verirsiniz.
- No comment provided by engineer.
-
You have already requested connection!
Repeat connection request?
@@ -9241,6 +9286,10 @@ Repeat connection request?
You should receive notifications.
token info
+
+ You were born without an account
+ No comment provided by engineer.
+
You will be able to send messages **only after your request is accepted**.
No comment provided by engineer.
@@ -9371,6 +9420,10 @@ Repeat connection request?
Kontaktisi pysyvät yhdistettyinä.
No comment provided by engineer.
+
+ Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public.
+ No comment provided by engineer.
+
Your credentials may be sent unencrypted.
No comment provided by engineer.
@@ -9389,6 +9442,10 @@ Repeat connection request?
Your group
No comment provided by engineer.
+
+ Your network
+ No comment provided by engineer.
+
Your preferences
Asetuksesi
diff --git a/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff b/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff
index 1de6a95c2b..7d5864718e 100644
--- a/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff
+++ b/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff
@@ -1117,11 +1117,6 @@ swipe action
Répondre à l'appel
No comment provided by engineer.
-
- Anybody can host servers.
- N'importe qui peut heberger un serveur.
- No comment provided by engineer.
-
App build: %@
Build de l'app : %@
@@ -1325,6 +1320,19 @@ swipe action
Mauvais hash de message
No comment provided by engineer.
+
+ Be free
+in your network
+ No comment provided by engineer.
+
+
+ Be free in your network.
+ No comment provided by engineer.
+
+
+ Because we destroyed the power to know who you are. So that your power can never be taken.
+ No comment provided by engineer.
+
Better calls
Appels améliorés
@@ -1503,15 +1511,6 @@ swipe action
Par profil de chat (par défaut) ou [par connexion](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).
No comment provided by engineer.
-
- By using SimpleX Chat you agree to:
-- send only legal content in public groups.
-- respect other users – no spam.
- En utilisant SimpleX Chat, vous acceptez de :
-- n'envoyer que du contenu légal dans les groupes publics.
-- respecter les autres utilisateurs - pas de spam.
- No comment provided by engineer.
-
Call already ended!
Appel déjà terminé !
@@ -2037,11 +2036,6 @@ chat toolbar
Configure relays
No comment provided by engineer.
-
- Configure server operators
- Configurer les opérateurs de serveur
- No comment provided by engineer.
-
Confirm
Confirmer
@@ -2656,11 +2650,6 @@ Il s'agit de votre propre lien unique !
Livraison de débogage
No comment provided by engineer.
-
- Decentralized
- Décentralisé
- No comment provided by engineer.
-
Decode link
relay test step
@@ -3504,6 +3493,10 @@ chat item action
Entrez ci-dessus le mot de passe pour afficher le profil !
No comment provided by engineer.
+
+ Enter profile name...
+ No comment provided by engineer.
+
Enter relay name…
No comment provided by engineer.
@@ -4394,6 +4387,10 @@ Erreur : %2$@
Get notified when mentioned.
No comment provided by engineer.
+
+ Get started
+ No comment provided by engineer.
+
Good afternoon!
Bonjour !
@@ -4662,11 +4659,6 @@ Erreur : %2$@
Immédiatement
No comment provided by engineer.
-
- Immune to spam
- Protégé du spam et des abus
- No comment provided by engineer.
-
Import
Importer
@@ -5531,16 +5523,15 @@ Voici votre lien pour le groupe %@ !
Les messages, fichiers et appels sont protégés par un chiffrement **e2e résistant post-quantique** avec une confidentialité persistante, une répudiation et une récupération en cas d'effraction.
No comment provided by engineer.
+
+ Migrate
+ No comment provided by engineer.
+
Migrate device
Transférer l'appareil
No comment provided by engineer.
-
- Migrate from another device
- Transférer depuis un autre appareil
- No comment provided by engineer.
-
Migrate here
Transférer ici
@@ -5654,6 +5645,11 @@ Voici votre lien pour le groupe %@ !
Nom
swipe action
+
+ Network
+commitments
+ No comment provided by engineer.
+
Network & servers
Réseau et serveurs
@@ -5688,6 +5684,11 @@ Voici votre lien pour le groupe %@ !
Opérateur de réseau
No comment provided by engineer.
+
+ Network routers cannot know
+who talks to whom
+ No comment provided by engineer.
+
Network settings
Paramètres réseau
@@ -5803,6 +5804,11 @@ Voici votre lien pour le groupe %@ !
Non
No comment provided by engineer.
+
+ No account. No phone. No email. No ID.
+The most secure encryption.
+ No comment provided by engineer.
+
No active relays
No comment provided by engineer.
@@ -5957,15 +5963,18 @@ Voici votre lien pour le groupe %@ !
No unread chats
No comment provided by engineer.
-
- No user identifiers.
- Aucun identifiant d'utilisateur.
+
+ Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life.
No comment provided by engineer.
Non-profit governance
No comment provided by engineer.
+
+ Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign.
+ No comment provided by engineer.
+
Not all relays connected
alert title
@@ -6043,6 +6052,10 @@ new chat action
Ancienne base de données
No comment provided by engineer.
+
+ On your phone, not on any server.
+ No comment provided by engineer.
+
One-time invitation link
Lien d'invitation unique
@@ -6275,6 +6288,13 @@ alert button
Serveur de l'opérateur
alert title
+
+ Operators commit to:
+- Be independent
+- Minimize metadata usage
+- Run verified open-source code
+ No comment provided by engineer.
+
Or import archive file
Ou importer un fichier d'archive
@@ -6592,17 +6612,12 @@ Erreur : %@
Privacy policy and conditions of use.
No comment provided by engineer.
-
- Privacy redefined
- La vie privée redéfinie
- No comment provided by engineer.
-
Privacy: for owners and subscribers.
No comment provided by engineer.
-
- Private chats, groups and your contacts are not accessible to server operators.
+
+ Private and secure messaging.
No comment provided by engineer.
@@ -7958,6 +7973,14 @@ chat item action
Les paramètres ont été modifiés.
alert message
+
+ Setup notifications
+ No comment provided by engineer.
+
+
+ Setup routers
+ No comment provided by engineer.
+
Shape profile images
Images de profil modelable
@@ -8708,9 +8731,9 @@ Cela peut se produire en raison d'un bug ou lorsque la connexion est compromise.
Le chiffrement fonctionne et le nouvel accord de chiffrement n'est pas nécessaire. Cela peut provoquer des erreurs de connexion !
No comment provided by engineer.
-
- The future of messaging
- La nouvelle génération de messagerie privée
+
+ The first network where you own
+your contacts and groups.
No comment provided by engineer.
@@ -8747,6 +8770,10 @@ Cela peut se produire en raison d'un bug ou lorsque la connexion est compromise.
L'ancienne base de données n'a pas été supprimée lors de la migration, elle peut être supprimée.
No comment provided by engineer.
+
+ The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it.
+ No comment provided by engineer.
+
The same conditions will apply to operator **%@**.
Les mêmes conditions s'appliquent à l'opérateur **%@**.
@@ -8792,6 +8819,14 @@ Cela peut se produire en raison d'un bug ou lorsque la connexion est compromise.
Thèmes
No comment provided by engineer.
+
+ Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible.
+ No comment provided by engineer.
+
+
+ There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected.
+ No comment provided by engineer.
+
These conditions will also apply for: **%@**.
Ces conditions s'appliquent également aux : **%@**.
@@ -9650,6 +9685,10 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien
Lorsque vous partagez un profil incognito avec quelqu'un, ce profil sera utilisé pour les groupes auxquels il vous invite.
No comment provided by engineer.
+
+ Why SimpleX is built.
+ No comment provided by engineer.
+
WiFi
WiFi
@@ -9908,6 +9947,12 @@ Répéter la demande d'adhésion ?
Vous ne pouvez pas envoyer de messages !
alert title
+
+ You commit to:
+- Only legal content in public groups
+- Respect other users - no spam
+ No comment provided by engineer.
+
You connected to the channel via this relay link.
No comment provided by engineer.
@@ -9917,11 +9962,6 @@ Répéter la demande d'adhésion ?
Vous n'avez pas pu être vérifié·e ; veuillez réessayer.
No comment provided by engineer.
-
- You decide who can connect.
- Vous choisissez qui peut se connecter.
- No comment provided by engineer.
-
You have already requested connection!
Repeat connection request?
@@ -9988,6 +10028,10 @@ Répéter la demande de connexion ?
You should receive notifications.
token info
+
+ You were born without an account
+ No comment provided by engineer.
+
You will be able to send messages **only after your request is accepted**.
No comment provided by engineer.
@@ -10122,6 +10166,10 @@ Répéter la demande de connexion ?
Vos contacts resteront connectés.
No comment provided by engineer.
+
+ Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public.
+ No comment provided by engineer.
+
Your credentials may be sent unencrypted.
Vos informations d'identification peuvent être envoyées non chiffrées.
@@ -10141,6 +10189,10 @@ Répéter la demande de connexion ?
Your group
No comment provided by engineer.
+
+ Your network
+ No comment provided by engineer.
+
Your preferences
Vos préférences
diff --git a/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff b/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff
index 7e52f853f2..44bf045166 100644
--- a/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff
+++ b/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff
@@ -1127,11 +1127,6 @@ swipe action
Hívás fogadása
No comment provided by engineer.
-
- Anybody can host servers.
- Bárki üzemeltethet kiszolgálókat.
- No comment provided by engineer.
-
App build: %@
Alkalmazás összeállítási száma: %@
@@ -1337,6 +1332,21 @@ swipe action
Hibás az üzenet kivonata
No comment provided by engineer.
+
+ Be free
+in your network
+ No comment provided by engineer.
+
+
+ Be free in your network.
+ Legyen szabad a saját hálózatában.
+ No comment provided by engineer.
+
+
+ Because we destroyed the power to know who you are. So that your power can never be taken.
+ Mert felszámoltuk a lehetőségét is annak, hogy megtudjuk, Ön kicsoda. Így az önrendelkezése soha nem kerülhet idegen kezekbe.
+ No comment provided by engineer.
+
Better calls
Továbbfejlesztett hívásélmény
@@ -1522,15 +1532,6 @@ swipe action
A csevegési profillal (alapértelmezett), vagy a [kapcsolattal] (https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BÉTA).
No comment provided by engineer.
-
- By using SimpleX Chat you agree to:
-- send only legal content in public groups.
-- respect other users – no spam.
- A SimpleX Chat használatával Ön elfogadja, hogy:
-- csak elfogadott tartalmakat tesz közzé a nyilvános csoportokban.
-- tiszteletben tartja a többi felhasználót, és nem küld kéretlen tartalmat senkinek.
- No comment provided by engineer.
-
Call already ended!
A hívás már véget ért!
@@ -2079,11 +2080,6 @@ chat toolbar
Átjátszók konfigurálása
No comment provided by engineer.
-
- Configure server operators
- Kiszolgálóüzemeltetők beállítása
- No comment provided by engineer.
-
Confirm
Megerősítés
@@ -2705,11 +2701,6 @@ Ez a saját egyszer használható meghívója!
Kézbesítési hibák felderítése
No comment provided by engineer.
-
- Decentralized
- Decentralizált
- No comment provided by engineer.
-
Decode link
Hivatkozás dekódolása
@@ -3569,6 +3560,10 @@ chat item action
Adja meg a jelszót fentebb a megjelenítéshez!
No comment provided by engineer.
+
+ Enter profile name...
+ No comment provided by engineer.
+
Enter relay name…
Adja meg az átjátszó nevét…
@@ -4480,6 +4475,10 @@ Hiba: %2$@
Kapjon értesítést, ha megemlítik.
No comment provided by engineer.
+
+ Get started
+ No comment provided by engineer.
+
Good afternoon!
Jó napot!
@@ -4755,11 +4754,6 @@ Hiba: %2$@
Azonnal
No comment provided by engineer.
-
- Immune to spam
- Védett a kéretlen tartalmakkal szemben
- No comment provided by engineer.
-
Import
Importálás
@@ -5656,16 +5650,15 @@ Ez a saját hivatkozása a(z) %@ nevű csoporthoz!
Az üzenetek, a fájlok és a hívások **végpontok közötti kvantumbiztos titkosítással**, kompromittálás előtti és utáni titkosságvédelemmel, illetve letagadhatósággal vannak védve.
No comment provided by engineer.
+
+ Migrate
+ No comment provided by engineer.
+
Migrate device
Eszköz átköltöztetése
No comment provided by engineer.
-
- Migrate from another device
- Átköltöztetés egy másik eszközről
- No comment provided by engineer.
-
Migrate here
Átköltöztetés ide
@@ -5781,6 +5774,11 @@ Ez a saját hivatkozása a(z) %@ nevű csoporthoz!
Név
swipe action
+
+ Network
+commitments
+ No comment provided by engineer.
+
Network & servers
Hálózat és kiszolgálók
@@ -5815,6 +5813,11 @@ Ez a saját hivatkozása a(z) %@ nevű csoporthoz!
Hálózatüzemeltető
No comment provided by engineer.
+
+ Network routers cannot know
+who talks to whom
+ No comment provided by engineer.
+
Network settings
Hálózati beállítások
@@ -5934,6 +5937,11 @@ Ez a saját hivatkozása a(z) %@ nevű csoporthoz!
Nem
No comment provided by engineer.
+
+ No account. No phone. No email. No ID.
+The most secure encryption.
+ No comment provided by engineer.
+
No active relays
No comment provided by engineer.
@@ -6098,15 +6106,20 @@ Ez a saját hivatkozása a(z) %@ nevű csoporthoz!
Nincsenek olvasatlan csevegések
No comment provided by engineer.
-
- No user identifiers.
- Nincsenek felhasználói azonosítók.
+
+ Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life.
+ Senki sem követte nyomon a beszélgetéseinket. Senki sem készített térképet arról, hogy merre jártunk. A magánéletünk nem csak egy funkció volt, hanem az életmódunk.
No comment provided by engineer.
Non-profit governance
No comment provided by engineer.
+
+ Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign.
+ Nem egy jobb zár mások ajtaján. Nem egy kedvesebb házmester, aki tiszteletben tartja az Ön magánéletét, de mégis nyilvántartást vezet minden látogatójáról. Ön itt nem csak egy vendég. Ön itt otthon van. Nincs az a hatalom, amely beléphetne ide - Ön itt szuverén.
+ No comment provided by engineer.
+
Not all relays connected
Nem minden átjátszó kapcsolódott
@@ -6188,6 +6201,10 @@ new chat action
Régi adatbázis
No comment provided by engineer.
+
+ On your phone, not on any server.
+ No comment provided by engineer.
+
One-time invitation link
Egyszer használható meghívó
@@ -6435,6 +6452,13 @@ alert button
Kiszolgáló-üzemeltető
alert title
+
+ Operators commit to:
+- Be independent
+- Minimize metadata usage
+- Run verified open-source code
+ No comment provided by engineer.
+
Or import archive file
Vagy archívumfájl importálása
@@ -6762,18 +6786,12 @@ Hiba: %@
Adatvédelmi szabályzat és felhasználási feltételek.
No comment provided by engineer.
-
- Privacy redefined
- Újraértelmezett adatvédelem
- No comment provided by engineer.
-
Privacy: for owners and subscribers.
No comment provided by engineer.
-
- Private chats, groups and your contacts are not accessible to server operators.
- A privát csevegések, a csoportok és a partnerek nem érhetők el a kiszolgálók üzemeltetői számára.
+
+ Private and secure messaging.
No comment provided by engineer.
@@ -8186,6 +8204,14 @@ chat item action
A beállítások módosultak.
alert message
+
+ Setup notifications
+ No comment provided by engineer.
+
+
+ Setup routers
+ No comment provided by engineer.
+
Shape profile images
Profilkép alakzata
@@ -8972,9 +8998,9 @@ Ez valamilyen hiba vagy sérült kapcsolat esetén fordulhat elő.
A titkosítás működik, és új titkosítási egyezményre nincs szükség. Ez kapcsolati hibákat eredményezhet!
No comment provided by engineer.
-
- The future of messaging
- Az üzenetváltás jövője
+
+ The first network where you own
+your contacts and groups.
No comment provided by engineer.
@@ -9012,6 +9038,11 @@ Ez valamilyen hiba vagy sérült kapcsolat esetén fordulhat elő.
A régi adatbázis nem lett eltávolítva az átköltöztetéskor, ezért törölhető.
No comment provided by engineer.
+
+ The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it.
+ A legrégebbi emberi szabadság - beszélgetni az emberekkel, anélkül, hogy mások megfigyelnének - olyan infrastruktúrán alapul, amely nem tudja elárulni.
+ No comment provided by engineer.
+
The same conditions will apply to operator **%@**.
Ugyanezek a feltételek lesznek elfogadva a következő üzemeltető számára is: **%@**.
@@ -9057,6 +9088,16 @@ Ez valamilyen hiba vagy sérült kapcsolat esetén fordulhat elő.
Témák
No comment provided by engineer.
+
+ Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible.
+ Aztán felléptünk az internetre, és minden platform kért belőlünk egy darabot - nevet, telefonszámot, baráti kapcsolatokat. Elfogadtuk, hogy a kommunikáció ára az, hogy mások megtudják, hogy kivel beszélünk. Minden generáció, az emberek és a technológia is eddig így működött - telefon, e-mail, üzenetküldő programok, közösségi média. Úgy tűnt, ez az egyetlen lehetséges mód.
+ No comment provided by engineer.
+
+
+ There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected.
+ De van egy másik lehetőség is. Egy hálózat, amelyben nincsenek telefonszámok. Nincsenek felhasználónevek. Nincsenek fiókok. Nincsenek semmiféle felhasználói azonosítók. Egy hálózat, amely összeköti az embereket és titkosított üzeneteket továbbít, anélkül, hogy tudná, ki csatlakozik hozzá.
+ No comment provided by engineer.
+
These conditions will also apply for: **%@**.
Ezek a feltételek lesznek elfogadva a következő számára is: **%@**.
@@ -9947,6 +9988,10 @@ A kapcsolódáshoz kérje meg a partnerét, hogy hozzon létre egy másik kapcso
Ha egy inkognitóprofilt oszt meg valamelyik partnerével, a rendszer ezt az inkognitóprofilt fogja használni azokban a csoportokban, ahová az adott partnere meghívja Önt.
No comment provided by engineer.
+
+ Why SimpleX is built.
+ No comment provided by engineer.
+
WiFi
Wi-Fi
@@ -10209,6 +10254,12 @@ Megismétli a csatlakozási kérést?
Ön nem tud üzeneteket küldeni!
alert title
+
+ You commit to:
+- Only legal content in public groups
+- Respect other users - no spam
+ No comment provided by engineer.
+
You connected to the channel via this relay link.
Ön ezen az átjátszóhivatkozáson keresztül kapcsolódott a csatornához.
@@ -10219,11 +10270,6 @@ Megismétli a csatlakozási kérést?
Nem sikerült ellenőrizni; próbálja meg újra.
No comment provided by engineer.
-
- You decide who can connect.
- Ön dönti el, hogy kivel beszélget.
- No comment provided by engineer.
-
You have already requested connection!
Repeat connection request?
@@ -10291,6 +10337,11 @@ Megismétli a kapcsolódási kérést?
Ön megkapja az értesítéseket.
token info
+
+ You were born without an account
+ Fiók nélkül születtünk.
+ No comment provided by engineer.
+
You will be able to send messages **only after your request is accepted**.
Csak azután tud üzeneteket küldeni, **miután a kérését elfogadták**.
@@ -10431,6 +10482,11 @@ Megismétli a kapcsolódási kérést?
A partnereivel továbbra is kapcsolatban marad.
No comment provided by engineer.
+
+ Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public.
+ A beszélgetései Önhöz tartoznak, ahogy az internet megjelenése előtt is mindig így volt. A hálózat nem egy hely, amelyet meglátogat. Ez egy olyan hely, amelyet Ön hoz létre saját magának. És senki sem veheti el Öntől, függetlenül attól, hogy privát vagy nyilvános.
+ No comment provided by engineer.
+
Your credentials may be sent unencrypted.
A hitelesítési adatai titkosítatlanul is elküldhetők.
@@ -10451,6 +10507,10 @@ Megismétli a kapcsolódási kérést?
Saját csoport
No comment provided by engineer.
+
+ Your network
+ No comment provided by engineer.
+
Your preferences
Beállítások
diff --git a/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff b/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff
index 7cf7b418a8..8b40a78c98 100644
--- a/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff
+++ b/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff
@@ -1127,11 +1127,6 @@ swipe action
Rispondi alla chiamata
No comment provided by engineer.
-
- Anybody can host servers.
- Chiunque può installare i server.
- No comment provided by engineer.
-
App build: %@
Build dell'app: %@
@@ -1337,6 +1332,21 @@ swipe action
Hash del messaggio errato
No comment provided by engineer.
+
+ Be free
+in your network
+ No comment provided by engineer.
+
+
+ Be free in your network.
+ Vivi libero nella tua rete.
+ No comment provided by engineer.
+
+
+ Because we destroyed the power to know who you are. So that your power can never be taken.
+ Perché abbiamo distrutto il potere di sapere chi sei. In modo che il tuo potere non possa mai esserti sottratto.
+ No comment provided by engineer.
+
Better calls
Chiamate migliorate
@@ -1522,15 +1532,6 @@ swipe action
Per profilo di chat (predefinito) o [per connessione](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).
No comment provided by engineer.
-
- By using SimpleX Chat you agree to:
-- send only legal content in public groups.
-- respect other users – no spam.
- Usando SimpleX Chat accetti di:
-- inviare solo contenuto legale nei gruppi pubblici.
-- rispettare gli altri utenti - niente spam.
- No comment provided by engineer.
-
Call already ended!
Chiamata già terminata!
@@ -2079,11 +2080,6 @@ chat toolbar
Configura i relay
No comment provided by engineer.
-
- Configure server operators
- Configura gli operatori dei server
- No comment provided by engineer.
-
Confirm
Conferma
@@ -2705,11 +2701,6 @@ Questo è il tuo link una tantum!
Debug della consegna
No comment provided by engineer.
-
- Decentralized
- Decentralizzato
- No comment provided by engineer.
-
Decode link
Decodifica il link
@@ -3569,6 +3560,10 @@ chat item action
Inserisci la password sopra per mostrare!
No comment provided by engineer.
+
+ Enter profile name...
+ No comment provided by engineer.
+
Enter relay name…
Inserisci il nome del relay…
@@ -4480,6 +4475,10 @@ Errore: %2$@
Ricevi una notifica quando menzionato.
No comment provided by engineer.
+
+ Get started
+ No comment provided by engineer.
+
Good afternoon!
Buon pomeriggio!
@@ -4755,11 +4754,6 @@ Errore: %2$@
Immediatamente
No comment provided by engineer.
-
- Immune to spam
- Immune a spam e abusi
- No comment provided by engineer.
-
Import
Importa
@@ -5656,16 +5650,15 @@ Questo è il tuo link per il gruppo %@!
I messaggi, i file e le chiamate sono protetti da **crittografia e2e resistente alla quantistica** con perfect forward secrecy, ripudio e recupero da intrusione.
No comment provided by engineer.
+
+ Migrate
+ No comment provided by engineer.
+
Migrate device
Migra dispositivo
No comment provided by engineer.
-
- Migrate from another device
- Migra da un altro dispositivo
- No comment provided by engineer.
-
Migrate here
Migra qui
@@ -5781,6 +5774,11 @@ Questo è il tuo link per il gruppo %@!
Nome
swipe action
+
+ Network
+commitments
+ No comment provided by engineer.
+
Network & servers
Rete e server
@@ -5815,6 +5813,11 @@ Questo è il tuo link per il gruppo %@!
Operatore di rete
No comment provided by engineer.
+
+ Network routers cannot know
+who talks to whom
+ No comment provided by engineer.
+
Network settings
Impostazioni di rete
@@ -5934,6 +5937,11 @@ Questo è il tuo link per il gruppo %@!
No
No comment provided by engineer.
+
+ No account. No phone. No email. No ID.
+The most secure encryption.
+ No comment provided by engineer.
+
No active relays
No comment provided by engineer.
@@ -6098,15 +6106,20 @@ Questo è il tuo link per il gruppo %@!
Nessuna chat non letta
No comment provided by engineer.
-
- No user identifiers.
- Nessun identificatore utente.
+
+ Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life.
+ Nessuno monitorava le tue conversazioni. Nessuno disegnava una mappa delle tue posizioni. La privacy non era mai stata una caratteristica, era uno stile di vita.
No comment provided by engineer.
Non-profit governance
No comment provided by engineer.
+
+ Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign.
+ Non una serratura migliore sulla porta di qualcun altro. Non un padrone di casa più gentile che rispetta la tua privacy, ma che continua a tenere traccia di tutti i visitatori. Non sei un ospite. Sei a casa tua. Nessun re può entrarvi: sei tu il sovrano.
+ No comment provided by engineer.
+
Not all relays connected
Non tutti i relay sono connessi
@@ -6188,6 +6201,10 @@ new chat action
Database vecchio
No comment provided by engineer.
+
+ On your phone, not on any server.
+ No comment provided by engineer.
+
One-time invitation link
Link di invito una tantum
@@ -6435,6 +6452,13 @@ alert button
Server dell'operatore
alert title
+
+ Operators commit to:
+- Be independent
+- Minimize metadata usage
+- Run verified open-source code
+ No comment provided by engineer.
+
Or import archive file
O importa file archivio
@@ -6762,18 +6786,12 @@ Errore: %@
Informativa sulla privacy e condizioni d'uso.
No comment provided by engineer.
-
- Privacy redefined
- Privacy ridefinita
- No comment provided by engineer.
-
Privacy: for owners and subscribers.
No comment provided by engineer.
-
- Private chats, groups and your contacts are not accessible to server operators.
- Le chat private, i gruppi e i tuoi contatti non sono accessibili agli operatori dei server.
+
+ Private and secure messaging.
No comment provided by engineer.
@@ -8186,6 +8204,14 @@ chat item action
Le impostazioni sono state cambiate.
alert message
+
+ Setup notifications
+ No comment provided by engineer.
+
+
+ Setup routers
+ No comment provided by engineer.
+
Shape profile images
Forma delle immagini del profilo
@@ -8972,9 +8998,9 @@ Può accadere a causa di qualche bug o quando la connessione è compromessa.La crittografia funziona e il nuovo accordo sulla crittografia non è richiesto. Potrebbero verificarsi errori di connessione!
No comment provided by engineer.
-
- The future of messaging
- La nuova generazione di messaggistica privata
+
+ The first network where you own
+your contacts and groups.
No comment provided by engineer.
@@ -9012,6 +9038,11 @@ Può accadere a causa di qualche bug o quando la connessione è compromessa.Il database vecchio non è stato rimosso durante la migrazione, può essere eliminato.
No comment provided by engineer.
+
+ The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it.
+ La più antica libertà umana, parlare con un'altra persona senza essere osservati, si basa su un'infrastruttura che non può tradirla.
+ No comment provided by engineer.
+
The same conditions will apply to operator **%@**.
Le stesse condizioni si applicheranno all'operatore **%@**.
@@ -9057,6 +9088,16 @@ Può accadere a causa di qualche bug o quando la connessione è compromessa.Temi
No comment provided by engineer.
+
+ Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible.
+ Poi ci siamo trasferiti online e ogni piattaforma ha chiesto un pezzo di noi: il nome, il numero, gli amici. Abbiamo accettato che il prezzo da pagare per comunicare con gli altri fosse quello di far sapere a qualcuno con chi parliamo. Ogni generazione, sia di persone che di tecnologia, ha funzionato così: telefono, email, messenger, social media. Sembrava l'unico modo possibile.
+ No comment provided by engineer.
+
+
+ There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected.
+ C'è un'altra via. Una rete senza numeri di telefono. Senza nomi utente. Senza account. Senza identificatori utente di alcun tipo. Una rete che connette le persone e trasferisce messaggi crittografati senza sapere chi è connesso.
+ No comment provided by engineer.
+
These conditions will also apply for: **%@**.
Queste condizioni si applicheranno anche per: **%@**.
@@ -9947,6 +9988,10 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e
Quando condividi un profilo in incognito con qualcuno, questo profilo verrà utilizzato per i gruppi a cui ti invitano.
No comment provided by engineer.
+
+ Why SimpleX is built.
+ No comment provided by engineer.
+
WiFi
WiFi
@@ -10209,6 +10254,12 @@ Ripetere la richiesta di ingresso?
Non puoi inviare messaggi!
alert title
+
+ You commit to:
+- Only legal content in public groups
+- Respect other users - no spam
+ No comment provided by engineer.
+
You connected to the channel via this relay link.
Ti sei connesso/a al canale attraverso questo link del relay.
@@ -10219,11 +10270,6 @@ Ripetere la richiesta di ingresso?
Non è stato possibile verificarti, riprova.
No comment provided by engineer.
-
- You decide who can connect.
- Sei tu a decidere chi può connettersi.
- No comment provided by engineer.
-
You have already requested connection!
Repeat connection request?
@@ -10291,6 +10337,11 @@ Ripetere la richiesta di connessione?
Dovresti ricevere le notifiche.
token info
+
+ You were born without an account
+ Sei nato senza un account.
+ No comment provided by engineer.
+
You will be able to send messages **only after your request is accepted**.
Potrai inviare messaggi **solo dopo che la tua richiesta verrà accettata**.
@@ -10431,6 +10482,11 @@ Ripetere la richiesta di connessione?
I tuoi contatti resteranno connessi.
No comment provided by engineer.
+
+ Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public.
+ Le tue conversazioni appartengono a te, come è sempre stato prima dell'avvento di internet. La rete non è un luogo che visiti. È un luogo che crei e possiedi. E nessuno può portartelo via, che tu lo renda privato o pubblico.
+ No comment provided by engineer.
+
Your credentials may be sent unencrypted.
Le credenziali potrebbero essere inviate in chiaro.
@@ -10451,6 +10507,10 @@ Ripetere la richiesta di connessione?
Il tuo gruppo
No comment provided by engineer.
+
+ Your network
+ No comment provided by engineer.
+
Your preferences
Le tue preferenze
diff --git a/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff b/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff
index 3498c8757f..6dcedf7d5b 100644
--- a/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff
+++ b/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff
@@ -1097,11 +1097,6 @@ swipe action
通話に応答
No comment provided by engineer.
-
- Anybody can host servers.
- プロトコル技術とコードはオープンソースで、どなたでもご自分のサーバを運用できます。
- No comment provided by engineer.
-
App build: %@
アプリのビルド: %@
@@ -1295,6 +1290,19 @@ swipe action
メッセージのハッシュ値問題
No comment provided by engineer.
+
+ Be free
+in your network
+ No comment provided by engineer.
+
+
+ Be free in your network.
+ No comment provided by engineer.
+
+
+ Because we destroyed the power to know who you are. So that your power can never be taken.
+ No comment provided by engineer.
+
Better calls
No comment provided by engineer.
@@ -1451,12 +1459,6 @@ swipe action
チャット プロファイル経由 (デフォルト) または [接続経由](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).
No comment provided by engineer.
-
- By using SimpleX Chat you agree to:
-- send only legal content in public groups.
-- respect other users – no spam.
- No comment provided by engineer.
-
Call already ended!
通話は既に終了してます!
@@ -1951,10 +1953,6 @@ chat toolbar
Configure relays
No comment provided by engineer.
-
- Configure server operators
- No comment provided by engineer.
-
Confirm
確認
@@ -2527,11 +2525,6 @@ This is your own one-time link!
配信のデバッグ
No comment provided by engineer.
-
- Decentralized
- 分散型
- No comment provided by engineer.
-
Decode link
relay test step
@@ -3319,6 +3312,10 @@ chat item action
上にパスワードを入力すると表示されます!
No comment provided by engineer.
+
+ Enter profile name...
+ No comment provided by engineer.
+
Enter relay name…
No comment provided by engineer.
@@ -4132,6 +4129,10 @@ Error: %2$@
Get notified when mentioned.
No comment provided by engineer.
+
+ Get started
+ No comment provided by engineer.
+
Good afternoon!
message preview
@@ -4391,11 +4392,6 @@ Error: %2$@
即座に
No comment provided by engineer.
-
- Immune to spam
- スパムや悪質送信を防止
- No comment provided by engineer.
-
Import
読み込む
@@ -5206,13 +5202,12 @@ This is your link for group %@!
メッセージ、ファイル、通話は、前方秘匿性、否認可能性および侵入復元性を備えた**耐量子E2E暗号化**によって保護されます。
No comment provided by engineer.
-
- Migrate device
+
+ Migrate
No comment provided by engineer.
-
- Migrate from another device
- 別の端末から移行
+
+ Migrate device
No comment provided by engineer.
@@ -5321,6 +5316,11 @@ This is your link for group %@!
名前
swipe action
+
+ Network
+commitments
+ No comment provided by engineer.
+
Network & servers
ネットワークとサーバ
@@ -5350,6 +5350,11 @@ This is your link for group %@!
Network operator
No comment provided by engineer.
+
+ Network routers cannot know
+who talks to whom
+ No comment provided by engineer.
+
Network settings
ネットワーク設定
@@ -5458,6 +5463,11 @@ This is your link for group %@!
いいえ
No comment provided by engineer.
+
+ No account. No phone. No email. No ID.
+The most secure encryption.
+ No comment provided by engineer.
+
No active relays
No comment provided by engineer.
@@ -5601,15 +5611,18 @@ This is your link for group %@!
No unread chats
No comment provided by engineer.
-
- No user identifiers.
- 世界初のユーザーIDのないプラットフォーム|設計も元からプライベート。
+
+ Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life.
No comment provided by engineer.
Non-profit governance
No comment provided by engineer.
+
+ Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign.
+ No comment provided by engineer.
+
Not all relays connected
alert title
@@ -5682,6 +5695,10 @@ new chat action
古いデータベース
No comment provided by engineer.
+
+ On your phone, not on any server.
+ No comment provided by engineer.
+
One-time invitation link
使い捨ての招待リンク
@@ -5905,6 +5922,13 @@ alert button
Operator server
alert title
+
+ Operators commit to:
+- Be independent
+- Minimize metadata usage
+- Run verified open-source code
+ No comment provided by engineer.
+
Or import archive file
No comment provided by engineer.
@@ -6196,17 +6220,12 @@ Error: %@
Privacy policy and conditions of use.
No comment provided by engineer.
-
- Privacy redefined
- プライバシーの基準を新境地に
- No comment provided by engineer.
-
Privacy: for owners and subscribers.
No comment provided by engineer.
-
- Private chats, groups and your contacts are not accessible to server operators.
+
+ Private and secure messaging.
No comment provided by engineer.
@@ -7467,6 +7486,14 @@ chat item action
Settings were changed.
alert message
+
+ Setup notifications
+ No comment provided by engineer.
+
+
+ Setup routers
+ No comment provided by engineer.
+
Shape profile images
No comment provided by engineer.
@@ -8168,9 +8195,9 @@ It can happen because of some bug or when the connection is compromised.暗号化は機能しており、新しい暗号化への同意は必要ありません。接続エラーが発生する可能性があります!
No comment provided by engineer.
-
- The future of messaging
- 次世代のプライバシー・メッセンジャー
+
+ The first network where you own
+your contacts and groups.
No comment provided by engineer.
@@ -8205,6 +8232,10 @@ It can happen because of some bug or when the connection is compromised.古いデータベースは移行時に削除されなかったので、削除することができます。
No comment provided by engineer.
+
+ The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it.
+ No comment provided by engineer.
+
The same conditions will apply to operator **%@**.
No comment provided by engineer.
@@ -8244,6 +8275,14 @@ It can happen because of some bug or when the connection is compromised.Themes
No comment provided by engineer.
+
+ Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible.
+ No comment provided by engineer.
+
+
+ There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected.
+ No comment provided by engineer.
+
These conditions will also apply for: **%@**.
No comment provided by engineer.
@@ -9034,6 +9073,10 @@ To connect, please ask your contact to create another connection link and check
連絡相手にシークレットモードのプロフィールを共有すると、その連絡相手に招待されたグループでも同じプロフィールが使われます。
No comment provided by engineer.
+
+ Why SimpleX is built.
+ No comment provided by engineer.
+
WiFi
No comment provided by engineer.
@@ -9265,6 +9308,12 @@ Repeat join request?
メッセージを送信できませんでした!
alert title
+
+ You commit to:
+- Only legal content in public groups
+- Respect other users - no spam
+ No comment provided by engineer.
+
You connected to the channel via this relay link.
No comment provided by engineer.
@@ -9274,11 +9323,6 @@ Repeat join request?
確認できませんでした。 もう一度お試しください。
No comment provided by engineer.
-
- You decide who can connect.
- あなたと繋がることができるのは、あなたからリンクを頂いた方のみです。
- No comment provided by engineer.
-
You have already requested connection!
Repeat connection request?
@@ -9340,6 +9384,10 @@ Repeat connection request?
You should receive notifications.
token info
+
+ You were born without an account
+ No comment provided by engineer.
+
You will be able to send messages **only after your request is accepted**.
No comment provided by engineer.
@@ -9470,6 +9518,10 @@ Repeat connection request?
連絡先は接続されたままになります。
No comment provided by engineer.
+
+ Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public.
+ No comment provided by engineer.
+
Your credentials may be sent unencrypted.
No comment provided by engineer.
@@ -9488,6 +9540,10 @@ Repeat connection request?
Your group
No comment provided by engineer.
+
+ Your network
+ No comment provided by engineer.
+
Your preferences
あなたの設定
diff --git a/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff b/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff
index 6c5316a2b1..426be0eebc 100644
--- a/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff
+++ b/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff
@@ -1113,11 +1113,6 @@ swipe action
Beantwoord oproep
No comment provided by engineer.
-
- Anybody can host servers.
- Iedereen kan servers hosten.
- No comment provided by engineer.
-
App build: %@
App build: %@
@@ -1322,6 +1317,19 @@ swipe action
Onjuiste bericht hash
No comment provided by engineer.
+
+ Be free
+in your network
+ No comment provided by engineer.
+
+
+ Be free in your network.
+ No comment provided by engineer.
+
+
+ Because we destroyed the power to know who you are. So that your power can never be taken.
+ No comment provided by engineer.
+
Better calls
Betere gesprekken
@@ -1500,15 +1508,6 @@ swipe action
Via chatprofiel (standaard) of [via verbinding](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).
No comment provided by engineer.
-
- By using SimpleX Chat you agree to:
-- send only legal content in public groups.
-- respect other users – no spam.
- Door SimpleX Chat te gebruiken, gaat u ermee akkoord:
-- alleen legale content te versturen in openbare groepen.
-- andere gebruikers te respecteren – geen spam.
- No comment provided by engineer.
-
Call already ended!
Oproep al beëindigd!
@@ -2037,11 +2036,6 @@ chat toolbar
Configure relays
No comment provided by engineer.
-
- Configure server operators
- Serveroperators configureren
- No comment provided by engineer.
-
Confirm
Bevestigen
@@ -2656,11 +2650,6 @@ Dit is uw eigen eenmalige link!
Foutopsporing bezorging
No comment provided by engineer.
-
- Decentralized
- Gedecentraliseerd
- No comment provided by engineer.
-
Decode link
relay test step
@@ -3505,6 +3494,10 @@ chat item action
Voer hier boven het wachtwoord in om weer te geven!
No comment provided by engineer.
+
+ Enter profile name...
+ No comment provided by engineer.
+
Enter relay name…
No comment provided by engineer.
@@ -4400,6 +4393,10 @@ Fout: %2$@
Ontvang een melding als u vermeld wordt.
No comment provided by engineer.
+
+ Get started
+ No comment provided by engineer.
+
Good afternoon!
Goedemiddag!
@@ -4671,11 +4668,6 @@ Fout: %2$@
Onmiddellijk
No comment provided by engineer.
-
- Immune to spam
- Immuun voor spam en misbruik
- No comment provided by engineer.
-
Import
Importeren
@@ -5556,16 +5548,15 @@ Dit is jouw link voor groep %@!
Berichten, bestanden en oproepen worden beschermd door **kwantumbestendige e2e encryptie** met perfecte voorwaartse geheimhouding, afwijzing en inbraakherstel.
No comment provided by engineer.
+
+ Migrate
+ No comment provided by engineer.
+
Migrate device
Apparaat migreren
No comment provided by engineer.
-
- Migrate from another device
- Migreer vanaf een ander apparaat
- No comment provided by engineer.
-
Migrate here
Migreer hierheen
@@ -5681,6 +5672,11 @@ Dit is jouw link voor groep %@!
Naam
swipe action
+
+ Network
+commitments
+ No comment provided by engineer.
+
Network & servers
Netwerk & servers
@@ -5715,6 +5711,11 @@ Dit is jouw link voor groep %@!
Netwerkbeheerder
No comment provided by engineer.
+
+ Network routers cannot know
+who talks to whom
+ No comment provided by engineer.
+
Network settings
Netwerk instellingen
@@ -5832,6 +5833,11 @@ Dit is jouw link voor groep %@!
Nee
No comment provided by engineer.
+
+ No account. No phone. No email. No ID.
+The most secure encryption.
+ No comment provided by engineer.
+
No active relays
No comment provided by engineer.
@@ -5993,15 +5999,18 @@ Dit is jouw link voor groep %@!
Geen ongelezen chats
No comment provided by engineer.
-
- No user identifiers.
- Geen gebruikers-ID's.
+
+ Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life.
No comment provided by engineer.
Non-profit governance
No comment provided by engineer.
+
+ Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign.
+ No comment provided by engineer.
+
Not all relays connected
alert title
@@ -6082,6 +6091,10 @@ new chat action
Oude database
No comment provided by engineer.
+
+ On your phone, not on any server.
+ No comment provided by engineer.
+
One-time invitation link
Eenmalige uitnodiging link
@@ -6317,6 +6330,13 @@ alert button
Operatorserver
alert title
+
+ Operators commit to:
+- Be independent
+- Minimize metadata usage
+- Run verified open-source code
+ No comment provided by engineer.
+
Or import archive file
Of importeer archiefbestand
@@ -6640,18 +6660,12 @@ Fout: %@
Privacybeleid en gebruiksvoorwaarden.
No comment provided by engineer.
-
- Privacy redefined
- Privacy opnieuw gedefinieerd
- No comment provided by engineer.
-
Privacy: for owners and subscribers.
No comment provided by engineer.
-
- Private chats, groups and your contacts are not accessible to server operators.
- Privéchats, groepen en uw contacten zijn niet toegankelijk voor serverbeheerders.
+
+ Private and secure messaging.
No comment provided by engineer.
@@ -8032,6 +8046,14 @@ chat item action
Instellingen zijn gewijzigd.
alert message
+
+ Setup notifications
+ No comment provided by engineer.
+
+
+ Setup routers
+ No comment provided by engineer.
+
Shape profile images
Vorm profiel afbeeldingen
@@ -8788,9 +8810,9 @@ Het kan gebeuren vanwege een bug of wanneer de verbinding is aangetast.
De versleuteling werkt en de nieuwe versleutelingsovereenkomst is niet vereist. Dit kan leiden tot verbindingsfouten!
No comment provided by engineer.
-
- The future of messaging
- De volgende generatie privéberichten
+
+ The first network where you own
+your contacts and groups.
No comment provided by engineer.
@@ -8827,6 +8849,10 @@ Het kan gebeuren vanwege een bug of wanneer de verbinding is aangetast.
De oude database is niet verwijderd tijdens de migratie, deze kan worden verwijderd.
No comment provided by engineer.
+
+ The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it.
+ No comment provided by engineer.
+
The same conditions will apply to operator **%@**.
Dezelfde voorwaarden gelden voor operator **%@**.
@@ -8872,6 +8898,14 @@ Het kan gebeuren vanwege een bug of wanneer de verbinding is aangetast.
Thema's
No comment provided by engineer.
+
+ Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible.
+ No comment provided by engineer.
+
+
+ There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected.
+ No comment provided by engineer.
+
These conditions will also apply for: **%@**.
Deze voorwaarden zijn ook van toepassing op: **%@**.
@@ -9739,6 +9773,10 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak
Wanneer je een incognito profiel met iemand deelt, wordt dit profiel gebruikt voor de groepen waarvoor ze je uitnodigen.
No comment provided by engineer.
+
+ Why SimpleX is built.
+ No comment provided by engineer.
+
WiFi
Wifi
@@ -9998,6 +10036,12 @@ Deelnameverzoek herhalen?
Je kunt geen berichten versturen!
alert title
+
+ You commit to:
+- Only legal content in public groups
+- Respect other users - no spam
+ No comment provided by engineer.
+
You connected to the channel via this relay link.
No comment provided by engineer.
@@ -10007,11 +10051,6 @@ Deelnameverzoek herhalen?
U kon niet worden geverifieerd; probeer het opnieuw.
No comment provided by engineer.
-
- You decide who can connect.
- Jij bepaalt wie er verbinding mag maken.
- No comment provided by engineer.
-
You have already requested connection!
Repeat connection request?
@@ -10079,6 +10118,10 @@ Verbindingsverzoek herhalen?
U zou meldingen moeten ontvangen.
token info
+
+ You were born without an account
+ No comment provided by engineer.
+
You will be able to send messages **only after your request is accepted**.
No comment provided by engineer.
@@ -10213,6 +10256,10 @@ Verbindingsverzoek herhalen?
Uw contacten blijven verbonden.
No comment provided by engineer.
+
+ Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public.
+ No comment provided by engineer.
+
Your credentials may be sent unencrypted.
Uw inloggegevens worden mogelijk niet-versleuteld verzonden.
@@ -10232,6 +10279,10 @@ Verbindingsverzoek herhalen?
Your group
No comment provided by engineer.
+
+ Your network
+ No comment provided by engineer.
+
Your preferences
Jouw voorkeuren
diff --git a/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff b/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff
index 65a5c638fe..8aa9d4d9ff 100644
--- a/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff
+++ b/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff
@@ -1118,11 +1118,6 @@ swipe action
Odbierz połączenie
No comment provided by engineer.
-
- Anybody can host servers.
- Każdy może hostować serwery.
- No comment provided by engineer.
-
App build: %@
Kompilacja aplikacji: %@
@@ -1328,6 +1323,21 @@ swipe action
Zły hash wiadomości
No comment provided by engineer.
+
+ Be free
+in your network
+ No comment provided by engineer.
+
+
+ Be free in your network.
+ Ciesz się swobodą w swojej sieci.
+ No comment provided by engineer.
+
+
+ Because we destroyed the power to know who you are. So that your power can never be taken.
+ Ponieważ zniszczyliśmy moc pozwalającą poznać, kim jesteś. Więc twoja moc nigdy nie będzie Ci odebrana.
+ No comment provided by engineer.
+
Better calls
Lepsze połączenia
@@ -1511,15 +1521,6 @@ swipe action
Według profilu czatu (domyślnie) lub [według połączenia](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).
No comment provided by engineer.
-
- By using SimpleX Chat you agree to:
-- send only legal content in public groups.
-- respect other users – no spam.
- Korzystając z SimpleX Chat, zgadzasz się:
-- wysyłać tylko legalne treści w grupach publicznych.
-- szanować innych użytkowników – nie spamować.
- No comment provided by engineer.
-
Call already ended!
Połączenie już zakończone!
@@ -2050,11 +2051,6 @@ chat toolbar
Configure relays
No comment provided by engineer.
-
- Configure server operators
- Skonfiguruj operatorów serwerów
- No comment provided by engineer.
-
Confirm
Potwierdź
@@ -2673,11 +2669,6 @@ To jest twój jednorazowy link!
Dostarczenie debugowania
No comment provided by engineer.
-
- Decentralized
- Zdecentralizowane
- No comment provided by engineer.
-
Decode link
relay test step
@@ -3528,6 +3519,10 @@ chat item action
Wprowadź hasło powyżej, aby pokazać!
No comment provided by engineer.
+
+ Enter profile name...
+ No comment provided by engineer.
+
Enter relay name…
No comment provided by engineer.
@@ -4434,6 +4429,10 @@ Błąd: %2$@
Otrzymuj powiadomienia, gdy ktoś wspomni o Tobie.
No comment provided by engineer.
+
+ Get started
+ No comment provided by engineer.
+
Good afternoon!
Dzień dobry!
@@ -4708,11 +4707,6 @@ Błąd: %2$@
Natychmiast
No comment provided by engineer.
-
- Immune to spam
- Odporność na spam i nadużycia
- No comment provided by engineer.
-
Import
Importuj
@@ -5603,16 +5597,15 @@ To jest twój link do grupy %@!
Wiadomości, pliki i połączenia są chronione przez **kwantowo odporne szyfrowanie end-to-end** z doskonałym utajnianiem z wyprzedzeniem i odzyskiem po złamaniu.
No comment provided by engineer.
+
+ Migrate
+ No comment provided by engineer.
+
Migrate device
Zmigruj urządzenie
No comment provided by engineer.
-
- Migrate from another device
- Zmigruj z innego urządzenia
- No comment provided by engineer.
-
Migrate here
Zmigruj tutaj
@@ -5728,6 +5721,11 @@ To jest twój link do grupy %@!
Nazwa
swipe action
+
+ Network
+commitments
+ No comment provided by engineer.
+
Network & servers
Sieć i serwery
@@ -5762,6 +5760,11 @@ To jest twój link do grupy %@!
Operator sieci
No comment provided by engineer.
+
+ Network routers cannot know
+who talks to whom
+ No comment provided by engineer.
+
Network settings
Ustawienia sieci
@@ -5880,6 +5883,11 @@ To jest twój link do grupy %@!
Nie
No comment provided by engineer.
+
+ No account. No phone. No email. No ID.
+The most secure encryption.
+ No comment provided by engineer.
+
No active relays
No comment provided by engineer.
@@ -6042,15 +6050,20 @@ To jest twój link do grupy %@!
Brak nieprzeczytanych czatów
No comment provided by engineer.
-
- No user identifiers.
- Brak identyfikatorów użytkownika.
+
+ Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life.
+ Nikt nie śledził twoich rozmów. Nikt nie rysował mapy miejsc, w których byłeś. Prywatność nigdy nie była funkcją - była sposobem na życie.
No comment provided by engineer.
Non-profit governance
No comment provided by engineer.
+
+ Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign.
+ Nie chodzi o lepszy zamek w drzwiach kogoś innego. Nie chodzi o milszego właściciela, który szanuje twoją prywatność, ale nadal prowadzi rejestr wszystkich odwiedzających. Nie jesteś gościem. Jesteś w domu. Żaden król nie może do niego wejść - jesteś suwerenem.
+ No comment provided by engineer.
+
Not all relays connected
alert title
@@ -6131,6 +6144,10 @@ new chat action
Stara baza danych
No comment provided by engineer.
+
+ On your phone, not on any server.
+ No comment provided by engineer.
+
One-time invitation link
Jednorazowy link zaproszenia
@@ -6376,6 +6393,13 @@ alert button
Serwer Operatora
alert title
+
+ Operators commit to:
+- Be independent
+- Minimize metadata usage
+- Run verified open-source code
+ No comment provided by engineer.
+
Or import archive file
Lub zaimportuj plik archiwalny
@@ -6699,18 +6723,12 @@ Błąd: %@
Polityka prywatności i warunki korzystania.
No comment provided by engineer.
-
- Privacy redefined
- Redefinicja prywatności
- No comment provided by engineer.
-
Privacy: for owners and subscribers.
No comment provided by engineer.
-
- Private chats, groups and your contacts are not accessible to server operators.
- Prywatne czaty, grupy i Twoje kontakty nie są dostępne dla operatorów serwerów.
+
+ Private and secure messaging.
No comment provided by engineer.
@@ -8109,6 +8127,14 @@ chat item action
Ustawienia zostały zmienione.
alert message
+
+ Setup notifications
+ No comment provided by engineer.
+
+
+ Setup routers
+ No comment provided by engineer.
+
Shape profile images
Kształtuj obrazy profilowe
@@ -8876,9 +8902,9 @@ Może się to zdarzyć z powodu jakiegoś błędu lub gdy połączenie jest skom
Szyfrowanie działa, a nowe uzgodnienie szyfrowania nie jest wymagane. Może to spowodować błędy w połączeniu!
No comment provided by engineer.
-
- The future of messaging
- Następna generacja prywatnych wiadomości
+
+ The first network where you own
+your contacts and groups.
No comment provided by engineer.
@@ -8916,6 +8942,11 @@ Może się to zdarzyć z powodu jakiegoś błędu lub gdy połączenie jest skom
Stara baza danych nie została usunięta podczas migracji, można ją usunąć.
No comment provided by engineer.
+
+ The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it.
+ Najstarsza ludzka wolność - możliwość rozmowy z inną osobą bez bycia obserwowanym - opiera się na infrastrukturze, która nie może jej zdradzić.
+ No comment provided by engineer.
+
The same conditions will apply to operator **%@**.
Te same warunki będą miały zastosowanie do operatora **%@**.
@@ -8961,6 +8992,16 @@ Może się to zdarzyć z powodu jakiegoś błędu lub gdy połączenie jest skom
Motywy
No comment provided by engineer.
+
+ Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible.
+ Następnie przenieśliśmy się do sieci, a każda platforma prosiła o podanie danych osobowych - imienia i nazwiska, numeru telefonu, znajomych. Zaakceptowaliśmy fakt, że ceną za możliwość komunikowania się z innymi jest ujawnienie komuś, z kim rozmawiamy. Tak było w przypadku każdego pokolenia, ludzi i technologii - telefonu, poczty elektronicznej, komunikatorów, mediów społecznościowych. Wydawało się to jedyną możliwą opcją.
+ No comment provided by engineer.
+
+
+ There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected.
+ Jest jeszcze inny sposób. Sieć bez numerów telefonów. Bez nazw użytkowników. Bez kont. Bez jakichkolwiek tożsamości użytkowników. Sieć, która łączy ludzi i przesyła zaszyfrowane wiadomości, nie wiedząc, kto jest podłączony.
+ No comment provided by engineer.
+
These conditions will also apply for: **%@**.
Warunki te będą miały również zastosowanie w przypadku: **%@**.
@@ -9842,6 +9883,10 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc
Gdy udostępnisz komuś profil incognito, będzie on używany w grupach, do których Cię zaprosi.
No comment provided by engineer.
+
+ Why SimpleX is built.
+ No comment provided by engineer.
+
WiFi
WiFi
@@ -10103,6 +10148,12 @@ Powtórzyć prośbę dołączenia?
Nie możesz wysyłać wiadomości!
alert title
+
+ You commit to:
+- Only legal content in public groups
+- Respect other users - no spam
+ No comment provided by engineer.
+
You connected to the channel via this relay link.
No comment provided by engineer.
@@ -10112,11 +10163,6 @@ Powtórzyć prośbę dołączenia?
Nie można zweryfikować użytkownika; proszę spróbować ponownie.
No comment provided by engineer.
-
- You decide who can connect.
- Ty decydujesz, kto może się połączyć.
- No comment provided by engineer.
-
You have already requested connection!
Repeat connection request?
@@ -10184,6 +10230,11 @@ Powtórzyć prośbę połączenia?
Powinieneś otrzymywać powiadomienia.
token info
+
+ You were born without an account
+ Urodziłeś się bez konta.
+ No comment provided by engineer.
+
You will be able to send messages **only after your request is accepted**.
Będziesz mógł wysyłać wiadomości **dopiero po zaakceptowaniu Twojej prośby**.
@@ -10322,6 +10373,11 @@ Powtórzyć prośbę połączenia?
Twoje kontakty pozostaną połączone.
No comment provided by engineer.
+
+ Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public.
+ Twoje rozmowy należą do Ciebie, tak jak zawsze było przed pojawieniem się Internetu. Sieć nie jest miejscem, które odwiedzasz. Jest miejscem, które tworzysz i które należy do Ciebie. Nikt nie może Ci tego odebrać, niezależnie od tego, czy jest to miejsce prywatne, czy publiczne.
+ No comment provided by engineer.
+
Your credentials may be sent unencrypted.
Twoje poświadczenia mogą zostać wysłane niezaszyfrowane.
@@ -10342,6 +10398,10 @@ Powtórzyć prośbę połączenia?
Twoja grupa
No comment provided by engineer.
+
+ Your network
+ No comment provided by engineer.
+
Your preferences
Twoje preferencje
diff --git a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff
index a9f194b609..ae1e9f411a 100644
--- a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff
+++ b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff
@@ -1117,11 +1117,6 @@ swipe action
Принять звонок
No comment provided by engineer.
-
- Anybody can host servers.
- Кто угодно может запустить сервер.
- No comment provided by engineer.
-
App build: %@
Сборка приложения: %@
@@ -1326,6 +1321,21 @@ swipe action
Ошибка хэш сообщения
No comment provided by engineer.
+
+ Be free
+in your network
+ No comment provided by engineer.
+
+
+ Be free in your network.
+ Будь свободен в своей сети.
+ No comment provided by engineer.
+
+
+ Because we destroyed the power to know who you are. So that your power can never be taken.
+ Потому что мы разрушили саму возможность узнать, кто вы. Чтобы вашу свободу невозможно было отнять.
+ No comment provided by engineer.
+
Better calls
Улучшенные звонки
@@ -1509,15 +1519,6 @@ swipe action
По профилю чата или [по соединению](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (БЕТА).
No comment provided by engineer.
-
- By using SimpleX Chat you agree to:
-- send only legal content in public groups.
-- respect other users – no spam.
- Используя SimpleX Chat, Вы согласны:
-- отправлять только законные сообщения в публичных группах.
-- уважать других пользователей – не отправлять спам.
- No comment provided by engineer.
-
Call already ended!
Звонок уже завершен!
@@ -2048,11 +2049,6 @@ chat toolbar
Configure relays
No comment provided by engineer.
-
- Configure server operators
- Настроить операторов серверов
- No comment provided by engineer.
-
Confirm
Подтвердить
@@ -2670,11 +2666,6 @@ This is your own one-time link!
Отладка доставки
No comment provided by engineer.
-
- Decentralized
- Децентрализованный
- No comment provided by engineer.
-
Decode link
relay test step
@@ -3523,6 +3514,10 @@ chat item action
Введите пароль выше, чтобы раскрыть!
No comment provided by engineer.
+
+ Enter profile name...
+ No comment provided by engineer.
+
Enter relay name…
No comment provided by engineer.
@@ -4428,6 +4423,10 @@ Error: %2$@
Уведомления, когда Вас упомянули.
No comment provided by engineer.
+
+ Get started
+ No comment provided by engineer.
+
Good afternoon!
Добрый день!
@@ -4700,11 +4699,6 @@ Error: %2$@
Сразу
No comment provided by engineer.
-
- Immune to spam
- Защищен от спама
- No comment provided by engineer.
-
Import
Импортировать
@@ -5591,16 +5585,15 @@ This is your link for group %@!
Сообщения, файлы и звонки защищены **квантово-устойчивым end-to-end шифрованием** с прямой секретностью (PFS), правдоподобным отрицанием и восстановлением от взлома.
No comment provided by engineer.
+
+ Migrate
+ No comment provided by engineer.
+
Migrate device
Мигрировать устройство
No comment provided by engineer.
-
- Migrate from another device
- Миграция с другого устройства
- No comment provided by engineer.
-
Migrate here
Мигрировать сюда
@@ -5716,6 +5709,11 @@ This is your link for group %@!
Имя
swipe action
+
+ Network
+commitments
+ No comment provided by engineer.
+
Network & servers
Сеть и серверы
@@ -5750,6 +5748,11 @@ This is your link for group %@!
Оператор сети
No comment provided by engineer.
+
+ Network routers cannot know
+who talks to whom
+ No comment provided by engineer.
+
Network settings
Настройки сети
@@ -5868,6 +5871,11 @@ This is your link for group %@!
Нет
No comment provided by engineer.
+
+ No account. No phone. No email. No ID.
+The most secure encryption.
+ No comment provided by engineer.
+
No active relays
No comment provided by engineer.
@@ -6030,15 +6038,20 @@ This is your link for group %@!
Нет непрочитанных чатов
No comment provided by engineer.
-
- No user identifiers.
- Без идентификаторов пользователей.
+
+ Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life.
+ Никто не отслеживал ваши разговоры. Никто не составлял карту ваших перемещений. Конфиденциальность не была функцией - это был образ жизни.
No comment provided by engineer.
Non-profit governance
No comment provided by engineer.
+
+ Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign.
+ Не более надёжный замок на чужой двери. Не более вежливый хозяин, который уважает вашу частную жизнь, но всё равно ведёт учёт всех посетителей. Вы не гость. Вы у себя дома. Ни один король не войдёт в ваш дом - вы суверенны.
+ No comment provided by engineer.
+
Not all relays connected
alert title
@@ -6119,6 +6132,10 @@ new chat action
Предыдущая версия данных чата
No comment provided by engineer.
+
+ On your phone, not on any server.
+ No comment provided by engineer.
+
One-time invitation link
Одноразовая ссылка
@@ -6364,6 +6381,13 @@ alert button
Сервер оператора
alert title
+
+ Operators commit to:
+- Be independent
+- Minimize metadata usage
+- Run verified open-source code
+ No comment provided by engineer.
+
Or import archive file
Или импортировать файл архива
@@ -6687,18 +6711,12 @@ Error: %@
Политика конфиденциальности и условия использования.
No comment provided by engineer.
-
- Privacy redefined
- Более конфиденциальный
- No comment provided by engineer.
-
Privacy: for owners and subscribers.
No comment provided by engineer.
-
- Private chats, groups and your contacts are not accessible to server operators.
- Частные разговоры, группы и Ваши контакты недоступны для операторов серверов.
+
+ Private and secure messaging.
No comment provided by engineer.
@@ -8091,6 +8109,14 @@ chat item action
Настройки были изменены.
alert message
+
+ Setup notifications
+ No comment provided by engineer.
+
+
+ Setup routers
+ No comment provided by engineer.
+
Shape profile images
Форма картинок профилей
@@ -8858,9 +8884,9 @@ It can happen because of some bug or when the connection is compromised.Шифрование работает, и новое соглашение не требуется. Это может привести к ошибкам соединения!
No comment provided by engineer.
-
- The future of messaging
- Будущее коммуникаций
+
+ The first network where you own
+your contacts and groups.
No comment provided by engineer.
@@ -8898,6 +8924,11 @@ It can happen because of some bug or when the connection is compromised.Предыдущая версия данных чата не удалена при перемещении, её можно удалить.
No comment provided by engineer.
+
+ The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it.
+ Древнейшая человеческая свобода - говорить с другим человеком без слежки - построенная на инфраструктуре, которая не может её предать.
+ No comment provided by engineer.
+
The same conditions will apply to operator **%@**.
Те же самые условия будут приняты для оператора **%@**.
@@ -8943,6 +8974,16 @@ It can happen because of some bug or when the connection is compromised.Темы
No comment provided by engineer.
+
+ Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible.
+ Потом мы вышли в интернет, и каждая платформа попросила частичку вас - ваше имя, ваш номер, ваших друзей. Мы смирились с тем, что за возможность общаться приходится отдавать информацию о том, с кем мы общаемся. Каждое поколение людей и технологий жило так - телефон, электронная почта, мессенджеры, социальные сети. Казалось, что другого пути нет.
+ No comment provided by engineer.
+
+
+ There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected.
+ Другой путь есть. Сеть без номеров телефонов. Без имён пользователей. Без аккаунтов. Без каких-либо идентификаторов пользователей. Сеть, которая соединяет людей и передаёт зашифрованные сообщения, не зная, кто с кем связан.
+ No comment provided by engineer.
+
These conditions will also apply for: **%@**.
Эти условия также будут применены к: **%@**.
@@ -9823,6 +9864,10 @@ To connect, please ask your contact to create another connection link and check
Когда Вы соединены с контактом инкогнито, тот же самый инкогнито профиль будет использоваться для групп с этим контактом.
No comment provided by engineer.
+
+ Why SimpleX is built.
+ No comment provided by engineer.
+
WiFi
WiFi
@@ -10084,6 +10129,12 @@ Repeat join request?
Вы не можете отправлять сообщения!
alert title
+
+ You commit to:
+- Only legal content in public groups
+- Respect other users - no spam
+ No comment provided by engineer.
+
You connected to the channel via this relay link.
No comment provided by engineer.
@@ -10093,11 +10144,6 @@ Repeat join request?
Верификация не удалась; пожалуйста, попробуйте ещё раз.
No comment provided by engineer.
-
- You decide who can connect.
- Вы определяете, кто может соединиться.
- No comment provided by engineer.
-
You have already requested connection!
Repeat connection request?
@@ -10165,6 +10211,11 @@ Repeat connection request?
Вы должны получать уведомления.
token info
+
+ You were born without an account
+ Вы родились без аккаунта.
+ No comment provided by engineer.
+
You will be able to send messages **only after your request is accepted**.
Вы сможете отправлять сообщения **только после того как Ваш запрос будет принят**.
@@ -10303,6 +10354,11 @@ Repeat connection request?
Ваши контакты сохранятся.
No comment provided by engineer.
+
+ Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public.
+ Ваши разговоры принадлежат вам, как это всегда было до интернета. Сеть - это не место, куда вы приходите. Это место, которое вы создаёте и которым владеете. И никто не может это у вас отнять, делаете ли вы его конфиденциальным или публичным.
+ No comment provided by engineer.
+
Your credentials may be sent unencrypted.
Ваши учетные данные могут быть отправлены в незашифрованном виде.
@@ -10323,6 +10379,10 @@ Repeat connection request?
Ваша группа
No comment provided by engineer.
+
+ Your network
+ No comment provided by engineer.
+
Your preferences
Ваши предпочтения
diff --git a/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff b/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff
index 8c45cb3e95..68dfc223c0 100644
--- a/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff
+++ b/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff
@@ -1025,11 +1025,6 @@ swipe action
รับสาย
No comment provided by engineer.
-
- Anybody can host servers.
- โปรโตคอลและโค้ดโอเพ่นซอร์ส – ใคร ๆ ก็สามารถเปิดใช้เซิร์ฟเวอร์ได้
- No comment provided by engineer.
-
App build: %@
รุ่นแอป: %@
@@ -1216,6 +1211,19 @@ swipe action
แฮชข้อความไม่ดี
No comment provided by engineer.
+
+ Be free
+in your network
+ No comment provided by engineer.
+
+
+ Be free in your network.
+ No comment provided by engineer.
+
+
+ Because we destroyed the power to know who you are. So that your power can never be taken.
+ No comment provided by engineer.
+
Better calls
No comment provided by engineer.
@@ -1371,12 +1379,6 @@ swipe action
ตามโปรไฟล์แชท (ค่าเริ่มต้น) หรือ [โดยการเชื่อมต่อ](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (เบต้า)
No comment provided by engineer.
-
- By using SimpleX Chat you agree to:
-- send only legal content in public groups.
-- respect other users – no spam.
- No comment provided by engineer.
-
Call already ended!
สิ้นสุดการโทรแล้ว!
@@ -1859,10 +1861,6 @@ chat toolbar
Configure relays
No comment provided by engineer.
-
- Configure server operators
- No comment provided by engineer.
-
Confirm
ยืนยัน
@@ -2418,11 +2416,6 @@ This is your own one-time link!
Debug delivery
No comment provided by engineer.
-
- Decentralized
- กระจายอำนาจแล้ว
- No comment provided by engineer.
-
Decode link
relay test step
@@ -3204,6 +3197,10 @@ chat item action
ใส่รหัสผ่านด้านบนเพื่อแสดง!
No comment provided by engineer.
+
+ Enter profile name...
+ No comment provided by engineer.
+
Enter relay name…
No comment provided by engineer.
@@ -4016,6 +4013,10 @@ Error: %2$@
Get notified when mentioned.
No comment provided by engineer.
+
+ Get started
+ No comment provided by engineer.
+
Good afternoon!
message preview
@@ -4275,11 +4276,6 @@ Error: %2$@
โดยทันที
No comment provided by engineer.
-
- Immune to spam
- มีภูมิคุ้มกันต่อสแปมและการละเมิด
- No comment provided by engineer.
-
Import
นำเข้า
@@ -5087,12 +5083,12 @@ This is your link for group %@!
Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.
No comment provided by engineer.
-
- Migrate device
+
+ Migrate
No comment provided by engineer.
-
- Migrate from another device
+
+ Migrate device
No comment provided by engineer.
@@ -5200,6 +5196,11 @@ This is your link for group %@!
ชื่อ
swipe action
+
+ Network
+commitments
+ No comment provided by engineer.
+
Network & servers
เครือข่ายและเซิร์ฟเวอร์
@@ -5229,6 +5230,11 @@ This is your link for group %@!
Network operator
No comment provided by engineer.
+
+ Network routers cannot know
+who talks to whom
+ No comment provided by engineer.
+
Network settings
การตั้งค่าเครือข่าย
@@ -5336,6 +5342,11 @@ This is your link for group %@!
เลขที่
No comment provided by engineer.
+
+ No account. No phone. No email. No ID.
+The most secure encryption.
+ No comment provided by engineer.
+
No active relays
No comment provided by engineer.
@@ -5478,15 +5489,18 @@ This is your link for group %@!
No unread chats
No comment provided by engineer.
-
- No user identifiers.
- แพลตฟอร์มแรกที่ไม่มีตัวระบุผู้ใช้ - ถูกออกแบบให้เป็นส่วนตัว
+
+ Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life.
No comment provided by engineer.
Non-profit governance
No comment provided by engineer.
+
+ Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign.
+ No comment provided by engineer.
+
Not all relays connected
alert title
@@ -5559,6 +5573,10 @@ new chat action
ฐานข้อมูลเก่า
No comment provided by engineer.
+
+ On your phone, not on any server.
+ No comment provided by engineer.
+
One-time invitation link
ลิงก์คำเชิญแบบใช้ครั้งเดียว
@@ -5779,6 +5797,13 @@ alert button
Operator server
alert title
+
+ Operators commit to:
+- Be independent
+- Minimize metadata usage
+- Run verified open-source code
+ No comment provided by engineer.
+
Or import archive file
No comment provided by engineer.
@@ -6070,17 +6095,12 @@ Error: %@
Privacy policy and conditions of use.
No comment provided by engineer.
-
- Privacy redefined
- นิยามความเป็นส่วนตัวใหม่
- No comment provided by engineer.
-
Privacy: for owners and subscribers.
No comment provided by engineer.
-
- Private chats, groups and your contacts are not accessible to server operators.
+
+ Private and secure messaging.
No comment provided by engineer.
@@ -7344,6 +7364,14 @@ chat item action
Settings were changed.
alert message
+
+ Setup notifications
+ No comment provided by engineer.
+
+
+ Setup routers
+ No comment provided by engineer.
+
Shape profile images
No comment provided by engineer.
@@ -8043,9 +8071,9 @@ It can happen because of some bug or when the connection is compromised.encryption กำลังทำงานและไม่จำเป็นต้องใช้ข้อตกลง encryption ใหม่ อาจทำให้การเชื่อมต่อผิดพลาดได้!
No comment provided by engineer.
-
- The future of messaging
- การส่งข้อความส่วนตัวรุ่นต่อไป
+
+ The first network where you own
+your contacts and groups.
No comment provided by engineer.
@@ -8080,6 +8108,10 @@ It can happen because of some bug or when the connection is compromised.ฐานข้อมูลเก่าไม่ได้ถูกลบในระหว่างการย้ายข้อมูล แต่สามารถลบได้
No comment provided by engineer.
+
+ The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it.
+ No comment provided by engineer.
+
The same conditions will apply to operator **%@**.
No comment provided by engineer.
@@ -8119,6 +8151,14 @@ It can happen because of some bug or when the connection is compromised.Themes
No comment provided by engineer.
+
+ Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible.
+ No comment provided by engineer.
+
+
+ There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected.
+ No comment provided by engineer.
+
These conditions will also apply for: **%@**.
No comment provided by engineer.
@@ -8906,6 +8946,10 @@ To connect, please ask your contact to create another connection link and check
เมื่อคุณแชร์โปรไฟล์ที่ไม่ระบุตัวตนกับใครสักคน โปรไฟล์นี้จะใช้สำหรับกลุ่มที่พวกเขาเชิญคุณ
No comment provided by engineer.
+
+ Why SimpleX is built.
+ No comment provided by engineer.
+
WiFi
No comment provided by engineer.
@@ -9136,6 +9180,12 @@ Repeat join request?
คุณไม่สามารถส่งข้อความได้!
alert title
+
+ You commit to:
+- Only legal content in public groups
+- Respect other users - no spam
+ No comment provided by engineer.
+
You connected to the channel via this relay link.
No comment provided by engineer.
@@ -9145,11 +9195,6 @@ Repeat join request?
เราไม่สามารถตรวจสอบคุณได้ กรุณาลองอีกครั้ง.
No comment provided by engineer.
-
- You decide who can connect.
- ผู้คนสามารถเชื่อมต่อกับคุณผ่านลิงก์ที่คุณแบ่งปันเท่านั้น
- No comment provided by engineer.
-
You have already requested connection!
Repeat connection request?
@@ -9210,6 +9255,10 @@ Repeat connection request?
You should receive notifications.
token info
+
+ You were born without an account
+ No comment provided by engineer.
+
You will be able to send messages **only after your request is accepted**.
No comment provided by engineer.
@@ -9340,6 +9389,10 @@ Repeat connection request?
ผู้ติดต่อของคุณจะยังคงเชื่อมต่ออยู่
No comment provided by engineer.
+
+ Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public.
+ No comment provided by engineer.
+
Your credentials may be sent unencrypted.
No comment provided by engineer.
@@ -9358,6 +9411,10 @@ Repeat connection request?
Your group
No comment provided by engineer.
+
+ Your network
+ No comment provided by engineer.
+
Your preferences
การตั้งค่าของคุณ
diff --git a/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff b/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff
index ea9291a43a..1724c13c18 100644
--- a/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff
+++ b/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff
@@ -1117,11 +1117,6 @@ swipe action
Aramayı cevapla
No comment provided by engineer.
-
- Anybody can host servers.
- Açık kaynak protokolü ve kodu - herhangi biri sunucuları çalıştırabilir.
- No comment provided by engineer.
-
App build: %@
Uygulama sürümü: %@
@@ -1326,6 +1321,19 @@ swipe action
Kötü mesaj karması
No comment provided by engineer.
+
+ Be free
+in your network
+ No comment provided by engineer.
+
+
+ Be free in your network.
+ No comment provided by engineer.
+
+
+ Because we destroyed the power to know who you are. So that your power can never be taken.
+ No comment provided by engineer.
+
Better calls
Daha iyi aramalar
@@ -1509,15 +1517,6 @@ swipe action
Sohbet profiline göre (varsayılan) veya [bağlantıya göre](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).
No comment provided by engineer.
-
- By using SimpleX Chat you agree to:
-- send only legal content in public groups.
-- respect other users – no spam.
- SimpleX Chat'i kullanarak şunları kabul etmiş olursunuz:
-- herkese açık gruplarda yalnızca yasal içerik göndermek.
-- diğer kullanıcılara saygı göstermek – spam yapmamak.
- No comment provided by engineer.
-
Call already ended!
Arama çoktan bitti!
@@ -2048,11 +2047,6 @@ chat toolbar
Configure relays
No comment provided by engineer.
-
- Configure server operators
- Sunucu operatörlerini yapılandır
- No comment provided by engineer.
-
Confirm
Onayla
@@ -2670,11 +2664,6 @@ Bu senin kendi tek kullanımlık bağlantın!
Hata ayıklama teslimatı
No comment provided by engineer.
-
- Decentralized
- Merkezi Olmayan
- No comment provided by engineer.
-
Decode link
relay test step
@@ -3523,6 +3512,10 @@ chat item action
Göstermek için yukarıdaki şifreyi gir!
No comment provided by engineer.
+
+ Enter profile name...
+ No comment provided by engineer.
+
Enter relay name…
No comment provided by engineer.
@@ -4423,6 +4416,10 @@ Hata: %2$@
Bahsedildiğinde bildirim alın.
No comment provided by engineer.
+
+ Get started
+ No comment provided by engineer.
+
Good afternoon!
İyi öğlenler!
@@ -4695,11 +4692,6 @@ Hata: %2$@
Hemen
No comment provided by engineer.
-
- Immune to spam
- Spam ve kötüye kullanıma karşı bağışıklı
- No comment provided by engineer.
-
Import
İçe aktar
@@ -5587,16 +5579,15 @@ Bu senin grup için bağlantın %@!
Mesajlar, dosyalar ve aramalar **kuantum dirençli e2e şifreleme** ile mükemmel ileri gizlilik, inkar ve zorla girme kurtarma ile korunur.
No comment provided by engineer.
+
+ Migrate
+ No comment provided by engineer.
+
Migrate device
Cihazı taşıma
No comment provided by engineer.
-
- Migrate from another device
- Başka bir cihazdan geçiş yapın
- No comment provided by engineer.
-
Migrate here
Buraya göç edin
@@ -5712,6 +5703,11 @@ Bu senin grup için bağlantın %@!
İsim
swipe action
+
+ Network
+commitments
+ No comment provided by engineer.
+
Network & servers
Ağ & sunucular
@@ -5746,6 +5742,11 @@ Bu senin grup için bağlantın %@!
Ağ operatörü
No comment provided by engineer.
+
+ Network routers cannot know
+who talks to whom
+ No comment provided by engineer.
+
Network settings
Ağ ayarları
@@ -5864,6 +5865,11 @@ Bu senin grup için bağlantın %@!
Hayır
No comment provided by engineer.
+
+ No account. No phone. No email. No ID.
+The most secure encryption.
+ No comment provided by engineer.
+
No active relays
No comment provided by engineer.
@@ -6026,15 +6032,18 @@ Bu senin grup için bağlantın %@!
Okunmamış sohbet yok
No comment provided by engineer.
-
- No user identifiers.
- Herhangi bir kullanıcı tanımlayıcısı yok.
+
+ Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life.
No comment provided by engineer.
Non-profit governance
No comment provided by engineer.
+
+ Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign.
+ No comment provided by engineer.
+
Not all relays connected
alert title
@@ -6115,6 +6124,10 @@ new chat action
Eski veritabanı
No comment provided by engineer.
+
+ On your phone, not on any server.
+ No comment provided by engineer.
+
One-time invitation link
Tek zamanlı bağlantı daveti
@@ -6360,6 +6373,13 @@ alert button
Operatör sunucusu
alert title
+
+ Operators commit to:
+- Be independent
+- Minimize metadata usage
+- Run verified open-source code
+ No comment provided by engineer.
+
Or import archive file
Veya arşiv dosyasını içe aktar
@@ -6683,18 +6703,12 @@ Hata: %@
Gizlilik politikası ve kullanım koşulları.
No comment provided by engineer.
-
- Privacy redefined
- Gizlilik yeniden tanımlandı
- No comment provided by engineer.
-
Privacy: for owners and subscribers.
No comment provided by engineer.
-
- Private chats, groups and your contacts are not accessible to server operators.
- Özel sohbetler, gruplar ve kişilerinize sunucu operatörleri tarafından erişilemez.
+
+ Private and secure messaging.
No comment provided by engineer.
@@ -8087,6 +8101,14 @@ chat item action
Ayarlar değiştirildi.
alert message
+
+ Setup notifications
+ No comment provided by engineer.
+
+
+ Setup routers
+ No comment provided by engineer.
+
Shape profile images
Profil resimlerini şekillendir
@@ -8854,9 +8876,9 @@ Bazı hatalar nedeniyle veya bağlantı tehlikeye girdiğinde meydana gelebilir.
Şifreleme çalışıyor ve yeni şifreleme anlaşması gerekli değil. Bağlantı hatalarına neden olabilir!
No comment provided by engineer.
-
- The future of messaging
- Gizli mesajlaşmanın yeni nesli
+
+ The first network where you own
+your contacts and groups.
No comment provided by engineer.
@@ -8894,6 +8916,10 @@ Bazı hatalar nedeniyle veya bağlantı tehlikeye girdiğinde meydana gelebilir.
Eski veritabanı geçiş sırasında kaldırılmadı, silinebilir.
No comment provided by engineer.
+
+ The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it.
+ No comment provided by engineer.
+
The same conditions will apply to operator **%@**.
Aynı koşullar operatör **%@** için de geçerli olacaktır.
@@ -8939,6 +8965,14 @@ Bazı hatalar nedeniyle veya bağlantı tehlikeye girdiğinde meydana gelebilir.
Temalar
No comment provided by engineer.
+
+ Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible.
+ No comment provided by engineer.
+
+
+ There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected.
+ No comment provided by engineer.
+
These conditions will also apply for: **%@**.
Bu koşullar ayrıca şunlar için de geçerli olacaktır: **%@**.
@@ -9818,6 +9852,10 @@ Bağlanmak için lütfen kişinizden başka bir bağlantı oluşturmasını iste
Biriyle gizli bir profil paylaştığınızda, bu profil sizi davet ettikleri gruplar için kullanılacaktır.
No comment provided by engineer.
+
+ Why SimpleX is built.
+ No comment provided by engineer.
+
WiFi
WiFi
@@ -10077,6 +10115,12 @@ Katılma isteği tekrarlansın mı?
Mesajlar gönderemezsiniz!
alert title
+
+ You commit to:
+- Only legal content in public groups
+- Respect other users - no spam
+ No comment provided by engineer.
+
You connected to the channel via this relay link.
No comment provided by engineer.
@@ -10086,11 +10130,6 @@ Katılma isteği tekrarlansın mı?
Doğrulanamadınız; lütfen tekrar deneyin.
No comment provided by engineer.
-
- You decide who can connect.
- Kimin bağlanabileceğine siz karar verirsiniz.
- No comment provided by engineer.
-
You have already requested connection!
Repeat connection request?
@@ -10158,6 +10197,10 @@ Bağlantı isteği tekrarlansın mı?
Bildirim almanız gerekiyor.
token info
+
+ You were born without an account
+ No comment provided by engineer.
+
You will be able to send messages **only after your request is accepted**.
Mesaj gönderebilmek için **isteğinizin kabul edilmesini beklemelisiniz**.
@@ -10296,6 +10339,10 @@ Bağlantı isteği tekrarlansın mı?
Kişileriniz bağlı kalacaktır.
No comment provided by engineer.
+
+ Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public.
+ No comment provided by engineer.
+
Your credentials may be sent unencrypted.
Kimlik bilgileriniz şifrelenmeden gönderilebilir.
@@ -10316,6 +10363,10 @@ Bağlantı isteği tekrarlansın mı?
Grubunuz
No comment provided by engineer.
+
+ Your network
+ No comment provided by engineer.
+
Your preferences
Tercihleriniz
diff --git a/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff b/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff
index 1b71eecb96..122884486d 100644
--- a/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff
+++ b/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff
@@ -1115,11 +1115,6 @@ swipe action
Відповісти на дзвінок
No comment provided by engineer.
-
- Anybody can host servers.
- Кожен може хостити сервери.
- No comment provided by engineer.
-
App build: %@
Збірка програми: %@
@@ -1324,6 +1319,19 @@ swipe action
Поганий хеш повідомлення
No comment provided by engineer.
+
+ Be free
+in your network
+ No comment provided by engineer.
+
+
+ Be free in your network.
+ No comment provided by engineer.
+
+
+ Because we destroyed the power to know who you are. So that your power can never be taken.
+ No comment provided by engineer.
+
Better calls
Кращі дзвінки
@@ -1505,15 +1513,6 @@ swipe action
Через профіль чату (за замовчуванням) або [за з'єднанням](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).
No comment provided by engineer.
-
- By using SimpleX Chat you agree to:
-- send only legal content in public groups.
-- respect other users – no spam.
- Використовуючи SimpleX Chat, ви погоджуєтеся:
-- надсилати лише легальний контент у публічних групах.
-- поважати інших користувачів - без спаму.
- No comment provided by engineer.
-
Call already ended!
Дзвінок вже закінчився!
@@ -2044,11 +2043,6 @@ chat toolbar
Configure relays
No comment provided by engineer.
-
- Configure server operators
- Налаштувати операторів сервера
- No comment provided by engineer.
-
Confirm
Підтвердити
@@ -2665,11 +2659,6 @@ This is your own one-time link!
Доставка налагодження
No comment provided by engineer.
-
- Decentralized
- Децентралізований
- No comment provided by engineer.
-
Decode link
relay test step
@@ -3517,6 +3506,10 @@ chat item action
Введіть пароль вище, щоб показати!
No comment provided by engineer.
+
+ Enter profile name...
+ No comment provided by engineer.
+
Enter relay name…
No comment provided by engineer.
@@ -4415,6 +4408,10 @@ Error: %2$@
Отримуйте сповіщення, коли вас згадують.
No comment provided by engineer.
+
+ Get started
+ No comment provided by engineer.
+
Good afternoon!
Доброго дня!
@@ -4687,11 +4684,6 @@ Error: %2$@
Негайно
No comment provided by engineer.
-
- Immune to spam
- Імунітет до спаму та зловживань
- No comment provided by engineer.
-
Import
Імпорт
@@ -5577,16 +5569,15 @@ This is your link for group %@!
Повідомлення, файли та дзвінки захищені **квантово-стійким шифруванням e2e** з ідеальною секретністю переадресації, відмовою та відновленням після злому.
No comment provided by engineer.
+
+ Migrate
+ No comment provided by engineer.
+
Migrate device
Перенести пристрій
No comment provided by engineer.
-
- Migrate from another device
- Перехід з іншого пристрою
- No comment provided by engineer.
-
Migrate here
Мігруйте сюди
@@ -5702,6 +5693,11 @@ This is your link for group %@!
Ім'я
swipe action
+
+ Network
+commitments
+ No comment provided by engineer.
+
Network & servers
Мережа та сервери
@@ -5736,6 +5732,11 @@ This is your link for group %@!
Мережевий оператор
No comment provided by engineer.
+
+ Network routers cannot know
+who talks to whom
+ No comment provided by engineer.
+
Network settings
Налаштування мережі
@@ -5854,6 +5855,11 @@ This is your link for group %@!
Ні
No comment provided by engineer.
+
+ No account. No phone. No email. No ID.
+The most secure encryption.
+ No comment provided by engineer.
+
No active relays
No comment provided by engineer.
@@ -6016,15 +6022,18 @@ This is your link for group %@!
Немає непрочитаних чатів
No comment provided by engineer.
-
- No user identifiers.
- Ніяких ідентифікаторів користувачів.
+
+ Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life.
No comment provided by engineer.
Non-profit governance
No comment provided by engineer.
+
+ Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign.
+ No comment provided by engineer.
+
Not all relays connected
alert title
@@ -6105,6 +6114,10 @@ new chat action
Стара база даних
No comment provided by engineer.
+
+ On your phone, not on any server.
+ No comment provided by engineer.
+
One-time invitation link
Посилання на одноразове запрошення
@@ -6345,6 +6358,13 @@ alert button
Сервер оператора
alert title
+
+ Operators commit to:
+- Be independent
+- Minimize metadata usage
+- Run verified open-source code
+ No comment provided by engineer.
+
Or import archive file
Або імпортуйте архівний файл
@@ -6668,18 +6688,12 @@ Error: %@
Політика конфіденційності та умови використання.
No comment provided by engineer.
-
- Privacy redefined
- Конфіденційність переглянута
- No comment provided by engineer.
-
Privacy: for owners and subscribers.
No comment provided by engineer.
-
- Private chats, groups and your contacts are not accessible to server operators.
- Приватні чати, групи та ваші контакти недоступні для операторів сервера.
+
+ Private and secure messaging.
No comment provided by engineer.
@@ -8071,6 +8085,14 @@ chat item action
Налаштування були змінені.
alert message
+
+ Setup notifications
+ No comment provided by engineer.
+
+
+ Setup routers
+ No comment provided by engineer.
+
Shape profile images
Сформуйте зображення профілю
@@ -8837,9 +8859,9 @@ It can happen because of some bug or when the connection is compromised.Шифрування працює і нова угода про шифрування не потрібна. Це може призвести до помилок з'єднання!
No comment provided by engineer.
-
- The future of messaging
- Наступне покоління приватних повідомлень
+
+ The first network where you own
+your contacts and groups.
No comment provided by engineer.
@@ -8877,6 +8899,10 @@ It can happen because of some bug or when the connection is compromised.Стара база даних не була видалена під час міграції, її можна видалити.
No comment provided by engineer.
+
+ The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it.
+ No comment provided by engineer.
+
The same conditions will apply to operator **%@**.
Такі ж умови діятимуть і для оператора **%@**.
@@ -8922,6 +8948,14 @@ It can happen because of some bug or when the connection is compromised.Теми
No comment provided by engineer.
+
+ Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible.
+ No comment provided by engineer.
+
+
+ There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected.
+ No comment provided by engineer.
+
These conditions will also apply for: **%@**.
Ці умови також поширюються на: **%@**.
@@ -9799,6 +9833,10 @@ To connect, please ask your contact to create another connection link and check
Коли ви ділитеся з кимось своїм профілем інкогніто, цей профіль буде використовуватися для груп, до яких вас запрошують.
No comment provided by engineer.
+
+ Why SimpleX is built.
+ No comment provided by engineer.
+
WiFi
WiFi
@@ -10058,6 +10096,12 @@ Repeat join request?
Ви не можете надсилати повідомлення!
alert title
+
+ You commit to:
+- Only legal content in public groups
+- Respect other users - no spam
+ No comment provided by engineer.
+
You connected to the channel via this relay link.
No comment provided by engineer.
@@ -10067,11 +10111,6 @@ Repeat join request?
Вас не вдалося верифікувати, спробуйте ще раз.
No comment provided by engineer.
-
- You decide who can connect.
- Ви вирішуєте, хто може під'єднатися.
- No comment provided by engineer.
-
You have already requested connection!
Repeat connection request?
@@ -10139,6 +10178,10 @@ Repeat connection request?
Ви повинні отримувати сповіщення.
token info
+
+ You were born without an account
+ No comment provided by engineer.
+
You will be able to send messages **only after your request is accepted**.
Ви зможете надсилати повідомлення **тільки після того, як ваш запит буде прийнято**.
@@ -10277,6 +10320,10 @@ Repeat connection request?
Ваші контакти залишаться на зв'язку.
No comment provided by engineer.
+
+ Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public.
+ No comment provided by engineer.
+
Your credentials may be sent unencrypted.
Ваші облікові дані можуть бути надіслані незашифрованими.
@@ -10297,6 +10344,10 @@ Repeat connection request?
Ваша група
No comment provided by engineer.
+
+ Your network
+ No comment provided by engineer.
+
Your preferences
Ваші уподобання
diff --git a/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff b/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff
index 2d3342b15b..1b4771642e 100644
--- a/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff
+++ b/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff
@@ -1118,11 +1118,6 @@ swipe action
接听来电
No comment provided by engineer.
-
- Anybody can host servers.
- 任何人都可以托管服务器。
- No comment provided by engineer.
-
App build: %@
应用程序构建:%@
@@ -1328,6 +1323,21 @@ swipe action
错误消息散列
No comment provided by engineer.
+
+ Be free
+in your network
+ No comment provided by engineer.
+
+
+ Be free in your network.
+ 在你的网络中自由畅行。
+ No comment provided by engineer.
+
+
+ Because we destroyed the power to know who you are. So that your power can never be taken.
+ 因为我们摧毁了知道你是谁的权力,因而您的权利永远不会被夺走。
+ No comment provided by engineer.
+
Better calls
更佳的通话
@@ -1511,15 +1521,6 @@ swipe action
通过聊天资料(默认)或者[通过连接](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)。
No comment provided by engineer.
-
- By using SimpleX Chat you agree to:
-- send only legal content in public groups.
-- respect other users – no spam.
- 使用 SimpleX Chat 代表您同意:
-- 在公开群中只发送合法内容
-- 尊重其他用户 – 没有垃圾信息。
- No comment provided by engineer.
-
Call already ended!
通话已结束!
@@ -2050,11 +2051,6 @@ chat toolbar
Configure relays
No comment provided by engineer.
-
- Configure server operators
- 配置服务器运营方
- No comment provided by engineer.
-
Confirm
确认
@@ -2671,11 +2667,6 @@ This is your own one-time link!
调试交付
No comment provided by engineer.
-
- Decentralized
- 分散式
- No comment provided by engineer.
-
Decode link
relay test step
@@ -3525,6 +3516,10 @@ chat item action
在上面输入密码以显示!
No comment provided by engineer.
+
+ Enter profile name...
+ No comment provided by engineer.
+
Enter relay name…
No comment provided by engineer.
@@ -4430,6 +4425,10 @@ Error: %2$@
被提及时收到通知。
No comment provided by engineer.
+
+ Get started
+ No comment provided by engineer.
+
Good afternoon!
下午好!
@@ -4703,11 +4702,6 @@ Error: %2$@
立即
No comment provided by engineer.
-
- Immune to spam
- 不受垃圾和骚扰消息影响
- No comment provided by engineer.
-
Import
导入
@@ -5597,16 +5591,15 @@ This is your link for group %@!
消息、文件和通话受到 **抗量子 e2e 加密** 的保护,具有完全正向保密、否认和闯入恢复。
No comment provided by engineer.
+
+ Migrate
+ No comment provided by engineer.
+
Migrate device
迁移设备
No comment provided by engineer.
-
- Migrate from another device
- 从另一台设备迁移
- No comment provided by engineer.
-
Migrate here
迁移到此处
@@ -5722,6 +5715,11 @@ This is your link for group %@!
名称
swipe action
+
+ Network
+commitments
+ No comment provided by engineer.
+
Network & servers
网络和服务器
@@ -5756,6 +5754,11 @@ This is your link for group %@!
网络运营方
No comment provided by engineer.
+
+ Network routers cannot know
+who talks to whom
+ No comment provided by engineer.
+
Network settings
网络设置
@@ -5874,6 +5877,11 @@ This is your link for group %@!
否
No comment provided by engineer.
+
+ No account. No phone. No email. No ID.
+The most secure encryption.
+ No comment provided by engineer.
+
No active relays
No comment provided by engineer.
@@ -6036,15 +6044,20 @@ This is your link for group %@!
没有未读聊天
No comment provided by engineer.
-
- No user identifiers.
- 没有用户标识符。
+
+ Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life.
+ 没有人追踪你的谈话内容。没有人绘制你去过的地方的地图。隐私从来都不是一项功能--而是一种生活方式。
No comment provided by engineer.
Non-profit governance
No comment provided by engineer.
+
+ Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign.
+ 别人家的门锁再好也比不上这里。房东再好也比不上这里,他既尊重你的隐私,又保留着所有访客的记录。你不是客人,你是家。没有国王能闯入--你是主人。
+ No comment provided by engineer.
+
Not all relays connected
alert title
@@ -6125,6 +6138,10 @@ new chat action
旧的数据库
No comment provided by engineer.
+
+ On your phone, not on any server.
+ No comment provided by engineer.
+
One-time invitation link
一次性邀请链接
@@ -6370,6 +6387,13 @@ alert button
运营方服务器
alert title
+
+ Operators commit to:
+- Be independent
+- Minimize metadata usage
+- Run verified open-source code
+ No comment provided by engineer.
+
Or import archive file
或者导入或者导入压缩文件
@@ -6693,18 +6717,12 @@ Error: %@
隐私政策和使用条款。
No comment provided by engineer.
-
- Privacy redefined
- 重新定义隐私
- No comment provided by engineer.
-
Privacy: for owners and subscribers.
No comment provided by engineer.
-
- Private chats, groups and your contacts are not accessible to server operators.
- 服务器运营方无法访问私密聊天、群组和你的联系人。
+
+ Private and secure messaging.
No comment provided by engineer.
@@ -8101,6 +8119,14 @@ chat item action
设置已修改。
alert message
+
+ Setup notifications
+ No comment provided by engineer.
+
+
+ Setup routers
+ No comment provided by engineer.
+
Shape profile images
改变个人资料图形状
@@ -8867,9 +8893,9 @@ It can happen because of some bug or when the connection is compromised.加密正在运行,不需要新的加密协议。这可能会导致连接错误!
No comment provided by engineer.
-
- The future of messaging
- 下一代私密通讯软件
+
+ The first network where you own
+your contacts and groups.
No comment provided by engineer.
@@ -8907,6 +8933,11 @@ It can happen because of some bug or when the connection is compromised.旧数据库在迁移过程中没有被移除,可以删除。
No comment provided by engineer.
+
+ The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it.
+ 人类最古老的自由--与他人交谈而不被监视--建立在不会背叛它的基础设施之上。
+ No comment provided by engineer.
+
The same conditions will apply to operator **%@**.
No comment provided by engineer.
@@ -8950,6 +8981,16 @@ It can happen because of some bug or when the connection is compromised.主题
No comment provided by engineer.
+
+ Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible.
+ 然后我们转向线上,每个平台都要求你提供一些信息--你的姓名、电话号码、好友列表。我们接受了这样一个事实:与人交流的代价就是让别人知道我们在和谁交流。每一代人,每一代科技,都遵循着这样的模式--电话、电子邮件、即时通讯、社交媒体。这似乎是唯一可行的方式。
+ No comment provided by engineer.
+
+
+ There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected.
+ 还有另一种方法。一个没有电话号码、没有用户名、没有账户、没有任何用户身份的网络。一个连接人们并传输加密信息的网络,而无需知道谁连接了。
+ No comment provided by engineer.
+
These conditions will also apply for: **%@**.
这些条件将同样适用于: **%@**。
@@ -9830,6 +9871,10 @@ To connect, please ask your contact to create another connection link and check
当您与某人共享隐身聊天资料时,该资料将用于他们邀请您加入的群组。
No comment provided by engineer.
+
+ Why SimpleX is built.
+ No comment provided by engineer.
+
WiFi
WiFi
@@ -10091,6 +10136,12 @@ Repeat join request?
您无法发送消息!
alert title
+
+ You commit to:
+- Only legal content in public groups
+- Respect other users - no spam
+ No comment provided by engineer.
+
You connected to the channel via this relay link.
No comment provided by engineer.
@@ -10100,11 +10151,6 @@ Repeat join request?
您的身份无法验证,请再试一次。
No comment provided by engineer.
-
- You decide who can connect.
- 你决定谁可以连接。
- No comment provided by engineer.
-
You have already requested connection!
Repeat connection request?
@@ -10171,6 +10217,11 @@ Repeat connection request?
You should receive notifications.
token info
+
+ You were born without an account
+ 你生来就没有账户。
+ No comment provided by engineer.
+
You will be able to send messages **only after your request is accepted**.
**只有在你的请求被接受后**你才能发送消息。
@@ -10307,6 +10358,11 @@ Repeat connection request?
与您的联系人保持连接。
No comment provided by engineer.
+
+ Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public.
+ 你的对话内容始终属于你,就像互联网出现之前一样。网络不是一个你访问的地方,而是一个你创建并拥有的地方。无论你将其设为私密还是公开,任何人都无法将其夺走。
+ No comment provided by engineer.
+
Your credentials may be sent unencrypted.
你的凭据可能以未经加密的方式被发送。
@@ -10327,6 +10383,10 @@ Repeat connection request?
你的群
No comment provided by engineer.
+
+ Your network
+ No comment provided by engineer.
+
Your preferences
您的偏好设置
diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj
index 0de696d430..3c62d4e3c4 100644
--- a/apps/ios/SimpleX.xcodeproj/project.pbxproj
+++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj
@@ -249,6 +249,7 @@
D7F0E33929964E7E0068AF69 /* LZString in Frameworks */ = {isa = PBXBuildFile; productRef = D7F0E33829964E7E0068AF69 /* LZString */; };
E51CC1E62C62085600DB91FE /* OneHandUICard.swift in Sources */ = {isa = PBXBuildFile; fileRef = E51CC1E52C62085600DB91FE /* OneHandUICard.swift */; };
E559A0A12E3F77EE00B26F74 /* CommandsMenuView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E559A0A02E3F77EE00B26F74 /* CommandsMenuView.swift */; };
+ E5A0B0012F960000AAAA0001 /* YourNetwork.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5A0B0022F960000AAAA0001 /* YourNetwork.swift */; };
E5AEC0AB2F91A6EB00270665 /* CIChatLinkHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5AEC0AA2F91A6EA00270665 /* CIChatLinkHeader.swift */; };
E5AEC0AF2F91A73500270665 /* ComposeChatLinkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5AEC0AE2F91A73500270665 /* ComposeChatLinkView.swift */; };
E5C0BBE82F82B45500EA7527 /* SimpleXAssets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E5C0BBE72F82B45500EA7527 /* SimpleXAssets.xcassets */; };
@@ -621,6 +622,7 @@
D7AA2C3429A936B400737B40 /* MediaEncryption.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; name = MediaEncryption.playground; path = Shared/MediaEncryption.playground; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
E51CC1E52C62085600DB91FE /* OneHandUICard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OneHandUICard.swift; sourceTree = ""; };
E559A0A02E3F77EE00B26F74 /* CommandsMenuView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommandsMenuView.swift; sourceTree = ""; };
+ E5A0B0022F960000AAAA0001 /* YourNetwork.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YourNetwork.swift; sourceTree = ""; };
E5AEC0AA2F91A6EA00270665 /* CIChatLinkHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIChatLinkHeader.swift; sourceTree = ""; };
E5AEC0AE2F91A73500270665 /* ComposeChatLinkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeChatLinkView.swift; sourceTree = ""; };
E5C0BBE72F82B45500EA7527 /* SimpleXAssets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = SimpleXAssets.xcassets; sourceTree = ""; };
@@ -957,6 +959,7 @@
5C9A5BDA2871E05400A5B906 /* SetNotificationsMode.swift */,
5CBD285B29575B8E00EC2CF4 /* WhatsNewView.swift */,
640743602CD360E600158442 /* ChooseServerOperators.swift */,
+ E5A0B0022F960000AAAA0001 /* YourNetwork.swift */,
E5DBF1922F88169800E1D7FD /* ConnectBannerCard.swift */,
);
path = Onboarding;
@@ -1509,6 +1512,7 @@
640417CE2B29B8C200CCB412 /* NewChatView.swift in Sources */,
6440CA03288AECA70062C672 /* AddGroupMembersView.swift in Sources */,
640743612CD360E600158442 /* ChooseServerOperators.swift in Sources */,
+ E5A0B0012F960000AAAA0001 /* YourNetwork.swift in Sources */,
64A779FE2DC3AFF200FDEF2F /* MemberSupportChatToolbar.swift in Sources */,
5C3F1D58284363C400EC8A82 /* PrivacySettings.swift in Sources */,
E5E418012F83D2CA00252B9E /* OnboardingCards.swift in Sources */,
diff --git a/apps/ios/bg.lproj/Localizable.strings b/apps/ios/bg.lproj/Localizable.strings
index f0838bf9df..0391a3ebca 100644
--- a/apps/ios/bg.lproj/Localizable.strings
+++ b/apps/ios/bg.lproj/Localizable.strings
@@ -626,9 +626,6 @@ swipe action */
/* No comment provided by engineer. */
"Answer call" = "Отговор на повикване";
-/* No comment provided by engineer. */
-"Anybody can host servers." = "Протокол и код с отворен код – всеки може да оперира собствени сървъри.";
-
/* No comment provided by engineer. */
"App build: %@" = "Компилация на приложението: %@";
@@ -879,9 +876,6 @@ marked deleted chat item preview text */
/* 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)." = "Чрез чат профил (по подразбиране) или [чрез връзка](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (БЕТА).";
-/* No comment provided by engineer. */
-"By using SimpleX Chat you agree to:\n- send only legal content in public groups.\n- respect other users – no spam." = "С използването на SimpleX Chat вие се съгласявате със:\n- изпращане само на легално съдържание в публични групи.\n- уважение към другите потребители – без спам.";
-
/* No comment provided by engineer. */
"Call already ended!" = "Разговорът вече приключи!";
@@ -1059,7 +1053,8 @@ set passcode view */
/* No comment provided by engineer. */
"Chat will be deleted for you - this cannot be undone!" = "Чатът ще бъде изтрит за вас - това не може да бъде отменено!";
-/* chat toolbar */
+/* chat feature
+chat toolbar */
"Chat with admins" = "Чат с администраторите";
/* No comment provided by engineer. */
@@ -1173,9 +1168,6 @@ set passcode view */
/* No comment provided by engineer. */
"Configure ICE servers" = "Конфигурирай ICE сървъри";
-/* No comment provided by engineer. */
-"Configure server operators" = "Конфигуриране на сървърни оператори";
-
/* No comment provided by engineer. */
"Confirm" = "Потвърди";
@@ -1513,9 +1505,6 @@ server test step */
/* time unit */
"days" = "дни";
-/* No comment provided by engineer. */
-"Decentralized" = "Децентрализиран";
-
/* message decrypt error item */
"Decryption error" = "Грешка при декриптиране";
@@ -2405,9 +2394,6 @@ server test error */
/* No comment provided by engineer. */
"Immediately" = "Веднага";
-/* No comment provided by engineer. */
-"Immune to spam" = "Защитен от спам и злоупотреби";
-
/* No comment provided by engineer. */
"Import" = "Импортиране";
@@ -2816,9 +2802,6 @@ server test error */
/* No comment provided by engineer. */
"Migrate device" = "Мигрирай устройството";
-/* No comment provided by engineer. */
-"Migrate from another device" = "Мигриране от друго устройство";
-
/* No comment provided by engineer. */
"Migrate here" = "Мигрирай тук";
@@ -2993,9 +2976,6 @@ server test error */
/* copied message info in history */
"no text" = "няма текст";
-/* No comment provided by engineer. */
-"No user identifiers." = "Първата платформа без никакви потребителски идентификатори – поверителна по дизайн.";
-
/* No comment provided by engineer. */
"Not compatible!" = "Несъвместим!";
@@ -3242,9 +3222,6 @@ alert button */
/* No comment provided by engineer. */
"Privacy & security" = "Поверителност и сигурност";
-/* No comment provided by engineer. */
-"Privacy redefined" = "Поверителността преосмислена";
-
/* No comment provided by engineer. */
"Private filenames" = "Поверителни имена на файлове";
@@ -4000,9 +3977,6 @@ server test failure */
/* No comment provided by engineer. */
"The encryption is working and the new encryption agreement is not required. It may result in connection errors!" = "Криптирането работи и новото споразумение за криптиране не е необходимо. Това може да доведе до грешки при свързване!";
-/* No comment provided by engineer. */
-"The future of messaging" = "Ново поколение поверителни съобщения";
-
/* No comment provided by engineer. */
"The hash of the previous message is different." = "Хешът на предишното съобщение е различен.";
@@ -4537,9 +4511,6 @@ server test failure */
/* No comment provided by engineer. */
"You could not be verified; please try again." = "Не можахте да бъдете потвърдени; Моля, опитайте отново.";
-/* No comment provided by engineer. */
-"You decide who can connect." = "Хората могат да се свържат с вас само чрез ликовете, които споделяте.";
-
/* new chat sheet title */
"You have already requested connection!\nRepeat connection request?" = "Вече сте направили заявката за връзка!\nИзпрати отново заявката за свързване?";
diff --git a/apps/ios/cs.lproj/Localizable.strings b/apps/ios/cs.lproj/Localizable.strings
index e63d3c0cc9..7c970a63d0 100644
--- a/apps/ios/cs.lproj/Localizable.strings
+++ b/apps/ios/cs.lproj/Localizable.strings
@@ -572,9 +572,6 @@ swipe action */
/* No comment provided by engineer. */
"Answer call" = "Přijmout hovor";
-/* No comment provided by engineer. */
-"Anybody can host servers." = "Servery může provozovat kdokoli.";
-
/* No comment provided by engineer. */
"App build: %@" = "Sestavení aplikace: %@";
@@ -674,6 +671,12 @@ swipe action */
/* No comment provided by engineer. */
"Bad message ID" = "Špatné ID zprávy";
+/* No comment provided by engineer. */
+"Be free in your network." = "Buďte svobodní ve své síti.";
+
+/* No comment provided by engineer. */
+"Because we destroyed the power to know who you are. So that your power can never be taken." = "Protože jsme zničili sílu vědět, kdo jste. Aby vám vaši moc nikdo nemohl vzít.";
+
/* No comment provided by engineer. */
"Better calls" = "Lepší volání";
@@ -1170,9 +1173,6 @@ server test step */
/* time unit */
"days" = "dní";
-/* No comment provided by engineer. */
-"Decentralized" = "Decentralizované";
-
/* message decrypt error item */
"Decryption error" = "Chyba dešifrování";
@@ -1917,9 +1917,6 @@ server test error */
/* No comment provided by engineer. */
"Immediately" = "Ihned";
-/* No comment provided by engineer. */
-"Immune to spam" = "Odolná vůči spamu a zneužití";
-
/* No comment provided by engineer. */
"Import" = "Import";
@@ -2386,7 +2383,10 @@ server test error */
"no text" = "žádný text";
/* No comment provided by engineer. */
-"No user identifiers." = "Bez uživatelských identifikátorů.";
+"Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life." = "Nikdo nesledoval vaše konverzace. Nikdo nevytvořil mapu, kde jste byli. Soukromí nikdy nebylo funkcí - byl to způsob života.";
+
+/* No comment provided by engineer. */
+"Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign." = "Nejde o to mít lepší zámek na dveřích někoho jiného. Ani o to mít nájemce, který respektuje vaše soukromí, ale vede evidenci všech vašich návštěvníků. Nejste host. Jste doma. Ani král k vám nemůže vstoupit - jste suverén.";
/* No comment provided by engineer. */
"Notifications" = "Oznámení";
@@ -2583,9 +2583,6 @@ alert button */
/* No comment provided by engineer. */
"Privacy & security" = "Ochrana osobních údajů a zabezpečení";
-/* No comment provided by engineer. */
-"Privacy redefined" = "Nové vymezení soukromí";
-
/* No comment provided by engineer. */
"Private filenames" = "Soukromé názvy souborů";
@@ -3212,9 +3209,6 @@ server test failure */
/* No comment provided by engineer. */
"The encryption is working and the new encryption agreement is not required. It may result in connection errors!" = "Šifrování funguje a nové povolení šifrování není vyžadováno. To může vyvolat chybu v připojení!";
-/* No comment provided by engineer. */
-"The future of messaging" = "Nová generace soukromých zpráv";
-
/* No comment provided by engineer. */
"The hash of the previous message is different." = "Hash předchozí zprávy se liší.";
@@ -3230,6 +3224,9 @@ server test failure */
/* No comment provided by engineer. */
"The old database was not removed during the migration, it can be deleted." = "Stará databáze nebyla během přenášení odstraněna, lze ji smazat.";
+/* No comment provided by engineer. */
+"The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it." = "Nejstarší lidská svoboda - mluvit s druhým člověkem, aniž by byl sledován - postavena na infrastruktuře, která ji nemůže zradit.";
+
/* No comment provided by engineer. */
"The second tick we missed! ✅" = "Druhé zaškrtnutí jsme přehlédli! ✅";
@@ -3239,6 +3236,12 @@ server test failure */
/* No comment provided by engineer. */
"The servers for new connections of your current chat profile **%@**." = "Servery pro nová připojení vašeho aktuálního profilu chatu **%@**.";
+/* No comment provided by engineer. */
+"Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible." = "Pak jsme se přesunuli na internet a každá platforma chtěla o vás něco vědět - vaše jméno, vaše číslo, vaše přátele. Smířili jsme se s tím, že cenou za komunikaci s ostatními je dát někomu vědět, s kým mluvíme. Každá generace, lidská i technická, to tak měla - telefon, e-mail, komunikátory, sociální sítě. Zdálo se, že je to jediný možný způsob.";
+
+/* No comment provided by engineer. */
+"There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected." = "Existuje i jiný způsob. Síť bez telefonních čísel. Bez uživatelských jmen. Bez účtů. Bez jakékoli uživatelské identity. Síť, která spojuje lidi a přenáší šifrované zprávy, aniž by bylo známo, kdo je připojen.";
+
/* No comment provided by engineer. */
"These settings are for your current profile **%@**." = "Toto nastavení je pro váš aktuální profil **%@**.";
@@ -3590,9 +3593,6 @@ server test failure */
/* No comment provided by engineer. */
"You could not be verified; please try again." = "Nemohli jste být ověřeni; Zkuste to prosím znovu.";
-/* No comment provided by engineer. */
-"You decide who can connect." = "Lidé se s vámi mohou spojit pouze prostřednictvím odkazu, který sdílíte.";
-
/* No comment provided by engineer. */
"You have to enter passphrase every time the app starts - it is not stored on the device." = "Musíte zadat přístupovou frázi při každém spuštění aplikace - není uložena v zařízení.";
@@ -3629,6 +3629,9 @@ server test failure */
/* chat list item description */
"you shared one-time link incognito" = "sdíleli jste jednorázový odkaz inkognito";
+/* No comment provided by engineer. */
+"You were born without an account" = "Narodili jste se bez účtu.";
+
/* No comment provided by engineer. */
"You will be connected to group when the group host's device is online, please wait or check later!" = "Ke skupině budete připojeni, až bude zařízení hostitele skupiny online, vyčkejte prosím nebo se podívejte později!";
@@ -3680,6 +3683,9 @@ server test failure */
/* No comment provided by engineer. */
"Your contacts will remain connected." = "Vaše kontakty zůstanou připojeny.";
+/* No comment provided by engineer. */
+"Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public." = "Vaše konverzace patří vám, jako tomu bylo vždy před internetem. Síť není místo, které navštěvujete. Je to místo, které vytváříte a vlastníte. A nikdo vám ho nemůže vzít, ať už je soukromé, nebo veřejné.";
+
/* No comment provided by engineer. */
"Your current chat database will be DELETED and REPLACED with the imported one." = "Vaše aktuální chat databáze bude ODSTRANĚNA a NAHRAZENA importovanou.";
diff --git a/apps/ios/de.lproj/Localizable.strings b/apps/ios/de.lproj/Localizable.strings
index 739f2e7721..747562f0fc 100644
--- a/apps/ios/de.lproj/Localizable.strings
+++ b/apps/ios/de.lproj/Localizable.strings
@@ -676,9 +676,6 @@ swipe action */
/* No comment provided by engineer. */
"Answer call" = "Anruf annehmen";
-/* No comment provided by engineer. */
-"Anybody can host servers." = "Jeder kann seine eigenen Server aufsetzen.";
-
/* No comment provided by engineer. */
"App build: %@" = "App Build: %@";
@@ -820,6 +817,12 @@ swipe action */
/* No comment provided by engineer. */
"Bad message ID" = "Falsche Nachrichten-ID";
+/* No comment provided by engineer. */
+"Be free in your network." = "Genießen Sie die Freiheit in Ihrem Netzwerk.";
+
+/* No comment provided by engineer. */
+"Because we destroyed the power to know who you are. So that your power can never be taken." = "Weil wir die Macht zerstört haben, zu wissen, wer Sie sind. Damit Ihnen Ihre Macht niemals genommen werden kann.";
+
/* No comment provided by engineer. */
"Better calls" = "Verbesserte Anrufe";
@@ -944,9 +947,6 @@ marked deleted chat item preview text */
/* 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).";
-/* No comment provided by engineer. */
-"By using SimpleX Chat you agree to:\n- send only legal content in public groups.\n- respect other users – no spam." = "Durch die Nutzung von SimpleX Chat erklären Sie sich damit einverstanden:\n- nur legale Inhalte in öffentlichen Gruppen zu versenden.\n- andere Nutzer zu respektieren - kein Spam.";
-
/* No comment provided by engineer. */
"call" = "Anrufen";
@@ -1181,7 +1181,8 @@ set passcode view */
/* 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!";
-/* chat toolbar */
+/* chat feature
+chat toolbar */
"Chat with admins" = "Chat mit Administratoren";
/* No comment provided by engineer. */
@@ -1304,9 +1305,6 @@ set passcode view */
/* No comment provided by engineer. */
"Configure relays" = "Relais konfigurieren";
-/* No comment provided by engineer. */
-"Configure server operators" = "Server-Betreiber konfigurieren";
-
/* No comment provided by engineer. */
"Confirm" = "Bestätigen";
@@ -1728,9 +1726,6 @@ server test step */
/* No comment provided by engineer. */
"Debug delivery" = "Debugging-Zustellung";
-/* No comment provided by engineer. */
-"Decentralized" = "Dezentral";
-
/* relay test step */
"Decode link" = "Link dekodieren";
@@ -3051,9 +3046,6 @@ servers warning */
/* No comment provided by engineer. */
"Immediately" = "Sofort";
-/* No comment provided by engineer. */
-"Immune to spam" = "Immun gegen Spam und Missbrauch";
-
/* No comment provided by engineer. */
"Import" = "Importieren";
@@ -3654,9 +3646,6 @@ servers warning */
/* No comment provided by engineer. */
"Migrate device" = "Gerät migrieren";
-/* No comment provided by engineer. */
-"Migrate from another device" = "Von einem anderen Gerät migrieren";
-
/* No comment provided by engineer. */
"Migrate here" = "Hierher migrieren";
@@ -3949,7 +3938,10 @@ servers warning */
"No unread chats" = "Keine ungelesenen Chats";
/* No comment provided by engineer. */
-"No user identifiers." = "Keine Benutzerkennungen.";
+"Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life." = "Niemand verfolgte Ihre Gespräche. Niemand erstellte eine Karte, wo Sie sich aufgehalten haben. Privatsphäre war nie ein Feature - sie war selbstverständlich.";
+
+/* No comment provided by engineer. */
+"Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign." = "Nicht ein besseres Schloss an der Tür eines Anderen. Kein freundlicher Vermieter, der Ihre Privatsphäre respektiert, aber dennoch jeden Besucher registriert. Sie sind kein Gast. Sie sind zu Hause. Kein Vermieter, kein Fremder kann es betreten - Sie sind souverän.";
/* alert title */
"Not all relays connected" = "Es sind nicht alle Relais verbunden";
@@ -4365,12 +4357,6 @@ alert button */
/* No comment provided by engineer. */
"Privacy policy and conditions of use." = "Datenschutz- und Nutzungsbedingungen.";
-/* No comment provided by engineer. */
-"Privacy redefined" = "Datenschutz neu definiert";
-
-/* No comment provided by engineer. */
-"Private chats, groups and your contacts are not accessible to server operators." = "Private Chats, Gruppen und Ihre Kontakte sind für Server-Betreiber nicht zugänglich.";
-
/* No comment provided by engineer. */
"Private filenames" = "Neutrale Dateinamen";
@@ -5739,9 +5725,6 @@ server test failure */
/* No comment provided by engineer. */
"The encryption is working and the new encryption agreement is not required. It may result in connection errors!" = "Die Verschlüsselung funktioniert und ein neues Verschlüsselungsabkommen ist nicht erforderlich. Es kann zu Verbindungsfehlern kommen!";
-/* No comment provided by engineer. */
-"The future of messaging" = "Die nächste Generation von privatem Messaging";
-
/* No comment provided by engineer. */
"The hash of the previous message is different." = "Der Hash der vorherigen Nachricht unterscheidet sich.";
@@ -5766,6 +5749,9 @@ server test failure */
/* No comment provided by engineer. */
"The old database was not removed during the migration, it can be deleted." = "Die alte Datenbank wurde während der Migration nicht entfernt. Sie kann gelöscht werden.";
+/* No comment provided by engineer. */
+"The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it." = "Die älteste Freiheit des Menschen - mit einem anderen Menschen sprechen zu können, ohne beobachtet zu werden - gestützt auf einer Infrastruktur, die Sie nicht verraten kann.";
+
/* No comment provided by engineer. */
"The same conditions will apply to operator **%@**." = "Dieselben Nutzungsbedingungen gelten auch für den Betreiber **%@**.";
@@ -5793,6 +5779,12 @@ server test failure */
/* No comment provided by engineer. */
"Themes" = "Design";
+/* No comment provided by engineer. */
+"Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible." = "Dann sind wir online gegangen, und jede Plattform wollte Etwas von Ihnen - Ihren Namen, Ihre Nummer, Ihre Freunde. Wir akzeptierten, dass es der Preis mit Anderen zu kommunizieren ist, Jemandem preiszugeben, mit wem und wie wir miteinander kommunizieren. Jede Generation, Menschen und Technologien, kannten es nur so - Telefon, E-Mail, Messenger, soziale Medien. Es schien der einzig mögliche Weg zu sein.";
+
+/* No comment provided by engineer. */
+"There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected." = "Es gibt einen anderen Weg. Ein Netzwerk ohne Telefonnummern, ohne Benutzernamen, ohne Benutzerkennungen und ohne jegliche Benutzeridentität. Ein Netzwerk, welches Menschen verbindet und verschlüsselte Nachrichten überträgt, ohne zu wissen, wer mit wem verbunden ist.";
+
/* No comment provided by engineer. */
"These conditions will also apply for: **%@**." = "Diese Nutzungsbedingungen gelten auch für: **%@**.";
@@ -6576,9 +6568,6 @@ server test failure */
/* No comment provided by engineer. */
"You could not be verified; please try again." = "Sie konnten nicht überprüft werden; bitte versuchen Sie es erneut.";
-/* No comment provided by engineer. */
-"You decide who can connect." = "Sie entscheiden, wer sich mit Ihnen verbinden kann.";
-
/* new chat sheet title */
"You have already requested connection!\nRepeat connection request?" = "Sie haben bereits ein Verbindungsanfrage beantragt!\nVerbindungsanfrage wiederholen?";
@@ -6633,6 +6622,9 @@ server test failure */
/* snd group event chat item */
"you unblocked %@" = "Sie haben %@ freigegeben";
+/* No comment provided by engineer. */
+"You were born without an account" = "Sie wurden ohne eine Benutzerkennung geboren.";
+
/* No comment provided by engineer. */
"You will be able to send messages **only after your request is accepted**." = "Sie können erst dann Nachrichten versenden, **sobald Ihre Anfrage angenommen wurde**.";
@@ -6714,6 +6706,9 @@ server test failure */
/* No comment provided by engineer. */
"Your contacts will remain connected." = "Ihre Kontakte bleiben weiterhin verbunden.";
+/* No comment provided by engineer. */
+"Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public." = "Ihre Kommunikation gehört Ihnen, so wie es immer war, bevor es das Internet gab. Das Netzwerk ist kein Ort, den Sie besuchen. Es ist ein Ort, den Sie erschaffen und besitzen und Niemand kann es Ihnen nehmen, egal ob Sie es privat oder öffentlich machen.";
+
/* No comment provided by engineer. */
"Your credentials may be sent unencrypted." = "Ihre Anmeldeinformationen können unverschlüsselt versendet werden.";
diff --git a/apps/ios/es.lproj/Localizable.strings b/apps/ios/es.lproj/Localizable.strings
index 865a9472ea..0c2353def6 100644
--- a/apps/ios/es.lproj/Localizable.strings
+++ b/apps/ios/es.lproj/Localizable.strings
@@ -676,9 +676,6 @@ swipe action */
/* No comment provided by engineer. */
"Answer call" = "Responder llamada";
-/* No comment provided by engineer. */
-"Anybody can host servers." = "Cualquiera puede alojar servidores.";
-
/* No comment provided by engineer. */
"App build: %@" = "Compilación app: %@";
@@ -820,6 +817,12 @@ swipe action */
/* No comment provided by engineer. */
"Bad message ID" = "ID de mensaje incorrecto";
+/* No comment provided by engineer. */
+"Be free in your network." = "Se libre en tu red.";
+
+/* No comment provided by engineer. */
+"Because we destroyed the power to know who you are. So that your power can never be taken." = "Porque hemos destruido el poder de saber quien eres. De manera que tu poder nunca se pueda arrebatar.";
+
/* No comment provided by engineer. */
"Better calls" = "Llamadas mejoradas";
@@ -944,9 +947,6 @@ marked deleted chat item preview text */
/* 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).";
-/* No comment provided by engineer. */
-"By using SimpleX Chat you agree to:\n- send only legal content in public groups.\n- respect other users – no spam." = "Al usar SimpleX Chat, aceptas:\n- enviar únicamente contenido legal en los grupos públicos.\n- respetar a los demás usuarios – spam prohibido.";
-
/* No comment provided by engineer. */
"call" = "llamada";
@@ -1181,7 +1181,8 @@ set passcode view */
/* No comment provided by engineer. */
"Chat will be deleted for you - this cannot be undone!" = "El chat será eliminado para tí. ¡No puede deshacerse!";
-/* chat toolbar */
+/* chat feature
+chat toolbar */
"Chat with admins" = "Chatea con administradores";
/* No comment provided by engineer. */
@@ -1304,9 +1305,6 @@ set passcode view */
/* No comment provided by engineer. */
"Configure relays" = "Configurar servidores";
-/* No comment provided by engineer. */
-"Configure server operators" = "Configurar operadores de servidores";
-
/* No comment provided by engineer. */
"Confirm" = "Confirmar";
@@ -1728,9 +1726,6 @@ server test step */
/* No comment provided by engineer. */
"Debug delivery" = "Informe debug";
-/* No comment provided by engineer. */
-"Decentralized" = "Descentralizada";
-
/* relay test step */
"Decode link" = "Decodificar enlace";
@@ -3051,9 +3046,6 @@ servers warning */
/* No comment provided by engineer. */
"Immediately" = "Inmediatamente";
-/* No comment provided by engineer. */
-"Immune to spam" = "Inmune a spam y abuso";
-
/* No comment provided by engineer. */
"Import" = "Importar";
@@ -3654,9 +3646,6 @@ servers warning */
/* No comment provided by engineer. */
"Migrate device" = "Migrar dispositivo";
-/* No comment provided by engineer. */
-"Migrate from another device" = "Migrar desde otro dispositivo";
-
/* No comment provided by engineer. */
"Migrate here" = "Migrar aquí";
@@ -3949,7 +3938,10 @@ servers warning */
"No unread chats" = "Ningún chat sin leer";
/* No comment provided by engineer. */
-"No user identifiers." = "Sin identificadores de usuario.";
+"Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life." = "Nadie monitorizaba tus conversaciones. Nadie registraba tus ubicaciones. La privacidad nunca fue un lujo, era la manera de vivir.";
+
+/* No comment provided by engineer. */
+"Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign." = "No un candado mejorado en la puerta de otro. No un terrateniente que respeta tu privacidad pero sigue guardando un registro de tus visitantes. Tu no eres el invitado. Estás en tu casa y ningún rey podrá entrar. Tu eres el soberano.";
/* alert title */
"Not all relays connected" = "Hay servidores no conectados";
@@ -4365,12 +4357,6 @@ alert button */
/* No comment provided by engineer. */
"Privacy policy and conditions of use." = "Política de privacidad y condiciones de uso.";
-/* No comment provided by engineer. */
-"Privacy redefined" = "Privacidad redefinida";
-
-/* No comment provided by engineer. */
-"Private chats, groups and your contacts are not accessible to server operators." = "Los chats privados, los grupos y tus contactos no son accesibles para los operadores de servidores.";
-
/* No comment provided by engineer. */
"Private filenames" = "Nombres de archivos privados";
@@ -5739,9 +5725,6 @@ server test failure */
/* No comment provided by engineer. */
"The encryption is working and the new encryption agreement is not required. It may result in connection errors!" = "El cifrado funciona y un cifrado nuevo no es necesario. ¡Podría dar lugar a errores de conexión!";
-/* No comment provided by engineer. */
-"The future of messaging" = "La nueva generación de mensajería privada";
-
/* No comment provided by engineer. */
"The hash of the previous message is different." = "El hash del mensaje anterior es diferente.";
@@ -5766,6 +5749,9 @@ server test failure */
/* No comment provided by engineer. */
"The old database was not removed during the migration, it can be deleted." = "La base de datos antigua no se eliminó durante la migración, puede eliminarse.";
+/* No comment provided by engineer. */
+"The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it." = "La libertad más antigua del ser humano, la de hablar con otra persona sin ser observado, materializada sobre una infraestructura que no puede traicionarla.";
+
/* No comment provided by engineer. */
"The same conditions will apply to operator **%@**." = "Las mismas condiciones se aplicarán al operador **%@**.";
@@ -5793,6 +5779,12 @@ server test failure */
/* No comment provided by engineer. */
"Themes" = "Temas";
+/* No comment provided by engineer. */
+"Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible." = "Después pasamos a internet y cada plataforma pedía una parte de tí: tu nombre, tu número, tus amistades. Aceptamos que el precio de hablar con los demás es informar a alguien de quién es interlocutor. Cada generación, personas y tecnología, ha funcionado así: teléfono, email, mensajería, redes sociales. Parecía el único camino.";
+
+/* No comment provided by engineer. */
+"There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected." = "Existe otro camino. Una red sin números de teléfono. Sin nombres de usuario. Sin cuentas. Sin identificadores de ningún tipo. Una red que conecta las personas y entrega mensajes cifrados sin saber quien está conectado.";
+
/* No comment provided by engineer. */
"These conditions will also apply for: **%@**." = "Estas condiciones también se aplican para: **%@**.";
@@ -6576,9 +6568,6 @@ server test failure */
/* No comment provided by engineer. */
"You could not be verified; please try again." = "No has podido ser autenticado. Inténtalo de nuevo.";
-/* No comment provided by engineer. */
-"You decide who can connect." = "Tu decides quién se conecta.";
-
/* new chat sheet title */
"You have already requested connection!\nRepeat connection request?" = "Ya has solicitado la conexión\n¿Repetir solicitud?";
@@ -6633,6 +6622,9 @@ server test failure */
/* snd group event chat item */
"you unblocked %@" = "has desbloqueado a %@";
+/* No comment provided by engineer. */
+"You were born without an account" = "Naciste sin una cuenta.";
+
/* No comment provided by engineer. */
"You will be able to send messages **only after your request is accepted**." = "Podrás enviar mensajes **después de que tu solicitud sea aceptada**.";
@@ -6714,6 +6706,9 @@ server test failure */
/* No comment provided by engineer. */
"Your contacts will remain connected." = "Tus contactos permanecerán conectados.";
+/* No comment provided by engineer. */
+"Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public." = "Tus conversaciones te pertenecen, tal como ha sido siempre antes de la llegada de internet. Tu red no es un lugar que visitas. Es un lugar que has creado, te pertenece y nadie te la podrá quitar, ya sea pública o privada.";
+
/* No comment provided by engineer. */
"Your credentials may be sent unencrypted." = "Tus credenciales podrían ser enviadas sin cifrar.";
diff --git a/apps/ios/fi.lproj/Localizable.strings b/apps/ios/fi.lproj/Localizable.strings
index 4dfb01aae7..6ba1644d54 100644
--- a/apps/ios/fi.lproj/Localizable.strings
+++ b/apps/ios/fi.lproj/Localizable.strings
@@ -377,9 +377,6 @@ swipe action */
/* No comment provided by engineer. */
"Answer call" = "Vastaa puheluun";
-/* No comment provided by engineer. */
-"Anybody can host servers." = "Avoimen lähdekoodin protokolla ja koodi - kuka tahansa voi käyttää palvelimia.";
-
/* No comment provided by engineer. */
"App build: %@" = "Sovellusversio: %@";
@@ -852,9 +849,6 @@ server test step */
/* time unit */
"days" = "päivää";
-/* No comment provided by engineer. */
-"Decentralized" = "Hajautettu";
-
/* message decrypt error item */
"Decryption error" = "Salauksen purkuvirhe";
@@ -1590,9 +1584,6 @@ server test error */
/* No comment provided by engineer. */
"Immediately" = "Heti";
-/* No comment provided by engineer. */
-"Immune to spam" = "Immuuni roskapostille ja väärinkäytöksille";
-
/* No comment provided by engineer. */
"Import" = "Tuo";
@@ -2055,9 +2046,6 @@ server test error */
/* copied message info in history */
"no text" = "ei tekstiä";
-/* No comment provided by engineer. */
-"No user identifiers." = "Ensimmäinen alusta ilman käyttäjätunnisteita – suunniteltu yksityiseksi.";
-
/* No comment provided by engineer. */
"Notifications" = "Ilmoitukset";
@@ -2249,9 +2237,6 @@ new chat action */
/* No comment provided by engineer. */
"Privacy & security" = "Yksityisyys ja turvallisuus";
-/* No comment provided by engineer. */
-"Privacy redefined" = "Yksityisyys uudelleen määritettynä";
-
/* No comment provided by engineer. */
"Private filenames" = "Yksityiset tiedostonimet";
@@ -2872,9 +2857,6 @@ server test failure */
/* No comment provided by engineer. */
"The encryption is working and the new encryption agreement is not required. It may result in connection errors!" = "Salaus toimii ja uutta salaussopimusta ei tarvita. Tämä voi johtaa yhteysvirheisiin!";
-/* No comment provided by engineer. */
-"The future of messaging" = "Seuraavan sukupolven yksityisviestit";
-
/* No comment provided by engineer. */
"The hash of the previous message is different." = "Edellisen viestin tarkiste on erilainen.";
@@ -3247,9 +3229,6 @@ server test failure */
/* No comment provided by engineer. */
"You could not be verified; please try again." = "Sinua ei voitu todentaa; yritä uudelleen.";
-/* No comment provided by engineer. */
-"You decide who can connect." = "Kimin bağlanabileceğine siz karar verirsiniz.";
-
/* No comment provided by engineer. */
"You have to enter passphrase every time the app starts - it is not stored on the device." = "Sinun on annettava tunnuslause aina, kun sovellus käynnistyy - sitä ei tallenneta laitteeseen.";
diff --git a/apps/ios/fr.lproj/Localizable.strings b/apps/ios/fr.lproj/Localizable.strings
index 27140ac84c..4283dd349d 100644
--- a/apps/ios/fr.lproj/Localizable.strings
+++ b/apps/ios/fr.lproj/Localizable.strings
@@ -629,9 +629,6 @@ swipe action */
/* No comment provided by engineer. */
"Answer call" = "Répondre à l'appel";
-/* No comment provided by engineer. */
-"Anybody can host servers." = "N'importe qui peut heberger un serveur.";
-
/* No comment provided by engineer. */
"App build: %@" = "Build de l'app : %@";
@@ -867,9 +864,6 @@ marked deleted chat item preview text */
/* 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)." = "Par profil de chat (par défaut) ou [par connexion](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).";
-/* No comment provided by engineer. */
-"By using SimpleX Chat you agree to:\n- send only legal content in public groups.\n- respect other users – no spam." = "En utilisant SimpleX Chat, vous acceptez de :\n- n'envoyer que du contenu légal dans les groupes publics.\n- respecter les autres utilisateurs - pas de spam.";
-
/* No comment provided by engineer. */
"call" = "appeler";
@@ -1149,9 +1143,6 @@ set passcode view */
/* No comment provided by engineer. */
"Configure ICE servers" = "Configurer les serveurs ICE";
-/* No comment provided by engineer. */
-"Configure server operators" = "Configurer les opérateurs de serveur";
-
/* No comment provided by engineer. */
"Confirm" = "Confirmer";
@@ -1540,9 +1531,6 @@ server test step */
/* No comment provided by engineer. */
"Debug delivery" = "Livraison de débogage";
-/* No comment provided by engineer. */
-"Decentralized" = "Décentralisé";
-
/* message decrypt error item */
"Decryption error" = "Erreur de déchiffrement";
@@ -2715,9 +2703,6 @@ servers warning */
/* No comment provided by engineer. */
"Immediately" = "Immédiatement";
-/* No comment provided by engineer. */
-"Immune to spam" = "Protégé du spam et des abus";
-
/* No comment provided by engineer. */
"Import" = "Importer";
@@ -3216,9 +3201,6 @@ servers warning */
/* No comment provided by engineer. */
"Migrate device" = "Transférer l'appareil";
-/* No comment provided by engineer. */
-"Migrate from another device" = "Transférer depuis un autre appareil";
-
/* No comment provided by engineer. */
"Migrate here" = "Transférer ici";
@@ -3453,9 +3435,6 @@ servers warning */
/* copied message info in history */
"no text" = "aucun texte";
-/* No comment provided by engineer. */
-"No user identifiers." = "Aucun identifiant d'utilisateur.";
-
/* No comment provided by engineer. */
"Not compatible!" = "Non compatible !";
@@ -3771,9 +3750,6 @@ alert button */
/* No comment provided by engineer. */
"Privacy for your customers." = "Respect de la vie privée de vos clients.";
-/* No comment provided by engineer. */
-"Privacy redefined" = "La vie privée redéfinie";
-
/* No comment provided by engineer. */
"Private filenames" = "Noms de fichiers privés";
@@ -4835,9 +4811,6 @@ server test failure */
/* No comment provided by engineer. */
"The encryption is working and the new encryption agreement is not required. It may result in connection errors!" = "Le chiffrement fonctionne et le nouvel accord de chiffrement n'est pas nécessaire. Cela peut provoquer des erreurs de connexion !";
-/* No comment provided by engineer. */
-"The future of messaging" = "La nouvelle génération de messagerie privée";
-
/* No comment provided by engineer. */
"The hash of the previous message is different." = "Le hash du message précédent est différent.";
@@ -5546,9 +5519,6 @@ server test failure */
/* No comment provided by engineer. */
"You could not be verified; please try again." = "Vous n'avez pas pu être vérifié·e ; veuillez réessayer.";
-/* No comment provided by engineer. */
-"You decide who can connect." = "Vous choisissez qui peut se connecter.";
-
/* new chat sheet title */
"You have already requested connection!\nRepeat connection request?" = "Vous avez déjà demandé une connexion !\nRépéter la demande de connexion ?";
diff --git a/apps/ios/hu.lproj/Localizable.strings b/apps/ios/hu.lproj/Localizable.strings
index d8365a164f..4d3365fa68 100644
--- a/apps/ios/hu.lproj/Localizable.strings
+++ b/apps/ios/hu.lproj/Localizable.strings
@@ -676,9 +676,6 @@ swipe action */
/* No comment provided by engineer. */
"Answer call" = "Hívás fogadása";
-/* No comment provided by engineer. */
-"Anybody can host servers." = "Bárki üzemeltethet kiszolgálókat.";
-
/* No comment provided by engineer. */
"App build: %@" = "Alkalmazás összeállítási száma: %@";
@@ -820,6 +817,12 @@ swipe action */
/* No comment provided by engineer. */
"Bad message ID" = "Hibás az üzenet azonosítója";
+/* No comment provided by engineer. */
+"Be free in your network." = "Legyen szabad a saját hálózatában.";
+
+/* No comment provided by engineer. */
+"Because we destroyed the power to know who you are. So that your power can never be taken." = "Mert felszámoltuk a lehetőségét is annak, hogy megtudjuk, Ön kicsoda. Így az önrendelkezése soha nem kerülhet idegen kezekbe.";
+
/* No comment provided by engineer. */
"Better calls" = "Továbbfejlesztett hívásélmény";
@@ -944,9 +947,6 @@ marked deleted chat item preview text */
/* 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)." = "A csevegési profillal (alapértelmezett), vagy a [kapcsolattal] (https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BÉTA).";
-/* No comment provided by engineer. */
-"By using SimpleX Chat you agree to:\n- send only legal content in public groups.\n- respect other users – no spam." = "A SimpleX Chat használatával Ön elfogadja, hogy:\n- csak elfogadott tartalmakat tesz közzé a nyilvános csoportokban.\n- tiszteletben tartja a többi felhasználót, és nem küld kéretlen tartalmat senkinek.";
-
/* No comment provided by engineer. */
"call" = "hívás";
@@ -1181,7 +1181,8 @@ set passcode view */
/* No comment provided by engineer. */
"Chat will be deleted for you - this cannot be undone!" = "A csevegés törölve lesz az Ön számára – ez a művelet nem vonható vissza!";
-/* chat toolbar */
+/* chat feature
+chat toolbar */
"Chat with admins" = "Csevegés az adminisztrátorokkal";
/* No comment provided by engineer. */
@@ -1304,9 +1305,6 @@ set passcode view */
/* No comment provided by engineer. */
"Configure relays" = "Átjátszók konfigurálása";
-/* No comment provided by engineer. */
-"Configure server operators" = "Kiszolgálóüzemeltetők beállítása";
-
/* No comment provided by engineer. */
"Confirm" = "Megerősítés";
@@ -1728,9 +1726,6 @@ server test step */
/* No comment provided by engineer. */
"Debug delivery" = "Kézbesítési hibák felderítése";
-/* No comment provided by engineer. */
-"Decentralized" = "Decentralizált";
-
/* relay test step */
"Decode link" = "Hivatkozás dekódolása";
@@ -3051,9 +3046,6 @@ servers warning */
/* No comment provided by engineer. */
"Immediately" = "Azonnal";
-/* No comment provided by engineer. */
-"Immune to spam" = "Védett a kéretlen tartalmakkal szemben";
-
/* No comment provided by engineer. */
"Import" = "Importálás";
@@ -3654,9 +3646,6 @@ servers warning */
/* No comment provided by engineer. */
"Migrate device" = "Eszköz átköltöztetése";
-/* No comment provided by engineer. */
-"Migrate from another device" = "Átköltöztetés egy másik eszközről";
-
/* No comment provided by engineer. */
"Migrate here" = "Átköltöztetés ide";
@@ -3949,7 +3938,10 @@ servers warning */
"No unread chats" = "Nincsenek olvasatlan csevegések";
/* No comment provided by engineer. */
-"No user identifiers." = "Nincsenek felhasználói azonosítók.";
+"Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life." = "Senki sem követte nyomon a beszélgetéseinket. Senki sem készített térképet arról, hogy merre jártunk. A magánéletünk nem csak egy funkció volt, hanem az életmódunk.";
+
+/* No comment provided by engineer. */
+"Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign." = "Nem egy jobb zár mások ajtaján. Nem egy kedvesebb házmester, aki tiszteletben tartja az Ön magánéletét, de mégis nyilvántartást vezet minden látogatójáról. Ön itt nem csak egy vendég. Ön itt otthon van. Nincs az a hatalom, amely beléphetne ide - Ön itt szuverén.";
/* alert title */
"Not all relays connected" = "Nem minden átjátszó kapcsolódott";
@@ -4365,12 +4357,6 @@ alert button */
/* No comment provided by engineer. */
"Privacy policy and conditions of use." = "Adatvédelmi szabályzat és felhasználási feltételek.";
-/* No comment provided by engineer. */
-"Privacy redefined" = "Újraértelmezett adatvédelem";
-
-/* No comment provided by engineer. */
-"Private chats, groups and your contacts are not accessible to server operators." = "A privát csevegések, a csoportok és a partnerek nem érhetők el a kiszolgálók üzemeltetői számára.";
-
/* No comment provided by engineer. */
"Private filenames" = "Privát fájlnevek";
@@ -5739,9 +5725,6 @@ server test failure */
/* No comment provided by engineer. */
"The encryption is working and the new encryption agreement is not required. It may result in connection errors!" = "A titkosítás működik, és új titkosítási egyezményre nincs szükség. Ez kapcsolati hibákat eredményezhet!";
-/* No comment provided by engineer. */
-"The future of messaging" = "Az üzenetváltás jövője";
-
/* No comment provided by engineer. */
"The hash of the previous message is different." = "Az előző üzenet kivonata különbözik.";
@@ -5766,6 +5749,9 @@ server test failure */
/* No comment provided by engineer. */
"The old database was not removed during the migration, it can be deleted." = "A régi adatbázis nem lett eltávolítva az átköltöztetéskor, ezért törölhető.";
+/* No comment provided by engineer. */
+"The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it." = "A legrégebbi emberi szabadság - beszélgetni az emberekkel, anélkül, hogy mások megfigyelnének - olyan infrastruktúrán alapul, amely nem tudja elárulni.";
+
/* No comment provided by engineer. */
"The same conditions will apply to operator **%@**." = "Ugyanezek a feltételek lesznek elfogadva a következő üzemeltető számára is: **%@**.";
@@ -5793,6 +5779,12 @@ server test failure */
/* No comment provided by engineer. */
"Themes" = "Témák";
+/* No comment provided by engineer. */
+"Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible." = "Aztán felléptünk az internetre, és minden platform kért belőlünk egy darabot - nevet, telefonszámot, baráti kapcsolatokat. Elfogadtuk, hogy a kommunikáció ára az, hogy mások megtudják, hogy kivel beszélünk. Minden generáció, az emberek és a technológia is eddig így működött - telefon, e-mail, üzenetküldő programok, közösségi média. Úgy tűnt, ez az egyetlen lehetséges mód.";
+
+/* No comment provided by engineer. */
+"There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected." = "De van egy másik lehetőség is. Egy hálózat, amelyben nincsenek telefonszámok. Nincsenek felhasználónevek. Nincsenek fiókok. Nincsenek semmiféle felhasználói azonosítók. Egy hálózat, amely összeköti az embereket és titkosított üzeneteket továbbít, anélkül, hogy tudná, ki csatlakozik hozzá.";
+
/* No comment provided by engineer. */
"These conditions will also apply for: **%@**." = "Ezek a feltételek lesznek elfogadva a következő számára is: **%@**.";
@@ -6576,9 +6568,6 @@ server test failure */
/* No comment provided by engineer. */
"You could not be verified; please try again." = "Nem sikerült ellenőrizni; próbálja meg újra.";
-/* No comment provided by engineer. */
-"You decide who can connect." = "Ön dönti el, hogy kivel beszélget.";
-
/* new chat sheet title */
"You have already requested connection!\nRepeat connection request?" = "Ön már küldött egy kapcsolódási kérést!\nMegismétli a kapcsolódási kérést?";
@@ -6633,6 +6622,9 @@ server test failure */
/* snd group event chat item */
"you unblocked %@" = "Ön feloldotta %@ letiltását";
+/* No comment provided by engineer. */
+"You were born without an account" = "Fiók nélkül születtünk.";
+
/* No comment provided by engineer. */
"You will be able to send messages **only after your request is accepted**." = "Csak azután tud üzeneteket küldeni, **miután a kérését elfogadták**.";
@@ -6714,6 +6706,9 @@ server test failure */
/* No comment provided by engineer. */
"Your contacts will remain connected." = "A partnereivel továbbra is kapcsolatban marad.";
+/* No comment provided by engineer. */
+"Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public." = "A beszélgetései Önhöz tartoznak, ahogy az internet megjelenése előtt is mindig így volt. A hálózat nem egy hely, amelyet meglátogat. Ez egy olyan hely, amelyet Ön hoz létre saját magának. És senki sem veheti el Öntől, függetlenül attól, hogy privát vagy nyilvános.";
+
/* No comment provided by engineer. */
"Your credentials may be sent unencrypted." = "A hitelesítési adatai titkosítatlanul is elküldhetők.";
diff --git a/apps/ios/it.lproj/Localizable.strings b/apps/ios/it.lproj/Localizable.strings
index 2d1161de80..d42a70a114 100644
--- a/apps/ios/it.lproj/Localizable.strings
+++ b/apps/ios/it.lproj/Localizable.strings
@@ -676,9 +676,6 @@ swipe action */
/* No comment provided by engineer. */
"Answer call" = "Rispondi alla chiamata";
-/* No comment provided by engineer. */
-"Anybody can host servers." = "Chiunque può installare i server.";
-
/* No comment provided by engineer. */
"App build: %@" = "Build dell'app: %@";
@@ -820,6 +817,12 @@ swipe action */
/* No comment provided by engineer. */
"Bad message ID" = "ID del messaggio errato";
+/* No comment provided by engineer. */
+"Be free in your network." = "Vivi libero nella tua rete.";
+
+/* No comment provided by engineer. */
+"Because we destroyed the power to know who you are. So that your power can never be taken." = "Perché abbiamo distrutto il potere di sapere chi sei. In modo che il tuo potere non possa mai esserti sottratto.";
+
/* No comment provided by engineer. */
"Better calls" = "Chiamate migliorate";
@@ -944,9 +947,6 @@ marked deleted chat item preview text */
/* 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 profilo di chat (predefinito) o [per connessione](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).";
-/* No comment provided by engineer. */
-"By using SimpleX Chat you agree to:\n- send only legal content in public groups.\n- respect other users – no spam." = "Usando SimpleX Chat accetti di:\n- inviare solo contenuto legale nei gruppi pubblici.\n- rispettare gli altri utenti - niente spam.";
-
/* No comment provided by engineer. */
"call" = "chiama";
@@ -1181,7 +1181,8 @@ set passcode view */
/* No comment provided by engineer. */
"Chat will be deleted for you - this cannot be undone!" = "La chat verrà eliminata solo per te, non è reversibile!";
-/* chat toolbar */
+/* chat feature
+chat toolbar */
"Chat with admins" = "Chat con amministratori";
/* No comment provided by engineer. */
@@ -1304,9 +1305,6 @@ set passcode view */
/* No comment provided by engineer. */
"Configure relays" = "Configura i relay";
-/* No comment provided by engineer. */
-"Configure server operators" = "Configura gli operatori dei server";
-
/* No comment provided by engineer. */
"Confirm" = "Conferma";
@@ -1728,9 +1726,6 @@ server test step */
/* No comment provided by engineer. */
"Debug delivery" = "Debug della consegna";
-/* No comment provided by engineer. */
-"Decentralized" = "Decentralizzato";
-
/* relay test step */
"Decode link" = "Decodifica il link";
@@ -3051,9 +3046,6 @@ servers warning */
/* No comment provided by engineer. */
"Immediately" = "Immediatamente";
-/* No comment provided by engineer. */
-"Immune to spam" = "Immune a spam e abusi";
-
/* No comment provided by engineer. */
"Import" = "Importa";
@@ -3654,9 +3646,6 @@ servers warning */
/* No comment provided by engineer. */
"Migrate device" = "Migra dispositivo";
-/* No comment provided by engineer. */
-"Migrate from another device" = "Migra da un altro dispositivo";
-
/* No comment provided by engineer. */
"Migrate here" = "Migra qui";
@@ -3949,7 +3938,10 @@ servers warning */
"No unread chats" = "Nessuna chat non letta";
/* No comment provided by engineer. */
-"No user identifiers." = "Nessun identificatore utente.";
+"Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life." = "Nessuno monitorava le tue conversazioni. Nessuno disegnava una mappa delle tue posizioni. La privacy non era mai stata una caratteristica, era uno stile di vita.";
+
+/* No comment provided by engineer. */
+"Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign." = "Non una serratura migliore sulla porta di qualcun altro. Non un padrone di casa più gentile che rispetta la tua privacy, ma che continua a tenere traccia di tutti i visitatori. Non sei un ospite. Sei a casa tua. Nessun re può entrarvi: sei tu il sovrano.";
/* alert title */
"Not all relays connected" = "Non tutti i relay sono connessi";
@@ -4365,12 +4357,6 @@ alert button */
/* No comment provided by engineer. */
"Privacy policy and conditions of use." = "Informativa sulla privacy e condizioni d'uso.";
-/* No comment provided by engineer. */
-"Privacy redefined" = "Privacy ridefinita";
-
-/* No comment provided by engineer. */
-"Private chats, groups and your contacts are not accessible to server operators." = "Le chat private, i gruppi e i tuoi contatti non sono accessibili agli operatori dei server.";
-
/* No comment provided by engineer. */
"Private filenames" = "Nomi di file privati";
@@ -5739,9 +5725,6 @@ server test failure */
/* No comment provided by engineer. */
"The encryption is working and the new encryption agreement is not required. It may result in connection errors!" = "La crittografia funziona e il nuovo accordo sulla crittografia non è richiesto. Potrebbero verificarsi errori di connessione!";
-/* No comment provided by engineer. */
-"The future of messaging" = "La nuova generazione di messaggistica privata";
-
/* No comment provided by engineer. */
"The hash of the previous message is different." = "L'hash del messaggio precedente è diverso.";
@@ -5766,6 +5749,9 @@ server test failure */
/* No comment provided by engineer. */
"The old database was not removed during the migration, it can be deleted." = "Il database vecchio non è stato rimosso durante la migrazione, può essere eliminato.";
+/* No comment provided by engineer. */
+"The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it." = "La più antica libertà umana, parlare con un'altra persona senza essere osservati, si basa su un'infrastruttura che non può tradirla.";
+
/* No comment provided by engineer. */
"The same conditions will apply to operator **%@**." = "Le stesse condizioni si applicheranno all'operatore **%@**.";
@@ -5793,6 +5779,12 @@ server test failure */
/* No comment provided by engineer. */
"Themes" = "Temi";
+/* No comment provided by engineer. */
+"Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible." = "Poi ci siamo trasferiti online e ogni piattaforma ha chiesto un pezzo di noi: il nome, il numero, gli amici. Abbiamo accettato che il prezzo da pagare per comunicare con gli altri fosse quello di far sapere a qualcuno con chi parliamo. Ogni generazione, sia di persone che di tecnologia, ha funzionato così: telefono, email, messenger, social media. Sembrava l'unico modo possibile.";
+
+/* No comment provided by engineer. */
+"There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected." = "C'è un'altra via. Una rete senza numeri di telefono. Senza nomi utente. Senza account. Senza identificatori utente di alcun tipo. Una rete che connette le persone e trasferisce messaggi crittografati senza sapere chi è connesso.";
+
/* No comment provided by engineer. */
"These conditions will also apply for: **%@**." = "Queste condizioni si applicheranno anche per: **%@**.";
@@ -6576,9 +6568,6 @@ server test failure */
/* No comment provided by engineer. */
"You could not be verified; please try again." = "Non è stato possibile verificarti, riprova.";
-/* No comment provided by engineer. */
-"You decide who can connect." = "Sei tu a decidere chi può connettersi.";
-
/* new chat sheet title */
"You have already requested connection!\nRepeat connection request?" = "Hai già richiesto la connessione!\nRipetere la richiesta di connessione?";
@@ -6633,6 +6622,9 @@ server test failure */
/* snd group event chat item */
"you unblocked %@" = "hai sbloccato %@";
+/* No comment provided by engineer. */
+"You were born without an account" = "Sei nato senza un account.";
+
/* No comment provided by engineer. */
"You will be able to send messages **only after your request is accepted**." = "Potrai inviare messaggi **solo dopo che la tua richiesta verrà accettata**.";
@@ -6714,6 +6706,9 @@ server test failure */
/* No comment provided by engineer. */
"Your contacts will remain connected." = "I tuoi contatti resteranno connessi.";
+/* No comment provided by engineer. */
+"Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public." = "Le tue conversazioni appartengono a te, come è sempre stato prima dell'avvento di internet. La rete non è un luogo che visiti. È un luogo che crei e possiedi. E nessuno può portartelo via, che tu lo renda privato o pubblico.";
+
/* No comment provided by engineer. */
"Your credentials may be sent unencrypted." = "Le credenziali potrebbero essere inviate in chiaro.";
diff --git a/apps/ios/ja.lproj/Localizable.strings b/apps/ios/ja.lproj/Localizable.strings
index 37dd9d92ba..e095ec2aae 100644
--- a/apps/ios/ja.lproj/Localizable.strings
+++ b/apps/ios/ja.lproj/Localizable.strings
@@ -557,9 +557,6 @@ swipe action */
/* No comment provided by engineer. */
"Answer call" = "通話に応答";
-/* No comment provided by engineer. */
-"Anybody can host servers." = "プロトコル技術とコードはオープンソースで、どなたでもご自分のサーバを運用できます。";
-
/* No comment provided by engineer. */
"App build: %@" = "アプリのビルド: %@";
@@ -1134,9 +1131,6 @@ server test step */
/* No comment provided by engineer. */
"Debug delivery" = "配信のデバッグ";
-/* No comment provided by engineer. */
-"Decentralized" = "分散型";
-
/* message decrypt error item */
"Decryption error" = "復号化エラー";
@@ -1881,9 +1875,6 @@ server test error */
/* No comment provided by engineer. */
"Immediately" = "即座に";
-/* No comment provided by engineer. */
-"Immune to spam" = "スパムや悪質送信を防止";
-
/* No comment provided by engineer. */
"Import" = "読み込む";
@@ -2208,9 +2199,6 @@ server test error */
/* No comment provided by engineer. */
"Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." = "メッセージ、ファイル、通話は、前方秘匿性、否認可能性および侵入復元性を備えた**耐量子E2E暗号化**によって保護されます。";
-/* No comment provided by engineer. */
-"Migrate from another device" = "別の端末から移行";
-
/* No comment provided by engineer. */
"Migrating database archive…" = "データベースのアーカイブを移行しています…";
@@ -2355,9 +2343,6 @@ server test error */
/* copied message info in history */
"no text" = "テキストなし";
-/* No comment provided by engineer. */
-"No user identifiers." = "世界初のユーザーIDのないプラットフォーム|設計も元からプライベート。";
-
/* No comment provided by engineer. */
"Notifications" = "通知";
@@ -2553,9 +2538,6 @@ alert button */
/* No comment provided by engineer. */
"Privacy & security" = "プライバシーとセキュリティ";
-/* No comment provided by engineer. */
-"Privacy redefined" = "プライバシーの基準を新境地に";
-
/* No comment provided by engineer. */
"Private filenames" = "プライベートなファイル名";
@@ -3158,9 +3140,6 @@ server test failure */
/* No comment provided by engineer. */
"The encryption is working and the new encryption agreement is not required. It may result in connection errors!" = "暗号化は機能しており、新しい暗号化への同意は必要ありません。接続エラーが発生する可能性があります!";
-/* No comment provided by engineer. */
-"The future of messaging" = "次世代のプライバシー・メッセンジャー";
-
/* No comment provided by engineer. */
"The hash of the previous message is different." = "以前のメッセージとハッシュ値が異なります。";
@@ -3533,9 +3512,6 @@ server test failure */
/* No comment provided by engineer. */
"You could not be verified; please try again." = "確認できませんでした。 もう一度お試しください。";
-/* No comment provided by engineer. */
-"You decide who can connect." = "あなたと繋がることができるのは、あなたからリンクを頂いた方のみです。";
-
/* No comment provided by engineer. */
"You have to enter passphrase every time the app starts - it is not stored on the device." = "アプリ起動時にパスフレーズを入力しなければなりません。端末に保存されてません。";
diff --git a/apps/ios/nl.lproj/Localizable.strings b/apps/ios/nl.lproj/Localizable.strings
index be478b677d..594b0d5f47 100644
--- a/apps/ios/nl.lproj/Localizable.strings
+++ b/apps/ios/nl.lproj/Localizable.strings
@@ -626,9 +626,6 @@ swipe action */
/* No comment provided by engineer. */
"Answer call" = "Beantwoord oproep";
-/* No comment provided by engineer. */
-"Anybody can host servers." = "Iedereen kan servers hosten.";
-
/* No comment provided by engineer. */
"App build: %@" = "App build: %@";
@@ -870,9 +867,6 @@ marked deleted chat item preview text */
/* 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)." = "Via chatprofiel (standaard) of [via verbinding](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).";
-/* No comment provided by engineer. */
-"By using SimpleX Chat you agree to:\n- send only legal content in public groups.\n- respect other users – no spam." = "Door SimpleX Chat te gebruiken, gaat u ermee akkoord:\n- alleen legale content te versturen in openbare groepen.\n- andere gebruikers te respecteren – geen spam.";
-
/* No comment provided by engineer. */
"call" = "bellen";
@@ -1053,7 +1047,8 @@ set passcode view */
/* No comment provided by engineer. */
"Chat will be deleted for you - this cannot be undone!" = "De chat wordt voor je verwijderd - dit kan niet ongedaan worden gemaakt!";
-/* chat toolbar */
+/* chat feature
+chat toolbar */
"Chat with admins" = "Chat met beheerders";
/* No comment provided by engineer. */
@@ -1164,9 +1159,6 @@ set passcode view */
/* No comment provided by engineer. */
"Configure ICE servers" = "ICE servers configureren";
-/* No comment provided by engineer. */
-"Configure server operators" = "Serveroperators configureren";
-
/* No comment provided by engineer. */
"Confirm" = "Bevestigen";
@@ -1564,9 +1556,6 @@ server test step */
/* No comment provided by engineer. */
"Debug delivery" = "Foutopsporing bezorging";
-/* No comment provided by engineer. */
-"Decentralized" = "Gedecentraliseerd";
-
/* message decrypt error item */
"Decryption error" = "Decodering fout";
@@ -2769,9 +2758,6 @@ servers warning */
/* No comment provided by engineer. */
"Immediately" = "Onmiddellijk";
-/* No comment provided by engineer. */
-"Immune to spam" = "Immuun voor spam en misbruik";
-
/* No comment provided by engineer. */
"Import" = "Importeren";
@@ -3321,9 +3307,6 @@ servers warning */
/* No comment provided by engineer. */
"Migrate device" = "Apparaat migreren";
-/* No comment provided by engineer. */
-"Migrate from another device" = "Migreer vanaf een ander apparaat";
-
/* No comment provided by engineer. */
"Migrate here" = "Migreer hierheen";
@@ -3594,9 +3577,6 @@ servers warning */
/* No comment provided by engineer. */
"No unread chats" = "Geen ongelezen chats";
-/* No comment provided by engineer. */
-"No user identifiers." = "Geen gebruikers-ID's.";
-
/* No comment provided by engineer. */
"Not compatible!" = "Niet compatibel!";
@@ -3960,12 +3940,6 @@ alert button */
/* No comment provided by engineer. */
"Privacy policy and conditions of use." = "Privacybeleid en gebruiksvoorwaarden.";
-/* No comment provided by engineer. */
-"Privacy redefined" = "Privacy opnieuw gedefinieerd";
-
-/* No comment provided by engineer. */
-"Private chats, groups and your contacts are not accessible to server operators." = "Privéchats, groepen en uw contacten zijn niet toegankelijk voor serverbeheerders.";
-
/* No comment provided by engineer. */
"Private filenames" = "Privé bestandsnamen";
@@ -5136,9 +5110,6 @@ server test failure */
/* No comment provided by engineer. */
"The encryption is working and the new encryption agreement is not required. It may result in connection errors!" = "De versleuteling werkt en de nieuwe versleutelingsovereenkomst is niet vereist. Dit kan leiden tot verbindingsfouten!";
-/* No comment provided by engineer. */
-"The future of messaging" = "De volgende generatie privéberichten";
-
/* No comment provided by engineer. */
"The hash of the previous message is different." = "De hash van het vorige bericht is anders.";
@@ -5880,9 +5851,6 @@ server test failure */
/* No comment provided by engineer. */
"You could not be verified; please try again." = "U kon niet worden geverifieerd; probeer het opnieuw.";
-/* No comment provided by engineer. */
-"You decide who can connect." = "Jij bepaalt wie er verbinding mag maken.";
-
/* new chat sheet title */
"You have already requested connection!\nRepeat connection request?" = "Je hebt al verbinding aangevraagd!\nVerbindingsverzoek herhalen?";
diff --git a/apps/ios/pl.lproj/Localizable.strings b/apps/ios/pl.lproj/Localizable.strings
index 14c57ae7e0..1790291595 100644
--- a/apps/ios/pl.lproj/Localizable.strings
+++ b/apps/ios/pl.lproj/Localizable.strings
@@ -641,9 +641,6 @@ swipe action */
/* No comment provided by engineer. */
"Answer call" = "Odbierz połączenie";
-/* No comment provided by engineer. */
-"Anybody can host servers." = "Każdy może hostować serwery.";
-
/* No comment provided by engineer. */
"App build: %@" = "Kompilacja aplikacji: %@";
@@ -785,6 +782,12 @@ swipe action */
/* No comment provided by engineer. */
"Bad message ID" = "Zły identyfikator wiadomości";
+/* No comment provided by engineer. */
+"Be free in your network." = "Ciesz się swobodą w swojej sieci.";
+
+/* No comment provided by engineer. */
+"Because we destroyed the power to know who you are. So that your power can never be taken." = "Ponieważ zniszczyliśmy moc pozwalającą poznać, kim jesteś. Więc twoja moc nigdy nie będzie Ci odebrana.";
+
/* No comment provided by engineer. */
"Better calls" = "Lepsze połączenia";
@@ -903,9 +906,6 @@ marked deleted chat item preview text */
/* 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)." = "Według profilu czatu (domyślnie) lub [według połączenia](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).";
-/* No comment provided by engineer. */
-"By using SimpleX Chat you agree to:\n- send only legal content in public groups.\n- respect other users – no spam." = "Korzystając z SimpleX Chat, zgadzasz się:\n- wysyłać tylko legalne treści w grupach publicznych.\n- szanować innych użytkowników – nie spamować.";
-
/* No comment provided by engineer. */
"call" = "zadzwoń";
@@ -1089,7 +1089,8 @@ set passcode view */
/* No comment provided by engineer. */
"Chat will be deleted for you - this cannot be undone!" = "Czat zostanie usunięty dla Ciebie – tej operacji nie można cofnąć!";
-/* chat toolbar */
+/* chat feature
+chat toolbar */
"Chat with admins" = "Czatuj z administratorami";
/* No comment provided by engineer. */
@@ -1203,9 +1204,6 @@ set passcode view */
/* No comment provided by engineer. */
"Configure ICE servers" = "Skonfiguruj serwery ICE";
-/* No comment provided by engineer. */
-"Configure server operators" = "Skonfiguruj operatorów serwerów";
-
/* No comment provided by engineer. */
"Confirm" = "Potwierdź";
@@ -1618,9 +1616,6 @@ server test step */
/* No comment provided by engineer. */
"Debug delivery" = "Dostarczenie debugowania";
-/* No comment provided by engineer. */
-"Decentralized" = "Zdecentralizowane";
-
/* message decrypt error item */
"Decryption error" = "Błąd odszyfrowania";
@@ -2890,9 +2885,6 @@ servers warning */
/* No comment provided by engineer. */
"Immediately" = "Natychmiast";
-/* No comment provided by engineer. */
-"Immune to spam" = "Odporność na spam i nadużycia";
-
/* No comment provided by engineer. */
"Import" = "Importuj";
@@ -3472,9 +3464,6 @@ servers warning */
/* No comment provided by engineer. */
"Migrate device" = "Zmigruj urządzenie";
-/* No comment provided by engineer. */
-"Migrate from another device" = "Zmigruj z innego urządzenia";
-
/* No comment provided by engineer. */
"Migrate here" = "Zmigruj tutaj";
@@ -3755,7 +3744,10 @@ servers warning */
"No unread chats" = "Brak nieprzeczytanych czatów";
/* No comment provided by engineer. */
-"No user identifiers." = "Brak identyfikatorów użytkownika.";
+"Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life." = "Nikt nie śledził twoich rozmów. Nikt nie rysował mapy miejsc, w których byłeś. Prywatność nigdy nie była funkcją - była sposobem na życie.";
+
+/* No comment provided by engineer. */
+"Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign." = "Nie chodzi o lepszy zamek w drzwiach kogoś innego. Nie chodzi o milszego właściciela, który szanuje twoją prywatność, ale nadal prowadzi rejestr wszystkich odwiedzających. Nie jesteś gościem. Jesteś w domu. Żaden król nie może do niego wejść - jesteś suwerenem.";
/* No comment provided by engineer. */
"Not compatible!" = "Nie kompatybilny!";
@@ -4150,12 +4142,6 @@ alert button */
/* No comment provided by engineer. */
"Privacy policy and conditions of use." = "Polityka prywatności i warunki korzystania.";
-/* No comment provided by engineer. */
-"Privacy redefined" = "Redefinicja prywatności";
-
-/* No comment provided by engineer. */
-"Private chats, groups and your contacts are not accessible to server operators." = "Prywatne czaty, grupy i Twoje kontakty nie są dostępne dla operatorów serwerów.";
-
/* No comment provided by engineer. */
"Private filenames" = "Prywatne nazwy plików";
@@ -5422,9 +5408,6 @@ server test failure */
/* No comment provided by engineer. */
"The encryption is working and the new encryption agreement is not required. It may result in connection errors!" = "Szyfrowanie działa, a nowe uzgodnienie szyfrowania nie jest wymagane. Może to spowodować błędy w połączeniu!";
-/* No comment provided by engineer. */
-"The future of messaging" = "Następna generacja prywatnych wiadomości";
-
/* No comment provided by engineer. */
"The hash of the previous message is different." = "Hash poprzedniej wiadomości jest inny.";
@@ -5449,6 +5432,9 @@ server test failure */
/* No comment provided by engineer. */
"The old database was not removed during the migration, it can be deleted." = "Stara baza danych nie została usunięta podczas migracji, można ją usunąć.";
+/* No comment provided by engineer. */
+"The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it." = "Najstarsza ludzka wolność - możliwość rozmowy z inną osobą bez bycia obserwowanym - opiera się na infrastrukturze, która nie może jej zdradzić.";
+
/* No comment provided by engineer. */
"The same conditions will apply to operator **%@**." = "Te same warunki będą miały zastosowanie do operatora **%@**.";
@@ -5476,6 +5462,12 @@ server test failure */
/* No comment provided by engineer. */
"Themes" = "Motywy";
+/* No comment provided by engineer. */
+"Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible." = "Następnie przenieśliśmy się do sieci, a każda platforma prosiła o podanie danych osobowych - imienia i nazwiska, numeru telefonu, znajomych. Zaakceptowaliśmy fakt, że ceną za możliwość komunikowania się z innymi jest ujawnienie komuś, z kim rozmawiamy. Tak było w przypadku każdego pokolenia, ludzi i technologii - telefonu, poczty elektronicznej, komunikatorów, mediów społecznościowych. Wydawało się to jedyną możliwą opcją.";
+
+/* No comment provided by engineer. */
+"There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected." = "Jest jeszcze inny sposób. Sieć bez numerów telefonów. Bez nazw użytkowników. Bez kont. Bez jakichkolwiek tożsamości użytkowników. Sieć, która łączy ludzi i przesyła zaszyfrowane wiadomości, nie wiedząc, kto jest podłączony.";
+
/* No comment provided by engineer. */
"These conditions will also apply for: **%@**." = "Warunki te będą miały również zastosowanie w przypadku: **%@**.";
@@ -6217,9 +6209,6 @@ server test failure */
/* No comment provided by engineer. */
"You could not be verified; please try again." = "Nie można zweryfikować użytkownika; proszę spróbować ponownie.";
-/* No comment provided by engineer. */
-"You decide who can connect." = "Ty decydujesz, kto może się połączyć.";
-
/* new chat sheet title */
"You have already requested connection!\nRepeat connection request?" = "Już prosiłeś o połączenie!\nPowtórzyć prośbę połączenia?";
@@ -6274,6 +6263,9 @@ server test failure */
/* snd group event chat item */
"you unblocked %@" = "odblokowałeś %@";
+/* No comment provided by engineer. */
+"You were born without an account" = "Urodziłeś się bez konta.";
+
/* No comment provided by engineer. */
"You will be able to send messages **only after your request is accepted**." = "Będziesz mógł wysyłać wiadomości **dopiero po zaakceptowaniu Twojej prośby**.";
@@ -6349,6 +6341,9 @@ server test failure */
/* No comment provided by engineer. */
"Your contacts will remain connected." = "Twoje kontakty pozostaną połączone.";
+/* No comment provided by engineer. */
+"Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public." = "Twoje rozmowy należą do Ciebie, tak jak zawsze było przed pojawieniem się Internetu. Sieć nie jest miejscem, które odwiedzasz. Jest miejscem, które tworzysz i które należy do Ciebie. Nikt nie może Ci tego odebrać, niezależnie od tego, czy jest to miejsce prywatne, czy publiczne.";
+
/* No comment provided by engineer. */
"Your credentials may be sent unencrypted." = "Twoje poświadczenia mogą zostać wysłane niezaszyfrowane.";
diff --git a/apps/ios/ru.lproj/Localizable.strings b/apps/ios/ru.lproj/Localizable.strings
index 24f0c358cc..7c91d84f12 100644
--- a/apps/ios/ru.lproj/Localizable.strings
+++ b/apps/ios/ru.lproj/Localizable.strings
@@ -638,9 +638,6 @@ swipe action */
/* No comment provided by engineer. */
"Answer call" = "Принять звонок";
-/* No comment provided by engineer. */
-"Anybody can host servers." = "Кто угодно может запустить сервер.";
-
/* No comment provided by engineer. */
"App build: %@" = "Сборка приложения: %@";
@@ -779,6 +776,12 @@ swipe action */
/* No comment provided by engineer. */
"Bad message ID" = "Ошибка ID сообщения";
+/* No comment provided by engineer. */
+"Be free in your network." = "Будь свободен в своей сети.";
+
+/* No comment provided by engineer. */
+"Because we destroyed the power to know who you are. So that your power can never be taken." = "Потому что мы разрушили саму возможность узнать, кто вы. Чтобы вашу свободу невозможно было отнять.";
+
/* No comment provided by engineer. */
"Better calls" = "Улучшенные звонки";
@@ -897,9 +900,6 @@ marked deleted chat item preview text */
/* 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)." = "По профилю чата или [по соединению](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (БЕТА).";
-/* No comment provided by engineer. */
-"By using SimpleX Chat you agree to:\n- send only legal content in public groups.\n- respect other users – no spam." = "Используя SimpleX Chat, Вы согласны:\n- отправлять только законные сообщения в публичных группах.\n- уважать других пользователей – не отправлять спам.";
-
/* No comment provided by engineer. */
"call" = "звонок";
@@ -1083,7 +1083,8 @@ set passcode view */
/* No comment provided by engineer. */
"Chat will be deleted for you - this cannot be undone!" = "Разговор будет удален для Вас - это действие нельзя отменить!";
-/* chat toolbar */
+/* chat feature
+chat toolbar */
"Chat with admins" = "Чат с админами";
/* No comment provided by engineer. */
@@ -1197,9 +1198,6 @@ set passcode view */
/* No comment provided by engineer. */
"Configure ICE servers" = "Настройка ICE серверов";
-/* No comment provided by engineer. */
-"Configure server operators" = "Настроить операторов серверов";
-
/* No comment provided by engineer. */
"Confirm" = "Подтвердить";
@@ -1609,9 +1607,6 @@ server test step */
/* No comment provided by engineer. */
"Debug delivery" = "Отладка доставки";
-/* No comment provided by engineer. */
-"Decentralized" = "Децентрализованный";
-
/* message decrypt error item */
"Decryption error" = "Ошибка расшифровки";
@@ -2863,9 +2858,6 @@ servers warning */
/* No comment provided by engineer. */
"Immediately" = "Сразу";
-/* No comment provided by engineer. */
-"Immune to spam" = "Защищен от спама";
-
/* No comment provided by engineer. */
"Import" = "Импортировать";
@@ -3436,9 +3428,6 @@ servers warning */
/* No comment provided by engineer. */
"Migrate device" = "Мигрировать устройство";
-/* No comment provided by engineer. */
-"Migrate from another device" = "Миграция с другого устройства";
-
/* No comment provided by engineer. */
"Migrate here" = "Мигрировать сюда";
@@ -3719,7 +3708,10 @@ servers warning */
"No unread chats" = "Нет непрочитанных чатов";
/* No comment provided by engineer. */
-"No user identifiers." = "Без идентификаторов пользователей.";
+"Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life." = "Никто не отслеживал ваши разговоры. Никто не составлял карту ваших перемещений. Конфиденциальность не была функцией - это был образ жизни.";
+
+/* No comment provided by engineer. */
+"Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign." = "Не более надёжный замок на чужой двери. Не более вежливый хозяин, который уважает вашу частную жизнь, но всё равно ведёт учёт всех посетителей. Вы не гость. Вы у себя дома. Ни один король не войдёт в ваш дом - вы суверенны.";
/* No comment provided by engineer. */
"Not compatible!" = "Несовместимая версия!";
@@ -4114,12 +4106,6 @@ alert button */
/* No comment provided by engineer. */
"Privacy policy and conditions of use." = "Политика конфиденциальности и условия использования.";
-/* No comment provided by engineer. */
-"Privacy redefined" = "Более конфиденциальный";
-
-/* No comment provided by engineer. */
-"Private chats, groups and your contacts are not accessible to server operators." = "Частные разговоры, группы и Ваши контакты недоступны для операторов серверов.";
-
/* No comment provided by engineer. */
"Private filenames" = "Защищенные имена файлов";
@@ -5368,9 +5354,6 @@ server test failure */
/* No comment provided by engineer. */
"The encryption is working and the new encryption agreement is not required. It may result in connection errors!" = "Шифрование работает, и новое соглашение не требуется. Это может привести к ошибкам соединения!";
-/* No comment provided by engineer. */
-"The future of messaging" = "Будущее коммуникаций";
-
/* No comment provided by engineer. */
"The hash of the previous message is different." = "Хэш предыдущего сообщения отличается.";
@@ -5395,6 +5378,9 @@ server test failure */
/* No comment provided by engineer. */
"The old database was not removed during the migration, it can be deleted." = "Предыдущая версия данных чата не удалена при перемещении, её можно удалить.";
+/* No comment provided by engineer. */
+"The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it." = "Древнейшая человеческая свобода - говорить с другим человеком без слежки - построенная на инфраструктуре, которая не может её предать.";
+
/* No comment provided by engineer. */
"The same conditions will apply to operator **%@**." = "Те же самые условия будут приняты для оператора **%@**.";
@@ -5422,6 +5408,12 @@ server test failure */
/* No comment provided by engineer. */
"Themes" = "Темы";
+/* No comment provided by engineer. */
+"Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible." = "Потом мы вышли в интернет, и каждая платформа попросила частичку вас - ваше имя, ваш номер, ваших друзей. Мы смирились с тем, что за возможность общаться приходится отдавать информацию о том, с кем мы общаемся. Каждое поколение людей и технологий жило так - телефон, электронная почта, мессенджеры, социальные сети. Казалось, что другого пути нет.";
+
+/* No comment provided by engineer. */
+"There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected." = "Другой путь есть. Сеть без номеров телефонов. Без имён пользователей. Без аккаунтов. Без каких-либо идентификаторов пользователей. Сеть, которая соединяет людей и передаёт зашифрованные сообщения, не зная, кто с кем связан.";
+
/* No comment provided by engineer. */
"These conditions will also apply for: **%@**." = "Эти условия также будут применены к: **%@**.";
@@ -6160,9 +6152,6 @@ server test failure */
/* No comment provided by engineer. */
"You could not be verified; please try again." = "Верификация не удалась; пожалуйста, попробуйте ещё раз.";
-/* No comment provided by engineer. */
-"You decide who can connect." = "Вы определяете, кто может соединиться.";
-
/* new chat sheet title */
"You have already requested connection!\nRepeat connection request?" = "Вы уже запросили соединение!\nПовторить запрос?";
@@ -6217,6 +6206,9 @@ server test failure */
/* snd group event chat item */
"you unblocked %@" = "Вы разблокировали %@";
+/* No comment provided by engineer. */
+"You were born without an account" = "Вы родились без аккаунта.";
+
/* No comment provided by engineer. */
"You will be able to send messages **only after your request is accepted**." = "Вы сможете отправлять сообщения **только после того как Ваш запрос будет принят**.";
@@ -6292,6 +6284,9 @@ server test failure */
/* No comment provided by engineer. */
"Your contacts will remain connected." = "Ваши контакты сохранятся.";
+/* No comment provided by engineer. */
+"Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public." = "Ваши разговоры принадлежат вам, как это всегда было до интернета. Сеть - это не место, куда вы приходите. Это место, которое вы создаёте и которым владеете. И никто не может это у вас отнять, делаете ли вы его конфиденциальным или публичным.";
+
/* No comment provided by engineer. */
"Your credentials may be sent unencrypted." = "Ваши учетные данные могут быть отправлены в незашифрованном виде.";
diff --git a/apps/ios/th.lproj/Localizable.strings b/apps/ios/th.lproj/Localizable.strings
index 827dedd00b..141c14cd00 100644
--- a/apps/ios/th.lproj/Localizable.strings
+++ b/apps/ios/th.lproj/Localizable.strings
@@ -353,9 +353,6 @@ swipe action */
/* No comment provided by engineer. */
"Answer call" = "รับสาย";
-/* No comment provided by engineer. */
-"Anybody can host servers." = "โปรโตคอลและโค้ดโอเพ่นซอร์ส – ใคร ๆ ก็สามารถเปิดใช้เซิร์ฟเวอร์ได้";
-
/* No comment provided by engineer. */
"App build: %@" = "รุ่นแอป: %@";
@@ -819,9 +816,6 @@ server test step */
/* time unit */
"days" = "วัน";
-/* No comment provided by engineer. */
-"Decentralized" = "กระจายอำนาจแล้ว";
-
/* message decrypt error item */
"Decryption error" = "ข้อผิดพลาดในการ decrypt";
@@ -1542,9 +1536,6 @@ server test error */
/* No comment provided by engineer. */
"Immediately" = "โดยทันที";
-/* No comment provided by engineer. */
-"Immune to spam" = "มีภูมิคุ้มกันต่อสแปมและการละเมิด";
-
/* No comment provided by engineer. */
"Import" = "นำเข้า";
@@ -1995,9 +1986,6 @@ server test error */
/* copied message info in history */
"no text" = "ไม่มีข้อความ";
-/* No comment provided by engineer. */
-"No user identifiers." = "แพลตฟอร์มแรกที่ไม่มีตัวระบุผู้ใช้ - ถูกออกแบบให้เป็นส่วนตัว";
-
/* No comment provided by engineer. */
"Notifications" = "การแจ้งเตือน";
@@ -2189,9 +2177,6 @@ new chat action */
/* No comment provided by engineer. */
"Privacy & security" = "ความเป็นส่วนตัวและความปลอดภัย";
-/* No comment provided by engineer. */
-"Privacy redefined" = "นิยามความเป็นส่วนตัวใหม่";
-
/* No comment provided by engineer. */
"Private filenames" = "ชื่อไฟล์ส่วนตัว";
@@ -2794,9 +2779,6 @@ server test failure */
/* No comment provided by engineer. */
"The encryption is working and the new encryption agreement is not required. It may result in connection errors!" = "encryption กำลังทำงานและไม่จำเป็นต้องใช้ข้อตกลง encryption ใหม่ อาจทำให้การเชื่อมต่อผิดพลาดได้!";
-/* No comment provided by engineer. */
-"The future of messaging" = "การส่งข้อความส่วนตัวรุ่นต่อไป";
-
/* No comment provided by engineer. */
"The hash of the previous message is different." = "แฮชของข้อความก่อนหน้านี้แตกต่างกัน";
@@ -3157,9 +3139,6 @@ server test failure */
/* No comment provided by engineer. */
"You could not be verified; please try again." = "เราไม่สามารถตรวจสอบคุณได้ กรุณาลองอีกครั้ง.";
-/* No comment provided by engineer. */
-"You decide who can connect." = "ผู้คนสามารถเชื่อมต่อกับคุณผ่านลิงก์ที่คุณแบ่งปันเท่านั้น";
-
/* No comment provided by engineer. */
"You have to enter passphrase every time the app starts - it is not stored on the device." = "คุณต้องใส่รหัสผ่านทุกครั้งที่เริ่มแอป - รหัสผ่านไม่ได้จัดเก็บไว้ในอุปกรณ์";
diff --git a/apps/ios/tr.lproj/Localizable.strings b/apps/ios/tr.lproj/Localizable.strings
index 8681e938bf..0fc11f3478 100644
--- a/apps/ios/tr.lproj/Localizable.strings
+++ b/apps/ios/tr.lproj/Localizable.strings
@@ -638,9 +638,6 @@ swipe action */
/* No comment provided by engineer. */
"Answer call" = "Aramayı cevapla";
-/* No comment provided by engineer. */
-"Anybody can host servers." = "Açık kaynak protokolü ve kodu - herhangi biri sunucuları çalıştırabilir.";
-
/* No comment provided by engineer. */
"App build: %@" = "Uygulama sürümü: %@";
@@ -897,9 +894,6 @@ marked deleted chat item preview text */
/* 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)." = "Sohbet profiline göre (varsayılan) veya [bağlantıya göre](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).";
-/* No comment provided by engineer. */
-"By using SimpleX Chat you agree to:\n- send only legal content in public groups.\n- respect other users – no spam." = "SimpleX Chat'i kullanarak şunları kabul etmiş olursunuz:\n- herkese açık gruplarda yalnızca yasal içerik göndermek.\n- diğer kullanıcılara saygı göstermek – spam yapmamak.";
-
/* No comment provided by engineer. */
"call" = "Ara";
@@ -1083,7 +1077,8 @@ set passcode view */
/* No comment provided by engineer. */
"Chat will be deleted for you - this cannot be undone!" = "Sohbet senden silinecek - bu geri alınamaz!";
-/* chat toolbar */
+/* chat feature
+chat toolbar */
"Chat with admins" = "Yöneticilerle sohbet et";
/* No comment provided by engineer. */
@@ -1197,9 +1192,6 @@ set passcode view */
/* No comment provided by engineer. */
"Configure ICE servers" = "ICE sunucularını ayarla";
-/* No comment provided by engineer. */
-"Configure server operators" = "Sunucu operatörlerini yapılandır";
-
/* No comment provided by engineer. */
"Confirm" = "Onayla";
@@ -1609,9 +1601,6 @@ server test step */
/* No comment provided by engineer. */
"Debug delivery" = "Hata ayıklama teslimatı";
-/* No comment provided by engineer. */
-"Decentralized" = "Merkezi Olmayan";
-
/* message decrypt error item */
"Decryption error" = "Şifre çözme hatası";
@@ -2847,9 +2836,6 @@ servers warning */
/* No comment provided by engineer. */
"Immediately" = "Hemen";
-/* No comment provided by engineer. */
-"Immune to spam" = "Spam ve kötüye kullanıma karşı bağışıklı";
-
/* No comment provided by engineer. */
"Import" = "İçe aktar";
@@ -3420,9 +3406,6 @@ servers warning */
/* No comment provided by engineer. */
"Migrate device" = "Cihazı taşıma";
-/* No comment provided by engineer. */
-"Migrate from another device" = "Başka bir cihazdan geçiş yapın";
-
/* No comment provided by engineer. */
"Migrate here" = "Buraya göç edin";
@@ -3699,9 +3682,6 @@ servers warning */
/* No comment provided by engineer. */
"No unread chats" = "Okunmamış sohbet yok";
-/* No comment provided by engineer. */
-"No user identifiers." = "Herhangi bir kullanıcı tanımlayıcısı yok.";
-
/* No comment provided by engineer. */
"Not compatible!" = "Uyumlu değil!";
@@ -4095,12 +4075,6 @@ alert button */
/* No comment provided by engineer. */
"Privacy policy and conditions of use." = "Gizlilik politikası ve kullanım koşulları.";
-/* No comment provided by engineer. */
-"Privacy redefined" = "Gizlilik yeniden tanımlandı";
-
-/* No comment provided by engineer. */
-"Private chats, groups and your contacts are not accessible to server operators." = "Özel sohbetler, gruplar ve kişilerinize sunucu operatörleri tarafından erişilemez.";
-
/* No comment provided by engineer. */
"Private filenames" = "Gizli dosya adları";
@@ -5349,9 +5323,6 @@ server test failure */
/* No comment provided by engineer. */
"The encryption is working and the new encryption agreement is not required. It may result in connection errors!" = "Şifreleme çalışıyor ve yeni şifreleme anlaşması gerekli değil. Bağlantı hatalarına neden olabilir!";
-/* No comment provided by engineer. */
-"The future of messaging" = "Gizli mesajlaşmanın yeni nesli";
-
/* No comment provided by engineer. */
"The hash of the previous message is different." = "Önceki mesajın hash'i farklı.";
@@ -6132,9 +6103,6 @@ server test failure */
/* No comment provided by engineer. */
"You could not be verified; please try again." = "Doğrulanamadınız; lütfen tekrar deneyin.";
-/* No comment provided by engineer. */
-"You decide who can connect." = "Kimin bağlanabileceğine siz karar verirsiniz.";
-
/* new chat sheet title */
"You have already requested connection!\nRepeat connection request?" = "Zaten bağlantı isteğinde bulundunuz!\nBağlantı isteği tekrarlansın mı?";
diff --git a/apps/ios/uk.lproj/Localizable.strings b/apps/ios/uk.lproj/Localizable.strings
index 06e7b26dae..d65ba029c7 100644
--- a/apps/ios/uk.lproj/Localizable.strings
+++ b/apps/ios/uk.lproj/Localizable.strings
@@ -632,9 +632,6 @@ swipe action */
/* No comment provided by engineer. */
"Answer call" = "Відповісти на дзвінок";
-/* No comment provided by engineer. */
-"Anybody can host servers." = "Кожен може хостити сервери.";
-
/* No comment provided by engineer. */
"App build: %@" = "Збірка програми: %@";
@@ -885,9 +882,6 @@ marked deleted chat item preview text */
/* 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)." = "Через профіль чату (за замовчуванням) або [за з'єднанням](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).";
-/* No comment provided by engineer. */
-"By using SimpleX Chat you agree to:\n- send only legal content in public groups.\n- respect other users – no spam." = "Використовуючи SimpleX Chat, ви погоджуєтеся:\n- надсилати лише легальний контент у публічних групах.\n- поважати інших користувачів - без спаму.";
-
/* No comment provided by engineer. */
"call" = "дзвонити";
@@ -1071,7 +1065,8 @@ set passcode view */
/* No comment provided by engineer. */
"Chat will be deleted for you - this cannot be undone!" = "Чат буде видалено для вас - цю дію неможливо скасувати!";
-/* chat toolbar */
+/* chat feature
+chat toolbar */
"Chat with admins" = "Чат з адміністраторами";
/* No comment provided by engineer. */
@@ -1185,9 +1180,6 @@ set passcode view */
/* No comment provided by engineer. */
"Configure ICE servers" = "Налаштування серверів ICE";
-/* No comment provided by engineer. */
-"Configure server operators" = "Налаштувати операторів сервера";
-
/* No comment provided by engineer. */
"Confirm" = "Підтвердити";
@@ -1594,9 +1586,6 @@ server test step */
/* No comment provided by engineer. */
"Debug delivery" = "Доставка налагодження";
-/* No comment provided by engineer. */
-"Decentralized" = "Децентралізований";
-
/* message decrypt error item */
"Decryption error" = "Помилка розшифровки";
@@ -2823,9 +2812,6 @@ servers warning */
/* No comment provided by engineer. */
"Immediately" = "Негайно";
-/* No comment provided by engineer. */
-"Immune to spam" = "Імунітет до спаму та зловживань";
-
/* No comment provided by engineer. */
"Import" = "Імпорт";
@@ -3390,9 +3376,6 @@ servers warning */
/* No comment provided by engineer. */
"Migrate device" = "Перенести пристрій";
-/* No comment provided by engineer. */
-"Migrate from another device" = "Перехід з іншого пристрою";
-
/* No comment provided by engineer. */
"Migrate here" = "Мігруйте сюди";
@@ -3669,9 +3652,6 @@ servers warning */
/* No comment provided by engineer. */
"No unread chats" = "Немає непрочитаних чатів";
-/* No comment provided by engineer. */
-"No user identifiers." = "Ніяких ідентифікаторів користувачів.";
-
/* No comment provided by engineer. */
"Not compatible!" = "Не сумісні!";
@@ -4050,12 +4030,6 @@ alert button */
/* No comment provided by engineer. */
"Privacy policy and conditions of use." = "Політика конфіденційності та умови використання.";
-/* No comment provided by engineer. */
-"Privacy redefined" = "Конфіденційність переглянута";
-
-/* No comment provided by engineer. */
-"Private chats, groups and your contacts are not accessible to server operators." = "Приватні чати, групи та ваші контакти недоступні для операторів сервера.";
-
/* No comment provided by engineer. */
"Private filenames" = "Приватні імена файлів";
@@ -5292,9 +5266,6 @@ server test failure */
/* No comment provided by engineer. */
"The encryption is working and the new encryption agreement is not required. It may result in connection errors!" = "Шифрування працює і нова угода про шифрування не потрібна. Це може призвести до помилок з'єднання!";
-/* No comment provided by engineer. */
-"The future of messaging" = "Наступне покоління приватних повідомлень";
-
/* No comment provided by engineer. */
"The hash of the previous message is different." = "Хеш попереднього повідомлення відрізняється.";
@@ -6069,9 +6040,6 @@ server test failure */
/* No comment provided by engineer. */
"You could not be verified; please try again." = "Вас не вдалося верифікувати, спробуйте ще раз.";
-/* No comment provided by engineer. */
-"You decide who can connect." = "Ви вирішуєте, хто може під'єднатися.";
-
/* new chat sheet title */
"You have already requested connection!\nRepeat connection request?" = "Ви вже надіслали запит на підключення!\nПовторити запит на підключення?";
diff --git a/apps/ios/zh-Hans.lproj/Localizable.strings b/apps/ios/zh-Hans.lproj/Localizable.strings
index 3297b7dce0..21d51bbcc4 100644
--- a/apps/ios/zh-Hans.lproj/Localizable.strings
+++ b/apps/ios/zh-Hans.lproj/Localizable.strings
@@ -638,9 +638,6 @@ swipe action */
/* No comment provided by engineer. */
"Answer call" = "接听来电";
-/* No comment provided by engineer. */
-"Anybody can host servers." = "任何人都可以托管服务器。";
-
/* No comment provided by engineer. */
"App build: %@" = "应用程序构建:%@";
@@ -782,6 +779,12 @@ swipe action */
/* No comment provided by engineer. */
"Bad message ID" = "错误消息 ID";
+/* No comment provided by engineer. */
+"Be free in your network." = "在你的网络中自由畅行。";
+
+/* No comment provided by engineer. */
+"Because we destroyed the power to know who you are. So that your power can never be taken." = "因为我们摧毁了知道你是谁的权力,因而您的权利永远不会被夺走。";
+
/* No comment provided by engineer. */
"Better calls" = "更佳的通话";
@@ -900,9 +903,6 @@ marked deleted chat item preview text */
/* 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)." = "通过聊天资料(默认)或者[通过连接](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)。";
-/* No comment provided by engineer. */
-"By using SimpleX Chat you agree to:\n- send only legal content in public groups.\n- respect other users – no spam." = "使用 SimpleX Chat 代表您同意:\n- 在公开群中只发送合法内容\n- 尊重其他用户 – 没有垃圾信息。";
-
/* No comment provided by engineer. */
"call" = "呼叫";
@@ -1086,7 +1086,8 @@ set passcode view */
/* No comment provided by engineer. */
"Chat will be deleted for you - this cannot be undone!" = "将为你删除聊天 - 此操作无法撤销!";
-/* chat toolbar */
+/* chat feature
+chat toolbar */
"Chat with admins" = "和管理员聊天";
/* No comment provided by engineer. */
@@ -1200,9 +1201,6 @@ set passcode view */
/* No comment provided by engineer. */
"Configure ICE servers" = "配置 ICE 服务器";
-/* No comment provided by engineer. */
-"Configure server operators" = "配置服务器运营方";
-
/* No comment provided by engineer. */
"Confirm" = "确认";
@@ -1612,9 +1610,6 @@ server test step */
/* No comment provided by engineer. */
"Debug delivery" = "调试交付";
-/* No comment provided by engineer. */
-"Decentralized" = "分散式";
-
/* message decrypt error item */
"Decryption error" = "解密错误";
@@ -2872,9 +2867,6 @@ servers warning */
/* No comment provided by engineer. */
"Immediately" = "立即";
-/* No comment provided by engineer. */
-"Immune to spam" = "不受垃圾和骚扰消息影响";
-
/* No comment provided by engineer. */
"Import" = "导入";
@@ -3451,9 +3443,6 @@ servers warning */
/* No comment provided by engineer. */
"Migrate device" = "迁移设备";
-/* No comment provided by engineer. */
-"Migrate from another device" = "从另一台设备迁移";
-
/* No comment provided by engineer. */
"Migrate here" = "迁移到此处";
@@ -3734,7 +3723,10 @@ servers warning */
"No unread chats" = "没有未读聊天";
/* No comment provided by engineer. */
-"No user identifiers." = "没有用户标识符。";
+"Nobody tracked your conversations. No one drew a map of where you'd been. Privacy was never a feature - it was the way of life." = "没有人追踪你的谈话内容。没有人绘制你去过的地方的地图。隐私从来都不是一项功能--而是一种生活方式。";
+
+/* No comment provided by engineer. */
+"Not a better lock on someone else's door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it - you are sovereign." = "别人家的门锁再好也比不上这里。房东再好也比不上这里,他既尊重你的隐私,又保留着所有访客的记录。你不是客人,你是家。没有国王能闯入--你是主人。";
/* No comment provided by engineer. */
"Not compatible!" = "不兼容!";
@@ -4126,12 +4118,6 @@ alert button */
/* No comment provided by engineer. */
"Privacy policy and conditions of use." = "隐私政策和使用条款。";
-/* No comment provided by engineer. */
-"Privacy redefined" = "重新定义隐私";
-
-/* No comment provided by engineer. */
-"Private chats, groups and your contacts are not accessible to server operators." = "服务器运营方无法访问私密聊天、群组和你的联系人。";
-
/* No comment provided by engineer. */
"Private filenames" = "私密文件名";
@@ -5389,9 +5375,6 @@ server test failure */
/* No comment provided by engineer. */
"The encryption is working and the new encryption agreement is not required. It may result in connection errors!" = "加密正在运行,不需要新的加密协议。这可能会导致连接错误!";
-/* No comment provided by engineer. */
-"The future of messaging" = "下一代私密通讯软件";
-
/* No comment provided by engineer. */
"The hash of the previous message is different." = "上一条消息的散列不同。";
@@ -5416,6 +5399,9 @@ server test failure */
/* No comment provided by engineer. */
"The old database was not removed during the migration, it can be deleted." = "旧数据库在迁移过程中没有被移除,可以删除。";
+/* No comment provided by engineer. */
+"The oldest human freedom - to speak to another person without being watched - built on infrastructure that cannot betray it." = "人类最古老的自由--与他人交谈而不被监视--建立在不会背叛它的基础设施之上。";
+
/* No comment provided by engineer. */
"The second preset operator in the app!" = "应用中的第二个预设运营方!";
@@ -5437,6 +5423,12 @@ server test failure */
/* No comment provided by engineer. */
"Themes" = "主题";
+/* No comment provided by engineer. */
+"Then we moved online, and every platform asked for a piece of you - your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way - telephone, email, messengers, social media. It seemed the only way possible." = "然后我们转向线上,每个平台都要求你提供一些信息--你的姓名、电话号码、好友列表。我们接受了这样一个事实:与人交流的代价就是让别人知道我们在和谁交流。每一代人,每一代科技,都遵循着这样的模式--电话、电子邮件、即时通讯、社交媒体。这似乎是唯一可行的方式。";
+
+/* No comment provided by engineer. */
+"There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected." = "还有另一种方法。一个没有电话号码、没有用户名、没有账户、没有任何用户身份的网络。一个连接人们并传输加密信息的网络,而无需知道谁连接了。";
+
/* No comment provided by engineer. */
"These conditions will also apply for: **%@**." = "这些条件将同样适用于: **%@**。";
@@ -6175,9 +6167,6 @@ server test failure */
/* No comment provided by engineer. */
"You could not be verified; please try again." = "您的身份无法验证,请再试一次。";
-/* No comment provided by engineer. */
-"You decide who can connect." = "你决定谁可以连接。";
-
/* new chat sheet title */
"You have already requested connection!\nRepeat connection request?" = "您已经请求连接了!\n重复连接请求?";
@@ -6229,6 +6218,9 @@ server test failure */
/* snd group event chat item */
"you unblocked %@" = "您解封了 %@";
+/* No comment provided by engineer. */
+"You were born without an account" = "你生来就没有账户。";
+
/* No comment provided by engineer. */
"You will be able to send messages **only after your request is accepted**." = "**只有在你的请求被接受后**你才能发送消息。";
@@ -6298,6 +6290,9 @@ server test failure */
/* No comment provided by engineer. */
"Your contacts will remain connected." = "与您的联系人保持连接。";
+/* No comment provided by engineer. */
+"Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public." = "你的对话内容始终属于你,就像互联网出现之前一样。网络不是一个你访问的地方,而是一个你创建并拥有的地方。无论你将其设为私密还是公开,任何人都无法将其夺走。";
+
/* No comment provided by engineer. */
"Your credentials may be sent unencrypted." = "你的凭据可能以未经加密的方式被发送。";
diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/onboarding/SimpleXInfo.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/onboarding/SimpleXInfo.android.kt
index d9d3af7bb7..a4fc74f6d4 100644
--- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/onboarding/SimpleXInfo.android.kt
+++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/onboarding/SimpleXInfo.android.kt
@@ -10,7 +10,7 @@ import chat.simplex.res.MR
@Composable
actual fun OnboardingActionButton(user: User?, onboardingStage: SharedPreference, onclick: (() -> Unit)?) {
if (user == null) {
- OnboardingActionButton(Modifier.fillMaxWidth(), labelId = MR.strings.create_your_profile, onboarding = OnboardingStage.Step2_CreateProfile, onclick = onclick)
+ OnboardingActionButton(Modifier.fillMaxWidth(), labelId = MR.strings.get_started, onboarding = OnboardingStage.Step2_CreateProfile, onclick = onclick)
} else {
OnboardingActionButton(Modifier.fillMaxWidth(), labelId = MR.strings.make_private_connection, onboarding = OnboardingStage.OnboardingComplete, onclick = onclick)
}
diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/App.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/App.kt
index e1696fe37b..7542a0b8c6 100644
--- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/App.kt
+++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/App.kt
@@ -142,10 +142,8 @@ fun MainScreen() {
when {
onboarding == OnboardingStage.Step1_SimpleXInfo && chatModel.migrationState.value != null -> {
// In migration process. Nothing should interrupt it, that's why it's the first branch in when()
- SimpleXInfo(chatModel, onboarding = true)
- if (appPlatform.isDesktop) {
- ModalManager.fullscreen.showInView()
- }
+ if (appPlatform.isDesktop) DesktopOnboarding(onboarding, chatModel)
+ else SimpleXInfo(chatModel, onboarding = true)
}
chatModel.dbMigrationInProgress.value -> DefaultProgressView(stringResource(MR.strings.database_migration_in_progress))
chatModel.chatDbStatus.value == null && showInitializationView -> DefaultProgressView(stringResource(MR.strings.opening_database))
@@ -175,36 +173,31 @@ fun MainScreen() {
}
}
}
- else -> AnimatedContent(targetState = onboarding,
- transitionSpec = {
- if (targetState > initialState) {
- fromEndToStartTransition()
- } else {
- fromStartToEndTransition()
- }.using(SizeTransform(clip = false))
- }
- ) { state ->
- when (state) {
- OnboardingStage.OnboardingComplete -> { /* handled out of AnimatedContent block */}
- OnboardingStage.Step1_SimpleXInfo -> {
- SimpleXInfo(chatModel, onboarding = true)
- if (appPlatform.isDesktop) {
- ModalManager.fullscreen.showInView()
+ else -> {
+ if (appPlatform.isDesktop) {
+ DesktopOnboarding(onboarding, chatModel)
+ } else {
+ AnimatedContent(targetState = onboarding,
+ transitionSpec = {
+ if (targetState > initialState) {
+ fromEndToStartTransition()
+ } else {
+ fromStartToEndTransition()
+ }.using(SizeTransform(clip = false))
+ }
+ ) { state ->
+ when (state) {
+ OnboardingStage.OnboardingComplete -> {}
+ OnboardingStage.Step1_SimpleXInfo -> SimpleXInfo(chatModel, onboarding = true)
+ OnboardingStage.Step2_CreateProfile -> CreateFirstProfile(chatModel) {}
+ OnboardingStage.LinkAMobile -> LinkAMobile()
+ OnboardingStage.Step2_5_SetupDatabasePassphrase -> SetupDatabasePassphrase(chatModel)
+ OnboardingStage.Step3_ChooseServerOperators,
+ OnboardingStage.Step3_CreateSimpleXAddress,
+ OnboardingStage.Step4_SetNotificationsMode -> YourNetworkView(chatModel)
+ OnboardingStage.Step4_NetworkCommitments -> OnboardingConditionsView(chatModel)
}
}
- OnboardingStage.Step2_CreateProfile -> CreateFirstProfile(chatModel) {}
- OnboardingStage.LinkAMobile -> LinkAMobile()
- OnboardingStage.Step2_5_SetupDatabasePassphrase -> SetupDatabasePassphrase(chatModel)
- OnboardingStage.Step3_ChooseServerOperators -> {
- val modalData = remember { ModalData() }
- modalData.OnboardingConditionsView()
- if (appPlatform.isDesktop) {
- ModalManager.fullscreen.showInView()
- }
- }
- // Ensure backwards compatibility with old onboarding stage for address creation, otherwise notification setup would be skipped
- OnboardingStage.Step3_CreateSimpleXAddress -> SetNotificationsMode(chatModel)
- OnboardingStage.Step4_SetNotificationsMode -> SetNotificationsMode(chatModel)
}
}
}
@@ -276,6 +269,27 @@ fun MainScreen() {
}
}
+@Composable
+private fun DesktopOnboarding(onboarding: OnboardingStage, chatModel: ChatModel) {
+ if (onboarding == OnboardingStage.LinkAMobile) {
+ LinkAMobile()
+ ModalManager.fullscreen.showInView()
+ } else {
+ DesktopOnboardingShell(onboarding) {
+ when (onboarding) {
+ OnboardingStage.Step1_SimpleXInfo -> SimpleXInfo(chatModel, onboarding = true)
+ OnboardingStage.Step2_CreateProfile -> CreateFirstProfile(chatModel) {}
+ OnboardingStage.Step2_5_SetupDatabasePassphrase -> SetupDatabasePassphrase(chatModel)
+ OnboardingStage.Step3_ChooseServerOperators,
+ OnboardingStage.Step3_CreateSimpleXAddress,
+ OnboardingStage.Step4_SetNotificationsMode -> YourNetworkView(chatModel)
+ OnboardingStage.Step4_NetworkCommitments -> OnboardingConditionsView(chatModel)
+ else -> {}
+ }
+ }
+ }
+}
+
val ANDROID_CALL_TOP_PADDING = 40.dp
@Composable
diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/SimpleXAPI.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/SimpleXAPI.kt
index 0363c4fc05..4d396c117e 100644
--- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/SimpleXAPI.kt
+++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/SimpleXAPI.kt
@@ -213,7 +213,7 @@ class AppPreferences {
val shouldImportAppSettings = mkBoolPreference(SHARED_PREFS_SHOULD_IMPORT_APP_SETTINGS, false)
val currentTheme = mkStrPreference(SHARED_PREFS_CURRENT_THEME, DefaultTheme.SYSTEM_THEME_NAME)
- val systemDarkTheme = mkStrPreference(SHARED_PREFS_SYSTEM_DARK_THEME, DefaultTheme.SIMPLEX.themeName)
+ val systemDarkTheme = mkStrPreference(SHARED_PREFS_SYSTEM_DARK_THEME, DefaultTheme.DARK.themeName)
val currentThemeIds = mkMapPreference(SHARED_PREFS_CURRENT_THEME_IDs, mapOf(), encode = {
json.encodeToString(MapSerializer(String.serializer(), String.serializer()), it)
}, decode = {
diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/platform/Core.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/platform/Core.kt
index 36a7ae1a80..3805a8e8b7 100644
--- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/platform/Core.kt
+++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/platform/Core.kt
@@ -162,11 +162,7 @@ suspend fun initChatController(useKey: String? = null, confirmMigrations: Migrat
} else if (startChat().await()) {
val savedOnboardingStage = appPreferences.onboardingStage.get()
val newStage = if (listOf(OnboardingStage.Step1_SimpleXInfo, OnboardingStage.Step2_CreateProfile).contains(savedOnboardingStage) && chatModel.users.size == 1) {
- if (appPlatform.isAndroid) {
- OnboardingStage.Step4_SetNotificationsMode
- } else {
- OnboardingStage.OnboardingComplete
- }
+ OnboardingStage.Step4_NetworkCommitments
} else {
savedOnboardingStage
}
diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/ui/theme/Type.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/ui/theme/Type.kt
index 9acfffb3ac..9b0f89c36d 100644
--- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/ui/theme/Type.kt
+++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/ui/theme/Type.kt
@@ -10,7 +10,7 @@ val Typography = Typography(
h1 = TextStyle(
fontFamily = Inter,
fontWeight = FontWeight.Bold,
- fontSize = 32.sp,
+ fontSize = 33.5.sp,
),
h2 = TextStyle(
fontFamily = Inter,
diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/WelcomeView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/WelcomeView.kt
index 6ec124048c..8b3a755d39 100644
--- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/WelcomeView.kt
+++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/WelcomeView.kt
@@ -4,6 +4,7 @@ import SectionTextFooter
import androidx.compose.foundation.*
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.*
+import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.BasicTextField
import androidx.compose.material.*
import androidx.compose.material.MaterialTheme.colors
@@ -11,22 +12,35 @@ import androidx.compose.runtime.*
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.clip
+import androidx.compose.ui.draw.drawBehind
import androidx.compose.ui.focus.*
+import androidx.compose.ui.platform.LocalFocusManager
+import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.SolidColor
+import androidx.compose.ui.layout.ContentScale
import dev.icerock.moko.resources.compose.painterResource
import dev.icerock.moko.resources.compose.stringResource
import androidx.compose.ui.text.TextStyle
+import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.input.VisualTransformation
import androidx.compose.ui.text.style.*
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
+import chat.simplex.common.BuildConfigCommon
import chat.simplex.common.model.*
import chat.simplex.common.model.ChatController.appPrefs
import chat.simplex.common.model.ChatModel.controller
import chat.simplex.common.platform.*
import chat.simplex.common.ui.theme.*
import chat.simplex.common.views.helpers.*
+import chat.simplex.common.views.migration.MigrateToDeviceView
+import chat.simplex.common.views.migration.MigrationToState
+import chat.simplex.common.views.newchat.darkStops
+import chat.simplex.common.views.newchat.gradientPoints
+import chat.simplex.common.views.newchat.lightStops
import chat.simplex.common.views.onboarding.*
import chat.simplex.common.views.usersettings.SettingsActionItem
import chat.simplex.res.MR
@@ -127,45 +141,114 @@ fun CreateProfile(chatModel: ChatModel, close: () -> Unit) {
@Composable
fun CreateFirstProfile(chatModel: ChatModel, close: () -> Unit) {
- val scope = rememberCoroutineScope()
- val scrollState = rememberScrollState()
- val keyboardState by getKeyboardState()
- var savedKeyboardState by remember { mutableStateOf(keyboardState) }
- CompositionLocalProvider(LocalAppBarHandler provides rememberAppBarHandler()) {
- ModalView({
- if (chatModel.users.none { !it.user.hidden }) {
- appPrefs.onboardingStage.set(OnboardingStage.Step1_SimpleXInfo)
- } else {
- close()
+ if (appPlatform.isDesktop) {
+ CreateFirstProfileDesktop(chatModel, close)
+ } else {
+ CreateFirstProfileMobile(chatModel, close)
+ }
+}
+
+@Composable
+private fun RowScope.MigrateButton(refocusTrigger: MutableState) {
+ val focusManager = LocalFocusManager.current
+ TextButton(
+ onClick = {
+ focusManager.clearFocus()
+ if (chatModel.migrationState.value == null) {
+ chatModel.migrationState.value = MigrationToState.PasteOrScanLink
}
- }) {
- ColumnWithScrollBar {
- val displayName = rememberSaveable { mutableStateOf("") }
- val focusRequester = remember { FocusRequester() }
- Column(if (appPlatform.isAndroid) Modifier.fillMaxSize().padding(start = DEFAULT_ONBOARDING_HORIZONTAL_PADDING * 2, end = DEFAULT_ONBOARDING_HORIZONTAL_PADDING * 2, bottom = DEFAULT_PADDING) else Modifier.widthIn(max = 600.dp).fillMaxHeight().padding(horizontal = DEFAULT_PADDING).align(Alignment.CenterHorizontally), horizontalAlignment = Alignment.CenterHorizontally) {
- Box(Modifier.align(Alignment.CenterHorizontally)) {
- AppBarTitle(stringResource(MR.strings.create_your_profile), bottomPadding = DEFAULT_PADDING, withPadding = false)
- }
- ReadableText(MR.strings.your_profile_is_stored_on_your_device, TextAlign.Center, padding = PaddingValues(), style = MaterialTheme.typography.body1.copy(color = MaterialTheme.colors.secondary))
- Spacer(Modifier.height(DEFAULT_PADDING))
- ReadableText(MR.strings.profile_is_only_shared_with_your_contacts, TextAlign.Center, style = MaterialTheme.typography.body1.copy(color = MaterialTheme.colors.secondary))
- Spacer(Modifier.height(DEFAULT_PADDING))
- ProfileNameField(displayName, stringResource(MR.strings.display_name), { it.trim() == mkValidName(it) }, focusRequester)
+ ModalManager.fullscreen.showCustomModal(animated = false, forceAnimated = appPlatform.isDesktop) { close ->
+ MigrateToDeviceView {
+ close()
+ refocusTrigger.value++
}
- Spacer(Modifier.fillMaxHeight().weight(1f))
- Column(Modifier.widthIn(max = if (appPlatform.isAndroid) 450.dp else 1000.dp).align(Alignment.CenterHorizontally), horizontalAlignment = Alignment.CenterHorizontally) {
+ }
+ },
+ modifier = Modifier.padding(end = DEFAULT_PADDING_HALF)
+ ) {
+ Icon(painterResource(MR.images.ic_download), null, Modifier.size(22.dp), tint = MaterialTheme.colors.primary)
+ Spacer(Modifier.width(4.dp))
+ Text(
+ stringResource(if (appPlatform.isDesktop) MR.strings.migrate_from_another_device else MR.strings.migrate),
+ color = MaterialTheme.colors.primary, fontWeight = FontWeight.Medium
+ )
+ }
+}
+
+private fun onboardingBackAction(chatModel: ChatModel, close: () -> Unit) {
+ if (chatModel.users.none { !it.user.hidden }) {
+ appPrefs.onboardingStage.set(OnboardingStage.Step1_SimpleXInfo)
+ } else {
+ close()
+ }
+}
+
+@Composable
+private fun CreateFirstProfileMobile(chatModel: ChatModel, close: () -> Unit) {
+ CompositionLocalProvider(LocalAppBarHandler provides rememberAppBarHandler()) {
+ val focusRequester = remember { FocusRequester() }
+ val refocusTrigger = remember { mutableStateOf(0) }
+ ModalView(
+ close = { onboardingBackAction(chatModel, close) },
+ endButtons = { MigrateButton(refocusTrigger) }
+ ) {
+ val displayName = rememberSaveable { mutableStateOf("") }
+ val keyboardState by getKeyboardState()
+ val imageHeightModifier = if (keyboardState == KeyboardState.Opened) {
+ Modifier.heightIn(max = 100.dp)
+ } else {
+ Modifier
+ }
+ ColumnWithScrollBar(Modifier.padding(horizontal = DEFAULT_ONBOARDING_HORIZONTAL_PADDING), horizontalAlignment = Alignment.CenterHorizontally, maxIntrinsicSize = true) {
+ Spacer(Modifier.weight(1f))
+
+ OnboardingImage(
+ MR.images.your_profile, MR.images.your_profile_light, MR.images.ic_person,
+ modifier = Modifier
+ .then(if (keyboardState != KeyboardState.Opened) Modifier.fillMaxWidth() else Modifier)
+ .then(imageHeightModifier)
+ )
+
+ Text(
+ stringResource(MR.strings.onboarding_your_profile),
+ style = MaterialTheme.typography.h1,
+ fontWeight = FontWeight.Bold,
+ textAlign = TextAlign.Center,
+ modifier = Modifier.padding(top = DEFAULT_PADDING_HALF)
+ )
+ Text(
+ stringResource(MR.strings.onboarding_on_your_phone),
+ style = MaterialTheme.typography.h3,
+ fontWeight = FontWeight.Medium,
+ color = MaterialTheme.colors.secondary,
+ lineHeight = 25.sp,
+ textAlign = TextAlign.Center,
+ modifier = Modifier.padding(top = 14.dp)
+ )
+ Text(
+ stringResource(MR.strings.onboarding_no_account),
+ style = MaterialTheme.typography.body2,
+ color = MaterialTheme.colors.secondary,
+ textAlign = TextAlign.Center,
+ lineHeight = 20.sp,
+ modifier = Modifier.padding(top = DEFAULT_PADDING_HALF)
+ )
+ Spacer(Modifier.height(DEFAULT_PADDING_HALF))
+ ProfileNameField(displayName, stringResource(MR.strings.enter_profile_name), { it.trim() == mkValidName(it) }, focusRequester)
+
+ Spacer(Modifier.weight(1f))
+
+ Column(Modifier.widthIn(max = 450.dp).padding(bottom = DEFAULT_PADDING * 2).align(Alignment.CenterHorizontally), horizontalAlignment = Alignment.CenterHorizontally) {
OnboardingActionButton(
- if (appPlatform.isAndroid) Modifier.padding(horizontal = DEFAULT_ONBOARDING_HORIZONTAL_PADDING).fillMaxWidth() else Modifier.widthIn(min = 300.dp),
- labelId = MR.strings.create_profile_button,
+ Modifier.fillMaxWidth(),
+ labelId = MR.strings.create_profile,
onboarding = null,
enabled = canCreateProfile(displayName.value),
- onclick = { createProfileOnboarding(chat.simplex.common.platform.chatModel, displayName.value, close) }
+ onclick = { createProfileOnboarding(chatModel, displayName.value, close) }
)
- // Reserve space
- TextButtonBelowOnboardingButton("", null)
}
- LaunchedEffect(Unit) {
+ LaunchedEffect(refocusTrigger.value) {
delay(300)
focusRequester.requestFocus()
}
@@ -173,16 +256,52 @@ fun CreateFirstProfile(chatModel: ChatModel, close: () -> Unit) {
LaunchedEffect(Unit) {
setLastVersionDefault(chatModel)
}
- if (savedKeyboardState != keyboardState) {
- LaunchedEffect(keyboardState) {
- scope.launch {
- savedKeyboardState = keyboardState
- scrollState.animateScrollTo(scrollState.maxValue)
+ }
+ }
+}
+
+@Composable
+private fun CreateFirstProfileDesktop(chatModel: ChatModel, close: () -> Unit) {
+ val focusRequester = remember { FocusRequester() }
+ val refocusTrigger = remember { mutableStateOf(0) }
+ val displayName = rememberSaveable { mutableStateOf("") }
+ CompositionLocalProvider(LocalAppBarHandler provides rememberAppBarHandler()) {
+ ModalView(
+ close = { onboardingBackAction(chatModel, close) },
+ endButtons = { MigrateButton(refocusTrigger) }
+ ) {
+ ColumnWithScrollBar(horizontalAlignment = Alignment.CenterHorizontally) {
+ Column(Modifier.widthIn(max = 600.dp).fillMaxHeight().padding(horizontal = DEFAULT_PADDING).align(Alignment.CenterHorizontally), horizontalAlignment = Alignment.CenterHorizontally) {
+ Box(Modifier.align(Alignment.CenterHorizontally)) {
+ AppBarTitle(stringResource(MR.strings.onboarding_your_profile), bottomPadding = DEFAULT_PADDING, withPadding = false, overrideTitleColor = MaterialTheme.colors.onBackground, textAlign = TextAlign.Center, lineHeight = 42.sp)
}
+ Text(stringResource(MR.strings.onboarding_on_your_phone), style = MaterialTheme.typography.h3, fontWeight = FontWeight.Medium, color = MaterialTheme.colors.secondary, lineHeight = 25.sp, textAlign = TextAlign.Center)
+ Spacer(Modifier.height(DEFAULT_PADDING))
+ ReadableText(MR.strings.onboarding_no_account, TextAlign.Center, style = MaterialTheme.typography.body2.copy(color = MaterialTheme.colors.secondary))
+ Spacer(Modifier.height(DEFAULT_PADDING))
+ ProfileNameField(displayName, stringResource(MR.strings.enter_profile_name), { it.trim() == mkValidName(it) }, focusRequester)
+ }
+ Spacer(Modifier.fillMaxHeight().weight(1f))
+ Column(Modifier.widthIn(max = 1000.dp).align(Alignment.CenterHorizontally), horizontalAlignment = Alignment.CenterHorizontally) {
+ OnboardingActionButton(
+ Modifier.widthIn(min = 300.dp),
+ labelId = MR.strings.create_profile,
+ onboarding = null,
+ enabled = canCreateProfile(displayName.value),
+ onclick = { createProfileOnboarding(chatModel, displayName.value, close) }
+ )
+ TextButtonBelowOnboardingButton("", null)
}
}
+ LaunchedEffect(Unit) {
+ setLastVersionDefault(chatModel)
+ }
}
}
+ LaunchedEffect(refocusTrigger.value) {
+ delay(300)
+ focusRequester.requestFocus()
+ }
}
fun createProfileInNoProfileSetup(displayName: String, close: () -> Unit) {
@@ -207,7 +326,7 @@ fun createProfileInProfiles(chatModel: ChatModel, displayName: String, shortDesc
chatModel.currentUser.value = user
if (chatModel.users.isEmpty()) {
chatModel.controller.startChat(user)
- chatModel.controller.appPrefs.onboardingStage.set(OnboardingStage.Step4_SetNotificationsMode)
+ chatModel.controller.appPrefs.onboardingStage.set(OnboardingStage.Step4_NetworkCommitments)
} else {
val users = chatModel.controller.listUsers(rhId)
chatModel.users.clear()
diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/AppBarTitle.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/AppBarTitle.kt
index afb557cc78..ee63846657 100644
--- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/AppBarTitle.kt
+++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/AppBarTitle.kt
@@ -22,7 +22,10 @@ fun AppBarTitle(
hostDevice: Pair? = null,
withPadding: Boolean = true,
bottomPadding: Dp = DEFAULT_PADDING * 1.5f + 8.dp,
- enableAlphaChanges: Boolean = true
+ enableAlphaChanges: Boolean = true,
+ overrideTitleColor: Color? = null,
+ textAlign: TextAlign = TextAlign.Start,
+ lineHeight: TextUnit = TextUnit.Unspecified
) {
val handler = LocalAppBarHandler.current
val connection = if (enableAlphaChanges) handler?.connection else null
@@ -34,10 +37,12 @@ fun AppBarTitle(
}
}
val theme = CurrentColors.collectAsState()
- val titleColor = MaterialTheme.appColors.title
- val brush = if (theme.value.base == DefaultTheme.SIMPLEX)
+ val titleColor = overrideTitleColor ?: MaterialTheme.appColors.title
+ val brush = if (overrideTitleColor != null)
+ Brush.linearGradient(listOf(titleColor, titleColor), Offset(0f, Float.POSITIVE_INFINITY), Offset(Float.POSITIVE_INFINITY, 0f))
+ else if (theme.value.base == DefaultTheme.SIMPLEX)
Brush.linearGradient(listOf(titleColor.darker(0.2f), titleColor.lighter(0.35f)), Offset(0f, Float.POSITIVE_INFINITY), Offset(Float.POSITIVE_INFINITY, 0f))
- else // color is not updated when changing themes if I pass null here
+ else
Brush.linearGradient(listOf(titleColor, titleColor), Offset(0f, Float.POSITIVE_INFINITY), Offset(Float.POSITIVE_INFINITY, 0f))
Column {
Text(
@@ -48,9 +53,9 @@ fun AppBarTitle(
alpha = bottomTitleAlpha(connection)
},
overflow = TextOverflow.Ellipsis,
- style = MaterialTheme.typography.h1.copy(brush = brush),
+ style = MaterialTheme.typography.h1.copy(brush = brush, lineHeight = lineHeight),
color = MaterialTheme.colors.primaryVariant,
- textAlign = TextAlign.Start
+ textAlign = textAlign
)
if (hostDevice != null) {
Box(Modifier.padding(start = if (withPadding) DEFAULT_PADDING else 0.dp, end = if (withPadding) DEFAULT_PADDING else 0.dp).graphicsLayer {
diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ModalView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ModalView.kt
index 21520f5424..28c81fbf56 100644
--- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ModalView.kt
+++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ModalView.kt
@@ -111,8 +111,8 @@ class ModalManager(private val placement: ModalPlacement? = null) {
fun isLastModalOpen(id: ModalViewId): Boolean = modalViews.lastOrNull()?.id == id
- fun showModal(settings: Boolean = false, showClose: Boolean = true, id: ModalViewId? = null, endButtons: @Composable RowScope.() -> Unit = {}, content: @Composable ModalData.() -> Unit) {
- showCustomModal(id = id) { close ->
+ fun showModal(settings: Boolean = false, showClose: Boolean = true, id: ModalViewId? = null, forceAnimated: Boolean = false, endButtons: @Composable RowScope.() -> Unit = {}, content: @Composable ModalData.() -> Unit) {
+ showCustomModal(id = id, forceAnimated = forceAnimated) { close ->
ModalView(close, showClose = showClose, endButtons = endButtons, content = { content() })
}
}
@@ -123,7 +123,7 @@ class ModalManager(private val placement: ModalPlacement? = null) {
}
}
- fun showCustomModal(animated: Boolean = true, keyboardCoversBar: Boolean = true, id: ModalViewId? = null, modal: @Composable ModalData.(close: () -> Unit) -> Unit) {
+ fun showCustomModal(animated: Boolean = true, keyboardCoversBar: Boolean = true, id: ModalViewId? = null, forceAnimated: Boolean = false, modal: @Composable ModalData.(close: () -> Unit) -> Unit) {
Log.d(TAG, "ModalManager.showCustomModal")
val data = ModalData(keyboardCoversBar = keyboardCoversBar)
// Means, animation is in progress or not started yet. Do not wait until animation finishes, just remove all from screen.
@@ -133,7 +133,7 @@ class ModalManager(private val placement: ModalPlacement? = null) {
}
// Make animated appearance only on Android (everytime) and on Desktop (when it's on the start part of the screen or modals > 0)
// to prevent unneeded animation on different situations
- val anim = if (appPlatform.isAndroid) animated else animated && (modalCount.value > 0 || placement == ModalPlacement.START)
+ val anim = if (appPlatform.isAndroid) animated else (animated && (modalCount.value > 0 || placement == ModalPlacement.START)) || forceAnimated
modalViews.add(ModalViewHolder(id, anim, data, modal))
_modalCount.value = modalViews.size - toRemove.size
diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/ChooseServerOperators.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/ChooseServerOperators.kt
index 9c6c0fa635..2f8fc013fc 100644
--- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/ChooseServerOperators.kt
+++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/ChooseServerOperators.kt
@@ -14,80 +14,160 @@ import androidx.compose.material.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.clip
+import androidx.compose.ui.draw.drawBehind
+import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.graphics.Brush
+import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.text.TextStyle
- import androidx.compose.ui.text.style.TextAlign
+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.BuildConfigCommon
import chat.simplex.common.model.*
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.newchat.darkStops
+import chat.simplex.common.views.newchat.gradientPoints
+import chat.simplex.common.views.newchat.lightStops
import chat.simplex.common.views.usersettings.networkAndServers.*
import chat.simplex.res.MR
import dev.icerock.moko.resources.compose.painterResource
import dev.icerock.moko.resources.compose.stringResource
@Composable
-fun ModalData.OnboardingConditionsView() {
+fun OnboardingConditionsView(chatModel: ChatModel) {
LaunchedEffect(Unit) {
prepareChatBeforeFinishingOnboarding()
}
- CompositionLocalProvider(LocalAppBarHandler provides rememberAppBarHandler()) {
- ModalView({}, showClose = false) {
- val serverOperators = remember { derivedStateOf { chatModel.conditions.value.serverOperators } }
- val selectedOperatorIds = remember { stateGetOrPut("selectedOperatorIds") { serverOperators.value.filter { it.enabled }.map { it.operatorId }.toSet() } }
- ColumnWithScrollBar(
- Modifier
- .themedBackground(bgLayerSize = LocalAppBarHandler.current?.backgroundGraphicsLayerSize, bgLayer = LocalAppBarHandler.current?.backgroundGraphicsLayer),
- maxIntrinsicSize = true
- ) {
- Box(Modifier.align(Alignment.CenterHorizontally)) {
- AppBarTitle(stringResource(MR.strings.operator_conditions_of_use), bottomPadding = DEFAULT_PADDING)
- }
+ val serverOperators = remember { derivedStateOf { chatModel.conditions.value.serverOperators } }
+ val selectedOperatorIds = remember {
+ mutableStateOf(OnboardingSharedState.selectedOperatorIds.ifEmpty {
+ serverOperators.value.filter { it.enabled }.map { it.operatorId }.toSet()
+ })
+ }
- Spacer(Modifier.weight(1f))
- Column(
- (if (appPlatform.isDesktop) Modifier.width(450.dp).align(Alignment.CenterHorizontally) else Modifier)
- .fillMaxWidth()
- .padding(horizontal = DEFAULT_ONBOARDING_HORIZONTAL_PADDING),
- horizontalAlignment = Alignment.Start
- ) {
- Text(
- stringResource(MR.strings.onboarding_conditions_private_chats_not_accessible),
- style = TextStyle(fontSize = 17.sp, lineHeight = 23.sp)
- )
- Spacer(Modifier.height(DEFAULT_PADDING))
- Text(
- stringResource(MR.strings.onboarding_conditions_by_using_you_agree),
- style = TextStyle(fontSize = 17.sp, lineHeight = 23.sp)
- )
- Spacer(Modifier.height(DEFAULT_PADDING))
- Text(
- stringResource(MR.strings.onboarding_conditions_privacy_policy_and_conditions_of_use),
- style = TextStyle(fontSize = 17.sp),
- color = MaterialTheme.colors.primary,
- modifier = Modifier
- .clickable(
- interactionSource = remember { MutableInteractionSource() },
- indication = null
+ if (appPlatform.isDesktop) {
+ OnboardingConditionsDesktop(selectedOperatorIds)
+ } else {
+ CompositionLocalProvider(LocalAppBarHandler provides rememberAppBarHandler()) {
+ ModalView({}, showClose = false, showAppBar = false) {
+ OnboardingShrinkingLayout(
+ modifier = Modifier.fillMaxSize().themedBackground(bgLayerSize = LocalAppBarHandler.current?.backgroundGraphicsLayerSize, bgLayer = LocalAppBarHandler.current?.backgroundGraphicsLayer)
+ .systemBarsPadding()
+ .padding(horizontal = DEFAULT_ONBOARDING_HORIZONTAL_PADDING),
+ topPadding = DEFAULT_PADDING,
+ image = {
+ Column(Modifier.padding(vertical = DEFAULT_PADDING_HALF), horizontalAlignment = Alignment.CenterHorizontally) {
+ OnboardingImage(
+ MR.images.network_commitments, MR.images.network_commitments_light, MR.images.ic_shield,
+ modifier = Modifier.fillMaxWidth(),
+ aspectRatio = 1.5f
+ )
+ }
+ },
+ content = {
+ Column(horizontalAlignment = Alignment.CenterHorizontally) {
+ Text(
+ stringResource(MR.strings.onboarding_network_commitments),
+ style = MaterialTheme.typography.h1,
+ fontWeight = FontWeight.Bold,
+ textAlign = TextAlign.Center,
+ lineHeight = 42.sp,
+ modifier = Modifier.padding(top = DEFAULT_PADDING_HALF)
+ )
+ Column(
+ Modifier.fillMaxWidth()
+ .padding(horizontal = DEFAULT_PADDING_HALF)
+ .padding(top = DEFAULT_PADDING),
+ horizontalAlignment = Alignment.Start
) {
- ModalManager.fullscreen.showModal(endButtons = { ConditionsLinkButton() }) {
- SimpleConditionsView(rhId = null)
- }
+ Text(
+ stringResource(MR.strings.onboarding_conditions_private_chats_not_accessible),
+ style = MaterialTheme.typography.body1,
+ lineHeight = 22.sp
+ )
+ Spacer(Modifier.height(DEFAULT_PADDING))
+ Text(
+ stringResource(MR.strings.onboarding_conditions_by_using_you_agree),
+ style = MaterialTheme.typography.body1,
+ lineHeight = 22.sp
+ )
+ Spacer(Modifier.height(DEFAULT_PADDING))
+ Text(
+ stringResource(MR.strings.onboarding_conditions_privacy_policy_and_conditions_of_use),
+ style = MaterialTheme.typography.body2,
+ fontWeight = FontWeight.Medium,
+ color = MaterialTheme.colors.primary,
+ modifier = Modifier
+ .clickable(
+ interactionSource = remember { MutableInteractionSource() },
+ indication = null
+ ) {
+ ModalManager.fullscreen.showModal(endButtons = { ConditionsLinkButton() }) {
+ SimpleConditionsView(rhId = null) {
+ ModalManager.fullscreen.closeModal()
+ acceptConditions(selectedOperatorIds.value)
+ }
+ }
+ }
+ )
}
- )
- }
- Spacer(Modifier.weight(1f))
-
- Column(Modifier.widthIn(max = if (appPlatform.isAndroid) 450.dp else 1000.dp).align(Alignment.CenterHorizontally), horizontalAlignment = Alignment.CenterHorizontally) {
- AcceptConditionsButton(enabled = selectedOperatorIds.value.isNotEmpty(), selectedOperatorIds)
- TextButtonBelowOnboardingButton(stringResource(MR.strings.onboarding_conditions_configure_server_operators)) {
- ModalManager.fullscreen.showModalCloseable { close ->
- ChooseServerOperators(serverOperators, selectedOperatorIds, close)
+ }
+ },
+ button = {
+ Column(Modifier.widthIn(max = 450.dp).padding(bottom = DEFAULT_PADDING * 2), horizontalAlignment = Alignment.CenterHorizontally) {
+ AcceptConditionsButton(enabled = selectedOperatorIds.value.isNotEmpty(), selectedOperatorIds)
}
}
+ )
+ }
+ }
+ }
+}
+
+@Composable
+private fun OnboardingConditionsDesktop(selectedOperatorIds: MutableState>) {
+ CompositionLocalProvider(LocalAppBarHandler provides rememberAppBarHandler()) {
+ ModalView({}, showClose = false) {
+ ColumnWithScrollBar(horizontalAlignment = Alignment.CenterHorizontally) {
+ Column(Modifier.widthIn(max = 600.dp).fillMaxHeight().padding(horizontal = DEFAULT_PADDING).align(Alignment.CenterHorizontally), horizontalAlignment = Alignment.CenterHorizontally) {
+ Box(Modifier.align(Alignment.CenterHorizontally)) {
+ AppBarTitle(stringResource(MR.strings.onboarding_network_commitments), bottomPadding = DEFAULT_PADDING, withPadding = false, overrideTitleColor = MaterialTheme.colors.onBackground, textAlign = TextAlign.Center, lineHeight = 42.sp)
+ }
+ Column(Modifier.width(450.dp), horizontalAlignment = Alignment.Start) {
+ ReadableText(MR.strings.onboarding_conditions_private_chats_not_accessible, TextAlign.Start, padding = PaddingValues(), style = MaterialTheme.typography.body1)
+ Spacer(Modifier.height(DEFAULT_PADDING))
+ ReadableText(MR.strings.onboarding_conditions_by_using_you_agree, TextAlign.Start, padding = PaddingValues(), style = MaterialTheme.typography.body1)
+ Spacer(Modifier.height(DEFAULT_PADDING))
+ Text(
+ stringResource(MR.strings.onboarding_conditions_privacy_policy_and_conditions_of_use),
+ style = MaterialTheme.typography.body1,
+ fontWeight = FontWeight.Medium,
+ color = MaterialTheme.colors.primary,
+ modifier = Modifier
+ .clickable(
+ interactionSource = remember { MutableInteractionSource() },
+ indication = null
+ ) {
+ ModalManager.fullscreen.showModal(forceAnimated = true, endButtons = { ConditionsLinkButton() }) {
+ SimpleConditionsView(rhId = null) {
+ ModalManager.fullscreen.closeModal()
+ acceptConditions(selectedOperatorIds.value)
+ }
+ }
+ }
+ )
+ }
+ }
+ Spacer(Modifier.fillMaxHeight().weight(1f))
+ Column(Modifier.widthIn(max = 1000.dp).align(Alignment.CenterHorizontally), horizontalAlignment = Alignment.CenterHorizontally) {
+ AcceptConditionsButton(enabled = selectedOperatorIds.value.isNotEmpty(), selectedOperatorIds)
+ TextButtonBelowOnboardingButton("", null)
}
}
}
@@ -104,7 +184,7 @@ fun ModalData.ChooseServerOperators(
prepareChatBeforeFinishingOnboarding()
}
CompositionLocalProvider(LocalAppBarHandler provides rememberAppBarHandler()) {
- ModalView({}, showClose = false) {
+ ModalView(close, enableClose = selectedOperatorIds.value.isNotEmpty()) {
ColumnWithScrollBar(
Modifier
.themedBackground(bgLayerSize = LocalAppBarHandler.current?.backgroundGraphicsLayerSize, bgLayer = LocalAppBarHandler.current?.backgroundGraphicsLayer),
@@ -141,11 +221,9 @@ fun ModalData.ChooseServerOperators(
}
Spacer(Modifier.weight(1f))
- Column(Modifier.widthIn(max = if (appPlatform.isAndroid) 450.dp else 1000.dp).align(Alignment.CenterHorizontally), horizontalAlignment = Alignment.CenterHorizontally) {
+ Column(Modifier.widthIn(max = if (appPlatform.isAndroid) 450.dp else 1000.dp).padding(bottom = DEFAULT_PADDING * 2).align(Alignment.CenterHorizontally), horizontalAlignment = Alignment.CenterHorizontally) {
val enabled = selectedOperatorIds.value.isNotEmpty()
SetOperatorsButton(enabled, close)
- // Reserve space
- TextButtonBelowOnboardingButton("", null)
}
}
}
@@ -212,52 +290,42 @@ private fun SetOperatorsButton(enabled: Boolean, close: () -> Unit) {
)
}
+private fun acceptConditions(selectedOperatorIds: Set) {
+ withBGApi {
+ val conditionsId = chatModel.conditions.value.currentConditions.conditionsId
+ val r = chatController.acceptConditions(chatModel.remoteHostId(), conditionsId = conditionsId, operatorIds = selectedOperatorIds.toList())
+ if (r != null) {
+ chatModel.conditions.value = r
+ val enabledOps = enabledOperators(r.serverOperators, selectedOperatorIds)
+ if (enabledOps != null) {
+ val r2 = chatController.setServerOperators(rh = chatModel.remoteHostId(), operators = enabledOps)
+ if (r2 != null) {
+ chatModel.conditions.value = r2
+ completeOnboarding()
+ }
+ } else {
+ completeOnboarding()
+ }
+ }
+ }
+}
+
@Composable
private fun AcceptConditionsButton(
enabled: Boolean,
selectedOperatorIds: State>
) {
- fun continueOnAccept() {
- if (appPlatform.isDesktop) {
- continueToNextStep()
- } else {
- continueToSetNotificationsAfterAccept()
- }
- }
OnboardingActionButton(
modifier = if (appPlatform.isAndroid) Modifier.padding(horizontal = DEFAULT_ONBOARDING_HORIZONTAL_PADDING).fillMaxWidth() else Modifier.widthIn(min = 300.dp),
labelId = MR.strings.onboarding_conditions_accept,
onboarding = null,
enabled = enabled,
- onclick = {
- withBGApi {
- val conditionsId = chatModel.conditions.value.currentConditions.conditionsId
- val r = chatController.acceptConditions(chatModel.remoteHostId(), conditionsId = conditionsId, operatorIds = selectedOperatorIds.value.toList())
- if (r != null) {
- chatModel.conditions.value = r
- val enabledOperators = enabledOperators(r.serverOperators, selectedOperatorIds.value)
- if (enabledOperators != null) {
- val r2 = chatController.setServerOperators(rh = chatModel.remoteHostId(), operators = enabledOperators)
- if (r2 != null) {
- chatModel.conditions.value = r2
- continueOnAccept()
- }
- } else {
- continueOnAccept()
- }
- }
- }
- }
+ onclick = { acceptConditions(selectedOperatorIds.value) }
)
}
-private fun continueToNextStep() {
- appPrefs.onboardingStage.set(if (appPlatform.isAndroid) OnboardingStage.Step4_SetNotificationsMode else OnboardingStage.OnboardingComplete)
-}
-
-private fun continueToSetNotificationsAfterAccept() {
- appPrefs.onboardingStage.set(OnboardingStage.Step4_SetNotificationsMode)
- ModalManager.fullscreen.showModalCloseable(showClose = false) { SetNotificationsMode(chatModel) }
+private fun completeOnboarding() {
+ appPrefs.onboardingStage.set(OnboardingStage.OnboardingComplete)
}
private fun enabledOperators(operators: List, selectedOperatorIds: Set): List? {
diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/HowItWorks.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/HowItWorks.kt
index 2b92d35e72..703d295523 100644
--- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/HowItWorks.kt
+++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/HowItWorks.kt
@@ -1,8 +1,7 @@
package chat.simplex.common.views.onboarding
import androidx.compose.desktop.ui.tooling.preview.Preview
-import androidx.compose.foundation.background
-import androidx.compose.foundation.clickable
+import androidx.compose.foundation.*
import androidx.compose.foundation.layout.*
import androidx.compose.material.*
import androidx.compose.runtime.*
@@ -15,7 +14,7 @@ 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.platform.ColumnWithScrollBar
+import chat.simplex.common.platform.*
import chat.simplex.common.ui.theme.*
import chat.simplex.common.views.chat.item.MarkdownText
import chat.simplex.common.views.helpers.*
@@ -24,21 +23,26 @@ import dev.icerock.moko.resources.StringResource
@Composable
fun HowItWorks(user: User?, onboardingStage: SharedPreference? = null) {
- ColumnWithScrollBar(Modifier.padding(horizontal = DEFAULT_PADDING)) {
- AppBarTitle(stringResource(MR.strings.how_simplex_works), withPadding = false)
- ReadableText(MR.strings.to_protect_privacy_simplex_has_ids_for_queues)
- ReadableText(MR.strings.only_client_devices_store_contacts_groups_e2e_encrypted_messages)
- ReadableText(MR.strings.all_message_and_files_e2e_encrypted)
- if (onboardingStage == null) {
- ReadableTextWithLink(MR.strings.read_more_in_github_with_link, "https://github.com/simplex-chat/simplex-chat#readme")
+ Column(Modifier.fillMaxSize().padding(horizontal = if (appPlatform.isDesktop) DEFAULT_PADDING * 2 else DEFAULT_PADDING)) {
+ Spacer(Modifier.statusBarsPadding().padding(top = AppBarHeight * fontSizeSqrtMultiplier))
+ val paraPadding = PaddingValues(bottom = if (appPlatform.isDesktop) 10.dp else 12.dp)
+ Column(Modifier.weight(1f).padding(bottom = DEFAULT_PADDING).verticalScroll(rememberScrollState())) {
+ Text(stringResource(MR.strings.why_built_heading), style = MaterialTheme.typography.h1, modifier = Modifier.padding(bottom = DEFAULT_PADDING))
+ ReadableText(MR.strings.why_built_p1, padding = paraPadding)
+ ReadableText(MR.strings.why_built_p2, padding = paraPadding)
+ ReadableText(MR.strings.why_built_p3, padding = paraPadding)
+ ReadableText(MR.strings.why_built_p4, padding = paraPadding)
+ ReadableText(MR.strings.why_built_p5, padding = paraPadding)
+ ReadableText(MR.strings.why_built_p6, padding = paraPadding)
+ ReadableText(MR.strings.why_built_p7, padding = paraPadding)
+ ReadableText(MR.strings.why_built_tagline, padding = paraPadding)
}
-
- Spacer(Modifier.fillMaxHeight().weight(1f))
-
if (onboardingStage != null) {
- Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) {
+ Column(
+ Modifier.widthIn(max = if (appPlatform.isAndroid) 450.dp else 1000.dp).align(Alignment.CenterHorizontally),
+ horizontalAlignment = Alignment.CenterHorizontally
+ ) {
OnboardingActionButton(user, onboardingStage, onclick = { ModalManager.fullscreen.closeModal() })
- // Reserve space
TextButtonBelowOnboardingButton("", null)
}
}
diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/LinkAMobileView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/LinkAMobileView.kt
index 9e48f4b2bd..e902b7947e 100644
--- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/LinkAMobileView.kt
+++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/LinkAMobileView.kt
@@ -3,6 +3,7 @@ package chat.simplex.common.views.onboarding
import SectionTextFooter
import SectionView
import androidx.compose.foundation.layout.*
+import androidx.compose.material.MaterialTheme
import androidx.compose.runtime.*
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Alignment
@@ -57,7 +58,7 @@ private fun LinkAMobileLayout(
ModalView({ appPrefs.onboardingStage.set(OnboardingStage.Step1_SimpleXInfo) }) {
Column(Modifier.fillMaxSize().padding(top = AppBarHeight * fontSizeSqrtMultiplier)) {
Box(Modifier.align(Alignment.CenterHorizontally)) {
- AppBarTitle(stringResource(if (remember { chatModel.remoteHosts }.isEmpty()) MR.strings.link_a_mobile else MR.strings.linked_mobiles))
+ AppBarTitle(stringResource(if (remember { chatModel.remoteHosts }.isEmpty()) MR.strings.link_a_mobile else MR.strings.linked_mobiles), overrideTitleColor = MaterialTheme.colors.onBackground)
}
Row(Modifier.weight(1f).padding(horizontal = DEFAULT_PADDING * 2), verticalAlignment = Alignment.CenterVertically) {
Column(
diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/OnboardingLayout.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/OnboardingLayout.kt
new file mode 100644
index 0000000000..684bfb0053
--- /dev/null
+++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/OnboardingLayout.kt
@@ -0,0 +1,161 @@
+package chat.simplex.common.views.onboarding
+
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.*
+import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.material.Divider
+import androidx.compose.material.Icon
+import androidx.compose.material.MaterialTheme
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.clip
+import androidx.compose.ui.draw.clipToBounds
+import androidx.compose.ui.draw.drawBehind
+import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.graphics.Brush
+import androidx.compose.ui.layout.*
+import androidx.compose.ui.unit.Dp
+import androidx.compose.ui.unit.dp
+import chat.simplex.common.BuildConfigCommon
+import chat.simplex.common.ui.theme.DEFAULT_PADDING
+import chat.simplex.common.ui.theme.isInDarkTheme
+import chat.simplex.common.views.helpers.ModalManager
+import chat.simplex.common.views.helpers.mixWith
+import chat.simplex.common.views.newchat.darkStops
+import chat.simplex.common.views.newchat.gradientPoints
+import chat.simplex.common.views.newchat.lightStops
+import chat.simplex.res.MR
+import dev.icerock.moko.resources.ImageResource
+import dev.icerock.moko.resources.compose.painterResource
+
+/**
+ * A layout for onboarding screens: image + content + spacer + button.
+ * The spacer shrinks first (down to [minSpacerHeight]), then the image shrinks.
+ * Button is always at the bottom.
+ */
+@Composable
+fun OnboardingShrinkingLayout(
+ modifier: Modifier = Modifier,
+ topPadding: Dp = 0.dp,
+ minSpacerHeight: Dp = 20.dp,
+ image: @Composable () -> Unit,
+ content: @Composable () -> Unit,
+ button: @Composable () -> Unit
+) {
+ Layout(
+ contents = listOf(image, content, button),
+ modifier = modifier
+ ) { (imageMeasurables, contentMeasurables, buttonMeasurables), constraints ->
+ val width = constraints.maxWidth
+ val height = constraints.maxHeight
+ val childConstraints = constraints.copy(minWidth = 0, minHeight = 0)
+
+ // 1. Measure fixed content (texts) and button first
+ val contentPlaceable = contentMeasurables.first().measure(childConstraints)
+ val buttonPlaceable = buttonMeasurables.first().measure(childConstraints)
+ val minSpacer = minSpacerHeight.roundToPx()
+
+ // 2. Image gets remaining after top padding + content + button + minimum spacer
+ val topPad = topPadding.roundToPx()
+ val reservedHeight = topPad + contentPlaceable.height + buttonPlaceable.height + minSpacer
+ val imageMaxHeight = (height - reservedHeight).coerceAtLeast(0)
+ val imagePlaceable = imageMeasurables.first().measure(
+ childConstraints.copy(maxWidth = width, maxHeight = imageMaxHeight)
+ )
+
+ // 3. Spacer fills whatever is left between content and button
+ val usedHeight = topPad + imagePlaceable.height + contentPlaceable.height + buttonPlaceable.height
+ val spacerHeight = (height - usedHeight).coerceAtLeast(minSpacer)
+
+ // 4. Place: image centered horizontally, rest below
+ layout(width, height) {
+ var y = topPad
+ imagePlaceable.placeRelative((width - imagePlaceable.width) / 2, y)
+ y += imagePlaceable.height
+ contentPlaceable.placeRelative((width - contentPlaceable.width) / 2, y)
+ y += contentPlaceable.height
+ y += spacerHeight
+ buttonPlaceable.placeRelative((width - buttonPlaceable.width) / 2, y)
+ }
+ }
+}
+
+@Composable
+fun OnboardingImage(
+ lightImage: ImageResource,
+ darkImage: ImageResource,
+ fallbackIcon: ImageResource,
+ modifier: Modifier = Modifier,
+ aspectRatio: Float = 1f
+) {
+ if (BuildConfigCommon.SIMPLEX_ASSETS) {
+ Image(
+ painterResource(if (isInDarkTheme()) darkImage else lightImage),
+ contentDescription = null,
+ contentScale = ContentScale.Fit,
+ modifier = Modifier.fillMaxWidth().then(modifier)
+ )
+ } else {
+ val isDark = isInDarkTheme()
+ val stops = if (isDark) darkStops else lightStops
+ val scale = if (isDark) 1.5f else 1.2f
+ Box(
+ modifier
+ .aspectRatio(aspectRatio)
+ .clip(RoundedCornerShape(24.dp))
+ .drawBehind {
+ val gp = gradientPoints(size.height / size.width, scale)
+ drawRect(
+ Brush.linearGradient(
+ colorStops = stops,
+ start = Offset(gp.startX * size.width, gp.startY * size.height),
+ end = Offset(gp.endX * size.width, gp.endY * size.height)
+ )
+ )
+ },
+ contentAlignment = Alignment.Center
+ ) {
+ Icon(
+ painterResource(fallbackIcon),
+ contentDescription = null,
+ modifier = Modifier.size(80.dp),
+ tint = MaterialTheme.colors.primary
+ )
+ }
+ }
+}
+
+@Composable
+fun DesktopOnboardingShell(stage: OnboardingStage, content: @Composable () -> Unit) {
+ Row(Modifier.fillMaxSize()) {
+ Box(
+ Modifier.weight(0.382f).fillMaxHeight()
+ .background(MaterialTheme.colors.background.mixWith(MaterialTheme.colors.onBackground, 0.985f))
+ .padding(horizontal = DEFAULT_PADDING),
+ contentAlignment = Alignment.Center
+ ) {
+ when (stage) {
+ OnboardingStage.Step1_SimpleXInfo ->
+ OnboardingImage(MR.images.intro, MR.images.intro_light, MR.images.ic_forum, Modifier.fillMaxWidth())
+ OnboardingStage.Step2_CreateProfile,
+ OnboardingStage.Step2_5_SetupDatabasePassphrase,
+ OnboardingStage.LinkAMobile ->
+ OnboardingImage(MR.images.your_profile, MR.images.your_profile_light, MR.images.ic_person, Modifier.fillMaxWidth())
+ OnboardingStage.Step3_ChooseServerOperators,
+ OnboardingStage.Step3_CreateSimpleXAddress,
+ OnboardingStage.Step4_SetNotificationsMode ->
+ OnboardingImage(MR.images.your_network, MR.images.your_network_light, MR.images.ic_dns, Modifier.fillMaxWidth())
+ OnboardingStage.Step4_NetworkCommitments ->
+ OnboardingImage(MR.images.network_commitments, MR.images.network_commitments_light, MR.images.ic_shield, Modifier.fillMaxWidth(), aspectRatio = 1.5f)
+ else -> {}
+ }
+ }
+ Divider(Modifier.fillMaxHeight().width(1.dp))
+ Box(Modifier.weight(0.618f).fillMaxHeight().clipToBounds()) {
+ content()
+ ModalManager.fullscreen.showInView()
+ }
+ }
+}
diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/OnboardingView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/OnboardingView.kt
index 510df13c3d..7af364b855 100644
--- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/OnboardingView.kt
+++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/OnboardingView.kt
@@ -6,7 +6,8 @@ enum class OnboardingStage {
LinkAMobile,
Step2_5_SetupDatabasePassphrase,
Step3_ChooseServerOperators,
- Step3_CreateSimpleXAddress,
- Step4_SetNotificationsMode,
+ Step3_CreateSimpleXAddress, // deprecated
+ Step4_SetNotificationsMode, // deprecated
+ Step4_NetworkCommitments,
OnboardingComplete
}
diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/SetNotificationsMode.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/SetNotificationsMode.kt
index 84f473067f..adcfb8b194 100644
--- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/SetNotificationsMode.kt
+++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/SetNotificationsMode.kt
@@ -5,8 +5,8 @@ import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.*
import androidx.compose.runtime.*
-import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Alignment
+import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.AnnotatedString
import dev.icerock.moko.resources.compose.stringResource
@@ -14,27 +14,21 @@ 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.ChatModel
import chat.simplex.common.model.NotificationsMode
import chat.simplex.common.platform.*
import chat.simplex.common.ui.theme.*
import chat.simplex.common.views.helpers.*
-import chat.simplex.common.views.usersettings.changeNotificationsMode
import chat.simplex.res.MR
+import dev.icerock.moko.resources.compose.painterResource
@Composable
-fun SetNotificationsMode(m: ChatModel) {
- LaunchedEffect(Unit) {
- prepareChatBeforeFinishingOnboarding()
- }
-
+fun SetNotificationsMode(currentMode: MutableState, onDone: () -> Unit) {
CompositionLocalProvider(LocalAppBarHandler provides rememberAppBarHandler()) {
ModalView({}, showClose = false) {
ColumnWithScrollBar(Modifier.themedBackground(bgLayerSize = LocalAppBarHandler.current?.backgroundGraphicsLayerSize, bgLayer = LocalAppBarHandler.current?.backgroundGraphicsLayer)) {
Box(Modifier.align(Alignment.CenterHorizontally)) {
AppBarTitle(stringResource(MR.strings.onboarding_notifications_mode_title), bottomPadding = DEFAULT_PADDING)
}
- val currentMode = rememberSaveable { mutableStateOf(NotificationsMode.default) }
Column(Modifier.padding(horizontal = DEFAULT_ONBOARDING_HORIZONTAL_PADDING).fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) {
OnboardingInformationButton(
stringResource(MR.strings.onboarding_notifications_mode_subtitle),
@@ -43,34 +37,28 @@ fun SetNotificationsMode(m: ChatModel) {
}
Spacer(Modifier.weight(1f))
Column(Modifier.padding(horizontal = DEFAULT_ONBOARDING_HORIZONTAL_PADDING)) {
- SelectableCard(currentMode, NotificationsMode.SERVICE, stringResource(MR.strings.onboarding_notifications_mode_service), annotatedStringResource(MR.strings.onboarding_notifications_mode_service_desc_short)) {
+ SelectableCard(currentMode, NotificationsMode.SERVICE, stringResource(MR.strings.onboarding_notifications_mode_service), annotatedStringResource(MR.strings.onboarding_notifications_mode_service_desc_short), icon = painterResource(MR.images.ic_bolt)) {
currentMode.value = NotificationsMode.SERVICE
}
- SelectableCard(currentMode, NotificationsMode.PERIODIC, stringResource(MR.strings.onboarding_notifications_mode_periodic), annotatedStringResource(MR.strings.onboarding_notifications_mode_periodic_desc_short)) {
+ SelectableCard(currentMode, NotificationsMode.PERIODIC, stringResource(MR.strings.onboarding_notifications_mode_periodic), annotatedStringResource(MR.strings.onboarding_notifications_mode_periodic_desc_short), icon = painterResource(MR.images.ic_timer)) {
currentMode.value = NotificationsMode.PERIODIC
}
- SelectableCard(currentMode, NotificationsMode.OFF, stringResource(MR.strings.onboarding_notifications_mode_off), annotatedStringResource(MR.strings.onboarding_notifications_mode_off_desc_short)) {
+ SelectableCard(currentMode, NotificationsMode.OFF, stringResource(MR.strings.onboarding_notifications_mode_off), annotatedStringResource(MR.strings.onboarding_notifications_mode_off_desc_short), icon = painterResource(MR.images.ic_bolt_off)) {
currentMode.value = NotificationsMode.OFF
}
}
Spacer(Modifier.weight(1f))
- Column(Modifier.widthIn(max = if (appPlatform.isAndroid) 450.dp else 1000.dp).align(Alignment.CenterHorizontally), horizontalAlignment = Alignment.CenterHorizontally) {
+ Column(Modifier.widthIn(max = if (appPlatform.isAndroid) 450.dp else 1000.dp).padding(bottom = DEFAULT_PADDING * 2).align(Alignment.CenterHorizontally), horizontalAlignment = Alignment.CenterHorizontally) {
OnboardingActionButton(
modifier = if (appPlatform.isAndroid) Modifier.padding(horizontal = DEFAULT_ONBOARDING_HORIZONTAL_PADDING).fillMaxWidth() else Modifier,
- labelId = MR.strings.use_chat,
- onboarding = OnboardingStage.OnboardingComplete,
- onclick = {
- changeNotificationsMode(currentMode.value, m)
- ModalManager.fullscreen.closeModals()
- }
+ labelId = MR.strings.ok,
+ onboarding = null,
+ onclick = onDone
)
- // Reserve space
- TextButtonBelowOnboardingButton("", null)
}
}
}
}
- SetNotificationsModeAdditions()
}
@Composable
@@ -78,20 +66,31 @@ expect fun SetNotificationsModeAdditions()
@Composable
fun SelectableCard(currentValue: State, newValue: T, title: String, description: AnnotatedString, onSelected: (T) -> Unit) {
+ SelectableCard(currentValue, newValue, title, description, icon = null, onSelected)
+}
+
+@Composable
+fun SelectableCard(currentValue: State, newValue: T, title: String, description: AnnotatedString, icon: Painter?, onSelected: (T) -> Unit) {
+ val titleColor = if (currentValue.value == newValue) MaterialTheme.colors.primary else MaterialTheme.colors.secondary
TextButton(
onClick = { onSelected(newValue) },
border = BorderStroke(1.dp, color = if (currentValue.value == newValue) MaterialTheme.colors.primary else MaterialTheme.colors.secondary.copy(alpha = 0.5f)),
shape = RoundedCornerShape(35.dp),
) {
Column(Modifier.padding(horizontal = 10.dp).padding(top = 4.dp, bottom = 8.dp).fillMaxWidth()) {
- Text(
- title,
- style = MaterialTheme.typography.h3,
- fontWeight = FontWeight.Medium,
- color = if (currentValue.value == newValue) MaterialTheme.colors.primary else MaterialTheme.colors.secondary,
- modifier = Modifier.padding(bottom = 8.dp).align(Alignment.CenterHorizontally),
- textAlign = TextAlign.Center
- )
+ Row(verticalAlignment = Alignment.CenterVertically, modifier = Modifier.padding(bottom = 8.dp).align(Alignment.CenterHorizontally)) {
+ if (icon != null) {
+ Icon(icon, null, Modifier.size(18.dp), tint = titleColor)
+ Spacer(Modifier.width(8.dp))
+ }
+ Text(
+ title,
+ style = MaterialTheme.typography.h3,
+ fontWeight = FontWeight.Medium,
+ color = titleColor,
+ textAlign = TextAlign.Center
+ )
+ }
Text(description,
Modifier.align(Alignment.CenterHorizontally),
fontSize = 15.sp,
@@ -105,7 +104,7 @@ fun SelectableCard(currentValue: State, newValue: T, title: String, descr
}
@Composable
-private fun NotificationBatteryUsageInfo() {
+fun NotificationBatteryUsageInfo() {
ColumnWithScrollBar(Modifier.padding(DEFAULT_PADDING)) {
AppBarTitle(stringResource(MR.strings.onboarding_notifications_mode_battery), withPadding = false)
Text(stringResource(MR.strings.onboarding_notifications_mode_service), style = MaterialTheme.typography.h3, color = MaterialTheme.colors.secondary)
diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/SetupDatabasePassphrase.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/SetupDatabasePassphrase.kt
index c6eceb0ce2..9ef72a7f12 100644
--- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/SetupDatabasePassphrase.kt
+++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/SetupDatabasePassphrase.kt
@@ -107,7 +107,7 @@ private fun SetupDatabasePassphraseLayout(
Modifier.themedBackground(bgLayerSize = LocalAppBarHandler.current?.backgroundGraphicsLayerSize, bgLayer = LocalAppBarHandler.current?.backgroundGraphicsLayer).padding(horizontal = DEFAULT_PADDING),
horizontalAlignment = Alignment.CenterHorizontally,
) {
- AppBarTitle(stringResource(MR.strings.setup_database_passphrase))
+ AppBarTitle(stringResource(MR.strings.setup_database_passphrase), overrideTitleColor = MaterialTheme.colors.onBackground)
val onClickUpdate = {
// Don't do things concurrently. Shouldn't be here concurrently, just in case
diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/SimpleXInfo.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/SimpleXInfo.kt
index e5d00fddd1..5b186875fa 100644
--- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/SimpleXInfo.kt
+++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/SimpleXInfo.kt
@@ -11,6 +11,9 @@ import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
+import androidx.compose.ui.draw.drawBehind
+import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.layout.ContentScale
@@ -21,11 +24,15 @@ import dev.icerock.moko.resources.compose.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.*
+import chat.simplex.common.BuildConfigCommon
import chat.simplex.common.model.*
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.newchat.darkStops
+import chat.simplex.common.views.newchat.gradientPoints
+import chat.simplex.common.views.newchat.lightStops
import chat.simplex.common.views.migration.MigrateToDeviceView
import chat.simplex.common.views.migration.MigrationToState
import chat.simplex.res.MR
@@ -36,12 +43,16 @@ import kotlin.math.floor
@Composable
fun SimpleXInfo(chatModel: ChatModel, onboarding: Boolean = true) {
if (onboarding) {
- CompositionLocalProvider(LocalAppBarHandler provides rememberAppBarHandler()) {
- ModalView({}, showClose = false, showAppBar = false) {
- SimpleXInfoLayout(
- user = chatModel.currentUser.value,
- onboardingStage = chatModel.controller.appPrefs.onboardingStage
- )
+ if (appPlatform.isDesktop) {
+ SimpleXInfoDesktop(chatModel)
+ } else {
+ CompositionLocalProvider(LocalAppBarHandler provides rememberAppBarHandler()) {
+ ModalView({}, showClose = false, showAppBar = false) {
+ SimpleXInfoLayout(
+ user = chatModel.currentUser.value,
+ onboardingStage = chatModel.controller.appPrefs.onboardingStage
+ )
+ }
}
}
} else {
@@ -52,40 +63,102 @@ fun SimpleXInfo(chatModel: ChatModel, onboarding: Boolean = true) {
}
}
+@Composable
+private fun SimpleXInfoDesktop(chatModel: ChatModel) {
+ val user = chatModel.currentUser.value
+ val onboardingStage = chatModel.controller.appPrefs.onboardingStage
+ CompositionLocalProvider(LocalAppBarHandler provides rememberAppBarHandler()) {
+ ModalView({}, showClose = false) {
+ ColumnWithScrollBar(Modifier.padding(horizontal = DEFAULT_PADDING), horizontalAlignment = Alignment.CenterHorizontally) {
+ Spacer(Modifier.height(DEFAULT_PADDING))
+ Box(Modifier.widthIn(max = 600.dp).fillMaxWidth(0.45f).align(Alignment.CenterHorizontally)) {
+ SimpleXLogo()
+ }
+ Spacer(Modifier.fillMaxHeight().weight(1f))
+ Column(Modifier.widthIn(max = 600.dp).align(Alignment.CenterHorizontally), horizontalAlignment = Alignment.CenterHorizontally) {
+ Box(Modifier.align(Alignment.CenterHorizontally)) {
+ AppBarTitle(stringResource(MR.strings.onboarding_be_free), bottomPadding = DEFAULT_PADDING, withPadding = false, overrideTitleColor = MaterialTheme.colors.onBackground, textAlign = TextAlign.Center, lineHeight = 42.sp)
+ }
+ Text(stringResource(MR.strings.onboarding_private_and_secure), style = MaterialTheme.typography.h3, fontWeight = FontWeight.Medium, color = MaterialTheme.colors.secondary, lineHeight = 25.sp, textAlign = TextAlign.Center)
+ Spacer(Modifier.height(DEFAULT_PADDING_HALF))
+ ReadableText(MR.strings.onboarding_first_network, TextAlign.Center, padding = PaddingValues(), style = MaterialTheme.typography.body2.copy(color = MaterialTheme.colors.secondary))
+ }
+ Spacer(Modifier.fillMaxHeight().weight(1f))
+ Column(Modifier.widthIn(max = 1000.dp).align(Alignment.CenterHorizontally), horizontalAlignment = Alignment.CenterHorizontally) {
+ OnboardingActionButton(user, onboardingStage)
+ TextButtonBelowOnboardingButton(stringResource(MR.strings.why_simplex_is_built), icon = painterResource(MR.images.ic_info), onClick = {
+ ModalManager.fullscreen.showModal(forceAnimated = true) { HowItWorks(user, onboardingStage) }
+ })
+ }
+ }
+ }
+ }
+ LaunchedEffect(Unit) {
+ if (chatModel.migrationState.value != null && !ModalManager.fullscreen.hasModalsOpen()) {
+ ModalManager.fullscreen.showCustomModal(animated = false) { close -> MigrateToDeviceView(close) }
+ }
+ }
+}
+
@Composable
fun SimpleXInfoLayout(
user: User?,
onboardingStage: SharedPreference?
) {
- ColumnWithScrollBar(Modifier.padding(horizontal = DEFAULT_ONBOARDING_HORIZONTAL_PADDING), horizontalAlignment = Alignment.CenterHorizontally) {
- Box(Modifier.widthIn(max = if (appPlatform.isAndroid) 250.dp else 500.dp).padding(top = DEFAULT_PADDING + 8.dp), contentAlignment = Alignment.Center) {
+ Column(Modifier.fillMaxSize().systemBarsPadding().padding(horizontal = DEFAULT_ONBOARDING_HORIZONTAL_PADDING), horizontalAlignment = Alignment.CenterHorizontally) {
+ Box(Modifier.padding(top = DEFAULT_PADDING * 2).widthIn(max = if (appPlatform.isAndroid) 185.dp else 160.dp), contentAlignment = Alignment.Center) {
SimpleXLogo()
}
-
- OnboardingInformationButton(
- stringResource(MR.strings.next_generation_of_private_messaging),
- onClick = { ModalManager.fullscreen.showModal { HowItWorks(user, onboardingStage) } },
- )
-
- Spacer(Modifier.weight(1f))
-
- Column {
- InfoRow(painterResource(MR.images.privacy), MR.strings.privacy_redefined, MR.strings.first_platform_without_user_ids, width = 60.dp)
- InfoRow(painterResource(MR.images.shield), MR.strings.immune_to_spam_and_abuse, MR.strings.people_can_connect_only_via_links_you_share, width = 46.dp)
- InfoRow(painterResource(if (isInDarkTheme()) MR.images.decentralized_light else MR.images.decentralized), MR.strings.decentralized, MR.strings.opensource_protocol_and_code_anybody_can_run_servers)
- }
-
- Column(Modifier.fillMaxHeight().weight(1f)) { }
-
- if (onboardingStage != null) {
- Column(Modifier.widthIn(max = if (appPlatform.isAndroid) 450.dp else 1000.dp).align(Alignment.CenterHorizontally), horizontalAlignment = Alignment.CenterHorizontally,) {
- OnboardingActionButton(user, onboardingStage)
- TextButtonBelowOnboardingButton(stringResource(MR.strings.migrate_from_another_device)) {
- chatModel.migrationState.value = MigrationToState.PasteOrScanLink
- ModalManager.fullscreen.showCustomModal { close -> MigrateToDeviceView(close) }
+ OnboardingShrinkingLayout(
+ modifier = Modifier.fillMaxSize(),
+ image = {
+ Column(Modifier.padding(vertical = DEFAULT_PADDING_HALF), horizontalAlignment = Alignment.CenterHorizontally) {
+ OnboardingImage(
+ MR.images.intro, MR.images.intro_light, MR.images.ic_forum,
+ modifier = if (appPlatform.isAndroid) Modifier.fillMaxWidth() else Modifier.heightIn(max = 280.dp)
+ )
+ }
+ },
+ content = {
+ Column(horizontalAlignment = Alignment.CenterHorizontally) {
+ Text(
+ stringResource(MR.strings.onboarding_be_free),
+ style = MaterialTheme.typography.h1,
+ fontWeight = FontWeight.Bold,
+ textAlign = TextAlign.Center,
+ lineHeight = 42.sp,
+ modifier = Modifier.padding(top = DEFAULT_PADDING_HALF)
+ )
+ Text(
+ stringResource(MR.strings.onboarding_private_and_secure),
+ style = MaterialTheme.typography.h3,
+ color = MaterialTheme.colors.secondary,
+ fontWeight = FontWeight.Medium,
+ lineHeight = 25.sp,
+ textAlign = TextAlign.Center,
+ modifier = Modifier.padding(top = 14.dp)
+ )
+ Text(
+ stringResource(MR.strings.onboarding_first_network),
+ style = MaterialTheme.typography.body2,
+ color = MaterialTheme.colors.secondary,
+ textAlign = TextAlign.Center,
+ lineHeight = 20.sp,
+ modifier = Modifier.padding(top = DEFAULT_PADDING_HALF)
+ )
+ }
+ },
+ button = {
+ if (onboardingStage != null) {
+ Column(Modifier.widthIn(max = if (appPlatform.isAndroid) 450.dp else 1000.dp), horizontalAlignment = Alignment.CenterHorizontally) {
+ OnboardingActionButton(user, onboardingStage)
+ TextButtonBelowOnboardingButton(stringResource(MR.strings.why_simplex_is_built), icon = painterResource(MR.images.ic_info), onClick = {
+ ModalManager.fullscreen.showModal { HowItWorks(user, onboardingStage) }
+ })
}
}
}
+ )
}
LaunchedEffect(Unit) {
if (chatModel.migrationState.value != null && !ModalManager.fullscreen.hasModalsOpen()) {
@@ -101,25 +174,11 @@ fun SimpleXLogo() {
contentDescription = stringResource(MR.strings.image_descr_simplex_logo),
contentScale = ContentScale.FillWidth,
modifier = Modifier
- .padding(vertical = DEFAULT_PADDING)
+ .padding(bottom = 10.dp)
.fillMaxWidth()
)
}
-@Composable
-private fun InfoRow(icon: Painter, titleId: StringResource, textId: StringResource, width: Dp = 58.dp) {
- Row(Modifier.padding(bottom = 27.dp), verticalAlignment = Alignment.Top) {
- Spacer(Modifier.width((4.dp + 58.dp - width) / 2))
- Image(icon, contentDescription = null, modifier = Modifier
- .width(width))
- Spacer(Modifier.width((4.dp + 58.dp - width) / 2 + DEFAULT_PADDING_HALF + 7.dp))
- Column(Modifier.padding(top = 4.dp), verticalArrangement = Arrangement.spacedBy(DEFAULT_PADDING_HALF)) {
- Text(stringResource(titleId), fontWeight = FontWeight.Bold, style = MaterialTheme.typography.h3, lineHeight = 24.sp)
- Text(stringResource(textId), lineHeight = 24.sp, style = MaterialTheme.typography.body1, color = MaterialTheme.colors.secondary)
- }
- }
-}
-
@Composable
expect fun OnboardingActionButton(user: User?, onboardingStage: SharedPreference, onclick: (() -> Unit)? = null)
@@ -155,16 +214,20 @@ fun OnboardingActionButton(
}
@Composable
-fun TextButtonBelowOnboardingButton(text: String, onClick: (() -> Unit)?) {
+fun TextButtonBelowOnboardingButton(text: String, onClick: (() -> Unit)?, icon: Painter? = null) {
val state = getKeyboardState()
val enabled = onClick != null
val topPadding by animateDpAsState(if (appPlatform.isAndroid && state.value == KeyboardState.Opened) 0.dp else 7.5.dp)
val bottomPadding by animateDpAsState(if (appPlatform.isAndroid && state.value == KeyboardState.Opened) 0.dp else 7.5.dp)
if ((appPlatform.isAndroid && state.value == KeyboardState.Closed) || topPadding > 0.dp) {
TextButton({ onClick?.invoke() }, Modifier.padding(top = topPadding, bottom = bottomPadding).clip(CircleShape), enabled = enabled) {
+ if (icon != null) {
+ Icon(icon, null, tint = MaterialTheme.colors.primary)
+ Spacer(Modifier.width(4.dp))
+ }
Text(
text,
- Modifier.padding(start = DEFAULT_PADDING_HALF, end = DEFAULT_PADDING_HALF, bottom = 5.dp),
+ Modifier.padding(vertical = 5.dp),
color = if (enabled) MaterialTheme.colors.primary else MaterialTheme.colors.secondary,
fontWeight = FontWeight.Medium,
textAlign = TextAlign.Center
@@ -219,6 +282,7 @@ fun OnboardingInformationButton(
textLayoutResult = it
},
style = MaterialTheme.typography.button,
+ fontWeight = FontWeight.Medium,
color = MaterialTheme.colors.primary
)
}
diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/YourNetwork.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/YourNetwork.kt
new file mode 100644
index 0000000000..b20cfe3096
--- /dev/null
+++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/YourNetwork.kt
@@ -0,0 +1,226 @@
+package chat.simplex.common.views.onboarding
+
+import androidx.compose.foundation.*
+import androidx.compose.foundation.layout.*
+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.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.clip
+import androidx.compose.ui.draw.drawBehind
+import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.graphics.Brush
+import androidx.compose.ui.graphics.ColorFilter
+import androidx.compose.ui.graphics.ColorMatrix
+import androidx.compose.ui.layout.ContentScale
+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.BuildConfigCommon
+import chat.simplex.common.model.*
+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.newchat.darkStops
+import chat.simplex.common.views.newchat.gradientPoints
+import chat.simplex.common.views.newchat.lightStops
+import chat.simplex.common.views.usersettings.changeNotificationsMode
+import chat.simplex.res.MR
+import dev.icerock.moko.resources.compose.painterResource
+import dev.icerock.moko.resources.compose.stringResource
+
+internal object OnboardingSharedState {
+ var selectedOperatorIds: Set = emptySet()
+}
+
+@Composable
+fun YourNetworkView(chatModel: ChatModel) {
+ LaunchedEffect(Unit) {
+ prepareChatBeforeFinishingOnboarding()
+ }
+
+ val serverOperators = remember { derivedStateOf { chatModel.conditions.value.serverOperators } }
+ val selectedOperatorIds = remember {
+ mutableStateOf(serverOperators.value.filter { it.enabled }.map { it.operatorId }.toSet())
+ }
+
+ LaunchedEffect(selectedOperatorIds.value) {
+ OnboardingSharedState.selectedOperatorIds = selectedOperatorIds.value
+ }
+
+ val notificationMode = rememberSaveable { mutableStateOf(NotificationsMode.default) }
+
+ if (appPlatform.isDesktop) {
+ YourNetworkDesktop(serverOperators, selectedOperatorIds)
+ } else {
+ CompositionLocalProvider(LocalAppBarHandler provides rememberAppBarHandler()) {
+ ModalView({}, showClose = false, showAppBar = false) {
+ OnboardingShrinkingLayout(
+ modifier = Modifier.fillMaxSize().themedBackground(bgLayerSize = LocalAppBarHandler.current?.backgroundGraphicsLayerSize, bgLayer = LocalAppBarHandler.current?.backgroundGraphicsLayer)
+ .systemBarsPadding()
+ .padding(horizontal = DEFAULT_ONBOARDING_HORIZONTAL_PADDING),
+ topPadding = DEFAULT_PADDING,
+ image = {
+ Column(Modifier.padding(vertical = DEFAULT_PADDING_HALF), horizontalAlignment = Alignment.CenterHorizontally) {
+ OnboardingImage(
+ MR.images.your_network, MR.images.your_network_light, MR.images.ic_dns,
+ modifier = Modifier.padding(horizontal = DEFAULT_ONBOARDING_HORIZONTAL_PADDING).fillMaxWidth()
+ )
+ }
+ },
+ content = {
+ Column(horizontalAlignment = Alignment.CenterHorizontally) {
+ Text(
+ stringResource(MR.strings.onboarding_your_network),
+ style = MaterialTheme.typography.h1,
+ fontWeight = FontWeight.Bold,
+ textAlign = TextAlign.Center,
+ lineHeight = 42.sp,
+ modifier = Modifier.padding(top = DEFAULT_PADDING_HALF)
+ )
+ Text(
+ stringResource(MR.strings.onboarding_network_routers_cannot_know),
+ style = MaterialTheme.typography.h3,
+ fontWeight = FontWeight.Medium,
+ color = MaterialTheme.colors.secondary,
+ lineHeight = 25.sp,
+ textAlign = TextAlign.Center,
+ modifier = Modifier.padding(top = 14.dp)
+ )
+ Column(
+ Modifier.padding(top = DEFAULT_PADDING_HALF),
+ horizontalAlignment = Alignment.Start,
+ verticalArrangement = Arrangement.spacedBy(4.dp)
+ ) {
+ ConfigureRoutersButton(serverOperators, selectedOperatorIds) {
+ ModalManager.fullscreen.showCustomModal { close ->
+ ChooseServerOperators(serverOperators, selectedOperatorIds, close)
+ }
+ }
+ ConfigureNotificationsButton(notificationMode) {
+ ModalManager.fullscreen.showModalCloseable { close ->
+ SetNotificationsMode(notificationMode, close)
+ }
+ }
+ }
+ }
+ },
+ button = {
+ Column(
+ Modifier.widthIn(max = 450.dp).padding(bottom = DEFAULT_PADDING * 2),
+ horizontalAlignment = Alignment.CenterHorizontally
+ ) {
+ OnboardingActionButton(
+ modifier = Modifier.padding(horizontal = DEFAULT_ONBOARDING_HORIZONTAL_PADDING).fillMaxWidth(),
+ labelId = MR.strings.onboarding_network_operators_continue,
+ onboarding = null,
+ onclick = {
+ changeNotificationsMode(notificationMode.value, chatModel)
+ appPrefs.onboardingStage.set(OnboardingStage.Step4_NetworkCommitments)
+ }
+ )
+ }
+ }
+ )
+ }
+ }
+ }
+}
+
+@Composable
+private fun YourNetworkDesktop(
+ serverOperators: State>,
+ selectedOperatorIds: MutableState>
+) {
+ CompositionLocalProvider(LocalAppBarHandler provides rememberAppBarHandler()) {
+ ModalView({}, showClose = false) {
+ ColumnWithScrollBar(horizontalAlignment = Alignment.CenterHorizontally) {
+ Column(Modifier.widthIn(max = 600.dp).fillMaxHeight().padding(horizontal = DEFAULT_PADDING).align(Alignment.CenterHorizontally), horizontalAlignment = Alignment.CenterHorizontally) {
+ Box(Modifier.align(Alignment.CenterHorizontally)) {
+ AppBarTitle(stringResource(MR.strings.onboarding_your_network), bottomPadding = DEFAULT_PADDING, withPadding = false, overrideTitleColor = MaterialTheme.colors.onBackground, textAlign = TextAlign.Center, lineHeight = 42.sp)
+ }
+ Text(stringResource(MR.strings.onboarding_network_routers_cannot_know), style = MaterialTheme.typography.h3, fontWeight = FontWeight.Medium, color = MaterialTheme.colors.secondary, lineHeight = 25.sp, textAlign = TextAlign.Center)
+ Spacer(Modifier.height(DEFAULT_PADDING))
+ ConfigureRoutersButton(serverOperators, selectedOperatorIds) {
+ ModalManager.fullscreen.showCustomModal(forceAnimated = true) { close ->
+ ChooseServerOperators(serverOperators, selectedOperatorIds, close)
+ }
+ }
+ }
+ Spacer(Modifier.fillMaxHeight().weight(1f))
+ Column(Modifier.widthIn(max = 1000.dp).align(Alignment.CenterHorizontally), horizontalAlignment = Alignment.CenterHorizontally) {
+ OnboardingActionButton(
+ Modifier.widthIn(min = 300.dp),
+ labelId = MR.strings.onboarding_network_operators_continue,
+ onboarding = null,
+ onclick = {
+ appPrefs.onboardingStage.set(OnboardingStage.Step4_NetworkCommitments)
+ }
+ )
+ TextButtonBelowOnboardingButton("", null)
+ }
+ }
+ }
+ }
+}
+
+@Composable
+private fun ConfigureRoutersButton(serverOperators: State>, selectedOperatorIds: State>, onClick: () -> Unit) {
+ Box(
+ modifier = Modifier
+ .clip(CircleShape)
+ .clickable { onClick() }
+ ) {
+ Row(Modifier.padding(8.dp), horizontalArrangement = Arrangement.spacedBy(4.dp), verticalAlignment = Alignment.CenterVertically) {
+ Text(
+ stringResource(MR.strings.onboarding_configure_routers),
+ style = MaterialTheme.typography.button,
+ fontWeight = FontWeight.Medium,
+ color = MaterialTheme.colors.primary
+ )
+ serverOperators.value.forEach { op ->
+ Image(
+ painterResource(op.logo),
+ contentDescription = null,
+ modifier = Modifier.size(22.dp),
+ colorFilter = if (selectedOperatorIds.value.contains(op.operatorId)) null else ColorFilter.colorMatrix(ColorMatrix().apply {
+ setToSaturation(0f)
+ })
+ )
+ }
+ }
+ }
+}
+
+@Composable
+private fun ConfigureNotificationsButton(notificationMode: State, onClick: () -> Unit) {
+ val icon = when (notificationMode.value) {
+ NotificationsMode.SERVICE -> MR.images.ic_bolt
+ NotificationsMode.PERIODIC -> MR.images.ic_timer
+ NotificationsMode.OFF -> MR.images.ic_bolt_off
+ }
+ Box(
+ modifier = Modifier
+ .clip(CircleShape)
+ .clickable { onClick() }
+ ) {
+ Row(Modifier.padding(8.dp), horizontalArrangement = Arrangement.spacedBy(4.dp), verticalAlignment = Alignment.CenterVertically) {
+ Text(
+ stringResource(MR.strings.onboarding_configure_notifications),
+ style = MaterialTheme.typography.button,
+ fontWeight = FontWeight.Medium,
+ color = MaterialTheme.colors.primary
+ )
+ Icon(
+ painterResource(icon),
+ contentDescription = null,
+ tint = MaterialTheme.colors.primary
+ )
+ }
+ }
+}
diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/NetworkAndServers.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/NetworkAndServers.kt
index c70243f584..a62a58cb10 100644
--- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/NetworkAndServers.kt
+++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/NetworkAndServers.kt
@@ -826,13 +826,22 @@ fun UsageConditionsView(
@Composable
fun SimpleConditionsView(
- rhId: Long?
+ rhId: Long?,
+ onAccept: () -> Unit
) {
ColumnWithScrollBar(modifier = Modifier.fillMaxSize().padding(horizontal = DEFAULT_PADDING)) {
AppBarTitle(stringResource(MR.strings.operator_conditions_of_use), enableAlphaChanges = false, withPadding = false, bottomPadding = DEFAULT_PADDING)
Column(modifier = Modifier.weight(1f).padding(bottom = DEFAULT_PADDING, top = DEFAULT_PADDING_HALF)) {
ConditionsTextView(rhId)
}
+ Column(Modifier.widthIn(max = if (appPlatform.isAndroid) 450.dp else 1000.dp).padding(bottom = DEFAULT_PADDING * 2).align(Alignment.CenterHorizontally), horizontalAlignment = Alignment.CenterHorizontally) {
+ OnboardingActionButton(
+ modifier = if (appPlatform.isAndroid) Modifier.padding(horizontal = DEFAULT_ONBOARDING_HORIZONTAL_PADDING).fillMaxWidth() else Modifier.widthIn(min = 300.dp),
+ labelId = MR.strings.onboarding_conditions_accept,
+ onboarding = null,
+ onclick = onAccept
+ )
+ }
}
}
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/ar/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/ar/strings.xml
index cb92b386a0..081d837a70 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/ar/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/ar/strings.xml
@@ -473,7 +473,6 @@
سريع ولا تنتظر حتى يصبح المرسل متصلاً بالإنترنت!
أخفِ
كيفية الاستخدام
- كيف يعمل SimpleX
التخفي عبر رابط عنوان جهة الاتصال
رمز الأمان غير صحيحة!
الإشعارات الفورية مُعطَّلة
@@ -2351,7 +2350,6 @@
المشرفين
لا يمكن قراءة عبارة المرور في Keystore. قد يكون هذا قد حدث بعد تحديث النظام غير متوافق مع التطبيق. إذا لم يكن الأمر كذلك، فيُرجى التواصل مع المطوِّرين.
موافقة الانتظار
- ضبّط مُشغلي الخادم
سياسة الخصوصية وشروط الاستخدام.
لا يمكن الوصول إلى الدردشات الخاصة والمجموعات وجهات اتصالك لمشغلي الخادم.
باستخدام SimpleX Chat، توافق على:\n- إرسال المحتوى القانوني فقط في المجموعات العامة.\n- احترام المستخدمين الآخرين – لا سبام.
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml
index ade88f7fc8..8fc2acf786 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml
@@ -1292,9 +1292,27 @@
Make a private connection
Migrate from another device
How it works
+ Be free\nin your network
+ Private and secure messaging.
+ The first network where you own\nyour contacts and groups.
+ Get started
+ Why SimpleX is built.
+ Your profile
+ On your phone, not on any server.
+ No account. No phone. No email. No ID.\nThe most secure encryption.
+ Enter profile name…
+ Migrate
-
- How SimpleX works
+
+ You were born without an account.
+ Nobody tracked your conversations. No one drew a map of where you\'d been. Privacy was never a feature — it was the way of life.
+ Then we moved online, and every platform asked for a piece of you — your name, your number, your friends. We accepted that the price of talking to others is letting someone know who we talk to. Every generation, people and tech, had it this way — telephone, email, messengers, social media. It seemed the only way possible.
+ There is another way. A network with no phone numbers. No usernames. No accounts. No user identities of any kind. A network that connects people and carries encrypted messages without knowing who is connected.
+ Not a better lock on someone else\'s door. Not a nicer landlord that respects your privacy, but still keeps the record of all visitors. You are not a guest. You are home. No king can enter it — you are sovereign.
+ Your conversations belong to you, as it had always been before the Internet. The network is not a place you visit. It is a place you create and own. And nobody can take it from you, whether you make it private or public.
+ The oldest human freedom — to speak to another person without being watched — built on infrastructure that cannot betray it.
+ Because we destroyed the power to know who you are. So that your power can never be taken.
+ Be free in your network.
To protect your privacy, SimpleX uses separate IDs for each of your contacts.
Only client devices store user profiles, contacts, groups, and messages.
end-to-end encrypted, with post-quantum security in direct messages.]]>
@@ -1321,11 +1339,10 @@
Use random passphrase
- Private chats, groups and your contacts are not accessible to server operators.
- By using SimpleX Chat you agree to:\n- send only legal content in public groups.\n- respect other users – no spam.
+ Operators commit to:\n- Be independent\n- Minimize metadata usage\n- Run verified open-source code
+ You commit to:\n- Only legal content in public groups\n- Respect other users — no spam
Privacy policy and conditions of use.
Accept
- Configure server operators
Server operators
Network operators
SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app.
@@ -1342,6 +1359,15 @@
Update
Continue
+
+ Your network
+ Network routers cannot know\nwho talks to whom
+ Setup routers
+ Setup notifications
+
+
+ Network commitments
+
Incoming video call
Incoming audio call
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/bg/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/bg/strings.xml
index d708736821..da3c17c184 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/bg/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/bg/strings.xml
@@ -764,7 +764,6 @@
Информация
Инсталирай SimpleX Chat за терминал
Как работи
- Как работи SimpleX
Защитен от спам
Игнорирай
Покани членове
@@ -2328,7 +2327,6 @@
Чат с член
Разговаряйте с членовете, преди да се присъединят.
Нарушение на правилата на общността
- Конфигуриране на сървърни оператори
Свързване
Свържете се по-бързо! 🚀
Връзката е блокирана
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/ca/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/ca/strings.xml
index a34a4ca7fc..4ce42e2df8 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/ca/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/ca/strings.xml
@@ -1216,7 +1216,6 @@
Sense identificadors d\'usuari.
Per protegir la vostra privadesa SimpleX utilitza identificadors separats per a cadascun dels vostres contactes..
Obrir SimpleX
- Com funciona SimpleX
Només els dispositius client emmagatzemen perfils d\'usuari, contactes, grups i missatges.
Notificacions privades
Com afecta la bateria
@@ -2342,7 +2341,6 @@
Els xats privats, els grups i els vostres contactes no són accessibles per als operadors de servidor.
Acceptar
En utilitzar SimpleX Chat accepteu:\n- enviar només contingut legal en grups públics.\n- Respectar els altres usuaris, sense correu brossa.
- Configurar els operadors de servidor
Enllaç al canal SimpleX
Aquest enllaç requereix una versió de l\'aplicació més recent. Actualitzeu l\'aplicació o demaneu al vostre contacte que enviï un enllaç compatible.
Enllaç de connexió no compatible
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/cs/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/cs/strings.xml
index c7697c35ba..5f86035db7 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/cs/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/cs/strings.xml
@@ -242,7 +242,6 @@
probíhající hovor
Decentralizovaná
Jak to funguje
- Jak funguje SimpleX
Pouze klientská zařízení ukládají uživatelské profily, kontakty, skupiny a zprávy.
Soukromé oznámení
Pravidelné
@@ -2366,7 +2365,6 @@
Členové budou odstraněny z chatu - toto nelze zvrátit!
Použitím SimpleX chatu souhlasíte že:\n- ve veřejných skupinách budete zasílat pouze legální obsah.\n- budete respektovat ostatní uživatele – žádný spam.
Přijmout
- Nastavit operátora serveru
Zásady ochrany soukromí a podmínky používání.
Soukromé konverzace, skupiny a kontakty nejsou přístupné provozovatelům serverů.
Nepodporovaný odkaz k připojení
@@ -2551,4 +2549,13 @@
Pokud jste se připojili k nějakým kanálům nebo je vytvořili, přestanou trvale fungovat.
aktivní
Zrušit
+ Narodili jste se bez účtu.
+ Nikdo nesledoval vaše konverzace. Nikdo nevytvořil mapu, kde jste byli. Soukromí nikdy nebylo funkcí - byl to způsob života.
+ Pak jsme se přesunuli na internet a každá platforma chtěla o vás něco vědět - vaše jméno, vaše číslo, vaše přátele. Smířili jsme se s tím, že cenou za komunikaci s ostatními je dát někomu vědět, s kým mluvíme. Každá generace, lidská i technická, to tak měla - telefon, e-mail, komunikátory, sociální sítě. Zdálo se, že je to jediný možný způsob.
+ Existuje i jiný způsob. Síť bez telefonních čísel. Bez uživatelských jmen. Bez účtů. Bez jakékoli uživatelské identity. Síť, která spojuje lidi a přenáší šifrované zprávy, aniž by bylo známo, kdo je připojen.
+ Nejde o to mít lepší zámek na dveřích někoho jiného. Ani o to mít nájemce, který respektuje vaše soukromí, ale vede evidenci všech vašich návštěvníků. Nejste host. Jste doma. Ani král k vám nemůže vstoupit - jste suverén.
+ Vaše konverzace patří vám, jako tomu bylo vždy před internetem. Síť není místo, které navštěvujete. Je to místo, které vytváříte a vlastníte. A nikdo vám ho nemůže vzít, ať už je soukromé, nebo veřejné.
+ Nejstarší lidská svoboda - mluvit s druhým člověkem, aniž by byl sledován - postavena na infrastruktuře, která ji nemůže zradit.
+ Protože jsme zničili sílu vědět, kdo jste. Aby vám vaši moc nikdo nemohl vzít.
+ Buďte svobodní ve své síti.
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml
index 251987f658..90f40e3713 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml
@@ -473,7 +473,6 @@
Stellen Sie eine private Verbindung her
Wie es funktioniert
- Wie SimpleX funktioniert
SimpleX nutzt individuelle Kennungen für jeden Ihrer Kontakte, um Ihre Privatsphäre zu schützen.
Nur die Endgeräte speichern Benutzerprofile, Kontakte, Gruppen und Nachrichten.
GitHub-Repository mehr dazu.]]>
@@ -2450,7 +2449,6 @@
Durch die Nutzung von SimpleX Chat erklären Sie sich damit einverstanden:\n- nur legale Inhalte in öffentlichen Gruppen zu versenden.\n- andere Nutzer zu respektieren - kein Spam.
Datenschutz- und Nutzungsbedingungen.
Annehmen
- Server-Betreiber konfigurieren
Private Chats, Gruppen und Ihre Kontakte sind für Server-Betreiber nicht zugänglich.
Verbindungs-Link wird nicht unterstützt
Verkürzter Link
@@ -2821,6 +2819,15 @@
Diese Adresse in Ihrem Social‑Media‑Profil, auf Ihrer Webseite oder in Ihrer E‑Mail‑Signatur verwenden.
Wir haben das Verbinden für neue Nutzer vereinfacht.
Ihre öffentliche Adresse
+ Sie wurden ohne eine Benutzerkennung geboren.
+ Niemand verfolgte Ihre Gespräche. Niemand erstellte eine Karte, wo Sie sich aufgehalten haben. Privatsphäre war nie ein Feature - sie war selbstverständlich.
+ Dann sind wir online gegangen, und jede Plattform wollte Etwas von Ihnen - Ihren Namen, Ihre Nummer, Ihre Freunde. Wir akzeptierten, dass es der Preis mit Anderen zu kommunizieren ist, Jemandem preiszugeben, mit wem und wie wir miteinander kommunizieren. Jede Generation, Menschen und Technologien, kannten es nur so - Telefon, E-Mail, Messenger, soziale Medien. Es schien der einzig mögliche Weg zu sein.
+ Es gibt einen anderen Weg. Ein Netzwerk ohne Telefonnummern, ohne Benutzernamen, ohne Benutzerkennungen und ohne jegliche Benutzeridentität. Ein Netzwerk, welches Menschen verbindet und verschlüsselte Nachrichten überträgt, ohne zu wissen, wer mit wem verbunden ist.
+ Nicht ein besseres Schloss an der Tür eines Anderen. Kein freundlicher Vermieter, der Ihre Privatsphäre respektiert, aber dennoch jeden Besucher registriert. Sie sind kein Gast. Sie sind zu Hause. Kein Vermieter, kein Fremder kann es betreten - Sie sind souverän.
+ Ihre Kommunikation gehört Ihnen, so wie es immer war, bevor es das Internet gab. Das Netzwerk ist kein Ort, den Sie besuchen. Es ist ein Ort, den Sie erschaffen und besitzen und Niemand kann es Ihnen nehmen, egal ob Sie es privat oder öffentlich machen.
+ Die älteste Freiheit des Menschen - mit einem anderen Menschen sprechen zu können, ohne beobachtet zu werden - gestützt auf einer Infrastruktur, die Sie nicht verraten kann.
+ Weil wir die Macht zerstört haben, zu wissen, wer Sie sind. Damit Ihnen Ihre Macht niemals genommen werden kann.
+ Genießen Sie die Freiheit in Ihrem Netzwerk.
Abonnenten-Meldungen
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/el/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/el/strings.xml
index 20a271f58f..250e587761 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/el/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/el/strings.xml
@@ -549,7 +549,6 @@
Διαμορφωμένοι SMP διακομιστές
Διαμορφωμένοι XFTP διακομιστές
Διαμορφωμένοι ICE διακομιστές
- Διαμόρφωση χειριστών διακομιστή
Επιβεβαίωσε
Επιβεβαίωση διαγραφής επαφής;
Επιβεβαίωση αναβαθμίσεων βάσης δεδομένων
@@ -1007,7 +1006,6 @@
Πως επηρεάζει τη μπαταρία
Πως βοηθάει την ιδιωτικότητα
Πως δουλεύει
- Πως δουλεύει το SimpleX
Πως να
Πως να το χρησιμοποιήσεις
Πως να χρησιμοποιήσεις markdown σύνταξη
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/es/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/es/strings.xml
index 4fc83c8a84..4fe56f1f98 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/es/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/es/strings.xml
@@ -381,7 +381,6 @@
Servidores ICE (uno por línea)
Nombre completo:
Tu decides quién se conecta.
- Cómo funciona SimpleX
Colgar
Archivos y multimedia
¡Grupo no encontrado!
@@ -2376,7 +2375,6 @@
Política de privacidad y condiciones de uso.
Los chats privados, los grupos y tus contactos no son accesibles para los operadores de servidores.
Al usar SimpleX Chat, aceptas:\n- enviar únicamente contenido legal en los grupos públicos.\n- respetar a los demás usuarios - spam prohibido.
- Configurar operadores de servidores
Enlace de canal SimpleX
Enlace completo
Enlace corto
@@ -2681,6 +2679,16 @@
Dejarás de recibir mensajes de este canal. El historial del chat se conservará.
fallo
+ Naciste sin una cuenta.
+ Nadie monitorizaba tus conversaciones. Nadie registraba tus ubicaciones. La privacidad nunca fue un lujo, era la manera de vivir.
+ Después pasamos a internet y cada plataforma pedía una parte de tí: tu nombre, tu número, tus amistades. Aceptamos que el precio de hablar con los demás es informar a alguien de quién es interlocutor. Cada generación, personas y tecnología, ha funcionado así: teléfono, email, mensajería, redes sociales. Parecía el único camino.
+ Existe otro camino. Una red sin números de teléfono. Sin nombres de usuario. Sin cuentas. Sin identificadores de ningún tipo. Una red que conecta las personas y entrega mensajes cifrados sin saber quien está conectado.
+ No un candado mejorado en la puerta de otro. No un terrateniente que respeta tu privacidad pero sigue guardando un registro de tus visitantes. Tu no eres el invitado. Estás en tu casa y ningún rey podrá entrar. Tu eres el soberano.
+ Tus conversaciones te pertenecen, tal como ha sido siempre antes de la llegada de internet. Tu red no es un lugar que visitas. Es un lugar que has creado, te pertenece y nadie te la podrá quitar, ya sea pública o privada.
+ La libertad más antigua del ser humano, la de hablar con otra persona sin ser observado, materializada sobre una infraestructura que no puede traicionarla.
+ Porque hemos destruido el poder de saber quien eres. De manera que tu poder nunca se pueda arrebatar.
+ Se libre en tu red.
+
Informes de suscriptores
Se permiten mensajes directos entre suscriptores.
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/fa/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/fa/strings.xml
index 5483becb91..da5dac16a3 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/fa/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/fa/strings.xml
@@ -730,7 +730,6 @@
تماس پذیرفته
نامتمرکز
پروفایل خود را ایجاد کنید
- SimpleX چگونه کار میکند
مخزن GitHub ما.]]>
استفاده از چت
بهترین گزینه برای باتری. شما اعلانها را فقط وقتی دریافت میکنید که برنامه در حال اجراست (بدون سرویس پسزمینه).]]>
@@ -2183,7 +2182,6 @@
شرایط بهطور خودکار برای اپراتورهای فعال در: %s پذیرفته خواهد شد.
سرورهای SMP پیکربندیشده
سرورهای XFTP پیکربندیشده
- پیکربندی اپراتورهای سرور
سرورهای متصل شده
اتصال نیاز به تجدید مذاکره رمزنگاری دارد.
اتصالات
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/fi/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/fi/strings.xml
index 5ea012dcf9..24634192ec 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/fi/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/fi/strings.xml
@@ -388,7 +388,6 @@
Miten
Koko nimi:
Miten markdownia käytetään
- Miten SimpleX toimii
Saapuva äänipuhelu
Saapuva videopuhelu
Sivuuta
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/fr/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/fr/strings.xml
index 677bdeb9b5..383e4c49f7 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/fr/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/fr/strings.xml
@@ -447,7 +447,6 @@
Créez votre profil
Établir une connexion privée
Comment ça fonctionne
- Comment SimpleX fonctionne
Seuls les appareils clients stockent les profils des utilisateurs, les contacts, les groupes et les messages.
GitHub repository.]]>
Batterie peu utilisée. L\'app vérifie les messages toutes les 10 minutes. Vous risquez de manquer des appels ou des messages urgents.]]>
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/hr/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/hr/strings.xml
index 3084b8569b..84e806dda0 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/hr/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/hr/strings.xml
@@ -90,7 +90,6 @@
Domaćin
Kako utiče na bateriju
Kako pomaže privatnosti
- Kako SimpleX radi
Grupni profil je uskladnjen na uredjajima korisnika, ne na serverima.
O operatorima
Skrivena šifra profila
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/hu/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/hu/strings.xml
index c706dc8e8a..3b77d42277 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/hu/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/hu/strings.xml
@@ -624,7 +624,6 @@
Hiba történt a téma importálásakor
Partner nevének és az üzenet tartalmának elrejtése
Nem kompatibilis adatbázis-verzió
- Hogyan működik a SimpleX
Nem kompatibilis verzió
Elrejtés
Bejövő videóhívás
@@ -2343,7 +2342,6 @@
A SimpleX Chat használatával Ön elfogadja, hogy:\n- csak elfogadott tartalmakat tesz közzé a nyilvános csoportokban.\n- tiszteletben tartja a többi felhasználót, és nem küld kéretlen tartalmat senkinek.
Adatvédelmi szabályzat és felhasználási feltételek.
A privát csevegések, a csoportok és a partnerek nem érhetők el a kiszolgálók üzemeltetői számára.
- Kiszolgálóüzemeltetők beállítása
Nem támogatott kapcsolattartási hivatkozás
Rövid hivatkozás
Teljes hivatkozás
@@ -2715,6 +2713,16 @@
A SimpleX hálózat hosszú távú működésének biztosítása érdekében.
Az új felhasználók számára egyszerűbbé tettük a kapcsolatok létrehozását.
+ Fiók nélkül születtünk.
+ Senki sem követte nyomon a beszélgetéseinket. Senki sem készített térképet arról, hogy merre jártunk. A magánéletünk nem csak egy funkció volt, hanem az életmódunk.
+ Aztán felléptünk az internetre, és minden platform kért belőlünk egy darabot - nevet, telefonszámot, baráti kapcsolatokat. Elfogadtuk, hogy a kommunikáció ára az, hogy mások megtudják, hogy kivel beszélünk. Minden generáció, az emberek és a technológia is eddig így működött - telefon, e-mail, üzenetküldő programok, közösségi média. Úgy tűnt, ez az egyetlen lehetséges mód.
+ De van egy másik lehetőség is. Egy hálózat, amelyben nincsenek telefonszámok. Nincsenek felhasználónevek. Nincsenek fiókok. Nincsenek semmiféle felhasználói azonosítók. Egy hálózat, amely összeköti az embereket és titkosított üzeneteket továbbít, anélkül, hogy tudná, ki csatlakozik hozzá.
+ Nem egy jobb zár mások ajtaján. Nem egy kedvesebb házmester, aki tiszteletben tartja az Ön magánéletét, de mégis nyilvántartást vezet minden látogatójáról. Ön itt nem csak egy vendég. Ön itt otthon van. Nincs az a hatalom, amely beléphetne ide - Ön itt szuverén.
+ A beszélgetései Önhöz tartoznak, ahogy az internet megjelenése előtt is mindig így volt. A hálózat nem egy hely, amelyet meglátogat. Ez egy olyan hely, amelyet Ön hoz létre saját magának. És senki sem veheti el Öntől, függetlenül attól, hogy privát vagy nyilvános.
+ A legrégebbi emberi szabadság - beszélgetni az emberekkel, anélkül, hogy mások megfigyelnének - olyan infrastruktúrán alapul, amely nem tudja elárulni.
+ Mert felszámoltuk a lehetőségét is annak, hogy megtudjuk, Ön kicsoda. Így az önrendelkezése soha nem kerülhet idegen kezekbe.
+ Legyen szabad a saját hálózatában.
+
Feliratkozók jelentései
A közvetlen üzenetek küldése a feliratkozók között engedélyezve van.
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/in/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/in/strings.xml
index 2257d93efa..6b3449f7b1 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/in/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/in/strings.xml
@@ -619,7 +619,6 @@
Kesalahan saat menginisialisasi WebView. Pastikan Anda telah menginstal WebView dan arsitektur yang didukung adalah arm64.\nKesalahan: %s
Gunakan obrolan
Bagaimana caranya
- Cara kerja SimpleX
Berkala
Panggilan suara masuk
panggilan suara terenkripsi e2e
@@ -2345,7 +2344,6 @@
Frasa sandi di Keystore tidak dapat dibaca. Hal ini mungkin terjadi setelah pembaruan sistem yang tidak kompatibel dengan aplikasi. Jika tidak demikian, silakan hubungi pengembang.
Terima
Dengan menggunakan SimpleX Chat, Anda setuju untuk:\n- hanya mengirim konten legal di grup publik.\n- hormati pengguna lain – tidak ada spam.
- Konfigurasikan operator server
Kebijakan privasi dan ketentuan penggunaan.
Obrolan pribadi, grup, dan kontak Anda tidak dapat diakses oleh operator server.
Frasa sandi di Keystore tidak dapat dibaca, silakan masukkan secara manual. Hal ini mungkin terjadi setelah pembaruan sistem yang tidak kompatibel dengan aplikasi. Jika tidak demikian, silakan hubungi pengembang.
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/it/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/it/strings.xml
index d65dc3b128..c296fd538b 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/it/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/it/strings.xml
@@ -358,7 +358,6 @@
Videochiamata crittografata e2e
terminata
Come funziona
- Come funziona SimpleX
Rispondi alla chiamata
Audio spento
Audio acceso
@@ -2379,7 +2378,6 @@
Usando SimpleX Chat accetti di:\n- inviare solo contenuto legale nei gruppi pubblici.\n- rispettare gli altri utenti - niente spam.
Le chat private, i gruppi e i tuoi contatti non sono accessibili agli operatori dei server.
Accetta
- Configura gli operatori dei server
Informativa sulla privacy e condizioni d\'uso.
Questo link richiede una versione più recente dell\'app. Aggiornala o chiedi al tuo contatto di inviare un link compatibile.
Link completo
@@ -2751,6 +2749,16 @@
Sicurezza: solo i proprietari hanno le chiavi del canale.
Abbiamo semplificato la connessione per i nuovi utenti.
+ Sei nato senza un account.
+ Nessuno monitorava le tue conversazioni. Nessuno disegnava una mappa delle tue posizioni. La privacy non era mai stata una caratteristica, era uno stile di vita.
+ Poi ci siamo trasferiti online e ogni piattaforma ha chiesto un pezzo di noi: il nome, il numero, gli amici. Abbiamo accettato che il prezzo da pagare per comunicare con gli altri fosse quello di far sapere a qualcuno con chi parliamo. Ogni generazione, sia di persone che di tecnologia, ha funzionato così: telefono, email, messenger, social media. Sembrava l\'unico modo possibile.
+ C\'è un\'altra via. Una rete senza numeri di telefono. Senza nomi utente. Senza account. Senza identificatori utente di alcun tipo. Una rete che connette le persone e trasferisce messaggi crittografati senza sapere chi è connesso.
+ Non una serratura migliore sulla porta di qualcun altro. Non un padrone di casa più gentile che rispetta la tua privacy, ma che continua a tenere traccia di tutti i visitatori. Non sei un ospite. Sei a casa tua. Nessun re può entrarvi: sei tu il sovrano.
+ Le tue conversazioni appartengono a te, come è sempre stato prima dell\'avvento di internet. La rete non è un luogo che visiti. È un luogo che crei e possiedi. E nessuno può portartelo via, che tu lo renda privato o pubblico.
+ La più antica libertà umana, parlare con un\'altra persona senza essere osservati, si basa su un\'infrastruttura che non può tradirla.
+ Perché abbiamo distrutto il potere di sapere chi sei. In modo che il tuo potere non possa mai esserti sottratto.
+ Vivi libero nella tua rete.
+
Segnalazioni degli iscritti
Permetti l\'invio di messaggi diretti agli iscritti.
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/iw/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/iw/strings.xml
index 1ef02fd128..faf69dfd03 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/iw/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/iw/strings.xml
@@ -482,7 +482,6 @@
הסתר פרופיל
איך להשתמש במרקדאון
איך זה עובד
- איך SimpleX עובדת
נתק
עזרה
הקבוצה תימחק עבור כל חברי הקבוצה – לא ניתן לבטל זאת!
@@ -2095,7 +2094,6 @@
לשליחה
צ\'אט אחד עם חבר
הודעה חדשה
- הגדרת מפעילי שרת
ניתן להגדיר שרתים דרך הגדרות.
אישר אותך
ממתין לסקירה
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/ja/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/ja/strings.xml
index a5c9f98421..db563e9ece 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/ja/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/ja/strings.xml
@@ -153,7 +153,6 @@
通知の常時受信
SMPサーバのアドレスを正しく1行ずつに分けて、重複しないように、形式もご確認ください。
WebRTC ICEサーバのアドレスを正しく1行ずつに分けて、重複しないように、形式もご確認ください。
- SimpleX の仕様
通話中
電池消費がより高い!非アクティブ時でもバックグラウンドのサービスが常に稼働します(着信してすぐに通知が出ます)。]]>
発信中
@@ -2014,7 +2013,6 @@
プライバシーとセキュリティの向上
承諾
プライバシーポリシーと利用条件
- サーバオペレータの設定
承諾
サーバオペレータは、プライベートチャット・グループ・連絡先にはアクセスできません。
SimpleX Chat を利用することで、以下の事項に同意したものと見なされます:\n- パブリックグループでは合法なコンテンツのみを送信すること。\n- 他のユーザを尊重すること、またスパムメッセージを送信しないこと。
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/ko/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/ko/strings.xml
index 651d32518f..83f937db32 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/ko/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/ko/strings.xml
@@ -500,7 +500,6 @@
설명서
내 서버 사용법
마크다운 사용법
- SimpleX 작동 방식
그룹 초대가 만료되었어요.
그룹 멤버는 보낸 메시지를 영구 삭제할 수 있습니다. (24 시간)
그룹 멤버는 음성 메시지를 보낼 수 있어요.
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/ku/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/ku/strings.xml
index 0ea9328085..92985b15be 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/ku/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/ku/strings.xml
@@ -215,7 +215,6 @@
Bluetooth
Profîla xwe çêke
Çawa dişuxule
- SimpleX çawa dişuxule
Çawa tesîrê li pîlê dike
Her serê pêlekê
Di cih de
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/lt/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/lt/strings.xml
index aa2e2e46c9..bccd49eed9 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/lt/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/lt/strings.xml
@@ -214,7 +214,6 @@
Ištrinti nuorodą
Ištrinti nuorodą\?
Klaida kuriant grupės nuorodą
- Kaip SimpleX veikia
Duomenų bazė šifruota!
kūrėjas
Ištrinti grupę\?
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/lv/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/lv/strings.xml
index 0f192b284c..d673e80394 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/lv/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/lv/strings.xml
@@ -1566,7 +1566,6 @@
Izveidot privātu savienojumu
Migrēt no citas ierīces
Kā tas darbojas
- Kā darbojas SimpleX
Lai aizsargātu privātumu, SimpleX izmanto ID rindām
Tikai klientu ierīces glabā kontaktu grupas un e2e šifrētas ziņas
@@ -1591,7 +1590,6 @@
Ievada nosacījumi, izmantojot jūs piekrītat
Ievada nosacījumi privātuma politika un lietošanas noteikumi
Ievada nosacījumi pieņemt
- Ievada nosacījumi konfigurēt servera operatorus
Ievada izvēlēties servera operatorus
Ievada tīkla operatori
Ievada tīkla operatori simplex flux vienošanās
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/ml/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/ml/strings.xml
index d21b8b8f83..19aa92a4a0 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/ml/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/ml/strings.xml
@@ -353,7 +353,6 @@
സ്വാഗത സന്ദേശം നൽകുക... (ഇച്ഛാനുസൃതമായ)
സംരക്ഷിക്കാതെ പുറത്ത് പോവുക
ഇത് എങ്ങനെ പ്രവർത്തിക്കുന്നു
- SimpleX എങ്ങനെ പ്രവർത്തിക്കുന്നു
കൃത്യസമയം
പ്രവർത്തനരഹിതമാക്കുക
എന്നതിൽ ഇല്ലാതാക്കി
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml
index 4ab2b10904..331ef12e4d 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml
@@ -424,7 +424,6 @@
cursief
Hoe het werkt
gemiste oproep
- Hoe SimpleX werkt
Inkomende audio oproep
Inkomend video gesprek
Negeren
@@ -2380,7 +2379,6 @@
Volledige link
Niet-ondersteunde verbindingslink
Korte link
- Serveroperators configureren
Privacybeleid en gebruiksvoorwaarden.
Privéchats, groepen en uw contacten zijn niet toegankelijk voor serverbeheerders.
contact verwijderd
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/pl/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/pl/strings.xml
index cc8b369386..4bb9626694 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/pl/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/pl/strings.xml
@@ -426,7 +426,6 @@
Możesz używać markdown do formatowania wiadomości:
Utwórz swój profil
Jak to działa
- Jak SimpleX działa
Natychmiastowy
Jak wpływa na baterię
Nawiąż prywatne połączenie
@@ -2230,7 +2229,6 @@
Czat z administratorami
Czat z członkiem
Czatuj z członkami, zanim dołączą.
- Konfigurowanie operatorów serwerów
Połącz
Połącz się szybciej! 🚀
kontakt usunięty
@@ -2557,4 +2555,13 @@
Połączenie nie powiodło się
niepowodzenie
Jeśli dołączyłeś do kanałów lub je utworzyłeś, przestaną one działać na stałe.
+ Urodziłeś się bez konta.
+ Nikt nie śledził twoich rozmów. Nikt nie rysował mapy miejsc, w których byłeś. Prywatność nigdy nie była funkcją - była sposobem na życie.
+ Następnie przenieśliśmy się do sieci, a każda platforma prosiła o podanie danych osobowych - imienia i nazwiska, numeru telefonu, znajomych. Zaakceptowaliśmy fakt, że ceną za możliwość komunikowania się z innymi jest ujawnienie komuś, z kim rozmawiamy. Tak było w przypadku każdego pokolenia, ludzi i technologii - telefonu, poczty elektronicznej, komunikatorów, mediów społecznościowych. Wydawało się to jedyną możliwą opcją.
+ Jest jeszcze inny sposób. Sieć bez numerów telefonów. Bez nazw użytkowników. Bez kont. Bez jakichkolwiek tożsamości użytkowników. Sieć, która łączy ludzi i przesyła zaszyfrowane wiadomości, nie wiedząc, kto jest podłączony.
+ Nie chodzi o lepszy zamek w drzwiach kogoś innego. Nie chodzi o milszego właściciela, który szanuje twoją prywatność, ale nadal prowadzi rejestr wszystkich odwiedzających. Nie jesteś gościem. Jesteś w domu. Żaden król nie może do niego wejść - jesteś suwerenem.
+ Twoje rozmowy należą do Ciebie, tak jak zawsze było przed pojawieniem się Internetu. Sieć nie jest miejscem, które odwiedzasz. Jest miejscem, które tworzysz i które należy do Ciebie. Nikt nie może Ci tego odebrać, niezależnie od tego, czy jest to miejsce prywatne, czy publiczne.
+ Najstarsza ludzka wolność - możliwość rozmowy z inną osobą bez bycia obserwowanym - opiera się na infrastrukturze, która nie może jej zdradzić.
+ Ponieważ zniszczyliśmy moc pozwalającą poznać, kim jesteś. Więc twoja moc nigdy nie będzie Ci odebrana.
+ Ciesz się swobodą w swojej sieci.
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/pt-rBR/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/pt-rBR/strings.xml
index 133f65edb2..ca0ec5f2ba 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/pt-rBR/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/pt-rBR/strings.xml
@@ -417,7 +417,6 @@
O arquivo será recebido quando seu contato estiver online, aguarde ou verifique mais tarde!
O perfil do grupo é armazenado nos dispositivos dos membros, não nos servidores.
ajuda
- Como o SimpleX funciona
Servidores ICE (um por linha)
Ignorar
A imagem será recebida quando seu contato estiver online, aguarde ou verifique mais tarde!
@@ -2376,7 +2375,6 @@
Os servidores para novos arquivos do seu perfil de chat atual
A conexão atingiu o limite de mensagens não entregues, seu contato pode estar offline.
Mensagens não entregues
- Configurar operadores de servidor
Chats privados, grupos e seus contatos não são acessíveis aos operadores de servidor.
Aceitar
Ao usar o SimpleX Chat, você concorda em:\n- enviar apenas conteúdo legal em grupos públicos.\n- respeitar outros usuários – sem spam.
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/ro/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/ro/strings.xml
index 11ca93be3b..d9af79fe96 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/ro/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/ro/strings.xml
@@ -1504,7 +1504,6 @@
Ieșire fără salvare
Parolă profil ascuns
italic
- Cum funcționează SimpleX
Fără identificatori de utilizator.
Acest lucru se poate întâmpla atunci când:\n1. Mesajele au expirat în aplicația de trimitere după 2 zile sau pe server după 30 de zile.\n2. Decriptarea mesajului a eșuat, deoarece tu sau contactul tău ați folosit un backup vechi al bazei de date.\n3. Conexiunea a fost compromisă.
Eroare la exportarea bazei de date a conversației
@@ -2283,7 +2282,6 @@
Ai partajat o cale de fișier nevalidă. Raportează problema dezvoltatorilor aplicației.
Deschide în aplicația mobilă, apoi atinge Conectare în aplicație.]]>
Actualizează adresa
- Configurați operatorii serverului
Condițiile vor fi acceptate pentru operatorii activați după 30 de zile.
Apasă pe butonul de informații de lângă bara de adrese pentru a permite accesul la microfon.
Colţ
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml
index 067174ba0d..64ca9c0711 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml
@@ -473,7 +473,6 @@
Добавьте контакт
Как это работает
- Как SimpleX работает
Чтобы защитить Вашу конфиденциальность, SimpleX использует разные ID для всех ваших контактов.
Только пользовательские устройства хранят контакты, группы и сообщения.
GitHub репозитория.]]>
@@ -2459,7 +2458,6 @@
Принять
Используя SimpleX Chat, Вы согласны:\n- отправлять только законные сообщения в публичных группах.\n- уважать других пользователей — не отправлять спам.
Частные разговоры, группы и Ваши контакты недоступны для операторов серверов.
- Настроить операторов серверов
Политика конфиденциальности и условия использования.
всех
Принять
@@ -2754,4 +2752,13 @@
Вы можете поделиться ссылкой или QR-кодом — любой желающий сможет присоединиться к каналу.
Изменить настройки канала могут только владельцы канала.
Одноразовая ссылка
+ Вы родились без аккаунта.
+ Никто не отслеживал ваши разговоры. Никто не составлял карту ваших перемещений. Конфиденциальность не была функцией - это был образ жизни.
+ Потом мы вышли в интернет, и каждая платформа попросила частичку вас - ваше имя, ваш номер, ваших друзей. Мы смирились с тем, что за возможность общаться приходится отдавать информацию о том, с кем мы общаемся. Каждое поколение людей и технологий жило так - телефон, электронная почта, мессенджеры, социальные сети. Казалось, что другого пути нет.
+ Другой путь есть. Сеть без номеров телефонов. Без имён пользователей. Без аккаунтов. Без каких-либо идентификаторов пользователей. Сеть, которая соединяет людей и передаёт зашифрованные сообщения, не зная, кто с кем связан.
+ Не более надёжный замок на чужой двери. Не более вежливый хозяин, который уважает вашу частную жизнь, но всё равно ведёт учёт всех посетителей. Вы не гость. Вы у себя дома. Ни один король не войдёт в ваш дом - вы суверенны.
+ Ваши разговоры принадлежат вам, как это всегда было до интернета. Сеть - это не место, куда вы приходите. Это место, которое вы создаёте и которым владеете. И никто не может это у вас отнять, делаете ли вы его конфиденциальным или публичным.
+ Древнейшая человеческая свобода - говорить с другим человеком без слежки - построенная на инфраструктуре, которая не может её предать.
+ Потому что мы разрушили саму возможность узнать, кто вы. Чтобы вашу свободу невозможно было отнять.
+ Будь свободен в своей сети.
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/th/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/th/strings.xml
index 2fe2000fb3..c355d8d9fb 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/th/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/th/strings.xml
@@ -376,7 +376,6 @@
วิธีใช้มาร์กดาวน์
สิ้นสุดลงแล้ว
มันทำงานอย่างไร
- วิธีการ SimpleX ทํางานอย่างไร
กระจายอำนาจแล้ว
การโทรเสียงแบบ encrypted จากต้นจนจบ
การโทรวิดีแบบ encrypted จากต้นจนจบ
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/tr/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/tr/strings.xml
index 16d821637b..32672e365f 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/tr/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/tr/strings.xml
@@ -611,7 +611,6 @@
Gizle
Konuşulan kişileri ve mesajları gizle
Uygulamayı, son kullanılanlar kısmından gizle.
- SimpleX nasıl çalışıyor
bir görüntülü aramada karşıdakine karekodunu gösterebilir ya da konuştuğun kişiye bir katılım bağlantısı paylaşabilirsin.]]>
bir görüntülü aramada karşıdakinin karekodunu okutabilirsin ya da konuştuğun kişi seninle bir katılım bağlantısı paylaşabilir.]]>
Eğer yüz yüze görüşemiyorsanız bir görüntülü aramada karşıdakine karekodunu gösterebilir ya da konuştuğun kişiye bir katılım bağlantısı paylaşabilirsin.
@@ -2270,7 +2269,6 @@
Arkaplan servisi yok
Kabul Et
SimpleX Chat\'i kullanarak şunları kabul etmiş olursunuz:\n- genel gruplarda sadece yasal içerik göndermeyi.\n- diğer kullanıcılara saygı göstermeyi - spam yapmamayı.
- Sunucu operatörlerini yapılandırma
Sohbetten çıkılsın mı?
yönetici
Bütün sunucular
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/uk/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/uk/strings.xml
index 6d498ef4ed..61f64df2fd 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/uk/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/uk/strings.xml
@@ -407,7 +407,6 @@
очікування підтвердження…
Приватність перевизначена
Ви вирішуєте, хто може під\'єднатися.
- Як працює SimpleX
зашифрований e2e аудіовиклик
Відкрийте SimpleX Chat для прийняття виклику
e2e зашифровано
@@ -2376,7 +2375,6 @@
Приватні чати, групи та ваші контакти недоступні для операторів сервера.
Прийняти
Використовуючи SimpleX Chat, ви погоджуєтесь на:\n- надсилати тільки легальний контент у публічних групах.\n- поважати інших користувачів – без спаму.
- Налаштувати операторів сервера
Політика конфіденційності та умови використання
Це посилання вимагає новішої версії додатку. Будь ласка, оновіть додаток або попросіть вашого контакту надіслати сумісне посилання.
Повне посилання
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/vi/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/vi/strings.xml
index ae22c40277..21e2e43a44 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/vi/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/vi/strings.xml
@@ -880,7 +880,6 @@
Hồ sơ trò chuyện ẩn
Cách sử dụng
Cách thức hoạt động
- Cách thức SimpleX hoạt động
Cách làm
Lỗi khởi động WebView. Hãy đảm bảo bạn đã cài đặt WebView và kiến trúc hỗ trợ của nó là arm64.\nLỗi: %s
giờ
@@ -2351,7 +2350,6 @@
Bằng việc sử dụng SimpleX Chat, bạn đồng ý:\n- chỉ gửi nội dung hợp pháp trong các nhóm công khai.\n- tôn trọng những người dùng khác - không gửi tin rác.
Các cuộc trò chuyện riêng tư, nhóm và liên hệ của bạn không thể truy cập được đối với các bên vận hành máy chủ.
Chấp nhận
- Định cấu hình các bên vận hành máy chủ
Đường dẫn này yêu cầu một phiên bản ứng dụng mới hơn. Vui lòng nâng cấp ứng dụng hoặc yêu cầu liên hệ của một gửi cho một đường dẫn tương thích.
Đường dẫn kênh SimpleX
Đường dẫn kết nối không được hỗ trợ
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/zh-rCN/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/zh-rCN/strings.xml
index b189ee581d..21811df621 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/zh-rCN/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/zh-rCN/strings.xml
@@ -618,7 +618,6 @@
%d 小时
%d 月
%d 秒
- SimpleX 是如何工作的
确保 WebRTC ICE 服务器地址格式正确、每行分开且不重复。
确保 SMP 服务器地址格式正确、每行分开且不重复。
Markdown 帮助
@@ -2364,7 +2363,6 @@
接受
使用 SimpleX Chat 代表您同意:\n- 在公开群中只发送合法内容\n- 尊重其他用户 – 没有垃圾信息。
服务器运营方无法访问私密聊天、群和你的联系人。
- 配置服务器运营方
不支持的连接链接
SimpleX 频道链接
短链接
@@ -2734,4 +2732,13 @@
在社交媒体资料、网站或电子邮件签名中使用该地址。
我们让连接对新用户更简单。
你的公开地址
+ 你生来就没有账户。
+ 没有人追踪你的谈话内容。没有人绘制你去过的地方的地图。隐私从来都不是一项功能--而是一种生活方式。
+ 然后我们转向线上,每个平台都要求你提供一些信息--你的姓名、电话号码、好友列表。我们接受了这样一个事实:与人交流的代价就是让别人知道我们在和谁交流。每一代人,每一代科技,都遵循着这样的模式--电话、电子邮件、即时通讯、社交媒体。这似乎是唯一可行的方式。
+ 还有另一种方法。一个没有电话号码、没有用户名、没有账户、没有任何用户身份的网络。一个连接人们并传输加密信息的网络,而无需知道谁连接了。
+ 别人家的门锁再好也比不上这里。房东再好也比不上这里,他既尊重你的隐私,又保留着所有访客的记录。你不是客人,你是家。没有国王能闯入--你是主人。
+ 你的对话内容始终属于你,就像互联网出现之前一样。网络不是一个你访问的地方,而是一个你创建并拥有的地方。无论你将其设为私密还是公开,任何人都无法将其夺走。
+ 人类最古老的自由--与他人交谈而不被监视--建立在不会背叛它的基础设施之上。
+ 因为我们摧毁了知道你是谁的权力,因而您的权利永远不会被夺走。
+ 在你的网络中自由畅行。
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/zh-rTW/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/zh-rTW/strings.xml
index 05997a9fec..9ec116058a 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/zh-rTW/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/zh-rTW/strings.xml
@@ -847,7 +847,6 @@
感謝用戶 - 使用 Weblate 的翻譯貢獻!
正在修改聯絡地址為 %s …
受加密的資料庫密碼會再次更新和儲存於金鑰庫。
- SimpleX 是怎樣運作
當發生: \n1. 訊息將在傳送至客戶端後兩天或在伺服器內三十天時過時。 \n2. 訊息解密失敗,因為你或你的聯絡人用了舊的資料庫備份 \n3. 連接被破壞。
只有客戶端裝置儲存個人檔案、聯絡人、群組,和訊息。
請放置你的密碼於安全的地方,如果你遺失了密碼,將不可能修改你的密碼。
@@ -2061,7 +2060,6 @@
停用自動刪除訊息?
刪除或審查最多 200 條訊息。
於網路和伺服器設定中啟用 Flux 以獲得更好的元資料隱私。
- 配置伺服器營運者
使用條款
更好的隱私和安全性
你可以再試一次。
diff --git a/apps/multiplatform/common/src/commonMain/resources/assets/default/MR/images/intro.svg b/apps/multiplatform/common/src/commonMain/resources/assets/default/MR/images/intro.svg
new file mode 100644
index 0000000000..cd6f033c62
--- /dev/null
+++ b/apps/multiplatform/common/src/commonMain/resources/assets/default/MR/images/intro.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/apps/multiplatform/common/src/commonMain/resources/assets/default/MR/images/intro_light.svg b/apps/multiplatform/common/src/commonMain/resources/assets/default/MR/images/intro_light.svg
new file mode 100644
index 0000000000..cd6f033c62
--- /dev/null
+++ b/apps/multiplatform/common/src/commonMain/resources/assets/default/MR/images/intro_light.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/apps/multiplatform/common/src/commonMain/resources/assets/default/MR/images/network_commitments.svg b/apps/multiplatform/common/src/commonMain/resources/assets/default/MR/images/network_commitments.svg
new file mode 100644
index 0000000000..cd6f033c62
--- /dev/null
+++ b/apps/multiplatform/common/src/commonMain/resources/assets/default/MR/images/network_commitments.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/apps/multiplatform/common/src/commonMain/resources/assets/default/MR/images/network_commitments_light.svg b/apps/multiplatform/common/src/commonMain/resources/assets/default/MR/images/network_commitments_light.svg
new file mode 100644
index 0000000000..cd6f033c62
--- /dev/null
+++ b/apps/multiplatform/common/src/commonMain/resources/assets/default/MR/images/network_commitments_light.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/apps/multiplatform/common/src/commonMain/resources/assets/default/MR/images/your_network.svg b/apps/multiplatform/common/src/commonMain/resources/assets/default/MR/images/your_network.svg
new file mode 100644
index 0000000000..cd6f033c62
--- /dev/null
+++ b/apps/multiplatform/common/src/commonMain/resources/assets/default/MR/images/your_network.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/apps/multiplatform/common/src/commonMain/resources/assets/default/MR/images/your_network_light.svg b/apps/multiplatform/common/src/commonMain/resources/assets/default/MR/images/your_network_light.svg
new file mode 100644
index 0000000000..cd6f033c62
--- /dev/null
+++ b/apps/multiplatform/common/src/commonMain/resources/assets/default/MR/images/your_network_light.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/apps/multiplatform/common/src/commonMain/resources/assets/default/MR/images/your_profile.svg b/apps/multiplatform/common/src/commonMain/resources/assets/default/MR/images/your_profile.svg
new file mode 100644
index 0000000000..cd6f033c62
--- /dev/null
+++ b/apps/multiplatform/common/src/commonMain/resources/assets/default/MR/images/your_profile.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/apps/multiplatform/common/src/commonMain/resources/assets/default/MR/images/your_profile_light.svg b/apps/multiplatform/common/src/commonMain/resources/assets/default/MR/images/your_profile_light.svg
new file mode 100644
index 0000000000..cd6f033c62
--- /dev/null
+++ b/apps/multiplatform/common/src/commonMain/resources/assets/default/MR/images/your_profile_light.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/assets/ASSETS_LICENSE.md b/assets/ASSETS_LICENSE.md
new file mode 100644
index 0000000000..36ac54d04f
--- /dev/null
+++ b/assets/ASSETS_LICENSE.md
@@ -0,0 +1,18 @@
+# Application Graphic Assets License
+
+Copyright (C) 2026 SimpleX Chat Ltd. All rights reserved.
+
+The graphic assets in this folder, subfolders and in other folders of this repository - including illustrations, images, icons, and visual designs - are proprietary and are not licensed under the AGPLv3 that covers the application source code.
+
+## Permitted use
+
+- Unmodified application distribution. You may use these assets as part of the SimpleX Chat application, provided the application is not modified in any way.
+- Publications with permission. You may use screenshots containing these assets in publications with prior written permission from SimpleX Chat Ltd.
+
+## Not permitted
+
+All other use, including modification, redistribution, or incorporation into other works, is not permitted without prior written permission from SimpleX Chat Ltd.
+
+## Contact
+
+To request permission, contact chat@simplex.chat.
diff --git a/assets/multiplatform/resources/MR/images/banner_create_link@2x.png b/assets/multiplatform/resources/MR/images/banner_create_link@2x.png
new file mode 100644
index 0000000000..6f768932ad
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/banner_create_link@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/banner_create_link@3x.png b/assets/multiplatform/resources/MR/images/banner_create_link@3x.png
new file mode 100644
index 0000000000..8fe3b9c035
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/banner_create_link@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/banner_create_link_light@2x.png b/assets/multiplatform/resources/MR/images/banner_create_link_light@2x.png
new file mode 100644
index 0000000000..c7bfca381a
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/banner_create_link_light@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/banner_create_link_light@3x.png b/assets/multiplatform/resources/MR/images/banner_create_link_light@3x.png
new file mode 100644
index 0000000000..a25f96d596
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/banner_create_link_light@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/banner_paste_link@2x.png b/assets/multiplatform/resources/MR/images/banner_paste_link@2x.png
new file mode 100644
index 0000000000..44feaf8845
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/banner_paste_link@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/banner_paste_link@3x.png b/assets/multiplatform/resources/MR/images/banner_paste_link@3x.png
new file mode 100644
index 0000000000..4d1a6e2fda
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/banner_paste_link@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/banner_paste_link_light@2x.png b/assets/multiplatform/resources/MR/images/banner_paste_link_light@2x.png
new file mode 100644
index 0000000000..c34e988886
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/banner_paste_link_light@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/banner_paste_link_light@3x.png b/assets/multiplatform/resources/MR/images/banner_paste_link_light@3x.png
new file mode 100644
index 0000000000..9d813e2c8e
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/banner_paste_link_light@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/card_connect_via_link_alpha@2x.png b/assets/multiplatform/resources/MR/images/card_connect_via_link_alpha@2x.png
new file mode 100644
index 0000000000..3f53f89dd6
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/card_connect_via_link_alpha@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/card_connect_via_link_alpha@3x.png b/assets/multiplatform/resources/MR/images/card_connect_via_link_alpha@3x.png
new file mode 100644
index 0000000000..490afadc98
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/card_connect_via_link_alpha@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/card_connect_via_link_alpha_light@2x.png b/assets/multiplatform/resources/MR/images/card_connect_via_link_alpha_light@2x.png
new file mode 100644
index 0000000000..77a072dc62
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/card_connect_via_link_alpha_light@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/card_connect_via_link_alpha_light@3x.png b/assets/multiplatform/resources/MR/images/card_connect_via_link_alpha_light@3x.png
new file mode 100644
index 0000000000..556c4d36a4
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/card_connect_via_link_alpha_light@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/card_create_your_public_address_alpha@2x.png b/assets/multiplatform/resources/MR/images/card_create_your_public_address_alpha@2x.png
new file mode 100644
index 0000000000..b5c813009b
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/card_create_your_public_address_alpha@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/card_create_your_public_address_alpha@3x.png b/assets/multiplatform/resources/MR/images/card_create_your_public_address_alpha@3x.png
new file mode 100644
index 0000000000..165e84c64a
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/card_create_your_public_address_alpha@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/card_create_your_public_address_alpha_light@2x.png b/assets/multiplatform/resources/MR/images/card_create_your_public_address_alpha_light@2x.png
new file mode 100644
index 0000000000..6f133967da
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/card_create_your_public_address_alpha_light@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/card_create_your_public_address_alpha_light@3x.png b/assets/multiplatform/resources/MR/images/card_create_your_public_address_alpha_light@3x.png
new file mode 100644
index 0000000000..38970844b7
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/card_create_your_public_address_alpha_light@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/card_invite_someone_privately_alpha@2x.png b/assets/multiplatform/resources/MR/images/card_invite_someone_privately_alpha@2x.png
new file mode 100644
index 0000000000..3d54b2c507
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/card_invite_someone_privately_alpha@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/card_invite_someone_privately_alpha@3x.png b/assets/multiplatform/resources/MR/images/card_invite_someone_privately_alpha@3x.png
new file mode 100644
index 0000000000..c0e92a91a2
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/card_invite_someone_privately_alpha@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/card_invite_someone_privately_alpha_light@2x.png b/assets/multiplatform/resources/MR/images/card_invite_someone_privately_alpha_light@2x.png
new file mode 100644
index 0000000000..329fc8d6c4
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/card_invite_someone_privately_alpha_light@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/card_invite_someone_privately_alpha_light@3x.png b/assets/multiplatform/resources/MR/images/card_invite_someone_privately_alpha_light@3x.png
new file mode 100644
index 0000000000..99fb7a45d6
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/card_invite_someone_privately_alpha_light@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/card_let_someone_connect_to_you_alpha@2x.png b/assets/multiplatform/resources/MR/images/card_let_someone_connect_to_you_alpha@2x.png
new file mode 100644
index 0000000000..cc0446d16f
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/card_let_someone_connect_to_you_alpha@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/card_let_someone_connect_to_you_alpha@3x.png b/assets/multiplatform/resources/MR/images/card_let_someone_connect_to_you_alpha@3x.png
new file mode 100644
index 0000000000..8ea447c884
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/card_let_someone_connect_to_you_alpha@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/card_let_someone_connect_to_you_alpha_light@2x.png b/assets/multiplatform/resources/MR/images/card_let_someone_connect_to_you_alpha_light@2x.png
new file mode 100644
index 0000000000..b37a483be1
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/card_let_someone_connect_to_you_alpha_light@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/card_let_someone_connect_to_you_alpha_light@3x.png b/assets/multiplatform/resources/MR/images/card_let_someone_connect_to_you_alpha_light@3x.png
new file mode 100644
index 0000000000..414870fc3a
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/card_let_someone_connect_to_you_alpha_light@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/connect_via_link@2x.png b/assets/multiplatform/resources/MR/images/connect_via_link@2x.png
new file mode 100644
index 0000000000..24be83e066
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/connect_via_link@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/connect_via_link@3x.png b/assets/multiplatform/resources/MR/images/connect_via_link@3x.png
new file mode 100644
index 0000000000..73f118580c
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/connect_via_link@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/connect_via_link_light@2x.png b/assets/multiplatform/resources/MR/images/connect_via_link_light@2x.png
new file mode 100644
index 0000000000..8a2d8e605a
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/connect_via_link_light@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/connect_via_link_light@3x.png b/assets/multiplatform/resources/MR/images/connect_via_link_light@3x.png
new file mode 100644
index 0000000000..b6ee8a4bb6
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/connect_via_link_light@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/connect_via_link_small@2x.png b/assets/multiplatform/resources/MR/images/connect_via_link_small@2x.png
new file mode 100644
index 0000000000..b105e3be3e
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/connect_via_link_small@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/connect_via_link_small@3x.png b/assets/multiplatform/resources/MR/images/connect_via_link_small@3x.png
new file mode 100644
index 0000000000..1e410de4b5
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/connect_via_link_small@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/connect_via_link_small_light@2x.png b/assets/multiplatform/resources/MR/images/connect_via_link_small_light@2x.png
new file mode 100644
index 0000000000..73520c2f68
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/connect_via_link_small_light@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/connect_via_link_small_light@3x.png b/assets/multiplatform/resources/MR/images/connect_via_link_small_light@3x.png
new file mode 100644
index 0000000000..565d44690b
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/connect_via_link_small_light@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/create_group@2x.png b/assets/multiplatform/resources/MR/images/create_group@2x.png
new file mode 100644
index 0000000000..7fa788d8c8
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/create_group@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/create_group@3x.png b/assets/multiplatform/resources/MR/images/create_group@3x.png
new file mode 100644
index 0000000000..cd4bfa45a4
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/create_group@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/create_group_light@2x.png b/assets/multiplatform/resources/MR/images/create_group_light@2x.png
new file mode 100644
index 0000000000..de32b94652
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/create_group_light@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/create_group_light@3x.png b/assets/multiplatform/resources/MR/images/create_group_light@3x.png
new file mode 100644
index 0000000000..a05610cbb9
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/create_group_light@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/intro@2x.png b/assets/multiplatform/resources/MR/images/intro@2x.png
new file mode 100644
index 0000000000..970d68927c
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/intro@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/intro@3x.png b/assets/multiplatform/resources/MR/images/intro@3x.png
new file mode 100644
index 0000000000..cbd56771c7
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/intro@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/intro_light@2x.png b/assets/multiplatform/resources/MR/images/intro_light@2x.png
new file mode 100644
index 0000000000..938a0b1755
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/intro_light@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/intro_light@3x.png b/assets/multiplatform/resources/MR/images/intro_light@3x.png
new file mode 100644
index 0000000000..569c56fd29
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/intro_light@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/network_commitments@2x.png b/assets/multiplatform/resources/MR/images/network_commitments@2x.png
new file mode 100644
index 0000000000..4b58a588d3
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/network_commitments@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/network_commitments@3x.png b/assets/multiplatform/resources/MR/images/network_commitments@3x.png
new file mode 100644
index 0000000000..9b80a623a1
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/network_commitments@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/network_commitments_light@2x.png b/assets/multiplatform/resources/MR/images/network_commitments_light@2x.png
new file mode 100644
index 0000000000..5e07e0afdb
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/network_commitments_light@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/network_commitments_light@3x.png b/assets/multiplatform/resources/MR/images/network_commitments_light@3x.png
new file mode 100644
index 0000000000..aadfa0288d
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/network_commitments_light@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/one_time_link@2x.png b/assets/multiplatform/resources/MR/images/one_time_link@2x.png
new file mode 100644
index 0000000000..8b3ba2f0ee
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/one_time_link@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/one_time_link@3x.png b/assets/multiplatform/resources/MR/images/one_time_link@3x.png
new file mode 100644
index 0000000000..de87789d1b
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/one_time_link@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/one_time_link_light@2x.png b/assets/multiplatform/resources/MR/images/one_time_link_light@2x.png
new file mode 100644
index 0000000000..3b0c02209b
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/one_time_link_light@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/one_time_link_light@3x.png b/assets/multiplatform/resources/MR/images/one_time_link_light@3x.png
new file mode 100644
index 0000000000..87360c3135
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/one_time_link_light@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/one_time_link_small@2x.png b/assets/multiplatform/resources/MR/images/one_time_link_small@2x.png
new file mode 100644
index 0000000000..f9d94cf265
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/one_time_link_small@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/one_time_link_small@3x.png b/assets/multiplatform/resources/MR/images/one_time_link_small@3x.png
new file mode 100644
index 0000000000..2dac7ef638
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/one_time_link_small@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/one_time_link_small_light@2x.png b/assets/multiplatform/resources/MR/images/one_time_link_small_light@2x.png
new file mode 100644
index 0000000000..916bdaa007
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/one_time_link_small_light@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/one_time_link_small_light@3x.png b/assets/multiplatform/resources/MR/images/one_time_link_small_light@3x.png
new file mode 100644
index 0000000000..1ed8194bc9
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/one_time_link_small_light@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/simplex_address@2x.png b/assets/multiplatform/resources/MR/images/simplex_address@2x.png
new file mode 100644
index 0000000000..237c125c62
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/simplex_address@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/simplex_address@3x.png b/assets/multiplatform/resources/MR/images/simplex_address@3x.png
new file mode 100644
index 0000000000..8f5606cbbc
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/simplex_address@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/simplex_address_light@2x.png b/assets/multiplatform/resources/MR/images/simplex_address_light@2x.png
new file mode 100644
index 0000000000..a58ebae39c
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/simplex_address_light@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/simplex_address_light@3x.png b/assets/multiplatform/resources/MR/images/simplex_address_light@3x.png
new file mode 100644
index 0000000000..aae91169ef
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/simplex_address_light@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/simplex_address_small@2x.png b/assets/multiplatform/resources/MR/images/simplex_address_small@2x.png
new file mode 100644
index 0000000000..6dddbbd377
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/simplex_address_small@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/simplex_address_small@3x.png b/assets/multiplatform/resources/MR/images/simplex_address_small@3x.png
new file mode 100644
index 0000000000..45471e9c50
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/simplex_address_small@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/simplex_address_small_light@2x.png b/assets/multiplatform/resources/MR/images/simplex_address_small_light@2x.png
new file mode 100644
index 0000000000..a1cdfc4652
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/simplex_address_small_light@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/simplex_address_small_light@3x.png b/assets/multiplatform/resources/MR/images/simplex_address_small_light@3x.png
new file mode 100644
index 0000000000..f54baf5dc4
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/simplex_address_small_light@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/your_network@2x.png b/assets/multiplatform/resources/MR/images/your_network@2x.png
new file mode 100644
index 0000000000..b7b5d6aa87
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/your_network@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/your_network@3x.png b/assets/multiplatform/resources/MR/images/your_network@3x.png
new file mode 100644
index 0000000000..9ff0e77a86
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/your_network@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/your_network_light@2x.png b/assets/multiplatform/resources/MR/images/your_network_light@2x.png
new file mode 100644
index 0000000000..12031202d8
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/your_network_light@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/your_network_light@3x.png b/assets/multiplatform/resources/MR/images/your_network_light@3x.png
new file mode 100644
index 0000000000..56b7f20c59
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/your_network_light@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/your_profile@2x.png b/assets/multiplatform/resources/MR/images/your_profile@2x.png
new file mode 100644
index 0000000000..81e8e1a6b0
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/your_profile@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/your_profile@3x.png b/assets/multiplatform/resources/MR/images/your_profile@3x.png
new file mode 100644
index 0000000000..01ea5da43c
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/your_profile@3x.png differ
diff --git a/assets/multiplatform/resources/MR/images/your_profile_light@2x.png b/assets/multiplatform/resources/MR/images/your_profile_light@2x.png
new file mode 100644
index 0000000000..91671dadb0
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/your_profile_light@2x.png differ
diff --git a/assets/multiplatform/resources/MR/images/your_profile_light@3x.png b/assets/multiplatform/resources/MR/images/your_profile_light@3x.png
new file mode 100644
index 0000000000..8e1d3fd15e
Binary files /dev/null and b/assets/multiplatform/resources/MR/images/your_profile_light@3x.png differ
diff --git a/scripts/android/build-android-bundle.sh b/scripts/android/build-android-bundle.sh
index 554e64edff..b784da2aad 100755
--- a/scripts/android/build-android-bundle.sh
+++ b/scripts/android/build-android-bundle.sh
@@ -23,5 +23,5 @@ unzip -o "$tmp/libsimplex.zip" -d "$tmp/simplex-chat/apps/multiplatform/common/s
curl -sSf "$libsup" -o "$tmp/libsupport.zip"
unzip -o "$tmp/libsupport.zip" -d "$tmp/simplex-chat/apps/multiplatform/common/src/commonMain/cpp/android/libs/arm64-v8a"
-gradle -p "$tmp/simplex-chat/apps/multiplatform/" clean build
+gradle -p "$tmp/simplex-chat/apps/multiplatform/" -Psimplex.assets.dir=../../assets clean build
cp "$tmp/simplex-chat/apps/multiplatform/android/build/outputs/apk/release/android-release-unsigned.apk" "$PWD/simplex-chat.apk"
diff --git a/scripts/android/build-android.sh b/scripts/android/build-android.sh
index afd13011c9..7edee9c304 100755
--- a/scripts/android/build-android.sh
+++ b/scripts/android/build-android.sh
@@ -67,13 +67,13 @@ checks() {
if ! command -v "$i" > /dev/null 2>&1; then
commands_failed="$i $commands_failed"
else
- gradle_ver_local="$(gradle -v | grep Gradle | awk '{print $2}')"
- gradle_ver_local_compare="$(printf ${gradle_ver_local:-0.0} | awk -F. '{print $1$2}')"
+ gradle_ver_local="$(gradle --version | sed -n 's/^Gradle //p')"
+ gradle_ver_local_compare="$(printf '%s' "$gradle_ver_local" | awk -F. '{print $1"."$2}')"
gradle_ver_remote="$(grep distributionUrl ${folder}/apps/multiplatform/gradle/wrapper/gradle-wrapper.properties)"
gradle_ver_remote="${gradle_ver_remote#*-}"
gradle_ver_remote="${gradle_ver_remote%-*}"
- gradle_ver_remote_compare="$(printf ${gradle_ver_remote} | awk -F. '{print $1$2}')"
-
+ gradle_ver_remote_compare="$(printf '%s' "$gradle_ver_remote" | awk -F. '{print $1"."$2}')"
+
if [ "$gradle_ver_local_compare" != "$gradle_ver_remote_compare" ]; then
commands_failed="$i[installed=${gradle_ver_local},required=${gradle_ver_remote}] $commands_failed"
fi
@@ -134,7 +134,7 @@ build() {
# Build only one arch
sed -i.bak "s/include(.*/include(\"${android_arch}\")/" "$folder/apps/multiplatform/android/build.gradle.kts"
- gradle -p "$folder/apps/multiplatform/" clean :android:assembleRelease
+ gradle -p "$folder/apps/multiplatform/" -Psimplex.assets.dir=../../assets clean :android:assembleRelease
mkdir -p "$android_tmp_folder"
unzip -oqd "$android_tmp_folder" "$android_apk_output"
diff --git a/scripts/ci/build-desktop-mac.sh b/scripts/ci/build-desktop-mac.sh
index 9adea013b4..60161ece4e 100755
--- a/scripts/ci/build-desktop-mac.sh
+++ b/scripts/ci/build-desktop-mac.sh
@@ -16,5 +16,5 @@ security unlock-keychain -p "" /tmp/simplex.keychain
security list-keychains -s `security list-keychains | xargs` /tmp/simplex.keychain
scripts/desktop/build-lib-mac.sh
cd apps/multiplatform
-./gradlew packageDmg
-./gradlew notarizeDmg
+./gradlew -Psimplex.assets.dir=../../assets packageDmg
+./gradlew -Psimplex.assets.dir=../../assets notarizeDmg
diff --git a/scripts/desktop/make-appimage-linux.sh b/scripts/desktop/make-appimage-linux.sh
index c242b63d54..5a974cf69e 100755
--- a/scripts/desktop/make-appimage-linux.sh
+++ b/scripts/desktop/make-appimage-linux.sh
@@ -18,7 +18,7 @@ libcrypto_path=$(ldd common/src/commonMain/cpp/desktop/libs/*/libHSdirect-sqlcip
trap "rm common/src/commonMain/cpp/desktop/libs/*/`basename $libcrypto_path` 2> /dev/null || true" EXIT
cp $libcrypto_path common/src/commonMain/cpp/desktop/libs/*
-./gradlew createDistributable
+./gradlew -Psimplex.assets.dir=../../assets createDistributable
rm common/src/commonMain/cpp/desktop/libs/*/`basename $libcrypto_path`
rm -rf $release_app_dir/AppDir 2>/dev/null
diff --git a/scripts/desktop/make-deb-linux.sh b/scripts/desktop/make-deb-linux.sh
index 3226c22709..d0766d5ebb 100755
--- a/scripts/desktop/make-deb-linux.sh
+++ b/scripts/desktop/make-deb-linux.sh
@@ -4,7 +4,7 @@ ARCH="$(uname -m)"
scripts/desktop/build-lib-linux.sh
cd apps/multiplatform
-./gradlew packageDeb
+./gradlew -Psimplex.assets.dir=../../assets packageDeb
# Workaround for skiko library
#
diff --git a/website/README.md b/website/README.md
index 5a5155a917..560b427136 100644
--- a/website/README.md
+++ b/website/README.md
@@ -2,8 +2,6 @@
## License
-SimpleX Chat website code is licensed under the GNU Affero General Public License version 3 (AGPLv3). See the [LICENSE](../LICENSE) file for details.
+SimpleX Chat website code is licensed under the GNU Affero General Public License version 3 (AGPLv3). See the [LICENSE](./LICENSE) file for details. The SimpleX and SimpleX Chat name, logo, associated branding materials, and graphic assets (illustrations, images, visual designs, etc.) are not covered by this license and are subject to the terms outlined in the [TRADEMARK](../docs/TRADEMARK.md) and [ASSETS_LICENSE](../assets/ASSETS_LICENSE.md) files respectively.
-The SimpleX and SimpleX Chat name, logo, and associated branding materials are not covered by this license and are subject to the terms outlined in the [TRADEMARK](./docs/TRADEMARK.md) file.
-
-Graphic designs, artworks and layouts are not licensed for re-use. If you want to use them in your publications, please ask for permission. Texts can be used as direct quotes, referencing the source.
+If you want to use any graphic assets in your publications, please ask for permission. Texts can be used as direct quotes, referencing the source.