diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c3ef9fa088..6c588f1f7a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,17 +10,25 @@ on: - "!*-fdroid" - "!*-armv7a" pull_request: - paths-ignore: - - "apps/ios" - - "apps/multiplatform" - - "blog" - - "docs" - - "fastlane" - - "images" - - "packages" - - "website" - - "README.md" - - "PRIVACY.md" + paths: + - "src/**" + - "apps/simplex-chat/**" + - "apps/simplex-bot/**" + - "apps/simplex-bot-advanced/**" + - "apps/simplex-broadcast-bot/**" + - "apps/simplex-directory-service/**" + - "tests/**" + - "bots/src/**" + - "simplex-chat.cabal" + - "cabal.project" + - "Dockerfile*" + - "scripts/ci/**" + - "scripts/desktop/**" + - ".github/**" + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ !startsWith(github.ref, 'refs/tags/v') }} # This workflow uses custom actions (prepare-build and prepare-release) defined in: # @@ -369,6 +377,100 @@ jobs: exit 1 fi +# ================================= +# Linux PostgreSQL Library Build +# ================================= + + build-linux-postgres: + name: "ubuntu-22.04-x86_64 (Postgres lib), GHC: ${{ needs.variables.outputs.GHC_VER }}" + needs: [maybe-release, variables] + runs-on: ubuntu-22.04 + if: startsWith(github.ref, 'refs/tags/v') + steps: + - name: Checkout Code + uses: actions/checkout@v3 + + - name: Get UID and GID + id: ids + run: | + echo "uid=$(id -u)" >> $GITHUB_OUTPUT + echo "gid=$(id -g)" >> $GITHUB_OUTPUT + + - name: Free disk space + shell: bash + run: ./scripts/ci/linux_util_free_space.sh + + - name: Restore cached build + uses: actions/cache@v4 + with: + path: | + ~/.cabal/store + dist-newstyle + key: ubuntu-22.04-x86_64-postgres-ghc${{ needs.variables.outputs.GHC_VER }}-${{ hashFiles('cabal.project', 'simplex-chat.cabal') }} + + - name: Set up Docker Buildx + uses: simplex-chat/docker-setup-buildx-action@v3 + + - name: Build and cache Docker image + uses: simplex-chat/docker-build-push-action@v6 + with: + context: . + load: true + file: Dockerfile.build + tags: build/22.04:latest + build-args: | + TAG=22.04 + HASH=sha256:5c8b2c0a6c745bc177669abfaa716b4bc57d58e2ea3882fb5da67f4d59e3dda5 + GHC=${{ needs.variables.outputs.GHC_VER }} + USER_UID=${{ steps.ids.outputs.uid }} + USER_GID=${{ steps.ids.outputs.gid }} + + - name: Start container + shell: bash + run: | + docker run -t -d \ + --name builder \ + -v ~/.cabal:/root/.cabal \ + -v /home/runner/work/_temp:/home/runner/work/_temp \ + -v ${{ github.workspace }}:/project \ + build/22.04:latest + + - name: Prepare cabal.project.local + shell: bash + run: | + echo "ignore-project: False" >> cabal.project.local + echo "package direct-sqlcipher" >> cabal.project.local + echo " flags: +openssl" >> cabal.project.local + + - name: Build postgres library + shell: docker exec -t builder sh -eu {0} + run: | + cabal clean + cabal update + scripts/desktop/build-lib-linux.sh postgres + + - name: Copy libs from container + shell: bash + run: | + ARCH=x86_64 + GHC_VER=${{ needs.variables.outputs.GHC_VER }} + BUILD_DIR=$(echo dist-newstyle/build/${ARCH}-linux/ghc-${GHC_VER}/simplex-chat-*) + mkdir -p postgres-libs + cp ${BUILD_DIR}/build/libsimplex.so postgres-libs/ + cp ${BUILD_DIR}/build/deps/* postgres-libs/ + + - name: Upload postgres libs artifact + uses: actions/upload-artifact@v4 + with: + name: simplex-libs-linux-postgres-x86_64 + path: postgres-libs/ + + - name: Fix permissions for cache + shell: bash + run: | + sudo chmod -R 777 dist-newstyle ~/.cabal + sudo chown -R $(id -u):$(id -g) dist-newstyle ~/.cabal + # ========================= # MacOS Build # ========================= @@ -605,7 +707,7 @@ jobs: release-nodejs-libs: runs-on: ubuntu-latest - needs: [build-linux, build-macos] + needs: [build-linux, build-linux-postgres, build-macos] if: startsWith(github.ref, 'refs/tags/v') && (!cancelled()) steps: - name: Checkout current repository @@ -614,6 +716,13 @@ jobs: - name: Install packages for archiving run: sudo apt install -y msitools gcc-mingw-w64 + - name: Download postgres libs artifact + if: needs.build-linux-postgres.result == 'success' + uses: actions/download-artifact@v4 + with: + name: simplex-libs-linux-postgres-x86_64 + path: ${{ runner.temp }}/postgres-libs + - name: Build archives run: | INIT_DIR='${{ runner.temp }}/artifacts' @@ -670,6 +779,17 @@ jobs: zip -r "${PREFIX}-windows-x86_64.zip" libs mv "${PREFIX}-windows-x86_64.zip" "$RELEASE_DIR" && cd "$INIT_DIR" + # Linux PostgreSQL (only if postgres build succeeded) + # ------------------------------------------------- + POSTGRES_LIBS='${{ runner.temp }}/postgres-libs' + if [ -d "$POSTGRES_LIBS" ]; then + mkdir -p linux-postgres/libs + cp "${POSTGRES_LIBS}"/*.so linux-postgres/libs/ + cd linux-postgres + zip -r "${PREFIX}-linux-x86_64-postgres.zip" libs + mv "${PREFIX}-linux-x86_64-postgres.zip" "$RELEASE_DIR" && cd "$INIT_DIR" + fi + - name: Create release in libs repo and upload artifacts uses: softprops/action-gh-release@v2 with: diff --git a/apps/ios/Shared/Views/Chat/ChatItemView.swift b/apps/ios/Shared/Views/Chat/ChatItemView.swift index d0ff1934ba..1839651daa 100644 --- a/apps/ios/Shared/Views/Chat/ChatItemView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItemView.swift @@ -172,8 +172,8 @@ struct ChatItemContentView: View { case .rcvBlocked: deletedItemView() case let .sndDirectE2EEInfo(e2eeInfo): CIEventView(eventText: directE2EEInfoText(e2eeInfo)) case let .rcvDirectE2EEInfo(e2eeInfo): CIEventView(eventText: directE2EEInfoText(e2eeInfo)) - case .sndGroupE2EEInfo: CIEventView(eventText: e2eeInfoNoPQText()) - case .rcvGroupE2EEInfo: CIEventView(eventText: e2eeInfoNoPQText()) + case let .sndGroupE2EEInfo(e2eeInfo): CIEventView(eventText: groupE2EEInfoText(e2eeInfo)) + case let .rcvGroupE2EEInfo(e2eeInfo): CIEventView(eventText: groupE2EEInfoText(e2eeInfo)) case .chatBanner: EmptyView() case let .invalidJSON(json): CIInvalidJSONView(json: json) } @@ -257,6 +257,12 @@ struct ChatItemContentView: View { e2eeInfoText("Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.") } + private func groupE2EEInfoText(_ info: E2EEInfo) -> Text { + info.public == true + ? e2eeInfoText("Messages in this channel are **not end-to-end encrypted**. Chat relays can see these messages.") + : e2eeInfoNoPQText() + } + private func e2eeInfoText(_ s: LocalizedStringKey) -> Text { Text(s) .font(.caption) diff --git a/apps/ios/Shared/Views/Chat/ComposeMessage/ComposeView.swift b/apps/ios/Shared/Views/Chat/ComposeMessage/ComposeView.swift index fd47ddfacb..334abd76ee 100644 --- a/apps/ios/Shared/Views/Chat/ComposeMessage/ComposeView.swift +++ b/apps/ios/Shared/Views/Chat/ComposeMessage/ComposeView.swift @@ -515,7 +515,7 @@ struct ComposeView: View { sendMessageView( disableSendButton, placeholder: chat.chatInfo.groupInfo.map { gi in - gi.useRelays && gi.membership.memberRole >= .owner + gi.useRelays && gi.membership.memberRole >= .owner && chat.chatInfo.groupChatScope() == nil ? NSLocalizedString("Broadcast", comment: "compose placeholder for channel owner") : nil } ?? nil @@ -1659,7 +1659,7 @@ struct ComposeView: View { type: chat.chatInfo.chatType, id: chat.chatInfo.apiId, scope: chat.chatInfo.groupChatScope(), - sendAsGroup: chat.chatInfo.groupInfo.map { $0.useRelays && $0.membership.memberRole >= .owner } ?? false, + sendAsGroup: chat.chatInfo.sendAsGroup, live: live, ttl: ttl, composedMessages: msgs diff --git a/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift b/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift index 9279c53c83..21685fccd1 100644 --- a/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift +++ b/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift @@ -103,6 +103,10 @@ struct GroupChatInfoView: View { } } + let showUserSupportChat = groupInfo.membership.memberActive + && ((groupInfo.fullGroupPreferences.support.on && groupInfo.membership.memberRole < .moderator) + || groupInfo.membership.supportChat != nil) + if groupInfo.useRelays { Section { // TODO [relays] allow other owners to manage channel link (requires protocol changes to share link ownership) @@ -124,6 +128,12 @@ struct GroupChatInfoView: View { if groupInfo.isOwner || members.contains(where: { $0.wrapped.memberRole >= .owner }) { channelMembersButton() } + if groupInfo.membership.memberRole >= .moderator { + memberSupportButton() + } + if showUserSupportChat { + UserSupportChatNavLink(chat: chat, groupInfo: groupInfo, scrollToItemId: $scrollToItemId) + } } footer: { if !groupInfo.isOwner && groupInfo.groupProfile.publicGroup?.groupLink != nil { Text("You can share a link or a QR code - anybody will be able to join the channel.") @@ -141,8 +151,7 @@ struct GroupChatInfoView: View { if groupInfo.canModerate { GroupReportsChatNavLink(chat: chat, groupInfo: groupInfo, scrollToItemId: $scrollToItemId) } - if groupInfo.membership.memberActive - && (groupInfo.membership.memberRole < .moderator || groupInfo.membership.supportChat != nil) { + if showUserSupportChat { UserSupportChatNavLink(chat: chat, groupInfo: groupInfo, scrollToItemId: $scrollToItemId) } } header: { diff --git a/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift b/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift index af7054db01..4dff86f7bb 100644 --- a/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift +++ b/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift @@ -121,13 +121,15 @@ struct GroupMemberInfoView: View { } if connectionLoaded { + let showMemberSupportChat = !openedFromSupportChat + && groupInfo.membership.memberRole >= .moderator + && member.memberRole != .relay + && ((groupInfo.fullGroupPreferences.support.on && member.memberRole < .moderator) + || member.supportChat != nil) if member.memberActive { Section { - if !openedFromSupportChat - && groupInfo.membership.memberRole >= .moderator - && member.memberRole != .relay - && (member.memberRole < .moderator || member.supportChat != nil) { + if showMemberSupportChat { MemberInfoSupportChatNavLink(groupInfo: groupInfo, member: groupMember, scrollToItemId: $scrollToItemId) } if let code = connectionCode, @@ -142,6 +144,10 @@ struct GroupMemberInfoView: View { // synchronizeConnectionButtonForce() // } } + } else if groupInfo.useRelays && member.memberCurrent && showMemberSupportChat { + Section { + MemberInfoSupportChatNavLink(groupInfo: groupInfo, member: groupMember, scrollToItemId: $scrollToItemId) + } } if let contactLink = member.contactLink { diff --git a/apps/ios/Shared/Views/Chat/Group/GroupPreferencesView.swift b/apps/ios/Shared/Views/Chat/Group/GroupPreferencesView.swift index 84e852f5a3..cc2feef706 100644 --- a/apps/ios/Shared/Views/Chat/Group/GroupPreferencesView.swift +++ b/apps/ios/Shared/Views/Chat/Group/GroupPreferencesView.swift @@ -46,13 +46,30 @@ struct GroupPreferencesView: View { featureSection(.voice, $preferences.voice.enable, $preferences.voice.role) featureSection(.files, $preferences.files.enable, $preferences.files.role) featureSection(.simplexLinks, $preferences.simplexLinks.enable, $preferences.simplexLinks.role) - featureSection(.reports, $preferences.reports.enable) + featureSection(.reports, $preferences.reports.enable, disabled: true) // enable reports in 7.0 once directory support added featureSection(.history, $preferences.history.enable) + featureSection(.support, $preferences.support.enable, disabled: true) } else { featureSection(.timedMessages, $preferences.timedMessages.enable) featureSection(.fullDelete, $preferences.fullDelete.enable) featureSection(.reactions, $preferences.reactions.enable) featureSection(.history, $preferences.history.enable) + let supportNotice = NSLocalizedString("Chats with admins in public channels have no E2E encryption - use only with trusted chat relays.", comment: "alert message") + featureSection(.support, $preferences.support.enable, notice: supportNotice) + .onChange(of: preferences.support.enable) { enable in + if enable == .on { + showAlert( + NSLocalizedString("Enable chats with admins?", comment: "alert title"), + message: supportNotice, + actions: {[ + UIAlertAction(title: NSLocalizedString("Enable", comment: "alert button"), style: .destructive) { _ in }, + UIAlertAction(title: NSLocalizedString("Cancel", comment: "alert button"), style: .cancel) { _ in + preferences.support.enable = .off + } + ]} + ) + } + } } if groupInfo.isOwner { @@ -92,7 +109,7 @@ struct GroupPreferencesView: View { } } - private func featureSection(_ feature: GroupFeature, _ enableFeature: Binding, _ enableForRole: Binding? = nil) -> some View { + private func featureSection(_ feature: GroupFeature, _ enableFeature: Binding, _ enableForRole: Binding? = nil, disabled: Bool = false, notice: String? = nil) -> some View { Section { let color: Color = enableFeature.wrappedValue == .on ? .green : theme.colors.secondary let icon = enableFeature.wrappedValue == .on ? feature.iconFilled : feature.icon @@ -103,9 +120,9 @@ struct GroupPreferencesView: View { set: { on, _ in enableFeature.wrappedValue = on ? .on : .off } ) settingsRow(icon, color: color) { - Toggle(feature.text, isOn: enable) + Toggle(feature.text(isChannel: groupInfo.isChannel), isOn: enable) } - .disabled(feature == .reports) // remove in 6.4 + .disabled(disabled) if timedOn { DropdownCustomTimePicker( selection: $preferences.timedMessages.ttl, @@ -126,7 +143,7 @@ struct GroupPreferencesView: View { } } else { settingsRow(icon, color: color) { - infoRow(Text(feature.text), enableFeature.wrappedValue.text) + infoRow(Text(feature.text(isChannel: groupInfo.isChannel)), enableFeature.wrappedValue.text) } if timedOn { infoRow("Delete after", timeText(preferences.timedMessages.ttl)) @@ -144,8 +161,11 @@ struct GroupPreferencesView: View { } } } footer: { - Text(feature.enableDescription(enableFeature.wrappedValue, groupInfo.isOwner)) - .foregroundColor(theme.colors.secondary) + VStack(alignment: .leading) { + Text(feature.enableDescription(enableFeature.wrappedValue, groupInfo.isOwner, isChannel: groupInfo.isChannel)) + if let notice { Text(notice) } + } + .foregroundColor(theme.colors.secondary) } .onChange(of: enableFeature.wrappedValue) { enabled in if case .off = enabled { diff --git a/apps/ios/Shared/Views/Chat/Group/MemberSupportView.swift b/apps/ios/Shared/Views/Chat/Group/MemberSupportView.swift index 3dc27c08f6..880933985c 100644 --- a/apps/ios/Shared/Views/Chat/Group/MemberSupportView.swift +++ b/apps/ios/Shared/Views/Chat/Group/MemberSupportView.swift @@ -45,7 +45,7 @@ struct MemberSupportView: View { : membersWithChats.filter { $0.wrapped.localAliasAndFullName.localizedLowercase.contains(s) } if membersWithChats.isEmpty { - Text("No chats with members") + Text(groupInfo.fullGroupPreferences.support.on ? "No chats with members" : "Chats with members are disabled") .foregroundColor(.secondary) } else { List { diff --git a/apps/ios/Shared/Views/ChatList/ChatListView.swift b/apps/ios/Shared/Views/ChatList/ChatListView.swift index 967fedf293..3080a2f403 100644 --- a/apps/ios/Shared/Views/ChatList/ChatListView.swift +++ b/apps/ios/Shared/Views/ChatList/ChatListView.swift @@ -839,11 +839,11 @@ struct TagsView: View { nil } let active = tag == selectedPresetTag - let (icon, text) = presetTagLabel(tag: tag, active: active) + let (icon, menuIcon, text) = presetTagLabel(tag: tag, active: active) let color: Color = active ? .accentColor : .secondary HStack(spacing: 4) { - Image(systemName: icon) + Image(systemName: menuIcon ?? icon) .foregroundColor(color) ZStack { Text(text).fontWeight(.semibold).foregroundColor(.clear) @@ -886,9 +886,9 @@ struct TagsView: View { Button { setActiveFilter(filter: .presetTag(tag)) } label: { - let (systemName, text) = presetTagLabel(tag: tag, active: tag == selectedPresetTag) + let (icon, _, text) = presetTagLabel(tag: tag, active: tag == selectedPresetTag) HStack { - Image(systemName: systemName) + Image(systemName: icon) Text(text) } } @@ -896,8 +896,8 @@ struct TagsView: View { } } label: { if let tag = selectedPresetTag, tag.сollapse { - let (systemName, _) = presetTagLabel(tag: tag, active: true) - Image(systemName: systemName) + let (icon, menuIcon, _) = presetTagLabel(tag: tag, active: true) + Image(systemName: menuIcon ?? icon) .foregroundColor(.accentColor) } else { Image(systemName: "list.bullet") @@ -907,15 +907,15 @@ struct TagsView: View { .frame(minWidth: 28) } - private func presetTagLabel(tag: PresetTag, active: Bool) -> (String, LocalizedStringKey) { + private func presetTagLabel(tag: PresetTag, active: Bool) -> (item: String, menu: String?, label: LocalizedStringKey) { switch tag { - case .groupReports: (active ? "flag.fill" : "flag", "Reports") - case .favorites: (active ? "star.fill" : "star", "Favorites") - case .contacts: (active ? "person.fill" : "person", "Contacts") - case .groups: (active ? "person.2.fill" : "person.2", "Groups") - case .channels: (active ? "antenna.radiowaves.left.and.right.circle.fill" : "antenna.radiowaves.left.and.right.circle", "Channels") - case .business: (active ? "briefcase.fill" : "briefcase", "Businesses") - case .notes: (active ? "folder.fill" : "folder", "Notes") + case .groupReports: (item: active ? "flag.fill" : "flag", menu: nil, label: "Reports") + case .favorites: (item: active ? "star.fill" : "star", menu: nil, label: "Favorites") + case .contacts: (item: active ? "person.fill" : "person", menu: nil, label: "Contacts") + case .groups: (item: active ? "person.2.fill" : "person.2", menu: nil, label: "Groups") + case .channels: (item: active ? "antenna.radiowaves.left.and.right.circle.fill" : "antenna.radiowaves.left.and.right", menu: "antenna.radiowaves.left.and.right", label: "Channels") + case .business: (item: active ? "briefcase.fill" : "briefcase", menu: nil, label: "Businesses") + case .notes: (item: active ? "folder.fill" : "folder", menu: nil, label: "Notes") } } diff --git a/apps/ios/Shared/Views/Helpers/ShareSheet.swift b/apps/ios/Shared/Views/Helpers/ShareSheet.swift index 8b982ec0b7..9f2fc833ba 100644 --- a/apps/ios/Shared/Views/Helpers/ShareSheet.swift +++ b/apps/ios/Shared/Views/Helpers/ShareSheet.swift @@ -86,6 +86,40 @@ func showSheet( } } +func openExternalLink(_ url: URL) { + let s = url.absoluteString + if s.starts(with: "https://simplex.chat/contact#") || (s.starts(with: "https://smp") && s.contains(".simplex.im/a#")) { + ChatModel.shared.appOpenUrl = url + } else { + showAlert( + title: NSLocalizedString("Open external link?", comment: "alert title"), + message: s, + buttonTitle: NSLocalizedString("Open", comment: "alert button"), + buttonAction: { UIApplication.shared.open(url) }, + cancelButton: true + ) + } +} + +struct ExternalLink: View { + let destination: URL + let label: Label + + init(destination: URL, @ViewBuilder label: () -> Label) { + self.destination = destination + self.label = label() + } + + init(_ titleKey: LocalizedStringKey, destination: URL) where Label == Text { + self.destination = destination + self.label = Text(titleKey) + } + + var body: some View { + Button { openExternalLink(destination) } label: { label } + } +} + let okAlertAction = UIAlertAction(title: NSLocalizedString("Ok", comment: "alert button"), style: .default) let cancelAlertAction = UIAlertAction(title: NSLocalizedString("Cancel", comment: "alert button"), style: .cancel) diff --git a/apps/ios/Shared/Views/NewChat/AddChannelView.swift b/apps/ios/Shared/Views/NewChat/AddChannelView.swift index 4e9a42971c..eae690f5d5 100644 --- a/apps/ios/Shared/Views/NewChat/AddChannelView.swift +++ b/apps/ios/Shared/Views/NewChat/AddChannelView.swift @@ -161,7 +161,10 @@ struct AddChannelView: View { private func createChannel() { focusDisplayName = false profile.displayName = profile.displayName.trimmingCharacters(in: .whitespaces) - profile.groupPreferences = GroupPreferences(history: GroupPreference(enable: .on)) + profile.groupPreferences = GroupPreferences( + history: GroupPreference(enable: .on), + support: GroupPreference(enable: .off) + ) creationInProgress = true Task { do { diff --git a/apps/ios/Shared/Views/NewChat/AddContactLearnMore.swift b/apps/ios/Shared/Views/NewChat/AddContactLearnMore.swift index 3a64a955c5..6add190b88 100644 --- a/apps/ios/Shared/Views/NewChat/AddContactLearnMore.swift +++ b/apps/ios/Shared/Views/NewChat/AddContactLearnMore.swift @@ -26,7 +26,7 @@ struct AddContactLearnMore: View { VStack(alignment: .leading, spacing: 18) { Text("To connect, your contact can scan QR code or use the link in the app.") Text("If you can't meet in person, show QR code in a video call, or share the link.") - Text("Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends).") + ExternalLink("Read more in User Guide.", destination: URL(string: "https://simplex.chat/docs/guide/readme.html#connect-to-friends")!) } .frame(maxWidth: .infinity, alignment: .leading) .listRowBackground(Color.clear) diff --git a/apps/ios/Shared/Views/NewChat/NewChatView.swift b/apps/ios/Shared/Views/NewChat/NewChatView.swift index fab8f8a143..9bcc326a66 100644 --- a/apps/ios/Shared/Views/NewChat/NewChatView.swift +++ b/apps/ios/Shared/Views/NewChat/NewChatView.swift @@ -338,14 +338,6 @@ private struct InviteView: View { HStack(spacing: 8) { let link = connLinkInvitation.simplexChatUri(short: showShortLink) linkTextView(link) - Button { - UIPasteboard.general.string = link - setInvitationUsed() - } label: { - Image(systemName: "doc.on.doc") - .padding(.top, -7) - .padding(.horizontal, 8) - } Button { showShareSheet(items: [link]) setInvitationUsed() diff --git a/apps/ios/Shared/Views/NewChat/OnboardingCards.swift b/apps/ios/Shared/Views/NewChat/OnboardingCards.swift index 913fdf5577..76bba9447e 100644 --- a/apps/ios/Shared/Views/NewChat/OnboardingCards.swift +++ b/apps/ios/Shared/Views/NewChat/OnboardingCards.swift @@ -23,17 +23,19 @@ struct OnboardingCardView: View { let action: () -> Void static let lightStops: [Gradient.Stop] = [ - .init(color: Color(red: 0.824, green: 0.910, blue: 1.0), location: 0.0), - .init(color: Color(red: 0.800, green: 0.914, blue: 1.0), location: 0.5), - .init(color: Color(red: 0.875, green: 1.0, blue: 1.0), location: 0.9), - .init(color: Color(red: 1.0, green: 0.988, blue: 0.918), location: 1.0) + .init(color: oklch(0.9219, 0.0431, 249.4), location: 0.0), + .init(color: oklch(0.9198, 0.0471, 240.7), location: 0.5), + .init(color: oklch(0.9772, 0.0358, 196.6), location: 0.9), + .init(color: oklch(0.9829, 0.0104, 70.0), location: 0.95), + .init(color: oklch(0.9886, 0.0272, 99.1), location: 1.0) ] static let darkStops: [Gradient.Stop] = [ - .init(color: Color(red: 0.016, green: 0.039, blue: 0.141), location: 0.4), - .init(color: Color(red: 0.220, green: 0.329, blue: 0.671), location: 0.72), - .init(color: Color(red: 0.659, green: 0.929, blue: 0.953), location: 0.9), - .init(color: Color(red: 1.0, green: 0.965, blue: 0.878), location: 1.0) + .init(color: oklch(0.1578, 0.0609, 267.3), location: 0.4), + .init(color: oklch(0.4729, 0.1574, 267.3), location: 0.72), + .init(color: oklch(0.9024, 0.0760, 202.8), location: 0.9), + .init(color: oklch(0.9384, 0.0354, 65.0), location: 0.95), + .init(color: oklch(0.9744, 0.0370, 88.4), location: 1.0) ] static let gradientAngle: Double = 80.0 * .pi / 180.0 diff --git a/apps/ios/Shared/Views/Onboarding/HowItWorks.swift b/apps/ios/Shared/Views/Onboarding/HowItWorks.swift index 263b55a42d..c881146ef5 100644 --- a/apps/ios/Shared/Views/Onboarding/HowItWorks.swift +++ b/apps/ios/Shared/Views/Onboarding/HowItWorks.swift @@ -28,7 +28,7 @@ struct HowItWorks: View { Text("Only client devices store user profiles, contacts, groups, and messages.") Text("All messages and files are sent **end-to-end encrypted**, with post-quantum security in direct messages.") if !onboarding { - Text("Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme).") + ExternalLink("Read more in our GitHub repository.", destination: URL(string: "https://github.com/simplex-chat/simplex-chat#readme")!) } } .padding(.bottom) diff --git a/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift b/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift index b7249f42ea..8572022ceb 100644 --- a/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift +++ b/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift @@ -791,7 +791,7 @@ struct WhatsNewView: View { } } if let post = v.post { - Link(destination: post) { + ExternalLink(destination: post) { HStack { Text("Read more") Image(systemName: "arrow.up.right.circle") diff --git a/apps/ios/Shared/Views/UserSettings/DeveloperView.swift b/apps/ios/Shared/Views/UserSettings/DeveloperView.swift index 184b03e679..a504b00116 100644 --- a/apps/ios/Shared/Views/UserSettings/DeveloperView.swift +++ b/apps/ios/Shared/Views/UserSettings/DeveloperView.swift @@ -22,14 +22,16 @@ struct DeveloperView: View { VStack { List { Section { - ZStack(alignment: .leading) { - Image(colorScheme == .dark ? "github_light" : "github") - .resizable() - .frame(width: 24, height: 24) - .opacity(0.5) - .colorMultiply(theme.colors.secondary) - Text("Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat)") - .padding(.leading, 36) + ExternalLink(destination: URL(string: "https://github.com/simplex-chat/simplex-chat")!) { + ZStack(alignment: .leading) { + Image(colorScheme == .dark ? "github_light" : "github") + .resizable() + .frame(width: 24, height: 24) + .opacity(0.5) + .colorMultiply(theme.colors.secondary) + Text("Install SimpleX Chat for terminal") + .padding(.leading, 36) + } } NavigationLink { TerminalView() diff --git a/apps/ios/Shared/Views/UserSettings/IncognitoHelp.swift b/apps/ios/Shared/Views/UserSettings/IncognitoHelp.swift index d9862aaac8..f74516c2c8 100644 --- a/apps/ios/Shared/Views/UserSettings/IncognitoHelp.swift +++ b/apps/ios/Shared/Views/UserSettings/IncognitoHelp.swift @@ -23,7 +23,7 @@ struct IncognitoHelp: View { Text("Incognito mode protects your privacy by using a new random profile for each contact.") Text("It allows having many anonymous connections without any shared data between them in a single chat profile.") Text("When you share an incognito profile with somebody, this profile will be used for the groups they invite you to.") - Text("Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode).") + ExternalLink("Read more in User Guide.", destination: URL(string: "https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode")!) } .listRowBackground(Color.clear) .listRowInsets(EdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 0)) diff --git a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/ConditionsWebView.swift b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/ConditionsWebView.swift index 6f76e69182..5abbbf8d2e 100644 --- a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/ConditionsWebView.swift +++ b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/ConditionsWebView.swift @@ -71,11 +71,7 @@ struct ConditionsWebView: UIViewRepresentable { switch navigationAction.navigationType { case .linkActivated: decisionHandler(.cancel) - if url.absoluteString.starts(with: "https://simplex.chat/contact#") { - ChatModel.shared.appOpenUrl = url - } else { - UIApplication.shared.open(url) - } + openExternalLink(url) default: decisionHandler(.allow) } diff --git a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/NetworkAndServers.swift b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/NetworkAndServers.swift index 74b7374654..c1f2470669 100644 --- a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/NetworkAndServers.swift +++ b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/NetworkAndServers.swift @@ -332,7 +332,7 @@ struct UsageConditionsView: View { @ViewBuilder private func conditionsDiffButton(_ font: Font? = nil) -> some View { let commit = ChatModel.shared.conditions.currentConditions.conditionsCommit if let commitUrl = URL(string: "https://github.com/simplex-chat/simplex-chat/commit/\(commit)") { - Link(destination: commitUrl) { + ExternalLink(destination: commitUrl) { HStack { Text("Open changes") Image(systemName: "arrow.up.right.circle") diff --git a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/OperatorView.swift b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/OperatorView.swift index 9d068d3b26..26f24f2f0f 100644 --- a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/OperatorView.swift +++ b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/OperatorView.swift @@ -364,11 +364,15 @@ struct OperatorInfoView: View { Text(d) } } - Link(serverOperator.info.website.absoluteString, destination: serverOperator.info.website) + ExternalLink(destination: serverOperator.info.website) { + Text(serverOperator.info.website.absoluteString) + } } if let selfhost = serverOperator.info.selfhost { Section { - Link(selfhost.text, destination: selfhost.link) + ExternalLink(destination: selfhost.link) { + Text(selfhost.text) + } } } } @@ -432,7 +436,7 @@ struct ConditionsTextView: View { private func conditionsLinkView(_ conditionsLink: String) -> some View { VStack(alignment: .leading, spacing: 20) { Text("Current conditions text couldn't be loaded, you can review conditions via this link:") - Link(destination: URL(string: conditionsLink)!) { + ExternalLink(destination: URL(string: conditionsLink)!) { Text(conditionsLink) .multilineTextAlignment(.leading) } @@ -591,11 +595,11 @@ func conditionsLinkButton() -> some View { let commit = ChatModel.shared.conditions.currentConditions.conditionsCommit let mdUrl = URL(string: "https://github.com/simplex-chat/simplex-chat/blob/\(commit)/PRIVACY.md") ?? conditionsURL return Menu { - Link(destination: mdUrl) { + ExternalLink(destination: mdUrl) { Label("Open conditions", systemImage: "doc") } if let commitUrl = URL(string: "https://github.com/simplex-chat/simplex-chat/commit/\(commit)") { - Link(destination: commitUrl) { + ExternalLink(destination: commitUrl) { Label("Open changes", systemImage: "ellipsis") } } diff --git a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/ProtocolServersView.swift b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/ProtocolServersView.swift index e57df4c5dc..b059be7cb0 100644 --- a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/ProtocolServersView.swift +++ b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/ProtocolServersView.swift @@ -223,9 +223,7 @@ struct YourServersView: View { func howToButton() -> some View { Button { - DispatchQueue.main.async { - UIApplication.shared.open(howToUrl) - } + openExternalLink(howToUrl) } label: { HStack { Text("How to use your servers") diff --git a/apps/ios/Shared/Views/UserSettings/RTCServers.swift b/apps/ios/Shared/Views/UserSettings/RTCServers.swift index ef891738cc..b045a8ce55 100644 --- a/apps/ios/Shared/Views/UserSettings/RTCServers.swift +++ b/apps/ios/Shared/Views/UserSettings/RTCServers.swift @@ -139,9 +139,7 @@ struct RTCServers: View { func howToButton() -> some View { Button { - DispatchQueue.main.async { - UIApplication.shared.open(howToUrl) - } + openExternalLink(howToUrl) } label: { HStack{ Text("How to") diff --git a/apps/ios/Shared/Views/UserSettings/SettingsView.swift b/apps/ios/Shared/Views/UserSettings/SettingsView.swift index 65e34a0ac5..a903329454 100644 --- a/apps/ios/Shared/Views/UserSettings/SettingsView.swift +++ b/apps/ios/Shared/Views/UserSettings/SettingsView.swift @@ -11,7 +11,7 @@ import SwiftUI import StoreKit import SimpleXChat -let simplexTeamURL = URL(string: "simplex:/contact#/?v=1&smp=smp%3A%2F%2FPQUV2eL0t7OStZOoAsPEV2QYWt4-xilbakvGUGOItUo%3D%40smp6.simplex.im%2FK1rslx-m5bpXVIdMZg9NLUZ_8JBm8xTt%23MCowBQYDK2VuAyEALDeVe-sG8mRY22LsXlPgiwTNs9dbiLrNuA7f3ZMAJ2w%3D")! +let simplexTeamURL = URL(string: "simplex:/a#lrdvu2d8A1GumSmoKb2krQmtKhWXq-tyGpHuM7aMwsw?h=smp6.simplex.im")! let appVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String @@ -399,7 +399,9 @@ struct SettingsView: View { } Section(header: Text("Support SimpleX Chat").foregroundColor(theme.colors.secondary)) { - settingsRow("keyboard", color: theme.colors.secondary) { Text("[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)") } + settingsRow("keyboard", color: theme.colors.secondary) { + ExternalLink("Contribute", destination: URL(string: "https://github.com/simplex-chat/simplex-chat#contribute")!) + } settingsRow("star", color: theme.colors.secondary) { Button("Rate the app") { if let scene = sceneDelegate.windowScene { @@ -407,14 +409,16 @@ struct SettingsView: View { } } } - ZStack(alignment: .leading) { - Image(colorScheme == .dark ? "github_light" : "github") - .resizable() - .frame(width: 24, height: 24) - .opacity(0.5) - .colorMultiply(theme.colors.secondary) - Text("[Star on GitHub](https://github.com/simplex-chat/simplex-chat)") - .padding(.leading, indent) + ExternalLink(destination: URL(string: "https://github.com/simplex-chat/simplex-chat")!) { + ZStack(alignment: .leading) { + Image(colorScheme == .dark ? "github_light" : "github") + .resizable() + .frame(width: 24, height: 24) + .opacity(0.5) + .colorMultiply(theme.colors.secondary) + Text("Star on GitHub") + .padding(.leading, indent) + } } } diff --git a/apps/ios/Shared/Views/UserSettings/UserAddressLearnMore.swift b/apps/ios/Shared/Views/UserSettings/UserAddressLearnMore.swift index 6c1ea8deb2..ac6ae05984 100644 --- a/apps/ios/Shared/Views/UserSettings/UserAddressLearnMore.swift +++ b/apps/ios/Shared/Views/UserSettings/UserAddressLearnMore.swift @@ -31,7 +31,7 @@ struct UserAddressLearnMore: View { .padding(.top) Text("SimpleX address and 1-time links are safe to share via any messenger.") Text("To protect against your link being replaced, you can compare contact security codes.") - Text("Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses).") + ExternalLink("Read more in User Guide.", destination: URL(string: "https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses")!) .padding(.top) } diff --git a/apps/ios/Shared/Views/UserSettings/UserAddressView.swift b/apps/ios/Shared/Views/UserSettings/UserAddressView.swift index 4df58f8b0c..e22042fa24 100644 --- a/apps/ios/Shared/Views/UserSettings/UserAddressView.swift +++ b/apps/ios/Shared/Views/UserSettings/UserAddressView.swift @@ -215,11 +215,6 @@ struct UserAddressView: View { HStack(spacing: 8) { let link = userAddress.connLinkContact.simplexChatUri(short: showShortLink) linkTextView(link) - Button { UIPasteboard.general.string = link } label: { - Image(systemName: "doc.on.doc") - .padding(.top, -7) - .padding(.horizontal, 8) - } Button { showShareSheet(items: [link]) } label: { Image(systemName: "square.and.arrow.up") .padding(.top, -7) 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 3cf65c8b54..c8c564ada7 100644 --- a/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff +++ b/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff @@ -185,9 +185,20 @@ %d месеца time interval - - %d relays - channel relay bar + + %d relays failed + channel relay bar +channel subscriber relay bar + + + %d relays not active + channel relay bar +channel subscriber relay bar + + + %d relays removed + channel relay bar +channel subscriber relay bar %d sec @@ -222,10 +233,18 @@ channel creation progress channel relay bar progress + + %1$d/%2$d relays active, %3$d errors + channel relay bar + %1$d/%2$d relays active, %3$d failed channel creation progress with errors -channel relay bar progress with errors +channel relay bar + + + %1$d/%2$d relays active, %3$d removed + channel relay bar %1$d/%2$d relays connected @@ -233,7 +252,15 @@ channel relay bar progress with errors %1$d/%2$d relays connected, %3$d errors - channel subscriber relay bar progress with errors + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d failed + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d removed + channel subscriber relay bar %lld @@ -349,11 +376,19 @@ channel relay bar progress with errors %u пропуснати съобщения. No comment provided by engineer. + + (from owner) + chat link info line + (new) (ново) No comment provided by engineer. + + (signed) + chat link info line + (this device v%@) (това устройство v%@) @@ -446,6 +481,12 @@ channel relay bar progress with errors - и още! No comment provided by engineer. + + - opt-in to send link previews. +- prevent hyperlink phishing. +- remove link tracking. + No comment provided by engineer. + - optionally notify deleted contacts. - profile names with spaces. @@ -544,6 +585,10 @@ time interval Още няколко неща No comment provided by engineer. + + A link for one person to connect + No comment provided by engineer. + A new contact Нов контакт @@ -670,9 +715,8 @@ swipe action Активни връзки No comment provided by engineer. - - Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts. - Добавете адрес към вашия профил, така че вашите контакти да могат да го споделят с други хора. Актуализацията на профила ще бъде изпратена до вашите контакти. + + Add address to your profile, so that your SimpleX contacts can share it with other people. Profile update will be sent to your SimpleX contacts. No comment provided by engineer. @@ -740,6 +784,10 @@ swipe action Добавени сървъри за съобщения No comment provided by engineer. + + Adding relays will be supported later. + No comment provided by engineer. + Additional accent Допълнителен акцент @@ -859,6 +907,14 @@ swipe action Всички профили profile dropdown + + All relays failed + No comment provided by engineer. + + + All relays removed + No comment provided by engineer. + All reports will be archived for you. Всички доклади за нарушения ще бъдат архивирани за вас. @@ -919,6 +975,10 @@ swipe action Позволи необратимо изтриване на съобщение само ако вашият контакт го рарешава. (24 часа) No comment provided by engineer. + + Allow members to chat with admins. + No comment provided by engineer. + Allow message reactions only if your contact allows them. Позволи реакции на съобщения само ако вашият контакт ги разрешава. @@ -934,6 +994,10 @@ swipe action Позволи изпращането на лични съобщения до членовете. No comment provided by engineer. + + Allow sending direct messages to subscribers. + No comment provided by engineer. + Allow sending disappearing messages. Разреши изпращането на изчезващи съобщения. @@ -944,6 +1008,10 @@ swipe action Позволи споделяне No comment provided by engineer. + + Allow subscribers to chat with admins. + No comment provided by engineer. + Allow to irreversibly delete sent messages. (24 hours) Позволи необратимо изтриване на изпратените съобщения. (24 часа) @@ -1419,7 +1487,7 @@ swipe action Business address Бизнес адрес - No comment provided by engineer. + chat link info line Business chats @@ -1610,12 +1678,21 @@ set passcode view Channel full name (optional) No comment provided by engineer. + + Channel has no active relays. Please try to join later. + alert message +alert subtitle + Channel image No comment provided by engineer. Channel link + chat link info line + + + Channel preferences No comment provided by engineer. @@ -1630,6 +1707,10 @@ set passcode view Channel profile was changed. If you save it, the updated profile will be sent to channel subscribers. alert message + + Channel temporarily unavailable + alert title + Channel will be deleted for all subscribers - this cannot be undone! No comment provided by engineer. @@ -1642,6 +1723,10 @@ set passcode view Channel will start working with %1$d of %2$d relays. Proceed? alert message + + Channels + No comment provided by engineer. + Chat Чат @@ -1761,7 +1846,8 @@ set passcode view Chat with admins Чат с администраторите - chat toolbar + chat feature +chat toolbar Chat with member @@ -1778,11 +1864,23 @@ set passcode view Чатове No comment provided by engineer. + + Chats with admins are prohibited. + No comment provided by engineer. + + + Chats with admins in public channels have no E2E encryption - use only with trusted chat relays. + alert message + Chats with members Чатове с членовете No comment provided by engineer. + + Chats with members are disabled + No comment provided by engineer. + Check messages every 20 min. Проверявай за съобщенията на всеки 20 минути. @@ -2060,6 +2158,10 @@ This is your own one-time link! Свърване чрез линк new chat sheet title + + Connect via link or QR code + No comment provided by engineer. + Connect via one-time link Свързване чрез еднократен линк за връзка @@ -2070,6 +2172,10 @@ This is your own one-time link! Свързване с %@ new chat action + + Connect with someone + No comment provided by engineer. + Connected Свързан @@ -2138,7 +2244,7 @@ This is your own one-time link! Connection error (AUTH) Грешка при свързване (AUTH) - No comment provided by engineer. + conn error description Connection failed @@ -2193,6 +2299,10 @@ This is your own one-time link! Connections No comment provided by engineer. + + Contact address + chat link info line + Contact allows Контактът позволява @@ -2258,6 +2368,11 @@ This is your own one-time link! Продължи No comment provided by engineer. + + Contribute + Допринеси + No comment provided by engineer. + Conversation deleted! No comment provided by engineer. @@ -2285,11 +2400,6 @@ This is your own one-time link! Поправи име на %@? alert message - - Create - Създаване - No comment provided by engineer. - Create 1-time link Създаване на еднократна препратка @@ -2361,6 +2471,10 @@ This is your own one-time link! Създай своя профил No comment provided by engineer. + + Create your public address + No comment provided by engineer. + Created No comment provided by engineer. @@ -2914,6 +3028,14 @@ alert button Личните съобщения между членовете са забранени в тази група. No comment provided by engineer. + + Direct messages between subscribers are prohibited. + No comment provided by engineer. + + + Disable + alert button + Disable (keep overrides) Деактивиране (запазване на промените) @@ -3014,6 +3136,10 @@ alert button Не изпращай история на нови членове. No comment provided by engineer. + + Do not send history to new subscribers. + No comment provided by engineer. + Do not use credentials with proxy. No comment provided by engineer. @@ -3106,6 +3232,10 @@ chat item action E2E encrypted notifications. No comment provided by engineer. + + Easier to invite your friends 👋 + No comment provided by engineer. + Edit Редактирай @@ -3127,7 +3257,7 @@ chat item action Enable Активирай - No comment provided by engineer. + alert button Enable (keep overrides) @@ -3162,6 +3292,10 @@ chat item action Разреши достъпа до камерата No comment provided by engineer. + + Enable chats with admins? + alert title + Enable disappearing messages by default. No comment provided by engineer. @@ -3181,6 +3315,10 @@ chat item action Активирай незабавни известия? No comment provided by engineer. + + Enable link previews? + alert title + Enable lock Активирай заключване @@ -3355,7 +3493,7 @@ chat item action Error Грешка при свързване със сървъра - No comment provided by engineer. + conn error description Error aborting address change @@ -3674,6 +3812,10 @@ chat item action Грешка при настройването на потвърждениeто за доставка!! No comment provided by engineer. + + Error sharing channel + alert title + Error starting chat Грешка при стартиране на чата @@ -4015,6 +4157,10 @@ server test error For all moderators No comment provided by engineer. + + For anyone to reach you + No comment provided by engineer. + For chat profile %@: servers error @@ -4207,7 +4353,7 @@ Error: %2$@ Group link Групов линк - No comment provided by engineer. + chat link info line Group links @@ -4316,6 +4462,10 @@ Error: %2$@ Историята не се изпраща на нови членове. No comment provided by engineer. + + History is not sent to new subscribers. + No comment provided by engineer. + How SimpleX works Как работи SimpleX @@ -4552,9 +4702,9 @@ More improvements are coming soon! Първоначална роля No comment provided by engineer. - - Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat) - Инсталирайте [SimpleX Chat за терминал](https://github.com/simplex-chat/simplex-chat) + + Install SimpleX Chat for terminal + Инсталирайте SimpleX Chat за терминал No comment provided by engineer. @@ -4606,7 +4756,7 @@ More improvements are coming soon! Invalid connection link Невалиден линк за връзка - No comment provided by engineer. + conn error description Invalid display name! @@ -4670,6 +4820,10 @@ More improvements are coming soon! Покани членове No comment provided by engineer. + + Invite someone privately + No comment provided by engineer. + Invite to chat No comment provided by engineer. @@ -4863,6 +5017,10 @@ This is your link for group %@! Less traffic on mobile networks. No comment provided by engineer. + + Let someone connect to you + No comment provided by engineer. + Let's talk in SimpleX Chat Нека да поговорим в SimpleX Chat @@ -4883,6 +5041,10 @@ This is your link for group %@! Свържете мобилни и настолни приложения! 🔗 No comment provided by engineer. + + Link signature verified. + owner verification + Linked desktop options Настройки на запомнени настолни устройства @@ -5052,6 +5214,10 @@ This is your link for group %@! Членовете на групата могат да добавят реакции към съобщенията. No comment provided by engineer. + + Members can chat with admins. + No comment provided by engineer. + Members can irreversibly delete sent messages. (24 hours) Членовете на групата могат необратимо да изтриват изпратените съобщения. (24 часа) @@ -5202,6 +5368,14 @@ This is your link for group %@! Съобщенията от %@ ще бъдат показани! No comment provided by engineer. + + Messages in this channel are **not end-to-end encrypted**. Chat relays can see these messages. + No comment provided by engineer. + + + Messages in this channel are not end-to-end encrypted. Chat relays can see these messages. + E2EE info chat item + Messages in this chat will never be deleted. alert message @@ -5364,6 +5538,10 @@ This is your link for group %@! Network decentralization No comment provided by engineer. + + Network error + conn error description + Network issues - message expired after many attempts to send it. snd error text @@ -5391,6 +5569,10 @@ This is your link for group %@! New token status text + + New 1-time link + No comment provided by engineer. + New Passcode Нов kод за достъп @@ -5482,6 +5664,10 @@ This is your link for group %@! Не No comment provided by engineer. + + No active relays + No comment provided by engineer. + No app password Приложението няма kод за достъп @@ -5627,6 +5813,10 @@ This is your link for group %@! Първата платформа без никакви потребителски идентификатори – поверителна по дизайн. No comment provided by engineer. + + Non-profit governance + No comment provided by engineer. + Not all relays connected alert title @@ -5682,7 +5872,7 @@ This is your link for group %@! OK ОК - No comment provided by engineer. + alert button Off @@ -5706,6 +5896,10 @@ new chat action Линк за еднократна покана No comment provided by engineer. + + One-time link + chat link info line + Onion hosts will be **required** for connection. Requires compatible VPN. @@ -5725,6 +5919,10 @@ Requires compatible VPN. Няма се използват Onion хостове. No comment provided by engineer. + + Only channel owners can change channel preferences. + No comment provided by engineer. + Only chat owners can change preferences. No comment provided by engineer. @@ -5822,7 +6020,8 @@ Requires compatible VPN. Open Отвори - alert action + alert action +alert button Open Settings @@ -5855,6 +6054,10 @@ Requires compatible VPN. Open conditions No comment provided by engineer. + + Open external link? + alert title + Open full link alert action @@ -5933,6 +6136,10 @@ Requires compatible VPN. Или сигурно споделете този линк към файла No comment provided by engineer. + + Or show QR in person or via video call. + No comment provided by engineer. + Or show this code Или покажи този код @@ -5942,6 +6149,10 @@ Requires compatible VPN. Or to share privately No comment provided by engineer. + + Or use this QR - print or show online. + No comment provided by engineer. + Organize chats into lists No comment provided by engineer. @@ -5964,6 +6175,10 @@ Requires compatible VPN. Owners No comment provided by engineer. + + Ownership: you can run your own relays. + No comment provided by engineer. + PING count PING бройка @@ -6018,6 +6233,10 @@ Requires compatible VPN. Постави изображение No comment provided by engineer. + + Paste link / Scan + No comment provided by engineer. + Paste link to connect! Поставете линк, за да се свържете! @@ -6206,6 +6425,10 @@ Error: %@ Поверителността преосмислена 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. No comment provided by engineer. @@ -6272,9 +6495,8 @@ Error: %@ Profile theme No comment provided by engineer. - - Profile update will be sent to your contacts. - Актуализацията на профила ще бъде изпратена до вашите контакти. + + Profile update will be sent to your SimpleX contacts. alert message @@ -6282,6 +6504,10 @@ Error: %@ Забрани аудио/видео разговорите. No comment provided by engineer. + + Prohibit chats with admins. + No comment provided by engineer. + Prohibit irreversible message deletion. Забрани необратимото изтриване на съобщения. @@ -6311,6 +6537,10 @@ Error: %@ Забрани изпращането на лични съобщения до членовете. No comment provided by engineer. + + Prohibit sending direct messages to subscribers. + No comment provided by engineer. + Prohibit sending disappearing messages. Забрани изпращането на изчезващи съобщения. @@ -6371,6 +6601,10 @@ Enable in *Network & servers* settings. Proxy requires password No comment provided by engineer. + + Public channels - speak freely 🚀 + No comment provided by engineer. + Push notifications Push известия @@ -6410,24 +6644,14 @@ Enable in *Network & servers* settings. Прочетете още No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). - Прочетете повече в [Ръководство за потребителя](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). + + Read more in User Guide. + Прочетете повече в Ръководство за потребителя. No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - Прочетете повече в [Ръководство за потребителя](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - No comment provided by engineer. - - - Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - Прочетете повече в [Ръководство на потребителя](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - No comment provided by engineer. - - - Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme). - Прочетете повече в нашето [GitHub хранилище](https://github.com/simplex-chat/simplex-chat#readme). + + Read more in our GitHub repository. + Прочетете повече в нашето GitHub хранилище. No comment provided by engineer. @@ -6590,6 +6814,10 @@ swipe action Relay link No comment provided by engineer. + + Relay results: + alert message + Relay server is only used if necessary. Another party can observe your IP address. Реле сървър се използва само ако е необходимо. Друга страна може да наблюдава вашия IP адрес. @@ -6604,6 +6832,10 @@ swipe action Relay test failed! No comment provided by engineer. + + Reliability: many relays per channel. + No comment provided by engineer. + Remove Премахване @@ -6860,6 +7092,10 @@ swipe action SOCKS proxy No comment provided by engineer. + + Safe web links + No comment provided by engineer. + Safely receive files No comment provided by engineer. @@ -6902,6 +7138,10 @@ chat item action Запази и уведоми членовете на групата No comment provided by engineer. + + Save and notify subscribers + No comment provided by engineer. + Save and reconnect No comment provided by engineer. @@ -7086,6 +7326,10 @@ chat item action Код за сигурност No comment provided by engineer. + + Security: owners hold channel keys. + No comment provided by engineer. + Select Избери @@ -7205,6 +7449,10 @@ chat item action Send request without message No comment provided by engineer. + + Send the link via any messenger - it's secure. Ask to paste into SimpleX. + No comment provided by engineer. + Send them from gallery or custom keyboards. Изпрати от галерия или персонализирани клавиатури. @@ -7215,6 +7463,10 @@ chat item action Изпращане до последните 100 съобщения на нови членове. No comment provided by engineer. + + Send up to 100 last messages to new subscribers. + No comment provided by engineer. + Send your private feedback to groups. No comment provided by engineer. @@ -7229,6 +7481,10 @@ chat item action Подателят може да е изтрил заявката за връзка. No comment provided by engineer. + + Sending a link preview may reveal your IP address to the website. You can change this in Privacy settings later. + alert message + Sending delivery receipts will be enabled for all contacts in all visible chat profiles. Изпращането на потвърждениe за доставка ще бъде активирано за всички контакти във всички видими чат профили. @@ -7497,11 +7753,14 @@ chat item action Share address publicly No comment provided by engineer. - - Share address with contacts? - Сподели адреса с контактите? + + Share address with SimpleX contacts? alert title + + Share channel + No comment provided by engineer. + Share from other apps. No comment provided by engineer. @@ -7536,9 +7795,12 @@ chat item action Share to SimpleX No comment provided by engineer. - - Share with contacts - Сподели с контактите + + Share via chat + No comment provided by engineer. + + + Share with SimpleX contacts No comment provided by engineer. @@ -7767,6 +8029,11 @@ report reason Квадрат, кръг или нещо между тях. No comment provided by engineer. + + Star on GitHub + Звезда в GitHub + No comment provided by engineer. + Start chat Започни чат @@ -7866,6 +8133,10 @@ report reason Subscriber No comment provided by engineer. + + Subscriber reports + chat feature + Subscriber will be removed from channel - this cannot be undone! alert message @@ -7874,6 +8145,42 @@ report reason Subscribers No comment provided by engineer. + + Subscribers can add message reactions. + No comment provided by engineer. + + + Subscribers can chat with admins. + No comment provided by engineer. + + + Subscribers can irreversibly delete sent messages. (24 hours) + No comment provided by engineer. + + + Subscribers can report messsages to moderators. + No comment provided by engineer. + + + Subscribers can send SimpleX links. + No comment provided by engineer. + + + Subscribers can send direct messages. + No comment provided by engineer. + + + Subscribers can send disappearing messages. + No comment provided by engineer. + + + Subscribers can send files and media. + No comment provided by engineer. + + + Subscribers can send voice messages. + No comment provided by engineer. + Subscribers use relay link to connect to the channel. Relay address was used to set up this relay for the channel. @@ -7951,6 +8258,10 @@ Relay address was used to set up this relay for the channel. Направи снимка No comment provided by engineer. + + Talk to someone + No comment provided by engineer. + Tap Connect to chat No comment provided by engineer. @@ -7963,10 +8274,6 @@ Relay address was used to set up this relay for the channel. Tap Connect to use bot No comment provided by engineer. - - Tap Create SimpleX address in the menu to create it later. - No comment provided by engineer. - Tap Join channel No comment provided by engineer. @@ -8000,6 +8307,10 @@ Relay address was used to set up this relay for the channel. Докосни за инкогнито вход No comment provided by engineer. + + Tap to open + No comment provided by engineer. + Tap to paste link Докосни за поставяне на линк за връзка @@ -8096,6 +8407,10 @@ It can happen because of some bug or when the connection is compromised.QR кодът, който сканирахте, не е SimpleX линк за връзка. No comment provided by engineer. + + The connection reached the limit of undelivered messages + conn error description + The connection reached the limit of undelivered messages, your contact may be offline. No comment provided by engineer. @@ -8312,6 +8627,10 @@ It can happen because of some bug or when the connection is compromised.Скриване на нежелани съобщения. No comment provided by engineer. + + To make SimpleX Network last. + No comment provided by engineer. + To make a new connection За да направите нова връзка @@ -8570,13 +8889,17 @@ To connect, please ask your contact to create another connection link and check Unsupported connection link - No comment provided by engineer. + conn error description Up to 100 last messages are sent to new members. На новите членове се изпращат до последните 100 съобщения. No comment provided by engineer. + + Up to 100 last messages are sent to new subscribers. + No comment provided by engineer. + Update Актуализация @@ -8768,6 +9091,10 @@ To connect, please ask your contact to create another connection link and check Use the app with one hand. No comment provided by engineer. + + Use this address in your social media profile, website, or email signature. + No comment provided by engineer. + Use web port No comment provided by engineer. @@ -8914,6 +9241,10 @@ To connect, please ask your contact to create another connection link and check Wait response relay test step + + Waiting for channel owner to add relays. + No comment provided by engineer. + Waiting for desktop... Изчакване на настолно устройство… @@ -8952,6 +9283,10 @@ To connect, please ask your contact to create another connection link and check Предупреждение: Може да загубите някои данни! No comment provided by engineer. + + We made connecting simpler for new users. + No comment provided by engineer. + WebRTC ICE servers WebRTC ICE сървъри @@ -9511,6 +9846,10 @@ Relays can access channel messages. Your profile was changed. If you save it, the updated profile will be sent to all your contacts. alert message + + Your public address + No comment provided by engineer. + Your random profile Вашият автоматично генериран профил @@ -9538,21 +9877,11 @@ Relays can access channel messages. Вашите настройки No comment provided by engineer. - - [Contribute](https://github.com/simplex-chat/simplex-chat#contribute) - [Допринеси](https://github.com/simplex-chat/simplex-chat#contribute) - No comment provided by engineer. - [Send us email](mailto:chat@simplex.chat) [Изпратете ни имейл](mailto:chat@simplex.chat) No comment provided by engineer. - - [Star on GitHub](https://github.com/simplex-chat/simplex-chat) - [Звезда в GitHub](https://github.com/simplex-chat/simplex-chat) - No comment provided by engineer. - \_italic_ \_курсив_ @@ -9700,6 +10029,10 @@ marked deleted chat item preview text повикване… call status + + can't broadcast + No comment provided by engineer. + can't send messages No comment provided by engineer. @@ -10332,6 +10665,10 @@ time to disappear removed (%d attempts) receive error chat item + + removed by operator + No comment provided by engineer. + removed contact address премахнат адрес за контакт @@ -10636,6 +10973,10 @@ last received msg: %2$@ \~зачеркнат~ No comment provided by engineer. + + ⚠️ Signature verification failed: %@. + owner verification + 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 e7d0fc2d4b..1a0a53b884 100644 --- a/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff +++ b/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff @@ -185,9 +185,20 @@ %d měsíce time interval - - %d relays - channel relay bar + + %d relays failed + channel relay bar +channel subscriber relay bar + + + %d relays not active + channel relay bar +channel subscriber relay bar + + + %d relays removed + channel relay bar +channel subscriber relay bar %d sec @@ -222,10 +233,18 @@ channel creation progress channel relay bar progress + + %1$d/%2$d relays active, %3$d errors + channel relay bar + %1$d/%2$d relays active, %3$d failed channel creation progress with errors -channel relay bar progress with errors +channel relay bar + + + %1$d/%2$d relays active, %3$d removed + channel relay bar %1$d/%2$d relays connected @@ -233,7 +252,15 @@ channel relay bar progress with errors %1$d/%2$d relays connected, %3$d errors - channel subscriber relay bar progress with errors + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d failed + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d removed + channel subscriber relay bar %lld @@ -349,11 +376,19 @@ channel relay bar progress with errors %u zpráv přeskočeno. No comment provided by engineer. + + (from owner) + chat link info line + (new) (nový) No comment provided by engineer. + + (signed) + chat link info line + (this device v%@) (toto zařízení v%@) @@ -445,6 +480,12 @@ channel relay bar progress with errors - a více! No comment provided by engineer. + + - opt-in to send link previews. +- prevent hyperlink phishing. +- remove link tracking. + No comment provided by engineer. + - optionally notify deleted contacts. - profile names with spaces. @@ -542,6 +583,10 @@ time interval Ještě pár věcí No comment provided by engineer. + + A link for one person to connect + No comment provided by engineer. + A new contact Nový kontakt @@ -665,9 +710,8 @@ swipe action Aktivní spojení No comment provided by engineer. - - Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts. - Přidejte adresu do svého profilu, aby ji vaše kontakty mohly sdílet s dalšími lidmi. Aktualizace profilu bude zaslána vašim kontaktům. + + Add address to your profile, so that your SimpleX contacts can share it with other people. Profile update will be sent to your SimpleX contacts. No comment provided by engineer. @@ -732,6 +776,10 @@ swipe action Přidané servery zpráv No comment provided by engineer. + + Adding relays will be supported later. + No comment provided by engineer. + Additional accent Další zbarvení @@ -848,6 +896,14 @@ swipe action Všechny profily profile dropdown + + All relays failed + No comment provided by engineer. + + + All relays removed + No comment provided by engineer. + All reports will be archived for you. No comment provided by engineer. @@ -904,6 +960,10 @@ swipe action Povolte nevratné smazání zprávy pouze v případě, že vám to váš kontakt dovolí. (24 hodin) No comment provided by engineer. + + Allow members to chat with admins. + No comment provided by engineer. + Allow message reactions only if your contact allows them. Povolit reakce na zprávy, pokud je váš kontakt povolí. @@ -919,6 +979,10 @@ swipe action Povolit odesílání přímých zpráv členům. No comment provided by engineer. + + Allow sending direct messages to subscribers. + No comment provided by engineer. + Allow sending disappearing messages. Povolit odesílání mizících zpráv. @@ -929,6 +993,10 @@ swipe action Povolit sdílení No comment provided by engineer. + + Allow subscribers to chat with admins. + No comment provided by engineer. + Allow to irreversibly delete sent messages. (24 hours) Povolit nevratné smazání odeslaných zpráv. (24 hodin) @@ -1384,7 +1452,7 @@ swipe action Business address Obchodní adresa - No comment provided by engineer. + chat link info line Business chats @@ -1569,12 +1637,21 @@ set passcode view Channel full name (optional) No comment provided by engineer. + + Channel has no active relays. Please try to join later. + alert message +alert subtitle + Channel image No comment provided by engineer. Channel link + chat link info line + + + Channel preferences No comment provided by engineer. @@ -1589,6 +1666,10 @@ set passcode view Channel profile was changed. If you save it, the updated profile will be sent to channel subscribers. alert message + + Channel temporarily unavailable + alert title + Channel will be deleted for all subscribers - this cannot be undone! No comment provided by engineer. @@ -1601,6 +1682,10 @@ set passcode view Channel will start working with %1$d of %2$d relays. Proceed? alert message + + Channels + No comment provided by engineer. + Chat No comment provided by engineer. @@ -1710,7 +1795,8 @@ set passcode view Chat with admins - chat toolbar + chat feature +chat toolbar Chat with member @@ -1725,10 +1811,22 @@ set passcode view Chaty No comment provided by engineer. + + Chats with admins are prohibited. + No comment provided by engineer. + + + Chats with admins in public channels have no E2E encryption - use only with trusted chat relays. + alert message + Chats with members No comment provided by engineer. + + Chats with members are disabled + No comment provided by engineer. + Check messages every 20 min. No comment provided by engineer. @@ -1974,6 +2072,10 @@ Toto je váš vlastní jednorázový odkaz! Připojte se prostřednictvím odkazu new chat sheet title + + Connect via link or QR code + No comment provided by engineer. + Connect via one-time link Připojit se jednorázovým odkazem @@ -1983,6 +2085,10 @@ Toto je váš vlastní jednorázový odkaz! Connect with %@ new chat action + + Connect with someone + No comment provided by engineer. + Connected No comment provided by engineer. @@ -2042,7 +2148,7 @@ Toto je váš vlastní jednorázový odkaz! Connection error (AUTH) Chyba spojení (AUTH) - No comment provided by engineer. + conn error description Connection failed @@ -2091,6 +2197,10 @@ Toto je váš vlastní jednorázový odkaz! Connections No comment provided by engineer. + + Contact address + chat link info line + Contact allows Kontakt povolil @@ -2156,6 +2266,11 @@ Toto je váš vlastní jednorázový odkaz! Pokračovat No comment provided by engineer. + + Contribute + Přispějte + No comment provided by engineer. + Conversation deleted! No comment provided by engineer. @@ -2182,11 +2297,6 @@ Toto je váš vlastní jednorázový odkaz! Correct name to %@? alert message - - Create - Vytvořit - No comment provided by engineer. - Create 1-time link No comment provided by engineer. @@ -2255,6 +2365,10 @@ Toto je váš vlastní jednorázový odkaz! Vytvořte si profil No comment provided by engineer. + + Create your public address + No comment provided by engineer. + Created No comment provided by engineer. @@ -2798,6 +2912,14 @@ alert button Přímé zprávy mezi členy jsou v této skupině zakázány. No comment provided by engineer. + + Direct messages between subscribers are prohibited. + No comment provided by engineer. + + + Disable + alert button + Disable (keep overrides) Vypnout (zachovat přepsání) @@ -2895,6 +3017,10 @@ alert button Do not send history to new members. No comment provided by engineer. + + Do not send history to new subscribers. + No comment provided by engineer. + Do not use credentials with proxy. No comment provided by engineer. @@ -2983,6 +3109,10 @@ chat item action E2E encrypted notifications. No comment provided by engineer. + + Easier to invite your friends 👋 + No comment provided by engineer. + Edit Upravit @@ -3004,7 +3134,7 @@ chat item action Enable Zapnout - No comment provided by engineer. + alert button Enable (keep overrides) @@ -3038,6 +3168,10 @@ chat item action Enable camera access No comment provided by engineer. + + Enable chats with admins? + alert title + Enable disappearing messages by default. No comment provided by engineer. @@ -3056,6 +3190,10 @@ chat item action Povolit okamžitá oznámení? No comment provided by engineer. + + Enable link previews? + alert title + Enable lock Povolit zámek @@ -3222,7 +3360,7 @@ chat item action Error Chyba - No comment provided by engineer. + conn error description Error aborting address change @@ -3536,6 +3674,10 @@ chat item action Chyba nastavování potvrzení o doručení! No comment provided by engineer. + + Error sharing channel + alert title + Error starting chat Chyba při spuštění chatu @@ -3869,6 +4011,10 @@ server test error For all moderators No comment provided by engineer. + + For anyone to reach you + No comment provided by engineer. + For chat profile %@: servers error @@ -4053,7 +4199,7 @@ Error: %2$@ Group link Odkaz na skupinu - No comment provided by engineer. + chat link info line Group links @@ -4161,6 +4307,10 @@ Error: %2$@ History is not sent to new members. No comment provided by engineer. + + History is not sent to new subscribers. + No comment provided by engineer. + How SimpleX works Jak SimpleX funguje @@ -4389,9 +4539,9 @@ More improvements are coming soon! Počáteční role No comment provided by engineer. - - Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat) - Nainstalujte [SimpleX Chat pro terminál](https://github.com/simplex-chat/simplex-chat) + + Install SimpleX Chat for terminal + Nainstalujte SimpleX Chat pro terminál No comment provided by engineer. @@ -4442,7 +4592,7 @@ More improvements are coming soon! Invalid connection link Neplatný odkaz na spojení - No comment provided by engineer. + conn error description Invalid display name! @@ -4501,6 +4651,10 @@ More improvements are coming soon! Pozvat členy No comment provided by engineer. + + Invite someone privately + No comment provided by engineer. + Invite to chat No comment provided by engineer. @@ -4688,6 +4842,10 @@ This is your link for group %@! Less traffic on mobile networks. No comment provided by engineer. + + Let someone connect to you + No comment provided by engineer. + Let's talk in SimpleX Chat Promluvme si v SimpleX Chatu @@ -4707,6 +4865,10 @@ This is your link for group %@! Link mobile and desktop apps! 🔗 No comment provided by engineer. + + Link signature verified. + owner verification + Linked desktop options No comment provided by engineer. @@ -4874,6 +5036,10 @@ This is your link for group %@! Členové skupin mohou přidávat reakce na zprávy. No comment provided by engineer. + + Members can chat with admins. + No comment provided by engineer. + Members can irreversibly delete sent messages. (24 hours) Členové skupiny mohou nevratně mazat odeslané zprávy. (24 hodin) @@ -5020,6 +5186,14 @@ This is your link for group %@! Messages from %@ will be shown! No comment provided by engineer. + + Messages in this channel are **not end-to-end encrypted**. Chat relays can see these messages. + No comment provided by engineer. + + + Messages in this channel are not end-to-end encrypted. Chat relays can see these messages. + E2EE info chat item + Messages in this chat will never be deleted. alert message @@ -5171,6 +5345,10 @@ This is your link for group %@! Network decentralization No comment provided by engineer. + + Network error + conn error description + Network issues - message expired after many attempts to send it. snd error text @@ -5197,6 +5375,10 @@ This is your link for group %@! New token status text + + New 1-time link + No comment provided by engineer. + New Passcode Nové heslo @@ -5287,6 +5469,10 @@ This is your link for group %@! Ne No comment provided by engineer. + + No active relays + No comment provided by engineer. + No app password Žádné heslo aplikace @@ -5431,6 +5617,10 @@ This is your link for group %@! Bez uživatelských identifikátorů. No comment provided by engineer. + + Non-profit governance + No comment provided by engineer. + Not all relays connected alert title @@ -5484,7 +5674,7 @@ This is your link for group %@! OK - No comment provided by engineer. + alert button Off @@ -5508,6 +5698,10 @@ new chat action Jednorázový zvací odkaz No comment provided by engineer. + + One-time link + chat link info line + Onion hosts will be **required** for connection. Requires compatible VPN. @@ -5527,6 +5721,10 @@ Vyžaduje povolení sítě VPN. Onion hostitelé nebudou použiti. No comment provided by engineer. + + Only channel owners can change channel preferences. + No comment provided by engineer. + Only chat owners can change preferences. No comment provided by engineer. @@ -5624,7 +5822,8 @@ Vyžaduje povolení sítě VPN. Open Otevřít - alert action + alert action +alert button Open Settings @@ -5657,6 +5856,10 @@ Vyžaduje povolení sítě VPN. Open conditions No comment provided by engineer. + + Open external link? + alert title + Open full link alert action @@ -5729,6 +5932,10 @@ Vyžaduje povolení sítě VPN. Or securely share this file link No comment provided by engineer. + + Or show QR in person or via video call. + No comment provided by engineer. + Or show this code No comment provided by engineer. @@ -5737,6 +5944,10 @@ Vyžaduje povolení sítě VPN. Or to share privately No comment provided by engineer. + + Or use this QR - print or show online. + No comment provided by engineer. + Organize chats into lists No comment provided by engineer. @@ -5758,6 +5969,10 @@ Vyžaduje povolení sítě VPN. Owners No comment provided by engineer. + + Ownership: you can run your own relays. + No comment provided by engineer. + PING count Počet PING @@ -5811,6 +6026,10 @@ Vyžaduje povolení sítě VPN. Vložit obrázek No comment provided by engineer. + + Paste link / Scan + No comment provided by engineer. + Paste link to connect! No comment provided by engineer. @@ -5993,6 +6212,10 @@ Error: %@ 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. No comment provided by engineer. @@ -6057,9 +6280,8 @@ Error: %@ Profile theme No comment provided by engineer. - - Profile update will be sent to your contacts. - Aktualizace profilu bude zaslána vašim kontaktům. + + Profile update will be sent to your SimpleX contacts. alert message @@ -6067,6 +6289,10 @@ Error: %@ Zákaz audio/video hovorů. No comment provided by engineer. + + Prohibit chats with admins. + No comment provided by engineer. + Prohibit irreversible message deletion. Zakázat nevratné mazání zpráv. @@ -6095,6 +6321,10 @@ Error: %@ Zakázat odesílání přímých zpráv členům. No comment provided by engineer. + + Prohibit sending direct messages to subscribers. + No comment provided by engineer. + Prohibit sending disappearing messages. Zakázat posílání mizících zpráv. @@ -6155,6 +6385,10 @@ Enable in *Network & servers* settings. Proxy requires password No comment provided by engineer. + + Public channels - speak freely 🚀 + No comment provided by engineer. + Push notifications Nabízená oznámení @@ -6192,24 +6426,14 @@ Enable in *Network & servers* settings. Přečíst více No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). - Více informací v [průvodci uživatele](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). + + Read more in User Guide. + Více informací v průvodci uživatele. No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - Další informace naleznete v [Uživatelské příručce](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - No comment provided by engineer. - - - Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - Přečtěte si více v [Uživatelské příručce](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - No comment provided by engineer. - - - Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme). - Přečtěte si více v našem [GitHub repozitáři](https://github.com/simplex-chat/simplex-chat#readme). + + Read more in our GitHub repository. + Přečtěte si více v našem GitHub repozitáři. No comment provided by engineer. @@ -6370,6 +6594,10 @@ swipe action Relay link No comment provided by engineer. + + Relay results: + alert message + Relay server is only used if necessary. Another party can observe your IP address. Přenosový server se používá pouze v případě potřeby. Jiná strana může sledovat vaši IP adresu. @@ -6384,6 +6612,10 @@ swipe action Relay test failed! No comment provided by engineer. + + Reliability: many relays per channel. + No comment provided by engineer. + Remove Odstranit @@ -6636,6 +6868,10 @@ swipe action SOCKS proxy No comment provided by engineer. + + Safe web links + No comment provided by engineer. + Safely receive files No comment provided by engineer. @@ -6677,6 +6913,10 @@ chat item action Uložit a upozornit členy skupiny No comment provided by engineer. + + Save and notify subscribers + No comment provided by engineer. + Save and reconnect No comment provided by engineer. @@ -6855,6 +7095,10 @@ chat item action Bezpečnostní kód No comment provided by engineer. + + Security: owners hold channel keys. + No comment provided by engineer. + Select Vybrat @@ -6974,6 +7218,10 @@ chat item action Send request without message No comment provided by engineer. + + Send the link via any messenger - it's secure. Ask to paste into SimpleX. + No comment provided by engineer. + Send them from gallery or custom keyboards. Odeslat je z galerie nebo vlastní klávesnice. @@ -6983,6 +7231,10 @@ chat item action Send up to 100 last messages to new members. No comment provided by engineer. + + Send up to 100 last messages to new subscribers. + No comment provided by engineer. + Send your private feedback to groups. No comment provided by engineer. @@ -6997,6 +7249,10 @@ chat item action Odesílatel možná smazal požadavek připojení. No comment provided by engineer. + + Sending a link preview may reveal your IP address to the website. You can change this in Privacy settings later. + alert message + Sending delivery receipts will be enabled for all contacts in all visible chat profiles. Odesílání potvrzení o doručení bude povoleno pro všechny kontakty ve všech viditelných profilech chatu. @@ -7262,11 +7518,14 @@ chat item action Share address publicly No comment provided by engineer. - - Share address with contacts? - Sdílet adresu s kontakty? + + Share address with SimpleX contacts? alert title + + Share channel + No comment provided by engineer. + Share from other apps. No comment provided by engineer. @@ -7300,9 +7559,12 @@ chat item action Share to SimpleX No comment provided by engineer. - - Share with contacts - Sdílet s kontakty + + Share via chat + No comment provided by engineer. + + + Share with SimpleX contacts No comment provided by engineer. @@ -7526,6 +7788,11 @@ report reason Square, circle, or anything in between. No comment provided by engineer. + + Star on GitHub + Hvězda na GitHubu + No comment provided by engineer. + Start chat Začít chat @@ -7622,6 +7889,10 @@ report reason Subscriber No comment provided by engineer. + + Subscriber reports + chat feature + Subscriber will be removed from channel - this cannot be undone! alert message @@ -7630,6 +7901,42 @@ report reason Subscribers No comment provided by engineer. + + Subscribers can add message reactions. + No comment provided by engineer. + + + Subscribers can chat with admins. + No comment provided by engineer. + + + Subscribers can irreversibly delete sent messages. (24 hours) + No comment provided by engineer. + + + Subscribers can report messsages to moderators. + No comment provided by engineer. + + + Subscribers can send SimpleX links. + No comment provided by engineer. + + + Subscribers can send direct messages. + No comment provided by engineer. + + + Subscribers can send disappearing messages. + No comment provided by engineer. + + + Subscribers can send files and media. + No comment provided by engineer. + + + Subscribers can send voice messages. + No comment provided by engineer. + Subscribers use relay link to connect to the channel. Relay address was used to set up this relay for the channel. @@ -7707,6 +8014,10 @@ Relay address was used to set up this relay for the channel. Vyfotit No comment provided by engineer. + + Talk to someone + No comment provided by engineer. + Tap Connect to chat No comment provided by engineer. @@ -7719,10 +8030,6 @@ Relay address was used to set up this relay for the channel. Tap Connect to use bot No comment provided by engineer. - - Tap Create SimpleX address in the menu to create it later. - No comment provided by engineer. - Tap Join channel No comment provided by engineer. @@ -7755,6 +8062,10 @@ Relay address was used to set up this relay for the channel. Klepnutím se připojíte inkognito No comment provided by engineer. + + Tap to open + No comment provided by engineer. + Tap to paste link No comment provided by engineer. @@ -7848,6 +8159,10 @@ Může se to stát kvůli nějaké chybě, nebo pokud je spojení kompromitován The code you scanned is not a SimpleX link QR code. No comment provided by engineer. + + The connection reached the limit of undelivered messages + conn error description + The connection reached the limit of undelivered messages, your contact may be offline. No comment provided by engineer. @@ -8058,6 +8373,10 @@ Může se to stát kvůli nějaké chybě, nebo pokud je spojení kompromitován To hide unwanted messages. No comment provided by engineer. + + To make SimpleX Network last. + No comment provided by engineer. + To make a new connection Vytvoření nového připojení @@ -8308,12 +8627,16 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu Unsupported connection link - No comment provided by engineer. + conn error description Up to 100 last messages are sent to new members. No comment provided by engineer. + + Up to 100 last messages are sent to new subscribers. + No comment provided by engineer. + Update Aktualizovat @@ -8500,6 +8823,10 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu Use the app with one hand. No comment provided by engineer. + + Use this address in your social media profile, website, or email signature. + No comment provided by engineer. + Use web port No comment provided by engineer. @@ -8638,6 +8965,10 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu Wait response relay test step + + Waiting for channel owner to add relays. + No comment provided by engineer. + Waiting for desktop... No comment provided by engineer. @@ -8674,6 +9005,10 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu Upozornění: můžete ztratit nějaká data! No comment provided by engineer. + + We made connecting simpler for new users. + No comment provided by engineer. + WebRTC ICE servers WebRTC servery ICE @@ -8910,7 +9245,7 @@ Repeat join request? You can share a link or a QR code - anybody will be able to join the group. You won't lose members of the group if you later delete it. - Můžete sdílet odkaz nebo QR kód - ke skupině se bude moci připojit kdokoli. O členy skupiny nepřijdete, pokud ji později odstraníte. + Můžete sdílet odkaz nebo QR kód - ke skupině se bude moci připojit kdokoli. O členy skupiny nepřijdete, pokud odkaz později smažete. No comment provided by engineer. @@ -9211,6 +9546,10 @@ Relays can access channel messages. Your profile was changed. If you save it, the updated profile will be sent to all your contacts. alert message + + Your public address + No comment provided by engineer. + Your random profile Váš náhodný profil @@ -9238,21 +9577,11 @@ Relays can access channel messages. Vaše nastavení No comment provided by engineer. - - [Contribute](https://github.com/simplex-chat/simplex-chat#contribute) - [Přispějte](https://github.com/simplex-chat/simplex-chat#contribute) - No comment provided by engineer. - [Send us email](mailto:chat@simplex.chat) [Pošlete nám e-mail](mailto:chat@simplex.chat) No comment provided by engineer. - - [Star on GitHub](https://github.com/simplex-chat/simplex-chat) - [Hvězda na GitHubu](https://github.com/simplex-chat/simplex-chat) - No comment provided by engineer. - \_italic_ \_kurzíva_ @@ -9393,6 +9722,10 @@ marked deleted chat item preview text volání… call status + + can't broadcast + No comment provided by engineer. + can't send messages No comment provided by engineer. @@ -10019,6 +10352,10 @@ time to disappear removed (%d attempts) receive error chat item + + removed by operator + No comment provided by engineer. + removed contact address profile update event chat item @@ -10309,6 +10646,10 @@ last received msg: %2$@ \~stávka~ No comment provided by engineer. + + ⚠️ Signature verification failed: %@. + owner verification + 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 5840cff078..6a603c8254 100644 --- a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff +++ b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff @@ -185,9 +185,20 @@ %d Monate time interval - - %d relays - channel relay bar + + %d relays failed + channel relay bar +channel subscriber relay bar + + + %d relays not active + channel relay bar +channel subscriber relay bar + + + %d relays removed + channel relay bar +channel subscriber relay bar %d sec @@ -206,10 +217,12 @@ %d subscriber + %d Abonnent channel subscriber count %d subscribers + %d Abonnenten channel subscriber count @@ -219,21 +232,41 @@ %1$d/%2$d relays active + %1$d/%2$d Relais aktiv channel creation progress channel relay bar progress + + %1$d/%2$d relays active, %3$d errors + channel relay bar + %1$d/%2$d relays active, %3$d failed + %1$d/%2$d Relais aktiv, %3$d fehlgeschlagen channel creation progress with errors -channel relay bar progress with errors +channel relay bar + + + %1$d/%2$d relays active, %3$d removed + channel relay bar %1$d/%2$d relays connected + %1$d/%2$d Relais verbunden channel subscriber relay bar progress %1$d/%2$d relays connected, %3$d errors - channel subscriber relay bar progress with errors + %1$d/%2$d Relais verbunden, %3$d Fehler + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d failed + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d removed + channel subscriber relay bar %lld @@ -247,6 +280,7 @@ channel relay bar progress with errors %lld channel events + %lld Kanalereignisse No comment provided by engineer. @@ -349,11 +383,19 @@ channel relay bar progress with errors %u übersprungene Nachrichten. No comment provided by engineer. + + (from owner) + chat link info line + (new) (Neu) No comment provided by engineer. + + (signed) + chat link info line + (this device v%@) (Dieses Gerät hat v%@) @@ -401,6 +443,7 @@ channel relay bar progress with errors **Test relay** to retrieve its name. + **Relais testen** um seinen Namen abzurufen. No comment provided by engineer. @@ -446,6 +489,12 @@ channel relay bar progress with errors - und mehr! No comment provided by engineer. + + - opt-in to send link previews. +- prevent hyperlink phishing. +- remove link tracking. + No comment provided by engineer. + - optionally notify deleted contacts. - profile names with spaces. @@ -544,6 +593,10 @@ time interval Ein paar weitere Dinge No comment provided by engineer. + + A link for one person to connect + No comment provided by engineer. + A new contact Ein neuer Kontakt @@ -670,9 +723,8 @@ swipe action Aktive Verbindungen No comment provided by engineer. - - Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts. - Fügen Sie die Adresse Ihrem Profil hinzu, damit Ihre Kontakte sie mit anderen Personen teilen können. Es wird eine Profilaktualisierung an Ihre Kontakte gesendet. + + Add address to your profile, so that your SimpleX contacts can share it with other people. Profile update will be sent to your SimpleX contacts. No comment provided by engineer. @@ -740,6 +792,10 @@ swipe action Nachrichtenserver hinzugefügt No comment provided by engineer. + + Adding relays will be supported later. + No comment provided by engineer. + Additional accent Erste Akzentfarbe @@ -860,6 +916,14 @@ swipe action Alle Profile profile dropdown + + All relays failed + No comment provided by engineer. + + + All relays removed + No comment provided by engineer. + All reports will be archived for you. Alle Meldungen werden für Sie archiviert. @@ -920,6 +984,10 @@ swipe action Erlauben Sie das unwiederbringliche Löschen von Nachrichten nur dann, wenn es Ihnen Ihr Kontakt ebenfalls erlaubt. (24 Stunden) No comment provided by engineer. + + Allow members to chat with admins. + No comment provided by engineer. + Allow message reactions only if your contact allows them. Erlauben Sie Reaktionen auf Nachrichten nur dann, wenn es Ihr Kontakt ebenfalls erlaubt. @@ -935,6 +1003,11 @@ swipe action Das Senden von Direktnachrichten an Gruppenmitglieder erlauben. No comment provided by engineer. + + Allow sending direct messages to subscribers. + Das Senden von Direktnachrichten an Abonnenten erlauben. + No comment provided by engineer. + Allow sending disappearing messages. Das Senden von verschwindenden Nachrichten erlauben. @@ -945,6 +1018,10 @@ swipe action Teilen erlauben No comment provided by engineer. + + Allow subscribers to chat with admins. + No comment provided by engineer. + Allow to irreversibly delete sent messages. (24 hours) Unwiederbringliches löschen von gesendeten Nachrichten erlauben. (24 Stunden) @@ -1357,6 +1434,7 @@ swipe action Block subscriber for all? + Abonnent für alle blockieren? No comment provided by engineer. @@ -1411,6 +1489,7 @@ swipe action Broadcast + Broadcast compose placeholder for channel owner @@ -1421,7 +1500,7 @@ swipe action Business address Geschäftliche Adresse - No comment provided by engineer. + chat link info line Business chats @@ -1602,48 +1681,76 @@ set passcode view Channel + Kanal No comment provided by engineer. Channel display name + Anzeigename des Kanals No comment provided by engineer. Channel full name (optional) + Vollständiger Kanalname (optional) No comment provided by engineer. + + Channel has no active relays. Please try to join later. + alert message +alert subtitle + Channel image + Kanalbild No comment provided by engineer. Channel link + Kanallink + chat link info line + + + Channel preferences No comment provided by engineer. Channel profile + Kanalprofil No comment provided by engineer. Channel profile is stored on subscribers' devices and on the chat relays. + Das Kanalprofil wird auf den Geräten der Abonnenten und auf den Chat‑Relais gespeichert. No comment provided by engineer. Channel profile was changed. If you save it, the updated profile will be sent to channel subscribers. + Das Kanalprofil wurde geändert. Beim Speichern wird das aktualisierte Profil an die Abonnenten des Kanals gesendet. alert message + + Channel temporarily unavailable + alert title + Channel will be deleted for all subscribers - this cannot be undone! + Der Kanal wird für alle Abonnenten gelöscht. Dies kann nicht rückgängig gemacht werden! No comment provided by engineer. Channel will be deleted for you - this cannot be undone! + Der Kanal wird für Sie gelöscht. Dies kann nicht rückgängig gemacht werden! No comment provided by engineer. Channel will start working with %1$d of %2$d relays. Proceed? + Der Kanal wird mit %1$d von %2$d Relais gestartet. Fortfahren? alert message + + Channels + No comment provided by engineer. + Chat Chat @@ -1731,18 +1838,22 @@ set passcode view Chat relay + Chat-Relais No comment provided by engineer. Chat relays + Chat-Relais No comment provided by engineer. Chat relays forward messages in channels you create. + Chat‑Relais leiten Nachrichten in den von Ihnen erstellten Kanälen weiter. No comment provided by engineer. Chat relays forward messages to channel subscribers. + Chat‑Relais leiten Nachrichten an Kanal-Abonnenten weiter. No comment provided by engineer. @@ -1763,7 +1874,8 @@ set passcode view Chat with admins Chat mit Administratoren - chat toolbar + chat feature +chat toolbar Chat with member @@ -1780,11 +1892,23 @@ set passcode view Chats No comment provided by engineer. + + Chats with admins are prohibited. + No comment provided by engineer. + + + Chats with admins in public channels have no E2E encryption - use only with trusted chat relays. + alert message + Chats with members Chats mit Mitgliedern No comment provided by engineer. + + Chats with members are disabled + No comment provided by engineer. + Check messages every 20 min. Alle 20min Nachrichten überprüfen. @@ -1797,10 +1921,12 @@ set passcode view Check relay address and try again. + Relais-Adresse überprüfen und erneut versuchen. alert message Check relay name and try again. + Relais-Name überprüfen und erneut versuchen. alert message @@ -1950,6 +2076,7 @@ set passcode view Configure relays + Relais konfigurieren No comment provided by engineer. @@ -2062,6 +2189,10 @@ Das ist Ihr eigener Einmal-Link! Über einen Link verbinden new chat sheet title + + Connect via link or QR code + No comment provided by engineer. + Connect via one-time link Über einen Einmal-Link verbinden @@ -2072,6 +2203,10 @@ Das ist Ihr eigener Einmal-Link! Mit %@ verbinden new chat action + + Connect with someone + No comment provided by engineer. + Connected Verbunden @@ -2140,7 +2275,7 @@ Das ist Ihr eigener Einmal-Link! Connection error (AUTH) Verbindungsfehler (AUTH) - No comment provided by engineer. + conn error description Connection failed @@ -2199,6 +2334,10 @@ Das ist Ihr eigener Einmal-Link! Verbindungen No comment provided by engineer. + + Contact address + chat link info line + Contact allows Der Kontakt erlaubt @@ -2269,6 +2408,11 @@ Das ist Ihr eigener Einmal-Link! Weiter No comment provided by engineer. + + Contribute + Unterstützen Sie uns + No comment provided by engineer. + Conversation deleted! Chat-Inhalte entfernt! @@ -2299,11 +2443,6 @@ Das ist Ihr eigener Einmal-Link! Richtiger Name für %@? alert message - - Create - Erstellen - No comment provided by engineer. - Create 1-time link Einmal-Link erstellen @@ -2356,10 +2495,12 @@ Das ist Ihr eigener Einmal-Link! Create public channel + Öffentlichen Kanal erstellen No comment provided by engineer. Create public channel (BETA) + Öffentlichen Kanal erstellen (BETA) No comment provided by engineer. @@ -2377,6 +2518,10 @@ Das ist Ihr eigener Einmal-Link! Erstellen Sie Ihr Profil No comment provided by engineer. + + Create your public address + No comment provided by engineer. + Created Erstellt @@ -2399,6 +2544,7 @@ Das ist Ihr eigener Einmal-Link! Creating channel + Kanal wird erstellt No comment provided by engineer. @@ -2566,6 +2712,7 @@ Das ist Ihr eigener Einmal-Link! Decode link + Link dekodieren relay test step @@ -2616,10 +2763,12 @@ swipe action Delete channel + Kanal löschen No comment provided by engineer. Delete channel? + Kanal löschen? No comment provided by engineer. @@ -2795,6 +2944,7 @@ alert button Delete relay + Relais löschen No comment provided by engineer. @@ -2962,6 +3112,15 @@ alert button In dieser Gruppe sind Direktnachrichten zwischen Mitgliedern nicht erlaubt. No comment provided by engineer. + + Direct messages between subscribers are prohibited. + Direktnachrichten zwischen Abonnenten sind nicht erlaubt. + No comment provided by engineer. + + + Disable + alert button + Disable (keep overrides) Deaktivieren (vorgenommene Einstellungen bleiben erhalten) @@ -3067,6 +3226,11 @@ alert button Den Nachrichtenverlauf nicht an neue Mitglieder senden. No comment provided by engineer. + + Do not send history to new subscribers. + Den Nachrichtenverlauf nicht an neue Abonnenten senden. + No comment provided by engineer. + Do not use credentials with proxy. Verwenden Sie keine Anmeldeinformationen mit einem Proxy. @@ -3168,6 +3332,10 @@ chat item action E2E-verschlüsselte Benachrichtigungen. No comment provided by engineer. + + Easier to invite your friends 👋 + No comment provided by engineer. + Edit Bearbeiten @@ -3175,6 +3343,7 @@ chat item action Edit channel profile + Kanalprofil bearbeiten No comment provided by engineer. @@ -3190,7 +3359,7 @@ chat item action Enable Aktivieren - No comment provided by engineer. + alert button Enable (keep overrides) @@ -3214,6 +3383,7 @@ chat item action Enable at least one chat relay in Network & Servers. + Aktivieren Sie mindestens ein Chat‑Relais unter 'Netzwerk & Server'. channel creation warning @@ -3226,6 +3396,10 @@ chat item action Kamera-Zugriff aktivieren No comment provided by engineer. + + Enable chats with admins? + alert title + Enable disappearing messages by default. Verschwindende Nachrichten sind per Voreinstellung aktiviert. @@ -3246,6 +3420,10 @@ chat item action Sofortige Benachrichtigungen aktivieren? No comment provided by engineer. + + Enable link previews? + alert title + Enable lock Sperre aktivieren @@ -3363,6 +3541,7 @@ chat item action Enter channel name… + Kanalname eingeben… No comment provided by engineer. @@ -3392,6 +3571,7 @@ chat item action Enter relay name… + Relais-Name eingeben… No comment provided by engineer. @@ -3422,7 +3602,7 @@ chat item action Error Fehler - No comment provided by engineer. + conn error description Error aborting address change @@ -3451,6 +3631,7 @@ chat item action Error adding relay + Fehler beim Hinzufügen des Relais alert title @@ -3515,6 +3696,7 @@ chat item action Error creating channel + Fehler beim Erstellen des Kanals alert title @@ -3699,6 +3881,7 @@ chat item action Error saving channel profile + Fehler beim Speichern des Kanalprofils No comment provided by engineer. @@ -3766,6 +3949,10 @@ chat item action Fehler beim Setzen von Empfangsbestätigungen! No comment provided by engineer. + + Error sharing channel + alert title + Error starting chat Fehler beim Starten des Chats @@ -4134,6 +4321,10 @@ server test error Für alle Moderatoren No comment provided by engineer. + + For anyone to reach you + No comment provided by engineer. + For chat profile %@: Für das Chat-Profil %@: @@ -4281,6 +4472,7 @@ Fehler: %2$@ Get link + Link erhalten relay test step @@ -4346,7 +4538,7 @@ Fehler: %2$@ Group link Gruppen-Link - No comment provided by engineer. + chat link info line Group links @@ -4458,6 +4650,11 @@ Fehler: %2$@ Der Nachrichtenverlauf wird nicht an neue Gruppenmitglieder gesendet. No comment provided by engineer. + + History is not sent to new subscribers. + Der Nachrichtenverlauf wird nicht an neue Abonnenten gesendet. + No comment provided by engineer. + How SimpleX works Wie SimpleX funktioniert @@ -4705,9 +4902,9 @@ Weitere Verbesserungen sind bald verfügbar! Anfängliche Rolle No comment provided by engineer. - - Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat) - Installieren Sie [SimpleX Chat als Terminalanwendung](https://github.com/simplex-chat/simplex-chat) + + Install SimpleX Chat for terminal + Installieren Sie SimpleX Chat als Terminalanwendung No comment provided by engineer. @@ -4765,7 +4962,7 @@ Weitere Verbesserungen sind bald verfügbar! Invalid connection link Ungültiger Verbindungslink - No comment provided by engineer. + conn error description Invalid display name! @@ -4789,10 +4986,12 @@ Weitere Verbesserungen sind bald verfügbar! Invalid relay address! + Ungültige Relais-Adresse! alert title Invalid relay name! + Ungültiger Relais-Name! alert title @@ -4830,6 +5029,10 @@ Weitere Verbesserungen sind bald verfügbar! Mitglieder einladen No comment provided by engineer. + + Invite someone privately + No comment provided by engineer. + Invite to chat Zum Chat einladen @@ -4908,6 +5111,7 @@ Weitere Verbesserungen sind bald verfügbar! Join channel + Kanal beitreten No comment provided by engineer. @@ -4999,10 +5203,12 @@ Das ist Ihr Link für die Gruppe %@! Leave channel + Kanal verlassen No comment provided by engineer. Leave channel? + Kanal verlassen? No comment provided by engineer. @@ -5030,6 +5236,10 @@ Das ist Ihr Link für die Gruppe %@! Weniger Datenverkehr in mobilen Netzen. No comment provided by engineer. + + Let someone connect to you + No comment provided by engineer. + Let's talk in SimpleX Chat Lassen Sie uns in SimpleX Chat kommunizieren @@ -5050,6 +5260,10 @@ Das ist Ihr Link für die Gruppe %@! Verknüpfe Mobiltelefon- und Desktop-Apps! 🔗 No comment provided by engineer. + + Link signature verified. + owner verification + Linked desktop options Verknüpfte Desktop-Optionen @@ -5235,6 +5449,10 @@ Das ist Ihr Link für die Gruppe %@! Gruppenmitglieder können eine Reaktion auf Nachrichten geben. No comment provided by engineer. + + Members can chat with admins. + No comment provided by engineer. + Members can irreversibly delete sent messages. (24 hours) Gruppenmitglieder können gesendete Nachrichten unwiederbringlich löschen. (24 Stunden) @@ -5302,6 +5520,7 @@ Das ist Ihr Link für die Gruppe %@! Message error + Übertragungsfehler No comment provided by engineer. @@ -5399,6 +5618,14 @@ Das ist Ihr Link für die Gruppe %@! Die Nachrichten von %@ werden angezeigt! No comment provided by engineer. + + Messages in this channel are **not end-to-end encrypted**. Chat relays can see these messages. + No comment provided by engineer. + + + Messages in this channel are not end-to-end encrypted. Chat relays can see these messages. + E2EE info chat item + Messages in this chat will never be deleted. Nachrichten in diesem Chat werden nie gelöscht. @@ -5569,6 +5796,10 @@ Das ist Ihr Link für die Gruppe %@! Dezentralisiertes Netzwerk No comment provided by engineer. + + Network error + conn error description + Network issues - message expired after many attempts to send it. Netzwerk-Fehler - die Nachricht ist nach vielen Sende-Versuchen abgelaufen. @@ -5599,6 +5830,10 @@ Das ist Ihr Link für die Gruppe %@! Neu token status text + + New 1-time link + No comment provided by engineer. + New Passcode Neuer Zugangscode @@ -5626,6 +5861,7 @@ Das ist Ihr Link für die Gruppe %@! New chat relay + Neues Chat-Relais No comment provided by engineer. @@ -5698,6 +5934,10 @@ Das ist Ihr Link für die Gruppe %@! Nein No comment provided by engineer. + + No active relays + No comment provided by engineer. + No app password Kein App-Passwort @@ -5705,10 +5945,12 @@ Das ist Ihr Link für die Gruppe %@! No chat relays + Keine Chat-Relais No comment provided by engineer. No chat relays enabled. + Es sind keine Chat-Relais aktiviert. servers warning @@ -5861,8 +6103,13 @@ Das ist Ihr Link für die Gruppe %@! Keine Benutzerkennungen. No comment provided by engineer. + + Non-profit governance + No comment provided by engineer. + Not all relays connected + Es sind nicht alle Relais verbunden alert title @@ -5922,7 +6169,7 @@ Das ist Ihr Link für die Gruppe %@! OK OK - No comment provided by engineer. + alert button Off @@ -5946,6 +6193,10 @@ new chat action Einmal-Einladungslink No comment provided by engineer. + + One-time link + chat link info line + Onion hosts will be **required** for connection. Requires compatible VPN. @@ -5965,9 +6216,13 @@ Dies erfordert die Aktivierung eines VPNs. Onion-Hosts werden nicht verwendet. No comment provided by engineer. + + Only channel owners can change channel preferences. + No comment provided by engineer. + Only chat owners can change preferences. - Nur Chat-Eigentümer können die Präferenzen ändern. + Präferenzen können nur von Chat-Eigentümern geändert werden. No comment provided by engineer. @@ -6068,7 +6323,8 @@ Dies erfordert die Aktivierung eines VPNs. Open Öffnen - alert action + alert action +alert button Open Settings @@ -6082,6 +6338,7 @@ Dies erfordert die Aktivierung eines VPNs. Open channel + Kanal öffnen new chat action @@ -6104,6 +6361,10 @@ Dies erfordert die Aktivierung eines VPNs. Nutzungsbedingungen öffnen No comment provided by engineer. + + Open external link? + alert title + Open full link Vollständigen Link öffnen @@ -6126,6 +6387,7 @@ Dies erfordert die Aktivierung eines VPNs. Open new channel + Neuen Kanal öffnen new chat action @@ -6193,6 +6455,10 @@ Dies erfordert die Aktivierung eines VPNs. Oder teilen Sie diesen Datei-Link sicher No comment provided by engineer. + + Or show QR in person or via video call. + No comment provided by engineer. + Or show this code Oder diesen QR-Code anzeigen @@ -6203,6 +6469,10 @@ Dies erfordert die Aktivierung eines VPNs. Oder zum privaten Teilen No comment provided by engineer. + + Or use this QR - print or show online. + No comment provided by engineer. + Organize chats into lists Chats in Listen verwalten @@ -6222,10 +6492,16 @@ Dies erfordert die Aktivierung eines VPNs. Owner + Eigentümer No comment provided by engineer. Owners + Eigentümer + No comment provided by engineer. + + + Ownership: you can run your own relays. No comment provided by engineer. @@ -6283,6 +6559,10 @@ Dies erfordert die Aktivierung eines VPNs. Bild einfügen No comment provided by engineer. + + Paste link / Scan + No comment provided by engineer. + Paste link to connect! Zum Verbinden den Link einfügen! @@ -6439,10 +6719,12 @@ Fehler: %@ Preset relay address + Voreingestellte Relais-Adresse No comment provided by engineer. Preset relay name + Voreingestellter Relais-Name No comment provided by engineer. @@ -6485,6 +6767,10 @@ Fehler: %@ 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. @@ -6532,6 +6818,7 @@ Fehler: %@ Proceed + Fortfahren alert action @@ -6559,9 +6846,8 @@ Fehler: %@ Profil-Design No comment provided by engineer. - - Profile update will be sent to your contacts. - Profil-Aktualisierung wird an Ihre Kontakte gesendet. + + Profile update will be sent to your SimpleX contacts. alert message @@ -6569,6 +6855,10 @@ Fehler: %@ Audio-/Video-Anrufe nicht erlauben. No comment provided by engineer. + + Prohibit chats with admins. + No comment provided by engineer. + Prohibit irreversible message deletion. Unwiederbringliches löschen von Nachrichten nicht erlauben. @@ -6599,6 +6889,11 @@ Fehler: %@ Das Senden von Direktnachrichten an Gruppenmitglieder nicht erlauben. No comment provided by engineer. + + Prohibit sending direct messages to subscribers. + Das Senden von Direktnachrichten an Abonnenten nicht erlauben. + No comment provided by engineer. + Prohibit sending disappearing messages. Das Senden von verschwindenden Nachrichten nicht erlauben. @@ -6666,6 +6961,10 @@ Aktivieren Sie es in den *Netzwerk & Server* Einstellungen. Der Proxy benötigt ein Passwort No comment provided by engineer. + + Public channels - speak freely 🚀 + No comment provided by engineer. + Push notifications Push-Benachrichtigungen @@ -6706,24 +7005,14 @@ Aktivieren Sie es in den *Netzwerk & Server* Einstellungen. Mehr erfahren No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). - Lesen Sie mehr dazu im [Benutzerhandbuch](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). + + Read more in User Guide. + Lesen Sie mehr dazu im Benutzerhandbuch. No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - Mehr dazu in der [Benutzeranleitung](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses) lesen. - No comment provided by engineer. - - - Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - Mehr dazu in der [Benutzeranleitung](https://simplex.chat/docs/guide/readme.html#connect-to-friends) lesen. - No comment provided by engineer. - - - Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme). - Erfahren Sie in unserem [GitHub-Repository](https://github.com/simplex-chat/simplex-chat#readme) mehr dazu. + + Read more in our GitHub repository. + Erfahren Sie in unserem GitHub-Repository mehr dazu. No comment provided by engineer. @@ -6885,20 +7174,28 @@ swipe action Relay + Relais No comment provided by engineer. Relay address + Relais-Adresse alert title Relay connection failed + Relais-Verbindung fehlgeschlagen alert title Relay link + Relais-Link No comment provided by engineer. + + Relay results: + alert message + Relay server is only used if necessary. Another party can observe your IP address. Relais-Server werden nur genutzt, wenn sie benötigt werden. Ihre IP-Adresse kann von Anderen erfasst werden. @@ -6911,6 +7208,11 @@ swipe action Relay test failed! + Relais-Test fehlgeschlagen! + No comment provided by engineer. + + + Reliability: many relays per channel. No comment provided by engineer. @@ -6955,10 +7257,12 @@ swipe action Remove subscriber + Abonnent entfernen No comment provided by engineer. Remove subscriber? + Abonnent entfernen? alert title @@ -7196,6 +7500,10 @@ swipe action SOCKS-Proxy No comment provided by engineer. + + Safe web links + No comment provided by engineer. + Safely receive files Dateien sicher herunterladen @@ -7224,6 +7532,7 @@ chat item action Save (and notify subscribers) + Speichern (Abonnenten benachrichtigen) alert button @@ -7241,6 +7550,10 @@ chat item action Speichern und Gruppenmitglieder benachrichtigen No comment provided by engineer. + + Save and notify subscribers + No comment provided by engineer. + Save and reconnect Speichern und neu verbinden @@ -7253,10 +7566,12 @@ chat item action Save channel profile + Kanalprofil speichern No comment provided by engineer. Save channel profile? + Kanalprofil speichern? alert title @@ -7439,6 +7754,10 @@ chat item action Sicherheitscode No comment provided by engineer. + + Security: owners hold channel keys. + No comment provided by engineer. + Select Auswählen @@ -7456,7 +7775,7 @@ chat item action Selected chat preferences prohibit this message. - Diese Nachricht ist wegen der gewählten Chat-Einstellungen nicht erlaubt. + Diese Nachricht ist wegen der gewählten Chat-Präferenzen nicht erlaubt. No comment provided by engineer. @@ -7516,7 +7835,7 @@ chat item action Send link previews - Link-Vorschau senden + Linkvorschau senden No comment provided by engineer. @@ -7569,6 +7888,10 @@ chat item action Anfrage ohne Nachricht senden No comment provided by engineer. + + Send the link via any messenger - it's secure. Ask to paste into SimpleX. + No comment provided by engineer. + Send them from gallery or custom keyboards. Senden Sie diese aus dem Fotoalbum oder von individuellen Tastaturen. @@ -7579,6 +7902,11 @@ chat item action Bis zu 100 der letzten Nachrichten an neue Gruppenmitglieder senden. No comment provided by engineer. + + Send up to 100 last messages to new subscribers. + Bis zu 100 der letzten Nachrichten an neue Abonnenten senden. + No comment provided by engineer. + Send your private feedback to groups. Senden Sie Ihr privates Feedback an Gruppen. @@ -7594,6 +7922,10 @@ chat item action Der Absender hat möglicherweise die Verbindungsanfrage gelöscht. No comment provided by engineer. + + Sending a link preview may reveal your IP address to the website. You can change this in Privacy settings later. + alert message + Sending delivery receipts will be enabled for all contacts in all visible chat profiles. Das Senden von Empfangsbestätigungen an alle Kontakte in allen sichtbaren Chat-Profilen wird aktiviert. @@ -7721,6 +8053,7 @@ chat item action Server requires authorization to connect to relay, check password. + Der Server erfordert eine Autorisierung, um eine Verbindung zum Relais herzustellen. Bitte Passwort überprüfen. relay test error @@ -7889,11 +8222,14 @@ chat item action Die Adresse öffentlich teilen No comment provided by engineer. - - Share address with contacts? - Die Adresse mit Kontakten teilen? + + Share address with SimpleX contacts? alert title + + Share channel + No comment provided by engineer. + Share from other apps. Aus anderen Apps heraus teilen. @@ -7921,6 +8257,7 @@ chat item action Share relay address + Relais-Adresse teilen No comment provided by engineer. @@ -7933,9 +8270,12 @@ chat item action Mit SimpleX teilen No comment provided by engineer. - - Share with contacts - Mit Kontakten teilen + + Share via chat + No comment provided by engineer. + + + Share with SimpleX contacts No comment provided by engineer. @@ -8065,7 +8405,7 @@ chat item action SimpleX channel link - SimpleX-Kanal-Link + SimpleX-Kanallink simplex link type @@ -8110,6 +8450,7 @@ chat item action SimpleX relay address + SimpleX Relais-Adresse simplex link type @@ -8185,6 +8526,11 @@ report reason Quadratisch, kreisförmig oder irgendetwas dazwischen. No comment provided by engineer. + + Star on GitHub + Stern auf GitHub vergeben + No comment provided by engineer. + Start chat Starten Sie den Chat @@ -8287,19 +8633,73 @@ report reason Subscriber + Abonnent No comment provided by engineer. + + Subscriber reports + Abonnenten-Meldungen + chat feature + Subscriber will be removed from channel - this cannot be undone! + Abonnent wird aus dem Kanal entfernt. Dies kann nicht rückgängig gemacht werden! alert message Subscribers + Abonnenten + No comment provided by engineer. + + + Subscribers can add message reactions. + Abonnenten können eine Reaktion auf Nachrichten geben. + No comment provided by engineer. + + + Subscribers can chat with admins. + No comment provided by engineer. + + + Subscribers can irreversibly delete sent messages. (24 hours) + Abonnenten können gesendete Nachrichten unwiederbringlich löschen. (24 Stunden) + No comment provided by engineer. + + + Subscribers can report messsages to moderators. + Abonnenten können Nachrichten an Moderatoren melden. + No comment provided by engineer. + + + Subscribers can send SimpleX links. + Abonnenten können SimpleX-Links versenden. + No comment provided by engineer. + + + Subscribers can send direct messages. + Abonnenten können Direktnachrichten versenden. + No comment provided by engineer. + + + Subscribers can send disappearing messages. + Abonnenten können verschwindende Nachrichten versenden. + No comment provided by engineer. + + + Subscribers can send files and media. + Abonnenten können Dateien und Medien versenden. + No comment provided by engineer. + + + Subscribers can send voice messages. + Abonnenten können Sprachnachrichten versenden. No comment provided by engineer. Subscribers use relay link to connect to the channel. Relay address was used to set up this relay for the channel. + Abonnenten verbinden sich über den Relais‑Link mit dem Kanal. +Die Relais-Adresse wurde zur Einrichtung dieses Relais für diesen Kanal verwendet. No comment provided by engineer. @@ -8382,6 +8782,10 @@ Relay address was used to set up this relay for the channel. Machen Sie ein Foto No comment provided by engineer. + + Talk to someone + No comment provided by engineer. + Tap Connect to chat Verbinden tippen, um zu chatten @@ -8397,13 +8801,9 @@ Relay address was used to set up this relay for the channel. Verbinden tippen, um den Bot zu nutzen. No comment provided by engineer. - - Tap Create SimpleX address in the menu to create it later. - Tippen Sie im Menü auf SimpleX-Adresse erstellen, um sie später zu erstellen. - No comment provided by engineer. - Tap Join channel + Tippen, um dem Kanal beizutreten No comment provided by engineer. @@ -8423,7 +8823,7 @@ Relay address was used to set up this relay for the channel. Tap to activate profile. - Zum Aktivieren des Profils tippen. + Tippen, um das Profil zu aktivieren. No comment provided by engineer. @@ -8436,9 +8836,13 @@ Relay address was used to set up this relay for the channel. Zum Inkognito beitreten tippen No comment provided by engineer. + + Tap to open + No comment provided by engineer. + Tap to paste link - Zum Link einfügen tippen + Tippen, um den Link einzufügen No comment provided by engineer. @@ -8464,6 +8868,7 @@ server test failure Test relay + Relais testen No comment provided by engineer. @@ -8520,6 +8925,7 @@ Dies kann passieren, wenn es einen Fehler gegeben hat oder die Verbindung kompro The app removed this message after %lld attempts to receive it. + Die App hat diese Nachricht nach %lld Empfangsversuchen entfernt. No comment provided by engineer. @@ -8537,6 +8943,10 @@ Dies kann passieren, wenn es einen Fehler gegeben hat oder die Verbindung kompro Der von Ihnen gescannte Code ist kein SimpleX-Link-QR-Code. No comment provided by engineer. + + The connection reached the limit of undelivered messages + conn error description + The connection reached the limit of undelivered messages, your contact may be offline. Diese Verbindung hat das Limit der nicht ausgelieferten Nachrichten erreicht. Ihr Kontakt ist möglicherweise offline. @@ -8714,10 +9124,12 @@ Dies kann passieren, wenn es einen Fehler gegeben hat oder die Verbindung kompro This is a chat relay address, it cannot be used to connect. + Dies ist eine Chat‑Relais-Adresse, welche nicht zum Verbinden verwendet werden kann. alert message This is your link for channel %@! + Dies ist Ihr Link für den Kanal %@! new chat action @@ -8770,6 +9182,10 @@ Dies kann passieren, wenn es einen Fehler gegeben hat oder die Verbindung kompro Um unerwünschte Nachrichten zu verbergen. No comment provided by engineer. + + To make SimpleX Network last. + No comment provided by engineer. + To make a new connection Um eine Verbindung mit einem neuen Kontakt zu erstellen @@ -8944,6 +9360,7 @@ Sie werden aufgefordert, die Authentifizierung abzuschließen, bevor diese Funkt Unblock subscriber for all? + Abonnent für alle freigeben? No comment provided by engineer. @@ -9046,13 +9463,18 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s Unsupported connection link Verbindungs-Link wird nicht unterstützt - No comment provided by engineer. + conn error description Up to 100 last messages are sent to new members. Bis zu 100 der letzten Nachrichten werden an neue Mitglieder gesendet. No comment provided by engineer. + + Up to 100 last messages are sent to new subscribers. + Bis zu 100 der letzten Nachrichten werden an neue Abonnenten gesendet. + No comment provided by engineer. + Update Aktualisieren @@ -9200,6 +9622,7 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s Use for new channels + Für neue Kanäle verwenden No comment provided by engineer. @@ -9244,6 +9667,7 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s Use relay + Relais verwenden No comment provided by engineer. @@ -9266,6 +9690,10 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s Die App mit einer Hand bedienen. No comment provided by engineer. + + Use this address in your social media profile, website, or email signature. + No comment provided by engineer. + Use web port Web-Port nutzen @@ -9288,6 +9716,7 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s Verify + Überprüfen relay test step @@ -9412,12 +9841,18 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s Wait + Abwarten alert action Wait response + Antwort abwarten relay test step + + Waiting for channel owner to add relays. + No comment provided by engineer. + Waiting for desktop... Es wird auf den Desktop gewartet... @@ -9458,6 +9893,10 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s Warnung: Sie könnten einige Daten verlieren! No comment provided by engineer. + + We made connecting simpler for new users. + No comment provided by engineer. + WebRTC ICE servers WebRTC ICE-Server @@ -9722,6 +10161,7 @@ Verbindungsanfrage wiederholen? You can share a link or a QR code - anybody will be able to join the channel. + Sie können einen Link oder QR-Code teilen - damit kann jeder dem Kanal beitreten. No comment provided by engineer. @@ -9771,6 +10211,7 @@ Verbindungsanfrage wiederholen? You connected to the channel via this relay link. + Sie haben sich über diesen Relais‑Link mit dem Kanal verbunden. No comment provided by engineer. @@ -9887,6 +10328,7 @@ Verbindungsanfrage wiederholen? You will stop receiving messages from this channel. Chat history will be preserved. + Sie werden keine Nachrichten mehr aus diesem Kanal erhalten. Der Chatverlauf bleibt erhalten. No comment provided by engineer. @@ -9936,6 +10378,7 @@ Verbindungsanfrage wiederholen? Your channel + Ihr Kanal No comment provided by engineer. @@ -10026,6 +10469,8 @@ Verbindungsanfrage wiederholen? Your profile **%@** will be shared with channel relays and subscribers. Relays can access channel messages. + Ihr Profil **%@** wird mit Kanal‑Relais und Abonnenten geteilt. +Relais können auf Kanalnachrichten zugreifen. No comment provided by engineer. @@ -10048,6 +10493,10 @@ Relays can access channel messages. Ihr Profil wurde geändert. Wenn Sie es speichern, wird das aktualisierte Profil an alle Ihre Kontakte gesendet. alert message + + Your public address + No comment provided by engineer. + Your random profile Ihr Zufallsprofil @@ -10055,10 +10504,12 @@ Relays can access channel messages. Your relay address + Ihre Relais-Adresse No comment provided by engineer. Your relay name + Ihr Relais-Name No comment provided by engineer. @@ -10076,21 +10527,11 @@ Relays can access channel messages. Einstellungen No comment provided by engineer. - - [Contribute](https://github.com/simplex-chat/simplex-chat#contribute) - [Unterstützen Sie uns](https://github.com/simplex-chat/simplex-chat#contribute) - No comment provided by engineer. - [Send us email](mailto:chat@simplex.chat) [Senden Sie uns eine E-Mail](mailto:chat@simplex.chat) No comment provided by engineer. - - [Star on GitHub](https://github.com/simplex-chat/simplex-chat) - [Stern auf GitHub vergeben](https://github.com/simplex-chat/simplex-chat) - No comment provided by engineer. - \_italic_ \_kursiv_ @@ -10108,6 +10549,7 @@ Relays can access channel messages. accepted + Angenommen No comment provided by engineer. @@ -10132,6 +10574,7 @@ Relays can access channel messages. active + Aktiv No comment provided by engineer. @@ -10245,6 +10688,10 @@ marked deleted chat item preview text Anrufen… call status + + can't broadcast + No comment provided by engineer. + can't send messages Es können keine Nachrichten gesendet werden @@ -10282,10 +10729,12 @@ marked deleted chat item preview text channel + Kanal shown as sender role for channel messages channel profile updated + Kanalprofil wurde aktualisiert snd group event chat item @@ -10436,6 +10885,7 @@ pref value deleted channel + Kanal gelöscht rcv group event chat item @@ -10550,6 +11000,7 @@ pref value error: %@ + Fehler: %@ receive error chat item @@ -10684,6 +11135,7 @@ pref value link + Link No comment provided by engineer. @@ -10758,6 +11210,7 @@ pref value new + Neu No comment provided by engineer. @@ -10885,6 +11338,7 @@ time to disappear relay + Relais member role @@ -10899,8 +11353,13 @@ time to disappear removed (%d attempts) + Entfernt (%d Versuche) receive error chat item + + removed by operator + No comment provided by engineer. + removed contact address Die Kontaktadresse wurde entfernt @@ -11057,6 +11516,7 @@ Zuletzt empfangene Nachricht: %2$@ updated channel profile + Kanalprofil aktualisiert rcv group event chat item @@ -11081,6 +11541,7 @@ Zuletzt empfangene Nachricht: %2$@ via %@ + via %@ relay hostname @@ -11160,6 +11621,7 @@ Zuletzt empfangene Nachricht: %2$@ you are subscriber + Sie sind Abonnent No comment provided by engineer. @@ -11222,6 +11684,10 @@ Zuletzt empfangene Nachricht: %2$@ \~durchstreichen~ No comment provided by engineer. + + ⚠️ Signature verification failed: %@. + owner verification + @@ -11479,7 +11945,7 @@ Zuletzt empfangene Nachricht: %2$@ Selected chat preferences prohibit this message. - Die gewählten Chat-Einstellungen erlauben diese Nachricht nicht. + Diese Nachricht ist wegen der gewählten Chat-Präferenzen nicht erlaubt. No comment provided by engineer. 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 88b9939944..9ebdad1759 100644 --- a/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff +++ b/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff @@ -185,10 +185,23 @@ %d months time interval - - %d relays - %d relays - channel relay bar + + %d relays failed + %d relays failed + channel relay bar +channel subscriber relay bar + + + %d relays not active + %d relays not active + channel relay bar +channel subscriber relay bar + + + %d relays removed + %d relays removed + channel relay bar +channel subscriber relay bar %d sec @@ -226,11 +239,21 @@ channel creation progress channel relay bar progress + + %1$d/%2$d relays active, %3$d errors + %1$d/%2$d relays active, %3$d errors + channel relay bar + %1$d/%2$d relays active, %3$d failed %1$d/%2$d relays active, %3$d failed channel creation progress with errors -channel relay bar progress with errors +channel relay bar + + + %1$d/%2$d relays active, %3$d removed + %1$d/%2$d relays active, %3$d removed + channel relay bar %1$d/%2$d relays connected @@ -240,7 +263,17 @@ channel relay bar progress with errors %1$d/%2$d relays connected, %3$d errors %1$d/%2$d relays connected, %3$d errors - channel subscriber relay bar progress with errors + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d failed + %1$d/%2$d relays connected, %3$d failed + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d removed + %1$d/%2$d relays connected, %3$d removed + channel subscriber relay bar %lld @@ -357,11 +390,21 @@ channel relay bar progress with errors %u messages skipped. No comment provided by engineer. + + (from owner) + (from owner) + chat link info line + (new) (new) No comment provided by engineer. + + (signed) + (signed) + chat link info line + (this device v%@) (this device v%@) @@ -455,6 +498,15 @@ channel relay bar progress with errors - and more! No comment provided by engineer. + + - opt-in to send link previews. +- prevent hyperlink phishing. +- remove link tracking. + - opt-in to send link previews. +- prevent hyperlink phishing. +- remove link tracking. + No comment provided by engineer. + - optionally notify deleted contacts. - profile names with spaces. @@ -553,6 +605,11 @@ time interval A few more things No comment provided by engineer. + + A link for one person to connect + A link for one person to connect + No comment provided by engineer. + A new contact A new contact @@ -679,9 +736,9 @@ swipe action Active connections No comment provided by engineer. - - Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts. - Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts. + + Add address to your profile, so that your SimpleX contacts can share it with other people. Profile update will be sent to your SimpleX contacts. + Add address to your profile, so that your SimpleX contacts can share it with other people. Profile update will be sent to your SimpleX contacts. No comment provided by engineer. @@ -749,6 +806,11 @@ swipe action Added message servers No comment provided by engineer. + + Adding relays will be supported later. + Adding relays will be supported later. + No comment provided by engineer. + Additional accent Additional accent @@ -869,6 +931,16 @@ swipe action All profiles profile dropdown + + All relays failed + All relays failed + No comment provided by engineer. + + + All relays removed + All relays removed + No comment provided by engineer. + All reports will be archived for you. All reports will be archived for you. @@ -929,6 +1001,11 @@ swipe action Allow irreversible message deletion only if your contact allows it to you. (24 hours) No comment provided by engineer. + + Allow members to chat with admins. + Allow members to chat with admins. + No comment provided by engineer. + Allow message reactions only if your contact allows them. Allow message reactions only if your contact allows them. @@ -944,6 +1021,11 @@ swipe action Allow sending direct messages to members. No comment provided by engineer. + + Allow sending direct messages to subscribers. + Allow sending direct messages to subscribers. + No comment provided by engineer. + Allow sending disappearing messages. Allow sending disappearing messages. @@ -954,6 +1036,11 @@ swipe action Allow sharing No comment provided by engineer. + + Allow subscribers to chat with admins. + Allow subscribers to chat with admins. + No comment provided by engineer. + Allow to irreversibly delete sent messages. (24 hours) Allow to irreversibly delete sent messages. (24 hours) @@ -1432,7 +1519,7 @@ swipe action Business address Business address - No comment provided by engineer. + chat link info line Business chats @@ -1626,6 +1713,12 @@ set passcode view Channel full name (optional) No comment provided by engineer. + + Channel has no active relays. Please try to join later. + Channel has no active relays. Please try to join later. + alert message +alert subtitle + Channel image Channel image @@ -1634,6 +1727,11 @@ set passcode view Channel link Channel link + chat link info line + + + Channel preferences + Channel preferences No comment provided by engineer. @@ -1651,6 +1749,11 @@ set passcode view Channel profile was changed. If you save it, the updated profile will be sent to channel subscribers. alert message + + Channel temporarily unavailable + Channel temporarily unavailable + alert title + Channel will be deleted for all subscribers - this cannot be undone! Channel will be deleted for all subscribers - this cannot be undone! @@ -1666,6 +1769,11 @@ set passcode view Channel will start working with %1$d of %2$d relays. Proceed? alert message + + Channels + Channels + No comment provided by engineer. + Chat Chat @@ -1789,7 +1897,8 @@ set passcode view Chat with admins Chat with admins - chat toolbar + chat feature +chat toolbar Chat with member @@ -1806,11 +1915,26 @@ set passcode view Chats No comment provided by engineer. + + Chats with admins are prohibited. + Chats with admins are prohibited. + No comment provided by engineer. + + + Chats with admins in public channels have no E2E encryption - use only with trusted chat relays. + Chats with admins in public channels have no E2E encryption - use only with trusted chat relays. + alert message + Chats with members Chats with members No comment provided by engineer. + + Chats with members are disabled + Chats with members are disabled + No comment provided by engineer. + Check messages every 20 min. Check messages every 20 min. @@ -2091,6 +2215,11 @@ This is your own one-time link! Connect via link new chat sheet title + + Connect via link or QR code + Connect via link or QR code + No comment provided by engineer. + Connect via one-time link Connect via one-time link @@ -2101,6 +2230,11 @@ This is your own one-time link! Connect with %@ new chat action + + Connect with someone + Connect with someone + No comment provided by engineer. + Connected Connected @@ -2169,7 +2303,7 @@ This is your own one-time link! Connection error (AUTH) Connection error (AUTH) - No comment provided by engineer. + conn error description Connection failed @@ -2228,6 +2362,11 @@ This is your own one-time link! Connections No comment provided by engineer. + + Contact address + Contact address + chat link info line + Contact allows Contact allows @@ -2298,6 +2437,11 @@ This is your own one-time link! Continue No comment provided by engineer. + + Contribute + Contribute + No comment provided by engineer. + Conversation deleted! Conversation deleted! @@ -2328,11 +2472,6 @@ This is your own one-time link! Correct name to %@? alert message - - Create - Create - No comment provided by engineer. - Create 1-time link Create 1-time link @@ -2408,6 +2547,11 @@ This is your own one-time link! Create your profile No comment provided by engineer. + + Create your public address + Create your public address + No comment provided by engineer. + Created Created @@ -2998,6 +3142,16 @@ alert button Direct messages between members are prohibited. No comment provided by engineer. + + Direct messages between subscribers are prohibited. + Direct messages between subscribers are prohibited. + No comment provided by engineer. + + + Disable + Disable + alert button + Disable (keep overrides) Disable (keep overrides) @@ -3103,6 +3257,11 @@ alert button Do not send history to new members. No comment provided by engineer. + + Do not send history to new subscribers. + Do not send history to new subscribers. + No comment provided by engineer. + Do not use credentials with proxy. Do not use credentials with proxy. @@ -3204,6 +3363,11 @@ chat item action E2E encrypted notifications. No comment provided by engineer. + + Easier to invite your friends 👋 + Easier to invite your friends 👋 + No comment provided by engineer. + Edit Edit @@ -3227,7 +3391,7 @@ chat item action Enable Enable - No comment provided by engineer. + alert button Enable (keep overrides) @@ -3264,6 +3428,11 @@ chat item action Enable camera access No comment provided by engineer. + + Enable chats with admins? + Enable chats with admins? + alert title + Enable disappearing messages by default. Enable disappearing messages by default. @@ -3284,6 +3453,11 @@ chat item action Enable instant notifications? No comment provided by engineer. + + Enable link previews? + Enable link previews? + alert title + Enable lock Enable lock @@ -3462,7 +3636,7 @@ chat item action Error Error - No comment provided by engineer. + conn error description Error aborting address change @@ -3809,6 +3983,11 @@ chat item action Error setting delivery receipts! No comment provided by engineer. + + Error sharing channel + Error sharing channel + alert title + Error starting chat Error starting chat @@ -4177,6 +4356,11 @@ server test error For all moderators No comment provided by engineer. + + For anyone to reach you + For anyone to reach you + No comment provided by engineer. + For chat profile %@: For chat profile %@: @@ -4390,7 +4574,7 @@ Error: %2$@ Group link Group link - No comment provided by engineer. + chat link info line Group links @@ -4502,6 +4686,11 @@ Error: %2$@ History is not sent to new members. No comment provided by engineer. + + History is not sent to new subscribers. + History is not sent to new subscribers. + No comment provided by engineer. + How SimpleX works How SimpleX works @@ -4749,9 +4938,9 @@ More improvements are coming soon! Initial role No comment provided by engineer. - - Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat) - Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat) + + Install SimpleX Chat for terminal + Install SimpleX Chat for terminal No comment provided by engineer. @@ -4809,7 +4998,7 @@ More improvements are coming soon! Invalid connection link Invalid connection link - No comment provided by engineer. + conn error description Invalid display name! @@ -4876,6 +5065,11 @@ More improvements are coming soon! Invite members No comment provided by engineer. + + Invite someone privately + Invite someone privately + No comment provided by engineer. + Invite to chat Invite to chat @@ -5079,6 +5273,11 @@ This is your link for group %@! Less traffic on mobile networks. No comment provided by engineer. + + Let someone connect to you + Let someone connect to you + No comment provided by engineer. + Let's talk in SimpleX Chat Let's talk in SimpleX Chat @@ -5099,6 +5298,11 @@ This is your link for group %@! Link mobile and desktop apps! 🔗 No comment provided by engineer. + + Link signature verified. + Link signature verified. + owner verification + Linked desktop options Linked desktop options @@ -5284,6 +5488,11 @@ This is your link for group %@! Members can add message reactions. No comment provided by engineer. + + Members can chat with admins. + Members can chat with admins. + No comment provided by engineer. + Members can irreversibly delete sent messages. (24 hours) Members can irreversibly delete sent messages. (24 hours) @@ -5449,6 +5658,16 @@ This is your link for group %@! Messages from %@ will be shown! No comment provided by engineer. + + Messages in this channel are **not end-to-end encrypted**. Chat relays can see these messages. + Messages in this channel are **not end-to-end encrypted**. Chat relays can see these messages. + No comment provided by engineer. + + + Messages in this channel are not end-to-end encrypted. Chat relays can see these messages. + Messages in this channel are not end-to-end encrypted. Chat relays can see these messages. + E2EE info chat item + Messages in this chat will never be deleted. Messages in this chat will never be deleted. @@ -5619,6 +5838,11 @@ This is your link for group %@! Network decentralization No comment provided by engineer. + + Network error + Network error + conn error description + Network issues - message expired after many attempts to send it. Network issues - message expired after many attempts to send it. @@ -5649,6 +5873,11 @@ This is your link for group %@! New token status text + + New 1-time link + New 1-time link + No comment provided by engineer. + New Passcode New Passcode @@ -5749,6 +5978,11 @@ This is your link for group %@! No No comment provided by engineer. + + No active relays + No active relays + No comment provided by engineer. + No app password No app password @@ -5914,6 +6148,11 @@ This is your link for group %@! No user identifiers. No comment provided by engineer. + + Non-profit governance + Non-profit governance + No comment provided by engineer. + Not all relays connected Not all relays connected @@ -5976,7 +6215,7 @@ This is your link for group %@! OK OK - No comment provided by engineer. + alert button Off @@ -6000,6 +6239,11 @@ new chat action One-time invitation link No comment provided by engineer. + + One-time link + One-time link + chat link info line + Onion hosts will be **required** for connection. Requires compatible VPN. @@ -6019,6 +6263,11 @@ Requires compatible VPN. Onion hosts will not be used. No comment provided by engineer. + + Only channel owners can change channel preferences. + Only channel owners can change channel preferences. + No comment provided by engineer. + Only chat owners can change preferences. Only chat owners can change preferences. @@ -6122,7 +6371,8 @@ Requires compatible VPN. Open Open - alert action + alert action +alert button Open Settings @@ -6159,6 +6409,11 @@ Requires compatible VPN. Open conditions No comment provided by engineer. + + Open external link? + Open external link? + alert title + Open full link Open full link @@ -6249,6 +6504,11 @@ Requires compatible VPN. Or securely share this file link No comment provided by engineer. + + Or show QR in person or via video call. + Or show QR in person or via video call. + No comment provided by engineer. + Or show this code Or show this code @@ -6259,6 +6519,11 @@ Requires compatible VPN. Or to share privately No comment provided by engineer. + + Or use this QR - print or show online. + Or use this QR - print or show online. + No comment provided by engineer. + Organize chats into lists Organize chats into lists @@ -6286,6 +6551,11 @@ Requires compatible VPN. Owners No comment provided by engineer. + + Ownership: you can run your own relays. + Ownership: you can run your own relays. + No comment provided by engineer. + PING count PING count @@ -6341,6 +6611,11 @@ Requires compatible VPN. Paste image No comment provided by engineer. + + Paste link / Scan + Paste link / Scan + No comment provided by engineer. + Paste link to connect! Paste link to connect! @@ -6545,6 +6820,11 @@ Error: %@ 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. @@ -6620,9 +6900,9 @@ Error: %@ Profile theme No comment provided by engineer. - - Profile update will be sent to your contacts. - Profile update will be sent to your contacts. + + Profile update will be sent to your SimpleX contacts. + Profile update will be sent to your SimpleX contacts. alert message @@ -6630,6 +6910,11 @@ Error: %@ Prohibit audio/video calls. No comment provided by engineer. + + Prohibit chats with admins. + Prohibit chats with admins. + No comment provided by engineer. + Prohibit irreversible message deletion. Prohibit irreversible message deletion. @@ -6660,6 +6945,11 @@ Error: %@ Prohibit sending direct messages to members. No comment provided by engineer. + + Prohibit sending direct messages to subscribers. + Prohibit sending direct messages to subscribers. + No comment provided by engineer. + Prohibit sending disappearing messages. Prohibit sending disappearing messages. @@ -6727,6 +7017,11 @@ Enable in *Network & servers* settings. Proxy requires password No comment provided by engineer. + + Public channels - speak freely 🚀 + Public channels - speak freely 🚀 + No comment provided by engineer. + Push notifications Push notifications @@ -6767,24 +7062,14 @@ Enable in *Network & servers* settings. Read more No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). - Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). + + Read more in User Guide. + Read more in User Guide. No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - No comment provided by engineer. - - - Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - No comment provided by engineer. - - - Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme). - Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme). + + Read more in our GitHub repository. + Read more in our GitHub repository. No comment provided by engineer. @@ -6964,6 +7249,11 @@ swipe action Relay link No comment provided by engineer. + + Relay results: + Relay results: + alert message + Relay server is only used if necessary. Another party can observe your IP address. Relay server is only used if necessary. Another party can observe your IP address. @@ -6979,6 +7269,11 @@ swipe action Relay test failed! No comment provided by engineer. + + Reliability: many relays per channel. + Reliability: many relays per channel. + No comment provided by engineer. + Remove Remove @@ -7264,6 +7559,11 @@ swipe action SOCKS proxy No comment provided by engineer. + + Safe web links + Safe web links + No comment provided by engineer. + Safely receive files Safely receive files @@ -7310,6 +7610,11 @@ chat item action Save and notify group members No comment provided by engineer. + + Save and notify subscribers + Save and notify subscribers + No comment provided by engineer. + Save and reconnect Save and reconnect @@ -7510,6 +7815,11 @@ chat item action Security code No comment provided by engineer. + + Security: owners hold channel keys. + Security: owners hold channel keys. + No comment provided by engineer. + Select Select @@ -7640,6 +7950,11 @@ chat item action Send request without message No comment provided by engineer. + + Send the link via any messenger - it's secure. Ask to paste into SimpleX. + Send the link via any messenger - it's secure. Ask to paste into SimpleX. + No comment provided by engineer. + Send them from gallery or custom keyboards. Send them from gallery or custom keyboards. @@ -7650,6 +7965,11 @@ chat item action Send up to 100 last messages to new members. No comment provided by engineer. + + Send up to 100 last messages to new subscribers. + Send up to 100 last messages to new subscribers. + No comment provided by engineer. + Send your private feedback to groups. Send your private feedback to groups. @@ -7665,6 +7985,11 @@ chat item action Sender may have deleted the connection request. No comment provided by engineer. + + Sending a link preview may reveal your IP address to the website. You can change this in Privacy settings later. + Sending a link preview may reveal your IP address to the website. You can change this in Privacy settings later. + alert message + Sending delivery receipts will be enabled for all contacts in all visible chat profiles. Sending delivery receipts will be enabled for all contacts in all visible chat profiles. @@ -7961,11 +8286,16 @@ chat item action Share address publicly No comment provided by engineer. - - Share address with contacts? - Share address with contacts? + + Share address with SimpleX contacts? + Share address with SimpleX contacts? alert title + + Share channel + Share channel + No comment provided by engineer. + Share from other apps. Share from other apps. @@ -8006,9 +8336,14 @@ chat item action Share to SimpleX No comment provided by engineer. - - Share with contacts - Share with contacts + + Share via chat + Share via chat + No comment provided by engineer. + + + Share with SimpleX contacts + Share with SimpleX contacts No comment provided by engineer. @@ -8259,6 +8594,11 @@ report reason Square, circle, or anything in between. No comment provided by engineer. + + Star on GitHub + Star on GitHub + No comment provided by engineer. + Start chat Start chat @@ -8364,6 +8704,11 @@ report reason Subscriber No comment provided by engineer. + + Subscriber reports + Subscriber reports + chat feature + Subscriber will be removed from channel - this cannot be undone! Subscriber will be removed from channel - this cannot be undone! @@ -8374,6 +8719,51 @@ report reason Subscribers No comment provided by engineer. + + Subscribers can add message reactions. + Subscribers can add message reactions. + No comment provided by engineer. + + + Subscribers can chat with admins. + Subscribers can chat with admins. + No comment provided by engineer. + + + Subscribers can irreversibly delete sent messages. (24 hours) + Subscribers can irreversibly delete sent messages. (24 hours) + No comment provided by engineer. + + + Subscribers can report messsages to moderators. + Subscribers can report messsages to moderators. + No comment provided by engineer. + + + Subscribers can send SimpleX links. + Subscribers can send SimpleX links. + No comment provided by engineer. + + + Subscribers can send direct messages. + Subscribers can send direct messages. + No comment provided by engineer. + + + Subscribers can send disappearing messages. + Subscribers can send disappearing messages. + No comment provided by engineer. + + + Subscribers can send files and media. + Subscribers can send files and media. + No comment provided by engineer. + + + Subscribers can send voice messages. + Subscribers can send voice messages. + No comment provided by engineer. + Subscribers use relay link to connect to the channel. Relay address was used to set up this relay for the channel. @@ -8461,6 +8851,11 @@ Relay address was used to set up this relay for the channel. Take picture No comment provided by engineer. + + Talk to someone + Talk to someone + No comment provided by engineer. + Tap Connect to chat Tap Connect to chat @@ -8476,11 +8871,6 @@ Relay address was used to set up this relay for the channel. Tap Connect to use bot No comment provided by engineer. - - Tap Create SimpleX address in the menu to create it later. - Tap Create SimpleX address in the menu to create it later. - No comment provided by engineer. - Tap Join channel Tap Join channel @@ -8516,6 +8906,11 @@ Relay address was used to set up this relay for the channel. Tap to join incognito No comment provided by engineer. + + Tap to open + Tap to open + No comment provided by engineer. + Tap to paste link Tap to paste link @@ -8619,6 +9014,11 @@ It can happen because of some bug or when the connection is compromised.The code you scanned is not a SimpleX link QR code. No comment provided by engineer. + + The connection reached the limit of undelivered messages + The connection reached the limit of undelivered messages + conn error description + The connection reached the limit of undelivered messages, your contact may be offline. The connection reached the limit of undelivered messages, your contact may be offline. @@ -8854,6 +9254,11 @@ It can happen because of some bug or when the connection is compromised.To hide unwanted messages. No comment provided by engineer. + + To make SimpleX Network last. + To make SimpleX Network last. + No comment provided by engineer. + To make a new connection To make a new connection @@ -9131,13 +9536,18 @@ To connect, please ask your contact to create another connection link and check Unsupported connection link Unsupported connection link - No comment provided by engineer. + conn error description Up to 100 last messages are sent to new members. Up to 100 last messages are sent to new members. No comment provided by engineer. + + Up to 100 last messages are sent to new subscribers. + Up to 100 last messages are sent to new subscribers. + No comment provided by engineer. + Update Update @@ -9353,6 +9763,11 @@ To connect, please ask your contact to create another connection link and check Use the app with one hand. No comment provided by engineer. + + Use this address in your social media profile, website, or email signature. + Use this address in your social media profile, website, or email signature. + No comment provided by engineer. + Use web port Use web port @@ -9508,6 +9923,11 @@ To connect, please ask your contact to create another connection link and check Wait response relay test step + + Waiting for channel owner to add relays. + Waiting for channel owner to add relays. + No comment provided by engineer. + Waiting for desktop... Waiting for desktop... @@ -9548,6 +9968,11 @@ To connect, please ask your contact to create another connection link and check Warning: you may lose some data! No comment provided by engineer. + + We made connecting simpler for new users. + We made connecting simpler for new users. + No comment provided by engineer. + WebRTC ICE servers WebRTC ICE servers @@ -10144,6 +10569,11 @@ Relays can access channel messages. Your profile was changed. If you save it, the updated profile will be sent to all your contacts. alert message + + Your public address + Your public address + No comment provided by engineer. + Your random profile Your random profile @@ -10174,21 +10604,11 @@ Relays can access channel messages. Your settings No comment provided by engineer. - - [Contribute](https://github.com/simplex-chat/simplex-chat#contribute) - [Contribute](https://github.com/simplex-chat/simplex-chat#contribute) - No comment provided by engineer. - [Send us email](mailto:chat@simplex.chat) [Send us email](mailto:chat@simplex.chat) No comment provided by engineer. - - [Star on GitHub](https://github.com/simplex-chat/simplex-chat) - [Star on GitHub](https://github.com/simplex-chat/simplex-chat) - No comment provided by engineer. - \_italic_ \_italic_ @@ -10345,6 +10765,11 @@ marked deleted chat item preview text calling… call status + + can't broadcast + can't broadcast + No comment provided by engineer. + can't send messages can't send messages @@ -11009,6 +11434,11 @@ time to disappear removed (%d attempts) receive error chat item + + removed by operator + removed by operator + No comment provided by engineer. + removed contact address removed contact address @@ -11333,6 +11763,11 @@ last received msg: %2$@ \~strike~ No comment provided by engineer. + + ⚠️ Signature verification failed: %@. + ⚠️ Signature verification failed: %@. + owner verification + 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 fe6234e16b..07004c5432 100644 --- a/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff +++ b/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff @@ -185,9 +185,20 @@ %d mes(es) time interval - - %d relays - channel relay bar + + %d relays failed + channel relay bar +channel subscriber relay bar + + + %d relays not active + channel relay bar +channel subscriber relay bar + + + %d relays removed + channel relay bar +channel subscriber relay bar %d sec @@ -206,10 +217,12 @@ %d subscriber + %d suscriptor channel subscriber count %d subscribers + %d suscriptores channel subscriber count @@ -219,21 +232,41 @@ %1$d/%2$d relays active + %1$d/%2$d servidores activos channel creation progress channel relay bar progress + + %1$d/%2$d relays active, %3$d errors + channel relay bar + %1$d/%2$d relays active, %3$d failed + %1$d/%2$d servidores activos, %3$d han fallado channel creation progress with errors -channel relay bar progress with errors +channel relay bar + + + %1$d/%2$d relays active, %3$d removed + channel relay bar %1$d/%2$d relays connected + %1$d/%2$d servidores conectados channel subscriber relay bar progress %1$d/%2$d relays connected, %3$d errors - channel subscriber relay bar progress with errors + %1$d/%2$d servidores conectados, %3$d errores + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d failed + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d removed + channel subscriber relay bar %lld @@ -247,6 +280,7 @@ channel relay bar progress with errors %lld channel events + %lld eventos del canal No comment provided by engineer. @@ -261,7 +295,7 @@ channel relay bar progress with errors %lld group events - %lld evento(s) de grupo + %lld evento(s) del grupo No comment provided by engineer. @@ -349,11 +383,19 @@ channel relay bar progress with errors %u mensaje(s) omitido(s). No comment provided by engineer. + + (from owner) + chat link info line + (new) (nuevo) No comment provided by engineer. + + (signed) + chat link info line + (this device v%@) (este dispositivo v%@) @@ -401,6 +443,7 @@ channel relay bar progress with errors **Test relay** to retrieve its name. + **Test servidor** para recibir su nombre. No comment provided by engineer. @@ -446,6 +489,12 @@ channel relay bar progress with errors - ¡y más! No comment provided by engineer. + + - opt-in to send link previews. +- prevent hyperlink phishing. +- remove link tracking. + No comment provided by engineer. + - optionally notify deleted contacts. - profile names with spaces. @@ -544,6 +593,10 @@ time interval Algunas cosas más No comment provided by engineer. + + A link for one person to connect + No comment provided by engineer. + A new contact Contacto nuevo @@ -670,9 +723,8 @@ swipe action Conexiones activas No comment provided by engineer. - - Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts. - Añade la dirección a tu perfil para que tus contactos puedan compartirla con otros. La actualización del perfil se enviará a tus contactos. + + Add address to your profile, so that your SimpleX contacts can share it with other people. Profile update will be sent to your SimpleX contacts. No comment provided by engineer. @@ -740,6 +792,10 @@ swipe action Servidores de mensajes añadidos No comment provided by engineer. + + Adding relays will be supported later. + No comment provided by engineer. + Additional accent Acento adicional @@ -860,6 +916,14 @@ swipe action Todos los perfiles profile dropdown + + All relays failed + No comment provided by engineer. + + + All relays removed + No comment provided by engineer. + All reports will be archived for you. Todos los informes serán archivados para ti. @@ -920,6 +984,10 @@ swipe action Se permite la eliminación irreversible de mensajes pero sólo si tu contacto también lo permite. (24 horas) No comment provided by engineer. + + Allow members to chat with admins. + No comment provided by engineer. + Allow message reactions only if your contact allows them. Se permiten las reacciones a los mensajes pero sólo si tu contacto también las permite. @@ -935,6 +1003,11 @@ swipe action Se permiten mensajes directos entre miembros. No comment provided by engineer. + + Allow sending direct messages to subscribers. + Se permiten mensajes directos entre suscriptores. + No comment provided by engineer. + Allow sending disappearing messages. Permites el envío de mensajes temporales. @@ -945,6 +1018,10 @@ swipe action Permitir compartir No comment provided by engineer. + + Allow subscribers to chat with admins. + No comment provided by engineer. + Allow to irreversibly delete sent messages. (24 hours) Se permite la eliminación irreversible de mensajes. (24 horas) @@ -1357,6 +1434,7 @@ swipe action Block subscriber for all? + ¿Bloquear al suscriptor para todos? No comment provided by engineer. @@ -1411,6 +1489,7 @@ swipe action Broadcast + Emisión compose placeholder for channel owner @@ -1421,7 +1500,7 @@ swipe action Business address Dirección empresarial - No comment provided by engineer. + chat link info line Business chats @@ -1602,48 +1681,76 @@ set passcode view Channel + Canal No comment provided by engineer. Channel display name + Título mostrado del canal No comment provided by engineer. Channel full name (optional) + Título completo del canal (opcional) No comment provided by engineer. + + Channel has no active relays. Please try to join later. + alert message +alert subtitle + Channel image + Imagen del canal No comment provided by engineer. Channel link + Enlace del canal + chat link info line + + + Channel preferences No comment provided by engineer. Channel profile + Perfil del canal No comment provided by engineer. Channel profile is stored on subscribers' devices and on the chat relays. + El perfil del canal se almacena en los dispositivos de los suscriptores y en los servidores de chat. No comment provided by engineer. Channel profile was changed. If you save it, the updated profile will be sent to channel subscribers. + El perfil del canal ha sido modificado. Si lo guardas, el perfil actualizado será enviado a los suscriptores. alert message + + Channel temporarily unavailable + alert title + Channel will be deleted for all subscribers - this cannot be undone! + El canal será eliminado para todos los suscriptores. ¡No puede deshacerse! No comment provided by engineer. Channel will be deleted for you - this cannot be undone! + El canal será eliminado para tí. ¡No puede deshacerse! No comment provided by engineer. Channel will start working with %1$d of %2$d relays. Proceed? + El canal comenzará a funcionar con %1$d de %2$d servidores. ¿Continuar? alert message + + Channels + No comment provided by engineer. + Chat Chat @@ -1731,18 +1838,22 @@ set passcode view Chat relay + Servidor de chat No comment provided by engineer. Chat relays + Servidores de chat No comment provided by engineer. Chat relays forward messages in channels you create. + Los servidores de chat reenvían los mensajes en los canales que has creado. No comment provided by engineer. Chat relays forward messages to channel subscribers. + Los servidores de chat reenvían los mensajes a los suscriptores del canal. No comment provided by engineer. @@ -1763,7 +1874,8 @@ set passcode view Chat with admins Chatea con administradores - chat toolbar + chat feature +chat toolbar Chat with member @@ -1780,11 +1892,23 @@ set passcode view Chats No comment provided by engineer. + + Chats with admins are prohibited. + No comment provided by engineer. + + + Chats with admins in public channels have no E2E encryption - use only with trusted chat relays. + alert message + Chats with members Chat con miembros No comment provided by engineer. + + Chats with members are disabled + No comment provided by engineer. + Check messages every 20 min. Comprobar mensajes cada 20 min. @@ -1797,10 +1921,12 @@ set passcode view Check relay address and try again. + Comprueba la dirección del servidor y prueba de nuevo. alert message Check relay name and try again. + Comprueba el nombre del servidor y prueba de nuevo. alert message @@ -1950,6 +2076,7 @@ set passcode view Configure relays + Configurar servidores No comment provided by engineer. @@ -2062,6 +2189,10 @@ This is your own one-time link! Conectar mediante enlace new chat sheet title + + Connect via link or QR code + No comment provided by engineer. + Connect via one-time link Conectar mediante enlace de un sólo uso @@ -2072,6 +2203,10 @@ This is your own one-time link! Conectar con %@ new chat action + + Connect with someone + No comment provided by engineer. + Connected Conectadas @@ -2140,10 +2275,11 @@ This is your own one-time link! Connection error (AUTH) Error de conexión (Autenticación) - No comment provided by engineer. + conn error description Connection failed + Conexión fallida No comment provided by engineer. @@ -2198,6 +2334,10 @@ This is your own one-time link! Conexiones No comment provided by engineer. + + Contact address + chat link info line + Contact allows El contacto permite @@ -2268,6 +2408,11 @@ This is your own one-time link! Continuar No comment provided by engineer. + + Contribute + Contribuye + No comment provided by engineer. + Conversation deleted! ¡Conversación eliminada! @@ -2298,11 +2443,6 @@ This is your own one-time link! ¿Corregir el nombre a %@? alert message - - Create - Crear - No comment provided by engineer. - Create 1-time link Crear enlace de un solo uso @@ -2355,10 +2495,12 @@ This is your own one-time link! Create public channel + Crear canal público No comment provided by engineer. Create public channel (BETA) + Crear canal público (BETA) No comment provided by engineer. @@ -2376,6 +2518,10 @@ This is your own one-time link! Crea tu perfil No comment provided by engineer. + + Create your public address + No comment provided by engineer. + Created Creadas @@ -2398,6 +2544,7 @@ This is your own one-time link! Creating channel + Creando canal No comment provided by engineer. @@ -2565,6 +2712,7 @@ This is your own one-time link! Decode link + Decodificar enlace relay test step @@ -2615,10 +2763,12 @@ swipe action Delete channel + Eliminar canal No comment provided by engineer. Delete channel? + ¿Eliminar canal? No comment provided by engineer. @@ -2794,6 +2944,7 @@ alert button Delete relay + Eliminar servidor No comment provided by engineer. @@ -2961,6 +3112,15 @@ alert button Los mensajes directos entre miembros del grupo no están permitidos. No comment provided by engineer. + + Direct messages between subscribers are prohibited. + Los mensajes directos entre suscriptores del canal no están permitidos. + No comment provided by engineer. + + + Disable + alert button + Disable (keep overrides) Desactivar (conservando anulaciones) @@ -3066,6 +3226,11 @@ alert button No se envía el historial a los miembros nuevos. No comment provided by engineer. + + Do not send history to new subscribers. + No se envía el historial a los suscriptores nuevos. + No comment provided by engineer. + Do not use credentials with proxy. No se usan credenciales con proxy. @@ -3167,6 +3332,10 @@ chat item action Notificaciones cifradas E2E. No comment provided by engineer. + + Easier to invite your friends 👋 + No comment provided by engineer. + Edit Editar @@ -3174,6 +3343,7 @@ chat item action Edit channel profile + Editar perfil del canal No comment provided by engineer. @@ -3189,7 +3359,7 @@ chat item action Enable Activar - No comment provided by engineer. + alert button Enable (keep overrides) @@ -3213,6 +3383,7 @@ chat item action Enable at least one chat relay in Network & Servers. + Activar al menos un servidor de chat en Servidores y Redes. channel creation warning @@ -3225,6 +3396,10 @@ chat item action Permitir acceso a la cámara No comment provided by engineer. + + Enable chats with admins? + alert title + Enable disappearing messages by default. Activa por defecto los mensajes temporales. @@ -3245,6 +3420,10 @@ chat item action ¿Activar notificaciones instantáneas? No comment provided by engineer. + + Enable link previews? + alert title + Enable lock Activar bloqueo @@ -3362,6 +3541,7 @@ chat item action Enter channel name… + Introduce el título del canal… No comment provided by engineer. @@ -3391,6 +3571,7 @@ chat item action Enter relay name… + Introduce el nombre del servidor… No comment provided by engineer. @@ -3421,7 +3602,7 @@ chat item action Error Error - No comment provided by engineer. + conn error description Error aborting address change @@ -3450,6 +3631,7 @@ chat item action Error adding relay + Error al añadir el servidor alert title @@ -3514,6 +3696,7 @@ chat item action Error creating channel + Error al crear el canal alert title @@ -3698,6 +3881,7 @@ chat item action Error saving channel profile + Error al guardar el perfil del canal No comment provided by engineer. @@ -3765,6 +3949,10 @@ chat item action ¡Error al configurar confirmaciones de entrega! No comment provided by engineer. + + Error sharing channel + alert title + Error starting chat Error al iniciar Chat @@ -4133,6 +4321,10 @@ server test error Para todos los moderadores No comment provided by engineer. + + For anyone to reach you + No comment provided by engineer. + For chat profile %@: Para el perfil de chat %@: @@ -4280,6 +4472,7 @@ Error: %2$@ Get link + Recibir el enlace relay test step @@ -4345,7 +4538,7 @@ Error: %2$@ Group link Enlace de grupo - No comment provided by engineer. + chat link info line Group links @@ -4457,6 +4650,11 @@ Error: %2$@ El historial no se envía a miembros nuevos. No comment provided by engineer. + + History is not sent to new subscribers. + El historial no se envía a suscriptores nuevos. + No comment provided by engineer. + How SimpleX works Cómo funciona SimpleX @@ -4524,6 +4722,7 @@ Error: %2$@ If you joined or created channels, they will stop working permanently. + Si te has unido o has creado canales, dejarán de funcionar permanentemente. down migration warning @@ -4703,9 +4902,9 @@ More improvements are coming soon! Rol inicial No comment provided by engineer. - - Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat) - Instalar terminal para [SimpleX Chat](https://github.com/simplex-chat/simplex-chat) + + Install SimpleX Chat for terminal + Instalar terminal para SimpleX Chat No comment provided by engineer. @@ -4763,7 +4962,7 @@ More improvements are coming soon! Invalid connection link Enlace de conexión no válido - No comment provided by engineer. + conn error description Invalid display name! @@ -4787,10 +4986,12 @@ More improvements are coming soon! Invalid relay address! + ¡Dirección de servidor no válido! alert title Invalid relay name! + ¡Nombre de servidor no válido! alert title @@ -4828,6 +5029,10 @@ More improvements are coming soon! Invitar miembros No comment provided by engineer. + + Invite someone privately + No comment provided by engineer. + Invite to chat Invitar al chat @@ -4906,6 +5111,7 @@ More improvements are coming soon! Join channel + Unirme al canal No comment provided by engineer. @@ -4997,10 +5203,12 @@ This is your link for group %@! Leave channel + Salir del canal No comment provided by engineer. Leave channel? + ¿Salir del canal? No comment provided by engineer. @@ -5028,6 +5236,10 @@ This is your link for group %@! Menos tráfico en redes móviles. No comment provided by engineer. + + Let someone connect to you + No comment provided by engineer. + Let's talk in SimpleX Chat Hablemos en SimpleX Chat @@ -5048,6 +5260,10 @@ This is your link for group %@! ¡Enlazar aplicación móvil con ordenador! 🔗 No comment provided by engineer. + + Link signature verified. + owner verification + Linked desktop options Opciones ordenador enlazado @@ -5233,6 +5449,10 @@ This is your link for group %@! Los miembros pueden añadir reacciones a los mensajes. No comment provided by engineer. + + Members can chat with admins. + No comment provided by engineer. + Members can irreversibly delete sent messages. (24 hours) Los miembros del grupo pueden eliminar mensajes de forma irreversible. (24 horas) @@ -5300,6 +5520,7 @@ This is your link for group %@! Message error + Mensaje de error No comment provided by engineer. @@ -5397,6 +5618,14 @@ This is your link for group %@! ¡Los mensajes nuevos de %@ serán mostrados! No comment provided by engineer. + + Messages in this channel are **not end-to-end encrypted**. Chat relays can see these messages. + No comment provided by engineer. + + + Messages in this channel are not end-to-end encrypted. Chat relays can see these messages. + E2EE info chat item + Messages in this chat will never be deleted. Los mensajes de esta conversación nunca se eliminan. @@ -5567,6 +5796,10 @@ This is your link for group %@! Descentralización de la red No comment provided by engineer. + + Network error + conn error description + Network issues - message expired after many attempts to send it. Problema en la red - el mensaje ha expirado tras muchos intentos de envío. @@ -5597,6 +5830,10 @@ This is your link for group %@! Nuevo token status text + + New 1-time link + No comment provided by engineer. + New Passcode Código Nuevo @@ -5624,6 +5861,7 @@ This is your link for group %@! New chat relay + Nuevo servidor de chat No comment provided by engineer. @@ -5696,6 +5934,10 @@ This is your link for group %@! No No comment provided by engineer. + + No active relays + No comment provided by engineer. + No app password Sin contraseña de la aplicación @@ -5703,10 +5945,12 @@ This is your link for group %@! No chat relays + Sin servidores de chat No comment provided by engineer. No chat relays enabled. + Ningún servidor de chat activado. servers warning @@ -5859,8 +6103,13 @@ This is your link for group %@! Sin identificadores de usuario. No comment provided by engineer. + + Non-profit governance + No comment provided by engineer. + Not all relays connected + Hay servidores no conectados alert title @@ -5920,7 +6169,7 @@ This is your link for group %@! OK OK - No comment provided by engineer. + alert button Off @@ -5944,6 +6193,10 @@ new chat action Enlace de invitación de un solo uso No comment provided by engineer. + + One-time link + chat link info line + Onion hosts will be **required** for connection. Requires compatible VPN. @@ -5963,6 +6216,10 @@ Requiere activación de la VPN. No se usarán hosts .onion. No comment provided by engineer. + + Only channel owners can change channel preferences. + No comment provided by engineer. + Only chat owners can change preferences. Sólo los propietarios del chat pueden cambiar las preferencias. @@ -6066,7 +6323,8 @@ Requiere activación de la VPN. Open Abrir - alert action + alert action +alert button Open Settings @@ -6080,6 +6338,7 @@ Requiere activación de la VPN. Open channel + Abrir canal new chat action @@ -6102,6 +6361,10 @@ Requiere activación de la VPN. Abrir condiciones No comment provided by engineer. + + Open external link? + alert title + Open full link Abrir enlace completo @@ -6124,6 +6387,7 @@ Requiere activación de la VPN. Open new channel + Abrir canal nuevo new chat action @@ -6191,6 +6455,10 @@ Requiere activación de la VPN. O comparte de forma segura este enlace al archivo No comment provided by engineer. + + Or show QR in person or via video call. + No comment provided by engineer. + Or show this code O muestra este código @@ -6201,6 +6469,10 @@ Requiere activación de la VPN. O para compartir en privado No comment provided by engineer. + + Or use this QR - print or show online. + No comment provided by engineer. + Organize chats into lists Organiza tus chats en listas @@ -6220,10 +6492,16 @@ Requiere activación de la VPN. Owner + Propietario No comment provided by engineer. Owners + Propietarios + No comment provided by engineer. + + + Ownership: you can run your own relays. No comment provided by engineer. @@ -6281,6 +6559,10 @@ Requiere activación de la VPN. Pegar imagen No comment provided by engineer. + + Paste link / Scan + No comment provided by engineer. + Paste link to connect! Pegar enlace para conectar! @@ -6437,10 +6719,12 @@ Error: %@ Preset relay address + Direcciones predefinidas No comment provided by engineer. Preset relay name + Nombres predefinidos No comment provided by engineer. @@ -6483,6 +6767,10 @@ Error: %@ 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. @@ -6530,6 +6818,7 @@ Error: %@ Proceed + Continuar alert action @@ -6557,9 +6846,8 @@ Error: %@ Tema del perfil No comment provided by engineer. - - Profile update will be sent to your contacts. - La actualización del perfil se enviará a tus contactos. + + Profile update will be sent to your SimpleX contacts. alert message @@ -6567,6 +6855,10 @@ Error: %@ No se permiten llamadas y videollamadas. No comment provided by engineer. + + Prohibit chats with admins. + No comment provided by engineer. + Prohibit irreversible message deletion. No se permite la eliminación irreversible de mensajes. @@ -6597,6 +6889,11 @@ Error: %@ No se permiten mensajes directos entre miembros. No comment provided by engineer. + + Prohibit sending direct messages to subscribers. + No se permiten mensajes directos entre suscriptores. + No comment provided by engineer. + Prohibit sending disappearing messages. No se permiten mensajes temporales. @@ -6664,6 +6961,10 @@ Actívalo en ajustes de *Servidores y Redes*. El proxy requiere contraseña No comment provided by engineer. + + Public channels - speak freely 🚀 + No comment provided by engineer. + Push notifications Notificaciones push @@ -6704,24 +7005,14 @@ Actívalo en ajustes de *Servidores y Redes*. Saber más No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). - Conoce más en la [Guía del Usuario](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). + + Read more in User Guide. + Conoce más en la Guía del Usuario. No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - Conoce más en el [Manual del Usuario](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - No comment provided by engineer. - - - Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - Conoce más en el [Manual del Usuario](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - No comment provided by engineer. - - - Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme). - Conoce más en nuestro [repositorio GitHub](https://github.com/simplex-chat/simplex-chat#readme). + + Read more in our GitHub repository. + Conoce más en nuestro repositorio GitHub. No comment provided by engineer. @@ -6883,20 +7174,28 @@ swipe action Relay + Servidor No comment provided by engineer. Relay address + Dirección del servidor alert title Relay connection failed + La conexión con el servidor ha fallado alert title Relay link + Enlace servidor No comment provided by engineer. + + Relay results: + alert message + Relay server is only used if necessary. Another party can observe your IP address. El servidor de retransmisión sólo se usa en caso de necesidad. Un tercero podría ver tu IP. @@ -6909,6 +7208,11 @@ swipe action Relay test failed! + ¡El test del servidor ha fallado! + No comment provided by engineer. + + + Reliability: many relays per channel. No comment provided by engineer. @@ -6953,10 +7257,12 @@ swipe action Remove subscriber + Eliminar suscriptor No comment provided by engineer. Remove subscriber? + ¿Eliminar suscriptor? alert title @@ -7194,6 +7500,10 @@ swipe action Proxy SOCKS No comment provided by engineer. + + Safe web links + No comment provided by engineer. + Safely receive files Recibe archivos de forma segura @@ -7222,6 +7532,7 @@ chat item action Save (and notify subscribers) + Guardar (y notificar suscriptores) alert button @@ -7239,6 +7550,10 @@ chat item action Guardar y notificar grupo No comment provided by engineer. + + Save and notify subscribers + No comment provided by engineer. + Save and reconnect Guardar y reconectar @@ -7251,10 +7566,12 @@ chat item action Save channel profile + Guardar perfil del canal No comment provided by engineer. Save channel profile? + ¿Guardar perfil del canal? alert title @@ -7437,6 +7754,10 @@ chat item action Código de seguridad No comment provided by engineer. + + Security: owners hold channel keys. + No comment provided by engineer. + Select Seleccionar @@ -7567,6 +7888,10 @@ chat item action Enviar solicitud sin mensaje No comment provided by engineer. + + Send the link via any messenger - it's secure. Ask to paste into SimpleX. + No comment provided by engineer. + Send them from gallery or custom keyboards. Envíalos desde la galería o desde teclados personalizados. @@ -7577,6 +7902,11 @@ chat item action Se envían hasta 100 mensajes más recientes a los miembros nuevos. No comment provided by engineer. + + Send up to 100 last messages to new subscribers. + Se envían hasta 100 mensajes más recientes a los suscriptores nuevos. + No comment provided by engineer. + Send your private feedback to groups. Envía tu comentario privado a los grupos. @@ -7592,6 +7922,10 @@ chat item action El remitente puede haber eliminado la solicitud de conexión. No comment provided by engineer. + + Sending a link preview may reveal your IP address to the website. You can change this in Privacy settings later. + alert message + Sending delivery receipts will be enabled for all contacts in all visible chat profiles. El envío de confirmaciones de entrega se activará para todos los contactos en todos los perfiles visibles. @@ -7719,6 +8053,7 @@ chat item action Server requires authorization to connect to relay, check password. + El servidor requiere autorización para conectar con el servidor, comprueba la contraseña. relay test error @@ -7887,11 +8222,14 @@ chat item action Campartir dirección públicamente No comment provided by engineer. - - Share address with contacts? - ¿Compartir la dirección con los contactos? + + Share address with SimpleX contacts? alert title + + Share channel + No comment provided by engineer. + Share from other apps. Comparte desde otras aplicaciones. @@ -7919,6 +8257,7 @@ chat item action Share relay address + Compartir dirección del servidor No comment provided by engineer. @@ -7931,9 +8270,12 @@ chat item action Compartir con Simplex No comment provided by engineer. - - Share with contacts - Compartir con contactos + + Share via chat + No comment provided by engineer. + + + Share with SimpleX contacts No comment provided by engineer. @@ -8108,6 +8450,7 @@ chat item action SimpleX relay address + Dirección de servidor SimpleX simplex link type @@ -8183,6 +8526,11 @@ report reason Cuadrada, circular o cualquier forma intermedia. No comment provided by engineer. + + Star on GitHub + Estrella en GitHub + No comment provided by engineer. + Start chat Iniciar chat @@ -8285,19 +8633,73 @@ report reason Subscriber + Suscriptor No comment provided by engineer. + + Subscriber reports + Informes de suscriptores + chat feature + Subscriber will be removed from channel - this cannot be undone! + El suscriptor será eliminado del canal. ¡No puede deshacerse! alert message Subscribers + Suscriptores + No comment provided by engineer. + + + Subscribers can add message reactions. + Los suscriptores pueden añadir reacciones a los mensajes. + No comment provided by engineer. + + + Subscribers can chat with admins. + No comment provided by engineer. + + + Subscribers can irreversibly delete sent messages. (24 hours) + Los suscriptores del canal pueden eliminar mensajes de forma irreversible. (24 horas) + No comment provided by engineer. + + + Subscribers can report messsages to moderators. + Los suscriptores pueden informar de mensajes a los moderadores. + No comment provided by engineer. + + + Subscribers can send SimpleX links. + Los suscriptores del canal pueden enviar enlaces SimpleX. + No comment provided by engineer. + + + Subscribers can send direct messages. + Los suscriptores del canal pueden enviar mensajes directos. + No comment provided by engineer. + + + Subscribers can send disappearing messages. + Los suscriptores del canal pueden enviar mensajes temporales. + No comment provided by engineer. + + + Subscribers can send files and media. + Los suscriptores del canal pueden enviar archivos y multimedia. + No comment provided by engineer. + + + Subscribers can send voice messages. + Los suscriptores del canal pueden enviar mensajes de voz. No comment provided by engineer. Subscribers use relay link to connect to the channel. Relay address was used to set up this relay for the channel. + Los suscriptores usan el enlace del servidor para conectarse a los canales. +La dirección del servidor se usó para establecer el servidor para el canal. No comment provided by engineer. @@ -8380,6 +8782,10 @@ Relay address was used to set up this relay for the channel. Hacer foto No comment provided by engineer. + + Talk to someone + No comment provided by engineer. + Tap Connect to chat Pulsa Conectar para chatear @@ -8395,13 +8801,9 @@ Relay address was used to set up this relay for the channel. Pulsa Conectar para usar el bot No comment provided by engineer. - - Tap Create SimpleX address in the menu to create it later. - Pulsa Crear dirección SimpleX en el menú para crearla más tarde. - No comment provided by engineer. - Tap Join channel + Pulsa Unirme al canal No comment provided by engineer. @@ -8434,6 +8836,10 @@ Relay address was used to set up this relay for the channel. Pulsa para unirte en modo incógnito No comment provided by engineer. + + Tap to open + No comment provided by engineer. + Tap to paste link Pulsa aquí para pegar el enlace @@ -8462,6 +8868,7 @@ server test failure Test relay + Test servidor No comment provided by engineer. @@ -8518,6 +8925,7 @@ Puede ocurrir por algún bug o cuando la conexión está comprometida. The app removed this message after %lld attempts to receive it. + La app ha eliminado el mensaje tras %lld intentos de recibirlo. No comment provided by engineer. @@ -8535,6 +8943,10 @@ Puede ocurrir por algún bug o cuando la conexión está comprometida. El código QR escaneado no es un enlace de SimpleX. No comment provided by engineer. + + The connection reached the limit of undelivered messages + conn error description + The connection reached the limit of undelivered messages, your contact may be offline. La conexión ha alcanzado el límite de mensajes no entregados. es posible que tu contacto esté desconectado. @@ -8712,10 +9124,12 @@ Puede ocurrir por algún bug o cuando la conexión está comprometida. This is a chat relay address, it cannot be used to connect. + Esto es una dirección de servidor, no puede usarse para conectar. alert message This is your link for channel %@! + Este es tu enlace para el canal %@! new chat action @@ -8768,6 +9182,10 @@ Puede ocurrir por algún bug o cuando la conexión está comprometida. Para ocultar mensajes no deseados. No comment provided by engineer. + + To make SimpleX Network last. + No comment provided by engineer. + To make a new connection Para hacer una conexión nueva @@ -8942,6 +9360,7 @@ Se te pedirá que completes la autenticación antes de activar esta función. Unblock subscriber for all? + ¿Desbloquear al suscriptor para todos? No comment provided by engineer. @@ -9044,13 +9463,18 @@ Para conectarte pide a tu contacto que cree otro enlace y comprueba la conexión Unsupported connection link Enlace de conexión no compatible - No comment provided by engineer. + conn error description Up to 100 last messages are sent to new members. Hasta 100 últimos mensajes son enviados a los miembros nuevos. No comment provided by engineer. + + Up to 100 last messages are sent to new subscribers. + Hasta 100 últimos mensajes son enviados a los suscriptores nuevos. + No comment provided by engineer. + Update Actualizar @@ -9198,6 +9622,7 @@ Para conectarte pide a tu contacto que cree otro enlace y comprueba la conexión Use for new channels + Usar para canales nuevos No comment provided by engineer. @@ -9242,6 +9667,7 @@ Para conectarte pide a tu contacto que cree otro enlace y comprueba la conexión Use relay + Usar servidor No comment provided by engineer. @@ -9264,6 +9690,10 @@ Para conectarte pide a tu contacto que cree otro enlace y comprueba la conexión Usa la aplicación con una sola mano. No comment provided by engineer. + + Use this address in your social media profile, website, or email signature. + No comment provided by engineer. + Use web port Usar puerto web @@ -9286,6 +9716,7 @@ Para conectarte pide a tu contacto que cree otro enlace y comprueba la conexión Verify + Verificar relay test step @@ -9410,12 +9841,18 @@ Para conectarte pide a tu contacto que cree otro enlace y comprueba la conexión Wait + Espera alert action Wait response + Espera respuesta relay test step + + Waiting for channel owner to add relays. + No comment provided by engineer. + Waiting for desktop... Esperando ordenador... @@ -9456,6 +9893,10 @@ Para conectarte pide a tu contacto que cree otro enlace y comprueba la conexión Atención: ¡puedes perder algunos datos! No comment provided by engineer. + + We made connecting simpler for new users. + No comment provided by engineer. + WebRTC ICE servers Servidores WebRTC ICE @@ -9720,11 +10161,12 @@ Repeat join request? You can share a link or a QR code - anybody will be able to join the channel. + Puedes compartir un enlace o código QR. Cualquiera podrá unirse al canal. No comment provided by engineer. You can share a link or a QR code - anybody will be able to join the group. You won't lose members of the group if you later delete it. - Puedes compartir el enlace o el código QR para que cualquiera pueda unirse al grupo. Si más tarde lo eliminas, no afectará a los miembros del grupo. + Puedes compartir el enlace o código QR. Cualquiera podrá unirse al grupo. Si más tarde lo eliminas, no afectará a los miembros del grupo. No comment provided by engineer. @@ -9769,6 +10211,7 @@ Repeat join request? You connected to the channel via this relay link. + Te conectaste al canal mediante este enlace de servidor. No comment provided by engineer. @@ -9885,11 +10328,12 @@ Repeat connection request? You will stop receiving messages from this channel. Chat history will be preserved. + Dejarás de recibir mensajes de este canal. El historial del chat se conservará. No comment provided by engineer. You will stop receiving messages from this chat. Chat history will be preserved. - Dejarás de recibir mensajes del chat. El historial del chat se conserva. + Dejarás de recibir mensajes del chat. El historial del chat se conservará. No comment provided by engineer. @@ -9934,6 +10378,7 @@ Repeat connection request? Your channel + Tu canal No comment provided by engineer. @@ -10024,6 +10469,8 @@ Repeat connection request? Your profile **%@** will be shared with channel relays and subscribers. Relays can access channel messages. + El perfil **%@** será compartido con los servidores de canal y los suscriptores. +Los servidores tienen acceso a los mensajes del canal. No comment provided by engineer. @@ -10046,6 +10493,10 @@ Relays can access channel messages. Tu perfil ha sido modificado. Si lo guardas la actualización será enviada a todos tus contactos. alert message + + Your public address + No comment provided by engineer. + Your random profile Tu perfil aleatorio @@ -10053,10 +10504,12 @@ Relays can access channel messages. Your relay address + Tu dirección de servidor No comment provided by engineer. Your relay name + Tu nombre del servidor No comment provided by engineer. @@ -10074,21 +10527,11 @@ Relays can access channel messages. Configuración No comment provided by engineer. - - [Contribute](https://github.com/simplex-chat/simplex-chat#contribute) - [Contribuye](https://github.com/simplex-chat/simplex-chat#contribute) - No comment provided by engineer. - [Send us email](mailto:chat@simplex.chat) [Contacta vía email](mailto:chat@simplex.chat) No comment provided by engineer. - - [Star on GitHub](https://github.com/simplex-chat/simplex-chat) - [Estrella en GitHub](https://github.com/simplex-chat/simplex-chat) - No comment provided by engineer. - \_italic_ \_italic_ @@ -10106,6 +10549,7 @@ Relays can access channel messages. accepted + aceptado No comment provided by engineer. @@ -10130,6 +10574,7 @@ Relays can access channel messages. active + activo No comment provided by engineer. @@ -10243,6 +10688,10 @@ marked deleted chat item preview text llamando… call status + + can't broadcast + No comment provided by engineer. + can't send messages no se pueden enviar mensajes @@ -10280,10 +10729,12 @@ marked deleted chat item preview text channel + canal shown as sender role for channel messages channel profile updated + perfil del canal actualizado snd group event chat item @@ -10434,6 +10885,7 @@ pref value deleted channel + canal eliminado rcv group event chat item @@ -10548,6 +11000,7 @@ pref value error: %@ + error: %@ receive error chat item @@ -10557,6 +11010,7 @@ pref value failed + fallo No comment provided by engineer. @@ -10681,6 +11135,7 @@ pref value link + enlace No comment provided by engineer. @@ -10755,6 +11210,7 @@ pref value new + nuevo No comment provided by engineer. @@ -10882,6 +11338,7 @@ time to disappear relay + servidor member role @@ -10896,8 +11353,13 @@ time to disappear removed (%d attempts) + eliminado (%d intentos) receive error chat item + + removed by operator + No comment provided by engineer. + removed contact address dirección de contacto eliminada @@ -11054,6 +11516,7 @@ last received msg: %2$@ updated channel profile + perfil del canal actualizado rcv group event chat item @@ -11078,6 +11541,7 @@ last received msg: %2$@ via %@ + mediante %@ relay hostname @@ -11157,6 +11621,7 @@ last received msg: %2$@ you are subscriber + eres suscriptor No comment provided by engineer. @@ -11219,6 +11684,10 @@ last received msg: %2$@ \~strike~ No comment provided by engineer. + + ⚠️ Signature verification failed: %@. + owner verification + 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 89bea61cee..93e0c2e3a7 100644 --- a/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff +++ b/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff @@ -172,9 +172,20 @@ %d kuukautta time interval - - %d relays - channel relay bar + + %d relays failed + channel relay bar +channel subscriber relay bar + + + %d relays not active + channel relay bar +channel subscriber relay bar + + + %d relays removed + channel relay bar +channel subscriber relay bar %d sec @@ -208,10 +219,18 @@ channel creation progress channel relay bar progress + + %1$d/%2$d relays active, %3$d errors + channel relay bar + %1$d/%2$d relays active, %3$d failed channel creation progress with errors -channel relay bar progress with errors +channel relay bar + + + %1$d/%2$d relays active, %3$d removed + channel relay bar %1$d/%2$d relays connected @@ -219,7 +238,15 @@ channel relay bar progress with errors %1$d/%2$d relays connected, %3$d errors - channel subscriber relay bar progress with errors + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d failed + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d removed + channel subscriber relay bar %lld @@ -330,10 +357,18 @@ channel relay bar progress with errors %u viestit ohitettu. No comment provided by engineer. + + (from owner) + chat link info line + (new) No comment provided by engineer. + + (signed) + chat link info line + (this device v%@) No comment provided by engineer. @@ -417,6 +452,12 @@ channel relay bar progress with errors - ja paljon muuta! No comment provided by engineer. + + - opt-in to send link previews. +- prevent hyperlink phishing. +- remove link tracking. + No comment provided by engineer. + - optionally notify deleted contacts. - profile names with spaces. @@ -508,6 +549,10 @@ time interval Muutama asia lisää No comment provided by engineer. + + A link for one person to connect + No comment provided by engineer. + A new contact Uusi kontakti @@ -622,9 +667,8 @@ swipe action Active connections No comment provided by engineer. - - Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts. - Lisää osoite profiiliisi, jotta kontaktisi voivat jakaa sen muiden kanssa. Profiilipäivitys lähetetään kontakteillesi. + + Add address to your profile, so that your SimpleX contacts can share it with other people. Profile update will be sent to your SimpleX contacts. No comment provided by engineer. @@ -684,6 +728,10 @@ swipe action Added message servers No comment provided by engineer. + + Adding relays will be supported later. + No comment provided by engineer. + Additional accent No comment provided by engineer. @@ -789,6 +837,14 @@ swipe action All profiles profile dropdown + + All relays failed + No comment provided by engineer. + + + All relays removed + No comment provided by engineer. + All reports will be archived for you. No comment provided by engineer. @@ -843,6 +899,10 @@ swipe action Salli peruuttamaton viestien poisto vain, jos kontaktisi sallii ne sinulle. (24 tuntia) No comment provided by engineer. + + Allow members to chat with admins. + No comment provided by engineer. + Allow message reactions only if your contact allows them. Salli reaktiot viesteihin vain, jos kontaktisi sallii ne. @@ -858,6 +918,10 @@ swipe action Salli yksityisviestien lähettäminen jäsenille. No comment provided by engineer. + + Allow sending direct messages to subscribers. + No comment provided by engineer. + Allow sending disappearing messages. Salli katoavien viestien lähettäminen. @@ -867,6 +931,10 @@ swipe action Allow sharing No comment provided by engineer. + + Allow subscribers to chat with admins. + No comment provided by engineer. + Allow to irreversibly delete sent messages. (24 hours) Salli lähetettyjen viestien peruuttamaton poistaminen. (24 tuntia) @@ -1292,7 +1360,7 @@ swipe action Business address - No comment provided by engineer. + chat link info line Business chats @@ -1465,12 +1533,21 @@ set passcode view Channel full name (optional) No comment provided by engineer. + + Channel has no active relays. Please try to join later. + alert message +alert subtitle + Channel image No comment provided by engineer. Channel link + chat link info line + + + Channel preferences No comment provided by engineer. @@ -1485,6 +1562,10 @@ set passcode view Channel profile was changed. If you save it, the updated profile will be sent to channel subscribers. alert message + + Channel temporarily unavailable + alert title + Channel will be deleted for all subscribers - this cannot be undone! No comment provided by engineer. @@ -1497,6 +1578,10 @@ set passcode view Channel will start working with %1$d of %2$d relays. Proceed? alert message + + Channels + No comment provided by engineer. + Chat No comment provided by engineer. @@ -1603,7 +1688,8 @@ set passcode view Chat with admins - chat toolbar + chat feature +chat toolbar Chat with member @@ -1618,10 +1704,22 @@ set passcode view Keskustelut No comment provided by engineer. + + Chats with admins are prohibited. + No comment provided by engineer. + + + Chats with admins in public channels have no E2E encryption - use only with trusted chat relays. + alert message + Chats with members No comment provided by engineer. + + Chats with members are disabled + No comment provided by engineer. + Check messages every 20 min. No comment provided by engineer. @@ -1863,6 +1961,10 @@ This is your own one-time link! Yhdistä linkin kautta new chat sheet title + + Connect via link or QR code + No comment provided by engineer. + Connect via one-time link Yhdistä kertalinkillä @@ -1872,6 +1974,10 @@ This is your own one-time link! Connect with %@ new chat action + + Connect with someone + No comment provided by engineer. + Connected No comment provided by engineer. @@ -1931,7 +2037,7 @@ This is your own one-time link! Connection error (AUTH) Yhteysvirhe (AUTH) - No comment provided by engineer. + conn error description Connection failed @@ -1980,6 +2086,10 @@ This is your own one-time link! Connections No comment provided by engineer. + + Contact address + chat link info line + Contact allows Kontakti sallii @@ -2045,6 +2155,11 @@ This is your own one-time link! Jatka No comment provided by engineer. + + Contribute + Osallistu + No comment provided by engineer. + Conversation deleted! No comment provided by engineer. @@ -2071,11 +2186,6 @@ This is your own one-time link! Correct name to %@? alert message - - Create - Luo - No comment provided by engineer. - Create 1-time link No comment provided by engineer. @@ -2144,6 +2254,10 @@ This is your own one-time link! Luo profiilisi No comment provided by engineer. + + Create your public address + No comment provided by engineer. + Created No comment provided by engineer. @@ -2687,6 +2801,14 @@ alert button Yksityisviestit jäsenten välillä ovat kiellettyjä tässä ryhmässä. No comment provided by engineer. + + Direct messages between subscribers are prohibited. + No comment provided by engineer. + + + Disable + alert button + Disable (keep overrides) Poista käytöstä (pidä ohitukset) @@ -2784,6 +2906,10 @@ alert button Do not send history to new members. No comment provided by engineer. + + Do not send history to new subscribers. + No comment provided by engineer. + Do not use credentials with proxy. No comment provided by engineer. @@ -2872,6 +2998,10 @@ chat item action E2E encrypted notifications. No comment provided by engineer. + + Easier to invite your friends 👋 + No comment provided by engineer. + Edit Muokkaa @@ -2893,7 +3023,7 @@ chat item action Enable Salli - No comment provided by engineer. + alert button Enable (keep overrides) @@ -2927,6 +3057,10 @@ chat item action Enable camera access No comment provided by engineer. + + Enable chats with admins? + alert title + Enable disappearing messages by default. No comment provided by engineer. @@ -2945,6 +3079,10 @@ chat item action Salli välittömät ilmoitukset? No comment provided by engineer. + + Enable link previews? + alert title + Enable lock Ota lukitus käyttöön @@ -3110,7 +3248,7 @@ chat item action Error Virhe - No comment provided by engineer. + conn error description Error aborting address change @@ -3422,6 +3560,10 @@ chat item action Virhe toimituskuittauksien asettamisessa! No comment provided by engineer. + + Error sharing channel + alert title + Error starting chat Virhe käynnistettäessä keskustelua @@ -3755,6 +3897,10 @@ server test error For all moderators No comment provided by engineer. + + For anyone to reach you + No comment provided by engineer. + For chat profile %@: servers error @@ -3939,7 +4085,7 @@ Error: %2$@ Group link Ryhmälinkki - No comment provided by engineer. + chat link info line Group links @@ -4047,6 +4193,10 @@ Error: %2$@ History is not sent to new members. No comment provided by engineer. + + History is not sent to new subscribers. + No comment provided by engineer. + How SimpleX works Miten SimpleX toimii @@ -4275,9 +4425,9 @@ More improvements are coming soon! Alkuperäinen rooli No comment provided by engineer. - - Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat) - Asenna [SimpleX Chat terminaalille](https://github.com/simplex-chat/simplex-chat) + + Install SimpleX Chat for terminal + Asenna SimpleX Chat terminaalille No comment provided by engineer. @@ -4328,7 +4478,7 @@ More improvements are coming soon! Invalid connection link Virheellinen yhteyslinkki - No comment provided by engineer. + conn error description Invalid display name! @@ -4387,6 +4537,10 @@ More improvements are coming soon! Kutsu jäseniä No comment provided by engineer. + + Invite someone privately + No comment provided by engineer. + Invite to chat No comment provided by engineer. @@ -4574,6 +4728,10 @@ This is your link for group %@! Less traffic on mobile networks. No comment provided by engineer. + + Let someone connect to you + No comment provided by engineer. + Let's talk in SimpleX Chat Jutellaan SimpleX Chatissa @@ -4593,6 +4751,10 @@ This is your link for group %@! Link mobile and desktop apps! 🔗 No comment provided by engineer. + + Link signature verified. + owner verification + Linked desktop options No comment provided by engineer. @@ -4760,6 +4922,10 @@ This is your link for group %@! Ryhmän jäsenet voivat lisätä viestireaktioita. No comment provided by engineer. + + Members can chat with admins. + No comment provided by engineer. + Members can irreversibly delete sent messages. (24 hours) Ryhmän jäsenet voivat poistaa lähetetyt viestit peruuttamattomasti. (24 tuntia) @@ -4906,6 +5072,14 @@ This is your link for group %@! Messages from %@ will be shown! No comment provided by engineer. + + Messages in this channel are **not end-to-end encrypted**. Chat relays can see these messages. + No comment provided by engineer. + + + Messages in this channel are not end-to-end encrypted. Chat relays can see these messages. + E2EE info chat item + Messages in this chat will never be deleted. alert message @@ -5057,6 +5231,10 @@ This is your link for group %@! Network decentralization No comment provided by engineer. + + Network error + conn error description + Network issues - message expired after many attempts to send it. snd error text @@ -5083,6 +5261,10 @@ This is your link for group %@! New token status text + + New 1-time link + No comment provided by engineer. + New Passcode Uusi pääsykoodi @@ -5172,6 +5354,10 @@ This is your link for group %@! Ei No comment provided by engineer. + + No active relays + No comment provided by engineer. + No app password Ei sovelluksen salasanaa @@ -5316,6 +5502,10 @@ This is your link for group %@! Ensimmäinen alusta ilman käyttäjätunnisteita – suunniteltu yksityiseksi. No comment provided by engineer. + + Non-profit governance + No comment provided by engineer. + Not all relays connected alert title @@ -5369,7 +5559,7 @@ This is your link for group %@! OK - No comment provided by engineer. + alert button Off @@ -5393,6 +5583,10 @@ new chat action Kertakutsulinkki No comment provided by engineer. + + One-time link + chat link info line + Onion hosts will be **required** for connection. Requires compatible VPN. @@ -5412,6 +5606,10 @@ Edellyttää VPN:n sallimista. Onion-isäntiä ei käytetä. No comment provided by engineer. + + Only channel owners can change channel preferences. + No comment provided by engineer. + Only chat owners can change preferences. No comment provided by engineer. @@ -5508,7 +5706,8 @@ Edellyttää VPN:n sallimista. Open - alert action + alert action +alert button Open Settings @@ -5541,6 +5740,10 @@ Edellyttää VPN:n sallimista. Open conditions No comment provided by engineer. + + Open external link? + alert title + Open full link alert action @@ -5613,6 +5816,10 @@ Edellyttää VPN:n sallimista. Or securely share this file link No comment provided by engineer. + + Or show QR in person or via video call. + No comment provided by engineer. + Or show this code No comment provided by engineer. @@ -5621,6 +5828,10 @@ Edellyttää VPN:n sallimista. Or to share privately No comment provided by engineer. + + Or use this QR - print or show online. + No comment provided by engineer. + Organize chats into lists No comment provided by engineer. @@ -5642,6 +5853,10 @@ Edellyttää VPN:n sallimista. Owners No comment provided by engineer. + + Ownership: you can run your own relays. + No comment provided by engineer. + PING count PING-määrä @@ -5695,6 +5910,10 @@ Edellyttää VPN:n sallimista. Liitä kuva No comment provided by engineer. + + Paste link / Scan + No comment provided by engineer. + Paste link to connect! No comment provided by engineer. @@ -5877,6 +6096,10 @@ Error: %@ 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. No comment provided by engineer. @@ -5941,9 +6164,8 @@ Error: %@ Profile theme No comment provided by engineer. - - Profile update will be sent to your contacts. - Profiilipäivitys lähetetään kontakteillesi. + + Profile update will be sent to your SimpleX contacts. alert message @@ -5951,6 +6173,10 @@ Error: %@ Estä ääni- ja videopuhelut. No comment provided by engineer. + + Prohibit chats with admins. + No comment provided by engineer. + Prohibit irreversible message deletion. Estä peruuttamaton viestien poistaminen. @@ -5979,6 +6205,10 @@ Error: %@ Estä suorien viestien lähettäminen jäsenille. No comment provided by engineer. + + Prohibit sending direct messages to subscribers. + No comment provided by engineer. + Prohibit sending disappearing messages. Estä katoavien viestien lähettäminen. @@ -6039,6 +6269,10 @@ Enable in *Network & servers* settings. Proxy requires password No comment provided by engineer. + + Public channels - speak freely 🚀 + No comment provided by engineer. + Push notifications Push-ilmoitukset @@ -6076,23 +6310,14 @@ Enable in *Network & servers* settings. Lue lisää No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). + + Read more in User Guide. + Lue lisää Käyttöoppaasta. No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - Lue lisää [Käyttöoppaasta](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - No comment provided by engineer. - - - Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - Lue lisää [Käyttöoppaasta](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - No comment provided by engineer. - - - Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme). - Lue lisää [GitHub-arkistosta](https://github.com/simplex-chat/simplex-chat#readme). + + Read more in our GitHub repository. + Lue lisää GitHub-arkistosta. No comment provided by engineer. @@ -6253,6 +6478,10 @@ swipe action Relay link No comment provided by engineer. + + Relay results: + alert message + Relay server is only used if necessary. Another party can observe your IP address. Välityspalvelinta käytetään vain tarvittaessa. Toinen osapuoli voi tarkkailla IP-osoitettasi. @@ -6267,6 +6496,10 @@ swipe action Relay test failed! No comment provided by engineer. + + Reliability: many relays per channel. + No comment provided by engineer. + Remove Poista @@ -6519,6 +6752,10 @@ swipe action SOCKS proxy No comment provided by engineer. + + Safe web links + No comment provided by engineer. + Safely receive files No comment provided by engineer. @@ -6560,6 +6797,10 @@ chat item action Tallenna ja ilmoita ryhmän jäsenille No comment provided by engineer. + + Save and notify subscribers + No comment provided by engineer. + Save and reconnect No comment provided by engineer. @@ -6738,6 +6979,10 @@ chat item action Turvakoodi No comment provided by engineer. + + Security: owners hold channel keys. + No comment provided by engineer. + Select Valitse @@ -6856,6 +7101,10 @@ chat item action Send request without message No comment provided by engineer. + + Send the link via any messenger - it's secure. Ask to paste into SimpleX. + No comment provided by engineer. + Send them from gallery or custom keyboards. Lähetä ne galleriasta tai mukautetuista näppäimistöistä. @@ -6865,6 +7114,10 @@ chat item action Send up to 100 last messages to new members. No comment provided by engineer. + + Send up to 100 last messages to new subscribers. + No comment provided by engineer. + Send your private feedback to groups. No comment provided by engineer. @@ -6879,6 +7132,10 @@ chat item action Lähettäjä on saattanut poistaa yhteyspyynnön. No comment provided by engineer. + + Sending a link preview may reveal your IP address to the website. You can change this in Privacy settings later. + alert message + Sending delivery receipts will be enabled for all contacts in all visible chat profiles. Toimituskuittauksien lähettäminen otetaan käyttöön kaikille kontakteille näkyvissä keskusteluprofiileissa. @@ -7144,11 +7401,14 @@ chat item action Share address publicly No comment provided by engineer. - - Share address with contacts? - Jaa osoite kontakteille? + + Share address with SimpleX contacts? alert title + + Share channel + No comment provided by engineer. + Share from other apps. No comment provided by engineer. @@ -7182,9 +7442,12 @@ chat item action Share to SimpleX No comment provided by engineer. - - Share with contacts - Jaa kontaktien kanssa + + Share via chat + No comment provided by engineer. + + + Share with SimpleX contacts No comment provided by engineer. @@ -7407,6 +7670,11 @@ report reason Square, circle, or anything in between. No comment provided by engineer. + + Star on GitHub + Tähti GitHubissa + No comment provided by engineer. + Start chat Aloita keskustelu @@ -7503,6 +7771,10 @@ report reason Subscriber No comment provided by engineer. + + Subscriber reports + chat feature + Subscriber will be removed from channel - this cannot be undone! alert message @@ -7511,6 +7783,42 @@ report reason Subscribers No comment provided by engineer. + + Subscribers can add message reactions. + No comment provided by engineer. + + + Subscribers can chat with admins. + No comment provided by engineer. + + + Subscribers can irreversibly delete sent messages. (24 hours) + No comment provided by engineer. + + + Subscribers can report messsages to moderators. + No comment provided by engineer. + + + Subscribers can send SimpleX links. + No comment provided by engineer. + + + Subscribers can send direct messages. + No comment provided by engineer. + + + Subscribers can send disappearing messages. + No comment provided by engineer. + + + Subscribers can send files and media. + No comment provided by engineer. + + + Subscribers can send voice messages. + No comment provided by engineer. + Subscribers use relay link to connect to the channel. Relay address was used to set up this relay for the channel. @@ -7588,6 +7896,10 @@ Relay address was used to set up this relay for the channel. Ota kuva No comment provided by engineer. + + Talk to someone + No comment provided by engineer. + Tap Connect to chat No comment provided by engineer. @@ -7600,10 +7912,6 @@ Relay address was used to set up this relay for the channel. Tap Connect to use bot No comment provided by engineer. - - Tap Create SimpleX address in the menu to create it later. - No comment provided by engineer. - Tap Join channel No comment provided by engineer. @@ -7636,6 +7944,10 @@ Relay address was used to set up this relay for the channel. Napauta liittyäksesi incognito-tilassa No comment provided by engineer. + + Tap to open + No comment provided by engineer. + Tap to paste link No comment provided by engineer. @@ -7729,6 +8041,10 @@ Tämä voi johtua jostain virheestä tai siitä, että yhteys on vaarantunut.The code you scanned is not a SimpleX link QR code. No comment provided by engineer. + + The connection reached the limit of undelivered messages + conn error description + The connection reached the limit of undelivered messages, your contact may be offline. No comment provided by engineer. @@ -7939,6 +8255,10 @@ Tämä voi johtua jostain virheestä tai siitä, että yhteys on vaarantunut.To hide unwanted messages. No comment provided by engineer. + + To make SimpleX Network last. + No comment provided by engineer. + To make a new connection Uuden yhteyden luominen @@ -8188,12 +8508,16 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja Unsupported connection link - No comment provided by engineer. + conn error description Up to 100 last messages are sent to new members. No comment provided by engineer. + + Up to 100 last messages are sent to new subscribers. + No comment provided by engineer. + Update Päivitä @@ -8380,6 +8704,10 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja Use the app with one hand. No comment provided by engineer. + + Use this address in your social media profile, website, or email signature. + No comment provided by engineer. + Use web port No comment provided by engineer. @@ -8518,6 +8846,10 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja Wait response relay test step + + Waiting for channel owner to add relays. + No comment provided by engineer. + Waiting for desktop... No comment provided by engineer. @@ -8554,6 +8886,10 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja Varoitus: saatat menettää joitain tietoja! No comment provided by engineer. + + We made connecting simpler for new users. + No comment provided by engineer. + WebRTC ICE servers WebRTC ICE -palvelimet @@ -9091,6 +9427,10 @@ Relays can access channel messages. Your profile was changed. If you save it, the updated profile will be sent to all your contacts. alert message + + Your public address + No comment provided by engineer. + Your random profile Satunnainen profiilisi @@ -9118,21 +9458,11 @@ Relays can access channel messages. Asetuksesi No comment provided by engineer. - - [Contribute](https://github.com/simplex-chat/simplex-chat#contribute) - [Osallistu](https://github.com/simplex-chat/simplex-chat#contribute) - No comment provided by engineer. - [Send us email](mailto:chat@simplex.chat) [Lähetä meille sähköpostia](mailto:chat@simplex.chat) No comment provided by engineer. - - [Star on GitHub](https://github.com/simplex-chat/simplex-chat) - [Tähti GitHubissa](https://github.com/simplex-chat/simplex-chat) - No comment provided by engineer. - \_italic_ \_italic_ @@ -9273,6 +9603,10 @@ marked deleted chat item preview text soittaa… call status + + can't broadcast + No comment provided by engineer. + can't send messages No comment provided by engineer. @@ -9899,6 +10233,10 @@ time to disappear removed (%d attempts) receive error chat item + + removed by operator + No comment provided by engineer. + removed contact address profile update event chat item @@ -10189,6 +10527,10 @@ last received msg: %2$@ \~strike~ No comment provided by engineer. + + ⚠️ Signature verification failed: %@. + owner verification + 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 5fcada4ccf..1de6a95c2b 100644 --- a/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff +++ b/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff @@ -185,9 +185,20 @@ %d mois time interval - - %d relays - channel relay bar + + %d relays failed + channel relay bar +channel subscriber relay bar + + + %d relays not active + channel relay bar +channel subscriber relay bar + + + %d relays removed + channel relay bar +channel subscriber relay bar %d sec @@ -222,10 +233,18 @@ channel creation progress channel relay bar progress + + %1$d/%2$d relays active, %3$d errors + channel relay bar + %1$d/%2$d relays active, %3$d failed channel creation progress with errors -channel relay bar progress with errors +channel relay bar + + + %1$d/%2$d relays active, %3$d removed + channel relay bar %1$d/%2$d relays connected @@ -233,7 +252,15 @@ channel relay bar progress with errors %1$d/%2$d relays connected, %3$d errors - channel subscriber relay bar progress with errors + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d failed + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d removed + channel subscriber relay bar %lld @@ -349,11 +376,19 @@ channel relay bar progress with errors %u messages sautés. No comment provided by engineer. + + (from owner) + chat link info line + (new) (nouveau) No comment provided by engineer. + + (signed) + chat link info line + (this device v%@) (cet appareil v%@) @@ -446,6 +481,12 @@ channel relay bar progress with errors - et bien d'autres choses encore ! No comment provided by engineer. + + - opt-in to send link previews. +- prevent hyperlink phishing. +- remove link tracking. + No comment provided by engineer. + - optionally notify deleted contacts. - profile names with spaces. @@ -544,6 +585,10 @@ time interval Encore quelques points No comment provided by engineer. + + A link for one person to connect + No comment provided by engineer. + A new contact Un nouveau contact @@ -670,9 +715,8 @@ swipe action Connections actives No comment provided by engineer. - - Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts. - Ajoutez une adresse à votre profil, afin que vos contacts puissent la partager avec d'autres personnes. La mise à jour du profil sera envoyée à vos contacts. + + Add address to your profile, so that your SimpleX contacts can share it with other people. Profile update will be sent to your SimpleX contacts. No comment provided by engineer. @@ -740,6 +784,10 @@ swipe action Ajout de serveurs de messages No comment provided by engineer. + + Adding relays will be supported later. + No comment provided by engineer. + Additional accent Accent additionnel @@ -859,6 +907,14 @@ swipe action Tous les profiles profile dropdown + + All relays failed + No comment provided by engineer. + + + All relays removed + No comment provided by engineer. + All reports will be archived for you. Tous les rapports seront archivés pour vous. @@ -919,6 +975,10 @@ swipe action Autoriser la suppression irréversible des messages uniquement si votre contact vous l'autorise. (24 heures) No comment provided by engineer. + + Allow members to chat with admins. + No comment provided by engineer. + Allow message reactions only if your contact allows them. Autoriser les réactions aux messages uniquement si votre contact les autorise. @@ -934,6 +994,10 @@ swipe action Autoriser l'envoi de messages directs aux membres. No comment provided by engineer. + + Allow sending direct messages to subscribers. + No comment provided by engineer. + Allow sending disappearing messages. Autorise l’envoi de messages éphémères. @@ -944,6 +1008,10 @@ swipe action Autoriser le partage No comment provided by engineer. + + Allow subscribers to chat with admins. + No comment provided by engineer. + Allow to irreversibly delete sent messages. (24 hours) Autoriser la suppression irréversible de messages envoyés. (24 heures) @@ -1414,7 +1482,7 @@ swipe action Business address Adresse professionnelle - No comment provided by engineer. + chat link info line Business chats @@ -1603,12 +1671,21 @@ set passcode view Channel full name (optional) No comment provided by engineer. + + Channel has no active relays. Please try to join later. + alert message +alert subtitle + Channel image No comment provided by engineer. Channel link + chat link info line + + + Channel preferences No comment provided by engineer. @@ -1623,6 +1700,10 @@ set passcode view Channel profile was changed. If you save it, the updated profile will be sent to channel subscribers. alert message + + Channel temporarily unavailable + alert title + Channel will be deleted for all subscribers - this cannot be undone! No comment provided by engineer. @@ -1635,6 +1716,10 @@ set passcode view Channel will start working with %1$d of %2$d relays. Proceed? alert message + + Channels + No comment provided by engineer. + Chat Discussions @@ -1753,7 +1838,8 @@ set passcode view Chat with admins - chat toolbar + chat feature +chat toolbar Chat with member @@ -1768,10 +1854,22 @@ set passcode view Discussions No comment provided by engineer. + + Chats with admins are prohibited. + No comment provided by engineer. + + + Chats with admins in public channels have no E2E encryption - use only with trusted chat relays. + alert message + Chats with members No comment provided by engineer. + + Chats with members are disabled + No comment provided by engineer. + Check messages every 20 min. Consulter les messages toutes les 20 minutes. @@ -2048,6 +2146,10 @@ Il s'agit de votre propre lien unique ! Se connecter via un lien new chat sheet title + + Connect via link or QR code + No comment provided by engineer. + Connect via one-time link Se connecter via un lien unique @@ -2058,6 +2160,10 @@ Il s'agit de votre propre lien unique ! Se connecter avec %@ new chat action + + Connect with someone + No comment provided by engineer. + Connected Connecté @@ -2126,7 +2232,7 @@ Il s'agit de votre propre lien unique ! Connection error (AUTH) Erreur de connexion (AUTH) - No comment provided by engineer. + conn error description Connection failed @@ -2184,6 +2290,10 @@ Il s'agit de votre propre lien unique ! Connexions No comment provided by engineer. + + Contact address + chat link info line + Contact allows Votre contact autorise @@ -2253,6 +2363,11 @@ Il s'agit de votre propre lien unique ! Continuer No comment provided by engineer. + + Contribute + Contribuer + No comment provided by engineer. + Conversation deleted! Conversation supprimée ! @@ -2283,11 +2398,6 @@ Il s'agit de votre propre lien unique ! Corriger le nom pour %@ ? alert message - - Create - Créer - No comment provided by engineer. - Create 1-time link Créer un lien unique @@ -2360,6 +2470,10 @@ Il s'agit de votre propre lien unique ! Créez votre profil No comment provided by engineer. + + Create your public address + No comment provided by engineer. + Created Créées @@ -2940,6 +3054,14 @@ alert button Les messages directs entre membres sont interdits dans ce groupe. No comment provided by engineer. + + Direct messages between subscribers are prohibited. + No comment provided by engineer. + + + Disable + alert button + Disable (keep overrides) Désactiver (conserver les remplacements) @@ -3045,6 +3167,10 @@ alert button Ne pas envoyer d'historique aux nouveaux membres. No comment provided by engineer. + + Do not send history to new subscribers. + No comment provided by engineer. + Do not use credentials with proxy. Ne pas utiliser d'identifiants avec le proxy. @@ -3146,6 +3272,10 @@ chat item action Notifications chiffrées E2E. No comment provided by engineer. + + Easier to invite your friends 👋 + No comment provided by engineer. + Edit Modifier @@ -3167,7 +3297,7 @@ chat item action Enable Activer - No comment provided by engineer. + alert button Enable (keep overrides) @@ -3203,6 +3333,10 @@ chat item action Autoriser l'accès à la caméra No comment provided by engineer. + + Enable chats with admins? + alert title + Enable disappearing messages by default. No comment provided by engineer. @@ -3222,6 +3356,10 @@ chat item action Activer les notifications instantanées ? No comment provided by engineer. + + Enable link previews? + alert title + Enable lock Activer le verrouillage @@ -3398,7 +3536,7 @@ chat item action Error Erreur - No comment provided by engineer. + conn error description Error aborting address change @@ -3735,6 +3873,10 @@ chat item action Erreur lors de la configuration des accusés de réception ! No comment provided by engineer. + + Error sharing channel + alert title + Error starting chat Erreur lors du démarrage du chat @@ -4096,6 +4238,10 @@ server test error For all moderators No comment provided by engineer. + + For anyone to reach you + No comment provided by engineer. + For chat profile %@: Pour le profil de discussion %@ : @@ -4306,7 +4452,7 @@ Erreur : %2$@ Group link Lien du groupe - No comment provided by engineer. + chat link info line Group links @@ -4415,6 +4561,10 @@ Erreur : %2$@ L'historique n'est pas envoyé aux nouveaux membres. No comment provided by engineer. + + History is not sent to new subscribers. + No comment provided by engineer. + How SimpleX works Comment SimpleX fonctionne @@ -4657,9 +4807,9 @@ D'autres améliorations sont à venir ! Rôle initial No comment provided by engineer. - - Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat) - Installer [SimpleX Chat pour terminal](https://github.com/simplex-chat/simplex-chat) + + Install SimpleX Chat for terminal + Installer SimpleX Chat pour terminal No comment provided by engineer. @@ -4712,7 +4862,7 @@ D'autres améliorations sont à venir ! Invalid connection link Lien de connection invalide - No comment provided by engineer. + conn error description Invalid display name! @@ -4776,6 +4926,10 @@ D'autres améliorations sont à venir ! Inviter des membres No comment provided by engineer. + + Invite someone privately + No comment provided by engineer. + Invite to chat Inviter à discuter @@ -4974,6 +5128,10 @@ Voici votre lien pour le groupe %@ ! Less traffic on mobile networks. No comment provided by engineer. + + Let someone connect to you + No comment provided by engineer. + Let's talk in SimpleX Chat Discutons sur SimpleX Chat @@ -4994,6 +5152,10 @@ Voici votre lien pour le groupe %@ ! Liez vos applications mobiles et de bureau ! 🔗 No comment provided by engineer. + + Link signature verified. + owner verification + Linked desktop options Options de bureau lié @@ -5168,6 +5330,10 @@ Voici votre lien pour le groupe %@ ! Les membres du groupe peuvent ajouter des réactions aux messages. No comment provided by engineer. + + Members can chat with admins. + No comment provided by engineer. + Members can irreversibly delete sent messages. (24 hours) Les membres du groupe peuvent supprimer de manière irréversible les messages envoyés. (24 heures) @@ -5328,6 +5494,14 @@ Voici votre lien pour le groupe %@ ! Les messages de %@ seront affichés ! No comment provided by engineer. + + Messages in this channel are **not end-to-end encrypted**. Chat relays can see these messages. + No comment provided by engineer. + + + Messages in this channel are not end-to-end encrypted. Chat relays can see these messages. + E2EE info chat item + Messages in this chat will never be deleted. alert message @@ -5495,6 +5669,10 @@ Voici votre lien pour le groupe %@ ! Décentralisation du réseau No comment provided by engineer. + + Network error + conn error description + Network issues - message expired after many attempts to send it. Problèmes de réseau - le message a expiré après plusieurs tentatives d'envoi. @@ -5524,6 +5702,10 @@ Voici votre lien pour le groupe %@ ! New token status text + + New 1-time link + No comment provided by engineer. + New Passcode Nouveau code d'accès @@ -5621,6 +5803,10 @@ Voici votre lien pour le groupe %@ ! Non No comment provided by engineer. + + No active relays + No comment provided by engineer. + No app password Pas de mot de passe pour l'app @@ -5776,6 +5962,10 @@ Voici votre lien pour le groupe %@ ! Aucun identifiant d'utilisateur. No comment provided by engineer. + + Non-profit governance + No comment provided by engineer. + Not all relays connected alert title @@ -5834,7 +6024,7 @@ Voici votre lien pour le groupe %@ ! OK OK - No comment provided by engineer. + alert button Off @@ -5858,6 +6048,10 @@ new chat action Lien d'invitation unique No comment provided by engineer. + + One-time link + chat link info line + Onion hosts will be **required** for connection. Requires compatible VPN. @@ -5877,6 +6071,10 @@ Nécessite l'activation d'un VPN. Les hôtes .onion ne seront pas utilisés. No comment provided by engineer. + + Only channel owners can change channel preferences. + No comment provided by engineer. + Only chat owners can change preferences. Seuls les propriétaires peuvent modifier les préférences. @@ -5976,7 +6174,8 @@ Nécessite l'activation d'un VPN. Open Ouvrir - alert action + alert action +alert button Open Settings @@ -6011,6 +6210,10 @@ Nécessite l'activation d'un VPN. Ouvrir les conditions No comment provided by engineer. + + Open external link? + alert title + Open full link alert action @@ -6092,6 +6295,10 @@ Nécessite l'activation d'un VPN. Ou partagez en toute sécurité le lien de ce fichier No comment provided by engineer. + + Or show QR in person or via video call. + No comment provided by engineer. + Or show this code Ou montrez ce code @@ -6102,6 +6309,10 @@ Nécessite l'activation d'un VPN. Ou à partager en privé No comment provided by engineer. + + Or use this QR - print or show online. + No comment provided by engineer. + Organize chats into lists No comment provided by engineer. @@ -6126,6 +6337,10 @@ Nécessite l'activation d'un VPN. Owners No comment provided by engineer. + + Ownership: you can run your own relays. + No comment provided by engineer. + PING count Nombre de PING @@ -6181,6 +6396,10 @@ Nécessite l'activation d'un VPN. Coller l'image No comment provided by engineer. + + Paste link / Scan + No comment provided by engineer. + Paste link to connect! Collez le lien pour vous connecter ! @@ -6378,6 +6597,10 @@ Erreur : %@ 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. No comment provided by engineer. @@ -6449,9 +6672,8 @@ Erreur : %@ Thème de profil No comment provided by engineer. - - Profile update will be sent to your contacts. - La mise à jour du profil sera envoyée à vos contacts. + + Profile update will be sent to your SimpleX contacts. alert message @@ -6459,6 +6681,10 @@ Erreur : %@ Interdire les appels audio/vidéo. No comment provided by engineer. + + Prohibit chats with admins. + No comment provided by engineer. + Prohibit irreversible message deletion. Interdire la suppression irréversible des messages. @@ -6488,6 +6714,10 @@ Erreur : %@ Interdire l'envoi de messages directs aux membres. No comment provided by engineer. + + Prohibit sending direct messages to subscribers. + No comment provided by engineer. + Prohibit sending disappearing messages. Interdire l’envoi de messages éphémères. @@ -6554,6 +6784,10 @@ Activez-le dans les paramètres *Réseau et serveurs*. Le proxy est protégé par un mot de passe No comment provided by engineer. + + Public channels - speak freely 🚀 + No comment provided by engineer. + Push notifications Notifications push @@ -6594,24 +6828,14 @@ Activez-le dans les paramètres *Réseau et serveurs*. En savoir plus No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). - Pour en savoir plus, consultez le [Guide de l'utilisateur](https ://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). + + Read more in User Guide. + Pour en savoir plus, consultez le Guide de l'utilisateur. No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - Pour en savoir plus, consultez le [Guide de l'utilisateur](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - No comment provided by engineer. - - - Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - Pour en savoir plus, consultez le [Guide de l'utilisateur](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - No comment provided by engineer. - - - Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme). - Pour en savoir plus, consultez notre [dépôt GitHub](https://github.com/simplex-chat/simplex-chat#readme). + + Read more in our GitHub repository. + Pour en savoir plus, consultez notre dépôt GitHub. No comment provided by engineer. @@ -6783,6 +7007,10 @@ swipe action Relay link No comment provided by engineer. + + Relay results: + alert message + Relay server is only used if necessary. Another party can observe your IP address. Le serveur relais n'est utilisé que si nécessaire. Un tiers peut observer votre adresse IP. @@ -6797,6 +7025,10 @@ swipe action Relay test failed! No comment provided by engineer. + + Reliability: many relays per channel. + No comment provided by engineer. + Remove Supprimer @@ -7063,6 +7295,10 @@ swipe action proxy SOCKS No comment provided by engineer. + + Safe web links + No comment provided by engineer. + Safely receive files Réception de fichiers en toute sécurité @@ -7106,6 +7342,10 @@ chat item action Enregistrer et en informer les membres du groupe No comment provided by engineer. + + Save and notify subscribers + No comment provided by engineer. + Save and reconnect Sauvegarder et se reconnecter @@ -7297,6 +7537,10 @@ chat item action Code de sécurité No comment provided by engineer. + + Security: owners hold channel keys. + No comment provided by engineer. + Select Choisir @@ -7423,6 +7667,10 @@ chat item action Send request without message No comment provided by engineer. + + Send the link via any messenger - it's secure. Ask to paste into SimpleX. + No comment provided by engineer. + Send them from gallery or custom keyboards. Envoyez-les depuis la phototèque ou des claviers personnalisés. @@ -7433,6 +7681,10 @@ chat item action Envoi des 100 derniers messages aux nouveaux membres. No comment provided by engineer. + + Send up to 100 last messages to new subscribers. + No comment provided by engineer. + Send your private feedback to groups. No comment provided by engineer. @@ -7447,6 +7699,10 @@ chat item action L'expéditeur a peut-être supprimé la demande de connexion. No comment provided by engineer. + + Sending a link preview may reveal your IP address to the website. You can change this in Privacy settings later. + alert message + Sending delivery receipts will be enabled for all contacts in all visible chat profiles. L'envoi d'accusés de réception sera activé pour tous les contacts dans tous les profils de chat visibles. @@ -7738,11 +7994,14 @@ chat item action Partager publiquement votre adresse No comment provided by engineer. - - Share address with contacts? - Partager l'adresse avec vos contacts ? + + Share address with SimpleX contacts? alert title + + Share channel + No comment provided by engineer. + Share from other apps. Partager depuis d'autres applications. @@ -7780,9 +8039,12 @@ chat item action Partager sur SimpleX No comment provided by engineer. - - Share with contacts - Partager avec vos contacts + + Share via chat + No comment provided by engineer. + + + Share with SimpleX contacts No comment provided by engineer. @@ -8026,6 +8288,11 @@ report reason Carré, circulaire, ou toute autre forme intermédiaire. No comment provided by engineer. + + Star on GitHub + Star sur GitHub + No comment provided by engineer. + Start chat Démarrer le chat @@ -8129,6 +8396,10 @@ report reason Subscriber No comment provided by engineer. + + Subscriber reports + chat feature + Subscriber will be removed from channel - this cannot be undone! alert message @@ -8137,6 +8408,42 @@ report reason Subscribers No comment provided by engineer. + + Subscribers can add message reactions. + No comment provided by engineer. + + + Subscribers can chat with admins. + No comment provided by engineer. + + + Subscribers can irreversibly delete sent messages. (24 hours) + No comment provided by engineer. + + + Subscribers can report messsages to moderators. + No comment provided by engineer. + + + Subscribers can send SimpleX links. + No comment provided by engineer. + + + Subscribers can send direct messages. + No comment provided by engineer. + + + Subscribers can send disappearing messages. + No comment provided by engineer. + + + Subscribers can send files and media. + No comment provided by engineer. + + + Subscribers can send voice messages. + No comment provided by engineer. + Subscribers use relay link to connect to the channel. Relay address was used to set up this relay for the channel. @@ -8220,6 +8527,10 @@ Relay address was used to set up this relay for the channel. Prendre une photo No comment provided by engineer. + + Talk to someone + No comment provided by engineer. + Tap Connect to chat No comment provided by engineer. @@ -8232,11 +8543,6 @@ Relay address was used to set up this relay for the channel. Tap Connect to use bot No comment provided by engineer. - - Tap Create SimpleX address in the menu to create it later. - Appuyez sur Créer une adresse SimpleX dans le menu pour la créer ultérieurement. - No comment provided by engineer. - Tap Join channel No comment provided by engineer. @@ -8270,6 +8576,10 @@ Relay address was used to set up this relay for the channel. Appuyez pour rejoindre incognito No comment provided by engineer. + + Tap to open + No comment provided by engineer. + Tap to paste link Appuyez pour coller le lien @@ -8369,6 +8679,10 @@ Cela peut se produire en raison d'un bug ou lorsque la connexion est compromise. Le code scanné n'est pas un code QR de lien SimpleX. No comment provided by engineer. + + The connection reached the limit of undelivered messages + conn error description + The connection reached the limit of undelivered messages, your contact may be offline. La connexion a atteint la limite des messages non délivrés, votre contact est peut-être hors ligne. @@ -8596,6 +8910,10 @@ Cela peut se produire en raison d'un bug ou lorsque la connexion est compromise. Pour cacher les messages indésirables. No comment provided by engineer. + + To make SimpleX Network last. + No comment provided by engineer. + To make a new connection Pour établir une nouvelle connexion @@ -8867,13 +9185,17 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien Unsupported connection link - No comment provided by engineer. + conn error description Up to 100 last messages are sent to new members. Les 100 derniers messages sont envoyés aux nouveaux membres. No comment provided by engineer. + + Up to 100 last messages are sent to new subscribers. + No comment provided by engineer. + Update Mise à jour @@ -9077,6 +9399,10 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien Utiliser l'application d'une main. No comment provided by engineer. + + Use this address in your social media profile, website, or email signature. + No comment provided by engineer. + Use web port No comment provided by engineer. @@ -9227,6 +9553,10 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien Wait response relay test step + + Waiting for channel owner to add relays. + No comment provided by engineer. + Waiting for desktop... En attente du bureau... @@ -9267,6 +9597,10 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien Attention : vous risquez de perdre des données ! No comment provided by engineer. + + We made connecting simpler for new users. + No comment provided by engineer. + WebRTC ICE servers Serveurs WebRTC ICE @@ -9847,6 +10181,10 @@ Relays can access channel messages. Votre profil a été modifié. Si vous l'enregistrez, le profil mis à jour sera envoyé à tous vos contacts. alert message + + Your public address + No comment provided by engineer. + Your random profile Votre profil aléatoire @@ -9875,21 +10213,11 @@ Relays can access channel messages. Vos paramètres No comment provided by engineer. - - [Contribute](https://github.com/simplex-chat/simplex-chat#contribute) - [Contribuer](https://github.com/simplex-chat/simplex-chat#contribute) - No comment provided by engineer. - [Send us email](mailto:chat@simplex.chat) [Contact par mail](mailto:chat@simplex.chat) No comment provided by engineer. - - [Star on GitHub](https://github.com/simplex-chat/simplex-chat) - [Star sur GitHub](https://github.com/simplex-chat/simplex-chat) - No comment provided by engineer. - \_italic_ \_italique_ @@ -10040,6 +10368,10 @@ marked deleted chat item preview text appel… call status + + can't broadcast + No comment provided by engineer. + can't send messages No comment provided by engineer. @@ -10680,6 +11012,10 @@ time to disappear removed (%d attempts) receive error chat item + + removed by operator + No comment provided by engineer. + removed contact address suppression de l'adresse de contact @@ -10993,6 +11329,10 @@ dernier message reçu : %2$@ \~barré~ No comment provided by engineer. + + ⚠️ Signature verification failed: %@. + owner verification + 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 4837804697..7e52f853f2 100644 --- a/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff +++ b/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff @@ -185,9 +185,20 @@ %d hónap time interval - - %d relays - channel relay bar + + %d relays failed + channel relay bar +channel subscriber relay bar + + + %d relays not active + channel relay bar +channel subscriber relay bar + + + %d relays removed + channel relay bar +channel subscriber relay bar %d sec @@ -206,10 +217,12 @@ %d subscriber + %d feliratkozó channel subscriber count %d subscribers + %d feliratkozó channel subscriber count @@ -219,21 +232,41 @@ %1$d/%2$d relays active + %1$d/%2$d átjátszó aktív channel creation progress channel relay bar progress + + %1$d/%2$d relays active, %3$d errors + channel relay bar + %1$d/%2$d relays active, %3$d failed + %1$d/%2$d átjátszó aktív, %3$d sikertelen channel creation progress with errors -channel relay bar progress with errors +channel relay bar + + + %1$d/%2$d relays active, %3$d removed + channel relay bar %1$d/%2$d relays connected + %1$d/%2$d átjátszó kapcsolódva channel subscriber relay bar progress %1$d/%2$d relays connected, %3$d errors - channel subscriber relay bar progress with errors + %1$d/%2$d átjátszó kapcsolódva, %3$d hiba + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d failed + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d removed + channel subscriber relay bar %lld @@ -247,6 +280,7 @@ channel relay bar progress with errors %lld channel events + %lld csatornaesemény No comment provided by engineer. @@ -349,11 +383,19 @@ channel relay bar progress with errors %u üzenet kihagyva. No comment provided by engineer. + + (from owner) + chat link info line + (new) (új) No comment provided by engineer. + + (signed) + chat link info line + (this device v%@) (ez az eszköz: v%@) @@ -376,7 +418,7 @@ channel relay bar progress with errors **Most private**: do not use SimpleX Chat push server. The app will check messages in background, when the system allows it, depending on how often you use the app. - **Legprivátabb:** ne használja a SimpleX Chat értesítési kiszolgálót, rendszeresen ellenőrizze az üzeneteket a háttérben (attól függően, hogy milyen gyakran használja az alkalmazást). + **A legprivátabb**: Az alkalmazás nem használja a SimpleX Chat push-kiszolgálóját. Az alkalmazás a háttérben ellenőrzi az üzeneteket, amikor a rendszer ezt lehetővé teszi, attól függően, hogy Ön milyen gyakran használja az alkalmazást. No comment provided by engineer. @@ -386,7 +428,7 @@ channel relay bar progress with errors **Please note**: you will NOT be able to recover or change passphrase if you lose it. - **Megjegyzés:** NEM fogja tudni helyreállítani, vagy módosítani a jelmondatot abban az esetben, ha elveszíti. + **Megjegyzés:** NEM fogja tudni helyreállítani vagy módosítani a jelmondatot abban az esetben, ha elveszíti. No comment provided by engineer. @@ -401,6 +443,7 @@ channel relay bar progress with errors **Test relay** to retrieve its name. + **Átjátszó tesztelése** a nevének lekéréséhez. No comment provided by engineer. @@ -446,6 +489,12 @@ channel relay bar progress with errors - és még sok más! No comment provided by engineer. + + - opt-in to send link previews. +- prevent hyperlink phishing. +- remove link tracking. + No comment provided by engineer. + - optionally notify deleted contacts. - profile names with spaces. @@ -514,7 +563,7 @@ time interval 1-time link can be used *with one contact only* - share in person or via any messenger. - Az egyszer használható meghívó egy hivatkozás és *csak egyetlen partnerrel használható* – személyesen vagy bármilyen üzenetváltó-alkalmazáson keresztül megosztható. + Az egyszer használható meghívó egy hivatkozás és *csak egyetlen partnerrel használható* – személyesen vagy bármilyen üzenetváltó alkalmazáson keresztül megosztható. No comment provided by engineer. @@ -544,6 +593,10 @@ time interval Néhány további dolog No comment provided by engineer. + + A link for one person to connect + No comment provided by engineer. + A new contact Egy új partner @@ -670,9 +723,8 @@ swipe action Aktív kapcsolatok száma No comment provided by engineer. - - Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts. - Cím hozzáadása a profilhoz, hogy a partnerei megoszthassák másokkal. A profilfrissítés el lesz küldve partnerei számára. + + Add address to your profile, so that your SimpleX contacts can share it with other people. Profile update will be sent to your SimpleX contacts. No comment provided by engineer. @@ -740,6 +792,10 @@ swipe action Hozzáadott üzenetkiszolgálók No comment provided by engineer. + + Adding relays will be supported later. + No comment provided by engineer. + Additional accent További kiemelőszín @@ -860,6 +916,14 @@ swipe action Összes profil profile dropdown + + All relays failed + No comment provided by engineer. + + + All relays removed + No comment provided by engineer. + All reports will be archived for you. Az összes jelentés archiválva lesz az Ön számára. @@ -920,6 +984,10 @@ swipe action Az üzenetek végleges törlése csak abban az esetben van engedélyezve, ha a partnere is engedélyezi. (24 óra) No comment provided by engineer. + + Allow members to chat with admins. + No comment provided by engineer. + Allow message reactions only if your contact allows them. A reakciók hozzáadása az üzenetekhez csak abban az esetben van engedélyezve, ha a partnere is engedélyezi. @@ -935,6 +1003,11 @@ swipe action A közvetlen üzenetek küldése a tagok között engedélyezve van. No comment provided by engineer. + + Allow sending direct messages to subscribers. + A közvetlen üzenetek küldése a feliratkozók között engedélyezve van. + No comment provided by engineer. + Allow sending disappearing messages. Az eltűnő üzenetek küldése engedélyezve van. @@ -945,6 +1018,10 @@ swipe action Megosztás engedélyezése No comment provided by engineer. + + Allow subscribers to chat with admins. + No comment provided by engineer. + Allow to irreversibly delete sent messages. (24 hours) Az elküldött üzenetek végleges törlése engedélyezve van. (24 óra) @@ -1357,6 +1434,7 @@ swipe action Block subscriber for all? + Az összes feliratkozó számára letiltja a feliratkozót? No comment provided by engineer. @@ -1411,6 +1489,7 @@ swipe action Broadcast + Közvetítés… compose placeholder for channel owner @@ -1421,7 +1500,7 @@ swipe action Business address Üzleti cím - No comment provided by engineer. + chat link info line Business chats @@ -1602,48 +1681,76 @@ set passcode view Channel + Csatorna No comment provided by engineer. Channel display name + Csatorna megjelenítendő neve No comment provided by engineer. Channel full name (optional) + Csatorna teljes neve (nem kötelező) No comment provided by engineer. + + Channel has no active relays. Please try to join later. + alert message +alert subtitle + Channel image + Csatornakép No comment provided by engineer. Channel link + Csatornahivatkozás + chat link info line + + + Channel preferences No comment provided by engineer. Channel profile + Csatornaprofil No comment provided by engineer. Channel profile is stored on subscribers' devices and on the chat relays. + A csatornaprofil a feliratkozók eszközén és a csevegési átjátszókon van tárolva. No comment provided by engineer. Channel profile was changed. If you save it, the updated profile will be sent to channel subscribers. + A csatornaprofil módosult. Ha menti, akkor a frissített profil el lesz küldve a csatorna feliratkozóinak. alert message + + Channel temporarily unavailable + alert title + Channel will be deleted for all subscribers - this cannot be undone! + A csatorna az összes feliratkozó számára törölve lesz – ez a művelet nem vonható vissza! No comment provided by engineer. Channel will be deleted for you - this cannot be undone! + A csatorna törölve lesz az Ön számára – ez a művelet nem vonható vissza! No comment provided by engineer. Channel will start working with %1$d of %2$d relays. Proceed? + A csatorna %2$d átjátszóból %1$d használatával kezd el működni. Folytatja? alert message + + Channels + No comment provided by engineer. + Chat Csevegés @@ -1731,18 +1838,22 @@ set passcode view Chat relay + Csevegési átjátszó No comment provided by engineer. Chat relays + Csevegési átjátszók No comment provided by engineer. Chat relays forward messages in channels you create. + A csevegési átjátszók továbbítják az üzeneteket az Ön által létrehozott csatornákban. No comment provided by engineer. Chat relays forward messages to channel subscribers. + A csevegési átjátszók továbbítják az üzeneteket a csatorna feliratkozóinak. No comment provided by engineer. @@ -1763,7 +1874,8 @@ set passcode view Chat with admins Csevegés az adminisztrátorokkal - chat toolbar + chat feature +chat toolbar Chat with member @@ -1780,11 +1892,23 @@ set passcode view Csevegések No comment provided by engineer. + + Chats with admins are prohibited. + No comment provided by engineer. + + + Chats with admins in public channels have no E2E encryption - use only with trusted chat relays. + alert message + Chats with members Csevegés a tagokkal No comment provided by engineer. + + Chats with members are disabled + No comment provided by engineer. + Check messages every 20 min. Üzenetek ellenőrzése 20 percenként. @@ -1797,10 +1921,12 @@ set passcode view Check relay address and try again. + Ellenőrizze az átjátszó címét, és próbálja újra. alert message Check relay name and try again. + Ellenőrizze az átjátszó nevét, és próbálja újra. alert message @@ -1950,6 +2076,7 @@ set passcode view Configure relays + Átjátszók konfigurálása No comment provided by engineer. @@ -2062,6 +2189,10 @@ Ez a saját egyszer használható meghívója! Kapcsolódás egy hivatkozáson keresztül new chat sheet title + + Connect via link or QR code + No comment provided by engineer. + Connect via one-time link Kapcsolódás az egyszer használható meghívón keresztül @@ -2072,6 +2203,10 @@ Ez a saját egyszer használható meghívója! Kapcsolódás a következővel: %@ new chat action + + Connect with someone + No comment provided by engineer. + Connected Kapcsolódott @@ -2140,7 +2275,7 @@ Ez a saját egyszer használható meghívója! Connection error (AUTH) Kapcsolódási hiba (AUTH) - No comment provided by engineer. + conn error description Connection failed @@ -2199,6 +2334,10 @@ Ez a saját egyszer használható meghívója! Kapcsolatok No comment provided by engineer. + + Contact address + chat link info line + Contact allows Partner engedélyezi @@ -2269,6 +2408,11 @@ Ez a saját egyszer használható meghívója! Folytatás No comment provided by engineer. + + Contribute + Közreműködés + No comment provided by engineer. + Conversation deleted! Beszélgetés törölve! @@ -2281,7 +2425,7 @@ Ez a saját egyszer használható meghívója! Copy error - Másolási hiba + Hiba másolása No comment provided by engineer. @@ -2299,11 +2443,6 @@ Ez a saját egyszer használható meghívója! Helyesbíti a nevet a következőre: %@? alert message - - Create - Létrehozás - No comment provided by engineer. - Create 1-time link Egyszer használható meghívó létrehozása @@ -2356,10 +2495,12 @@ Ez a saját egyszer használható meghívója! Create public channel + Nyilvános csatorna létrehozása No comment provided by engineer. Create public channel (BETA) + Nyilvános csatorna létrehozása (BÉTA) No comment provided by engineer. @@ -2377,6 +2518,10 @@ Ez a saját egyszer használható meghívója! Profil létrehozása No comment provided by engineer. + + Create your public address + No comment provided by engineer. + Created Létrehozva @@ -2399,6 +2544,7 @@ Ez a saját egyszer használható meghívója! Creating channel + Csatorna létrehozása No comment provided by engineer. @@ -2566,6 +2712,7 @@ Ez a saját egyszer használható meghívója! Decode link + Hivatkozás dekódolása relay test step @@ -2616,10 +2763,12 @@ swipe action Delete channel + Csatorna törlése No comment provided by engineer. Delete channel? + Törli a csatornát? No comment provided by engineer. @@ -2795,6 +2944,7 @@ alert button Delete relay + Átjátszó törlése No comment provided by engineer. @@ -2962,6 +3112,15 @@ alert button A tagok közötti közvetlen üzenetek le vannak tiltva. No comment provided by engineer. + + Direct messages between subscribers are prohibited. + A feliratkozók közötti közvetlen üzenetek le vannak tiltva. + No comment provided by engineer. + + + Disable + alert button + Disable (keep overrides) Letiltás (egyéni beállítások megtartása) @@ -3067,6 +3226,11 @@ alert button Az előzmények ne legyenek elküldve az új tagok számára. No comment provided by engineer. + + Do not send history to new subscribers. + Az előzmények ne legyenek elküldve az új feliratkozók számára. + No comment provided by engineer. + Do not use credentials with proxy. Ne használja a hitelesítési adatokat proxyval. @@ -3168,6 +3332,10 @@ chat item action Végpontok között titkosított értesítések. No comment provided by engineer. + + Easier to invite your friends 👋 + No comment provided by engineer. + Edit Szerkesztés @@ -3175,6 +3343,7 @@ chat item action Edit channel profile + Csatornaprofil szerkesztése No comment provided by engineer. @@ -3190,7 +3359,7 @@ chat item action Enable Engedélyezés - No comment provided by engineer. + alert button Enable (keep overrides) @@ -3214,6 +3383,7 @@ chat item action Enable at least one chat relay in Network & Servers. + Engedélyezzen legalább egy csevegési átjátszót a „Hálózat és kiszolgálók” menüben. channel creation warning @@ -3226,6 +3396,10 @@ chat item action Kamera-hozzáférés engedélyezése No comment provided by engineer. + + Enable chats with admins? + alert title + Enable disappearing messages by default. Eltűnő üzenetek engedélyezése alapértelmezetten. @@ -3246,6 +3420,10 @@ chat item action Engedélyezi az azonnali értesítéseket? No comment provided by engineer. + + Enable link previews? + alert title + Enable lock Zárolás engedélyezése @@ -3363,6 +3541,7 @@ chat item action Enter channel name… + Adja meg a csatorna nevét… No comment provided by engineer. @@ -3392,6 +3571,7 @@ chat item action Enter relay name… + Adja meg az átjátszó nevét… No comment provided by engineer. @@ -3422,7 +3602,7 @@ chat item action Error Hiba - No comment provided by engineer. + conn error description Error aborting address change @@ -3451,6 +3631,7 @@ chat item action Error adding relay + Hiba az átjátszó hozzáadásakor alert title @@ -3515,6 +3696,7 @@ chat item action Error creating channel + Hiba a csatorna létrehozásakor alert title @@ -3699,6 +3881,7 @@ chat item action Error saving channel profile + Hiba a csatornaprofil mentésekor No comment provided by engineer. @@ -3766,6 +3949,10 @@ chat item action Hiba történt a kézbesítési jelentések beállításakor! No comment provided by engineer. + + Error sharing channel + alert title + Error starting chat Hiba történt a csevegés elindításakor @@ -4134,6 +4321,10 @@ server test error Az összes moderátor számára No comment provided by engineer. + + For anyone to reach you + No comment provided by engineer. + For chat profile %@: A(z) %@ nevű csevegési profilhoz: @@ -4281,6 +4472,7 @@ Hiba: %2$@ Get link + Hivatkozás megtekintése relay test step @@ -4346,7 +4538,7 @@ Hiba: %2$@ Group link Csoporthivatkozás - No comment provided by engineer. + chat link info line Group links @@ -4458,6 +4650,11 @@ Hiba: %2$@ Az előzmények nem lesznek elküldve az új tagok számára. No comment provided by engineer. + + History is not sent to new subscribers. + Az előzmények nem lesznek elküldve az új feliratkozók számára. + No comment provided by engineer. + How SimpleX works Hogyan működik a SimpleX @@ -4560,7 +4757,7 @@ Hiba: %2$@ Immune to spam - Védett a kéretlen tartalommal szemben + Védett a kéretlen tartalmakkal szemben No comment provided by engineer. @@ -4705,9 +4902,9 @@ További fejlesztések hamarosan! Kezdeti szerepkör No comment provided by engineer. - - Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat) - A [SimpleX Chat terminálhoz] telepítése (https://github.com/simplex-chat/simplex-chat) + + Install SimpleX Chat for terminal + A SimpleX Chat terminálhoz telepítése No comment provided by engineer. @@ -4765,7 +4962,7 @@ További fejlesztések hamarosan! Invalid connection link Érvénytelen kapcsolattartási hivatkozás - No comment provided by engineer. + conn error description Invalid display name! @@ -4789,10 +4986,12 @@ További fejlesztések hamarosan! Invalid relay address! + Érvénytelen az átjátszó címe! alert title Invalid relay name! + Érvénytelen az átjátszó neve! alert title @@ -4830,6 +5029,10 @@ További fejlesztések hamarosan! Tagok meghívása No comment provided by engineer. + + Invite someone privately + No comment provided by engineer. + Invite to chat Meghívás a csevegésbe @@ -4908,6 +5111,7 @@ További fejlesztések hamarosan! Join channel + Csatlakozás a csatornához No comment provided by engineer. @@ -4999,10 +5203,12 @@ Ez a saját hivatkozása a(z) %@ nevű csoporthoz! Leave channel + Csatorna elhagyása No comment provided by engineer. Leave channel? + Elhagyja a csatornát? No comment provided by engineer. @@ -5030,6 +5236,10 @@ Ez a saját hivatkozása a(z) %@ nevű csoporthoz! Kevesebb adatforgalom a mobilhálózatokon. No comment provided by engineer. + + Let someone connect to you + No comment provided by engineer. + Let's talk in SimpleX Chat Beszélgessünk a SimpleX Chatben @@ -5050,6 +5260,10 @@ Ez a saját hivatkozása a(z) %@ nevű csoporthoz! Társítsa össze a hordozható eszköz- és a számítógépes alkalmazásokat! 🔗 No comment provided by engineer. + + Link signature verified. + owner verification + Linked desktop options Társított számítógép beállítások @@ -5235,6 +5449,10 @@ Ez a saját hivatkozása a(z) %@ nevű csoporthoz! A tagok reakciókat adhatnak hozzá az üzenetekhez. No comment provided by engineer. + + Members can chat with admins. + No comment provided by engineer. + Members can irreversibly delete sent messages. (24 hours) A tagok véglegesen törölhetik az elküldött üzeneteiket. (24 óra) @@ -5302,6 +5520,7 @@ Ez a saját hivatkozása a(z) %@ nevű csoporthoz! Message error + Üzenethiba No comment provided by engineer. @@ -5399,6 +5618,14 @@ Ez a saját hivatkozása a(z) %@ nevű csoporthoz! %@ összes üzenete meg fog jelenni! No comment provided by engineer. + + Messages in this channel are **not end-to-end encrypted**. Chat relays can see these messages. + No comment provided by engineer. + + + Messages in this channel are not end-to-end encrypted. Chat relays can see these messages. + E2EE info chat item + Messages in this chat will never be deleted. Az ebben a csevegésben lévő üzenetek soha nem lesznek törölve. @@ -5569,6 +5796,10 @@ Ez a saját hivatkozása a(z) %@ nevű csoporthoz! Hálózati decentralizáció No comment provided by engineer. + + Network error + conn error description + Network issues - message expired after many attempts to send it. Hálózati problémák – az üzenet többszöri elküldési kísérlet után lejárt. @@ -5599,6 +5830,10 @@ Ez a saját hivatkozása a(z) %@ nevű csoporthoz! Új token status text + + New 1-time link + No comment provided by engineer. + New Passcode Új jelkód @@ -5626,6 +5861,7 @@ Ez a saját hivatkozása a(z) %@ nevű csoporthoz! New chat relay + Új csevegési átjátszó No comment provided by engineer. @@ -5698,6 +5934,10 @@ Ez a saját hivatkozása a(z) %@ nevű csoporthoz! Nem No comment provided by engineer. + + No active relays + No comment provided by engineer. + No app password Nincs alkalmazás jelszó @@ -5705,10 +5945,12 @@ Ez a saját hivatkozása a(z) %@ nevű csoporthoz! No chat relays + Nincsenek csevegési átjátszók No comment provided by engineer. No chat relays enabled. + Nincsenek engedélyezve csevegési átjátszók. servers warning @@ -5861,8 +6103,13 @@ Ez a saját hivatkozása a(z) %@ nevű csoporthoz! Nincsenek felhasználói azonosítók. No comment provided by engineer. + + Non-profit governance + No comment provided by engineer. + Not all relays connected + Nem minden átjátszó kapcsolódott alert title @@ -5922,7 +6169,7 @@ Ez a saját hivatkozása a(z) %@ nevű csoporthoz! OK Rendben - No comment provided by engineer. + alert button Off @@ -5946,6 +6193,10 @@ new chat action Egyszer használható meghívó No comment provided by engineer. + + One-time link + chat link info line + Onion hosts will be **required** for connection. Requires compatible VPN. @@ -5965,6 +6216,10 @@ VPN engedélyezése szükséges. Az onion kiszolgálók nem lesznek használva. No comment provided by engineer. + + Only channel owners can change channel preferences. + No comment provided by engineer. + Only chat owners can change preferences. Csak a csevegés tulajdonosai módosíthatják a csevegési beállításokat. @@ -6068,7 +6323,8 @@ VPN engedélyezése szükséges. Open Megnyitás - alert action + alert action +alert button Open Settings @@ -6082,6 +6338,7 @@ VPN engedélyezése szükséges. Open channel + Csatorna megnyitása new chat action @@ -6104,6 +6361,10 @@ VPN engedélyezése szükséges. Feltételek megnyitása No comment provided by engineer. + + Open external link? + alert title + Open full link Teljes hivatkozás megnyitása @@ -6126,6 +6387,7 @@ VPN engedélyezése szükséges. Open new channel + Új csatorna megnyitása new chat action @@ -6193,6 +6455,10 @@ VPN engedélyezése szükséges. Vagy ossza meg biztonságosan ezt a fájlhivatkozást No comment provided by engineer. + + Or show QR in person or via video call. + No comment provided by engineer. + Or show this code Vagy mutassa meg ezt a kódot @@ -6203,6 +6469,10 @@ VPN engedélyezése szükséges. Vagy a privát megosztáshoz No comment provided by engineer. + + Or use this QR - print or show online. + No comment provided by engineer. + Organize chats into lists Csevegések listákba szervezése @@ -6222,10 +6492,16 @@ VPN engedélyezése szükséges. Owner + Tulajdonos No comment provided by engineer. Owners + Tulajdonosok + No comment provided by engineer. + + + Ownership: you can run your own relays. No comment provided by engineer. @@ -6283,6 +6559,10 @@ VPN engedélyezése szükséges. Kép beillesztése No comment provided by engineer. + + Paste link / Scan + No comment provided by engineer. + Paste link to connect! Hivatkozás beillesztése a kapcsolódáshoz! @@ -6439,10 +6719,12 @@ Hiba: %@ Preset relay address + Előre beállított átjátszó címe No comment provided by engineer. Preset relay name + Előre beállított átjátszó neve No comment provided by engineer. @@ -6485,6 +6767,10 @@ Hiba: %@ Ú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. @@ -6532,6 +6818,7 @@ Hiba: %@ Proceed + Folytatás alert action @@ -6559,9 +6846,8 @@ Hiba: %@ Profiltéma No comment provided by engineer. - - Profile update will be sent to your contacts. - A profilfrissítés el lesz küldve a partnerei számára. + + Profile update will be sent to your SimpleX contacts. alert message @@ -6569,6 +6855,10 @@ Hiba: %@ A hívások kezdeményezése le van tiltva. No comment provided by engineer. + + Prohibit chats with admins. + No comment provided by engineer. + Prohibit irreversible message deletion. Az elküldött üzenetek végleges törlése le van tiltva. @@ -6599,6 +6889,11 @@ Hiba: %@ A közvetlen üzenetek küldése a tagok között le van tiltva. No comment provided by engineer. + + Prohibit sending direct messages to subscribers. + A közvetlen üzenetek küldése a feliratkozók között le van tiltva. + No comment provided by engineer. + Prohibit sending disappearing messages. Az eltűnő üzenetek küldése le van tiltva. @@ -6666,6 +6961,10 @@ Engedélyezze a *Hálózat és kiszolgálók* menüben. A proxy jelszót igényel No comment provided by engineer. + + Public channels - speak freely 🚀 + No comment provided by engineer. + Push notifications Leküldéses értesítések @@ -6706,24 +7005,14 @@ Engedélyezze a *Hálózat és kiszolgálók* menüben. Tudjon meg többet No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). - További információ a [Használati útmutatóban](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). + + Read more in User Guide. + További információ a Használati útmutatóban. No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - További információ a [Használati útmutatóban](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - No comment provided by engineer. - - - Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - További információ a [Használati útmutatóban](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - No comment provided by engineer. - - - Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme). - További információ a [GitHub-tárolónkban](https://github.com/simplex-chat/simplex-chat#readme). + + Read more in our GitHub repository. + További információ a GitHub-tárolónkban. No comment provided by engineer. @@ -6885,20 +7174,28 @@ swipe action Relay + Átjátszó No comment provided by engineer. Relay address + Átjátszó címe alert title Relay connection failed + Nem sikerült kapcsolódni az átjátszóhoz alert title Relay link + Átjátszóhivatkozás No comment provided by engineer. + + Relay results: + alert message + Relay server is only used if necessary. Another party can observe your IP address. Az átjátszó csak szükség esetén lesz használva. Egy másik fél megfigyelheti az IP-címét. @@ -6911,6 +7208,11 @@ swipe action Relay test failed! + Nem sikerült tesztelni az átjátszót! + No comment provided by engineer. + + + Reliability: many relays per channel. No comment provided by engineer. @@ -6955,10 +7257,12 @@ swipe action Remove subscriber + Feliratkozó eltávolítása No comment provided by engineer. Remove subscriber? + Eltávolítja a feliratkozót? alert title @@ -7196,6 +7500,10 @@ swipe action SOCKS proxy No comment provided by engineer. + + Safe web links + No comment provided by engineer. + Safely receive files Fájlok biztonságos fogadása @@ -7224,6 +7532,7 @@ chat item action Save (and notify subscribers) + Mentés (és a feliratkozók értesítése) alert button @@ -7241,6 +7550,10 @@ chat item action Mentés és a csoporttagok értesítése No comment provided by engineer. + + Save and notify subscribers + No comment provided by engineer. + Save and reconnect Mentés és újrakapcsolódás @@ -7253,10 +7566,12 @@ chat item action Save channel profile + Csatornaprofil mentése No comment provided by engineer. Save channel profile? + Menti a csatornaprofilt? alert title @@ -7401,7 +7716,7 @@ chat item action Search or paste SimpleX link - Keresés vagy SimpleX-hivatkozás beillesztése + Keressen vagy adjon meg egy SimpleX-hivatkozást No comment provided by engineer. @@ -7439,6 +7754,10 @@ chat item action Biztonsági kód No comment provided by engineer. + + Security: owners hold channel keys. + No comment provided by engineer. + Select Kiválasztás @@ -7569,6 +7888,10 @@ chat item action Kérés küldése üzenet nélkül No comment provided by engineer. + + Send the link via any messenger - it's secure. Ask to paste into SimpleX. + No comment provided by engineer. + Send them from gallery or custom keyboards. Küldje el őket a galériából vagy az egyéni billentyűzetekről. @@ -7579,6 +7902,11 @@ chat item action Legfeljebb az utolsó 100 üzenet elküldése az új tagok számára. No comment provided by engineer. + + Send up to 100 last messages to new subscribers. + Legfeljebb az utolsó 100 üzenet elküldése az új feliratkozók számára. + No comment provided by engineer. + Send your private feedback to groups. Küldjön privát visszajelzést a csoportoknak. @@ -7594,6 +7922,10 @@ chat item action A kérés küldője törölhette a kapcsolódási kérést. No comment provided by engineer. + + Sending a link preview may reveal your IP address to the website. You can change this in Privacy settings later. + alert message + Sending delivery receipts will be enabled for all contacts in all visible chat profiles. A kézbesítési jelentések küldése engedélyezve lesz az összes látható csevegési profilban lévő összes partnere számára. @@ -7721,6 +8053,7 @@ chat item action Server requires authorization to connect to relay, check password. + A kiszolgáló hitelesítést igényel az átjátszóhoz való kapcsolódáshoz, ellenőrizze a jelszavát. relay test error @@ -7889,11 +8222,14 @@ chat item action Cím nyilvános megosztása No comment provided by engineer. - - Share address with contacts? - Megosztja a címet a partnereivel? + + Share address with SimpleX contacts? alert title + + Share channel + No comment provided by engineer. + Share from other apps. Megosztás más alkalmazásokból. @@ -7921,6 +8257,7 @@ chat item action Share relay address + Átjátszó címének megosztása No comment provided by engineer. @@ -7933,9 +8270,12 @@ chat item action Megosztás a SimpleXben No comment provided by engineer. - - Share with contacts - Megosztás a partnerekkel + + Share via chat + No comment provided by engineer. + + + Share with SimpleX contacts No comment provided by engineer. @@ -8050,7 +8390,7 @@ chat item action SimpleX address and 1-time links are safe to share via any messenger. - A SimpleX-cím és az egyszer használható meghívó biztonságosan megosztható bármilyen üzenetváltó-alkalmazáson keresztül. + A SimpleX-cím és az egyszer használható meghívó biztonságosan megosztható bármilyen üzenetváltó alkalmazáson keresztül. No comment provided by engineer. @@ -8110,6 +8450,7 @@ chat item action SimpleX relay address + SimpleX-átjátszó címe simplex link type @@ -8185,6 +8526,11 @@ report reason Négyzet, kör vagy bármi a kettő között. No comment provided by engineer. + + Star on GitHub + Csillagozás a GitHubon + No comment provided by engineer. + Start chat Csevegés elindítása @@ -8287,19 +8633,73 @@ report reason Subscriber + Feliratkozó No comment provided by engineer. + + Subscriber reports + Feliratkozók jelentései + chat feature + Subscriber will be removed from channel - this cannot be undone! + A feliratkozó el lesz távolítva a csatornából – ez a művelet nem vonható vissza! alert message Subscribers + Feliratkozók + No comment provided by engineer. + + + Subscribers can add message reactions. + A feliratkozók reakciókat adhatnak hozzá az üzenetekhez. + No comment provided by engineer. + + + Subscribers can chat with admins. + No comment provided by engineer. + + + Subscribers can irreversibly delete sent messages. (24 hours) + A feliratkozók véglegesen törölhetik az elküldött üzeneteiket. (24 óra) + No comment provided by engineer. + + + Subscribers can report messsages to moderators. + A feliratkozók jelenthetik az üzeneteket a moderátorok felé. + No comment provided by engineer. + + + Subscribers can send SimpleX links. + A feliratkozók küldhetnek SimpleX-hivatkozásokat. + No comment provided by engineer. + + + Subscribers can send direct messages. + A feliratkozók küldhetnek egymásnak közvetlen üzeneteket. + No comment provided by engineer. + + + Subscribers can send disappearing messages. + A feliratkozók küldhetnek eltűnő üzeneteket. + No comment provided by engineer. + + + Subscribers can send files and media. + A feliratkozók küldhetnek fájlokat és médiatartalmakat. + No comment provided by engineer. + + + Subscribers can send voice messages. + A feliratkozók küldhetnek hangüzeneteket. No comment provided by engineer. Subscribers use relay link to connect to the channel. Relay address was used to set up this relay for the channel. + A feliratkozók az átjátszó hivatkozását használják a csatornához való kapcsolódáshoz. +Az átjátszó címe ennek az átjátszónak a beállítására szolgált a csatornához. No comment provided by engineer. @@ -8382,6 +8782,10 @@ Relay address was used to set up this relay for the channel. Kép készítése No comment provided by engineer. + + Talk to someone + No comment provided by engineer. + Tap Connect to chat Koppintson a „Kapcsolódás” gombra a csevegéshez @@ -8397,13 +8801,9 @@ Relay address was used to set up this relay for the channel. Koppintson a „Kapcsolódás” gombra a bot használatához No comment provided by engineer. - - Tap Create SimpleX address in the menu to create it later. - Koppintson a SimpleX-cím létrehozása menüpontra a későbbi létrehozáshoz. - No comment provided by engineer. - Tap Join channel + Koppintson a „Csatlakozás a csatornához” gombra No comment provided by engineer. @@ -8436,6 +8836,10 @@ Relay address was used to set up this relay for the channel. Koppintson ide az inkognitóban való kapcsolódáshoz No comment provided by engineer. + + Tap to open + No comment provided by engineer. + Tap to paste link Koppintson ide a hivatkozás beillesztéséhez @@ -8464,6 +8868,7 @@ server test failure Test relay + Átjátszó tesztelése No comment provided by engineer. @@ -8520,6 +8925,7 @@ Ez valamilyen hiba vagy sérült kapcsolat esetén fordulhat elő. The app removed this message after %lld attempts to receive it. + Az alkalmazás %lld sikertelen letöltési kísérlet után eltávolította ezt az üzenetet. No comment provided by engineer. @@ -8537,6 +8943,10 @@ Ez valamilyen hiba vagy sérült kapcsolat esetén fordulhat elő. A beolvasott QR-kód nem egy SimpleX-hivatkozás. No comment provided by engineer. + + The connection reached the limit of undelivered messages + conn error description + The connection reached the limit of undelivered messages, your contact may be offline. A kapcsolat elérte a kézbesítetlen üzenetek számának határát, a partnere lehet, hogy offline állapotban van. @@ -8714,10 +9124,12 @@ Ez valamilyen hiba vagy sérült kapcsolat esetén fordulhat elő. This is a chat relay address, it cannot be used to connect. + Ez egy csevegési átjátszó címe, nem használható kapcsolódásra. alert message This is your link for channel %@! + Ez a saját hivatkozása a(z) %@ nevű csatornához! new chat action @@ -8770,6 +9182,10 @@ Ez valamilyen hiba vagy sérült kapcsolat esetén fordulhat elő. Kéretlen üzenetek elrejtése. No comment provided by engineer. + + To make SimpleX Network last. + No comment provided by engineer. + To make a new connection Új kapcsolat létrehozásához @@ -8944,6 +9360,7 @@ A funkció bekapcsolása előtt a rendszer felszólítja a képernyőzár beáll Unblock subscriber for all? + Az összes feliratkozó számára feloldja a feliratkozó letiltását? No comment provided by engineer. @@ -9046,13 +9463,18 @@ A kapcsolódáshoz kérje meg a partnerét, hogy hozzon létre egy másik kapcso Unsupported connection link Nem támogatott kapcsolattartási hivatkozás - No comment provided by engineer. + conn error description Up to 100 last messages are sent to new members. Legfeljebb az utolsó 100 üzenet lesz elküldve az új tagok számára. No comment provided by engineer. + + Up to 100 last messages are sent to new subscribers. + Legfeljebb az utolsó 100 üzenet lesz elküldve az új feliratkozók számára. + No comment provided by engineer. + Update Frissítés @@ -9200,6 +9622,7 @@ A kapcsolódáshoz kérje meg a partnerét, hogy hozzon létre egy másik kapcso Use for new channels + Használat új csatornákhoz No comment provided by engineer. @@ -9244,6 +9667,7 @@ A kapcsolódáshoz kérje meg a partnerét, hogy hozzon létre egy másik kapcso Use relay + Átjátszó használata No comment provided by engineer. @@ -9266,6 +9690,10 @@ A kapcsolódáshoz kérje meg a partnerét, hogy hozzon létre egy másik kapcso Alkalmazás egy kézzel való használata. No comment provided by engineer. + + Use this address in your social media profile, website, or email signature. + No comment provided by engineer. + Use web port Webport használata @@ -9288,6 +9716,7 @@ A kapcsolódáshoz kérje meg a partnerét, hogy hozzon létre egy másik kapcso Verify + Ellenőrzés relay test step @@ -9412,12 +9841,18 @@ A kapcsolódáshoz kérje meg a partnerét, hogy hozzon létre egy másik kapcso Wait + Várakozás alert action Wait response + Várakozás a válaszra relay test step + + Waiting for channel owner to add relays. + No comment provided by engineer. + Waiting for desktop... Várakozás a számítógép-alkalmazásra… @@ -9458,6 +9893,10 @@ A kapcsolódáshoz kérje meg a partnerét, hogy hozzon létre egy másik kapcso Figyelmeztetés: néhány adat elveszhet! No comment provided by engineer. + + We made connecting simpler for new users. + No comment provided by engineer. + WebRTC ICE servers WebRTC ICE-kiszolgálók @@ -9722,6 +10161,7 @@ Megismétli a csatlakozási kérést? You can share a link or a QR code - anybody will be able to join the channel. + Megoszthat egy hivatkozást vagy egy QR-kódot – bárki képes lesz csatlakozni a csatornához. No comment provided by engineer. @@ -9771,6 +10211,7 @@ Megismétli a csatlakozási kérést? You connected to the channel via this relay link. + Ön ezen az átjátszóhivatkozáson keresztül kapcsolódott a csatornához. No comment provided by engineer. @@ -9887,6 +10328,7 @@ Megismétli a kapcsolódási kérést? You will stop receiving messages from this channel. Chat history will be preserved. + Ön nem fog több üzenetet kapni ebből a csatornából. A csevegési előzmények megmaradnak. No comment provided by engineer. @@ -9936,6 +10378,7 @@ Megismétli a kapcsolódási kérést? Your channel + Saját csatorna No comment provided by engineer. @@ -10026,6 +10469,8 @@ Megismétli a kapcsolódási kérést? Your profile **%@** will be shared with channel relays and subscribers. Relays can access channel messages. + A(z) **%@** nevű profilja meg lesz osztva a csatorna átjátszóival és feliratkozóival. +Az átjátszók hozzáférhetnek a csatornaüzenetekhez. No comment provided by engineer. @@ -10048,6 +10493,10 @@ Relays can access channel messages. A profilja módosult. Ha menti, akkor a profilfrissítés el lesz küldve a partnerei számára. alert message + + Your public address + No comment provided by engineer. + Your random profile Véletlenszerű profil @@ -10055,15 +10504,17 @@ Relays can access channel messages. Your relay address + Saját átjátszó címe No comment provided by engineer. Your relay name + Saját átjátszó neve No comment provided by engineer. Your server address - Saját SMP-kiszolgálójának címe + Saját SMP-kiszolgáló címe No comment provided by engineer. @@ -10076,21 +10527,11 @@ Relays can access channel messages. Beállítások No comment provided by engineer. - - [Contribute](https://github.com/simplex-chat/simplex-chat#contribute) - [Közreműködés](https://github.com/simplex-chat/simplex-chat#contribute) - No comment provided by engineer. - [Send us email](mailto:chat@simplex.chat) [Küldjön nekünk e-mailt](mailto:chat@simplex.chat) No comment provided by engineer. - - [Star on GitHub](https://github.com/simplex-chat/simplex-chat) - [Csillagozás a GitHubon](https://github.com/simplex-chat/simplex-chat) - No comment provided by engineer. - \_italic_ \_dőlt_ @@ -10108,6 +10549,7 @@ Relays can access channel messages. accepted + elfogadva No comment provided by engineer. @@ -10132,6 +10574,7 @@ Relays can access channel messages. active + aktív No comment provided by engineer. @@ -10245,6 +10688,10 @@ marked deleted chat item preview text hívás… call status + + can't broadcast + No comment provided by engineer. + can't send messages nem lehet üzeneteket küldeni @@ -10282,10 +10729,12 @@ marked deleted chat item preview text channel + csatorna shown as sender role for channel messages channel profile updated + csatornaprofil frissítve snd group event chat item @@ -10436,6 +10885,7 @@ pref value deleted channel + törölt csatorna rcv group event chat item @@ -10550,6 +11000,7 @@ pref value error: %@ + hiba: %@ receive error chat item @@ -10684,6 +11135,7 @@ pref value link + hivatkozás No comment provided by engineer. @@ -10758,6 +11210,7 @@ pref value new + új No comment provided by engineer. @@ -10885,6 +11338,7 @@ time to disappear relay + átjátszó member role @@ -10899,8 +11353,13 @@ time to disappear removed (%d attempts) + eltávolítva (%d kísérlet) receive error chat item + + removed by operator + No comment provided by engineer. + removed contact address eltávolította a kapcsolattartási címet @@ -11057,6 +11516,7 @@ utoljára fogadott üzenet: %2$@ updated channel profile + frissített csatornaprofil rcv group event chat item @@ -11081,6 +11541,7 @@ utoljára fogadott üzenet: %2$@ via %@ + a következőn keresztül: %@ relay hostname @@ -11160,6 +11621,7 @@ utoljára fogadott üzenet: %2$@ you are subscriber + Ön feliratkozó No comment provided by engineer. @@ -11222,6 +11684,10 @@ utoljára fogadott üzenet: %2$@ \~áthúzott~ No comment provided by engineer. + + ⚠️ Signature verification failed: %@. + owner verification + 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 2d0566afc6..7cf7b418a8 100644 --- a/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff +++ b/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff @@ -185,9 +185,20 @@ %d mesi time interval - - %d relays - channel relay bar + + %d relays failed + channel relay bar +channel subscriber relay bar + + + %d relays not active + channel relay bar +channel subscriber relay bar + + + %d relays removed + channel relay bar +channel subscriber relay bar %d sec @@ -206,10 +217,12 @@ %d subscriber + %d iscritto channel subscriber count %d subscribers + %d iscritti channel subscriber count @@ -219,21 +232,41 @@ %1$d/%2$d relays active + %1$d/%2$d relay attivo/i channel creation progress channel relay bar progress + + %1$d/%2$d relays active, %3$d errors + channel relay bar + %1$d/%2$d relays active, %3$d failed + %1$d/%2$d relay attivo/i, %3$d fallito/i channel creation progress with errors -channel relay bar progress with errors +channel relay bar + + + %1$d/%2$d relays active, %3$d removed + channel relay bar %1$d/%2$d relays connected + %1$d/%2$d relay connesso/i channel subscriber relay bar progress %1$d/%2$d relays connected, %3$d errors - channel subscriber relay bar progress with errors + %1$d/%2$d relay connesso/i, %3$d errori + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d failed + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d removed + channel subscriber relay bar %lld @@ -247,6 +280,7 @@ channel relay bar progress with errors %lld channel events + %lld eventi del canale No comment provided by engineer. @@ -349,11 +383,19 @@ channel relay bar progress with errors %u messaggi saltati. No comment provided by engineer. + + (from owner) + chat link info line + (new) (nuovo) No comment provided by engineer. + + (signed) + chat link info line + (this device v%@) (questo dispositivo v%@) @@ -401,6 +443,7 @@ channel relay bar progress with errors **Test relay** to retrieve its name. + **Prova il relay** per recuperare il suo nome. No comment provided by engineer. @@ -446,6 +489,12 @@ channel relay bar progress with errors - e altro ancora! No comment provided by engineer. + + - opt-in to send link previews. +- prevent hyperlink phishing. +- remove link tracking. + No comment provided by engineer. + - optionally notify deleted contacts. - profile names with spaces. @@ -544,6 +593,10 @@ time interval Qualche altra cosa No comment provided by engineer. + + A link for one person to connect + No comment provided by engineer. + A new contact Un contatto nuovo @@ -670,9 +723,8 @@ swipe action Connessioni attive No comment provided by engineer. - - Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts. - Aggiungi l'indirizzo al tuo profilo, in modo che i tuoi contatti possano condividerlo con altre persone. L'aggiornamento del profilo verrà inviato ai tuoi contatti. + + Add address to your profile, so that your SimpleX contacts can share it with other people. Profile update will be sent to your SimpleX contacts. No comment provided by engineer. @@ -740,6 +792,10 @@ swipe action Server dei messaggi aggiunti No comment provided by engineer. + + Adding relays will be supported later. + No comment provided by engineer. + Additional accent Principale aggiuntivo @@ -860,6 +916,14 @@ swipe action Tutti gli profili profile dropdown + + All relays failed + No comment provided by engineer. + + + All relays removed + No comment provided by engineer. + All reports will be archived for you. Tutte le segnalazioni verranno archiviate per te. @@ -920,6 +984,10 @@ swipe action Consenti l'eliminazione irreversibile dei messaggi solo se il contatto la consente a te. (24 ore) No comment provided by engineer. + + Allow members to chat with admins. + No comment provided by engineer. + Allow message reactions only if your contact allows them. Consenti reazioni ai messaggi solo se il tuo contatto le consente. @@ -935,6 +1003,11 @@ swipe action Permetti l'invio di messaggi diretti ai membri. No comment provided by engineer. + + Allow sending direct messages to subscribers. + Permetti l'invio di messaggi diretti agli iscritti. + No comment provided by engineer. + Allow sending disappearing messages. Permetti l'invio di messaggi a tempo. @@ -945,6 +1018,10 @@ swipe action Consenti la condivisione No comment provided by engineer. + + Allow subscribers to chat with admins. + No comment provided by engineer. + Allow to irreversibly delete sent messages. (24 hours) Permetti di eliminare irreversibilmente i messaggi inviati. (24 ore) @@ -1357,6 +1434,7 @@ swipe action Block subscriber for all? + Bloccare l'iscritto per tutti? No comment provided by engineer. @@ -1411,6 +1489,7 @@ swipe action Broadcast + Trasmetti compose placeholder for channel owner @@ -1421,7 +1500,7 @@ swipe action Business address Indirizzo di lavoro - No comment provided by engineer. + chat link info line Business chats @@ -1602,48 +1681,76 @@ set passcode view Channel + Canale No comment provided by engineer. Channel display name + Nome da mostrare del canale No comment provided by engineer. Channel full name (optional) + Nome completo del canale (facoltativo) No comment provided by engineer. + + Channel has no active relays. Please try to join later. + alert message +alert subtitle + Channel image + Immagine del canale No comment provided by engineer. Channel link + Link del canale + chat link info line + + + Channel preferences No comment provided by engineer. Channel profile + Profilo del canale No comment provided by engineer. Channel profile is stored on subscribers' devices and on the chat relays. + Il profilo del canale è memorizzato sui dispositivi degli iscritti e sui relay di chat. No comment provided by engineer. Channel profile was changed. If you save it, the updated profile will be sent to channel subscribers. + Il profilo del canale è stato cambiato. Se lo salvi, il profilo aggiornato verrà inviato agli iscritti di canale. alert message + + Channel temporarily unavailable + alert title + Channel will be deleted for all subscribers - this cannot be undone! + Il canale verrà eliminato per tutti gli iscritti, non è reversibile! No comment provided by engineer. Channel will be deleted for you - this cannot be undone! + Il canale verrà eliminato per te, non è reversibile! No comment provided by engineer. Channel will start working with %1$d of %2$d relays. Proceed? + Il canale sarà operativo con %1$d di %2$d relay. Procedere? alert message + + Channels + No comment provided by engineer. + Chat Chat @@ -1731,18 +1838,22 @@ set passcode view Chat relay + Relay di chat No comment provided by engineer. Chat relays + Relay di chat No comment provided by engineer. Chat relays forward messages in channels you create. + I relay di chat inoltrano i messaggi nei canali che crei. No comment provided by engineer. Chat relays forward messages to channel subscribers. + I relay di chat inoltrano i messaggi agli iscritti del canale. No comment provided by engineer. @@ -1763,7 +1874,8 @@ set passcode view Chat with admins Chat con amministratori - chat toolbar + chat feature +chat toolbar Chat with member @@ -1780,11 +1892,23 @@ set passcode view Chat No comment provided by engineer. + + Chats with admins are prohibited. + No comment provided by engineer. + + + Chats with admins in public channels have no E2E encryption - use only with trusted chat relays. + alert message + Chats with members Chat con membri No comment provided by engineer. + + Chats with members are disabled + No comment provided by engineer. + Check messages every 20 min. Controlla i messaggi ogni 20 min. @@ -1797,10 +1921,12 @@ set passcode view Check relay address and try again. + Controlla l'indirizzo del relay e riprova. alert message Check relay name and try again. + Controlla il nome del relay e riprova. alert message @@ -1950,6 +2076,7 @@ set passcode view Configure relays + Configura i relay No comment provided by engineer. @@ -2062,6 +2189,10 @@ Questo è il tuo link una tantum! Connetti via link new chat sheet title + + Connect via link or QR code + No comment provided by engineer. + Connect via one-time link Connetti via link una tantum @@ -2072,6 +2203,10 @@ Questo è il tuo link una tantum! Connettersi con %@ new chat action + + Connect with someone + No comment provided by engineer. + Connected Connesso @@ -2140,7 +2275,7 @@ Questo è il tuo link una tantum! Connection error (AUTH) Errore di connessione (AUTH) - No comment provided by engineer. + conn error description Connection failed @@ -2199,6 +2334,10 @@ Questo è il tuo link una tantum! Connessioni No comment provided by engineer. + + Contact address + chat link info line + Contact allows Il contatto lo consente @@ -2269,6 +2408,11 @@ Questo è il tuo link una tantum! Continua No comment provided by engineer. + + Contribute + Contribuisci + No comment provided by engineer. + Conversation deleted! Conversazione eliminata! @@ -2299,11 +2443,6 @@ Questo è il tuo link una tantum! Correggere il nome a %@? alert message - - Create - Crea - No comment provided by engineer. - Create 1-time link Crea link una tantum @@ -2356,10 +2495,12 @@ Questo è il tuo link una tantum! Create public channel + Crea canale pubblico No comment provided by engineer. Create public channel (BETA) + Crea canale pubblico (BETA) No comment provided by engineer. @@ -2377,6 +2518,10 @@ Questo è il tuo link una tantum! Crea il tuo profilo No comment provided by engineer. + + Create your public address + No comment provided by engineer. + Created Creato @@ -2399,6 +2544,7 @@ Questo è il tuo link una tantum! Creating channel + Creazione canale No comment provided by engineer. @@ -2566,6 +2712,7 @@ Questo è il tuo link una tantum! Decode link + Decodifica il link relay test step @@ -2616,10 +2763,12 @@ swipe action Delete channel + Elimina canale No comment provided by engineer. Delete channel? + Eliminare il canale? No comment provided by engineer. @@ -2795,6 +2944,7 @@ alert button Delete relay + Elimina relay No comment provided by engineer. @@ -2962,6 +3112,15 @@ alert button I messaggi diretti tra i membri sono vietati in questo gruppo. No comment provided by engineer. + + Direct messages between subscribers are prohibited. + I messaggi diretti tra gli iscritti sono vietati. + No comment provided by engineer. + + + Disable + alert button + Disable (keep overrides) Disattiva (mantieni sostituzioni) @@ -3067,6 +3226,11 @@ alert button Non inviare la cronologia ai nuovi membri. No comment provided by engineer. + + Do not send history to new subscribers. + Non inviare la cronologia ai nuovi iscritti. + No comment provided by engineer. + Do not use credentials with proxy. Non usare credenziali con proxy. @@ -3168,6 +3332,10 @@ chat item action Notifiche crittografate E2E. No comment provided by engineer. + + Easier to invite your friends 👋 + No comment provided by engineer. + Edit Modifica @@ -3175,6 +3343,7 @@ chat item action Edit channel profile + Modifica profilo canale No comment provided by engineer. @@ -3190,7 +3359,7 @@ chat item action Enable Attiva - No comment provided by engineer. + alert button Enable (keep overrides) @@ -3214,6 +3383,7 @@ chat item action Enable at least one chat relay in Network & Servers. + Attiva almeno un relay di chat in "Rete e server". channel creation warning @@ -3226,6 +3396,10 @@ chat item action Attiva l'accesso alla fotocamera No comment provided by engineer. + + Enable chats with admins? + alert title + Enable disappearing messages by default. Attiva i messaggi a tempo in modo predefinito. @@ -3246,6 +3420,10 @@ chat item action Attivare le notifiche istantanee? No comment provided by engineer. + + Enable link previews? + alert title + Enable lock Attiva blocco @@ -3363,6 +3541,7 @@ chat item action Enter channel name… + Inserisci il nome del canale… No comment provided by engineer. @@ -3392,6 +3571,7 @@ chat item action Enter relay name… + Inserisci il nome del relay… No comment provided by engineer. @@ -3422,7 +3602,7 @@ chat item action Error Errore - No comment provided by engineer. + conn error description Error aborting address change @@ -3451,6 +3631,7 @@ chat item action Error adding relay + Errore di aggiunta del relay alert title @@ -3515,6 +3696,7 @@ chat item action Error creating channel + Errore di creazione del canale alert title @@ -3699,6 +3881,7 @@ chat item action Error saving channel profile + Errore di salvataggio del profilo del canale No comment provided by engineer. @@ -3766,6 +3949,10 @@ chat item action Errore nell'impostazione delle ricevute di consegna! No comment provided by engineer. + + Error sharing channel + alert title + Error starting chat Errore di avvio della chat @@ -4134,6 +4321,10 @@ server test error Per tutti i moderatori No comment provided by engineer. + + For anyone to reach you + No comment provided by engineer. + For chat profile %@: Per il profilo di chat %@: @@ -4281,6 +4472,7 @@ Errore: %2$@ Get link + Ottieni link relay test step @@ -4346,7 +4538,7 @@ Errore: %2$@ Group link Link del gruppo - No comment provided by engineer. + chat link info line Group links @@ -4458,6 +4650,11 @@ Errore: %2$@ La cronologia non viene inviata ai nuovi membri. No comment provided by engineer. + + History is not sent to new subscribers. + La cronologia non viene inviata ai nuovi iscritti. + No comment provided by engineer. + How SimpleX works Come funziona SimpleX @@ -4705,9 +4902,9 @@ Altri miglioramenti sono in arrivo! Ruolo iniziale No comment provided by engineer. - - Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat) - Installa [Simplex Chat per terminale](https://github.com/simplex-chat/simplex-chat) + + Install SimpleX Chat for terminal + Installa Simplex Chat per terminale No comment provided by engineer. @@ -4765,7 +4962,7 @@ Altri miglioramenti sono in arrivo! Invalid connection link Link di connessione non valido - No comment provided by engineer. + conn error description Invalid display name! @@ -4789,10 +4986,12 @@ Altri miglioramenti sono in arrivo! Invalid relay address! + Indirizzo del relay non valido! alert title Invalid relay name! + Nome del relay non valido! alert title @@ -4830,6 +5029,10 @@ Altri miglioramenti sono in arrivo! Invita membri No comment provided by engineer. + + Invite someone privately + No comment provided by engineer. + Invite to chat Invita in chat @@ -4908,6 +5111,7 @@ Altri miglioramenti sono in arrivo! Join channel + Iscriviti al canale No comment provided by engineer. @@ -4999,10 +5203,12 @@ Questo è il tuo link per il gruppo %@! Leave channel + Esci dal canale No comment provided by engineer. Leave channel? + Uscire dal canale? No comment provided by engineer. @@ -5030,6 +5236,10 @@ Questo è il tuo link per il gruppo %@! Meno traffico sulle reti mobili. No comment provided by engineer. + + Let someone connect to you + No comment provided by engineer. + Let's talk in SimpleX Chat Parliamo in SimpleX Chat @@ -5050,6 +5260,10 @@ Questo è il tuo link per il gruppo %@! Collega le app mobile e desktop! 🔗 No comment provided by engineer. + + Link signature verified. + owner verification + Linked desktop options Opzioni del desktop collegato @@ -5235,6 +5449,10 @@ Questo è il tuo link per il gruppo %@! I membri del gruppo possono aggiungere reazioni ai messaggi. No comment provided by engineer. + + Members can chat with admins. + No comment provided by engineer. + Members can irreversibly delete sent messages. (24 hours) I membri del gruppo possono eliminare irreversibilmente i messaggi inviati. (24 ore) @@ -5302,6 +5520,7 @@ Questo è il tuo link per il gruppo %@! Message error + Errore del messaggio No comment provided by engineer. @@ -5399,6 +5618,14 @@ Questo è il tuo link per il gruppo %@! I messaggi da %@ verranno mostrati! No comment provided by engineer. + + Messages in this channel are **not end-to-end encrypted**. Chat relays can see these messages. + No comment provided by engineer. + + + Messages in this channel are not end-to-end encrypted. Chat relays can see these messages. + E2EE info chat item + Messages in this chat will never be deleted. I messaggi in questa chat non verranno mai eliminati. @@ -5569,6 +5796,10 @@ Questo è il tuo link per il gruppo %@! Decentralizzazione della rete No comment provided by engineer. + + Network error + conn error description + Network issues - message expired after many attempts to send it. Problemi di rete - messaggio scaduto dopo molti tentativi di inviarlo. @@ -5599,6 +5830,10 @@ Questo è il tuo link per il gruppo %@! Nuovo token status text + + New 1-time link + No comment provided by engineer. + New Passcode Nuovo codice di accesso @@ -5626,6 +5861,7 @@ Questo è il tuo link per il gruppo %@! New chat relay + Nuovo relay di chat No comment provided by engineer. @@ -5698,6 +5934,10 @@ Questo è il tuo link per il gruppo %@! No No comment provided by engineer. + + No active relays + No comment provided by engineer. + No app password Nessuna password dell'app @@ -5705,10 +5945,12 @@ Questo è il tuo link per il gruppo %@! No chat relays + Nessun relay di chat No comment provided by engineer. No chat relays enabled. + Nessun relay di chat attivato. servers warning @@ -5861,8 +6103,13 @@ Questo è il tuo link per il gruppo %@! Nessun identificatore utente. No comment provided by engineer. + + Non-profit governance + No comment provided by engineer. + Not all relays connected + Non tutti i relay sono connessi alert title @@ -5922,7 +6169,7 @@ Questo è il tuo link per il gruppo %@! OK OK - No comment provided by engineer. + alert button Off @@ -5946,6 +6193,10 @@ new chat action Link di invito una tantum No comment provided by engineer. + + One-time link + chat link info line + Onion hosts will be **required** for connection. Requires compatible VPN. @@ -5965,6 +6216,10 @@ Richiede l'attivazione della VPN. Gli host Onion non verranno usati. No comment provided by engineer. + + Only channel owners can change channel preferences. + No comment provided by engineer. + Only chat owners can change preferences. Solo i proprietari della chat possono modificarne le preferenze. @@ -6068,7 +6323,8 @@ Richiede l'attivazione della VPN. Open Apri - alert action + alert action +alert button Open Settings @@ -6082,6 +6338,7 @@ Richiede l'attivazione della VPN. Open channel + Apri canale new chat action @@ -6104,6 +6361,10 @@ Richiede l'attivazione della VPN. Apri le condizioni No comment provided by engineer. + + Open external link? + alert title + Open full link Apri link completo @@ -6126,6 +6387,7 @@ Richiede l'attivazione della VPN. Open new channel + Apri un canale nuovo new chat action @@ -6193,6 +6455,10 @@ Richiede l'attivazione della VPN. O condividi in modo sicuro questo link del file No comment provided by engineer. + + Or show QR in person or via video call. + No comment provided by engineer. + Or show this code O mostra questo codice @@ -6203,6 +6469,10 @@ Richiede l'attivazione della VPN. O per condividere in modo privato No comment provided by engineer. + + Or use this QR - print or show online. + No comment provided by engineer. + Organize chats into lists Organizza le chat in elenchi @@ -6222,10 +6492,16 @@ Richiede l'attivazione della VPN. Owner + Proprietario No comment provided by engineer. Owners + Proprietari + No comment provided by engineer. + + + Ownership: you can run your own relays. No comment provided by engineer. @@ -6283,6 +6559,10 @@ Richiede l'attivazione della VPN. Incolla immagine No comment provided by engineer. + + Paste link / Scan + No comment provided by engineer. + Paste link to connect! Incolla un link per connettere! @@ -6439,10 +6719,12 @@ Errore: %@ Preset relay address + Indirizzo relay preimpostato No comment provided by engineer. Preset relay name + Nome relay preimpostato No comment provided by engineer. @@ -6485,6 +6767,10 @@ Errore: %@ 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. @@ -6532,6 +6818,7 @@ Errore: %@ Proceed + Procedi alert action @@ -6559,9 +6846,8 @@ Errore: %@ Tema del profilo No comment provided by engineer. - - Profile update will be sent to your contacts. - L'aggiornamento del profilo verrà inviato ai tuoi contatti. + + Profile update will be sent to your SimpleX contacts. alert message @@ -6569,6 +6855,10 @@ Errore: %@ Proibisci le chiamate audio/video. No comment provided by engineer. + + Prohibit chats with admins. + No comment provided by engineer. + Prohibit irreversible message deletion. Proibisci l'eliminazione irreversibile dei messaggi. @@ -6599,6 +6889,11 @@ Errore: %@ Proibisci l'invio di messaggi diretti ai membri. No comment provided by engineer. + + Prohibit sending direct messages to subscribers. + Proibisci l'invio di messaggi diretti agli iscritti. + No comment provided by engineer. + Prohibit sending disappearing messages. Proibisci l'invio di messaggi a tempo. @@ -6666,6 +6961,10 @@ Attivalo nelle impostazioni *Rete e server*. Il proxy richiede una password No comment provided by engineer. + + Public channels - speak freely 🚀 + No comment provided by engineer. + Push notifications Notifiche push @@ -6706,24 +7005,14 @@ Attivalo nelle impostazioni *Rete e server*. Leggi tutto No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). - Leggi di più nella [Guida utente](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). + + Read more in User Guide. + Leggi di più nella Guida utente. No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - Maggiori informazioni nella [Guida per l'utente](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - No comment provided by engineer. - - - Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - Maggiori informazioni nella [Guida per l'utente](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - No comment provided by engineer. - - - Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme). - Maggiori informazioni nel nostro [repository GitHub](https://github.com/simplex-chat/simplex-chat#readme). + + Read more in our GitHub repository. + Maggiori informazioni nel nostro repository GitHub. No comment provided by engineer. @@ -6885,20 +7174,28 @@ swipe action Relay + Relay No comment provided by engineer. Relay address + Indirizzo del relay alert title Relay connection failed + Connessione del relay fallita alert title Relay link + Link del relay No comment provided by engineer. + + Relay results: + alert message + Relay server is only used if necessary. Another party can observe your IP address. Il server relay viene usato solo se necessario. Un altro utente può osservare il tuo indirizzo IP. @@ -6911,6 +7208,11 @@ swipe action Relay test failed! + Prova del relay fallita! + No comment provided by engineer. + + + Reliability: many relays per channel. No comment provided by engineer. @@ -6955,10 +7257,12 @@ swipe action Remove subscriber + Rimuovi iscritto No comment provided by engineer. Remove subscriber? + Rimuovere l'iscritto? alert title @@ -7196,6 +7500,10 @@ swipe action Proxy SOCKS No comment provided by engineer. + + Safe web links + No comment provided by engineer. + Safely receive files Ricevi i file in sicurezza @@ -7219,11 +7527,12 @@ chat item action Save (and notify members) - Salva (e informa i membri) + Salva (e avvisa i membri) alert button Save (and notify subscribers) + Salva (e avvisa gli iscritti) alert button @@ -7241,6 +7550,10 @@ chat item action Salva e avvisa i membri del gruppo No comment provided by engineer. + + Save and notify subscribers + No comment provided by engineer. + Save and reconnect Salva e riconnetti @@ -7253,10 +7566,12 @@ chat item action Save channel profile + Salva il profilo del canale No comment provided by engineer. Save channel profile? + Salva il profilo del canale? alert title @@ -7439,6 +7754,10 @@ chat item action Codice di sicurezza No comment provided by engineer. + + Security: owners hold channel keys. + No comment provided by engineer. + Select Seleziona @@ -7569,6 +7888,10 @@ chat item action Invia richiesta senza messaggio No comment provided by engineer. + + Send the link via any messenger - it's secure. Ask to paste into SimpleX. + No comment provided by engineer. + Send them from gallery or custom keyboards. Inviali dalla galleria o dalle tastiere personalizzate. @@ -7579,6 +7902,11 @@ chat item action Invia fino a 100 ultimi messaggi ai nuovi membri. No comment provided by engineer. + + Send up to 100 last messages to new subscribers. + Invia fino a 100 ultimi messaggi ai nuovi iscritti. + No comment provided by engineer. + Send your private feedback to groups. Invia i tuoi commenti privati ai gruppi. @@ -7594,6 +7922,10 @@ chat item action Il mittente potrebbe aver eliminato la richiesta di connessione. No comment provided by engineer. + + Sending a link preview may reveal your IP address to the website. You can change this in Privacy settings later. + alert message + Sending delivery receipts will be enabled for all contacts in all visible chat profiles. L'invio delle ricevute di consegna sarà attivo per tutti i contatti in tutti i profili di chat visibili. @@ -7721,6 +8053,7 @@ chat item action Server requires authorization to connect to relay, check password. + Il server richiede l'autorizzazione per connettersi al relay, controlla la password. relay test error @@ -7889,11 +8222,14 @@ chat item action Condividi indirizzo pubblicamente No comment provided by engineer. - - Share address with contacts? - Condividere l'indirizzo con i contatti? + + Share address with SimpleX contacts? alert title + + Share channel + No comment provided by engineer. + Share from other apps. Condividi da altre app. @@ -7921,6 +8257,7 @@ chat item action Share relay address + Condividi l'indirizzo del relay No comment provided by engineer. @@ -7933,9 +8270,12 @@ chat item action Condividi in SimpleX No comment provided by engineer. - - Share with contacts - Condividi con i contatti + + Share via chat + No comment provided by engineer. + + + Share with SimpleX contacts No comment provided by engineer. @@ -8110,6 +8450,7 @@ chat item action SimpleX relay address + Indirizzo del relay SimpleX simplex link type @@ -8185,6 +8526,11 @@ report reason Quadrata, circolare o qualsiasi forma tra le due. No comment provided by engineer. + + Star on GitHub + Dai una stella su GitHub + No comment provided by engineer. + Start chat Avvia chat @@ -8282,24 +8628,78 @@ report reason Subscribed - Iscritto + Iscritto/a No comment provided by engineer. Subscriber + Iscritto No comment provided by engineer. + + Subscriber reports + Segnalazioni degli iscritti + chat feature + Subscriber will be removed from channel - this cannot be undone! + L'iscritto verrà rimosso dal canale, non è reversibile! alert message Subscribers + Iscritti + No comment provided by engineer. + + + Subscribers can add message reactions. + Gli iscritti al canale possono aggiungere reazioni ai messaggi. + No comment provided by engineer. + + + Subscribers can chat with admins. + No comment provided by engineer. + + + Subscribers can irreversibly delete sent messages. (24 hours) + Gli iscritti al canale possono eliminare irreversibilmente i messaggi inviati. (24 ore) + No comment provided by engineer. + + + Subscribers can report messsages to moderators. + Gli iscritti possono segnalare messaggi ai moderatori. + No comment provided by engineer. + + + Subscribers can send SimpleX links. + Gli iscritti al canale possono inviare link di Simplex. + No comment provided by engineer. + + + Subscribers can send direct messages. + Gli iscritti al canale possono inviare messaggi diretti. + No comment provided by engineer. + + + Subscribers can send disappearing messages. + Gli iscritti al canale possono inviare messaggi a tempo. + No comment provided by engineer. + + + Subscribers can send files and media. + Gli iscritti al canale possono inviare file e contenuti multimediali. + No comment provided by engineer. + + + Subscribers can send voice messages. + Gli iscritti al canale possono inviare messaggi vocali. No comment provided by engineer. Subscribers use relay link to connect to the channel. Relay address was used to set up this relay for the channel. + Gli iscritti usano il link del relay per connettersi al canale. +L'indirizzo del relay è stato usato per impostare questo relay per il canale. No comment provided by engineer. @@ -8382,6 +8782,10 @@ Relay address was used to set up this relay for the channel. Scatta foto No comment provided by engineer. + + Talk to someone + No comment provided by engineer. + Tap Connect to chat Tocca Connetti per chattare @@ -8397,13 +8801,9 @@ Relay address was used to set up this relay for the channel. Tocca Connetti per usare il bot No comment provided by engineer. - - Tap Create SimpleX address in the menu to create it later. - Tocca Crea indirizzo SimpleX nel menu per crearlo più tardi. - No comment provided by engineer. - Tap Join channel + Tocca Iscriviti al canale No comment provided by engineer. @@ -8436,6 +8836,10 @@ Relay address was used to set up this relay for the channel. Toccare per entrare in incognito No comment provided by engineer. + + Tap to open + No comment provided by engineer. + Tap to paste link Tocca per incollare il link @@ -8464,6 +8868,7 @@ server test failure Test relay + Prova relay No comment provided by engineer. @@ -8520,6 +8925,7 @@ Può accadere a causa di qualche bug o quando la connessione è compromessa. The app removed this message after %lld attempts to receive it. + L'app ha rimosso questo messaggio dopo %lld tentativi di riceverlo. No comment provided by engineer. @@ -8537,6 +8943,10 @@ Può accadere a causa di qualche bug o quando la connessione è compromessa.Il codice che hai scansionato non è un codice QR di link SimpleX. No comment provided by engineer. + + The connection reached the limit of undelivered messages + conn error description + The connection reached the limit of undelivered messages, your contact may be offline. La connessione ha raggiunto il limite di messaggi non consegnati, il contatto potrebbe essere offline. @@ -8714,10 +9124,12 @@ Può accadere a causa di qualche bug o quando la connessione è compromessa. This is a chat relay address, it cannot be used to connect. + Questo è un indirizzo di relay di chat, non può essere usato per connettersi. alert message This is your link for channel %@! + Questo è il tuo link per il canale %@! new chat action @@ -8770,6 +9182,10 @@ Può accadere a causa di qualche bug o quando la connessione è compromessa.Per nascondere messaggi indesiderati. No comment provided by engineer. + + To make SimpleX Network last. + No comment provided by engineer. + To make a new connection Per creare una nuova connessione @@ -8944,6 +9360,7 @@ Ti verrà chiesto di completare l'autenticazione prima di attivare questa funzio Unblock subscriber for all? + Sbloccare l'iscritto per tutti? No comment provided by engineer. @@ -9046,13 +9463,18 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e Unsupported connection link Link di connessione non supportato - No comment provided by engineer. + conn error description Up to 100 last messages are sent to new members. Vengono inviati ai nuovi membri fino a 100 ultimi messaggi. No comment provided by engineer. + + Up to 100 last messages are sent to new subscribers. + Vengono inviati ai nuovi iscritti fino a 100 ultimi messaggi. + No comment provided by engineer. + Update Aggiorna @@ -9200,6 +9622,7 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e Use for new channels + Usa per canali nuovi No comment provided by engineer. @@ -9244,6 +9667,7 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e Use relay + Usa relay No comment provided by engineer. @@ -9266,6 +9690,10 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e Usa l'app con una mano sola. No comment provided by engineer. + + Use this address in your social media profile, website, or email signature. + No comment provided by engineer. + Use web port Usa porta web @@ -9288,6 +9716,7 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e Verify + Verifica relay test step @@ -9412,12 +9841,18 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e Wait + Attendi alert action Wait response + Attendi risposta relay test step + + Waiting for channel owner to add relays. + No comment provided by engineer. + Waiting for desktop... In attesa del desktop... @@ -9458,6 +9893,10 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e Attenzione: potresti perdere alcuni dati! No comment provided by engineer. + + We made connecting simpler for new users. + No comment provided by engineer. + WebRTC ICE servers Server WebRTC ICE @@ -9722,6 +10161,7 @@ Ripetere la richiesta di ingresso? You can share a link or a QR code - anybody will be able to join the channel. + Puoi condividere un link o un codice QR, chiunque sarà in grado di iscriversi al canale. No comment provided by engineer. @@ -9771,6 +10211,7 @@ Ripetere la richiesta di ingresso? You connected to the channel via this relay link. + Ti sei connesso/a al canale attraverso questo link del relay. No comment provided by engineer. @@ -9887,6 +10328,7 @@ Ripetere la richiesta di connessione? You will stop receiving messages from this channel. Chat history will be preserved. + Smetterai di ricevere messaggi da questo canale. La cronologia della chat sarà preservata. No comment provided by engineer. @@ -9936,6 +10378,7 @@ Ripetere la richiesta di connessione? Your channel + Il tuo canale No comment provided by engineer. @@ -10026,6 +10469,8 @@ Ripetere la richiesta di connessione? Your profile **%@** will be shared with channel relays and subscribers. Relays can access channel messages. + Il tuo profilo **%@** verrà condiviso con i relay e gli iscritti. +I relay hanno accesso ai messaggi del canale. No comment provided by engineer. @@ -10048,6 +10493,10 @@ Relays can access channel messages. Il tuo profilo è stato cambiato. Se lo salvi, il profilo aggiornato verrà inviato a tutti i tuoi contatti. alert message + + Your public address + No comment provided by engineer. + Your random profile Il tuo profilo casuale @@ -10055,10 +10504,12 @@ Relays can access channel messages. Your relay address + L'indirizzo del tuo relay No comment provided by engineer. Your relay name + Il nome del tuo relay No comment provided by engineer. @@ -10076,21 +10527,11 @@ Relays can access channel messages. Le tue impostazioni No comment provided by engineer. - - [Contribute](https://github.com/simplex-chat/simplex-chat#contribute) - [Contribuisci](https://github.com/simplex-chat/simplex-chat#contribute) - No comment provided by engineer. - [Send us email](mailto:chat@simplex.chat) [Inviaci un'email](mailto:chat@simplex.chat) No comment provided by engineer. - - [Star on GitHub](https://github.com/simplex-chat/simplex-chat) - [Dai una stella su GitHub](https://github.com/simplex-chat/simplex-chat) - No comment provided by engineer. - \_italic_ \_corsivo_ @@ -10108,6 +10549,7 @@ Relays can access channel messages. accepted + accettato No comment provided by engineer. @@ -10132,6 +10574,7 @@ Relays can access channel messages. active + attivo No comment provided by engineer. @@ -10245,6 +10688,10 @@ marked deleted chat item preview text chiamata… call status + + can't broadcast + No comment provided by engineer. + can't send messages impossibile inviare messaggi @@ -10282,10 +10729,12 @@ marked deleted chat item preview text channel + canale shown as sender role for channel messages channel profile updated + profilo del canale aggiornato snd group event chat item @@ -10436,6 +10885,7 @@ pref value deleted channel + canale eliminato rcv group event chat item @@ -10550,6 +11000,7 @@ pref value error: %@ + errore: %@ receive error chat item @@ -10684,6 +11135,7 @@ pref value link + link No comment provided by engineer. @@ -10758,6 +11210,7 @@ pref value new + nuovo No comment provided by engineer. @@ -10885,6 +11338,7 @@ time to disappear relay + relay member role @@ -10899,8 +11353,13 @@ time to disappear removed (%d attempts) + rimosso (%d tentativi) receive error chat item + + removed by operator + No comment provided by engineer. + removed contact address indirizzo di contatto rimosso @@ -11057,6 +11516,7 @@ ultimo msg ricevuto: %2$@ updated channel profile + profilo del canale aggiornato rcv group event chat item @@ -11081,6 +11541,7 @@ ultimo msg ricevuto: %2$@ via %@ + via %@ relay hostname @@ -11160,6 +11621,7 @@ ultimo msg ricevuto: %2$@ you are subscriber + sei iscritto/a No comment provided by engineer. @@ -11222,6 +11684,10 @@ ultimo msg ricevuto: %2$@ \~barrato~ No comment provided by engineer. + + ⚠️ Signature verification failed: %@. + owner verification + 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 a95203da15..3498c8757f 100644 --- a/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff +++ b/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff @@ -185,9 +185,20 @@ %d 月 time interval - - %d relays - channel relay bar + + %d relays failed + channel relay bar +channel subscriber relay bar + + + %d relays not active + channel relay bar +channel subscriber relay bar + + + %d relays removed + channel relay bar +channel subscriber relay bar %d sec @@ -222,10 +233,18 @@ channel creation progress channel relay bar progress + + %1$d/%2$d relays active, %3$d errors + channel relay bar + %1$d/%2$d relays active, %3$d failed channel creation progress with errors -channel relay bar progress with errors +channel relay bar + + + %1$d/%2$d relays active, %3$d removed + channel relay bar %1$d/%2$d relays connected @@ -233,7 +252,15 @@ channel relay bar progress with errors %1$d/%2$d relays connected, %3$d errors - channel subscriber relay bar progress with errors + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d failed + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d removed + channel subscriber relay bar %lld @@ -348,11 +375,19 @@ channel relay bar progress with errors %u 件のメッセージがスキップされました。 No comment provided by engineer. + + (from owner) + chat link info line + (new) (新規) No comment provided by engineer. + + (signed) + chat link info line + (this device v%@) (このデバイス v%@) @@ -445,6 +480,12 @@ channel relay bar progress with errors - などなど! No comment provided by engineer. + + - opt-in to send link previews. +- prevent hyperlink phishing. +- remove link tracking. + No comment provided by engineer. + - optionally notify deleted contacts. - profile names with spaces. @@ -543,6 +584,10 @@ time interval その他 No comment provided by engineer. + + A link for one person to connect + No comment provided by engineer. + A new contact 新しい連絡先 @@ -666,9 +711,8 @@ swipe action アクティブな接続 No comment provided by engineer. - - Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts. - プロフィールにアドレスを追加し、連絡先があなたのアドレスを他の人と共有できるようにします。プロフィールの更新は連絡先に送信されます。 + + Add address to your profile, so that your SimpleX contacts can share it with other people. Profile update will be sent to your SimpleX contacts. No comment provided by engineer. @@ -734,6 +778,10 @@ swipe action 追加されたメッセージサーバー No comment provided by engineer. + + Adding relays will be supported later. + No comment provided by engineer. + Additional accent No comment provided by engineer. @@ -844,6 +892,14 @@ swipe action すべてのプロフィール profile dropdown + + All relays failed + No comment provided by engineer. + + + All relays removed + No comment provided by engineer. + All reports will be archived for you. No comment provided by engineer. @@ -901,6 +957,10 @@ swipe action 送信相手も永久メッセージ削除を許可する時のみに許可する。(24時間) No comment provided by engineer. + + Allow members to chat with admins. + No comment provided by engineer. + Allow message reactions only if your contact allows them. 連絡先が許可している場合にのみ、メッセージへのリアクションを許可します。 @@ -916,6 +976,10 @@ swipe action メンバーへのダイレクトメッセージを許可する。 No comment provided by engineer. + + Allow sending direct messages to subscribers. + No comment provided by engineer. + Allow sending disappearing messages. 消えるメッセージの送信を許可する。 @@ -926,6 +990,10 @@ swipe action 共有を許可 No comment provided by engineer. + + Allow subscribers to chat with admins. + No comment provided by engineer. + Allow to irreversibly delete sent messages. (24 hours) 送信済みメッセージの永久削除を許可する。(24時間) @@ -1364,7 +1432,7 @@ swipe action Business address - No comment provided by engineer. + chat link info line Business chats @@ -1540,12 +1608,21 @@ set passcode view Channel full name (optional) No comment provided by engineer. + + Channel has no active relays. Please try to join later. + alert message +alert subtitle + Channel image No comment provided by engineer. Channel link + chat link info line + + + Channel preferences No comment provided by engineer. @@ -1560,6 +1637,10 @@ set passcode view Channel profile was changed. If you save it, the updated profile will be sent to channel subscribers. alert message + + Channel temporarily unavailable + alert title + Channel will be deleted for all subscribers - this cannot be undone! No comment provided by engineer. @@ -1572,6 +1653,10 @@ set passcode view Channel will start working with %1$d of %2$d relays. Proceed? alert message + + Channels + No comment provided by engineer. + Chat チャット @@ -1681,7 +1766,8 @@ set passcode view Chat with admins - chat toolbar + chat feature +chat toolbar Chat with member @@ -1696,10 +1782,22 @@ set passcode view チャット No comment provided by engineer. + + Chats with admins are prohibited. + No comment provided by engineer. + + + Chats with admins in public channels have no E2E encryption - use only with trusted chat relays. + alert message + Chats with members No comment provided by engineer. + + Chats with members are disabled + No comment provided by engineer. + Check messages every 20 min. 20分おきにメッセージを確認する。 @@ -1949,6 +2047,10 @@ This is your own one-time link! リンク経由で接続 new chat sheet title + + Connect via link or QR code + No comment provided by engineer. + Connect via one-time link ワンタイムリンクで接続 @@ -1958,6 +2060,10 @@ This is your own one-time link! Connect with %@ new chat action + + Connect with someone + No comment provided by engineer. + Connected 接続中 @@ -2025,7 +2131,7 @@ This is your own one-time link! Connection error (AUTH) 接続エラー (AUTH) - No comment provided by engineer. + conn error description Connection failed @@ -2075,6 +2181,10 @@ This is your own one-time link! Connections No comment provided by engineer. + + Contact address + chat link info line + Contact allows 連絡先の許可 @@ -2140,6 +2250,11 @@ This is your own one-time link! 続ける No comment provided by engineer. + + Contribute + 貢献する + No comment provided by engineer. + Conversation deleted! No comment provided by engineer. @@ -2166,11 +2281,6 @@ This is your own one-time link! Correct name to %@? alert message - - Create - 作成 - No comment provided by engineer. - Create 1-time link No comment provided by engineer. @@ -2239,6 +2349,10 @@ This is your own one-time link! プロフィールを作成する No comment provided by engineer. + + Create your public address + No comment provided by engineer. + Created No comment provided by engineer. @@ -2787,6 +2901,14 @@ alert button このグループではメンバー間のダイレクトメッセージが使用禁止です。 No comment provided by engineer. + + Direct messages between subscribers are prohibited. + No comment provided by engineer. + + + Disable + alert button + Disable (keep overrides) 無効にする(設定の優先を維持) @@ -2884,6 +3006,10 @@ alert button Do not send history to new members. No comment provided by engineer. + + Do not send history to new subscribers. + No comment provided by engineer. + Do not use credentials with proxy. No comment provided by engineer. @@ -2972,6 +3098,10 @@ chat item action E2E encrypted notifications. No comment provided by engineer. + + Easier to invite your friends 👋 + No comment provided by engineer. + Edit 編集する @@ -2993,7 +3123,7 @@ chat item action Enable 有効 - No comment provided by engineer. + alert button Enable (keep overrides) @@ -3027,6 +3157,10 @@ chat item action Enable camera access No comment provided by engineer. + + Enable chats with admins? + alert title + Enable disappearing messages by default. No comment provided by engineer. @@ -3045,6 +3179,10 @@ chat item action 即時通知を有効にしますか? No comment provided by engineer. + + Enable link previews? + alert title + Enable lock ロックモード @@ -3211,7 +3349,7 @@ chat item action Error エラー - No comment provided by engineer. + conn error description Error aborting address change @@ -3523,6 +3661,10 @@ chat item action Error setting delivery receipts! No comment provided by engineer. + + Error sharing channel + alert title + Error starting chat チャット開始にエラー発生 @@ -3856,6 +3998,10 @@ server test error For all moderators No comment provided by engineer. + + For anyone to reach you + No comment provided by engineer. + For chat profile %@: servers error @@ -4040,7 +4186,7 @@ Error: %2$@ Group link グループのリンク - No comment provided by engineer. + chat link info line Group links @@ -4148,6 +4294,10 @@ Error: %2$@ History is not sent to new members. No comment provided by engineer. + + History is not sent to new subscribers. + No comment provided by engineer. + How SimpleX works SimpleX の仕組み @@ -4376,9 +4526,9 @@ More improvements are coming soon! 初期の役割 No comment provided by engineer. - - Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat) - インストール [ターミナル用SimpleX Chat](https://github.com/simplex-chat/simplex-chat) + + Install SimpleX Chat for terminal + インストール ターミナル用SimpleX Chat No comment provided by engineer. @@ -4429,7 +4579,7 @@ More improvements are coming soon! Invalid connection link 無効な接続リンク - No comment provided by engineer. + conn error description Invalid display name! @@ -4488,6 +4638,10 @@ More improvements are coming soon! メンバーを招待する No comment provided by engineer. + + Invite someone privately + No comment provided by engineer. + Invite to chat No comment provided by engineer. @@ -4675,6 +4829,10 @@ This is your link for group %@! Less traffic on mobile networks. No comment provided by engineer. + + Let someone connect to you + No comment provided by engineer. + Let's talk in SimpleX Chat SimpleXチャットで会話しよう @@ -4694,6 +4852,10 @@ This is your link for group %@! Link mobile and desktop apps! 🔗 No comment provided by engineer. + + Link signature verified. + owner verification + Linked desktop options No comment provided by engineer. @@ -4861,6 +5023,10 @@ This is your link for group %@! グループメンバーはメッセージへのリアクションを追加できます。 No comment provided by engineer. + + Members can chat with admins. + No comment provided by engineer. + Members can irreversibly delete sent messages. (24 hours) グループのメンバーがメッセージを完全削除することができます。(24時間) @@ -5006,6 +5172,14 @@ This is your link for group %@! Messages from %@ will be shown! No comment provided by engineer. + + Messages in this channel are **not end-to-end encrypted**. Chat relays can see these messages. + No comment provided by engineer. + + + Messages in this channel are not end-to-end encrypted. Chat relays can see these messages. + E2EE info chat item + Messages in this chat will never be deleted. alert message @@ -5160,6 +5334,10 @@ This is your link for group %@! Network decentralization No comment provided by engineer. + + Network error + conn error description + Network issues - message expired after many attempts to send it. snd error text @@ -5186,6 +5364,10 @@ This is your link for group %@! New token status text + + New 1-time link + No comment provided by engineer. + New Passcode 新しいパスコード @@ -5276,6 +5458,10 @@ This is your link for group %@! いいえ No comment provided by engineer. + + No active relays + No comment provided by engineer. + No app password アプリのパスワードはありません @@ -5420,6 +5606,10 @@ This is your link for group %@! 世界初のユーザーIDのないプラットフォーム|設計も元からプライベート。 No comment provided by engineer. + + Non-profit governance + No comment provided by engineer. + Not all relays connected alert title @@ -5473,7 +5663,7 @@ This is your link for group %@! OK - No comment provided by engineer. + alert button Off @@ -5497,6 +5687,10 @@ new chat action 使い捨ての招待リンク No comment provided by engineer. + + One-time link + chat link info line + Onion hosts will be **required** for connection. Requires compatible VPN. @@ -5516,6 +5710,10 @@ VPN を有効にする必要があります。 オニオンのホストが使われません。 No comment provided by engineer. + + Only channel owners can change channel preferences. + No comment provided by engineer. + Only chat owners can change preferences. No comment provided by engineer. @@ -5613,7 +5811,8 @@ VPN を有効にする必要があります。 Open 開く - alert action + alert action +alert button Open Settings @@ -5646,6 +5845,10 @@ VPN を有効にする必要があります。 Open conditions No comment provided by engineer. + + Open external link? + alert title + Open full link alert action @@ -5718,6 +5921,10 @@ VPN を有効にする必要があります。 Or securely share this file link No comment provided by engineer. + + Or show QR in person or via video call. + No comment provided by engineer. + Or show this code No comment provided by engineer. @@ -5726,6 +5933,10 @@ VPN を有効にする必要があります。 Or to share privately No comment provided by engineer. + + Or use this QR - print or show online. + No comment provided by engineer. + Organize chats into lists No comment provided by engineer. @@ -5747,6 +5958,10 @@ VPN を有効にする必要があります。 Owners No comment provided by engineer. + + Ownership: you can run your own relays. + No comment provided by engineer. + PING count PING回数 @@ -5800,6 +6015,10 @@ VPN を有効にする必要があります。 画像の貼り付け No comment provided by engineer. + + Paste link / Scan + No comment provided by engineer. + Paste link to connect! No comment provided by engineer. @@ -5982,6 +6201,10 @@ Error: %@ プライバシーの基準を新境地に 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. No comment provided by engineer. @@ -6047,9 +6270,8 @@ Error: %@ Profile theme No comment provided by engineer. - - Profile update will be sent to your contacts. - 連絡先にプロフィール更新のお知らせが届きます。 + + Profile update will be sent to your SimpleX contacts. alert message @@ -6057,6 +6279,10 @@ Error: %@ 音声/ビデオ通話を禁止する 。 No comment provided by engineer. + + Prohibit chats with admins. + No comment provided by engineer. + Prohibit irreversible message deletion. メッセージの完全削除を使用禁止にする。 @@ -6085,6 +6311,10 @@ Error: %@ メンバー間のダイレクトメッセージを使用禁止にする。 No comment provided by engineer. + + Prohibit sending direct messages to subscribers. + No comment provided by engineer. + Prohibit sending disappearing messages. 消えるメッセージを使用禁止にする。 @@ -6145,6 +6375,10 @@ Enable in *Network & servers* settings. Proxy requires password No comment provided by engineer. + + Public channels - speak freely 🚀 + No comment provided by engineer. + Push notifications プッシュ通知 @@ -6182,23 +6416,14 @@ Enable in *Network & servers* settings. 続きを読む No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). + + Read more in User Guide. + 詳しくはユーザーガイドをご覧ください。 No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - 詳しくは[ユーザーガイド](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)をご覧ください。 - No comment provided by engineer. - - - Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - 詳しくは[ユーザーガイド](https://simplex.chat/docs/guide/readme.html#connect-to-friends)をご覧ください。 - No comment provided by engineer. - - - Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme). - 詳しくは[GitHubリポジトリ](https://github.com/simplex-chat/simplex-chat#readme)をご覧ください。 + + Read more in our GitHub repository. + 詳しくはGitHubリポジトリをご覧ください。 No comment provided by engineer. @@ -6358,6 +6583,10 @@ swipe action Relay link No comment provided by engineer. + + Relay results: + alert message + Relay server is only used if necessary. Another party can observe your IP address. 中継サーバーは必要な場合にのみ使用されます。 別の当事者があなたの IP アドレスを監視できます。 @@ -6372,6 +6601,10 @@ swipe action Relay test failed! No comment provided by engineer. + + Reliability: many relays per channel. + No comment provided by engineer. + Remove 削除 @@ -6624,6 +6857,10 @@ swipe action SOCKS proxy No comment provided by engineer. + + Safe web links + No comment provided by engineer. + Safely receive files No comment provided by engineer. @@ -6665,6 +6902,10 @@ chat item action 保存して、グループのメンバーにに知らせる No comment provided by engineer. + + Save and notify subscribers + No comment provided by engineer. + Save and reconnect No comment provided by engineer. @@ -6843,6 +7084,10 @@ chat item action セキュリティコード No comment provided by engineer. + + Security: owners hold channel keys. + No comment provided by engineer. + Select 選択 @@ -6960,6 +7205,10 @@ chat item action Send request without message No comment provided by engineer. + + Send the link via any messenger - it's secure. Ask to paste into SimpleX. + No comment provided by engineer. + Send them from gallery or custom keyboards. ギャラリーまたはカスタム キーボードから送信します。 @@ -6969,6 +7218,10 @@ chat item action Send up to 100 last messages to new members. No comment provided by engineer. + + Send up to 100 last messages to new subscribers. + No comment provided by engineer. + Send your private feedback to groups. No comment provided by engineer. @@ -6983,6 +7236,10 @@ chat item action 送信元が繋がりリクエストを削除したかもしれません。 No comment provided by engineer. + + Sending a link preview may reveal your IP address to the website. You can change this in Privacy settings later. + alert message + Sending delivery receipts will be enabled for all contacts in all visible chat profiles. No comment provided by engineer. @@ -7242,11 +7499,14 @@ chat item action Share address publicly No comment provided by engineer. - - Share address with contacts? - アドレスを連絡先と共有しますか? + + Share address with SimpleX contacts? alert title + + Share channel + No comment provided by engineer. + Share from other apps. No comment provided by engineer. @@ -7280,9 +7540,12 @@ chat item action Share to SimpleX No comment provided by engineer. - - Share with contacts - 連絡先と共有する + + Share via chat + No comment provided by engineer. + + + Share with SimpleX contacts No comment provided by engineer. @@ -7506,6 +7769,11 @@ report reason Square, circle, or anything in between. No comment provided by engineer. + + Star on GitHub + GitHub でスターを付ける + No comment provided by engineer. + Start chat チャットを開始する @@ -7602,6 +7870,10 @@ report reason Subscriber No comment provided by engineer. + + Subscriber reports + chat feature + Subscriber will be removed from channel - this cannot be undone! alert message @@ -7610,6 +7882,42 @@ report reason Subscribers No comment provided by engineer. + + Subscribers can add message reactions. + No comment provided by engineer. + + + Subscribers can chat with admins. + No comment provided by engineer. + + + Subscribers can irreversibly delete sent messages. (24 hours) + No comment provided by engineer. + + + Subscribers can report messsages to moderators. + No comment provided by engineer. + + + Subscribers can send SimpleX links. + No comment provided by engineer. + + + Subscribers can send direct messages. + No comment provided by engineer. + + + Subscribers can send disappearing messages. + No comment provided by engineer. + + + Subscribers can send files and media. + No comment provided by engineer. + + + Subscribers can send voice messages. + No comment provided by engineer. + Subscribers use relay link to connect to the channel. Relay address was used to set up this relay for the channel. @@ -7687,6 +7995,10 @@ Relay address was used to set up this relay for the channel. 写真を撮影 No comment provided by engineer. + + Talk to someone + No comment provided by engineer. + Tap Connect to chat No comment provided by engineer. @@ -7699,10 +8011,6 @@ Relay address was used to set up this relay for the channel. Tap Connect to use bot No comment provided by engineer. - - Tap Create SimpleX address in the menu to create it later. - No comment provided by engineer. - Tap Join channel No comment provided by engineer. @@ -7735,6 +8043,10 @@ Relay address was used to set up this relay for the channel. タップしてシークレットモードで参加 No comment provided by engineer. + + Tap to open + No comment provided by engineer. + Tap to paste link No comment provided by engineer. @@ -7828,6 +8140,10 @@ It can happen because of some bug or when the connection is compromised.The code you scanned is not a SimpleX link QR code. No comment provided by engineer. + + The connection reached the limit of undelivered messages + conn error description + The connection reached the limit of undelivered messages, your contact may be offline. No comment provided by engineer. @@ -8037,6 +8353,10 @@ It can happen because of some bug or when the connection is compromised.To hide unwanted messages. No comment provided by engineer. + + To make SimpleX Network last. + No comment provided by engineer. + To make a new connection 新規に接続する場合 @@ -8286,12 +8606,16 @@ To connect, please ask your contact to create another connection link and check Unsupported connection link - No comment provided by engineer. + conn error description Up to 100 last messages are sent to new members. No comment provided by engineer. + + Up to 100 last messages are sent to new subscribers. + No comment provided by engineer. + Update 更新 @@ -8478,6 +8802,10 @@ To connect, please ask your contact to create another connection link and check Use the app with one hand. No comment provided by engineer. + + Use this address in your social media profile, website, or email signature. + No comment provided by engineer. + Use web port No comment provided by engineer. @@ -8616,6 +8944,10 @@ To connect, please ask your contact to create another connection link and check Wait response relay test step + + Waiting for channel owner to add relays. + No comment provided by engineer. + Waiting for desktop... No comment provided by engineer. @@ -8652,6 +8984,10 @@ To connect, please ask your contact to create another connection link and check 警告: 一部のデータが失われる可能性があります! No comment provided by engineer. + + We made connecting simpler for new users. + No comment provided by engineer. + WebRTC ICE servers WebRTC ICEサーバ @@ -9190,6 +9526,10 @@ Relays can access channel messages. Your profile was changed. If you save it, the updated profile will be sent to all your contacts. alert message + + Your public address + No comment provided by engineer. + Your random profile あなたのランダム・プロフィール @@ -9217,21 +9557,11 @@ Relays can access channel messages. あなたの設定 No comment provided by engineer. - - [Contribute](https://github.com/simplex-chat/simplex-chat#contribute) - [貢献する](https://github.com/simplex-chat/simplex-chat#contribute) - No comment provided by engineer. - [Send us email](mailto:chat@simplex.chat) [メールを送信](mailto:chat@simplex.chat) No comment provided by engineer. - - [Star on GitHub](https://github.com/simplex-chat/simplex-chat) - [GitHub でスターを付ける](https://github.com/simplex-chat/simplex-chat) - No comment provided by engineer. - \_italic_ \_斜体_ @@ -9372,6 +9702,10 @@ marked deleted chat item preview text 発信中… call status + + can't broadcast + No comment provided by engineer. + can't send messages No comment provided by engineer. @@ -9998,6 +10332,10 @@ time to disappear removed (%d attempts) receive error chat item + + removed by operator + No comment provided by engineer. + removed contact address profile update event chat item @@ -10288,6 +10626,10 @@ last received msg: %2$@ \~取り消し線~ No comment provided by engineer. + + ⚠️ Signature verification failed: %@. + owner verification + 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 60d888e309..6c5316a2b1 100644 --- a/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff +++ b/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff @@ -185,9 +185,20 @@ %d maanden time interval - - %d relays - channel relay bar + + %d relays failed + channel relay bar +channel subscriber relay bar + + + %d relays not active + channel relay bar +channel subscriber relay bar + + + %d relays removed + channel relay bar +channel subscriber relay bar %d sec @@ -222,10 +233,18 @@ channel creation progress channel relay bar progress + + %1$d/%2$d relays active, %3$d errors + channel relay bar + %1$d/%2$d relays active, %3$d failed channel creation progress with errors -channel relay bar progress with errors +channel relay bar + + + %1$d/%2$d relays active, %3$d removed + channel relay bar %1$d/%2$d relays connected @@ -233,7 +252,15 @@ channel relay bar progress with errors %1$d/%2$d relays connected, %3$d errors - channel subscriber relay bar progress with errors + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d failed + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d removed + channel subscriber relay bar %lld @@ -349,11 +376,19 @@ channel relay bar progress with errors %u berichten zijn overgeslagen. No comment provided by engineer. + + (from owner) + chat link info line + (new) (nieuw) No comment provided by engineer. + + (signed) + chat link info line + (this device v%@) (dit apparaat v%@) @@ -446,6 +481,12 @@ channel relay bar progress with errors - en meer! No comment provided by engineer. + + - opt-in to send link previews. +- prevent hyperlink phishing. +- remove link tracking. + No comment provided by engineer. + - optionally notify deleted contacts. - profile names with spaces. @@ -544,6 +585,10 @@ time interval Nog een paar dingen No comment provided by engineer. + + A link for one person to connect + No comment provided by engineer. + A new contact Een nieuw contact @@ -669,9 +714,8 @@ swipe action Actieve verbindingen No comment provided by engineer. - - Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts. - Voeg een adres toe aan uw profiel, zodat uw contacten het met andere mensen kunnen delen. Profiel update wordt naar uw contacten verzonden. + + Add address to your profile, so that your SimpleX contacts can share it with other people. Profile update will be sent to your SimpleX contacts. No comment provided by engineer. @@ -738,6 +782,10 @@ swipe action Berichtservers toegevoegd No comment provided by engineer. + + Adding relays will be supported later. + No comment provided by engineer. + Additional accent Extra accent @@ -857,6 +905,14 @@ swipe action Alle profielen profile dropdown + + All relays failed + No comment provided by engineer. + + + All relays removed + No comment provided by engineer. + All reports will be archived for you. Alle rapporten worden voor u gearchiveerd. @@ -916,6 +972,10 @@ swipe action Sta het definitief verwijderen van berichten alleen toe als uw contact dit toestaat. (24 uur) No comment provided by engineer. + + Allow members to chat with admins. + No comment provided by engineer. + Allow message reactions only if your contact allows them. Sta bericht reacties alleen toe als uw contact dit toestaat. @@ -931,6 +991,10 @@ swipe action Sta het verzenden van directe berichten naar leden toe. No comment provided by engineer. + + Allow sending direct messages to subscribers. + No comment provided by engineer. + Allow sending disappearing messages. Toestaan dat verdwijnende berichten worden verzonden. @@ -941,6 +1005,10 @@ swipe action Delen toestaan No comment provided by engineer. + + Allow subscribers to chat with admins. + No comment provided by engineer. + Allow to irreversibly delete sent messages. (24 hours) Sta toe om verzonden berichten definitief te verwijderen. (24 uur) @@ -1411,7 +1479,7 @@ swipe action Business address Zakelijk adres - No comment provided by engineer. + chat link info line Business chats @@ -1600,12 +1668,21 @@ set passcode view Channel full name (optional) No comment provided by engineer. + + Channel has no active relays. Please try to join later. + alert message +alert subtitle + Channel image No comment provided by engineer. Channel link + chat link info line + + + Channel preferences No comment provided by engineer. @@ -1620,6 +1697,10 @@ set passcode view Channel profile was changed. If you save it, the updated profile will be sent to channel subscribers. alert message + + Channel temporarily unavailable + alert title + Channel will be deleted for all subscribers - this cannot be undone! No comment provided by engineer. @@ -1632,6 +1713,10 @@ set passcode view Channel will start working with %1$d of %2$d relays. Proceed? alert message + + Channels + No comment provided by engineer. + Chat Chat @@ -1751,7 +1836,8 @@ set passcode view Chat with admins Chat met beheerders - chat toolbar + chat feature +chat toolbar Chat with member @@ -1767,11 +1853,23 @@ set passcode view Chats No comment provided by engineer. + + Chats with admins are prohibited. + No comment provided by engineer. + + + Chats with admins in public channels have no E2E encryption - use only with trusted chat relays. + alert message + Chats with members Chats met leden No comment provided by engineer. + + Chats with members are disabled + No comment provided by engineer. + Check messages every 20 min. Controleer uw berichten elke 20 minuten. @@ -2048,6 +2146,10 @@ Dit is uw eigen eenmalige link! Maak verbinding via link new chat sheet title + + Connect via link or QR code + No comment provided by engineer. + Connect via one-time link Verbinden via een eenmalige link? @@ -2058,6 +2160,10 @@ Dit is uw eigen eenmalige link! Verbonden met %@ new chat action + + Connect with someone + No comment provided by engineer. + Connected Verbonden @@ -2126,7 +2232,7 @@ Dit is uw eigen eenmalige link! Connection error (AUTH) Verbindingsfout (AUTH) - No comment provided by engineer. + conn error description Connection failed @@ -2184,6 +2290,10 @@ Dit is uw eigen eenmalige link! Verbindingen No comment provided by engineer. + + Contact address + chat link info line + Contact allows Contact maakt het mogelijk @@ -2253,6 +2363,11 @@ Dit is uw eigen eenmalige link! Doorgaan No comment provided by engineer. + + Contribute + Bijdragen + No comment provided by engineer. + Conversation deleted! Gesprek verwijderd! @@ -2283,11 +2398,6 @@ Dit is uw eigen eenmalige link! Juiste naam voor %@? alert message - - Create - Maak - No comment provided by engineer. - Create 1-time link Eenmalige link maken @@ -2360,6 +2470,10 @@ Dit is uw eigen eenmalige link! Maak je profiel aan No comment provided by engineer. + + Create your public address + No comment provided by engineer. + Created Gemaakt @@ -2941,6 +3055,14 @@ alert button Directe berichten tussen leden zijn niet toegestaan. No comment provided by engineer. + + Direct messages between subscribers are prohibited. + No comment provided by engineer. + + + Disable + alert button + Disable (keep overrides) Uitschakelen (overschrijvingen behouden) @@ -3046,6 +3168,10 @@ alert button Stuur geen geschiedenis naar nieuwe leden. No comment provided by engineer. + + Do not send history to new subscribers. + No comment provided by engineer. + Do not use credentials with proxy. Gebruik geen inloggegevens met proxy. @@ -3147,6 +3273,10 @@ chat item action E2E versleutelde meldingen. No comment provided by engineer. + + Easier to invite your friends 👋 + No comment provided by engineer. + Edit Bewerk @@ -3168,7 +3298,7 @@ chat item action Enable Inschakelen - No comment provided by engineer. + alert button Enable (keep overrides) @@ -3204,6 +3334,10 @@ chat item action Schakel cameratoegang in No comment provided by engineer. + + Enable chats with admins? + alert title + Enable disappearing messages by default. No comment provided by engineer. @@ -3223,6 +3357,10 @@ chat item action Onmiddellijke meldingen inschakelen? No comment provided by engineer. + + Enable link previews? + alert title + Enable lock Vergrendeling inschakelen @@ -3399,7 +3537,7 @@ chat item action Error Fout - No comment provided by engineer. + conn error description Error aborting address change @@ -3738,6 +3876,10 @@ chat item action Fout bij het instellen van ontvangst bevestiging! No comment provided by engineer. + + Error sharing channel + alert title + Error starting chat Fout bij het starten van de chat @@ -4100,6 +4242,10 @@ server test error Voor alle moderators No comment provided by engineer. + + For anyone to reach you + No comment provided by engineer. + For chat profile %@: Voor chatprofiel %@: @@ -4312,7 +4458,7 @@ Fout: %2$@ Group link Groep link - No comment provided by engineer. + chat link info line Group links @@ -4423,6 +4569,10 @@ Fout: %2$@ Geschiedenis wordt niet naar nieuwe leden gestuurd. No comment provided by engineer. + + History is not sent to new subscribers. + No comment provided by engineer. + How SimpleX works Hoe SimpleX werkt @@ -4668,9 +4818,9 @@ Binnenkort meer verbeteringen! Initiële rol No comment provided by engineer. - - Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat) - Installeer [SimpleX Chat voor terminal](https://github.com/simplex-chat/simplex-chat) + + Install SimpleX Chat for terminal + Installeer SimpleX Chat voor terminal No comment provided by engineer. @@ -4728,7 +4878,7 @@ Binnenkort meer verbeteringen! Invalid connection link Ongeldige verbinding link - No comment provided by engineer. + conn error description Invalid display name! @@ -4792,6 +4942,10 @@ Binnenkort meer verbeteringen! Nodig leden uit No comment provided by engineer. + + Invite someone privately + No comment provided by engineer. + Invite to chat Uitnodigen voor een chat @@ -4990,6 +5144,10 @@ Dit is jouw link voor groep %@! Less traffic on mobile networks. No comment provided by engineer. + + Let someone connect to you + No comment provided by engineer. + Let's talk in SimpleX Chat Laten we praten in SimpleX Chat @@ -5010,6 +5168,10 @@ Dit is jouw link voor groep %@! Koppel mobiele en desktop-apps! 🔗 No comment provided by engineer. + + Link signature verified. + owner verification + Linked desktop options Gekoppelde desktop opties @@ -5190,6 +5352,10 @@ Dit is jouw link voor groep %@! Groepsleden kunnen bericht reacties toevoegen. No comment provided by engineer. + + Members can chat with admins. + No comment provided by engineer. + Members can irreversibly delete sent messages. (24 hours) Groepsleden kunnen verzonden berichten onherroepelijk verwijderen. (24 uur) @@ -5352,6 +5518,14 @@ Dit is jouw link voor groep %@! Berichten van %@ worden getoond! No comment provided by engineer. + + Messages in this channel are **not end-to-end encrypted**. Chat relays can see these messages. + No comment provided by engineer. + + + Messages in this channel are not end-to-end encrypted. Chat relays can see these messages. + E2EE info chat item + Messages in this chat will never be deleted. Berichten in deze chat zullen nooit worden verwijderd. @@ -5522,6 +5696,10 @@ Dit is jouw link voor groep %@! Netwerk decentralisatie No comment provided by engineer. + + Network error + conn error description + Network issues - message expired after many attempts to send it. Netwerkproblemen - bericht is verlopen na vele pogingen om het te verzenden. @@ -5552,6 +5730,10 @@ Dit is jouw link voor groep %@! Nieuw token status text + + New 1-time link + No comment provided by engineer. + New Passcode Nieuwe toegangscode @@ -5650,6 +5832,10 @@ Dit is jouw link voor groep %@! Nee No comment provided by engineer. + + No active relays + No comment provided by engineer. + No app password Geen app wachtwoord @@ -5812,6 +5998,10 @@ Dit is jouw link voor groep %@! Geen gebruikers-ID's. No comment provided by engineer. + + Non-profit governance + No comment provided by engineer. + Not all relays connected alert title @@ -5873,7 +6063,7 @@ Dit is jouw link voor groep %@! OK OK - No comment provided by engineer. + alert button Off @@ -5897,6 +6087,10 @@ new chat action Eenmalige uitnodiging link No comment provided by engineer. + + One-time link + chat link info line + Onion hosts will be **required** for connection. Requires compatible VPN. @@ -5916,6 +6110,10 @@ Vereist het inschakelen van VPN. Onion hosts worden niet gebruikt. No comment provided by engineer. + + Only channel owners can change channel preferences. + No comment provided by engineer. + Only chat owners can change preferences. Alleen chateigenaren kunnen voorkeuren wijzigen. @@ -6017,7 +6215,8 @@ Vereist het inschakelen van VPN. Open Open - alert action + alert action +alert button Open Settings @@ -6052,6 +6251,10 @@ Vereist het inschakelen van VPN. Open voorwaarden No comment provided by engineer. + + Open external link? + alert title + Open full link alert action @@ -6134,6 +6337,10 @@ Vereist het inschakelen van VPN. Of deel deze bestands link veilig No comment provided by engineer. + + Or show QR in person or via video call. + No comment provided by engineer. + Or show this code Of laat deze code zien @@ -6144,6 +6351,10 @@ Vereist het inschakelen van VPN. Of om privé te delen No comment provided by engineer. + + Or use this QR - print or show online. + No comment provided by engineer. + Organize chats into lists Organiseer chats in lijsten @@ -6169,6 +6380,10 @@ Vereist het inschakelen van VPN. Owners No comment provided by engineer. + + Ownership: you can run your own relays. + No comment provided by engineer. + PING count PING count @@ -6224,6 +6439,10 @@ Vereist het inschakelen van VPN. Afbeelding plakken No comment provided by engineer. + + Paste link / Scan + No comment provided by engineer. + Paste link to connect! Plak een link om te verbinden! @@ -6426,6 +6645,10 @@ Fout: %@ 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. @@ -6499,9 +6722,8 @@ Fout: %@ Profiel thema No comment provided by engineer. - - Profile update will be sent to your contacts. - Profiel update wordt naar uw contacten verzonden. + + Profile update will be sent to your SimpleX contacts. alert message @@ -6509,6 +6731,10 @@ Fout: %@ Audio/video gesprekken verbieden. No comment provided by engineer. + + Prohibit chats with admins. + No comment provided by engineer. + Prohibit irreversible message deletion. Verbied het definitief verwijderen van berichten. @@ -6539,6 +6765,10 @@ Fout: %@ Verbied het sturen van directe berichten naar leden. No comment provided by engineer. + + Prohibit sending direct messages to subscribers. + No comment provided by engineer. + Prohibit sending disappearing messages. Verbied het verzenden van verdwijnende berichten. @@ -6605,6 +6835,10 @@ Schakel dit in in *Netwerk en servers*-instellingen. Proxy vereist wachtwoord No comment provided by engineer. + + Public channels - speak freely 🚀 + No comment provided by engineer. + Push notifications Push meldingen @@ -6645,24 +6879,14 @@ Schakel dit in in *Netwerk en servers*-instellingen. Lees meer No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). - Lees meer in de [Gebruikershandleiding](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). + + Read more in User Guide. + Lees meer in de Gebruikershandleiding. No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - Lees meer in de [Gebruikershandleiding](https://simplex.chat/docs/guide/app-settings.html#uw-simplex-contactadres). - No comment provided by engineer. - - - Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - Lees meer in de [Gebruikershandleiding](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - No comment provided by engineer. - - - Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme). - Lees meer in onze [GitHub-repository](https://github.com/simplex-chat/simplex-chat#readme). + + Read more in our GitHub repository. + Lees meer in onze GitHub-repository. No comment provided by engineer. @@ -6838,6 +7062,10 @@ swipe action Relay link No comment provided by engineer. + + Relay results: + alert message + Relay server is only used if necessary. Another party can observe your IP address. Relay server wordt alleen gebruikt als dat nodig is. Een andere partij kan uw IP-adres zien. @@ -6852,6 +7080,10 @@ swipe action Relay test failed! No comment provided by engineer. + + Reliability: many relays per channel. + No comment provided by engineer. + Remove Verwijderen @@ -7131,6 +7363,10 @@ swipe action SOCKS proxy No comment provided by engineer. + + Safe web links + No comment provided by engineer. + Safely receive files Veilig bestanden ontvangen @@ -7175,6 +7411,10 @@ chat item action Opslaan en groep leden melden No comment provided by engineer. + + Save and notify subscribers + No comment provided by engineer. + Save and reconnect Opslaan en opnieuw verbinden @@ -7367,6 +7607,10 @@ chat item action Beveiligingscode No comment provided by engineer. + + Security: owners hold channel keys. + No comment provided by engineer. + Select Selecteer @@ -7494,6 +7738,10 @@ chat item action Send request without message No comment provided by engineer. + + Send the link via any messenger - it's secure. Ask to paste into SimpleX. + No comment provided by engineer. + Send them from gallery or custom keyboards. Stuur ze vanuit de galerij of aangepaste toetsenborden. @@ -7504,6 +7752,10 @@ chat item action Stuur tot 100 laatste berichten naar nieuwe leden. No comment provided by engineer. + + Send up to 100 last messages to new subscribers. + No comment provided by engineer. + Send your private feedback to groups. No comment provided by engineer. @@ -7518,6 +7770,10 @@ chat item action De afzender heeft mogelijk het verbindingsverzoek verwijderd. No comment provided by engineer. + + Sending a link preview may reveal your IP address to the website. You can change this in Privacy settings later. + alert message + Sending delivery receipts will be enabled for all contacts in all visible chat profiles. Het verzenden van ontvangst bevestiging wordt ingeschakeld voor alle contacten in alle zichtbare chatprofielen. @@ -7812,11 +8068,14 @@ chat item action Adres openbaar delen No comment provided by engineer. - - Share address with contacts? - Adres delen met contacten? + + Share address with SimpleX contacts? alert title + + Share channel + No comment provided by engineer. + Share from other apps. Delen vanuit andere apps. @@ -7854,9 +8113,12 @@ chat item action Delen op SimpleX No comment provided by engineer. - - Share with contacts - Delen met contacten + + Share via chat + No comment provided by engineer. + + + Share with SimpleX contacts No comment provided by engineer. @@ -8103,6 +8365,11 @@ report reason Vierkant, cirkel of iets daartussenin. No comment provided by engineer. + + Star on GitHub + Star on GitHub + No comment provided by engineer. + Start chat Begin gesprek @@ -8207,6 +8474,10 @@ report reason Subscriber No comment provided by engineer. + + Subscriber reports + chat feature + Subscriber will be removed from channel - this cannot be undone! alert message @@ -8215,6 +8486,42 @@ report reason Subscribers No comment provided by engineer. + + Subscribers can add message reactions. + No comment provided by engineer. + + + Subscribers can chat with admins. + No comment provided by engineer. + + + Subscribers can irreversibly delete sent messages. (24 hours) + No comment provided by engineer. + + + Subscribers can report messsages to moderators. + No comment provided by engineer. + + + Subscribers can send SimpleX links. + No comment provided by engineer. + + + Subscribers can send direct messages. + No comment provided by engineer. + + + Subscribers can send disappearing messages. + No comment provided by engineer. + + + Subscribers can send files and media. + No comment provided by engineer. + + + Subscribers can send voice messages. + No comment provided by engineer. + Subscribers use relay link to connect to the channel. Relay address was used to set up this relay for the channel. @@ -8299,6 +8606,10 @@ Relay address was used to set up this relay for the channel. Foto nemen No comment provided by engineer. + + Talk to someone + No comment provided by engineer. + Tap Connect to chat No comment provided by engineer. @@ -8311,11 +8622,6 @@ Relay address was used to set up this relay for the channel. Tap Connect to use bot No comment provided by engineer. - - Tap Create SimpleX address in the menu to create it later. - Tik op SimpleX-adres maken in het menu om het later te maken. - No comment provided by engineer. - Tap Join channel No comment provided by engineer. @@ -8349,6 +8655,10 @@ Relay address was used to set up this relay for the channel. Tik hier om incognito lid te worden No comment provided by engineer. + + Tap to open + No comment provided by engineer. + Tap to paste link Tik hier om de link te plakken @@ -8449,6 +8759,10 @@ Het kan gebeuren vanwege een bug of wanneer de verbinding is aangetast. De code die u heeft gescand is geen SimpleX link QR-code. No comment provided by engineer. + + The connection reached the limit of undelivered messages + conn error description + The connection reached the limit of undelivered messages, your contact may be offline. De verbinding heeft de limiet van niet-afgeleverde berichten bereikt. Uw contactpersoon is mogelijk offline. @@ -8679,6 +8993,10 @@ Het kan gebeuren vanwege een bug of wanneer de verbinding is aangetast. Om ongewenste berichten te verbergen. No comment provided by engineer. + + To make SimpleX Network last. + No comment provided by engineer. + To make a new connection Om een nieuwe verbinding te maken @@ -8952,13 +9270,17 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak Unsupported connection link Niet-ondersteunde verbindingslink - No comment provided by engineer. + conn error description Up to 100 last messages are sent to new members. Er worden maximaal 100 laatste berichten naar nieuwe leden verzonden. No comment provided by engineer. + + Up to 100 last messages are sent to new subscribers. + No comment provided by engineer. + Update Update @@ -9165,6 +9487,10 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak Gebruik de app met één hand. No comment provided by engineer. + + Use this address in your social media profile, website, or email signature. + No comment provided by engineer. + Use web port Gebruik een webpoort @@ -9316,6 +9642,10 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak Wait response relay test step + + Waiting for channel owner to add relays. + No comment provided by engineer. + Waiting for desktop... Wachten op desktop... @@ -9356,6 +9686,10 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak Waarschuwing: u kunt sommige gegevens verliezen! No comment provided by engineer. + + We made connecting simpler for new users. + No comment provided by engineer. + WebRTC ICE servers WebRTC ICE servers @@ -9938,6 +10272,10 @@ Relays can access channel messages. Je profiel is gewijzigd. Als je het opslaat, wordt het bijgewerkte profiel naar al je contacten verzonden. alert message + + Your public address + No comment provided by engineer. + Your random profile Je willekeurige profiel @@ -9966,21 +10304,11 @@ Relays can access channel messages. Uw instellingen No comment provided by engineer. - - [Contribute](https://github.com/simplex-chat/simplex-chat#contribute) - [Bijdragen](https://github.com/simplex-chat/simplex-chat#contribute) - No comment provided by engineer. - [Send us email](mailto:chat@simplex.chat) [Stuur ons een e-mail](mailto:chat@simplex.chat) No comment provided by engineer. - - [Star on GitHub](https://github.com/simplex-chat/simplex-chat) - [Star on GitHub](https://github.com/simplex-chat/simplex-chat) - No comment provided by engineer. - \_italic_ \_cursief_ @@ -10135,6 +10463,10 @@ marked deleted chat item preview text bellen… call status + + can't broadcast + No comment provided by engineer. + can't send messages kan geen berichten versturen @@ -10787,6 +11119,10 @@ time to disappear removed (%d attempts) receive error chat item + + removed by operator + No comment provided by engineer. + removed contact address contactadres verwijderd @@ -11105,6 +11441,10 @@ laatst ontvangen bericht: %2$@ \~staking~ No comment provided by engineer. + + ⚠️ Signature verification failed: %@. + owner verification + 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 57d22dd63b..65a5c638fe 100644 --- a/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff +++ b/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff @@ -185,9 +185,20 @@ %d miesięcy time interval - - %d relays - channel relay bar + + %d relays failed + channel relay bar +channel subscriber relay bar + + + %d relays not active + channel relay bar +channel subscriber relay bar + + + %d relays removed + channel relay bar +channel subscriber relay bar %d sec @@ -222,10 +233,18 @@ channel creation progress channel relay bar progress + + %1$d/%2$d relays active, %3$d errors + channel relay bar + %1$d/%2$d relays active, %3$d failed channel creation progress with errors -channel relay bar progress with errors +channel relay bar + + + %1$d/%2$d relays active, %3$d removed + channel relay bar %1$d/%2$d relays connected @@ -233,7 +252,15 @@ channel relay bar progress with errors %1$d/%2$d relays connected, %3$d errors - channel subscriber relay bar progress with errors + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d failed + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d removed + channel subscriber relay bar %lld @@ -349,11 +376,19 @@ channel relay bar progress with errors %u pominiętych wiadomości. No comment provided by engineer. + + (from owner) + chat link info line + (new) (nowy) No comment provided by engineer. + + (signed) + chat link info line + (this device v%@) (to urządzenie v%@) @@ -446,6 +481,12 @@ channel relay bar progress with errors - i więcej! No comment provided by engineer. + + - opt-in to send link previews. +- prevent hyperlink phishing. +- remove link tracking. + No comment provided by engineer. + - optionally notify deleted contacts. - profile names with spaces. @@ -544,6 +585,10 @@ time interval Jeszcze kilka rzeczy No comment provided by engineer. + + A link for one person to connect + No comment provided by engineer. + A new contact Nowy kontakt @@ -670,9 +715,8 @@ swipe action Aktywne połączenia No comment provided by engineer. - - Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts. - Dodaj adres do swojego profilu, aby Twoje kontakty mogły go udostępnić innym osobom. Aktualizacja profilu zostanie wysłana do Twoich kontaktów. + + Add address to your profile, so that your SimpleX contacts can share it with other people. Profile update will be sent to your SimpleX contacts. No comment provided by engineer. @@ -740,6 +784,10 @@ swipe action Dodano serwery wiadomości No comment provided by engineer. + + Adding relays will be supported later. + No comment provided by engineer. + Additional accent Dodatkowy akcent @@ -860,6 +908,14 @@ swipe action Wszystkie profile profile dropdown + + All relays failed + No comment provided by engineer. + + + All relays removed + No comment provided by engineer. + All reports will be archived for you. Wszystkie raporty zostaną dla Ciebie zarchiwizowane. @@ -920,6 +976,10 @@ swipe action Zezwalaj na nieodwracalne usuwanie wiadomości tylko wtedy, gdy Twój kontakt Ci na to pozwoli. (24 godziny) No comment provided by engineer. + + Allow members to chat with admins. + No comment provided by engineer. + Allow message reactions only if your contact allows them. Zezwalaj na reakcje wiadomości tylko wtedy, gdy zezwala na to Twój kontakt. @@ -935,6 +995,10 @@ swipe action Zezwalaj na wysyłanie bezpośrednich wiadomości do członków. No comment provided by engineer. + + Allow sending direct messages to subscribers. + No comment provided by engineer. + Allow sending disappearing messages. Zezwól na wysyłanie znikających wiadomości. @@ -945,6 +1009,10 @@ swipe action Zezwól na udostępnianie No comment provided by engineer. + + Allow subscribers to chat with admins. + No comment provided by engineer. + Allow to irreversibly delete sent messages. (24 hours) Zezwól na nieodwracalne usunięcie wysłanych wiadomości. (24 godziny) @@ -1421,7 +1489,7 @@ swipe action Business address Adres firmowy - No comment provided by engineer. + chat link info line Business chats @@ -1612,12 +1680,21 @@ set passcode view Channel full name (optional) No comment provided by engineer. + + Channel has no active relays. Please try to join later. + alert message +alert subtitle + Channel image No comment provided by engineer. Channel link + chat link info line + + + Channel preferences No comment provided by engineer. @@ -1632,6 +1709,10 @@ set passcode view Channel profile was changed. If you save it, the updated profile will be sent to channel subscribers. alert message + + Channel temporarily unavailable + alert title + Channel will be deleted for all subscribers - this cannot be undone! No comment provided by engineer. @@ -1644,6 +1725,10 @@ set passcode view Channel will start working with %1$d of %2$d relays. Proceed? alert message + + Channels + No comment provided by engineer. + Chat Czat @@ -1763,7 +1848,8 @@ set passcode view Chat with admins Czatuj z administratorami - chat toolbar + chat feature +chat toolbar Chat with member @@ -1780,11 +1866,23 @@ set passcode view Czaty No comment provided by engineer. + + Chats with admins are prohibited. + No comment provided by engineer. + + + Chats with admins in public channels have no E2E encryption - use only with trusted chat relays. + alert message + Chats with members Czaty z członkami No comment provided by engineer. + + Chats with members are disabled + No comment provided by engineer. + Check messages every 20 min. Sprawdzaj wiadomości co 20 min. @@ -2062,6 +2160,10 @@ To jest twój jednorazowy link! Połącz się przez link new chat sheet title + + Connect via link or QR code + No comment provided by engineer. + Connect via one-time link Połącz przez jednorazowy link @@ -2072,6 +2174,10 @@ To jest twój jednorazowy link! Połącz z %@ new chat action + + Connect with someone + No comment provided by engineer. + Connected Połączony @@ -2140,7 +2246,7 @@ To jest twój jednorazowy link! Connection error (AUTH) Błąd połączenia (UWIERZYTELNIANIE) - No comment provided by engineer. + conn error description Connection failed @@ -2199,6 +2305,10 @@ To jest twój jednorazowy link! Połączenia No comment provided by engineer. + + Contact address + chat link info line + Contact allows Kontakt pozwala @@ -2269,6 +2379,11 @@ To jest twój jednorazowy link! Kontynuuj No comment provided by engineer. + + Contribute + Przyczyń się + No comment provided by engineer. + Conversation deleted! Rozmowa usunięta! @@ -2299,11 +2414,6 @@ To jest twój jednorazowy link! Poprawić imię na %@? alert message - - Create - Utwórz - No comment provided by engineer. - Create 1-time link Utwórz jednorazowy link @@ -2377,6 +2487,10 @@ To jest twój jednorazowy link! Utwórz swój profil No comment provided by engineer. + + Create your public address + No comment provided by engineer. + Created Utworzono @@ -2962,6 +3076,14 @@ alert button Bezpośrednie wiadomości między członkami są zabronione w tej grupie. No comment provided by engineer. + + Direct messages between subscribers are prohibited. + No comment provided by engineer. + + + Disable + alert button + Disable (keep overrides) Wyłącz (zachowaj nadpisania) @@ -3067,6 +3189,10 @@ alert button Nie wysyłaj historii do nowych członków. No comment provided by engineer. + + Do not send history to new subscribers. + No comment provided by engineer. + Do not use credentials with proxy. Nie używaj danych logowania do proxy. @@ -3168,6 +3294,10 @@ chat item action Powiadomienia szyfrowane E2E. No comment provided by engineer. + + Easier to invite your friends 👋 + No comment provided by engineer. + Edit Edytuj @@ -3190,7 +3320,7 @@ chat item action Enable Włącz - No comment provided by engineer. + alert button Enable (keep overrides) @@ -3226,6 +3356,10 @@ chat item action Włącz dostęp do kamery No comment provided by engineer. + + Enable chats with admins? + alert title + Enable disappearing messages by default. Włącz domyślnie znikające wiadomości. @@ -3246,6 +3380,10 @@ chat item action Włączyć natychmiastowe powiadomienia? No comment provided by engineer. + + Enable link previews? + alert title + Enable lock Włącz blokadę @@ -3422,7 +3560,7 @@ chat item action Error Błąd - No comment provided by engineer. + conn error description Error aborting address change @@ -3766,6 +3904,10 @@ chat item action Błąd ustawiania potwierdzeń dostawy! No comment provided by engineer. + + Error sharing channel + alert title + Error starting chat Błąd uruchamiania czatu @@ -4134,6 +4276,10 @@ server test error Dla wszystkich moderatorów No comment provided by engineer. + + For anyone to reach you + No comment provided by engineer. + For chat profile %@: Dla profilu czatu %@: @@ -4346,7 +4492,7 @@ Błąd: %2$@ Group link Link do grupy - No comment provided by engineer. + chat link info line Group links @@ -4458,6 +4604,10 @@ Błąd: %2$@ Historia nie jest wysyłana do nowych członków. No comment provided by engineer. + + History is not sent to new subscribers. + No comment provided by engineer. + How SimpleX works Jak działa SimpleX @@ -4705,9 +4855,9 @@ Wkrótce pojawią się kolejne ulepszenia! Rola początkowa No comment provided by engineer. - - Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat) - Zainstaluj [SimpleX Chat na terminal](https://github.com/simplex-chat/simplex-chat) + + Install SimpleX Chat for terminal + Zainstaluj SimpleX Chat na terminal No comment provided by engineer. @@ -4765,7 +4915,7 @@ Wkrótce pojawią się kolejne ulepszenia! Invalid connection link Nieprawidłowy link połączenia - No comment provided by engineer. + conn error description Invalid display name! @@ -4830,6 +4980,10 @@ Wkrótce pojawią się kolejne ulepszenia! Zaproś członków No comment provided by engineer. + + Invite someone privately + No comment provided by engineer. + Invite to chat Zaproś do czatu @@ -5030,6 +5184,10 @@ To jest twój link do grupy %@! Mniejszy ruch w sieciach komórkowych. No comment provided by engineer. + + Let someone connect to you + No comment provided by engineer. + Let's talk in SimpleX Chat Porozmawiajmy w SimpleX Chat @@ -5050,6 +5208,10 @@ To jest twój link do grupy %@! Połącz mobile i komputerowe aplikacje! 🔗 No comment provided by engineer. + + Link signature verified. + owner verification + Linked desktop options Połączone opcje komputera @@ -5235,6 +5397,10 @@ To jest twój link do grupy %@! Członkowie grupy mogą dodawać reakcje wiadomości. No comment provided by engineer. + + Members can chat with admins. + No comment provided by engineer. + Members can irreversibly delete sent messages. (24 hours) Członkowie grupy mogą nieodwracalnie usuwać wysłane wiadomości. (24 godziny) @@ -5399,6 +5565,14 @@ To jest twój link do grupy %@! Wiadomości od %@ zostaną pokazane! No comment provided by engineer. + + Messages in this channel are **not end-to-end encrypted**. Chat relays can see these messages. + No comment provided by engineer. + + + Messages in this channel are not end-to-end encrypted. Chat relays can see these messages. + E2EE info chat item + Messages in this chat will never be deleted. Wiadomości na tym czacie nigdy nie zostaną usunięte. @@ -5569,6 +5743,10 @@ To jest twój link do grupy %@! Decentralizacja sieci No comment provided by engineer. + + Network error + conn error description + Network issues - message expired after many attempts to send it. Błąd sieciowy - wiadomość wygasła po wielu próbach wysłania jej. @@ -5599,6 +5777,10 @@ To jest twój link do grupy %@! Nowy token status text + + New 1-time link + No comment provided by engineer. + New Passcode Nowy Pin @@ -5698,6 +5880,10 @@ To jest twój link do grupy %@! Nie No comment provided by engineer. + + No active relays + No comment provided by engineer. + No app password Brak hasła aplikacji @@ -5861,6 +6047,10 @@ To jest twój link do grupy %@! Brak identyfikatorów użytkownika. No comment provided by engineer. + + Non-profit governance + No comment provided by engineer. + Not all relays connected alert title @@ -5922,7 +6112,7 @@ To jest twój link do grupy %@! OK OK - No comment provided by engineer. + alert button Off @@ -5946,6 +6136,10 @@ new chat action Jednorazowy link zaproszenia No comment provided by engineer. + + One-time link + chat link info line + Onion hosts will be **required** for connection. Requires compatible VPN. @@ -5965,6 +6159,10 @@ Wymaga włączenia VPN. Hosty onion nie będą używane. No comment provided by engineer. + + Only channel owners can change channel preferences. + No comment provided by engineer. + Only chat owners can change preferences. Tylko właściciele czatu mogą zmieniać preferencje. @@ -6068,7 +6266,8 @@ Wymaga włączenia VPN. Open Otwórz - alert action + alert action +alert button Open Settings @@ -6104,6 +6303,10 @@ Wymaga włączenia VPN. Otwórz warunki No comment provided by engineer. + + Open external link? + alert title + Open full link Otwórz pełny link @@ -6193,6 +6396,10 @@ Wymaga włączenia VPN. Lub bezpiecznie udostępnij ten link pliku No comment provided by engineer. + + Or show QR in person or via video call. + No comment provided by engineer. + Or show this code Lub pokaż ten kod @@ -6203,6 +6410,10 @@ Wymaga włączenia VPN. Lub udostępnij prywatnie No comment provided by engineer. + + Or use this QR - print or show online. + No comment provided by engineer. + Organize chats into lists Organizuj czaty jako listy @@ -6228,6 +6439,10 @@ Wymaga włączenia VPN. Owners No comment provided by engineer. + + Ownership: you can run your own relays. + No comment provided by engineer. + PING count Liczba PINGÓW @@ -6283,6 +6498,10 @@ Wymaga włączenia VPN. Wklej obraz No comment provided by engineer. + + Paste link / Scan + No comment provided by engineer. + Paste link to connect! Wklej link, aby połączyć! @@ -6485,6 +6704,10 @@ Błąd: %@ 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. @@ -6559,9 +6782,8 @@ Błąd: %@ Motyw profilu No comment provided by engineer. - - Profile update will be sent to your contacts. - Aktualizacja profilu zostanie wysłana do Twoich kontaktów. + + Profile update will be sent to your SimpleX contacts. alert message @@ -6569,6 +6791,10 @@ Błąd: %@ Zabroń połączeń audio/wideo. No comment provided by engineer. + + Prohibit chats with admins. + No comment provided by engineer. + Prohibit irreversible message deletion. Zabroń nieodwracalnego usuwania wiadomości. @@ -6599,6 +6825,10 @@ Błąd: %@ Zabroń wysyłania bezpośrednich wiadomości do członków. No comment provided by engineer. + + Prohibit sending direct messages to subscribers. + No comment provided by engineer. + Prohibit sending disappearing messages. Zabroń wysyłania znikających wiadomości. @@ -6666,6 +6896,10 @@ Włącz w ustawianiach *Sieć i serwery* . Proxy wymaga hasła No comment provided by engineer. + + Public channels - speak freely 🚀 + No comment provided by engineer. + Push notifications Powiadomienia push @@ -6706,24 +6940,14 @@ Włącz w ustawianiach *Sieć i serwery* . Przeczytaj więcej No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). - Przeczytaj więcej w [Poradniku Użytkownika](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). + + Read more in User Guide. + Przeczytaj więcej w Poradniku Użytkownika. No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - Przeczytaj więcej w [Podręczniku Użytkownika](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - No comment provided by engineer. - - - Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - Przeczytaj więcej w [Podręczniku Użytkownika](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - No comment provided by engineer. - - - Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme). - Przeczytaj więcej na naszym [repozytorium GitHub](https://github.com/simplex-chat/simplex-chat#readme). + + Read more in our GitHub repository. + Przeczytaj więcej na naszym repozytorium GitHub. No comment provided by engineer. @@ -6899,6 +7123,10 @@ swipe action Relay link No comment provided by engineer. + + Relay results: + alert message + Relay server is only used if necessary. Another party can observe your IP address. Serwer przekaźnikowy jest używany tylko w razie potrzeby. Inna strona może obserwować Twój adres IP. @@ -6913,6 +7141,10 @@ swipe action Relay test failed! No comment provided by engineer. + + Reliability: many relays per channel. + No comment provided by engineer. + Remove Usuń @@ -7196,6 +7428,10 @@ swipe action Proxy SOCKS No comment provided by engineer. + + Safe web links + No comment provided by engineer. + Safely receive files Bezpiecznie otrzymuj pliki @@ -7241,6 +7477,10 @@ chat item action Zapisz i powiadom członków grupy No comment provided by engineer. + + Save and notify subscribers + No comment provided by engineer. + Save and reconnect Zapisz i połącz ponownie @@ -7439,6 +7679,10 @@ chat item action Kod bezpieczeństwa No comment provided by engineer. + + Security: owners hold channel keys. + No comment provided by engineer. + Select Wybierz @@ -7569,6 +7813,10 @@ chat item action Wyślij prośbę bez wiadomości No comment provided by engineer. + + Send the link via any messenger - it's secure. Ask to paste into SimpleX. + No comment provided by engineer. + Send them from gallery or custom keyboards. Wyślij je z galerii lub niestandardowych klawiatur. @@ -7579,6 +7827,10 @@ chat item action Wysyłaj do 100 ostatnich wiadomości do nowych członków. No comment provided by engineer. + + Send up to 100 last messages to new subscribers. + No comment provided by engineer. + Send your private feedback to groups. Wyślij swoją prywatną opinię do grup. @@ -7594,6 +7846,10 @@ chat item action Nadawca mógł usunąć prośbę o połączenie. No comment provided by engineer. + + Sending a link preview may reveal your IP address to the website. You can change this in Privacy settings later. + alert message + Sending delivery receipts will be enabled for all contacts in all visible chat profiles. Wysyłanie potwierdzeń dostawy zostanie włączone dla wszystkich kontaktów we wszystkich widocznych profilach czatu. @@ -7889,11 +8145,14 @@ chat item action Udostępnij adres publicznie No comment provided by engineer. - - Share address with contacts? - Udostępnić adres kontaktom? + + Share address with SimpleX contacts? alert title + + Share channel + No comment provided by engineer. + Share from other apps. Udostępnij z innych aplikacji. @@ -7933,9 +8192,12 @@ chat item action Udostępnij do SimpleX No comment provided by engineer. - - Share with contacts - Udostępnij kontaktom + + Share via chat + No comment provided by engineer. + + + Share with SimpleX contacts No comment provided by engineer. @@ -8185,6 +8447,11 @@ report reason Kwadrat, okrąg lub cokolwiek pomiędzy. No comment provided by engineer. + + Star on GitHub + Daj gwiazdkę na GitHub + No comment provided by engineer. + Start chat Rozpocznij czat @@ -8289,6 +8556,10 @@ report reason Subscriber No comment provided by engineer. + + Subscriber reports + chat feature + Subscriber will be removed from channel - this cannot be undone! alert message @@ -8297,6 +8568,42 @@ report reason Subscribers No comment provided by engineer. + + Subscribers can add message reactions. + No comment provided by engineer. + + + Subscribers can chat with admins. + No comment provided by engineer. + + + Subscribers can irreversibly delete sent messages. (24 hours) + No comment provided by engineer. + + + Subscribers can report messsages to moderators. + No comment provided by engineer. + + + Subscribers can send SimpleX links. + No comment provided by engineer. + + + Subscribers can send direct messages. + No comment provided by engineer. + + + Subscribers can send disappearing messages. + No comment provided by engineer. + + + Subscribers can send files and media. + No comment provided by engineer. + + + Subscribers can send voice messages. + No comment provided by engineer. + Subscribers use relay link to connect to the channel. Relay address was used to set up this relay for the channel. @@ -8382,6 +8689,10 @@ Relay address was used to set up this relay for the channel. Zrób zdjęcie No comment provided by engineer. + + Talk to someone + No comment provided by engineer. + Tap Connect to chat Dotknij Połącz aby rozpocząć czat @@ -8397,11 +8708,6 @@ Relay address was used to set up this relay for the channel. Dotknij Połącz aby użyć bota No comment provided by engineer. - - Tap Create SimpleX address in the menu to create it later. - Dotknij Stwórz adres SimpleX w menu aby utworzyć go później. - No comment provided by engineer. - Tap Join channel No comment provided by engineer. @@ -8436,6 +8742,10 @@ Relay address was used to set up this relay for the channel. Dotnij, aby dołączyć w trybie incognito No comment provided by engineer. + + Tap to open + No comment provided by engineer. + Tap to paste link Dotknij, aby wkleić link @@ -8537,6 +8847,10 @@ Może się to zdarzyć z powodu jakiegoś błędu lub gdy połączenie jest skom Kod, który zeskanowałeś nie jest kodem QR linku SimpleX. No comment provided by engineer. + + The connection reached the limit of undelivered messages + conn error description + The connection reached the limit of undelivered messages, your contact may be offline. Połączenie osiągnęło limit niedostarczonych wiadomości, Twój kontakt może być offline. @@ -8770,6 +9084,10 @@ Może się to zdarzyć z powodu jakiegoś błędu lub gdy połączenie jest skom Aby ukryć niechciane wiadomości. No comment provided by engineer. + + To make SimpleX Network last. + No comment provided by engineer. + To make a new connection Aby nawiązać nowe połączenie @@ -9046,13 +9364,17 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc Unsupported connection link Nieobsługiwane łącze połączenia - No comment provided by engineer. + conn error description Up to 100 last messages are sent to new members. Do nowych członków wysyłanych jest do 100 ostatnich wiadomości. No comment provided by engineer. + + Up to 100 last messages are sent to new subscribers. + No comment provided by engineer. + Update Aktualizuj @@ -9266,6 +9588,10 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc Korzystaj z aplikacji jedną ręką. No comment provided by engineer. + + Use this address in your social media profile, website, or email signature. + No comment provided by engineer. + Use web port Użyj portu internetowego @@ -9418,6 +9744,10 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc Wait response relay test step + + Waiting for channel owner to add relays. + No comment provided by engineer. + Waiting for desktop... Oczekiwanie na komputer... @@ -9458,6 +9788,10 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc Uwaga: możesz stracić niektóre dane! No comment provided by engineer. + + We made connecting simpler for new users. + No comment provided by engineer. + WebRTC ICE servers Serwery WebRTC ICE @@ -10048,6 +10382,10 @@ Relays can access channel messages. Twój profil został zmieniony. Jeśli go zapiszesz, zaktualizowany profil zostanie wysłany do wszystkich kontaktów. alert message + + Your public address + No comment provided by engineer. + Your random profile Twój losowy profil @@ -10076,21 +10414,11 @@ Relays can access channel messages. Twoje ustawienia No comment provided by engineer. - - [Contribute](https://github.com/simplex-chat/simplex-chat#contribute) - [Przyczyń się](https://github.com/simplex-chat/simplex-chat#contribute) - No comment provided by engineer. - [Send us email](mailto:chat@simplex.chat) [Wyślij do nas email](mailto:chat@simplex.chat) No comment provided by engineer. - - [Star on GitHub](https://github.com/simplex-chat/simplex-chat) - [Daj gwiazdkę na GitHub](https://github.com/simplex-chat/simplex-chat) - No comment provided by engineer. - \_italic_ \_kursywa_ @@ -10245,6 +10573,10 @@ marked deleted chat item preview text dzwonie… call status + + can't broadcast + No comment provided by engineer. + can't send messages nie można wysłać wiadomości @@ -10901,6 +11233,10 @@ time to disappear removed (%d attempts) receive error chat item + + removed by operator + No comment provided by engineer. + removed contact address usunięto adres kontaktu @@ -11222,6 +11558,10 @@ ostatnia otrzymana wiadomość: %2$@ \~strajk~ No comment provided by engineer. + + ⚠️ Signature verification failed: %@. + owner verification + 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 64f2546b30..a9f194b609 100644 --- a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff +++ b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff @@ -185,9 +185,20 @@ %d мес. time interval - - %d relays - channel relay bar + + %d relays failed + channel relay bar +channel subscriber relay bar + + + %d relays not active + channel relay bar +channel subscriber relay bar + + + %d relays removed + channel relay bar +channel subscriber relay bar %d sec @@ -222,10 +233,18 @@ channel creation progress channel relay bar progress + + %1$d/%2$d relays active, %3$d errors + channel relay bar + %1$d/%2$d relays active, %3$d failed channel creation progress with errors -channel relay bar progress with errors +channel relay bar + + + %1$d/%2$d relays active, %3$d removed + channel relay bar %1$d/%2$d relays connected @@ -233,7 +252,15 @@ channel relay bar progress with errors %1$d/%2$d relays connected, %3$d errors - channel subscriber relay bar progress with errors + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d failed + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d removed + channel subscriber relay bar %lld @@ -349,11 +376,19 @@ channel relay bar progress with errors %u сообщений пропущено. No comment provided by engineer. + + (from owner) + chat link info line + (new) (новое) No comment provided by engineer. + + (signed) + chat link info line + (this device v%@) (это устройство v%@) @@ -446,6 +481,12 @@ channel relay bar progress with errors - и прочее! No comment provided by engineer. + + - opt-in to send link previews. +- prevent hyperlink phishing. +- remove link tracking. + No comment provided by engineer. + - optionally notify deleted contacts. - profile names with spaces. @@ -544,6 +585,10 @@ time interval Еще несколько изменений No comment provided by engineer. + + A link for one person to connect + No comment provided by engineer. + A new contact Новый контакт @@ -670,9 +715,8 @@ swipe action Активные соединения No comment provided by engineer. - - Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts. - Добавьте адрес в свой профиль, чтобы Ваши контакты могли поделиться им. Профиль будет отправлен Вашим контактам. + + Add address to your profile, so that your SimpleX contacts can share it with other people. Profile update will be sent to your SimpleX contacts. No comment provided by engineer. @@ -740,6 +784,10 @@ swipe action Дополнительные серверы сообщений No comment provided by engineer. + + Adding relays will be supported later. + No comment provided by engineer. + Additional accent Дополнительный акцент @@ -859,6 +907,14 @@ swipe action Все профили profile dropdown + + All relays failed + No comment provided by engineer. + + + All relays removed + No comment provided by engineer. + All reports will be archived for you. Все сообщения о нарушениях будут заархивированы для вас. @@ -919,6 +975,10 @@ swipe action Разрешить необратимое удаление сообщений, только если Ваш контакт разрешает это Вам. (24 часа) No comment provided by engineer. + + Allow members to chat with admins. + No comment provided by engineer. + Allow message reactions only if your contact allows them. Разрешить реакции на сообщения, только если ваш контакт разрешает их. @@ -934,6 +994,10 @@ swipe action Разрешить личные сообщения членам группы. No comment provided by engineer. + + Allow sending direct messages to subscribers. + No comment provided by engineer. + Allow sending disappearing messages. Разрешить посылать исчезающие сообщения. @@ -944,6 +1008,10 @@ swipe action Разрешить поделиться No comment provided by engineer. + + Allow subscribers to chat with admins. + No comment provided by engineer. + Allow to irreversibly delete sent messages. (24 hours) Разрешить необратимо удалять отправленные сообщения. (24 часа) @@ -1419,7 +1487,7 @@ swipe action Business address Бизнес адрес - No comment provided by engineer. + chat link info line Business chats @@ -1610,12 +1678,21 @@ set passcode view Channel full name (optional) No comment provided by engineer. + + Channel has no active relays. Please try to join later. + alert message +alert subtitle + Channel image No comment provided by engineer. Channel link + chat link info line + + + Channel preferences No comment provided by engineer. @@ -1630,6 +1707,10 @@ set passcode view Channel profile was changed. If you save it, the updated profile will be sent to channel subscribers. alert message + + Channel temporarily unavailable + alert title + Channel will be deleted for all subscribers - this cannot be undone! No comment provided by engineer. @@ -1642,6 +1723,10 @@ set passcode view Channel will start working with %1$d of %2$d relays. Proceed? alert message + + Channels + No comment provided by engineer. + Chat Разговор @@ -1761,7 +1846,8 @@ set passcode view Chat with admins Чат с админами - chat toolbar + chat feature +chat toolbar Chat with member @@ -1778,11 +1864,23 @@ set passcode view Чаты No comment provided by engineer. + + Chats with admins are prohibited. + No comment provided by engineer. + + + Chats with admins in public channels have no E2E encryption - use only with trusted chat relays. + alert message + Chats with members Чаты с членами группы No comment provided by engineer. + + Chats with members are disabled + No comment provided by engineer. + Check messages every 20 min. Проверять сообщения каждые 20 минут. @@ -2060,6 +2158,10 @@ This is your own one-time link! Соединиться через ссылку new chat sheet title + + Connect via link or QR code + No comment provided by engineer. + Connect via one-time link Соединиться через одноразовую ссылку @@ -2070,6 +2172,10 @@ This is your own one-time link! Соединиться с %@ new chat action + + Connect with someone + No comment provided by engineer. + Connected Соединено @@ -2138,7 +2244,7 @@ This is your own one-time link! Connection error (AUTH) Ошибка соединения (AUTH) - No comment provided by engineer. + conn error description Connection failed @@ -2196,6 +2302,10 @@ This is your own one-time link! Соединения No comment provided by engineer. + + Contact address + chat link info line + Contact allows Контакт разрешает @@ -2266,6 +2376,11 @@ This is your own one-time link! Продолжить No comment provided by engineer. + + Contribute + Внести свой вклад + No comment provided by engineer. + Conversation deleted! Разговор удален! @@ -2296,11 +2411,6 @@ This is your own one-time link! Исправить имя на %@? alert message - - Create - Создать - No comment provided by engineer. - Create 1-time link Создать одноразовую ссылку @@ -2374,6 +2484,10 @@ This is your own one-time link! Создать профиль No comment provided by engineer. + + Create your public address + No comment provided by engineer. + Created Создано @@ -2957,6 +3071,14 @@ alert button Прямые сообщения между членами запрещены. No comment provided by engineer. + + Direct messages between subscribers are prohibited. + No comment provided by engineer. + + + Disable + alert button + Disable (keep overrides) Выключить (кроме исключений) @@ -3062,6 +3184,10 @@ alert button Не отправлять историю новым членам. No comment provided by engineer. + + Do not send history to new subscribers. + No comment provided by engineer. + Do not use credentials with proxy. Не использовать учетные данные с прокси. @@ -3163,6 +3289,10 @@ chat item action E2E зашифрованные нотификации. No comment provided by engineer. + + Easier to invite your friends 👋 + No comment provided by engineer. + Edit Редактировать @@ -3185,7 +3315,7 @@ chat item action Enable Включить - No comment provided by engineer. + alert button Enable (keep overrides) @@ -3221,6 +3351,10 @@ chat item action Включить доступ к камере No comment provided by engineer. + + Enable chats with admins? + alert title + Enable disappearing messages by default. Включите исчезающие сообщения по умолчанию. @@ -3241,6 +3375,10 @@ chat item action Включить мгновенные уведомления? No comment provided by engineer. + + Enable link previews? + alert title + Enable lock Включить блокировку @@ -3417,7 +3555,7 @@ chat item action Error Ошибка - No comment provided by engineer. + conn error description Error aborting address change @@ -3761,6 +3899,10 @@ chat item action Ошибка настроек отчётов о доставке! No comment provided by engineer. + + Error sharing channel + alert title + Error starting chat Ошибка при запуске чата @@ -4128,6 +4270,10 @@ server test error Для всех модераторов No comment provided by engineer. + + For anyone to reach you + No comment provided by engineer. + For chat profile %@: Для профиля чата %@: @@ -4340,7 +4486,7 @@ Error: %2$@ Group link Ссылка группы - No comment provided by engineer. + chat link info line Group links @@ -4452,6 +4598,10 @@ Error: %2$@ История не отправляется новым членам. No comment provided by engineer. + + History is not sent to new subscribers. + No comment provided by engineer. + How SimpleX works Как SimpleX работает @@ -4696,9 +4846,9 @@ More improvements are coming soon! Роль при вступлении No comment provided by engineer. - - Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat) - [SimpleX Chat для терминала](https://github.com/simplex-chat/simplex-chat) + + Install SimpleX Chat for terminal + SimpleX Chat для терминала No comment provided by engineer. @@ -4756,7 +4906,7 @@ More improvements are coming soon! Invalid connection link Ошибка в ссылке контакта - No comment provided by engineer. + conn error description Invalid display name! @@ -4820,6 +4970,10 @@ More improvements are coming soon! Пригласить членов группы No comment provided by engineer. + + Invite someone privately + No comment provided by engineer. + Invite to chat Пригласить в разговор @@ -5020,6 +5174,10 @@ This is your link for group %@! Меньше трафик в мобильных сетях. No comment provided by engineer. + + Let someone connect to you + No comment provided by engineer. + Let's talk in SimpleX Chat Давайте поговорим в SimpleX Chat @@ -5040,6 +5198,10 @@ This is your link for group %@! Свяжите мобильное и настольное приложения! 🔗 No comment provided by engineer. + + Link signature verified. + owner verification + Linked desktop options Опции связанных компьютеров @@ -5223,6 +5385,10 @@ This is your link for group %@! Члены могут добавлять реакции на сообщения. No comment provided by engineer. + + Members can chat with admins. + No comment provided by engineer. + Members can irreversibly delete sent messages. (24 hours) Члены могут необратимо удалять отправленные сообщения. (24 часа) @@ -5387,6 +5553,14 @@ This is your link for group %@! Сообщения от %@ будут показаны! No comment provided by engineer. + + Messages in this channel are **not end-to-end encrypted**. Chat relays can see these messages. + No comment provided by engineer. + + + Messages in this channel are not end-to-end encrypted. Chat relays can see these messages. + E2EE info chat item + Messages in this chat will never be deleted. Сообщения в этом чате никогда не будут удалены. @@ -5557,6 +5731,10 @@ This is your link for group %@! Децентрализация сети No comment provided by engineer. + + Network error + conn error description + Network issues - message expired after many attempts to send it. Ошибка сети - сообщение не было отправлено после многократных попыток. @@ -5587,6 +5765,10 @@ This is your link for group %@! Новый token status text + + New 1-time link + No comment provided by engineer. + New Passcode Новый Код @@ -5686,6 +5868,10 @@ This is your link for group %@! Нет No comment provided by engineer. + + No active relays + No comment provided by engineer. + No app password Нет кода доступа @@ -5849,6 +6035,10 @@ This is your link for group %@! Без идентификаторов пользователей. No comment provided by engineer. + + Non-profit governance + No comment provided by engineer. + Not all relays connected alert title @@ -5910,7 +6100,7 @@ This is your link for group %@! OK OK - No comment provided by engineer. + alert button Off @@ -5934,6 +6124,10 @@ new chat action Одноразовая ссылка No comment provided by engineer. + + One-time link + chat link info line + Onion hosts will be **required** for connection. Requires compatible VPN. @@ -5953,6 +6147,10 @@ Requires compatible VPN. Onion хосты не используются. No comment provided by engineer. + + Only channel owners can change channel preferences. + No comment provided by engineer. + Only chat owners can change preferences. Только владельцы разговора могут поменять предпочтения. @@ -6056,7 +6254,8 @@ Requires compatible VPN. Open Открыть - alert action + alert action +alert button Open Settings @@ -6092,6 +6291,10 @@ Requires compatible VPN. Открыть условия No comment provided by engineer. + + Open external link? + alert title + Open full link Открыть полную ссылку @@ -6181,6 +6384,10 @@ Requires compatible VPN. Или передайте эту ссылку No comment provided by engineer. + + Or show QR in person or via video call. + No comment provided by engineer. + Or show this code Или покажите этот код @@ -6191,6 +6398,10 @@ Requires compatible VPN. Или поделиться конфиденциально No comment provided by engineer. + + Or use this QR - print or show online. + No comment provided by engineer. + Organize chats into lists Организуйте чаты в списки @@ -6216,6 +6427,10 @@ Requires compatible VPN. Owners No comment provided by engineer. + + Ownership: you can run your own relays. + No comment provided by engineer. + PING count Количество PING @@ -6271,6 +6486,10 @@ Requires compatible VPN. Вставить изображение No comment provided by engineer. + + Paste link / Scan + No comment provided by engineer. + Paste link to connect! Вставьте ссылку, чтобы соединиться! @@ -6473,6 +6692,10 @@ Error: %@ Более конфиденциальный 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. Частные разговоры, группы и Ваши контакты недоступны для операторов серверов. @@ -6547,9 +6770,8 @@ Error: %@ Тема профиля No comment provided by engineer. - - Profile update will be sent to your contacts. - Обновлённый профиль будет отправлен Вашим контактам. + + Profile update will be sent to your SimpleX contacts. alert message @@ -6557,6 +6779,10 @@ Error: %@ Запретить аудио/видео звонки. No comment provided by engineer. + + Prohibit chats with admins. + No comment provided by engineer. + Prohibit irreversible message deletion. Запретить необратимое удаление сообщений. @@ -6587,6 +6813,10 @@ Error: %@ Запретить посылать прямые сообщения членам группы. No comment provided by engineer. + + Prohibit sending direct messages to subscribers. + No comment provided by engineer. + Prohibit sending disappearing messages. Запретить посылать исчезающие сообщения. @@ -6654,6 +6884,10 @@ Enable in *Network & servers* settings. Прокси требует пароль No comment provided by engineer. + + Public channels - speak freely 🚀 + No comment provided by engineer. + Push notifications Доставка уведомлений @@ -6694,24 +6928,14 @@ Enable in *Network & servers* settings. Узнать больше No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). - Дополнительная информация в [Руководстве пользователя](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). + + Read more in User Guide. + Дополнительная информация в Руководстве пользователя. No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - Узнать больше в [Руководстве пользователя](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - No comment provided by engineer. - - - Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - Узнать больше в [Руководстве пользователя](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - No comment provided by engineer. - - - Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme). - Узнайте больше из нашего [GitHub репозитория](https://github.com/simplex-chat/simplex-chat#readme). + + Read more in our GitHub repository. + Узнайте больше из нашего GitHub репозитория. No comment provided by engineer. @@ -6887,6 +7111,10 @@ swipe action Relay link No comment provided by engineer. + + Relay results: + alert message + Relay server is only used if necessary. Another party can observe your IP address. Relay сервер используется только при необходимости. Другая сторона может видеть Ваш IP адрес. @@ -6901,6 +7129,10 @@ swipe action Relay test failed! No comment provided by engineer. + + Reliability: many relays per channel. + No comment provided by engineer. + Remove Удалить @@ -7183,6 +7415,10 @@ swipe action SOCKS прокси No comment provided by engineer. + + Safe web links + No comment provided by engineer. + Safely receive files Получайте файлы безопасно @@ -7228,6 +7464,10 @@ chat item action Сохранить и уведомить членов группы No comment provided by engineer. + + Save and notify subscribers + No comment provided by engineer. + Save and reconnect Сохранить и переподключиться @@ -7421,6 +7661,10 @@ chat item action Код безопасности No comment provided by engineer. + + Security: owners hold channel keys. + No comment provided by engineer. + Select Выбрать @@ -7551,6 +7795,10 @@ chat item action Отправить запрос без сообщения No comment provided by engineer. + + Send the link via any messenger - it's secure. Ask to paste into SimpleX. + No comment provided by engineer. + Send them from gallery or custom keyboards. Отправьте из галереи или из дополнительных клавиатур. @@ -7561,6 +7809,10 @@ chat item action Отправить до 100 последних сообщений новым членам. No comment provided by engineer. + + Send up to 100 last messages to new subscribers. + No comment provided by engineer. + Send your private feedback to groups. Отправляйте Ваши конфиденциальные предложения группе. @@ -7576,6 +7828,10 @@ chat item action Отправитель мог удалить запрос на соединение. No comment provided by engineer. + + Sending a link preview may reveal your IP address to the website. You can change this in Privacy settings later. + alert message + Sending delivery receipts will be enabled for all contacts in all visible chat profiles. Отправка отчётов о доставке будет включена для всех контактов во всех видимых профилях чата. @@ -7871,11 +8127,14 @@ chat item action Поделитесь адресом No comment provided by engineer. - - Share address with contacts? - Поделиться адресом с контактами? + + Share address with SimpleX contacts? alert title + + Share channel + No comment provided by engineer. + Share from other apps. Поделитесь из других приложений. @@ -7915,9 +8174,12 @@ chat item action Поделиться в SimpleX No comment provided by engineer. - - Share with contacts - Поделиться с контактами + + Share via chat + No comment provided by engineer. + + + Share with SimpleX contacts No comment provided by engineer. @@ -8167,6 +8429,11 @@ report reason Квадрат, круг и все, что между ними. No comment provided by engineer. + + Star on GitHub + Поставить звездочку в GitHub + No comment provided by engineer. + Start chat Запустить чат @@ -8271,6 +8538,10 @@ report reason Subscriber No comment provided by engineer. + + Subscriber reports + chat feature + Subscriber will be removed from channel - this cannot be undone! alert message @@ -8279,6 +8550,42 @@ report reason Subscribers No comment provided by engineer. + + Subscribers can add message reactions. + No comment provided by engineer. + + + Subscribers can chat with admins. + No comment provided by engineer. + + + Subscribers can irreversibly delete sent messages. (24 hours) + No comment provided by engineer. + + + Subscribers can report messsages to moderators. + No comment provided by engineer. + + + Subscribers can send SimpleX links. + No comment provided by engineer. + + + Subscribers can send direct messages. + No comment provided by engineer. + + + Subscribers can send disappearing messages. + No comment provided by engineer. + + + Subscribers can send files and media. + No comment provided by engineer. + + + Subscribers can send voice messages. + No comment provided by engineer. + Subscribers use relay link to connect to the channel. Relay address was used to set up this relay for the channel. @@ -8364,6 +8671,10 @@ Relay address was used to set up this relay for the channel. Сделать фото No comment provided by engineer. + + Talk to someone + No comment provided by engineer. + Tap Connect to chat Нажмите Соединиться @@ -8379,11 +8690,6 @@ Relay address was used to set up this relay for the channel. Нажмите Соединиться, чтобы использовать бот No comment provided by engineer. - - Tap Create SimpleX address in the menu to create it later. - Нажмите Создать адрес SimpleX в меню, чтобы создать его позже. - No comment provided by engineer. - Tap Join channel No comment provided by engineer. @@ -8418,6 +8724,10 @@ Relay address was used to set up this relay for the channel. Нажмите, чтобы вступить инкогнито No comment provided by engineer. + + Tap to open + No comment provided by engineer. + Tap to paste link Нажмите, чтобы вставить ссылку @@ -8519,6 +8829,10 @@ It can happen because of some bug or when the connection is compromised.Этот QR код не является SimpleX-ccылкой. No comment provided by engineer. + + The connection reached the limit of undelivered messages + conn error description + The connection reached the limit of undelivered messages, your contact may be offline. Соединение достигло предела недоставленных сообщений. Возможно, Ваш контакт не в сети. @@ -8752,6 +9066,10 @@ It can happen because of some bug or when the connection is compromised.Чтобы скрыть нежелательные сообщения. No comment provided by engineer. + + To make SimpleX Network last. + No comment provided by engineer. + To make a new connection Чтобы соединиться @@ -9028,13 +9346,17 @@ To connect, please ask your contact to create another connection link and check Unsupported connection link Ссылка не поддерживается - No comment provided by engineer. + conn error description Up to 100 last messages are sent to new members. До 100 последних сообщений отправляются новым членам. No comment provided by engineer. + + Up to 100 last messages are sent to new subscribers. + No comment provided by engineer. + Update Обновить @@ -9248,6 +9570,10 @@ To connect, please ask your contact to create another connection link and check Используйте приложение одной рукой. No comment provided by engineer. + + Use this address in your social media profile, website, or email signature. + No comment provided by engineer. + Use web port Использовать веб-порт @@ -9399,6 +9725,10 @@ To connect, please ask your contact to create another connection link and check Wait response relay test step + + Waiting for channel owner to add relays. + No comment provided by engineer. + Waiting for desktop... Ожидается подключение компьютера... @@ -9439,6 +9769,10 @@ To connect, please ask your contact to create another connection link and check Предупреждение: Вы можете потерять какие то данные! No comment provided by engineer. + + We made connecting simpler for new users. + No comment provided by engineer. + WebRTC ICE servers WebRTC ICE серверы @@ -10029,6 +10363,10 @@ Relays can access channel messages. Ваш профиль был изменен. Если вы сохраните его, обновленный профиль будет отправлен всем вашим контактам. alert message + + Your public address + No comment provided by engineer. + Your random profile Случайный профиль @@ -10057,21 +10395,11 @@ Relays can access channel messages. Настройки No comment provided by engineer. - - [Contribute](https://github.com/simplex-chat/simplex-chat#contribute) - [Внести свой вклад](https://github.com/simplex-chat/simplex-chat#contribute) - No comment provided by engineer. - [Send us email](mailto:chat@simplex.chat) [Отправить email](mailto:chat@simplex.chat) No comment provided by engineer. - - [Star on GitHub](https://github.com/simplex-chat/simplex-chat) - [Поставить звездочку в GitHub](https://github.com/simplex-chat/simplex-chat) - No comment provided by engineer. - \_italic_ \_курсив_ @@ -10226,6 +10554,10 @@ marked deleted chat item preview text входящий звонок… call status + + can't broadcast + No comment provided by engineer. + can't send messages нельзя отправлять @@ -10881,6 +11213,10 @@ time to disappear removed (%d attempts) receive error chat item + + removed by operator + No comment provided by engineer. + removed contact address удалён адрес контакта @@ -11202,6 +11538,10 @@ last received msg: %2$@ \~зачеркнуть~ No comment provided by engineer. + + ⚠️ Signature verification failed: %@. + owner verification + 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 6ffea9646d..8c45cb3e95 100644 --- a/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff +++ b/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff @@ -167,9 +167,20 @@ %d เดือน time interval - - %d relays - channel relay bar + + %d relays failed + channel relay bar +channel subscriber relay bar + + + %d relays not active + channel relay bar +channel subscriber relay bar + + + %d relays removed + channel relay bar +channel subscriber relay bar %d sec @@ -203,10 +214,18 @@ channel creation progress channel relay bar progress + + %1$d/%2$d relays active, %3$d errors + channel relay bar + %1$d/%2$d relays active, %3$d failed channel creation progress with errors -channel relay bar progress with errors +channel relay bar + + + %1$d/%2$d relays active, %3$d removed + channel relay bar %1$d/%2$d relays connected @@ -214,7 +233,15 @@ channel relay bar progress with errors %1$d/%2$d relays connected, %3$d errors - channel subscriber relay bar progress with errors + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d failed + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d removed + channel subscriber relay bar %lld @@ -324,10 +351,18 @@ channel relay bar progress with errors %u ข้อความที่ถูกข้าม No comment provided by engineer. + + (from owner) + chat link info line + (new) No comment provided by engineer. + + (signed) + chat link info line + (this device v%@) No comment provided by engineer. @@ -411,6 +446,12 @@ channel relay bar progress with errors - และอื่น ๆ! No comment provided by engineer. + + - opt-in to send link previews. +- prevent hyperlink phishing. +- remove link tracking. + No comment provided by engineer. + - optionally notify deleted contacts. - profile names with spaces. @@ -502,6 +543,10 @@ time interval อีกสองสามอย่าง No comment provided by engineer. + + A link for one person to connect + No comment provided by engineer. + A new contact ผู้ติดต่อใหม่ @@ -614,9 +659,8 @@ swipe action Active connections No comment provided by engineer. - - Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts. - เพิ่มที่อยู่ลงในโปรไฟล์ของคุณ เพื่อให้ผู้ติดต่อของคุณสามารถแชร์กับผู้อื่นได้ การอัปเดตโปรไฟล์จะถูกส่งไปยังผู้ติดต่อของคุณ + + Add address to your profile, so that your SimpleX contacts can share it with other people. Profile update will be sent to your SimpleX contacts. No comment provided by engineer. @@ -676,6 +720,10 @@ swipe action Added message servers No comment provided by engineer. + + Adding relays will be supported later. + No comment provided by engineer. + Additional accent No comment provided by engineer. @@ -781,6 +829,14 @@ swipe action All profiles profile dropdown + + All relays failed + No comment provided by engineer. + + + All relays removed + No comment provided by engineer. + All reports will be archived for you. No comment provided by engineer. @@ -835,6 +891,10 @@ swipe action อนุญาตให้ลบข้อความแบบถาวรเฉพาะในกรณีที่ผู้ติดต่อของคุณอนุญาตให้คุณเท่านั้น No comment provided by engineer. + + Allow members to chat with admins. + No comment provided by engineer. + Allow message reactions only if your contact allows them. อนุญาตการแสดงปฏิกิริยาต่อข้อความเฉพาะเมื่อผู้ติดต่อของคุณอนุญาตเท่านั้น @@ -850,6 +910,10 @@ swipe action อนุญาตการส่งข้อความโดยตรงไปยังสมาชิก No comment provided by engineer. + + Allow sending direct messages to subscribers. + No comment provided by engineer. + Allow sending disappearing messages. อนุญาตให้ส่งข้อความที่จะหายไปหลังปิดแชท (disappearing message) @@ -859,6 +923,10 @@ swipe action Allow sharing No comment provided by engineer. + + Allow subscribers to chat with admins. + No comment provided by engineer. + Allow to irreversibly delete sent messages. (24 hours) อนุญาตให้ลบข้อความที่ส่งไปแล้วอย่างถาวร @@ -1284,7 +1352,7 @@ swipe action Business address - No comment provided by engineer. + chat link info line Business chats @@ -1457,12 +1525,21 @@ set passcode view Channel full name (optional) No comment provided by engineer. + + Channel has no active relays. Please try to join later. + alert message +alert subtitle + Channel image No comment provided by engineer. Channel link + chat link info line + + + Channel preferences No comment provided by engineer. @@ -1477,6 +1554,10 @@ set passcode view Channel profile was changed. If you save it, the updated profile will be sent to channel subscribers. alert message + + Channel temporarily unavailable + alert title + Channel will be deleted for all subscribers - this cannot be undone! No comment provided by engineer. @@ -1489,6 +1570,10 @@ set passcode view Channel will start working with %1$d of %2$d relays. Proceed? alert message + + Channels + No comment provided by engineer. + Chat No comment provided by engineer. @@ -1595,7 +1680,8 @@ set passcode view Chat with admins - chat toolbar + chat feature +chat toolbar Chat with member @@ -1610,10 +1696,22 @@ set passcode view แชท No comment provided by engineer. + + Chats with admins are prohibited. + No comment provided by engineer. + + + Chats with admins in public channels have no E2E encryption - use only with trusted chat relays. + alert message + Chats with members No comment provided by engineer. + + Chats with members are disabled + No comment provided by engineer. + Check messages every 20 min. No comment provided by engineer. @@ -1855,6 +1953,10 @@ This is your own one-time link! เชื่อมต่อผ่านลิงก์ new chat sheet title + + Connect via link or QR code + No comment provided by engineer. + Connect via one-time link new chat sheet title @@ -1863,6 +1965,10 @@ This is your own one-time link! Connect with %@ new chat action + + Connect with someone + No comment provided by engineer. + Connected No comment provided by engineer. @@ -1922,7 +2028,7 @@ This is your own one-time link! Connection error (AUTH) การเชื่อมต่อผิดพลาด (AUTH) - No comment provided by engineer. + conn error description Connection failed @@ -1971,6 +2077,10 @@ This is your own one-time link! Connections No comment provided by engineer. + + Contact address + chat link info line + Contact allows ผู้ติดต่ออนุญาต @@ -2036,6 +2146,11 @@ This is your own one-time link! ดำเนินการต่อ No comment provided by engineer. + + Contribute + มีส่วนร่วม + No comment provided by engineer. + Conversation deleted! No comment provided by engineer. @@ -2062,11 +2177,6 @@ This is your own one-time link! Correct name to %@? alert message - - Create - สร้าง - No comment provided by engineer. - Create 1-time link No comment provided by engineer. @@ -2133,6 +2243,10 @@ This is your own one-time link! สร้างโปรไฟล์ของคุณ No comment provided by engineer. + + Create your public address + No comment provided by engineer. + Created No comment provided by engineer. @@ -2675,6 +2789,14 @@ alert button ข้อความโดยตรงระหว่างสมาชิกเป็นสิ่งต้องห้ามในกลุ่มนี้ No comment provided by engineer. + + Direct messages between subscribers are prohibited. + No comment provided by engineer. + + + Disable + alert button + Disable (keep overrides) ปิดใช้งาน (เก็บการแทนที่) @@ -2771,6 +2893,10 @@ alert button Do not send history to new members. No comment provided by engineer. + + Do not send history to new subscribers. + No comment provided by engineer. + Do not use credentials with proxy. No comment provided by engineer. @@ -2859,6 +2985,10 @@ chat item action E2E encrypted notifications. No comment provided by engineer. + + Easier to invite your friends 👋 + No comment provided by engineer. + Edit แก้ไข @@ -2880,7 +3010,7 @@ chat item action Enable เปิดใช้งาน - No comment provided by engineer. + alert button Enable (keep overrides) @@ -2914,6 +3044,10 @@ chat item action Enable camera access No comment provided by engineer. + + Enable chats with admins? + alert title + Enable disappearing messages by default. No comment provided by engineer. @@ -2932,6 +3066,10 @@ chat item action เปิดใช้งานการแจ้งเตือนทันที? No comment provided by engineer. + + Enable link previews? + alert title + Enable lock เปิดใช้งานการล็อค @@ -3096,7 +3234,7 @@ chat item action Error ผิดพลาด - No comment provided by engineer. + conn error description Error aborting address change @@ -3407,6 +3545,10 @@ chat item action เกิดข้อผิดพลาดในการตั้งค่าใบตอบรับการจัดส่ง! No comment provided by engineer. + + Error sharing channel + alert title + Error starting chat เกิดข้อผิดพลาดในการเริ่มแชท @@ -3740,6 +3882,10 @@ server test error For all moderators No comment provided by engineer. + + For anyone to reach you + No comment provided by engineer. + For chat profile %@: servers error @@ -3924,7 +4070,7 @@ Error: %2$@ Group link ลิงค์กลุ่ม - No comment provided by engineer. + chat link info line Group links @@ -4032,6 +4178,10 @@ Error: %2$@ History is not sent to new members. No comment provided by engineer. + + History is not sent to new subscribers. + No comment provided by engineer. + How SimpleX works วิธีการ SimpleX ทํางานอย่างไร @@ -4259,9 +4409,9 @@ More improvements are coming soon! บทบาทเริ่มต้น No comment provided by engineer. - - Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat) - ติดตั้ง [SimpleX Chat สำหรับเทอร์มินัล](https://github.com/simplex-chat/simplex-chat) + + Install SimpleX Chat for terminal + ติดตั้ง SimpleX Chat สำหรับเทอร์มินัล No comment provided by engineer. @@ -4312,7 +4462,7 @@ More improvements are coming soon! Invalid connection link ลิงค์เชื่อมต่อไม่ถูกต้อง - No comment provided by engineer. + conn error description Invalid display name! @@ -4370,6 +4520,10 @@ More improvements are coming soon! เชิญสมาชิก No comment provided by engineer. + + Invite someone privately + No comment provided by engineer. + Invite to chat No comment provided by engineer. @@ -4557,6 +4711,10 @@ This is your link for group %@! Less traffic on mobile networks. No comment provided by engineer. + + Let someone connect to you + No comment provided by engineer. + Let's talk in SimpleX Chat มาคุยกันใน SimpleX Chat @@ -4576,6 +4734,10 @@ This is your link for group %@! Link mobile and desktop apps! 🔗 No comment provided by engineer. + + Link signature verified. + owner verification + Linked desktop options No comment provided by engineer. @@ -4743,6 +4905,10 @@ This is your link for group %@! สมาชิกกลุ่มสามารถเพิ่มการแสดงปฏิกิริยาต่อข้อความได้ No comment provided by engineer. + + Members can chat with admins. + No comment provided by engineer. + Members can irreversibly delete sent messages. (24 hours) สมาชิกกลุ่มสามารถลบข้อความที่ส่งแล้วอย่างถาวร @@ -4889,6 +5055,14 @@ This is your link for group %@! Messages from %@ will be shown! No comment provided by engineer. + + Messages in this channel are **not end-to-end encrypted**. Chat relays can see these messages. + No comment provided by engineer. + + + Messages in this channel are not end-to-end encrypted. Chat relays can see these messages. + E2EE info chat item + Messages in this chat will never be deleted. alert message @@ -5039,6 +5213,10 @@ This is your link for group %@! Network decentralization No comment provided by engineer. + + Network error + conn error description + Network issues - message expired after many attempts to send it. snd error text @@ -5065,6 +5243,10 @@ This is your link for group %@! New token status text + + New 1-time link + No comment provided by engineer. + New Passcode รหัสผ่านใหม่ @@ -5154,6 +5336,10 @@ This is your link for group %@! เลขที่ No comment provided by engineer. + + No active relays + No comment provided by engineer. + No app password ไม่มีรหัสผ่านสำหรับแอป @@ -5297,6 +5483,10 @@ This is your link for group %@! แพลตฟอร์มแรกที่ไม่มีตัวระบุผู้ใช้ - ถูกออกแบบให้เป็นส่วนตัว No comment provided by engineer. + + Non-profit governance + No comment provided by engineer. + Not all relays connected alert title @@ -5350,7 +5540,7 @@ This is your link for group %@! OK - No comment provided by engineer. + alert button Off @@ -5374,6 +5564,10 @@ new chat action ลิงก์คำเชิญแบบใช้ครั้งเดียว No comment provided by engineer. + + One-time link + chat link info line + Onion hosts will be **required** for connection. Requires compatible VPN. @@ -5391,6 +5585,10 @@ Requires compatible VPN. โฮสต์หัวหอมจะไม่ถูกใช้ No comment provided by engineer. + + Only channel owners can change channel preferences. + No comment provided by engineer. + Only chat owners can change preferences. No comment provided by engineer. @@ -5487,7 +5685,8 @@ Requires compatible VPN. Open - alert action + alert action +alert button Open Settings @@ -5520,6 +5719,10 @@ Requires compatible VPN. Open conditions No comment provided by engineer. + + Open external link? + alert title + Open full link alert action @@ -5592,6 +5795,10 @@ Requires compatible VPN. Or securely share this file link No comment provided by engineer. + + Or show QR in person or via video call. + No comment provided by engineer. + Or show this code No comment provided by engineer. @@ -5600,6 +5807,10 @@ Requires compatible VPN. Or to share privately No comment provided by engineer. + + Or use this QR - print or show online. + No comment provided by engineer. + Organize chats into lists No comment provided by engineer. @@ -5621,6 +5832,10 @@ Requires compatible VPN. Owners No comment provided by engineer. + + Ownership: you can run your own relays. + No comment provided by engineer. + PING count จํานวน PING @@ -5674,6 +5889,10 @@ Requires compatible VPN. แปะภาพ No comment provided by engineer. + + Paste link / Scan + No comment provided by engineer. + Paste link to connect! No comment provided by engineer. @@ -5856,6 +6075,10 @@ Error: %@ นิยามความเป็นส่วนตัวใหม่ 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. No comment provided by engineer. @@ -5920,9 +6143,8 @@ Error: %@ Profile theme No comment provided by engineer. - - Profile update will be sent to your contacts. - การอัปเดตโปรไฟล์จะถูกส่งไปยังผู้ติดต่อของคุณ + + Profile update will be sent to your SimpleX contacts. alert message @@ -5930,6 +6152,10 @@ Error: %@ ห้ามการโทรด้วยเสียง/วิดีโอ No comment provided by engineer. + + Prohibit chats with admins. + No comment provided by engineer. + Prohibit irreversible message deletion. ห้ามการลบข้อความที่ย้อนกลับไม่ได้ @@ -5958,6 +6184,10 @@ Error: %@ ห้ามส่งข้อความโดยตรงถึงสมาชิก No comment provided by engineer. + + Prohibit sending direct messages to subscribers. + No comment provided by engineer. + Prohibit sending disappearing messages. ห้ามส่งข้อความที่จะหายไปหลังจากเวลาที่กำหนดหลังการอ่าน (disappearing messages) @@ -6018,6 +6248,10 @@ Enable in *Network & servers* settings. Proxy requires password No comment provided by engineer. + + Public channels - speak freely 🚀 + No comment provided by engineer. + Push notifications การแจ้งเตือนแบบทันที @@ -6055,23 +6289,14 @@ Enable in *Network & servers* settings. อ่านเพิ่มเติม No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). + + Read more in User Guide. + อ่านเพิ่มเติมในคู่มือผู้ใช้ No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - อ่านเพิ่มเติมใน[คู่มือผู้ใช้](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses) - No comment provided by engineer. - - - Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - อ่านเพิ่มเติมใน[คู่มือผู้ใช้](https://simplex.chat/docs/guide/readme.html#connect-to-friends) - No comment provided by engineer. - - - Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme). - อ่านเพิ่มเติมใน[พื้นที่เก็บข้อมูล GitHub](https://github.com/simplex-chat/simplex-chat#readme) + + Read more in our GitHub repository. + อ่านเพิ่มเติมในพื้นที่เก็บข้อมูล GitHub No comment provided by engineer. @@ -6230,6 +6455,10 @@ swipe action Relay link No comment provided by engineer. + + Relay results: + alert message + Relay server is only used if necessary. Another party can observe your IP address. ใช้เซิร์ฟเวอร์รีเลย์ในกรณีที่จำเป็นเท่านั้น บุคคลอื่นสามารถสังเกตที่อยู่ IP ของคุณได้ @@ -6244,6 +6473,10 @@ swipe action Relay test failed! No comment provided by engineer. + + Reliability: many relays per channel. + No comment provided by engineer. + Remove ลบ @@ -6496,6 +6729,10 @@ swipe action SOCKS proxy No comment provided by engineer. + + Safe web links + No comment provided by engineer. + Safely receive files No comment provided by engineer. @@ -6537,6 +6774,10 @@ chat item action บันทึกและแจ้งให้สมาชิกในกลุ่มทราบ No comment provided by engineer. + + Save and notify subscribers + No comment provided by engineer. + Save and reconnect No comment provided by engineer. @@ -6715,6 +6956,10 @@ chat item action รหัสความปลอดภัย No comment provided by engineer. + + Security: owners hold channel keys. + No comment provided by engineer. + Select เลือก @@ -6833,6 +7078,10 @@ chat item action Send request without message No comment provided by engineer. + + Send the link via any messenger - it's secure. Ask to paste into SimpleX. + No comment provided by engineer. + Send them from gallery or custom keyboards. ส่งจากแกลเลอรีหรือแป้นพิมพ์แบบกำหนดเอง @@ -6842,6 +7091,10 @@ chat item action Send up to 100 last messages to new members. No comment provided by engineer. + + Send up to 100 last messages to new subscribers. + No comment provided by engineer. + Send your private feedback to groups. No comment provided by engineer. @@ -6856,6 +7109,10 @@ chat item action ผู้ส่งอาจลบคําขอการเชื่อมต่อแล้ว No comment provided by engineer. + + Sending a link preview may reveal your IP address to the website. You can change this in Privacy settings later. + alert message + Sending delivery receipts will be enabled for all contacts in all visible chat profiles. การส่งใบเสร็จรับการจัดส่งข้อความจะถูกเปิดในโปรไฟล์แชทที่มองเห็นได้ทั้งหมด @@ -7119,11 +7376,14 @@ chat item action Share address publicly No comment provided by engineer. - - Share address with contacts? - แชร์ที่อยู่กับผู้ติดต่อ? + + Share address with SimpleX contacts? alert title + + Share channel + No comment provided by engineer. + Share from other apps. No comment provided by engineer. @@ -7157,9 +7417,12 @@ chat item action Share to SimpleX No comment provided by engineer. - - Share with contacts - แชร์กับผู้ติดต่อ + + Share via chat + No comment provided by engineer. + + + Share with SimpleX contacts No comment provided by engineer. @@ -7380,6 +7643,11 @@ report reason Square, circle, or anything in between. No comment provided by engineer. + + Star on GitHub + ติดดาวบน GitHub + No comment provided by engineer. + Start chat เริ่มแชท @@ -7476,6 +7744,10 @@ report reason Subscriber No comment provided by engineer. + + Subscriber reports + chat feature + Subscriber will be removed from channel - this cannot be undone! alert message @@ -7484,6 +7756,42 @@ report reason Subscribers No comment provided by engineer. + + Subscribers can add message reactions. + No comment provided by engineer. + + + Subscribers can chat with admins. + No comment provided by engineer. + + + Subscribers can irreversibly delete sent messages. (24 hours) + No comment provided by engineer. + + + Subscribers can report messsages to moderators. + No comment provided by engineer. + + + Subscribers can send SimpleX links. + No comment provided by engineer. + + + Subscribers can send direct messages. + No comment provided by engineer. + + + Subscribers can send disappearing messages. + No comment provided by engineer. + + + Subscribers can send files and media. + No comment provided by engineer. + + + Subscribers can send voice messages. + No comment provided by engineer. + Subscribers use relay link to connect to the channel. Relay address was used to set up this relay for the channel. @@ -7561,6 +7869,10 @@ Relay address was used to set up this relay for the channel. ถ่ายภาพ No comment provided by engineer. + + Talk to someone + No comment provided by engineer. + Tap Connect to chat No comment provided by engineer. @@ -7573,10 +7885,6 @@ Relay address was used to set up this relay for the channel. Tap Connect to use bot No comment provided by engineer. - - Tap Create SimpleX address in the menu to create it later. - No comment provided by engineer. - Tap Join channel No comment provided by engineer. @@ -7609,6 +7917,10 @@ Relay address was used to set up this relay for the channel. แตะเพื่อเข้าร่วมโหมดไม่ระบุตัวตน No comment provided by engineer. + + Tap to open + No comment provided by engineer. + Tap to paste link No comment provided by engineer. @@ -7703,6 +8015,10 @@ It can happen because of some bug or when the connection is compromised.The code you scanned is not a SimpleX link QR code. No comment provided by engineer. + + The connection reached the limit of undelivered messages + conn error description + The connection reached the limit of undelivered messages, your contact may be offline. No comment provided by engineer. @@ -7911,6 +8227,10 @@ It can happen because of some bug or when the connection is compromised.To hide unwanted messages. No comment provided by engineer. + + To make SimpleX Network last. + No comment provided by engineer. + To make a new connection เพื่อสร้างการเชื่อมต่อใหม่ @@ -8160,12 +8480,16 @@ To connect, please ask your contact to create another connection link and check Unsupported connection link - No comment provided by engineer. + conn error description Up to 100 last messages are sent to new members. No comment provided by engineer. + + Up to 100 last messages are sent to new subscribers. + No comment provided by engineer. + Update อัปเดต @@ -8350,6 +8674,10 @@ To connect, please ask your contact to create another connection link and check Use the app with one hand. No comment provided by engineer. + + Use this address in your social media profile, website, or email signature. + No comment provided by engineer. + Use web port No comment provided by engineer. @@ -8488,6 +8816,10 @@ To connect, please ask your contact to create another connection link and check Wait response relay test step + + Waiting for channel owner to add relays. + No comment provided by engineer. + Waiting for desktop... No comment provided by engineer. @@ -8524,6 +8856,10 @@ To connect, please ask your contact to create another connection link and check คำเตือน: คุณอาจสูญเสียข้อมูลบางส่วน! No comment provided by engineer. + + We made connecting simpler for new users. + No comment provided by engineer. + WebRTC ICE servers เซิร์ฟเวอร์ WebRTC ICE @@ -9059,6 +9395,10 @@ Relays can access channel messages. Your profile was changed. If you save it, the updated profile will be sent to all your contacts. alert message + + Your public address + No comment provided by engineer. + Your random profile โปรไฟล์แบบสุ่มของคุณ @@ -9086,21 +9426,11 @@ Relays can access channel messages. การตั้งค่าของคุณ No comment provided by engineer. - - [Contribute](https://github.com/simplex-chat/simplex-chat#contribute) - [มีส่วนร่วม](https://github.com/simplex-chat/simplex-chat#contribute) - No comment provided by engineer. - [Send us email](mailto:chat@simplex.chat) [ส่งอีเมลถึงเรา](mailto:chat@simplex.chat) No comment provided by engineer. - - [Star on GitHub](https://github.com/simplex-chat/simplex-chat) - [ติดดาวบน GitHub](https://github.com/simplex-chat/simplex-chat) - No comment provided by engineer. - \_italic_ \_ตัวเอียง_ @@ -9241,6 +9571,10 @@ marked deleted chat item preview text กำลังโทร… call status + + can't broadcast + No comment provided by engineer. + can't send messages No comment provided by engineer. @@ -9866,6 +10200,10 @@ time to disappear removed (%d attempts) receive error chat item + + removed by operator + No comment provided by engineer. + removed contact address profile update event chat item @@ -10156,6 +10494,10 @@ last received msg: %2$@ \~ตี~ No comment provided by engineer. + + ⚠️ Signature verification failed: %@. + owner verification + 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 f8890ca077..ea9291a43a 100644 --- a/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff +++ b/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff @@ -185,9 +185,20 @@ %d ay time interval - - %d relays - channel relay bar + + %d relays failed + channel relay bar +channel subscriber relay bar + + + %d relays not active + channel relay bar +channel subscriber relay bar + + + %d relays removed + channel relay bar +channel subscriber relay bar %d sec @@ -222,10 +233,18 @@ channel creation progress channel relay bar progress + + %1$d/%2$d relays active, %3$d errors + channel relay bar + %1$d/%2$d relays active, %3$d failed channel creation progress with errors -channel relay bar progress with errors +channel relay bar + + + %1$d/%2$d relays active, %3$d removed + channel relay bar %1$d/%2$d relays connected @@ -233,7 +252,15 @@ channel relay bar progress with errors %1$d/%2$d relays connected, %3$d errors - channel subscriber relay bar progress with errors + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d failed + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d removed + channel subscriber relay bar %lld @@ -349,11 +376,19 @@ channel relay bar progress with errors %u mesajlar atlandı. No comment provided by engineer. + + (from owner) + chat link info line + (new) (yeni) No comment provided by engineer. + + (signed) + chat link info line + (this device v%@) (bu cihaz v%@) @@ -446,6 +481,12 @@ channel relay bar progress with errors - ve fazlası! No comment provided by engineer. + + - opt-in to send link previews. +- prevent hyperlink phishing. +- remove link tracking. + No comment provided by engineer. + - optionally notify deleted contacts. - profile names with spaces. @@ -544,6 +585,10 @@ time interval Birkaç şey daha No comment provided by engineer. + + A link for one person to connect + No comment provided by engineer. + A new contact Yeni kişi @@ -670,9 +715,8 @@ swipe action Aktif bağlantılar No comment provided by engineer. - - Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts. - Kişilerinizin başkalarıyla paylaşabilmesi için profilinize adres ekleyin. Profil güncellemesi kişilerinize gönderilecek. + + Add address to your profile, so that your SimpleX contacts can share it with other people. Profile update will be sent to your SimpleX contacts. No comment provided by engineer. @@ -740,6 +784,10 @@ swipe action Mesaj sunucuları eklendi No comment provided by engineer. + + Adding relays will be supported later. + No comment provided by engineer. + Additional accent Ek ana renk @@ -859,6 +907,14 @@ swipe action Tüm Profiller profile dropdown + + All relays failed + No comment provided by engineer. + + + All relays removed + No comment provided by engineer. + All reports will be archived for you. Tüm raporlar sizin için arşivlenecek. @@ -919,6 +975,10 @@ swipe action Konuştuğun kişi, kalıcı olarak silinebilen mesajlara izin veriyorsa sen de ver. (24 saat içinde) No comment provided by engineer. + + Allow members to chat with admins. + No comment provided by engineer. + Allow message reactions only if your contact allows them. Yalnızca kişin mesaj tepkilerine izin veriyorsa sen de ver. @@ -934,6 +994,10 @@ swipe action Üyelere doğrudan mesaj göndermeye izin ver. No comment provided by engineer. + + Allow sending direct messages to subscribers. + No comment provided by engineer. + Allow sending disappearing messages. Kendiliğinden yok olan mesajlar göndermeye izin ver. @@ -944,6 +1008,10 @@ swipe action Paylaşıma izin ver No comment provided by engineer. + + Allow subscribers to chat with admins. + No comment provided by engineer. + Allow to irreversibly delete sent messages. (24 hours) Gönderilen mesajların kalıcı olarak silinmesine izin ver. (24 saat içinde) @@ -1419,7 +1487,7 @@ swipe action Business address İş adresi - No comment provided by engineer. + chat link info line Business chats @@ -1610,12 +1678,21 @@ set passcode view Channel full name (optional) No comment provided by engineer. + + Channel has no active relays. Please try to join later. + alert message +alert subtitle + Channel image No comment provided by engineer. Channel link + chat link info line + + + Channel preferences No comment provided by engineer. @@ -1630,6 +1707,10 @@ set passcode view Channel profile was changed. If you save it, the updated profile will be sent to channel subscribers. alert message + + Channel temporarily unavailable + alert title + Channel will be deleted for all subscribers - this cannot be undone! No comment provided by engineer. @@ -1642,6 +1723,10 @@ set passcode view Channel will start working with %1$d of %2$d relays. Proceed? alert message + + Channels + No comment provided by engineer. + Chat Sohbet @@ -1761,7 +1846,8 @@ set passcode view Chat with admins Yöneticilerle sohbet et - chat toolbar + chat feature +chat toolbar Chat with member @@ -1778,11 +1864,23 @@ set passcode view Sohbetler No comment provided by engineer. + + Chats with admins are prohibited. + No comment provided by engineer. + + + Chats with admins in public channels have no E2E encryption - use only with trusted chat relays. + alert message + Chats with members Üyelerle sohbetler No comment provided by engineer. + + Chats with members are disabled + No comment provided by engineer. + Check messages every 20 min. Her 20 dakikada mesajları kontrol et. @@ -2060,6 +2158,10 @@ Bu senin kendi tek kullanımlık bağlantın! Bağlantı aracılığıyla bağlan new chat sheet title + + Connect via link or QR code + No comment provided by engineer. + Connect via one-time link Tek kullanımlık bağlantı aracılığıyla bağlan @@ -2070,6 +2172,10 @@ Bu senin kendi tek kullanımlık bağlantın! %@ ile bağlan new chat action + + Connect with someone + No comment provided by engineer. + Connected Bağlandı @@ -2138,7 +2244,7 @@ Bu senin kendi tek kullanımlık bağlantın! Connection error (AUTH) Bağlantı hatası (DOĞRULAMA) - No comment provided by engineer. + conn error description Connection failed @@ -2196,6 +2302,10 @@ Bu senin kendi tek kullanımlık bağlantın! Bağlantılar No comment provided by engineer. + + Contact address + chat link info line + Contact allows Kişi izin veriyor @@ -2266,6 +2376,11 @@ Bu senin kendi tek kullanımlık bağlantın! Devam et No comment provided by engineer. + + Contribute + Katkıda bulun + No comment provided by engineer. + Conversation deleted! Sohbet silindi! @@ -2296,11 +2411,6 @@ Bu senin kendi tek kullanımlık bağlantın! İsim %@ olarak düzeltilsin mi? alert message - - Create - Oluştur - No comment provided by engineer. - Create 1-time link Tek kullanımlık bağlantı oluştur @@ -2374,6 +2484,10 @@ Bu senin kendi tek kullanımlık bağlantın! Profilini oluştur No comment provided by engineer. + + Create your public address + No comment provided by engineer. + Created Yaratıldı @@ -2957,6 +3071,14 @@ alert button Bu grupta üyeler arasında direkt mesajlaşma yasaktır. No comment provided by engineer. + + Direct messages between subscribers are prohibited. + No comment provided by engineer. + + + Disable + alert button + Disable (keep overrides) Devre dışı bırak (geçersiz kılmaları koru) @@ -3062,6 +3184,10 @@ alert button Yeni üyelere geçmişi gönderme. No comment provided by engineer. + + Do not send history to new subscribers. + No comment provided by engineer. + Do not use credentials with proxy. Kimlik bilgilerini proxy ile kullanmayın. @@ -3163,6 +3289,10 @@ chat item action Uçtan uca şifrelenmiş bildirimler. No comment provided by engineer. + + Easier to invite your friends 👋 + No comment provided by engineer. + Edit Düzenle @@ -3185,7 +3315,7 @@ chat item action Enable Etkinleştir - No comment provided by engineer. + alert button Enable (keep overrides) @@ -3221,6 +3351,10 @@ chat item action Kamera erişimini etkinleştir No comment provided by engineer. + + Enable chats with admins? + alert title + Enable disappearing messages by default. Varsayılan olarak kaybolan mesajları etkinleştirin. @@ -3241,6 +3375,10 @@ chat item action Anlık bildirimler etkinleştirilsin mi? No comment provided by engineer. + + Enable link previews? + alert title + Enable lock Kilidi etkinleştir @@ -3417,7 +3555,7 @@ chat item action Error Hata - No comment provided by engineer. + conn error description Error aborting address change @@ -3760,6 +3898,10 @@ chat item action Görüldü ayarlanırken hata oluştu! No comment provided by engineer. + + Error sharing channel + alert title + Error starting chat Sohbet başlatılırken hata oluştu @@ -4123,6 +4265,10 @@ server test error Tüm moderatörler için No comment provided by engineer. + + For anyone to reach you + No comment provided by engineer. + For chat profile %@: Sohbet profili için %@: @@ -4335,7 +4481,7 @@ Hata: %2$@ Group link Grup bağlantısı - No comment provided by engineer. + chat link info line Group links @@ -4447,6 +4593,10 @@ Hata: %2$@ Yeni üyelere geçmiş gönderilmedi. No comment provided by engineer. + + History is not sent to new subscribers. + No comment provided by engineer. + How SimpleX works SimpleX nasıl çalışır @@ -4692,9 +4842,9 @@ Daha fazla iyileştirme yakında geliyor! Başlangıç rolü No comment provided by engineer. - - Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat) - [Terminal için SimpleX Chat]i indir(https://github.com/simplex-chat/simplex-chat) + + Install SimpleX Chat for terminal + Terminal için SimpleX Chat'i indir No comment provided by engineer. @@ -4752,7 +4902,7 @@ Daha fazla iyileştirme yakında geliyor! Invalid connection link Geçersiz bağlanma bağlantısı - No comment provided by engineer. + conn error description Invalid display name! @@ -4816,6 +4966,10 @@ Daha fazla iyileştirme yakında geliyor! Üyeleri davet et No comment provided by engineer. + + Invite someone privately + No comment provided by engineer. + Invite to chat Sohbete davet et @@ -5016,6 +5170,10 @@ Bu senin grup için bağlantın %@! Mobil ağlarda daha az trafik. No comment provided by engineer. + + Let someone connect to you + No comment provided by engineer. + Let's talk in SimpleX Chat Hadi SimpleX Chat'te konuşalım @@ -5036,6 +5194,10 @@ Bu senin grup için bağlantın %@! Telefon ve bilgisayar uygulamalarını bağla! 🔗 No comment provided by engineer. + + Link signature verified. + owner verification + Linked desktop options Bağlanmış bilgisayar ayarları @@ -5219,6 +5381,10 @@ Bu senin grup için bağlantın %@! Grup üyeleri mesaj tepkileri ekleyebilir. No comment provided by engineer. + + Members can chat with admins. + No comment provided by engineer. + Members can irreversibly delete sent messages. (24 hours) Grup üyeleri, gönderilen mesajları kalıcı olarak silebilir. (24 saat içinde) @@ -5383,6 +5549,14 @@ Bu senin grup için bağlantın %@! %@ den gelen mesajlar gösterilecektir! No comment provided by engineer. + + Messages in this channel are **not end-to-end encrypted**. Chat relays can see these messages. + No comment provided by engineer. + + + Messages in this channel are not end-to-end encrypted. Chat relays can see these messages. + E2EE info chat item + Messages in this chat will never be deleted. Bu sohbetteki mesajlar asla silinmeyecek. @@ -5553,6 +5727,10 @@ Bu senin grup için bağlantın %@! Ağ merkeziyetsizliği No comment provided by engineer. + + Network error + conn error description + Network issues - message expired after many attempts to send it. Ağ sorunları - birçok gönderme denemesinden sonra mesajın süresi doldu. @@ -5583,6 +5761,10 @@ Bu senin grup için bağlantın %@! Yeni token status text + + New 1-time link + No comment provided by engineer. + New Passcode Yeni şifre @@ -5682,6 +5864,10 @@ Bu senin grup için bağlantın %@! Hayır No comment provided by engineer. + + No active relays + No comment provided by engineer. + No app password Uygulama şifresi yok @@ -5845,6 +6031,10 @@ Bu senin grup için bağlantın %@! Herhangi bir kullanıcı tanımlayıcısı yok. No comment provided by engineer. + + Non-profit governance + No comment provided by engineer. + Not all relays connected alert title @@ -5906,7 +6096,7 @@ Bu senin grup için bağlantın %@! OK TAMAM - No comment provided by engineer. + alert button Off @@ -5930,6 +6120,10 @@ new chat action Tek zamanlı bağlantı daveti No comment provided by engineer. + + One-time link + chat link info line + Onion hosts will be **required** for connection. Requires compatible VPN. @@ -5949,6 +6143,10 @@ VPN'nin etkinleştirilmesi gerekir. Onion ana bilgisayarları kullanılmayacaktır. No comment provided by engineer. + + Only channel owners can change channel preferences. + No comment provided by engineer. + Only chat owners can change preferences. Yalnızca sohbet sahipleri tercihleri değiştirebilir. @@ -6052,7 +6250,8 @@ VPN'nin etkinleştirilmesi gerekir. Open - alert action + alert action +alert button Open Settings @@ -6088,6 +6287,10 @@ VPN'nin etkinleştirilmesi gerekir. Açık koşullar No comment provided by engineer. + + Open external link? + alert title + Open full link Tam linki aç @@ -6177,6 +6380,10 @@ VPN'nin etkinleştirilmesi gerekir. Veya bu dosya bağlantısını güvenli bir şekilde paylaşın No comment provided by engineer. + + Or show QR in person or via video call. + No comment provided by engineer. + Or show this code Veya bu kodu göster @@ -6187,6 +6394,10 @@ VPN'nin etkinleştirilmesi gerekir. Veya özel olarak paylaşmak için No comment provided by engineer. + + Or use this QR - print or show online. + No comment provided by engineer. + Organize chats into lists Sohbetleri listelere ayır @@ -6212,6 +6423,10 @@ VPN'nin etkinleştirilmesi gerekir. Owners No comment provided by engineer. + + Ownership: you can run your own relays. + No comment provided by engineer. + PING count PING sayısı @@ -6267,6 +6482,10 @@ VPN'nin etkinleştirilmesi gerekir. Fotoğraf yapıştır No comment provided by engineer. + + Paste link / Scan + No comment provided by engineer. + Paste link to connect! Bağlanmak için bağlantıyı yapıştır! @@ -6469,6 +6688,10 @@ Hata: %@ 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. @@ -6543,9 +6766,8 @@ Hata: %@ Profil teması No comment provided by engineer. - - Profile update will be sent to your contacts. - Profil güncellemesi kişilerinize gönderilecektir. + + Profile update will be sent to your SimpleX contacts. alert message @@ -6553,6 +6775,10 @@ Hata: %@ Sesli/görüntülü aramaları yasakla. No comment provided by engineer. + + Prohibit chats with admins. + No comment provided by engineer. + Prohibit irreversible message deletion. Geri dönüşsüz mesaj silme işlemini yasakla. @@ -6583,6 +6809,10 @@ Hata: %@ Üyelere doğrudan mesaj göndermeyi yasakla. No comment provided by engineer. + + Prohibit sending direct messages to subscribers. + No comment provided by engineer. + Prohibit sending disappearing messages. Kaybolan mesajların gönderimini yasakla. @@ -6650,6 +6880,10 @@ Enable in *Network & servers* settings. Proxy şifre gerektirir No comment provided by engineer. + + Public channels - speak freely 🚀 + No comment provided by engineer. + Push notifications Anında bildirimler @@ -6690,24 +6924,14 @@ Enable in *Network & servers* settings. Dahasını oku No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). - [Kullanıcı Rehberi]nde daha fazlasını okuyun(https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). + + Read more in User Guide. + Kullanıcı Rehberinde daha fazlasını okuyun. No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - [Kullanıcı Rehberi]nde daha fazlasını okuyun(https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - No comment provided by engineer. - - - Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - [Kullanıcı Rehberi]nde daha fazlasını okuyun(https://simplex.chat/docs/guide/readme.html#connect-to-friends). - No comment provided by engineer. - - - Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme). - [GitHub deposu]nda daha fazlasını okuyun(https://github.com/simplex-chat/simplex-chat#readme). + + Read more in our GitHub repository. + GitHub deposunda daha fazlasını okuyun. No comment provided by engineer. @@ -6883,6 +7107,10 @@ swipe action Relay link No comment provided by engineer. + + Relay results: + alert message + Relay server is only used if necessary. Another party can observe your IP address. Yönlendirici sunucusu yalnızca gerekli olduğunda kullanılır. Başka bir taraf IP adresinizi gözlemleyebilir. @@ -6897,6 +7125,10 @@ swipe action Relay test failed! No comment provided by engineer. + + Reliability: many relays per channel. + No comment provided by engineer. + Remove Sil @@ -7179,6 +7411,10 @@ swipe action SOCKS vekili No comment provided by engineer. + + Safe web links + No comment provided by engineer. + Safely receive files Dosyaları güvenle alın @@ -7224,6 +7460,10 @@ chat item action Kaydet ve grup üyelerine bildir No comment provided by engineer. + + Save and notify subscribers + No comment provided by engineer. + Save and reconnect Kayıt et ve yeniden bağlan @@ -7417,6 +7657,10 @@ chat item action Güvenlik kodu No comment provided by engineer. + + Security: owners hold channel keys. + No comment provided by engineer. + Select Seç @@ -7547,6 +7791,10 @@ chat item action Mesaj olmadan istek gönder No comment provided by engineer. + + Send the link via any messenger - it's secure. Ask to paste into SimpleX. + No comment provided by engineer. + Send them from gallery or custom keyboards. Bunları galeriden veya özel klavyelerden gönder. @@ -7557,6 +7805,10 @@ chat item action Yeni üyelere 100 adete kadar son mesajları gönderin. No comment provided by engineer. + + Send up to 100 last messages to new subscribers. + No comment provided by engineer. + Send your private feedback to groups. Özel geri bildiriminizi gruplara gönderin. @@ -7572,6 +7824,10 @@ chat item action Gönderici bağlantı isteğini silmiş olabilir. No comment provided by engineer. + + Sending a link preview may reveal your IP address to the website. You can change this in Privacy settings later. + alert message + Sending delivery receipts will be enabled for all contacts in all visible chat profiles. Görüldü bilgisi, tüm görünür sohbet profillerindeki tüm kişiler için etkinleştirilecektir. @@ -7867,11 +8123,14 @@ chat item action Adresinizi herkese açık olarak paylaşın No comment provided by engineer. - - Share address with contacts? - Kişilerle adres paylaşılsın mı? + + Share address with SimpleX contacts? alert title + + Share channel + No comment provided by engineer. + Share from other apps. Diğer uygulamalardan paylaşın. @@ -7911,9 +8170,12 @@ chat item action SimpleX ile paylaş No comment provided by engineer. - - Share with contacts - Kişilerle paylaş + + Share via chat + No comment provided by engineer. + + + Share with SimpleX contacts No comment provided by engineer. @@ -8163,6 +8425,11 @@ report reason Kare,daire, veya aralarında herhangi bir şey. No comment provided by engineer. + + Star on GitHub + Bize GitHub'da yıldız verin + No comment provided by engineer. + Start chat Sohbeti başlat @@ -8267,6 +8534,10 @@ report reason Subscriber No comment provided by engineer. + + Subscriber reports + chat feature + Subscriber will be removed from channel - this cannot be undone! alert message @@ -8275,6 +8546,42 @@ report reason Subscribers No comment provided by engineer. + + Subscribers can add message reactions. + No comment provided by engineer. + + + Subscribers can chat with admins. + No comment provided by engineer. + + + Subscribers can irreversibly delete sent messages. (24 hours) + No comment provided by engineer. + + + Subscribers can report messsages to moderators. + No comment provided by engineer. + + + Subscribers can send SimpleX links. + No comment provided by engineer. + + + Subscribers can send direct messages. + No comment provided by engineer. + + + Subscribers can send disappearing messages. + No comment provided by engineer. + + + Subscribers can send files and media. + No comment provided by engineer. + + + Subscribers can send voice messages. + No comment provided by engineer. + Subscribers use relay link to connect to the channel. Relay address was used to set up this relay for the channel. @@ -8360,6 +8667,10 @@ Relay address was used to set up this relay for the channel. Fotoğraf çek No comment provided by engineer. + + Talk to someone + No comment provided by engineer. + Tap Connect to chat Sohbet etmek için Bağlan'a dokunun @@ -8375,11 +8686,6 @@ Relay address was used to set up this relay for the channel. Botu kullanmak için Bağlan tuşuna bas No comment provided by engineer. - - Tap Create SimpleX address in the menu to create it later. - Daha sonra oluşturmak için menüden BasitX adresi oluştur'a dokunun. - No comment provided by engineer. - Tap Join channel No comment provided by engineer. @@ -8414,6 +8720,10 @@ Relay address was used to set up this relay for the channel. Gizli katılmak için tıkla No comment provided by engineer. + + Tap to open + No comment provided by engineer. + Tap to paste link Bağlantıyı yapıştırmak için tıkla @@ -8515,6 +8825,10 @@ Bazı hatalar nedeniyle veya bağlantı tehlikeye girdiğinde meydana gelebilir. Taradığınız kod bir SimpleX bağlantı QR kodu değildir. No comment provided by engineer. + + The connection reached the limit of undelivered messages + conn error description + The connection reached the limit of undelivered messages, your contact may be offline. Bağlantı, teslim edilmemiş mesajlar limitine ulaştı, kişiniz çevrimdışı olabilir. @@ -8748,6 +9062,10 @@ Bazı hatalar nedeniyle veya bağlantı tehlikeye girdiğinde meydana gelebilir. İstenmeyen mesajları gizlemek için. No comment provided by engineer. + + To make SimpleX Network last. + No comment provided by engineer. + To make a new connection Yeni bir bağlantı oluşturmak için @@ -9023,13 +9341,17 @@ Bağlanmak için lütfen kişinizden başka bir bağlantı oluşturmasını iste Unsupported connection link Desteklenmeyen bağlantı bağlantısı - No comment provided by engineer. + conn error description Up to 100 last messages are sent to new members. Yeni üyelere 100e kadar en son mesajlar gönderildi. No comment provided by engineer. + + Up to 100 last messages are sent to new subscribers. + No comment provided by engineer. + Update Güncelle @@ -9243,6 +9565,10 @@ Bağlanmak için lütfen kişinizden başka bir bağlantı oluşturmasını iste Uygulamayı tek elle kullan. No comment provided by engineer. + + Use this address in your social media profile, website, or email signature. + No comment provided by engineer. + Use web port Web portunu kullan @@ -9394,6 +9720,10 @@ Bağlanmak için lütfen kişinizden başka bir bağlantı oluşturmasını iste Wait response relay test step + + Waiting for channel owner to add relays. + No comment provided by engineer. + Waiting for desktop... Bilgisayar için bekleniyor... @@ -9434,6 +9764,10 @@ Bağlanmak için lütfen kişinizden başka bir bağlantı oluşturmasını iste Uyarı: Bazı verileri kaybedebilirsin! No comment provided by engineer. + + We made connecting simpler for new users. + No comment provided by engineer. + WebRTC ICE servers WebRTC ICE sunucuları @@ -10022,6 +10356,10 @@ Relays can access channel messages. Profiliniz değiştirildi. Kaydederseniz, güncellenmiş profil tüm kişilerinize gönderilecektir. alert message + + Your public address + No comment provided by engineer. + Your random profile Rasgele profiliniz @@ -10050,21 +10388,11 @@ Relays can access channel messages. Ayarlarınız No comment provided by engineer. - - [Contribute](https://github.com/simplex-chat/simplex-chat#contribute) - [Katkıda bulun](https://github.com/simplex-chat/simplex-chat#contribute) - No comment provided by engineer. - [Send us email](mailto:chat@simplex.chat) [Bize e-posta gönder](mailto:chat@simplex.chat) No comment provided by engineer. - - [Star on GitHub](https://github.com/simplex-chat/simplex-chat) - [Bize GitHub'da yıldız verin](https://github.com/simplex-chat/simplex-chat) - No comment provided by engineer. - \_italic_ \_italik_ @@ -10219,6 +10547,10 @@ marked deleted chat item preview text aranıyor… call status + + can't broadcast + No comment provided by engineer. + can't send messages mesaj gönderilemiyor @@ -10873,6 +11205,10 @@ time to disappear removed (%d attempts) receive error chat item + + removed by operator + No comment provided by engineer. + removed contact address kişi adresi silindi @@ -11194,6 +11530,10 @@ son alınan msj: %2$@ \~çizik~ No comment provided by engineer. + + ⚠️ Signature verification failed: %@. + owner verification + 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 839b4e2652..1b71eecb96 100644 --- a/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff +++ b/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff @@ -185,9 +185,20 @@ %d місяців time interval - - %d relays - channel relay bar + + %d relays failed + channel relay bar +channel subscriber relay bar + + + %d relays not active + channel relay bar +channel subscriber relay bar + + + %d relays removed + channel relay bar +channel subscriber relay bar %d sec @@ -222,10 +233,18 @@ channel creation progress channel relay bar progress + + %1$d/%2$d relays active, %3$d errors + channel relay bar + %1$d/%2$d relays active, %3$d failed channel creation progress with errors -channel relay bar progress with errors +channel relay bar + + + %1$d/%2$d relays active, %3$d removed + channel relay bar %1$d/%2$d relays connected @@ -233,7 +252,15 @@ channel relay bar progress with errors %1$d/%2$d relays connected, %3$d errors - channel subscriber relay bar progress with errors + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d failed + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d removed + channel subscriber relay bar %lld @@ -349,11 +376,19 @@ channel relay bar progress with errors %u повідомлень пропущено. No comment provided by engineer. + + (from owner) + chat link info line + (new) (новий) No comment provided by engineer. + + (signed) + chat link info line + (this device v%@) (цей пристрій v%@) @@ -446,6 +481,12 @@ channel relay bar progress with errors - і багато іншого! No comment provided by engineer. + + - opt-in to send link previews. +- prevent hyperlink phishing. +- remove link tracking. + No comment provided by engineer. + - optionally notify deleted contacts. - profile names with spaces. @@ -544,6 +585,10 @@ time interval Ще кілька речей No comment provided by engineer. + + A link for one person to connect + No comment provided by engineer. + A new contact Новий контакт @@ -670,9 +715,8 @@ swipe action Активні з'єднання No comment provided by engineer. - - Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts. - Додайте адресу до свого профілю, щоб ваші контакти могли поділитися нею з іншими людьми. Повідомлення про оновлення профілю буде надіслано вашим контактам. + + Add address to your profile, so that your SimpleX contacts can share it with other people. Profile update will be sent to your SimpleX contacts. No comment provided by engineer. @@ -740,6 +784,10 @@ swipe action Додано сервери повідомлень No comment provided by engineer. + + Adding relays will be supported later. + No comment provided by engineer. + Additional accent Додатковий акцент @@ -859,6 +907,14 @@ swipe action Всі профілі profile dropdown + + All relays failed + No comment provided by engineer. + + + All relays removed + No comment provided by engineer. + All reports will be archived for you. Всі скарги будуть заархівовані для вас. @@ -918,6 +974,10 @@ swipe action Дозволяйте безповоротне видалення повідомлень, тільки якщо контакт дозволяє вам це зробити. (24 години) No comment provided by engineer. + + Allow members to chat with admins. + No comment provided by engineer. + Allow message reactions only if your contact allows them. Дозволяйте реакції на повідомлення, тільки якщо ваш контакт дозволяє їх. @@ -933,6 +993,10 @@ swipe action Дозволяє надсилати прямі повідомлення користувачам. No comment provided by engineer. + + Allow sending direct messages to subscribers. + No comment provided by engineer. + Allow sending disappearing messages. Дозволити надсилання зникаючих повідомлень. @@ -943,6 +1007,10 @@ swipe action Дозволити спільний доступ No comment provided by engineer. + + Allow subscribers to chat with admins. + No comment provided by engineer. + Allow to irreversibly delete sent messages. (24 hours) Дозволяє безповоротно видаляти надіслані повідомлення. (24 години) @@ -1415,7 +1483,7 @@ swipe action Business address Адреса підприємства - No comment provided by engineer. + chat link info line Business chats @@ -1606,12 +1674,21 @@ set passcode view Channel full name (optional) No comment provided by engineer. + + Channel has no active relays. Please try to join later. + alert message +alert subtitle + Channel image No comment provided by engineer. Channel link + chat link info line + + + Channel preferences No comment provided by engineer. @@ -1626,6 +1703,10 @@ set passcode view Channel profile was changed. If you save it, the updated profile will be sent to channel subscribers. alert message + + Channel temporarily unavailable + alert title + Channel will be deleted for all subscribers - this cannot be undone! No comment provided by engineer. @@ -1638,6 +1719,10 @@ set passcode view Channel will start working with %1$d of %2$d relays. Proceed? alert message + + Channels + No comment provided by engineer. + Chat Чат @@ -1757,7 +1842,8 @@ set passcode view Chat with admins Чат з адміністраторами - chat toolbar + chat feature +chat toolbar Chat with member @@ -1774,11 +1860,23 @@ set passcode view Чати No comment provided by engineer. + + Chats with admins are prohibited. + No comment provided by engineer. + + + Chats with admins in public channels have no E2E encryption - use only with trusted chat relays. + alert message + Chats with members Чати з учасниками No comment provided by engineer. + + Chats with members are disabled + No comment provided by engineer. + Check messages every 20 min. Перевіряйте повідомлення кожні 20 хв. @@ -2056,6 +2154,10 @@ This is your own one-time link! Підключіться за посиланням new chat sheet title + + Connect via link or QR code + No comment provided by engineer. + Connect via one-time link Під'єднатися за одноразовим посиланням @@ -2066,6 +2168,10 @@ This is your own one-time link! Підключитися до %@ new chat action + + Connect with someone + No comment provided by engineer. + Connected Підключено @@ -2134,7 +2240,7 @@ This is your own one-time link! Connection error (AUTH) Помилка підключення (AUTH) - No comment provided by engineer. + conn error description Connection failed @@ -2192,6 +2298,10 @@ This is your own one-time link! З'єднання No comment provided by engineer. + + Contact address + chat link info line + Contact allows Контакт дозволяє @@ -2261,6 +2371,11 @@ This is your own one-time link! Продовжуйте No comment provided by engineer. + + Contribute + Внесок + No comment provided by engineer. + Conversation deleted! Розмова видалена! @@ -2291,11 +2406,6 @@ This is your own one-time link! Виправити ім'я на %@? alert message - - Create - Створити - No comment provided by engineer. - Create 1-time link Створити одноразове посилання @@ -2369,6 +2479,10 @@ This is your own one-time link! Створіть свій профіль No comment provided by engineer. + + Create your public address + No comment provided by engineer. + Created Створено @@ -2951,6 +3065,14 @@ alert button У цій групі заборонені прямі повідомлення між учасниками. No comment provided by engineer. + + Direct messages between subscribers are prohibited. + No comment provided by engineer. + + + Disable + alert button + Disable (keep overrides) Вимкнути (зберегти перевизначення) @@ -3056,6 +3178,10 @@ alert button Не надсилайте історію новим користувачам. No comment provided by engineer. + + Do not send history to new subscribers. + No comment provided by engineer. + Do not use credentials with proxy. Не використовуйте облікові дані з проксі. @@ -3157,6 +3283,10 @@ chat item action Зашифровані сповіщення E2E. No comment provided by engineer. + + Easier to invite your friends 👋 + No comment provided by engineer. + Edit Редагувати @@ -3179,7 +3309,7 @@ chat item action Enable Увімкнути - No comment provided by engineer. + alert button Enable (keep overrides) @@ -3215,6 +3345,10 @@ chat item action Увімкніть доступ до камери No comment provided by engineer. + + Enable chats with admins? + alert title + Enable disappearing messages by default. Увімкнути зникаючі повідомлення за замовчуванням. @@ -3235,6 +3369,10 @@ chat item action Увімкнути миттєві сповіщення? No comment provided by engineer. + + Enable link previews? + alert title + Enable lock Увімкнути блокування @@ -3411,7 +3549,7 @@ chat item action Error Помилка - No comment provided by engineer. + conn error description Error aborting address change @@ -3753,6 +3891,10 @@ chat item action Помилка встановлення підтвердження доставлення! No comment provided by engineer. + + Error sharing channel + alert title + Error starting chat Помилка запуску чату @@ -4115,6 +4257,10 @@ server test error Для всіх модераторів No comment provided by engineer. + + For anyone to reach you + No comment provided by engineer. + For chat profile %@: Для профілю чату %@: @@ -4327,7 +4473,7 @@ Error: %2$@ Group link Посилання на групу - No comment provided by engineer. + chat link info line Group links @@ -4439,6 +4585,10 @@ Error: %2$@ Історія не надсилається новим учасникам. No comment provided by engineer. + + History is not sent to new subscribers. + No comment provided by engineer. + How SimpleX works Як працює SimpleX @@ -4684,9 +4834,9 @@ More improvements are coming soon! Початкова роль No comment provided by engineer. - - Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat) - Встановіть [SimpleX Chat для терміналу](https://github.com/simplex-chat/simplex-chat) + + Install SimpleX Chat for terminal + Встановіть SimpleX Chat для терміналу No comment provided by engineer. @@ -4744,7 +4894,7 @@ More improvements are coming soon! Invalid connection link Неправильне посилання для підключення - No comment provided by engineer. + conn error description Invalid display name! @@ -4808,6 +4958,10 @@ More improvements are coming soon! Запросити учасників No comment provided by engineer. + + Invite someone privately + No comment provided by engineer. + Invite to chat Запросити в чат @@ -5008,6 +5162,10 @@ This is your link for group %@! Менше трафіку в мобільних мережах. No comment provided by engineer. + + Let someone connect to you + No comment provided by engineer. + Let's talk in SimpleX Chat Поговоримо в чаті SimpleX @@ -5028,6 +5186,10 @@ This is your link for group %@! Зв'яжіть мобільні та десктопні додатки! 🔗 No comment provided by engineer. + + Link signature verified. + owner verification + Linked desktop options Параметри пов'язаного робочого столу @@ -5209,6 +5371,10 @@ This is your link for group %@! Учасники групи можуть додавати реакції на повідомлення. No comment provided by engineer. + + Members can chat with admins. + No comment provided by engineer. + Members can irreversibly delete sent messages. (24 hours) Учасники групи можуть безповоротно видаляти надіслані повідомлення. (24 години) @@ -5373,6 +5539,14 @@ This is your link for group %@! Повідомлення від %@ будуть показані! No comment provided by engineer. + + Messages in this channel are **not end-to-end encrypted**. Chat relays can see these messages. + No comment provided by engineer. + + + Messages in this channel are not end-to-end encrypted. Chat relays can see these messages. + E2EE info chat item + Messages in this chat will never be deleted. Повідомлення в цьому чаті ніколи не будуть видалені. @@ -5543,6 +5717,10 @@ This is your link for group %@! Децентралізація мережі No comment provided by engineer. + + Network error + conn error description + Network issues - message expired after many attempts to send it. Проблеми з мережею - термін дії повідомлення закінчився після багатьох спроб надіслати його. @@ -5573,6 +5751,10 @@ This is your link for group %@! Новий token status text + + New 1-time link + No comment provided by engineer. + New Passcode Новий пароль @@ -5672,6 +5854,10 @@ This is your link for group %@! Ні No comment provided by engineer. + + No active relays + No comment provided by engineer. + No app password Немає пароля програми @@ -5835,6 +6021,10 @@ This is your link for group %@! Ніяких ідентифікаторів користувачів. No comment provided by engineer. + + Non-profit governance + No comment provided by engineer. + Not all relays connected alert title @@ -5896,7 +6086,7 @@ This is your link for group %@! OK ОК - No comment provided by engineer. + alert button Off @@ -5920,6 +6110,10 @@ new chat action Посилання на одноразове запрошення No comment provided by engineer. + + One-time link + chat link info line + Onion hosts will be **required** for connection. Requires compatible VPN. @@ -5939,6 +6133,10 @@ Requires compatible VPN. Onion хости не будуть використовуватися. No comment provided by engineer. + + Only channel owners can change channel preferences. + No comment provided by engineer. + Only chat owners can change preferences. Лише власники чату можуть змінювати налаштування. @@ -6040,7 +6238,8 @@ Requires compatible VPN. Open Відкрито - alert action + alert action +alert button Open Settings @@ -6075,6 +6274,10 @@ Requires compatible VPN. Відкриті умови No comment provided by engineer. + + Open external link? + alert title + Open full link alert action @@ -6162,6 +6365,10 @@ Requires compatible VPN. Або безпечно поділіться цим посиланням на файл No comment provided by engineer. + + Or show QR in person or via video call. + No comment provided by engineer. + Or show this code Або покажіть цей код @@ -6172,6 +6379,10 @@ Requires compatible VPN. Або поділитися приватно No comment provided by engineer. + + Or use this QR - print or show online. + No comment provided by engineer. + Organize chats into lists Організовуйте чати в списки @@ -6197,6 +6408,10 @@ Requires compatible VPN. Owners No comment provided by engineer. + + Ownership: you can run your own relays. + No comment provided by engineer. + PING count Кількість PING @@ -6252,6 +6467,10 @@ Requires compatible VPN. Вставити зображення No comment provided by engineer. + + Paste link / Scan + No comment provided by engineer. + Paste link to connect! Вставте посилання для підключення! @@ -6454,6 +6673,10 @@ Error: %@ Конфіденційність переглянута 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. Приватні чати, групи та ваші контакти недоступні для операторів сервера. @@ -6528,9 +6751,8 @@ Error: %@ Тема профілю No comment provided by engineer. - - Profile update will be sent to your contacts. - Оновлення профілю буде надіслано вашим контактам. + + Profile update will be sent to your SimpleX contacts. alert message @@ -6538,6 +6760,10 @@ Error: %@ Заборонити аудіо/відеодзвінки. No comment provided by engineer. + + Prohibit chats with admins. + No comment provided by engineer. + Prohibit irreversible message deletion. Заборонити незворотне видалення повідомлень. @@ -6568,6 +6794,10 @@ Error: %@ Заборонити надсилати прямі повідомлення учасникам. No comment provided by engineer. + + Prohibit sending direct messages to subscribers. + No comment provided by engineer. + Prohibit sending disappearing messages. Заборонити надсилання зникаючих повідомлень. @@ -6635,6 +6865,10 @@ Enable in *Network & servers* settings. Проксі вимагає пароль No comment provided by engineer. + + Public channels - speak freely 🚀 + No comment provided by engineer. + Push notifications Push-сповіщення @@ -6675,24 +6909,14 @@ Enable in *Network & servers* settings. Читати далі No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). - Читайте більше в [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). + + Read more in User Guide. + Читайте більше в User Guide. No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - Читайте більше в [Посібнику користувача](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - No comment provided by engineer. - - - Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - Читайте більше в [Посібнику користувача](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - No comment provided by engineer. - - - Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme). - Читайте більше в нашому [GitHub репозиторії](https://github.com/simplex-chat/simplex-chat#readme). + + Read more in our GitHub repository. + Читайте більше в нашому GitHub репозиторії. No comment provided by engineer. @@ -6868,6 +7092,10 @@ swipe action Relay link No comment provided by engineer. + + Relay results: + alert message + Relay server is only used if necessary. Another party can observe your IP address. Релейний сервер використовується тільки в разі потреби. Інша сторона може бачити вашу IP-адресу. @@ -6882,6 +7110,10 @@ swipe action Relay test failed! No comment provided by engineer. + + Reliability: many relays per channel. + No comment provided by engineer. + Remove Видалити @@ -7163,6 +7395,10 @@ swipe action Проксі SOCKS No comment provided by engineer. + + Safe web links + No comment provided by engineer. + Safely receive files Безпечне отримання файлів @@ -7208,6 +7444,10 @@ chat item action Зберегти та повідомити учасників групи No comment provided by engineer. + + Save and notify subscribers + No comment provided by engineer. + Save and reconnect Збережіть і підключіться знову @@ -7401,6 +7641,10 @@ chat item action Код безпеки No comment provided by engineer. + + Security: owners hold channel keys. + No comment provided by engineer. + Select Виберіть @@ -7531,6 +7775,10 @@ chat item action Надіслати запит без повідомлення No comment provided by engineer. + + Send the link via any messenger - it's secure. Ask to paste into SimpleX. + No comment provided by engineer. + Send them from gallery or custom keyboards. Надсилайте їх із галереї чи власних клавіатур. @@ -7541,6 +7789,10 @@ chat item action Надішліть до 100 останніх повідомлень новим користувачам. No comment provided by engineer. + + Send up to 100 last messages to new subscribers. + No comment provided by engineer. + Send your private feedback to groups. Надсилайте свої приватні відгуки до груп. @@ -7556,6 +7808,10 @@ chat item action Можливо, відправник видалив запит на підключення. No comment provided by engineer. + + Sending a link preview may reveal your IP address to the website. You can change this in Privacy settings later. + alert message + Sending delivery receipts will be enabled for all contacts in all visible chat profiles. Надсилання підтверджень доставки буде ввімкнено для всіх контактів у всіх видимих профілях чату. @@ -7851,11 +8107,14 @@ chat item action Поділіться адресою публічно No comment provided by engineer. - - Share address with contacts? - Поділіться адресою з контактами? + + Share address with SimpleX contacts? alert title + + Share channel + No comment provided by engineer. + Share from other apps. Діліться з інших програм. @@ -7895,9 +8154,12 @@ chat item action Поділіться з SimpleX No comment provided by engineer. - - Share with contacts - Поділіться з контактами + + Share via chat + No comment provided by engineer. + + + Share with SimpleX contacts No comment provided by engineer. @@ -8147,6 +8409,11 @@ report reason Квадрат, коло або щось середнє між ними. No comment provided by engineer. + + Star on GitHub + Зірка на GitHub + No comment provided by engineer. + Start chat Почати чат @@ -8251,6 +8518,10 @@ report reason Subscriber No comment provided by engineer. + + Subscriber reports + chat feature + Subscriber will be removed from channel - this cannot be undone! alert message @@ -8259,6 +8530,42 @@ report reason Subscribers No comment provided by engineer. + + Subscribers can add message reactions. + No comment provided by engineer. + + + Subscribers can chat with admins. + No comment provided by engineer. + + + Subscribers can irreversibly delete sent messages. (24 hours) + No comment provided by engineer. + + + Subscribers can report messsages to moderators. + No comment provided by engineer. + + + Subscribers can send SimpleX links. + No comment provided by engineer. + + + Subscribers can send direct messages. + No comment provided by engineer. + + + Subscribers can send disappearing messages. + No comment provided by engineer. + + + Subscribers can send files and media. + No comment provided by engineer. + + + Subscribers can send voice messages. + No comment provided by engineer. + Subscribers use relay link to connect to the channel. Relay address was used to set up this relay for the channel. @@ -8344,6 +8651,10 @@ Relay address was used to set up this relay for the channel. Сфотографуйте No comment provided by engineer. + + Talk to someone + No comment provided by engineer. + Tap Connect to chat Натисніть Підключитися до чату @@ -8358,11 +8669,6 @@ Relay address was used to set up this relay for the channel. Tap Connect to use bot No comment provided by engineer. - - Tap Create SimpleX address in the menu to create it later. - Натисніть «Створити адресу SimpleX» у меню, щоб створити її пізніше. - No comment provided by engineer. - Tap Join channel No comment provided by engineer. @@ -8397,6 +8703,10 @@ Relay address was used to set up this relay for the channel. Натисніть, щоб приєднатися інкогніто No comment provided by engineer. + + Tap to open + No comment provided by engineer. + Tap to paste link Натисніть, щоб вставити посилання @@ -8498,6 +8808,10 @@ It can happen because of some bug or when the connection is compromised.Відсканований вами код не є QR-кодом посилання SimpleX. No comment provided by engineer. + + The connection reached the limit of undelivered messages + conn error description + The connection reached the limit of undelivered messages, your contact may be offline. З'єднання досягло ліміту недоставлених повідомлень, ваш контакт може бути офлайн. @@ -8730,6 +9044,10 @@ It can happen because of some bug or when the connection is compromised.Приховати небажані повідомлення. No comment provided by engineer. + + To make SimpleX Network last. + No comment provided by engineer. + To make a new connection Щоб створити нове з'єднання @@ -9004,13 +9322,17 @@ To connect, please ask your contact to create another connection link and check Unsupported connection link Несумісне посилання для підключення - No comment provided by engineer. + conn error description Up to 100 last messages are sent to new members. Новим користувачам надсилається до 100 останніх повідомлень. No comment provided by engineer. + + Up to 100 last messages are sent to new subscribers. + No comment provided by engineer. + Update Оновлення @@ -9224,6 +9546,10 @@ To connect, please ask your contact to create another connection link and check Використовуйте додаток однією рукою. No comment provided by engineer. + + Use this address in your social media profile, website, or email signature. + No comment provided by engineer. + Use web port Використовувати веб-порт @@ -9375,6 +9701,10 @@ To connect, please ask your contact to create another connection link and check Wait response relay test step + + Waiting for channel owner to add relays. + No comment provided by engineer. + Waiting for desktop... Чекаємо на десктопну версію... @@ -9415,6 +9745,10 @@ To connect, please ask your contact to create another connection link and check Попередження: ви можете втратити деякі дані! No comment provided by engineer. + + We made connecting simpler for new users. + No comment provided by engineer. + WebRTC ICE servers Сервери WebRTC ICE @@ -10003,6 +10337,10 @@ Relays can access channel messages. Ваш профіль було змінено. Якщо ви збережете його, оновлений профіль буде надіслано всім вашим контактам. alert message + + Your public address + No comment provided by engineer. + Your random profile Ваш випадковий профіль @@ -10031,21 +10369,11 @@ Relays can access channel messages. Ваші налаштування No comment provided by engineer. - - [Contribute](https://github.com/simplex-chat/simplex-chat#contribute) - [Внесок](https://github.com/simplex-chat/simplex-chat#contribute) - No comment provided by engineer. - [Send us email](mailto:chat@simplex.chat) [Напишіть нам електронною поштою](mailto:chat@simplex.chat) No comment provided by engineer. - - [Star on GitHub](https://github.com/simplex-chat/simplex-chat) - [Зірка на GitHub](https://github.com/simplex-chat/simplex-chat) - No comment provided by engineer. - \_italic_ \_курсив_ @@ -10200,6 +10528,10 @@ marked deleted chat item preview text дзвоніть… call status + + can't broadcast + No comment provided by engineer. + can't send messages не можна надсилати @@ -10854,6 +11186,10 @@ time to disappear removed (%d attempts) receive error chat item + + removed by operator + No comment provided by engineer. + removed contact address видалено контактну адресу @@ -11173,6 +11509,10 @@ last received msg: %2$@ \~закреслити~ No comment provided by engineer. + + ⚠️ Signature verification failed: %@. + owner verification + 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 d981147cfe..2d3342b15b 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 @@ -185,9 +185,20 @@ %d 月 time interval - - %d relays - channel relay bar + + %d relays failed + channel relay bar +channel subscriber relay bar + + + %d relays not active + channel relay bar +channel subscriber relay bar + + + %d relays removed + channel relay bar +channel subscriber relay bar %d sec @@ -222,10 +233,18 @@ channel creation progress channel relay bar progress + + %1$d/%2$d relays active, %3$d errors + channel relay bar + %1$d/%2$d relays active, %3$d failed channel creation progress with errors -channel relay bar progress with errors +channel relay bar + + + %1$d/%2$d relays active, %3$d removed + channel relay bar %1$d/%2$d relays connected @@ -233,7 +252,15 @@ channel relay bar progress with errors %1$d/%2$d relays connected, %3$d errors - channel subscriber relay bar progress with errors + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d failed + channel subscriber relay bar + + + %1$d/%2$d relays connected, %3$d removed + channel subscriber relay bar %lld @@ -349,11 +376,19 @@ channel relay bar progress with errors 已跳过 %u 条消息。 No comment provided by engineer. + + (from owner) + chat link info line + (new) (新) No comment provided by engineer. + + (signed) + chat link info line + (this device v%@) (此设备 v%@) @@ -446,6 +481,12 @@ channel relay bar progress with errors - 以及更多! No comment provided by engineer. + + - opt-in to send link previews. +- prevent hyperlink phishing. +- remove link tracking. + No comment provided by engineer. + - optionally notify deleted contacts. - profile names with spaces. @@ -544,6 +585,10 @@ time interval 一些杂项 No comment provided by engineer. + + A link for one person to connect + No comment provided by engineer. + A new contact 新联系人 @@ -670,9 +715,8 @@ swipe action 活动连接 No comment provided by engineer. - - Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts. - 将地址添加到您的个人资料,以便您的联系人可以与其他人共享。个人资料更新将发送给您的联系人。 + + Add address to your profile, so that your SimpleX contacts can share it with other people. Profile update will be sent to your SimpleX contacts. No comment provided by engineer. @@ -740,6 +784,10 @@ swipe action 已添加消息服务器 No comment provided by engineer. + + Adding relays will be supported later. + No comment provided by engineer. + Additional accent 附加重音 @@ -860,6 +908,14 @@ swipe action 所有配置文件 profile dropdown + + All relays failed + No comment provided by engineer. + + + All relays removed + No comment provided by engineer. + All reports will be archived for you. 将为你存档所有举报。 @@ -920,6 +976,10 @@ swipe action 仅有您的联系人许可后才允许不可撤回消息移除 No comment provided by engineer. + + Allow members to chat with admins. + No comment provided by engineer. + Allow message reactions only if your contact allows them. 只有您的联系人允许时才允许消息回应。 @@ -935,6 +995,10 @@ swipe action 允许向成员发送私信。 No comment provided by engineer. + + Allow sending direct messages to subscribers. + No comment provided by engineer. + Allow sending disappearing messages. 允许发送限时消息。 @@ -945,6 +1009,10 @@ swipe action 允许共享 No comment provided by engineer. + + Allow subscribers to chat with admins. + No comment provided by engineer. + Allow to irreversibly delete sent messages. (24 hours) 允许不可撤回地删除已发送消息 @@ -1421,7 +1489,7 @@ swipe action Business address 企业地址 - No comment provided by engineer. + chat link info line Business chats @@ -1612,12 +1680,21 @@ set passcode view Channel full name (optional) No comment provided by engineer. + + Channel has no active relays. Please try to join later. + alert message +alert subtitle + Channel image No comment provided by engineer. Channel link + chat link info line + + + Channel preferences No comment provided by engineer. @@ -1632,6 +1709,10 @@ set passcode view Channel profile was changed. If you save it, the updated profile will be sent to channel subscribers. alert message + + Channel temporarily unavailable + alert title + Channel will be deleted for all subscribers - this cannot be undone! No comment provided by engineer. @@ -1644,6 +1725,10 @@ set passcode view Channel will start working with %1$d of %2$d relays. Proceed? alert message + + Channels + No comment provided by engineer. + Chat 聊天 @@ -1763,7 +1848,8 @@ set passcode view Chat with admins 和管理员聊天 - chat toolbar + chat feature +chat toolbar Chat with member @@ -1780,11 +1866,23 @@ set passcode view 聊天 No comment provided by engineer. + + Chats with admins are prohibited. + No comment provided by engineer. + + + Chats with admins in public channels have no E2E encryption - use only with trusted chat relays. + alert message + Chats with members 和成员聊天 No comment provided by engineer. + + Chats with members are disabled + No comment provided by engineer. + Check messages every 20 min. 每 20 分钟检查消息。 @@ -2062,6 +2160,10 @@ This is your own one-time link! 通过链接连接 new chat sheet title + + Connect via link or QR code + No comment provided by engineer. + Connect via one-time link 通过一次性链接连接 @@ -2072,6 +2174,10 @@ This is your own one-time link! 与 %@连接 new chat action + + Connect with someone + No comment provided by engineer. + Connected 已连接 @@ -2140,7 +2246,7 @@ This is your own one-time link! Connection error (AUTH) 连接错误(AUTH) - No comment provided by engineer. + conn error description Connection failed @@ -2197,6 +2303,10 @@ This is your own one-time link! 连接 No comment provided by engineer. + + Contact address + chat link info line + Contact allows 联系人允许 @@ -2267,6 +2377,11 @@ This is your own one-time link! 继续 No comment provided by engineer. + + Contribute + 贡献 + No comment provided by engineer. + Conversation deleted! 对话已删除! @@ -2297,11 +2412,6 @@ This is your own one-time link! 将名称更正为 %@? alert message - - Create - 创建 - No comment provided by engineer. - Create 1-time link 创建一次性链接 @@ -2375,6 +2485,10 @@ This is your own one-time link! 创建您的资料 No comment provided by engineer. + + Create your public address + No comment provided by engineer. + Created 已创建 @@ -2959,6 +3073,14 @@ alert button 此群禁止成员间私信。 No comment provided by engineer. + + Direct messages between subscribers are prohibited. + No comment provided by engineer. + + + Disable + alert button + Disable (keep overrides) 禁用(保留覆盖) @@ -3064,6 +3186,10 @@ alert button 不给新成员发送历史消息。 No comment provided by engineer. + + Do not send history to new subscribers. + No comment provided by engineer. + Do not use credentials with proxy. 代理不使用身份验证凭据。 @@ -3165,6 +3291,10 @@ chat item action 端到端加密的通知。 No comment provided by engineer. + + Easier to invite your friends 👋 + No comment provided by engineer. + Edit 编辑 @@ -3187,7 +3317,7 @@ chat item action Enable 启用 - No comment provided by engineer. + alert button Enable (keep overrides) @@ -3223,6 +3353,10 @@ chat item action 启用相机访问 No comment provided by engineer. + + Enable chats with admins? + alert title + Enable disappearing messages by default. 默认启用定时消失消息。 @@ -3243,6 +3377,10 @@ chat item action 启用即时通知? No comment provided by engineer. + + Enable link previews? + alert title + Enable lock 启用锁定 @@ -3419,7 +3557,7 @@ chat item action Error 错误 - No comment provided by engineer. + conn error description Error aborting address change @@ -3762,6 +3900,10 @@ chat item action 设置送达回执出错! No comment provided by engineer. + + Error sharing channel + alert title + Error starting chat 启动聊天错误 @@ -4130,6 +4272,10 @@ server test error 所有 moderators No comment provided by engineer. + + For anyone to reach you + No comment provided by engineer. + For chat profile %@: 为聊天资料 %@: @@ -4342,7 +4488,7 @@ Error: %2$@ Group link 群组链接 - No comment provided by engineer. + chat link info line Group links @@ -4454,6 +4600,10 @@ Error: %2$@ 未发送历史消息给新成员。 No comment provided by engineer. + + History is not sent to new subscribers. + No comment provided by engineer. + How SimpleX works SimpleX的工作原理 @@ -4700,9 +4850,9 @@ More improvements are coming soon! 初始角色 No comment provided by engineer. - - Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat) - 安装[用于终端的 SimpleX Chat](https://github.com/simplex-chat/simplex-chat) + + Install SimpleX Chat for terminal + 安装用于终端的 SimpleX Chat No comment provided by engineer. @@ -4760,7 +4910,7 @@ More improvements are coming soon! Invalid connection link 无效的连接链接 - No comment provided by engineer. + conn error description Invalid display name! @@ -4825,6 +4975,10 @@ More improvements are coming soon! 邀请成员 No comment provided by engineer. + + Invite someone privately + No comment provided by engineer. + Invite to chat 邀请加入聊天 @@ -5025,6 +5179,10 @@ This is your link for group %@! 消耗更少的移动网络数据。 No comment provided by engineer. + + Let someone connect to you + No comment provided by engineer. + Let's talk in SimpleX Chat 让我们一起在 SimpleX Chat 里聊天 @@ -5045,6 +5203,10 @@ This is your link for group %@! 连接移动端和桌面端应用程序!🔗 No comment provided by engineer. + + Link signature verified. + owner verification + Linked desktop options 已链接桌面选项 @@ -5229,6 +5391,10 @@ This is your link for group %@! 群组成员可以添加信息回应。 No comment provided by engineer. + + Members can chat with admins. + No comment provided by engineer. + Members can irreversibly delete sent messages. (24 hours) 群组成员可以不可撤回地删除已发送的消息 @@ -5393,6 +5559,14 @@ This is your link for group %@! 将显示来自 %@ 的消息! No comment provided by engineer. + + Messages in this channel are **not end-to-end encrypted**. Chat relays can see these messages. + No comment provided by engineer. + + + Messages in this channel are not end-to-end encrypted. Chat relays can see these messages. + E2EE info chat item + Messages in this chat will never be deleted. 此聊天中的消息永远不会被删除。 @@ -5563,6 +5737,10 @@ This is your link for group %@! 网络去中心化 No comment provided by engineer. + + Network error + conn error description + Network issues - message expired after many attempts to send it. 网络问题 - 消息在多次尝试发送后过期。 @@ -5593,6 +5771,10 @@ This is your link for group %@! token status text + + New 1-time link + No comment provided by engineer. + New Passcode 新密码 @@ -5692,6 +5874,10 @@ This is your link for group %@! No comment provided by engineer. + + No active relays + No comment provided by engineer. + No app password 没有应用程序密码 @@ -5855,6 +6041,10 @@ This is your link for group %@! 没有用户标识符。 No comment provided by engineer. + + Non-profit governance + No comment provided by engineer. + Not all relays connected alert title @@ -5916,7 +6106,7 @@ This is your link for group %@! OK 好的 - No comment provided by engineer. + alert button Off @@ -5940,6 +6130,10 @@ new chat action 一次性邀请链接 No comment provided by engineer. + + One-time link + chat link info line + Onion hosts will be **required** for connection. Requires compatible VPN. @@ -5959,6 +6153,10 @@ Requires compatible VPN. 将不会使用 Onion 主机。 No comment provided by engineer. + + Only channel owners can change channel preferences. + No comment provided by engineer. + Only chat owners can change preferences. 仅聊天所有人可更改首选项。 @@ -6062,7 +6260,8 @@ Requires compatible VPN. Open 打开 - alert action + alert action +alert button Open Settings @@ -6098,6 +6297,10 @@ Requires compatible VPN. 打开条款 No comment provided by engineer. + + Open external link? + alert title + Open full link 打开完整链接 @@ -6187,6 +6390,10 @@ Requires compatible VPN. 或安全地分享此文件链接 No comment provided by engineer. + + Or show QR in person or via video call. + No comment provided by engineer. + Or show this code 或者显示此码 @@ -6197,6 +6404,10 @@ Requires compatible VPN. 或者私下分享 No comment provided by engineer. + + Or use this QR - print or show online. + No comment provided by engineer. + Organize chats into lists 将聊天组织到列表 @@ -6222,6 +6433,10 @@ Requires compatible VPN. Owners No comment provided by engineer. + + Ownership: you can run your own relays. + No comment provided by engineer. + PING count PING 次数 @@ -6277,6 +6492,10 @@ Requires compatible VPN. 粘贴图片 No comment provided by engineer. + + Paste link / Scan + No comment provided by engineer. + Paste link to connect! 粘贴链接以连接! @@ -6479,6 +6698,10 @@ Error: %@ 重新定义隐私 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. 服务器运营方无法访问私密聊天、群组和你的联系人。 @@ -6553,9 +6776,8 @@ Error: %@ 个人资料主题 No comment provided by engineer. - - Profile update will be sent to your contacts. - 个人资料更新将被发送给您的联系人。 + + Profile update will be sent to your SimpleX contacts. alert message @@ -6563,6 +6785,10 @@ Error: %@ 禁止音频/视频通话。 No comment provided by engineer. + + Prohibit chats with admins. + No comment provided by engineer. + Prohibit irreversible message deletion. 禁止不可撤回消息删除。 @@ -6593,6 +6819,10 @@ Error: %@ 禁止向成员发送私信。 No comment provided by engineer. + + Prohibit sending direct messages to subscribers. + No comment provided by engineer. + Prohibit sending disappearing messages. 禁止发送限时消息。 @@ -6660,6 +6890,10 @@ Enable in *Network & servers* settings. 代理需要密码 No comment provided by engineer. + + Public channels - speak freely 🚀 + No comment provided by engineer. + Push notifications 推送通知 @@ -6700,24 +6934,14 @@ Enable in *Network & servers* settings. 阅读更多 No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). - 阅读更多[User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)。 + + Read more in User Guide. + 阅读更多User Guide。 No comment provided by engineer. - - Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses). - 在 [用户指南](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses) 中阅读更多内容。 - No comment provided by engineer. - - - Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - 在 [用户指南](https://simplex.chat/docs/guide/readme.html#connect-to-friends) 中阅读更多内容。 - No comment provided by engineer. - - - Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme). - 在我们的 [GitHub 仓库](https://github.com/simplex-chat/simplex-chat#readme) 中阅读更多信息。 + + Read more in our GitHub repository. + 在我们的 GitHub 仓库 中阅读更多信息。 No comment provided by engineer. @@ -6892,6 +7116,10 @@ swipe action Relay link No comment provided by engineer. + + Relay results: + alert message + Relay server is only used if necessary. Another party can observe your IP address. 中继服务器仅在必要时使用。其他人可能会观察到您的IP地址。 @@ -6906,6 +7134,10 @@ swipe action Relay test failed! No comment provided by engineer. + + Reliability: many relays per channel. + No comment provided by engineer. + Remove 移除 @@ -7188,6 +7420,10 @@ swipe action SOCKS代理 No comment provided by engineer. + + Safe web links + No comment provided by engineer. + Safely receive files 安全接收文件 @@ -7233,6 +7469,10 @@ chat item action 保存并通知群组成员 No comment provided by engineer. + + Save and notify subscribers + No comment provided by engineer. + Save and reconnect 保存并重新连接 @@ -7431,6 +7671,10 @@ chat item action 安全码 No comment provided by engineer. + + Security: owners hold channel keys. + No comment provided by engineer. + Select 选择 @@ -7561,6 +7805,10 @@ chat item action 发送无消息请求 No comment provided by engineer. + + Send the link via any messenger - it's secure. Ask to paste into SimpleX. + No comment provided by engineer. + Send them from gallery or custom keyboards. 发送它们来自图库或自定义键盘。 @@ -7571,6 +7819,10 @@ chat item action 给新成员发送最多 100 条历史消息。 No comment provided by engineer. + + Send up to 100 last messages to new subscribers. + No comment provided by engineer. + Send your private feedback to groups. 向群发送私密反馈。 @@ -7586,6 +7838,10 @@ chat item action 发送人可能已删除连接请求。 No comment provided by engineer. + + Sending a link preview may reveal your IP address to the website. You can change this in Privacy settings later. + alert message + Sending delivery receipts will be enabled for all contacts in all visible chat profiles. 将对所有可见聊天配置文件中的所有联系人启用送达回执功能。 @@ -7881,11 +8137,14 @@ chat item action 公开分享地址 No comment provided by engineer. - - Share address with contacts? - 与联系人分享地址? + + Share address with SimpleX contacts? alert title + + Share channel + No comment provided by engineer. + Share from other apps. 从其他应用程序共享。 @@ -7925,9 +8184,12 @@ chat item action 分享到 SimpleX No comment provided by engineer. - - Share with contacts - 与联系人分享 + + Share via chat + No comment provided by engineer. + + + Share with SimpleX contacts No comment provided by engineer. @@ -8177,6 +8439,11 @@ report reason 方形、圆形、或两者之间的任意形状. No comment provided by engineer. + + Star on GitHub + 在 GitHub 上加星 + No comment provided by engineer. + Start chat 开始聊天 @@ -8280,6 +8547,10 @@ report reason Subscriber No comment provided by engineer. + + Subscriber reports + chat feature + Subscriber will be removed from channel - this cannot be undone! alert message @@ -8288,6 +8559,42 @@ report reason Subscribers No comment provided by engineer. + + Subscribers can add message reactions. + No comment provided by engineer. + + + Subscribers can chat with admins. + No comment provided by engineer. + + + Subscribers can irreversibly delete sent messages. (24 hours) + No comment provided by engineer. + + + Subscribers can report messsages to moderators. + No comment provided by engineer. + + + Subscribers can send SimpleX links. + No comment provided by engineer. + + + Subscribers can send direct messages. + No comment provided by engineer. + + + Subscribers can send disappearing messages. + No comment provided by engineer. + + + Subscribers can send files and media. + No comment provided by engineer. + + + Subscribers can send voice messages. + No comment provided by engineer. + Subscribers use relay link to connect to the channel. Relay address was used to set up this relay for the channel. @@ -8373,6 +8680,10 @@ Relay address was used to set up this relay for the channel. 拍照 No comment provided by engineer. + + Talk to someone + No comment provided by engineer. + Tap Connect to chat 轻按连接进行聊天 @@ -8388,11 +8699,6 @@ Relay address was used to set up this relay for the channel. 轻按“连接”使用机器人 No comment provided by engineer. - - Tap Create SimpleX address in the menu to create it later. - 要稍后创建 SimpleX 地址,请在菜单中轻按“创建 SimpleX 地址” - No comment provided by engineer. - Tap Join channel No comment provided by engineer. @@ -8427,6 +8733,10 @@ Relay address was used to set up this relay for the channel. 点击以加入隐身聊天 No comment provided by engineer. + + Tap to open + No comment provided by engineer. + Tap to paste link 轻按粘贴链接 @@ -8528,6 +8838,10 @@ It can happen because of some bug or when the connection is compromised.您扫描的码不是 SimpleX 链接的二维码。 No comment provided by engineer. + + The connection reached the limit of undelivered messages + conn error description + The connection reached the limit of undelivered messages, your contact may be offline. 连接达到了未送达消息上限,你的联系人可能处于离线状态。 @@ -8759,6 +9073,10 @@ It can happen because of some bug or when the connection is compromised.隐藏不需要的信息。 No comment provided by engineer. + + To make SimpleX Network last. + No comment provided by engineer. + To make a new connection 建立新连接 @@ -9034,13 +9352,17 @@ To connect, please ask your contact to create another connection link and check Unsupported connection link 不支持的连接链接 - No comment provided by engineer. + conn error description Up to 100 last messages are sent to new members. 给新成员发送了最多 100 条历史消息。 No comment provided by engineer. + + Up to 100 last messages are sent to new subscribers. + No comment provided by engineer. + Update 更新 @@ -9254,6 +9576,10 @@ To connect, please ask your contact to create another connection link and check 用一只手使用应用程序。 No comment provided by engineer. + + Use this address in your social media profile, website, or email signature. + No comment provided by engineer. + Use web port 使用 web 端口 @@ -9406,6 +9732,10 @@ To connect, please ask your contact to create another connection link and check Wait response relay test step + + Waiting for channel owner to add relays. + No comment provided by engineer. + Waiting for desktop... 正在等待桌面... @@ -9446,6 +9776,10 @@ To connect, please ask your contact to create another connection link and check 警告:您可能会丢失部分数据! No comment provided by engineer. + + We made connecting simpler for new users. + No comment provided by engineer. + WebRTC ICE servers WebRTC ICE 服务器 @@ -10033,6 +10367,10 @@ Relays can access channel messages. 您的个人资料已修改。如果进行保存,更新后的个人资料将发送到所有联系人。 alert message + + Your public address + No comment provided by engineer. + Your random profile 您的随机资料 @@ -10061,21 +10399,11 @@ Relays can access channel messages. 您的设置 No comment provided by engineer. - - [Contribute](https://github.com/simplex-chat/simplex-chat#contribute) - [贡献](https://github.com/simplex-chat/simplex-chat#contribute) - No comment provided by engineer. - [Send us email](mailto:chat@simplex.chat) [给我们发电邮](mailto:chat@simplex.chat) No comment provided by engineer. - - [Star on GitHub](https://github.com/simplex-chat/simplex-chat) - [在 GitHub 上加星](https://github.com/simplex-chat/simplex-chat) - No comment provided by engineer. - \_italic_ \_斜体_ @@ -10229,6 +10557,10 @@ marked deleted chat item preview text 呼叫中…… call status + + can't broadcast + No comment provided by engineer. + can't send messages 无法发送消息 @@ -10883,6 +11215,10 @@ time to disappear removed (%d attempts) receive error chat item + + removed by operator + No comment provided by engineer. + removed contact address 删除了联系地址 @@ -11204,6 +11540,10 @@ last received msg: %2$@ \~删去~ No comment provided by engineer. + + ⚠️ Signature verification failed: %@. + owner verification + diff --git a/apps/ios/SimpleX SE/ShareAPI.swift b/apps/ios/SimpleX SE/ShareAPI.swift index f13401d437..52c0405e5e 100644 --- a/apps/ios/SimpleX SE/ShareAPI.swift +++ b/apps/ios/SimpleX SE/ShareAPI.swift @@ -68,7 +68,7 @@ func apiSendMessages( type: chatInfo.chatType, id: chatInfo.apiId, scope: chatInfo.groupChatScope(), - sendAsGroup: chatInfo.groupInfo.map { $0.useRelays && $0.membership.memberRole >= .owner } ?? false, + sendAsGroup: chatInfo.sendAsGroup, live: false, ttl: nil, composedMessages: composedMessages diff --git a/apps/ios/SimpleX SE/de.lproj/Localizable.strings b/apps/ios/SimpleX SE/de.lproj/Localizable.strings index 403fb3820a..df368686e8 100644 --- a/apps/ios/SimpleX SE/de.lproj/Localizable.strings +++ b/apps/ios/SimpleX SE/de.lproj/Localizable.strings @@ -80,7 +80,7 @@ "Please create a profile in the SimpleX app" = "Bitte erstellen Sie in der SimpleX-App ein Profil"; /* No comment provided by engineer. */ -"Selected chat preferences prohibit this message." = "Die gewählten Chat-Einstellungen erlauben diese Nachricht nicht."; +"Selected chat preferences prohibit this message." = "Diese Nachricht ist wegen der gewählten Chat-Präferenzen nicht erlaubt."; /* No comment provided by engineer. */ "Sending a message takes longer than expected." = "Das Senden einer Nachricht dauert länger als erwartet."; diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index 9172c5cf41..bd0ff9b401 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -187,8 +187,8 @@ 64C3B0212A0D359700E19930 /* CustomTimePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64C3B0202A0D359700E19930 /* CustomTimePicker.swift */; }; 64C8299D2D54AEEE006B9E89 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C829982D54AEED006B9E89 /* libgmp.a */; }; 64C8299E2D54AEEE006B9E89 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C829992D54AEEE006B9E89 /* libffi.a */; }; - 64C8299F2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.15-7J6rfC1qLWr8QkAAXzi4Re-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C8299A2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.15-7J6rfC1qLWr8QkAAXzi4Re-ghc9.6.3.a */; }; - 64C829A02D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.15-7J6rfC1qLWr8QkAAXzi4Re.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C8299B2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.15-7J6rfC1qLWr8QkAAXzi4Re.a */; }; + 64C8299F2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.16-45m1zumjYj2Eu6IsS525uz-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C8299A2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.16-45m1zumjYj2Eu6IsS525uz-ghc9.6.3.a */; }; + 64C829A02D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.16-45m1zumjYj2Eu6IsS525uz.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C8299B2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.16-45m1zumjYj2Eu6IsS525uz.a */; }; 64C829A12D54AEEE006B9E89 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C8299C2D54AEEE006B9E89 /* libgmpxx.a */; }; 64D0C2C029F9688300B38D5F /* UserAddressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64D0C2BF29F9688300B38D5F /* UserAddressView.swift */; }; 64D0C2C229FA57AB00B38D5F /* UserAddressLearnMore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64D0C2C129FA57AB00B38D5F /* UserAddressLearnMore.swift */; }; @@ -568,8 +568,8 @@ 64C3B0202A0D359700E19930 /* CustomTimePicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomTimePicker.swift; sourceTree = ""; }; 64C829982D54AEED006B9E89 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; 64C829992D54AEEE006B9E89 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; - 64C8299A2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.15-7J6rfC1qLWr8QkAAXzi4Re-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.5.0.15-7J6rfC1qLWr8QkAAXzi4Re-ghc9.6.3.a"; sourceTree = ""; }; - 64C8299B2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.15-7J6rfC1qLWr8QkAAXzi4Re.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.5.0.15-7J6rfC1qLWr8QkAAXzi4Re.a"; sourceTree = ""; }; + 64C8299A2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.16-45m1zumjYj2Eu6IsS525uz-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.5.0.16-45m1zumjYj2Eu6IsS525uz-ghc9.6.3.a"; sourceTree = ""; }; + 64C8299B2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.16-45m1zumjYj2Eu6IsS525uz.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.5.0.16-45m1zumjYj2Eu6IsS525uz.a"; sourceTree = ""; }; 64C8299C2D54AEEE006B9E89 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; 64D0C2BF29F9688300B38D5F /* UserAddressView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserAddressView.swift; sourceTree = ""; }; 64D0C2C129FA57AB00B38D5F /* UserAddressLearnMore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserAddressLearnMore.swift; sourceTree = ""; }; @@ -737,8 +737,8 @@ 64C8299D2D54AEEE006B9E89 /* libgmp.a in Frameworks */, 64C8299E2D54AEEE006B9E89 /* libffi.a in Frameworks */, 64C829A12D54AEEE006B9E89 /* libgmpxx.a in Frameworks */, - 64C8299F2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.15-7J6rfC1qLWr8QkAAXzi4Re-ghc9.6.3.a in Frameworks */, - 64C829A02D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.15-7J6rfC1qLWr8QkAAXzi4Re.a in Frameworks */, + 64C8299F2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.16-45m1zumjYj2Eu6IsS525uz-ghc9.6.3.a in Frameworks */, + 64C829A02D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.16-45m1zumjYj2Eu6IsS525uz.a in Frameworks */, CE38A29C2C3FCD72005ED185 /* SwiftyGif in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -824,8 +824,8 @@ 64C829992D54AEEE006B9E89 /* libffi.a */, 64C829982D54AEED006B9E89 /* libgmp.a */, 64C8299C2D54AEEE006B9E89 /* libgmpxx.a */, - 64C8299A2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.15-7J6rfC1qLWr8QkAAXzi4Re-ghc9.6.3.a */, - 64C8299B2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.15-7J6rfC1qLWr8QkAAXzi4Re.a */, + 64C8299A2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.16-45m1zumjYj2Eu6IsS525uz-ghc9.6.3.a */, + 64C8299B2D54AEEE006B9E89 /* libHSsimplex-chat-6.5.0.16-45m1zumjYj2Eu6IsS525uz.a */, ); path = Libraries; sourceTree = ""; @@ -2075,7 +2075,7 @@ CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 326; + CURRENT_PROJECT_VERSION = 327; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; @@ -2125,7 +2125,7 @@ CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 326; + CURRENT_PROJECT_VERSION = 327; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; @@ -2167,7 +2167,7 @@ buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 326; + CURRENT_PROJECT_VERSION = 327; DEVELOPMENT_TEAM = 5NN7GUYB6T; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 15.0; @@ -2187,7 +2187,7 @@ buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 326; + CURRENT_PROJECT_VERSION = 327; DEVELOPMENT_TEAM = 5NN7GUYB6T; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 15.0; @@ -2212,7 +2212,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 326; + CURRENT_PROJECT_VERSION = 327; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; GCC_OPTIMIZATION_LEVEL = s; @@ -2249,7 +2249,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 326; + CURRENT_PROJECT_VERSION = 327; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; ENABLE_CODE_COVERAGE = NO; @@ -2286,7 +2286,7 @@ CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES; CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 326; + CURRENT_PROJECT_VERSION = 327; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; DYLIB_COMPATIBILITY_VERSION = 1; @@ -2337,7 +2337,7 @@ CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES; CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 326; + CURRENT_PROJECT_VERSION = 327; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; DYLIB_COMPATIBILITY_VERSION = 1; @@ -2391,7 +2391,7 @@ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; CODE_SIGN_ENTITLEMENTS = "SimpleX SE/SimpleX SE.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 326; + CURRENT_PROJECT_VERSION = 327; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; @@ -2425,7 +2425,7 @@ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; CODE_SIGN_ENTITLEMENTS = "SimpleX SE/SimpleX SE.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 326; + CURRENT_PROJECT_VERSION = 327; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; diff --git a/apps/ios/SimpleXChat/ChatTypes.swift b/apps/ios/SimpleXChat/ChatTypes.swift index 83b8d61ea1..1dfa477c91 100644 --- a/apps/ios/SimpleXChat/ChatTypes.swift +++ b/apps/ios/SimpleXChat/ChatTypes.swift @@ -867,6 +867,7 @@ public enum GroupFeature: String, Decodable, Feature, Hashable { case simplexLinks case reports case history + case support public var id: Self { self } @@ -888,10 +889,13 @@ public enum GroupFeature: String, Decodable, Feature, Hashable { case .simplexLinks: true case .reports: false case .history: false + case .support: false } } - public var text: String { + public var text: String { text(isChannel: false) } + + public func text(isChannel: Bool) -> String { switch self { case .timedMessages: return NSLocalizedString("Disappearing messages", comment: "chat feature") case .directMessages: return NSLocalizedString("Direct messages", comment: "chat feature") @@ -900,8 +904,11 @@ public enum GroupFeature: String, Decodable, Feature, Hashable { case .voice: return NSLocalizedString("Voice messages", comment: "chat feature") case .files: return NSLocalizedString("Files and media", comment: "chat feature") case .simplexLinks: return NSLocalizedString("SimpleX links", comment: "chat feature") - case .reports: return NSLocalizedString("Member reports", comment: "chat feature") + case .reports: return isChannel + ? NSLocalizedString("Subscriber reports", comment: "chat feature") + : NSLocalizedString("Member reports", comment: "chat feature") case .history: return NSLocalizedString("Visible history", comment: "chat feature") + case .support: return NSLocalizedString("Chat with admins", comment: "chat feature") } } @@ -916,6 +923,7 @@ public enum GroupFeature: String, Decodable, Feature, Hashable { case .simplexLinks: return "link.circle" case .reports: return "flag" case .history: return "clock" + case .support: return "questionmark.circle" } } @@ -930,6 +938,7 @@ public enum GroupFeature: String, Decodable, Feature, Hashable { case .simplexLinks: return "link.circle.fill" case .reports: return "flag.fill" case .history: return "clock.fill" + case .support: return "questionmark.circle.fill" } } @@ -940,7 +949,7 @@ public enum GroupFeature: String, Decodable, Feature, Hashable { } } - public func enableDescription(_ enabled: GroupFeatureEnabled, _ canEdit: Bool) -> LocalizedStringKey { + public func enableDescription(_ enabled: GroupFeatureEnabled, _ canEdit: Bool, isChannel: Bool = false) -> LocalizedStringKey { if canEdit { switch self { case .timedMessages: @@ -950,8 +959,12 @@ public enum GroupFeature: String, Decodable, Feature, Hashable { } case .directMessages: switch enabled { - case .on: return "Allow sending direct messages to members." - case .off: return "Prohibit sending direct messages to members." + case .on: return isChannel + ? "Allow sending direct messages to subscribers." + : "Allow sending direct messages to members." + case .off: return isChannel + ? "Prohibit sending direct messages to subscribers." + : "Prohibit sending direct messages to members." } case .fullDelete: switch enabled { @@ -985,56 +998,96 @@ public enum GroupFeature: String, Decodable, Feature, Hashable { } case .history: switch enabled { - case .on: return "Send up to 100 last messages to new members." - case .off: return "Do not send history to new members." + case .on: return isChannel + ? "Send up to 100 last messages to new subscribers." + : "Send up to 100 last messages to new members." + case .off: return isChannel + ? "Do not send history to new subscribers." + : "Do not send history to new members." + } + case .support: + switch enabled { + case .on: return isChannel + ? "Allow subscribers to chat with admins." + : "Allow members to chat with admins." + case .off: return "Prohibit chats with admins." } } } else { switch self { case .timedMessages: switch enabled { - case .on: return "Members can send disappearing messages." + case .on: return isChannel + ? "Subscribers can send disappearing messages." + : "Members can send disappearing messages." case .off: return "Disappearing messages are prohibited." } case .directMessages: switch enabled { - case .on: return "Members can send direct messages." - case .off: return "Direct messages between members are prohibited." + case .on: return isChannel + ? "Subscribers can send direct messages." + : "Members can send direct messages." + case .off: return isChannel + ? "Direct messages between subscribers are prohibited." + : "Direct messages between members are prohibited." } case .fullDelete: switch enabled { - case .on: return "Members can irreversibly delete sent messages. (24 hours)" + case .on: return isChannel + ? "Subscribers can irreversibly delete sent messages. (24 hours)" + : "Members can irreversibly delete sent messages. (24 hours)" case .off: return "Irreversible message deletion is prohibited." } case .reactions: switch enabled { - case .on: return "Members can add message reactions." + case .on: return isChannel + ? "Subscribers can add message reactions." + : "Members can add message reactions." case .off: return "Message reactions are prohibited." } case .voice: switch enabled { - case .on: return "Members can send voice messages." + case .on: return isChannel + ? "Subscribers can send voice messages." + : "Members can send voice messages." case .off: return "Voice messages are prohibited." } case .files: switch enabled { - case .on: return "Members can send files and media." + case .on: return isChannel + ? "Subscribers can send files and media." + : "Members can send files and media." case .off: return "Files and media are prohibited." } case .simplexLinks: switch enabled { - case .on: return "Members can send SimpleX links." + case .on: return isChannel + ? "Subscribers can send SimpleX links." + : "Members can send SimpleX links." case .off: return "SimpleX links are prohibited." } case .reports: switch enabled { - case .on: return "Members can report messsages to moderators." + case .on: return isChannel + ? "Subscribers can report messsages to moderators." + : "Members can report messsages to moderators." case .off: return "Reporting messages to moderators is prohibited." } case .history: switch enabled { - case .on: return "Up to 100 last messages are sent to new members." - case .off: return "History is not sent to new members." + case .on: return isChannel + ? "Up to 100 last messages are sent to new subscribers." + : "Up to 100 last messages are sent to new members." + case .off: return isChannel + ? "History is not sent to new subscribers." + : "History is not sent to new members." + } + case .support: + switch enabled { + case .on: return isChannel + ? "Subscribers can chat with admins." + : "Members can chat with admins." + case .off: return "Chats with admins are prohibited." } } } @@ -1190,6 +1243,7 @@ public struct FullGroupPreferences: Decodable, Equatable, Hashable { public var simplexLinks: RoleGroupPreference public var reports: GroupPreference public var history: GroupPreference + public var support: GroupPreference public var commands: [ChatBotCommand] public init( @@ -1202,6 +1256,7 @@ public struct FullGroupPreferences: Decodable, Equatable, Hashable { simplexLinks: RoleGroupPreference, reports: GroupPreference, history: GroupPreference, + support: GroupPreference, commands: [ChatBotCommand] ) { self.timedMessages = timedMessages @@ -1213,6 +1268,7 @@ public struct FullGroupPreferences: Decodable, Equatable, Hashable { self.simplexLinks = simplexLinks self.reports = reports self.history = history + self.support = support self.commands = commands } @@ -1226,6 +1282,7 @@ public struct FullGroupPreferences: Decodable, Equatable, Hashable { simplexLinks: RoleGroupPreference(enable: .on, role: nil), reports: GroupPreference(enable: .on), history: GroupPreference(enable: .on), + support: GroupPreference(enable: .on), commands: [] ) } @@ -1240,6 +1297,7 @@ public struct GroupPreferences: Codable, Hashable { public var simplexLinks: RoleGroupPreference? public var reports: GroupPreference? public var history: GroupPreference? + public var support: GroupPreference? public var commands: [ChatBotCommand]? public init( @@ -1252,6 +1310,7 @@ public struct GroupPreferences: Codable, Hashable { simplexLinks: RoleGroupPreference? = nil, reports: GroupPreference? = nil, history: GroupPreference? = nil, + support: GroupPreference? = nil, commands: [ChatBotCommand]? = nil ) { self.timedMessages = timedMessages @@ -1263,6 +1322,7 @@ public struct GroupPreferences: Codable, Hashable { self.simplexLinks = simplexLinks self.reports = reports self.history = history + self.support = support self.commands = commands } @@ -1276,6 +1336,7 @@ public struct GroupPreferences: Codable, Hashable { simplexLinks: RoleGroupPreference(enable: .on, role: nil), reports: GroupPreference(enable: .on), history: GroupPreference(enable: .on), + support: GroupPreference(enable: .on), commands: nil ) } @@ -1760,6 +1821,18 @@ public enum ChatInfo: Identifiable, Decodable, NamedChat, Hashable { } } + public var sendAsGroup: Bool { + if let g = groupInfo, g.useRelays && g.membership.memberRole >= .owner { + switch groupChatScope() { + case .none: true + case .memberSupport: false + case .reports: false + } + } else { + false + } + } + public func ntfsEnabled(chatItem: ChatItem) -> Bool { ntfsEnabled(chatItem.meta.userMention) } @@ -4092,8 +4165,8 @@ public enum CIContent: Decodable, ItemContent, Hashable { case .rcvBlocked: return NSLocalizedString("blocked by admin", comment: "blocked chat item") case let .sndDirectE2EEInfo(e2eeInfo): return directE2EEInfoStr(e2eeInfo) case let .rcvDirectE2EEInfo(e2eeInfo): return directE2EEInfoStr(e2eeInfo) - case .sndGroupE2EEInfo: return e2eeInfoNoPQStr - case .rcvGroupE2EEInfo: return e2eeInfoNoPQStr + case let .sndGroupE2EEInfo(e2eeInfo): return groupE2EEInfoStr(e2eeInfo) + case let .rcvGroupE2EEInfo(e2eeInfo): return groupE2EEInfoStr(e2eeInfo) case .chatBanner: return "" case .invalidJSON: return NSLocalizedString("invalid data", comment: "invalid chat item") } @@ -4105,6 +4178,12 @@ public enum CIContent: Decodable, ItemContent, Hashable { : e2eeInfoNoPQStr } + private func groupE2EEInfoStr(_ e2eeInfo: E2EEInfo) -> String { + e2eeInfo.public == true + ? NSLocalizedString("Messages in this channel are not end-to-end encrypted. Chat relays can see these messages.", comment: "E2EE info chat item") + : e2eeInfoNoPQStr + } + private var e2eeInfoNoPQStr: String { NSLocalizedString("This chat is protected by end-to-end encryption.", comment: "E2EE info chat item") } @@ -5319,6 +5398,7 @@ public enum CIGroupInvitationStatus: String, Decodable, Hashable { public struct E2EEInfo: Decodable, Hashable { public var pqEnabled: Bool? + public var `public`: Bool? } public enum RcvDirectEvent: Decodable, Hashable { diff --git a/apps/ios/SimpleXChat/ChatUtils.swift b/apps/ios/SimpleXChat/ChatUtils.swift index 451ac8b4ef..788ac12bae 100644 --- a/apps/ios/SimpleXChat/ChatUtils.swift +++ b/apps/ios/SimpleXChat/ChatUtils.swift @@ -25,6 +25,7 @@ extension ChatLike { case .files: p.files.on(for: groupInfo.membership) case .simplexLinks: p.simplexLinks.on(for: groupInfo.membership) case .history: p.history.on + case .support: p.support.on case .reports: p.reports.on } } else { diff --git a/apps/ios/SimpleXChat/Theme/Color.swift b/apps/ios/SimpleXChat/Theme/Color.swift index f307eaa5aa..86eefa4482 100644 --- a/apps/ios/SimpleXChat/Theme/Color.swift +++ b/apps/ios/SimpleXChat/Theme/Color.swift @@ -33,6 +33,55 @@ let HighOrLowlight = Color(139, 135, 134, a: 255) //let FileLight = Color(183, 190, 199, a: 255) //let FileDark = Color(101, 101, 106, a: 255) +// Create a Display P3 Color from oklch components. H in degrees +public func oklch(_ L: Double, _ C: Double, _ H: Double, alpha: Double = 1.0) -> Color { + let hRad = H * .pi / 180.0 + let cosH = cos(hRad) + let sinH = sin(hRad) + + func linearP3(C: Double) -> (Double, Double, Double) { + let a = C * cosH + let b = C * sinH + // oklab → LMS (Ottosson 2021) + let l_ = L + 0.3963377774 * a + 0.2158037573 * b + let m_ = L - 0.1055613458 * a - 0.0638541728 * b + let s_ = L - 0.0894841775 * a - 1.2914855480 * b + let l = l_ * l_ * l_ + let m = m_ * m_ * m_ + let s = s_ * s_ * s_ + // LMS → linear Display P3 (direct, no sRGB clamping) + return ( + 3.1281105148 * l - 2.2570749853 * m + 0.1293047593 * s, + -1.0911282009 * l + 2.4132668169 * m - 0.3221681599 * s, + -0.0260136845 * l - 0.5080276339 * m + 1.5333166364 * s + ) + } + + func inGamut(_ r: Double, _ g: Double, _ b: Double) -> Bool { + r >= 0 && r <= 1 && g >= 0 && g <= 1 && b >= 0 && b <= 1 + } + + // linear P3 → gamma-encoded P3 (same transfer function as sRGB) + func gammaEncode(_ x: Double) -> Double { + x >= 0.0031308 + ? 1.055 * pow(min(x, 1.0), 1.0 / 2.4) - 0.055 + : 12.92 * max(x, 0) + } + + var (r, g, b) = linearP3(C: C) + if !inGamut(r, g, b) { + var lo = 0.0, hi = C + while hi - lo > 1e-5 { + let mid = (lo + hi) / 2 + let (mr, mg, mb) = linearP3(C: mid) + if inGamut(mr, mg, mb) { lo = mid; r = mr; g = mg; b = mb } + else { hi = mid } + } + } + + return Color(.displayP3, red: gammaEncode(r), green: gammaEncode(g), blue: gammaEncode(b), opacity: alpha) +} + extension Color { public init(_ argb: Int64) { let a = Double((argb & 0xFF000000) >> 24) / 255.0 diff --git a/apps/ios/bg.lproj/Localizable.strings b/apps/ios/bg.lproj/Localizable.strings index 323c5c6985..f0838bf9df 100644 --- a/apps/ios/bg.lproj/Localizable.strings +++ b/apps/ios/bg.lproj/Localizable.strings @@ -25,15 +25,9 @@ /* No comment provided by engineer. */ "(this device v%@)" = "(това устройство v%@)"; -/* No comment provided by engineer. */ -"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Допринеси](https://github.com/simplex-chat/simplex-chat#contribute)"; - /* No comment provided by engineer. */ "[Send us email](mailto:chat@simplex.chat)" = "[Изпратете ни имейл](mailto:chat@simplex.chat)"; -/* No comment provided by engineer. */ -"[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[Звезда в GitHub](https://github.com/simplex-chat/simplex-chat)"; - /* No comment provided by engineer. */ "**Create 1-time link**: to create and share a new invitation link." = "**Добави контакт**: за създаване на нов линк."; @@ -389,9 +383,6 @@ swipe action */ /* No comment provided by engineer. */ "Active connections" = "Активни връзки"; -/* No comment provided by engineer. */ -"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Добавете адрес към вашия профил, така че вашите контакти да могат да го споделят с други хора. Актуализацията на профила ще бъде изпратена до вашите контакти."; - /* No comment provided by engineer. */ "Add friends" = "Добави приятели"; @@ -873,7 +864,7 @@ marked deleted chat item preview text */ /* No comment provided by engineer. */ "Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Български, финландски, тайландски и украински - благодарение на потребителите и [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!"; -/* No comment provided by engineer. */ +/* chat link info line */ "Business address" = "Бизнес адрес"; /* No comment provided by engineer. */ @@ -1318,7 +1309,7 @@ server test step */ /* alert title */ "Connection error" = "Грешка при свързване"; -/* No comment provided by engineer. */ +/* conn error description */ "Connection error (AUTH)" = "Грешка при свързване (AUTH)"; /* chat list item title (it should not be shown */ @@ -1384,6 +1375,9 @@ server test step */ /* No comment provided by engineer. */ "Continue" = "Продължи"; +/* No comment provided by engineer. */ +"Contribute" = "Допринеси"; + /* No comment provided by engineer. */ "Copy" = "Копирай"; @@ -1393,9 +1387,6 @@ server test step */ /* alert message */ "Correct name to %@?" = "Поправи име на %@?"; -/* No comment provided by engineer. */ -"Create" = "Създаване"; - /* No comment provided by engineer. */ "Create 1-time link" = "Създаване на еднократна препратка"; @@ -1802,7 +1793,7 @@ chat item action */ /* No comment provided by engineer. */ "Edit group profile" = "Редактирай групов профил"; -/* No comment provided by engineer. */ +/* alert button */ "Enable" = "Активирай"; /* No comment provided by engineer. */ @@ -1964,7 +1955,7 @@ chat item action */ /* No comment provided by engineer. */ "error" = "грешка"; -/* No comment provided by engineer. */ +/* conn error description */ "Error" = "Грешка при свързване със сървъра"; /* No comment provided by engineer. */ @@ -2306,7 +2297,7 @@ server test error */ /* No comment provided by engineer. */ "Group invitation is no longer valid, it was removed by sender." = "Груповата покана вече е невалидна, премахната е от подателя."; -/* No comment provided by engineer. */ +/* chat link info line */ "Group link" = "Групов линк"; /* No comment provided by engineer. */ @@ -2502,7 +2493,7 @@ server test error */ "Initial role" = "Първоначална роля"; /* No comment provided by engineer. */ -"Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat)" = "Инсталирайте [SimpleX Chat за терминал](https://github.com/simplex-chat/simplex-chat)"; +"Install SimpleX Chat for terminal" = "Инсталирайте SimpleX Chat за терминал"; /* No comment provided by engineer. */ "Instant" = "Мигновено"; @@ -2519,7 +2510,7 @@ server test error */ /* No comment provided by engineer. */ "invalid chat data" = "невалидни данни за чат"; -/* No comment provided by engineer. */ +/* conn error description */ "Invalid connection link" = "Невалиден линк за връзка"; /* invalid chat item */ @@ -3040,7 +3031,7 @@ alert button new chat action */ "Ok" = "Ок"; -/* No comment provided by engineer. */ +/* alert button */ "OK" = "ОК"; /* No comment provided by engineer. */ @@ -3103,7 +3094,8 @@ new chat action */ /* No comment provided by engineer. */ "Only your contact can send voice messages." = "Само вашият контакт може да изпраща гласови съобщения."; -/* alert action */ +/* alert action +alert button */ "Open" = "Отвори"; /* new chat action */ @@ -3271,9 +3263,6 @@ new chat action */ /* No comment provided by engineer. */ "Profile password" = "Профилна парола"; -/* alert message */ -"Profile update will be sent to your contacts." = "Актуализацията на профила ще бъде изпратена до вашите контакти."; - /* No comment provided by engineer. */ "Prohibit audio/video calls." = "Забрани аудио/видео разговорите."; @@ -3338,16 +3327,10 @@ new chat action */ "Read more" = "Прочетете още"; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)." = "Прочетете повече в [Ръководство за потребителя](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)."; +"Read more in our GitHub repository." = "Прочетете повече в нашето GitHub хранилище."; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)." = "Прочетете повече в [Ръководство за потребителя](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)."; - -/* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends)." = "Прочетете повече в [Ръководство на потребителя](https://simplex.chat/docs/guide/readme.html#connect-to-friends)."; - -/* No comment provided by engineer. */ -"Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme)." = "Прочетете повече в нашето [GitHub хранилище](https://github.com/simplex-chat/simplex-chat#readme)."; +"Read more in User Guide." = "Прочетете повече в Ръководство за потребителя."; /* No comment provided by engineer. */ "Receipts are disabled" = "Потвърждениeто за доставка е деактивирано"; @@ -3782,18 +3765,12 @@ chat item action */ /* No comment provided by engineer. */ "Share address" = "Сподели адрес"; -/* alert title */ -"Share address with contacts?" = "Сподели адреса с контактите?"; - /* No comment provided by engineer. */ "Share link" = "Сподели линк"; /* No comment provided by engineer. */ "Share this 1-time invite link" = "Сподели този еднократен линк за връзка"; -/* No comment provided by engineer. */ -"Share with contacts" = "Сподели с контактите"; - /* No comment provided by engineer. */ "Show calls in phone history" = "Показване на обажданията в хронологията на телефона"; @@ -3881,6 +3858,9 @@ chat item action */ /* chat item text */ "standard end-to-end encryption" = "стандартно криптиране от край до край"; +/* No comment provided by engineer. */ +"Star on GitHub" = "Звезда в GitHub"; + /* No comment provided by engineer. */ "Start chat" = "Започни чат"; diff --git a/apps/ios/cs.lproj/Localizable.strings b/apps/ios/cs.lproj/Localizable.strings index 0031c2421b..e63d3c0cc9 100644 --- a/apps/ios/cs.lproj/Localizable.strings +++ b/apps/ios/cs.lproj/Localizable.strings @@ -25,15 +25,9 @@ /* No comment provided by engineer. */ "(this device v%@)" = "(toto zařízení v%@)"; -/* No comment provided by engineer. */ -"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Přispějte](https://github.com/simplex-chat/simplex-chat#contribute)"; - /* No comment provided by engineer. */ "[Send us email](mailto:chat@simplex.chat)" = "[Pošlete nám e-mail](mailto:chat@simplex.chat)"; -/* No comment provided by engineer. */ -"[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[Hvězda na GitHubu](https://github.com/simplex-chat/simplex-chat)"; - /* No comment provided by engineer. */ "**Create 1-time link**: to create and share a new invitation link." = "**Vytvořit jednorázový odkaz**: pro vytvoření a sdílení nové pozvánky."; @@ -374,9 +368,6 @@ swipe action */ /* No comment provided by engineer. */ "Active connections" = "Aktivní spojení"; -/* No comment provided by engineer. */ -"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Přidejte adresu do svého profilu, aby ji vaše kontakty mohly sdílet s dalšími lidmi. Aktualizace profilu bude zaslána vašim kontaktům."; - /* No comment provided by engineer. */ "Add friends" = "Přidat přátele"; @@ -746,7 +737,7 @@ swipe action */ /* No comment provided by engineer. */ "Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Bulharský, finský, thajský a ukrajinský - díky uživatelům a [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!"; -/* No comment provided by engineer. */ +/* chat link info line */ "Business address" = "Obchodní adresa"; /* No comment provided by engineer. */ @@ -1017,7 +1008,7 @@ server test step */ /* alert title */ "Connection error" = "Chyba připojení"; -/* No comment provided by engineer. */ +/* conn error description */ "Connection error (AUTH)" = "Chyba spojení (AUTH)"; /* chat list item title (it should not be shown */ @@ -1065,15 +1056,15 @@ server test step */ /* No comment provided by engineer. */ "Continue" = "Pokračovat"; +/* No comment provided by engineer. */ +"Contribute" = "Přispějte"; + /* No comment provided by engineer. */ "Copy" = "Kopírovat"; /* No comment provided by engineer. */ "Core version: v%@" = "Verze jádra: v%@"; -/* No comment provided by engineer. */ -"Create" = "Vytvořit"; - /* server test step */ "Create file" = "Vytvořit soubor"; @@ -1416,7 +1407,7 @@ alert button */ /* No comment provided by engineer. */ "Edit group profile" = "Upravit profil skupiny"; -/* No comment provided by engineer. */ +/* alert button */ "Enable" = "Zapnout"; /* No comment provided by engineer. */ @@ -1548,7 +1539,7 @@ alert button */ /* No comment provided by engineer. */ "error" = "chyba"; -/* No comment provided by engineer. */ +/* conn error description */ "Error" = "Chyba"; /* No comment provided by engineer. */ @@ -1824,7 +1815,7 @@ server test error */ /* No comment provided by engineer. */ "Group invitation is no longer valid, it was removed by sender." = "Skupinová pozvánka již není platná, byla odstraněna odesílatelem."; -/* No comment provided by engineer. */ +/* chat link info line */ "Group link" = "Odkaz na skupinu"; /* No comment provided by engineer. */ @@ -1993,7 +1984,7 @@ server test error */ "Initial role" = "Počáteční role"; /* No comment provided by engineer. */ -"Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat)" = "Nainstalujte [SimpleX Chat pro terminál](https://github.com/simplex-chat/simplex-chat)"; +"Install SimpleX Chat for terminal" = "Nainstalujte SimpleX Chat pro terminál"; /* No comment provided by engineer. */ "Instant" = "Okamžitě"; @@ -2010,7 +2001,7 @@ server test error */ /* No comment provided by engineer. */ "invalid chat data" = "neplatná chat data"; -/* No comment provided by engineer. */ +/* conn error description */ "Invalid connection link" = "Neplatný odkaz na spojení"; /* invalid chat item */ @@ -2489,7 +2480,8 @@ new chat action */ /* No comment provided by engineer. */ "Only your contact can send voice messages." = "Hlasové zprávy může odesílat pouze váš kontakt."; -/* alert action */ +/* alert action +alert button */ "Open" = "Otevřít"; /* new chat action */ @@ -2606,9 +2598,6 @@ new chat action */ /* No comment provided by engineer. */ "Profile password" = "Heslo profilu"; -/* alert message */ -"Profile update will be sent to your contacts." = "Aktualizace profilu bude zaslána vašim kontaktům."; - /* No comment provided by engineer. */ "Prohibit audio/video calls." = "Zákaz audio/video hovorů."; @@ -2661,16 +2650,10 @@ new chat action */ "Read more" = "Přečíst více"; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)." = "Více informací v [průvodci uživatele](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)."; +"Read more in our GitHub repository." = "Přečtěte si více v našem GitHub repozitáři."; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)." = "Další informace naleznete v [Uživatelské příručce](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)."; - -/* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends)." = "Přečtěte si více v [Uživatelské příručce](https://simplex.chat/docs/guide/readme.html#connect-to-friends)."; - -/* No comment provided by engineer. */ -"Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme)." = "Přečtěte si více v našem [GitHub repozitáři](https://github.com/simplex-chat/simplex-chat#readme)."; +"Read more in User Guide." = "Více informací v průvodci uživatele."; /* No comment provided by engineer. */ "Receipts are disabled" = "Informace o dodání jsou zakázány"; @@ -3036,15 +3019,9 @@ chat item action */ /* No comment provided by engineer. */ "Share address" = "Sdílet adresu"; -/* alert title */ -"Share address with contacts?" = "Sdílet adresu s kontakty?"; - /* No comment provided by engineer. */ "Share link" = "Sdílet odkaz"; -/* No comment provided by engineer. */ -"Share with contacts" = "Sdílet s kontakty"; - /* No comment provided by engineer. */ "Show calls in phone history" = "Ukaž hovory v historii telefonu"; @@ -3114,6 +3091,9 @@ chat item action */ /* notification title */ "Somebody" = "Někdo"; +/* No comment provided by engineer. */ +"Star on GitHub" = "Hvězda na GitHubu"; + /* No comment provided by engineer. */ "Start chat" = "Začít chat"; @@ -3578,7 +3558,7 @@ server test failure */ "You can set lock screen notification preview via settings." = "Náhled oznámení na zamykací obrazovce můžete změnit v nastavení."; /* No comment provided by engineer. */ -"You can share a link or a QR code - anybody will be able to join the group. You won't lose members of the group if you later delete it." = "Můžete sdílet odkaz nebo QR kód - ke skupině se bude moci připojit kdokoli. O členy skupiny nepřijdete, pokud ji později odstraníte."; +"You can share a link or a QR code - anybody will be able to join the group. You won't lose members of the group if you later delete it." = "Můžete sdílet odkaz nebo QR kód - ke skupině se bude moci připojit kdokoli. O členy skupiny nepřijdete, pokud odkaz později smažete."; /* No comment provided by engineer. */ "You can share this address with your contacts to let them connect with **%@**." = "Tuto adresu můžete sdílet s vašimi kontakty, abyse se mohli spojit s **%@**."; diff --git a/apps/ios/de.lproj/Localizable.strings b/apps/ios/de.lproj/Localizable.strings index 7137ccac8b..739f2e7721 100644 --- a/apps/ios/de.lproj/Localizable.strings +++ b/apps/ios/de.lproj/Localizable.strings @@ -25,15 +25,9 @@ /* No comment provided by engineer. */ "(this device v%@)" = "(Dieses Gerät hat v%@)"; -/* No comment provided by engineer. */ -"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Unterstützen Sie uns](https://github.com/simplex-chat/simplex-chat#contribute)"; - /* No comment provided by engineer. */ "[Send us email](mailto:chat@simplex.chat)" = "[Senden Sie uns eine E-Mail](mailto:chat@simplex.chat)"; -/* No comment provided by engineer. */ -"[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[Stern auf GitHub vergeben](https://github.com/simplex-chat/simplex-chat)"; - /* No comment provided by engineer. */ "**Create 1-time link**: to create and share a new invitation link." = "**Kontakt hinzufügen**: Um einen neuen Einladungslink zu erstellen."; @@ -64,6 +58,9 @@ /* No comment provided by engineer. */ "**Scan / Paste link**: to connect via a link you received." = "**Link scannen / einfügen**: Um eine Verbindung über den Link herzustellen, den Sie erhalten haben."; +/* No comment provided by engineer. */ +"**Test relay** to retrieve its name." = "**Relais testen** um seinen Namen abzurufen."; + /* No comment provided by engineer. */ "**Warning**: Instant push notifications require passphrase saved in Keychain." = "**Warnung**: Sofortige Push-Benachrichtigungen erfordern die Eingabe eines Passworts, welches in Ihrem Schlüsselbund gespeichert ist."; @@ -184,15 +181,38 @@ /* integrity error chat item */ "%d skipped message(s)" = "%d übersprungene Nachricht(en)"; +/* channel subscriber count */ +"%d subscriber" = "%d Abonnent"; + +/* channel subscriber count */ +"%d subscribers" = "%d Abonnenten"; + /* time interval */ "%d weeks" = "%d Wochen"; +/* channel creation progress +channel relay bar progress */ +"%d/%d relays active" = "%1$d/%2$d Relais aktiv"; + +/* channel creation progress with errors +channel relay bar */ +"%d/%d relays active, %d failed" = "%1$d/%2$d Relais aktiv, %3$d fehlgeschlagen"; + +/* channel subscriber relay bar progress */ +"%d/%d relays connected" = "%1$d/%2$d Relais verbunden"; + +/* channel subscriber relay bar */ +"%d/%d relays connected, %d errors" = "%1$d/%2$d Relais verbunden, %3$d Fehler"; + /* No comment provided by engineer. */ "%lld" = "%lld"; /* No comment provided by engineer. */ "%lld %@" = "%lld %@"; +/* No comment provided by engineer. */ +"%lld channel events" = "%lld Kanalereignisse"; + /* No comment provided by engineer. */ "%lld contact(s) selected" = "%lld Kontakt(e) ausgewählt"; @@ -371,6 +391,9 @@ swipe action */ /* alert title */ "Accept member" = "Mitglied annehmen"; +/* No comment provided by engineer. */ +"accepted" = "Angenommen"; + /* rcv group event chat item */ "accepted %@" = "%@ angenommen"; @@ -392,15 +415,15 @@ swipe action */ /* No comment provided by engineer. */ "Acknowledgement errors" = "Fehler bei der Bestätigung"; +/* No comment provided by engineer. */ +"active" = "Aktiv"; + /* token status text */ "Active" = "Aktiv"; /* No comment provided by engineer. */ "Active connections" = "Aktive Verbindungen"; -/* No comment provided by engineer. */ -"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Fügen Sie die Adresse Ihrem Profil hinzu, damit Ihre Kontakte sie mit anderen Personen teilen können. Es wird eine Profilaktualisierung an Ihre Kontakte gesendet."; - /* No comment provided by engineer. */ "Add friends" = "Freunde aufnehmen"; @@ -575,6 +598,9 @@ swipe action */ /* No comment provided by engineer. */ "Allow sending direct messages to members." = "Das Senden von Direktnachrichten an Gruppenmitglieder erlauben."; +/* No comment provided by engineer. */ +"Allow sending direct messages to subscribers." = "Das Senden von Direktnachrichten an Abonnenten erlauben."; + /* No comment provided by engineer. */ "Allow sending disappearing messages." = "Das Senden von verschwindenden Nachrichten erlauben."; @@ -851,6 +877,9 @@ swipe action */ /* No comment provided by engineer. */ "Block member?" = "Mitglied blockieren?"; +/* No comment provided by engineer. */ +"Block subscriber for all?" = "Abonnent für alle blockieren?"; + /* marked deleted chat item preview text */ "blocked" = "Blockiert"; @@ -894,10 +923,13 @@ marked deleted chat item preview text */ /* No comment provided by engineer. */ "Both you and your contact can send voice messages." = "Sowohl Ihr Kontakt, als auch Sie können Sprachnachrichten senden."; +/* compose placeholder for channel owner */ +"Broadcast" = "Broadcast"; + /* No comment provided by engineer. */ "Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Bulgarisch, Finnisch, Thailändisch und Ukrainisch - Dank der Nutzer und [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!"; -/* No comment provided by engineer. */ +/* chat link info line */ "Business address" = "Geschäftliche Adresse"; /* No comment provided by engineer. */ @@ -1038,6 +1070,45 @@ set passcode view */ /* chat item text */ "changing address…" = "Wechsel der Empfängeradresse wurde gestartet…"; +/* shown as sender role for channel messages */ +"channel" = "Kanal"; + +/* No comment provided by engineer. */ +"Channel" = "Kanal"; + +/* No comment provided by engineer. */ +"Channel display name" = "Anzeigename des Kanals"; + +/* No comment provided by engineer. */ +"Channel full name (optional)" = "Vollständiger Kanalname (optional)"; + +/* No comment provided by engineer. */ +"Channel image" = "Kanalbild"; + +/* chat link info line */ +"Channel link" = "Kanallink"; + +/* No comment provided by engineer. */ +"Channel profile" = "Kanalprofil"; + +/* No comment provided by engineer. */ +"Channel profile is stored on subscribers' devices and on the chat relays." = "Das Kanalprofil wird auf den Geräten der Abonnenten und auf den Chat‑Relais gespeichert."; + +/* snd group event chat item */ +"channel profile updated" = "Kanalprofil wurde aktualisiert"; + +/* alert message */ +"Channel profile was changed. If you save it, the updated profile will be sent to channel subscribers." = "Das Kanalprofil wurde geändert. Beim Speichern wird das aktualisierte Profil an die Abonnenten des Kanals gesendet."; + +/* No comment provided by engineer. */ +"Channel will be deleted for all subscribers - this cannot be undone!" = "Der Kanal wird für alle Abonnenten gelöscht. Dies kann nicht rückgängig gemacht werden!"; + +/* No comment provided by engineer. */ +"Channel will be deleted for you - this cannot be undone!" = "Der Kanal wird für Sie gelöscht. Dies kann nicht rückgängig gemacht werden!"; + +/* alert message */ +"Channel will start working with %d of %d relays. Proceed?" = "Der Kanal wird mit %1$d von %2$d Relais gestartet. Fortfahren?"; + /* No comment provided by engineer. */ "Chat" = "Chat"; @@ -1089,6 +1160,18 @@ set passcode view */ /* No comment provided by engineer. */ "Chat profile" = "Benutzerprofil"; +/* No comment provided by engineer. */ +"Chat relay" = "Chat-Relais"; + +/* No comment provided by engineer. */ +"Chat relays" = "Chat-Relais"; + +/* No comment provided by engineer. */ +"Chat relays forward messages in channels you create." = "Chat‑Relais leiten Nachrichten in den von Ihnen erstellten Kanälen weiter."; + +/* No comment provided by engineer. */ +"Chat relays forward messages to channel subscribers." = "Chat‑Relais leiten Nachrichten an Kanal-Abonnenten weiter."; + /* No comment provided by engineer. */ "Chat theme" = "Chat-Design"; @@ -1119,6 +1202,12 @@ set passcode view */ /* No comment provided by engineer. */ "Check messages when allowed." = "Wenn es erlaubt ist, Nachrichten überprüfen."; +/* alert message */ +"Check relay address and try again." = "Relais-Adresse überprüfen und erneut versuchen."; + +/* alert message */ +"Check relay name and try again." = "Relais-Name überprüfen und erneut versuchen."; + /* alert title */ "Check server address and try again." = "Überprüfen Sie die Serveradresse und versuchen Sie es nochmal."; @@ -1212,6 +1301,9 @@ set passcode view */ /* No comment provided by engineer. */ "Configure ICE servers" = "ICE-Server konfigurieren"; +/* No comment provided by engineer. */ +"Configure relays" = "Relais konfigurieren"; + /* No comment provided by engineer. */ "Configure server operators" = "Server-Betreiber konfigurieren"; @@ -1348,7 +1440,7 @@ server test step */ /* alert title */ "Connection error" = "Verbindungsfehler"; -/* No comment provided by engineer. */ +/* conn error description */ "Connection error (AUTH)" = "Verbindungsfehler (AUTH)"; /* chat list item title (it should not be shown */ @@ -1453,6 +1545,9 @@ server test step */ /* No comment provided by engineer. */ "Continue" = "Weiter"; +/* No comment provided by engineer. */ +"Contribute" = "Unterstützen Sie uns"; + /* No comment provided by engineer. */ "Conversation deleted!" = "Chat-Inhalte entfernt!"; @@ -1471,9 +1566,6 @@ server test step */ /* alert message */ "Correct name to %@?" = "Richtiger Name für %@?"; -/* No comment provided by engineer. */ -"Create" = "Erstellen"; - /* No comment provided by engineer. */ "Create 1-time link" = "Einmal-Link erstellen"; @@ -1501,6 +1593,12 @@ server test step */ /* No comment provided by engineer. */ "Create profile" = "Profil erstellen"; +/* No comment provided by engineer. */ +"Create public channel" = "Öffentlichen Kanal erstellen"; + +/* No comment provided by engineer. */ +"Create public channel (BETA)" = "Öffentlichen Kanal erstellen (BETA)"; + /* server test step */ "Create queue" = "Erzeuge Warteschlange"; @@ -1525,6 +1623,9 @@ server test step */ /* No comment provided by engineer. */ "Creating archive link" = "Archiv-Link erzeugen"; +/* No comment provided by engineer. */ +"Creating channel" = "Kanal wird erstellt"; + /* No comment provided by engineer. */ "Creating link…" = "Link wird erstellt…"; @@ -1630,6 +1731,9 @@ server test step */ /* No comment provided by engineer. */ "Decentralized" = "Dezentral"; +/* relay test step */ +"Decode link" = "Link dekodieren"; + /* message decrypt error item */ "Decryption error" = "Entschlüsselungsfehler"; @@ -1671,6 +1775,12 @@ swipe action */ /* No comment provided by engineer. */ "Delete and notify contact" = "Kontakt löschen und benachrichtigen"; +/* No comment provided by engineer. */ +"Delete channel" = "Kanal löschen"; + +/* No comment provided by engineer. */ +"Delete channel?" = "Kanal löschen?"; + /* No comment provided by engineer. */ "Delete chat" = "Chat löschen"; @@ -1774,6 +1884,9 @@ alert button */ /* server test step */ "Delete queue" = "Lösche Warteschlange"; +/* No comment provided by engineer. */ +"Delete relay" = "Relais löschen"; + /* No comment provided by engineer. */ "Delete report" = "Meldung löschen"; @@ -1798,6 +1911,9 @@ alert button */ /* copied message info */ "Deleted at: %@" = "Gelöscht um: %@"; +/* rcv group event chat item */ +"deleted channel" = "Kanal gelöscht"; + /* rcv direct event chat item */ "deleted contact" = "Gelöschter Kontakt"; @@ -1888,6 +2004,9 @@ alert button */ /* No comment provided by engineer. */ "Direct messages between members are prohibited." = "In dieser Gruppe sind Direktnachrichten zwischen Mitgliedern nicht erlaubt."; +/* No comment provided by engineer. */ +"Direct messages between subscribers are prohibited." = "Direktnachrichten zwischen Abonnenten sind nicht erlaubt."; + /* No comment provided by engineer. */ "Disable (keep overrides)" = "Deaktivieren (vorgenommene Einstellungen bleiben erhalten)"; @@ -1945,6 +2064,9 @@ alert button */ /* No comment provided by engineer. */ "Do not send history to new members." = "Den Nachrichtenverlauf nicht an neue Mitglieder senden."; +/* No comment provided by engineer. */ +"Do not send history to new subscribers." = "Den Nachrichtenverlauf nicht an neue Abonnenten senden."; + /* No comment provided by engineer. */ "Do NOT send messages directly, even if your or destination server does not support private routing." = "Nachrichten werden nicht direkt versendet, selbst wenn Ihr oder der Zielserver kein privates Routing unterstützt."; @@ -2027,18 +2149,24 @@ chat item action */ /* chat item action */ "Edit" = "Bearbeiten"; +/* No comment provided by engineer. */ +"Edit channel profile" = "Kanalprofil bearbeiten"; + /* No comment provided by engineer. */ "Edit group profile" = "Gruppenprofil bearbeiten"; /* No comment provided by engineer. */ "Empty message!" = "Leere Nachricht!"; -/* No comment provided by engineer. */ +/* alert button */ "Enable" = "Aktivieren"; /* No comment provided by engineer. */ "Enable (keep overrides)" = "Aktivieren (vorgenommene Einstellungen bleiben erhalten)"; +/* channel creation warning */ +"Enable at least one chat relay in Network & Servers." = "Aktivieren Sie mindestens ein Chat‑Relais unter 'Netzwerk & Server'."; + /* alert title */ "Enable automatic message deletion?" = "Automatisches Löschen von Nachrichten aktivieren?"; @@ -2171,6 +2299,9 @@ chat item action */ /* call status */ "ended call %@" = "Anruf beendet %@"; +/* No comment provided by engineer. */ +"Enter channel name…" = "Kanalname eingeben…"; + /* No comment provided by engineer. */ "Enter correct passphrase." = "Geben Sie das korrekte Passwort ein."; @@ -2189,6 +2320,9 @@ chat item action */ /* No comment provided by engineer. */ "Enter password above to show!" = "Für die Anzeige das Passwort im Suchfeld eingeben!"; +/* No comment provided by engineer. */ +"Enter relay name…" = "Relais-Name eingeben…"; + /* No comment provided by engineer. */ "Enter server manually" = "Geben Sie den Server manuell ein"; @@ -2207,7 +2341,7 @@ chat item action */ /* No comment provided by engineer. */ "error" = "Fehler"; -/* No comment provided by engineer. */ +/* conn error description */ "Error" = "Fehler"; /* No comment provided by engineer. */ @@ -2225,6 +2359,9 @@ chat item action */ /* No comment provided by engineer. */ "Error adding member(s)" = "Fehler beim Hinzufügen von Mitgliedern"; +/* alert title */ +"Error adding relay" = "Fehler beim Hinzufügen des Relais"; + /* alert title */ "Error adding server" = "Fehler beim Hinzufügen des Servers"; @@ -2261,6 +2398,9 @@ chat item action */ /* No comment provided by engineer. */ "Error creating address" = "Fehler beim Erstellen der Adresse"; +/* alert title */ +"Error creating channel" = "Fehler beim Erstellen des Kanals"; + /* No comment provided by engineer. */ "Error creating group" = "Fehler beim Erzeugen der Gruppe"; @@ -2366,6 +2506,9 @@ chat item action */ /* No comment provided by engineer. */ "Error resetting statistics" = "Fehler beim Zurücksetzen der Statistiken"; +/* No comment provided by engineer. */ +"Error saving channel profile" = "Fehler beim Speichern des Kanalprofils"; + /* alert title */ "Error saving chat list" = "Fehler beim Speichern der Chat-Liste"; @@ -2450,6 +2593,9 @@ chat item action */ /* No comment provided by engineer. */ "Error: " = "Fehler: "; +/* receive error chat item */ +"error: %@" = "Fehler: %@"; + /* alert message file error text snd error text */ @@ -2719,6 +2865,9 @@ servers warning */ /* No comment provided by engineer. */ "Further reduced battery usage" = "Weiter reduzierter Batterieverbrauch"; +/* relay test step */ +"Get link" = "Link erhalten"; + /* No comment provided by engineer. */ "Get notified when mentioned." = "Bei Erwähnung benachrichtigt werden."; @@ -2767,7 +2916,7 @@ servers warning */ /* No comment provided by engineer. */ "group is deleted" = "Gruppe wurde gelöscht"; -/* No comment provided by engineer. */ +/* chat link info line */ "Group link" = "Gruppen-Link"; /* No comment provided by engineer. */ @@ -2839,6 +2988,9 @@ servers warning */ /* No comment provided by engineer. */ "History is not sent to new members." = "Der Nachrichtenverlauf wird nicht an neue Gruppenmitglieder gesendet."; +/* No comment provided by engineer. */ +"History is not sent to new subscribers." = "Der Nachrichtenverlauf wird nicht an neue Abonnenten gesendet."; + /* time unit */ "hours" = "Stunden"; @@ -3002,7 +3154,7 @@ servers warning */ "Initial role" = "Anfängliche Rolle"; /* No comment provided by engineer. */ -"Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat)" = "Installieren Sie [SimpleX Chat als Terminalanwendung](https://github.com/simplex-chat/simplex-chat)"; +"Install SimpleX Chat for terminal" = "Installieren Sie SimpleX Chat als Terminalanwendung"; /* No comment provided by engineer. */ "Instant" = "Sofort"; @@ -3037,7 +3189,7 @@ servers warning */ /* No comment provided by engineer. */ "invalid chat data" = "Ungültige Chat-Daten"; -/* No comment provided by engineer. */ +/* conn error description */ "Invalid connection link" = "Ungültiger Verbindungslink"; /* invalid chat item */ @@ -3058,6 +3210,12 @@ servers warning */ /* No comment provided by engineer. */ "Invalid QR code" = "Ungültiger QR-Code"; +/* alert title */ +"Invalid relay address!" = "Ungültige Relais-Adresse!"; + +/* alert title */ +"Invalid relay name!" = "Ungültiger Relais-Name!"; + /* No comment provided by engineer. */ "Invalid response" = "Ungültige Reaktion"; @@ -3151,6 +3309,9 @@ servers warning */ /* No comment provided by engineer. */ "Join as %@" = "Als %@ beitreten"; +/* No comment provided by engineer. */ +"Join channel" = "Kanal beitreten"; + /* new chat sheet title */ "Join group" = "Treten Sie der Gruppe bei"; @@ -3199,6 +3360,12 @@ servers warning */ /* swipe action */ "Leave" = "Verlassen"; +/* No comment provided by engineer. */ +"Leave channel" = "Kanal verlassen"; + +/* No comment provided by engineer. */ +"Leave channel?" = "Kanal verlassen?"; + /* No comment provided by engineer. */ "Leave chat" = "Chat verlassen"; @@ -3226,6 +3393,9 @@ servers warning */ /* No comment provided by engineer. */ "Limitations" = "Einschränkungen"; +/* No comment provided by engineer. */ +"link" = "Link"; + /* No comment provided by engineer. */ "Link mobile and desktop apps! 🔗" = "Verknüpfe Mobiltelefon- und Desktop-Apps! 🔗"; @@ -3400,6 +3570,9 @@ servers warning */ /* No comment provided by engineer. */ "Message draft" = "Nachrichtenentwurf"; +/* No comment provided by engineer. */ +"Message error" = "Übertragungsfehler"; + /* item status text */ "Message forwarded" = "Nachricht weitergeleitet"; @@ -3598,6 +3771,9 @@ servers warning */ /* delete after time */ "never" = "nie"; +/* No comment provided by engineer. */ +"new" = "Neu"; + /* token status text */ "New" = "Neu"; @@ -3607,6 +3783,9 @@ servers warning */ /* No comment provided by engineer. */ "New chat experience 🎉" = "Neue Chat-Erfahrung 🎉"; +/* No comment provided by engineer. */ +"New chat relay" = "Neues Chat-Relais"; + /* notification */ "New contact request" = "Neue Kontaktanfrage"; @@ -3667,6 +3846,12 @@ servers warning */ /* Authentication unavailable */ "No app password" = "Kein App-Passwort"; +/* No comment provided by engineer. */ +"No chat relays" = "Keine Chat-Relais"; + +/* servers warning */ +"No chat relays enabled." = "Es sind keine Chat-Relais aktiviert."; + /* No comment provided by engineer. */ "No chats" = "Keine Chats"; @@ -3766,6 +3951,9 @@ servers warning */ /* No comment provided by engineer. */ "No user identifiers." = "Keine Benutzerkennungen."; +/* alert title */ +"Not all relays connected" = "Es sind nicht alle Relais verbunden"; + /* No comment provided by engineer. */ "Not compatible!" = "Nicht kompatibel!"; @@ -3822,7 +4010,7 @@ alert button new chat action */ "Ok" = "Ok"; -/* No comment provided by engineer. */ +/* alert button */ "OK" = "OK"; /* No comment provided by engineer. */ @@ -3844,7 +4032,7 @@ new chat action */ "Onion hosts will not be used." = "Onion-Hosts werden nicht verwendet."; /* No comment provided by engineer. */ -"Only chat owners can change preferences." = "Nur Chat-Eigentümer können die Präferenzen ändern."; +"Only chat owners can change preferences." = "Präferenzen können nur von Chat-Eigentümern geändert werden."; /* No comment provided by engineer. */ "Only client devices store user profiles, contacts, groups, and messages." = "Nur die Endgeräte speichern die Benutzerprofile, Kontakte, Gruppen und Nachrichten, welche über eine **2-Schichten Ende-zu-Ende-Verschlüsselung** gesendet werden."; @@ -3903,12 +4091,16 @@ new chat action */ /* No comment provided by engineer. */ "Only your contact can send voice messages." = "Nur Ihr Kontakt kann Sprachnachrichten versenden."; -/* alert action */ +/* alert action +alert button */ "Open" = "Öffnen"; /* No comment provided by engineer. */ "Open changes" = "Änderungen öffnen"; +/* new chat action */ +"Open channel" = "Kanal öffnen"; + /* new chat action */ "Open chat" = "Chat öffnen"; @@ -3933,6 +4125,9 @@ new chat action */ /* authentication reason */ "Open migration to another device" = "Migration auf ein anderes Gerät öffnen"; +/* new chat action */ +"Open new channel" = "Neuen Kanal öffnen"; + /* new chat action */ "Open new chat" = "Neuen Chat öffnen"; @@ -3999,9 +4194,15 @@ new chat action */ /* member role */ "owner" = "Eigentümer"; +/* No comment provided by engineer. */ +"Owner" = "Eigentümer"; + /* feature role */ "owners" = "Eigentümer"; +/* No comment provided by engineer. */ +"Owners" = "Eigentümer"; + /* No comment provided by engineer. */ "Passcode" = "Zugangscode"; @@ -4137,6 +4338,12 @@ new chat action */ /* No comment provided by engineer. */ "Preserve the last message draft, with attachments." = "Den letzten Nachrichtenentwurf, auch mit seinen Anhängen, aufbewahren."; +/* No comment provided by engineer. */ +"Preset relay address" = "Voreingestellte Relais-Adresse"; + +/* No comment provided by engineer. */ +"Preset relay name" = "Voreingestellter Relais-Name"; + /* No comment provided by engineer. */ "Preset server address" = "Voreingestellte Serveradresse"; @@ -4188,6 +4395,9 @@ new chat action */ /* alert title */ "Private routing timeout" = "Zeitüberschreitung der privaten Routing-Sitzung"; +/* alert action */ +"Proceed" = "Fortfahren"; + /* No comment provided by engineer. */ "Profile and server connections" = "Profil und Serververbindungen"; @@ -4203,9 +4413,6 @@ new chat action */ /* No comment provided by engineer. */ "Profile theme" = "Profil-Design"; -/* alert message */ -"Profile update will be sent to your contacts." = "Profil-Aktualisierung wird an Ihre Kontakte gesendet."; - /* No comment provided by engineer. */ "Prohibit audio/video calls." = "Audio-/Video-Anrufe nicht erlauben."; @@ -4224,6 +4431,9 @@ new chat action */ /* No comment provided by engineer. */ "Prohibit sending direct messages to members." = "Das Senden von Direktnachrichten an Gruppenmitglieder nicht erlauben."; +/* No comment provided by engineer. */ +"Prohibit sending direct messages to subscribers." = "Das Senden von Direktnachrichten an Abonnenten nicht erlauben."; + /* No comment provided by engineer. */ "Prohibit sending disappearing messages." = "Das Senden von verschwindenden Nachrichten nicht erlauben."; @@ -4294,16 +4504,10 @@ new chat action */ "Read more" = "Mehr erfahren"; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)." = "Lesen Sie mehr dazu im [Benutzerhandbuch](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)."; +"Read more in our GitHub repository." = "Erfahren Sie in unserem GitHub-Repository mehr dazu."; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)." = "Mehr dazu in der [Benutzeranleitung](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses) lesen."; - -/* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends)." = "Mehr dazu in der [Benutzeranleitung](https://simplex.chat/docs/guide/readme.html#connect-to-friends) lesen."; - -/* No comment provided by engineer. */ -"Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme)." = "Erfahren Sie in unserem [GitHub-Repository](https://github.com/simplex-chat/simplex-chat#readme) mehr dazu."; +"Read more in User Guide." = "Lesen Sie mehr dazu im Benutzerhandbuch."; /* No comment provided by engineer. */ "Receipts are disabled" = "Bestätigungen sind deaktiviert"; @@ -4412,12 +4616,30 @@ swipe action */ /* call status */ "rejected call" = "Abgelehnter Anruf"; +/* member role */ +"relay" = "Relais"; + +/* No comment provided by engineer. */ +"Relay" = "Relais"; + +/* alert title */ +"Relay address" = "Relais-Adresse"; + +/* alert title */ +"Relay connection failed" = "Relais-Verbindung fehlgeschlagen"; + +/* No comment provided by engineer. */ +"Relay link" = "Relais-Link"; + /* No comment provided by engineer. */ "Relay server is only used if necessary. Another party can observe your IP address." = "Relais-Server werden nur genutzt, wenn sie benötigt werden. Ihre IP-Adresse kann von Anderen erfasst werden."; /* No comment provided by engineer. */ "Relay server protects your IP address, but it can observe the duration of the call." = "Relais-Server schützen Ihre IP-Adresse, aber sie können die Anrufdauer erfassen."; +/* No comment provided by engineer. */ +"Relay test failed!" = "Relais-Test fehlgeschlagen!"; + /* alert action */ "Remove" = "Entfernen"; @@ -4442,9 +4664,18 @@ swipe action */ /* No comment provided by engineer. */ "Remove passphrase from keychain?" = "Passwort aus dem Schlüsselbund entfernen?"; +/* No comment provided by engineer. */ +"Remove subscriber" = "Abonnent entfernen"; + +/* alert title */ +"Remove subscriber?" = "Abonnent entfernen?"; + /* No comment provided by engineer. */ "removed" = "entfernt"; +/* receive error chat item */ +"removed (%d attempts)" = "Entfernt (%d Versuche)"; + /* rcv group event chat item */ "removed %@" = "hat %@ aus der Gruppe entfernt"; @@ -4632,6 +4863,9 @@ chat item action */ /* alert button */ "Save (and notify members)" = "Speichern (und Mitglieder benachrichtigen)"; +/* alert button */ +"Save (and notify subscribers)" = "Speichern (Abonnenten benachrichtigen)"; + /* alert title */ "Save admission settings?" = "Speichern der Aufnahme-Einstellungen?"; @@ -4647,6 +4881,12 @@ chat item action */ /* No comment provided by engineer. */ "Save and update group profile" = "Gruppen-Profil sichern und aktualisieren"; +/* No comment provided by engineer. */ +"Save channel profile" = "Kanalprofil speichern"; + +/* alert title */ +"Save channel profile?" = "Kanalprofil speichern?"; + /* No comment provided by engineer. */ "Save group profile" = "Gruppenprofil speichern"; @@ -4786,7 +5026,7 @@ chat item action */ "Selected %lld" = "%lld ausgewählt"; /* No comment provided by engineer. */ -"Selected chat preferences prohibit this message." = "Diese Nachricht ist wegen der gewählten Chat-Einstellungen nicht erlaubt."; +"Selected chat preferences prohibit this message." = "Diese Nachricht ist wegen der gewählten Chat-Präferenzen nicht erlaubt."; /* No comment provided by engineer. */ "Self-destruct" = "Selbstzerstörung"; @@ -4822,7 +5062,7 @@ chat item action */ "Send errors" = "Fehler beim Senden"; /* No comment provided by engineer. */ -"Send link previews" = "Link-Vorschau senden"; +"Send link previews" = "Linkvorschau senden"; /* No comment provided by engineer. */ "Send live message" = "Live Nachricht senden"; @@ -4860,6 +5100,9 @@ chat item action */ /* No comment provided by engineer. */ "Send up to 100 last messages to new members." = "Bis zu 100 der letzten Nachrichten an neue Gruppenmitglieder senden."; +/* No comment provided by engineer. */ +"Send up to 100 last messages to new subscribers." = "Bis zu 100 der letzten Nachrichten an neue Abonnenten senden."; + /* No comment provided by engineer. */ "Send your private feedback to groups." = "Senden Sie Ihr privates Feedback an Gruppen."; @@ -4947,6 +5190,9 @@ chat item action */ /* queue info */ "server queue info: %@\n\nlast received msg: %@" = "Server-Warteschlangen-Information: %1$@\n\nZuletzt empfangene Nachricht: %2$@"; +/* relay test error */ +"Server requires authorization to connect to relay, check password." = "Der Server erfordert eine Autorisierung, um eine Verbindung zum Relais herzustellen. Bitte Passwort überprüfen."; + /* server test error */ "Server requires authorization to create queues, check password." = "Der Server erfordert zum Erstellen von Warteschlangen eine Autorisierung. Bitte überprüfen Sie das Passwort."; @@ -5050,9 +5296,6 @@ chat item action */ /* No comment provided by engineer. */ "Share address publicly" = "Die Adresse öffentlich teilen"; -/* alert title */ -"Share address with contacts?" = "Die Adresse mit Kontakten teilen?"; - /* No comment provided by engineer. */ "Share from other apps." = "Aus anderen Apps heraus teilen."; @@ -5068,6 +5311,9 @@ chat item action */ /* No comment provided by engineer. */ "Share profile" = "Profil teilen"; +/* No comment provided by engineer. */ +"Share relay address" = "Relais-Adresse teilen"; + /* No comment provided by engineer. */ "Share SimpleX address on social media." = "Die SimpleX-Adresse auf sozialen Medien teilen."; @@ -5077,9 +5323,6 @@ chat item action */ /* No comment provided by engineer. */ "Share to SimpleX" = "Mit SimpleX teilen"; -/* No comment provided by engineer. */ -"Share with contacts" = "Mit Kontakten teilen"; - /* No comment provided by engineer. */ "Share your address" = "Ihre Adresse teilen"; @@ -5138,7 +5381,7 @@ chat item action */ "SimpleX address settings" = "Einstellungen automatisch akzeptieren"; /* simplex link type */ -"SimpleX channel link" = "SimpleX-Kanal-Link"; +"SimpleX channel link" = "SimpleX-Kanallink"; /* No comment provided by engineer. */ "SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app." = "SimpleX-Chat und Flux haben vereinbart, die von Flux betriebenen Server in die App aufzunehmen."; @@ -5182,6 +5425,9 @@ chat item action */ /* No comment provided by engineer. */ "SimpleX protocols reviewed by Trail of Bits." = "Die SimpleX-Protokolle wurden von Trail of Bits überprüft."; +/* simplex link type */ +"SimpleX relay address" = "SimpleX Relais-Adresse"; + /* No comment provided by engineer. */ "Simplified incognito mode" = "Vereinfachter Inkognito-Modus"; @@ -5234,6 +5480,9 @@ report reason */ /* chat item text */ "standard end-to-end encryption" = "Standard-Ende-zu-Ende-Verschlüsselung"; +/* No comment provided by engineer. */ +"Star on GitHub" = "Stern auf GitHub vergeben"; + /* No comment provided by engineer. */ "Start chat" = "Starten Sie den Chat"; @@ -5300,6 +5549,45 @@ report reason */ /* No comment provided by engineer. */ "Subscribed" = "Abonniert"; +/* No comment provided by engineer. */ +"Subscriber" = "Abonnent"; + +/* chat feature */ +"Subscriber reports" = "Abonnenten-Meldungen"; + +/* alert message */ +"Subscriber will be removed from channel - this cannot be undone!" = "Abonnent wird aus dem Kanal entfernt. Dies kann nicht rückgängig gemacht werden!"; + +/* No comment provided by engineer. */ +"Subscribers" = "Abonnenten"; + +/* No comment provided by engineer. */ +"Subscribers can add message reactions." = "Abonnenten können eine Reaktion auf Nachrichten geben."; + +/* No comment provided by engineer. */ +"Subscribers can irreversibly delete sent messages. (24 hours)" = "Abonnenten können gesendete Nachrichten unwiederbringlich löschen. (24 Stunden)"; + +/* No comment provided by engineer. */ +"Subscribers can report messsages to moderators." = "Abonnenten können Nachrichten an Moderatoren melden."; + +/* No comment provided by engineer. */ +"Subscribers can send direct messages." = "Abonnenten können Direktnachrichten versenden."; + +/* No comment provided by engineer. */ +"Subscribers can send disappearing messages." = "Abonnenten können verschwindende Nachrichten versenden."; + +/* No comment provided by engineer. */ +"Subscribers can send files and media." = "Abonnenten können Dateien und Medien versenden."; + +/* No comment provided by engineer. */ +"Subscribers can send SimpleX links." = "Abonnenten können SimpleX-Links versenden."; + +/* No comment provided by engineer. */ +"Subscribers can send voice messages." = "Abonnenten können Sprachnachrichten versenden."; + +/* No comment provided by engineer. */ +"Subscribers use relay link to connect to the channel.\nRelay address was used to set up this relay for the channel." = "Abonnenten verbinden sich über den Relais‑Link mit dem Kanal.\nDie Relais-Adresse wurde zur Einrichtung dieses Relais für diesen Kanal verwendet."; + /* No comment provided by engineer. */ "Subscription errors" = "Fehler beim Abonnieren"; @@ -5340,13 +5628,13 @@ report reason */ "Tap Connect to use bot" = "Verbinden tippen, um den Bot zu nutzen."; /* No comment provided by engineer. */ -"Tap Create SimpleX address in the menu to create it later." = "Tippen Sie im Menü auf SimpleX-Adresse erstellen, um sie später zu erstellen."; +"Tap Join channel" = "Tippen, um dem Kanal beizutreten"; /* No comment provided by engineer. */ "Tap Join group" = "Tippen, um der Gruppe beizutreten"; /* No comment provided by engineer. */ -"Tap to activate profile." = "Zum Aktivieren des Profils tippen."; +"Tap to activate profile." = "Tippen, um das Profil zu aktivieren."; /* No comment provided by engineer. */ "Tap to Connect" = "Zum Verbinden tippen"; @@ -5358,7 +5646,7 @@ report reason */ "Tap to join incognito" = "Zum Inkognito beitreten tippen"; /* No comment provided by engineer. */ -"Tap to paste link" = "Zum Link einfügen tippen"; +"Tap to paste link" = "Tippen, um den Link einzufügen"; /* No comment provided by engineer. */ "Tap to scan" = "Zum Scannen tippen"; @@ -5394,6 +5682,9 @@ server test failure */ /* No comment provided by engineer. */ "Test notifications" = "Benachrichtigungen testen"; +/* No comment provided by engineer. */ +"Test relay" = "Relais testen"; + /* No comment provided by engineer. */ "Test server" = "Teste Server"; @@ -5421,6 +5712,9 @@ server test failure */ /* No comment provided by engineer. */ "The app protects your privacy by using different operators in each conversation." = "Durch Verwendung verschiedener Netzwerk-Betreiber für jede Unterhaltung schützt die App Ihre Privatsphäre."; +/* No comment provided by engineer. */ +"The app removed this message after %lld attempts to receive it." = "Die App hat diese Nachricht nach %lld Empfangsversuchen entfernt."; + /* No comment provided by engineer. */ "The app will ask to confirm downloads from unknown file servers (except .onion)." = "Die App wird eine Bestätigung bei Downloads von unbekannten Datei-Servern anfordern (außer bei .onion)."; @@ -5541,6 +5835,12 @@ server test failure */ /* No comment provided by engineer. */ "This group no longer exists." = "Diese Gruppe existiert nicht mehr."; +/* alert message */ +"This is a chat relay address, it cannot be used to connect." = "Dies ist eine Chat‑Relais-Adresse, welche nicht zum Verbinden verwendet werden kann."; + +/* new chat action */ +"This is your link for channel %@!" = "Dies ist Ihr Link für den Kanal %@!"; + /* No comment provided by engineer. */ "This link requires a newer app version. Please upgrade the app or ask your contact to send a compatible link." = "Für diesen Link wird eine neuere App-Version benötigt. Bitte aktualisieren Sie die App oder bitten Sie Ihren Kontakt einen kompatiblen Link zu senden."; @@ -5673,6 +5973,9 @@ server test failure */ /* No comment provided by engineer. */ "Unblock member?" = "Mitglied freigeben?"; +/* No comment provided by engineer. */ +"Unblock subscriber for all?" = "Abonnent für alle freigeben?"; + /* rcv group event chat item */ "unblocked %@" = "hat %@ freigegeben"; @@ -5745,12 +6048,15 @@ server test failure */ /* swipe action */ "Unread" = "Ungelesen"; -/* No comment provided by engineer. */ +/* conn error description */ "Unsupported connection link" = "Verbindungs-Link wird nicht unterstützt"; /* No comment provided by engineer. */ "Up to 100 last messages are sent to new members." = "Bis zu 100 der letzten Nachrichten werden an neue Mitglieder gesendet."; +/* No comment provided by engineer. */ +"Up to 100 last messages are sent to new subscribers." = "Bis zu 100 der letzten Nachrichten werden an neue Abonnenten gesendet."; + /* No comment provided by engineer. */ "Update" = "Aktualisieren"; @@ -5763,6 +6069,9 @@ server test failure */ /* No comment provided by engineer. */ "Update settings?" = "Einstellungen aktualisieren?"; +/* rcv group event chat item */ +"updated channel profile" = "Kanalprofil aktualisiert"; + /* No comment provided by engineer. */ "Updated conditions" = "Aktualisierte Nutzungsbedingungen"; @@ -5832,6 +6141,9 @@ server test failure */ /* No comment provided by engineer. */ "Use for messages" = "Für Nachrichten verwenden"; +/* No comment provided by engineer. */ +"Use for new channels" = "Für neue Kanäle verwenden"; + /* No comment provided by engineer. */ "Use for new connections" = "Für neue Verbindungen nutzen"; @@ -5856,6 +6168,9 @@ server test failure */ /* No comment provided by engineer. */ "Use private routing with unknown servers." = "Sie nutzen privates Routing mit unbekannten Servern."; +/* No comment provided by engineer. */ +"Use relay" = "Relais verwenden"; + /* No comment provided by engineer. */ "Use server" = "Server nutzen"; @@ -5898,6 +6213,9 @@ server test failure */ /* No comment provided by engineer. */ "v%@ (%@)" = "v%@ (%@)"; +/* relay test step */ +"Verify" = "Überprüfen"; + /* No comment provided by engineer. */ "Verify code with desktop" = "Code mit dem Desktop überprüfen"; @@ -5919,6 +6237,9 @@ server test failure */ /* No comment provided by engineer. */ "Verify security code" = "Sicherheitscode überprüfen"; +/* relay hostname */ +"via %@" = "via %@"; + /* No comment provided by engineer. */ "Via browser" = "Über den Browser"; @@ -5988,6 +6309,12 @@ server test failure */ /* No comment provided by engineer. */ "Voice messages prohibited!" = "Sprachnachrichten sind nicht erlaubt!"; +/* alert action */ +"Wait" = "Abwarten"; + +/* relay test step */ +"Wait response" = "Antwort abwarten"; + /* No comment provided by engineer. */ "waiting for answer…" = "Warten auf Antwort…"; @@ -6156,6 +6483,9 @@ server test failure */ /* No comment provided by engineer. */ "you are observer" = "Sie sind Beobachter"; +/* No comment provided by engineer. */ +"you are subscriber" = "Sie sind Abonnent"; + /* snd group event chat item */ "you blocked %@" = "Sie haben %@ blockiert"; @@ -6198,6 +6528,9 @@ server test failure */ /* No comment provided by engineer. */ "You can set lock screen notification preview via settings." = "Über die Geräte-Einstellungen können Sie die Benachrichtigungsvorschau im Sperrbildschirm erlauben."; +/* No comment provided by engineer. */ +"You can share a link or a QR code - anybody will be able to join the channel." = "Sie können einen Link oder QR-Code teilen - damit kann jeder dem Kanal beitreten."; + /* No comment provided by engineer. */ "You can share a link or a QR code - anybody will be able to join the group. You won't lose members of the group if you later delete it." = "Sie können diesen Link oder QR-Code teilen - Damit kann jede Person der Gruppe beitreten. Wenn Sie den Link später löschen, werden Sie keine Gruppenmitglieder verlieren, die der Gruppe darüber beigetreten sind."; @@ -6237,6 +6570,9 @@ server test failure */ /* snd group event chat item */ "you changed role of %@ to %@" = "Sie haben die Rolle von %1$@ auf %2$@ geändert"; +/* 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."; + /* No comment provided by engineer. */ "You could not be verified; please try again." = "Sie konnten nicht überprüft werden; bitte versuchen Sie es erneut."; @@ -6318,6 +6654,9 @@ server test failure */ /* No comment provided by engineer. */ "You will still receive calls and notifications from muted profiles when they are active." = "Sie können Anrufe und Benachrichtigungen auch von stummgeschalteten Profilen empfangen, solange diese aktiv sind."; +/* No comment provided by engineer. */ +"You will stop receiving messages from this channel. Chat history will be preserved." = "Sie werden keine Nachrichten mehr aus diesem Kanal erhalten. Der Chatverlauf bleibt erhalten."; + /* No comment provided by engineer. */ "You will stop receiving messages from this chat. Chat history will be preserved." = "Sie werden von diesem Chat keine Nachrichten mehr erhalten. Der Nachrichtenverlauf bleibt erhalten."; @@ -6342,6 +6681,9 @@ server test failure */ /* No comment provided by engineer. */ "Your calls" = "Anrufe"; +/* No comment provided by engineer. */ +"Your channel" = "Ihr Kanal"; + /* No comment provided by engineer. */ "Your chat database" = "Chat-Datenbank"; @@ -6396,6 +6738,9 @@ server test failure */ /* No comment provided by engineer. */ "Your profile" = "Mein Profil"; +/* No comment provided by engineer. */ +"Your profile **%@** will be shared with channel relays and subscribers.\nRelays can access channel messages." = "Ihr Profil **%@** wird mit Kanal‑Relais und Abonnenten geteilt.\nRelais können auf Kanalnachrichten zugreifen."; + /* No comment provided by engineer. */ "Your profile **%@** will be shared." = "Ihr Profil **%@** wird geteilt."; @@ -6411,6 +6756,12 @@ server test failure */ /* No comment provided by engineer. */ "Your random profile" = "Ihr Zufallsprofil"; +/* No comment provided by engineer. */ +"Your relay address" = "Ihre Relais-Adresse"; + +/* No comment provided by engineer. */ +"Your relay name" = "Ihr Relais-Name"; + /* No comment provided by engineer. */ "Your server address" = "Ihre Serveradresse"; diff --git a/apps/ios/es.lproj/Localizable.strings b/apps/ios/es.lproj/Localizable.strings index 42ed52c412..865a9472ea 100644 --- a/apps/ios/es.lproj/Localizable.strings +++ b/apps/ios/es.lproj/Localizable.strings @@ -25,15 +25,9 @@ /* No comment provided by engineer. */ "(this device v%@)" = "(este dispositivo v%@)"; -/* No comment provided by engineer. */ -"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Contribuye](https://github.com/simplex-chat/simplex-chat#contribute)"; - /* No comment provided by engineer. */ "[Send us email](mailto:chat@simplex.chat)" = "[Contacta vía email](mailto:chat@simplex.chat)"; -/* No comment provided by engineer. */ -"[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[Estrella en GitHub](https://github.com/simplex-chat/simplex-chat)"; - /* No comment provided by engineer. */ "**Create 1-time link**: to create and share a new invitation link." = "**Añadir contacto**: crea un enlace de invitación nuevo."; @@ -64,6 +58,9 @@ /* No comment provided by engineer. */ "**Scan / Paste link**: to connect via a link you received." = "**Escanear / Pegar enlace**: para conectar mediante un enlace recibido."; +/* No comment provided by engineer. */ +"**Test relay** to retrieve its name." = "**Test servidor** para recibir su nombre."; + /* No comment provided by engineer. */ "**Warning**: Instant push notifications require passphrase saved in Keychain." = "**Advertencia**: Las notificaciones automáticas instantáneas requieren una contraseña guardada en Keychain."; @@ -184,15 +181,38 @@ /* integrity error chat item */ "%d skipped message(s)" = "%d mensaje(s) omitido(s)"; +/* channel subscriber count */ +"%d subscriber" = "%d suscriptor"; + +/* channel subscriber count */ +"%d subscribers" = "%d suscriptores"; + /* time interval */ "%d weeks" = "%d semana(s)"; +/* channel creation progress +channel relay bar progress */ +"%d/%d relays active" = "%1$d/%2$d servidores activos"; + +/* channel creation progress with errors +channel relay bar */ +"%d/%d relays active, %d failed" = "%1$d/%2$d servidores activos, %3$d han fallado"; + +/* channel subscriber relay bar progress */ +"%d/%d relays connected" = "%1$d/%2$d servidores conectados"; + +/* channel subscriber relay bar */ +"%d/%d relays connected, %d errors" = "%1$d/%2$d servidores conectados, %3$d errores"; + /* No comment provided by engineer. */ "%lld" = "%lld"; /* No comment provided by engineer. */ "%lld %@" = "%lld %@"; +/* No comment provided by engineer. */ +"%lld channel events" = "%lld eventos del canal"; + /* No comment provided by engineer. */ "%lld contact(s) selected" = "%lld contacto(s) seleccionado(s)"; @@ -200,7 +220,7 @@ "%lld file(s) with total size of %@" = "%lld archivo(s) con un tamaño total de %@"; /* No comment provided by engineer. */ -"%lld group events" = "%lld evento(s) de grupo"; +"%lld group events" = "%lld evento(s) del grupo"; /* No comment provided by engineer. */ "%lld members" = "%lld miembros"; @@ -371,6 +391,9 @@ swipe action */ /* alert title */ "Accept member" = "Aceptar miembro"; +/* No comment provided by engineer. */ +"accepted" = "aceptado"; + /* rcv group event chat item */ "accepted %@" = "%@ aceptado"; @@ -392,15 +415,15 @@ swipe action */ /* No comment provided by engineer. */ "Acknowledgement errors" = "Errores de confirmación"; +/* No comment provided by engineer. */ +"active" = "activo"; + /* token status text */ "Active" = "Activo"; /* No comment provided by engineer. */ "Active connections" = "Conexiones activas"; -/* No comment provided by engineer. */ -"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Añade la dirección a tu perfil para que tus contactos puedan compartirla con otros. La actualización del perfil se enviará a tus contactos."; - /* No comment provided by engineer. */ "Add friends" = "Añadir amigos"; @@ -575,6 +598,9 @@ swipe action */ /* No comment provided by engineer. */ "Allow sending direct messages to members." = "Se permiten mensajes directos entre miembros."; +/* No comment provided by engineer. */ +"Allow sending direct messages to subscribers." = "Se permiten mensajes directos entre suscriptores."; + /* No comment provided by engineer. */ "Allow sending disappearing messages." = "Permites el envío de mensajes temporales."; @@ -851,6 +877,9 @@ swipe action */ /* No comment provided by engineer. */ "Block member?" = "¿Bloquear miembro?"; +/* No comment provided by engineer. */ +"Block subscriber for all?" = "¿Bloquear al suscriptor para todos?"; + /* marked deleted chat item preview text */ "blocked" = "bloqueado"; @@ -894,10 +923,13 @@ marked deleted chat item preview text */ /* No comment provided by engineer. */ "Both you and your contact can send voice messages." = "Tanto tú como tu contacto podéis enviar mensajes de voz."; +/* compose placeholder for channel owner */ +"Broadcast" = "Emisión"; + /* No comment provided by engineer. */ "Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Búlgaro, Finlandés, Tailandés y Ucraniano - gracias a los usuarios y [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!"; -/* No comment provided by engineer. */ +/* chat link info line */ "Business address" = "Dirección empresarial"; /* No comment provided by engineer. */ @@ -1038,6 +1070,45 @@ set passcode view */ /* chat item text */ "changing address…" = "cambiando de servidor…"; +/* shown as sender role for channel messages */ +"channel" = "canal"; + +/* No comment provided by engineer. */ +"Channel" = "Canal"; + +/* No comment provided by engineer. */ +"Channel display name" = "Título mostrado del canal"; + +/* No comment provided by engineer. */ +"Channel full name (optional)" = "Título completo del canal (opcional)"; + +/* No comment provided by engineer. */ +"Channel image" = "Imagen del canal"; + +/* chat link info line */ +"Channel link" = "Enlace del canal"; + +/* No comment provided by engineer. */ +"Channel profile" = "Perfil del canal"; + +/* No comment provided by engineer. */ +"Channel profile is stored on subscribers' devices and on the chat relays." = "El perfil del canal se almacena en los dispositivos de los suscriptores y en los servidores de chat."; + +/* snd group event chat item */ +"channel profile updated" = "perfil del canal actualizado"; + +/* alert message */ +"Channel profile was changed. If you save it, the updated profile will be sent to channel subscribers." = "El perfil del canal ha sido modificado. Si lo guardas, el perfil actualizado será enviado a los suscriptores."; + +/* No comment provided by engineer. */ +"Channel will be deleted for all subscribers - this cannot be undone!" = "El canal será eliminado para todos los suscriptores. ¡No puede deshacerse!"; + +/* No comment provided by engineer. */ +"Channel will be deleted for you - this cannot be undone!" = "El canal será eliminado para tí. ¡No puede deshacerse!"; + +/* alert message */ +"Channel will start working with %d of %d relays. Proceed?" = "El canal comenzará a funcionar con %1$d de %2$d servidores. ¿Continuar?"; + /* No comment provided by engineer. */ "Chat" = "Chat"; @@ -1089,6 +1160,18 @@ set passcode view */ /* No comment provided by engineer. */ "Chat profile" = "Perfil de usuario"; +/* No comment provided by engineer. */ +"Chat relay" = "Servidor de chat"; + +/* No comment provided by engineer. */ +"Chat relays" = "Servidores de chat"; + +/* No comment provided by engineer. */ +"Chat relays forward messages in channels you create." = "Los servidores de chat reenvían los mensajes en los canales que has creado."; + +/* No comment provided by engineer. */ +"Chat relays forward messages to channel subscribers." = "Los servidores de chat reenvían los mensajes a los suscriptores del canal."; + /* No comment provided by engineer. */ "Chat theme" = "Tema de chat"; @@ -1119,6 +1202,12 @@ set passcode view */ /* No comment provided by engineer. */ "Check messages when allowed." = "Comprobar mensajes cuando se permita."; +/* alert message */ +"Check relay address and try again." = "Comprueba la dirección del servidor y prueba de nuevo."; + +/* alert message */ +"Check relay name and try again." = "Comprueba el nombre del servidor y prueba de nuevo."; + /* alert title */ "Check server address and try again." = "Comprueba la dirección del servidor e inténtalo de nuevo."; @@ -1212,6 +1301,9 @@ set passcode view */ /* No comment provided by engineer. */ "Configure ICE servers" = "Configure servidores ICE"; +/* No comment provided by engineer. */ +"Configure relays" = "Configurar servidores"; + /* No comment provided by engineer. */ "Configure server operators" = "Configurar operadores de servidores"; @@ -1348,12 +1440,15 @@ server test step */ /* alert title */ "Connection error" = "Error conexión"; -/* No comment provided by engineer. */ +/* conn error description */ "Connection error (AUTH)" = "Error de conexión (Autenticación)"; /* chat list item title (it should not be shown */ "connection established" = "conexión establecida"; +/* No comment provided by engineer. */ +"Connection failed" = "Conexión fallida"; + /* No comment provided by engineer. */ "Connection is blocked by server operator:\n%@" = "Conexión bloqueada por el operador del servidor:\n%@"; @@ -1450,6 +1545,9 @@ server test step */ /* No comment provided by engineer. */ "Continue" = "Continuar"; +/* No comment provided by engineer. */ +"Contribute" = "Contribuye"; + /* No comment provided by engineer. */ "Conversation deleted!" = "¡Conversación eliminada!"; @@ -1468,9 +1566,6 @@ server test step */ /* alert message */ "Correct name to %@?" = "¿Corregir el nombre a %@?"; -/* No comment provided by engineer. */ -"Create" = "Crear"; - /* No comment provided by engineer. */ "Create 1-time link" = "Crear enlace de un solo uso"; @@ -1498,6 +1593,12 @@ server test step */ /* No comment provided by engineer. */ "Create profile" = "Crear perfil"; +/* No comment provided by engineer. */ +"Create public channel" = "Crear canal público"; + +/* No comment provided by engineer. */ +"Create public channel (BETA)" = "Crear canal público (BETA)"; + /* server test step */ "Create queue" = "Crear cola"; @@ -1522,6 +1623,9 @@ server test step */ /* No comment provided by engineer. */ "Creating archive link" = "Creando enlace al archivo"; +/* No comment provided by engineer. */ +"Creating channel" = "Creando canal"; + /* No comment provided by engineer. */ "Creating link…" = "Creando enlace…"; @@ -1627,6 +1731,9 @@ server test step */ /* No comment provided by engineer. */ "Decentralized" = "Descentralizada"; +/* relay test step */ +"Decode link" = "Decodificar enlace"; + /* message decrypt error item */ "Decryption error" = "Error descifrado"; @@ -1668,6 +1775,12 @@ swipe action */ /* No comment provided by engineer. */ "Delete and notify contact" = "Eliminar y notificar contacto"; +/* No comment provided by engineer. */ +"Delete channel" = "Eliminar canal"; + +/* No comment provided by engineer. */ +"Delete channel?" = "¿Eliminar canal?"; + /* No comment provided by engineer. */ "Delete chat" = "Eliminar chat"; @@ -1771,6 +1884,9 @@ alert button */ /* server test step */ "Delete queue" = "Eliminar cola"; +/* No comment provided by engineer. */ +"Delete relay" = "Eliminar servidor"; + /* No comment provided by engineer. */ "Delete report" = "Eliminar informe"; @@ -1795,6 +1911,9 @@ alert button */ /* copied message info */ "Deleted at: %@" = "Eliminado: %@"; +/* rcv group event chat item */ +"deleted channel" = "canal eliminado"; + /* rcv direct event chat item */ "deleted contact" = "contacto eliminado"; @@ -1885,6 +2004,9 @@ alert button */ /* No comment provided by engineer. */ "Direct messages between members are prohibited." = "Los mensajes directos entre miembros del grupo no están permitidos."; +/* No comment provided by engineer. */ +"Direct messages between subscribers are prohibited." = "Los mensajes directos entre suscriptores del canal no están permitidos."; + /* No comment provided by engineer. */ "Disable (keep overrides)" = "Desactivar (conservando anulaciones)"; @@ -1942,6 +2064,9 @@ alert button */ /* No comment provided by engineer. */ "Do not send history to new members." = "No se envía el historial a los miembros nuevos."; +/* No comment provided by engineer. */ +"Do not send history to new subscribers." = "No se envía el historial a los suscriptores nuevos."; + /* No comment provided by engineer. */ "Do NOT send messages directly, even if your or destination server does not support private routing." = "NO enviar mensajes directamente incluso si tu servidor o el de destino no soportan enrutamiento privado."; @@ -2024,18 +2149,24 @@ chat item action */ /* chat item action */ "Edit" = "Editar"; +/* No comment provided by engineer. */ +"Edit channel profile" = "Editar perfil del canal"; + /* No comment provided by engineer. */ "Edit group profile" = "Editar perfil de grupo"; /* No comment provided by engineer. */ "Empty message!" = "¡Mensaje vacío!"; -/* No comment provided by engineer. */ +/* alert button */ "Enable" = "Activar"; /* No comment provided by engineer. */ "Enable (keep overrides)" = "Activar (conservar anulaciones)"; +/* channel creation warning */ +"Enable at least one chat relay in Network & Servers." = "Activar al menos un servidor de chat en Servidores y Redes."; + /* alert title */ "Enable automatic message deletion?" = "¿Activar eliminación automática de mensajes?"; @@ -2168,6 +2299,9 @@ chat item action */ /* call status */ "ended call %@" = "llamada finalizada %@"; +/* No comment provided by engineer. */ +"Enter channel name…" = "Introduce el título del canal…"; + /* No comment provided by engineer. */ "Enter correct passphrase." = "Introduce la contraseña correcta."; @@ -2186,6 +2320,9 @@ chat item action */ /* No comment provided by engineer. */ "Enter password above to show!" = "¡Introduce la contraseña arriba para mostrar!"; +/* No comment provided by engineer. */ +"Enter relay name…" = "Introduce el nombre del servidor…"; + /* No comment provided by engineer. */ "Enter server manually" = "Añadir manualmente"; @@ -2204,7 +2341,7 @@ chat item action */ /* No comment provided by engineer. */ "error" = "error"; -/* No comment provided by engineer. */ +/* conn error description */ "Error" = "Error"; /* No comment provided by engineer. */ @@ -2222,6 +2359,9 @@ chat item action */ /* No comment provided by engineer. */ "Error adding member(s)" = "Error al añadir miembro(s)"; +/* alert title */ +"Error adding relay" = "Error al añadir el servidor"; + /* alert title */ "Error adding server" = "Error al añadir servidor"; @@ -2258,6 +2398,9 @@ chat item action */ /* No comment provided by engineer. */ "Error creating address" = "Error al crear dirección"; +/* alert title */ +"Error creating channel" = "Error al crear el canal"; + /* No comment provided by engineer. */ "Error creating group" = "Error al crear grupo"; @@ -2363,6 +2506,9 @@ chat item action */ /* No comment provided by engineer. */ "Error resetting statistics" = "Error al restablecer las estadísticas"; +/* No comment provided by engineer. */ +"Error saving channel profile" = "Error al guardar el perfil del canal"; + /* alert title */ "Error saving chat list" = "Error al guardar listas"; @@ -2447,6 +2593,9 @@ chat item action */ /* No comment provided by engineer. */ "Error: " = "Error: "; +/* receive error chat item */ +"error: %@" = "error: %@"; + /* alert message file error text snd error text */ @@ -2501,6 +2650,9 @@ server test error */ /* No comment provided by engineer. */ "Exporting database archive…" = "Exportando base de datos…"; +/* No comment provided by engineer. */ +"failed" = "fallo"; + /* No comment provided by engineer. */ "Failed to remove passphrase" = "Error al eliminar la contraseña"; @@ -2713,6 +2865,9 @@ servers warning */ /* No comment provided by engineer. */ "Further reduced battery usage" = "Reducción consumo de batería"; +/* relay test step */ +"Get link" = "Recibir el enlace"; + /* No comment provided by engineer. */ "Get notified when mentioned." = "Las menciones ahora se notifican."; @@ -2761,7 +2916,7 @@ servers warning */ /* No comment provided by engineer. */ "group is deleted" = "el grupo ha sido eliminado"; -/* No comment provided by engineer. */ +/* chat link info line */ "Group link" = "Enlace de grupo"; /* No comment provided by engineer. */ @@ -2833,6 +2988,9 @@ servers warning */ /* No comment provided by engineer. */ "History is not sent to new members." = "El historial no se envía a miembros nuevos."; +/* No comment provided by engineer. */ +"History is not sent to new subscribers." = "El historial no se envía a suscriptores nuevos."; + /* time unit */ "hours" = "horas"; @@ -2872,6 +3030,9 @@ servers warning */ /* No comment provided by engineer. */ "If you enter your self-destruct passcode while opening the app:" = "Si al abrir la aplicación introduces el código de autodestrucción:"; +/* down migration warning */ +"If you joined or created channels, they will stop working permanently." = "Si te has unido o has creado canales, dejarán de funcionar permanentemente."; + /* No comment provided by engineer. */ "If you need to use the chat now tap **Do it later** below (you will be offered to migrate the database when you restart the app)." = "Si necesitas usar el chat ahora pulsa **Hacerlo más tarde** más abajo (se ofrecerá migrar la base de datos cuando se reinicie la aplicación)."; @@ -2993,7 +3154,7 @@ servers warning */ "Initial role" = "Rol inicial"; /* No comment provided by engineer. */ -"Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat)" = "Instalar terminal para [SimpleX Chat](https://github.com/simplex-chat/simplex-chat)"; +"Install SimpleX Chat for terminal" = "Instalar terminal para SimpleX Chat"; /* No comment provided by engineer. */ "Instant" = "Al instante"; @@ -3028,7 +3189,7 @@ servers warning */ /* No comment provided by engineer. */ "invalid chat data" = "datos Chat no válidos"; -/* No comment provided by engineer. */ +/* conn error description */ "Invalid connection link" = "Enlace de conexión no válido"; /* invalid chat item */ @@ -3049,6 +3210,12 @@ servers warning */ /* No comment provided by engineer. */ "Invalid QR code" = "Código QR no válido"; +/* alert title */ +"Invalid relay address!" = "¡Dirección de servidor no válido!"; + +/* alert title */ +"Invalid relay name!" = "¡Nombre de servidor no válido!"; + /* No comment provided by engineer. */ "Invalid response" = "Respuesta no válida"; @@ -3142,6 +3309,9 @@ servers warning */ /* No comment provided by engineer. */ "Join as %@" = "Unirme como %@"; +/* No comment provided by engineer. */ +"Join channel" = "Unirme al canal"; + /* new chat sheet title */ "Join group" = "Unirme al grupo"; @@ -3190,6 +3360,12 @@ servers warning */ /* swipe action */ "Leave" = "Salir"; +/* No comment provided by engineer. */ +"Leave channel" = "Salir del canal"; + +/* No comment provided by engineer. */ +"Leave channel?" = "¿Salir del canal?"; + /* No comment provided by engineer. */ "Leave chat" = "Salir del chat"; @@ -3217,6 +3393,9 @@ servers warning */ /* No comment provided by engineer. */ "Limitations" = "Limitaciones"; +/* No comment provided by engineer. */ +"link" = "enlace"; + /* No comment provided by engineer. */ "Link mobile and desktop apps! 🔗" = "¡Enlazar aplicación móvil con ordenador! 🔗"; @@ -3391,6 +3570,9 @@ servers warning */ /* No comment provided by engineer. */ "Message draft" = "Borrador de mensaje"; +/* No comment provided by engineer. */ +"Message error" = "Mensaje de error"; + /* item status text */ "Message forwarded" = "Mensaje reenviado"; @@ -3589,6 +3771,9 @@ servers warning */ /* delete after time */ "never" = "nunca"; +/* No comment provided by engineer. */ +"new" = "nuevo"; + /* token status text */ "New" = "Nuevo"; @@ -3598,6 +3783,9 @@ servers warning */ /* No comment provided by engineer. */ "New chat experience 🎉" = "Nueva experiencia de chat 🎉"; +/* No comment provided by engineer. */ +"New chat relay" = "Nuevo servidor de chat"; + /* notification */ "New contact request" = "Nueva solicitud de contacto"; @@ -3658,6 +3846,12 @@ servers warning */ /* Authentication unavailable */ "No app password" = "Sin contraseña de la aplicación"; +/* No comment provided by engineer. */ +"No chat relays" = "Sin servidores de chat"; + +/* servers warning */ +"No chat relays enabled." = "Ningún servidor de chat activado."; + /* No comment provided by engineer. */ "No chats" = "Sin chats"; @@ -3757,6 +3951,9 @@ servers warning */ /* No comment provided by engineer. */ "No user identifiers." = "Sin identificadores de usuario."; +/* alert title */ +"Not all relays connected" = "Hay servidores no conectados"; + /* No comment provided by engineer. */ "Not compatible!" = "¡No compatible!"; @@ -3813,7 +4010,7 @@ alert button new chat action */ "Ok" = "Ok"; -/* No comment provided by engineer. */ +/* alert button */ "OK" = "OK"; /* No comment provided by engineer. */ @@ -3894,12 +4091,16 @@ new chat action */ /* No comment provided by engineer. */ "Only your contact can send voice messages." = "Sólo tu contacto puede enviar mensajes de voz."; -/* alert action */ +/* alert action +alert button */ "Open" = "Abrir"; /* No comment provided by engineer. */ "Open changes" = "Abrir cambios"; +/* new chat action */ +"Open channel" = "Abrir canal"; + /* new chat action */ "Open chat" = "Abrir chat"; @@ -3924,6 +4125,9 @@ new chat action */ /* authentication reason */ "Open migration to another device" = "Abrir menú migración a otro dispositivo"; +/* new chat action */ +"Open new channel" = "Abrir canal nuevo"; + /* new chat action */ "Open new chat" = "Abrir chat nuevo"; @@ -3990,9 +4194,15 @@ new chat action */ /* member role */ "owner" = "propietario"; +/* No comment provided by engineer. */ +"Owner" = "Propietario"; + /* feature role */ "owners" = "propietarios"; +/* No comment provided by engineer. */ +"Owners" = "Propietarios"; + /* No comment provided by engineer. */ "Passcode" = "Código de acceso"; @@ -4128,6 +4338,12 @@ new chat action */ /* No comment provided by engineer. */ "Preserve the last message draft, with attachments." = "Conserva el último borrador del mensaje con los datos adjuntos."; +/* No comment provided by engineer. */ +"Preset relay address" = "Direcciones predefinidas"; + +/* No comment provided by engineer. */ +"Preset relay name" = "Nombres predefinidos"; + /* No comment provided by engineer. */ "Preset server address" = "Dirección predefinida del servidor"; @@ -4179,6 +4395,9 @@ new chat action */ /* alert title */ "Private routing timeout" = "Timeout enrutamiento privado"; +/* alert action */ +"Proceed" = "Continuar"; + /* No comment provided by engineer. */ "Profile and server connections" = "Eliminar perfil y conexiones"; @@ -4194,9 +4413,6 @@ new chat action */ /* No comment provided by engineer. */ "Profile theme" = "Tema del perfil"; -/* alert message */ -"Profile update will be sent to your contacts." = "La actualización del perfil se enviará a tus contactos."; - /* No comment provided by engineer. */ "Prohibit audio/video calls." = "No se permiten llamadas y videollamadas."; @@ -4215,6 +4431,9 @@ new chat action */ /* No comment provided by engineer. */ "Prohibit sending direct messages to members." = "No se permiten mensajes directos entre miembros."; +/* No comment provided by engineer. */ +"Prohibit sending direct messages to subscribers." = "No se permiten mensajes directos entre suscriptores."; + /* No comment provided by engineer. */ "Prohibit sending disappearing messages." = "No se permiten mensajes temporales."; @@ -4285,16 +4504,10 @@ new chat action */ "Read more" = "Saber más"; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)." = "Conoce más en la [Guía del Usuario](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)."; +"Read more in our GitHub repository." = "Conoce más en nuestro repositorio GitHub."; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)." = "Conoce más en el [Manual del Usuario](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)."; - -/* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends)." = "Conoce más en el [Manual del Usuario](https://simplex.chat/docs/guide/readme.html#connect-to-friends)."; - -/* No comment provided by engineer. */ -"Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme)." = "Conoce más en nuestro [repositorio GitHub](https://github.com/simplex-chat/simplex-chat#readme)."; +"Read more in User Guide." = "Conoce más en la Guía del Usuario."; /* No comment provided by engineer. */ "Receipts are disabled" = "Las confirmaciones están desactivadas"; @@ -4403,12 +4616,30 @@ swipe action */ /* call status */ "rejected call" = "llamada rechazada"; +/* member role */ +"relay" = "servidor"; + +/* No comment provided by engineer. */ +"Relay" = "Servidor"; + +/* alert title */ +"Relay address" = "Dirección del servidor"; + +/* alert title */ +"Relay connection failed" = "La conexión con el servidor ha fallado"; + +/* No comment provided by engineer. */ +"Relay link" = "Enlace servidor"; + /* No comment provided by engineer. */ "Relay server is only used if necessary. Another party can observe your IP address." = "El servidor de retransmisión sólo se usa en caso de necesidad. Un tercero podría ver tu IP."; /* No comment provided by engineer. */ "Relay server protects your IP address, but it can observe the duration of the call." = "El servidor de retransmisión protege tu IP pero puede ver la duración de la llamada."; +/* No comment provided by engineer. */ +"Relay test failed!" = "¡El test del servidor ha fallado!"; + /* alert action */ "Remove" = "Eliminar"; @@ -4433,9 +4664,18 @@ swipe action */ /* No comment provided by engineer. */ "Remove passphrase from keychain?" = "¿Eliminar contraseña de Keychain?"; +/* No comment provided by engineer. */ +"Remove subscriber" = "Eliminar suscriptor"; + +/* alert title */ +"Remove subscriber?" = "¿Eliminar suscriptor?"; + /* No comment provided by engineer. */ "removed" = "expulsado"; +/* receive error chat item */ +"removed (%d attempts)" = "eliminado (%d intentos)"; + /* rcv group event chat item */ "removed %@" = "ha expulsado a %@"; @@ -4623,6 +4863,9 @@ chat item action */ /* alert button */ "Save (and notify members)" = "Guardar (y notificar miembros)"; +/* alert button */ +"Save (and notify subscribers)" = "Guardar (y notificar suscriptores)"; + /* alert title */ "Save admission settings?" = "¿Guardar configuración?"; @@ -4638,6 +4881,12 @@ chat item action */ /* No comment provided by engineer. */ "Save and update group profile" = "Guardar y actualizar perfil del grupo"; +/* No comment provided by engineer. */ +"Save channel profile" = "Guardar perfil del canal"; + +/* alert title */ +"Save channel profile?" = "¿Guardar perfil del canal?"; + /* No comment provided by engineer. */ "Save group profile" = "Guardar perfil de grupo"; @@ -4851,6 +5100,9 @@ chat item action */ /* No comment provided by engineer. */ "Send up to 100 last messages to new members." = "Se envían hasta 100 mensajes más recientes a los miembros nuevos."; +/* No comment provided by engineer. */ +"Send up to 100 last messages to new subscribers." = "Se envían hasta 100 mensajes más recientes a los suscriptores nuevos."; + /* No comment provided by engineer. */ "Send your private feedback to groups." = "Envía tu comentario privado a los grupos."; @@ -4938,6 +5190,9 @@ chat item action */ /* queue info */ "server queue info: %@\n\nlast received msg: %@" = "información cola del servidor: %1$@\n\núltimo mensaje recibido: %2$@"; +/* relay test error */ +"Server requires authorization to connect to relay, check password." = "El servidor requiere autorización para conectar con el servidor, comprueba la contraseña."; + /* server test error */ "Server requires authorization to create queues, check password." = "El servidor requiere autorización para crear colas, comprueba la contraseña."; @@ -5041,9 +5296,6 @@ chat item action */ /* No comment provided by engineer. */ "Share address publicly" = "Campartir dirección públicamente"; -/* alert title */ -"Share address with contacts?" = "¿Compartir la dirección con los contactos?"; - /* No comment provided by engineer. */ "Share from other apps." = "Comparte desde otras aplicaciones."; @@ -5059,6 +5311,9 @@ chat item action */ /* No comment provided by engineer. */ "Share profile" = "Perfil a compartir"; +/* No comment provided by engineer. */ +"Share relay address" = "Compartir dirección del servidor"; + /* No comment provided by engineer. */ "Share SimpleX address on social media." = "Comparte tu dirección SimpleX en redes sociales."; @@ -5068,9 +5323,6 @@ chat item action */ /* No comment provided by engineer. */ "Share to SimpleX" = "Compartir con Simplex"; -/* No comment provided by engineer. */ -"Share with contacts" = "Compartir con contactos"; - /* No comment provided by engineer. */ "Share your address" = "Comparte tu dirección"; @@ -5173,6 +5425,9 @@ chat item action */ /* No comment provided by engineer. */ "SimpleX protocols reviewed by Trail of Bits." = "Protocolos de SimpleX auditados por Trail of Bits."; +/* simplex link type */ +"SimpleX relay address" = "Dirección de servidor SimpleX"; + /* No comment provided by engineer. */ "Simplified incognito mode" = "Modo incógnito simplificado"; @@ -5225,6 +5480,9 @@ report reason */ /* chat item text */ "standard end-to-end encryption" = "cifrado estándar de extremo a extremo"; +/* No comment provided by engineer. */ +"Star on GitHub" = "Estrella en GitHub"; + /* No comment provided by engineer. */ "Start chat" = "Iniciar chat"; @@ -5291,6 +5549,45 @@ report reason */ /* No comment provided by engineer. */ "Subscribed" = "Suscritas"; +/* No comment provided by engineer. */ +"Subscriber" = "Suscriptor"; + +/* chat feature */ +"Subscriber reports" = "Informes de suscriptores"; + +/* alert message */ +"Subscriber will be removed from channel - this cannot be undone!" = "El suscriptor será eliminado del canal. ¡No puede deshacerse!"; + +/* No comment provided by engineer. */ +"Subscribers" = "Suscriptores"; + +/* No comment provided by engineer. */ +"Subscribers can add message reactions." = "Los suscriptores pueden añadir reacciones a los mensajes."; + +/* No comment provided by engineer. */ +"Subscribers can irreversibly delete sent messages. (24 hours)" = "Los suscriptores del canal pueden eliminar mensajes de forma irreversible. (24 horas)"; + +/* No comment provided by engineer. */ +"Subscribers can report messsages to moderators." = "Los suscriptores pueden informar de mensajes a los moderadores."; + +/* No comment provided by engineer. */ +"Subscribers can send direct messages." = "Los suscriptores del canal pueden enviar mensajes directos."; + +/* No comment provided by engineer. */ +"Subscribers can send disappearing messages." = "Los suscriptores del canal pueden enviar mensajes temporales."; + +/* No comment provided by engineer. */ +"Subscribers can send files and media." = "Los suscriptores del canal pueden enviar archivos y multimedia."; + +/* No comment provided by engineer. */ +"Subscribers can send SimpleX links." = "Los suscriptores del canal pueden enviar enlaces SimpleX."; + +/* No comment provided by engineer. */ +"Subscribers can send voice messages." = "Los suscriptores del canal pueden enviar mensajes de voz."; + +/* No comment provided by engineer. */ +"Subscribers use relay link to connect to the channel.\nRelay address was used to set up this relay for the channel." = "Los suscriptores usan el enlace del servidor para conectarse a los canales.\nLa dirección del servidor se usó para establecer el servidor para el canal."; + /* No comment provided by engineer. */ "Subscription errors" = "Errores de suscripción"; @@ -5331,7 +5628,7 @@ report reason */ "Tap Connect to use bot" = "Pulsa Conectar para usar el bot"; /* No comment provided by engineer. */ -"Tap Create SimpleX address in the menu to create it later." = "Pulsa Crear dirección SimpleX en el menú para crearla más tarde."; +"Tap Join channel" = "Pulsa Unirme al canal"; /* No comment provided by engineer. */ "Tap Join group" = "Pulsa Unirme al grupo"; @@ -5385,6 +5682,9 @@ server test failure */ /* No comment provided by engineer. */ "Test notifications" = "Probar notificaciones"; +/* No comment provided by engineer. */ +"Test relay" = "Test servidor"; + /* No comment provided by engineer. */ "Test server" = "Probar servidor"; @@ -5412,6 +5712,9 @@ server test failure */ /* No comment provided by engineer. */ "The app protects your privacy by using different operators in each conversation." = "La aplicación protege tu privacidad mediante el uso de diferentes operadores en cada conversación."; +/* No comment provided by engineer. */ +"The app removed this message after %lld attempts to receive it." = "La app ha eliminado el mensaje tras %lld intentos de recibirlo."; + /* No comment provided by engineer. */ "The app will ask to confirm downloads from unknown file servers (except .onion)." = "La aplicación pedirá que confirmes las descargas desde servidores de archivos desconocidos (excepto si son .onion)."; @@ -5532,6 +5835,12 @@ server test failure */ /* No comment provided by engineer. */ "This group no longer exists." = "Este grupo ya no existe."; +/* alert message */ +"This is a chat relay address, it cannot be used to connect." = "Esto es una dirección de servidor, no puede usarse para conectar."; + +/* new chat action */ +"This is your link for channel %@!" = "Este es tu enlace para el canal %@!"; + /* No comment provided by engineer. */ "This link requires a newer app version. Please upgrade the app or ask your contact to send a compatible link." = "Este enlace requiere una versión más reciente de la aplicación. Por favor, actualiza la aplicación o pide a tu contacto un enlace compatible."; @@ -5664,6 +5973,9 @@ server test failure */ /* No comment provided by engineer. */ "Unblock member?" = "¿Desbloquear miembro?"; +/* No comment provided by engineer. */ +"Unblock subscriber for all?" = "¿Desbloquear al suscriptor para todos?"; + /* rcv group event chat item */ "unblocked %@" = "ha desbloqueado a %@"; @@ -5736,12 +6048,15 @@ server test failure */ /* swipe action */ "Unread" = "No leído"; -/* No comment provided by engineer. */ +/* conn error description */ "Unsupported connection link" = "Enlace de conexión no compatible"; /* No comment provided by engineer. */ "Up to 100 last messages are sent to new members." = "Hasta 100 últimos mensajes son enviados a los miembros nuevos."; +/* No comment provided by engineer. */ +"Up to 100 last messages are sent to new subscribers." = "Hasta 100 últimos mensajes son enviados a los suscriptores nuevos."; + /* No comment provided by engineer. */ "Update" = "Actualizar"; @@ -5754,6 +6069,9 @@ server test failure */ /* No comment provided by engineer. */ "Update settings?" = "¿Actualizar configuración?"; +/* rcv group event chat item */ +"updated channel profile" = "perfil del canal actualizado"; + /* No comment provided by engineer. */ "Updated conditions" = "Condiciones actualizadas"; @@ -5823,6 +6141,9 @@ server test failure */ /* No comment provided by engineer. */ "Use for messages" = "Uso para mensajes"; +/* No comment provided by engineer. */ +"Use for new channels" = "Usar para canales nuevos"; + /* No comment provided by engineer. */ "Use for new connections" = "Para conexiones nuevas"; @@ -5847,6 +6168,9 @@ server test failure */ /* No comment provided by engineer. */ "Use private routing with unknown servers." = "Usar enrutamiento privado con servidores de mensaje desconocidos."; +/* No comment provided by engineer. */ +"Use relay" = "Usar servidor"; + /* No comment provided by engineer. */ "Use server" = "Usar servidor"; @@ -5889,6 +6213,9 @@ server test failure */ /* No comment provided by engineer. */ "v%@ (%@)" = "v%@ (%@)"; +/* relay test step */ +"Verify" = "Verificar"; + /* No comment provided by engineer. */ "Verify code with desktop" = "Verificar código con ordenador"; @@ -5910,6 +6237,9 @@ server test failure */ /* No comment provided by engineer. */ "Verify security code" = "Comprobar código de seguridad"; +/* relay hostname */ +"via %@" = "mediante %@"; + /* No comment provided by engineer. */ "Via browser" = "Mediante navegador"; @@ -5979,6 +6309,12 @@ server test failure */ /* No comment provided by engineer. */ "Voice messages prohibited!" = "¡Mensajes de voz no permitidos!"; +/* alert action */ +"Wait" = "Espera"; + +/* relay test step */ +"Wait response" = "Espera respuesta"; + /* No comment provided by engineer. */ "waiting for answer…" = "esperando respuesta…"; @@ -6147,6 +6483,9 @@ server test failure */ /* No comment provided by engineer. */ "you are observer" = "Tu rol es observador"; +/* No comment provided by engineer. */ +"you are subscriber" = "eres suscriptor"; + /* snd group event chat item */ "you blocked %@" = "has bloqueado a %@"; @@ -6190,7 +6529,10 @@ server test failure */ "You can set lock screen notification preview via settings." = "Puedes configurar las notificaciones de la pantalla de bloqueo desde Configuración."; /* No comment provided by engineer. */ -"You can share a link or a QR code - anybody will be able to join the group. You won't lose members of the group if you later delete it." = "Puedes compartir el enlace o el código QR para que cualquiera pueda unirse al grupo. Si más tarde lo eliminas, no afectará a los miembros del grupo."; +"You can share a link or a QR code - anybody will be able to join the channel." = "Puedes compartir un enlace o código QR. Cualquiera podrá unirse al canal."; + +/* No comment provided by engineer. */ +"You can share a link or a QR code - anybody will be able to join the group. You won't lose members of the group if you later delete it." = "Puedes compartir el enlace o código QR. Cualquiera podrá unirse al grupo. Si más tarde lo eliminas, no afectará a los miembros del grupo."; /* No comment provided by engineer. */ "You can share this address with your contacts to let them connect with **%@**." = "Puedes compartir esta dirección con tus contactos para que puedan conectar con **%@**."; @@ -6228,6 +6570,9 @@ server test failure */ /* snd group event chat item */ "you changed role of %@ to %@" = "has cambiado el rol de %1$@ a %2$@"; +/* No comment provided by engineer. */ +"You connected to the channel via this relay link." = "Te conectaste al canal mediante este enlace de servidor."; + /* No comment provided by engineer. */ "You could not be verified; please try again." = "No has podido ser autenticado. Inténtalo de nuevo."; @@ -6310,7 +6655,10 @@ server test failure */ "You will still receive calls and notifications from muted profiles when they are active." = "Seguirás recibiendo llamadas y notificaciones de los perfiles silenciados cuando estén activos."; /* No comment provided by engineer. */ -"You will stop receiving messages from this chat. Chat history will be preserved." = "Dejarás de recibir mensajes del chat. El historial del chat se conserva."; +"You will stop receiving messages from this channel. Chat history will be preserved." = "Dejarás de recibir mensajes de este canal. El historial del chat se conservará."; + +/* No comment provided by engineer. */ +"You will stop receiving messages from this chat. Chat history will be preserved." = "Dejarás de recibir mensajes del chat. El historial del chat se conservará."; /* No comment provided by engineer. */ "You will stop receiving messages from this group. Chat history will be preserved." = "Dejarás de recibir mensajes del grupo. El historial del chat se conservará."; @@ -6333,6 +6681,9 @@ server test failure */ /* No comment provided by engineer. */ "Your calls" = "Llamadas"; +/* No comment provided by engineer. */ +"Your channel" = "Tu canal"; + /* No comment provided by engineer. */ "Your chat database" = "Base de datos"; @@ -6387,6 +6738,9 @@ server test failure */ /* No comment provided by engineer. */ "Your profile" = "Tu perfil"; +/* No comment provided by engineer. */ +"Your profile **%@** will be shared with channel relays and subscribers.\nRelays can access channel messages." = "El perfil **%@** será compartido con los servidores de canal y los suscriptores.\nLos servidores tienen acceso a los mensajes del canal."; + /* No comment provided by engineer. */ "Your profile **%@** will be shared." = "El perfil **%@** será compartido."; @@ -6402,6 +6756,12 @@ server test failure */ /* No comment provided by engineer. */ "Your random profile" = "Tu perfil aleatorio"; +/* No comment provided by engineer. */ +"Your relay address" = "Tu dirección de servidor"; + +/* No comment provided by engineer. */ +"Your relay name" = "Tu nombre del servidor"; + /* No comment provided by engineer. */ "Your server address" = "Dirección del servidor"; diff --git a/apps/ios/fi.lproj/Localizable.strings b/apps/ios/fi.lproj/Localizable.strings index 5f81f94fb8..4dfb01aae7 100644 --- a/apps/ios/fi.lproj/Localizable.strings +++ b/apps/ios/fi.lproj/Localizable.strings @@ -13,15 +13,9 @@ /* No comment provided by engineer. */ "!1 colored!" = "!1 värillinen!"; -/* No comment provided by engineer. */ -"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Osallistu](https://github.com/simplex-chat/simplex-chat#contribute)"; - /* No comment provided by engineer. */ "[Send us email](mailto:chat@simplex.chat)" = "[Lähetä meille sähköpostia](mailto:chat@simplex.chat)"; -/* No comment provided by engineer. */ -"[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[Tähti GitHubissa](https://github.com/simplex-chat/simplex-chat)"; - /* No comment provided by engineer. */ "**e2e encrypted** audio call" = "**e2e-salattu** äänipuhelu"; @@ -257,9 +251,6 @@ swipe action */ /* call status */ "accepted call" = "hyväksytty puhelu"; -/* No comment provided by engineer. */ -"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Lisää osoite profiiliisi, jotta kontaktisi voivat jakaa sen muiden kanssa. Profiilipäivitys lähetetään kontakteillesi."; - /* No comment provided by engineer. */ "Add profile" = "Lisää profiili"; @@ -699,7 +690,7 @@ server test step */ /* alert title */ "Connection error" = "Yhteysvirhe"; -/* No comment provided by engineer. */ +/* conn error description */ "Connection error (AUTH)" = "Yhteysvirhe (AUTH)"; /* chat list item title (it should not be shown */ @@ -747,15 +738,15 @@ server test step */ /* No comment provided by engineer. */ "Continue" = "Jatka"; +/* No comment provided by engineer. */ +"Contribute" = "Osallistu"; + /* No comment provided by engineer. */ "Copy" = "Kopioi"; /* No comment provided by engineer. */ "Core version: v%@" = "Ydinversio: v%@"; -/* No comment provided by engineer. */ -"Create" = "Luo"; - /* server test step */ "Create file" = "Luo tiedosto"; @@ -1098,7 +1089,7 @@ alert button */ /* No comment provided by engineer. */ "Edit group profile" = "Muokkaa ryhmäprofiilia"; -/* No comment provided by engineer. */ +/* alert button */ "Enable" = "Salli"; /* No comment provided by engineer. */ @@ -1227,7 +1218,7 @@ alert button */ /* No comment provided by engineer. */ "error" = "virhe"; -/* No comment provided by engineer. */ +/* conn error description */ "Error" = "Virhe"; /* No comment provided by engineer. */ @@ -1497,7 +1488,7 @@ server test error */ /* No comment provided by engineer. */ "Group invitation is no longer valid, it was removed by sender." = "Ryhmäkutsu ei ole enää voimassa, lähettäjä poisti sen."; -/* No comment provided by engineer. */ +/* chat link info line */ "Group link" = "Ryhmälinkki"; /* No comment provided by engineer. */ @@ -1666,7 +1657,7 @@ server test error */ "Initial role" = "Alkuperäinen rooli"; /* No comment provided by engineer. */ -"Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat)" = "Asenna [SimpleX Chat terminaalille](https://github.com/simplex-chat/simplex-chat)"; +"Install SimpleX Chat for terminal" = "Asenna SimpleX Chat terminaalille"; /* No comment provided by engineer. */ "Instant" = "Heti"; @@ -1683,7 +1674,7 @@ server test error */ /* No comment provided by engineer. */ "invalid chat data" = "virheelliset keskustelu-tiedot"; -/* No comment provided by engineer. */ +/* conn error description */ "Invalid connection link" = "Virheellinen yhteyslinkki"; /* invalid chat item */ @@ -2273,9 +2264,6 @@ new chat action */ /* No comment provided by engineer. */ "Profile password" = "Profiilin salasana"; -/* alert message */ -"Profile update will be sent to your contacts." = "Profiilipäivitys lähetetään kontakteillesi."; - /* No comment provided by engineer. */ "Prohibit audio/video calls." = "Estä ääni- ja videopuhelut."; @@ -2328,13 +2316,10 @@ new chat action */ "Read more" = "Lue lisää"; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)." = "Lue lisää [Käyttöoppaasta](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)."; +"Read more in our GitHub repository." = "Lue lisää GitHub-arkistosta."; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends)." = "Lue lisää [Käyttöoppaasta](https://simplex.chat/docs/guide/readme.html#connect-to-friends)."; - -/* No comment provided by engineer. */ -"Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme)." = "Lue lisää [GitHub-arkistosta](https://github.com/simplex-chat/simplex-chat#readme)."; +"Read more in User Guide." = "Lue lisää Käyttöoppaasta."; /* No comment provided by engineer. */ "Receipts are disabled" = "Kuittaukset pois käytöstä"; @@ -2697,15 +2682,9 @@ chat item action */ /* No comment provided by engineer. */ "Share address" = "Jaa osoite"; -/* alert title */ -"Share address with contacts?" = "Jaa osoite kontakteille?"; - /* No comment provided by engineer. */ "Share link" = "Jaa linkki"; -/* No comment provided by engineer. */ -"Share with contacts" = "Jaa kontaktien kanssa"; - /* No comment provided by engineer. */ "Show calls in phone history" = "Näytä puhelut puhelinhistoriassa"; @@ -2772,6 +2751,9 @@ chat item action */ /* notification title */ "Somebody" = "Joku"; +/* No comment provided by engineer. */ +"Star on GitHub" = "Tähti GitHubissa"; + /* No comment provided by engineer. */ "Start chat" = "Aloita keskustelu"; diff --git a/apps/ios/fr.lproj/Localizable.strings b/apps/ios/fr.lproj/Localizable.strings index 30f28c6b8c..27140ac84c 100644 --- a/apps/ios/fr.lproj/Localizable.strings +++ b/apps/ios/fr.lproj/Localizable.strings @@ -25,15 +25,9 @@ /* No comment provided by engineer. */ "(this device v%@)" = "(cet appareil v%@)"; -/* No comment provided by engineer. */ -"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Contribuer](https://github.com/simplex-chat/simplex-chat#contribute)"; - /* No comment provided by engineer. */ "[Send us email](mailto:chat@simplex.chat)" = "[Contact par mail](mailto:chat@simplex.chat)"; -/* No comment provided by engineer. */ -"[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[Star sur GitHub](https://github.com/simplex-chat/simplex-chat)"; - /* No comment provided by engineer. */ "**Create 1-time link**: to create and share a new invitation link." = "**Ajouter un contact** : pour créer un nouveau lien d'invitation."; @@ -392,9 +386,6 @@ swipe action */ /* No comment provided by engineer. */ "Active connections" = "Connections actives"; -/* No comment provided by engineer. */ -"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Ajoutez une adresse à votre profil, afin que vos contacts puissent la partager avec d'autres personnes. La mise à jour du profil sera envoyée à vos contacts."; - /* No comment provided by engineer. */ "Add friends" = "Ajouter des amis"; @@ -864,7 +855,7 @@ marked deleted chat item preview text */ /* No comment provided by engineer. */ "Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Bulgare, finnois, thaïlandais et ukrainien - grâce aux utilisateurs et à [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat) !"; -/* No comment provided by engineer. */ +/* chat link info line */ "Business address" = "Adresse professionnelle"; /* No comment provided by engineer. */ @@ -1291,7 +1282,7 @@ server test step */ /* alert title */ "Connection error" = "Erreur de connexion"; -/* No comment provided by engineer. */ +/* conn error description */ "Connection error (AUTH)" = "Erreur de connexion (AUTH)"; /* chat list item title (it should not be shown */ @@ -1378,6 +1369,9 @@ server test step */ /* No comment provided by engineer. */ "Continue" = "Continuer"; +/* No comment provided by engineer. */ +"Contribute" = "Contribuer"; + /* No comment provided by engineer. */ "Conversation deleted!" = "Conversation supprimée !"; @@ -1396,9 +1390,6 @@ server test step */ /* alert message */ "Correct name to %@?" = "Corriger le nom pour %@ ?"; -/* No comment provided by engineer. */ -"Create" = "Créer"; - /* No comment provided by engineer. */ "Create 1-time link" = "Créer un lien unique"; @@ -1937,7 +1928,7 @@ chat item action */ /* No comment provided by engineer. */ "Edit group profile" = "Modifier le profil du groupe"; -/* No comment provided by engineer. */ +/* alert button */ "Enable" = "Activer"; /* No comment provided by engineer. */ @@ -2108,7 +2099,7 @@ chat item action */ /* No comment provided by engineer. */ "error" = "erreur"; -/* No comment provided by engineer. */ +/* conn error description */ "Error" = "Erreur"; /* No comment provided by engineer. */ @@ -2610,7 +2601,7 @@ servers warning */ /* No comment provided by engineer. */ "Group invitation is no longer valid, it was removed by sender." = "L'invitation du groupe n'est plus valide, elle a été supprimé par l'expéditeur."; -/* No comment provided by engineer. */ +/* chat link info line */ "Group link" = "Lien du groupe"; /* No comment provided by engineer. */ @@ -2821,7 +2812,7 @@ servers warning */ "Initial role" = "Rôle initial"; /* No comment provided by engineer. */ -"Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat)" = "Installer [SimpleX Chat pour terminal](https://github.com/simplex-chat/simplex-chat)"; +"Install SimpleX Chat for terminal" = "Installer SimpleX Chat pour terminal"; /* No comment provided by engineer. */ "Instant" = "Instantané"; @@ -2841,7 +2832,7 @@ servers warning */ /* No comment provided by engineer. */ "invalid chat data" = "données de chat invalides"; -/* No comment provided by engineer. */ +/* conn error description */ "Invalid connection link" = "Lien de connection invalide"; /* invalid chat item */ @@ -3509,7 +3500,7 @@ alert button new chat action */ "Ok" = "Ok"; -/* No comment provided by engineer. */ +/* alert button */ "OK" = "OK"; /* No comment provided by engineer. */ @@ -3578,7 +3569,8 @@ new chat action */ /* No comment provided by engineer. */ "Only your contact can send voice messages." = "Seul votre contact peut envoyer des messages vocaux."; -/* alert action */ +/* alert action +alert button */ "Open" = "Ouvrir"; /* No comment provided by engineer. */ @@ -3815,9 +3807,6 @@ new chat action */ /* No comment provided by engineer. */ "Profile theme" = "Thème de profil"; -/* alert message */ -"Profile update will be sent to your contacts." = "La mise à jour du profil sera envoyée à vos contacts."; - /* No comment provided by engineer. */ "Prohibit audio/video calls." = "Interdire les appels audio/vidéo."; @@ -3900,16 +3889,10 @@ new chat action */ "Read more" = "En savoir plus"; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)." = "Pour en savoir plus, consultez le [Guide de l'utilisateur](https ://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)."; +"Read more in our GitHub repository." = "Pour en savoir plus, consultez notre dépôt GitHub."; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)." = "Pour en savoir plus, consultez le [Guide de l'utilisateur](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)."; - -/* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends)." = "Pour en savoir plus, consultez le [Guide de l'utilisateur](https://simplex.chat/docs/guide/readme.html#connect-to-friends)."; - -/* No comment provided by engineer. */ -"Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme)." = "Pour en savoir plus, consultez notre [dépôt GitHub](https://github.com/simplex-chat/simplex-chat#readme)."; +"Read more in User Guide." = "Pour en savoir plus, consultez le Guide de l'utilisateur."; /* No comment provided by engineer. */ "Receipts are disabled" = "Les accusés de réception sont désactivés"; @@ -4515,9 +4498,6 @@ chat item action */ /* No comment provided by engineer. */ "Share address publicly" = "Partager publiquement votre adresse"; -/* alert title */ -"Share address with contacts?" = "Partager l'adresse avec vos contacts ?"; - /* No comment provided by engineer. */ "Share from other apps." = "Partager depuis d'autres applications."; @@ -4536,9 +4516,6 @@ chat item action */ /* No comment provided by engineer. */ "Share to SimpleX" = "Partager sur SimpleX"; -/* No comment provided by engineer. */ -"Share with contacts" = "Partager avec vos contacts"; - /* No comment provided by engineer. */ "Show → on messages sent via private routing." = "Afficher → sur les messages envoyés via le routage privé."; @@ -4674,6 +4651,9 @@ chat item action */ /* chat item text */ "standard end-to-end encryption" = "chiffrement de bout en bout standard"; +/* No comment provided by engineer. */ +"Star on GitHub" = "Star sur GitHub"; + /* No comment provided by engineer. */ "Start chat" = "Démarrer le chat"; @@ -4767,9 +4747,6 @@ chat item action */ /* No comment provided by engineer. */ "Tap button " = "Appuyez sur le bouton "; -/* No comment provided by engineer. */ -"Tap Create SimpleX address in the menu to create it later." = "Appuyez sur Créer une adresse SimpleX dans le menu pour la créer ultérieurement."; - /* No comment provided by engineer. */ "Tap to activate profile." = "Appuyez pour activer un profil."; diff --git a/apps/ios/hu.lproj/Localizable.strings b/apps/ios/hu.lproj/Localizable.strings index 93eb633dd7..d8365a164f 100644 --- a/apps/ios/hu.lproj/Localizable.strings +++ b/apps/ios/hu.lproj/Localizable.strings @@ -25,15 +25,9 @@ /* No comment provided by engineer. */ "(this device v%@)" = "(ez az eszköz: v%@)"; -/* No comment provided by engineer. */ -"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Közreműködés](https://github.com/simplex-chat/simplex-chat#contribute)"; - /* No comment provided by engineer. */ "[Send us email](mailto:chat@simplex.chat)" = "[Küldjön nekünk e-mailt](mailto:chat@simplex.chat)"; -/* No comment provided by engineer. */ -"[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[Csillagozás a GitHubon](https://github.com/simplex-chat/simplex-chat)"; - /* No comment provided by engineer. */ "**Create 1-time link**: to create and share a new invitation link." = "**Partner hozzáadása:** új meghívási hivatkozás létrehozásához, vagy egy kapott hivatkozáson keresztül történő kapcsolódáshoz."; @@ -50,13 +44,13 @@ "**More private**: check new messages every 20 minutes. Only device token is shared with our push server. It doesn't see how many contacts you have, or any message metadata." = "**Privátabb:** 20 percenként ellenőrzi az új üzeneteket. Az eszköztoken meg lesz osztva a SimpleX Chat kiszolgálóval, de az nem, hogy hány partnere vagy üzenete van."; /* No comment provided by engineer. */ -"**Most private**: do not use SimpleX Chat push server. The app will check messages in background, when the system allows it, depending on how often you use the app." = "**Legprivátabb:** ne használja a SimpleX Chat értesítési kiszolgálót, rendszeresen ellenőrizze az üzeneteket a háttérben (attól függően, hogy milyen gyakran használja az alkalmazást)."; +"**Most private**: do not use SimpleX Chat push server. The app will check messages in background, when the system allows it, depending on how often you use the app." = "**A legprivátabb**: Az alkalmazás nem használja a SimpleX Chat push-kiszolgálóját. Az alkalmazás a háttérben ellenőrzi az üzeneteket, amikor a rendszer ezt lehetővé teszi, attól függően, hogy Ön milyen gyakran használja az alkalmazást."; /* No comment provided by engineer. */ "**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." = "**Megjegyzés:** ha két eszközön is ugyanazt az adatbázist használja, akkor biztonsági védelemként megszakítja a partnereitől érkező üzenetek visszafejtését."; /* No comment provided by engineer. */ -"**Please note**: you will NOT be able to recover or change passphrase if you lose it." = "**Megjegyzés:** NEM fogja tudni helyreállítani, vagy módosítani a jelmondatot abban az esetben, ha elveszíti."; +"**Please note**: you will NOT be able to recover or change passphrase if you lose it." = "**Megjegyzés:** NEM fogja tudni helyreállítani vagy módosítani a jelmondatot abban az esetben, ha elveszíti."; /* No comment provided by engineer. */ "**Recommended**: device token and end-to-end encrypted notifications are sent to SimpleX Chat push server, but it does not see the message content, size or who it is from." = "**Megjegyzés:** az eszköztoken és az értesítések el lesznek küldve a SimpleX Chat értesítési kiszolgálóra, kivéve az üzenet tartalma, mérete vagy az, hogy kitől származik."; @@ -64,6 +58,9 @@ /* No comment provided by engineer. */ "**Scan / Paste link**: to connect via a link you received." = "**Hivatkozás beolvasása / beillesztése**: egy kapott hivatkozáson keresztüli kapcsolódáshoz."; +/* No comment provided by engineer. */ +"**Test relay** to retrieve its name." = "**Átjátszó tesztelése** a nevének lekéréséhez."; + /* No comment provided by engineer. */ "**Warning**: Instant push notifications require passphrase saved in Keychain." = "**Figyelmeztetés:** Az azonnali leküldéses értesítésekhez a kulcstartóban tárolt jelmondat megadása szükséges."; @@ -184,15 +181,38 @@ /* integrity error chat item */ "%d skipped message(s)" = "%d üzenet kihagyva"; +/* channel subscriber count */ +"%d subscriber" = "%d feliratkozó"; + +/* channel subscriber count */ +"%d subscribers" = "%d feliratkozó"; + /* time interval */ "%d weeks" = "%d hét"; +/* channel creation progress +channel relay bar progress */ +"%d/%d relays active" = "%1$d/%2$d átjátszó aktív"; + +/* channel creation progress with errors +channel relay bar */ +"%d/%d relays active, %d failed" = "%1$d/%2$d átjátszó aktív, %3$d sikertelen"; + +/* channel subscriber relay bar progress */ +"%d/%d relays connected" = "%1$d/%2$d átjátszó kapcsolódva"; + +/* channel subscriber relay bar */ +"%d/%d relays connected, %d errors" = "%1$d/%2$d átjátszó kapcsolódva, %3$d hiba"; + /* No comment provided by engineer. */ "%lld" = "%lld"; /* No comment provided by engineer. */ "%lld %@" = "%lld %@"; +/* No comment provided by engineer. */ +"%lld channel events" = "%lld csatornaesemény"; + /* No comment provided by engineer. */ "%lld contact(s) selected" = "%lld partner kiválasztva"; @@ -293,7 +313,7 @@ time interval */ "1-time link" = "Egyszer használható meghívó"; /* No comment provided by engineer. */ -"1-time link can be used *with one contact only* - share in person or via any messenger." = "Az egyszer használható meghívó egy hivatkozás és *csak egyetlen partnerrel használható* – személyesen vagy bármilyen üzenetváltó-alkalmazáson keresztül megosztható."; +"1-time link can be used *with one contact only* - share in person or via any messenger." = "Az egyszer használható meghívó egy hivatkozás és *csak egyetlen partnerrel használható* – személyesen vagy bármilyen üzenetváltó alkalmazáson keresztül megosztható."; /* No comment provided by engineer. */ "5 minutes" = "5 perc"; @@ -371,6 +391,9 @@ swipe action */ /* alert title */ "Accept member" = "Tag befogadása"; +/* No comment provided by engineer. */ +"accepted" = "elfogadva"; + /* rcv group event chat item */ "accepted %@" = "befogadta őt: %@"; @@ -392,15 +415,15 @@ swipe action */ /* No comment provided by engineer. */ "Acknowledgement errors" = "Visszaigazolási hibák"; +/* No comment provided by engineer. */ +"active" = "aktív"; + /* token status text */ "Active" = "Aktív"; /* No comment provided by engineer. */ "Active connections" = "Aktív kapcsolatok száma"; -/* No comment provided by engineer. */ -"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Cím hozzáadása a profilhoz, hogy a partnerei megoszthassák másokkal. A profilfrissítés el lesz küldve partnerei számára."; - /* No comment provided by engineer. */ "Add friends" = "Barátok hozzáadása"; @@ -575,6 +598,9 @@ swipe action */ /* No comment provided by engineer. */ "Allow sending direct messages to members." = "A közvetlen üzenetek küldése a tagok között engedélyezve van."; +/* No comment provided by engineer. */ +"Allow sending direct messages to subscribers." = "A közvetlen üzenetek küldése a feliratkozók között engedélyezve van."; + /* No comment provided by engineer. */ "Allow sending disappearing messages." = "Az eltűnő üzenetek küldése engedélyezve van."; @@ -851,6 +877,9 @@ swipe action */ /* No comment provided by engineer. */ "Block member?" = "Letiltja a tagot?"; +/* No comment provided by engineer. */ +"Block subscriber for all?" = "Az összes feliratkozó számára letiltja a feliratkozót?"; + /* marked deleted chat item preview text */ "blocked" = "letiltva"; @@ -894,10 +923,13 @@ marked deleted chat item preview text */ /* No comment provided by engineer. */ "Both you and your contact can send voice messages." = "Mindkét fél küldhet hangüzeneteket."; +/* compose placeholder for channel owner */ +"Broadcast" = "Közvetítés…"; + /* No comment provided by engineer. */ "Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Bolgár, finn, thai és ukrán – köszönet a felhasználóknak és a [Weblate-nek](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!"; -/* No comment provided by engineer. */ +/* chat link info line */ "Business address" = "Üzleti cím"; /* No comment provided by engineer. */ @@ -1038,6 +1070,45 @@ set passcode view */ /* chat item text */ "changing address…" = "cím módosítása…"; +/* shown as sender role for channel messages */ +"channel" = "csatorna"; + +/* No comment provided by engineer. */ +"Channel" = "Csatorna"; + +/* No comment provided by engineer. */ +"Channel display name" = "Csatorna megjelenítendő neve"; + +/* No comment provided by engineer. */ +"Channel full name (optional)" = "Csatorna teljes neve (nem kötelező)"; + +/* No comment provided by engineer. */ +"Channel image" = "Csatornakép"; + +/* chat link info line */ +"Channel link" = "Csatornahivatkozás"; + +/* No comment provided by engineer. */ +"Channel profile" = "Csatornaprofil"; + +/* No comment provided by engineer. */ +"Channel profile is stored on subscribers' devices and on the chat relays." = "A csatornaprofil a feliratkozók eszközén és a csevegési átjátszókon van tárolva."; + +/* snd group event chat item */ +"channel profile updated" = "csatornaprofil frissítve"; + +/* alert message */ +"Channel profile was changed. If you save it, the updated profile will be sent to channel subscribers." = "A csatornaprofil módosult. Ha menti, akkor a frissített profil el lesz küldve a csatorna feliratkozóinak."; + +/* No comment provided by engineer. */ +"Channel will be deleted for all subscribers - this cannot be undone!" = "A csatorna az összes feliratkozó számára törölve lesz – ez a művelet nem vonható vissza!"; + +/* No comment provided by engineer. */ +"Channel will be deleted for you - this cannot be undone!" = "A csatorna törölve lesz az Ön számára – ez a művelet nem vonható vissza!"; + +/* alert message */ +"Channel will start working with %d of %d relays. Proceed?" = "A csatorna %2$d átjátszóból %1$d használatával kezd el működni. Folytatja?"; + /* No comment provided by engineer. */ "Chat" = "Csevegés"; @@ -1089,6 +1160,18 @@ set passcode view */ /* No comment provided by engineer. */ "Chat profile" = "Csevegési profil"; +/* No comment provided by engineer. */ +"Chat relay" = "Csevegési átjátszó"; + +/* No comment provided by engineer. */ +"Chat relays" = "Csevegési átjátszók"; + +/* No comment provided by engineer. */ +"Chat relays forward messages in channels you create." = "A csevegési átjátszók továbbítják az üzeneteket az Ön által létrehozott csatornákban."; + +/* No comment provided by engineer. */ +"Chat relays forward messages to channel subscribers." = "A csevegési átjátszók továbbítják az üzeneteket a csatorna feliratkozóinak."; + /* No comment provided by engineer. */ "Chat theme" = "Csevegés témája"; @@ -1119,6 +1202,12 @@ set passcode view */ /* No comment provided by engineer. */ "Check messages when allowed." = "Üzenetek ellenőrzése, amikor engedélyezett."; +/* alert message */ +"Check relay address and try again." = "Ellenőrizze az átjátszó címét, és próbálja újra."; + +/* alert message */ +"Check relay name and try again." = "Ellenőrizze az átjátszó nevét, és próbálja újra."; + /* alert title */ "Check server address and try again." = "Kiszolgáló címének ellenőrzése és újrapróbálkozás."; @@ -1212,6 +1301,9 @@ set passcode view */ /* No comment provided by engineer. */ "Configure ICE servers" = "ICE-kiszolgálók beállítása"; +/* 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"; @@ -1348,7 +1440,7 @@ server test step */ /* alert title */ "Connection error" = "Kapcsolódási hiba"; -/* No comment provided by engineer. */ +/* conn error description */ "Connection error (AUTH)" = "Kapcsolódási hiba (AUTH)"; /* chat list item title (it should not be shown */ @@ -1453,6 +1545,9 @@ server test step */ /* No comment provided by engineer. */ "Continue" = "Folytatás"; +/* No comment provided by engineer. */ +"Contribute" = "Közreműködés"; + /* No comment provided by engineer. */ "Conversation deleted!" = "Beszélgetés törölve!"; @@ -1460,7 +1555,7 @@ server test step */ "Copy" = "Másolás"; /* No comment provided by engineer. */ -"Copy error" = "Másolási hiba"; +"Copy error" = "Hiba másolása"; /* No comment provided by engineer. */ "Core version: v%@" = "Fő verzió: v%@"; @@ -1471,9 +1566,6 @@ server test step */ /* alert message */ "Correct name to %@?" = "Helyesbíti a nevet a következőre: %@?"; -/* No comment provided by engineer. */ -"Create" = "Létrehozás"; - /* No comment provided by engineer. */ "Create 1-time link" = "Egyszer használható meghívó létrehozása"; @@ -1501,6 +1593,12 @@ server test step */ /* No comment provided by engineer. */ "Create profile" = "Profil létrehozása"; +/* No comment provided by engineer. */ +"Create public channel" = "Nyilvános csatorna létrehozása"; + +/* No comment provided by engineer. */ +"Create public channel (BETA)" = "Nyilvános csatorna létrehozása (BÉTA)"; + /* server test step */ "Create queue" = "Várólista létrehozása"; @@ -1525,6 +1623,9 @@ server test step */ /* No comment provided by engineer. */ "Creating archive link" = "Archívum hivatkozás létrehozása"; +/* No comment provided by engineer. */ +"Creating channel" = "Csatorna létrehozása"; + /* No comment provided by engineer. */ "Creating link…" = "Hivatkozás létrehozása…"; @@ -1630,6 +1731,9 @@ server test step */ /* No comment provided by engineer. */ "Decentralized" = "Decentralizált"; +/* relay test step */ +"Decode link" = "Hivatkozás dekódolása"; + /* message decrypt error item */ "Decryption error" = "Titkosítás-visszafejtési hiba"; @@ -1671,6 +1775,12 @@ swipe action */ /* No comment provided by engineer. */ "Delete and notify contact" = "Törlés, és a partner értesítése"; +/* No comment provided by engineer. */ +"Delete channel" = "Csatorna törlése"; + +/* No comment provided by engineer. */ +"Delete channel?" = "Törli a csatornát?"; + /* No comment provided by engineer. */ "Delete chat" = "Csevegés törlése"; @@ -1774,6 +1884,9 @@ alert button */ /* server test step */ "Delete queue" = "Várólista törlése"; +/* No comment provided by engineer. */ +"Delete relay" = "Átjátszó törlése"; + /* No comment provided by engineer. */ "Delete report" = "Jelentés törlése"; @@ -1798,6 +1911,9 @@ alert button */ /* copied message info */ "Deleted at: %@" = "Törölve: %@"; +/* rcv group event chat item */ +"deleted channel" = "törölt csatorna"; + /* rcv direct event chat item */ "deleted contact" = "törölt partner"; @@ -1888,6 +2004,9 @@ alert button */ /* No comment provided by engineer. */ "Direct messages between members are prohibited." = "A tagok közötti közvetlen üzenetek le vannak tiltva."; +/* No comment provided by engineer. */ +"Direct messages between subscribers are prohibited." = "A feliratkozók közötti közvetlen üzenetek le vannak tiltva."; + /* No comment provided by engineer. */ "Disable (keep overrides)" = "Letiltás (egyéni beállítások megtartása)"; @@ -1945,6 +2064,9 @@ alert button */ /* No comment provided by engineer. */ "Do not send history to new members." = "Az előzmények ne legyenek elküldve az új tagok számára."; +/* No comment provided by engineer. */ +"Do not send history to new subscribers." = "Az előzmények ne legyenek elküldve az új feliratkozók számára."; + /* No comment provided by engineer. */ "Do NOT send messages directly, even if your or destination server does not support private routing." = "NE küldjön üzeneteket közvetlenül, még akkor sem, ha a saját kiszolgálója vagy a célkiszolgáló nem támogatja a privát útválasztást."; @@ -2027,18 +2149,24 @@ chat item action */ /* chat item action */ "Edit" = "Szerkesztés"; +/* No comment provided by engineer. */ +"Edit channel profile" = "Csatornaprofil szerkesztése"; + /* No comment provided by engineer. */ "Edit group profile" = "Csoportprofil szerkesztése"; /* No comment provided by engineer. */ "Empty message!" = "Üres üzenet!"; -/* No comment provided by engineer. */ +/* alert button */ "Enable" = "Engedélyezés"; /* No comment provided by engineer. */ "Enable (keep overrides)" = "Engedélyezés (egyéni beállítások megtartása)"; +/* channel creation warning */ +"Enable at least one chat relay in Network & Servers." = "Engedélyezzen legalább egy csevegési átjátszót a „Hálózat és kiszolgálók” menüben."; + /* alert title */ "Enable automatic message deletion?" = "Engedélyezi az automatikus üzenettörlést?"; @@ -2171,6 +2299,9 @@ chat item action */ /* call status */ "ended call %@" = "%@ hívása véget ért"; +/* No comment provided by engineer. */ +"Enter channel name…" = "Adja meg a csatorna nevét…"; + /* No comment provided by engineer. */ "Enter correct passphrase." = "Adja meg a helyes jelmondatot."; @@ -2189,6 +2320,9 @@ chat item action */ /* No comment provided by engineer. */ "Enter password above to show!" = "Adja meg a jelszót fentebb a megjelenítéshez!"; +/* No comment provided by engineer. */ +"Enter relay name…" = "Adja meg az átjátszó nevét…"; + /* No comment provided by engineer. */ "Enter server manually" = "Kiszolgáló megadása kézzel"; @@ -2207,7 +2341,7 @@ chat item action */ /* No comment provided by engineer. */ "error" = "hiba"; -/* No comment provided by engineer. */ +/* conn error description */ "Error" = "Hiba"; /* No comment provided by engineer. */ @@ -2225,6 +2359,9 @@ chat item action */ /* No comment provided by engineer. */ "Error adding member(s)" = "Hiba történt a tag(ok) hozzáadásakor"; +/* alert title */ +"Error adding relay" = "Hiba az átjátszó hozzáadásakor"; + /* alert title */ "Error adding server" = "Hiba történt a kiszolgáló hozzáadásakor"; @@ -2261,6 +2398,9 @@ chat item action */ /* No comment provided by engineer. */ "Error creating address" = "Hiba történt a cím létrehozásakor"; +/* alert title */ +"Error creating channel" = "Hiba a csatorna létrehozásakor"; + /* No comment provided by engineer. */ "Error creating group" = "Hiba történt a csoport létrehozásakor"; @@ -2366,6 +2506,9 @@ chat item action */ /* No comment provided by engineer. */ "Error resetting statistics" = "Hiba történt a statisztikák visszaállításakor"; +/* No comment provided by engineer. */ +"Error saving channel profile" = "Hiba a csatornaprofil mentésekor"; + /* alert title */ "Error saving chat list" = "Hiba történt a csevegési lista mentésekor"; @@ -2450,6 +2593,9 @@ chat item action */ /* No comment provided by engineer. */ "Error: " = "Hiba: "; +/* receive error chat item */ +"error: %@" = "hiba: %@"; + /* alert message file error text snd error text */ @@ -2719,6 +2865,9 @@ servers warning */ /* No comment provided by engineer. */ "Further reduced battery usage" = "Tovább csökkentett akkumulátor-használat"; +/* relay test step */ +"Get link" = "Hivatkozás megtekintése"; + /* No comment provided by engineer. */ "Get notified when mentioned." = "Kapjon értesítést, ha megemlítik."; @@ -2767,7 +2916,7 @@ servers warning */ /* No comment provided by engineer. */ "group is deleted" = "csoport törölve"; -/* No comment provided by engineer. */ +/* chat link info line */ "Group link" = "Csoporthivatkozás"; /* No comment provided by engineer. */ @@ -2839,6 +2988,9 @@ servers warning */ /* No comment provided by engineer. */ "History is not sent to new members." = "Az előzmények nem lesznek elküldve az új tagok számára."; +/* No comment provided by engineer. */ +"History is not sent to new subscribers." = "Az előzmények nem lesznek elküldve az új feliratkozók számára."; + /* time unit */ "hours" = "óra"; @@ -2900,7 +3052,7 @@ servers warning */ "Immediately" = "Azonnal"; /* No comment provided by engineer. */ -"Immune to spam" = "Védett a kéretlen tartalommal szemben"; +"Immune to spam" = "Védett a kéretlen tartalmakkal szemben"; /* No comment provided by engineer. */ "Import" = "Importálás"; @@ -3002,7 +3154,7 @@ servers warning */ "Initial role" = "Kezdeti szerepkör"; /* No comment provided by engineer. */ -"Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat)" = "A [SimpleX Chat terminálhoz] telepítése (https://github.com/simplex-chat/simplex-chat)"; +"Install SimpleX Chat for terminal" = "A SimpleX Chat terminálhoz telepítése"; /* No comment provided by engineer. */ "Instant" = "Azonnali"; @@ -3037,7 +3189,7 @@ servers warning */ /* No comment provided by engineer. */ "invalid chat data" = "érvénytelen csevegésadat"; -/* No comment provided by engineer. */ +/* conn error description */ "Invalid connection link" = "Érvénytelen kapcsolattartási hivatkozás"; /* invalid chat item */ @@ -3058,6 +3210,12 @@ servers warning */ /* No comment provided by engineer. */ "Invalid QR code" = "Érvénytelen QR-kód"; +/* alert title */ +"Invalid relay address!" = "Érvénytelen az átjátszó címe!"; + +/* alert title */ +"Invalid relay name!" = "Érvénytelen az átjátszó neve!"; + /* No comment provided by engineer. */ "Invalid response" = "Érvénytelen válasz"; @@ -3151,6 +3309,9 @@ servers warning */ /* No comment provided by engineer. */ "Join as %@" = "Csatlakozás mint: %@"; +/* No comment provided by engineer. */ +"Join channel" = "Csatlakozás a csatornához"; + /* new chat sheet title */ "Join group" = "Csatlakozás a csoporthoz"; @@ -3199,6 +3360,12 @@ servers warning */ /* swipe action */ "Leave" = "Elhagyás"; +/* No comment provided by engineer. */ +"Leave channel" = "Csatorna elhagyása"; + +/* No comment provided by engineer. */ +"Leave channel?" = "Elhagyja a csatornát?"; + /* No comment provided by engineer. */ "Leave chat" = "Csevegés elhagyása"; @@ -3226,6 +3393,9 @@ servers warning */ /* No comment provided by engineer. */ "Limitations" = "Korlátozások"; +/* No comment provided by engineer. */ +"link" = "hivatkozás"; + /* No comment provided by engineer. */ "Link mobile and desktop apps! 🔗" = "Társítsa össze a hordozható eszköz- és a számítógépes alkalmazásokat! 🔗"; @@ -3400,6 +3570,9 @@ servers warning */ /* No comment provided by engineer. */ "Message draft" = "Piszkozatok"; +/* No comment provided by engineer. */ +"Message error" = "Üzenethiba"; + /* item status text */ "Message forwarded" = "Továbbított üzenet"; @@ -3598,6 +3771,9 @@ servers warning */ /* delete after time */ "never" = "soha"; +/* No comment provided by engineer. */ +"new" = "új"; + /* token status text */ "New" = "Új"; @@ -3607,6 +3783,9 @@ servers warning */ /* No comment provided by engineer. */ "New chat experience 🎉" = "Új csevegési élmény 🎉"; +/* No comment provided by engineer. */ +"New chat relay" = "Új csevegési átjátszó"; + /* notification */ "New contact request" = "Új partneri kapcsolatkérés"; @@ -3667,6 +3846,12 @@ servers warning */ /* Authentication unavailable */ "No app password" = "Nincs alkalmazás jelszó"; +/* No comment provided by engineer. */ +"No chat relays" = "Nincsenek csevegési átjátszók"; + +/* servers warning */ +"No chat relays enabled." = "Nincsenek engedélyezve csevegési átjátszók."; + /* No comment provided by engineer. */ "No chats" = "Nincsenek csevegések"; @@ -3766,6 +3951,9 @@ servers warning */ /* No comment provided by engineer. */ "No user identifiers." = "Nincsenek felhasználói azonosítók."; +/* alert title */ +"Not all relays connected" = "Nem minden átjátszó kapcsolódott"; + /* No comment provided by engineer. */ "Not compatible!" = "Nem kompatibilis!"; @@ -3822,7 +4010,7 @@ alert button new chat action */ "Ok" = "Rendben"; -/* No comment provided by engineer. */ +/* alert button */ "OK" = "Rendben"; /* No comment provided by engineer. */ @@ -3903,12 +4091,16 @@ new chat action */ /* No comment provided by engineer. */ "Only your contact can send voice messages." = "Csak a partnere küldhet hangüzeneteket."; -/* alert action */ +/* alert action +alert button */ "Open" = "Megnyitás"; /* No comment provided by engineer. */ "Open changes" = "Módosítások megtekintése"; +/* new chat action */ +"Open channel" = "Csatorna megnyitása"; + /* new chat action */ "Open chat" = "Csevegés megnyitása"; @@ -3933,6 +4125,9 @@ new chat action */ /* authentication reason */ "Open migration to another device" = "Átköltöztetés indítása egy másik eszközre"; +/* new chat action */ +"Open new channel" = "Új csatorna megnyitása"; + /* new chat action */ "Open new chat" = "Új csevegés megnyitása"; @@ -3999,9 +4194,15 @@ new chat action */ /* member role */ "owner" = "tulajdonos"; +/* No comment provided by engineer. */ +"Owner" = "Tulajdonos"; + /* feature role */ "owners" = "tulajdonosok"; +/* No comment provided by engineer. */ +"Owners" = "Tulajdonosok"; + /* No comment provided by engineer. */ "Passcode" = "Jelkód"; @@ -4137,6 +4338,12 @@ new chat action */ /* No comment provided by engineer. */ "Preserve the last message draft, with attachments." = "Az utolsó üzenet tervezetének megőrzése a mellékletekkel együtt."; +/* No comment provided by engineer. */ +"Preset relay address" = "Előre beállított átjátszó címe"; + +/* No comment provided by engineer. */ +"Preset relay name" = "Előre beállított átjátszó neve"; + /* No comment provided by engineer. */ "Preset server address" = "Előre beállított kiszolgáló címe"; @@ -4188,6 +4395,9 @@ new chat action */ /* alert title */ "Private routing timeout" = "Privát útválasztás időtúllépése"; +/* alert action */ +"Proceed" = "Folytatás"; + /* No comment provided by engineer. */ "Profile and server connections" = "Profil és kiszolgálókapcsolatok"; @@ -4203,9 +4413,6 @@ new chat action */ /* No comment provided by engineer. */ "Profile theme" = "Profiltéma"; -/* alert message */ -"Profile update will be sent to your contacts." = "A profilfrissítés el lesz küldve a partnerei számára."; - /* No comment provided by engineer. */ "Prohibit audio/video calls." = "A hívások kezdeményezése le van tiltva."; @@ -4224,6 +4431,9 @@ new chat action */ /* No comment provided by engineer. */ "Prohibit sending direct messages to members." = "A közvetlen üzenetek küldése a tagok között le van tiltva."; +/* No comment provided by engineer. */ +"Prohibit sending direct messages to subscribers." = "A közvetlen üzenetek küldése a feliratkozók között le van tiltva."; + /* No comment provided by engineer. */ "Prohibit sending disappearing messages." = "Az eltűnő üzenetek küldése le van tiltva."; @@ -4294,16 +4504,10 @@ new chat action */ "Read more" = "Tudjon meg többet"; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)." = "További információ a [Használati útmutatóban](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)."; +"Read more in our GitHub repository." = "További információ a GitHub-tárolónkban."; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)." = "További információ a [Használati útmutatóban](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)."; - -/* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends)." = "További információ a [Használati útmutatóban](https://simplex.chat/docs/guide/readme.html#connect-to-friends)."; - -/* No comment provided by engineer. */ -"Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme)." = "További információ a [GitHub-tárolónkban](https://github.com/simplex-chat/simplex-chat#readme)."; +"Read more in User Guide." = "További információ a Használati útmutatóban."; /* No comment provided by engineer. */ "Receipts are disabled" = "A kézbesítési jelentések le vannak tiltva"; @@ -4412,12 +4616,30 @@ swipe action */ /* call status */ "rejected call" = "elutasított hívás"; +/* member role */ +"relay" = "átjátszó"; + +/* No comment provided by engineer. */ +"Relay" = "Átjátszó"; + +/* alert title */ +"Relay address" = "Átjátszó címe"; + +/* alert title */ +"Relay connection failed" = "Nem sikerült kapcsolódni az átjátszóhoz"; + +/* No comment provided by engineer. */ +"Relay link" = "Átjátszóhivatkozás"; + /* No comment provided by engineer. */ "Relay server is only used if necessary. Another party can observe your IP address." = "Az átjátszó csak szükség esetén lesz használva. Egy másik fél megfigyelheti az IP-címét."; /* No comment provided by engineer. */ "Relay server protects your IP address, but it can observe the duration of the call." = "Az átjátszó megvédi az IP-címét, de megfigyelheti a hívás időtartamát."; +/* No comment provided by engineer. */ +"Relay test failed!" = "Nem sikerült tesztelni az átjátszót!"; + /* alert action */ "Remove" = "Eltávolítás"; @@ -4442,9 +4664,18 @@ swipe action */ /* No comment provided by engineer. */ "Remove passphrase from keychain?" = "Eltávolítja a jelmondatot a kulcstartóból?"; +/* No comment provided by engineer. */ +"Remove subscriber" = "Feliratkozó eltávolítása"; + +/* alert title */ +"Remove subscriber?" = "Eltávolítja a feliratkozót?"; + /* No comment provided by engineer. */ "removed" = "eltávolítva"; +/* receive error chat item */ +"removed (%d attempts)" = "eltávolítva (%d kísérlet)"; + /* rcv group event chat item */ "removed %@" = "eltávolította őt: %@"; @@ -4632,6 +4863,9 @@ chat item action */ /* alert button */ "Save (and notify members)" = "Mentés (és a tagok értesítése)"; +/* alert button */ +"Save (and notify subscribers)" = "Mentés (és a feliratkozók értesítése)"; + /* alert title */ "Save admission settings?" = "Menti a befogadási beállításokat?"; @@ -4647,6 +4881,12 @@ chat item action */ /* No comment provided by engineer. */ "Save and update group profile" = "Mentés és a csoportprofil frissítése"; +/* No comment provided by engineer. */ +"Save channel profile" = "Csatornaprofil mentése"; + +/* alert title */ +"Save channel profile?" = "Menti a csatornaprofilt?"; + /* No comment provided by engineer. */ "Save group profile" = "Csoportprofil mentése"; @@ -4741,7 +4981,7 @@ chat item action */ "Search links" = "Hivatkozások keresése"; /* No comment provided by engineer. */ -"Search or paste SimpleX link" = "Keresés vagy SimpleX-hivatkozás beillesztése"; +"Search or paste SimpleX link" = "Keressen vagy adjon meg egy SimpleX-hivatkozást"; /* No comment provided by engineer. */ "Search videos" = "Videók keresése"; @@ -4860,6 +5100,9 @@ chat item action */ /* No comment provided by engineer. */ "Send up to 100 last messages to new members." = "Legfeljebb az utolsó 100 üzenet elküldése az új tagok számára."; +/* No comment provided by engineer. */ +"Send up to 100 last messages to new subscribers." = "Legfeljebb az utolsó 100 üzenet elküldése az új feliratkozók számára."; + /* No comment provided by engineer. */ "Send your private feedback to groups." = "Küldjön privát visszajelzést a csoportoknak."; @@ -4947,6 +5190,9 @@ chat item action */ /* queue info */ "server queue info: %@\n\nlast received msg: %@" = "a kiszolgáló várólista információi: %1$@\n\nutoljára fogadott üzenet: %2$@"; +/* relay test error */ +"Server requires authorization to connect to relay, check password." = "A kiszolgáló hitelesítést igényel az átjátszóhoz való kapcsolódáshoz, ellenőrizze a jelszavát."; + /* server test error */ "Server requires authorization to create queues, check password." = "A kiszolgálónak engedélyre van szüksége a várólisták létrehozásához, ellenőrizze a jelszavát."; @@ -5050,9 +5296,6 @@ chat item action */ /* No comment provided by engineer. */ "Share address publicly" = "Cím nyilvános megosztása"; -/* alert title */ -"Share address with contacts?" = "Megosztja a címet a partnereivel?"; - /* No comment provided by engineer. */ "Share from other apps." = "Megosztás más alkalmazásokból."; @@ -5068,6 +5311,9 @@ chat item action */ /* No comment provided by engineer. */ "Share profile" = "Profil megosztása"; +/* No comment provided by engineer. */ +"Share relay address" = "Átjátszó címének megosztása"; + /* No comment provided by engineer. */ "Share SimpleX address on social media." = "SimpleX-cím megosztása a közösségi médiában."; @@ -5077,9 +5323,6 @@ chat item action */ /* No comment provided by engineer. */ "Share to SimpleX" = "Megosztás a SimpleXben"; -/* No comment provided by engineer. */ -"Share with contacts" = "Megosztás a partnerekkel"; - /* No comment provided by engineer. */ "Share your address" = "Saját cím megosztása"; @@ -5129,7 +5372,7 @@ chat item action */ "SimpleX Address" = "SimpleX-cím"; /* No comment provided by engineer. */ -"SimpleX address and 1-time links are safe to share via any messenger." = "A SimpleX-cím és az egyszer használható meghívó biztonságosan megosztható bármilyen üzenetváltó-alkalmazáson keresztül."; +"SimpleX address and 1-time links are safe to share via any messenger." = "A SimpleX-cím és az egyszer használható meghívó biztonságosan megosztható bármilyen üzenetváltó alkalmazáson keresztül."; /* No comment provided by engineer. */ "SimpleX address or 1-time link?" = "SimpleX-cím vagy egyszer használható meghívó?"; @@ -5182,6 +5425,9 @@ chat item action */ /* No comment provided by engineer. */ "SimpleX protocols reviewed by Trail of Bits." = "A SimpleX protokollokat a Trail of Bits auditálta."; +/* simplex link type */ +"SimpleX relay address" = "SimpleX-átjátszó címe"; + /* No comment provided by engineer. */ "Simplified incognito mode" = "Egyszerűsített inkognitómód"; @@ -5234,6 +5480,9 @@ report reason */ /* chat item text */ "standard end-to-end encryption" = "szabványos végpontok közötti titkosítás"; +/* No comment provided by engineer. */ +"Star on GitHub" = "Csillagozás a GitHubon"; + /* No comment provided by engineer. */ "Start chat" = "Csevegés elindítása"; @@ -5300,6 +5549,45 @@ report reason */ /* No comment provided by engineer. */ "Subscribed" = "Feliratkozva"; +/* No comment provided by engineer. */ +"Subscriber" = "Feliratkozó"; + +/* chat feature */ +"Subscriber reports" = "Feliratkozók jelentései"; + +/* alert message */ +"Subscriber will be removed from channel - this cannot be undone!" = "A feliratkozó el lesz távolítva a csatornából – ez a művelet nem vonható vissza!"; + +/* No comment provided by engineer. */ +"Subscribers" = "Feliratkozók"; + +/* No comment provided by engineer. */ +"Subscribers can add message reactions." = "A feliratkozók reakciókat adhatnak hozzá az üzenetekhez."; + +/* No comment provided by engineer. */ +"Subscribers can irreversibly delete sent messages. (24 hours)" = "A feliratkozók véglegesen törölhetik az elküldött üzeneteiket. (24 óra)"; + +/* No comment provided by engineer. */ +"Subscribers can report messsages to moderators." = "A feliratkozók jelenthetik az üzeneteket a moderátorok felé."; + +/* No comment provided by engineer. */ +"Subscribers can send direct messages." = "A feliratkozók küldhetnek egymásnak közvetlen üzeneteket."; + +/* No comment provided by engineer. */ +"Subscribers can send disappearing messages." = "A feliratkozók küldhetnek eltűnő üzeneteket."; + +/* No comment provided by engineer. */ +"Subscribers can send files and media." = "A feliratkozók küldhetnek fájlokat és médiatartalmakat."; + +/* No comment provided by engineer. */ +"Subscribers can send SimpleX links." = "A feliratkozók küldhetnek SimpleX-hivatkozásokat."; + +/* No comment provided by engineer. */ +"Subscribers can send voice messages." = "A feliratkozók küldhetnek hangüzeneteket."; + +/* No comment provided by engineer. */ +"Subscribers use relay link to connect to the channel.\nRelay address was used to set up this relay for the channel." = "A feliratkozók az átjátszó hivatkozását használják a csatornához való kapcsolódáshoz.\nAz átjátszó címe ennek az átjátszónak a beállítására szolgált a csatornához."; + /* No comment provided by engineer. */ "Subscription errors" = "Feliratkozási hibák"; @@ -5340,7 +5628,7 @@ report reason */ "Tap Connect to use bot" = "Koppintson a „Kapcsolódás” gombra a bot használatához"; /* No comment provided by engineer. */ -"Tap Create SimpleX address in the menu to create it later." = "Koppintson a SimpleX-cím létrehozása menüpontra a későbbi létrehozáshoz."; +"Tap Join channel" = "Koppintson a „Csatlakozás a csatornához” gombra"; /* No comment provided by engineer. */ "Tap Join group" = "Koppintson a „Csatlakozás a csoporthoz” gombra"; @@ -5394,6 +5682,9 @@ server test failure */ /* No comment provided by engineer. */ "Test notifications" = "Értesítések tesztelése"; +/* No comment provided by engineer. */ +"Test relay" = "Átjátszó tesztelése"; + /* No comment provided by engineer. */ "Test server" = "Kiszolgáló tesztelése"; @@ -5421,6 +5712,9 @@ server test failure */ /* No comment provided by engineer. */ "The app protects your privacy by using different operators in each conversation." = "Az alkalmazás úgy védi az adatait, hogy minden egyes beszélgetéshez más-más üzemeltetőt használ."; +/* No comment provided by engineer. */ +"The app removed this message after %lld attempts to receive it." = "Az alkalmazás %lld sikertelen letöltési kísérlet után eltávolította ezt az üzenetet."; + /* No comment provided by engineer. */ "The app will ask to confirm downloads from unknown file servers (except .onion)." = "Az alkalmazás kérni fogja az ismeretlen fájlkiszolgálókról (kivéve .onion) történő letöltések megerősítését."; @@ -5541,6 +5835,12 @@ server test failure */ /* No comment provided by engineer. */ "This group no longer exists." = "Ez a csoport már nem létezik."; +/* alert message */ +"This is a chat relay address, it cannot be used to connect." = "Ez egy csevegési átjátszó címe, nem használható kapcsolódásra."; + +/* new chat action */ +"This is your link for channel %@!" = "Ez a saját hivatkozása a(z) %@ nevű csatornához!"; + /* No comment provided by engineer. */ "This link requires a newer app version. Please upgrade the app or ask your contact to send a compatible link." = "Ez a hivatkozás újabb alkalmazásverziót igényel. Frissítse az alkalmazást vagy kérjen egy kompatibilis hivatkozást a partnerétől."; @@ -5673,6 +5973,9 @@ server test failure */ /* No comment provided by engineer. */ "Unblock member?" = "Feloldja a tag letiltását?"; +/* No comment provided by engineer. */ +"Unblock subscriber for all?" = "Az összes feliratkozó számára feloldja a feliratkozó letiltását?"; + /* rcv group event chat item */ "unblocked %@" = "feloldotta %@ letiltását"; @@ -5745,12 +6048,15 @@ server test failure */ /* swipe action */ "Unread" = "Olvasatlan"; -/* No comment provided by engineer. */ +/* conn error description */ "Unsupported connection link" = "Nem támogatott kapcsolattartási hivatkozás"; /* No comment provided by engineer. */ "Up to 100 last messages are sent to new members." = "Legfeljebb az utolsó 100 üzenet lesz elküldve az új tagok számára."; +/* No comment provided by engineer. */ +"Up to 100 last messages are sent to new subscribers." = "Legfeljebb az utolsó 100 üzenet lesz elküldve az új feliratkozók számára."; + /* No comment provided by engineer. */ "Update" = "Frissítés"; @@ -5763,6 +6069,9 @@ server test failure */ /* No comment provided by engineer. */ "Update settings?" = "Frissíti a beállításokat?"; +/* rcv group event chat item */ +"updated channel profile" = "frissített csatornaprofil"; + /* No comment provided by engineer. */ "Updated conditions" = "Frissített feltételek"; @@ -5832,6 +6141,9 @@ server test failure */ /* No comment provided by engineer. */ "Use for messages" = "Használat az üzenetekhez"; +/* No comment provided by engineer. */ +"Use for new channels" = "Használat új csatornákhoz"; + /* No comment provided by engineer. */ "Use for new connections" = "Használat új kapcsolatokhoz"; @@ -5856,6 +6168,9 @@ server test failure */ /* No comment provided by engineer. */ "Use private routing with unknown servers." = "Privát útválasztás használata az ismeretlen kiszolgálókhoz."; +/* No comment provided by engineer. */ +"Use relay" = "Átjátszó használata"; + /* No comment provided by engineer. */ "Use server" = "Kiszolgáló használata"; @@ -5898,6 +6213,9 @@ server test failure */ /* No comment provided by engineer. */ "v%@ (%@)" = "v%@ (%@)"; +/* relay test step */ +"Verify" = "Ellenőrzés"; + /* No comment provided by engineer. */ "Verify code with desktop" = "Kód ellenőrzése a számítógépen"; @@ -5919,6 +6237,9 @@ server test failure */ /* No comment provided by engineer. */ "Verify security code" = "Biztonsági kód ellenőrzése"; +/* relay hostname */ +"via %@" = "a következőn keresztül: %@"; + /* No comment provided by engineer. */ "Via browser" = "Böngészőn keresztül"; @@ -5988,6 +6309,12 @@ server test failure */ /* No comment provided by engineer. */ "Voice messages prohibited!" = "A hangüzenetek le vannak tiltva!"; +/* alert action */ +"Wait" = "Várakozás"; + +/* relay test step */ +"Wait response" = "Várakozás a válaszra"; + /* No comment provided by engineer. */ "waiting for answer…" = "várakozás a válaszra…"; @@ -6156,6 +6483,9 @@ server test failure */ /* No comment provided by engineer. */ "you are observer" = "Ön megfigyelő"; +/* No comment provided by engineer. */ +"you are subscriber" = "Ön feliratkozó"; + /* snd group event chat item */ "you blocked %@" = "Ön letiltotta őt: %@"; @@ -6198,6 +6528,9 @@ server test failure */ /* No comment provided by engineer. */ "You can set lock screen notification preview via settings." = "A lezárási képernyő értesítési előnézetét az „Értesítések” menüben állíthatja be."; +/* No comment provided by engineer. */ +"You can share a link or a QR code - anybody will be able to join the channel." = "Megoszthat egy hivatkozást vagy egy QR-kódot – bárki képes lesz csatlakozni a csatornához."; + /* No comment provided by engineer. */ "You can share a link or a QR code - anybody will be able to join the group. You won't lose members of the group if you later delete it." = "Megoszthat egy hivatkozást vagy QR-kódot – így bárki csatlakozhat a csoporthoz. Ha a csoporthivatkozást később törli, akkor nem fogja elveszíteni a csoport meglévő tagjait."; @@ -6237,6 +6570,9 @@ server test failure */ /* snd group event chat item */ "you changed role of %@ to %@" = "Ön a következőre módosította %1$@ szerepkörét: „%2$@”"; +/* 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."; + /* No comment provided by engineer. */ "You could not be verified; please try again." = "Nem sikerült ellenőrizni; próbálja meg újra."; @@ -6318,6 +6654,9 @@ server test failure */ /* No comment provided by engineer. */ "You will still receive calls and notifications from muted profiles when they are active." = "Továbbra is kap hívásokat és értesítéseket a némított profiloktól, ha azok aktívak."; +/* No comment provided by engineer. */ +"You will stop receiving messages from this channel. Chat history will be preserved." = "Ön nem fog több üzenetet kapni ebből a csatornából. A csevegési előzmények megmaradnak."; + /* No comment provided by engineer. */ "You will stop receiving messages from this chat. Chat history will be preserved." = "Nem fog több üzenetet kapni ebből a csevegésből, de a csevegés előzményei megmaradnak."; @@ -6342,6 +6681,9 @@ server test failure */ /* No comment provided by engineer. */ "Your calls" = "Hívások"; +/* No comment provided by engineer. */ +"Your channel" = "Saját csatorna"; + /* No comment provided by engineer. */ "Your chat database" = "Csevegési adatbázis"; @@ -6396,6 +6738,9 @@ server test failure */ /* No comment provided by engineer. */ "Your profile" = "Saját profil"; +/* No comment provided by engineer. */ +"Your profile **%@** will be shared with channel relays and subscribers.\nRelays can access channel messages." = "A(z) **%@** nevű profilja meg lesz osztva a csatorna átjátszóival és feliratkozóival.\nAz átjátszók hozzáférhetnek a csatornaüzenetekhez."; + /* No comment provided by engineer. */ "Your profile **%@** will be shared." = "A(z) **%@** nevű profilja meg lesz osztva."; @@ -6412,7 +6757,13 @@ server test failure */ "Your random profile" = "Véletlenszerű profil"; /* No comment provided by engineer. */ -"Your server address" = "Saját SMP-kiszolgálójának címe"; +"Your relay address" = "Saját átjátszó címe"; + +/* No comment provided by engineer. */ +"Your relay name" = "Saját átjátszó neve"; + +/* No comment provided by engineer. */ +"Your server address" = "Saját SMP-kiszolgáló címe"; /* No comment provided by engineer. */ "Your servers" = "Saját kiszolgálók"; diff --git a/apps/ios/it.lproj/Localizable.strings b/apps/ios/it.lproj/Localizable.strings index 69045c9c23..2d1161de80 100644 --- a/apps/ios/it.lproj/Localizable.strings +++ b/apps/ios/it.lproj/Localizable.strings @@ -25,15 +25,9 @@ /* No comment provided by engineer. */ "(this device v%@)" = "(questo dispositivo v%@)"; -/* No comment provided by engineer. */ -"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Contribuisci](https://github.com/simplex-chat/simplex-chat#contribute)"; - /* No comment provided by engineer. */ "[Send us email](mailto:chat@simplex.chat)" = "[Inviaci un'email](mailto:chat@simplex.chat)"; -/* No comment provided by engineer. */ -"[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[Dai una stella su GitHub](https://github.com/simplex-chat/simplex-chat)"; - /* No comment provided by engineer. */ "**Create 1-time link**: to create and share a new invitation link." = "**Aggiungi contatto**: per creare un nuovo link di invito."; @@ -64,6 +58,9 @@ /* No comment provided by engineer. */ "**Scan / Paste link**: to connect via a link you received." = "**Scansiona / Incolla link**: per connetterti tramite un link che hai ricevuto."; +/* No comment provided by engineer. */ +"**Test relay** to retrieve its name." = "**Prova il relay** per recuperare il suo nome."; + /* No comment provided by engineer. */ "**Warning**: Instant push notifications require passphrase saved in Keychain." = "**Attenzione**: le notifiche push istantanee richiedono una password salvata nel portachiavi."; @@ -184,15 +181,38 @@ /* integrity error chat item */ "%d skipped message(s)" = "%d messaggio/i saltato/i"; +/* channel subscriber count */ +"%d subscriber" = "%d iscritto"; + +/* channel subscriber count */ +"%d subscribers" = "%d iscritti"; + /* time interval */ "%d weeks" = "%d settimane"; +/* channel creation progress +channel relay bar progress */ +"%d/%d relays active" = "%1$d/%2$d relay attivo/i"; + +/* channel creation progress with errors +channel relay bar */ +"%d/%d relays active, %d failed" = "%1$d/%2$d relay attivo/i, %3$d fallito/i"; + +/* channel subscriber relay bar progress */ +"%d/%d relays connected" = "%1$d/%2$d relay connesso/i"; + +/* channel subscriber relay bar */ +"%d/%d relays connected, %d errors" = "%1$d/%2$d relay connesso/i, %3$d errori"; + /* No comment provided by engineer. */ "%lld" = "%lld"; /* No comment provided by engineer. */ "%lld %@" = "%lld %@"; +/* No comment provided by engineer. */ +"%lld channel events" = "%lld eventi del canale"; + /* No comment provided by engineer. */ "%lld contact(s) selected" = "%lld contatto/i selezionato/i"; @@ -371,6 +391,9 @@ swipe action */ /* alert title */ "Accept member" = "Accetta membro"; +/* No comment provided by engineer. */ +"accepted" = "accettato"; + /* rcv group event chat item */ "accepted %@" = "%@ accettato"; @@ -392,15 +415,15 @@ swipe action */ /* No comment provided by engineer. */ "Acknowledgement errors" = "Errori di riconoscimento"; +/* No comment provided by engineer. */ +"active" = "attivo"; + /* token status text */ "Active" = "Attivo"; /* No comment provided by engineer. */ "Active connections" = "Connessioni attive"; -/* No comment provided by engineer. */ -"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Aggiungi l'indirizzo al tuo profilo, in modo che i tuoi contatti possano condividerlo con altre persone. L'aggiornamento del profilo verrà inviato ai tuoi contatti."; - /* No comment provided by engineer. */ "Add friends" = "Aggiungi amici"; @@ -575,6 +598,9 @@ swipe action */ /* No comment provided by engineer. */ "Allow sending direct messages to members." = "Permetti l'invio di messaggi diretti ai membri."; +/* No comment provided by engineer. */ +"Allow sending direct messages to subscribers." = "Permetti l'invio di messaggi diretti agli iscritti."; + /* No comment provided by engineer. */ "Allow sending disappearing messages." = "Permetti l'invio di messaggi a tempo."; @@ -851,6 +877,9 @@ swipe action */ /* No comment provided by engineer. */ "Block member?" = "Bloccare il membro?"; +/* No comment provided by engineer. */ +"Block subscriber for all?" = "Bloccare l'iscritto per tutti?"; + /* marked deleted chat item preview text */ "blocked" = "bloccato"; @@ -894,10 +923,13 @@ marked deleted chat item preview text */ /* No comment provided by engineer. */ "Both you and your contact can send voice messages." = "Sia tu che il tuo contatto potete inviare messaggi vocali."; +/* compose placeholder for channel owner */ +"Broadcast" = "Trasmetti"; + /* No comment provided by engineer. */ "Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Bulgaro, finlandese, tailandese e ucraino - grazie agli utenti e a [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!"; -/* No comment provided by engineer. */ +/* chat link info line */ "Business address" = "Indirizzo di lavoro"; /* No comment provided by engineer. */ @@ -1038,6 +1070,45 @@ set passcode view */ /* chat item text */ "changing address…" = "cambio indirizzo…"; +/* shown as sender role for channel messages */ +"channel" = "canale"; + +/* No comment provided by engineer. */ +"Channel" = "Canale"; + +/* No comment provided by engineer. */ +"Channel display name" = "Nome da mostrare del canale"; + +/* No comment provided by engineer. */ +"Channel full name (optional)" = "Nome completo del canale (facoltativo)"; + +/* No comment provided by engineer. */ +"Channel image" = "Immagine del canale"; + +/* chat link info line */ +"Channel link" = "Link del canale"; + +/* No comment provided by engineer. */ +"Channel profile" = "Profilo del canale"; + +/* No comment provided by engineer. */ +"Channel profile is stored on subscribers' devices and on the chat relays." = "Il profilo del canale è memorizzato sui dispositivi degli iscritti e sui relay di chat."; + +/* snd group event chat item */ +"channel profile updated" = "profilo del canale aggiornato"; + +/* alert message */ +"Channel profile was changed. If you save it, the updated profile will be sent to channel subscribers." = "Il profilo del canale è stato cambiato. Se lo salvi, il profilo aggiornato verrà inviato agli iscritti di canale."; + +/* No comment provided by engineer. */ +"Channel will be deleted for all subscribers - this cannot be undone!" = "Il canale verrà eliminato per tutti gli iscritti, non è reversibile!"; + +/* No comment provided by engineer. */ +"Channel will be deleted for you - this cannot be undone!" = "Il canale verrà eliminato per te, non è reversibile!"; + +/* alert message */ +"Channel will start working with %d of %d relays. Proceed?" = "Il canale sarà operativo con %1$d di %2$d relay. Procedere?"; + /* No comment provided by engineer. */ "Chat" = "Chat"; @@ -1089,6 +1160,18 @@ set passcode view */ /* No comment provided by engineer. */ "Chat profile" = "Profilo utente"; +/* No comment provided by engineer. */ +"Chat relay" = "Relay di chat"; + +/* No comment provided by engineer. */ +"Chat relays" = "Relay di chat"; + +/* No comment provided by engineer. */ +"Chat relays forward messages in channels you create." = "I relay di chat inoltrano i messaggi nei canali che crei."; + +/* No comment provided by engineer. */ +"Chat relays forward messages to channel subscribers." = "I relay di chat inoltrano i messaggi agli iscritti del canale."; + /* No comment provided by engineer. */ "Chat theme" = "Tema della chat"; @@ -1119,6 +1202,12 @@ set passcode view */ /* No comment provided by engineer. */ "Check messages when allowed." = "Controlla i messaggi quando consentito."; +/* alert message */ +"Check relay address and try again." = "Controlla l'indirizzo del relay e riprova."; + +/* alert message */ +"Check relay name and try again." = "Controlla il nome del relay e riprova."; + /* alert title */ "Check server address and try again." = "Controlla l'indirizzo del server e riprova."; @@ -1212,6 +1301,9 @@ set passcode view */ /* No comment provided by engineer. */ "Configure ICE servers" = "Configura server ICE"; +/* No comment provided by engineer. */ +"Configure relays" = "Configura i relay"; + /* No comment provided by engineer. */ "Configure server operators" = "Configura gli operatori dei server"; @@ -1348,7 +1440,7 @@ server test step */ /* alert title */ "Connection error" = "Errore di connessione"; -/* No comment provided by engineer. */ +/* conn error description */ "Connection error (AUTH)" = "Errore di connessione (AUTH)"; /* chat list item title (it should not be shown */ @@ -1453,6 +1545,9 @@ server test step */ /* No comment provided by engineer. */ "Continue" = "Continua"; +/* No comment provided by engineer. */ +"Contribute" = "Contribuisci"; + /* No comment provided by engineer. */ "Conversation deleted!" = "Conversazione eliminata!"; @@ -1471,9 +1566,6 @@ server test step */ /* alert message */ "Correct name to %@?" = "Correggere il nome a %@?"; -/* No comment provided by engineer. */ -"Create" = "Crea"; - /* No comment provided by engineer. */ "Create 1-time link" = "Crea link una tantum"; @@ -1501,6 +1593,12 @@ server test step */ /* No comment provided by engineer. */ "Create profile" = "Crea profilo"; +/* No comment provided by engineer. */ +"Create public channel" = "Crea canale pubblico"; + +/* No comment provided by engineer. */ +"Create public channel (BETA)" = "Crea canale pubblico (BETA)"; + /* server test step */ "Create queue" = "Crea coda"; @@ -1525,6 +1623,9 @@ server test step */ /* No comment provided by engineer. */ "Creating archive link" = "Creazione link dell'archivio"; +/* No comment provided by engineer. */ +"Creating channel" = "Creazione canale"; + /* No comment provided by engineer. */ "Creating link…" = "Creazione link…"; @@ -1630,6 +1731,9 @@ server test step */ /* No comment provided by engineer. */ "Decentralized" = "Decentralizzato"; +/* relay test step */ +"Decode link" = "Decodifica il link"; + /* message decrypt error item */ "Decryption error" = "Errore di decifrazione"; @@ -1671,6 +1775,12 @@ swipe action */ /* No comment provided by engineer. */ "Delete and notify contact" = "Elimina e avvisa il contatto"; +/* No comment provided by engineer. */ +"Delete channel" = "Elimina canale"; + +/* No comment provided by engineer. */ +"Delete channel?" = "Eliminare il canale?"; + /* No comment provided by engineer. */ "Delete chat" = "Elimina chat"; @@ -1774,6 +1884,9 @@ alert button */ /* server test step */ "Delete queue" = "Elimina coda"; +/* No comment provided by engineer. */ +"Delete relay" = "Elimina relay"; + /* No comment provided by engineer. */ "Delete report" = "Elimina la segnalazione"; @@ -1798,6 +1911,9 @@ alert button */ /* copied message info */ "Deleted at: %@" = "Eliminato il: %@"; +/* rcv group event chat item */ +"deleted channel" = "canale eliminato"; + /* rcv direct event chat item */ "deleted contact" = "contatto eliminato"; @@ -1888,6 +2004,9 @@ alert button */ /* No comment provided by engineer. */ "Direct messages between members are prohibited." = "I messaggi diretti tra i membri sono vietati in questo gruppo."; +/* No comment provided by engineer. */ +"Direct messages between subscribers are prohibited." = "I messaggi diretti tra gli iscritti sono vietati."; + /* No comment provided by engineer. */ "Disable (keep overrides)" = "Disattiva (mantieni sostituzioni)"; @@ -1945,6 +2064,9 @@ alert button */ /* No comment provided by engineer. */ "Do not send history to new members." = "Non inviare la cronologia ai nuovi membri."; +/* No comment provided by engineer. */ +"Do not send history to new subscribers." = "Non inviare la cronologia ai nuovi iscritti."; + /* No comment provided by engineer. */ "Do NOT send messages directly, even if your or destination server does not support private routing." = "NON inviare messaggi direttamente, anche se il tuo server o quello di destinazione non supporta l'instradamento privato."; @@ -2027,18 +2149,24 @@ chat item action */ /* chat item action */ "Edit" = "Modifica"; +/* No comment provided by engineer. */ +"Edit channel profile" = "Modifica profilo canale"; + /* No comment provided by engineer. */ "Edit group profile" = "Modifica il profilo del gruppo"; /* No comment provided by engineer. */ "Empty message!" = "Messaggio vuoto!"; -/* No comment provided by engineer. */ +/* alert button */ "Enable" = "Attiva"; /* No comment provided by engineer. */ "Enable (keep overrides)" = "Attiva (mantieni sostituzioni)"; +/* channel creation warning */ +"Enable at least one chat relay in Network & Servers." = "Attiva almeno un relay di chat in \"Rete e server\"."; + /* alert title */ "Enable automatic message deletion?" = "Attivare l'eliminazione automatica dei messaggi?"; @@ -2171,6 +2299,9 @@ chat item action */ /* call status */ "ended call %@" = "chiamata terminata %@"; +/* No comment provided by engineer. */ +"Enter channel name…" = "Inserisci il nome del canale…"; + /* No comment provided by engineer. */ "Enter correct passphrase." = "Inserisci la password giusta."; @@ -2189,6 +2320,9 @@ chat item action */ /* No comment provided by engineer. */ "Enter password above to show!" = "Inserisci la password sopra per mostrare!"; +/* No comment provided by engineer. */ +"Enter relay name…" = "Inserisci il nome del relay…"; + /* No comment provided by engineer. */ "Enter server manually" = "Inserisci il server a mano"; @@ -2207,7 +2341,7 @@ chat item action */ /* No comment provided by engineer. */ "error" = "errore"; -/* No comment provided by engineer. */ +/* conn error description */ "Error" = "Errore"; /* No comment provided by engineer. */ @@ -2225,6 +2359,9 @@ chat item action */ /* No comment provided by engineer. */ "Error adding member(s)" = "Errore di aggiunta membro/i"; +/* alert title */ +"Error adding relay" = "Errore di aggiunta del relay"; + /* alert title */ "Error adding server" = "Errore di aggiunta del server"; @@ -2261,6 +2398,9 @@ chat item action */ /* No comment provided by engineer. */ "Error creating address" = "Errore nella creazione dell'indirizzo"; +/* alert title */ +"Error creating channel" = "Errore di creazione del canale"; + /* No comment provided by engineer. */ "Error creating group" = "Errore nella creazione del gruppo"; @@ -2366,6 +2506,9 @@ chat item action */ /* No comment provided by engineer. */ "Error resetting statistics" = "Errore di azzeramento statistiche"; +/* No comment provided by engineer. */ +"Error saving channel profile" = "Errore di salvataggio del profilo del canale"; + /* alert title */ "Error saving chat list" = "Errore nel salvataggio dell'elenco di chat"; @@ -2450,6 +2593,9 @@ chat item action */ /* No comment provided by engineer. */ "Error: " = "Errore: "; +/* receive error chat item */ +"error: %@" = "errore: %@"; + /* alert message file error text snd error text */ @@ -2719,6 +2865,9 @@ servers warning */ /* No comment provided by engineer. */ "Further reduced battery usage" = "Ulteriore riduzione del consumo della batteria"; +/* relay test step */ +"Get link" = "Ottieni link"; + /* No comment provided by engineer. */ "Get notified when mentioned." = "Ricevi una notifica quando menzionato."; @@ -2767,7 +2916,7 @@ servers warning */ /* No comment provided by engineer. */ "group is deleted" = "il gruppo è eliminato"; -/* No comment provided by engineer. */ +/* chat link info line */ "Group link" = "Link del gruppo"; /* No comment provided by engineer. */ @@ -2839,6 +2988,9 @@ servers warning */ /* No comment provided by engineer. */ "History is not sent to new members." = "La cronologia non viene inviata ai nuovi membri."; +/* No comment provided by engineer. */ +"History is not sent to new subscribers." = "La cronologia non viene inviata ai nuovi iscritti."; + /* time unit */ "hours" = "ore"; @@ -3002,7 +3154,7 @@ servers warning */ "Initial role" = "Ruolo iniziale"; /* No comment provided by engineer. */ -"Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat)" = "Installa [Simplex Chat per terminale](https://github.com/simplex-chat/simplex-chat)"; +"Install SimpleX Chat for terminal" = "Installa Simplex Chat per terminale"; /* No comment provided by engineer. */ "Instant" = "Istantaneamente"; @@ -3037,7 +3189,7 @@ servers warning */ /* No comment provided by engineer. */ "invalid chat data" = "dati chat non validi"; -/* No comment provided by engineer. */ +/* conn error description */ "Invalid connection link" = "Link di connessione non valido"; /* invalid chat item */ @@ -3058,6 +3210,12 @@ servers warning */ /* No comment provided by engineer. */ "Invalid QR code" = "Codice QR non valido"; +/* alert title */ +"Invalid relay address!" = "Indirizzo del relay non valido!"; + +/* alert title */ +"Invalid relay name!" = "Nome del relay non valido!"; + /* No comment provided by engineer. */ "Invalid response" = "Risposta non valida"; @@ -3151,6 +3309,9 @@ servers warning */ /* No comment provided by engineer. */ "Join as %@" = "entra come %@"; +/* No comment provided by engineer. */ +"Join channel" = "Iscriviti al canale"; + /* new chat sheet title */ "Join group" = "Entra nel gruppo"; @@ -3199,6 +3360,12 @@ servers warning */ /* swipe action */ "Leave" = "Esci"; +/* No comment provided by engineer. */ +"Leave channel" = "Esci dal canale"; + +/* No comment provided by engineer. */ +"Leave channel?" = "Uscire dal canale?"; + /* No comment provided by engineer. */ "Leave chat" = "Esci dalla chat"; @@ -3226,6 +3393,9 @@ servers warning */ /* No comment provided by engineer. */ "Limitations" = "Limitazioni"; +/* No comment provided by engineer. */ +"link" = "link"; + /* No comment provided by engineer. */ "Link mobile and desktop apps! 🔗" = "Collega le app mobile e desktop! 🔗"; @@ -3400,6 +3570,9 @@ servers warning */ /* No comment provided by engineer. */ "Message draft" = "Bozza del messaggio"; +/* No comment provided by engineer. */ +"Message error" = "Errore del messaggio"; + /* item status text */ "Message forwarded" = "Messaggio inoltrato"; @@ -3598,6 +3771,9 @@ servers warning */ /* delete after time */ "never" = "mai"; +/* No comment provided by engineer. */ +"new" = "nuovo"; + /* token status text */ "New" = "Nuovo"; @@ -3607,6 +3783,9 @@ servers warning */ /* No comment provided by engineer. */ "New chat experience 🎉" = "Una nuova esperienza di chat 🎉"; +/* No comment provided by engineer. */ +"New chat relay" = "Nuovo relay di chat"; + /* notification */ "New contact request" = "Nuova richiesta di contatto"; @@ -3667,6 +3846,12 @@ servers warning */ /* Authentication unavailable */ "No app password" = "Nessuna password dell'app"; +/* No comment provided by engineer. */ +"No chat relays" = "Nessun relay di chat"; + +/* servers warning */ +"No chat relays enabled." = "Nessun relay di chat attivato."; + /* No comment provided by engineer. */ "No chats" = "Nessuna chat"; @@ -3766,6 +3951,9 @@ servers warning */ /* No comment provided by engineer. */ "No user identifiers." = "Nessun identificatore utente."; +/* alert title */ +"Not all relays connected" = "Non tutti i relay sono connessi"; + /* No comment provided by engineer. */ "Not compatible!" = "Non compatibile!"; @@ -3822,7 +4010,7 @@ alert button new chat action */ "Ok" = "Ok"; -/* No comment provided by engineer. */ +/* alert button */ "OK" = "OK"; /* No comment provided by engineer. */ @@ -3903,12 +4091,16 @@ new chat action */ /* No comment provided by engineer. */ "Only your contact can send voice messages." = "Solo il tuo contatto può inviare messaggi vocali."; -/* alert action */ +/* alert action +alert button */ "Open" = "Apri"; /* No comment provided by engineer. */ "Open changes" = "Apri le modifiche"; +/* new chat action */ +"Open channel" = "Apri canale"; + /* new chat action */ "Open chat" = "Apri chat"; @@ -3933,6 +4125,9 @@ new chat action */ /* authentication reason */ "Open migration to another device" = "Apri migrazione ad un altro dispositivo"; +/* new chat action */ +"Open new channel" = "Apri un canale nuovo"; + /* new chat action */ "Open new chat" = "Apri una chat nuova"; @@ -3999,9 +4194,15 @@ new chat action */ /* member role */ "owner" = "proprietario"; +/* No comment provided by engineer. */ +"Owner" = "Proprietario"; + /* feature role */ "owners" = "proprietari"; +/* No comment provided by engineer. */ +"Owners" = "Proprietari"; + /* No comment provided by engineer. */ "Passcode" = "Codice di accesso"; @@ -4137,6 +4338,12 @@ new chat action */ /* No comment provided by engineer. */ "Preserve the last message draft, with attachments." = "Conserva la bozza dell'ultimo messaggio, con gli allegati."; +/* No comment provided by engineer. */ +"Preset relay address" = "Indirizzo relay preimpostato"; + +/* No comment provided by engineer. */ +"Preset relay name" = "Nome relay preimpostato"; + /* No comment provided by engineer. */ "Preset server address" = "Indirizzo server preimpostato"; @@ -4188,6 +4395,9 @@ new chat action */ /* alert title */ "Private routing timeout" = "Scadenza dell'instradamento privato"; +/* alert action */ +"Proceed" = "Procedi"; + /* No comment provided by engineer. */ "Profile and server connections" = "Profilo e connessioni al server"; @@ -4203,9 +4413,6 @@ new chat action */ /* No comment provided by engineer. */ "Profile theme" = "Tema del profilo"; -/* alert message */ -"Profile update will be sent to your contacts." = "L'aggiornamento del profilo verrà inviato ai tuoi contatti."; - /* No comment provided by engineer. */ "Prohibit audio/video calls." = "Proibisci le chiamate audio/video."; @@ -4224,6 +4431,9 @@ new chat action */ /* No comment provided by engineer. */ "Prohibit sending direct messages to members." = "Proibisci l'invio di messaggi diretti ai membri."; +/* No comment provided by engineer. */ +"Prohibit sending direct messages to subscribers." = "Proibisci l'invio di messaggi diretti agli iscritti."; + /* No comment provided by engineer. */ "Prohibit sending disappearing messages." = "Proibisci l'invio di messaggi a tempo."; @@ -4294,16 +4504,10 @@ new chat action */ "Read more" = "Leggi tutto"; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)." = "Leggi di più nella [Guida utente](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)."; +"Read more in our GitHub repository." = "Maggiori informazioni nel nostro repository GitHub."; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)." = "Maggiori informazioni nella [Guida per l'utente](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)."; - -/* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends)." = "Maggiori informazioni nella [Guida per l'utente](https://simplex.chat/docs/guide/readme.html#connect-to-friends)."; - -/* No comment provided by engineer. */ -"Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme)." = "Maggiori informazioni nel nostro [repository GitHub](https://github.com/simplex-chat/simplex-chat#readme)."; +"Read more in User Guide." = "Leggi di più nella Guida utente."; /* No comment provided by engineer. */ "Receipts are disabled" = "Le ricevute sono disattivate"; @@ -4412,12 +4616,30 @@ swipe action */ /* call status */ "rejected call" = "chiamata rifiutata"; +/* member role */ +"relay" = "relay"; + +/* No comment provided by engineer. */ +"Relay" = "Relay"; + +/* alert title */ +"Relay address" = "Indirizzo del relay"; + +/* alert title */ +"Relay connection failed" = "Connessione del relay fallita"; + +/* No comment provided by engineer. */ +"Relay link" = "Link del relay"; + /* No comment provided by engineer. */ "Relay server is only used if necessary. Another party can observe your IP address." = "Il server relay viene usato solo se necessario. Un altro utente può osservare il tuo indirizzo IP."; /* No comment provided by engineer. */ "Relay server protects your IP address, but it can observe the duration of the call." = "Il server relay protegge il tuo indirizzo IP, ma può osservare la durata della chiamata."; +/* No comment provided by engineer. */ +"Relay test failed!" = "Prova del relay fallita!"; + /* alert action */ "Remove" = "Rimuovi"; @@ -4442,9 +4664,18 @@ swipe action */ /* No comment provided by engineer. */ "Remove passphrase from keychain?" = "Rimuovere la password dal portachiavi?"; +/* No comment provided by engineer. */ +"Remove subscriber" = "Rimuovi iscritto"; + +/* alert title */ +"Remove subscriber?" = "Rimuovere l'iscritto?"; + /* No comment provided by engineer. */ "removed" = "rimosso"; +/* receive error chat item */ +"removed (%d attempts)" = "rimosso (%d tentativi)"; + /* rcv group event chat item */ "removed %@" = "ha rimosso %@"; @@ -4630,7 +4861,10 @@ chat item action */ "Save (and notify contacts)" = "Salva (e avvisa i contatti)"; /* alert button */ -"Save (and notify members)" = "Salva (e informa i membri)"; +"Save (and notify members)" = "Salva (e avvisa i membri)"; + +/* alert button */ +"Save (and notify subscribers)" = "Salva (e avvisa gli iscritti)"; /* alert title */ "Save admission settings?" = "Salvare le impostazioni di ammissione?"; @@ -4647,6 +4881,12 @@ chat item action */ /* No comment provided by engineer. */ "Save and update group profile" = "Salva e aggiorna il profilo del gruppo"; +/* No comment provided by engineer. */ +"Save channel profile" = "Salva il profilo del canale"; + +/* alert title */ +"Save channel profile?" = "Salva il profilo del canale?"; + /* No comment provided by engineer. */ "Save group profile" = "Salva il profilo del gruppo"; @@ -4860,6 +5100,9 @@ chat item action */ /* No comment provided by engineer. */ "Send up to 100 last messages to new members." = "Invia fino a 100 ultimi messaggi ai nuovi membri."; +/* No comment provided by engineer. */ +"Send up to 100 last messages to new subscribers." = "Invia fino a 100 ultimi messaggi ai nuovi iscritti."; + /* No comment provided by engineer. */ "Send your private feedback to groups." = "Invia i tuoi commenti privati ai gruppi."; @@ -4947,6 +5190,9 @@ chat item action */ /* queue info */ "server queue info: %@\n\nlast received msg: %@" = "info coda server: %1$@\n\nultimo msg ricevuto: %2$@"; +/* relay test error */ +"Server requires authorization to connect to relay, check password." = "Il server richiede l'autorizzazione per connettersi al relay, controlla la password."; + /* server test error */ "Server requires authorization to create queues, check password." = "Il server richiede l'autorizzazione di creare code, controlla la password."; @@ -5050,9 +5296,6 @@ chat item action */ /* No comment provided by engineer. */ "Share address publicly" = "Condividi indirizzo pubblicamente"; -/* alert title */ -"Share address with contacts?" = "Condividere l'indirizzo con i contatti?"; - /* No comment provided by engineer. */ "Share from other apps." = "Condividi da altre app."; @@ -5068,6 +5311,9 @@ chat item action */ /* No comment provided by engineer. */ "Share profile" = "Condividi il profilo"; +/* No comment provided by engineer. */ +"Share relay address" = "Condividi l'indirizzo del relay"; + /* No comment provided by engineer. */ "Share SimpleX address on social media." = "Condividi l'indirizzo SimpleX sui social media."; @@ -5077,9 +5323,6 @@ chat item action */ /* No comment provided by engineer. */ "Share to SimpleX" = "Condividi in SimpleX"; -/* No comment provided by engineer. */ -"Share with contacts" = "Condividi con i contatti"; - /* No comment provided by engineer. */ "Share your address" = "Condividi il tuo indirizzo"; @@ -5182,6 +5425,9 @@ chat item action */ /* No comment provided by engineer. */ "SimpleX protocols reviewed by Trail of Bits." = "Protocolli di SimpleX esaminati da Trail of Bits."; +/* simplex link type */ +"SimpleX relay address" = "Indirizzo del relay SimpleX"; + /* No comment provided by engineer. */ "Simplified incognito mode" = "Modalità incognito semplificata"; @@ -5234,6 +5480,9 @@ report reason */ /* chat item text */ "standard end-to-end encryption" = "crittografia end-to-end standard"; +/* No comment provided by engineer. */ +"Star on GitHub" = "Dai una stella su GitHub"; + /* No comment provided by engineer. */ "Start chat" = "Avvia chat"; @@ -5298,7 +5547,46 @@ report reason */ "Submit" = "Invia"; /* No comment provided by engineer. */ -"Subscribed" = "Iscritto"; +"Subscribed" = "Iscritto/a"; + +/* No comment provided by engineer. */ +"Subscriber" = "Iscritto"; + +/* chat feature */ +"Subscriber reports" = "Segnalazioni degli iscritti"; + +/* alert message */ +"Subscriber will be removed from channel - this cannot be undone!" = "L'iscritto verrà rimosso dal canale, non è reversibile!"; + +/* No comment provided by engineer. */ +"Subscribers" = "Iscritti"; + +/* No comment provided by engineer. */ +"Subscribers can add message reactions." = "Gli iscritti al canale possono aggiungere reazioni ai messaggi."; + +/* No comment provided by engineer. */ +"Subscribers can irreversibly delete sent messages. (24 hours)" = "Gli iscritti al canale possono eliminare irreversibilmente i messaggi inviati. (24 ore)"; + +/* No comment provided by engineer. */ +"Subscribers can report messsages to moderators." = "Gli iscritti possono segnalare messaggi ai moderatori."; + +/* No comment provided by engineer. */ +"Subscribers can send direct messages." = "Gli iscritti al canale possono inviare messaggi diretti."; + +/* No comment provided by engineer. */ +"Subscribers can send disappearing messages." = "Gli iscritti al canale possono inviare messaggi a tempo."; + +/* No comment provided by engineer. */ +"Subscribers can send files and media." = "Gli iscritti al canale possono inviare file e contenuti multimediali."; + +/* No comment provided by engineer. */ +"Subscribers can send SimpleX links." = "Gli iscritti al canale possono inviare link di Simplex."; + +/* No comment provided by engineer. */ +"Subscribers can send voice messages." = "Gli iscritti al canale possono inviare messaggi vocali."; + +/* No comment provided by engineer. */ +"Subscribers use relay link to connect to the channel.\nRelay address was used to set up this relay for the channel." = "Gli iscritti usano il link del relay per connettersi al canale.\nL'indirizzo del relay è stato usato per impostare questo relay per il canale."; /* No comment provided by engineer. */ "Subscription errors" = "Errori di iscrizione"; @@ -5340,7 +5628,7 @@ report reason */ "Tap Connect to use bot" = "Tocca Connetti per usare il bot"; /* No comment provided by engineer. */ -"Tap Create SimpleX address in the menu to create it later." = "Tocca Crea indirizzo SimpleX nel menu per crearlo più tardi."; +"Tap Join channel" = "Tocca Iscriviti al canale"; /* No comment provided by engineer. */ "Tap Join group" = "Tocca Entra nel gruppo"; @@ -5394,6 +5682,9 @@ server test failure */ /* No comment provided by engineer. */ "Test notifications" = "Prova le notifiche"; +/* No comment provided by engineer. */ +"Test relay" = "Prova relay"; + /* No comment provided by engineer. */ "Test server" = "Prova server"; @@ -5421,6 +5712,9 @@ server test failure */ /* No comment provided by engineer. */ "The app protects your privacy by using different operators in each conversation." = "L'app protegge la tua privacy usando diversi operatori in ogni conversazione."; +/* No comment provided by engineer. */ +"The app removed this message after %lld attempts to receive it." = "L'app ha rimosso questo messaggio dopo %lld tentativi di riceverlo."; + /* No comment provided by engineer. */ "The app will ask to confirm downloads from unknown file servers (except .onion)." = "L'app chiederà di confermare i download da server di file sconosciuti (eccetto .onion)."; @@ -5541,6 +5835,12 @@ server test failure */ /* No comment provided by engineer. */ "This group no longer exists." = "Questo gruppo non esiste più."; +/* alert message */ +"This is a chat relay address, it cannot be used to connect." = "Questo è un indirizzo di relay di chat, non può essere usato per connettersi."; + +/* new chat action */ +"This is your link for channel %@!" = "Questo è il tuo link per il canale %@!"; + /* No comment provided by engineer. */ "This link requires a newer app version. Please upgrade the app or ask your contact to send a compatible link." = "Questo link richiede una versione più recente dell'app. Aggiornala o chiedi al tuo contatto di inviare un link compatibile."; @@ -5673,6 +5973,9 @@ server test failure */ /* No comment provided by engineer. */ "Unblock member?" = "Sbloccare il membro?"; +/* No comment provided by engineer. */ +"Unblock subscriber for all?" = "Sbloccare l'iscritto per tutti?"; + /* rcv group event chat item */ "unblocked %@" = "ha sbloccato %@"; @@ -5745,12 +6048,15 @@ server test failure */ /* swipe action */ "Unread" = "Non letto"; -/* No comment provided by engineer. */ +/* conn error description */ "Unsupported connection link" = "Link di connessione non supportato"; /* No comment provided by engineer. */ "Up to 100 last messages are sent to new members." = "Vengono inviati ai nuovi membri fino a 100 ultimi messaggi."; +/* No comment provided by engineer. */ +"Up to 100 last messages are sent to new subscribers." = "Vengono inviati ai nuovi iscritti fino a 100 ultimi messaggi."; + /* No comment provided by engineer. */ "Update" = "Aggiorna"; @@ -5763,6 +6069,9 @@ server test failure */ /* No comment provided by engineer. */ "Update settings?" = "Aggiornare le impostazioni?"; +/* rcv group event chat item */ +"updated channel profile" = "profilo del canale aggiornato"; + /* No comment provided by engineer. */ "Updated conditions" = "Condizioni aggiornate"; @@ -5832,6 +6141,9 @@ server test failure */ /* No comment provided by engineer. */ "Use for messages" = "Usa per i messaggi"; +/* No comment provided by engineer. */ +"Use for new channels" = "Usa per canali nuovi"; + /* No comment provided by engineer. */ "Use for new connections" = "Usa per connessioni nuove"; @@ -5856,6 +6168,9 @@ server test failure */ /* No comment provided by engineer. */ "Use private routing with unknown servers." = "Usa l'instradamento privato con server sconosciuti."; +/* No comment provided by engineer. */ +"Use relay" = "Usa relay"; + /* No comment provided by engineer. */ "Use server" = "Usa il server"; @@ -5898,6 +6213,9 @@ server test failure */ /* No comment provided by engineer. */ "v%@ (%@)" = "v%@ (%@)"; +/* relay test step */ +"Verify" = "Verifica"; + /* No comment provided by engineer. */ "Verify code with desktop" = "Verifica il codice con il desktop"; @@ -5919,6 +6237,9 @@ server test failure */ /* No comment provided by engineer. */ "Verify security code" = "Verifica codice di sicurezza"; +/* relay hostname */ +"via %@" = "via %@"; + /* No comment provided by engineer. */ "Via browser" = "Via browser"; @@ -5988,6 +6309,12 @@ server test failure */ /* No comment provided by engineer. */ "Voice messages prohibited!" = "Messaggi vocali vietati!"; +/* alert action */ +"Wait" = "Attendi"; + +/* relay test step */ +"Wait response" = "Attendi risposta"; + /* No comment provided by engineer. */ "waiting for answer…" = "in attesa di risposta…"; @@ -6156,6 +6483,9 @@ server test failure */ /* No comment provided by engineer. */ "you are observer" = "sei un osservatore"; +/* No comment provided by engineer. */ +"you are subscriber" = "sei iscritto/a"; + /* snd group event chat item */ "you blocked %@" = "hai bloccato %@"; @@ -6198,6 +6528,9 @@ server test failure */ /* No comment provided by engineer. */ "You can set lock screen notification preview via settings." = "Puoi impostare l'anteprima della notifica nella schermata di blocco tramite le impostazioni."; +/* No comment provided by engineer. */ +"You can share a link or a QR code - anybody will be able to join the channel." = "Puoi condividere un link o un codice QR, chiunque sarà in grado di iscriversi al canale."; + /* No comment provided by engineer. */ "You can share a link or a QR code - anybody will be able to join the group. You won't lose members of the group if you later delete it." = "Puoi condividere un link o un codice QR: chiunque potrà unirsi al gruppo. Non perderai i membri del gruppo se in seguito lo elimini."; @@ -6237,6 +6570,9 @@ server test failure */ /* snd group event chat item */ "you changed role of %@ to %@" = "hai cambiato il ruolo di %1$@ in %2$@"; +/* 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."; + /* No comment provided by engineer. */ "You could not be verified; please try again." = "Non è stato possibile verificarti, riprova."; @@ -6318,6 +6654,9 @@ server test failure */ /* No comment provided by engineer. */ "You will still receive calls and notifications from muted profiles when they are active." = "Continuerai a ricevere chiamate e notifiche da profili silenziati quando sono attivi."; +/* No comment provided by engineer. */ +"You will stop receiving messages from this channel. Chat history will be preserved." = "Smetterai di ricevere messaggi da questo canale. La cronologia della chat sarà preservata."; + /* No comment provided by engineer. */ "You will stop receiving messages from this chat. Chat history will be preserved." = "Non riceverai più messaggi da questa chat. La cronologia della chat verrà conservata."; @@ -6342,6 +6681,9 @@ server test failure */ /* No comment provided by engineer. */ "Your calls" = "Le tue chiamate"; +/* No comment provided by engineer. */ +"Your channel" = "Il tuo canale"; + /* No comment provided by engineer. */ "Your chat database" = "Il tuo database della chat"; @@ -6396,6 +6738,9 @@ server test failure */ /* No comment provided by engineer. */ "Your profile" = "Il tuo profilo"; +/* No comment provided by engineer. */ +"Your profile **%@** will be shared with channel relays and subscribers.\nRelays can access channel messages." = "Il tuo profilo **%@** verrà condiviso con i relay e gli iscritti.\nI relay hanno accesso ai messaggi del canale."; + /* No comment provided by engineer. */ "Your profile **%@** will be shared." = "Verrà condiviso il tuo profilo **%@**."; @@ -6411,6 +6756,12 @@ server test failure */ /* No comment provided by engineer. */ "Your random profile" = "Il tuo profilo casuale"; +/* No comment provided by engineer. */ +"Your relay address" = "L'indirizzo del tuo relay"; + +/* No comment provided by engineer. */ +"Your relay name" = "Il nome del tuo relay"; + /* No comment provided by engineer. */ "Your server address" = "L'indirizzo del tuo server"; diff --git a/apps/ios/ja.lproj/Localizable.strings b/apps/ios/ja.lproj/Localizable.strings index 38f90a2cad..37dd9d92ba 100644 --- a/apps/ios/ja.lproj/Localizable.strings +++ b/apps/ios/ja.lproj/Localizable.strings @@ -25,15 +25,9 @@ /* No comment provided by engineer. */ "(this device v%@)" = "(このデバイス v%@)"; -/* No comment provided by engineer. */ -"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[貢献する](https://github.com/simplex-chat/simplex-chat#contribute)"; - /* No comment provided by engineer. */ "[Send us email](mailto:chat@simplex.chat)" = "[メールを送信](mailto:chat@simplex.chat)"; -/* No comment provided by engineer. */ -"[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[GitHub でスターを付ける](https://github.com/simplex-chat/simplex-chat)"; - /* No comment provided by engineer. */ "**Create 1-time link**: to create and share a new invitation link." = "**コンタクトの追加**: 新しい招待リンクを作成するか、受け取ったリンクから接続します。"; @@ -377,9 +371,6 @@ swipe action */ /* No comment provided by engineer. */ "Active connections" = "アクティブな接続"; -/* No comment provided by engineer. */ -"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "プロフィールにアドレスを追加し、連絡先があなたのアドレスを他の人と共有できるようにします。プロフィールの更新は連絡先に送信されます。"; - /* No comment provided by engineer. */ "Add friends" = "友達を追加"; @@ -969,7 +960,7 @@ server test step */ /* alert title */ "Connection error" = "接続エラー"; -/* No comment provided by engineer. */ +/* conn error description */ "Connection error (AUTH)" = "接続エラー (AUTH)"; /* chat list item title (it should not be shown */ @@ -1020,15 +1011,15 @@ server test step */ /* No comment provided by engineer. */ "Continue" = "続ける"; +/* No comment provided by engineer. */ +"Contribute" = "貢献する"; + /* No comment provided by engineer. */ "Copy" = "コピー"; /* No comment provided by engineer. */ "Core version: v%@" = "コアのバージョン: v%@"; -/* No comment provided by engineer. */ -"Create" = "作成"; - /* server test step */ "Create file" = "ファイルを作成"; @@ -1386,7 +1377,7 @@ alert button */ /* No comment provided by engineer. */ "Edit group profile" = "グループのプロフィールを編集"; -/* No comment provided by engineer. */ +/* alert button */ "Enable" = "有効"; /* No comment provided by engineer. */ @@ -1518,7 +1509,7 @@ alert button */ /* No comment provided by engineer. */ "error" = "エラー"; -/* No comment provided by engineer. */ +/* conn error description */ "Error" = "エラー"; /* No comment provided by engineer. */ @@ -1788,7 +1779,7 @@ server test error */ /* No comment provided by engineer. */ "Group invitation is no longer valid, it was removed by sender." = "グループ招待が無効となり、送信元によって取り消されました。"; -/* No comment provided by engineer. */ +/* chat link info line */ "Group link" = "グループのリンク"; /* No comment provided by engineer. */ @@ -1957,7 +1948,7 @@ server test error */ "Initial role" = "初期の役割"; /* No comment provided by engineer. */ -"Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat)" = "インストール [ターミナル用SimpleX Chat](https://github.com/simplex-chat/simplex-chat)"; +"Install SimpleX Chat for terminal" = "インストール ターミナル用SimpleX Chat"; /* No comment provided by engineer. */ "Instant" = "即時"; @@ -1974,7 +1965,7 @@ server test error */ /* No comment provided by engineer. */ "invalid chat data" = "無効なチャットデータ"; -/* No comment provided by engineer. */ +/* conn error description */ "Invalid connection link" = "無効な接続リンク"; /* invalid chat item */ @@ -2459,7 +2450,8 @@ new chat action */ /* No comment provided by engineer. */ "Only your contact can send voice messages." = "音声メッセージを送れるのはあなたの連絡相手だけです。"; -/* alert action */ +/* alert action +alert button */ "Open" = "開く"; /* new chat action */ @@ -2579,9 +2571,6 @@ new chat action */ /* No comment provided by engineer. */ "Profile password" = "プロフィールのパスワード"; -/* alert message */ -"Profile update will be sent to your contacts." = "連絡先にプロフィール更新のお知らせが届きます。"; - /* No comment provided by engineer. */ "Prohibit audio/video calls." = "音声/ビデオ通話を禁止する 。"; @@ -2634,13 +2623,10 @@ new chat action */ "Read more" = "続きを読む"; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)." = "詳しくは[ユーザーガイド](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)をご覧ください。"; +"Read more in our GitHub repository." = "詳しくはGitHubリポジトリをご覧ください。"; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends)." = "詳しくは[ユーザーガイド](https://simplex.chat/docs/guide/readme.html#connect-to-friends)をご覧ください。"; - -/* No comment provided by engineer. */ -"Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme)." = "詳しくは[GitHubリポジトリ](https://github.com/simplex-chat/simplex-chat#readme)をご覧ください。"; +"Read more in User Guide." = "詳しくはユーザーガイドをご覧ください。"; /* No comment provided by engineer. */ "received answer…" = "回答を受け取りました…"; @@ -2979,15 +2965,9 @@ chat item action */ /* No comment provided by engineer. */ "Share address" = "アドレスを共有する"; -/* alert title */ -"Share address with contacts?" = "アドレスを連絡先と共有しますか?"; - /* No comment provided by engineer. */ "Share link" = "リンクを送る"; -/* No comment provided by engineer. */ -"Share with contacts" = "連絡先と共有する"; - /* No comment provided by engineer. */ "Show calls in phone history" = "通話履歴を表示"; @@ -3057,6 +3037,9 @@ chat item action */ /* notification title */ "Somebody" = "誰か"; +/* No comment provided by engineer. */ +"Star on GitHub" = "GitHub でスターを付ける"; + /* No comment provided by engineer. */ "Start chat" = "チャットを開始する"; diff --git a/apps/ios/nl.lproj/Localizable.strings b/apps/ios/nl.lproj/Localizable.strings index d4ace22665..be478b677d 100644 --- a/apps/ios/nl.lproj/Localizable.strings +++ b/apps/ios/nl.lproj/Localizable.strings @@ -25,15 +25,9 @@ /* No comment provided by engineer. */ "(this device v%@)" = "(dit apparaat v%@)"; -/* No comment provided by engineer. */ -"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Bijdragen](https://github.com/simplex-chat/simplex-chat#contribute)"; - /* No comment provided by engineer. */ "[Send us email](mailto:chat@simplex.chat)" = "[Stuur ons een e-mail](mailto:chat@simplex.chat)"; -/* No comment provided by engineer. */ -"[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[Star on GitHub](https://github.com/simplex-chat/simplex-chat)"; - /* No comment provided by engineer. */ "**Create 1-time link**: to create and share a new invitation link." = "**Contact toevoegen**: om een nieuwe uitnodigingslink aan te maken, of verbinding te maken via een link die u heeft ontvangen."; @@ -395,9 +389,6 @@ swipe action */ /* No comment provided by engineer. */ "Active connections" = "Actieve verbindingen"; -/* No comment provided by engineer. */ -"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Voeg een adres toe aan uw profiel, zodat uw contacten het met andere mensen kunnen delen. Profiel update wordt naar uw contacten verzonden."; - /* No comment provided by engineer. */ "Add friends" = "Vrienden toevoegen"; @@ -867,7 +858,7 @@ marked deleted chat item preview text */ /* No comment provided by engineer. */ "Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Bulgaars, Fins, Thais en Oekraïens - dankzij de gebruikers en [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!"; -/* No comment provided by engineer. */ +/* chat link info line */ "Business address" = "Zakelijk adres"; /* No comment provided by engineer. */ @@ -1306,7 +1297,7 @@ server test step */ /* alert title */ "Connection error" = "Verbindingsfout"; -/* No comment provided by engineer. */ +/* conn error description */ "Connection error (AUTH)" = "Verbindingsfout (AUTH)"; /* chat list item title (it should not be shown */ @@ -1402,6 +1393,9 @@ server test step */ /* No comment provided by engineer. */ "Continue" = "Doorgaan"; +/* No comment provided by engineer. */ +"Contribute" = "Bijdragen"; + /* No comment provided by engineer. */ "Conversation deleted!" = "Gesprek verwijderd!"; @@ -1420,9 +1414,6 @@ server test step */ /* alert message */ "Correct name to %@?" = "Juiste naam voor %@?"; -/* No comment provided by engineer. */ -"Create" = "Maak"; - /* No comment provided by engineer. */ "Create 1-time link" = "Eenmalige link maken"; @@ -1964,7 +1955,7 @@ chat item action */ /* No comment provided by engineer. */ "Edit group profile" = "Groep profiel bewerken"; -/* No comment provided by engineer. */ +/* alert button */ "Enable" = "Inschakelen"; /* No comment provided by engineer. */ @@ -2135,7 +2126,7 @@ chat item action */ /* No comment provided by engineer. */ "error" = "fout"; -/* No comment provided by engineer. */ +/* conn error description */ "Error" = "Fout"; /* No comment provided by engineer. */ @@ -2655,7 +2646,7 @@ servers warning */ /* No comment provided by engineer. */ "group is deleted" = "groep is verwijderd"; -/* No comment provided by engineer. */ +/* chat link info line */ "Group link" = "Groep link"; /* No comment provided by engineer. */ @@ -2881,7 +2872,7 @@ servers warning */ "Initial role" = "Initiële rol"; /* No comment provided by engineer. */ -"Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat)" = "Installeer [SimpleX Chat voor terminal](https://github.com/simplex-chat/simplex-chat)"; +"Install SimpleX Chat for terminal" = "Installeer SimpleX Chat voor terminal"; /* No comment provided by engineer. */ "Instant" = "Direct"; @@ -2916,7 +2907,7 @@ servers warning */ /* No comment provided by engineer. */ "invalid chat data" = "ongeldige gesprek gegevens"; -/* No comment provided by engineer. */ +/* conn error description */ "Invalid connection link" = "Ongeldige verbinding link"; /* invalid chat item */ @@ -3662,7 +3653,7 @@ alert button new chat action */ "Ok" = "OK"; -/* No comment provided by engineer. */ +/* alert button */ "OK" = "OK"; /* No comment provided by engineer. */ @@ -3737,7 +3728,8 @@ new chat action */ /* No comment provided by engineer. */ "Only your contact can send voice messages." = "Alleen uw contact kan spraak berichten verzenden."; -/* alert action */ +/* alert action +alert button */ "Open" = "Open"; /* No comment provided by engineer. */ @@ -4010,9 +4002,6 @@ new chat action */ /* No comment provided by engineer. */ "Profile theme" = "Profiel thema"; -/* alert message */ -"Profile update will be sent to your contacts." = "Profiel update wordt naar uw contacten verzonden."; - /* No comment provided by engineer. */ "Prohibit audio/video calls." = "Audio/video gesprekken verbieden."; @@ -4098,16 +4087,10 @@ new chat action */ "Read more" = "Lees meer"; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)." = "Lees meer in de [Gebruikershandleiding](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)."; +"Read more in our GitHub repository." = "Lees meer in onze GitHub-repository."; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)." = "Lees meer in de [Gebruikershandleiding](https://simplex.chat/docs/guide/app-settings.html#uw-simplex-contactadres)."; - -/* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends)." = "Lees meer in de [Gebruikershandleiding](https://simplex.chat/docs/guide/readme.html#connect-to-friends)."; - -/* No comment provided by engineer. */ -"Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme)." = "Lees meer in onze [GitHub-repository](https://github.com/simplex-chat/simplex-chat#readme)."; +"Read more in User Guide." = "Lees meer in de Gebruikershandleiding."; /* No comment provided by engineer. */ "Receipts are disabled" = "Bevestigingen zijn uitgeschakeld"; @@ -4797,9 +4780,6 @@ chat item action */ /* No comment provided by engineer. */ "Share address publicly" = "Adres openbaar delen"; -/* alert title */ -"Share address with contacts?" = "Adres delen met contacten?"; - /* No comment provided by engineer. */ "Share from other apps." = "Delen vanuit andere apps."; @@ -4818,9 +4798,6 @@ chat item action */ /* No comment provided by engineer. */ "Share to SimpleX" = "Delen op SimpleX"; -/* No comment provided by engineer. */ -"Share with contacts" = "Delen met contacten"; - /* No comment provided by engineer. */ "Short link" = "Korte link"; @@ -4966,6 +4943,9 @@ report reason */ /* chat item text */ "standard end-to-end encryption" = "standaard end-to-end encryptie"; +/* No comment provided by engineer. */ +"Star on GitHub" = "Star on GitHub"; + /* No comment provided by engineer. */ "Start chat" = "Begin gesprek"; @@ -5062,9 +5042,6 @@ report reason */ /* No comment provided by engineer. */ "Tap button " = "Tik op de knop "; -/* No comment provided by engineer. */ -"Tap Create SimpleX address in the menu to create it later." = "Tik op SimpleX-adres maken in het menu om het later te maken."; - /* No comment provided by engineer. */ "Tap to activate profile." = "Tik hier om profiel te activeren."; @@ -5441,7 +5418,7 @@ server test failure */ /* swipe action */ "Unread" = "Ongelezen"; -/* No comment provided by engineer. */ +/* conn error description */ "Unsupported connection link" = "Niet-ondersteunde verbindingslink"; /* No comment provided by engineer. */ diff --git a/apps/ios/pl.lproj/Localizable.strings b/apps/ios/pl.lproj/Localizable.strings index 7c28c9591c..14c57ae7e0 100644 --- a/apps/ios/pl.lproj/Localizable.strings +++ b/apps/ios/pl.lproj/Localizable.strings @@ -25,15 +25,9 @@ /* No comment provided by engineer. */ "(this device v%@)" = "(to urządzenie v%@)"; -/* No comment provided by engineer. */ -"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Przyczyń się](https://github.com/simplex-chat/simplex-chat#contribute)"; - /* No comment provided by engineer. */ "[Send us email](mailto:chat@simplex.chat)" = "[Wyślij do nas email](mailto:chat@simplex.chat)"; -/* No comment provided by engineer. */ -"[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[Daj gwiazdkę na GitHub](https://github.com/simplex-chat/simplex-chat)"; - /* No comment provided by engineer. */ "**Create 1-time link**: to create and share a new invitation link." = "**Dodaj kontakt**: aby utworzyć nowy link z zaproszeniem lub połączyć się za pomocą otrzymanego linku."; @@ -398,9 +392,6 @@ swipe action */ /* No comment provided by engineer. */ "Active connections" = "Aktywne połączenia"; -/* No comment provided by engineer. */ -"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Dodaj adres do swojego profilu, aby Twoje kontakty mogły go udostępnić innym osobom. Aktualizacja profilu zostanie wysłana do Twoich kontaktów."; - /* No comment provided by engineer. */ "Add friends" = "Dodaj znajomych"; @@ -897,7 +888,7 @@ marked deleted chat item preview text */ /* No comment provided by engineer. */ "Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Bułgarski, fiński, tajski i ukraiński – dzięki użytkownikom i [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!"; -/* No comment provided by engineer. */ +/* chat link info line */ "Business address" = "Adres firmowy"; /* No comment provided by engineer. */ @@ -1348,7 +1339,7 @@ server test step */ /* alert title */ "Connection error" = "Błąd połączenia"; -/* No comment provided by engineer. */ +/* conn error description */ "Connection error (AUTH)" = "Błąd połączenia (UWIERZYTELNIANIE)"; /* chat list item title (it should not be shown */ @@ -1453,6 +1444,9 @@ server test step */ /* No comment provided by engineer. */ "Continue" = "Kontynuuj"; +/* No comment provided by engineer. */ +"Contribute" = "Przyczyń się"; + /* No comment provided by engineer. */ "Conversation deleted!" = "Rozmowa usunięta!"; @@ -1471,9 +1465,6 @@ server test step */ /* alert message */ "Correct name to %@?" = "Poprawić imię na %@?"; -/* No comment provided by engineer. */ -"Create" = "Utwórz"; - /* No comment provided by engineer. */ "Create 1-time link" = "Utwórz jednorazowy link"; @@ -2033,7 +2024,7 @@ chat item action */ /* No comment provided by engineer. */ "Empty message!" = "Pusta wiadomość!"; -/* No comment provided by engineer. */ +/* alert button */ "Enable" = "Włącz"; /* No comment provided by engineer. */ @@ -2207,7 +2198,7 @@ chat item action */ /* No comment provided by engineer. */ "error" = "błąd"; -/* No comment provided by engineer. */ +/* conn error description */ "Error" = "Błąd"; /* No comment provided by engineer. */ @@ -2767,7 +2758,7 @@ servers warning */ /* No comment provided by engineer. */ "group is deleted" = "grupa została usunięta"; -/* No comment provided by engineer. */ +/* chat link info line */ "Group link" = "Link do grupy"; /* No comment provided by engineer. */ @@ -3002,7 +2993,7 @@ servers warning */ "Initial role" = "Rola początkowa"; /* No comment provided by engineer. */ -"Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat)" = "Zainstaluj [SimpleX Chat na terminal](https://github.com/simplex-chat/simplex-chat)"; +"Install SimpleX Chat for terminal" = "Zainstaluj SimpleX Chat na terminal"; /* No comment provided by engineer. */ "Instant" = "Natychmiastowo"; @@ -3037,7 +3028,7 @@ servers warning */ /* No comment provided by engineer. */ "invalid chat data" = "nieprawidłowe dane czatu"; -/* No comment provided by engineer. */ +/* conn error description */ "Invalid connection link" = "Nieprawidłowy link połączenia"; /* invalid chat item */ @@ -3822,7 +3813,7 @@ alert button new chat action */ "Ok" = "Ok"; -/* No comment provided by engineer. */ +/* alert button */ "OK" = "OK"; /* No comment provided by engineer. */ @@ -3903,7 +3894,8 @@ new chat action */ /* No comment provided by engineer. */ "Only your contact can send voice messages." = "Tylko Twój kontakt może wysyłać wiadomości głosowe."; -/* alert action */ +/* alert action +alert button */ "Open" = "Otwórz"; /* No comment provided by engineer. */ @@ -4203,9 +4195,6 @@ new chat action */ /* No comment provided by engineer. */ "Profile theme" = "Motyw profilu"; -/* alert message */ -"Profile update will be sent to your contacts." = "Aktualizacja profilu zostanie wysłana do Twoich kontaktów."; - /* No comment provided by engineer. */ "Prohibit audio/video calls." = "Zabroń połączeń audio/wideo."; @@ -4294,16 +4283,10 @@ new chat action */ "Read more" = "Przeczytaj więcej"; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)." = "Przeczytaj więcej w [Poradniku Użytkownika](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)."; +"Read more in our GitHub repository." = "Przeczytaj więcej na naszym repozytorium GitHub."; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)." = "Przeczytaj więcej w [Podręczniku Użytkownika](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)."; - -/* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends)." = "Przeczytaj więcej w [Podręczniku Użytkownika](https://simplex.chat/docs/guide/readme.html#connect-to-friends)."; - -/* No comment provided by engineer. */ -"Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme)." = "Przeczytaj więcej na naszym [repozytorium GitHub](https://github.com/simplex-chat/simplex-chat#readme)."; +"Read more in User Guide." = "Przeczytaj więcej w Poradniku Użytkownika."; /* No comment provided by engineer. */ "Receipts are disabled" = "Potwierdzenia są wyłączone"; @@ -5050,9 +5033,6 @@ chat item action */ /* No comment provided by engineer. */ "Share address publicly" = "Udostępnij adres publicznie"; -/* alert title */ -"Share address with contacts?" = "Udostępnić adres kontaktom?"; - /* No comment provided by engineer. */ "Share from other apps." = "Udostępnij z innych aplikacji."; @@ -5077,9 +5057,6 @@ chat item action */ /* No comment provided by engineer. */ "Share to SimpleX" = "Udostępnij do SimpleX"; -/* No comment provided by engineer. */ -"Share with contacts" = "Udostępnij kontaktom"; - /* No comment provided by engineer. */ "Share your address" = "Udostępnij swój adres"; @@ -5234,6 +5211,9 @@ report reason */ /* chat item text */ "standard end-to-end encryption" = "standardowe szyfrowanie end-to-end"; +/* No comment provided by engineer. */ +"Star on GitHub" = "Daj gwiazdkę na GitHub"; + /* No comment provided by engineer. */ "Start chat" = "Rozpocznij czat"; @@ -5339,9 +5319,6 @@ report reason */ /* No comment provided by engineer. */ "Tap Connect to use bot" = "Dotknij Połącz aby użyć bota"; -/* No comment provided by engineer. */ -"Tap Create SimpleX address in the menu to create it later." = "Dotknij Stwórz adres SimpleX w menu aby utworzyć go później."; - /* No comment provided by engineer. */ "Tap Join group" = "Dotknij Dołącz do grupy"; @@ -5745,7 +5722,7 @@ server test failure */ /* swipe action */ "Unread" = "Nieprzeczytane"; -/* No comment provided by engineer. */ +/* conn error description */ "Unsupported connection link" = "Nieobsługiwane łącze połączenia"; /* No comment provided by engineer. */ diff --git a/apps/ios/ru.lproj/Localizable.strings b/apps/ios/ru.lproj/Localizable.strings index eee33cc574..24f0c358cc 100644 --- a/apps/ios/ru.lproj/Localizable.strings +++ b/apps/ios/ru.lproj/Localizable.strings @@ -25,15 +25,9 @@ /* No comment provided by engineer. */ "(this device v%@)" = "(это устройство v%@)"; -/* No comment provided by engineer. */ -"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Внести свой вклад](https://github.com/simplex-chat/simplex-chat#contribute)"; - /* No comment provided by engineer. */ "[Send us email](mailto:chat@simplex.chat)" = "[Отправить email](mailto:chat@simplex.chat)"; -/* No comment provided by engineer. */ -"[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[Поставить звездочку в GitHub](https://github.com/simplex-chat/simplex-chat)"; - /* No comment provided by engineer. */ "**Create 1-time link**: to create and share a new invitation link." = "**Добавить контакт**: создать и поделиться новой ссылкой-приглашением."; @@ -398,9 +392,6 @@ swipe action */ /* No comment provided by engineer. */ "Active connections" = "Активные соединения"; -/* No comment provided by engineer. */ -"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Добавьте адрес в свой профиль, чтобы Ваши контакты могли поделиться им. Профиль будет отправлен Вашим контактам."; - /* No comment provided by engineer. */ "Add friends" = "Добавить друзей"; @@ -891,7 +882,7 @@ marked deleted chat item preview text */ /* No comment provided by engineer. */ "Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Болгарский, финский, тайский и украинский - благодаря пользователям и [Weblate] (https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!"; -/* No comment provided by engineer. */ +/* chat link info line */ "Business address" = "Бизнес адрес"; /* No comment provided by engineer. */ @@ -1342,7 +1333,7 @@ server test step */ /* alert title */ "Connection error" = "Ошибка соединения"; -/* No comment provided by engineer. */ +/* conn error description */ "Connection error (AUTH)" = "Ошибка соединения (AUTH)"; /* chat list item title (it should not be shown */ @@ -1444,6 +1435,9 @@ server test step */ /* No comment provided by engineer. */ "Continue" = "Продолжить"; +/* No comment provided by engineer. */ +"Contribute" = "Внести свой вклад"; + /* No comment provided by engineer. */ "Conversation deleted!" = "Разговор удален!"; @@ -1462,9 +1456,6 @@ server test step */ /* alert message */ "Correct name to %@?" = "Исправить имя на %@?"; -/* No comment provided by engineer. */ -"Create" = "Создать"; - /* No comment provided by engineer. */ "Create 1-time link" = "Создать одноразовую ссылку"; @@ -2018,7 +2009,7 @@ chat item action */ /* No comment provided by engineer. */ "Empty message!" = "Пустое сообщение!"; -/* No comment provided by engineer. */ +/* alert button */ "Enable" = "Включить"; /* No comment provided by engineer. */ @@ -2192,7 +2183,7 @@ chat item action */ /* No comment provided by engineer. */ "error" = "ошибка"; -/* No comment provided by engineer. */ +/* conn error description */ "Error" = "Ошибка"; /* No comment provided by engineer. */ @@ -2746,7 +2737,7 @@ servers warning */ /* No comment provided by engineer. */ "group is deleted" = "группа удалена"; -/* No comment provided by engineer. */ +/* chat link info line */ "Group link" = "Ссылка группы"; /* No comment provided by engineer. */ @@ -2975,7 +2966,7 @@ servers warning */ "Initial role" = "Роль при вступлении"; /* No comment provided by engineer. */ -"Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat)" = "[SimpleX Chat для терминала](https://github.com/simplex-chat/simplex-chat)"; +"Install SimpleX Chat for terminal" = "SimpleX Chat для терминала"; /* No comment provided by engineer. */ "Instant" = "Мгновенно"; @@ -3010,7 +3001,7 @@ servers warning */ /* No comment provided by engineer. */ "invalid chat data" = "ошибка данных чата"; -/* No comment provided by engineer. */ +/* conn error description */ "Invalid connection link" = "Ошибка в ссылке контакта"; /* invalid chat item */ @@ -3786,7 +3777,7 @@ alert button new chat action */ "Ok" = "Ок"; -/* No comment provided by engineer. */ +/* alert button */ "OK" = "OK"; /* No comment provided by engineer. */ @@ -3867,7 +3858,8 @@ new chat action */ /* No comment provided by engineer. */ "Only your contact can send voice messages." = "Только Ваш контакт может отправлять голосовые сообщения."; -/* alert action */ +/* alert action +alert button */ "Open" = "Открыть"; /* No comment provided by engineer. */ @@ -4167,9 +4159,6 @@ new chat action */ /* No comment provided by engineer. */ "Profile theme" = "Тема профиля"; -/* alert message */ -"Profile update will be sent to your contacts." = "Обновлённый профиль будет отправлен Вашим контактам."; - /* No comment provided by engineer. */ "Prohibit audio/video calls." = "Запретить аудио/видео звонки."; @@ -4258,16 +4247,10 @@ new chat action */ "Read more" = "Узнать больше"; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)." = "Дополнительная информация в [Руководстве пользователя](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)."; +"Read more in our GitHub repository." = "Узнайте больше из нашего GitHub репозитория."; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)." = "Узнать больше в [Руководстве пользователя](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)."; - -/* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends)." = "Узнать больше в [Руководстве пользователя](https://simplex.chat/docs/guide/readme.html#connect-to-friends)."; - -/* No comment provided by engineer. */ -"Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme)." = "Узнайте больше из нашего [GitHub репозитория](https://github.com/simplex-chat/simplex-chat#readme)."; +"Read more in User Guide." = "Дополнительная информация в Руководстве пользователя."; /* No comment provided by engineer. */ "Receipts are disabled" = "Отчёты о доставке выключены"; @@ -4996,9 +4979,6 @@ chat item action */ /* No comment provided by engineer. */ "Share address publicly" = "Поделитесь адресом"; -/* alert title */ -"Share address with contacts?" = "Поделиться адресом с контактами?"; - /* No comment provided by engineer. */ "Share from other apps." = "Поделитесь из других приложений."; @@ -5023,9 +5003,6 @@ chat item action */ /* No comment provided by engineer. */ "Share to SimpleX" = "Поделиться в SimpleX"; -/* No comment provided by engineer. */ -"Share with contacts" = "Поделиться с контактами"; - /* No comment provided by engineer. */ "Share your address" = "Поделитесь Вашим адресом"; @@ -5180,6 +5157,9 @@ report reason */ /* chat item text */ "standard end-to-end encryption" = "стандартное end-to-end шифрование"; +/* No comment provided by engineer. */ +"Star on GitHub" = "Поставить звездочку в GitHub"; + /* No comment provided by engineer. */ "Start chat" = "Запустить чат"; @@ -5285,9 +5265,6 @@ report reason */ /* No comment provided by engineer. */ "Tap Connect to use bot" = "Нажмите Соединиться, чтобы использовать бот"; -/* No comment provided by engineer. */ -"Tap Create SimpleX address in the menu to create it later." = "Нажмите Создать адрес SimpleX в меню, чтобы создать его позже."; - /* No comment provided by engineer. */ "Tap Join group" = "Нажмите Вступить в группу"; @@ -5691,7 +5668,7 @@ server test failure */ /* swipe action */ "Unread" = "Не прочитано"; -/* No comment provided by engineer. */ +/* conn error description */ "Unsupported connection link" = "Ссылка не поддерживается"; /* No comment provided by engineer. */ diff --git a/apps/ios/th.lproj/Localizable.strings b/apps/ios/th.lproj/Localizable.strings index ffdd2006a6..827dedd00b 100644 --- a/apps/ios/th.lproj/Localizable.strings +++ b/apps/ios/th.lproj/Localizable.strings @@ -13,15 +13,9 @@ /* No comment provided by engineer. */ "!1 colored!" = "!1 มีสี!"; -/* No comment provided by engineer. */ -"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[มีส่วนร่วม](https://github.com/simplex-chat/simplex-chat#contribute)"; - /* No comment provided by engineer. */ "[Send us email](mailto:chat@simplex.chat)" = "[ส่งอีเมลถึงเรา](mailto:chat@simplex.chat)"; -/* No comment provided by engineer. */ -"[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[ติดดาวบน GitHub](https://github.com/simplex-chat/simplex-chat)"; - /* No comment provided by engineer. */ "**e2e encrypted** audio call" = "การโทรเสียงแบบ **encrypted จากต้นจนจบ**"; @@ -233,9 +227,6 @@ swipe action */ /* call status */ "accepted call" = "รับสายแล้ว"; -/* No comment provided by engineer. */ -"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "เพิ่มที่อยู่ลงในโปรไฟล์ของคุณ เพื่อให้ผู้ติดต่อของคุณสามารถแชร์กับผู้อื่นได้ การอัปเดตโปรไฟล์จะถูกส่งไปยังผู้ติดต่อของคุณ"; - /* No comment provided by engineer. */ "Add profile" = "เพิ่มโปรไฟล์"; @@ -672,7 +663,7 @@ server test step */ /* alert title */ "Connection error" = "การเชื่อมต่อผิดพลาด"; -/* No comment provided by engineer. */ +/* conn error description */ "Connection error (AUTH)" = "การเชื่อมต่อผิดพลาด (AUTH)"; /* chat list item title (it should not be shown */ @@ -720,15 +711,15 @@ server test step */ /* No comment provided by engineer. */ "Continue" = "ดำเนินการต่อ"; +/* No comment provided by engineer. */ +"Contribute" = "มีส่วนร่วม"; + /* No comment provided by engineer. */ "Copy" = "คัดลอก"; /* No comment provided by engineer. */ "Core version: v%@" = "รุ่นหลัก: v%@"; -/* No comment provided by engineer. */ -"Create" = "สร้าง"; - /* server test step */ "Create file" = "สร้างไฟล์"; @@ -1056,7 +1047,7 @@ alert button */ /* No comment provided by engineer. */ "Edit group profile" = "แก้ไขโปรไฟล์กลุ่ม"; -/* No comment provided by engineer. */ +/* alert button */ "Enable" = "เปิดใช้งาน"; /* No comment provided by engineer. */ @@ -1182,7 +1173,7 @@ alert button */ /* No comment provided by engineer. */ "error" = "ผิดพลาด"; -/* No comment provided by engineer. */ +/* conn error description */ "Error" = "ผิดพลาด"; /* No comment provided by engineer. */ @@ -1449,7 +1440,7 @@ server test error */ /* No comment provided by engineer. */ "Group invitation is no longer valid, it was removed by sender." = "คำเชิญเข้าร่วมกลุ่มใช้ไม่ถูกต้องอีกต่อไป คำเชิญถูกลบโดยผู้ส่ง"; -/* No comment provided by engineer. */ +/* chat link info line */ "Group link" = "ลิงค์กลุ่ม"; /* No comment provided by engineer. */ @@ -1615,7 +1606,7 @@ server test error */ "Initial role" = "บทบาทเริ่มต้น"; /* No comment provided by engineer. */ -"Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat)" = "ติดตั้ง [SimpleX Chat สำหรับเทอร์มินัล](https://github.com/simplex-chat/simplex-chat)"; +"Install SimpleX Chat for terminal" = "ติดตั้ง SimpleX Chat สำหรับเทอร์มินัล"; /* No comment provided by engineer. */ "Instant" = "ทันที"; @@ -1632,7 +1623,7 @@ server test error */ /* No comment provided by engineer. */ "invalid chat data" = "ข้อมูลแชทไม่ถูกต้อง"; -/* No comment provided by engineer. */ +/* conn error description */ "Invalid connection link" = "ลิงค์เชื่อมต่อไม่ถูกต้อง"; /* invalid chat item */ @@ -2213,9 +2204,6 @@ new chat action */ /* No comment provided by engineer. */ "Profile password" = "รหัสผ่านโปรไฟล์"; -/* alert message */ -"Profile update will be sent to your contacts." = "การอัปเดตโปรไฟล์จะถูกส่งไปยังผู้ติดต่อของคุณ"; - /* No comment provided by engineer. */ "Prohibit audio/video calls." = "ห้ามการโทรด้วยเสียง/วิดีโอ"; @@ -2268,13 +2256,10 @@ new chat action */ "Read more" = "อ่านเพิ่มเติม"; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)." = "อ่านเพิ่มเติมใน[คู่มือผู้ใช้](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)"; +"Read more in our GitHub repository." = "อ่านเพิ่มเติมในพื้นที่เก็บข้อมูล GitHub"; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends)." = "อ่านเพิ่มเติมใน[คู่มือผู้ใช้](https://simplex.chat/docs/guide/readme.html#connect-to-friends)"; - -/* No comment provided by engineer. */ -"Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme)." = "อ่านเพิ่มเติมใน[พื้นที่เก็บข้อมูล GitHub](https://github.com/simplex-chat/simplex-chat#readme)"; +"Read more in User Guide." = "อ่านเพิ่มเติมในคู่มือผู้ใช้"; /* No comment provided by engineer. */ "received answer…" = "ได้รับคำตอบ…"; @@ -2625,15 +2610,9 @@ chat item action */ /* No comment provided by engineer. */ "Share address" = "แชร์ที่อยู่"; -/* alert title */ -"Share address with contacts?" = "แชร์ที่อยู่กับผู้ติดต่อ?"; - /* No comment provided by engineer. */ "Share link" = "แชร์ลิงก์"; -/* No comment provided by engineer. */ -"Share with contacts" = "แชร์กับผู้ติดต่อ"; - /* No comment provided by engineer. */ "Show calls in phone history" = "แสดงการโทรในประวัติการโทร"; @@ -2694,6 +2673,9 @@ chat item action */ /* notification title */ "Somebody" = "ใครบางคน"; +/* No comment provided by engineer. */ +"Star on GitHub" = "ติดดาวบน GitHub"; + /* No comment provided by engineer. */ "Start chat" = "เริ่มแชท"; diff --git a/apps/ios/tr.lproj/Localizable.strings b/apps/ios/tr.lproj/Localizable.strings index 30d83d16dd..8681e938bf 100644 --- a/apps/ios/tr.lproj/Localizable.strings +++ b/apps/ios/tr.lproj/Localizable.strings @@ -25,15 +25,9 @@ /* No comment provided by engineer. */ "(this device v%@)" = "(bu cihaz v%@)"; -/* No comment provided by engineer. */ -"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Katkıda bulun](https://github.com/simplex-chat/simplex-chat#contribute)"; - /* No comment provided by engineer. */ "[Send us email](mailto:chat@simplex.chat)" = "[Bize e-posta gönder](mailto:chat@simplex.chat)"; -/* No comment provided by engineer. */ -"[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[Bize GitHub'da yıldız verin](https://github.com/simplex-chat/simplex-chat)"; - /* No comment provided by engineer. */ "**Create 1-time link**: to create and share a new invitation link." = "**Kişi ekle**: yeni bir davet bağlantısı oluşturmak için, ya da aldığın bağlantıyla bağlan."; @@ -398,9 +392,6 @@ swipe action */ /* No comment provided by engineer. */ "Active connections" = "Aktif bağlantılar"; -/* No comment provided by engineer. */ -"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Kişilerinizin başkalarıyla paylaşabilmesi için profilinize adres ekleyin. Profil güncellemesi kişilerinize gönderilecek."; - /* No comment provided by engineer. */ "Add friends" = "Arkadaş ekle"; @@ -891,7 +882,7 @@ marked deleted chat item preview text */ /* No comment provided by engineer. */ "Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Bulgarca, Fince, Tayca ve Ukraynaca - kullanıcılara ve [Weblate] e teşekkürler! (https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!"; -/* No comment provided by engineer. */ +/* chat link info line */ "Business address" = "İş adresi"; /* No comment provided by engineer. */ @@ -1342,7 +1333,7 @@ server test step */ /* alert title */ "Connection error" = "Bağlantı hatası"; -/* No comment provided by engineer. */ +/* conn error description */ "Connection error (AUTH)" = "Bağlantı hatası (DOĞRULAMA)"; /* chat list item title (it should not be shown */ @@ -1444,6 +1435,9 @@ server test step */ /* No comment provided by engineer. */ "Continue" = "Devam et"; +/* No comment provided by engineer. */ +"Contribute" = "Katkıda bulun"; + /* No comment provided by engineer. */ "Conversation deleted!" = "Sohbet silindi!"; @@ -1462,9 +1456,6 @@ server test step */ /* alert message */ "Correct name to %@?" = "İsim %@ olarak düzeltilsin mi?"; -/* No comment provided by engineer. */ -"Create" = "Oluştur"; - /* No comment provided by engineer. */ "Create 1-time link" = "Tek kullanımlık bağlantı oluştur"; @@ -2018,7 +2009,7 @@ chat item action */ /* No comment provided by engineer. */ "Empty message!" = "Boş mesaj!"; -/* No comment provided by engineer. */ +/* alert button */ "Enable" = "Etkinleştir"; /* No comment provided by engineer. */ @@ -2192,7 +2183,7 @@ chat item action */ /* No comment provided by engineer. */ "error" = "hata"; -/* No comment provided by engineer. */ +/* conn error description */ "Error" = "Hata"; /* No comment provided by engineer. */ @@ -2730,7 +2721,7 @@ servers warning */ /* No comment provided by engineer. */ "group is deleted" = "grup silindi"; -/* No comment provided by engineer. */ +/* chat link info line */ "Group link" = "Grup bağlantısı"; /* No comment provided by engineer. */ @@ -2959,7 +2950,7 @@ servers warning */ "Initial role" = "Başlangıç rolü"; /* No comment provided by engineer. */ -"Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat)" = "[Terminal için SimpleX Chat]i indir(https://github.com/simplex-chat/simplex-chat)"; +"Install SimpleX Chat for terminal" = "Terminal için SimpleX Chat'i indir"; /* No comment provided by engineer. */ "Instant" = "Anında"; @@ -2994,7 +2985,7 @@ servers warning */ /* No comment provided by engineer. */ "invalid chat data" = "geçersi̇z sohbet verisi"; -/* No comment provided by engineer. */ +/* conn error description */ "Invalid connection link" = "Geçersiz bağlanma bağlantısı"; /* invalid chat item */ @@ -3767,7 +3758,7 @@ alert button new chat action */ "Ok" = "Tamam"; -/* No comment provided by engineer. */ +/* alert button */ "OK" = "TAMAM"; /* No comment provided by engineer. */ @@ -3848,7 +3839,8 @@ new chat action */ /* No comment provided by engineer. */ "Only your contact can send voice messages." = "Sadece karşıdaki kişi sesli mesajlar gönderebilir."; -/* alert action */ +/* alert action +alert button */ "Open" = "Aç"; /* No comment provided by engineer. */ @@ -4148,9 +4140,6 @@ new chat action */ /* No comment provided by engineer. */ "Profile theme" = "Profil teması"; -/* alert message */ -"Profile update will be sent to your contacts." = "Profil güncellemesi kişilerinize gönderilecektir."; - /* No comment provided by engineer. */ "Prohibit audio/video calls." = "Sesli/görüntülü aramaları yasakla."; @@ -4239,16 +4228,10 @@ new chat action */ "Read more" = "Dahasını oku"; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)." = "[Kullanıcı Rehberi]nde daha fazlasını okuyun(https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)."; +"Read more in our GitHub repository." = "GitHub deposunda daha fazlasını okuyun."; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)." = "[Kullanıcı Rehberi]nde daha fazlasını okuyun(https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)."; - -/* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends)." = "[Kullanıcı Rehberi]nde daha fazlasını okuyun(https://simplex.chat/docs/guide/readme.html#connect-to-friends)."; - -/* No comment provided by engineer. */ -"Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme)." = "[GitHub deposu]nda daha fazlasını okuyun(https://github.com/simplex-chat/simplex-chat#readme)."; +"Read more in User Guide." = "Kullanıcı Rehberinde daha fazlasını okuyun."; /* No comment provided by engineer. */ "Receipts are disabled" = "Alındı onayları devre dışı bırakıldı"; @@ -4977,9 +4960,6 @@ chat item action */ /* No comment provided by engineer. */ "Share address publicly" = "Adresinizi herkese açık olarak paylaşın"; -/* alert title */ -"Share address with contacts?" = "Kişilerle adres paylaşılsın mı?"; - /* No comment provided by engineer. */ "Share from other apps." = "Diğer uygulamalardan paylaşın."; @@ -5004,9 +4984,6 @@ chat item action */ /* No comment provided by engineer. */ "Share to SimpleX" = "SimpleX ile paylaş"; -/* No comment provided by engineer. */ -"Share with contacts" = "Kişilerle paylaş"; - /* No comment provided by engineer. */ "Share your address" = "Adresini paylaş"; @@ -5161,6 +5138,9 @@ report reason */ /* chat item text */ "standard end-to-end encryption" = "standart uçtan uca şifreleme"; +/* No comment provided by engineer. */ +"Star on GitHub" = "Bize GitHub'da yıldız verin"; + /* No comment provided by engineer. */ "Start chat" = "Sohbeti başlat"; @@ -5266,9 +5246,6 @@ report reason */ /* No comment provided by engineer. */ "Tap Connect to use bot" = "Botu kullanmak için Bağlan tuşuna bas"; -/* No comment provided by engineer. */ -"Tap Create SimpleX address in the menu to create it later." = "Daha sonra oluşturmak için menüden BasitX adresi oluştur'a dokunun."; - /* No comment provided by engineer. */ "Tap Join group" = "Gruba katıl'a dokunun"; @@ -5669,7 +5646,7 @@ server test failure */ /* swipe action */ "Unread" = "Okunmamış"; -/* No comment provided by engineer. */ +/* conn error description */ "Unsupported connection link" = "Desteklenmeyen bağlantı bağlantısı"; /* No comment provided by engineer. */ diff --git a/apps/ios/uk.lproj/Localizable.strings b/apps/ios/uk.lproj/Localizable.strings index bf86d6a339..06e7b26dae 100644 --- a/apps/ios/uk.lproj/Localizable.strings +++ b/apps/ios/uk.lproj/Localizable.strings @@ -25,15 +25,9 @@ /* No comment provided by engineer. */ "(this device v%@)" = "(цей пристрій v%@)"; -/* No comment provided by engineer. */ -"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Внесок](https://github.com/simplex-chat/simplex-chat#contribute)"; - /* No comment provided by engineer. */ "[Send us email](mailto:chat@simplex.chat)" = "[Напишіть нам електронною поштою](mailto:chat@simplex.chat)"; -/* No comment provided by engineer. */ -"[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[Зірка на GitHub](https://github.com/simplex-chat/simplex-chat)"; - /* No comment provided by engineer. */ "**Create 1-time link**: to create and share a new invitation link." = "**Додати контакт**: створити нове посилання-запрошення."; @@ -398,9 +392,6 @@ swipe action */ /* No comment provided by engineer. */ "Active connections" = "Активні з'єднання"; -/* No comment provided by engineer. */ -"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Додайте адресу до свого профілю, щоб ваші контакти могли поділитися нею з іншими людьми. Повідомлення про оновлення профілю буде надіслано вашим контактам."; - /* No comment provided by engineer. */ "Add friends" = "Додайте друзів"; @@ -879,7 +870,7 @@ marked deleted chat item preview text */ /* No comment provided by engineer. */ "Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Болгарською, фінською, тайською та українською мовами - завдяки користувачам та [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!"; -/* No comment provided by engineer. */ +/* chat link info line */ "Business address" = "Адреса підприємства"; /* No comment provided by engineer. */ @@ -1330,7 +1321,7 @@ server test step */ /* alert title */ "Connection error" = "Помилка підключення"; -/* No comment provided by engineer. */ +/* conn error description */ "Connection error (AUTH)" = "Помилка підключення (AUTH)"; /* chat list item title (it should not be shown */ @@ -1429,6 +1420,9 @@ server test step */ /* No comment provided by engineer. */ "Continue" = "Продовжуйте"; +/* No comment provided by engineer. */ +"Contribute" = "Внесок"; + /* No comment provided by engineer. */ "Conversation deleted!" = "Розмова видалена!"; @@ -1447,9 +1441,6 @@ server test step */ /* alert message */ "Correct name to %@?" = "Виправити ім'я на %@?"; -/* No comment provided by engineer. */ -"Create" = "Створити"; - /* No comment provided by engineer. */ "Create 1-time link" = "Створити одноразове посилання"; @@ -2000,7 +1991,7 @@ chat item action */ /* No comment provided by engineer. */ "Empty message!" = "Порожнє повідомлення!"; -/* No comment provided by engineer. */ +/* alert button */ "Enable" = "Увімкнути"; /* No comment provided by engineer. */ @@ -2174,7 +2165,7 @@ chat item action */ /* No comment provided by engineer. */ "error" = "помилка"; -/* No comment provided by engineer. */ +/* conn error description */ "Error" = "Помилка"; /* No comment provided by engineer. */ @@ -2706,7 +2697,7 @@ servers warning */ /* No comment provided by engineer. */ "group is deleted" = "групу видалено"; -/* No comment provided by engineer. */ +/* chat link info line */ "Group link" = "Посилання на групу"; /* No comment provided by engineer. */ @@ -2935,7 +2926,7 @@ servers warning */ "Initial role" = "Початкова роль"; /* No comment provided by engineer. */ -"Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat)" = "Встановіть [SimpleX Chat для терміналу](https://github.com/simplex-chat/simplex-chat)"; +"Install SimpleX Chat for terminal" = "Встановіть SimpleX Chat для терміналу"; /* No comment provided by engineer. */ "Instant" = "Миттєво"; @@ -2970,7 +2961,7 @@ servers warning */ /* No comment provided by engineer. */ "invalid chat data" = "невірні дані чату"; -/* No comment provided by engineer. */ +/* conn error description */ "Invalid connection link" = "Неправильне посилання для підключення"; /* invalid chat item */ @@ -3737,7 +3728,7 @@ alert button new chat action */ "Ok" = "Гаразд"; -/* No comment provided by engineer. */ +/* alert button */ "OK" = "ОК"; /* No comment provided by engineer. */ @@ -3812,7 +3803,8 @@ new chat action */ /* No comment provided by engineer. */ "Only your contact can send voice messages." = "Тільки ваш контакт може надсилати голосові повідомлення."; -/* alert action */ +/* alert action +alert button */ "Open" = "Відкрито"; /* No comment provided by engineer. */ @@ -4103,9 +4095,6 @@ new chat action */ /* No comment provided by engineer. */ "Profile theme" = "Тема профілю"; -/* alert message */ -"Profile update will be sent to your contacts." = "Оновлення профілю буде надіслано вашим контактам."; - /* No comment provided by engineer. */ "Prohibit audio/video calls." = "Заборонити аудіо/відеодзвінки."; @@ -4194,16 +4183,10 @@ new chat action */ "Read more" = "Читати далі"; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)." = "Читайте більше в [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)."; +"Read more in our GitHub repository." = "Читайте більше в нашому GitHub репозиторії."; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)." = "Читайте більше в [Посібнику користувача](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)."; - -/* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends)." = "Читайте більше в [Посібнику користувача](https://simplex.chat/docs/guide/readme.html#connect-to-friends)."; - -/* No comment provided by engineer. */ -"Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme)." = "Читайте більше в нашому [GitHub репозиторії](https://github.com/simplex-chat/simplex-chat#readme)."; +"Read more in User Guide." = "Читайте більше в User Guide."; /* No comment provided by engineer. */ "Receipts are disabled" = "Підтвердження виключені"; @@ -4923,9 +4906,6 @@ chat item action */ /* No comment provided by engineer. */ "Share address publicly" = "Поділіться адресою публічно"; -/* alert title */ -"Share address with contacts?" = "Поділіться адресою з контактами?"; - /* No comment provided by engineer. */ "Share from other apps." = "Діліться з інших програм."; @@ -4950,9 +4930,6 @@ chat item action */ /* No comment provided by engineer. */ "Share to SimpleX" = "Поділіться з SimpleX"; -/* No comment provided by engineer. */ -"Share with contacts" = "Поділіться з контактами"; - /* No comment provided by engineer. */ "Share your address" = "Поділіться своєю адресою"; @@ -5107,6 +5084,9 @@ report reason */ /* chat item text */ "standard end-to-end encryption" = "стандартне наскрізне шифрування"; +/* No comment provided by engineer. */ +"Star on GitHub" = "Зірка на GitHub"; + /* No comment provided by engineer. */ "Start chat" = "Почати чат"; @@ -5209,9 +5189,6 @@ report reason */ /* No comment provided by engineer. */ "Tap Connect to send request" = "Натисніть Підключитися, щоб відправити запит"; -/* No comment provided by engineer. */ -"Tap Create SimpleX address in the menu to create it later." = "Натисніть «Створити адресу SimpleX» у меню, щоб створити її пізніше."; - /* No comment provided by engineer. */ "Tap Join group" = "Натисніть Приєднатися до групи"; @@ -5606,7 +5583,7 @@ server test failure */ /* swipe action */ "Unread" = "Непрочитане"; -/* No comment provided by engineer. */ +/* conn error description */ "Unsupported connection link" = "Несумісне посилання для підключення"; /* No comment provided by engineer. */ diff --git a/apps/ios/zh-Hans.lproj/Localizable.strings b/apps/ios/zh-Hans.lproj/Localizable.strings index 43a0f665e4..3297b7dce0 100644 --- a/apps/ios/zh-Hans.lproj/Localizable.strings +++ b/apps/ios/zh-Hans.lproj/Localizable.strings @@ -25,15 +25,9 @@ /* No comment provided by engineer. */ "(this device v%@)" = "(此设备 v%@)"; -/* No comment provided by engineer. */ -"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[贡献](https://github.com/simplex-chat/simplex-chat#contribute)"; - /* No comment provided by engineer. */ "[Send us email](mailto:chat@simplex.chat)" = "[给我们发电邮](mailto:chat@simplex.chat)"; -/* No comment provided by engineer. */ -"[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[在 GitHub 上加星](https://github.com/simplex-chat/simplex-chat)"; - /* No comment provided by engineer. */ "**Create 1-time link**: to create and share a new invitation link." = "**添加联系人**: 创建新的邀请链接,或通过您收到的链接进行连接."; @@ -395,9 +389,6 @@ swipe action */ /* No comment provided by engineer. */ "Active connections" = "活动连接"; -/* No comment provided by engineer. */ -"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "将地址添加到您的个人资料,以便您的联系人可以与其他人共享。个人资料更新将发送给您的联系人。"; - /* No comment provided by engineer. */ "Add friends" = "添加好友"; @@ -894,7 +885,7 @@ marked deleted chat item preview text */ /* No comment provided by engineer. */ "Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "保加利亚语、芬兰语、泰语和乌克兰语——感谢用户和[Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!"; -/* No comment provided by engineer. */ +/* chat link info line */ "Business address" = "企业地址"; /* No comment provided by engineer. */ @@ -1345,7 +1336,7 @@ server test step */ /* alert title */ "Connection error" = "连接错误"; -/* No comment provided by engineer. */ +/* conn error description */ "Connection error (AUTH)" = "连接错误(AUTH)"; /* chat list item title (it should not be shown */ @@ -1447,6 +1438,9 @@ server test step */ /* No comment provided by engineer. */ "Continue" = "继续"; +/* No comment provided by engineer. */ +"Contribute" = "贡献"; + /* No comment provided by engineer. */ "Conversation deleted!" = "对话已删除!"; @@ -1465,9 +1459,6 @@ server test step */ /* alert message */ "Correct name to %@?" = "将名称更正为 %@?"; -/* No comment provided by engineer. */ -"Create" = "创建"; - /* No comment provided by engineer. */ "Create 1-time link" = "创建一次性链接"; @@ -2024,7 +2015,7 @@ chat item action */ /* No comment provided by engineer. */ "Empty message!" = "空消息!"; -/* No comment provided by engineer. */ +/* alert button */ "Enable" = "启用"; /* No comment provided by engineer. */ @@ -2198,7 +2189,7 @@ chat item action */ /* No comment provided by engineer. */ "error" = "错误"; -/* No comment provided by engineer. */ +/* conn error description */ "Error" = "错误"; /* No comment provided by engineer. */ @@ -2752,7 +2743,7 @@ servers warning */ /* No comment provided by engineer. */ "group is deleted" = "群被删除了"; -/* No comment provided by engineer. */ +/* chat link info line */ "Group link" = "群组链接"; /* No comment provided by engineer. */ @@ -2984,7 +2975,7 @@ servers warning */ "Initial role" = "初始角色"; /* No comment provided by engineer. */ -"Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat)" = "安装[用于终端的 SimpleX Chat](https://github.com/simplex-chat/simplex-chat)"; +"Install SimpleX Chat for terminal" = "安装用于终端的 SimpleX Chat"; /* No comment provided by engineer. */ "Instant" = "即时"; @@ -3019,7 +3010,7 @@ servers warning */ /* No comment provided by engineer. */ "invalid chat data" = "无效聊天数据"; -/* No comment provided by engineer. */ +/* conn error description */ "Invalid connection link" = "无效的连接链接"; /* invalid chat item */ @@ -3801,7 +3792,7 @@ alert button new chat action */ "Ok" = "好的"; -/* No comment provided by engineer. */ +/* alert button */ "OK" = "好的"; /* No comment provided by engineer. */ @@ -3882,7 +3873,8 @@ new chat action */ /* No comment provided by engineer. */ "Only your contact can send voice messages." = "只有您的联系人可以发送语音消息。"; -/* alert action */ +/* alert action +alert button */ "Open" = "打开"; /* No comment provided by engineer. */ @@ -4179,9 +4171,6 @@ new chat action */ /* No comment provided by engineer. */ "Profile theme" = "个人资料主题"; -/* alert message */ -"Profile update will be sent to your contacts." = "个人资料更新将被发送给您的联系人。"; - /* No comment provided by engineer. */ "Prohibit audio/video calls." = "禁止音频/视频通话。"; @@ -4270,16 +4259,10 @@ new chat action */ "Read more" = "阅读更多"; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)." = "阅读更多[User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)。"; +"Read more in our GitHub repository." = "在我们的 GitHub 仓库 中阅读更多信息。"; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses)." = "在 [用户指南](https://simplex.chat/docs/guide/making-connections.html#comparison-of-1-time-invitation-links-and-simplex-contact-addresses) 中阅读更多内容。"; - -/* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends)." = "在 [用户指南](https://simplex.chat/docs/guide/readme.html#connect-to-friends) 中阅读更多内容。"; - -/* No comment provided by engineer. */ -"Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme)." = "在我们的 [GitHub 仓库](https://github.com/simplex-chat/simplex-chat#readme) 中阅读更多信息。"; +"Read more in User Guide." = "阅读更多User Guide。"; /* No comment provided by engineer. */ "Receipts are disabled" = "回执已禁用"; @@ -5020,9 +5003,6 @@ chat item action */ /* No comment provided by engineer. */ "Share address publicly" = "公开分享地址"; -/* alert title */ -"Share address with contacts?" = "与联系人分享地址?"; - /* No comment provided by engineer. */ "Share from other apps." = "从其他应用程序共享。"; @@ -5047,9 +5027,6 @@ chat item action */ /* No comment provided by engineer. */ "Share to SimpleX" = "分享到 SimpleX"; -/* No comment provided by engineer. */ -"Share with contacts" = "与联系人分享"; - /* No comment provided by engineer. */ "Share your address" = "分享地址"; @@ -5204,6 +5181,9 @@ report reason */ /* chat item text */ "standard end-to-end encryption" = "标准端到端加密"; +/* No comment provided by engineer. */ +"Star on GitHub" = "在 GitHub 上加星"; + /* No comment provided by engineer. */ "Start chat" = "开始聊天"; @@ -5306,9 +5286,6 @@ report reason */ /* No comment provided by engineer. */ "Tap Connect to use bot" = "轻按“连接”使用机器人"; -/* No comment provided by engineer. */ -"Tap Create SimpleX address in the menu to create it later." = "要稍后创建 SimpleX 地址,请在菜单中轻按“创建 SimpleX 地址”"; - /* No comment provided by engineer. */ "Tap Join group" = "轻按加入群"; @@ -5703,7 +5680,7 @@ server test failure */ /* swipe action */ "Unread" = "未读"; -/* No comment provided by engineer. */ +/* conn error description */ "Unsupported connection link" = "不支持的连接链接"; /* No comment provided by engineer. */ diff --git a/apps/multiplatform/android/src/main/AndroidManifest.xml b/apps/multiplatform/android/src/main/AndroidManifest.xml index d6059896a5..9e059afa14 100644 --- a/apps/multiplatform/android/src/main/AndroidManifest.xml +++ b/apps/multiplatform/android/src/main/AndroidManifest.xml @@ -51,6 +51,7 @@ null } + val sendAsGroup: Boolean get() { + val g = (this as? Group)?.groupInfo + return if (g != null && g.useRelays && g.membership.memberRole >= GroupMemberRole.Owner) { + when (groupChatScope()) { + null -> true + is GroupChatScope.MemberSupport -> false + } + } else { + false + } + } + fun ntfsEnabled(ci: ChatItem): Boolean = ntfsEnabled(ci.meta.userMention) @@ -2133,6 +2145,7 @@ data class GroupInfo ( GroupFeature.SimplexLinks -> p.simplexLinks.on(membership) GroupFeature.Reports -> p.reports.on GroupFeature.History -> p.history.on + GroupFeature.Support -> p.support.on } } @@ -3800,8 +3813,8 @@ sealed class CIContent: ItemContent { is RcvBlocked -> generalGetString(MR.strings.blocked_by_admin_item_description) is SndDirectE2EEInfo -> directE2EEInfoStr(e2eeInfo) is RcvDirectE2EEInfo -> directE2EEInfoStr(e2eeInfo) - is SndGroupE2EEInfo -> e2eeInfoNoPQStr - is RcvGroupE2EEInfo -> e2eeInfoNoPQStr + is SndGroupE2EEInfo -> groupE2EEInfoStr(e2eeInfo) + is RcvGroupE2EEInfo -> groupE2EEInfoStr(e2eeInfo) is ChatBanner -> "" is InvalidJSON -> "invalid data" } @@ -3838,6 +3851,9 @@ sealed class CIContent: ItemContent { private val e2eeInfoNoPQStr: String = generalGetString(MR.strings.e2ee_info_no_pq_short) + fun groupE2EEInfoStr(e2EEInfo: E2EEInfo): String = + if (e2EEInfo.public == true) generalGetString(MR.strings.e2ee_info_no_e2ee) else e2eeInfoNoPQStr + fun featureText(feature: Feature, enabled: String, param: Int?, role: GroupMemberRole? = null): String = (if (feature.hasParam) { "${feature.text}: ${timeText(param)}" @@ -4364,7 +4380,7 @@ enum class CIGroupInvitationStatus { } @Serializable -class E2EEInfo (val pqEnabled: Boolean?) {} +class E2EEInfo (val pqEnabled: Boolean?, val public: Boolean? = null) {} object MsgContentSerializer : KSerializer { override val descriptor: SerialDescriptor = buildSerialDescriptor("MsgContent", PolymorphicKind.SEALED) { 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 f62d4c262d..0363c4fc05 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 @@ -5693,7 +5693,8 @@ enum class GroupFeature: Feature { @SerialName("files") Files, @SerialName("simplexLinks") SimplexLinks, @SerialName("reports") Reports, - @SerialName("history") History; + @SerialName("history") History, + @SerialName("support") Support; override val hasParam: Boolean get() = when(this) { TimedMessages -> true @@ -5711,10 +5712,12 @@ enum class GroupFeature: Feature { SimplexLinks -> true Reports -> false History -> false + Support -> false } - override val text: String - get() = when(this) { + override val text: String get() = text(isChannel = false) + + fun text(isChannel: Boolean): String = when(this) { TimedMessages -> generalGetString(MR.strings.timed_messages) DirectMessages -> generalGetString(MR.strings.direct_messages) FullDelete -> generalGetString(MR.strings.full_deletion) @@ -5722,8 +5725,9 @@ enum class GroupFeature: Feature { Voice -> generalGetString(MR.strings.voice_messages) Files -> generalGetString(MR.strings.files_and_media) SimplexLinks -> generalGetString(MR.strings.simplex_links) - Reports -> generalGetString(MR.strings.group_reports_member_reports) + Reports -> generalGetString(if (isChannel) MR.strings.group_reports_subscriber_reports else MR.strings.group_reports_member_reports) History -> generalGetString(MR.strings.recent_history) + Support -> generalGetString(MR.strings.chat_with_admins) } val icon: Painter @@ -5737,6 +5741,7 @@ enum class GroupFeature: Feature { SimplexLinks -> painterResource(MR.images.ic_link) Reports -> painterResource(MR.images.ic_flag) History -> painterResource(MR.images.ic_schedule) + Support -> painterResource(MR.images.ic_help) } @Composable @@ -5750,9 +5755,10 @@ enum class GroupFeature: Feature { SimplexLinks -> painterResource(MR.images.ic_link) Reports -> painterResource(MR.images.ic_flag_filled) History -> painterResource(MR.images.ic_schedule_filled) + Support -> painterResource(MR.images.ic_help_filled) } - fun enableDescription(enabled: GroupFeatureEnabled, canEdit: Boolean): String = + fun enableDescription(enabled: GroupFeatureEnabled, canEdit: Boolean, isChannel: Boolean = false): String = if (canEdit) { when(this) { TimedMessages -> when(enabled) { @@ -5760,8 +5766,8 @@ enum class GroupFeature: Feature { GroupFeatureEnabled.OFF -> generalGetString(MR.strings.prohibit_sending_disappearing) } DirectMessages -> when(enabled) { - GroupFeatureEnabled.ON -> generalGetString(MR.strings.allow_direct_messages) - GroupFeatureEnabled.OFF -> generalGetString(MR.strings.prohibit_direct_messages) + GroupFeatureEnabled.ON -> generalGetString(if (isChannel) MR.strings.allow_direct_messages_channel else MR.strings.allow_direct_messages) + GroupFeatureEnabled.OFF -> generalGetString(if (isChannel) MR.strings.prohibit_direct_messages_channel else MR.strings.prohibit_direct_messages) } FullDelete -> when(enabled) { GroupFeatureEnabled.ON -> generalGetString(MR.strings.allow_to_delete_messages) @@ -5788,47 +5794,55 @@ enum class GroupFeature: Feature { GroupFeatureEnabled.OFF -> generalGetString(MR.strings.disable_sending_member_reports) } History -> when(enabled) { - GroupFeatureEnabled.ON -> generalGetString(MR.strings.enable_sending_recent_history) - GroupFeatureEnabled.OFF -> generalGetString(MR.strings.disable_sending_recent_history) + GroupFeatureEnabled.ON -> generalGetString(if (isChannel) MR.strings.enable_sending_recent_history_channel else MR.strings.enable_sending_recent_history) + GroupFeatureEnabled.OFF -> generalGetString(if (isChannel) MR.strings.disable_sending_recent_history_channel else MR.strings.disable_sending_recent_history) + } + Support -> when(enabled) { + GroupFeatureEnabled.ON -> generalGetString(if (isChannel) MR.strings.allow_chat_with_admins_channel else MR.strings.allow_chat_with_admins) + GroupFeatureEnabled.OFF -> generalGetString(MR.strings.prohibit_chat_with_admins) } } } else { when(this) { TimedMessages -> when(enabled) { - GroupFeatureEnabled.ON -> generalGetString(MR.strings.group_members_can_send_disappearing) + GroupFeatureEnabled.ON -> generalGetString(if (isChannel) MR.strings.group_members_can_send_disappearing_channel else MR.strings.group_members_can_send_disappearing) GroupFeatureEnabled.OFF -> generalGetString(MR.strings.disappearing_messages_are_prohibited) } DirectMessages -> when(enabled) { - GroupFeatureEnabled.ON -> generalGetString(MR.strings.group_members_can_send_dms) - GroupFeatureEnabled.OFF -> generalGetString(MR.strings.direct_messages_are_prohibited) + GroupFeatureEnabled.ON -> generalGetString(if (isChannel) MR.strings.group_members_can_send_dms_channel else MR.strings.group_members_can_send_dms) + GroupFeatureEnabled.OFF -> generalGetString(if (isChannel) MR.strings.direct_messages_are_prohibited_channel else MR.strings.direct_messages_are_prohibited) } FullDelete -> when(enabled) { - GroupFeatureEnabled.ON -> generalGetString(MR.strings.group_members_can_delete) + GroupFeatureEnabled.ON -> generalGetString(if (isChannel) MR.strings.group_members_can_delete_channel else MR.strings.group_members_can_delete) GroupFeatureEnabled.OFF -> generalGetString(MR.strings.message_deletion_prohibited_in_chat) } Reactions -> when(enabled) { - GroupFeatureEnabled.ON -> generalGetString(MR.strings.group_members_can_add_message_reactions) + GroupFeatureEnabled.ON -> generalGetString(if (isChannel) MR.strings.group_members_can_add_message_reactions_channel else MR.strings.group_members_can_add_message_reactions) GroupFeatureEnabled.OFF -> generalGetString(MR.strings.message_reactions_are_prohibited) } Voice -> when(enabled) { - GroupFeatureEnabled.ON -> generalGetString(MR.strings.group_members_can_send_voice) + GroupFeatureEnabled.ON -> generalGetString(if (isChannel) MR.strings.group_members_can_send_voice_channel else MR.strings.group_members_can_send_voice) GroupFeatureEnabled.OFF -> generalGetString(MR.strings.voice_messages_are_prohibited) } Files -> when(enabled) { - GroupFeatureEnabled.ON -> generalGetString(MR.strings.group_members_can_send_files) + GroupFeatureEnabled.ON -> generalGetString(if (isChannel) MR.strings.group_members_can_send_files_channel else MR.strings.group_members_can_send_files) GroupFeatureEnabled.OFF -> generalGetString(MR.strings.files_are_prohibited_in_group) } SimplexLinks -> when(enabled) { - GroupFeatureEnabled.ON -> generalGetString(MR.strings.group_members_can_send_simplex_links) + GroupFeatureEnabled.ON -> generalGetString(if (isChannel) MR.strings.group_members_can_send_simplex_links_channel else MR.strings.group_members_can_send_simplex_links) GroupFeatureEnabled.OFF -> generalGetString(MR.strings.simplex_links_are_prohibited_in_group) } Reports -> when(enabled) { - GroupFeatureEnabled.ON -> generalGetString(MR.strings.group_members_can_send_reports) + GroupFeatureEnabled.ON -> generalGetString(if (isChannel) MR.strings.group_members_can_send_reports_channel else MR.strings.group_members_can_send_reports) GroupFeatureEnabled.OFF -> generalGetString(MR.strings.member_reports_are_prohibited) } History -> when(enabled) { - GroupFeatureEnabled.ON -> generalGetString(MR.strings.recent_history_is_sent_to_new_members) - GroupFeatureEnabled.OFF -> generalGetString(MR.strings.recent_history_is_not_sent_to_new_members) + GroupFeatureEnabled.ON -> generalGetString(if (isChannel) MR.strings.recent_history_is_sent_to_new_members_channel else MR.strings.recent_history_is_sent_to_new_members) + GroupFeatureEnabled.OFF -> generalGetString(if (isChannel) MR.strings.recent_history_is_not_sent_to_new_members_channel else MR.strings.recent_history_is_not_sent_to_new_members) + } + Support -> when(enabled) { + GroupFeatureEnabled.ON -> generalGetString(if (isChannel) MR.strings.members_can_chat_with_admins_channel else MR.strings.members_can_chat_with_admins) + GroupFeatureEnabled.OFF -> generalGetString(MR.strings.chat_with_admins_is_prohibited) } } } @@ -5955,6 +5969,7 @@ data class FullGroupPreferences( val simplexLinks: RoleGroupPreference, val reports: GroupPreference, val history: GroupPreference, + val support: GroupPreference, val commands: List, ) { fun toGroupPreferences(): GroupPreferences = @@ -5968,6 +5983,7 @@ data class FullGroupPreferences( simplexLinks = simplexLinks, reports = reports, history = history, + support = support, commands = commands, ) @@ -5982,6 +5998,7 @@ data class FullGroupPreferences( simplexLinks = RoleGroupPreference(GroupFeatureEnabled.ON, role = null), reports = GroupPreference(GroupFeatureEnabled.ON), history = GroupPreference(GroupFeatureEnabled.ON), + support = GroupPreference(GroupFeatureEnabled.ON), commands = listOf() ) } @@ -5998,6 +6015,7 @@ data class GroupPreferences( val simplexLinks: RoleGroupPreference? = null, val reports: GroupPreference? = null, val history: GroupPreference? = null, + val support: GroupPreference? = null, val commands: List? = null ) { companion object { diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/ui/theme/Color.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/ui/theme/Color.kt index e3c86352d2..3df780ae24 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/ui/theme/Color.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/ui/theme/Color.kt @@ -3,16 +3,16 @@ package chat.simplex.common.ui.theme import androidx.compose.material.LocalContentColor import androidx.compose.material.MaterialTheme import androidx.compose.runtime.Composable -import androidx.compose.runtime.collectAsState import androidx.compose.ui.graphics.* -import chat.simplex.common.views.helpers.mixWith -import kotlin.math.min +import androidx.compose.ui.graphics.colorspace.ColorSpaces +import kotlin.math.cos +import kotlin.math.sin + +fun oklch(L: Float, C: Float, H: Float, alpha: Float = 1f): Color { + val hRad = H * (Math.PI.toFloat() / 180f) + return Color(L, C * cos(hRad), C * sin(hRad), alpha, ColorSpaces.Oklab) +} -val Purple200 = Color(0xFFBB86FC) -val Purple500 = Color(0xFF6200EE) -val Purple700 = Color(0xFF3700B3) -val Teal200 = Color(0xFF03DAC5) -val Gray = Color(0x22222222) val Indigo = Color(0xFF9966FF) val SimplexBlue = Color(0, 136, 255, 255) // If this value changes also need to update #0088ff in string resource files val SimplexGreen = Color(77, 218, 103, 255) diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ComposeView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ComposeView.kt index 95f51bf284..480320e33e 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ComposeView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ComposeView.kt @@ -534,7 +534,7 @@ fun ComposeView( type = cInfo.chatType, id = cInfo.apiId, scope = cInfo.groupChatScope(), - sendAsGroup = (cInfo as? ChatInfo.Group)?.groupInfo?.let { it.useRelays && it.membership.memberRole >= GroupMemberRole.Owner } ?: false, + sendAsGroup = cInfo.sendAsGroup, live = live, ttl = ttl, composedMessages = listOf(ComposedMessage(file, quoted, mc, mentions)) @@ -665,7 +665,7 @@ fun ComposeView( toChatType = chat.chatInfo.chatType, toChatId = chat.chatInfo.apiId, toScope = chat.chatInfo.groupChatScope(), - sendAsGroup = (chat.chatInfo as? ChatInfo.Group)?.groupInfo?.let { it.useRelays && it.membership.memberRole >= GroupMemberRole.Owner } ?: false, + sendAsGroup = chat.chatInfo.sendAsGroup, fromChatType = fromChatInfo.chatType, fromChatId = fromChatInfo.apiId, fromScope = fromChatInfo.groupChatScope(), @@ -1496,7 +1496,7 @@ fun ComposeView( ) is SharedContent.ChatLink -> { val cInfo = chat.chatInfo - val sendAsGroup = (cInfo as? ChatInfo.Group)?.groupInfo?.let { it.useRelays && it.membership.memberRole >= GroupMemberRole.Owner } ?: false + val sendAsGroup = cInfo.sendAsGroup withBGApi { val mc = chatModel.controller.apiShareChatMsgContent( chat.remoteHostId, ChatType.Group, shared.groupInfo.groupId, @@ -1693,7 +1693,7 @@ fun ComposeView( Row(Modifier.padding(end = 8.dp), verticalAlignment = Alignment.Bottom) { AttachmentAndCommandsButtons() val broadcastPlaceholder = (chat.chatInfo as? ChatInfo.Group)?.groupInfo?.let { gi -> - if (gi.useRelays && gi.membership.memberRole >= GroupMemberRole.Owner) generalGetString(MR.strings.compose_view_broadcast) + if (gi.useRelays && gi.membership.memberRole >= GroupMemberRole.Owner && chat.chatInfo.groupChatScope() == null) generalGetString(MR.strings.compose_view_broadcast) else null } SendMsgView_(disableSendButton = disableSendButton, placeholder = broadcastPlaceholder) diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/GroupChatInfoView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/GroupChatInfoView.kt index 156ad2cd97..2c3a6c713b 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/GroupChatInfoView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/GroupChatInfoView.kt @@ -546,6 +546,10 @@ fun ModalData.GroupChatInfoLayout( var anyTopSectionRowShow = false val channelLink = groupInfo.groupProfile.publicGroup?.groupLink + val showUserSupportChat = groupInfo.membership.memberActive && + ((groupInfo.fullGroupPreferences.support.on && groupInfo.membership.memberRole < GroupMemberRole.Moderator) + || groupInfo.membership.supportChat != null) + if (groupInfo.useRelays) { SectionView { if (groupInfo.isOwner && groupLink != null) { @@ -564,6 +568,14 @@ fun ModalData.GroupChatInfoLayout( anyTopSectionRowShow = true ChannelMembersButton(chat.remoteHostId, groupInfo, showMemberInfo) } + if (groupInfo.membership.memberRole >= GroupMemberRole.Moderator) { + anyTopSectionRowShow = true + MemberSupportButton(chat, openMemberSupport) + } + if (showUserSupportChat) { + anyTopSectionRowShow = true + UserSupportChatButton(chat, groupInfo, scrollToItemId) + } } if (!groupInfo.isOwner && channelLink != null) { SectionTextFooter(stringResource(MR.strings.you_can_share_channel_link_anybody_will_be_able_to_connect)) @@ -590,10 +602,7 @@ fun ModalData.GroupChatInfoLayout( } } } - if ( - groupInfo.membership.memberActive && - (groupInfo.membership.memberRole < GroupMemberRole.Moderator || groupInfo.membership.supportChat != null) - ) { + if (showUserSupportChat) { anyTopSectionRowShow = true UserSupportChatButton(chat, groupInfo, scrollToItemId) } diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/GroupMemberInfoView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/GroupMemberInfoView.kt index fc5d697f4f..1bc6f038f3 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/GroupMemberInfoView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/GroupMemberInfoView.kt @@ -483,14 +483,15 @@ fun GroupMemberInfoLayout( SectionSpacer() } + val showMemberSupportChat = !openedFromSupportChat && + groupInfo.membership.memberRole >= GroupMemberRole.Moderator && + member.memberRole != GroupMemberRole.Relay && + ((groupInfo.fullGroupPreferences.support.on && member.memberRole < GroupMemberRole.Moderator) + || member.supportChat != null) + if (member.memberActive) { SectionView { - if ( - !openedFromSupportChat && - groupInfo.membership.memberRole >= GroupMemberRole.Moderator && - member.memberRole != GroupMemberRole.Relay && - (member.memberRole < GroupMemberRole.Moderator || member.supportChat != null) - ) { + if (showMemberSupportChat) { SupportChatButton() } if (connectionCode != null && !(groupInfo.useRelays && member.memberRole == GroupMemberRole.Relay)) { @@ -504,6 +505,11 @@ fun GroupMemberInfoLayout( // } } SectionDividerSpaced() + } else if (groupInfo.useRelays && member.memberCurrent && showMemberSupportChat) { + SectionView { + SupportChatButton() + } + SectionDividerSpaced() } if (member.contactLink != null) { diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/GroupPreferences.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/GroupPreferences.kt index 902b4c9828..740349eaea 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/GroupPreferences.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/GroupPreferences.kt @@ -155,7 +155,7 @@ private fun GroupPreferencesLayout( } @Composable fun ReportsPreference() { val enableReports = remember(preferences) { mutableStateOf(preferences.reports.enable) } - FeatureSection(GroupFeature.Reports, enableReports, null, groupInfo, preferences, onTTLUpdated) { enable, _ -> + FeatureSection(GroupFeature.Reports, enableReports, null, groupInfo, preferences, onTTLUpdated, disabled = true) { enable, _ -> // enable reports in 7.0 once directory support added applyPrefs(preferences.copy(reports = GroupPreference(enable = enable))) } } @@ -165,6 +165,16 @@ private fun GroupPreferencesLayout( applyPrefs(preferences.copy(history = GroupPreference(enable = enable))) } } + @Composable fun SupportPreference(disabled: Boolean = false, notice: String? = null, onEnable: ((() -> Unit) -> Unit)? = null) { + val enableSupport = remember(preferences) { mutableStateOf(preferences.support.enable) } + FeatureSection(GroupFeature.Support, enableSupport, null, groupInfo, preferences, onTTLUpdated, disabled = disabled, notice = notice) { enable, _ -> + applyPrefs(preferences.copy(support = GroupPreference(enable = enable))) + if (enable == GroupFeatureEnabled.ON) onEnable?.invoke { + enableSupport.value = GroupFeatureEnabled.OFF + applyPrefs(preferences.copy(support = GroupPreference(enable = GroupFeatureEnabled.OFF))) + } + } + } ColumnWithScrollBar { val titleId = if (groupInfo.useRelays) MR.strings.channel_preferences else if (groupInfo.businessChat == null) MR.strings.group_preferences @@ -192,6 +202,8 @@ private fun GroupPreferencesLayout( ReportsPreference() SectionDividerSpaced(true, maxBottomPadding = false) HistoryPreference() + SectionDividerSpaced(true, maxBottomPadding = false) + SupportPreference(disabled = true) } else { TimedMessagesPreference() SectionDividerSpaced(true, maxBottomPadding = false) @@ -200,6 +212,17 @@ private fun GroupPreferencesLayout( ReactionsPreference() SectionDividerSpaced(true, maxBottomPadding = false) HistoryPreference() + SectionDividerSpaced(true, maxBottomPadding = false) + SupportPreference(notice = generalGetString(MR.strings.chat_with_admins_relay_note), onEnable = { revert -> + AlertManager.shared.showAlertDialog( + title = generalGetString(MR.strings.enable_chats_with_admins_question), + text = generalGetString(MR.strings.chat_with_admins_relay_note), + confirmText = generalGetString(MR.strings.enable_chats_with_admins), + destructive = true, + onDismiss = revert, + onDismissRequest = revert, + ) + }) } if (groupInfo.isOwner) { SectionDividerSpaced(maxTopPadding = true, maxBottomPadding = false) @@ -233,6 +256,8 @@ private fun FeatureSection( groupInfo: GroupInfo, preferences: FullGroupPreferences, onTTLUpdated: (Int?) -> Unit, + disabled: Boolean = false, + notice: String? = null, onSelected: (GroupFeatureEnabled, GroupMemberRole?) -> Unit ) { SectionView { @@ -242,10 +267,10 @@ private fun FeatureSection( val timedOn = feature == GroupFeature.TimedMessages && enableFeature.value == GroupFeatureEnabled.ON if (groupInfo.isOwner) { PreferenceToggleWithIcon( - feature.text, + feature.text(groupInfo.isChannel), icon, iconTint, - disabled = feature == GroupFeature.Reports, // remove in 6.4 + disabled = disabled, checked = enableFeature.value == GroupFeatureEnabled.ON, ) { checked -> onSelected(if (checked) GroupFeatureEnabled.ON else GroupFeatureEnabled.OFF, enableForRole?.value) @@ -274,7 +299,7 @@ private fun FeatureSection( } } else { InfoRow( - feature.text, + feature.text(groupInfo.isChannel), enableFeature.value.text, icon = icon, iconTint = iconTint, @@ -292,7 +317,10 @@ private fun FeatureSection( onSelected(enableFeature.value, null) } } - SectionTextFooter(feature.enableDescription(enableFeature.value, groupInfo.isOwner)) + SectionTextFooter(feature.enableDescription(enableFeature.value, groupInfo.isOwner, groupInfo.isChannel)) + if (notice != null) { + SectionTextFooter(notice) + } } @Composable diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/MemberSupportView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/MemberSupportView.kt index c3cf954ab6..3d76c845ad 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/MemberSupportView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/MemberSupportView.kt @@ -116,7 +116,10 @@ private fun ModalData.MemberSupportViewLayout( if (membersWithChats.isEmpty()) { item { Box(Modifier.fillMaxSize().padding(horizontal = DEFAULT_PADDING), contentAlignment = Alignment.Center) { - Text(generalGetString(MR.strings.no_support_chats), color = MaterialTheme.colors.secondary, textAlign = TextAlign.Center) + Text( + generalGetString(if (groupInfo.fullGroupPreferences.support.on) MR.strings.no_support_chats else MR.strings.support_chats_disabled), + color = MaterialTheme.colors.secondary, textAlign = TextAlign.Center + ) } } } else { diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt index 14afccee54..15b0a12822 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt @@ -680,21 +680,17 @@ fun ChatItemView( } @Composable - fun E2EEInfoNoPQText() { - e2eeInfoText(MR.strings.e2ee_info_no_pq) + fun DirectE2EEInfoText(e2EEInfo: E2EEInfo) { + e2eeInfoText(when (e2EEInfo.pqEnabled) { + true -> MR.strings.e2ee_info_pq + false -> MR.strings.e2ee_info_no_pq + null -> MR.strings.e2ee_info_e2ee + }) } @Composable - fun DirectE2EEInfoText(e2EEInfo: E2EEInfo) { - if (e2EEInfo.pqEnabled != null) { - if (e2EEInfo.pqEnabled) { - e2eeInfoText(MR.strings.e2ee_info_pq) - } else { - E2EEInfoNoPQText() - } - } else { - e2eeInfoText(MR.strings.e2ee_info_e2ee) - } + fun GroupE2EEInfoText(e2EEInfo: E2EEInfo) { + e2eeInfoText(if (e2EEInfo.public == true) MR.strings.e2ee_info_no_e2ee else MR.strings.e2ee_info_no_pq) } if (cItem.meta.itemDeleted != null && (!revealed.value || cItem.isDeletedContent)) { @@ -794,8 +790,8 @@ fun ChatItemView( is CIContent.RcvBlocked -> DeletedItem() is CIContent.SndDirectE2EEInfo -> DirectE2EEInfoText(c.e2eeInfo) is CIContent.RcvDirectE2EEInfo -> DirectE2EEInfoText(c.e2eeInfo) - is CIContent.SndGroupE2EEInfo -> E2EEInfoNoPQText() - is CIContent.RcvGroupE2EEInfo -> E2EEInfoNoPQText() + is CIContent.SndGroupE2EEInfo -> GroupE2EEInfoText(c.e2eeInfo) + is CIContent.RcvGroupE2EEInfo -> GroupE2EEInfoText(c.e2eeInfo) is CIContent.ChatBanner -> Spacer(modifier = Modifier.size(0.dp)) is CIContent.InvalidJSON -> { CIInvalidJSONView(c.json) diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chatlist/ChatListView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chatlist/ChatListView.kt index 8f836c3c29..663b42413f 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chatlist/ChatListView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chatlist/ChatListView.kt @@ -1144,7 +1144,7 @@ private fun ExpandedTagFilterView(tag: PresetTagKind) { is ActiveFilter.PresetTag -> af.tag == tag else -> false } - val (icon, text) = presetTagLabel(tag, active) + val (icon, menuIcon, text) = presetTagLabel(tag, active) val color = if (active) MaterialTheme.colors.primary else MaterialTheme.colors.secondary Row( @@ -1164,7 +1164,7 @@ private fun ExpandedTagFilterView(tag: PresetTagKind) { horizontalArrangement = Arrangement.Center ) { Icon( - painterResource(icon), + painterResource(menuIcon ?: icon), stringResource(text), Modifier.size(18.sp.toDp()), tint = color @@ -1206,9 +1206,9 @@ private fun CollapsedTagsFilterView(searchText: MutableState) { contentAlignment = Alignment.Center ) { if (selectedPresetTag != null) { - val (icon, text) = presetTagLabel(selectedPresetTag, true) + val (icon, menuIcon, text) = presetTagLabel(selectedPresetTag, true) Icon( - painterResource(icon), + painterResource(menuIcon ?: icon), stringResource(text), Modifier.size(18.sp.toDp()), tint = MaterialTheme.colors.primary @@ -1254,7 +1254,7 @@ fun ItemPresetFilterAction( showMenu: MutableState, onCloseMenuAction: MutableState<(() -> Unit)> ) { - val (icon, text) = presetTagLabel(presetTag, active) + val (icon, _, text) = presetTagLabel(presetTag, active) ItemAction( stringResource(text), painterResource(icon), @@ -1336,15 +1336,15 @@ fun presetTagMatchesChat(tag: PresetTagKind, chatInfo: ChatInfo, chatStats: Chat } } -private fun presetTagLabel(tag: PresetTagKind, active: Boolean): Pair = +private fun presetTagLabel(tag: PresetTagKind, active: Boolean): Triple = when (tag) { - PresetTagKind.GROUP_REPORTS -> (if (active) MR.images.ic_flag_filled else MR.images.ic_flag) to MR.strings.chat_list_group_reports - PresetTagKind.FAVORITES -> (if (active) MR.images.ic_star_filled else MR.images.ic_star) to MR.strings.chat_list_favorites - PresetTagKind.CONTACTS -> (if (active) MR.images.ic_person_filled else MR.images.ic_person) to MR.strings.chat_list_contacts - PresetTagKind.GROUPS -> (if (active) MR.images.ic_group_filled else MR.images.ic_group) to MR.strings.chat_list_groups - PresetTagKind.CHANNELS -> (if (active) MR.images.ic_bigtop_updates_circle_filled else MR.images.ic_bigtop_updates) to MR.strings.chat_list_channels - PresetTagKind.BUSINESS -> (if (active) MR.images.ic_work_filled else MR.images.ic_work) to MR.strings.chat_list_businesses - PresetTagKind.NOTES -> (if (active) MR.images.ic_folder_closed_filled else MR.images.ic_folder_closed) to MR.strings.chat_list_notes + PresetTagKind.GROUP_REPORTS -> Triple(if (active) MR.images.ic_flag_filled else MR.images.ic_flag, null, MR.strings.chat_list_group_reports) + PresetTagKind.FAVORITES -> Triple(if (active) MR.images.ic_star_filled else MR.images.ic_star, null, MR.strings.chat_list_favorites) + PresetTagKind.CONTACTS -> Triple(if (active) MR.images.ic_person_filled else MR.images.ic_person, null, MR.strings.chat_list_contacts) + PresetTagKind.GROUPS -> Triple(if (active) MR.images.ic_group_filled else MR.images.ic_group, null, MR.strings.chat_list_groups) + PresetTagKind.CHANNELS -> Triple(if (active) MR.images.ic_bigtop_updates_circle_filled else MR.images.ic_bigtop_updates, MR.images.ic_bigtop_updates, MR.strings.chat_list_channels) + PresetTagKind.BUSINESS -> Triple(if (active) MR.images.ic_work_filled else MR.images.ic_work, null, MR.strings.chat_list_businesses) + PresetTagKind.NOTES -> Triple(if (active) MR.images.ic_folder_closed_filled else MR.images.ic_folder_closed, null, MR.strings.chat_list_notes) } private fun presetCanBeCollapsed(tag: PresetTagKind): Boolean = when (tag) { diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/Utils.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/Utils.kt index c4821d1a20..424d500085 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/Utils.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/Utils.kt @@ -537,6 +537,20 @@ fun UriHandler.openUriCatching(uri: String) { } } +fun UriHandler.openExternalLink(uri: String) { + val uriHandler = this + if (uri.startsWith("https://simplex.chat/contact#") || (uri.startsWith("https://smp") && ".simplex.im/a#" in uri)) { + uriHandler.openVerifiedSimplexUri(uri) + } else { + AlertManager.shared.showAlertDialog( + title = generalGetString(MR.strings.open_external_link_title), + text = uri, + confirmText = generalGetString(MR.strings.open_verb), + onConfirm = { uriHandler.openUriCatching(uri) } + ) + } +} + fun IntSize.Companion.Saver(): Saver = Saver( save = { it.width to it.height }, restore = { IntSize(it.first, it.second) } diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/newchat/AddChannelView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/newchat/AddChannelView.kt index e60fcfc921..77b5cd73b5 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/newchat/AddChannelView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/newchat/AddChannelView.kt @@ -110,7 +110,10 @@ fun AddChannelView(chatModel: ChatModel, close: () -> Unit, closeAll: () -> Unit fullName = "", shortDescr = null, image = profileImage.value, - groupPreferences = GroupPreferences(history = GroupPreference(GroupFeatureEnabled.ON)) + groupPreferences = GroupPreferences( + history = GroupPreference(GroupFeatureEnabled.ON), + support = GroupPreference(GroupFeatureEnabled.OFF) + ) ) creationInProgress.value = true withBGApi { diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/newchat/ConnectPlan.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/newchat/ConnectPlan.kt index b38fbf9f51..cafad97574 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/newchat/ConnectPlan.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/newchat/ConnectPlan.kt @@ -604,6 +604,7 @@ fun showPrepareContactAlert( confirmText = generalGetString(MR.strings.connect_plan_open_new_chat), onConfirm = { AlertManager.privacySensitive.hideAlert() + ModalManager.closeAllModalsEverywhere() withBGApi { val chat = chatModel.controller.apiPrepareContact(rhId, connectionLink, contactShortLinkData) if (chat != null) { diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/newchat/OnboardingCards.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/newchat/OnboardingCards.kt index 98954eb74f..26007c74af 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/newchat/OnboardingCards.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/newchat/OnboardingCards.kt @@ -15,6 +15,7 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.colorspace.ColorSpaces import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.layout.layout @@ -89,17 +90,19 @@ internal fun gradientPoints(aspectRatio: Float, scale: Float): GradientEndpoints } internal val lightStops = arrayOf( - 0.0f to Color(0xFFd2e8ff), - 0.5f to Color(0xFFcce9ff), - 0.9f to Color(0xFFdfffff), - 1.0f to Color(0xFFfffcea) + 0.0f to oklch(0.9219f, 0.0431f, 249.4f), + 0.5f to oklch(0.9198f, 0.0471f, 240.7f), + 0.9f to oklch(0.9772f, 0.0358f, 196.6f), + 0.95f to oklch(0.9829f, 0.0104f, 70.0f), + 1.0f to oklch(0.9886f, 0.0272f, 99.1f) ) internal val darkStops = arrayOf( - 0.4f to Color(0xFF040a24), - 0.72f to Color(0xFF3854ab), - 0.9f to Color(0xFFa8edf3), - 1.0f to Color(0xFFfff6e0) + 0.4f to oklch(0.1578f, 0.0609f, 267.3f), + 0.72f to oklch(0.4729f, 0.1574f, 267.3f), + 0.9f to oklch(0.9024f, 0.0760f, 202.8f), + 0.95f to oklch(0.9384f, 0.0354f, 65.0f), + 1.0f to oklch(0.9744f, 0.0370f, 88.4f) ) private fun Modifier.maxHeightByWidthRatio(ratio: Float) = layout { measurable, constraints -> 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 aff02e90f5..2b92d35e72 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 @@ -67,7 +67,7 @@ fun ReadableTextWithLink(stringResId: StringResource, link: String, textAlign: T newStyles } val uriHandler = LocalUriHandler.current - Text(AnnotatedString(annotated.text, newStyles), modifier = Modifier.padding(padding).clickable { if (simplexLink) uriHandler.openVerifiedSimplexUri(link) else uriHandler.openUriCatching(link) }, textAlign = textAlign, lineHeight = 22.sp) + Text(AnnotatedString(annotated.text, newStyles), modifier = Modifier.padding(padding).clickable { if (simplexLink) uriHandler.openVerifiedSimplexUri(link) else uriHandler.openExternalLink(link) }, textAlign = textAlign, lineHeight = 22.sp) } @Composable diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/WhatsNewView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/WhatsNewView.kt index 89b2f97ee7..0edeee61af 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/WhatsNewView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/WhatsNewView.kt @@ -59,7 +59,7 @@ fun ModalData.WhatsNewView(updatedConditions: Boolean = false, viaSettings: Bool Icon( painterResource(MR.images.ic_open_in_new), stringResource(titleId), tint = MaterialTheme.colors.primary, modifier = Modifier - .clickable { if (link.startsWith("simplex:")) uriHandler.openVerifiedSimplexUri(link) else uriHandler.openUriCatching(link) } + .clickable { if (link.startsWith("simplex:")) uriHandler.openVerifiedSimplexUri(link) else uriHandler.openExternalLink(link) } ) } @@ -229,7 +229,7 @@ fun ReadMoreButton(url: String) { interactionSource = remember { MutableInteractionSource() }, indication = null ) { - uriHandler.openUriCatching(url) + uriHandler.openExternalLink(url) } ) Icon(painterResource(MR.images.ic_open_in_new), stringResource(MR.strings.whats_new_read_more), tint = MaterialTheme.colors.primary) diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/RTCServers.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/RTCServers.kt index 761a74d6e4..0c31b062dd 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/RTCServers.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/RTCServers.kt @@ -198,7 +198,7 @@ private fun howToButton() { val uriHandler = LocalUriHandler.current Row( verticalAlignment = Alignment.CenterVertically, - modifier = Modifier.clickable { uriHandler.openUriCatching("https://simplex.chat/docs/webrtc.html#configure-mobile-apps") } + modifier = Modifier.clickable { uriHandler.openExternalLink("https://simplex.chat/docs/webrtc.html#configure-mobile-apps") } ) { Text(stringResource(MR.strings.how_to), color = MaterialTheme.colors.primary) Icon( diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/SettingsView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/SettingsView.kt index 7ea656e1e4..c826b1dc51 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/SettingsView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/SettingsView.kt @@ -75,7 +75,7 @@ fun SettingsView(chatModel: ChatModel, setPerformLA: (Boolean) -> Unit, close: ( } val simplexTeamUri = - "simplex:/contact#/?v=1&smp=smp%3A%2F%2FPQUV2eL0t7OStZOoAsPEV2QYWt4-xilbakvGUGOItUo%3D%40smp6.simplex.im%2FK1rslx-m5bpXVIdMZg9NLUZ_8JBm8xTt%23MCowBQYDK2VuAyEALDeVe-sG8mRY22LsXlPgiwTNs9dbiLrNuA7f3ZMAJ2w%3D" + "simplex:/a#lrdvu2d8A1GumSmoKb2krQmtKhWXq-tyGpHuM7aMwsw?h=smp6.simplex.im" @Composable fun SettingsLayout( @@ -207,7 +207,7 @@ fun ChatLockItem( } @Composable private fun ContributeItem(uriHandler: UriHandler) { - SectionItemView({ uriHandler.openUriCatching("https://github.com/simplex-chat/simplex-chat#contribute") }) { + SectionItemView({ uriHandler.openExternalLink("https://github.com/simplex-chat/simplex-chat#contribute") }) { Icon( painterResource(MR.images.ic_keyboard), contentDescription = "GitHub", @@ -235,7 +235,7 @@ fun ChatLockItem( } @Composable private fun StarOnGithubItem(uriHandler: UriHandler) { - SectionItemView({ uriHandler.openUriCatching("https://github.com/simplex-chat/simplex-chat") }) { + SectionItemView({ uriHandler.openExternalLink("https://github.com/simplex-chat/simplex-chat") }) { Icon( painter = painterResource(MR.images.ic_github), contentDescription = "GitHub", @@ -268,7 +268,7 @@ fun ChatLockItem( } @Composable fun InstallTerminalAppItem(uriHandler: UriHandler) { - SectionItemView({ uriHandler.openUriCatching("https://github.com/simplex-chat/simplex-chat") }) { + SectionItemView({ uriHandler.openExternalLink("https://github.com/simplex-chat/simplex-chat") }) { Icon( painter = painterResource(MR.images.ic_github), contentDescription = "GitHub", 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 bbd2a0af49..c70243f584 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 @@ -769,7 +769,7 @@ fun UsageConditionsView( .clip(shape = CircleShape) .clickable { val commitUrl = "https://github.com/simplex-chat/simplex-chat/commit/$commit" - uriHandler.openUriCatching(commitUrl) + uriHandler.openExternalLink(commitUrl) } .padding(horizontal = 6.dp, vertical = 4.dp), verticalAlignment = Alignment.CenterVertically, diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/OperatorView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/OperatorView.kt index 1449e0cd0d..9e11b9a932 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/OperatorView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/OperatorView.kt @@ -500,7 +500,7 @@ fun OperatorInfoView(serverOperator: ServerOperator) { Text(d) } val website = serverOperator.info.website - Text(website, color = MaterialTheme.colors.primary, modifier = Modifier.clickable { uriHandler.openUriCatching(website) }) + Text(website, color = MaterialTheme.colors.primary, modifier = Modifier.clickable { uriHandler.openExternalLink(website) }) } } } @@ -511,7 +511,7 @@ fun OperatorInfoView(serverOperator: ServerOperator) { SectionView { SectionItemView { val (text, link) = selfhost - Text(text, color = MaterialTheme.colors.primary, modifier = Modifier.clickable { uriHandler.openUriCatching(link) }) + Text(text, color = MaterialTheme.colors.primary, modifier = Modifier.clickable { uriHandler.openExternalLink(link) }) } } } @@ -787,7 +787,7 @@ private fun ConditionsLinkView(conditionsLink: String) { SectionItemView { val uriHandler = LocalUriHandler.current Text(stringResource(MR.strings.operator_conditions_failed_to_load), color = MaterialTheme.colors.onBackground) - Text(conditionsLink, color = MaterialTheme.colors.primary, modifier = Modifier.clickable { uriHandler.openUriCatching(conditionsLink) }) + Text(conditionsLink, color = MaterialTheme.colors.primary, modifier = Modifier.clickable { uriHandler.openExternalLink(conditionsLink) }) } } @@ -821,13 +821,13 @@ fun ConditionsLinkButton() { val commit = chatModel.conditions.value.currentConditions.conditionsCommit ItemAction(stringResource(MR.strings.operator_open_conditions), painterResource(MR.images.ic_draft), onClick = { val mdUrl = "https://github.com/simplex-chat/simplex-chat/blob/$commit/PRIVACY.md" - uriHandler.openUriCatching(mdUrl) showMenu.value = false + uriHandler.openExternalLink(mdUrl) }) ItemAction(stringResource(MR.strings.operator_open_changes), painterResource(MR.images.ic_more_horiz), onClick = { val commitUrl = "https://github.com/simplex-chat/simplex-chat/commit/$commit" - uriHandler.openUriCatching(commitUrl) showMenu.value = false + uriHandler.openExternalLink(commitUrl) }) } IconButton({ showMenu.value = true }) { @@ -838,11 +838,7 @@ fun ConditionsLinkButton() { private fun internalUriHandler(parentUriHandler: UriHandler): UriHandler = object: UriHandler { override fun openUri(uri: String) { - if (uri.startsWith("https://simplex.chat/contact#")) { - openVerifiedSimplexUri(uri) - } else { - parentUriHandler.openUriCatching(uri) - } + parentUriHandler.openExternalLink(uri) } } diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/ProtocolServersView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/ProtocolServersView.kt index b232c7994e..3be2456b72 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/ProtocolServersView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/ProtocolServersView.kt @@ -335,7 +335,7 @@ private fun HowToButton() { SettingsActionItem( painterResource(MR.images.ic_open_in_new), stringResource(MR.strings.how_to_use_your_servers), - { uriHandler.openUriCatching("https://simplex.chat/docs/server.html") }, + { uriHandler.openExternalLink("https://simplex.chat/docs/server.html") }, textColor = MaterialTheme.colors.primary, iconColor = MaterialTheme.colors.primary ) 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 3045f3035d..cb92b386a0 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/ar/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/ar/strings.xml @@ -26,7 +26,7 @@ خوادم الاتصالات الجديدة لملف تعريف الدردشة الحالي الخاص بك سيتم تغيير عنوان الاستلام إلى خادم مختلف. سيتم إكمال تغيير العنوان بعد اتصال المرسل بالإنترنت. هذا الرابط ليس رابط اتصال صالح! - يسمح + اسمح أضِف خوادم مُعدة مسبقًا أضِف إلى جهاز آخر سيتم حذف جميع الدردشات والرسائل - لا يمكن التراجع عن هذا! @@ -106,7 +106,7 @@ تجزئة رسالة سيئة معرّف رسالة سيئ انتهت المكالمة - تغير + غيِّر لون إضافي ثانوي " \nمتوفر في v5.1" @@ -122,7 +122,7 @@ 1 دقيقة 30 ثانية ألغِ الرسالة الحيّة - إلغاء + ألغِ لكل جهة اتصال وعضو في المجموعة\n. الرجاء ملاحظة: إذا كان لديك العديد من الاتصالات، فقد يكون استهلاك البطارية وحركة المرور أعلى بكثير وقد تفشل بعض الاتصالات.]]> جارٍ الاتصال… مكالمة صوتية @@ -162,19 +162,19 @@ مفعّل مفعّلة لك يمكن لجهات الاتصال تحديد الرسائل لحذفها؛ ستتمكن من مشاهدتها. - جار الاتصال… + يتصل… خطأ في الإتصال (المصادقة) خطأ في حذف جهة الاتصال جهة الاتصال مخفية: - نسخ + انسخ اتصل متصل انضمام إلى المجموعة؟ اتصل عبر رابط لمرة واحدة؟ تغيير عنوان الاستلام؟ نٌسخت إلى الحافظة - مسح - امسح الدردشة + امحُ + امحُ الدردشة أنشئ عنوان الدردشات تأكيد عبارة المرور الجديدة… @@ -199,19 +199,19 @@ تأكد من بيانات اعتمادك أنشئ عنوان SimpleX متابعة - تحدث مع المطورين + دردش مع المطوِّرين سياق الأيقونة إحباط تغيير العنوان؟ إحباط سيتم إحباط تغيير العنوان. سيتم استخدام عنوان الاستلام القديم. - مسح الدردشة؟ + محو الدردشة؟ وحدة تحكم الدردشة ضبط خوادم ICE الاتصال ملف تعريف الدردشة الإصدار الأساسي: v%s أنشئ ملف تعريف - جار الاتصال… + يتصل… انتهى متصل %1$d تخطت الرسائل @@ -221,13 +221,13 @@ خطأ في تعمية قاعدة البيانات توقفت الدردشة مكتمل - جاري الاتصال (أعلن) + يتصل (أُعلن) الاتصال إحباط تغيير العنوان أنشئ مجموعة سرية قارن رموز الأمان مع جهات اتصالك. الواجهة الصينية والاسبانية - مسح + امحُ %1$s يريد التواصل معك عبر جارِ تغيير العنوان… جارِ تغيير العنوان ل%s… @@ -240,17 +240,17 @@ تغيير وضع التدمير الذاتي تغيير رمز المرور التدمير الذاتي تأكيد ترقيات قاعدة البيانات - الاتصال (دعوة مقدمة) - مسح + يتصل (دعوة مقدمة) + امحُ خطأ في إنشاء رابط المجموعة (حاضِر) فعّل أبقِ TCP على قيد الحياة - جار الاتصال… - جار الاتصال… + يتصل… + يتصل… أرسلت طلب الاتصال! حُذفت قاعدة بيانات الدردشة جارِ تغيير العنوان… - جار الاتصال (قُبِل) + يتصل (قُبِل) فُحصت جهة الاتصال %1$s أعضاء أنشئ رابط المجموعة @@ -271,7 +271,7 @@ اتصل عبر عنوان التواصل؟ خطأ في حذف رابط المجموعة التحقق من الرسائل الجديدة كل 10 دقائق لمدة تصل إلى دقيقة واحدة - جار الاتصال + يتصل خطأ خطأ في حذف ملف تعريف المستخدم زر الاغلاق @@ -279,7 +279,7 @@ تغيير الدور أدخل كلمة المرور في البحث تسمح جهة الاتصال - تأكيد + أكِّد جهة الاتصال ليست متصلة بعد! اتصال تواصل عبر الرابط @@ -294,7 +294,7 @@ خطأ في حذف اتصال جهة الاتصال المنتظر أدخل رسالة ترحيب… متصل - جار الاتصال + يتصل مفعّلة للاتصال تغيير رمز المرور متصل @@ -308,18 +308,18 @@ تواصل عبر الرابط / رمز QR أنشئ رابط دعوة لمرة واحدة تحقق من عنوان الخادم وحاول مرة أخرى. - امسح التحقُّق + امحُ التحقُّق أنشئ عنوانًا للسماح للأشخاص بالتواصل معك. أدخل الخادم يدويًا ملون لدى جهة الاتصال التعمية بين الطريفين أنشئ أنشئ ملف تعريفك - مكالمة جارية... + مكالمة جارية فعّل التدمير الذاتي الموافقة على التعمية… الموافقة على التعمية لـ%s… - متصل (مقدم) + يتصل (مقدم) وافق التعمية التعمية نعم التعمية نعم ل%s @@ -335,7 +335,7 @@ احذف جميع الملفات احذف بعد احذف الملف - حذف + احذف حذف رسالة العضو؟ احذف احذف الرسائل @@ -398,7 +398,7 @@ مخصص تخصيص ومشاركة سمات الألوان. الخروج بدون حفظ - أدوات المطور + أدوات المطوِّر احذف قائمة الانتظار خطأ في تحديث خصوصية المستخدم مسح رمز QR.]]> @@ -471,7 +471,7 @@ يمكن للأعضاء إرسال الملفات والوسائط. تفضيلات المجموعة سريع ولا تنتظر حتى يصبح المرسل متصلاً بالإنترنت! - إخفاء + أخفِ كيفية الاستخدام كيف يعمل SimpleX التخفي عبر رابط عنوان جهة الاتصال @@ -602,7 +602,7 @@ مصادقة الجهاز غير مفعّلة. يمكنك تشغيل قفل SimpleX عبر الإعدادات، بمجرد تفعيل مصادقة الجهاز. نزّل الملف عطّل قفل SimpleX - تحرير + حرّر اسم ملف التعريف: البريد الإلكتروني أدخل أسمك: @@ -709,7 +709,7 @@ خطأ في تسليم الرسالة الشبكة والخوادم إشراف - فتح في تطبيق الجوال، ثم انقر فوق اتصال في التطبيق.]]> + فتح في تطبيق الجوال، ثم انقر فوق اتصال في التطبيق.]]> تحت الإشراف في: %s ردود الفعل الرسائل ممنوعة في هذه الدردشة. أُشرف بواسطة %s @@ -798,7 +798,7 @@ جارِ فتح قاعدة البيانات… جهة اتصالك فقط يمكنها إرسال رسائل صوتية. ألصق - لم يُعثر على عبارة المرور في Keystore، يُرجى إدخالها يدويًا. ربما حدث هذا إذا استعدت بيانات التطبيق باستخدام أداة النسخ الاحتياطي. إذا لم يكن الأمر كذلك، يُرجى التواصل مع المطورين. + لم يُعثر على عبارة المرور في Keystore، يُرجى إدخالها يدويًا. ربما حدث هذا إذا استعدت بيانات التطبيق باستخدام أداة النسخ الاحتياطي. إذا لم يكن الأمر كذلك، يُرجى التواصل مع المطوِّرين. افتح الدردشة قد يؤدي فتح الرابط في المتصفح إلى تقليل خصوصية الاتصال وأمانه. ستظهر روابط SimpleX غير الموثوقة باللون الأحمر. أنت فقط يمكنك إضافة ردود الفعل على الرسالة. @@ -816,7 +816,7 @@ مكالمة قيد الانتظار تقوم أجهزة العميل فقط بتخزين ملفات تعريف المستخدمين وجهات الاتصال والمجموعات والرسائل. صفّر الألوان - حفظ + احفظ عنوان الخادم المُعد مسبقًا حفظ وإشعار أعضاء المجموعة دوري @@ -827,18 +827,18 @@ صورة ملف التعريف الإشعارات خاصة يُرجى تخزين عبارة المرور بشكل آمن، فلن تتمكن من الوصول إلى الدردشة إذا فقدتها. - يُرجى تحديث التطبيق والتواصل مع المطورين. + يُرجى تحديث التطبيق والتواصل مع المطوِّرين. دليل المستخدم.]]> غيّر ملفات تعريف الدردشة اسحب الوصول - كشف + اكشف سيتم إيقاف استلام الملف. رفض قيم التطبيق منفذ احفظ إعدادات عنوان SimpleX إعادة تعريف الخصوصية - الرجاء الإبلاغ للمطورين. + يُرجى إبلاغ المطوِّرين بذلك. الخصوصية والأمان أزل إزالة عبارة المرور من Keystore؟ @@ -853,7 +853,7 @@ استلمت إجابة… مستودع GitHub.]]> رفض - يحمي خادم الترحيل عنوان IP الخاص بك، ولكن يمكنه مراقبة مدة المكالمة. + يحمي خادم المُرحل عنوان IP الخاص بك، ولكن يمكنه مراقبة مُدّة المكالمة. الرجاء إدخال كلمة المرور السابقة بعد استعادة نسخة احتياطية لقاعدة البيانات. لا يمكن التراجع عن هذا الإجراء. استعادة النسخة الاحتياطية لقاعدة البيانات؟ حفظ @@ -924,7 +924,7 @@ صفّر المنفذ %d خادم مُعد مسبقًا - يتم استخدام خادم الترحيل فقط إذا لزم الأمر. يمكن لطرف آخر مراقبة عنوان IP الخاص بك. + يُستخدم خادم المُرحل فقط إذا لزم الأمر. يمكن لطرف آخر مراقبة عنوان IP الخاص بك. حفظ وإشعار جهة الاتصال إعادة التشغيل استلمت في: %s @@ -946,7 +946,7 @@ إرسال رسالة إرسال أرسل رسالة حيّة - فشلت تجربة الخادم! + فشل اختبار الخادم! احفظ عبارة المرور في Keystore أرسل رسالة مباشرة إرسال عبر @@ -960,8 +960,8 @@ رسالة مرسلة عيّن تفضيلات المجموعة عيّنها بدلاً من استيثاق النظام. - مشاركة - إرسال + شارك + أرسل احفظ عبارة المرور وافتح الدردشة حدد جهات الاتصال تعيين يوم واحد @@ -1048,7 +1048,7 @@ يبدأ… شُغّل قفل SimpleX أظهر: - أظهر خيارات المطور + أظهر خيارات المطوِّر simplexmq: v%s (%2s) يتطلب الخادم إذنًا لإنشاء قوائم انتظار، تحقق من كلمة المرور. يتطلب الخادم إذنًا للرفع، تحقق من كلمة المرور. @@ -1093,7 +1093,7 @@ اختبر الخوادم لا معرّفات مُستخدم دعم SIMPLEX CHAT - تبديل + بدِّل العنوان الرئيسي سيتم وضع علامة على الرسالة على أنها تحت الإشراف لجميع الأعضاء. انقر للانضمام @@ -1117,7 +1117,7 @@ لاستلام الإشعارات، يُرجى إدخال عبارة مرور قاعدة البيانات مصادقة النظام يعمل التعمية واتفاقية التعمية الجديدة غير مطلوبة. قد ينتج عن ذلك أخطاء في الاتصال! - لا يمكن فك ترميز الصورة. من فضلك، جرب صورة مختلفة أو تواصل مع المطورين. + لا يمكن فك ترميز الصورة. من فضلك، جرّب صورة مختلفة أو تواصل مع المطوِّرين. سيتم حذف الرسالة لجميع الأعضاء. الصور كثيرة! مقاطع الفيديو كثيرة! @@ -1253,13 +1253,13 @@ إلغاء إخفاء ملف تعريف يجب أن تكون جهة الاتصال متصلة بالإنترنت حتى يكتمل الاتصال. \nيمكنك إلغاء هذا الاتصال وإزالة جهة الاتصال (والمحاولة لاحقًا باستخدام رابط جديد). - فتح في تطبيق الجوال.]]> + فتح في تطبيق الجوّال.]]> استخدم للاتصالات الجديدة استخدم الخادم عنوان خادمك قاعدة بيانات دردشتك أنت مدعو إلى المجموعة. انضم للتواصل مع أعضاء المجموعة. - لقد انضممت إلى هذه المجموعة. جارِ الاتصال بدعوة عضو المجموعة. + لقد انضممت إلى هذه المجموعة. يتصل بدعوة عضو المجموعة. غيّرتَ العنوان ل%s إلغاء إخفاء ملف تعريف الدردشة الرسائل الصوتية ممنوعة في هذه الدردشة. @@ -1284,7 +1284,7 @@ مكالمة فيديو الرسائل الصوتية ممنوعة. فتح القفل - رفع الملف + ارفع الملف لا يمكن التحقق منك؛ الرجاء المحاولة مرة اخرى. رسالة صوتية رسالة صوتية… @@ -1292,14 +1292,14 @@ أنت المراقب! تحتاج إلى السماح لجهة اتصالك بإرسال رسائل صوتية لتتمكن من إرسالها. أرسلت جهة اتصالك ملفًا أكبر من الحجم الأقصى المعتمد حاليًا (%1$s). - الاتصال بمطوري SimpleX Chat لطرح أي أسئلة وتلقي التحديثات.]]> + الاتصال بمطوِّري SimpleX Chat لطرح أي أسئلة وتلقي التحديثات.]]> خادمك يُخزن ملف تعريفك على جهازك ومشاركته فقط مع جهات اتصالك. لا تستطيع خوادم SimpleX رؤية ملف تعريفك. الفيديو مقفل الفيديو مُشغَّل مع رسالة ترحيب اختيارية. قريباً! - هذه الميزة ليست مدعومة بعد. جرب الإصدار القادم. + هذه الميزة ليست مدعومة بعد. جرّب الإصدار القادم. عطّل (الاحتفاظ بتجاوزات المجموعة) فعِّل لجميع المجموعات إرسال الإيصالات مفعّلة لـ%d مجموعات @@ -1366,7 +1366,7 @@ فعّل وضع التخفي عند الاتصال. أرسل لاتصال طُلب اتصال - جارٍ الاتصال بالفعل! + يتصل بالفعل! مجموعات أفضل و%d أحداث أخرى جارٍ انضمام بالفعل إلى المجموعة! @@ -1388,7 +1388,7 @@ اتصل بنفسك؟ سطح المكتب متصل بسطح المكتب - جار الاتصال بسطح المكتب + الاتصال بسطح المكتب أجهزة سطح المكتب الاسم الصحيح لـ%s؟ حذف %d رسالة؟ @@ -1408,10 +1408,10 @@ مُكتشف عبر الشبكة المحلية قطع اتصال سطح المكتب؟ إصدار تطبيق سطح المكتب %s غير متوافق مع هذا التطبيق. - توسيع + وسِّع هل تريد تكرار طلب الاتصال؟ خطأ في إعادة التفاوض بشأن التعمية - %1$s.]]> + %1$s.]]> خطأ لقد انضممت بالفعل إلى المجموعة عبر هذا الرابط. %s و%s @@ -1429,7 +1429,7 @@ (جديد)]]> فك ربط سطح المكتب؟ خيارات سطح المكتب المرتبطة - لا يمكن فك تشفير الفيديو. من فضلك، جرب مقطع فيديو مختلفًا أو اتصل بالمطورين. + لا يمكن فك ترميز الفيديو. من فضلك، جرّب مقطع فيديو مختلفًا أو اتصل بالمطوِّرين. %s متصل أسطح المكتب المرتبطة مجموعات التخفي @@ -1466,7 +1466,7 @@ تحقق من الرمز على الجوّال أدخل اسم الجهاز هذا… خطأ - لقد شاركت مسار ملف غير صالح. أبلغ عن المشكلة لمطوري التطبيق. + لقد شاركت مسار ملف غير صالح. أبلغ عن المشكلة لمطوِّري التطبيق. اسم غير صالح! ألصق عنوان سطح المكتب %1$s!]]> @@ -1483,13 +1483,13 @@ تحقق من الاتصال أعِد التحميل عشوائي - في انتظار اتصال الجوال: - للسماح لتطبيق الجوال بالاتصال بسطح المكتب، افتح هذا المنفذ في جدار الحماية لديك، إذا فعلته + في انتظار اتصال الجوّال: + للسماح لتطبيق الجوّال بالاتصال بسطح المكتب، افتح هذا المنفذ في جدار الحماية لديك، إذا فعّلته أنشئ ملف تعريف الدردشة عرض التحطم فتح منفذ في جدار الحماية - اقطع اتصال الجوالات - لا يوجد جوال متصل + اقطع اتصال الجوّالات + لا يوجد جوّال متصل خطأ في إظهار المحتوى خطأ في إظهار الرسالة انتهت المكالمة %1$s @@ -1526,30 +1526,26 @@ أظهر الأخطاء الداخلية خطأ فادح خطأ داخلي - يُرجى إبلاغ المطورين بذلك: -\n%s - يُرجى إبلاغ المطورين بذلك: -\n%s -\n -\nيوصى بإعادة تشغيل التطبيق. + يُرجى إبلاغ المطوِّرين بذلك: \n%s + يُرجى إبلاغ المطوِّرين بذلك: \n%s \n \nيوصى بإعادة تشغيل التطبيق. أعد تشغيل الدردشة - %s غير نشط]]> + %s غير نشط]]> أظهر مكالمات API البطيئة غير معروف حدّثت ملف التعريف - %s مفقود]]> - %s لديه إصدار غير مدعوم. يُرجى التأكد من استخدام نفس الإصدار على كلا الجهازين]]> - %s في حالة سيئة]]> + %s مفقود]]> + %s لديه إصدار غير مدعوم. يُرجى التأكد من استخدام نفس الإصدار على كلا الجهازين]]> + %s في حالة سيئة]]> اسم العرض غير صالح! اسم العرض هذا غير صالح. الرجاء اختيار اسم آخر. توقف الاتصال توقف الاتصال - %s بسبب: %s]]> + %s بسبب: %s]]> قُطع الاتصال بسبب: %s - %s]]> - %s]]> + %s]]> + %s]]> سطح المكتب غير نشط - %s مشغول]]> + %s مشغول]]> انتهت المهلة أثناء الاتصال بسطح المكتب قُطع اتصال سطح المكتب الاتصال بسطح المكتب في حالة سيئة @@ -1558,7 +1554,7 @@ يحتوي سطح المكتب على إصدار غير مدعوم. يُرجى التأكد من استخدام نفس الإصدار على كلا الجهازين العضو %1$s وظيفة بطيئة - خيارات المطور + خيارات المطوِّر تغيّر العضو %1$s إلى %2$s أزلت عنوان الاتصال أزلت صورة ملف التعريف @@ -1581,7 +1577,7 @@ حدث خطأ أثناء إنشاء الرسالة حدث خطأ أثناء حذف الملاحظات الخاصة ملاحظات خاصة - مسح الملاحظات الخاصة؟ + محو الملاحظات الخاصة؟ أُنشئ في: %s رسالة محفوظة إلغاء حظر العضو للجميع؟ @@ -1604,7 +1600,7 @@ مكالمة فيديو مكالمة صوتية أنهيّ المكالمة - متصفح الويب الافتراضي مطلوب للمكالمات. يُرجى تضبيط المتصفح الافتراضي في النظام، ومشاركة المزيد من المعلومات مع المطورين. + متصفح الويب الافتراضي مطلوب للمكالمات. يُرجى تضبيط المتصفح الافتراضي في النظام، ومشاركة المزيد من المعلومات مع المطوِّرين. حدث خطأ أثناء فتح المتصفح أرشف وأرفع يمكن للمُدراء حظر عضو للجميع. @@ -1648,7 +1644,7 @@ تحقق من عبارة المرور تأكد من أنك تتذكر عبارة مرور قاعدة البيانات لترحيلها. التحقق من عبارة مرور قاعدة البيانات - خطأ في عرض الإشعار، تواصل بالمطورين. + خطأ في عرض الإشعار، تواصل بالمطوِّرين. مكالمات صورة في صورة استخدم التطبيق أثناء المكالمة. رحّل إلى جهاز آخر عبر رمز QR. @@ -1819,8 +1815,7 @@ معلومات قائمة انتظار الرسائل احمِ عنوان IP الخاص بك من مُرحلات المُراسلة التي اختارتها جهات اتصالك. \nفعّل في إعدادات *الشبكة والخوادم*. سمات دردشة جديدة - حدث خطأ أثناء تهيئة WebView. حدّث نظامك إلى الإصدار الجديد. يُرجى التواصل بالمطورين. -\nError: %s + حدث خطأ أثناء تهيئة WebView. حدّث نظامك إلى الإصدار الجديد. يُرجى التواصل بالمطوِّرين. \nError: %s تحسين تسليم الرسائل مع انخفاض استخدام البطارية. مفتاح خاطئ أو عنوان مجموعة الملف غير معروف - على الأرجح حُذف الملف. @@ -1834,8 +1829,7 @@ حالة الرسالة: %s خطأ في النسخ استُخدم هذا الرابط مع جوّال آخر، يُرجى إنشاء رابط جديد على سطح المكتب. - يُرجى التحقق من اتصال الهاتف المحمول وسطح المكتب بنفس الشبكة المحلية، وأن جدار حماية سطح المكتب يسمح بالاتصال. -\nيُرجى مشاركة أي مشاكل أُخرى مع المطورين. + يُرجى التحقق من اتصال الهاتف المحمول وسطح المكتب بنفس الشبكة المحلية، وأن جدار حماية سطح المكتب يسمح بالاتصال. \nيُرجى مشاركة أي مشاكل أُخرى مع المطوِّرين. لا يمكن إرسال الرسالة تفضيلات الدردشة المحدّدة تحظر هذه الرسالة. التفاصيل @@ -1919,7 +1913,7 @@ رُفع القطع متصل الخوادم المتصلة - جارِ الاتصال + يتصل الاتصالات النشطة ملف التعريف الحالي أخطاء الحذف @@ -1988,7 +1982,7 @@ المكالمات ممنوعة! لا يمكن مكالمة أحد أعضاء المجموعة لا يمكن إرسال رسالة إلى عضو المجموعة - جارِ الاتصال بجهة الاتصال، يُرجى الانتظار أو التحقق لاحقًا! + يتصل بجهة الاتصال، يُرجى الانتظار أو التحقق لاحقًا! جهات الاتصال المؤرشفة ادعُ لا توجد جهات اتصال مُصفاة @@ -1998,7 +1992,7 @@ يُرجى الطلب من جهة اتصالك تفعيل المكالمات. حذف %d رسائل الأعضاء؟ سيتم وضع علامة على الرسائل للحذف. سيتمكن المُستلم/(المُستلمون) من الكشف عن هذه الرسائل. - حدد + حدّد سيتم حذف الرسائل لجميع الأعضاء. سيتم وضع علامة على الرسائل على أنها تحت الإشراف لجميع الأعضاء. الرسالة @@ -2211,7 +2205,7 @@ الإشعارات والبطارية فقط مالكي الدردشة يمكنهم تغيير التفضيلات. الخصوصية لعملائك. - الجوالات عن بُعد + الجوّالات عن بُعد ادعُ للدردشة مغادرة المجموعة؟ سيتم إزالة العضو من الدردشة - لا يمكن التراجع عن هذا! @@ -2352,10 +2346,10 @@ إلغاء حظر الأعضاء للجميع؟ حظر الأعضاء للجميع؟ سيتم عرض رسائل من هؤلاء الأعضاء! - لا يمكن قراءة عبارة المرور في Keystore، يُرجى إدخالها يدويًا. قد يكون هذا قد حدث بعد تحديث النظام غير متوافق مع التطبيق. إذا لم يكن الأمر كذلك، فيُرجى التواصل مع المطورين. + لا يمكن قراءة عبارة المرور في Keystore، يُرجى إدخالها يدويًا. قد يكون هذا قد حدث بعد تحديث النظام غير متوافق مع التطبيق. إذا لم يكن الأمر كذلك، فيُرجى التواصل مع المطوِّرين. سيتم إزالة الأعضاء من المجموعة - لا يمكن التراجع عن هذا! المشرفين - لا يمكن قراءة عبارة المرور في Keystore. قد يكون هذا قد حدث بعد تحديث النظام غير متوافق مع التطبيق. إذا لم يكن الأمر كذلك، فيُرجى التواصل مع المطورين. + لا يمكن قراءة عبارة المرور في Keystore. قد يكون هذا قد حدث بعد تحديث النظام غير متوافق مع التطبيق. إذا لم يكن الأمر كذلك، فيُرجى التواصل مع المطوِّرين. موافقة الانتظار ضبّط مُشغلي الخادم سياسة الخصوصية وشروط الاستخدام. @@ -2515,7 +2509,7 @@ افتح الرابط النظيف افتح الرابط الكامل أزل تتبع الروابط - رابط مُرحل SimpleX + عنوان مُرحل SimpleX خطأ في وضع علامة \"مقروءة\" البصمة في عنوان الخادم الوجهة لا تتطابق مع الشهادة: %1$s. البصمة في عنوان خادم التحويل لا تتطابق مع الشهادة: %1$s. @@ -2542,4 +2536,127 @@ فيديوهات رسائل صوتية إذا انضممت إلى قنوات أو أنشأتها، فستتوقف عن العمل نهائيًا. + %1$d/%2$d مُرحلات نشطة + %1$d/%2$d مُرحلات نشطة، %3$d فشلت + %1$d/%2$d مُرحلات متصلة + %1$d/%2$d مُرحلات متصلة، %3$d خطأ + %1$d مشترك + %1$d مشترك + وافقت + نشط + احظر المشترك للكل؟ + ألغِ + مُرحلات الدردشة + مُرحلات الدردشة + احذف القناة + احذف القناة؟ + حُذفت + حُذفت القناة + احذف المُرحل + إذاعة + إلغاء إنشاء القناة؟ + اختبر المُرحل لاسترداد اسمه.]]> + %1$s !]]> + قناة + قناة + قناة + اسم القناة بالكامل + رابط القناة + أعضاء القناة + اسم القناة + يُخزّن ملف تعريف القناة على أجهزة المشتركين وعلى مُرحلات الدردشة. + حُدِّث ملف تعريف القناة + ستُحذف القناة لجميع المشتركين - لا يمكن التراجع عن هذا الإجراء! + ستُحذف القناة من عِندك - لا يمكن التراجع عن هذا الإجراء! + ستبدأ القناة بالعمل مع %1$d من أصل %2$d من المُرحلات. أتود المتابعة؟ + مُرحل الدردشة + مُرحلات الدردشة + مُرحلات الدردشة توجّه الرسائل في القنوات التي تنشئها. + مُرحلات الدردشة توجّه الرسائل في القنوات في القناة. + تحقق من عنوان المُرحل وحاول مرة أخرى. + تحقق من اسم المُرحل وحاول مرة أخرى. + اضبط المُرحلات + اتصل + متصل + يتصل + أنشئ قناة عامة + أنشئ قناة عامة + أنشئ قناة عامة (تجريبي) + ينشئ قناة + %d أحداث القناة + فك ترميز الرابط + تم الإسقاط (%1$d محاولات) + حرّر ملف تعريف القناة + فعّل مُرحل دردشة واحد على الأقل لإنشاء قناة. + أدخل اسم المُرحل… + خطأ في إضافة المُرحل + خطأ في إنشاء القناة + خطأ في فتح القناة + خطأ: %s + خطأ في حفظ ملف تعريف القناة + فشل + فشل + احصل على الرابط + عنوان المُرحل غير صالح! + اسم المُرحل غير صالح! + مدعو + انضم للقناة + غادِر القناة + مغادرة القناة؟ + الرابط + رسالة خطأ + جديد + مُرحل دردشة جديد + لا مُرحلات دردشة + لا مُرحلات دردشة مفعّلة. + ليس كل المُرحلات متصلة + افتح قناة + افتح قناة جديدة + المالك + المالكون + عنوان المُرحل مسبق الضبط + اسم المُرحل مسبق الضبط + تابِع + مُرحل + مُرحل + عنوان المُرحل + عنوان المُرحل + فشل اتصال المُرحل + رابط المُرحل + فشل اختبار المُرحل + أزِل المشترك + إزالة المشترك؟ + احفظ وأرسل إشعار للمشتركين في القناة + احفظ ملف تعريف القناة + يتطلب الخادم تفويضًا للاتصال بالمُرحل، يُرجى التحقق من كلمة المرور. + تحذير من الخادم + شارك عنوان المُرحل + مشترك + المشتركون + يستخدم المشتركون رابط المُرحل للاتصال بالقناة.\nاُستخدم عنوان المُرحل لإعداد هذا المُرحل للقناة. + ستُزيل المشترك من القناة - لا يمكن التراجع عن هذا الإجراء! + انقر انضم للقناة + فشل الاختبار عند الخطوة %s. + اختبر المُرحل + أُزيل التطبيق هذه الرسالة بعد %1$d محاولات لاستلامها. + عنوان مُرحل الدردشة هذا لا يمكن استخدامه للاتصال. + إلغاء حظر المشترك للجميع؟ + ملف القناة التعريفي حُدِّث + استخدم للقنوات الجديدة + استخدم مُرحل + تحقق + عبر %1$s + تسجيل الصوت غير مدعوم على منصتك + انتظر + رد الانتظار + أنت + أنت مشترك + بإمكانك مشاركة رابط أو رمز QR - وسيتمكن أي شخص من الانضمام إلى القناة. + لقد اتصلت بالقناة عبر رابط المُرحل هذا. + قناتك + قناتك + سيتم مشاركة ملف تعريفك %1$s مع مُرحلات القناة والمشتركين.\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 a9b2045b97..ade88f7fc8 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml @@ -74,6 +74,7 @@ end-to-end encryption.]]> end-to-end encryption with perfect forward secrecy, repudiation and break-in recovery.]]> quantum resistant e2e encryption with perfect forward secrecy, repudiation and break-in recovery.]]> + not end-to-end encrypted. Chat relays can see these messages.]]> This chat is protected by end-to-end encryption. This chat is protected by quantum resistant end-to-end encryption. @@ -1376,6 +1377,7 @@ Open SimpleX Chat to accept call Enable calls from lock screen via Settings. Open + Open external link? e2e encrypted @@ -2335,6 +2337,35 @@ History is not sent to new members. Members can report messsages to moderators. Reporting messages is prohibited in this group. + Chat with admins + Allow members to chat with admins. + Prohibit chats with admins. + Members can chat with admins. + Chats with admins are prohibited. + Chats with admins in public channels have no E2E encryption - use only with trusted chat relays. + Enable chats with admins? + Enable + + + Subscriber reports + Allow sending direct messages to subscribers. + Prohibit sending direct messages to subscribers. + Send up to 100 last messages to new subscribers. + Do not send history to new subscribers. + Subscribers can send disappearing messages. + Subscribers can send direct messages. + Direct messages between subscribers are prohibited. + Subscribers can irreversibly delete sent messages. (24 hours) + Subscribers can add message reactions. + Subscribers can send voice messages. + Subscribers can send files and media. + Subscribers can send SimpleX links. + Subscribers can report messsages to moderators. + Up to 100 last messages are sent to new subscribers. + History is not sent to new subscribers. + Allow subscribers to chat with admins. + Subscribers can chat with admins. + Delete after %d sec %ds @@ -2371,6 +2402,7 @@ Chats with members No chats with members + Chats with members are disabled Delete chat Delete chat with member? 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 03a8bcfdc5..d708736821 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/bg/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/bg/strings.xml @@ -1038,7 +1038,7 @@ SimpleX Лого SimpleX Екип SMP сървъри - Сподели адреса с контактите\? + Сподели адреса с контактите? Сподели линк Сподели с контактите Спри споделянето 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 5c8f73bf93..a34a4ca7fc 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/ca/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/ca/strings.xml @@ -2508,4 +2508,4 @@ Suprimir missatges Els missatges de membre s\'eliminaran; això no es pot desfer! Eliminar membre i els seus missatges - + \ No newline at end of file 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 43afc3be04..c7697c35ba 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/cs/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/cs/strings.xml @@ -877,7 +877,7 @@ Předvolby skupiny Přímé zprávy Mazání všem - zapnuty + zapnuto povoleno vám vypnuty Mizící zprávy zakázány. @@ -930,7 +930,7 @@ moderované moderovaný %s Smazat zprávu člena\? - moderovaný + Moderovat Kontaktujte prosím správce skupiny. jste pozorovatel pozorovatel @@ -1168,7 +1168,7 @@ BARVY MOTIVU Přizpůsobit motiv Aktualizace profilu bude zaslána vašim kontaktům. - Sdílet adresu s kontakty\? + Sdílet adresu s kontakty? Přestat sdílet adresu\? Vytvořit adresu, aby se s vámi lidé mohli spojit. Uložit nastavení SimpleX adresy @@ -1543,7 +1543,7 @@ blokováno %s kontakt %1$s změnen na %2$s Vytvořeno v - Blok všem + Blokovat všem Blokovat člena všem? Chyba blokování člena všem Vylepšené doručovaní zpráv @@ -2054,7 +2054,7 @@ Žádné servery pro soukromé směrování chatů. Žádné servery pro příjem souborů. Žádné servery pro příjem zpráv. - Všechny chaty budou ze seznamu odebrány %s, a seznam bude smazán + Všechny chaty budou ze seznamu %s odebrány, a seznam bude smazán Pro sociální sítě Vzdálené telefony %s.]]> 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 c66d351601..251987f658 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml @@ -176,7 +176,7 @@ Sie sind zu der Gruppe eingeladen Beitreten als %s verbinde … - Zum Starten eines neuen Chats tippen + Tippen, um einen neuen Chat zu starten Chatten Sie mit den Entwicklern Sie haben keine Chats @@ -547,7 +547,7 @@ Privatsphäre App-Bildschirm schützen Bilder automatisch akzeptieren - Link-Vorschau senden + Linkvorschau senden App-Datensicherung MEINE DATEN @@ -1040,7 +1040,7 @@ Für die Anzeige das Passwort im Suchfeld eingeben Privates Profil erzeugen! Stummschalten - Zum Aktivieren des Profils tippen. + Tippen, um das Profil zu aktivieren. Stummschaltung aufheben Bei Inaktivität stummgeschaltet! Schützen Sie Ihre Chat-Profile mit einem Passwort! @@ -1191,20 +1191,20 @@ Sie werden Ihre damit verbundenen Kontakte nicht verlieren, wenn Sie diese Adresse später löschen. Design anpassen INTERFACE-FARBEN - Fügen Sie die Adresse Ihrem Profil hinzu, damit Ihre Kontakte sie mit anderen Personen teilen können. Es wird eine Profilaktualisierung an Ihre Kontakte gesendet. + Fügen Sie die Adresse Ihrem Profil hinzu, damit Ihre SimpleX-Kontakte sie mit anderen Personen teilen können. Es wird eine Profilaktualisierung an Ihre SimpleX-Kontakte gesendet. Alle Ihre Kontakte bleiben verbunden. Es wird eine Profilaktualisierung an Ihre Kontakte gesendet. Erstellen Sie eine Adresse, damit sich Personen mit Ihnen verbinden können. SimpleX-Adresse erstellen - Mit Kontakten teilen + Mit SimpleX-Kontakten teilen Ihre Kontakte bleiben weiterhin verbunden. Automatisch akzeptieren Geben Sie eine Begrüßungsmeldung ein … (optional) Freunde einladen Lassen Sie uns über SimpleX Chat schreiben - Profil-Aktualisierung wird an Ihre Kontakte gesendet. + Profil-Aktualisierung wird an Ihre SimpleX-Kontakte gesendet. SimpleX-Adress-Einstellungen speichern Einstellungen speichern\? - Die Adresse mit Kontakten teilen\? + Die Adresse mit SimpleX-Kontakten teilen? Teilen beenden Das Teilen der Adresse beenden\? Keine Adresse erstellt @@ -1607,7 +1607,7 @@ Kontakt hinzufügen Zum Scannen tippen Behalten - Zum Link einfügen tippen + Tippen, um den Link einzufügen Suchen oder SimpleX-Link einfügen Der Chat wurde gestoppt. Wenn diese Datenbank bereits auf einem anderen Gerät von Ihnen verwendet wurde, sollten Sie diese dorthin zurück übertragen, bevor Sie den Chat starten. Chat starten? @@ -1928,7 +1928,7 @@ Bitte überprüfen Sie, ob sich das Mobiltelefon und die Desktop-App im gleichen lokalen Netzwerk befinden, und die Desktop-Firewall die Verbindung erlaubt. \nBitte teilen Sie weitere mögliche Probleme den Entwicklern mit. Nachricht wurde nicht gesendet - Diese Nachricht ist wegen der gewählten Chat-Einstellungen nicht erlaubt. + Diese Nachricht ist wegen der gewählten Chat-Präferenzen nicht erlaubt. Bitte versuchen Sie es später erneut. Fehler beim privaten Routing Die Nachricht kann später zugestellt werden, wenn das Mitglied aktiv wird. @@ -2001,7 +2001,7 @@ Dateispeicherort öffnen andere Die Server-Adresse ist nicht mit den Netzwerkeinstellungen kompatibel: %1$s. - Link scannen / einfügen + Link einfügen / Scannen Alle Server neu verbinden Server neu verbinden? Alle Server neu verbinden? @@ -2307,7 +2307,7 @@ Schutz der Privatsphäre Ihrer Kunden. Zur Verbindung aufgefordert Bitte verkleinern Sie die Nachrichten-Größe oder entfernen Sie Medien und versenden Sie diese erneut. - Nur Chat-Eigentümer können die Präferenzen ändern. + Präferenzen können nur von Chat-Eigentümern geändert werden. Bitte verkleinern Sie die Nachrichten-Größe und versenden Sie diese erneut. Die Rolle wird auf %s geändert. Im Chat wird Jeder darüber informiert. Sie werden von diesem Chat keine Nachrichten mehr erhalten. Der Nachrichtenverlauf wird beibehalten. @@ -2455,7 +2455,7 @@ Verbindungs-Link wird nicht unterstützt Verkürzter Link Vollständiger Link - SimpleX-Kanal-Link + SimpleX-Kanallink Für diesen Link wird eine neuere App-Version benötigt. Bitte aktualisieren Sie die App oder bitten Sie Ihren Kontakt einen kompatiblen Link zu senden. Alle Server Aus @@ -2633,25 +2633,25 @@ Fehlgeschlagen Kanäle, welche Sie erstellt haben oder denen Sie beigetreten sind, werden dauerhaft deaktiviert. %1$d/%2$d Relais aktiv - %1$d/%2$d Relais aktiv, %3$d Fehlgeschlagen + %1$d/%2$d Relais aktiv, %3$d fehlgeschlagen %1$d/%2$d Relais verbunden %1$d/%2$d Relais verbunden, %3$d Fehler %1$d Abonnent %1$d Abonnenten Angenommen Aktiv - Abonnenten für alle blockieren? + Abonnent für alle blockieren? Broadcast Abbrechen Kanalerstellung abbrechen? - Relais testen, um dessen Namen zu ermitteln.]]> + Relais testen, um dessen Namen abzurufen.]]> %1$s!]]> Kanal Kanal Kanal - Kanal-Link + Kanallink Kanal-Mitglieder - Kanal-Name + Kanalname Der Kanal wird für alle Abonnenten gelöscht. Dies kann nicht rückgängig gemacht werden! Der Kanal wird für Sie gelöscht. Dies kann nicht rückgängig gemacht werden! Der Kanal wird mit %1$d von %2$d Relais gestartet. Fortfahren? @@ -2667,9 +2667,9 @@ Verbinden verbunden verbinden - Kanal erstellen - Kanal erstellen - Kanal erstellen (BETA) + Öffentlichen Kanal erstellen + Öffentlichen Kanal erstellen + Öffentlichen Kanal erstellen (BETA) Kanal wird erstellt Link dekodieren Kanal löschen @@ -2738,8 +2738,105 @@ Sie haben sich über diesen Relais‑Link mit dem Kanal verbunden. Ihr Kanal Ihr Kanal - Ihr Profil %1$s wird mit den Kanal‑Relais und -Abonnenten geteilt. + Ihr Profil %1$s wird mit den Kanal‑Relais und -Abonnenten geteilt.\nRelais können auf Kanalnachrichten zugreifen. Ihre Relais-Adresse Ihr Relais-Name Sie werden keine Nachrichten mehr aus diesem Kanal erhalten. Der Chatverlauf bleibt erhalten. + Vollständiger Name des Kanals: + Das Kanalprofil wird auf den Geräten der Abonnenten und auf den Chat‑Relais gespeichert. + Kanalprofil wurde aktualisiert + %d Kanalereignisse + Kanal gelöscht + Verworfen (%1$d Versuche) + Fehler: %s + Fehler beim Speichern des Kanalprofils + Übertragungsfehler + Speichern und Abonnenten des Kanals informieren + Kanalprofil speichern + Die App hat diese Nachricht nach %1$d Empfangsversuchen entfernt. + Kanalprofil aktualisiert + %1$d/%2$d Relais aktiv, %3$d Fehler + %1$d/%2$d Relais aktiv, %3$d entfernt + %1$d/%2$d Relais verbunden, %3$d fehlgeschlagen + %1$d/%2$d Relais verbunden, %3$d entfernt + %1$d Relais fehlgeschlagen + %1$d Relais nicht aktiv + %1$d Relais entfernt + Das Hinzufügen von Relais wird zu einem späteren Zeitpunkt unterstützt. + Alle Relais fehlgeschlagen + Alle Relais entfernt + Broadcast nicht möglich + Der Kanal hat keine aktiven Relais. Bitte später erneut versuchen. + Der Kanal ist vorübergehend nicht erreichbar + Inaktiv + Keine aktiven Relais + Vom Betreiber entfernt + Warte auf das Hinzufügen von Relais durch den Eigentümer des Kanals. + Geschäftliche Adresse + Kanallink + Kontaktadresse + Deaktivieren + Aktivieren + Linkvorschau aktivieren? + Fehler + Fehler beim Teilen des Kanals + (vom Eigentümer) + Gruppen-Link + Linksignatur erfolgreich verifiziert. + Netzwerk-Fehler + Einmal-Link + Relay‑Status: + Das Senden einer Link-Vorschau kann Ihre IP‑Adresse an die Website übermitteln. Sie können dies später in den Datenschutzeinstellungen ändern. + Kanal teilen… + Per Chat teilen + ⚠️ Signaturüberprüfung fehlgeschlagen: %s. + (signiert) + Zum Öffnen tippen + Die Verbindung hat das Limit für nicht zugestellte Nachrichten erreicht + Kanal-Präferenzen + Kanal-Präferenzen können nur von Kanal-Eigentümern geändert werden. + Ein Link für eine einzelne Person zum Verbinden. + Kanäle + Über einen Link oder QR-Code verbinden + Mit jemandem verbinden + Erstellen Sie Ihre öffentliche Adresse + Freunde einladen – jetzt noch einfacher 👋 + Damit Sie jeder erreichen kann + Jemanden privat einladen + Damit sich jemand mit Ihnen verbinden kann + Neuer Einmal-Link + Non‑Profit‑Governance + - Opt‑in zum Senden von Linkvorschauen.\n- Hyperlink‑Phishing verhindern.\n- Link‑Tracking entfernen. + Oder den QR‑Code persönlich oder per Videoanruf zeigen. + Oder diesen QR‑Code verwenden – ausgedruckt oder online. + Volle Kontrolle: Sie können Ihre eigenen Relais betreiben. + Privatsphäre: für Besitzer und Abonnenten. + Öffentliche Kanäle – freies Kommunizieren 🚀 + Zuverlässigkeit: mehrere Relais pro Kanal. + Sichere Web-Links + Sicherheit: Eigentümer besitzen die Kanalschlüssel. + Den Link über einen beliebigen Messenger versenden – es ist sicher. Bitte in SimpleX einfügen. + Mit jemandem sprechen + Für ein dauerhaftes SimpleX-Netzwerk. + 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 + + + Abonnenten-Meldungen + Das Senden von Direktnachrichten an Abonnenten erlauben. + Das Senden von Direktnachrichten an Abonnenten nicht erlauben. + Bis zu 100 der letzten Nachrichten an neue Abonnenten senden. + Den Nachrichtenverlauf nicht an neue Abonnenten senden. + Abonnenten können verschwindende Nachrichten versenden. + Abonnenten können Direktnachrichten versenden. + Direktnachrichten zwischen Abonnenten sind nicht erlaubt. + Abonnenten können gesendete Nachrichten unwiederbringlich löschen. (24 Stunden) + Abonnenten können eine Reaktion auf Nachrichten geben. + Abonnenten können Sprachnachrichten versenden. + Abonnenten können Dateien und Medien versenden. + Abonnenten können SimpleX-Links versenden. + Abonnenten können Nachrichten an Moderatoren melden. + Bis zu 100 der letzten Nachrichten werden an neue Abonnenten gesendet. + Der Nachrichtenverlauf wird nicht an neue Abonnenten gesendet. 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 c233d8eabc..4fc83c8a84 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/es/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/es/strings.xml @@ -358,7 +358,7 @@ Los miembros pueden enviar mensajes de voz. en modo incógnito mediante dirección de contacto ¡Error al crear perfil! - No se pudo cargar el chat + Fallo en la carga del chat Fallo en la carga de chats Enlace completo Error al eliminar contacto @@ -385,7 +385,7 @@ Colgar Archivos y multimedia ¡Grupo no encontrado! - perfil de grupo actualizado + perfil del grupo actualizado Error al crear enlace de grupo Error al eliminar enlace de grupo activado para el contacto @@ -819,7 +819,7 @@ Cambiar servidor de recepción Totalmente descentralizado. Visible sólo para los miembros. Para conectarte mediante enlace - ¡Prueba no superada! + ¡Prueba del servidor no superada! Algunos servidores no han superado la prueba: Usar servidor Para conexiones nuevas @@ -880,7 +880,7 @@ Has sido invitado a un grupo. Únete para conectar con sus miembros. has expulsado a %1$s Tú: %1$s - Puedes compartir el enlace o el código QR para que cualquiera pueda unirse al grupo. Si más tarde lo eliminas, no afectará a los miembros del grupo. + Puedes compartir el enlace o código QR. Cualquiera podrá unirse al grupo. Si más tarde lo eliminas, no afectará a los miembros del grupo. Cuando compartes un perfil incógnito con alguien, este perfil también se usará para los grupos a los que te inviten. Mis preferencias Con mensaje de bienvenida opcional. @@ -1145,7 +1145,7 @@ ¿Dejar de compartir la dirección\? COLORES DE LA INTERFAZ Puedes crearla más tarde - ¿Compartir la dirección con los contactos\? + ¿Compartir la dirección con los contactos? Compartir con contactos Título Puedes compartir esta dirección con tus contactos para que puedan conectar con %s. @@ -1430,7 +1430,7 @@ Conectar con ordenador Desconectar ¿Bloquear miembro? - %d evento(s) de grupo + %d evento(s) del grupo ¡Nombre no válido! Conectado a móvil Dirección ordenador incorrecta @@ -2223,7 +2223,7 @@ Sólo los propietarios del chat pueden cambiar las preferencias. El miembro será eliminado del chat. ¡No puede deshacerse! El rol cambiará a %s. Se notificará en el chat. - Dejarás de recibir mensajes del chat. El historial del chat se conserva. + Dejarás de recibir mensajes del chat. El historial del chat se conservará. Cómo ayuda a la privacidad Cuando está habilitado más de un operador, ninguno dispone de los metadatos para conocer quién se comunica con quién. Tu perfil de chat será enviado a los miembros de chat @@ -2530,7 +2530,7 @@ Abrir enlace limpio Limpiar enlaces de seguimiento Abrir enlace completo - Enlace de servidor SimpleX + Dirección de servidor SimpleX Error al marcar como leído La huella en la dirección del servidor no coincide con el certificado: %1$s. La huella en la dirección del servidor de destino no coincide con el certificado: %1$s. @@ -2554,4 +2554,148 @@ Buscar mensajes de voz Vídeos Mensajes de voz + %1$d/%2$d servidores activos + %1$d/%2$d servidores activos, %3$d han fallado + %1$d/%2$d servidores conectados + %1$d/%2$d servidores conectados, %3$d errores + aceptado + activo + Test del servidor para recibir su nombre.]]> + El perfil del canal se almacena en los dispositivos de los suscriptores y en los servidores de chat. + El canal comenzará a funcionar con %1$d de %2$d servidores. ¿Continuar? + Servidores de chat + Servidores de chat + Servidores de chat + Servidores de chat + Los servidores de chat reenvían los mensajes en los canales que has creado. + Los servidores de chat reenvían los mensajes a los suscriptores del canal. + Comprueba la dirección del servidor y prueba de nuevo. + Comprueba el nombre del servidor y prueba de nuevo. + Configurar servidores + Conectar + conectado + conectando + Decodificar enlace + eliminado + Eliminar servidor + Activa al menos un servidor de chat para crear un canal. + Introduce el nombre del servidor… + Error al añadir el servidor + La conexión con el servidor ha fallado + ¡El test del servidor ha fallado! + Prueba no superada en el paso %s. + %1$d suscriptor + %1$d suscriptores + ¿Bloquear al suscriptor para todos? + Emisión + Cancelar + ¿Cancelar la creación del canal? + %1$s!]]> + canal + Canal + Canal + Título completo: + Enlace del canal + Miembros canal + Título del canal + perfil del canal actualizado + El canal será eliminado para todos los suscriptores. ¡No puede deshacerse! + El canal será eliminado para tí. ¡No puede deshacerse! + CONEXIÓN FALLIDA + Crear canal público + Crear canal público + Crear canal público (BETA) + Creando canal + %d eventos del canal + Eliminar canal + ¿Eliminar canal? + canal eliminado + caído (%1$d intentos) + Editar perfil del canal + Error al crear el canal + Error al abrir el canal + error:%s + Error al guardar el perfil del canal + fallo + fallo + Recibir el enlace + Si te has unido o has creado canales, dejarán de funcionar permanentemente. + ¡Dirección de servidor no válido! + ¡Nombre de servidor no válido! + Invitado + Unirme al canal + Salir del canal + ¿Salir del canal? + Enlace + Mensaje de error + nuevo + Nuevo servidor de chat + Sin servidores de chat + Ningún servidor de chat activado. + Hay servidores no conectados + Abrir canal + Abrir canal nuevo + PROPIETARIO + Propietarios + Direcciones predefinidas + Nombres predefinidos + Continuar + servidor + SERVIDOR + Dirección servidor + Dirección del servidor + Enlace servidor + Eliminar suscriptor + ¿Eliminar suscriptor? + Guardar y notificar suscriptores + Guardar perfil del canal + El servidor requiere autorización para conectar con el servidor, comprueba la contraseña. + Alerta del servidor + Compartir dirección del servidor + SUSCRIPTOR + Suscriptores + Los suscriptores usan el enlace del servidor para conectarse a los canales.\nLa dirección del servidor se usó para establecer el servidor para el canal. + El suscriptor será eliminado del canal. ¡No puede deshacerse! + Pulsa Unirme al canal + Test servidor + La app ha eliminado el mensaje tras %1$d intentos de recibirlo. + Esto es una dirección de servidor, no puede usarse para conectar. + ¿Desbloquear al suscriptor para todos? + perfil del canal actualizado + Usar para canales nuevos + Usar servidor + Verificar + mediante %1$s + La grabación de voz no es compatible con tu plataforma + Espera + Espera respuesta + tu + eres suscriptor + Puedes compartir un enlace o código QR. Cualquiera podrá unirse al canal. + Te conectaste al canal mediante este enlace de servidor. + Tu canal + Tu canal + El perfil %1$s será compartido con los servidores de canal y los suscriptores.\nLos servidores tienen acceso a los mensajes del canal. + Tu dirección de servidor + Tu nombre del servidor + Dejarás de recibir mensajes de este canal. El historial del chat se conservará. + fallo + + + Informes de suscriptores + Se permiten mensajes directos entre suscriptores. + No se permiten mensajes directos entre suscriptores. + Se envían hasta 100 mensajes más recientes a los suscriptores nuevos. + No se envía el historial a los suscriptores nuevos. + Los suscriptores del canal pueden enviar mensajes temporales. + Los suscriptores del canal pueden enviar mensajes directos. + Los mensajes directos entre suscriptores del canal no están permitidos. + Los suscriptores del canal pueden eliminar mensajes de forma irreversible. (24 horas) + Los suscriptores pueden añadir reacciones a los mensajes. + Los suscriptores del canal pueden enviar mensajes de voz. + Los suscriptores del canal pueden enviar archivos y multimedia. + Los suscriptores del canal pueden enviar enlaces SimpleX. + Los suscriptores pueden informar de mensajes a los moderadores. + Hasta 100 últimos mensajes son enviados a los suscriptores nuevos. + El historial no se envía a suscriptores nuevos. 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 c6b094ab56..5ea012dcf9 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/fi/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/fi/strings.xml @@ -822,7 +822,7 @@ Arvioi sovellus Skannaa palvelimen QR-koodi Profiilipäivitys lähetetään kontakteillesi. - Jaa osoite kontakteille\? + Jaa osoite kontakteille? Lopeta jakaminen Lopeta osoitteen jakaminen\? Tallenna automaattisen hyväksynnän asetukset 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 42ba84ef8c..677bdeb9b5 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/fr/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/fr/strings.xml @@ -1105,7 +1105,7 @@ Vous pouvez accepter ou refuser les demandes de contacts. COULEURS DE L\'INTERFACE Vos contacts resteront connectés. - Partager l\'adresse avec vos contacts \? + Partager l\'adresse avec vos contacts ? Partager avec vos contacts Entrez un message de bienvenue… (facultatif) Cesser le partage 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 310a52715a..c706dc8e8a 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/hu/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/hu/strings.xml @@ -29,7 +29,7 @@ Elfogadja a kapcsolódási kérést? Elfogadás Elfogadás - Cím hozzáadása a profilhoz, hogy a partnerei megoszthassák másokkal. A profilfrissítés el lesz küldve partnerei számára. + Cím hozzáadása a profilhoz, hogy a SimpleX partnerei megoszthassák másokkal. A profilfrissítés el lesz küldve a SimpleX partnerei számára. További kiemelőszín híváshiba Csoporttagok letiltása @@ -91,7 +91,7 @@ Nem lehet meghívni a partnert! hibás az üzenet azonosítója Partneri kapcsolatkérések automatikus elfogadása - Megjegyzés: NEM fogja tudni helyreállítani, vagy módosítani a jelmondatot abban az esetben, ha elveszíti.]]> + Megjegyzés: NEM fogja tudni helyreállítani vagy módosítani a jelmondatot abban az esetben, ha elveszíti.]]> hívás… További másodlagos szín Hozzáadás egy másik eszközhöz @@ -543,7 +543,7 @@ Kiszolgáló megadása kézzel A fájl akkor érkezik meg, amikor a küldője elérhető lesz, várjon, vagy ellenőrizze később! Hiba történt a csoporthivatkozás létrehozásakor - A galériából + Galéria Engedélyezés (csoport egyéni beállításainak megtartása) Hiba történt a partner törlésekor A tagok véglegesen törölhetik az elküldött üzeneteiket. (24 óra) @@ -674,7 +674,7 @@ Számítógépek A markdown használata Csevegési profil létrehozása - Védett a kéretlen tartalommal szemben + Védett a kéretlen tartalmakkal szemben Hordozható eszközök leválasztása Különböző nevek, profilképek és átvitelelkülönítés. Elutasítás esetén a kérés küldője NEM kap értesítést. @@ -944,7 +944,7 @@ Biztonsági kód beolvasása a partnere alkalmazásából. Lépjen kapcsolatba a csoport adminisztrátorával. Videó bekapcsolva - Profilnév: + Profil neve: Beillesztés Köszönjük, hogy telepítette a SimpleX Chatet! Csillagozás a GitHubon @@ -979,7 +979,7 @@ %s (jelenlegi) Saját SMP-kiszolgáló Véletlen - Megosztás a partnerekkel + Megosztás a SimpleX partnerekkel Ön Nincsenek csevegései Küldés @@ -995,7 +995,7 @@ Elküldve: %s Jelenlegi profil használata Ez az eszköz - Megosztja a címet a partnereivel? + Megosztja a címet a SimpleX partnereivel? Profiljelszó Téma Eltávolítja a jelmondatot a beállításokból? @@ -1038,7 +1038,7 @@ Kiszolgálók mentése Üdvözlőüzenet mp - A profilfrissítés el lesz küldve a partnerei számára. + A profilfrissítés el lesz küldve a SimpleX partnerei számára. Egyszerűsített inkognitómód Menti az üdvözlőüzenetet? Új csevegési profil létrehozásához indítsa újra az alkalmazást. @@ -1090,7 +1090,7 @@ Menti a beállításokat? Jelkód Ismeretlen hiba - Saját SMP-kiszolgálójának címe + Saját SMP-kiszolgáló címe Csevegési konzol megnyitása Eltávolítás Adatbázis-jelmondat beállítása @@ -1510,7 +1510,7 @@ Vagy QR-kód beolvasása Érvénytelen QR-kód Megtartás - Keresés vagy SimpleX-hivatkozás beillesztése + Keressen vagy adjon meg egy SimpleX-hivatkozást Belső hibák megjelenítése Kritikus hiba Belső hiba @@ -1812,7 +1812,7 @@ Fájlkiszolgáló-hiba: %1$s Fájl állapota Fájl állapota: %s - Másolási hiba + Hiba másolása Ezt a hivatkozást egy másik hordozható eszközön már használták, hozzon létre egy új hivatkozást a számítógépén. Ellenőrizze, hogy a hordozható eszköz és a számítógép ugyanahhoz a helyi hálózathoz csatlakozik-e, valamint a számítógép tűzfalában engedélyezve van-e a kapcsolat.\nMinden további problémát osszon meg a fejlesztőkkel. Nem lehet üzenetet küldeni @@ -1823,7 +1823,7 @@ Továbbított üzenet Az üzenet később is kézbesíthető, ha a tag aktívvá válik. Még nincs közvetlen kapcsolat, az üzenetet az adminisztrátor továbbítja. - Hivatkozás beolvasása / beillesztése + Hivatkozás megadása vagy QR-kód beolvasása Konfigurált SMP-kiszolgálók Egyéb SMP-kiszolgálók Egyéb XFTP-kiszolgálók @@ -2097,10 +2097,10 @@ Cím nyilvános megosztása SimpleX-cím megosztása a közösségi médiában. Egyszer használható meghívó megosztása egy baráttal - csak egyetlen partnerrel használható – személyesen vagy bármilyen üzenetváltó-alkalmazáson keresztül megosztható.]]> + csak egyetlen partnerrel használható – személyesen vagy bármilyen üzenetváltó alkalmazáson keresztül megosztható.]]> Beállíthatja a partner nevét, hogy emlékezzen arra, hogy kivel osztotta meg a hivatkozást. Kapcsolatbiztonság - A SimpleX-cím és az egyszer használható meghívó biztonságosan megosztható bármilyen üzenetváltó-alkalmazáson keresztül. + A SimpleX-cím és az egyszer használható meghívó biztonságosan megosztható bármilyen üzenetváltó alkalmazáson keresztül. A hivatkozás cseréje elleni védelem érdekében összehasonlíthatja a biztonsági kódokat a partnerével. A közösségi médiához Vagy a privát megosztáshoz @@ -2498,7 +2498,7 @@ Tiszta hivatkozás megnyitása Teljes hivatkozás megnyitása Nyomonkövetési paraméterek eltávolítása a hivatkozásokból - SimpleX-átjátszócím + SimpleX-átjátszó címe Hiba a csevegés olvasottként való megjelölésekor A célkiszolgáló címében szereplő ujjlenyomat nem egyezik a tanúsítvánnyal: %1$s. A továbbító kiszolgáló címében szereplő ujjlenyomat nem egyezik a tanúsítvánnyal: %1$s. @@ -2537,9 +2537,9 @@ Kapcsolódás kapcsolódott kapcsolódás - Csatorna létrehozása - Csatorna létrehozása - Csatorna létrehozása (béta) + Nyilvános csatorna létrehozása + Nyilvános csatorna létrehozása + Nyilvános csatorna létrehozása (BÉTA) Csatorna létrehozása törölve sikertelen @@ -2597,9 +2597,9 @@ Hivatkozás dekódolása A teszt a(z) %s. lépésnél sikertelen volt. A kiszolgáló hitelesítést igényel az átjátszóhoz való kapcsolódáshoz, ellenőrizze a jelszavát. - Érvénytelen átjátszónév! + Érvénytelen az átjátszó neve! Ellenőrizze az átjátszó nevét, és próbálja újra. - Érvénytelen átjátszócím! + Érvénytelen az átjátszó címe! Ellenőrizze az átjátszó címét, és próbálja újra. Hiba az átjátszó hozzáadásakor Csevegési átjátszók @@ -2613,26 +2613,123 @@ %1$d/%2$d átjátszó kapcsolódva ÁTJÁTSZÓ Átjátszóhivatkozás - Átjátszócím + Átjátszó címe a következőn keresztül: %1$s Átjátszó címének megosztása - A feliratkozók az átjátszó hivatkozását használják a csatornához való kapcsolódáshoz.\nAz átjátszócím ennek az átjátszónak a beállítására szolgált a csatornához. + A feliratkozók az átjátszó hivatkozását használják a csatornához való kapcsolódáshoz.\nAz átjátszó címe ennek az átjátszónak a beállítására szolgált a csatornához. Ön ezen az átjátszóhivatkozáson keresztül kapcsolódott a csatornához. Feliratkozó eltávolítása Az összes feliratkozó számára letiltja a feliratkozót? Hiba a csatorna létrehozásakor Visszavonja a csatorna létrehozását? Engedélyezzen legalább egy csevegési átjátszót a csatorna létrehozásához. - A saját profilja (%1$s) meg lesz osztva a csatorna átjátszóival és feliratkozóival. + A(z) %1$s nevű profilja meg lesz osztva a csatorna átjátszóival és feliratkozóival.\nAz átjátszók hozzáférhetnek a csatornaüzenetekhez. Átjátszók konfigurálása Nem sikerült kapcsolódni az átjátszóhoz Nem minden átjátszó kapcsolódott Folytatás A csatorna %2$d átjátszóból %1$d használatával kezd el működni. Folytatja? - Átjátszócím + Átjátszó címe Ez egy csevegési átjátszó címe, nem használható kapcsolódásra. %1$s nevű csatornához!]]> Hiba a csatorna megnyitásakor Az összes feliratkozó számára feloldja a feliratkozó letiltását? Átjátszó tesztelése a nevének lekéréséhez.]]> + Csatorna teljes neve: + A csatornaprofil a feliratkozók eszközén és a csevegési átjátszókon van tárolva. + csatornaprofil frissítve + %d csatornaesemény + törölt csatorna + hiba: %s + Hiba a csatornaprofil mentésekor + Üzenethiba + Mentés és a csatorna feliratkozóinak értesítése + Csatornaprofil mentése + frissített csatornaprofil + Az alkalmazás %1$d sikertelen letöltési kísérlet után eltávolította ezt az üzenetet. + eltávolítva (%1$d kísérlet) + A csatorna ideiglenesen nem érhető el + A csatornának nincsenek aktív átjátszói. Próbáljon meg később csatlakozni. + nem lehet közvetíteni + az üzemeltető eltávolította + inaktív + Az összes átjátszó el lett távolítva + Nem sikerült kapcsolódni egyetlen átjátszóhoz sem + Nincsenek aktív átjátszók + %1$d átjátszó eltávolítva + %1$d átjátszóhoz nem sikerült kapcsolódni + %1$d átjátszó inaktív + %1$d/%2$d átjátszó aktív, %3$d eltávolítva + %1$d/%2$d átjátszó aktív, %3$d hiba + %1$d/%2$d átjátszó kapcsolódott, %3$d átjátszóhoz nem sikerült kapcsolódni + %1$d/%2$d átjátszó kapcsolódott, %3$d eltávolítva + Az átjátszók hozzáadása később lesz támogatott. + Várakozás a csatorna tulajdonosára az átjátszók hozzáadásához. + Üzleti cím + Csatornahivatkozás + Kapcsolattartási cím + Hiba a csatorna megosztásakor + (a tulajdonostól) + Csoporthivatkozás + Hivatkozás aláírása ellenőrizve. + Egyszer használható meghívó + Csatorna megosztása… + Megosztás egy csevegésen keresztül + ⚠️ Nem sikerült ellenőrizni az aláírást: %s. + (aláírva) + Koppintson ide a megnyitáshoz + Letiltás + Engedélyezés + Engedélyezi a hivatkozáselőnézetet? + Hiba + Hálózati hiba + A hivatkozáselőnézet küldése felfedheti az Ön IP-címét a weboldal számára. Ezt később módosíthatja az adatvédelmi beállításokban. + A kapcsolat elérte a kézbesítetlen üzenetek korlátját + Átjátszóeredmények: + Csatornabeállítások + Csak a csatorna tulajdonosai módosíthatják a csatornabeállításokat. + Saját nyilvános cím + Új egyszer használható meghívó + Csatornák + Saját nyilvános cím létrehozása + Kapcsolódás hivatkozáson vagy QR-kódon keresztül + Egy hivatkozás, ami egyetlen partnerrel való kapcsolat létrehozására szolgál + Kapcsolatba lépés valakivel + Bárki számára, aki el szeretné érni Önt + Partner meghívása privátban + Hagyja, hogy valaki kapcsolatba lépjen Önnel + Vagy mutassa meg a QR-kódot személyesen vagy videóhíváson keresztül. + Vagy használja ezt a QR-kódot – nyomtassa ki vagy mutassa meg online. + Küldje el a hivatkozást bármilyen üzenetváltó alkalmazáson keresztül – ez egy biztonságos módszer – és kérje meg a partnerét, hogy illessze be a SimpleX alkalmazásba. + Beszélgessen valakivel + Használja ezt a címet a közösségi oldalakon használt profiljaiban, weboldalakon vagy az e-mail aláírásában. + Könnyebben hívhatja meg a barátait 👋 + Nonprofit irányítás + - hivatkozások előnézetének küldése.\n- hiperhivatkozásokon keresztüli adathalászat megakadályozása.\n- hivatkozások nyomonkövetési paramétereinek eltávolítása. + Tulajdonjog: saját átjátszókat üzemeltethet. + Adatvédelem: tulajdonosok és előfizetők számára. + Nyilvános csatornák – mondja el szabadon a véleményét 🚀 + Megbízhatóság: több átjátszó is használható csatornánként. + Biztonságos webhivatkozások + Biztonság: a csatornák kulcsait a tulajdonosok őrzik. + 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. + + + Feliratkozók jelentései + A közvetlen üzenetek küldése a feliratkozók között engedélyezve van. + A közvetlen üzenetek küldése a feliratkozók között le van tiltva. + Legfeljebb az utolsó 100 üzenet elküldése az új feliratkozók számára. + Az előzmények ne legyenek elküldve az új feliratkozók számára. + A feliratkozók küldhetnek eltűnő üzeneteket. + A feliratkozók küldhetnek egymásnak közvetlen üzeneteket. + A feliratkozók közötti közvetlen üzenetek le vannak tiltva. + A feliratkozók véglegesen törölhetik az elküldött üzeneteiket. (24 óra) + A feliratkozók reakciókat adhatnak hozzá az üzenetekhez. + A feliratkozók küldhetnek hangüzeneteket. + A feliratkozók küldhetnek fájlokat és médiatartalmakat. + A feliratkozók küldhetnek SimpleX-hivatkozásokat. + A feliratkozók jelenthetik az üzeneteket a moderátorok felé. + Legfeljebb az utolsó 100 üzenet lesz elküldve az új feliratkozók számára. + Az előzmények nem lesznek elküldve az új feliratkozók számára. 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 b6b372da7c..d65dc3b128 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/it/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/it/strings.xml @@ -1105,11 +1105,11 @@ Indirizzo SimpleX COLORI DELL\'INTERFACCIA I tuoi contatti resteranno connessi. - Aggiungi l\'indirizzo al tuo profilo, in modo che i tuoi contatti possano condividerlo con altre persone. L\'aggiornamento del profilo verrà inviato ai tuoi contatti. + Aggiungi l\'indirizzo al tuo profilo, in modo che i tuoi contatti di SimpleX possano condividerlo con altre persone. L\'aggiornamento del profilo verrà inviato ai tuoi contatti di SimpleX. Crea un indirizzo per consentire alle persone di connettersi con te. Crea indirizzo SimpleX - Condividi con i contatti - Condividere l\'indirizzo con i contatti\? + Condividi con i contatti di SimpleX + Condividere l\'indirizzo con i contatti di SimpleX? Smetti di condividere Inserisci il messaggio di benvenuto… (facoltativo) Ciao! @@ -1144,7 +1144,7 @@ Tema scuro Se non potete incontrarvi di persona, mostra il codice QR in una videochiamata o condividi il link. Parliamo in SimpleX Chat - L\'aggiornamento del profilo verrà inviato ai tuoi contatti. + L\'aggiornamento del profilo verrà inviato ai tuoi contatti di SimpleX. Guida per l\'utente.]]> Menu e avvisi Smettere di condividere l\'indirizzo\? @@ -1943,7 +1943,7 @@ Riconnetti tutti i server L\'indirizzo del server non è compatibile con le impostazioni di rete: %1$s. File - Scansiona / Incolla link + Incolla link / Scansiona Dimensione carattere Totale inviato Messaggio inoltrato @@ -2583,21 +2583,21 @@ Il canale verrà eliminato per tutti gli iscritti, non è reversibile! Il canale verrà eliminato per te, non è reversibile! Il canale sarà operativo con %1$d di %2$d relay. Procedere? - Relay della chat - Relay della chat - Relay della chat - Relay della chat - I relay della chat inoltrano i messaggi nei canali che crei. - I relay della chat inoltrano i messaggi agli iscritti del canale. + Relay di chat + Relay di chat + Relay di chat + Relay di chat + I relay di chat inoltrano i messaggi nei canali che crei. + I relay di chat inoltrano i messaggi agli iscritti del canale. Controlla l\'indirizzo del relay e riprova. Controlla il nome del relay e riprova. Configura i relay Connetti connesso in connessione - Crea canale - Crea canale - Crea canale (BETA) + Crea canale pubblico + Crea canale pubblico + Crea canale pubblico (BETA) Creazione canale Decodifica il link Elimina canale @@ -2605,7 +2605,7 @@ eliminato Elimina relay Modifica profilo canale - Attiva almeno un relay della chat per creare un canale. + Attiva almeno un relay di chat per creare un canale. Inserisci il nome del relay… Errore di aggiunta del relay Errore di creazione del canale @@ -2661,7 +2661,7 @@ Ti sei connesso/a al canale attraverso questo link del relay. Il tuo canale Il tuo canale - Il tuo profilo %1$s verrà condiviso con i relay del canale e gli iscritti. + Il tuo profilo %1$s verrà condiviso con i relay del canale e gli iscritti.\nI relay hanno accesso ai messaggi del canale. L\'indirizzo del tuo relay Il nome del tuo relay Smetterai di ricevere messaggi da questo canale. La cronologia della chat sarà preservata. @@ -2671,4 +2671,101 @@ Tocca Iscriviti al canale Puoi condividere un link o un codice QR, chiunque sarà in grado di iscriversi al canale. Trasmetti + Nome completo del canale: + Il profilo del canale è memorizzato sui dispositivi degli iscritti e sui relay di chat. + profilo del canale aggiornato + %d eventi del canale + canale eliminato + scartato (%1$d tentativi) + errore: %s + Errore di salvataggio del profilo del canale + Errore del messaggio + Salva e avvisa gli iscritti del canale + Salva il profilo del canale + L\'app ha rimosso questo messaggio dopo %1$d tentativi di riceverlo. + profilo del canale aggiornato + %1$d/%2$d relay attivi, %3$d errori + %1$d/%2$d relay attivi, %3$d rimossi + %1$d/%2$d relay connessi, %3$d falliti + %1$d/%2$d relay connessi, %3$d rimossi + %1$d relay falliti + %1$d relay non attivi + %1$d relay rimossi + L\'aggiunta di relay verrà supportata prossimamente. + Tutti i relay falliti + Tutti i relay rimossi + impossibile trasmettere + Il canale non ha relay attivi. Prova a iscriverti più tardi. + Canale non disponibile temporaneamente + inattivo + Nessun relay attivo + rimosso da un operatore + In attesa che il proprietario del canale aggiunga dei relay. + Indirizzo di lavoro + Link del canale + Indirizzo di contatto + Errore nella condivisione del canale + (dal proprietario) + Link del gruppo + Firma del link verificata. + Condividi canale… + Condividi via chat + ⚠️ Verifica della firma fallita: %s. + (firmato) + Tocca per aprire + Link una tantum + Disattiva + Attiva + Attivare le anteprime dei link? + Errore + Errore di rete + Risultati relay: + L\'invio di un\'anteprima del link può rivelare il tuo indirizzo IP al sito. Puoi modificarlo nelle impostazioni di Privacy più tardi. + La connessione ha raggiunto il limite di messaggi non consegnati + Preferenze del canale + Solo i proprietari del canale possono modificarne le preferenze. + Un link per una persona da connettere + Canali + Connetti via link o codice QR + Connettiti con qualcuno + Crea il tuo indirizzo pubblico + Per chiunque debba raggiungerti + Invita qualcuno in modo privato + Lascia che qualcuno si connetta a te + Nuovo link una tantum + O mostra il QR di persona o via videochiamata. + O usa questo QR: stampalo o mostralo online. + Invia il link tramite qualsiasi messenger, è sicuro. Chiedi di incollarlo in SimpleX. + Parla con qualcuno + Usa questo indirizzo nel tuo profilo di social media, sito web o firma email. + Il tuo indirizzo pubblico + È più facile invitare i tuoi amici 👋 + Organizzazione non a scopo di lucro + Per la sostenibilità della rete di SimpleX. + - scegli se inviare anteprime dei link.\n- previeni il phishing dei collegamenti ipertestuali.\n- rimuovi il tracciamento dei link. + Proprietà: puoi gestire i tuoi relay personali. + Privacy: per i proprietari e gli iscritti. + Canali pubblici - parla liberamente 🚀 + Affidabilità: relay multipli per canale. + Link web sicuri + Sicurezza: solo i proprietari hanno le chiavi del canale. + Abbiamo semplificato la connessione per i nuovi utenti. + + + Segnalazioni degli iscritti + Permetti l\'invio di messaggi diretti agli iscritti. + Proibisci l\'invio di messaggi diretti agli iscritti. + Invia fino a 100 ultimi messaggi ai nuovi iscritti. + Non inviare la cronologia ai nuovi iscritti. + Gli iscritti al canale possono inviare messaggi a tempo. + Gli iscritti al canale possono inviare messaggi diretti. + I messaggi diretti tra gli iscritti sono vietati. + Gli iscritti al canale possono eliminare irreversibilmente i messaggi inviati. (24 ore) + Gli iscritti al canale possono aggiungere reazioni ai messaggi. + Gli iscritti al canale possono inviare messaggi vocali. + Gli iscritti al canale possono inviare file e contenuti multimediali. + Gli iscritti al canale possono inviare link di Simplex. + Gli iscritti possono segnalare messaggi ai moderatori. + Vengono inviati ai nuovi iscritti fino a 100 ultimi messaggi. + La cronologia non viene inviata ai nuovi 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 fb83b83735..1ef02fd128 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/iw/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/iw/strings.xml @@ -945,7 +945,7 @@ הצג קוד QR נעילת SimpleX כוכב ב־GitHub - לשתף כתובת עם אנשי קשר\? + לשתף כתובת עם אנשי קשר? עצור שיתוף הגדרת קוד גישה נעילת SimpleX 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 4c5b279ba7..a5c9f98421 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/ja/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/ja/strings.xml @@ -1097,7 +1097,7 @@ システム認証の代わりに設定します。 プロフィールを非表示にできます! リレー サーバーは IP アドレスを保護しますが、通話時間は監視されます。 - アドレスを連絡先と共有しますか\? + アドレスを連絡先と共有しますか? 保留中の通話 データ移行の確認が正しくない %s を提供しました 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 1e71459df9..aa2e2e46c9 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/lt/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/lt/strings.xml @@ -527,8 +527,7 @@ Nutraukti adreso keitimą Automatiškai priimti kontaktų užklausas Jį įrašius visi duomenys bus pašalinti. - Kiekvienam kontaktui ir grupės nariui bus naudojamas atskiras TCP prisijungimas (ir SOCKS prisijungimo duomenys). -\nTurėkite omenyje: jei turite daug prisijungimų, akumuliatoriaus ir interneto duomenų sąnaudos gali būti žymiai didesnės ir, kartais, prisijungimai gali patirti nesėkmę. + Kiekvienam kontaktui ir grupės nariui bus naudojamas atskiras TCP prisijungimas (ir SOCKS prisijungimo duomenys). \nTurėkite omenyje: jei turite daug prisijungimų, akumuliatoriaus ir interneto duomenų sąnaudos gali būti žymiai didesnės ir, kartais, prisijungimai gali patirti nesėkmę.]]> %1$s nori su jumis susisiekti per Yra įjungtas akumuliatoriaus naudojimo optimizavimas, išjungiantis foninę tarnybą ir periodines užklausas apie naujas žinutes. Nustatymuose galite įjungti ją iš naujo. Visada įjungta 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 2843b2cf8d..0f192b284c 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/lv/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/lv/strings.xml @@ -79,9 +79,9 @@ Nederīgs ziņojuma formāts Tiešraide Moderēts apraksts - E2ee Info E2ee - E2ee Info No Pq - E2ee Info Pq + + + Savienojuma lokālais displeja vārds Displeja vārds Savienojums izveidots Apraksts Jūs kopīgojāt vienreizējo saiti inkognito režīmā @@ -266,7 +266,7 @@ Pievienot ziņu Savienoties Vai sūtīt kontakta pieprasījumu? - Sūtot kontakta pieprasījumu, jūs atklāsiet savu SimpleX lietotājvārdu šim kontaktam. Vai vēlaties turpināt? + Sūtīt pieprasījumu bez ziņas Sūtīt pieprasījumu Nevar nosūtīt ziņu @@ -306,7 +306,7 @@ Galerijas attēla poga Galerijas video poga Paldies, ka instalējāt SimpleX - Jūs varat sazināties ar SimpleX čata dibinātāju + Lai sāktu jaunu čatu, palīdzības virsraksts Čata palīdzības pieskāriena poga Saglabāt neizmantoto uzaicinājuma jautājumu @@ -830,7 +830,7 @@ Pārbaudīt savienojumu Pārbaudīt kodu mobilajā ierīcē Šīs ierīces nosaukums - Šīs ierīces versija + Savienots mobilais tālrunis Savienots ar mobilo tālruni Ievadiet šīs ierīces nosaukumu @@ -843,17 +843,17 @@ Atvienot darbvirsmu Atvienot attālo resursdatoru Atvienot attālos resursdatorus - Attālais resursdators tika atvienots (paziņojums) + Attālais resursdators tika atvienots (virsraksts) Attālā vadība tika atvienota (virsraksts) - Attālais resursdators atvienots no + Attālā vadība atvienota ar iemeslu Attālās vadības savienojums apturēts (apraksts) Remote Ctrl savienojums ir pārtraukts Identity Desc Kopēšanas kļūda Vai atvienoties no darbvirsmas? Vienlaicīgi var darboties tikai viena ierīce - Atveriet mobilajā ierīcē un skenējiet QR kodu + Gaida, kad mobilā ierīce pieslēgsies Nepareiza darbvirsmas adrese Nesaderīga darbvirsmas versija @@ -867,7 +867,7 @@ Savienots ar darbvirsmu Savienota darbvirsma Pārbaudiet kodu ar darbvirsmu - Jauna darbvirsma + Saistītās darbvirsmas Datoru Ierīces Saistīto Datoru Iestatījumi @@ -885,10 +885,10 @@ Nejaušs Ports Atvērt Portu Ugunsmūrī Atvērt Portu Ugunsmūrī Apraksts - Attālā Saimniekdatora Kļūda - Trūkst - Attālā Saimniekdatora Kļūda - Nav Aktīvs - Attālā Saimniekdatora Kļūda - Aizņemts - Attālā Saimniekdatora Kļūda - Noildze + + + + Migrate To Device Imports Neizdevās Migrate To Device Atkārtot Importu Migrate To Device Ievadiet Paroli @@ -941,9 +941,9 @@ Tūlītējas paziņojumi Pakalpojumu paziņojumi Pakalpojumu paziņojumi atslēgti - Lai saglabātu privātumu, Simplex izmanto fona pakalpojumu, nevis uznirstošos paziņojumus, tas patērē mazāk datora akumulatora. - To var atslēgt caur iestatījumiem, paziņojumi joprojām tiek rādīti. - Izslēgt akumulatora optimizāciju + + + Izslēdzot pakalpojumu un periodiskos paziņojumus Periodiskie paziņojumi Periodiskie paziņojumi atslēgti @@ -952,15 +952,15 @@ Izslēgt sistēmas ierobežojumu Atslēgt paziņojumus Sistēmas ierobežots fons - Brīdinājums par sistēmas ierobežotu fonu + Sistēmas ierobežots fons zvanā Sistēmas ierobežots fons zvanā - Brīdinājums par sistēmas ierobežotu fonu zvanā + Ievadiet paroli Ievadiet paroli Datu bāzes inicializācijas kļūda Neizdevās inicializēt datu bāzi. - Xiaomi ignorēt akumulatora optimizāciju + Simplex pakalpojumu paziņojums Simplex pakalpojumu paziņojuma teksts Zvana pakalpojumu paziņojums audio zvanam @@ -1240,12 +1240,12 @@ Kamera nav pieejama Atļauja noraidīta Augstāk minētais, tad prievārds turpinājums - Pievienot kontaktu, lai izveidotu saiti vai savienotu, izmantojot saiti - Izveidot grupu, lai izveidotu jaunu grupu + + Lai savienotu, izmantojot saiti Ja esat saņēmis simplex ielūguma saiti, varat to atvērt pārlūkā - Datorā nolasīt QR kodu no lietotnes, izmantojot QR koda nolasīšanu - Mobilajā ierīcē noklikšķiniet uz atvērt mobilajā lietotnē, tad noklikšķiniet uz savienot lietotnē + + Pieņemt savienojuma pieprasījumu? Ja izvēlēsieties noraidīt, sūtītājs netiks informēts Pieņemt kontaktu @@ -1314,9 +1314,9 @@ Jūs tiksiet savienots, kad grupas saimnieka ierīce būs tiešsaistē Jūs tiksiet savienots, kad jūsu savienojuma pieprasījums tiks pieņemts Jūs tiksiet savienots, kad jūsu kontaktu ierīce būs tiešsaistē - Ja jūs nevarat tikties klātienē, rādiet QR videozvanā vai caur citu kanālu + Jūsu čata profils tiks nosūtīts jūsu kontaktam - Ja jūs nevarat tikties klātienē, skenējiet QR videozvanā vai lūdziet ielūguma saiti + Kopīgot ielūguma saiti Ielīmējiet saiti, ko saņēmāt, lai savienotos ar savu kontaktu Uzzināt vairāk @@ -1330,19 +1330,19 @@ Jūs varat kopīgot savu adresi Jūs nezaudēsiet savus kontaktus, ja izdzēsīsiet adresi Kopīgot vienreizēju saiti ar draugu - Vienreizēju saiti var izmantot tikai ar vienu kontaktu + Jūs varat iestatīt savienojuma nosaukumu, lai atcerētos Savienojuma drošība Simplex adrese un vienreizējās saites ir drošas kopīgošanai Lai pasargātu no jūsu saites aizvietošanas, salīdziniet kodus Jūs varat pieņemt vai noraidīt savienojumu - Lasiet vairāk lietotāja rokasgrāmatā ar saiti + Adrese vai vienreizēja saite Savienoties caur saiti Savienoties Ielīmēt Šī virkne nav savienojuma saite - Jūs varat arī savienoties, noklikšķinot uz saites + Jauna saruna Jauns Pievienot kontaktu cilni @@ -1373,13 +1373,13 @@ Tīkla sesijas režīms sesija Tīkla sesijas režīms serveris Tīkla sesijas režīms entitāte - Tīkla sesijas režīms lietotājs. + Tīkla sesijas režīms sesija. Tīkla sesijas režīms serveris. - Tīkla sesijas režīms entitāte. + Atjaunināt tīkla sesijas režīmu? - Atspējot sīpolu viesus, ja nav atbalsta - Socks proxy iestatījumu ierobežojumi + + Tīkla smp proxy režīms privātā maršrutēšana Tīkla smp proxy režīms vienmēr Tīkla smp proxy režīms nezināms @@ -1569,19 +1569,19 @@ 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 - Visas ziņas un faili ir e2e šifrēti - Lasiet vairāk GitHub krātuvē. + + Izmantot čatu Ievada paziņojumu režīms Ievada paziņojumu režīma apakšvirsraksts Ievada paziņojumu režīms izslēgts Ievada paziņojumu režīms periodisks Ievada paziņojumu režīms pakalpojums - Ievada paziņojumu režīms izslēgts + Ievada paziņojumu režīms izslēgts, īss apraksts - Ievada paziņojumu režīms periodisks + Ievada paziņojumu režīms periodisks apraksts īsi - Ievada paziņojumu režīms pakalpojums + Ievada paziņojumu režīms pakalpojuma apraksts īsi Ievada paziņojumu režīms akumulators Iestatīt datu bāzes paroli @@ -1752,7 +1752,7 @@ Atslēgu glabātuve tiek droši glabāta Iestatījumi tiek glabāti parastā tekstā Šifrēts ar nejaušu frāzi - Nav iespējams atgūt frāzi + Atslēgu glabātuve ļauj saņemt ntfs Frāze tiks saglabāta iestatījumos Jums katru reizi jāievada frāze @@ -1991,8 +1991,8 @@ Operatora nosacījumi pieņemti Operatora nosacījumi pieņemti aktivizētiem operatoriem Jūsu serveri - Operatoru nosacījumi pieņemti - Operatoru nosacījumi tiks pieņemti + + Operators Operatora serveri Operators @@ -2002,17 +2002,17 @@ Operatora izmantošanas slēdzis Izmantot operatora x serverus Operatora nosacījumi neizdevās ielādēt - Operatora nosacījumi pieņemti dažiem - Operatora tie paši nosacījumi tiks piemēroti - Operatora tie paši nosacījumi tiks piemēroti operatoriem - Operatora nosacījumi tiks piemēroti - Operatora nosacījumi tiks pieņemti dažiem - Operatoru nosacījumi arī tiks piemēroti + + + + + + Skatīt nosacījumus Pieņemt nosacījumus Operatora lietošanas nosacījumi Operatora atjaunotie nosacījumi - Operatora, lai izmantotu, pieņemiet nosacījumus + Operatora izmantošana ziņām Operatora izmantošana ziņu saņemšanai Operatora izmantošana ziņu privātai maršrutēšanai @@ -2327,9 +2327,9 @@ Atsauces Atsauces uz jums sarunās. Ziņojumi - Attālinātā hosta kļūda: slikts stāvoklis - Attālinātā hosta kļūda: slikta versija - Attālinātā hosta kļūda: atslēgts + + + Attālinātā kontrole: neaktīva Attālinātā kontrole: slikts stāvoklis Attālinātā kontrole: aizņemta @@ -2341,22 +2341,22 @@ Šī funkcija ir izstrādē. Savienojiet plānu, lai savienotos ar sevi Šis ir jūsu personīgais vienreizējais saite - Jūs jau savienojaties ar %1$s + %1$s]]> Jūs jau savienojaties Jūs jau savienojaties, izmantojot šo vienreizējo saiti Šis ir jūsu personīgais simplex adrese Atkārtot savienojuma pieprasījumu Jūs jau esat pieprasījis savienojumu, izmantojot šo adresi Pievienojieties savai grupai - Šis ir jūsu saite grupai %1$s + %1$s]]> Atkārtot pievienošanās pieprasījumu Grupa jau pastāv Čats jau pastāv - Jūs jau pievienojaties grupai %1$s + %1$s]]> Jūs jau pievienojaties grupai Jūs jau pievienojaties grupai, izmantojot šo saiti - Jūs jau esat grupā %1$s - Jūs jau esat savienots ar %1$s + %1$s]]> + %1$s]]> Savienojiet, izmantojot saiti Aģenta kritiska kļūda Notikusi kritiska kļūda aģentā. @@ -2401,19 +2401,19 @@ Migrēt no ierīces, pabeigt migrāciju Migrēt no ierīces, vai dzēst arhīvu? Migrēt no ierīces, augšupielādētais arhīvs tiks dzēsts - Migrēt no ierīces, izvēlieties migrēt no citas ierīces + Migrēt no ierīces, vai kopīgot šo faila saiti Migrēt no ierīces, dzēst datu bāzi no ierīces Migrēt no ierīces, sarunas uzsākšana vairākās ierīcēs nav atbalstīta Migrēt no ierīces, uzsākt sarunu Migrēt no ierīces, migrācija pabeigta - Migrēt no ierīces, nedrīkstat uzsākt datu bāzi divās ierīcēs - Migrēt no ierīces, izmantošana divās ierīcēs pārtrauc šifrēšanu + + Migrēt no ierīces, pārbaudīt datu bāzes paroli Migrēt no ierīces, pārbaudīt paroli Migrēt no ierīces, apstipriniet, ka atceraties paroli Migrēt no ierīces, pārbaudiet savienojumu un mēģiniet vēlreiz - Migrēt no ierīces, arhīvs tiks dzēsts + Kļūda, migrējot no ierīces, pārbaudot paroli Tīkla veids: nav tīkla savienojuma Tīkla veids: mobilais 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 655b1cedbd..4ab2b10904 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml @@ -1111,7 +1111,7 @@ Delen met contacten Uw contacten blijven verbonden. Profiel update wordt naar uw contacten verzonden. - Adres delen met contacten\? + Adres delen met contacten? Stop met delen Stop met het delen van adres\? Nodig vrienden uit 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 281a734ed3..cc8b369386 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/pl/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/pl/strings.xml @@ -1115,7 +1115,7 @@ Dowiedz się więcej Przestać udostępniać adres\? Automatycznie akceptuj - Udostępnić adres kontaktom\? + Udostępnić adres kontaktom? Wpisz wiadomość powitalną… (opcjonalne) Aktualizacja profilu zostanie wysłana do Twoich kontaktów. Zapisać ustawienia\? 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 c0bbe4d6bb..133f65edb2 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 @@ -87,8 +87,7 @@ Aceitar solicitações de contato automaticamente Aparência O serviço em segundo plano está sempre em execução - as notificações serão exibidas assim que as mensagens estiverem disponíveis. - Uma conexão TCP separada (e credencial SOCKS) será usada para cada contato e membro do grupo. -\nAtenção: se você tiver muitas conexões, o consumo de bateria e tráfego pode ser substancialmente maior e algumas conexões podem falhar. + para cada contato e membro do grupo. \nAtenção: se você tiver muitas conexões, o consumo de bateria e tráfego pode ser substancialmente maior e algumas conexões podem falhar.]]> Bom para bateria. O aplicativo procura por mensagens a cada 10 minutos. Você pode perder chamadas ou mensagens urgentes.]]> chamda encerrada %1$s Converse com os desenvolvedores @@ -1150,7 +1149,7 @@ Salvar configurações de aceitação automática Abrindo banco de dados… Alterar perfis de conversa - Compartilhar endereço com os contatos\? + Compartilhar endereço com os contatos? Seus contatos continuarão conectados. Todos os dados do aplicativo serão excluídos. A senha do aplicativo é substituída por uma senha de auto-destruição. 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 2f19492237..11ca93be3b 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/ro/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/ro/strings.xml @@ -525,8 +525,7 @@ Negru Blocați membrul pentru toți? Atât tu, cât și contactul tău puteți șterge definitiv mesajele trimise. (24 de ore) - Folosește mai multă baterie! -\nServiciul în fundal rulează mereu – notificările sunt afișate imediat ce mesajele sunt disponibile. + Folosește mai multă baterie! \nServiciul în fundal rulează mereu – notificările sunt afișate imediat ce mesajele sunt disponibile.]]> Nu se poate trimite mesajul Șterge Confirmați fișiere de la servere necunoscute. @@ -2498,4 +2497,4 @@ Link de releu SimpleX Grup Eroare la marcarea conversației cu membrul ca fiind citită - + \ No newline at end of file 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 5445c57055..067174ba0d 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml @@ -67,7 +67,7 @@ Ошибка в ссылке контакта Пожалуйста, проверьте, что Вы использовали правильную ссылку, или попросите Ваш контакт отправить Вам новую. Ошибка соединения (AUTH) - Возможно, Ваш контакт удалил ссылку, или она уже была использована. Если это не так, то это может быть ошибкой - пожалуйста, сообщите нам об этом.\nЧтобы установить соединение, попросите Ваш контакт создать ещё одну ссылку и проверьте Ваше соединение с сетью. + Возможно, Ваш контакт удалил ссылку, или она уже была использована. Если это не так, то это может быть ошибкой — пожалуйста, сообщите нам об этом.\nЧтобы установить соединение, попросите Ваш контакт создать ещё одну ссылку и проверьте Ваше соединение с сетью. Ошибка при принятии запроса на соединение Отправитель мог удалить запрос на соединение. Ошибка при удалении контакта @@ -88,7 +88,7 @@ Мгновенные уведомления! Мгновенные уведомления выключены! SimpleX выполняется в фоне вместо уведомлений через сервер.]]> - Он может быть выключен через Настройки – Вы продолжите получать уведомления о сообщениях пока приложение запущено.]]> + Он может быть выключен через Настройки — Вы продолжите получать уведомления о сообщениях пока приложение запущено.]]> Разрешите это в следующем окне, чтобы получать уведомления мгновенно.]]> Оптимизация батареи включена, поэтому сервис уведомлений выключен. Вы можете снова включить его через Настройки. Периодические уведомления @@ -157,7 +157,7 @@ Спрятать Разрешить Удалить сообщение? - Сообщение будет удалено – это действие нельзя отменить! + Сообщение будет удалено — это действие нельзя отменить! Сообщение будет помечено на удаление. Получатель(и) сможет(смогут) посмотреть это сообщение. Удалить для меня Для всех @@ -218,7 +218,7 @@ Уведомления Удалить контакт? - Контакт и все сообщения будут удалены - это действие нельзя отменить! + Контакт и все сообщения будут удалены — это действие нельзя отменить! Удалить контакт Имя контакта… Соединение с сервером установлено @@ -278,7 +278,7 @@ Отклонить Очистить чат? - Все сообщения будут удалены - это действие нельзя отменить! Сообщения будут удалены только для Вас. + Все сообщения будут удалены — это действие нельзя отменить! Сообщения будут удалены только для Вас. Очистить Очистить чат Очистить @@ -392,7 +392,7 @@ Использовать SOCKS-прокси? Соединяться с серверами через SOCKS-прокси через порт %d? Прокси должен быть запущен до включения этой опции. Использовать прямое соединение с Интернет? - Если Вы подтвердите, серверы смогут видеть Ваш IP-адрес, а провайдер - с какими серверами Вы соединяетесь. + Если Вы подтвердите, серверы смогут видеть Ваш IP-адрес, а провайдер — с какими серверами Вы соединяетесь. Использовать .onion хосты Когда возможно Нет @@ -540,16 +540,13 @@ ошибка ID сообщения повторное сообщение Пропущенные сообщения - Это может произойти, когда: -\n1. Клиент отправителя удалил неотправленные сообщения через 2 дня, или сервер – через 30 дней. -\n2. Расшифровка сообщения была невозможна, когда Вы или Ваш контакт использовали старую копию базы данных. -\n3. Соединение компроментировано. + Это может произойти, когда: \n1. Клиент отправителя удалил неотправленные сообщения через 2 дня, или сервер — через 30 дней. \n2. Расшифровка сообщения была невозможна, когда Вы или Ваш контакт использовали старую копию базы данных. \n3. Соединение компроментировано. Конфиденциальность Конфиденциальность Защитить экран приложения Автоприём изображений - Отправлять картинки ссылок + Отправлять превью ссылок Резервная копия данных ВЫ @@ -630,10 +627,10 @@ Сменить пароль Пожалуйста, введите правильный пароль. База данных НЕ зашифрована. Установите пароль, чтобы защитить Ваши данные. - Android Keystore используется для безопасного хранения пароля - это позволяет стабильно получать уведомления в фоновом режиме. + Android Keystore используется для безопасного хранения пароля — это позволяет стабильно получать уведомления в фоновом режиме. База данных зашифрована случайным паролем, Вы можете его поменять. Внимание: Вы не сможете восстановить или поменять пароль, если потеряете его.]]> - Пароль базы данных будет безопасно сохранён в Android Keystore после запуска чата или изменения пароля - это позволит стабильно получать уведомления. + Пароль базы данных будет безопасно сохранён в Android Keystore после запуска чата или изменения пароля — это позволит стабильно получать уведомления. Пароль не сохранён на устройстве — Вы будете должны ввести его при каждом запуске чата. Зашифровать базу данных? Сменить пароль базы данных? @@ -757,8 +754,8 @@ Вы: %1$s Удалить группу Удалить группу? - Группа будет удалена для всех членов - это действие нельзя отменить! - Группа будет удалена для Вас - это действие нельзя отменить! + Группа будет удалена для всех членов — это действие нельзя отменить! + Группа будет удалена для Вас — это действие нельзя отменить! Выйти из группы Редактировать профиль группы Ссылка группы @@ -777,7 +774,7 @@ Удалить члена группы Отправить сообщение - Член группы будет удалён - это действие нельзя отменить. + Член группы будет удалён — это действие нельзя отменить. Удалить ЧЛЕН ГРУППЫ Роль @@ -801,7 +798,7 @@ Переключить адрес получения Создать скрытую группу - Группа полностью децентрализована – она видна только членам. + Группа полностью децентрализована — она видна только членам. Введите имя группы: Полное имя: Ваш профиль чата будет отправлен членам группы @@ -887,7 +884,7 @@ Когда приложение запущено Периодически Мгновенно - Больше расход батареи! Приложение постоянно запущено в фоне - уведомления будут показаны сразу же.]]> + Больше расход батареи! Приложение постоянно запущено в фоне — уведомления будут показаны сразу же.]]> Меньше расход батареи. Приложение проверяет сообщения каждые 10 минут. Вы можете пропустить звонки и срочные сообщения.]]> Как это влияет на потребление энергии LIVE @@ -930,7 +927,7 @@ %dд %d нед. %d дней - Чтобы подтвердить безопасность end-to-end шифрования с Вашим контактом сравните (или сканируйте) код на ваших устройствах. + Чтобы подтвердить безопасность сквозного шифрования с Вашим контактом сравните (или сканируйте) код на ваших устройствах. %s подтверждён %s не подтверждён Код безопасности @@ -982,7 +979,7 @@ Сообщения Серверы для новых соединений Вашего текущего профиля чата Профили - Все чаты и сообщения будут удалены - это нельзя отменить! + Все чаты и сообщения будут удалены — это нельзя отменить! Сборка приложения: %s Версия приложения: v%s для каждого контакта и члена группы. \nОбратите внимание: если у Вас много контактов, потребление батареи и трафика может быть значительно выше, и некоторые соединения могут не работать.]]> @@ -998,14 +995,14 @@ У Вас уже есть профиль с таким именем. Пожалуйста, выберите другое имя. Ошибка выбора профиля! По профилю чата или по соединению (БЕТА) - Благодаря пользователям – добавьте переводы через Weblate! + Благодаря пользователям — добавьте переводы через Weblate! Разные имена, аватары и транспортные сессии. Итальянский интерфейс Черновик сообщения Много профилей чата Сохранить последний черновик, вместе с вложениями. Защищённые имена файлов - Благодаря пользователям – добавьте переводы через Weblate! + Благодаря пользователям — добавьте переводы через Weblate! Чтобы защитить Ваш часовой пояс, файлы картинок и голосовых сообщений используют UTC. Французский интерфейс Дополнительные улучшения скоро! @@ -1058,9 +1055,9 @@ Сохранить приветственное сообщение\? Установите приветственное сообщение для новых членов группы. Нажмите на профиль, чтобы переключиться на него. - Благодаря пользователям - добавьте переводы через Weblate! + Благодаря пользователям — добавьте переводы через Weblate! Вы всё равно получите звонки и уведомления в профилях без звука, когда они активные. - Вы можете скрыть или отключить уведомления профиля - нажмите и удерживайте профиль, чтобы открыть меню. + Вы можете скрыть или отключить уведомления профиля — нажмите и удерживайте профиль, чтобы открыть меню. Изображение будет принято когда Ваш контакт его загрузит. Файл будет принят когда Ваш контакт загрузит его. Обновление базы данных @@ -1167,13 +1164,13 @@ Быстрые и не нужно ждать, когда отправитель онлайн! Польский интерфейс Установите код вместо системной аутентификации. - Благодаря пользователям – добавьте переводы через Weblate! + Благодаря пользователям — добавьте переводы через Weblate! Видео и файлы до 1гб Код доступа в приложение Файл будет удалён с серверов. Создание файла %d минут(ы) - Пожалуйста, запомните или сохраните его - восстановить потерянный код доступа невозможно! + Пожалуйста, запомните или сохраните его — восстановить потерянный код доступа невозможно! Отозвать файл Остановить приём файла\? Вы можете включить Блокировку SimpleX через Настройки. @@ -1231,14 +1228,14 @@ Запретить реакции на сообщения. секунд ЦВЕТА ИНТЕРФЕЙСА - Поделиться адресом с контактами\? + Поделиться адресом с контактами? Обновлённый профиль будет отправлен Вашим контактам. Об адресе SimpleX Узнать больше Если Вы не можете встретиться лично, покажите QR-код во время видеозвонка или поделитесь ссылкой. Чтобы соединиться с Вами, Ваш контакт может отсканировать QR-код или использовать ссылку в приложении. Вы не потеряете контакты, если позже удалите Ваш адрес. - Вы можете поделиться своим адресом в виде ссылки или QR-кода - любой может соединиться с Вами. + Вы можете поделиться своим адресом в виде ссылки или QR-кода — любой может соединиться с Вами. Руководстве пользователя.]]> Ваши контакты сохранятся. Настроить тему @@ -1249,7 +1246,7 @@ Поделиться с контактами Прекратить делиться адресом\? Автоприём - Введите приветственное сообщение... (по желанию) + Введите приветственное сообщение… (по желанию) Сохранить настройки\? Прекратить делиться Продолжить @@ -1293,7 +1290,7 @@ минут месяцев Выбрать - Благодаря пользователям – добавьте переводы через Weblate! + Благодаря пользователям — добавьте переводы через Weblate! недель 1 минута 30 секунд @@ -1435,7 +1432,7 @@ Расход батареи приложением / Без ограничений в настройках приложения.]]> База данных будет зашифрована, и пароль сохранён в настройках. Шифруйте сохранённые файлы и медиа - Обратите внимание: соединение с серверами файлов и сообщений устанавливаются через SOCKS-прокси. Звонки и картинки ссылок используют прямое соединение.]]> + Обратите внимание: соединение с серверами файлов и сообщений устанавливаются через SOCKS-прокси. Звонки и превью ссылок используют прямое соединение.]]> Шифровать локальные файлы Приложение для компьютера! 6 новых языков интерфейса @@ -1451,7 +1448,7 @@ Установить пароль базы данных Установить пароль базы данных Открыть директорию базы данных - Арабский, болгарский, финский, иврит, тайский и украинский - благодаря пользователям и Weblate. + Арабский, болгарский, финский, иврит, тайский и украинский — благодаря пользователям и Weblate. Создайте новый профиль в приложении для компьютера. 💻 Пароль будет сохранён в настройках как простой текст после того, как вы его измените или перезапустите приложение. Установите режим Инкогнито при соединении. @@ -1604,7 +1601,7 @@ Создать группу: создать новую группу.]]> Не отправлять историю новым членам группы. Отправить до 100 последних сообщений новым членам группы. - Все сообщения будут удалены - это нельзя отменить! + Все сообщения будут удалены — это нельзя отменить! Камера недоступна Код доступа в приложение Добавить контакт: создать новую ссылку-приглашение или подключиться через полученную ссылку.]]> @@ -1695,13 +1692,13 @@ Ошибка при блокировании члена группы для всех Разблокировать члена группы для всех? Вы заблокировали %s - end-to-end шифрованием с прямой секретностью (PFS), правдоподобным отрицанием и восстановлением от взлома.]]> - Чат защищён end-to-end шифрованием. - Чат защищён квантово-устойчивым end-to-end шифрованием. + сквозным шифрованием с прямой секретностью (PFS), правдоподобным отрицанием и восстановлением от взлома.]]> + Чат защищён сквозным шифрованием. + Чат защищён квантово-устойчивым сквозным шифрованием. Открыть экран миграции Миграция с другого устройства Установить пароль - стандартное end-to-end шифрование + стандартное сквозное шифрование Приветственное сообщение слишком длинное Сообщение слишком большое Повторить загрузку @@ -1764,7 +1761,7 @@ Обратите внимание: использование одной и той же базы данных на двух устройствах нарушит расшифровку сообщений от ваших контактов, как свойство защиты соединений.]]> Внимание: архив будет удален.]]> Подтвердите настройки сети - квантово-устойчивым end-to-end шифрованием с идеальной прямой секретностью (PFS), правдоподобным отрицанием и восстановлением от взлома.]]> + квантово-устойчивым сквозным шифрованием с идеальной прямой секретностью (PFS), правдоподобным отрицанием и восстановлением от взлома.]]> Мигрировать сюда Мигрировать на другое устройство Мигрируйте на другое устройство через QR-код. @@ -1844,8 +1841,8 @@ Улучшенная доставка сообщений Уменьшенный расход батареи. Версия сервера несовместима с настройками сети. - Неверный ключ или неизвестное соединение - скорее всего, это соединение удалено. - Превышено количество сообщений - предыдущие сообщения не доставлены. + Неверный ключ или неизвестное соединение — скорее всего, это соединение удалено. + Превышено количество сообщений — предыдущие сообщения не доставлены. Ошибка сервера получателя: %1$s Ошибка: %1$s Пересылающий сервер: %1$s @@ -1853,7 +1850,7 @@ Пересылающий сервер: %1$s \nОшибка: %2$s Предупреждение доставки сообщения - Ошибка сети - сообщение не было отправлено после многократных попыток. + Ошибка сети — сообщение не было отправлено после многократных попыток. Адрес сервера несовместим с настройками сети. информация сервера об очереди: %1$s \n @@ -1945,7 +1942,7 @@ Пересылающий сервер %1$s не смог подключиться к серверу назначения %2$s. Попробуйте позже. Версия пересылающего сервера несовместима с настройками сети: %1$s. Версия сервера назначения %1$s несовместима с пересылающим сервером %2$s. - Неверный ключ или неизвестный адрес блока файла - скорее всего, файл удален. + Неверный ключ или неизвестный адрес блока файла — скорее всего, файл удален. Выбранные настройки чата запрещают это сообщение. Ошибка файла Сканировать QR-код/ Вставить ссылку @@ -1966,7 +1963,7 @@ Приём сообщений В ожидании Загружено - Статистика серверов будет сброшена - это нельзя отменить! + Статистика серверов будет сброшена — это нельзя отменить! Всего отправлено Переподключить SMP-сервер @@ -2109,7 +2106,7 @@ Состояние соединения и серверов. Удаляйте до 20 сообщений за раз. Загрузка обновления, не закрывайте приложение. - Файл не найден - скорее всего, файл был удален или отменен. + Файл не найден — скорее всего, файл был удален или отменен. Адрес пересылающего сервера несовместим с настройками сети: %1$s. написать Сообщение @@ -2157,7 +2154,7 @@ Проверьте правильность ссылки SimpleX. Неверная ссылка БАЗА ДАННЫХ - Ошибка инициализации WebView. Убедитесь, что у вас установлен WebView и его поддерживаемая архитектура – arm64.\nОшибка: %s + Ошибка инициализации WebView. Убедитесь, что у вас установлен WebView и его поддерживаемая архитектура — arm64.\nОшибка: %s Звук отключен Сообщения будут удалены — это нельзя отменить! Ошибка переключения профиля @@ -2252,7 +2249,7 @@ Настройки адреса Добавьте сотрудников в разговор. Бизнес адрес - end-to-end шифрованием, с пост-квантовой безопасностью в прямых разговорах.]]> + сквозным шифрованием, с пост-квантовой безопасностью в прямых разговорах.]]> Приложение всегда выполняется в фоне Проверять сообщения каждые 10 минут Без фонового сервиса @@ -2272,7 +2269,7 @@ Удалить разговор Удалить разговор? Пригласить в разговор - Разговор будет удален для всех участников - это действие нельзя отменить! + Разговор будет удален для всех участников — это действие нельзя отменить! Оператор %s серверы %s.]]> @@ -2284,12 +2281,12 @@ %s.]]> Или импортировать файл архива Доступная панель чата - Разговор будет удален для Вас - это действие нельзя отменить! + Разговор будет удален для Вас — это действие нельзя отменить! Покинуть разговор Только владельцы разговора могут поменять предпочтения. Текст условий использования не может быть показан, вы можете посмотреть их через ссылку: Разговор - Участник будет удалён из разговора - это действие нельзя отменить. + Участник будет удалён из разговора — это действие нельзя отменить. Серверы по умолчанию Роль будет изменена на %s. Все участники разговора получат уведомление. Ваш профиль будет отправлен участникам разговора. @@ -2312,7 +2309,7 @@ Конфиденциальность для ваших покупателей. %1$s.]]> Разговор уже существует! - только с одним контактом - поделитесь при встрече или через любой мессенджер.]]> + только с одним контактом — поделитесь при встрече или через любой мессенджер.]]> Нет серверов для доставки сообщений. Вы можете настроить серверы позже. SimpleX Chat и Flux заключили соглашение добавить серверы под управлением Flux в приложение. @@ -2353,7 +2350,7 @@ Добавить в список Изменить список Сохранить список - Имя списка... + Имя списка… Исправить соединение? Соединение требует повторного согласования шифрования. Исправление @@ -2365,7 +2362,7 @@ Пожаловаться Спам Пожаловаться на спам: увидят только модераторы группы. - Это действие не может быть отмененено - сообщения, отправленные и полученные в этом чате ранее чем выбранное, будут удалены + Это действие не может быть отмененено — сообщения, отправленные и полученные в этом чате ранее чем выбранное, будут удалены Получайте уведомления от упоминаний. Сообщения о нарушениях запрещены в этой группе. Пожаловаться на нарушение: увидят только модераторы группы. @@ -2455,12 +2452,12 @@ Сообщения от этих членов группы будут показаны! Все новые сообщения от этих членов группы будут скрыты! Заблокировать членов группы для всех? - Члены группы будут удалены - это действие нельзя отменить! - Участники будут удалены из разговора - это действие нельзя отменить! + Члены группы будут удалены — это действие нельзя отменить! + Участники будут удалены из разговора — это действие нельзя отменить! модераторы Удалить членов группы? Принять - Используя SimpleX Chat, Вы согласны:\n- отправлять только законные сообщения в публичных группах.\n- уважать других пользователей – не отправлять спам. + Используя SimpleX Chat, Вы согласны:\n- отправлять только законные сообщения в публичных группах.\n- уважать других пользователей — не отправлять спам. Частные разговоры, группы и Ваши контакты недоступны для операторов серверов. Настроить операторов серверов Политика конфиденциальности и условия использования. @@ -2522,7 +2519,7 @@ Добавить сообщение О себе: Нельзя поменять профиль - end-to-end шифрованием.]]> + сквозным шифрованием.]]> только после того как Ваш запрос будет принят.]]> Чат с админами Общайтесь с членами группы до того как принять их. @@ -2560,10 +2557,10 @@ Обновить ссылку группы? Обновить Обновить адрес? - Цель: + Описание: Фоновый таймаут TCP-соединения Отправитель не будет уведомлён. - Член группы удалён - невозможно принять запрос + Член группы удалён — невозможно принять запрос Чтобы использовать другой профиль после попытки соединения, удалите чат и используйте ссылку снова. Приветственное сообщение О себе: @@ -2572,8 +2569,8 @@ Использовать профиль инкогнито 4 новых языков интерфейса Принять запрос на соединение - Бизнес контакт - Каталонский, Индонезийский, Румынский и Вьетнамский - благодаря нашим пользователям! + Бизнес-контакт + Каталонский, Индонезийский, Румынский и Вьетнамский — благодаря нашим пользователям! Создайте Ваш адрес Описание слишком длинное Включите исчезающие сообщения по умолчанию. @@ -2592,7 +2589,7 @@ Обновите Ваш адрес Обновить ссылку группы Приветствуйте Ваши контакты 👋 - Ваш бизнес контакт + Ваш бизнес-контакт Ваш контакт Ваша группа Разрешить файлы и медиа, только если их разрешает Ваш контакт. @@ -2618,7 +2615,7 @@ Удалить сообщения участника Удалить сообщения участника? Удалить сообщения - Сообщения участника будут удалены - это действие не обратимо! + Сообщения участника будут удалены — это действие не обратимо! нет подписки Вы не подключенны к серверу через который Вы получали сообщения от этого контакта (без подписки). Удалить члена группы и удалить сообщения @@ -2634,4 +2631,127 @@ Поиск голосовых сообщений Видео Голосовые сообщения + %1$d подписчик + %1$d подписчиков + Отменить создание канала? + %1$s!]]> + канал + Канал + Канал + Полное имя канала: + Ссылка канала + Участники канала + Имя канала + профиль канала обновлён + Канал будет удалён для всех подписчиков — это действие нельзя отменить! + Канал будет удалён для вас — это действие нельзя отменить! + Настроить ретрансляторы + Соединиться + соединено + соединяется + Создать публичный канал + Создать публичный канал + Создать публичный канал (БЕТА) + Создание канала + %d событий канала + Удалить канал + Удалить канал? + Удалить ретранслятор + Редактировать профиль канала + Введите имя ретранслятора… + Ошибка при добавлении ретранслятора + Ошибка при создании канала + Ошибка при открытии канала + ошибка: %s + Ошибка при сохранении профиля канала + Неверный адрес ретранслятора! + Неверное имя ретранслятора! + приглашён + Присоединиться к каналу + Покинуть канал + Покинуть канал? + Ссылка + %1$d/%2$d ретрансляторов активно + %1$d/%2$d ретрансляторов соединено + %1$d/%2$d ретрансляторов соединено, %3$d ошибок + принят + активен + Заблокировать подписчика для всех? + Вещание + Отмена + Канал начнёт работу с %1$d из %2$d ретрансляторов. Продолжить? + Ретранслятор чатов + Ретрансляторы чатов + Ретрансляторы чатов + Ретрансляторы чатов + Ретрансляторы чатов пересылают сообщения в созданных Вами каналах. + Ретрансляторы чатов пересылают сообщения подписчикам канала. + Проверьте адрес ретранслятора и попробуйте ещё раз. + Проверьте имя ретранслятора и попробуйте ещё раз. + удалён + Настройки канала + Ссылка канала + Профиль канала хранится на устройствах подписчиков и ретрансляторах чатов. + Канал временно недоступен + Отключить + Включить + Ошибка + Бизнес-адрес + не может вещать + Включите хотя бы один ретранслятор чатов для создания канала. + Новый ретранслятор чатов + Нет ретрансляторов чатов + Ретрансляторы чатов не включены. + Это адрес ретранслятора чатов, к нему нельзя подключиться. + %1$d/%2$d ретрансляторов активно, %3$d ошибок + %1$d/%2$d ретрансляторов активно, %3$d не работает + %1$d/%2$d ретрансляторов активно, %3$d удалено + %1$d/%2$d ретрансляторов соединено, %3$d не работают + %1$d/%2$d ретрансляторов соединено, %3$d удалено + %1$d ретрансляторов не работает + %1$d ретрансляторов неактивно + %1$d ретрансляторов удалено + Нет доступных ретрансляторов + В канале нет активных ретрансляторов. Пожалуйста, попробуйте позже. + Включить превью ссылок? + Каналы + удалил(а) канал + Контакт-адрес + Все ретрансляторы удалены + неактивен + Подлинность ссылки подтверждена. + Открыть канал + Открыть новый канал + Владельцы + ВЛАДЕЛЕЦ + Продолжить + ретранслятор + РЕТРАНСЛЯТОР + Адрес ретранслятора + Адрес ретранслятора + Ошибка подключения ретранслятора + Ссылка ретранслятора + Результаты ретранслятора: + удалён оператором + Удалить подписчика + Удалить подписчика? + Сохранить и уведомить подписчиков канала + Сохранить профиль канала + Отправка превью ссылки может привести к раскрытию вашего IP-адреса веб-сайту. Вы можете изменить это позже в настройках конфиденциальности. + Отправьте ссылку через любой мессенджер — это безопасно. Попросите вставить её в SimpleX. + Сервер требует авторизации для подключения к ретранслятору, проверьте пароль. + Предупреждение сервера + Поделиться каналом… + Поделиться адресом ретранслятора + Поделиться в чате + ⚠️ Проверка подписи не удалась: %s. + ПОДПИСЧИК + Подписчики + Подписчик будет удален из канала — это действие нельзя отменить! + Пообщайтесь с кем-нибудь + Нажмите «Присоединиться к каналу» + Нажмите, чтобы открыть + Вы можете поделиться ссылкой или 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 411cbde4c4..2fe2000fb3 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/th/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/th/strings.xml @@ -909,7 +909,7 @@ แสดง: แสดงตัวเลือกสําหรับนักพัฒนาซอฟต์แวร์ แชร์ลิงก์ - แชร์ที่อยู่กับผู้ติดต่อ\? + แชร์ที่อยู่กับผู้ติดต่อ? แชร์กับผู้ติดต่อ บันทึกการตั้งค่า\? แสดง @@ -1328,4 +1328,4 @@ ในการตอบกลับถึง ไม่มีประวัติ encryptionใช้ได้ - + \ No newline at end of file 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 be037e8b87..b189ee581d 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 @@ -1207,7 +1207,7 @@ 消息回应 该聊天禁用了消息回应。 如果你在打开应用程序时输入自毁密码: - 个人资料更新将被发送给你的联系人。 + 个人资料更新将发送给你的联系人。 记录更新于 禁止消息回应。 已收到于 @@ -1848,7 +1848,7 @@ 尚无直接连接,消息由管理员转发。 其他 SMP 服务器 其他 XFTP 服务器 - 扫描/粘贴链接 + 粘贴链接/扫描 显示百分比 不活跃 缩放 @@ -2581,9 +2581,9 @@ 连接 已连接 正在连接 - 创建频道 - 创建频道 - 创建频道(测试版) + 创建公开频道 + 创建公开频道 + 创建公开频道(测试版) 正在创建频道 解码链接 删除频道 @@ -2651,8 +2651,87 @@ 你通过此中继链接连接至该频道。 你的频道 你的频道 - 你的个人资料 %1$s 将分享给频道中继和订阅者。 + 你的个人资料 %1$s 将分享给频道中继和订阅者。中继可以访问频道消息。 你的中继地址 你的中继名 你会停止收到来自该频道的消息。聊天记录将被保留。 + 完整的频道名: + 频道资料存储在订阅者设备和聊天中继上。 + 频道资料已更新 + %d 个频道事件 + 删除了频道 + 被丢弃 (%1$d 次尝试) + 错误: %s + 保存频道资料出错 + 消息错误 + 保存并通知频道订阅者 + 保存频道资料 + 应用在尝试接收这条消息 %1$d 次后删除了它。 + 更新了频道资料 + %2$d 个中继中的 %1$d 个活跃, %3$d 个错误 + %2$d 个中继中的 %1$d 个活跃, %3$d 个被删除 + %2$d 个中继中的 %1$d 个已连接, %3$d 个失灵 + %2$d 个中继中的 %1$d 个已连接, %3$d 个被删除 + %1$d 个中继失灵 + %1$d 个中继不活跃 + 删除了 %1$d 个中继 + 目前不支持添加中继。 + 所有中继均失灵 + 删除了所有中继 + 无法广播 + 频道无活跃中继。请稍后尝试加入。 + 频道暂时不可用 + 不活跃 + 无活跃中继 + 被运营方删除 + 正等到频道所有者添加中继。 + 营业地址 + 频道链接 + 联系地址 + 分享频道出错 + (来自所有者) + 群链接 + 链接签名已验证。 + 一次性链接 + 分享频道… + 经聊天分享 + ⚠️ 签名验证失败:%s。 + (已签名) + 轻触打开 + 发送链接预览可能会将你的 IP 地址暴露给网站。你可以稍后在“隐私”设置中更改此设置。 + 连接达到了未送达消息的上限 + 禁用 + 启用 + 启用链接预览吗? + 错误 + 网络错误 + 中继结果: + 频道首选项 + 仅频道所有者可改变频道首选项。 + 用于单人进行连接的链接 + 频道 + 通过链接或二维码连接 + 和某人连接 + 创建你的公开地址 + 邀请好友更简单 👋 + 给任何要和你联系的人 + 私下邀请某人 + 让某人和你连接 + 新建一次性链接 + 非盈利治理 + - 可选发送链接预览\n- 防止超链接钓鱼\n- 删除链接跟踪。 + 面对面或通过视频通话展示二维码。 + 或使用此二维码 — 打印或在线展示。 + 所有权:你可以运行自己的中继。 + 隐私:对所有者和订阅者。 + 公开频道 — 畅所欲言 🚀 + 可靠性:一个频道众多中继。 + 安全的 web 链接 + 安全性:所有者持有频道密钥。 + 通过任何通讯应用发送链接 — 这是安全的。请求粘贴到 SimpleX 中。 + 和某人交谈 + 让 SimpleX 网络持续。 + 在社交媒体资料、网站或电子邮件签名中使用该地址。 + 我们让连接对新用户更简单。 + 你的公开地址 diff --git a/apps/multiplatform/gradle.properties b/apps/multiplatform/gradle.properties index 45129a0d54..e47d493741 100644 --- a/apps/multiplatform/gradle.properties +++ b/apps/multiplatform/gradle.properties @@ -24,13 +24,13 @@ android.nonTransitiveRClass=true kotlin.mpp.androidSourceSetLayoutVersion=2 kotlin.jvm.target=11 -android.version_name=6.5-beta.9 -android.version_code=341 +android.version_name=6.5-beta.10 +android.version_code=342 android.bundle=false -desktop.version_name=6.5-beta.9 -desktop.version_code=136 +desktop.version_name=6.5-beta.10 +desktop.version_code=137 kotlin.version=2.1.20 gradle.plugin.version=8.7.0 diff --git a/apps/simplex-directory-service/src/Directory/Events.hs b/apps/simplex-directory-service/src/Directory/Events.hs index 45c0b84cc6..bfbc025a49 100644 --- a/apps/simplex-directory-service/src/Directory/Events.hs +++ b/apps/simplex-directory-service/src/Directory/Events.hs @@ -33,10 +33,10 @@ import qualified Data.Text as T import Data.Text.Encoding (encodeUtf8) import Directory.Store import Simplex.Chat.Controller -import Simplex.Chat.Markdown (displayNameTextP) +import Simplex.Chat.Markdown (MarkdownList, displayNameTextP) import Simplex.Chat.Messages import Simplex.Chat.Messages.CIContent -import Simplex.Chat.Protocol (MsgContent (..)) +import Simplex.Chat.Protocol (LinkOwnerSig, MsgChatLink, MsgContent (..)) import Simplex.Chat.Types import Simplex.Chat.Types.Shared import Simplex.Messaging.Agent.Protocol (AgentErrorType (..)) @@ -49,6 +49,7 @@ data DirectoryEvent | DEGroupInvitation {contact :: Contact, groupInfo :: GroupInfo, fromMemberRole :: GroupMemberRole, memberRole :: GroupMemberRole} | DEServiceJoinedGroup {contactId :: ContactId, groupInfo :: GroupInfo, hostMember :: GroupMember} | DEGroupUpdated {member :: GroupMember, fromGroup :: GroupInfo, toGroup :: GroupInfo} + | DEGroupLinkCheck GroupInfo | DEPendingMember GroupInfo GroupMember | DEPendingMemberMsg GroupInfo GroupMember ChatItemId Text | DEContactRoleChanged GroupInfo ContactId GroupMemberRole -- contactId here is the contact whose role changed @@ -57,6 +58,8 @@ data DirectoryEvent | DEContactLeftGroup ContactId GroupInfo | DEServiceRemovedFromGroup GroupInfo | DEGroupDeleted GroupInfo + | DEChatLinkReceived {contact :: Contact, chatItemId :: ChatItemId, chatLink :: MsgChatLink, ownerSig :: Maybe LinkOwnerSig} + | DEMemberUpdated {groupInfo :: GroupInfo, fromMember :: GroupMember, toMember :: GroupMember} | DEUnsupportedMessage Contact ChatItemId | DEItemEditIgnored Contact | DEItemDeleteIgnored Contact @@ -91,11 +94,14 @@ crDirectoryEvent_ = \case CEvtLeftMember {groupInfo, member} -> (`DEContactLeftGroup` groupInfo) <$> memberContactId member CEvtDeletedMemberUser {groupInfo} -> Just $ DEServiceRemovedFromGroup groupInfo CEvtGroupDeleted {groupInfo} -> Just $ DEGroupDeleted groupInfo + CEvtUnknownMemberAnnounced {groupInfo, unknownMember, announcedMember} -> Just $ DEMemberUpdated {groupInfo, fromMember = unknownMember, toMember = announcedMember} + CEvtGroupMemberUpdated {groupInfo, fromMember, toMember} -> Just $ DEMemberUpdated {groupInfo, fromMember, toMember} CEvtChatItemUpdated {chatItem = AChatItem _ SMDRcv (DirectChat ct) _} -> Just $ DEItemEditIgnored ct CEvtChatItemsDeleted {chatItemDeletions = ((ChatItemDeletion (AChatItem _ SMDRcv (DirectChat ct) _) _) : _), byUser = False} -> Just $ DEItemDeleteIgnored ct - CEvtNewChatItems {chatItems = (AChatItem _ SMDRcv (DirectChat ct) ci@ChatItem {content = CIRcvMsgContent mc, meta = CIMeta {itemLive}}) : _} -> + CEvtNewChatItems {chatItems = (AChatItem _ SMDRcv (DirectChat ct) ci@ChatItem {content = CIRcvMsgContent mc, formattedText = ft, meta = CIMeta {itemLive}}) : _} -> Just $ case (mc, itemLive) of - (MCText t, Nothing) -> DEContactCommand ct ciId $ fromRight err $ A.parseOnly (directoryCmdP <* A.endOfInput) $ T.dropWhileEnd isSpace t + (MCText t, Nothing) -> DEContactCommand ct ciId $ fromRight err $ A.parseOnly (directoryCmdP ft <* A.endOfInput) $ T.dropWhileEnd isSpace t + (MCChat {chatLink, ownerSig}, Nothing) -> DEChatLinkReceived {contact = ct, chatItemId = ciId, chatLink, ownerSig} _ -> DEUnsupportedMessage ct ciId where ciId = chatItemId' ci @@ -149,7 +155,7 @@ data DirectoryHelpSection = DHSRegistration | DHSCommands data DirectoryCmd (r :: DirectoryRole) where DCHelp :: DirectoryHelpSection -> DirectoryCmd 'DRUser - DCSearchGroup :: Text -> DirectoryCmd 'DRUser + DCSearchGroup :: Text -> Maybe MarkdownList -> DirectoryCmd 'DRUser DCSearchNext :: DirectoryCmd 'DRUser DCAllGroups :: DirectoryCmd 'DRUser DCRecentGroups :: DirectoryCmd 'DRUser @@ -181,11 +187,11 @@ data ADirectoryCmd = forall r. ADC (SDirectoryRole r) (DirectoryCmd r) deriving instance Show ADirectoryCmd -directoryCmdP :: Parser ADirectoryCmd -directoryCmdP = +directoryCmdP :: Maybe MarkdownList -> Parser ADirectoryCmd +directoryCmdP ft = (A.char '/' *> cmdStrP) <|> (A.char '.' $> ADC SDRUser DCSearchNext) - <|> (ADC SDRUser . DCSearchGroup <$> A.takeText) + <|> (ADC SDRUser . (`DCSearchGroup` ft) <$> A.takeText) where cmdStrP = (tagP >>= \(ADCT u t) -> ADC u <$> (cmdP t <|> pure (DCCommandError t))) @@ -304,7 +310,7 @@ directoryCmdP = directoryCmdTag :: DirectoryCmd r -> Text directoryCmdTag = \case DCHelp _ -> "help" - DCSearchGroup _ -> "search" + DCSearchGroup {} -> "search" DCSearchNext -> "next" DCAllGroups -> "all" DCRecentGroups -> "new" diff --git a/apps/simplex-directory-service/src/Directory/Listing.hs b/apps/simplex-directory-service/src/Directory/Listing.hs index 0d4e8d351c..ef093020bb 100644 --- a/apps/simplex-directory-service/src/Directory/Listing.hs +++ b/apps/simplex-directory-service/src/Directory/Listing.hs @@ -27,7 +27,7 @@ import Data.List (isPrefixOf) import Data.Maybe (catMaybes, fromMaybe) import Data.Text (Text) import qualified Data.Text as T -import Data.Text.Encoding (encodeUtf8) +import Data.Text.Encoding (decodeUtf8, encodeUtf8) import Data.Time.Clock import Data.Time.Clock.System import Data.Time.Format.ISO8601 (iso8601Show) @@ -53,16 +53,24 @@ listingImageFolder :: String listingImageFolder = "images" data DirectoryEntryType = DETGroup - { admission :: Maybe GroupMemberAdmission, + { groupType :: Maybe GroupType, + admission :: Maybe GroupMemberAdmission, summary :: GroupSummary } $(JQ.deriveJSON (taggedObjectJSON $ dropPrefix "DET") ''DirectoryEntryType) +data PublicLink = PublicLink + { connFullLink :: Maybe ConnReqContact, + connShortLink :: Maybe ShortLinkContact + } + +$(JQ.deriveJSON defaultJSON ''PublicLink) + data DirectoryEntry = DirectoryEntry { entryType :: DirectoryEntryType, displayName :: Text, - groupLink :: CreatedLinkContact, + groupLink :: PublicLink, shortDescr :: Maybe MarkdownList, welcomeMessage :: Maybe MarkdownList, imageFile :: Maybe String, @@ -90,8 +98,15 @@ recentRoundedTime roundTo now t groupDirectoryEntry :: UTCTime -> GroupInfo -> Maybe GroupLink -> Maybe (DirectoryEntry, Maybe (FilePath, ImageFileData)) groupDirectoryEntry now GroupInfo {groupProfile, chatTs, createdAt, groupSummary} gLink_ = - let GroupProfile {displayName, shortDescr, description, image, memberAdmission} = groupProfile - entryType = DETGroup memberAdmission groupSummary + let GroupProfile {displayName, shortDescr, description, image, memberAdmission, publicGroup} = groupProfile + gt = (\PublicGroupProfile {groupType} -> groupType) <$> publicGroup + entryType = DETGroup gt memberAdmission groupSummary + description' = case publicGroup of + Just PublicGroupProfile {groupType = gt', groupLink = sLnk} -> + let gtStr = case gt' of GTChannel -> "channel"; _ -> "group" + linkLine = "Link to join the " <> gtStr <> " " <> displayName <> ": " <> decodeUtf8 (strEncode sLnk) + in Just $ maybe linkLine (<> "\n\n" <> linkLine) description + Nothing -> description entry groupLink = let de = DirectoryEntry @@ -99,22 +114,30 @@ groupDirectoryEntry now GroupInfo {groupProfile, chatTs, createdAt, groupSummary displayName, groupLink, shortDescr = toFormattedText <$> shortDescr, - welcomeMessage = toFormattedText <$> description, + welcomeMessage = toFormattedText <$> description', imageFile = fst <$> imgData, activeAt = recentRoundedTime 900 now $ fromMaybe createdAt chatTs, createdAt = recentRoundedTime 86400 now createdAt } imgData = imgFileData groupLink =<< image in (de, imgData) - in (entry . connLinkContact) <$> gLink_ + in case publicGroup of + Just PublicGroupProfile {groupLink = sLnk} -> + Just $ entry $ PublicLink Nothing (Just sLnk) + Nothing -> + entry . toPublicLink . connLinkContact <$> gLink_ where - imgFileData :: CreatedConnLink 'CMContact -> ImageData -> Maybe (FilePath, ByteString) - imgFileData groupLink (ImageData img) = + toPublicLink (CCLink fullLink shortLink) = PublicLink (Just fullLink) shortLink + imgFileData :: PublicLink -> ImageData -> Maybe (FilePath, ByteString) + imgFileData PublicLink {connFullLink, connShortLink} (ImageData img) = let (img', imgExt) = fromMaybe (img, ".jpg") $ (,".jpg") <$> T.stripPrefix "data:image/jpg;base64," img <|> (,".png") <$> T.stripPrefix "data:image/png;base64," img - imgName = B.unpack $ B64URL.encodeUnpadded $ BA.convert $ (CH.hash :: ByteString -> Digest MD5) $ strEncode (connFullLink groupLink) + linkHash = case connFullLink of + Just fl -> strEncode fl + Nothing -> maybe "" strEncode connShortLink + imgName = B.unpack $ B64URL.encodeUnpadded $ BA.convert $ (CH.hash :: ByteString -> Digest MD5) linkHash imgFile = listingImageFolder imgName <> imgExt in case B64.decode $ encodeUtf8 img' of Right img'' -> Just (imgFile, img'') diff --git a/apps/simplex-directory-service/src/Directory/Options.hs b/apps/simplex-directory-service/src/Directory/Options.hs index 94305abaa2..f566ed5ded 100644 --- a/apps/simplex-directory-service/src/Directory/Options.hs +++ b/apps/simplex-directory-service/src/Directory/Options.hs @@ -42,6 +42,7 @@ data DirectoryOpts = DirectoryOpts runCLI :: Bool, searchResults :: Int, webFolder :: Maybe FilePath, + linkCheckInterval :: Int, testing :: Bool } @@ -162,6 +163,14 @@ directoryOpts appDir defaultDbName = do <> metavar "WEB_FOLDER" <> help "Folder to store static web assets" ) + linkCheckInterval <- + option + auto + ( long "link-check-interval" + <> metavar "SECONDS" + <> help "Interval in seconds to check public group link data (default: 1800)" + <> value 1800 + ) pure DirectoryOpts { coreOptions, @@ -182,6 +191,7 @@ directoryOpts appDir defaultDbName = do runCLI, searchResults = 10, webFolder, + linkCheckInterval, testing = False } diff --git a/apps/simplex-directory-service/src/Directory/Service.hs b/apps/simplex-directory-service/src/Directory/Service.hs index 34b63ff06a..400f250979 100644 --- a/apps/simplex-directory-service/src/Directory/Service.hs +++ b/apps/simplex-directory-service/src/Directory/Service.hs @@ -18,7 +18,7 @@ module Directory.Service ) where -import Control.Concurrent (forkIO) +import Control.Concurrent (forkIO, threadDelay) import Control.Concurrent.STM import Control.Exception (SomeException, try) import Control.Logger.Simple @@ -31,7 +31,7 @@ import Data.Either (fromRight) import Data.List (find, intercalate) import Data.List.NonEmpty (NonEmpty (..)) import qualified Data.Map.Strict as M -import Data.Maybe (fromMaybe, isJust, isNothing) +import Data.Maybe (fromMaybe, isJust, isNothing, maybeToList) import qualified Data.Set as S import Data.Text (Text) import qualified Data.Text as T @@ -51,12 +51,12 @@ import Simplex.Chat.Bot import Simplex.Chat.Bot.KnownContacts import Simplex.Chat.Controller import Simplex.Chat.Core -import Simplex.Chat.Markdown (Format (..), FormattedText (..), parseMaybeMarkdownList, viewName) +import Simplex.Chat.Markdown (Format (..), FormattedText (..), SimplexLinkType (..), parseMaybeMarkdownList, viewName) import Simplex.Chat.Messages import Simplex.Chat.Options -import Simplex.Chat.Protocol (MsgContent (..), memberSupportVoiceVersion) +import Simplex.Chat.Protocol (GroupShortLinkData (..), LinkOwnerSig (..), MsgChatLink (..), MsgContent (..), memberSupportVoiceVersion) import Simplex.Chat.Store.Direct (getContact) -import Simplex.Chat.Store.Groups (getGroupLink, getGroupMember, setGroupCustomData) -- TODO remove setGroupCustomData +import Simplex.Chat.Store.Groups (getGroupLink, getGroupMember, getGroupMemberByMemberId, setGroupCustomData) -- TODO remove setGroupCustomData import Simplex.Chat.Store.Profiles (GroupLinkInfo (..), getGroupLinkInfo) import Simplex.Chat.Store.Shared (StoreError (..)) import Simplex.Chat.Terminal (terminalChatConfig) @@ -65,9 +65,10 @@ import Simplex.Chat.Types import Simplex.Chat.Types.Preferences import Simplex.Chat.Types.Shared import Simplex.Chat.View (serializeChatError, serializeChatResponse, simplexChatContact, viewContactName, viewGroupName) -import Simplex.Messaging.Agent.Protocol (AConnectionLink (..), ConnectionLink (..), CreatedConnLink (..), SConnectionMode (..), sameConnReqContact, sameShortLinkContact) +import Simplex.Messaging.Agent.Protocol (AConnectionLink (..), ACreatedConnLink (..), AgentErrorType (..), ConnectionLink (..), CreatedConnLink (..), SConnectionMode (..), sameConnReqContact, sameShortLinkContact) import qualified Simplex.Messaging.Crypto.File as CF import Simplex.Messaging.Encoding.String +import Simplex.Messaging.Protocol (ErrorType (..)) import Simplex.Messaging.TMap (TMap) import qualified Simplex.Messaging.TMap as TM import Simplex.Messaging.Util (eitherToMaybe, raceAny_, safeDecodeUtf8, tshow, unlessM, (<$$>)) @@ -99,7 +100,9 @@ data ServiceState = ServiceState { searchRequests :: TMap ContactId SearchRequest, blockedWordsCfg :: BlockedWordsConfig, pendingCaptchas :: TMap GroupMemberId PendingCaptcha, - updateListingsJob :: TMVar ChatController + serviceCC :: TMVar ChatController, + eventQ :: TQueue DirectoryEvent, + updateListingsJob :: TMVar () } data CaptchaMode = CMText | CMAudio @@ -125,8 +128,10 @@ newServiceState opts = do searchRequests <- TM.emptyIO blockedWordsCfg <- readBlockedWordsConfig opts pendingCaptchas <- TM.emptyIO + serviceCC <- newEmptyTMVarIO + eventQ <- newTQueueIO updateListingsJob <- newEmptyTMVarIO - pure ServiceState {searchRequests, blockedWordsCfg, pendingCaptchas, updateListingsJob} + pure ServiceState {searchRequests, blockedWordsCfg, pendingCaptchas, serviceCC, eventQ, updateListingsJob} welcomeGetOpts :: IO DirectoryOpts welcomeGetOpts = do @@ -150,9 +155,8 @@ welcomeGetOpts = do directoryServiceCLI :: DirectoryLog -> DirectoryOpts -> IO () directoryServiceCLI st opts = do - env <- newServiceState opts - eventQ <- newTQueueIO - let eventHook cc resp = atomically $ resp <$ writeTQueue eventQ (cc, resp) + env@ServiceState {eventQ} <- newServiceState opts + let eventHook _cc resp = atomically $ resp <$ mapM_ (writeTQueue eventQ) (crDirectoryEvent resp) chatHooks = defaultChatHooks { preStartHook = Just $ directoryPreStartHook opts, @@ -162,31 +166,50 @@ directoryServiceCLI st opts = do } raceAny_ $ [ simplexChatCLI' terminalChatConfig {chatHooks} (mkChatOpts opts) Nothing, - processEvents eventQ env + processEvents env ] - <> updateListingsThread_ opts env + <> maybeToList (updateListingsThread_ opts env) + <> maybeToList (linkCheckThread_ opts env) where - processEvents eventQ env = forever $ do - (cc, resp) <- atomically $ readTQueue eventQ + processEvents env@ServiceState {eventQ} = do + cc <- atomically $ readTMVar $ serviceCC env u_ <- readTVarIO (currentUser cc) - forM_ u_ $ \user -> directoryServiceEvent st opts env user cc resp + forM_ u_ $ \user -> + forever $ do + event <- atomically $ readTQueue eventQ + directoryServiceEvent st opts env user cc event updateListingDelay :: Int updateListingDelay = 5 * 60 * 1000000 -- update every 5 minutes -updateListingsThread_ :: DirectoryOpts -> ServiceState -> [IO ()] -updateListingsThread_ opts env = maybe [] (\f -> [updateListingsThread f]) $ webFolder opts +updateListingsThread_ :: DirectoryOpts -> ServiceState -> Maybe (IO ()) +updateListingsThread_ opts env = updateListingsThread <$> webFolder opts where updateListingsThread f = do - cc <- atomically $ takeTMVar $ updateListingsJob env + cc <- atomically $ readTMVar $ serviceCC env forever $ do u <- readTVarIO $ currentUser cc forM_ u $ \user -> updateGroupListingFiles cc user f delay <- registerDelay updateListingDelay atomically $ void (takeTMVar $ updateListingsJob env) `orElse` unlessM (readTVar delay) retry -listingsUpdated :: ServiceState -> ChatController -> IO () -listingsUpdated env = void . atomically . tryPutTMVar (updateListingsJob env) +listingsUpdated :: ServiceState -> IO () +listingsUpdated env = void $ atomically $ tryPutTMVar (updateListingsJob env) () + +linkCheckThread_ :: DirectoryOpts -> ServiceState -> Maybe (IO ()) +linkCheckThread_ opts env@ServiceState {eventQ} + | linkCheckInterval opts > 0 = Just $ do + cc <- atomically $ readTMVar $ serviceCC env + forever $ do + threadDelay $ linkCheckInterval opts * 1000000 + u <- readTVarIO $ currentUser cc + forM_ u $ \user -> + withDB' "linkCheckThread" cc (\db -> getAllGroupRegs_ db user) >>= \case + Left e -> logError $ "linkCheckThread error: " <> T.pack e + Right grs -> forM_ grs $ \(gInfo, gr) -> + unless (groupRemoved $ groupRegStatus gr) $ + atomically $ writeTQueue eventQ $ DEGroupLinkCheck gInfo + | otherwise = Nothing directoryPreStartHook :: DirectoryOpts -> ChatController -> IO () directoryPreStartHook opts ChatController {config, chatStore} = runDirectoryMigrations opts config chatStore @@ -197,7 +220,8 @@ directoryPostStartHook opts@DirectoryOpts {noAddress, testing} env cc = Nothing -> putStrLn "No current user" >> exitFailure Just User {userId, profile = p@LocalProfile {preferences}} -> do unless noAddress $ initializeBotAddress' (not testing) cc - listingsUpdated env cc + void $ atomically $ tryPutTMVar (serviceCC env) cc + listingsUpdated env let cmds = fromMaybe [] $ preferences >>= commands_ unless (cmds == directoryCommands) $ do let prefs = (fromMaybe emptyChatPrefs preferences) {files = Just FilesPreference {allow = FANo}, commands = Just directoryCommands} :: Preferences @@ -226,7 +250,7 @@ directoryCommands = directoryService :: DirectoryLog -> DirectoryOpts -> ChatConfig -> IO () directoryService st opts cfg = do - env <- newServiceState opts + env@ServiceState {eventQ} <- newServiceState opts let chatHooks = defaultChatHooks { preStartHook = Just $ directoryPreStartHook opts, @@ -235,12 +259,15 @@ directoryService st opts cfg = do } simplexChatCore cfg {chatHooks} (mkChatOpts opts) $ \user cc -> raceAny_ $ - [ forever $ void getLine, - forever $ do + [ forever $ do (_, resp) <- atomically . readTBQueue $ outputQ cc - directoryServiceEvent st opts env user cc resp + mapM_ (atomically . writeTQueue eventQ) $ crDirectoryEvent resp, + forever $ do + event <- atomically $ readTQueue eventQ + directoryServiceEvent st opts env user cc event ] - <> updateListingsThread_ opts env + <> maybeToList (updateListingsThread_ opts env) + <> maybeToList (linkCheckThread_ opts env) acceptMemberHook :: DirectoryOpts -> ServiceState -> GroupInfo -> GroupLinkInfo -> Profile -> IO (Either GroupRejectionReason (GroupAcceptance, GroupMemberRole)) acceptMemberHook @@ -283,13 +310,13 @@ readBlockedWordsConfig DirectoryOpts {blockedFragmentsFile, blockedWordsFile, na unless testing $ putStrLn $ "Blocked fragments: " <> show (length blockedFragments) <> ", blocked words: " <> show (length blockedWords) <> ", spelling rules: " <> show (M.size spelling) pure BlockedWordsConfig {blockedFragments, blockedWords, extensionRules, spelling} -directoryServiceEvent :: DirectoryLog -> DirectoryOpts -> ServiceState -> User -> ChatController -> Either ChatError ChatEvent -> IO () -directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName, ownersGroup, searchResults} env@ServiceState {searchRequests} user@User {userId} cc event = - forM_ (crDirectoryEvent event) $ \case +directoryServiceEvent :: DirectoryLog -> DirectoryOpts -> ServiceState -> User -> ChatController -> DirectoryEvent -> IO () +directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName, ownersGroup, searchResults} env@ServiceState {searchRequests} user@User {userId} cc = \case DEContactConnected ct -> deContactConnected ct DEGroupInvitation {contact = ct, groupInfo = g, fromMemberRole, memberRole} -> deGroupInvitation ct g fromMemberRole memberRole DEServiceJoinedGroup ctId g owner -> deServiceJoinedGroup ctId g owner DEGroupUpdated {member, fromGroup, toGroup} -> deGroupUpdated member fromGroup toGroup + DEGroupLinkCheck g -> deGroupLinkCheck g DEPendingMember g m -> dePendingMember g m DEPendingMemberMsg g m ciId t -> dePendingMemberMsg g m ciId t DEContactRoleChanged g ctId role -> deContactRoleChanged g ctId role @@ -298,6 +325,8 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName DEContactLeftGroup ctId g -> deContactLeftGroup ctId g DEServiceRemovedFromGroup g -> deServiceRemovedFromGroup g DEGroupDeleted g -> deGroupDeleted g + DEChatLinkReceived {contact = ct, chatLink, ownerSig} -> deChatLinkReceived ct chatLink ownerSig + DEMemberUpdated {groupInfo = g, fromMember, toMember} -> deMemberUpdated g fromMember toMember DEUnsupportedMessage _ct _ciId -> pure () DEItemEditIgnored _ct -> pure () DEItemDeleteIgnored _ct -> pure () @@ -325,7 +354,19 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName let msg = "Error: " <> err <> ", group: " <> tshow groupId <> " " <> localDisplayName <> ", " <> T.pack e notifyAdminUsers msg logError msg - groupInfoText p@GroupProfile {description = d} = groupNameDescr p <> maybe "" ("\nWelcome message:\n" <>) d + groupInfoText p@GroupProfile {description = d, publicGroup} = groupNameDescr p <> maybe "" ("\nWelcome message:\n" <>) d <> linkToJoin + where + linkToJoin = case publicGroup of + Just pg@PublicGroupProfile {groupLink} -> + "\nLink to join " <> groupTypeStr' pg <> ": " <> strEncodeTxt groupLink + <> "\nYou need SimpleX Chat app v6.5 to join." + Nothing -> "" + membersCountStr GroupProfile {publicGroup} GroupSummary {currentMembers, publicMemberCount} = + let count = fromMaybe currentMembers publicMemberCount + label = case publicGroup of + Just PublicGroupProfile {groupType = GTChannel} -> " subscribers" + _ -> " members" + in tshow count <> label knockingStr :: Maybe GroupMemberAdmission -> [Text] knockingStr = \case Just GroupMemberAdmission {review = Just MCAll} -> ["New members are reviewed by admins"] @@ -342,6 +383,9 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName groupReference' groupId displayName = "ID " <> tshow groupId <> " (" <> displayName <> ")" groupAlreadyListed GroupInfo {groupProfile = p} = "The group " <> groupNameDescr p <> " is already listed in the directory, please choose another name." + ifPublicGroup :: GroupInfo -> IO () -> IO () -> IO () + ifPublicGroup GroupInfo {groupProfile = GroupProfile {publicGroup}} reject action = + if isJust publicGroup then reject else action getDuplicateGroup :: GroupInfo -> IO (Either String DuplicateGroup) getDuplicateGroup GroupInfo {groupId, groupProfile = GroupProfile {displayName}} = @@ -375,7 +419,7 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName sendMessage cc ct $ ("Welcome to " <> serviceName <> "!\n\n") <> "🔍 Send search string to find groups - try _security_.\n\ - \/help - how to submit your group.\n\ + \/help - how to submit your group or channel.\n\ \/new - recent groups.\n\n\ \[Directory rules](https://simplex.chat/docs/directory.html)." @@ -461,37 +505,68 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName byMember = case memberContactId m of Just ctId | ctId `isOwner` gr -> "" -- group registration owner, not any group owner. _ -> " by " <> mName -- owner notification from directory will include the name. - case groupRegStatus of - GRSPendingConfirmation -> pure () - GRSProposed -> pure () - GRSPendingUpdate -> - groupProfileUpdate >>= \case - GPNoServiceLink -> - notifyOwner gr $ "The profile updated for " <> userGroupRef <> byMember <> ", but the group link is not added to the welcome message." - GPServiceLinkAdded _ -> groupLinkAdded gr byMember - GPServiceLinkRemoved -> - notifyOwner gr $ - "The group link of " <> userGroupRef <> " is removed from the welcome message" <> byMember <> ", please add it." - GPHasServiceLink {} -> groupLinkAdded gr byMember - GPServiceLinkError -> do - notifyOwner gr $ - ("Error: " <> serviceName <> " has no group link for " <> userGroupRef) - <> " after profile was updated" - <> byMember - <> ". Please report the error to the developers." - logError $ "Error: no group link for " <> userGroupRef - GRSPendingApproval n -> processProfileChange gr byMember False $ n + 1 - GRSActive -> processProfileChange gr byMember True 1 - GRSSuspended -> processProfileChange gr byMember False 1 - GRSSuspendedBadRoles -> processProfileChange gr byMember False 1 - GRSRemoved -> pure () + case publicGroup p' of + Just pg -> case groupRegStatus of + GRSPendingApproval n -> publicGroupProfileChange pg gr byMember $ n + 1 + GRSActive -> publicGroupProfileChange pg gr byMember 1 + _ -> pure () + Nothing -> case groupRegStatus of + GRSPendingConfirmation -> pure () + GRSProposed -> pure () + GRSPendingUpdate -> + groupProfileUpdate >>= \case + GPNoServiceLink -> + notifyOwner gr $ "The profile updated for " <> userGroupRef <> byMember <> ", but the group link is not added to the welcome message." + GPServiceLinkAdded _ -> groupLinkAdded gr byMember + GPServiceLinkRemoved -> + notifyOwner gr $ + "The group link of " <> userGroupRef <> " is removed from the welcome message" <> byMember <> ", please add it." + GPHasServiceLink {} -> groupLinkAdded gr byMember + GPServiceLinkError -> do + notifyOwner gr $ + ("Error: " <> serviceName <> " has no group link for " <> userGroupRef) + <> " after profile was updated" + <> byMember + <> ". Please report the error to the developers." + logError $ "Error: no group link for " <> userGroupRef + GRSPendingApproval n -> processProfileChange gr byMember False $ n + 1 + GRSActive -> processProfileChange gr byMember True 1 + GRSSuspended -> processProfileChange gr byMember False 1 + GRSSuspendedBadRoles -> processProfileChange gr byMember False 1 + GRSRemoved -> pure () where GroupInfo {groupId, groupProfile = p} = fromGroup GroupInfo {groupProfile = p'} = toGroup sameProfile - GroupProfile {displayName = n, fullName = fn, shortDescr = sd, image = i, description = d, memberAdmission = ma} - GroupProfile {displayName = n', fullName = fn', shortDescr = sd', image = i', description = d', memberAdmission = ma'} = - n == n' && fn == fn' && i == i' && sd == sd' && (T.words <$> d) == (T.words <$> d') && ma == ma' + GroupProfile {displayName = n, fullName = fn, shortDescr = sd, image = i, description = d, memberAdmission = ma, publicGroup = pg} + GroupProfile {displayName = n', fullName = fn', shortDescr = sd', image = i', description = d', memberAdmission = ma', publicGroup = pg'} = + n == n' && fn == fn' && i == i' && sd == sd' && (T.words <$> d) == (T.words <$> d') && ma == ma' && pg == pg' + publicGroupProfileChange pg@PublicGroupProfile {groupLink} gr byMember n' = do + let gt = groupTypeStr' pg + userGroupRef = userGroupReference gr toGroup + groupRef = groupReference toGroup + link = ACL SCMContact $ CLShort groupLink + updatedNotification gr' g' = do + notifyOwner gr' $ + ("The " <> gt <> " " <> userGroupRef <> " is updated" <> byMember) + <> ".\nIt is hidden from the directory until approved." + notifyAdminUsers $ "The " <> gt <> " " <> groupRef <> " is updated" <> byMember <> "." + sendToApprove g' gr' n' + sendChatCmd cc (APIConnectPlan userId (Just link) True Nothing) >>= \case + Right (CRConnectionPlan _ _ (CPGroupLink (GLPKnown {groupInfo = g'}))) -> + case dbOwnerMemberId gr of + Just ownerGMId -> + withDB "getGroupMember" cc (\db -> withExceptT show $ getGroupMember db (vr cc) user groupId ownerGMId) >>= \case + Right ownerMember + | let GroupMember {memberRole = role} = ownerMember, role >= GROwner -> + setGroupStatus notifyAdminUsers st env cc groupId (GRSPendingApproval n') (`updatedNotification` g') + | otherwise -> do + setGroupStatus notifyAdminUsers st env cc groupId GRSSuspendedBadRoles $ \_ -> pure () + notifyOwner gr $ "The registration owner is no longer an owner. Registration suspended." + Left _ -> logError $ "could not find owner member for " <> groupRef + Nothing -> logError $ "no owner member set for " <> groupRef + _ -> + setGroupStatus notifyAdminUsers st env cc groupId (GRSPendingApproval n') (`updatedNotification` toGroup) groupLinkAdded gr byMember = getDuplicateGroup toGroup >>= \case Left e -> notifyOwner gr $ "Error: getDuplicateGroup. Please notify the developers.\n" <> T.pack e @@ -644,7 +719,7 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName -- /audio is matched as text, not as DirectoryCmd, because it is only valid -- in group context at captcha stage, while DirectoryCmd is for DM commands. isAudioCmd = T.strip msgText == "/audio" - cmd = fromRight (ADC SDRUser DCUnknownCommand) $ A.parseOnly (directoryCmdP <* A.endOfInput) $ T.strip msgText + cmd = fromRight (ADC SDRUser DCUnknownCommand) $ A.parseOnly (directoryCmdP Nothing <* A.endOfInput) $ T.strip msgText atomically (TM.lookup gmId $ pendingCaptchas env) >>= \case Nothing | isAudioCmd && canSendVoiceCaptcha g m -> sendMemberCaptcha g m (Just ciId) noCaptcha 0 CMAudio @@ -661,7 +736,7 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName sendComposedMessages_ cc sendRef [(Just ciId, MCText audioAlreadyEnabled)] else sendComposedMessages_ cc sendRef [(Just ciId, MCText voiceCaptchaUnavailable)] | otherwise -> case cmd of - ADC SDRUser (DCSearchGroup _) -> do + ADC SDRUser (DCSearchGroup {}) -> do ts <- getCurrentTime if | ts `diffUTCTime` sentAt > captchaTTL -> sendMemberCaptcha g m (Just ciId) captchaExpired (attempts - 1) captchaMode @@ -704,17 +779,59 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName useMemberFilter image $ passCaptcha a sendToApprove :: GroupInfo -> GroupReg -> GroupApprovalId -> IO () - sendToApprove GroupInfo {groupId, groupProfile = p@GroupProfile {displayName, image = image'}, groupSummary} GroupReg {dbContactId, promoted} gaId = do + sendToApprove GroupInfo {groupId, groupProfile = p@GroupProfile {displayName, image = image', publicGroup = pg_}, groupSummary} GroupReg {dbContactId, promoted} gaId = do ct_ <- getContact' cc user dbContactId - let membersStr = "_" <> tshow (currentMembers groupSummary) <> " members_\n" + let gt = maybe "group" groupTypeStr' pg_ + membersStr = "_" <> membersCountStr p groupSummary <> "_\n" text = - either (\_ -> "The group ID " <> tshow groupId <> " submitted: ") (\c -> localDisplayName' c <> " submitted the group ID " <> tshow groupId <> ": ") ct_ + either (\_ -> "The " <> gt <> " ID " <> tshow groupId <> " submitted: ") (\c -> localDisplayName' c <> " submitted the " <> gt <> " ID " <> tshow groupId <> ": ") ct_ <> ("\n" <> groupInfoText p <> "\n" <> membersStr <> "\nTo approve send:") msg = maybe (MCText text) (\image -> MCImage {text, image}) image' withAdminUsers $ \cId -> do let approveCmd = MCText $ "/approve " <> tshow groupId <> ":" <> viewName displayName <> " " <> tshow gaId <> if promoted then " promote=on" else "" sendComposedMessages cc (SRDirect cId) [msg, approveCmd] + deGroupLinkCheck :: GroupInfo -> IO () + deGroupLinkCheck gInfo@GroupInfo {groupId, groupProfile = GroupProfile {publicGroup = pg_}, groupSummary = summary} = + withGroupReg gInfo "link check" $ \gr@GroupReg {groupRegStatus, dbOwnerMemberId} -> + forM_ pg_ $ \pg@PublicGroupProfile {groupLink} -> + when (groupRegStatus == GRSActive || pendingApproval groupRegStatus) $ do + let link = ACL SCMContact $ CLShort groupLink + sendChatCmd cc (APIConnectPlan userId (Just link) True Nothing) >>= \case + Right (CRConnectionPlan _ _ (CPGroupLink (GLPKnown {groupInfo = g', groupUpdated = BoolDef updated, linkOwners = ListDef owners}))) -> + checkValidOwner dbOwnerMemberId owners $ do + when updated $ reapprove pg gr groupRegStatus g' + when (updated || summary /= groupSummary g') $ listingsUpdated env + Left (ChatErrorAgent {agentError = SMP _ err}) | linkDeleted err -> + setGroupStatus logError st env cc groupId GRSRemoved $ \gr' -> + notifyOwner gr' "The channel link is no longer valid.\nThe channel is removed from the directory." + _ -> pure () + where + linkDeleted = \case + AUTH -> True + BLOCKED {} -> True + _ -> False + checkValidOwner dbOwnerMemberId owners onValid = case dbOwnerMemberId of + Just ownerGMId -> + withDB "checkGroupLink" cc (\db -> withExceptT show $ getGroupMember db (vr cc) user groupId ownerGMId) >>= \case + Right GroupMember {memberId, memberPubKey} + | any (\GroupLinkOwner {memberId = mId, memberKey} -> memberId == mId && memberPubKey == Just memberKey) owners -> onValid + _ -> setGroupStatus logError st env cc groupId GRSSuspendedBadRoles $ \gr' -> + notifyOwner gr' "The registration owner is no longer a channel owner.\nThe channel is no longer listed in the directory." + Nothing -> onValid + reapprove pg gr groupRegStatus g' = do + let gt = groupTypeStr' pg + groupRef = groupReference gInfo + notifyAdminUsers $ "The " <> gt <> " " <> groupRef <> " profile changed." + case groupRegStatus of + GRSActive -> + setGroupStatus notifyAdminUsers st env cc groupId (GRSPendingApproval 1) $ \gr' -> do + notifyOwner gr' $ "The " <> gt <> " profile has changed.\nIt is hidden from the directory until approved." + sendToApprove g' gr' 1 + GRSPendingApproval n -> + sendToApprove g' gr (n + 1) + _ -> pure () + deContactRoleChanged :: GroupInfo -> ContactId -> GroupMemberRole -> IO () deContactRoleChanged g@GroupInfo {groupId, membership = GroupMember {memberRole = serviceRole}} ctId contactRole = do logInfo $ "contact ID " <> tshow ctId <> " role changed in group " <> viewGroupName g <> " to " <> tshow contactRole @@ -771,63 +888,205 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName >>= mapM_ (\cm@GroupMember {memberRole} -> when (memberRole == GROwner && memberActive cm) action) deContactRemovedFromGroup :: ContactId -> GroupInfo -> IO () - deContactRemovedFromGroup ctId g@GroupInfo {groupId} = do + deContactRemovedFromGroup ctId g@GroupInfo {groupId, groupProfile = GroupProfile {publicGroup = pg_}} = do + let gt = maybe "group" groupTypeStr' pg_ logInfo $ "contact ID " <> tshow ctId <> " removed from group " <> viewGroupName g - withGroupReg g "contact removed" $ \gr -> do + withGroupReg g "contact removed" $ \gr -> when (ctId `isOwner` gr) $ setGroupStatus notifyAdminUsers st env cc groupId GRSRemoved $ \gr' -> do - notifyOwner gr' $ "You are removed from the group " <> userGroupReference gr' g <> ".\n\nThe group is no longer listed in the directory." - notifyAdminUsers $ "The group " <> groupReference g <> " is de-listed (group owner is removed)." + notifyOwner gr' $ "You are removed from the " <> gt <> " " <> userGroupReference gr' g <> ".\n\nThe " <> gt <> " is no longer listed in the directory." + notifyAdminUsers $ "The " <> gt <> " " <> groupReference g <> " is de-listed (" <> gt <> " owner is removed)." + when (isJust pg_) $ leavePublicGroup g deContactLeftGroup :: ContactId -> GroupInfo -> IO () - deContactLeftGroup ctId g@GroupInfo {groupId} = do + deContactLeftGroup ctId g@GroupInfo {groupId, groupProfile = GroupProfile {publicGroup = pg_}} = do + let gt = maybe "group" groupTypeStr' pg_ logInfo $ "contact ID " <> tshow ctId <> " left group " <> viewGroupName g - -- TODO combine withGroupReg g "contact left" $ \gr -> when (ctId `isOwner` gr) $ setGroupStatus notifyAdminUsers st env cc groupId GRSRemoved $ \gr' -> do - notifyOwner gr' $ "You left the group " <> userGroupReference gr g <> ".\n\nThe group is no longer listed in the directory." - notifyAdminUsers $ "The group " <> groupReference g <> " is de-listed (group owner left)." + notifyOwner gr' $ "You left the " <> gt <> " " <> userGroupReference gr' g <> ".\n\nThe " <> gt <> " is no longer listed in the directory." + notifyAdminUsers $ "The " <> gt <> " " <> groupReference g <> " is de-listed (" <> gt <> " owner left)." + when (isJust pg_) $ leavePublicGroup g deServiceRemovedFromGroup :: GroupInfo -> IO () - deServiceRemovedFromGroup g@GroupInfo {groupId} = do + deServiceRemovedFromGroup g@GroupInfo {groupId, groupProfile = GroupProfile {publicGroup = pg_}} = do + let gt = maybe "group" groupTypeStr' pg_ logInfo $ "service removed from group " <> viewGroupName g setGroupStatus notifyAdminUsers st env cc groupId GRSRemoved $ \gr -> do - notifyOwner gr $ serviceName <> " is removed from the group " <> userGroupReference gr g <> ".\n\nThe group is no longer listed in the directory." - notifyAdminUsers $ "The group " <> groupReference g <> " is de-listed (directory service is removed)." + notifyOwner gr $ serviceName <> " is removed from the " <> gt <> " " <> userGroupReference gr g <> ".\n\nThe " <> gt <> " is no longer listed in the directory." + notifyAdminUsers $ "The " <> gt <> " " <> groupReference g <> " is de-listed (directory service is removed)." deGroupDeleted :: GroupInfo -> IO () - deGroupDeleted g@GroupInfo {groupId} = do + deGroupDeleted g@GroupInfo {groupId, groupProfile = GroupProfile {publicGroup = pg_}} = do + let gt = maybe "group" groupTypeStr' pg_ logInfo $ "group removed " <> viewGroupName g setGroupStatus notifyAdminUsers st env cc groupId GRSRemoved $ \gr -> do - notifyOwner gr $ "The group " <> userGroupReference gr g <> " is deleted.\n\nThe group is no longer listed in the directory." - notifyAdminUsers $ "The group " <> groupReference g <> " is de-listed (group is deleted)." + notifyOwner gr $ "The " <> gt <> " " <> userGroupReference gr g <> " is deleted.\n\nThe " <> gt <> " is no longer listed in the directory." + notifyAdminUsers $ "The " <> gt <> " " <> groupReference g <> " is de-listed (" <> gt <> " is deleted)." + + deChatLinkReceived :: Contact -> MsgChatLink -> Maybe LinkOwnerSig -> IO () + deChatLinkReceived ct (MCLGroup {connLink, groupProfile = GroupProfile {publicGroup = Just PublicGroupProfile {groupType}}}) (Just ownerSig@LinkOwnerSig {ownerId = Just (B64UrlByteString oIdBytes)}) = + case groupType of + GTUnknown tag -> sendMessage cc ct $ "Unsupported group type: " <> T.pack (show tag) + gt -> do + let link = ACL SCMContact $ CLShort connLink + mId = MemberId oIdBytes + gt' = groupTypeStr gt + sendChatCmd cc (APIConnectPlan userId (Just link) True (Just ownerSig)) >>= \case + Right (CRConnectionPlan _ (ACCL SCMContact ccLink) plan) -> + handleGroupLinkPlan ct ccLink mId ownerSig gt' plan + _ -> sendMessage cc ct "Error: could not connect. Please report it to directory admins." + deChatLinkReceived ct (MCLGroup {groupProfile = GroupProfile {publicGroup = Just pg}}) _ = + sendMessage cc ct $ "To add a " <> groupTypeStr' pg <> " to directory you must be the owner." + deChatLinkReceived ct _ _ = + sendMessage cc ct "Only channels can be added to directory via link." + + groupTypeStr :: GroupType -> Text + groupTypeStr = \case + GTChannel -> "channel" + GTGroup -> "group" + GTUnknown _ -> "group" + + groupTypeStr' :: PublicGroupProfile -> Text + groupTypeStr' PublicGroupProfile {groupType} = groupTypeStr groupType + + leavePublicGroup :: GroupInfo -> IO () + leavePublicGroup GroupInfo {groupId} = + void $ sendChatCmd cc (APILeaveGroup groupId) + + handleGroupLinkPlan :: Contact -> CreatedLinkContact -> MemberId -> LinkOwnerSig -> Text -> ConnectionPlan -> IO () + handleGroupLinkPlan ct ccLink mId ownerSig gt = \case + CPGroupLink glp -> case glp of + GLPOk {groupSLinkData_, ownerVerification} -> case (groupSLinkData_, ownerVerification) of + (Just groupSLinkData, Just OVVerified) -> joinAndRegisterPublicGroup ct ccLink mId gt groupSLinkData + (_, Just (OVFailed reason)) -> sendMessage cc ct $ "Link signature verification failed: " <> reason <> ".\nYou must be the " <> gt <> " owner to register it." + (Nothing, _) -> sendMessage cc ct $ "Error: no " <> gt <> " information available via the link." + _ -> sendMessage cc ct $ "Error: could not verify " <> gt <> " ownership. Please report it to directory admins." + GLPKnown {groupInfo = g, groupUpdated = BoolDef updated, ownerVerification} -> case ownerVerification of + Just OVVerified -> deReregistration ct g updated ownerSig + Just (OVFailed reason) -> sendMessage cc ct $ "Link signature verification failed: " <> reason <> ".\nYou must be the " <> gt <> " owner to register it." + Nothing -> sendMessage cc ct $ "Error: could not verify " <> gt <> " ownership." + GLPConnectingProhibit _ -> sendMessage cc ct $ "Already connecting to this " <> gt <> "." + GLPConnectingConfirmReconnect -> sendMessage cc ct $ "Already connecting to this " <> gt <> "." + GLPNoRelays _ -> sendMessage cc ct $ T.toTitle gt <> " has no active relays. Please try again later." + GLPOwnLink _ -> sendMessage cc ct "Unexpected error. Please report it to directory admins." + _ -> sendMessage cc ct "Unexpected error. Please report it to directory admins." + + joinAndRegisterPublicGroup :: Contact -> CreatedLinkContact -> MemberId -> Text -> GroupShortLinkData -> IO () + joinAndRegisterPublicGroup ct ccLink mId gt groupSLinkData = do + let GroupShortLinkData {groupProfile = GroupProfile {displayName}} = groupSLinkData + ownerContact = GroupOwnerContact {contactId = contactId' ct, memberId = mId} + sendMessage cc ct $ "Joining the " <> gt <> " " <> displayName <> "…" + sendChatCmd cc (APIPrepareGroup userId ccLink False groupSLinkData) >>= \case + Right (CRNewPreparedChat _ (AChat SCTGroup (Chat (GroupChat gInfo _) _ _))) -> do + let gId = groupId' gInfo + addGroupReg notifyAdminUsers st cc ct gInfo GRSProposed $ \_ -> pure () + sendChatCmd cc (APIConnectPreparedGroup gId False (Just ownerContact) Nothing) >>= \case + Right CRStartedConnectionToGroup {groupInfo = gInfo'} -> + withDB "getGroupMember" cc (\db -> withExceptT show $ getGroupMemberByMemberId db (vr cc) user gInfo' mId) >>= \case + Right ownerMember -> + void $ setGroupRegOwner cc gId ownerMember + Left e -> do + logError $ "could not find owner member: " <> T.pack e + sendMessage cc ct "Error: could not find owner member after joining. Please report it to directory admins." + _ -> sendMessage cc ct $ "Error joining " <> gt <> " " <> displayName <> ", please re-send the link!" + _ -> sendMessage cc ct $ "Error joining " <> gt <> " " <> displayName <> ", please re-send the link!" + + deReregistration :: Contact -> GroupInfo -> Bool -> LinkOwnerSig -> IO () + deReregistration ct g@GroupInfo {groupId, groupProfile = GroupProfile {publicGroup = pg_}} profileChanged LinkOwnerSig {ownerId = Just (B64UrlByteString oIdBytes)} = do + let mId = MemberId oIdBytes + gt = maybe "group" groupTypeStr' pg_ + withDB "getGroupMemberByMemberId" cc (\db -> withExceptT show $ getGroupMemberByMemberId db (vr cc) user g mId) >>= \case + Right ownerMember@GroupMember {memberRole = role, memberStatus} -> + if + | role >= GROwner && memberStatus /= GSMemUnknown -> + getGroupReg cc groupId >>= \case + Right gr + | contactId' ct `isOwner` gr -> sameOwnerReregistration gr gt + | otherwise -> sendMessage cc ct $ "This " <> gt <> " is registered by another owner." + Left _ -> + addGroupReg notifyAdminUsers st cc ct g (GRSPendingApproval 1) $ \gr -> do + void $ setGroupRegOwner cc groupId ownerMember + sendToApprove g gr 1 + | role < GROwner -> sendMessage cc ct $ "You must be the " <> gt <> " owner to register it." + | otherwise -> sendMessage cc ct $ "Waiting for the owner member to be connected to the " <> gt <> "." + Left _ -> sendMessage cc ct $ "Error: could not verify " <> gt <> " ownership. Please report it to directory admins." + where + sameOwnerReregistration gr gt = case groupRegStatus gr of + GRSProposed -> sendMessage cc ct $ "Registration is in progress, waiting for the owner member to be connected to the " <> gt <> "." + GRSPendingConfirmation -> pendingApprovalTransition gr gt 1 + GRSPendingUpdate -> pendingApprovalTransition gr gt 1 + GRSPendingApproval n + | profileChanged -> pendingApprovalTransition gr gt $ n + 1 + | otherwise -> sendMessage cc ct $ T.toTitle gt <> " is already pending approval." + GRSActive + | profileChanged -> pendingApprovalTransition gr gt 1 + | otherwise -> sendMessage cc ct $ T.toTitle gt <> " is already listed in the directory." + GRSSuspended -> sendMessage cc ct $ T.toTitle gt <> " is suspended by admin. Please contact support." + GRSSuspendedBadRoles -> pendingApprovalTransition gr gt 1 + GRSRemoved -> pendingApprovalTransition gr gt 1 + pendingApprovalTransition gr gt n = do + let userGroupRef = userGroupReference gr g + setGroupStatus notifyAdminUsers st env cc groupId (GRSPendingApproval n) $ \gr' -> do + notifyOwner gr' $ + "The " <> gt <> " " <> userGroupRef <> " is submitted for approval.\nIt is hidden from the directory until approved." + sendToApprove g gr' n + deReregistration ct _ _ _ = + sendMessage cc ct "Error: could not verify ownership. Please report it to directory admins." + + deMemberUpdated :: GroupInfo -> GroupMember -> GroupMember -> IO () + deMemberUpdated g@GroupInfo {groupId, groupProfile = GroupProfile {displayName, publicGroup}} fromMember toMember = + withGroupReg g "owner member announced" $ \gr@GroupReg {groupRegStatus, dbOwnerMemberId} -> + when (groupRegStatus == GRSProposed && (dbOwnerMemberId == Just (groupMemberId' fromMember) || dbOwnerMemberId == Just (groupMemberId' toMember))) $ + let GroupMember {memberRole = role} = toMember + gt = maybe "group" groupTypeStr' publicGroup + in if role >= GROwner + then setGroupStatus notifyAdminUsers st env cc groupId (GRSPendingApproval 1) $ \gr' -> do + notifyOwner gr' $ "Joined the " <> gt <> " " <> displayName <> ". Registration is pending approval — it may take up to 48 hours." + sendToApprove g gr' 1 + else do + setGroupStatus notifyAdminUsers st env cc groupId GRSRemoved $ \_ -> pure () + sendMessage' cc (dbContactId gr) "The signing key does not belong to a current owner. Registration cancelled." deUserCommand :: Contact -> ChatItemId -> DirectoryCmd 'DRUser -> IO () deUserCommand ct ciId = \case DCHelp DHSRegistration -> sendMessage cc ct $ - "You must be the group owner to add it to the directory:\n\n\ - \1️⃣ *Invite* " + "You must be the group or channel owner to add it to the directory.\n\n\ + \*To register a channel*, use _Share via chat_ to send its link to " + <> serviceName + <> " bot.\n\n\ + \*To register a group*:\n\ + \1️⃣ *Invite* " <> serviceName <> " bot to your group as *admin* - it will create a link for new members to join.\n\ - \2️⃣ *Add* this link to the group's welcome message.\n\ - \3️⃣ We *review* your group. Once *approved*, anybody can find it.\n\n\ - \_We usually approve within a day, except holidays_. [More details](https://simplex.chat/docs/directory.html#adding-groups-to-the-directory)." + \2️⃣ *Add* this link to the group's welcome message.\n\n\ + \Once your group or channel *approved*, it can be found here or at [simplex.chat/directory](https://simplex.chat/directory).\n\n\ + \_We usually review within a day, except holidays_. [More details](https://simplex.chat/docs/directory.html#adding-groups-to-the-directory)." DCHelp DHSCommands -> sendMessage cc ct $ "/'help commands' - receive this help message.\n\ - \/help - how to register your group to be added to directory.\n\ + \/help - how to register your group or channel to be added to directory.\n\ \/list - list the groups you registered.\n\ \`/role ` - view and set default member role for your group.\n\ \`/filter ` - view and set spam filter settings for group.\n\ \`/link ` - view and upgrade group link.\n\ \`/delete :` - remove the group you submitted from directory, with _ID_ and _name_ as shown by /list command.\n\n\ \To search for groups, send the search text." - DCSearchGroup s -> - sendFoundListedGroups (STSearch s) Nothing "No groups found" $ \gs n -> -- $ sendSearchResults s + DCSearchGroup s ft -> + sendFoundListedGroups (STSearch s) Nothing notFound $ \gs n -> let more = if n > length gs then ", sending top " <> tshow (length gs) else "" in "Found " <> tshow n <> " group(s)" <> more <> "." + where + notFound + | hasSimplexGroupLink ft = "No groups found.\nTo register a group or a channel, please use \"Share via chat\" feature." + | otherwise = "No groups found" + hasSimplexGroupLink = \case + Just fts -> any isGroupLink fts + Nothing -> False + isGroupLink (FormattedText (Just SimplexLink {linkType}) _) = linkType == XLGroup || linkType == XLChannel + isGroupLink _ = False DCSearchNext -> atomically (TM.lookup (contactId' ct) searchRequests) >>= \case Just SearchRequest {searchType, searchTime, lastGroup} -> do @@ -858,14 +1117,17 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName Left e -> sendReply $ "Error reading groups: " <> T.pack e Right gs -> sendGroupsInfo ct ciId isAdmin (gs, length gs) DCDeleteGroup gId gName -> - (if isAdmin then withGroupAndReg sendReply else withUserGroupReg) gId gName $ \GroupInfo {groupProfile = GroupProfile {displayName}} GroupReg {dbGroupId} -> do + (if isAdmin then withGroupAndReg sendReply else withUserGroupReg) gId gName $ \g@GroupInfo {groupProfile = GroupProfile {displayName, publicGroup = pg_}} GroupReg {dbGroupId} -> do + let gt = maybe "group" groupTypeStr' pg_ delGroupReg cc dbGroupId >>= \case Right () -> do logGDelete st dbGroupId - sendReply $ (if isAdmin then "The group " else "Your group ") <> displayName <> " is deleted from the directory" - Left e -> sendReply $ "Error deleting group " <> displayName <> ": " <> T.pack e + sendReply $ (if isAdmin then "The " <> gt <> " " else "Your " <> gt <> " ") <> displayName <> " is deleted from the directory" + when (isJust pg_) $ leavePublicGroup g + Left e -> sendReply $ "Error deleting " <> gt <> " " <> displayName <> ": " <> T.pack e DCMemberRole gId gName_ mRole_ -> - (if isAdmin then withGroupAndReg_ sendReply else withUserGroupReg_) gId gName_ $ \g _gr -> do + (if isAdmin then withGroupAndReg_ sendReply else withUserGroupReg_) gId gName_ $ \g _gr -> + ifPublicGroup g (sendReply "This command is not available for public groups.") $ do let GroupInfo {groupProfile = GroupProfile {displayName = n}} = g case mRole_ of Nothing -> @@ -885,7 +1147,8 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName initialRole n mRole = "The initial member role for the group " <> n <> " is set to *" <> textEncode mRole <> "*\n" onlyViaLink gLink = "*Please note*: it applies only to members joining via this link: " <> groupLinkText gLink DCGroupFilter gId gName_ acceptance_ -> - (if isAdmin then withGroupAndReg_ sendReply else withUserGroupReg_) gId gName_ $ \g _gr -> do + (if isAdmin then withGroupAndReg_ sendReply else withUserGroupReg_) gId gName_ $ \g _gr -> + ifPublicGroup g (sendReply "This command is not available for public groups.") $ do let GroupInfo {groupProfile = GroupProfile {displayName = n}} = g a = groupMemberAcceptance g case acceptance_ of @@ -916,39 +1179,42 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName Just PCAll -> "_enabled_" Just PCNoImage -> "_enabled for profiles without image_" DCShowUpgradeGroupLink gId gName_ -> - (if isAdmin then withGroupAndReg_ sendReply else withUserGroupReg_) gId gName_ $ \GroupInfo {groupId, localDisplayName = gName} _ -> do - let groupRef = groupReference' gId gName - withGroupLinkResult groupRef (sendChatCmd cc $ APIGetGroupLink groupId) $ - \GroupLink {connLinkContact = gLink@(CCLink _ sLnk_), acceptMemberRole, shortLinkDataSet, shortLinkLargeDataSet = BoolDef slLargeDataSet} -> do - let shouldBeUpgraded = isNothing sLnk_ || not shortLinkDataSet || not slLargeDataSet - sendReply $ - T.unlines $ - [ "The link to join the group " <> groupRef <> ":", - groupLinkText gLink, - "New member role: " <> textEncode acceptMemberRole - ] - <> ["The link is being upgraded..." | shouldBeUpgraded] - when shouldBeUpgraded $ do - let send = sendComposedMessage cc ct Nothing . MCText . T.unlines - withGroupLinkResult groupRef (sendChatCmd cc $ APIAddGroupShortLink groupId) $ - \GroupLink {connLinkContact = CCLink _ sLnk_'} -> case (sLnk_, sLnk_') of - (Just _, Just _) -> - send ["The group link is upgraded for: " <> groupRef, "No changes to group needed."] - (Nothing, Just sLnk) -> - sendComposedMessages - cc - (SRDirect $ contactId' ct) - [ MCText $ - T.unlines - [ "Please replace the old link in welcome message of your group " <> groupRef, - "If this is the only change, the group will remain listed in directory without re-approval.", - "", - "The new link:" - ], - MCText $ strEncodeTxt sLnk - ] - (_, Nothing) -> - send ["The short link is not created for " <> groupRef, "Please report it to the developers."] + (if isAdmin then withGroupAndReg_ sendReply else withUserGroupReg_) gId gName_ $ \GroupInfo {groupId, groupProfile = GroupProfile {publicGroup = pg_}, localDisplayName = gName} _ -> case pg_ of + Just pg@PublicGroupProfile {groupLink} -> + sendReply $ "The link to join the " <> groupTypeStr' pg <> " " <> groupReference' gId gName <> ":\n" <> strEncodeTxt groupLink + Nothing -> do + let groupRef = groupReference' gId gName + withGroupLinkResult groupRef (sendChatCmd cc $ APIGetGroupLink groupId) $ + \GroupLink {connLinkContact = gLink@(CCLink _ sLnk_), acceptMemberRole, shortLinkDataSet, shortLinkLargeDataSet = BoolDef slLargeDataSet} -> do + let shouldBeUpgraded = isNothing sLnk_ || not shortLinkDataSet || not slLargeDataSet + sendReply $ + T.unlines $ + [ "The link to join the group " <> groupRef <> ":", + groupLinkText gLink, + "New member role: " <> textEncode acceptMemberRole + ] + <> ["The link is being upgraded..." | shouldBeUpgraded] + when shouldBeUpgraded $ do + let send = sendComposedMessage cc ct Nothing . MCText . T.unlines + withGroupLinkResult groupRef (sendChatCmd cc $ APIAddGroupShortLink groupId) $ + \GroupLink {connLinkContact = CCLink _ sLnk_'} -> case (sLnk_, sLnk_') of + (Just _, Just _) -> + send ["The group link is upgraded for: " <> groupRef, "No changes to group needed."] + (Nothing, Just sLnk) -> + sendComposedMessages + cc + (SRDirect $ contactId' ct) + [ MCText $ + T.unlines + [ "Please replace the old link in welcome message of your group " <> groupRef, + "If this is the only change, the group will remain listed in directory without re-approval.", + "", + "The new link:" + ], + MCText $ strEncodeTxt sLnk + ] + (_, Nothing) -> + send ["The short link is not created for " <> groupRef, "Please report it to the developers."] where withGroupLinkResult groupRef a cb = a >>= \case @@ -1000,8 +1266,8 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName where msgs = replyMsg :| map foundGroup gs <> [moreMsg | moreGroups > 0] replyMsg = (Just ciId, MCText reply) - foundGroup (GroupInfo {groupId, groupProfile = p@GroupProfile {image = image_, memberAdmission}, groupSummary = GroupSummary {currentMembers}}, _) = - let membersStr = "_" <> tshow currentMembers <> " members_" + foundGroup (GroupInfo {groupId, groupProfile = p@GroupProfile {image = image_, memberAdmission}, groupSummary}, _) = + let membersStr = "_" <> membersCountStr p groupSummary <> "_" showId = if isAdmin then tshow groupId <> ". " else "" text = T.unlines $ [showId <> groupInfoText p, membersStr] ++ knockingStr memberAdmission in (Nothing, maybe (MCText text) (\image -> MCImage {text, image}) image_) @@ -1014,40 +1280,49 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName withGroupAndReg sendReply groupId n $ \g gr@GroupReg {userGroupRegId = ugrId, promoted} -> case groupRegStatus gr of GRSPendingApproval gaId - | gaId == groupApprovalId -> + | gaId == groupApprovalId -> do + let GroupInfo {groupProfile = GroupProfile {publicGroup = pg_}} = g + isPublicGroup_ = isJust pg_ + gt = maybe "group" groupTypeStr' pg_ getDuplicateGroup g >>= \case Left e -> sendReply $ "Error: getDuplicateGroup. Please notify the developers.\n" <> T.pack e - Right DGReserved -> sendReply $ "The group " <> groupRef <> " is already listed in the directory." - _ -> getGroupRolesStatus g gr >>= \case - Right GRSOk -> do - let grPromoted' - | promoted || knownCt `elem` superUsers = fromMaybe promoted promote - | otherwise = False - setGroupStatusPromo sendReply st env cc gr GRSActive grPromoted' $ do - let approved = "The group " <> userGroupReference' gr n <> " is approved" - notifyOwner gr $ - (approved <> " and listed in directory - please moderate it!\n") - <> "_Please note_: if you change the group profile it will be hidden from directory until it is re-approved.\n\n" - <> "Supported commands:\n" - <> ("/'filter " <> tshow ugrId <> "' - to configure anti-spam filter.\n") - <> ("/'role " <> tshow ugrId <> "' - to set default member role.\n") - <> ("/'link " <> tshow ugrId <> "' - to view/upgrade group link.") - invited <- - forM ownersGroup $ \og@KnownGroup {localDisplayName = ogName} -> do - inviteToOwnersGroup og gr $ \case - Right () -> do - owner <- groupOwnerInfo groupRef $ dbContactId gr - pure $ "Invited " <> owner <> " to owners' group " <> viewName ogName - Left err -> pure err - sendReply $ "Group approved" <> (if grPromoted' then " (promoted)" else "") <> "!" <> maybe "" ("\n" <>) invited - notifyOtherSuperUsers $ approved <> " by " <> viewName (localDisplayName' ct) <> maybe "" ("\n" <>) invited - Right GRSServiceNotAdmin -> replyNotApproved serviceNotAdmin - Right GRSContactNotOwner -> replyNotApproved "user is not an owner." - Right GRSBadRoles -> replyNotApproved $ "user is not an owner, " <> serviceNotAdmin - Left e -> sendReply $ "Error: getGroupRolesStatus. Please notify the developers.\n" <> T.pack e - where - replyNotApproved reason = sendReply $ "Group is not approved: " <> reason - serviceNotAdmin = serviceName <> " is not an admin." + Right DGReserved -> sendReply $ "The " <> gt <> " " <> groupRef <> " is already listed in the directory." + _ -> do + rolesOk <- if isPublicGroup_ then pure (Right GRSOk) else getGroupRolesStatus g gr + case rolesOk of + Right GRSOk -> do + let grPromoted' + | promoted || knownCt `elem` superUsers = fromMaybe promoted promote + | otherwise = False + setGroupStatusPromo sendReply st env cc gr GRSActive grPromoted' $ do + let approved = "The " <> gt <> " " <> userGroupReference' gr n <> " is approved" + let commands + | isPublicGroup_ = "" + | otherwise = + "\n\nSupported commands:\n" + <> ("/'filter " <> tshow ugrId <> "' - to configure anti-spam filter.\n") + <> ("/'role " <> tshow ugrId <> "' - to set default member role.\n") + <> ("/'link " <> tshow ugrId <> "' - to view/upgrade group link.") + notifyOwner gr $ + (approved <> " and listed in directory - please moderate it!\n") + <> "_Please note_: if you change the " <> gt <> " profile it will be hidden from directory until it is re-approved." + <> commands + invited <- + forM ownersGroup $ \og@KnownGroup {localDisplayName = ogName} -> do + inviteToOwnersGroup og gr $ \case + Right () -> do + owner <- groupOwnerInfo groupRef $ dbContactId gr + pure $ "Invited " <> owner <> " to owners' group " <> viewName ogName + Left err -> pure err + sendReply $ T.toTitle gt <> " approved" <> (if grPromoted' then " (promoted)" else "") <> "!" <> maybe "" ("\n" <>) invited + notifyOtherSuperUsers $ approved <> " by " <> viewName (localDisplayName' ct) <> maybe "" ("\n" <>) invited + Right GRSServiceNotAdmin -> replyNotApproved serviceNotAdmin + Right GRSContactNotOwner -> replyNotApproved "user is not an owner." + Right GRSBadRoles -> replyNotApproved $ "user is not an owner, " <> serviceNotAdmin + Left e -> sendReply $ "Error: getGroupRolesStatus. Please notify the developers.\n" <> T.pack e + where + replyNotApproved reason = sendReply $ "Group is not approved: " <> reason + serviceNotAdmin = serviceName <> " is not an admin." | otherwise -> sendReply "Incorrect approval code" _ -> sendReply $ "Error: the group " <> groupRef <> " is not pending approval." where @@ -1189,7 +1464,7 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName GroupReg {userGroupRegId, groupRegStatus} = gr useGroupId = if isAdmin then groupId else userGroupRegId statusStr = "Status: " <> groupRegStatusText groupRegStatus - membersStr = "_" <> tshow (currentMembers groupSummary) <> " members_" + membersStr = "_" <> membersCountStr p groupSummary <> "_" cmds = "/'role " <> tshow useGroupId <> "', /'filter " <> tshow useGroupId <> "'" ownerStr = maybe "" (("Owner: " <>) . either (("getContact error: " <>) . T.pack) localDisplayName') ct_ text = T.unlines $ [tshow useGroupId <> ". " <> groupInfoText p] ++ [ownerStr | isAdmin] ++ [membersStr, statusStr] ++ knockingStr memberAdmission ++ [cmds] @@ -1203,7 +1478,7 @@ setGroupStatusPromo sendReply st env cc GroupReg {dbGroupId = gId} grStatus' grP Left e -> sendReply $ "Error updating group " <> tshow gId <> " status: " <> T.pack e Right (status, grPromoted) -> do when ((status == DSListed || status' == DSListed) && (status /= status' || grPromoted /= grPromoted')) $ - listingsUpdated env cc + listingsUpdated env logGUpdateStatus st gId grStatus' logGUpdatePromotion st gId grPromoted' continue @@ -1223,7 +1498,7 @@ setGroupStatus sendMsg st env cc gId grStatus' continue = do Left e -> sendMsg $ "Error updating group " <> tshow gId <> " status: " <> T.pack e Right (grStatus, gr) -> do let status = grDirectoryStatus grStatus - when ((status == DSListed || status' == DSListed) && status /= status') $ listingsUpdated env cc + when ((status == DSListed || status' == DSListed) && status /= status') $ listingsUpdated env logGUpdateStatus st gId grStatus' continue gr @@ -1232,7 +1507,7 @@ setGroupPromoted sendReply st env cc GroupReg {dbGroupId = gId} grPromoted' cont setGroupPromotedStore cc gId grPromoted' >>= \case Left e -> sendReply $ "Error updating group " <> tshow gId <> " status: " <> T.pack e Right (status, grPromoted) -> do - when (status == DSListed && grPromoted' /= grPromoted) $ listingsUpdated env cc + when (status == DSListed && grPromoted' /= grPromoted) $ listingsUpdated env logGUpdatePromotion st gId grPromoted' continue diff --git a/bots/api/COMMANDS.md b/bots/api/COMMANDS.md index ab3ec3d241..5ca2c4260a 100644 --- a/bots/api/COMMANDS.md +++ b/bots/api/COMMANDS.md @@ -1285,6 +1285,7 @@ Determine SimpleX link type and if the bot is already connected via this link. **Parameters**: - userId: int64 - connectionLink: string? +- resolveKnown: bool - linkOwnerSig: [LinkOwnerSig](./TYPES.md#linkownersig)? **Syntax**: diff --git a/bots/api/TYPES.md b/bots/api/TYPES.md index 23fc79b634..ceb38939b1 100644 --- a/bots/api/TYPES.md +++ b/bots/api/TYPES.md @@ -95,6 +95,7 @@ This file is generated automatically. - [GroupInfo](#groupinfo) - [GroupKeys](#groupkeys) - [GroupLink](#grouplink) +- [GroupLinkOwner](#grouplinkowner) - [GroupLinkPlan](#grouplinkplan) - [GroupMember](#groupmember) - [GroupMemberAdmission](#groupmemberadmission) @@ -170,6 +171,7 @@ This file is generated automatically. - [SrvError](#srverror) - [StoreError](#storeerror) - [SubscriptionStatus](#subscriptionstatus) +- [SupportGroupPreference](#supportgrouppreference) - [SwitchPhase](#switchphase) - [TimedMessagesGroupPreference](#timedmessagesgrouppreference) - [TimedMessagesPreference](#timedmessagespreference) @@ -1846,6 +1848,7 @@ connFullLink + ((' ' + connShortLink) if connShortLink is not None else '') # Py ## E2EInfo **Record type**: +- public: bool? - pqEnabled: bool? @@ -2107,6 +2110,7 @@ Phone: - simplexLinks: [RoleGroupPreference](#rolegrouppreference) - reports: [GroupPreference](#grouppreference) - history: [GroupPreference](#grouppreference) +- support: [SupportGroupPreference](#supportgrouppreference) - sessions: [RoleGroupPreference](#rolegrouppreference) - comments: [CommentsGroupPreference](#commentsgrouppreference) - commands: [[ChatBotCommand](#chatbotcommand)] @@ -2198,6 +2202,7 @@ MemberSupport: - "simplexLinks" - "reports" - "history" +- "support" - "sessions" - "comments" @@ -2264,6 +2269,15 @@ MemberSupport: - acceptMemberRole: [GroupMemberRole](#groupmemberrole) +--- + +## GroupLinkOwner + +**Record type**: +- memberId: string +- memberKey: string + + --- ## GroupLinkPlan @@ -2290,6 +2304,9 @@ ConnectingProhibit: Known: - type: "known" - groupInfo: [GroupInfo](#groupinfo) +- groupUpdated: bool +- ownerVerification: [OwnerVerification](#ownerverification)? +- linkOwners: [[GroupLinkOwner](#grouplinkowner)] NoRelays: - type: "noRelays" @@ -2420,6 +2437,7 @@ NoRelays: - simplexLinks: [RoleGroupPreference](#rolegrouppreference)? - reports: [GroupPreference](#grouppreference)? - history: [GroupPreference](#grouppreference)? +- support: [SupportGroupPreference](#supportgrouppreference)? - sessions: [RoleGroupPreference](#rolegrouppreference)? - comments: [CommentsGroupPreference](#commentsgrouppreference)? - commands: [[ChatBotCommand](#chatbotcommand)]? @@ -2513,6 +2531,7 @@ Public: **Enum type**: - "channel" +- "group" --- @@ -3884,6 +3903,14 @@ NoSub: - type: "noSub" +--- + +## SupportGroupPreference + +**Record type**: +- enable: [GroupFeatureEnabled](#groupfeatureenabled) + + --- ## SwitchPhase diff --git a/bots/src/API/Docs/Types.hs b/bots/src/API/Docs/Types.hs index e2f67c88c6..933858c5cc 100644 --- a/bots/src/API/Docs/Types.hs +++ b/bots/src/API/Docs/Types.hs @@ -278,6 +278,7 @@ chatTypesDocsData = (sti @GroupKeys, STRecord, "", [], "", ""), (sti @GroupRootKey, STUnion, "GRK", [], "", ""), (sti @GroupLink, STRecord, "", [], "", ""), + (sti @GroupLinkOwner, STRecord, "", [], "", ""), (sti @GroupLinkPlan, STUnion, "GLP", [], "", ""), (sti @GroupMember, STRecord, "", [], "", ""), (sti @GroupMemberAdmission, STRecord, "", [], "", ""), @@ -294,7 +295,7 @@ chatTypesDocsData = (sti @GroupShortLinkInfo, STRecord, "", [], "", ""), (sti @GroupSummary, STRecord, "", [], "", ""), (sti @GroupSupportChat, STRecord, "", [], "", ""), - (sti @GroupType, STEnum1, "GT", ["GTUnknown"], "", ""), + (sti @GroupType, STEnum, "GT", ["GTUnknown"], "", ""), (sti @HandshakeError, STEnum, "", [], "", ""), (sti @InlineFileMode, STEnum, "IFM", [], "", ""), (sti @InvitationLinkPlan, STUnion, "ILP", [], "", ""), @@ -353,6 +354,7 @@ chatTypesDocsData = (sti @SrvError, STUnion, "SrvErr", [], "", ""), (sti @StoreError, STUnion, "SE", [], "", ""), (sti @SubscriptionStatus, STUnion, "SS", [], "", ""), + (sti @SupportGroupPreference, STRecord, "", [], "", ""), (sti @SwitchPhase, STEnum, "SP", [], "", ""), (sti @TimedMessagesGroupPreference, STRecord, "", [], "", ""), (sti @TimedMessagesPreference, STRecord, "", [], "", ""), @@ -482,6 +484,7 @@ deriving instance Generic GroupInfo deriving instance Generic GroupKeys deriving instance Generic GroupRootKey deriving instance Generic GroupLink +deriving instance Generic GroupLinkOwner deriving instance Generic GroupLinkPlan deriving instance Generic GroupMember deriving instance Generic GroupMemberAdmission @@ -561,6 +564,7 @@ deriving instance Generic SndGroupEvent deriving instance Generic SrvError deriving instance Generic StoreError deriving instance Generic SubscriptionStatus +deriving instance Generic SupportGroupPreference deriving instance Generic SwitchPhase deriving instance Generic TimedMessagesGroupPreference deriving instance Generic TimedMessagesPreference diff --git a/packages/simplex-chat-client/types/typescript/package.json b/packages/simplex-chat-client/types/typescript/package.json index 8d05eb460c..329003a6b8 100644 --- a/packages/simplex-chat-client/types/typescript/package.json +++ b/packages/simplex-chat-client/types/typescript/package.json @@ -1,6 +1,6 @@ { "name": "@simplex-chat/types", - "version": "0.4.0", + "version": "0.5.0", "description": "TypeScript types for SimpleX Chat bot libraries", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/simplex-chat-client/types/typescript/src/commands.ts b/packages/simplex-chat-client/types/typescript/src/commands.ts index 36692739dd..9c5c31ceb2 100644 --- a/packages/simplex-chat-client/types/typescript/src/commands.ts +++ b/packages/simplex-chat-client/types/typescript/src/commands.ts @@ -471,6 +471,7 @@ export namespace APIAddContact { export interface APIConnectPlan { userId: number // int64 connectionLink?: string + resolveKnown: boolean linkOwnerSig?: T.LinkOwnerSig } diff --git a/packages/simplex-chat-client/types/typescript/src/types.ts b/packages/simplex-chat-client/types/typescript/src/types.ts index 6f4f0b6525..eed9d5edc1 100644 --- a/packages/simplex-chat-client/types/typescript/src/types.ts +++ b/packages/simplex-chat-client/types/typescript/src/types.ts @@ -2094,6 +2094,7 @@ export interface DroppedMsg { } export interface E2EInfo { + public?: boolean pqEnabled?: boolean } @@ -2442,6 +2443,7 @@ export interface FullGroupPreferences { simplexLinks: RoleGroupPreference reports: GroupPreference history: GroupPreference + support: SupportGroupPreference sessions: RoleGroupPreference comments: CommentsGroupPreference commands: ChatBotCommand[] @@ -2515,6 +2517,7 @@ export enum GroupFeature { SimplexLinks = "simplexLinks", Reports = "reports", History = "history", + Support = "support", Sessions = "sessions", Comments = "comments", } @@ -2565,6 +2568,11 @@ export interface GroupLink { acceptMemberRole: GroupMemberRole } +export interface GroupLinkOwner { + memberId: string + memberKey: string +} + export type GroupLinkPlan = | GroupLinkPlan.Ok | GroupLinkPlan.OwnLink @@ -2610,6 +2618,9 @@ export namespace GroupLinkPlan { export interface Known extends Interface { type: "known" groupInfo: GroupInfo + groupUpdated: boolean + ownerVerification?: OwnerVerification + linkOwners: GroupLinkOwner[] } export interface NoRelays extends Interface { @@ -2706,6 +2717,7 @@ export interface GroupPreferences { simplexLinks?: RoleGroupPreference reports?: GroupPreference history?: GroupPreference + support?: SupportGroupPreference sessions?: RoleGroupPreference comments?: CommentsGroupPreference commands?: ChatBotCommand[] @@ -2776,6 +2788,7 @@ export interface GroupSupportChat { export enum GroupType { Channel = "channel", + Group = "group", } export enum HandshakeError { @@ -4627,6 +4640,10 @@ export namespace SubscriptionStatus { } } +export interface SupportGroupPreference { + enable: GroupFeatureEnabled +} + export enum SwitchPhase { Started = "started", Confirmed = "confirmed", diff --git a/packages/simplex-chat-nodejs/README.md b/packages/simplex-chat-nodejs/README.md index e75dab3f96..2132c47a79 100644 --- a/packages/simplex-chat-nodejs/README.md +++ b/packages/simplex-chat-nodejs/README.md @@ -14,7 +14,7 @@ Please share your use cases and implementations. ## Quick start: a simple bot ``` -npm i simplex-chat@6.5.0-beta.4.4 +npm i simplex-chat@6.5.0-beta.10 ``` Simple bot that replies with squares of numbers you send to it: @@ -26,7 +26,7 @@ Simple bot that replies with squares of numbers you send to it: // const {bot} = await import("../dist/index.js") const [chat, _user, _address] = await bot.run({ profile: {displayName: "Squaring bot example", fullName: ""}, - dbOpts: {dbFilePrefix: "./squaring_bot", dbKey: ""}, + dbOpts: {type: "sqlite", filePrefix: "./squaring_bot"}, options: { addressSettings: {welcomeMessage: "Send a number, I will square it.", }, @@ -62,6 +62,44 @@ There is an example with more options in [./examples/squaring-bot.ts](./examples You can run it with: `npx ts-node ./examples/squaring-bot.ts` +## PostgreSQL backend + +By default, the package uses SQLite. To use PostgreSQL instead: + +```bash +npm install simplex-chat --simplex_backend=postgres +``` + +Or persist the setting in `.npmrc`: + +```ini +simplex_backend=postgres +``` + +### Prerequisites (PostgreSQL) + +- `libpq5` must be installed on the host system (`apt install libpq5` on Debian/Ubuntu) +- PostgreSQL backend is only available for Linux x86_64 +- A PostgreSQL server accessible via connection string + +### Passing PostgreSQL connection + +The `DbConfig` type is a discriminated union — pick the variant that matches +the backend you installed: + +```ts +// SQLite (default) +dbOpts: {type: "sqlite", filePrefix: "./data/bot"} +// optional: encryptionKey: "" + +// PostgreSQL +dbOpts: { + type: "postgres", + connectionString: "postgres://user:pass@host/db", + // schemaPrefix: "bot", // optional — defaults to "simplex_v1" +} +``` + ## Documentation The library docs are [here](./docs/README.md). diff --git a/packages/simplex-chat-nodejs/docs/Namespace.api.md b/packages/simplex-chat-nodejs/docs/Namespace.api.md index a1b3d2ca5a..5771b8450e 100644 --- a/packages/simplex-chat-nodejs/docs/Namespace.api.md +++ b/packages/simplex-chat-nodejs/docs/Namespace.api.md @@ -24,6 +24,7 @@ You need to use it in bot event handlers, and for any other use cases. ## Type Aliases +- [DbConfig](api.TypeAlias.DbConfig.md) - [EventSubscriberFunc](api.TypeAlias.EventSubscriberFunc.md) - [EventSubscribers](api.TypeAlias.EventSubscribers.md) diff --git a/packages/simplex-chat-nodejs/docs/Namespace.bot.md b/packages/simplex-chat-nodejs/docs/Namespace.bot.md index 447b0b6f68..4b9171d0f7 100644 --- a/packages/simplex-chat-nodejs/docs/Namespace.bot.md +++ b/packages/simplex-chat-nodejs/docs/Namespace.bot.md @@ -12,9 +12,12 @@ It automates creating and updating of the bot profile, address and bot commands ## Interfaces - [BotConfig](bot.Interface.BotConfig.md) -- [BotDbOpts](bot.Interface.BotDbOpts.md) - [BotOptions](bot.Interface.BotOptions.md) +## Type Aliases + +- [BotDbOpts](bot.TypeAlias.BotDbOpts.md) + ## Functions - [run](bot.Function.run.md) diff --git a/packages/simplex-chat-nodejs/docs/api.Class.ChatApi.md b/packages/simplex-chat-nodejs/docs/api.Class.ChatApi.md index 6812740aa2..b81677b976 100644 --- a/packages/simplex-chat-nodejs/docs/api.Class.ChatApi.md +++ b/packages/simplex-chat-nodejs/docs/api.Class.ChatApi.md @@ -6,7 +6,7 @@ # Class: ChatApi -Defined in: [src/api.ts:62](../src/api.ts#L62) +Defined in: [src/api.ts:97](../src/api.ts#L97) Main API class for interacting with the chat core library. @@ -16,7 +16,7 @@ Main API class for interacting with the chat core library. > `protected` **ctrl\_**: `bigint` \| `undefined` -Defined in: [src/api.ts:68](../src/api.ts#L68) +Defined in: [src/api.ts:103](../src/api.ts#L103) ## Accessors @@ -26,7 +26,7 @@ Defined in: [src/api.ts:68](../src/api.ts#L68) > **get** **ctrl**(): `bigint` -Defined in: [src/api.ts:295](../src/api.ts#L295) +Defined in: [src/api.ts:329](../src/api.ts#L329) Chat controller reference @@ -42,7 +42,7 @@ Chat controller reference > **get** **initialized**(): `boolean` -Defined in: [src/api.ts:281](../src/api.ts#L281) +Defined in: [src/api.ts:315](../src/api.ts#L315) Chat controller is initialized @@ -58,7 +58,7 @@ Chat controller is initialized > **get** **started**(): `boolean` -Defined in: [src/api.ts:288](../src/api.ts#L288) +Defined in: [src/api.ts:322](../src/api.ts#L322) Chat controller is started @@ -72,7 +72,7 @@ Chat controller is started > **apiAcceptContactRequest**(`contactReqId`): `Promise`\<`Contact`\> -Defined in: [src/api.ts:697](../src/api.ts#L697) +Defined in: [src/api.ts:731](../src/api.ts#L731) Accept contact request. Network usage: interactive. @@ -93,7 +93,7 @@ Network usage: interactive. > **apiAcceptMember**(`groupId`, `groupMemberId`, `memberRole`): `Promise`\<`GroupMember`\> -Defined in: [src/api.ts:517](../src/api.ts#L517) +Defined in: [src/api.ts:551](../src/api.ts#L551) Accept group member. Requires Admin role. Network usage: background. @@ -122,7 +122,7 @@ Network usage: background. > **apiAddMember**(`groupId`, `contactId`, `memberRole`): `Promise`\<`GroupMember`\> -Defined in: [src/api.ts:497](../src/api.ts#L497) +Defined in: [src/api.ts:531](../src/api.ts#L531) Add contact to group. Requires bot to have Admin role. Network usage: interactive. @@ -151,7 +151,7 @@ Network usage: interactive. > **apiBlockMembersForAll**(`groupId`, `groupMemberIds`, `blocked`): `Promise`\<`void`\> -Defined in: [src/api.ts:537](../src/api.ts#L537) +Defined in: [src/api.ts:571](../src/api.ts#L571) Block members. Requires Moderator role. Network usage: background. @@ -180,7 +180,7 @@ Network usage: background. > **apiCancelFile**(`fileId`): `Promise`\<`void`\> -Defined in: [src/api.ts:487](../src/api.ts#L487) +Defined in: [src/api.ts:521](../src/api.ts#L521) Cancel file. Network usage: background. @@ -201,7 +201,7 @@ Network usage: background. > **apiChatItemReaction**(`chatType`, `chatId`, `chatItemId`, `add`, `reaction`): `Promise`\<`ChatItemDeletion`[]\> -Defined in: [src/api.ts:461](../src/api.ts#L461) +Defined in: [src/api.ts:495](../src/api.ts#L495) Add/remove message reaction. Network usage: background. @@ -238,7 +238,7 @@ Network usage: background. > **apiConnect**(`userId`, `incognito`, `preparedLink?`): `Promise`\<[`ConnReqType`](api.Enumeration.ConnReqType.md)\> -Defined in: [src/api.ts:666](../src/api.ts#L666) +Defined in: [src/api.ts:700](../src/api.ts#L700) Connect via prepared SimpleX link. The link can be 1-time invitation link, contact address or group link Network usage: interactive. @@ -267,7 +267,7 @@ Network usage: interactive. > **apiConnectActiveUser**(`connLink`): `Promise`\<[`ConnReqType`](api.Enumeration.ConnReqType.md)\> -Defined in: [src/api.ts:675](../src/api.ts#L675) +Defined in: [src/api.ts:709](../src/api.ts#L709) Connect via SimpleX link as string in the active user profile. Network usage: interactive. @@ -288,7 +288,7 @@ Network usage: interactive. > **apiConnectPlan**(`userId`, `connectionLink`): `Promise`\<\[`ConnectionPlan`, `CreatedConnLink`\]\> -Defined in: [src/api.ts:656](../src/api.ts#L656) +Defined in: [src/api.ts:690](../src/api.ts#L690) Determine SimpleX link type and if the bot is already connected via this link. Network usage: interactive. @@ -313,7 +313,7 @@ Network usage: interactive. > **apiCreateActiveUser**(`profile?`): `Promise`\<`User`\> -Defined in: [src/api.ts:774](../src/api.ts#L774) +Defined in: [src/api.ts:849](../src/api.ts#L849) Create new user profile Network usage: no. @@ -334,7 +334,7 @@ Network usage: no. > **apiCreateGroupLink**(`groupId`, `memberRole`): `Promise`\<`string`\> -Defined in: [src/api.ts:597](../src/api.ts#L597) +Defined in: [src/api.ts:631](../src/api.ts#L631) Create group link. Network usage: interactive. @@ -359,7 +359,7 @@ Network usage: interactive. > **apiCreateLink**(`userId`): `Promise`\<`string`\> -Defined in: [src/api.ts:643](../src/api.ts#L643) +Defined in: [src/api.ts:677](../src/api.ts#L677) Create 1-time invitation link. Network usage: interactive. @@ -376,11 +376,37 @@ Network usage: interactive. *** +### apiCreateMemberContact() + +> **apiCreateMemberContact**(`groupId`, `groupMemberId`): `Promise`\<`Contact`\> + +Defined in: [src/api.ts:915](../src/api.ts#L915) + +Create a direct message contact with a group member. +Returns the created contact. +Network usage: interactive. + +#### Parameters + +##### groupId + +`number` + +##### groupMemberId + +`number` + +#### Returns + +`Promise`\<`Contact`\> + +*** + ### apiCreateUserAddress() > **apiCreateUserAddress**(`userId`): `Promise`\<`CreatedConnLink`\> -Defined in: [src/api.ts:312](../src/api.ts#L312) +Defined in: [src/api.ts:346](../src/api.ts#L346) Create bot address. Network usage: interactive. @@ -399,9 +425,9 @@ Network usage: interactive. ### apiDeleteChat() -> **apiDeleteChat**(`chatType`, `chatId`, `deleteMode`): `Promise`\<`void`\> +> **apiDeleteChat**(`chatType`, `chatId`, `deleteMode?`): `Promise`\<`void`\> -Defined in: [src/api.ts:737](../src/api.ts#L737) +Defined in: [src/api.ts:771](../src/api.ts#L771) Delete chat. Network usage: background. @@ -416,7 +442,7 @@ Network usage: background. `number` -##### deleteMode +##### deleteMode? `ChatDeleteMode` = `...` @@ -430,7 +456,7 @@ Network usage: background. > **apiDeleteChatItems**(`chatType`, `chatId`, `chatItemIds`, `deleteMode`): `Promise`\<`ChatItemDeletion`[]\> -Defined in: [src/api.ts:436](../src/api.ts#L436) +Defined in: [src/api.ts:470](../src/api.ts#L470) Delete message. Network usage: background. @@ -463,7 +489,7 @@ Network usage: background. > **apiDeleteGroupLink**(`groupId`): `Promise`\<`void`\> -Defined in: [src/api.ts:619](../src/api.ts#L619) +Defined in: [src/api.ts:653](../src/api.ts#L653) Delete group link. Network usage: background. @@ -484,7 +510,7 @@ Network usage: background. > **apiDeleteMemberChatItem**(`groupId`, `chatItemIds`): `Promise`\<`ChatItemDeletion`[]\> -Defined in: [src/api.ts:451](../src/api.ts#L451) +Defined in: [src/api.ts:485](../src/api.ts#L485) Moderate message. Requires Moderator role (and higher than message author's). Network usage: background. @@ -509,7 +535,7 @@ Network usage: background. > **apiDeleteUser**(`userId`, `delSMPQueues`, `viewPwd?`): `Promise`\<`void`\> -Defined in: [src/api.ts:804](../src/api.ts#L804) +Defined in: [src/api.ts:879](../src/api.ts#L879) Delete user profile. Network usage: background. @@ -538,7 +564,7 @@ Network usage: background. > **apiDeleteUserAddress**(`userId`): `Promise`\<`void`\> -Defined in: [src/api.ts:322](../src/api.ts#L322) +Defined in: [src/api.ts:356](../src/api.ts#L356) Deletes a user address. Network usage: background. @@ -559,7 +585,7 @@ Network usage: background. > **apiGetActiveUser**(): `Promise`\<`User` \| `undefined`\> -Defined in: [src/api.ts:754](../src/api.ts#L754) +Defined in: [src/api.ts:829](../src/api.ts#L829) Get active user profile Network usage: no. @@ -570,11 +596,40 @@ Network usage: no. *** +### apiGetChat() + +> **apiGetChat**(`chatType`, `chatId`, `count`): `Promise`\<`any`\> + +Defined in: [src/api.ts:819](../src/api.ts#L819) + +Get chat items. +Network usage: no. + +#### Parameters + +##### chatType + +`ChatType` + +##### chatId + +`number` + +##### count + +`number` + +#### Returns + +`Promise`\<`any`\> + +*** + ### apiGetGroupLink() > **apiGetGroupLink**(`groupId`): `Promise`\<`GroupLink`\> -Defined in: [src/api.ts:628](../src/api.ts#L628) +Defined in: [src/api.ts:662](../src/api.ts#L662) Get group link. Network usage: no. @@ -595,7 +650,7 @@ Network usage: no. > **apiGetGroupLinkStr**(`groupId`): `Promise`\<`string`\> -Defined in: [src/api.ts:634](../src/api.ts#L634) +Defined in: [src/api.ts:668](../src/api.ts#L668) #### Parameters @@ -613,7 +668,7 @@ Defined in: [src/api.ts:634](../src/api.ts#L634) > **apiGetUserAddress**(`userId`): `Promise`\<`UserContactLink` \| `undefined`\> -Defined in: [src/api.ts:332](../src/api.ts#L332) +Defined in: [src/api.ts:366](../src/api.ts#L366) Get bot address and settings. Network usage: no. @@ -634,7 +689,7 @@ Network usage: no. > **apiJoinGroup**(`groupId`): `Promise`\<`GroupInfo`\> -Defined in: [src/api.ts:507](../src/api.ts#L507) +Defined in: [src/api.ts:541](../src/api.ts#L541) Join group. Network usage: interactive. @@ -655,7 +710,7 @@ Network usage: interactive. > **apiLeaveGroup**(`groupId`): `Promise`\<`GroupInfo`\> -Defined in: [src/api.ts:557](../src/api.ts#L557) +Defined in: [src/api.ts:591](../src/api.ts#L591) Leave group. Network usage: background. @@ -676,7 +731,7 @@ Network usage: background. > **apiListContacts**(`userId`): `Promise`\<`Contact`[]\> -Defined in: [src/api.ts:717](../src/api.ts#L717) +Defined in: [src/api.ts:751](../src/api.ts#L751) Get contacts. Network usage: no. @@ -697,7 +752,7 @@ Network usage: no. > **apiListGroups**(`userId`, `contactId?`, `search?`): `Promise`\<`GroupInfo`[]\> -Defined in: [src/api.ts:727](../src/api.ts#L727) +Defined in: [src/api.ts:761](../src/api.ts#L761) Get groups. Network usage: no. @@ -726,7 +781,7 @@ Network usage: no. > **apiListMembers**(`groupId`): `Promise`\<`GroupMember`[]\> -Defined in: [src/api.ts:567](../src/api.ts#L567) +Defined in: [src/api.ts:601](../src/api.ts#L601) Get group members. Network usage: no. @@ -747,7 +802,7 @@ Network usage: no. > **apiListUsers**(): `Promise`\<`UserInfo`[]\> -Defined in: [src/api.ts:784](../src/api.ts#L784) +Defined in: [src/api.ts:859](../src/api.ts#L859) Get all user profiles Network usage: no. @@ -762,7 +817,7 @@ Network usage: no. > **apiNewGroup**(`userId`, `groupProfile`): `Promise`\<`GroupInfo`\> -Defined in: [src/api.ts:577](../src/api.ts#L577) +Defined in: [src/api.ts:611](../src/api.ts#L611) Create group. Network usage: no. @@ -787,7 +842,7 @@ Network usage: no. > **apiReceiveFile**(`fileId`): `Promise`\<`AChatItem`\> -Defined in: [src/api.ts:477](../src/api.ts#L477) +Defined in: [src/api.ts:511](../src/api.ts#L511) Receive file. Network usage: no. @@ -808,7 +863,7 @@ Network usage: no. > **apiRejectContactRequest**(`contactReqId`): `Promise`\<`void`\> -Defined in: [src/api.ts:707](../src/api.ts#L707) +Defined in: [src/api.ts:741](../src/api.ts#L741) Reject contact request. The user who sent the request is **not notified**. Network usage: no. @@ -827,9 +882,9 @@ Network usage: no. ### apiRemoveMembers() -> **apiRemoveMembers**(`groupId`, `memberIds`, `withMessages`): `Promise`\<`GroupMember`[]\> +> **apiRemoveMembers**(`groupId`, `memberIds`, `withMessages?`): `Promise`\<`GroupMember`[]\> -Defined in: [src/api.ts:547](../src/api.ts#L547) +Defined in: [src/api.ts:581](../src/api.ts#L581) Remove members. Requires Admin role. Network usage: background. @@ -844,7 +899,7 @@ Network usage: background. `number`[] -##### withMessages +##### withMessages? `boolean` = `false` @@ -854,11 +909,37 @@ Network usage: background. *** +### apiSendMemberContactInvitation() + +> **apiSendMemberContactInvitation**(`contactId`, `message?`): `Promise`\<`Contact`\> + +Defined in: [src/api.ts:926](../src/api.ts#L926) + +Send a direct message invitation to a group member contact. +The contact must have been created with [apiCreateMemberContact](#apicreatemembercontact). +Network usage: interactive. + +#### Parameters + +##### contactId + +`number` + +##### message? + +`string` \| `MsgContent` + +#### Returns + +`Promise`\<`Contact`\> + +*** + ### apiSendMessages() -> **apiSendMessages**(`chat`, `messages`, `liveMessage`): `Promise`\<`AChatItem`[]\> +> **apiSendMessages**(`chat`, `messages`, `liveMessage?`): `Promise`\<`AChatItem`[]\> -Defined in: [src/api.ts:381](../src/api.ts#L381) +Defined in: [src/api.ts:415](../src/api.ts#L415) Send messages. Network usage: background. @@ -867,13 +948,13 @@ Network usage: background. ##### chat -`ChatInfo` | `ChatRef` | \[`ChatType`, `number`\] +`ChatInfo` \| `ChatRef` \| \[`ChatType`, `number`\] ##### messages `ComposedMessage`[] -##### liveMessage +##### liveMessage? `boolean` = `false` @@ -887,7 +968,7 @@ Network usage: background. > **apiSendTextMessage**(`chat`, `text`, `inReplyTo?`): `Promise`\<`AChatItem`[]\> -Defined in: [src/api.ts:403](../src/api.ts#L403) +Defined in: [src/api.ts:437](../src/api.ts#L437) Send text message. Network usage: background. @@ -896,7 +977,7 @@ Network usage: background. ##### chat -`ChatInfo` | `ChatRef` | \[`ChatType`, `number`\] +`ChatInfo` \| `ChatRef` \| \[`ChatType`, `number`\] ##### text @@ -916,7 +997,7 @@ Network usage: background. > **apiSendTextReply**(`chatItem`, `text`): `Promise`\<`AChatItem`[]\> -Defined in: [src/api.ts:411](../src/api.ts#L411) +Defined in: [src/api.ts:445](../src/api.ts#L445) Send text message in reply to received message. Network usage: background. @@ -941,7 +1022,7 @@ Network usage: background. > **apiSetActiveUser**(`userId`, `viewPwd?`): `Promise`\<`User`\> -Defined in: [src/api.ts:794](../src/api.ts#L794) +Defined in: [src/api.ts:869](../src/api.ts#L869) Set active user profile Network usage: no. @@ -966,7 +1047,7 @@ Network usage: no. > **apiSetAddressSettings**(`userId`, `__namedParameters`): `Promise`\<`void`\> -Defined in: [src/api.ts:364](../src/api.ts#L364) +Defined in: [src/api.ts:398](../src/api.ts#L398) Set bot address settings. Network usage: interactive. @@ -987,11 +1068,61 @@ Network usage: interactive. *** +### apiSetAutoAcceptMemberContacts() + +> **apiSetAutoAcceptMemberContacts**(`userId`, `onOff`): `Promise`\<`void`\> + +Defined in: [src/api.ts:808](../src/api.ts#L808) + +Set auto-accept member contacts. +Network usage: no. + +#### Parameters + +##### userId + +`number` + +##### onOff + +`boolean` + +#### Returns + +`Promise`\<`void`\> + +*** + +### apiSetContactCustomData() + +> **apiSetContactCustomData**(`contactId`, `customData?`): `Promise`\<`void`\> + +Defined in: [src/api.ts:798](../src/api.ts#L798) + +Set contact custom data. +Network usage: no. + +#### Parameters + +##### contactId + +`number` + +##### customData? + +`object` + +#### Returns + +`Promise`\<`void`\> + +*** + ### apiSetContactPrefs() > **apiSetContactPrefs**(`contactId`, `preferences`): `Promise`\<`void`\> -Defined in: [src/api.ts:830](../src/api.ts#L830) +Defined in: [src/api.ts:905](../src/api.ts#L905) Configure chat preference overrides for the contact. Network usage: background. @@ -1012,11 +1143,36 @@ Network usage: background. *** +### apiSetGroupCustomData() + +> **apiSetGroupCustomData**(`groupId`, `customData?`): `Promise`\<`void`\> + +Defined in: [src/api.ts:788](../src/api.ts#L788) + +Set group custom data. +Network usage: no. + +#### Parameters + +##### groupId + +`number` + +##### customData? + +`object` + +#### Returns + +`Promise`\<`void`\> + +*** + ### apiSetGroupLinkMemberRole() > **apiSetGroupLinkMemberRole**(`groupId`, `memberRole`): `Promise`\<`void`\> -Defined in: [src/api.ts:610](../src/api.ts#L610) +Defined in: [src/api.ts:644](../src/api.ts#L644) Set member role for group link. Network usage: no. @@ -1041,7 +1197,7 @@ Network usage: no. > **apiSetMembersRole**(`groupId`, `groupMemberIds`, `memberRole`): `Promise`\<`void`\> -Defined in: [src/api.ts:527](../src/api.ts#L527) +Defined in: [src/api.ts:561](../src/api.ts#L561) Set members role. Requires Admin role. Network usage: background. @@ -1070,7 +1226,7 @@ Network usage: background. > **apiSetProfileAddress**(`userId`, `enable`): `Promise`\<`UserProfileUpdateSummary`\> -Defined in: [src/api.ts:350](../src/api.ts#L350) +Defined in: [src/api.ts:384](../src/api.ts#L384) Add address to bot profile. Network usage: interactive. @@ -1095,7 +1251,7 @@ Network usage: interactive. > **apiUpdateChatItem**(`chatType`, `chatId`, `chatItemId`, `msgContent`, `liveMessage`): `Promise`\<`ChatItem`\> -Defined in: [src/api.ts:419](../src/api.ts#L419) +Defined in: [src/api.ts:453](../src/api.ts#L453) Update message. Network usage: background. @@ -1132,7 +1288,7 @@ Network usage: background. > **apiUpdateGroupProfile**(`groupId`, `groupProfile`): `Promise`\<`GroupInfo`\> -Defined in: [src/api.ts:587](../src/api.ts#L587) +Defined in: [src/api.ts:621](../src/api.ts#L621) Update group profile. Network usage: background. @@ -1157,7 +1313,7 @@ Network usage: background. > **apiUpdateProfile**(`userId`, `profile`): `Promise`\<`UserProfileUpdateSummary` \| `undefined`\> -Defined in: [src/api.ts:814](../src/api.ts#L814) +Defined in: [src/api.ts:889](../src/api.ts#L889) Update user profile. Network usage: background. @@ -1182,7 +1338,7 @@ Network usage: background. > **close**(): `Promise`\<`void`\> -Defined in: [src/api.ts:114](../src/api.ts#L114) +Defined in: [src/api.ts:148](../src/api.ts#L148) Close chat database. Usually doesn't need to be called in chat bots. @@ -1195,9 +1351,9 @@ Usually doesn't need to be called in chat bots. ### off() -> **off**\<`K`\>(`event`, `subscriber`): `void` +> **off**\<`K`\>(`event`, `subscriber?`): `void` -Defined in: [src/api.ts:253](../src/api.ts#L253) +Defined in: [src/api.ts:287](../src/api.ts#L287) Unsubscribe all or a specific handler from a specific event. @@ -1215,12 +1371,12 @@ Unsubscribe all or a specific handler from a specific event. The event type to unsubscribe from. -##### subscriber +##### subscriber? + +[`EventSubscriberFunc`](api.TypeAlias.EventSubscriberFunc.md)\<`K`\> \| `undefined` An optional subscriber function for the event. -[`EventSubscriberFunc`](api.TypeAlias.EventSubscriberFunc.md)\<`K`\> | `undefined` - #### Returns `void` @@ -1229,20 +1385,20 @@ An optional subscriber function for the event. ### offAny() -> **offAny**(`receiver`): `void` +> **offAny**(`receiver?`): `void` -Defined in: [src/api.ts:269](../src/api.ts#L269) +Defined in: [src/api.ts:303](../src/api.ts#L303) Unsubscribe all or a specific handler from any events. #### Parameters -##### receiver +##### receiver? + +[`EventSubscriberFunc`](api.TypeAlias.EventSubscriberFunc.md)\<`Tag`\> \| `undefined` An optional subscriber function for the event. -[`EventSubscriberFunc`](api.TypeAlias.EventSubscriberFunc.md)\<`Tag`\> | `undefined` - #### Returns `void` @@ -1255,7 +1411,7 @@ An optional subscriber function for the event. > **on**\<`K`\>(`subscribers`): `void` -Defined in: [src/api.ts:163](../src/api.ts#L163) +Defined in: [src/api.ts:197](../src/api.ts#L197) Subscribe multiple event handlers at once. @@ -1285,7 +1441,7 @@ If the same function is subscribed to event. > **on**\<`K`\>(`event`, `subscriber`): `void` -Defined in: [src/api.ts:171](../src/api.ts#L171) +Defined in: [src/api.ts:205](../src/api.ts#L205) Subscribe a handler to a specific event. @@ -1323,7 +1479,7 @@ If the same function is subscribed to event. > **onAny**(`receiver`): `void` -Defined in: [src/api.ts:194](../src/api.ts#L194) +Defined in: [src/api.ts:228](../src/api.ts#L228) Subscribe a handler to any event. @@ -1349,7 +1505,7 @@ If the same function is subscribed to event. > **once**\<`K`\>(`event`, `subscriber`): `void` -Defined in: [src/api.ts:205](../src/api.ts#L205) +Defined in: [src/api.ts:239](../src/api.ts#L239) Subscribe a handler to a specific event to be delivered one time. @@ -1385,13 +1541,13 @@ If the same function is subscribed to event. ### recvChatEvent() -> **recvChatEvent**(`wait`): `Promise`\<`ChatEvent` \| `undefined`\> +> **recvChatEvent**(`wait?`): `Promise`\<`ChatEvent` \| `undefined`\> -Defined in: [src/api.ts:304](../src/api.ts#L304) +Defined in: [src/api.ts:338](../src/api.ts#L338) #### Parameters -##### wait +##### wait? `number` = `5_000_000` @@ -1405,7 +1561,7 @@ Defined in: [src/api.ts:304](../src/api.ts#L304) > **sendChatCmd**(`cmd`): `Promise`\<`ChatResponse`\> -Defined in: [src/api.ts:300](../src/api.ts#L300) +Defined in: [src/api.ts:334](../src/api.ts#L334) #### Parameters @@ -1423,7 +1579,7 @@ Defined in: [src/api.ts:300](../src/api.ts#L300) > **startChat**(): `Promise`\<`void`\> -Defined in: [src/api.ts:88](../src/api.ts#L88) +Defined in: [src/api.ts:122](../src/api.ts#L122) Start chat controller. Must be called with the existing user profile. @@ -1437,7 +1593,7 @@ Start chat controller. Must be called with the existing user profile. > **stopChat**(): `Promise`\<`void`\> -Defined in: [src/api.ts:102](../src/api.ts#L102) +Defined in: [src/api.ts:136](../src/api.ts#L136) Stop chat controller. Must be called before closing the database. @@ -1453,9 +1609,9 @@ Usually doesn't need to be called in chat bots. #### Call Signature -> **wait**\<`K`\>(`event`): `Promise`\<`ChatEvent` & \{ `type`: `K`; \}\> +> **wait**\<`K`\>(`event`): `Promise`\<`ChatEvent` & `object`\> -Defined in: [src/api.ts:213](../src/api.ts#L213) +Defined in: [src/api.ts:247](../src/api.ts#L247) Waits for specific event, with an optional predicate. Returns `undefined` on timeout if specified. @@ -1474,13 +1630,13 @@ Returns `undefined` on timeout if specified. ##### Returns -`Promise`\<`ChatEvent` & \{ `type`: `K`; \}\> +`Promise`\<`ChatEvent` & `object`\> #### Call Signature -> **wait**\<`K`\>(`event`, `predicate`): `Promise`\<`ChatEvent` & \{ `type`: `K`; \}\> +> **wait**\<`K`\>(`event`, `predicate`): `Promise`\<`ChatEvent` & `object`\> -Defined in: [src/api.ts:214](../src/api.ts#L214) +Defined in: [src/api.ts:248](../src/api.ts#L248) Waits for specific event, with an optional predicate. Returns `undefined` on timeout if specified. @@ -1499,17 +1655,17 @@ Returns `undefined` on timeout if specified. ###### predicate -(`event`) => `boolean` | `undefined` +((`event`) => `boolean`) \| `undefined` ##### Returns -`Promise`\<`ChatEvent` & \{ `type`: `K`; \}\> +`Promise`\<`ChatEvent` & `object`\> #### Call Signature > **wait**\<`K`\>(`event`, `timeout`): `Promise`\ -Defined in: [src/api.ts:215](../src/api.ts#L215) +Defined in: [src/api.ts:249](../src/api.ts#L249) Waits for specific event, with an optional predicate. Returns `undefined` on timeout if specified. @@ -1538,7 +1694,7 @@ Returns `undefined` on timeout if specified. > **wait**\<`K`\>(`event`, `predicate`, `timeout`): `Promise`\ -Defined in: [src/api.ts:216](../src/api.ts#L216) +Defined in: [src/api.ts:250](../src/api.ts#L250) Waits for specific event, with an optional predicate. Returns `undefined` on timeout if specified. @@ -1557,7 +1713,7 @@ Returns `undefined` on timeout if specified. ###### predicate -(`event`) => `boolean` | `undefined` +((`event`) => `boolean`) \| `undefined` ###### timeout @@ -1571,25 +1727,19 @@ Returns `undefined` on timeout if specified. ### init() -> `static` **init**(`dbFilePrefix`, `dbKey?`, `confirm?`): `Promise`\<`ChatApi`\> +> `static` **init**(`db`, `confirm?`): `Promise`\<`ChatApi`\> -Defined in: [src/api.ts:76](../src/api.ts#L76) +Defined in: [src/api.ts:110](../src/api.ts#L110) Initializes the ChatApi. #### Parameters -##### dbFilePrefix +##### db -`string` +[`DbConfig`](api.TypeAlias.DbConfig.md) -File prefix for the database files. - -##### dbKey? - -`string` = `""` - -Database encryption key. +Database configuration (sqlite or postgres). ##### confirm? diff --git a/packages/simplex-chat-nodejs/docs/api.Class.ChatCommandError.md b/packages/simplex-chat-nodejs/docs/api.Class.ChatCommandError.md index a4955cb3d9..5ec1d40540 100644 --- a/packages/simplex-chat-nodejs/docs/api.Class.ChatCommandError.md +++ b/packages/simplex-chat-nodejs/docs/api.Class.ChatCommandError.md @@ -74,7 +74,7 @@ Defined in: [src/api.ts:6](../src/api.ts#L6) ### stack? -> `optional` **stack**: `string` +> `optional` **stack?**: `string` Defined in: [node\_modules/typescript/lib/lib.es5.d.ts:1078](../node_modules/typescript/lib/lib.es5.d.ts#L1078) diff --git a/packages/simplex-chat-nodejs/docs/api.Interface.BotAddressSettings.md b/packages/simplex-chat-nodejs/docs/api.Interface.BotAddressSettings.md index efb4a75e81..23c5e35326 100644 --- a/packages/simplex-chat-nodejs/docs/api.Interface.BotAddressSettings.md +++ b/packages/simplex-chat-nodejs/docs/api.Interface.BotAddressSettings.md @@ -14,7 +14,7 @@ Bot address settings. ### autoAccept? -> `optional` **autoAccept**: `boolean` +> `optional` **autoAccept?**: `boolean` Defined in: [src/api.ts:28](../src/api.ts#L28) @@ -30,7 +30,7 @@ true ### businessAddress? -> `optional` **businessAddress**: `boolean` +> `optional` **businessAddress?**: `boolean` Defined in: [src/api.ts:41](../src/api.ts#L41) @@ -47,7 +47,7 @@ false ### welcomeMessage? -> `optional` **welcomeMessage**: `string` \| `MsgContent` +> `optional` **welcomeMessage?**: `string` \| `MsgContent` Defined in: [src/api.ts:34](../src/api.ts#L34) diff --git a/packages/simplex-chat-nodejs/docs/api.TypeAlias.DbConfig.md b/packages/simplex-chat-nodejs/docs/api.TypeAlias.DbConfig.md new file mode 100644 index 0000000000..7fe255327c --- /dev/null +++ b/packages/simplex-chat-nodejs/docs/api.TypeAlias.DbConfig.md @@ -0,0 +1,64 @@ +[**simplex-chat**](README.md) + +*** + +[simplex-chat](README.md) / [api](Namespace.api.md) / DbConfig + +# Type Alias: DbConfig + +> **DbConfig** = \{ `encryptionKey?`: `string`; `filePrefix`: `string`; `type`: `"sqlite"`; \} \| \{ `connectionString`: `string`; `schemaPrefix?`: `string`; `type`: `"postgres"`; \} + +Defined in: [src/api.ts:65](../src/api.ts#L65) + +Database configuration. The native library is built against exactly one +backend (see `simplex_backend` / `SIMPLEX_BACKEND` at install time); this +type makes the caller state which one they are targeting so field names +can't lie about their meaning. + +## Union Members + +### Type Literal + +\{ `encryptionKey?`: `string`; `filePrefix`: `string`; `type`: `"sqlite"`; \} + +#### encryptionKey? + +> `optional` **encryptionKey?**: `string` + +Optional SQLCipher encryption key. Empty/omitted = unencrypted. + +#### filePrefix + +> **filePrefix**: `string` + +File prefix — two schema files are named `_chat.db` and `_agent.db`. + +#### type + +> **type**: `"sqlite"` + +SQLite backend (default). + +*** + +### Type Literal + +\{ `connectionString`: `string`; `schemaPrefix?`: `string`; `type`: `"postgres"`; \} + +#### connectionString + +> **connectionString**: `string` + +PostgreSQL connection string (e.g. `postgres://user:pass@host/db`). + +#### schemaPrefix? + +> `optional` **schemaPrefix?**: `string` + +Schema prefix used to namespace tables. Defaults to `"simplex_v1"` when omitted. + +#### type + +> **type**: `"postgres"` + +PostgreSQL backend (Linux x86_64 only, libpq5 required). diff --git a/packages/simplex-chat-nodejs/docs/api.TypeAlias.EventSubscriberFunc.md b/packages/simplex-chat-nodejs/docs/api.TypeAlias.EventSubscriberFunc.md index 6197befc8a..bf40b3165c 100644 --- a/packages/simplex-chat-nodejs/docs/api.TypeAlias.EventSubscriberFunc.md +++ b/packages/simplex-chat-nodejs/docs/api.TypeAlias.EventSubscriberFunc.md @@ -4,7 +4,7 @@ [simplex-chat](README.md) / [api](Namespace.api.md) / EventSubscriberFunc -# Type Alias: EventSubscriberFunc()\ +# Type Alias: EventSubscriberFunc\ > **EventSubscriberFunc**\<`K`\> = (`event`) => `void` \| `Promise`\<`void`\> @@ -20,7 +20,7 @@ Defined in: [src/api.ts:50](../src/api.ts#L50) ### event -`ChatEvent` & \{ `type`: `K`; \} +`ChatEvent` & `object` ## Returns diff --git a/packages/simplex-chat-nodejs/docs/bot.Function.run.md b/packages/simplex-chat-nodejs/docs/bot.Function.run.md index bc31ad01a8..3c33e6c7d4 100644 --- a/packages/simplex-chat-nodejs/docs/bot.Function.run.md +++ b/packages/simplex-chat-nodejs/docs/bot.Function.run.md @@ -8,7 +8,7 @@ > **run**(`__namedParameters`): `Promise`\<\[[`ChatApi`](api.Class.ChatApi.md), `User`, `UserContactLink` \| `undefined`\]\> -Defined in: [src/bot.ts:49](../src/bot.ts#L49) +Defined in: [src/bot.ts:47](../src/bot.ts#L47) ## Parameters diff --git a/packages/simplex-chat-nodejs/docs/bot.Interface.BotConfig.md b/packages/simplex-chat-nodejs/docs/bot.Interface.BotConfig.md index 0951c5a129..4624b1608b 100644 --- a/packages/simplex-chat-nodejs/docs/bot.Interface.BotConfig.md +++ b/packages/simplex-chat-nodejs/docs/bot.Interface.BotConfig.md @@ -6,43 +6,43 @@ # Interface: BotConfig -Defined in: [src/bot.ts:37](../src/bot.ts#L37) +Defined in: [src/bot.ts:35](../src/bot.ts#L35) ## Properties ### dbOpts -> **dbOpts**: [`BotDbOpts`](bot.Interface.BotDbOpts.md) +> **dbOpts**: [`BotDbOpts`](bot.TypeAlias.BotDbOpts.md) -Defined in: [src/bot.ts:39](../src/bot.ts#L39) +Defined in: [src/bot.ts:37](../src/bot.ts#L37) *** ### events? -> `optional` **events**: [`EventSubscribers`](api.TypeAlias.EventSubscribers.md) +> `optional` **events?**: [`EventSubscribers`](api.TypeAlias.EventSubscribers.md) -Defined in: [src/bot.ts:46](../src/bot.ts#L46) +Defined in: [src/bot.ts:44](../src/bot.ts#L44) *** ### onCommands? -> `optional` **onCommands**: \{\[`key`: `string`\]: (`chatItem`, `command`) => `void` \| `Promise`\<`void`\> \| `undefined`; \} +> `optional` **onCommands?**: `object` -Defined in: [src/bot.ts:43](../src/bot.ts#L43) +Defined in: [src/bot.ts:41](../src/bot.ts#L41) #### Index Signature -\[`key`: `string`\]: (`chatItem`, `command`) => `void` \| `Promise`\<`void`\> \| `undefined` +\[`key`: `string`\]: ((`chatItem`, `command`) => `void` \| `Promise`\<`void`\>) \| `undefined` *** -### onMessage()? +### onMessage? -> `optional` **onMessage**: (`chatItem`, `content`) => `void` \| `Promise`\<`void`\> +> `optional` **onMessage?**: (`chatItem`, `content`) => `void` \| `Promise`\<`void`\> -Defined in: [src/bot.ts:41](../src/bot.ts#L41) +Defined in: [src/bot.ts:39](../src/bot.ts#L39) #### Parameters @@ -64,7 +64,7 @@ Defined in: [src/bot.ts:41](../src/bot.ts#L41) > **options**: [`BotOptions`](bot.Interface.BotOptions.md) -Defined in: [src/bot.ts:40](../src/bot.ts#L40) +Defined in: [src/bot.ts:38](../src/bot.ts#L38) *** @@ -72,4 +72,4 @@ Defined in: [src/bot.ts:40](../src/bot.ts#L40) > **profile**: `Profile` -Defined in: [src/bot.ts:38](../src/bot.ts#L38) +Defined in: [src/bot.ts:36](../src/bot.ts#L36) diff --git a/packages/simplex-chat-nodejs/docs/bot.Interface.BotDbOpts.md b/packages/simplex-chat-nodejs/docs/bot.Interface.BotDbOpts.md deleted file mode 100644 index 7a9f113f6a..0000000000 --- a/packages/simplex-chat-nodejs/docs/bot.Interface.BotDbOpts.md +++ /dev/null @@ -1,33 +0,0 @@ -[**simplex-chat**](README.md) - -*** - -[simplex-chat](README.md) / [bot](Namespace.bot.md) / BotDbOpts - -# Interface: BotDbOpts - -Defined in: [src/bot.ts:7](../src/bot.ts#L7) - -## Properties - -### confirmMigrations? - -> `optional` **confirmMigrations**: [`MigrationConfirmation`](core.Enumeration.MigrationConfirmation.md) - -Defined in: [src/bot.ts:10](../src/bot.ts#L10) - -*** - -### dbFilePrefix - -> **dbFilePrefix**: `string` - -Defined in: [src/bot.ts:8](../src/bot.ts#L8) - -*** - -### dbKey? - -> `optional` **dbKey**: `string` - -Defined in: [src/bot.ts:9](../src/bot.ts#L9) diff --git a/packages/simplex-chat-nodejs/docs/bot.Interface.BotOptions.md b/packages/simplex-chat-nodejs/docs/bot.Interface.BotOptions.md index 44d4380e5a..eee56b879a 100644 --- a/packages/simplex-chat-nodejs/docs/bot.Interface.BotOptions.md +++ b/packages/simplex-chat-nodejs/docs/bot.Interface.BotOptions.md @@ -6,76 +6,76 @@ # Interface: BotOptions -Defined in: [src/bot.ts:13](../src/bot.ts#L13) +Defined in: [src/bot.ts:11](../src/bot.ts#L11) ## Properties ### addressSettings? -> `optional` **addressSettings**: [`BotAddressSettings`](api.Interface.BotAddressSettings.md) - -Defined in: [src/bot.ts:17](../src/bot.ts#L17) - -*** - -### allowFiles? - -> `optional` **allowFiles**: `boolean` - -Defined in: [src/bot.ts:18](../src/bot.ts#L18) - -*** - -### commands? - -> `optional` **commands**: `ChatBotCommand`[] - -Defined in: [src/bot.ts:19](../src/bot.ts#L19) - -*** - -### createAddress? - -> `optional` **createAddress**: `boolean` - -Defined in: [src/bot.ts:14](../src/bot.ts#L14) - -*** - -### logContacts? - -> `optional` **logContacts**: `boolean` - -Defined in: [src/bot.ts:21](../src/bot.ts#L21) - -*** - -### logNetwork? - -> `optional` **logNetwork**: `boolean` - -Defined in: [src/bot.ts:22](../src/bot.ts#L22) - -*** - -### updateAddress? - -> `optional` **updateAddress**: `boolean` +> `optional` **addressSettings?**: [`BotAddressSettings`](api.Interface.BotAddressSettings.md) Defined in: [src/bot.ts:15](../src/bot.ts#L15) *** -### updateProfile? +### allowFiles? -> `optional` **updateProfile**: `boolean` +> `optional` **allowFiles?**: `boolean` Defined in: [src/bot.ts:16](../src/bot.ts#L16) *** -### useBotProfile? +### commands? -> `optional` **useBotProfile**: `boolean` +> `optional` **commands?**: `ChatBotCommand`[] + +Defined in: [src/bot.ts:17](../src/bot.ts#L17) + +*** + +### createAddress? + +> `optional` **createAddress?**: `boolean` + +Defined in: [src/bot.ts:12](../src/bot.ts#L12) + +*** + +### logContacts? + +> `optional` **logContacts?**: `boolean` + +Defined in: [src/bot.ts:19](../src/bot.ts#L19) + +*** + +### logNetwork? + +> `optional` **logNetwork?**: `boolean` Defined in: [src/bot.ts:20](../src/bot.ts#L20) + +*** + +### updateAddress? + +> `optional` **updateAddress?**: `boolean` + +Defined in: [src/bot.ts:13](../src/bot.ts#L13) + +*** + +### updateProfile? + +> `optional` **updateProfile?**: `boolean` + +Defined in: [src/bot.ts:14](../src/bot.ts#L14) + +*** + +### useBotProfile? + +> `optional` **useBotProfile?**: `boolean` + +Defined in: [src/bot.ts:18](../src/bot.ts#L18) diff --git a/packages/simplex-chat-nodejs/docs/bot.TypeAlias.BotDbOpts.md b/packages/simplex-chat-nodejs/docs/bot.TypeAlias.BotDbOpts.md new file mode 100644 index 0000000000..b035f41355 --- /dev/null +++ b/packages/simplex-chat-nodejs/docs/bot.TypeAlias.BotDbOpts.md @@ -0,0 +1,17 @@ +[**simplex-chat**](README.md) + +*** + +[simplex-chat](README.md) / [bot](Namespace.bot.md) / BotDbOpts + +# Type Alias: BotDbOpts + +> **BotDbOpts** = [`DbConfig`](api.TypeAlias.DbConfig.md) & `object` + +Defined in: [src/bot.ts:7](../src/bot.ts#L7) + +## Type Declaration + +### confirmMigrations? + +> `optional` **confirmMigrations?**: [`MigrationConfirmation`](core.Enumeration.MigrationConfirmation.md) diff --git a/packages/simplex-chat-nodejs/docs/core.Class.ChatAPIError.md b/packages/simplex-chat-nodejs/docs/core.Class.ChatAPIError.md index c6082f2985..5bd0722f0c 100644 --- a/packages/simplex-chat-nodejs/docs/core.Class.ChatAPIError.md +++ b/packages/simplex-chat-nodejs/docs/core.Class.ChatAPIError.md @@ -16,7 +16,7 @@ Defined in: [src/core.ts:92](../src/core.ts#L92) ### Constructor -> **new ChatAPIError**(`message`, `chatError`): `ChatAPIError` +> **new ChatAPIError**(`message`, `chatError?`): `ChatAPIError` Defined in: [src/core.ts:93](../src/core.ts#L93) @@ -26,9 +26,9 @@ Defined in: [src/core.ts:93](../src/core.ts#L93) `string` -##### chatError +##### chatError? -`ChatError` | `undefined` +`ChatError` \| `undefined` #### Returns @@ -74,7 +74,7 @@ Defined in: [node\_modules/typescript/lib/lib.es5.d.ts:1076](../node_modules/typ ### stack? -> `optional` **stack**: `string` +> `optional` **stack?**: `string` Defined in: [node\_modules/typescript/lib/lib.es5.d.ts:1078](../node_modules/typescript/lib/lib.es5.d.ts#L1078) diff --git a/packages/simplex-chat-nodejs/docs/core.Class.ChatInitError.md b/packages/simplex-chat-nodejs/docs/core.Class.ChatInitError.md index eff5123fb0..0feceae4fd 100644 --- a/packages/simplex-chat-nodejs/docs/core.Class.ChatInitError.md +++ b/packages/simplex-chat-nodejs/docs/core.Class.ChatInitError.md @@ -74,7 +74,7 @@ Defined in: [node\_modules/typescript/lib/lib.es5.d.ts:1076](../node_modules/typ ### stack? -> `optional` **stack**: `string` +> `optional` **stack?**: `string` Defined in: [node\_modules/typescript/lib/lib.es5.d.ts:1078](../node_modules/typescript/lib/lib.es5.d.ts#L1078) diff --git a/packages/simplex-chat-nodejs/docs/core.Interface.APIResult.md b/packages/simplex-chat-nodejs/docs/core.Interface.APIResult.md index 906ef3ec3e..8d18997ec4 100644 --- a/packages/simplex-chat-nodejs/docs/core.Interface.APIResult.md +++ b/packages/simplex-chat-nodejs/docs/core.Interface.APIResult.md @@ -18,7 +18,7 @@ Defined in: [src/core.ts:87](../src/core.ts#L87) ### error? -> `optional` **error**: `ChatError` +> `optional` **error?**: `ChatError` Defined in: [src/core.ts:89](../src/core.ts#L89) @@ -26,6 +26,6 @@ Defined in: [src/core.ts:89](../src/core.ts#L89) ### result? -> `optional` **result**: `R` +> `optional` **result?**: `R` Defined in: [src/core.ts:88](../src/core.ts#L88) diff --git a/packages/simplex-chat-nodejs/examples/squaring-bot-readme.js b/packages/simplex-chat-nodejs/examples/squaring-bot-readme.js index 16d0678b64..8899e9bf15 100644 --- a/packages/simplex-chat-nodejs/examples/squaring-bot-readme.js +++ b/packages/simplex-chat-nodejs/examples/squaring-bot-readme.js @@ -2,7 +2,7 @@ const {bot} = await import("../dist/index.js") const [chat, _user, _address] = await bot.run({ profile: {displayName: "Squaring bot example", fullName: ""}, - dbOpts: {dbFilePrefix: "./squaring_bot", dbKey: ""}, + dbOpts: {type: "sqlite", filePrefix: "./squaring_bot"}, options: { addressSettings: {welcomeMessage: "Send a number, I will square it."}, }, diff --git a/packages/simplex-chat-nodejs/examples/squaring-bot.ts b/packages/simplex-chat-nodejs/examples/squaring-bot.ts index 682e7b887a..dbb58d90dc 100644 --- a/packages/simplex-chat-nodejs/examples/squaring-bot.ts +++ b/packages/simplex-chat-nodejs/examples/squaring-bot.ts @@ -5,7 +5,7 @@ import {bot, util} from "../dist" const welcomeMessage = "Hello! I am a simple squaring bot.\n\nIf you send me a number, I will calculate its square." const [chat, _user, _address] = await bot.run({ profile: {displayName: "Squaring bot example", fullName: ""}, - dbOpts: {dbFilePrefix: "./squaring_bot", dbKey: ""}, + dbOpts: {type: "sqlite", filePrefix: "./squaring_bot"}, options: { addressSettings: {autoAccept: true, welcomeMessage, businessAddress: false}, commands: [ // commands to show in client UI diff --git a/packages/simplex-chat-nodejs/package.json b/packages/simplex-chat-nodejs/package.json index 21e00e7399..79dd1c3c3c 100644 --- a/packages/simplex-chat-nodejs/package.json +++ b/packages/simplex-chat-nodejs/package.json @@ -1,6 +1,6 @@ { "name": "simplex-chat", - "version": "6.5.0-beta.4.5", + "version": "6.5.0-beta.10", "main": "dist/index.js", "types": "dist/index.d.ts", "files": [ @@ -24,7 +24,7 @@ "docs": "typedoc" }, "dependencies": { - "@simplex-chat/types": "^0.4.0", + "@simplex-chat/types": "^0.5.0", "extract-zip": "^2.0.1", "fast-deep-equal": "^3.1.3", "node-addon-api": "^8.5.0" diff --git a/packages/simplex-chat-nodejs/src/api.ts b/packages/simplex-chat-nodejs/src/api.ts index 8bc56db41c..f1337e6753 100644 --- a/packages/simplex-chat-nodejs/src/api.ts +++ b/packages/simplex-chat-nodejs/src/api.ts @@ -56,6 +56,41 @@ interface EventSubscriber { once: boolean } +/** + * Database configuration. The native library is built against exactly one + * backend (see `simplex_backend` / `SIMPLEX_BACKEND` at install time); this + * type makes the caller state which one they are targeting so field names + * can't lie about their meaning. + */ +export type DbConfig = + | { + /** SQLite backend (default). */ + type: "sqlite" + /** File prefix — two schema files are named `_chat.db` and `_agent.db`. */ + filePrefix: string + /** Optional SQLCipher encryption key. Empty/omitted = unencrypted. */ + encryptionKey?: string + } + | { + /** PostgreSQL backend (Linux x86_64 only, libpq5 required). */ + type: "postgres" + /** Schema prefix used to namespace tables. Defaults to `"simplex_v1"` when omitted. */ + schemaPrefix?: string + /** PostgreSQL connection string (e.g. `postgres://user:pass@host/db`). */ + connectionString: string + } + +function dbConfigToMigrateArgs(db: DbConfig): [string, string] { + switch (db.type) { + case "sqlite": + return [db.filePrefix, db.encryptionKey ?? ""] + case "postgres": + return [db.schemaPrefix ?? "", db.connectionString] + default: + throw new Error(`Invalid DbConfig: ${JSON.stringify(db satisfies never)}`) + } +} + /** * Main API class for interacting with the chat core library. */ @@ -64,21 +99,20 @@ export class ChatApi { private eventsLoop: Promise | undefined = undefined private subscribers: {[K in CEvt.Tag]?: EventSubscriber[]} = {} private receivers: EventSubscriberFunc[] = [] - + private constructor(protected ctrl_: bigint | undefined) {} /** * Initializes the ChatApi. - * @param {string} dbFilePrefix - File prefix for the database files. - * @param {string} [dbKey=""] - Database encryption key. + * @param {DbConfig} db - Database configuration (sqlite or postgres). * @param {core.MigrationConfirmation} [confirm=core.MigrationConfirmation.YesUp] - Migration confirmation mode. */ static async init( - dbFilePrefix: string, - dbKey: string = "", + db: DbConfig, confirm = core.MigrationConfirmation.YesUp ): Promise { - const ctrl = await core.chatMigrateInit(dbFilePrefix, dbKey, confirm) + const [path, key] = dbConfigToMigrateArgs(db) + const ctrl = await core.chatMigrateInit(path, key, confirm) return new ChatApi(ctrl) } @@ -654,7 +688,7 @@ export class ChatApi { * Network usage: interactive. */ async apiConnectPlan(userId: number, connectionLink: string): Promise<[T.ConnectionPlan, T.CreatedConnLink]> { - const r = await this.sendChatCmd(CC.APIConnectPlan.cmdString({userId, connectionLink})) + const r = await this.sendChatCmd(CC.APIConnectPlan.cmdString({userId, connectionLink, resolveKnown: false})) if (r.type === "connectionPlan") return [r.connectionPlan, r.connLink] throw new ChatCommandError("error getting connect plan", r) } diff --git a/packages/simplex-chat-nodejs/src/bot.ts b/packages/simplex-chat-nodejs/src/bot.ts index 95a0c13d96..f6cb753d27 100644 --- a/packages/simplex-chat-nodejs/src/bot.ts +++ b/packages/simplex-chat-nodejs/src/bot.ts @@ -4,9 +4,7 @@ import * as core from "./core" import * as util from "./util" import equal = require("fast-deep-equal") -export interface BotDbOpts { - dbFilePrefix: string // two schema files will be named _chat.db and _agent.db - dbKey?: string +export type BotDbOpts = api.DbConfig & { confirmMigrations?: core.MigrationConfirmation } @@ -47,7 +45,7 @@ export interface BotConfig { } export async function run({profile, dbOpts, options = defaultOpts, onMessage, onCommands = {}, events = {}}: BotConfig): Promise<[api.ChatApi, T.User, T.UserContactLink | undefined]> { - const bot = await api.ChatApi.init(dbOpts.dbFilePrefix, dbOpts.dbKey || "", dbOpts.confirmMigrations || core.MigrationConfirmation.YesUp) + const bot = await api.ChatApi.init(dbOpts, dbOpts.confirmMigrations || core.MigrationConfirmation.YesUp) const opts = fullOptions(options) if (onMessage) subscribeMessages(bot, onMessage) if (Object.keys(onCommands).length > 0) subscribeCommands(bot, onCommands) diff --git a/packages/simplex-chat-nodejs/src/download-libs.js b/packages/simplex-chat-nodejs/src/download-libs.js index 25d4127ea4..39eb545576 100644 --- a/packages/simplex-chat-nodejs/src/download-libs.js +++ b/packages/simplex-chat-nodejs/src/download-libs.js @@ -4,7 +4,19 @@ const path = require('path'); const extract = require('extract-zip'); const GITHUB_REPO = 'simplex-chat/simplex-chat-libs'; -const RELEASE_TAG = 'v6.5.0-beta.9'; +const RELEASE_TAG = 'v6.5.0-beta.10'; +const BACKEND = (process.env.SIMPLEX_BACKEND || process.env.npm_config_simplex_backend || 'sqlite').toLowerCase(); + +if (BACKEND !== 'sqlite' && BACKEND !== 'postgres') { + console.error(`✗ Invalid SIMPLEX_BACKEND: "${BACKEND}". Must be "sqlite" or "postgres".`); + process.exit(1); +} + +if (BACKEND === 'postgres' && (process.platform !== 'linux' || process.arch !== 'x64')) { + console.error(`✗ SIMPLEX_BACKEND=postgres is only supported on Linux x86_64.`); + process.exit(1); +} + const ROOT_DIR = process.cwd(); // Root of the package being installed const LIBS_DIR = path.join(ROOT_DIR, 'libs') const INSTALLED_FILE = path.join(LIBS_DIR, 'installed.txt'); @@ -56,11 +68,12 @@ function isAlreadyInstalled() { try { const installedVersion = fs.readFileSync(INSTALLED_FILE, 'utf-8').trim(); - if (installedVersion === RELEASE_TAG) { - console.log(`✓ Libraries version ${RELEASE_TAG} already installed`); + const expectedVersion = `${RELEASE_TAG}:${BACKEND}`; + if (installedVersion === expectedVersion) { + console.log(`✓ Libraries version ${RELEASE_TAG}:${BACKEND} already installed`); return true; } else { - console.log(`Version mismatch: installed ${installedVersion}, need ${RELEASE_TAG}`); + console.log(`Version mismatch: installed ${installedVersion}, need ${expectedVersion}`); cleanLibsDirectory(); return false; } @@ -79,12 +92,14 @@ async function install() { const { platformName, archName } = getPlatformInfo(); const repoName = GITHUB_REPO.split('/')[1]; - const zipFilename = `${repoName}-${platformName}-${archName}.zip`; + const backendSuffix = BACKEND === 'postgres' ? '-postgres' : ''; + const zipFilename = `${repoName}-${platformName}-${archName}${backendSuffix}.zip`; const ZIP_URL = `https://github.com/${GITHUB_REPO}/releases/download/${RELEASE_TAG}/${zipFilename}`; const ZIP_PATH = path.join(ROOT_DIR, zipFilename); const TEMP_EXTRACT_DIR = path.join(ROOT_DIR, '.temp-extract'); console.log(`Detected: ${platformName} ${archName}`); + console.log(`Backend: ${BACKEND}`); console.log(`Downloading: ${zipFilename}`); // Create libs directory @@ -124,8 +139,8 @@ async function install() { } // Write installed.txt with version - fs.writeFileSync(INSTALLED_FILE, RELEASE_TAG, 'utf-8'); - console.log(`✓ Wrote version ${RELEASE_TAG} to installed.txt`); + fs.writeFileSync(INSTALLED_FILE, `${RELEASE_TAG}:${BACKEND}`, 'utf-8'); + console.log(`✓ Wrote version ${RELEASE_TAG}:${BACKEND} to installed.txt`); // Cleanup fs.rmSync(TEMP_EXTRACT_DIR, { recursive: true, force: true }); diff --git a/packages/simplex-chat-nodejs/tests/api.test.ts b/packages/simplex-chat-nodejs/tests/api.test.ts index 7bc1a89b86..99d511371c 100644 --- a/packages/simplex-chat-nodejs/tests/api.test.ts +++ b/packages/simplex-chat-nodejs/tests/api.test.ts @@ -15,8 +15,8 @@ describe("API tests (use preset servers)", () => { it("should send/receive message", async () => { // create users and start chat controllers - const alice = await api.ChatApi.init(alicePath) - const bob = await api.ChatApi.init(bobPath) + const alice = await api.ChatApi.init({type: "sqlite", filePrefix: alicePath}) + const bob = await api.ChatApi.init({type: "sqlite", filePrefix: bobPath}) const servers: string[] = [] let eventCount = 0 alice.on("hostConnected" as CEvt.Tag, async ({transportHost}: any) => { servers.push(transportHost) }) @@ -67,10 +67,10 @@ describe("API tests (use preset servers)", () => { it("should create member contact and send invitation", async () => { // create 3 users and start chat controllers - const alice = await api.ChatApi.init(alicePath) - const bob = await api.ChatApi.init(bobPath) + const alice = await api.ChatApi.init({type: "sqlite", filePrefix: alicePath}) + const bob = await api.ChatApi.init({type: "sqlite", filePrefix: bobPath}) const carolPath = path.join(tmpDir, "carol") - const carol = await api.ChatApi.init(carolPath) + const carol = await api.ChatApi.init({type: "sqlite", filePrefix: carolPath}) const aliceUser = await alice.apiCreateActiveUser({displayName: "alice", fullName: ""}) await bob.apiCreateActiveUser({displayName: "bob", fullName: ""}) await carol.apiCreateActiveUser({displayName: "carol", fullName: ""}) diff --git a/packages/simplex-chat-nodejs/tests/bot.test.ts b/packages/simplex-chat-nodejs/tests/bot.test.ts index b1fd9d0186..5a7faa663f 100644 --- a/packages/simplex-chat-nodejs/tests/bot.test.ts +++ b/packages/simplex-chat-nodejs/tests/bot.test.ts @@ -18,7 +18,7 @@ describe("Bot tests (use preset servers)", () => { // run bot const [chat, botUser, botAddress] = await bot.run({ profile: {displayName: "Squaring bot", fullName: ""}, - dbOpts: {dbFilePrefix: botPath, dbKey: ""}, + dbOpts: {type: "sqlite", filePrefix: botPath}, options: { addressSettings: {welcomeMessage: "If you send me a number, I will calculate its square."}, }, @@ -30,7 +30,7 @@ describe("Bot tests (use preset servers)", () => { }) assert(typeof botAddress === "object") // create user - const alice = await api.ChatApi.init(alicePath) + const alice = await api.ChatApi.init({type: "sqlite", filePrefix: alicePath}) const aliceUser = await alice.apiCreateActiveUser({displayName: "alice", fullName: ""}) await alice.startChat() // connect to bot diff --git a/plans/2026-04-19-directory-public-groups.md b/plans/2026-04-19-directory-public-groups.md new file mode 100644 index 0000000000..1b23234d14 --- /dev/null +++ b/plans/2026-04-19-directory-public-groups.md @@ -0,0 +1,324 @@ +# Directory Service — Public Group Registration via Chat Cards + +## Goal + +Enable directory registration of public groups (channels and future group types) via MCChat cards shared in DM with the bot. Replaces the admin-invitation flow with a signature-verified card flow. + +## Background + +### Current group registration flow +1. Owner invites bot as admin member +2. Bot joins, creates group link, asks owner to add link to welcome message +3. Owner updates profile with link → bot sends for admin approval +4. Admin approves → group listed + +This requires the bot to be admin. Public groups don't need this — they already have a public link, and ownership is proven via `ownerSig` on the MCChat card. + +### Public group identity +- `PublicGroupProfile {groupType :: GroupType, groupLink :: ShortLinkContact, publicGroupId :: B64UrlByteString}` +- `publicGroupId = sha256(rootKey)` — immutable identity +- `GroupType`: currently `GTChannel`, adding `GTGroup` for forward compatibility +- `GroupKeys {publicGroupId, groupRootKey, memberPrivKey}` — owner's signing keys +- `ownerId` in `LinkOwnerSig` = `B64UrlByteString (unMemberId memberId)` — the owner's MemberId bytes + +### ownerId-to-member mapping +- `LinkOwnerSig.ownerId = Just (B64UrlByteString unMemberId)` — same raw bytes as `MemberId` +- `createLinkOwnerMember` (called during `APIConnectPreparedGroup`, Commands.hs:2129) creates a member record with `memberRole = GROwner`, `memberStatus = GSMemUnknown`, `memberContactId = Nothing` +- `GroupMemberId` is available immediately after `APIConnectPreparedGroup` +- `getGroupMemberIdViaMemberId db user gInfo (MemberId ownerId)` looks up `GroupMemberId` from `MemberId` + +### Owner member activation +When a relay announces the pre-created `GSMemUnknown` member, `CEvtUnknownMemberAnnounced` fires (Subscriber.hs:2872, via `xGrpMemNew`). The member's profile and role are updated from the announcement's `MemberInfo` (via `updateUnknownMemberAnnounced`, Groups.hs:3010) — the role reflects the member's actual current role, not the pre-created `GROwner`. This event is not currently handled in directory Events.hs. + +### connectPlan and known groups +`apiConnectPlan` with `linkOwnerSig` returns: +- `GLPOk {groupSLinkData_, ownerVerification}` — new group +- `GLPKnown {groupInfo}` — bot already a member +- `GLPOwnLink` / `GLPConnectingProhibit` / `GLPConnectingConfirmReconnect` / `GLPNoRelays` + +**Gap**: For `GLPKnown`, `groupShortLinkPlan` short-circuits via `knownLinkPlans` — never resolves link data, never verifies signature. + +**Fix**: Add an optional parameter to `APIConnectPlan` (before `sig=`, since JSON must be last) that forces link data re-resolution even for known groups. With this parameter, `GLPKnown` includes `ownerVerification` and freshly loaded `groupSLinkData`. The loaded profile may differ from stored — the bot treats the server's current data as authoritative and updates its stored profile accordingly. + +**Future**: Add a signed version counter to link data to detect rollback attacks (malicious server serving old signed profiles). The bot would store the highest version seen and reject/flag version reductions. For now, the server is treated as authoritative. + +### Owner-contact association via APIConnectPreparedGroup +`createLinkOwnerMember` (called during `APIConnectPreparedGroup`) currently creates owner members with `memberContactId = Nothing`. Add an optional `(contactId, ownerId)` paired parameter to `APIConnectPreparedGroup`: when the link was received in a DM, pass the sender's `contactId` and the `ownerId` from `LinkOwnerSig`. The core sets `memberContactId` on the specific owner member whose `memberId` matches `ownerId`. + +This makes ALL existing directory event routing work: `DEContactRoleChanged`, `DEContactRemovedFromGroup`, `DEContactLeftGroup` all resolve via `memberContactId` — no new event types needed for owner tracking. + +Also benefits regular UI: when a user taps an owner's link in a DM, the contact association is created, improving the experience (e.g., showing the contact in the group member list). + +## Registration flow for public groups + +1. Owner taps "Share via chat" on their public group → sends MCChat card to bot in DM +2. Bot receives `CEvtNewChatItems` with `MCChat` content in direct chat → `DEChatLinkReceived` +3. Bot validates card (see validation matrix) +4. Bot calls `apiConnectPlan` with `connLink`, `linkOwnerSig`, and force-resolve flag +5. On `GLPOk` + `Verified`: bot replies "Joining {channel/group} {name}..." and joins via `APIPrepareGroup` then `APIConnectPreparedGroup` (passing owner's `contactId` and `ownerId`). On error: replies "Error joining {channel/group} {name}, please re-send the link!" (same pattern as existing group flow, Service.hs:368-370). +6. After `APIConnectPreparedGroup`, bot stores `dbOwnerMemberId` (via `getGroupMemberIdViaMemberId` — `createLinkOwnerMember` created the record during connect). Registration status: `GRSProposed`. +7. When `CEvtUnknownMemberAnnounced` fires for the owner member → `DEOwnerMemberAnnounced` → bot transitions to `GRSPendingApproval`, replies "Joined {channel/group} {name}. Registration is pending approval — it may take up to 48 hours.", sends to admins for approval +8. Admin approves → `GRSActive` + +## Scenario matrix: card received in DM + +### Event + +One event: `DEChatLinkReceived { contact :: Contact, chatItemId :: ChatItemId, chatLink :: MsgChatLink, ownerSig :: Maybe LinkOwnerSig }`. + +Handler validates and replies based on content. + +### Card validation (handler level) + +| Condition | Action | +|---|---| +| `chatLink` is not MCLGroup, or MCLGroup but no `publicGroup` in profile | Reply: "Only channels can be added to directory via link." | +| MCLGroup + publicGroup but `ownerSig` is `Nothing` | Reply: "To add a {channel/group} to directory you must be the owner." | +| MCLGroup + publicGroup + `ownerSig` is `Just` | Proceed to connectPlan | + +### connectPlan results + +| Plan result | ownerVerification | Action | +|---|---|---| +| `GLPOk` + sLinkData | `Verified` | Reply "Joining {channel/group} {name}...", join (with contactId + ownerId), register as `GRSProposed` | +| `GLPOk` + sLinkData | `Failed reason` | Reply: "Link signature verification failed: {reason}.\nYou must be the {channel/group} owner to register it." | +| `GLPOk` + sLinkData | `Nothing` | Reply: "Error: could not verify {channel/group} ownership. Please report it to directory admins." | +| `GLPOk` no sLinkData | — | Reply: "Error: no {channel/group} information available via the link." | +| `GLPKnown` | `Verified` | Bot already member — handle as re-registration (see below) | +| `GLPKnown` | `Failed reason` | Reply: "Link signature verification failed: {reason}.\nYou must be the {channel/group} owner to register it." | +| `GLPKnown` | `Nothing` | Reply: "Error: could not verify ownership." | +| `GLPConnectingProhibit` | — | Reply: "Already connecting to this {channel/group}." | +| `GLPConnectingConfirmReconnect` | — | Reply: "Already connecting to this {channel/group}." | +| `GLPOwnLink` | — | Log error. Reply: "Unexpected error. Please report it to directory admins." | +| `GLPNoRelays` | — | Reply: "{Channel/Group} has no active relays. Please try again later." | + +### Owner member activation after joining + +Bot is in `GRSProposed`. The pre-created owner member has `GSMemUnknown` status. When the relay announces this member, `CEvtUnknownMemberAnnounced` fires → mapped to `DEOwnerMemberAnnounced` in directory events. + +| Condition | Action | +|---|---| +| `CEvtUnknownMemberAnnounced` for member matching `dbOwnerMemberId`, announced role is `GROwner` | Transition to `GRSPendingApproval`, notify submitting contact, send for admin approval | +| `CEvtUnknownMemberAnnounced` for member matching `dbOwnerMemberId`, announced role < `GROwner` | Reply: "The signing key does not belong to a current owner. Registration cancelled." Set `GRSRemoved`. | +| Owner member never announced | Registration stays in `GRSProposed`. No timeout — manual cleanup via admin. | + +### Re-registration (GLPKnown — bot already member, signature verified at plan) + +With the `connectPlan` fix, `GLPKnown` now includes `ownerVerification` and fresh `groupSLinkData`. Only proceed if `Verified`. + +Bot extracts `ownerId`, looks up member via `getGroupMemberIdViaMemberId`, confirms `memberRole >= GROwner` AND `memberStatus` is active (not `GSMemUnknown`). The pre-created member has `GROwner` role from creation, so role alone is insufficient — the member must have been announced by a relay to confirm actual presence in the group. + +Look up existing `GroupReg` by `groupId`: + +| Existing registration | Ownership verified | Action | +|---|---|---| +| No GroupReg found | Yes | Create new registration as `GRSPendingApproval` | +| GroupReg exists, same owner contact | Yes | Handle based on current status (see status matrix) | +| GroupReg exists, different contact | Sender is verified owner AND previous registrant no longer owner (check `dbOwnerMemberId` member's current role) | Transfer: update `dbContactId` and `dbOwnerMemberId`, proceed as same-owner case | +| GroupReg exists, different contact | Sender is verified owner BUT previous registrant still owner | Reply: "This {channel/group} is registered by another owner." | +| GroupReg exists, different contact | Sender NOT verified owner | Reply: "You must be the {channel/group} owner to register it." Additionally: check if previous registrant (via `dbOwnerMemberId`) is still owner. If not → suspend (`GRSSuspendedBadRoles`). | + +### Re-registration by same owner — status matrix + +| Current status | Action | +|---|---| +| `GRSProposed` | Only if owner member is active (not `GSMemUnknown`): transition to `GRSPendingApproval`, send for approval. If still `GSMemUnknown`: reply "Waiting for owner to connect to the {channel/group}." | +| `GRSPendingConfirmation` | Transition to `GRSPendingApproval`, send for approval (only if previously registered via admin-invitation flow) | +| `GRSPendingUpdate` | Transition to `GRSPendingApproval`, send for approval (only if previously registered via admin-invitation flow) | +| `GRSPendingApproval n` | Check if profile changed (fresh profile from connectPlan vs bot's current DB). If yes: increment approval ID, re-send. If no: reply "Already pending approval." | +| `GRSActive` | Check if profile changed. If yes: transition to `GRSPendingApproval`, re-send. If no: reply "Already listed in the directory." | +| `GRSSuspended` | Reply: "{Channel/Group} is suspended by admin. Contact support." | +| `GRSSuspendedBadRoles` | Ownership re-verified at plan. Transition to `GRSPendingApproval`, send for approval. | +| `GRSRemoved` | Re-register as `GRSPendingApproval` | + +### Profile change detection + +For re-registration: compare the freshly loaded profile (from connectPlan's re-resolved `groupSLinkData`) against the group's current profile in the bot's database. + +For XGrpInfo updates: re-resolve the link via `apiConnectPlan` with `resolve=on`, compare freshly loaded link profile against bot's stored profile. + +Uses the same `sameProfile` comparison as existing group flow (Service.hs:491-494), extended with `publicGroup` field: `displayName`, `fullName`, `shortDescr`, `image`, `description`, `memberAdmission`, `publicGroup` — any difference triggers re-approval. The `publicGroup` field includes `groupLink` (ShortLinkContact), so link regeneration by the owner also triggers re-approval. + +## Profile updates via XGrpInfo (bot is subscriber) + +Bot receives `DEGroupUpdated` when any member updates the group profile. Works for subscribers. + +For public groups: skip "link in welcome message" check. First check if the profile actually changed using the same `sameProfile` comparison as for regular groups (`displayName`, `fullName`, `shortDescr`, `image`, `description`, `memberAdmission`). Only if changed, call `apiConnectPlan` with `resolve=on` to re-resolve the link data. Compare the resolved link profile against the bot's stored profile. + +Note: `xGrpInfo` (Subscriber.hs:3172) prevents `publicGroup` removal and `publicGroupId` changes for channels — these cases can never occur. The `groupLink` (ShortLinkContact) CAN change if the owner regenerates the link; the bot's DB is updated via XGrpInfo and subsequent re-resolution uses the current link. + +| Current status | Profile changed (link data vs stored) | Action | +|---|---|---| +| `GRSProposed` | Any | No action (waiting for owner activation) | +| `GRSPendingApproval n` | Yes | Increment approval ID, re-send for approval | +| `GRSPendingApproval n` | No | No action | +| `GRSActive` | Yes | Transition to `GRSPendingApproval`, notify owner, re-send | +| `GRSActive` | No | No action | +| `GRSSuspended` | Any | No action | +| `GRSSuspendedBadRoles` | Any | No action | +| `GRSRemoved` | Any | No action | + +## Owner tracking + +### Owner-contact association + +When the bot connects via `APIConnectPreparedGroup` with the submitting contact's `contactId` and `ownerId`, the core sets `memberContactId` on the specific pre-created owner member whose `memberId` matches `ownerId`. This makes all existing event routing work: `DEContactRoleChanged`, `DEContactRemovedFromGroup`, `DEContactLeftGroup` resolve via `memberContactId`. + +### Owner changes + +| Event | Detection | Action | +|---|---|---| +| Owner loses owner role | `DEContactRoleChanged` (works via `memberContactId` set at connect time) | Transition to `GRSSuspendedBadRoles`, notify | +| Owner leaves group | `DEContactLeftGroup` | Transition to `GRSRemoved`, notify, leave group | +| Owner removed from group | `DEContactRemovedFromGroup` | Transition to `GRSRemoved`, notify, leave group | +| Non-owner sends card, current registrant no longer owner | Re-registration flow detects stale ownership | Suspend (`GRSSuspendedBadRoles`). Non-owner's card also checked: if their `ownerId` resolves to a non-owner member, and the current registrant is also not owner → suspend. | +| New owner sends card, current registrant no longer owner | Re-registration flow, verified | Transfer registration | + +## Commands for public group registrations + +Bot is subscriber (not admin): +- `/filter` — Reply: "This command is not available for public groups." +- `/role` — Reply: "This command is not available for public groups." +- `/link` — Show `PublicGroupProfile.groupLink` with appropriate message. +- `/delete` — Remove registration, bot leaves group (`APILeaveGroup`). +- `/list` — Works as before, includes public group registrations. + +## De-registration + +| Event | Action | +|---|---| +| Owner sends `/delete ID:NAME` | Delete registration, reply confirmation, leave group | +| Bot removed (`DEServiceRemovedFromGroup`) | Set `GRSRemoved`, notify | +| Group deleted (`DEGroupDeleted`) | Set `GRSRemoved`, notify | +| Owner leaves (`DEContactLeftGroup`) | Set `GRSRemoved`, notify, leave group | +| Owner removed (`DEContactRemovedFromGroup`) | Set `GRSRemoved`, notify, leave group | +| Admin sends `/suspend ID:NAME` | Set `GRSSuspended`, notify, do NOT leave group | + +Bot leaves group only for public group registrations (regular groups preserve existing behavior). + +## Code changes + +### 1. GroupType — add GTGroup + +`Types.hs`: +```haskell +data GroupType = GTChannel | GTGroup | GTUnknown Text +``` + +### 2. connectPlan — force-resolve parameter + +Add optional parameter to `APIConnectPlan` (before `sig=`): `resolve=on`. When present, `groupShortLinkPlan` skips the `knownLinkPlans` shortcut and always resolves link data. `GLPKnown` extended with `ownerVerification` and `groupSLinkData_`: +```haskell +GLPKnown {groupInfo :: GroupInfo, ownerVerification :: Maybe OwnerVerification, groupSLinkData_ :: Maybe GroupShortLinkData} +``` + +Parser: `/_connect plan [resolve=on] [sig=]` + +### 3. APIConnectPreparedGroup — optional (contactId, ownerId) + +Add optional paired `(contactId, ownerId)` parameter to `APIConnectPreparedGroup`. When present, `createLinkOwnerMember` (called during connect, Commands.hs:2129) sets `memberContactId` on the specific owner member whose `memberId` matches the provided `ownerId`. + +Current parser (Commands.hs:5045): `/_connect group # [incognito=on] []` +New parser: `/_connect group # [contact= owner=] [incognito=on] []` + +`contact` and `owner` are paired — both required together. `ownerId` identifies which pre-created owner member gets the `memberContactId` set (multiple owners possible via OwnerAuth chain). + +Current type (Controller.hs:479): `APIConnectPreparedGroup GroupId IncognitoEnabled (Maybe MsgContent)` +New type: `APIConnectPreparedGroup GroupId (Maybe (ContactId, B64UrlByteString)) IncognitoEnabled (Maybe MsgContent)` + +This also benefits the UI: when tapping an owner's link in a DM, the contactId is threaded through the connect alert to `APIConnectPreparedGroup`, creating the association. + +### 4. Events.hs — new events + +`DEChatLinkReceived` — fires for ALL MCChat messages in DM (any `MsgChatLink` variant, signed or unsigned): +```haskell +| DEChatLinkReceived + { contact :: Contact, + chatItemId :: ChatItemId, + chatLink :: MsgChatLink, + ownerSig :: Maybe LinkOwnerSig + } +``` + +`DEOwnerMemberAnnounced` (from `CEvtUnknownMemberAnnounced`): +```haskell +| DEOwnerMemberAnnounced GroupInfo GroupMember GroupMember + -- ^ groupInfo, unknownMember, announcedMember +``` + +In `crDirectoryEvent_`, extend `CEvtNewChatItems` for direct chat: +```haskell +(MCChat {chatLink, ownerSig}, Nothing) -> DEChatLinkReceived ct ciId chatLink ownerSig +``` + +Add `CEvtUnknownMemberAnnounced` handler: +```haskell +CEvtUnknownMemberAnnounced {groupInfo, unknownMember, announcedMember} -> + Just $ DEOwnerMemberAnnounced groupInfo unknownMember announcedMember +``` + +### 5. Service.hs — public group link handler + +`deChatLinkReceived`: validates card, calls `apiConnectPlan` (with `resolve=on`), handles per scenario matrix. The link string comes from `MCLGroup.connLink` (`ShortLinkContact`) formatted as URI — passed via command string, parsed inside the handler. For `GLPOk` + `Verified`: joins (with contactId + ownerId), stores `dbOwnerMemberId`, registers as `GRSProposed`. On join error: replies to owner (same pattern as Service.hs:368-370). For `GLPKnown` + `Verified`: re-registration flow. + +### 6. Service.hs — owner member announced handler + +`deOwnerMemberAnnounced`: checks if the announced member's `GroupMemberId` matches `dbOwnerMemberId` of any `GRSProposed` registration. If yes and role is `GROwner`: transition to `GRSPendingApproval`, notify, send for approval. If role < `GROwner`: cancel. + +### 7. Service.hs — deGroupUpdated changes + +For public groups (`groupProfile.publicGroup` present), skip "link in welcome message" check. On profile change, call `apiConnectPlan` with `resolve=on` to get authoritative link data. Compare resolved profile against stored. If different, trigger re-approval. + +### 8. Service.hs — command restrictions and de-registration + +Check `groupProfile.publicGroup` for `/filter`, `/role`. On `/delete` for public groups, call `APILeaveGroup`. Same for owner departure/removal events. + +### 9. Help message update + +``` +To register a channel, share its link with this bot using the "Share via chat" button. +To register a group, invite this bot as admin. +``` + +### 10. Approval message for admins + +Include: group name, description, image, member count, "Registered via link sharing (signed by owner)", publicGroupId. + +### 11. Tests + +**Registration:** +- Share signed card → bot joins, owner announced, pending approval +- Share unsigned card → "must be owner" reply +- Share non-MCLGroup / non-public-group card → "only channels" reply +- Share card with invalid signature → rejection with reason +- Share card, owner never announced → stays GRSProposed +- Share card, owner announced but role < GROwner → cancelled + +**Re-registration (GLPKnown, verified):** +- Same owner re-shares, active → "already listed" +- Same owner re-shares, pending → "already pending" +- Same owner re-shares with changed profile → re-approval +- Different contact, verified owner, previous no longer owner → transfer +- Different contact, verified owner, previous still owner → "registered by another owner" +- Different contact, not owner → rejection + stale ownership check +- Same owner re-shares while GRSProposed, owner still GSMemUnknown → "waiting for owner" + +**Profile updates:** +- XGrpInfo on active public group → re-approval +- XGrpInfo on pending public group → increment approval ID +- XGrpInfo on public group skips link-in-welcome check + +**Owner tracking (via contactId association):** +- Owner role changed → suspension +- Owner leaves → removal, bot leaves +- Owner removed → removal, bot leaves + +**De-registration:** +- `/delete` by owner → removal, bot leaves +- Bot removed → removal +- Admin `/suspend` → suspension, bot stays + +**Commands:** +- `/filter` on public group → disabled +- `/role` on public group → disabled +- `/link` on public group → shows public link diff --git a/scripts/desktop/build-lib-linux.sh b/scripts/desktop/build-lib-linux.sh index 793cc78cbb..779ed2c04e 100755 --- a/scripts/desktop/build-lib-linux.sh +++ b/scripts/desktop/build-lib-linux.sh @@ -8,6 +8,7 @@ function readlink() { OS=linux ARCH="$(uname -m)" +DATABASE_BACKEND="${1:-sqlite}" GHC_VERSION=8.10.7 if [ "$ARCH" == "aarch64" ]; then @@ -25,7 +26,13 @@ for elem in "${exports[@]}"; do count=$(grep -R "$elem$" libsimplex.dll.def | wc for elem in "${exports[@]}"; do count=$(grep -R "\"$elem\"" flake.nix | wc -l); if [ $count -ne 2 ]; then echo Wrong exports in flake.nix. Add \"$elem\" in two places of the file; exit 1; fi ; done #rm -rf $BUILD_DIR -cabal build lib:simplex-chat --ghc-options='-optl-Wl,-rpath,$ORIGIN -optl-Wl,-soname,libsimplex.so -flink-rts -threaded' --constraint 'simplexmq +client_library' --constraint 'simplex-chat +client_library' +if [[ "$DATABASE_BACKEND" == "postgres" ]]; then + echo "Building with postgres backend..." + cabal build lib:simplex-chat --ghc-options='-optl-Wl,-rpath,$ORIGIN -optl-Wl,-soname,libsimplex.so -flink-rts -threaded' --constraint 'simplexmq +client_library +client_postgres' --constraint 'simplex-chat +client_library +client_postgres' +else + echo "Building with sqlite backend..." + cabal build lib:simplex-chat --ghc-options='-optl-Wl,-rpath,$ORIGIN -optl-Wl,-soname,libsimplex.so -flink-rts -threaded' --constraint 'simplexmq +client_library' --constraint 'simplex-chat +client_library' +fi cd $BUILD_DIR/build mv libHSsimplex-chat-*-inplace-ghc${GHC_VERSION}.so libsimplex.so 2> /dev/null || true #patchelf --add-needed libHSrts_thr-ghc${GHC_VERSION}.so libsimplex.so diff --git a/simplex-chat.cabal b/simplex-chat.cabal index e777c6eeba..0fdcab89ab 100644 --- a/simplex-chat.cabal +++ b/simplex-chat.cabal @@ -5,7 +5,7 @@ cabal-version: 1.12 -- see: https://github.com/sol/hpack name: simplex-chat -version: 6.5.0.16 +version: 6.5.0.17 category: Web, System, Services, Cryptography homepage: https://github.com/simplex-chat/simplex-chat#readme author: simplex.chat diff --git a/src/Simplex/Chat/Controller.hs b/src/Simplex/Chat/Controller.hs index e989e520a5..0b263a6fa2 100644 --- a/src/Simplex/Chat/Controller.hs +++ b/src/Simplex/Chat/Controller.hs @@ -470,13 +470,13 @@ data ChatCommand | AddContact IncognitoEnabled | APISetConnectionIncognito Int64 IncognitoEnabled | APIChangeConnectionUser Int64 UserId -- new user id to switch connection to - | APIConnectPlan {userId :: UserId, connectionLink :: Maybe AConnectionLink, linkOwnerSig :: Maybe LinkOwnerSig} -- Maybe AConnectionLink is used to report link parsing failure as special error + | APIConnectPlan {userId :: UserId, connectionLink :: Maybe AConnectionLink, resolveKnown :: Bool, linkOwnerSig :: Maybe LinkOwnerSig} -- Maybe AConnectionLink is used to report link parsing failure as special error | APIPrepareContact UserId ACreatedConnLink ContactShortLinkData | APIPrepareGroup UserId CreatedLinkContact DirectLink GroupShortLinkData | APIChangePreparedContactUser ContactId UserId | APIChangePreparedGroupUser GroupId UserId | APIConnectPreparedContact {contactId :: ContactId, incognito :: IncognitoEnabled, msgContent_ :: Maybe MsgContent} - | APIConnectPreparedGroup GroupId IncognitoEnabled (Maybe MsgContent) + | APIConnectPreparedGroup {groupId :: GroupId, incognito :: IncognitoEnabled, ownerContact :: Maybe GroupOwnerContact, msgContent_ :: Maybe MsgContent} | APIConnect {userId :: UserId, incognito :: IncognitoEnabled, preparedLink_ :: Maybe ACreatedConnLink} -- Maybe is used to report link parsing failure as special error | Connect {incognito :: IncognitoEnabled, connLink_ :: Maybe AConnectionLink} | APIConnectContactViaAddress UserId IncognitoEnabled ContactId @@ -1037,15 +1037,27 @@ data GroupLinkPlan | GLPOwnLink {groupInfo :: GroupInfo} | GLPConnectingConfirmReconnect | GLPConnectingProhibit {groupInfo_ :: Maybe GroupInfo} - | GLPKnown {groupInfo :: GroupInfo} + | GLPKnown {groupInfo :: GroupInfo, groupUpdated :: BoolDef, ownerVerification :: Maybe OwnerVerification, linkOwners :: ListDef GroupLinkOwner} | GLPNoRelays {groupSLinkData_ :: Maybe GroupShortLinkData} deriving (Show) +data GroupLinkOwner = GroupLinkOwner + { memberId :: MemberId, + memberKey :: C.PublicKeyEd25519 + } + deriving (Show) + data OwnerVerification = OVVerified | OVFailed {reason :: Text} deriving (Show) +data GroupOwnerContact = GroupOwnerContact + { contactId :: ContactId, + memberId :: MemberId + } + deriving (Show) + type DirectLink = Bool data GroupShortLinkInfo = GroupShortLinkInfo @@ -1656,6 +1668,8 @@ $(JQ.deriveJSON (sumTypeJSON $ dropPrefix "CAP") ''ContactAddressPlan) $(JQ.deriveJSON defaultJSON ''GroupShortLinkInfo) +$(JQ.deriveJSON defaultJSON ''GroupLinkOwner) + $(JQ.deriveJSON (sumTypeJSON $ dropPrefix "GLP") ''GroupLinkPlan) $(JQ.deriveJSON (sumTypeJSON $ dropPrefix "FC") ''ForwardConfirmation) diff --git a/src/Simplex/Chat/Library/Commands.hs b/src/Simplex/Chat/Library/Commands.hs index 042280e062..31e6533ad3 100644 --- a/src/Simplex/Chat/Library/Commands.hs +++ b/src/Simplex/Chat/Library/Commands.hs @@ -625,7 +625,10 @@ processChatCommand vr nm = \case mapM_ assertNoMentions cms withContactLock "sendMessage" chatId $ sendContactContentMessages user chatId live itemTTL (L.map composedMessageReq cms) - SRGroup chatId gsScope asGroup -> + SRGroup chatId gsScope asGroup -> do + case gsScope of + Just (GCSMemberSupport _) -> when asGroup $ throwCmdError "cannot send as group in support scope" + Nothing -> pure () withGroupLock "sendMessage" chatId $ do (gInfo, cmrs) <- withFastStore $ \db -> do g <- getGroupInfo db vr user chatId @@ -1772,15 +1775,14 @@ processChatCommand vr nm = \case APIGroupInfo gId -> withUser $ \user -> CRGroupInfo user <$> withFastStore (\db -> getGroupInfo db vr user gId) APIGetUpdatedGroupLinkData groupId -> withUser $ \user -> do - gInfo@GroupInfo {groupProfile = GroupProfile {publicGroup}} <- withFastStore $ \db -> getGroupInfo db vr user groupId - case publicGroup of - Just PublicGroupProfile {groupLink = sLnk} | useRelays' gInfo -> do + gInfo@GroupInfo {groupProfile = p, groupSummary = GroupSummary {publicMemberCount = localCount}} <- withFastStore $ \db -> getGroupInfo db vr user groupId + case p of + GroupProfile {publicGroup = Just PublicGroupProfile {groupLink = sLnk}} | useRelays' gInfo -> do (_, cData) <- getShortLinkConnReq nm user sLnk groupSLinkData_ <- liftIO $ decodeLinkUserData cData - let publicGroupData_ = groupSLinkData_ >>= \GroupShortLinkData {publicGroupData} -> publicGroupData - publicMemberCount_ = (\PublicGroupData {publicMemberCount} -> publicMemberCount) <$> publicGroupData_ - gInfo' <- fromMaybe gInfo - <$> forM publicMemberCount_ (\count -> withFastStore $ \db -> setPublicMemberCount db vr user gInfo count) + gInfo' <- case groupSLinkData_ of + Just sLinkData -> fst <$> updateGroupFromLinkData user gInfo sLinkData + _ -> pure gInfo pure $ CRGroupInfo user gInfo' _ -> throwCmdError "group link data not available" APIGroupMemberInfo gId gMemberId -> withUser $ \user -> do @@ -1978,9 +1980,9 @@ processChatCommand vr nm = \case createDirectConnection db newUser agConnId ccLink' Nothing ConnNew Nothing subMode initialChatVersion PQSupportOn deleteAgentConnectionAsync (aConnId' conn) pure conn' - APIConnectPlan userId (Just cLink) linkOwnerSig_ -> withUserId userId $ \user -> - uncurry (CRConnectionPlan user) <$> connectPlan user cLink linkOwnerSig_ - APIConnectPlan _ Nothing _ -> throwChatError CEInvalidConnReq + APIConnectPlan userId (Just cLink) resolveKnown linkOwnerSig_ -> withUserId userId $ \user -> + uncurry (CRConnectionPlan user) <$> connectPlan user cLink resolveKnown linkOwnerSig_ + APIConnectPlan _ Nothing _ _ -> throwChatError CEInvalidConnReq APIPrepareContact userId accLink contactSLinkData -> withUserId userId $ \user -> do let ContactShortLinkData {profile, message, business} = contactSLinkData welcomeSharedMsgId <- forM message $ \_ -> getSharedMsgId @@ -2009,7 +2011,7 @@ processChatCommand vr nm = \case let cd = CDDirectRcv ct createItem sharedMsgId content = createChatItem user cd False content sharedMsgId Nothing cInfo = DirectChat ct - void $ createItem Nothing $ CIRcvDirectE2EEInfo $ E2EInfo $ connRequestPQEncryption cReq + void $ createItem Nothing $ CIRcvDirectE2EEInfo $ e2eInfoEncrypted $ connRequestPQEncryption cReq void $ createFeatureEnabledItems_ user ct aci <- mapM (createItem welcomeSharedMsgId . CIRcvMsgContent) message let chat = case aci of @@ -2100,7 +2102,7 @@ processChatCommand vr nm = \case toView $ CEvtNewChatItems user [ci] pure $ CRStartedConnectionToContact user ct' customUserProfile CVRConnectedContact ct' -> pure $ CRContactAlreadyExists user ct' - APIConnectPreparedGroup groupId incognito msgContent_ -> withUser $ \user -> do + APIConnectPreparedGroup {groupId, incognito, ownerContact, msgContent_} -> withUser $ \user -> do gInfo <- withFastStore $ \db -> getGroupInfo db vr user groupId case gInfo of GroupInfo {preparedGroup = Nothing} -> throwCmdError "group doesn't have link to connect" @@ -2126,8 +2128,12 @@ processChatCommand vr nm = \case gInfo' <- withFastStore $ \db -> do gInfo' <- updatePreparedRelayedGroup db vr user gInfo mainCReq cReqHash incognitoProfile rootKey memberPrivKey publicMemberCount_ -- Pre-emptively create owner members with trusted keys from link data - forM_ owners $ \OwnerAuth {ownerId, ownerKey} -> - void $ createLinkOwnerMember db vr user gInfo' (MemberId ownerId) ownerKey + forM_ owners $ \OwnerAuth {ownerId, ownerKey} -> do + let ctId_ = case ownerContact of + Just GroupOwnerContact {contactId, memberId} + | memberId == MemberId ownerId -> Just contactId + _ -> Nothing + void $ createLinkOwnerMember db vr user gInfo' ctId_ (MemberId ownerId) ownerKey pure gInfo' rs <- mapConcurrently (connectToRelay gInfo') relays let relayFailed = \case (_, _, Left _) -> True; _ -> False @@ -2221,7 +2227,7 @@ processChatCommand vr nm = \case Connect incognito (Just cLink@(ACL m cLink')) -> withUser $ \user -> do -- TODO [relays] member: /c api to support groups with relays -- TODO - possibly by going through APIPrepareGroup -> APIConnectPreparedGroup - (ccLink, plan) <- connectPlan user cLink Nothing `catchAllErrors` \e -> case cLink' of CLFull cReq -> pure (ACCL m (CCLink cReq Nothing), CPInvitationLink (ILPOk Nothing Nothing)); _ -> throwError e + (ccLink, plan) <- connectPlan user cLink False Nothing `catchAllErrors` \e -> case cLink' of CLFull cReq -> pure (ACCL m (CCLink cReq Nothing), CPInvitationLink (ILPOk Nothing Nothing)); _ -> throwError e connectWithPlan user incognito ccLink plan Connect _ Nothing -> throwChatError CEInvalidConnReq APIConnectContactViaAddress userId incognito contactId -> withUserId userId $ \user -> do @@ -2372,7 +2378,7 @@ processChatCommand vr nm = \case forM scope_ $ \(GSNMemberSupport mName_) -> GCSMemberSupport <$> mapM (getGroupMemberIdByName db user gId) mName_ (gInfo, cScope_,) <$> liftIO (getMessageMentions db user gId msg) - let sendRef = SRGroup (groupId' gInfo) cScope_ (sendAsGroup' gInfo) + let sendRef = SRGroup (groupId' gInfo) cScope_ (sendAsGroup' gInfo cScope_) processChatCommand vr nm $ APISendMessages sendRef False Nothing [ComposedMessage Nothing Nothing mc mentions] SNLocal -> do folderId <- withFastStore (`getUserNoteFolderId` user) @@ -3125,7 +3131,7 @@ processChatCommand vr nm = \case qiId <- getGroupChatItemIdByText db user gId cName quotedMsg (gInfo, qiId,) <$> liftIO (getMessageMentions db user gId msg) let mc = MCText msg - processChatCommand vr nm $ APISendMessages (SRGroup (groupId' gInfo) Nothing (sendAsGroup' gInfo)) False Nothing [ComposedMessage Nothing (Just quotedItemId) mc mentions] + processChatCommand vr nm $ APISendMessages (SRGroup (groupId' gInfo) Nothing (sendAsGroup' gInfo Nothing)) False Nothing [ComposedMessage Nothing (Just quotedItemId) mc mentions] ClearNoteFolder -> withUser $ \user -> do folderId <- withFastStore (`getUserNoteFolderId` user) processChatCommand vr nm $ APIClearChat (ChatRef CTLocal folderId Nothing) @@ -3401,7 +3407,7 @@ processChatCommand vr nm = \case _ -> throwCmdError "not supported" pure $ ChatRef cType chatId Nothing getSendAsGroup :: User -> ChatRef -> CM ShowGroupAsSender - getSendAsGroup user' (ChatRef CTGroup chatId _) = sendAsGroup' <$> withFastStore (\db -> getGroupInfo db vr user' chatId) + getSendAsGroup user' (ChatRef CTGroup chatId scope) = (`sendAsGroup'` scope) <$> withFastStore (\db -> getGroupInfo db vr user' chatId) getSendAsGroup _ _ = pure False getChatRefAndMentions :: User -> ChatName -> Text -> CM (ChatRef, Map MemberName GroupMemberId) getChatRefAndMentions user cName msg = do @@ -3855,7 +3861,7 @@ processChatCommand vr nm = \case createNewGroupItems user gInfo = do let cd = CDGroupSnd gInfo Nothing createInternalChatItem user cd CIChatBanner (Just epochStart) - createInternalChatItem user cd (CISndGroupE2EEInfo E2EInfo {pqEnabled = Just PQEncOff}) Nothing + createInternalChatItem user cd (CISndGroupE2EEInfo $ e2eInfoGroup gInfo) Nothing createGroupFeatureItems user cd CISndGroupFeature gInfo sendGrpInvitation :: User -> Contact -> GroupInfo -> GroupMember -> ConnReqInvitation -> CM () sendGrpInvitation user ct@Contact {contactId, localDisplayName} gInfo@GroupInfo {groupId, groupProfile, membership, businessChat} GroupMember {groupMemberId, memberId, memberRole = memRole} cReq = do @@ -3978,8 +3984,8 @@ processChatCommand vr nm = \case pure (gId, chatSettings) _ -> throwCmdError "not supported" processChatCommand vr nm $ APISetChatSettings (ChatRef cType chatId Nothing) $ updateSettings chatSettings - connectPlan :: User -> AConnectionLink -> Maybe LinkOwnerSig -> CM (ACreatedConnLink, ConnectionPlan) - connectPlan user (ACL SCMInvitation cLink) sig_ = case cLink of + connectPlan :: User -> AConnectionLink -> Bool -> Maybe LinkOwnerSig -> CM (ACreatedConnLink, ConnectionPlan) + connectPlan user (ACL SCMInvitation cLink) _ sig_ = case cLink of CLFull cReq -> invitationReqAndPlan cReq Nothing Nothing Nothing CLShort l -> do let l' = serverShortLink l @@ -4000,7 +4006,7 @@ processChatCommand vr nm = \case invitationReqAndPlan cReq sLnk_ cld ov = do plan <- invitationRequestPlan user cReq cld ov `catchAllErrors` (pure . CPError) pure (ACCL SCMInvitation (CCLink cReq sLnk_), plan) - connectPlan user (ACL SCMContact cLink) sig_ = case cLink of + connectPlan user (ACL SCMContact cLink) resolveKnown sig_ = case cLink of CLFull cReq -> do plan <- contactOrGroupRequestPlan user cReq `catchAllErrors` (pure . CPError) pure (ACCL SCMContact $ CCLink cReq Nothing, plan) @@ -4033,9 +4039,11 @@ processChatCommand vr nm = \case where l' = serverShortLink l con cReq = ACCL SCMContact $ CCLink cReq (Just l') - gPlan (cReq, g) = if memberRemoved (membership g) then Nothing else Just (con cReq, CPGroupLink (GLPKnown g)) + gPlan (cReq, g) = if memberRemoved (membership g) then Nothing else Just (con cReq, CPGroupLink (GLPKnown g (BoolDef False) Nothing (ListDef []))) groupShortLinkPlan = knownLinkPlans >>= \case + Just (_, CPGroupLink (GLPKnown g _ _ _)) + | resolveKnown -> resolveKnownGroup g Just r -> pure r Nothing -> do (fd, cData@(ContactLinkData _ UserContactData {direct, owners, relays})) <- getShortLinkConnReq' nm user l' @@ -4045,8 +4053,6 @@ processChatCommand vr nm = \case else do let FixedLinkData {linkConnReq = cReq, linkEntityId, rootKey} = fd linkInfo = GroupShortLinkInfo {direct, groupRelays = relays, publicGroupId = B64UrlByteString <$> linkEntityId} - -- Cross-validate linkEntityId and publicGroupId from profile: - -- for channels both must be present and match, for p2p groups both must be absent let profilePGId = groupSLinkData_ >>= \GroupShortLinkData {groupProfile = GroupProfile {publicGroup}} -> fmap (\PublicGroupProfile {publicGroupId} -> publicGroupId) publicGroup case (B64UrlByteString <$> linkEntityId, profilePGId) of @@ -4061,6 +4067,15 @@ processChatCommand vr nm = \case liftIO (getGroupInfoViaUserShortLink db vr user l') >>= \case Just (cReq, g) -> pure $ Just (con cReq, CPGroupLink (GLPOwnLink g)) Nothing -> (gPlan =<<) <$> getGroupViaShortLinkToConnect db vr user l' + resolveKnownGroup g = do + (fd@FixedLinkData {rootKey = rk}, cData@(ContactLinkData _ UserContactData {owners})) <- getShortLinkConnReq' nm user l' + groupSLinkData_ <- liftIO $ decodeLinkUserData cData + let ov = verifyLinkOwner rk owners l' sig_ + glOwners = map (\OwnerAuth {ownerId, ownerKey} -> GroupLinkOwner {memberId = MemberId ownerId, memberKey = ownerKey}) owners + (g', updated) <- case groupSLinkData_ of + Just sLinkData -> updateGroupFromLinkData user g sLinkData + _ -> pure (g, False) + pure (con (linkConnReq fd), CPGroupLink (GLPKnown g' (BoolDef updated) ov (ListDef glOwners))) connectWithPlan :: User -> IncognitoEnabled -> ACreatedConnLink -> ConnectionPlan -> CM ChatResponse connectWithPlan user@User {userId} incognito ccLink plan | connectionPlanProceed plan = do @@ -4140,10 +4155,10 @@ processChatCommand vr nm = \case (Just gInfo, _) -> groupPlan gInfo linkInfo gld ov groupPlan :: GroupInfo -> Maybe GroupShortLinkInfo -> Maybe GroupShortLinkData -> Maybe OwnerVerification -> CM ConnectionPlan groupPlan gInfo@GroupInfo {membership} linkInfo gld ov - | memberStatus membership == GSMemRejected = pure $ CPGroupLink (GLPKnown gInfo) + | memberStatus membership == GSMemRejected = pure $ CPGroupLink (GLPKnown gInfo (BoolDef False) ov (ListDef [])) | not (memberActive membership) && not (memberRemoved membership) = pure $ CPGroupLink (GLPConnectingProhibit $ Just gInfo) - | memberActive membership = pure $ CPGroupLink (GLPKnown gInfo) + | memberActive membership = pure $ CPGroupLink (GLPKnown gInfo (BoolDef False) ov (ListDef [])) | otherwise = pure $ CPGroupLink (GLPOk linkInfo gld ov) contactCReqSchemas :: ConnReqUriData -> (ConnReqContact, ConnReqContact) contactCReqSchemas crData = @@ -4478,7 +4493,7 @@ processChatCommand vr nm = \case ChatRef CTDirect cId _ -> a $ SRDirect cId ChatRef CTGroup gId scope -> do gInfo <- withFastStore $ \db -> getGroupInfo db vr user gId - a $ SRGroup gId scope (sendAsGroup' gInfo) + a $ SRGroup gId scope (sendAsGroup' gInfo scope) _ -> throwCmdError "not supported" getSharedMsgId :: CM SharedMsgId getSharedMsgId = do @@ -5008,7 +5023,7 @@ chatCommandP = ("/help" <|> "/h") $> ChatHelp HSMain, ("/group" <|> "/g") *> (NewGroup <$> incognitoP <* A.space <* char_ '#' <*> groupProfile), "/_group " *> (APINewGroup <$> A.decimal <*> incognitoOnOffP <* A.space <*> jsonP), - ("/public group" <|> "/pg") *> (NewPublicGroup <$> incognitoP <* " relays=" <*> strP <* A.space <* char_ '#' <*> groupProfile), + ("/public group" <|> "/pg") *> (NewPublicGroup <$> incognitoP <* " relays=" <*> strP <* A.space <* char_ '#' <*> channelProfile), "/_public group " *> (APINewPublicGroup <$> A.decimal <*> incognitoOnOffP <*> _strP <* A.space <*> jsonP), "/_get relays #" *> (APIGetGroupRelays <$> A.decimal), ("/add " <|> "/a ") *> char_ '#' *> (AddMember <$> displayNameP <* A.space <* char_ '@' <*> displayNameP <*> (memberRole <|> pure GRMember)), @@ -5051,13 +5066,13 @@ chatCommandP = (">#" <|> "> #") *> (SendGroupMessageQuote <$> displayNameP <* A.space <* char_ '@' <*> (Just <$> displayNameP) <* A.space <*> quotedMsg <*> msgTextP), "/_contacts " *> (APIListContacts <$> A.decimal), "/contacts" $> ListContacts, - "/_connect plan " *> (APIConnectPlan <$> A.decimal <* A.space <*> ((Just <$> strP) <|> A.takeTill (== ' ') $> Nothing) <*> optional (" sig=" *> jsonP)), + "/_connect plan " *> (APIConnectPlan <$> A.decimal <* A.space <*> ((Just <$> strP) <|> A.takeTill (== ' ') $> Nothing) <*> ((" resolve=" *> onOffP) <|> pure False) <*> optional (" sig=" *> jsonP)), "/_prepare contact " *> (APIPrepareContact <$> A.decimal <* A.space <*> connLinkP <* A.space <*> jsonP), "/_prepare group " *> (APIPrepareGroup <$> A.decimal <* A.space <*> connLinkP' <*> (" direct=" *> onOffP <|> pure True) <* A.space <*> jsonP), "/_set contact user @" *> (APIChangePreparedContactUser <$> A.decimal <* A.space <*> A.decimal), "/_set group user #" *> (APIChangePreparedGroupUser <$> A.decimal <* A.space <*> A.decimal), "/_connect contact @" *> (APIConnectPreparedContact <$> A.decimal <*> incognitoOnOffP <*> optional (A.space *> msgContentP)), - "/_connect group #" *> (APIConnectPreparedGroup <$> A.decimal <*> incognitoOnOffP <*> optional (A.space *> msgContentP)), + "/_connect group #" *> (APIConnectPreparedGroup <$> A.decimal <*> incognitoOnOffP <*> optional (A.space *> ownerContactP) <*> optional (A.space *> msgContentP)), "/_connect " *> (APIAddContact <$> A.decimal <*> incognitoOnOffP), "/_connect " *> (APIConnect <$> A.decimal <*> incognitoOnOffP <* A.space <*> connLinkP_), "/_set incognito :" *> (APISetConnectionIncognito <$> A.decimal <* A.space <*> onOffP), @@ -5138,6 +5153,7 @@ chatCommandP = "/set disappear @" *> (SetContactTimedMessages <$> displayNameP <*> optional (A.space *> timedMessagesEnabledP)), "/set disappear " *> (SetUserTimedMessages <$> (("yes" $> True) <|> ("no" $> False))), "/set reports #" *> (SetGroupFeature (AGFNR SGFReports) <$> displayNameP <*> _strP), + "/set support #" *> (SetGroupFeature (AGFNR SGFSupport) <$> displayNameP <*> (A.space *> strP)), "/set links #" *> (SetGroupFeatureRole (AGFR SGFSimplexLinks) <$> displayNameP <*> _strP <*> optional memberRole), "/set admission review #" *> (SetGroupMemberAdmissionReview <$> displayNameP <*> (A.space *> memberCriteriaP)), ("/incognito" <* optional (A.space *> onOffP)) $> ChatHelp HSIncognito, @@ -5187,6 +5203,7 @@ chatCommandP = ((Just <$> connLinkP) <|> A.takeTill (== ' ') $> Nothing) incognitoP = (A.space *> ("incognito" <|> "i")) $> True <|> pure False incognitoOnOffP = (A.space *> "incognito=" *> onOffP) <|> pure False + ownerContactP = "contact=" *> (GroupOwnerContact <$> A.decimal <* " owner=" <*> strP) imagePrefix = (<>) <$> "data:" <*> ("image/png;base64," <|> "image/jpg;base64,") imageP = safeDecodeUtf8 <$> ((<>) <$> imagePrefix <*> (B64.encode <$> base64P)) chatTypeP = A.char '@' $> CTDirect <|> A.char '#' $> CTGroup <|> A.char '*' $> CTLocal <|> A.char ':' $> CTContactConnection @@ -5274,6 +5291,10 @@ chatCommandP = history = Just HistoryGroupPreference {enable = FEOn} } pure GroupProfile {displayName = gName, fullName = "", shortDescr, description = Nothing, image = Nothing, publicGroup = Nothing, groupPreferences, memberAdmission = Nothing} + channelProfile = do + p@GroupProfile {groupPreferences = prefs_} <- groupProfile + let prefs = (fromMaybe emptyGroupPrefs prefs_) {support = Just SupportGroupPreference {enable = FEOff}} :: GroupPreferences + pure p {groupPreferences = Just prefs} memberCriteriaP = ("all" $> Just MCAll) <|> ("off" $> Nothing) shortDescrP = do descr <- A.takeWhile1 isSpace *> (T.dropWhileEnd isSpace <$> textP) <|> pure "" diff --git a/src/Simplex/Chat/Library/Internal.hs b/src/Simplex/Chat/Library/Internal.hs index f82b6884b2..d7de3a52ad 100644 --- a/src/Simplex/Chat/Library/Internal.hs +++ b/src/Simplex/Chat/Library/Internal.hs @@ -338,12 +338,17 @@ quoteContent mc qmc ciFile_ prohibitedGroupContent :: GroupInfo -> GroupMember -> Maybe GroupChatScopeInfo -> MsgContent -> Maybe MarkdownList -> Maybe f -> Bool -> Maybe GroupFeature prohibitedGroupContent gInfo@GroupInfo {membership = mem@GroupMember {memberRole = userRole}} m scopeInfo mc ft file_ sent + | not supportAllowed = Just GFSupport | isVoice mc && not (groupFeatureMemberAllowed SGFVoice m gInfo) && not hostApprovalVoice = Just GFVoice | isNothing scopeInfo && not (isVoice mc) && isJust file_ && not (groupFeatureMemberAllowed SGFFiles m gInfo) = Just GFFiles | isNothing scopeInfo && isReport mc && (badReportUser || not (groupFeatureAllowed SGFReports gInfo)) = Just GFReports | isNothing scopeInfo && prohibitedSimplexLinks gInfo m mc ft = Just GFSimplexLinks | otherwise = Nothing where + supportAllowed = case scopeInfo of + Just (GCSIMemberSupport scopeMem_) -> + groupFeatureAllowed SGFSupport gInfo || isJust (supportChat $ fromMaybe mem scopeMem_) + Nothing -> True hostApprovalVoice | sent = userRole >= GRAdmin && sendApprovalPhase | otherwise = memberCategory m == GCHostMember && hostApprovalPhase @@ -1029,7 +1034,7 @@ acceptBusinessJoinRequestAsync createJoiningMemberConnection db user uclId connIds chatV cReqChatVRange groupMemberId subMode let cd = CDGroupSnd gInfo Nothing -- TODO [short links] move to profileContactRequest? - createInternalChatItem user cd (CISndGroupE2EEInfo E2EInfo {pqEnabled = Just PQEncOff}) Nothing + createInternalChatItem user cd (CISndGroupE2EEInfo $ e2eInfoGroup gInfo) Nothing createGroupFeatureItems user cd CISndGroupFeature gInfo -- TODO [short links] get updated business chat group and member? (currently not used) pure (gInfo, clientMember) @@ -1328,6 +1333,24 @@ updatePublicGroupData user gInfo pure gInfo' | otherwise = pure gInfo +updateGroupFromLinkData :: User -> GroupInfo -> GroupShortLinkData -> CM (GroupInfo, Bool) +updateGroupFromLinkData user gInfo@GroupInfo {groupProfile = p, groupSummary = GroupSummary {publicMemberCount = localCount}} GroupShortLinkData {groupProfile, publicGroupData} + | profileChanged || countChanged = do + vr <- chatVersionRange + withStore $ \db -> do + g <- if profileChanged then updateGroupProfile db user gInfo groupProfile else pure gInfo + g' <- case publicGroupData of + Just PublicGroupData {publicMemberCount} | countChanged -> + setPublicMemberCount db vr user g publicMemberCount + _ -> pure g + pure (g', profileChanged) + | otherwise = pure (gInfo, False) + where + profileChanged = p /= groupProfile + countChanged = case publicGroupData of + Just PublicGroupData {publicMemberCount} -> Just publicMemberCount /= localCount + _ -> False + -- TODO [relays] owner: set owners on updating link data (multi-owner) groupLinkData :: GroupInfo -> GroupLink -> [GroupRelay] -> (UserConnLinkData 'CMContact, CRClientData) groupLinkData gInfo@GroupInfo {groupProfile, groupSummary = GroupSummary {publicMemberCount}, membership = GroupMember {memberId}, groupKeys} GroupLink {groupLinkId} groupRelays = @@ -1467,7 +1490,7 @@ createContactPQSndItem :: User -> Contact -> Connection -> PQEncryption -> CM (C createContactPQSndItem user ct conn@Connection {pqSndEnabled} pqSndEnabled' = flip catchAllErrors (const $ pure (ct, conn)) $ case (pqSndEnabled, pqSndEnabled') of (Just b, b') | b' /= b -> createPQItem $ CISndConnEvent (SCEPqEnabled pqSndEnabled') - (Nothing, PQEncOn) -> createPQItem $ CISndDirectE2EEInfo (E2EInfo $ Just pqSndEnabled') + (Nothing, PQEncOn) -> createPQItem $ CISndDirectE2EEInfo (e2eInfoEncrypted $ Just pqSndEnabled') _ -> pure (ct, conn) where createPQItem ciContent = do @@ -1482,7 +1505,7 @@ updateContactPQRcv :: User -> Contact -> Connection -> PQEncryption -> CM (Conta updateContactPQRcv user ct conn@Connection {connId, pqRcvEnabled} pqRcvEnabled' = flip catchAllErrors (const $ pure (ct, conn)) $ case (pqRcvEnabled, pqRcvEnabled') of (Just b, b') | b' /= b -> updatePQ $ CIRcvConnEvent (RCEPqEnabled pqRcvEnabled') - (Nothing, PQEncOn) -> updatePQ $ CIRcvDirectE2EEInfo (E2EInfo $ Just pqRcvEnabled') + (Nothing, PQEncOn) -> updatePQ $ CIRcvDirectE2EEInfo (e2eInfoEncrypted $ Just pqRcvEnabled') _ -> pure (ct, conn) where updatePQ ciContent = do diff --git a/src/Simplex/Chat/Library/Subscriber.hs b/src/Simplex/Chat/Library/Subscriber.hs index e92622b60c..087914e4f9 100644 --- a/src/Simplex/Chat/Library/Subscriber.hs +++ b/src/Simplex/Chat/Library/Subscriber.hs @@ -590,7 +590,7 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = -- [incognito] print incognito profile used for this contact incognitoProfile <- forM customUserProfileId $ \profileId -> withStore (\db -> getProfileById db userId profileId) toView $ CEvtContactConnected user ct' (fmap fromLocalProfile incognitoProfile) - let createE2EItem = createInternalChatItem user (CDDirectRcv ct') (CIRcvDirectE2EEInfo $ E2EInfo $ Just pqEnc) Nothing + let createE2EItem = createInternalChatItem user (CDDirectRcv ct') (CIRcvDirectE2EEInfo $ e2eInfoEncrypted $ Just pqEnc) Nothing -- TODO [short links] get contact request by contactRequestId, check encryption (UserContactRequest.pqSupport)? when (directOrUsed ct') $ case (preparedContact ct', contactRequestId' ct') of (Nothing, Nothing) -> do @@ -842,7 +842,7 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = firstConnectedHost ( do let cd = CDGroupRcv gInfo'' scopeInfo m'' - createInternalChatItem user cd (CIRcvGroupE2EEInfo E2EInfo {pqEnabled = Just PQEncOff}) Nothing + createInternalChatItem user cd (CIRcvGroupE2EEInfo $ e2eInfoGroup gInfo'') Nothing let prepared = preparedGroup gInfo'' unless (isJust prepared) $ createGroupFeatureItems user cd CIRcvGroupFeature gInfo'' memberConnectedChatItem gInfo'' scopeInfo m'' @@ -1356,7 +1356,7 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = upsertDirectRequestItem cd (requestMsg_, prevSharedMsgId_) Nothing -> do void $ createChatItem user (CDDirectSnd ct) False CIChatBanner Nothing (Just epochStart) - let e2eContent = CIRcvDirectE2EEInfo $ E2EInfo $ Just $ CR.pqSupportToEnc $ reqPQSup + let e2eContent = CIRcvDirectE2EEInfo $ e2eInfoEncrypted $ Just $ CR.pqSupportToEnc $ reqPQSup void $ createChatItem user cd False e2eContent Nothing Nothing void $ createFeatureEnabledItems_ user ct forM_ (autoReply addressSettings) $ \mc -> forM_ welcomeSharedMsgId $ \sharedMsgId -> @@ -1535,7 +1535,9 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = memberCanSend :: Maybe GroupMember -> Maybe MsgScope -> CM (Maybe DeliveryTaskContext) -> CM (Maybe DeliveryTaskContext) memberCanSend Nothing _ a = a -- channel message - was previously checked and allowed by relay memberCanSend (Just m@GroupMember {memberRole}) msgScope a = case msgScope of - Just MSMember {} -> a + Just (MSMember mId) + | sameMemberId mId m || memberRole >= GRModerator -> a + | otherwise -> messageError "member is not allowed to send to this support chat" $> Nothing Nothing | memberRole > GRObserver || memberPending m -> a | otherwise -> messageError "member is not allowed to send messages" $> Nothing @@ -1837,13 +1839,19 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = -- This patches initial sharedMsgId into chat item when locally deleted chat item -- received an update from the sender, so that it can be referenced later (e.g. by broadcast delete). -- Chat item and update message which created it will have different sharedMsgId in this case... - let timed_ = rcvContactCITimed ct ttl - ts = ciContentTexts content - (ci, cInfo) <- saveRcvChatItem' user (CDDirectRcv ct) msg (Just sharedMsgId) brokerTs (content, ts) Nothing timed_ live M.empty - ci' <- withStore' $ \db -> do - createChatItemVersion db (chatItemId' ci) brokerTs mc - updateDirectChatItem' db user contactId ci content True live Nothing Nothing - toView $ CEvtChatItemUpdated user (AChatItem SCTDirect SMDRcv cInfo ci') + if isVoice mc && not (featureAllowed SCFVoice forContact ct) + then do + let ciContent = ciContentNoParse $ CIRcvChatFeatureRejected CFVoice + (ci, cInfo) <- saveRcvChatItem' user (CDDirectRcv ct) msg (Just sharedMsgId) brokerTs ciContent Nothing Nothing False M.empty + toView $ CEvtChatItemUpdated user (AChatItem SCTDirect SMDRcv cInfo ci) + else do + let timed_ = rcvContactCITimed ct ttl + ts = ciContentTexts content + (ci, cInfo) <- saveRcvChatItem' user (CDDirectRcv ct) msg (Just sharedMsgId) brokerTs (content, ts) Nothing timed_ live M.empty + ci' <- withStore' $ \db -> do + createChatItemVersion db (chatItemId' ci) brokerTs mc + updateDirectChatItem' db user contactId ci content True live Nothing Nothing + toView $ CEvtChatItemUpdated user (AChatItem SCTDirect SMDRcv cInfo ci') where brokerTs = metaBrokerTs msgMeta content = CIRcvMsgContent mc @@ -2073,15 +2081,22 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = (gInfo', m', scopeInfo) <- mkGetMessageChatScope vr user gInfo m mc msgScope_ pure (gInfo', CDGroupRcv gInfo' scopeInfo m', mentions', scopeInfo) Nothing -> pure (gInfo, CDChannelRcv gInfo Nothing, mentions, Nothing) - (ci, cInfo) <- saveRcvChatItem' user chatDir msg (Just sharedMsgId) brokerTs (content, ts) Nothing timed_ live mentions' - ci' <- withStore' $ \db -> do - createChatItemVersion db (chatItemId' ci) brokerTs mc - updateGroupChatItem db user groupId ci content True live Nothing - ci'' <- case chatDir of - CDGroupRcv gi' _ m' -> blockedMemberCI gi' m' ci' - CDChannelRcv {} -> pure ci' - toView $ CEvtChatItemUpdated user (AChatItem SCTGroup SMDRcv cInfo ci'') - pure $ Just $ infoToDeliveryContext gInfo' scopeInfo showGroupAsSender + case m_ >>= \m -> prohibitedGroupContent gInfo' m scopeInfo mc ft_ (Nothing :: Maybe String) False of + Just f -> do + let ciContent = ciContentNoParse $ CIRcvGroupFeatureRejected f + (ci, cInfo) <- saveRcvChatItem' user chatDir msg (Just sharedMsgId) brokerTs ciContent Nothing timed_ False M.empty + groupMsgToView cInfo ci + pure Nothing + Nothing -> do + (ci, cInfo) <- saveRcvChatItem' user chatDir msg (Just sharedMsgId) brokerTs (content, ts) Nothing timed_ live mentions' + ci' <- withStore' $ \db -> do + createChatItemVersion db (chatItemId' ci) brokerTs mc + updateGroupChatItem db user groupId ci content True live Nothing + ci'' <- case chatDir of + CDGroupRcv gi' _ m' -> blockedMemberCI gi' m' ci' + CDChannelRcv {} -> pure ci' + toView $ CEvtChatItemUpdated user (AChatItem SCTGroup SMDRcv cInfo ci'') + pure $ Just $ infoToDeliveryContext gInfo' scopeInfo showGroupAsSender where content = CIRcvMsgContent mc ts@(_, ft_) = msgContentTexts mc @@ -2546,7 +2561,7 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = -- create item in both scopes let gInfo' = gInfo {membership = membership'} cd = CDGroupRcv gInfo' Nothing m - createInternalChatItem user cd (CIRcvGroupE2EEInfo E2EInfo {pqEnabled = Just PQEncOff}) Nothing + createInternalChatItem user cd (CIRcvGroupE2EEInfo $ e2eInfoGroup gInfo') Nothing let prepared = preparedGroup gInfo' unless (isJust prepared) $ createGroupFeatureItems user cd CIRcvGroupFeature gInfo' let welcomeMsgId_ = (\PreparedGroup {welcomeSharedMsgId = mId} -> mId) <$> preparedGroup gInfo' @@ -2917,8 +2932,9 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = GCHostMember -> withStore' (\db -> runExceptT $ getGroupMemberByMemberId db vr user gInfo memId) >>= \case Right existingMember - | useRelays' gInfo -> - void $ withStore $ \db -> updatePreparedChannelMember db vr user existingMember memInfo + | useRelays' gInfo -> do + updatedMember <- withStore $ \db -> updatePreparedChannelMember db vr user existingMember memInfo + toView $ CEvtGroupMemberUpdated user gInfo existingMember updatedMember | otherwise -> messageError "x.grp.mem.intro ignored: member already exists" Left _ diff --git a/src/Simplex/Chat/Messages.hs b/src/Simplex/Chat/Messages.hs index d90429f58e..5800ab5bdd 100644 --- a/src/Simplex/Chat/Messages.hs +++ b/src/Simplex/Chat/Messages.hs @@ -119,6 +119,11 @@ checkChatType x = case testEquality (chatTypeI @c) (chatTypeI @c') of data GroupChatScope = GCSMemberSupport {groupMemberId_ :: Maybe GroupMemberId} -- Nothing means own conversation with support deriving (Eq, Show, Ord) +sendAsGroup' :: GroupInfo -> Maybe GroupChatScope -> Bool +sendAsGroup' gInfo@GroupInfo {membership} scope = case scope of + Nothing -> useRelays' gInfo && memberRole' membership == GROwner + Just (GCSMemberSupport _) -> False + data GroupChatScopeTag = GCSTMemberSupport_ deriving (Eq, Show) diff --git a/src/Simplex/Chat/Messages/CIContent.hs b/src/Simplex/Chat/Messages/CIContent.hs index b08cc5a991..2dc751d6bb 100644 --- a/src/Simplex/Chat/Messages/CIContent.hs +++ b/src/Simplex/Chat/Messages/CIContent.hs @@ -177,9 +177,16 @@ data CIContent (d :: MsgDirection) where deriving instance Show (CIContent d) -data E2EInfo = E2EInfo {pqEnabled :: Maybe PQEncryption} +-- stored in database, all changed must be backward compatible +data E2EInfo = E2EInfo {public :: Maybe Bool, pqEnabled :: Maybe PQEncryption} deriving (Eq, Show) +e2eInfoEncrypted :: Maybe PQEncryption -> E2EInfo +e2eInfoEncrypted pqEnabled = E2EInfo {public = Nothing, pqEnabled} + +e2eInfoGroup :: GroupInfo -> E2EInfo +e2eInfoGroup g = E2EInfo {public = if useRelays' g then Just True else Nothing, pqEnabled = Just PQEncOff} + ciMsgContent :: CIContent d -> Maybe MsgContent ciMsgContent = \case CISndMsgContent mc -> Just mc @@ -315,9 +322,14 @@ directE2EInfoToText E2EInfo {pqEnabled} = case pqEnabled of Nothing -> simpleE2EText groupE2EInfoToText :: E2EInfo -> Text -groupE2EInfoToText E2EInfo {pqEnabled} = case pqEnabled of - Just _ -> e2eInfoNoPQText - Nothing -> simpleE2EText +groupE2EInfoToText E2EInfo {pqEnabled, public} = case public of + Just True -> publicGroupNoE2EText + _ -> case pqEnabled of + Just _ -> e2eInfoNoPQText + Nothing -> simpleE2EText + +publicGroupNoE2EText :: Text +publicGroupNoE2EText = "This channel or group is NOT end-to-end encrypted." simpleE2EText :: Text simpleE2EText = "This conversation is protected by end-to-end encryption" diff --git a/src/Simplex/Chat/Store/Groups.hs b/src/Simplex/Chat/Store/Groups.hs index c4e7210637..93db63ee71 100644 --- a/src/Simplex/Chat/Store/Groups.hs +++ b/src/Simplex/Chat/Store/Groups.hs @@ -1555,6 +1555,7 @@ createRelayRequestGroup db vr user@User {userId} GroupRelayInvitation {fromMembe (Binary invId, groupLink, minVersion reqChatVRange, maxVersion reqChatVRange, groupId) insertOwner_ currentTs groupId = do let MemberIdRole {memberId, memberRole} = fromMember + VersionRange minV maxV = reqChatVRange (localDisplayName, profileId) <- createNewMemberProfile_ db user fromMemberProfile currentTs indexInGroup <- getUpdateNextIndexInGroup_ db groupId liftIO $ do @@ -1563,11 +1564,13 @@ createRelayRequestGroup db vr user@User {userId} GroupRelayInvitation {fromMembe [sql| INSERT INTO group_members ( group_id, index_in_group, member_id, member_role, member_category, member_status, - user_id, local_display_name, contact_id, contact_profile_id, created_at, updated_at) - VALUES (?,?,?,?,?,?,?,?,?,?,?,?) + user_id, local_display_name, contact_id, contact_profile_id, created_at, updated_at, + peer_chat_min_version, peer_chat_max_version) + VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?) |] ( (groupId, indexInGroup, memberId, memberRole, GCHostMember, GSMemAccepted) :. (userId, localDisplayName, Nothing :: (Maybe Int64), profileId, currentTs, currentTs) + :. (minV, maxV) ) insertedRowId db @@ -2966,8 +2969,8 @@ createNewUnknownGroupMember db vr user@User {userId, userContactId} GroupInfo {g where VersionRange minV maxV = vr -createLinkOwnerMember :: DB.Connection -> VersionRangeChat -> User -> GroupInfo -> MemberId -> C.PublicKeyEd25519 -> ExceptT StoreError IO GroupMember -createLinkOwnerMember db vr user@User {userId, userContactId} GroupInfo {groupId} memberId ownerKey = do +createLinkOwnerMember :: DB.Connection -> VersionRangeChat -> User -> GroupInfo -> Maybe ContactId -> MemberId -> C.PublicKeyEd25519 -> ExceptT StoreError IO GroupMember +createLinkOwnerMember db vr user@User {userId, userContactId} GroupInfo {groupId} contactId_ memberId ownerKey = do currentTs <- liftIO getCurrentTime let memberProfile = profileFromName $ nameFromMemberId memberId (localDisplayName, profileId) <- createNewMemberProfile_ db user memberProfile currentTs @@ -2983,7 +2986,7 @@ createLinkOwnerMember db vr user@User {userId, userContactId} GroupInfo {groupId VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) |] ( (groupId, indexInGroup, memberId, GROwner, GCPreMember, GSMemUnknown, Binary B.empty, fromInvitedBy userContactId IBUnknown) - :. (userId, localDisplayName, Nothing :: (Maybe Int64), profileId, ownerKey, currentTs, currentTs) + :. (userId, localDisplayName, contactId_, profileId, ownerKey, currentTs, currentTs) :. (minV, maxV) ) groupMemberId <- liftIO $ insertedRowId db diff --git a/src/Simplex/Chat/Store/SQLite/Migrations/chat_query_plans.txt b/src/Simplex/Chat/Store/SQLite/Migrations/chat_query_plans.txt index 366074acc2..99880b23d7 100644 --- a/src/Simplex/Chat/Store/SQLite/Migrations/chat_query_plans.txt +++ b/src/Simplex/Chat/Store/SQLite/Migrations/chat_query_plans.txt @@ -523,8 +523,9 @@ SEARCH users USING COVERING INDEX sqlite_autoindex_users_1 (contact_id=?) Query: INSERT INTO group_members ( group_id, index_in_group, member_id, member_role, member_category, member_status, - user_id, local_display_name, contact_id, contact_profile_id, created_at, updated_at) - VALUES (?,?,?,?,?,?,?,?,?,?,?,?) + user_id, local_display_name, contact_id, contact_profile_id, created_at, updated_at, + peer_chat_min_version, peer_chat_max_version) + VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?) Plan: SEARCH group_relays USING COVERING INDEX idx_group_relays_group_member_id (group_member_id=?) diff --git a/src/Simplex/Chat/Types.hs b/src/Simplex/Chat/Types.hs index 6ddc411fff..b4acaedd39 100644 --- a/src/Simplex/Chat/Types.hs +++ b/src/Simplex/Chat/Types.hs @@ -494,9 +494,6 @@ data GroupInfo = GroupInfo useRelays' :: GroupInfo -> Bool useRelays' GroupInfo {useRelays} = isTrue useRelays -sendAsGroup' :: GroupInfo -> Bool -sendAsGroup' gInfo@GroupInfo {membership} = useRelays' gInfo && memberRole' membership == GROwner - groupId' :: GroupInfo -> GroupId groupId' GroupInfo {groupId} = groupId @@ -769,15 +766,18 @@ fromLocalProfile LocalProfile {displayName, fullName, shortDescr, image, contact data GroupType = GTChannel + | GTGroup | GTUnknown Text deriving (Eq, Show) instance TextEncoding GroupType where textEncode = \case GTChannel -> "channel" + GTGroup -> "group" GTUnknown tag -> tag textDecode s = Just $ case s of "channel" -> GTChannel + "group" -> GTGroup tag -> GTUnknown tag instance FromField GroupType where fromField = fromTextField_ textDecode diff --git a/src/Simplex/Chat/Types/Preferences.hs b/src/Simplex/Chat/Types/Preferences.hs index c02d2b8433..be189379c9 100644 --- a/src/Simplex/Chat/Types/Preferences.hs +++ b/src/Simplex/Chat/Types/Preferences.hs @@ -176,6 +176,7 @@ data GroupFeature | GFSimplexLinks | GFReports | GFHistory + | GFSupport | GFSessions | GFComments deriving (Show) @@ -190,6 +191,7 @@ data SGroupFeature (f :: GroupFeature) where SGFSimplexLinks :: SGroupFeature 'GFSimplexLinks SGFReports :: SGroupFeature 'GFReports SGFHistory :: SGroupFeature 'GFHistory + SGFSupport :: SGroupFeature 'GFSupport SGFSessions :: SGroupFeature 'GFSessions SGFComments :: SGroupFeature 'GFComments @@ -218,6 +220,7 @@ groupFeatureNameText = \case GFSimplexLinks -> "SimpleX links" GFReports -> "Member reports" GFHistory -> "Recent history" + GFSupport -> "Chat with admins" GFSessions -> "Chat sessions" GFComments -> "Comments" @@ -248,11 +251,12 @@ allGroupFeatures = AGF SGFFiles, AGF SGFSimplexLinks, AGF SGFReports, - AGF SGFHistory + AGF SGFHistory, + AGF SGFSupport ] groupPrefSel :: SGroupFeature f -> GroupPreferences -> Maybe (GroupFeaturePreference f) -groupPrefSel f GroupPreferences {timedMessages, directMessages, fullDelete, reactions, voice, files, simplexLinks, reports, history, sessions, comments} = case f of +groupPrefSel f GroupPreferences {timedMessages, directMessages, fullDelete, reactions, voice, files, simplexLinks, reports, history, support, sessions, comments} = case f of SGFTimedMessages -> timedMessages SGFDirectMessages -> directMessages SGFFullDelete -> fullDelete @@ -262,6 +266,7 @@ groupPrefSel f GroupPreferences {timedMessages, directMessages, fullDelete, reac SGFSimplexLinks -> simplexLinks SGFReports -> reports SGFHistory -> history + SGFSupport -> support SGFSessions -> sessions SGFComments -> comments @@ -276,6 +281,7 @@ toGroupFeature = \case SGFSimplexLinks -> GFSimplexLinks SGFReports -> GFReports SGFHistory -> GFHistory + SGFSupport -> GFSupport SGFSessions -> GFSessions SGFComments -> GFComments @@ -289,7 +295,7 @@ instance GroupPreferenceI (Maybe GroupPreferences) where getGroupPreference pt prefs = fromMaybe (getGroupPreference pt defaultGroupPrefs) (groupPrefSel pt =<< prefs) instance GroupPreferenceI FullGroupPreferences where - getGroupPreference f FullGroupPreferences {timedMessages, directMessages, fullDelete, reactions, voice, files, simplexLinks, reports, history, sessions, comments} = case f of + getGroupPreference f FullGroupPreferences {timedMessages, directMessages, fullDelete, reactions, voice, files, simplexLinks, reports, history, support, sessions, comments} = case f of SGFTimedMessages -> timedMessages SGFDirectMessages -> directMessages SGFFullDelete -> fullDelete @@ -299,6 +305,7 @@ instance GroupPreferenceI FullGroupPreferences where SGFSimplexLinks -> simplexLinks SGFReports -> reports SGFHistory -> history + SGFSupport -> support SGFSessions -> sessions SGFComments -> comments {-# INLINE getGroupPreference #-} @@ -314,6 +321,7 @@ data GroupPreferences = GroupPreferences simplexLinks :: Maybe SimplexLinksGroupPreference, reports :: Maybe ReportsGroupPreference, history :: Maybe HistoryGroupPreference, + support :: Maybe SupportGroupPreference, sessions :: Maybe SessionsGroupPreference, comments :: Maybe CommentsGroupPreference, commands :: Maybe [ChatBotCommand] @@ -365,6 +373,7 @@ setGroupPreference_ f pref prefs = SGFSimplexLinks -> prefs {simplexLinks = pref} SGFReports -> prefs {reports = pref} SGFHistory -> prefs {history = pref} + SGFSupport -> prefs {support = pref} SGFSessions -> prefs {sessions = pref} SGFComments -> prefs {comments = pref} @@ -408,6 +417,7 @@ data FullGroupPreferences = FullGroupPreferences simplexLinks :: SimplexLinksGroupPreference, reports :: ReportsGroupPreference, history :: HistoryGroupPreference, + support :: SupportGroupPreference, sessions :: SessionsGroupPreference, comments :: CommentsGroupPreference, commands :: ListDef ChatBotCommand @@ -478,13 +488,14 @@ defaultGroupPrefs = simplexLinks = SimplexLinksGroupPreference {enable = FEOn, role = Nothing}, reports = ReportsGroupPreference {enable = FEOn}, history = HistoryGroupPreference {enable = FEOff}, + support = SupportGroupPreference {enable = FEOn}, sessions = SessionsGroupPreference {enable = FEOff, role = Nothing}, comments = CommentsGroupPreference {enable = FEOff, duration = Nothing}, commands = ListDef [] } emptyGroupPrefs :: GroupPreferences -emptyGroupPrefs = GroupPreferences Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing +emptyGroupPrefs = GroupPreferences Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing businessGroupPrefs :: Preferences -> GroupPreferences businessGroupPrefs Preferences {timedMessages, fullDelete, reactions, voice, files, sessions, commands} = @@ -515,6 +526,7 @@ defaultBusinessGroupPrefs = simplexLinks = Just $ SimplexLinksGroupPreference FEOn Nothing, reports = Just $ ReportsGroupPreference FEOff, history = Just $ HistoryGroupPreference FEOn, + support = Just $ SupportGroupPreference FEOn, sessions = Just $ SessionsGroupPreference FEOn Nothing, comments = Just $ CommentsGroupPreference FEOff Nothing, commands = Nothing @@ -647,6 +659,10 @@ data HistoryGroupPreference = HistoryGroupPreference {enable :: GroupFeatureEnabled} deriving (Eq, Show) +data SupportGroupPreference = SupportGroupPreference + {enable :: GroupFeatureEnabled} + deriving (Eq, Show) + data SessionsGroupPreference = SessionsGroupPreference {enable :: GroupFeatureEnabled, role :: Maybe GroupMemberRole} deriving (Eq, Show) @@ -699,6 +715,9 @@ instance HasField "enable" ReportsGroupPreference GroupFeatureEnabled where instance HasField "enable" HistoryGroupPreference GroupFeatureEnabled where hasField p@HistoryGroupPreference {enable} = (\e -> p {enable = e}, enable) +instance HasField "enable" SupportGroupPreference GroupFeatureEnabled where + hasField p@SupportGroupPreference {enable} = (\e -> p {enable = e}, enable) + instance HasField "enable" SessionsGroupPreference GroupFeatureEnabled where hasField p@SessionsGroupPreference {enable} = (\e -> p {enable = e}, enable) @@ -759,6 +778,12 @@ instance GroupFeatureI 'GFHistory where groupPrefParam _ = Nothing groupPrefRole _ = Nothing +instance GroupFeatureI 'GFSupport where + type GroupFeaturePreference 'GFSupport = SupportGroupPreference + sGroupFeature = SGFSupport + groupPrefParam _ = Nothing + groupPrefRole _ = Nothing + instance GroupFeatureI 'GFSessions where type GroupFeaturePreference 'GFSessions = SessionsGroupPreference sGroupFeature = SGFSessions @@ -781,6 +806,8 @@ instance GroupFeatureNoRoleI 'GFReports instance GroupFeatureNoRoleI 'GFHistory +instance GroupFeatureNoRoleI 'GFSupport + instance GroupFeatureNoRoleI 'GFComments instance HasField "role" DirectMessagesGroupPreference (Maybe GroupMemberRole) where @@ -973,6 +1000,7 @@ mergeGroupPreferences groupPreferences = simplexLinks = pref SGFSimplexLinks, reports = pref SGFReports, history = pref SGFHistory, + support = pref SGFSupport, sessions = pref SGFSessions, comments = pref SGFComments, commands = ListDef $ fromMaybe [] $ groupPreferences >>= commands_ @@ -993,6 +1021,7 @@ toGroupPreferences groupPreferences@FullGroupPreferences {commands = ListDef cmd simplexLinks = pref SGFSimplexLinks, reports = pref SGFReports, history = pref SGFHistory, + support = pref SGFSupport, sessions = pref SGFSessions, comments = pref SGFComments, commands = Just cmds @@ -1123,11 +1152,13 @@ $(J.deriveJSON defaultJSON ''ReportsGroupPreference) $(J.deriveJSON defaultJSON ''HistoryGroupPreference) -$(J.deriveToJSON defaultJSON ''SessionsGroupPreference) +$(J.deriveToJSON defaultJSON ''SupportGroupPreference) -instance FromJSON SessionsGroupPreference where - parseJSON v = $(J.mkParseJSON defaultJSON ''SessionsGroupPreference) v - omittedField = Just SessionsGroupPreference {enable = FEOff, role = Nothing} +instance FromJSON SupportGroupPreference where + parseJSON v = $(J.mkParseJSON defaultJSON ''SupportGroupPreference) v + omittedField = Just SupportGroupPreference {enable = FEOn} + +$(J.deriveJSON defaultJSON ''SessionsGroupPreference) $(J.deriveToJSON defaultJSON ''CommentsGroupPreference) diff --git a/src/Simplex/Chat/View.hs b/src/Simplex/Chat/View.hs index ce0f55cf01..98eb811f5a 100644 --- a/src/Simplex/Chat/View.hs +++ b/src/Simplex/Chat/View.hs @@ -2103,7 +2103,7 @@ viewConnectionPlan ChatConfig {logLevel, testView} _connLink = \case GLPConnectingConfirmReconnect -> [grpLink "connecting, allowed to reconnect"] GLPConnectingProhibit Nothing -> [grpLink "connecting"] GLPConnectingProhibit (Just g) -> connecting g - GLPKnown g@GroupInfo {preparedGroup, membership = m} -> case preparedGroup of + GLPKnown g@GroupInfo {preparedGroup, membership = m} _ _ _ -> case preparedGroup of Just PreparedGroup {connLinkStartedConnection} -> case memberStatus m of GSMemUnknown | connLinkStartedConnection -> connecting g diff --git a/tests/Bots/DirectoryTests.hs b/tests/Bots/DirectoryTests.hs index 852e4cf4c4..b57127eced 100644 --- a/tests/Bots/DirectoryTests.hs +++ b/tests/Bots/DirectoryTests.hs @@ -7,7 +7,9 @@ module Bots.DirectoryTests where import ChatClient +import ChatTests.ChatRelays (withRelay) import ChatTests.DBUtils +import ChatTests.Groups (memberJoinChannel, prepareChannel1Relay) import ChatTests.Utils import Control.Concurrent (forkIO, killThread, threadDelay) import Control.Exception (finally) @@ -85,6 +87,13 @@ directoryServiceTests = do describe "help commands" $ do it "should not list audio command" testHelpNoAudio it "should reject audio command in DM" testAudioCommandInDM + describe "public group registration" $ do + it "should register channel via shared link card" testRegisterChannelViaCard + it "should suggest share via chat when link sent as text" testLinkAsTextSearch + it "should reject card shared by non-owner" testNonOwnerSharesCard + it "should delete channel registration and leave" testDeleteChannelRegistration + it "should handle re-registration when already listed" testReregistrationAlreadyListed + it "should update subscriber count periodically" testLinkCheckUpdatesCount directoryProfile :: Profile directoryProfile = Profile {displayName = "SimpleX Directory", fullName = "", shortDescr = Nothing, image = Nothing, contactLink = Nothing, peerType = Just CPTBot, preferences = Nothing} @@ -120,6 +129,7 @@ mkDirectoryOpts TestParams {tmpPath = ps} superUsers ownersGroup webFolder = runCLI = False, searchResults = 3, webFolder, + linkCheckInterval = 0, testing = True } @@ -1771,7 +1781,7 @@ u `connectVia` dsLink = do u .<# "> Welcome to SimpleX Directory!" u <## "" u <## "🔍 Send search string to find groups - try security." - u <## "/help - how to submit your group." + u <## "/help - how to submit your group or channel." u <## "/new - recent groups." u <## "" u <## "[Directory rules](https://simplex.chat/docs/directory.html)." @@ -1922,7 +1932,7 @@ testHelpNoAudio ps = -- commands help should not mention /audio bob #> "@'SimpleX Directory' /help commands" bob <# "'SimpleX Directory'> /'help commands' - receive this help message." - bob <## "/help - how to register your group to be added to directory." + bob <## "/help - how to register your group or channel to be added to directory." bob <## "/list - list the groups you registered." bob <## "`/role ` - view and set default member role for your group." bob <## "`/filter ` - view and set spam filter settings for group." @@ -1940,6 +1950,274 @@ testAudioCommandInDM ps = bob <# "'SimpleX Directory'> > /audio" bob <## " Unknown command" +testRegisterChannelViaCard :: HasCallStack => TestParams -> IO () +testRegisterChannelViaCard ps = + withDirectoryServiceCfg ps testCfg $ \superUser dsLink -> + withNewTestChatCfg ps testCfg "bob" bobProfile $ \bob -> + withRelay ps $ \relay -> do + -- bob connects to directory service first + bob `connectVia` dsLink + -- bob creates a channel with a relay + (_shortLink, _fullLink) <- prepareChannel1Relay "news" bob relay + -- bob shares the channel card with directory bot + bob ##> "/share chat #news @'SimpleX Directory'" + bob <# "@'SimpleX Directory' link to join channel #news (signed):" + _ <- getTermLine bob -- short link + _ <- getTermLine bob -- ownerSig JSON + -- directory bot validates and joins via relay + bob <# "'SimpleX Directory'> Joining the channel news…" + concurrentlyN_ + [ do + relay <## "'SimpleX Directory': accepting request to join group #news..." + relay <## "#news: 'SimpleX Directory' joined the group", + bob <## "#news: relay added 'SimpleX Directory_1' to the group" + ] + -- owner sends a message to trigger member introduction + bob <# "'SimpleX Directory'> Joined the channel news. Registration is pending approval — it may take up to 48 hours." + superUser <# "'SimpleX Directory'> bob submitted the channel ID 1:" + superUser <## "news" + superUser <##. "Link to join channel: " + superUser <## "You need SimpleX Chat app v6.5 to join." + superUser <## "1 subscribers" + superUser <## "" + superUser <## "To approve send:" + superUser <# "'SimpleX Directory'> /approve 1:news 1" + -- superuser approves + let approve = "/approve 1:news 1" + superUser #> ("@'SimpleX Directory' " <> approve) + superUser <# ("'SimpleX Directory'> > " <> approve) + superUser <## " Channel approved!" + bob <# ("'SimpleX Directory'> The channel ID 1 (news) is approved and listed in directory - please moderate it!") + bob <## "Please note: if you change the channel profile it will be hidden from directory until it is re-approved." + -- owner updates channel profile, triggering re-approval + bob ##> "/gp news news News and Updates" + bob <## "description changed to: News and Updates" + bob <# "'SimpleX Directory'> The channel ID 1 (news) is updated." + bob <## "It is hidden from the directory until approved." + relay <## "bob updated group #news: (signed)" + relay <## "description changed to: News and Updates" + superUser <# "'SimpleX Directory'> The channel ID 1 (news) is updated." + superUser <# ("'SimpleX Directory'> bob submitted the channel ID 1:") + superUser <## "news (News and Updates)" + superUser <##. "Link to join channel: " + superUser <## "You need SimpleX Chat app v6.5 to join." + superUser <## "2 subscribers" + superUser <## "" + superUser <## "To approve send:" + superUser <# "'SimpleX Directory'> /approve 1:news 1" + -- re-approve after profile update + let approve2 = "/approve 1:news 1" + superUser #> ("@'SimpleX Directory' " <> approve2) + superUser <# ("'SimpleX Directory'> > " <> approve2) + superUser <## " Channel approved!" + bob <# ("'SimpleX Directory'> The channel ID 1 (news) is approved and listed in directory - please moderate it!") + bob <## "Please note: if you change the channel profile it will be hidden from directory until it is re-approved." + -- owner leaves channel, triggering de-listing and bot leaving + bob ##> "/leave #news" + concurrentlyN_ + [ do + bob <## "#news: you left the group" + bob <## "use /d #news to delete the group", + relay <## "#news: bob left the group (signed)" + ] + bob <# "'SimpleX Directory'> You left the channel ID 1 (news)." + bob <## "" + bob <## "The channel is no longer listed in the directory." + superUser <# "'SimpleX Directory'> The channel ID 1 (news) is de-listed (channel owner left)." + relay <## "#news: 'SimpleX Directory' left the group (signed)" + +testLinkAsTextSearch :: HasCallStack => TestParams -> IO () +testLinkAsTextSearch ps = + withDirectoryServiceCfg ps testCfg $ \_superUser dsLink -> + withNewTestChatCfg ps testCfg "bob" bobProfile $ \bob -> + withRelay ps $ \relay -> do + bob `connectVia` dsLink + (shortLink, _fullLink) <- prepareChannel1Relay "news" bob relay + bob #> ("@'SimpleX Directory' " <> shortLink) + bob <# ("'SimpleX Directory'> > " <> shortLink) + bob <## " No groups found." + bob <## "To register a group or a channel, please use \"Share via chat\" feature." + +testNonOwnerSharesCard :: HasCallStack => TestParams -> IO () +testNonOwnerSharesCard ps = + withDirectoryServiceCfg ps testCfg $ \_superUser dsLink -> + withNewTestChatCfg ps testCfg "bob" bobProfile $ \bob -> + withRelay ps $ \relay -> + withNewTestChatCfg ps testCfg "cath" cathProfile $ \cath -> do + bob `connectVia` dsLink + cath `connectVia` dsLink + (shortLink, fullLink) <- prepareChannel1Relay "news" bob relay + memberJoinChannel "news" [relay] [bob] shortLink fullLink cath + cath ##> "/share chat #news @'SimpleX Directory'" + cath <# "@'SimpleX Directory' link to join channel #news:" + _ <- getTermLine cath -- short link + cath <# "'SimpleX Directory'> To add a channel to directory you must be the owner." + +testDeleteChannelRegistration :: HasCallStack => TestParams -> IO () +testDeleteChannelRegistration ps = + withDirectoryServiceCfg ps testCfg $ \superUser dsLink -> + withNewTestChatCfg ps testCfg "bob" bobProfile $ \bob -> + withRelay ps $ \relay -> do + bob `connectVia` dsLink + (_shortLink, _fullLink) <- prepareChannel1Relay "news" bob relay + bob ##> "/share chat #news @'SimpleX Directory'" + bob <# "@'SimpleX Directory' link to join channel #news (signed):" + _ <- getTermLine bob -- short link + _ <- getTermLine bob -- ownerSig JSON + bob <# "'SimpleX Directory'> Joining the channel news…" + concurrentlyN_ + [ do + relay <## "'SimpleX Directory': accepting request to join group #news..." + relay <## "#news: 'SimpleX Directory' joined the group", + bob <## "#news: relay added 'SimpleX Directory_1' to the group" + ] + bob <# "'SimpleX Directory'> Joined the channel news. Registration is pending approval — it may take up to 48 hours." + superUser <# "'SimpleX Directory'> bob submitted the channel ID 1:" + superUser <## "news" + superUser <##. "Link to join channel: " + superUser <## "You need SimpleX Chat app v6.5 to join." + superUser <## "1 subscribers" + superUser <## "" + superUser <## "To approve send:" + superUser <# "'SimpleX Directory'> /approve 1:news 1" + let approve = "/approve 1:news 1" + superUser #> ("@'SimpleX Directory' " <> approve) + superUser <# ("'SimpleX Directory'> > " <> approve) + superUser <## " Channel approved!" + bob <# ("'SimpleX Directory'> The channel ID 1 (news) is approved and listed in directory - please moderate it!") + bob <## "Please note: if you change the channel profile it will be hidden from directory until it is re-approved." + -- owner deletes registration + bob #> "@'SimpleX Directory' /delete 1:news" + bob + <### + [ WithTime "'SimpleX Directory'> > /delete 1:news", + " Your channel news is deleted from the directory", + "#news: 'SimpleX Directory_1' left the group (signed)" + ] + relay <## "#news: 'SimpleX Directory' left the group (signed)" + +testReregistrationAlreadyListed :: HasCallStack => TestParams -> IO () +testReregistrationAlreadyListed ps = + withDirectoryServiceCfg ps testCfg $ \superUser dsLink -> + withNewTestChatCfg ps testCfg "bob" bobProfile $ \bob -> + withRelay ps $ \relay -> do + bob `connectVia` dsLink + (_shortLink, _fullLink) <- prepareChannel1Relay "news" bob relay + -- register and approve + bob ##> "/share chat #news @'SimpleX Directory'" + bob <# "@'SimpleX Directory' link to join channel #news (signed):" + _ <- getTermLine bob -- short link + _ <- getTermLine bob -- ownerSig JSON + bob <# "'SimpleX Directory'> Joining the channel news…" + concurrentlyN_ + [ do + relay <## "'SimpleX Directory': accepting request to join group #news..." + relay <## "#news: 'SimpleX Directory' joined the group", + bob <## "#news: relay added 'SimpleX Directory_1' to the group" + ] + bob <# "'SimpleX Directory'> Joined the channel news. Registration is pending approval — it may take up to 48 hours." + superUser <# "'SimpleX Directory'> bob submitted the channel ID 1:" + superUser <## "news" + superUser <##. "Link to join channel: " + superUser <## "You need SimpleX Chat app v6.5 to join." + superUser <## "1 subscribers" + superUser <## "" + superUser <## "To approve send:" + superUser <# "'SimpleX Directory'> /approve 1:news 1" + let approve = "/approve 1:news 1" + superUser #> ("@'SimpleX Directory' " <> approve) + superUser <# ("'SimpleX Directory'> > " <> approve) + superUser <## " Channel approved!" + bob <# ("'SimpleX Directory'> The channel ID 1 (news) is approved and listed in directory - please moderate it!") + bob <## "Please note: if you change the channel profile it will be hidden from directory until it is re-approved." + -- search finds the channel with its link + bob #> "@'SimpleX Directory' news" + bob <# "'SimpleX Directory'> > news" + bob <## " Found 1 group(s)." + bob <# "'SimpleX Directory'> news" + bob <##. "Link to join channel: " + bob <## "You need SimpleX Chat app v6.5 to join." + bob <## "1 subscribers" + -- owner re-shares card while already listed + bob ##> "/share chat #news @'SimpleX Directory'" + bob <# "@'SimpleX Directory' link to join channel #news (signed):" + _ <- getTermLine bob -- short link + _ <- getTermLine bob -- ownerSig JSON + bob <# "'SimpleX Directory'> Channel is already listed in the directory." + +testLinkCheckUpdatesCount :: HasCallStack => TestParams -> IO () +testLinkCheckUpdatesCount ps = do + dsLink <- + withNewTestChatCfg ps testCfg serviceDbPrefix directoryProfile $ \ds -> + withNewTestChatCfg ps testCfg "super_user" aliceProfile $ \superUser -> do + connectUsers ds superUser + ds ##> "/ad" + getContactLink ds True + let opts = (mkDirectoryOpts ps [KnownContact 2 "alice"] Nothing Nothing) {linkCheckInterval = 1} + runDirectory testCfg opts $ + withTestChatCfg ps testCfg "super_user" $ \superUser -> do + superUser <## "subscribed 1 connections on server localhost" + withNewTestChatCfg ps testCfg "bob" bobProfile $ \bob -> + withRelay ps $ \relay -> + withNewTestChatCfg ps testCfg "cath" cathProfile $ \cath -> do + bob `connectVia` dsLink + (shortLink, fullLink) <- prepareChannel1Relay "news" bob relay + -- register and approve + bob ##> "/share chat #news @'SimpleX Directory'" + bob <# "@'SimpleX Directory' link to join channel #news (signed):" + _ <- getTermLine bob -- short link + _ <- getTermLine bob -- ownerSig JSON + bob <# "'SimpleX Directory'> Joining the channel news…" + concurrentlyN_ + [ do + relay <## "'SimpleX Directory': accepting request to join group #news..." + relay <## "#news: 'SimpleX Directory' joined the group", + bob <## "#news: relay added 'SimpleX Directory_1' to the group" + ] + bob <# "'SimpleX Directory'> Joined the channel news. Registration is pending approval — it may take up to 48 hours." + superUser <# "'SimpleX Directory'> bob submitted the channel ID 1:" + superUser <## "news" + superUser <##. "Link to join channel: " + superUser <## "You need SimpleX Chat app v6.5 to join." + superUser <## "1 subscribers" + superUser <## "" + superUser <## "To approve send:" + superUser <# "'SimpleX Directory'> /approve 1:news 1" + let approve = "/approve 1:news 1" + superUser #> ("@'SimpleX Directory' " <> approve) + superUser <# ("'SimpleX Directory'> > " <> approve) + superUser <## " Channel approved!" + bob <# ("'SimpleX Directory'> The channel ID 1 (news) is approved and listed in directory - please moderate it!") + bob <## "Please note: if you change the channel profile it will be hidden from directory until it is re-approved." + -- search shows initial count + bob #> "@'SimpleX Directory' news" + bob <# "'SimpleX Directory'> > news" + bob <## " Found 1 group(s)." + bob <# "'SimpleX Directory'> news" + bob <##. "Link to join channel: " + bob <## "You need SimpleX Chat app v6.5 to join." + bob <## "1 subscribers" + -- link check updates count (bot joined) + threadDelay 1000000 + bob #> "@'SimpleX Directory' news" + bob <# "'SimpleX Directory'> > news" + bob <## " Found 1 group(s)." + bob <# "'SimpleX Directory'> news" + bob <##. "Link to join channel: " + bob <## "You need SimpleX Chat app v6.5 to join." + bob <## "2 subscribers" + -- second subscriber joins + memberJoinChannel "news" [relay] [bob] shortLink fullLink cath + -- link check updates count again + threadDelay 1000000 + bob #> "@'SimpleX Directory' news" + bob <# "'SimpleX Directory'> > news" + bob <## " Found 1 group(s)." + bob <# "'SimpleX Directory'> news" + bob <##. "Link to join channel: " + bob <## "You need SimpleX Chat app v6.5 to join." + bob <## "3 subscribers" + testGetCaptchaStr :: HasCallStack => TestParams -> IO () testGetCaptchaStr _ps = do s0 <- getCaptchaStr 0 "" diff --git a/tests/ChatClient.hs b/tests/ChatClient.hs index 714aa0c0ed..279a09e718 100644 --- a/tests/ChatClient.hs +++ b/tests/ChatClient.hs @@ -170,7 +170,7 @@ termSettings :: VirtualTerminalSettings termSettings = VirtualTerminalSettings { virtualType = "xterm", - virtualWindowSize = pure C.Size {height = 20, width = 6000}, + virtualWindowSize = pure C.Size {height = 24, width = 6000}, virtualEvent = retry, virtualInterrupt = retry } diff --git a/tests/ChatTests/ChatList.hs b/tests/ChatTests/ChatList.hs index 14d48dbf60..889915a6e8 100644 --- a/tests/ChatTests/ChatList.hs +++ b/tests/ChatTests/ChatList.hs @@ -200,14 +200,14 @@ testPaginationAllChatTypes = ts7 <- iso8601Show <$> getCurrentTime - getChats_ alice "count=10" [("*", "psst"), ("@dan", "hey"), ("#team", "Recent history: on"), (":3", ""), ("@cath", "Audio/video calls: enabled"), ("@bob", "hey")] - getChats_ alice "count=3" [("*", "psst"), ("@dan", "hey"), ("#team", "Recent history: on")] + getChats_ alice "count=10" [("*", "psst"), ("@dan", "hey"), ("#team", "Chat with admins: on"), (":3", ""), ("@cath", "Audio/video calls: enabled"), ("@bob", "hey")] + getChats_ alice "count=3" [("*", "psst"), ("@dan", "hey"), ("#team", "Chat with admins: on")] getChats_ alice ("after=" <> ts2 <> " count=2") [(":3", ""), ("@cath", "Audio/video calls: enabled")] - getChats_ alice ("before=" <> ts5 <> " count=2") [("#team", "Recent history: on"), (":3", "")] - getChats_ alice ("after=" <> ts3 <> " count=10") [("*", "psst"), ("@dan", "hey"), ("#team", "Recent history: on"), (":3", "")] + getChats_ alice ("before=" <> ts5 <> " count=2") [("#team", "Chat with admins: on"), (":3", "")] + getChats_ alice ("after=" <> ts3 <> " count=10") [("*", "psst"), ("@dan", "hey"), ("#team", "Chat with admins: on"), (":3", "")] getChats_ alice ("before=" <> ts4 <> " count=10") [(":3", ""), ("@cath", "Audio/video calls: enabled"), ("@bob", "hey")] - getChats_ alice ("after=" <> ts1 <> " count=10") [("*", "psst"), ("@dan", "hey"), ("#team", "Recent history: on"), (":3", ""), ("@cath", "Audio/video calls: enabled"), ("@bob", "hey")] - getChats_ alice ("before=" <> ts7 <> " count=10") [("*", "psst"), ("@dan", "hey"), ("#team", "Recent history: on"), (":3", ""), ("@cath", "Audio/video calls: enabled"), ("@bob", "hey")] + getChats_ alice ("after=" <> ts1 <> " count=10") [("*", "psst"), ("@dan", "hey"), ("#team", "Chat with admins: on"), (":3", ""), ("@cath", "Audio/video calls: enabled"), ("@bob", "hey")] + getChats_ alice ("before=" <> ts7 <> " count=10") [("*", "psst"), ("@dan", "hey"), ("#team", "Chat with admins: on"), (":3", ""), ("@cath", "Audio/video calls: enabled"), ("@bob", "hey")] getChats_ alice ("after=" <> ts7 <> " count=10") [] getChats_ alice ("before=" <> ts1 <> " count=10") [] @@ -219,11 +219,11 @@ testPaginationAllChatTypes = alice ##> "/_settings #1 {\"enableNtfs\":\"all\",\"favorite\":true}" alice <## "ok" - getChats_ alice queryFavorite [("#team", "Recent history: on"), ("@bob", "hey")] + getChats_ alice queryFavorite [("#team", "Chat with admins: on"), ("@bob", "hey")] getChats_ alice ("before=" <> ts4 <> " count=1 " <> queryFavorite) [("@bob", "hey")] - getChats_ alice ("before=" <> ts5 <> " count=1 " <> queryFavorite) [("#team", "Recent history: on")] + getChats_ alice ("before=" <> ts5 <> " count=1 " <> queryFavorite) [("#team", "Chat with admins: on")] getChats_ alice ("after=" <> ts1 <> " count=1 " <> queryFavorite) [("@bob", "hey")] - getChats_ alice ("after=" <> ts4 <> " count=1 " <> queryFavorite) [("#team", "Recent history: on")] + getChats_ alice ("after=" <> ts4 <> " count=1 " <> queryFavorite) [("#team", "Chat with admins: on")] let queryUnread = "{\"type\": \"filters\", \"favorite\": false, \"unread\": true}" diff --git a/tests/ChatTests/Files.hs b/tests/ChatTests/Files.hs index 880c1373e9..fb94194561 100644 --- a/tests/ChatTests/Files.hs +++ b/tests/ChatTests/Files.hs @@ -19,7 +19,7 @@ import Simplex.Chat.Controller (ChatConfig (..)) import Simplex.Chat.Library.Internal (roundedFDCount) import Simplex.Chat.Mobile.File import Simplex.Chat.Options (ChatOpts (..)) -import Simplex.FileTransfer.Server.Env (XFTPServerConfig (..)) +import Simplex.FileTransfer.Server.Env (XFTPServerConfig (..), XFTPStoreConfig (..)) import Simplex.Messaging.Crypto.File (CryptoFile (..), CryptoFileArgs (..)) import Simplex.Messaging.Encoding.String import System.Directory (copyFile, createDirectoryIfMissing, doesFileExist, getFileSize) @@ -940,7 +940,7 @@ testXFTPRcvError ps = do alice <## "completed uploading file 1 (test.pdf) for bob" -- server is up w/t store log - file reception should fail - withXFTPServer' xftpServerConfig {storeLogFile = Nothing} $ do + withXFTPServer' xftpServerConfig {serverStoreCfg = XSCMemory Nothing, storeLogFile = Nothing} $ do withTestChat ps "bob" $ \bob -> do bob <## "subscribed 1 connections on server localhost" bob ##> "/fr 1 ./tests/tmp" diff --git a/tests/ChatTests/Groups.hs b/tests/ChatTests/Groups.hs index 1a1bc4b82f..89fb0a2004 100644 --- a/tests/ChatTests/Groups.hs +++ b/tests/ChatTests/Groups.hs @@ -28,6 +28,7 @@ import Simplex.Chat.Controller (ChatConfig (..), ChatHooks (..), defaultChatHook import Simplex.Chat.Library.Internal (uniqueMsgMentions, updatedMentionNames) import Simplex.Chat.Markdown (parseMaybeMarkdownList) import Simplex.Chat.Messages (CIMention (..), CIMentionMember (..), ChatItemId) +import Simplex.Chat.Messages.CIContent (publicGroupNoE2EText) import Simplex.Chat.Options import Simplex.Chat.Protocol (MsgMention (..), MsgContent (..), msgContentText) import Simplex.Chat.Types @@ -230,6 +231,8 @@ chatGroupTests = do it "should remove support chat with member when member is removed" testScopedSupportMemberRemoved it "should remove support chat with member when user removes member" testScopedSupportUserRemovesMember it "should remove support chat with member when member leaves" testScopedSupportMemberLeaves + it "should respect support preference in group" testSupportPreferenceGroup + it "should respect support preference in channel" testSupportPreferenceChannel -- TODO [relays] add tests for channels -- TODO - tests with delivery loop over members restored after restart -- TODO - delivery in support scopes inside channels @@ -266,6 +269,7 @@ chatGroupTests = do it "owner should update profile in channel (signed)" testChannelOwnerProfileUpdate it "subscriber should update profile in channel (signed)" testChannelSubscriberProfileUpdate it "should report relay results when one relay deleted its address" testChannelCreateDeletedRelay + it "should deliver support scope messages via relay" testChannelSupportScope describe "channel message operations" $ do it "should update channel message" testChannelMessageUpdate it "should delete channel message" testChannelMessageDelete @@ -456,7 +460,7 @@ testChatPaginationInitial = testChatOpts2 opts aliceProfile bobProfile $ \alice forM_ ([1 .. 10] :: [Int]) $ \n -> bob <# ("#team alice> " <> show n) -- All messages are unread for bob, should return area around unread - bob #$> ("/_get chat #1 initial=2", chat, [(0, "Recent history: on"), (0, "connected"), (0, "1"), (0, "2"), (0, "3")]) + bob #$> ("/_get chat #1 initial=2", chat, [(0, "Chat with admins: on"), (0, "connected"), (0, "1"), (0, "2"), (0, "3")]) -- Read next 2 items let itemIds = intercalate "," $ map groupItemId [1 .. 2] @@ -645,7 +649,7 @@ testGroup2 = ] dan <##> alice -- show last messages - alice ##> "/t #club 20" + alice ##> "/t #club 21" alice -- these strings are expected in any order because of sorting by time and rounding of time for sent <##? ( map (ConsoleString . ("#club " <> )) groupFeatureStrs @@ -1666,6 +1670,7 @@ testGroupDescription = testChat4 aliceProfile bobProfile cathProfile danProfile alice <## "SimpleX links: on" alice <## "Member reports: on" alice <## "Recent history: on" + alice <## "Chat with admins: on" bobAddedDan :: HasCallStack => TestCC -> IO () bobAddedDan cc = do cc <## "#team: bob added dan (Daniel) to the group (connecting...)" @@ -8399,6 +8404,120 @@ testScopedSupportMemberLeaves = { markRead = False } +testSupportPreferenceGroup :: HasCallStack => TestParams -> IO () +testSupportPreferenceGroup = + testChat3 aliceProfile bobProfile cathProfile $ \alice bob cath -> do + createGroup3' "team" alice (bob, GRMember) (cath, GRMember) + + threadDelay 1000000 + + -- support enabled by default, bob sends to support + bob #> "#team (support) hello" + alice <# "#team (support: bob) bob> hello" + + -- alice replies + alice #> "#team (support: bob) hi" + bob <# "#team (support) alice> hi" + + -- alice disables support + alice ##> "/set support #team off" + alice <## "updated group preferences:" + alice <## "Chat with admins: off" + concurrentlyN_ + [ do + bob <## "alice updated group #team:" + bob <## "updated group preferences:" + bob <## "Chat with admins: off", + do + cath <## "alice updated group #team:" + cath <## "updated group preferences:" + cath <## "Chat with admins: off" + ] + + threadDelay 500000 + + -- cath can't send support (no existing chat) + cath ##> "#team (support) hey" + cath <## "bad chat command: feature not allowed Chat with admins" + + -- alice can't send to cath's support (no existing chat) + alice ##> "#team (support: cath) hey" + alice <## "bad chat command: feature not allowed Chat with admins" + + -- bob can still send (existing chat) + bob #> "#team (support) still here" + alice <# "#team (support: bob) bob> still here" + + -- alice can still send to bob (existing chat) + alice #> "#team (support: bob) yes" + bob <# "#team (support) alice> yes" + +testSupportPreferenceChannel :: HasCallStack => TestParams -> IO () +testSupportPreferenceChannel ps = + withNewTestChat ps "alice" aliceProfile $ \alice -> + withNewTestChatOpts ps relayTestOpts "relay" relayProfile $ \relay -> + withNewTestChat ps "bob" bobProfile $ \bob -> + withNewTestChat ps "cath" cathProfile $ \cath -> do + (shortLink, fullLink) <- prepareChannel1Relay "team" alice relay + memberJoinChannel "team" [relay] [alice] shortLink fullLink bob + memberJoinChannel "team" [relay] [alice] shortLink fullLink cath + + threadDelay 1000000 + + alice ##> "/set support #team on" + alice <## "updated group preferences:" + alice <## "Chat with admins: on" + toggledSupport relay "alice" "team" "on" + concurrentlyN_ + [ toggledSupport bob "alice" "team" "on", + toggledSupport cath "alice" "team" "on" + ] + + -- support enabled by default, bob sends to support + bob #> "#team (support) hello" + relay <# "#team (support: bob) bob> hello" + alice <# "#team (support: bob) bob> hello [>>]" + + -- alice replies + alice #> "#team (support: bob) hi" + relay <# "#team (support: bob) alice> hi" + bob <# "#team (support) alice> hi [>>]" + + -- alice disables support + + threadDelay 1000000 + + alice ##> "/set support #team off" + alice <## "updated group preferences:" + alice <## "Chat with admins: off" + toggledSupport relay "alice" "team" "off" + concurrentlyN_ + [ toggledSupport bob "alice" "team" "off", + toggledSupport cath "alice" "team" "off" + ] + + threadDelay 500000 + + -- cath can't send support (no existing chat) + cath ##> "#team (support) hey" + cath <## "bad chat command: feature not allowed Chat with admins" + alice ##> "#team (support: cath) hey too" + alice <## "bad chat command: feature not allowed Chat with admins" + + -- bob can still send (existing chat) + bob #> "#team (support) still here" + concurrentlyN_ + [ relay <# "#team (support: bob) bob> still here", + alice <# "#team (support: bob) bob> still here [>>]" + ] + + -- alice can still send to bob (existing chat) + alice #> "#team (support: bob) yes" + concurrentlyN_ + [ relay <# "#team (support: bob) alice> yes", + bob <# "#team (support) alice> yes [>>]" + ] + testChannels1RelayDeliver :: HasCallStack => TestParams -> IO () testChannels1RelayDeliver ps = withNewTestChat ps "alice" aliceProfile $ \alice -> do @@ -8857,7 +8976,7 @@ testChannelLinkAfterWelcomeUpdate ps = shortLink' `shouldBe` shortLink fullLink' `shouldBe` fullLink memberJoinChannel "team" [bob] [alice] shortLink' fullLink' dan - dan #$> ("/_get chat #1 count=100", chat, groupFeaturesNoE2E <> [(0, "welcome to team"), (0, e2eeInfoNoPQStr), (0, "connected")]) + dan #$> ("/_get chat #1 count=100", chat, channelFeaturesNoE2E <> [(0, "welcome to team"), (0, T.unpack publicGroupNoE2EText), (0, "connected")]) alice #> "#team hi" bob <# "#team> hi" @@ -9567,6 +9686,45 @@ testChannelCreateDeletedRelay ps = -- bob's agent reports AUTH error when the queue is gone — drain it. void $ getTermLine bob +testChannelSupportScope :: HasCallStack => TestParams -> IO () +testChannelSupportScope ps = + withNewTestChat ps "alice" aliceProfile $ \alice -> + withNewTestChatOpts ps relayTestOpts "relay" relayProfile $ \relay -> + withNewTestChat ps "cath" cathProfile $ \cath -> + withNewTestChat ps "dan" danProfile $ \dan -> do + (shortLink, fullLink) <- prepareChannel1Relay "team" alice relay + memberJoinChannel "team" [relay] [alice] shortLink fullLink cath + memberJoinChannel "team" [relay] [alice] shortLink fullLink dan + + threadDelay 1000000 + + alice ##> "/set support #team on" + alice <## "updated group preferences:" + alice <## "Chat with admins: on" + toggledSupport relay "alice" "team" "on" + concurrentlyN_ + [ toggledSupport cath "alice" "team" "on", + toggledSupport dan "alice" "team" "on" + ] + + -- owner sends to cath's support scope, dan doesn't receive + alice #> "#team (support: cath) hello" + relay <# "#team (support: cath) alice> hello" + cath <# "#team (support) alice> hello [>>]" + (dan "#team (support) hi" + relay <# "#team (support: cath) cath> hi" + alice <# "#team (support: cath) cath> hi [>>]" + (dan TestCC -> String -> String -> String -> IO () +toggledSupport c owner channel onOff = do + c <## (owner <> " updated group #" <> channel <> ": (signed)") + c <## "updated group preferences:" + c <## ("Chat with admins: " <> onOff) + testChannelMessageUpdate :: HasCallStack => TestParams -> IO () testChannelMessageUpdate ps = withNewTestChat ps "alice" aliceProfile $ \alice -> diff --git a/tests/ChatTests/Utils.hs b/tests/ChatTests/Utils.hs index ebc9056164..d42e833c39 100644 --- a/tests/ChatTests/Utils.hs +++ b/tests/ChatTests/Utils.hs @@ -290,7 +290,10 @@ groupFeatures :: [(Int, String)] groupFeatures = map (\(a, _, _) -> a) $ groupFeatures'' 0 groupFeaturesNoE2E :: [(Int, String)] -groupFeaturesNoE2E = map (\(a, _, _) -> a) $ ((1, "chat banner"), Nothing, Nothing) : groupFeatures_ 0 +groupFeaturesNoE2E = map (\(a, _, _) -> a) $ ((1, "chat banner"), Nothing, Nothing) : groupFeatures_ 0 False + +channelFeaturesNoE2E :: [(Int, String)] +channelFeaturesNoE2E = map (\(a, _, _) -> a) $ ((1, "chat banner"), Nothing, Nothing) : groupFeatures_ 0 True sndGroupFeatures :: [(Int, String)] sndGroupFeatures = map (\(a, _, _) -> a) $ groupFeatures'' 1 @@ -299,10 +302,10 @@ groupFeatureStrs :: [String] groupFeatureStrs = map (\(a, _, _) -> snd a) $ groupFeatures'' 0 groupFeatures'' :: Int -> [((Int, String), Maybe (Int, String), Maybe String)] -groupFeatures'' dir = ((1, "chat banner"), Nothing, Nothing) : ((dir, e2eeInfoNoPQStr), Nothing, Nothing) : groupFeatures_ dir +groupFeatures'' dir = ((1, "chat banner"), Nothing, Nothing) : ((dir, e2eeInfoNoPQStr), Nothing, Nothing) : groupFeatures_ dir False -groupFeatures_ :: Int -> [((Int, String), Maybe (Int, String), Maybe String)] -groupFeatures_ dir = +groupFeatures_ :: Int -> Bool -> [((Int, String), Maybe (Int, String), Maybe String)] +groupFeatures_ dir isChannel = [ ((dir, "Disappearing messages: off"), Nothing, Nothing), ((dir, "Direct messages: on"), Nothing, Nothing), ((dir, "Full deletion: off"), Nothing, Nothing), @@ -311,7 +314,8 @@ groupFeatures_ dir = ((dir, "Files and media: on"), Nothing, Nothing), ((dir, "SimpleX links: on"), Nothing, Nothing), ((dir, "Member reports: on"), Nothing, Nothing), - ((dir, "Recent history: on"), Nothing, Nothing) + ((dir, "Recent history: on"), Nothing, Nothing), + ((dir, "Chat with admins: " <> (if isChannel then "off" else "on")), Nothing, Nothing) ] businessGroupFeatures :: [(Int, String)] @@ -329,7 +333,8 @@ businessGroupFeatures'' dir = ((dir, "Files and media: on"), Nothing, Nothing), ((dir, "SimpleX links: on"), Nothing, Nothing), ((dir, "Member reports: off"), Nothing, Nothing), - ((dir, "Recent history: on"), Nothing, Nothing) + ((dir, "Recent history: on"), Nothing, Nothing), + ((dir, "Chat with admins: on"), Nothing, Nothing) ] itemId :: Int -> String diff --git a/tests/ProtocolTests.hs b/tests/ProtocolTests.hs index 3ba789b988..01399f6bbb 100644 --- a/tests/ProtocolTests.hs +++ b/tests/ProtocolTests.hs @@ -101,7 +101,7 @@ testChatPreferences :: Maybe Preferences testChatPreferences = Just Preferences {voice = Just VoicePreference {allow = FAYes}, files = Nothing, fullDelete = Nothing, timedMessages = Nothing, calls = Nothing, reactions = Just ReactionsPreference {allow = FAYes}, sessions = Nothing, commands = Nothing} testGroupPreferences :: Maybe GroupPreferences -testGroupPreferences = Just GroupPreferences {timedMessages = Nothing, directMessages = Nothing, reactions = Just ReactionsGroupPreference {enable = FEOn}, voice = Just VoiceGroupPreference {enable = FEOn, role = Nothing}, files = Nothing, fullDelete = Nothing, simplexLinks = Nothing, history = Nothing, reports = Nothing, sessions = Nothing, comments = Nothing, commands = Nothing} +testGroupPreferences = Just GroupPreferences {timedMessages = Nothing, directMessages = Nothing, reactions = Just ReactionsGroupPreference {enable = FEOn}, voice = Just VoiceGroupPreference {enable = FEOn, role = Nothing}, files = Nothing, fullDelete = Nothing, simplexLinks = Nothing, history = Nothing, reports = Nothing, support = Nothing, sessions = Nothing, comments = Nothing, commands = Nothing} testProfile :: Profile testProfile = Profile {displayName = "alice", fullName = "Alice", shortDescr = Nothing, image = Just (ImageData "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII="), peerType = Nothing, contactLink = Nothing, preferences = testChatPreferences} diff --git a/website/langs/de.json b/website/langs/de.json index cc79255259..c35cd8fba6 100644 --- a/website/langs/de.json +++ b/website/langs/de.json @@ -17,7 +17,7 @@ "simplex-explained-tab-2-p-1": "Für jede Verbindung nutzen Sie zwei separate Nachrichten-Warteschlangen, um die Nachrichten über verschiedene Server zu senden und zu empfangen.", "simplex-explained-tab-2-p-2": "Die Server leiten Nachrichten immer nur in eine Richtung weiter, ohne den vollständigen Verlauf der Nutzer-Unterhaltungen oder seiner Verbindungen zu kennen.", "simplex-explained-tab-3-p-1": "Die Server nutzen für jede Warteschlange separate, anonyme Anmeldeinformationen und wissen nicht, welchem Nutzer diese gehören.", - "simplex-explained-tab-3-p-2": "Durch die Verwendung von Tor-Zugangsservern können Nutzer ihre Metadaten-Privatsphäre weiter verbessern und Korellationen von IP-Adressen verhindern.", + "simplex-explained-tab-3-p-2": "Durch die Verwendung von Tor-Zugangsservern können Nutzer ihre Metadaten-Privatsphäre weiter verbessern und Korrelationen von IP-Adressen verhindern.", "smp-protocol": "SMP-Protokoll", "chat-bot-example": "Beispiel für einen Chatbot", "donate": "Spenden", @@ -68,7 +68,7 @@ "simplex-private-card-9-point-1": "Jede Nachrichten-Warteschlange leitet Nachrichten mit unterschiedlichen Sende- und Empfängeradressen jeweils nur in einer Richtung weiter.", "simplex-private-card-9-point-2": "Verglichen mit traditionellen Nachrichten-Brokern, werden mögliche Angriffs-Vektoren und vorhandene Metadaten reduziert.", "simplex-private-card-10-point-1": "SimpleX nutzt für jeden Nutzer-Kontakt oder jedes Gruppenmitglied eigene temporäre, anonyme und paarweise Adressen und Berechtigungsnachweise.", - "simplex-private-card-10-point-2": "SimpleX erlaubt es, Nachrichten ohne Nutzerprofil-Bezeichner zu versenden und bietet dabei bessere Metadaten-Privatsphäre an als andere Alternativen.", + "simplex-private-card-10-point-2": "SimpleX ermöglicht die Zustellung von Nachrichten ohne Nutzerprofil-Kennungen und bietet dabei bessere Metadaten-Privatsphäre als andere Alternativen.", "simplex-unique-4-title": "Sie besitzen das SimpleX-Netzwerk", "privacy-matters-1-title": "Werbung und Preisdiskriminierung", "privacy-matters-1-overlay-1-title": "Privatsphäre spart Ihnen Geld", @@ -197,13 +197,13 @@ "simplex-network-overlay-card-1-li-1": "P2P-Netzwerke vertrauen auf Varianten von DHT, um Nachrichten zu routen. DHT-Designs müssen zwischen Zustellungsgarantie und Latenz ausgleichen. Verglichen mit P2P bietet SimpleX sowohl eine bessere Zustellungsgarantie als auch eine niedrigere Latenz, weil eine Nachricht redundant und parallel über mehrere Server gesendet werden kann, wobei die durch den Empfänger ausgewählten Server genutzt werden. In P2P-Netzwerken werden Nachrichten sequentiell über O(log N)-Knoten gesendet, wobei die Knoten durch einen Algorithmus ausgewählt werden.", "simplex-unique-overlay-card-3-p-4": "Zwischen dem gesendeten und dem empfangenen Serververkehr gibt es keine gemeinsamen Kennungen oder Chiffriertexte — sodass ein Beobachter nicht ohne weiteres feststellen kann, wer mit wem kommuniziert, selbst wenn TLS kompromittiert wurde.", "simplex-unique-overlay-card-4-p-3": "Falls Sie Interesse daran haben, aktiv bei der Entwicklung des SimpleX-Netzwerks mitzuhelfen, z.B. einen Chatbot für SimpleX App-Nutzer zu entwickeln oder die Integration der SimpleX Chat-Bibliothek in mobile Apps voranzutreiben, kontaktieren Sie uns bitte für eine weitere Beratung und Unterstützung.", - "privacy-matters-overlay-card-1-p-4": "Das SimpleX-Netzwerk schützt die Privatsphäre Ihrer Verbindungen besser als jede Alternative und verhindert vollständig, dass Ihr sozialer Graph für Unternehmen oder Organisationen verfügbar wird. Selbst wenn Anwender die in der SimpleX Chat-App vorkonfigurierten Server verwenden, kennen die Server-Betreiber die Anzahl der Benutzer oder deren Verbindungen nicht.", + "privacy-matters-overlay-card-1-p-4": "Das SimpleX-Netzwerk schützt die Privatsphäre Ihrer Verbindungen besser als jede Alternative und verhindert vollständig, dass Ihr sozialer Graph für Unternehmen oder Organisationen einsehbar wird. Selbst wenn Anwender die in der SimpleX Chat-App vorkonfigurierten Server verwenden, kennen die Server-Betreiber die Anzahl der Benutzer oder deren Verbindungen nicht.", "contact-hero-header": "Sie haben eine Adresse zur Verbindung mit SimpleX Chat erhalten", "invitation-hero-header": "Sie haben einen Einmal-Link zur Verbindung mit SimpleX Chat erhalten", "privacy-matters-overlay-card-3-p-3": "Selbst in demokratischen Ländern werden normale Menschen, auch unter Nutzung ihrer „anonymen“ Benutzerkennungen, für das, was sie online teilen, verhaftet.", "simplex-unique-overlay-card-3-p-1": "SimpleX Chat speichert alle Benutzerdaten ausschließlich auf den Endgeräten in einem portablen und verschlüsselten Datenbankformat, welches exportiert und auf jedes unterstützte Gerät übertragen werden kann.", "simplex-unique-overlay-card-2-p-2": "Auch wenn die optionale Benutzeradresse zum Versenden von Spam-Kontaktanfragen verwendet werden kann, können Sie sie ändern oder ganz löschen, ohne dass Ihre Verbindungen verloren gehen.", - "simplex-unique-overlay-card-4-p-2": "Das SimpleX-Netzwerk verwendet ein offenes Protokoll und bietet ein SDK zur Erstellung von Chatbots an. Dies ermöglicht die Erstellung von Diensten, mit denen Nutzer über SimpleX Chat-Apps interagieren können — wir sind gespannt, welche SimpleX-Dienste Sie entwickeln werden.", + "simplex-unique-overlay-card-4-p-2": "Das SimpleX-Netzwerk verwendet ein offenes Protokoll und bietet ein SDK zur Erstellung von Chatbots an. Dies ermöglicht die Erstellung von Diensten, mit denen Nutzer über SimpleX Chat-Apps interagieren können — wir freuen uns sehr darauf zu sehen, welche SimpleX-Dienste Sie entwickeln werden.", "simplex-unique-card-4-p-2": "Sie können SimpleX mit eigenen Servern oder mit den von uns zur Verfügung gestellten Servern verwenden — und sich trotzdem mit jedem Benutzer verbinden.", "why-simplex-is-unique": "Warum ist SimpleX einmalig", "contact-hero-p-1": "Die öffentlichen Schlüssel und die Adresse der Nachrichtenwarteschlange in diesem Link werden NICHT über das Netzwerk gesendet, wenn Sie diese Seite aufrufen — sie sind in dem Hash-Fragment der Link-URL enthalten.", @@ -275,7 +275,7 @@ "index-publications-optout-title": "Podcast-Interview von OptOut", "worlds-most-secure-messaging": "Das sicherste Messaging-System der Welt", "index-messaging-p1": "SimpleX-Messaging verfügt über modernste Ende-zu-Ende-Verschlüsselung.", - "index-messaging-p2": "Zu Ihrer Sicherheit und zum Schutz Ihrer Privatsphäre können Server weder Ihre Nachrichten sehen, noch mit wem Sie kommunizieren.", + "index-messaging-p2": "Zu Ihrer Sicherheit und zum Schutz Ihrer Privatsphäre können Server weder Ihre Nachrichten sehen, noch mit wem Sie kommunizieren.", "index-messaging-cta": "Lernen Sie mehr über SimpleX-Messaging", "index-nextweb-h2": "Sie besitzen die
Zukunft des Webs", "index-nextweb-p1": "SimpleX wurde aus der Überzeugung heraus entwickelt, dass Sie Eigentümer Ihrer Profile, Kontakte und Communitys bleiben müssen.", diff --git a/website/langs/es.json b/website/langs/es.json index 421cdbe9bd..6a9737ba1d 100644 --- a/website/langs/es.json +++ b/website/langs/es.json @@ -336,7 +336,7 @@ "file-drop-text": "Arrastra y suelta el archivo aquí", "file-drop-hint": "o", "file-choose": "Seleccionar archivo", - "file-max-size": "Max 100 MB - La app SimpleX Chat soporta archivos hasta 1GB", + "file-max-size": "Max 100 MB - La app SimpleX Chat soporta archivos hasta 1GB", "file-encrypting": "Cifrando…", "file-uploading": "Subiendo…", "file-cancel": "Cancelar", @@ -347,7 +347,7 @@ "file-expiry": "Normalmente los archivos están disponibles durante 48 horas.", "file-sec-1": "Tu archivo se ha cifrado en el navegador, los routers de datos nunca ven el contenido, el nombre o el tamaño.", "file-sec-2": "La clave de cifrado está en el fragmento hash del enlace, nunca se envía a ningún servidor.", - "file-sec-3": "Para mejor seguridad, usa la app SimpleX Chat.", + "file-sec-3": "Para mejor seguridad, usa la app SimpleX Chat.", "file-retry": "Reintentar", "file-downloading": "Descargando…", "file-decrypting": "Descifrando…", diff --git a/website/langs/hu.json b/website/langs/hu.json index da5de1128d..1d0d51fc03 100644 --- a/website/langs/hu.json +++ b/website/langs/hu.json @@ -11,7 +11,7 @@ "simplex-explained-tab-1-text": "1. Felhasználói élmény", "simplex-explained-tab-2-text": "2. Hogyan működik", "simplex-explained-tab-3-text": "3. Mit látnak a kiszolgálók", - "simplex-explained-tab-1-p-1": "Csoportokat hozhat létre, valamint kétirányú beszélgetéseket folytathat a partnereivel, ugyanúgy mint bármely más üzenetváltó-alkalmazásban.", + "simplex-explained-tab-1-p-1": "Csoportokat hozhat létre, valamint kétirányú beszélgetéseket folytathat a partnereivel, ugyanúgy mint bármely más üzenetváltó alkalmazásban.", "simplex-explained-tab-1-p-2": "Hogyan működhet egyirányú várólistával és felhasználói profilazonosítók nélkül?", "simplex-explained-tab-2-p-1": "Minden kapcsolathoz két különböző üzenetküldési várólistát használ a különböző kiszolgálókon keresztül történő üzenetküldéshez és -fogadáshoz.", "simplex-explained-tab-2-p-2": "A kiszolgálók csak egyetlen irányba továbbítják az üzeneteket, anélkül, hogy teljes képet kapnának a felhasználók beszélgetéseiről vagy kapcsolatairól.", @@ -25,7 +25,7 @@ "terminal-cli": "Terminál CLI", "terms-and-privacy-policy": "Adatvédelmi irányelvek", "hero-header": "Újraértelmezett adatvédelem", - "hero-subheader": "Az első üzenetváltó-alkalmazás
felhasználói azonosítók nélkül", + "hero-subheader": "Az első üzenetváltó alkalmazás
felhasználói azonosítók nélkül", "hero-p-1": "Más alkalmazások felhasználói azonosítókkal rendelkeznek: Signal, Matrix, Session, Briar, Jami, Cwtch, stb.
A SimpleX azonban nem, még véletlenszerű számokkal sem.
Ez radikálisan javítja az adatvédelmet.", "hero-overlay-1-textlink": "Miért ártanak a felhasználói azonosítók az adatvédelemnek?", "hero-overlay-2-textlink": "Hogyan működik a SimpleX?", @@ -66,7 +66,7 @@ "simplex-private-card-7-point-2": "Ha bármilyen üzenetet hozzáadnak, eltávolítanak vagy módosítanak, a címzett értesítést kap róla.", "simplex-private-card-8-point-1": "A SimpleX kiszolgálók alacsony késleltetésű keverési csomópontokként működnek — a bejövő és kimenő üzenetek sorrendje eltérő.", "simplex-private-card-9-point-1": "Minden várólista az üzenetekhez egy irányba továbbítja az üzeneteket, a különböző küldési és fogadási címeken.", - "simplex-private-card-9-point-2": "Kevesebb támadási felülettel rendelkezik, mint a hagyományos üzenetváltó-alkalmazások, és kevesebb metaadatot tesz elérhetővé.", + "simplex-private-card-9-point-2": "Kevesebb támadási felülettel rendelkezik, mint a hagyományos üzenetváltó alkalmazások, és kevesebb metaadatot tesz elérhetővé.", "simplex-private-card-10-point-1": "A SimpleX ideiglenes, névtelen, páros címeket és hitelesítő adatokat használ minden egyes felhasználói kapcsolathoz vagy csoporttaghoz.", "simplex-private-card-10-point-2": "Lehetővé teszi az üzenetek felhasználói profilazonosítók nélküli kézbesítését, ami az alternatíváknál jobb metaadat-védelmet biztosít.", "privacy-matters-1-overlay-1-title": "Az adatvédelemmel pénzt spórol meg", @@ -99,19 +99,19 @@ "simplex-network-overlay-card-1-li-1": "A P2P-hálózatok az üzenetek továbbítására a DHT valamelyik változatát használják. A DHT kialakításakor egyensúlyt kell teremteni a kézbesítési garancia és a késleltetés között. A SimpleX jobb kézbesítési garanciával és alacsonyabb késleltetéssel rendelkezik, mint a P2P, mivel az üzenet redundánsan, a címzett által kiválasztott kiszolgálók segítségével több kiszolgálón keresztül párhuzamosan továbbítható. A P2P-hálózatokban az üzenet O(log N) csomóponton halad át szekvenciálisan, az algoritmus által kiválasztott csomópontok segítségével.", "simplex-network-overlay-card-1-li-2": "A SimpleX kialakítása a legtöbb P2P-hálózattól eltérően nem rendelkezik semmiféle globális felhasználói azonosítóval, még ideiglenessel sem, és csak az üzenetekhez használ ideiglenes, páros azonosítókat, ami jobb névtelenséget és metaadat-védelmet biztosít.", "simplex-network-overlay-card-1-li-3": "A P2P nem oldja meg a MITM-támadás problémát, és a legtöbb létező implementáció nem használ sávon kívüli üzeneteket a kezdeti kulcscseréhez. A SimpleX a kezdeti kulcscseréhez sávon kívüli üzeneteket, vagy bizonyos esetekben már meglévő biztonságos és megbízható kapcsolatokat használ.", - "simplex-network-overlay-card-1-li-6": "A P2P-hálózatok sebezhetőek lehetnek a DRDoS-támadással szemben, amikor a kliensek képesek a forgalmat újraközvetíteni és felerősíteni, ami az egész hálózatra kiterjedő szolgáltatásmegtagadást eredményez. A SimpleX kliensek csak az ismert kapcsolatból származó forgalmat továbbítják, és a támadó nem használhatja őket arra, hogy az egész hálózatban felerősítse a forgalmat.", + "simplex-network-overlay-card-1-li-6": "A P2P-hálózatok sebezhetőek lehetnek a DRDoS-támadással szemben, amikor a kliensek képesek a forgalmat újraközvetíteni és felerősíteni, ami az egész hálózatra kiterjedő szolgáltatásmegtagadást eredményez. A SimpleX kliensek csak az ismert kapcsolatokból származó forgalmat továbbítják, és a támadó nem használhatja őket arra, hogy az egész hálózatban felerősítse a forgalmat.", "simplex-network-overlay-card-1-li-5": "Minden ismert P2P-hálózat sebezhető Sybil támadással, mert minden egyes csomópont felderíthető, és a hálózat egészként működik. A támadások enyhítésére szolgáló ismert intézkedés lehet egy központi kiszolgáló (például: tracker), vagy egy drága tanúsítvány. A SimpleX hálózat nem ismeri fel a kiszolgálókat, töredezett és több elszigetelt alhálózatként működik, ami lehetetlenné teszi az egész hálózatra kiterjedő támadásokat.", "privacy-matters-overlay-card-1-p-1": "Sok nagyvállalat arra használja fel a felhasználóival kapcsolatban álló személyek adatait, hogy megbecsülje a jövedelmi helyzetüket és olyan termékeket kínáljon fel, amelyekre valójában nincs is szükségük, valamint hogy meghatározza az árakat.", "privacy-matters-overlay-card-1-p-2": "Az online kiskereskedők tudják, hogy az alacsonyabb jövedelműek nagyobb valószínűséggel vásárolnak azonnal, ezért magasabb árakat számíthatnak fel, vagy eltörölhetik a kedvezményeket.", "privacy-matters-overlay-card-1-p-3": "Egyes pénzügyi és biztosítótársaságok szociális grafikonokat használnak a kamatlábak és a díjak meghatározásához. Ez gyakran arra készteti az alacsonyabb jövedelmű embereket, hogy többet fizessenek — ez az úgynevezett „szegénységi prémium”.", "privacy-matters-overlay-card-1-p-4": "A SimpleX hálózat minden alternatívánál jobban védi a kapcsolatai adatait, teljes mértékben megakadályozva, hogy az ismeretségi-hálója bármilyen vállalat vagy szervezet számára elérhetővé váljon. Még ha az emberek a SimpleX Chat által előre beállított kiszolgálókat is használják, sem az alkalmazások, sem a kiszolgálók üzemeltetői nem ismerik, sem felhasználók számát, sem a kapcsolataikat.", "privacy-matters-overlay-card-2-p-1": "Nem is olyan régen megfigyelhettük, hogy a nagy választásokat manipulálta egy neves tanácsadó cég, amely az ismeretségi-háló segítségével eltorzította a valós világról alkotott képünket, és manipulálta a szavazatainkat.", - "privacy-matters-overlay-card-2-p-2": "Ahhoz, hogy objektív legyen és független döntéseket tudjon hozni, az információs terét is kézben kell tartania. Ez csak akkor lehetséges, ha privát kommunikációs hálózatot használ, amely nem fér hozzá az ismeretségi hálójához.", + "privacy-matters-overlay-card-2-p-2": "Ahhoz, hogy objektív legyen és független döntéseket tudjon hozni, az információs terét is kézben kell tartania. Ez csak akkor lehetséges, ha egy privát kommunikációs hálózatot használ, amely nem fér hozzá az ismeretségi hálójához.", "privacy-matters-overlay-card-2-p-3": "A SimpleX az első olyan hálózat, amely eleve nem rendelkezik felhasználói azonosítókkal, így jobban védi az ismeretségi-hálóját, mint bármely ismert alternatíva.", "privacy-matters-overlay-card-3-p-1": "Mindenkinek törődnie kell a magánélet és a kommunikáció biztonságával — az ártalmatlan beszélgetések veszélybe sodorhatják, még akkor is, ha nincs semmi rejtegetnivalója.", "privacy-matters-overlay-card-3-p-2": "Az egyik legmegdöbbentőbb a Mohamedou Ould Salahi memoárjában leírt és az „A mauritániai” c. filmben bemutatott történet. Őt bírósági tárgyalás nélkül a guantánamói táborba zárták, és ott kínozták 15 éven át, miután egy afganisztáni rokonát telefonon felhívta, akit azzal gyanúsítottak a hatóságok, hogy köze van a 9/11-es merényletekhez, holott Salahi az előző 10 évben Németországban élt.", "privacy-matters-overlay-card-3-p-3": "Átlagos embereket letartóztatnak azért, amit online megosztanak, még „névtelen” fiókjaikon keresztül is, még demokratikus országokban is.", - "privacy-matters-overlay-card-3-p-4": "Nem elég csak egy végpontok között titkosított üzenetváltó-alkalmazást használnunk, mindannyiunknak olyan üzenetváltó-alkalmazásokat kell használnunk, amelyek védik a személyes partnereink magánéletét — akikkel kapcsolatban állunk.", + "privacy-matters-overlay-card-3-p-4": "Nem elég csak egy végpontok között titkosított üzenetváltó alkalmazást használnunk, mindannyiunknak olyan üzenetváltó alkalmazásokat kell használnunk, amelyek védik a személyes partnereink magánéletét — akikkel kapcsolatban állunk.", "simplex-unique-overlay-card-1-p-1": "Más üzenetküldő hálózatoktól eltérően a SimpleX nem rendel azonosítókat a felhasználókhoz. Nem támaszkodik telefonszámokra, tartomány-alapú címekre (mint az e-mail, XMPP vagy a Matrix), felhasználónevekre, nyilvános kulcsokra vagy akár véletlenszerű számokra a felhasználók azonosításához — a SimpleX kiszolgálók üzemeltetői nem tudják, hogy hányan használják a kiszolgálóikat.", "simplex-unique-overlay-card-1-p-2": "Az üzenetek kézbesítéséhez a SimpleX egyirányú várólistákat használ az üzenetekhez, páronkénti, névtelen címekkel, külön a fogadott és külön az elküldött üzenetekhez, általában különböző kiszolgálókon keresztül.", "simplex-unique-overlay-card-1-p-3": "Ez a kialakítás védi partnerei adatait, elrejtve azt a SimpleX hálózat kiszolgálói és a külső megfigyelők elől. Az IP-címe elrejtésének érdekében a Tor hálózaton keresztül is kapcsolódhat a SimpleX kiszolgálókhoz.", @@ -150,7 +150,7 @@ "scan-qr-code-from-mobile-app": "QR-kód beolvasása mobilalkalmazásból", "to-make-a-connection": "A kapcsolat létrehozásához:", "install-simplex-app": "Telepítse a SimpleX alkalmazást", - "open-simplex-app": "Simplex alkalmazás megnyitása", + "open-simplex-app": "SimpleX alkalmazás megnyitása", "tap-the-connect-button-in-the-app": "Koppintson a „kapcsolódás” gombra az alkalmazásban", "scan-the-qr-code-with-the-simplex-chat-app": "Olvassa be a QR-kódot a SimpleX Chat alkalmazással", "scan-the-qr-code-with-the-simplex-chat-app-description": "A hivatkozásban szereplő nyilvános kulcsok és az üzenetek várólistájának címe NEM lesz elküldve a hálózaton keresztül, amikor megtekinti ezt az oldalt —
azokat, a hivatkozás webcímének kivonattöredéke tartalmazza.", @@ -165,7 +165,7 @@ "copy-the-command-below-text": "másolja be az alábbi parancsot, és használja a csevegésben:", "privacy-matters-section-header": "Miért számít az adatvédelem", "privacy-matters-section-subheader": "A metaadatok — például, hogy kivel beszélget — védelmének megőrzése biztonságot nyújt a következők ellen:", - "privacy-matters-section-label": "Győződjön meg arról, hogy az üzenetváltó-alkalmazás amit használ nem fér hozzá az adataihoz!", + "privacy-matters-section-label": "Győződjön meg arról, hogy az üzenetváltó alkalmazás amit használ nem fér hozzá az adataihoz!", "simplex-private-section-header": "Mitől lesz a SimpleX privát", "simplex-network-section-header": "SimpleX hálózat", "simplex-network-section-desc": "A SimpleX Chat a P2P- és a föderált hálózatok előnyeinek kombinálásával biztosítja a legjobb adatvédelmet.", @@ -220,7 +220,7 @@ "jobs": "Csatlakozzon a csapathoz", "please-enable-javascript": "Engedélyezze a JavaScriptet a QR-kód megjelenítéséhez.", "please-use-link-in-mobile-app": "Használja a hivatkozást a SimpleX Chat alkalmazásban", - "contact-hero-header": "Meghívót kapott a SimpleX Chaten való beszélgetéshez", + "contact-hero-header": "Ez egy meghívó a SimpleX Chaten való beszélgetéshez", "invitation-hero-header": "Kapott egy egyszer használható meghívót a SimpleX Chaten való beszélgetéshez", "simplex-network-overlay-card-1-li-4": "A P2P-megvalósításokat egyes internetszolgáltatók blokkolhatják (mint például a BitTorrent). A SimpleX átvitel-független — a szabványos webes protokollokon, például WebSocketsen keresztül is működik.", "simplex-private-card-4-point-2": "A SimpleX, Tor hálózaton keresztüli használatához telepítse az Orbot alkalmazást és engedélyezze a SOCKS5 proxyt (vagy a VPN-t az iOS-ban).", @@ -316,7 +316,7 @@ "navbar-token": "Token", "navbar-old-site": "Régi oldal", "docs-dropdown-15": "Összeállítások ellenőrzése és reprodukálása", - "why-p2": "Senki sem követte nyomon a beszélgetéseit. Senki sem készített térképet arról, hogy merre járt. A magánélet nem csak egy funkció volt, hanem egy életmód.", + "why-p2": "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.", "why-p3": "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.", "why-p4": "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á.", "why-p5": "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.", @@ -325,7 +325,7 @@ "why-p8": "Mert felszámoltuk a lehetőségét is annak, hogy megtudjuk, Ön kicsoda. Így az önrendelkezése soha nem kerülhet idegen kezekbe.", "why-tagline": "Legyen szabad a saját hálózatában.", "why-footer-link": "Miért készítjük", - "why-p1": "Ön fiók nélkül született.", + "why-p1": "Fiók nélkül születtünk.", "file": "Fájl", "file-desc": "Fájlok biztonságos küldése végpontok közötti titkosítással – felhasználói fiókok és nyomon követés nélkül.", "file-noscript": "A fájlátvitelhez JavaScript szükséges.", @@ -348,7 +348,7 @@ "file-expiry": "A fájlok általában 48 óráig érhetők el.", "file-sec-1": "A fájl a böngészőben lett titkosítva – az útválasztók soha nem „látják” a fájl tartalmát, nevét és méretét.", "file-sec-2": "A titkosítási kulcs a hivatkozás kivonattöredékében található – soha nem kerül elküldésre semmilyen kiszolgálóra.", - "file-sec-3": "A nagyobb biztonság érdekében használja a SimpleX Chat alkalmazást.", + "file-sec-3": "A nagyobb biztonság érdekében, használja a SimpleX Chat alkalmazást.", "file-retry": "Újra", "file-downloading": "Letöltés…", "file-decrypting": "Visszafejtés…", diff --git a/website/langs/it.json b/website/langs/it.json index 0a6870d75d..326afb82d4 100644 --- a/website/langs/it.json +++ b/website/langs/it.json @@ -62,8 +62,8 @@ "simplex-network-overlay-card-1-li-2": "Il design di SimpleX, a differenza della maggior parte delle reti P2P, non ha identificatori utente globali di alcun tipo, nemmeno temporanei, e usa solo identificatori temporanei a coppie, garantendo una maggiore protezione dell'anonimato e dei metadati.", "simplex-network-overlay-card-1-li-4": "Le implementazioni P2P possono essere bloccate da alcuni fornitori di internet (come BitTorrent). SimpleX è indipendente dal trasporto — può funzionare su protocolli web standard, es. WebSocket.", "hero-overlay-card-2-p-1": "Quando gli utenti hanno identità permanenti, anche se si tratta solo di un numero casuale, come un Session ID, c'è il rischio che il fornitore o un malintenzionato possano osservare come gli utenti sono connessi e quanti messaggi inviano.", - "simplex-network-overlay-card-1-li-6": "Le reti P2P possono essere vulnerabili all'attacco DRDoS, quando i client possono ritrasmettere e amplificare il traffico, con conseguente \"denial of service\" a livello di rete. I client SimpleX si limitano a inoltrare il traffico da una connessione nota e non possono essere usati da un aggressore per amplificare il traffico nell'intera rete.", - "privacy-matters-overlay-card-1-p-4": "La rete di SimpleX protegge la privacy delle tue connessioni meglio di qualsiasi alternativa, impedendo completamente che il tuo grafico sociale sia disponibile a qualsiasi azienda o organizzazione. Anche quando le persone usano i server preconfigurati in SimpleX Chat, gli operatori dei server non conoscono il numero di utenti o le loro connessioni.", + "simplex-network-overlay-card-1-li-6": "Le reti P2P possono essere vulnerabili all'attacco DRDoS, quando i client possono ritrasmettere e amplificare il traffico, con conseguente \"denial of service\" a livello di rete. I client SimpleX si limitano a inoltrare il traffico da connessioni note e non possono essere usati da un aggressore per amplificare il traffico nell'intera rete.", + "privacy-matters-overlay-card-1-p-4": "La rete di SimpleX protegge la privacy delle tue connessioni meglio di qualsiasi alternativa, impedendo completamente che il tuo grafico sociale diventi disponibile a qualsiasi azienda o organizzazione. Anche quando le persone usano i server preconfigurati in SimpleX Chat, gli operatori dei server non conoscono il numero di utenti o le loro connessioni.", "privacy-matters-overlay-card-2-p-3": "SimpleX è la prima rete che non ha alcun identificatore utente per design, proteggendo così il tuo grafico delle connessioni meglio di qualsiasi alternativa conosciuta.", "privacy-matters-overlay-card-3-p-1": "Tutti dovrebbero preoccuparsi della privacy e della sicurezza delle proprie comunicazioni — conversazioni innocue possono metterti in pericolo, anche se non hai nulla da nascondere.", "privacy-matters-overlay-card-3-p-3": "Le persone comuni vengono arrestate per ciò che condividono online, anche tramite i loro account \"anonimi\", anche nei Paesi democratici.", @@ -139,7 +139,7 @@ "simplex-private-card-6-point-1": "Molte reti di comunicazione sono vulnerabili agli attacchi MITM da parte di server o fornitori di rete.", "simplex-private-card-7-point-1": "Per garantire l'integrità, i messaggi sono numerati in sequenza e includono l'hash del messaggio precedente.", "simplex-private-card-9-point-2": "Riduce i vettori di attacco, rispetto ai broker di messaggi tradizionali, e i metadati disponibili.", - "simplex-private-card-10-point-2": "Ciò consente di recapitare messaggi senza identificatori del profilo utente, garantendo una migliore privacy dei metadati rispetto alle alternative.", + "simplex-private-card-10-point-2": "Ciò consente ai messaggi di venire recapitati senza identificatori del profilo utente, garantendo una migliore privacy dei metadati rispetto alle alternative.", "privacy-matters-1-title": "Pubblicità e discriminazione dei prezzi", "privacy-matters-2-overlay-1-title": "La privacy ti dà potere", "simplex-private-card-9-point-1": "Ogni coda di messaggi passa i messaggi in una direzione, con i diversi indirizzi di invio e ricezione.", @@ -181,7 +181,7 @@ "privacy-matters-overlay-card-1-p-2": "I rivenditori online sanno che le persone con redditi più bassi sono più propense a fare acquisti urgenti, quindi possono applicare prezzi più alti o rimuovere sconti.", "privacy-matters-overlay-card-1-p-3": "Alcune società finanziarie e assicurative usano grafici sociali per determinare i tassi di interesse e i premi. Spesso ciò fa pagare di più le persone con redditi più bassi — è noto come \"premio di povertà\".", "privacy-matters-overlay-card-2-p-1": "Non molto tempo fa abbiamo assistito alla manipolazione delle principali elezioni da una rispettabile società di consulenza che ha usato i nostri grafici sociali per distorcere la nostra visione del mondo reale e manipolare i nostri voti.", - "privacy-matters-overlay-card-2-p-2": "Per essere obiettivi e prendere decisioni indipendenti devi avere il controllo del tuo spazio informativo. È possibile solo se utilizzi una rete di comunicazione privata che non ha accesso al tuo grafico sociale.", + "privacy-matters-overlay-card-2-p-2": "Per essere obiettivi e prendere decisioni indipendenti devi avere il controllo del tuo spazio informativo. È possibile solo se usi una rete di comunicazione privata che non ha accesso al tuo grafico sociale.", "privacy-matters-overlay-card-3-p-2": "Una delle storie più scioccanti è l'esperienza di Mohamedou Ould Salahi descritta nel suo libro di memorie e mostrata nel film The Mauritanian. È stato rinchiuso nel campo di Guantánamo, senza processo, e lì è stato torturato per 15 anni dopo una telefonata a un suo parente in Afghanistan, sospettato di essere coinvolto negli attacchi dell'11/9, nonostante avesse vissuto in Germania per i precedenti 10 anni.", "join-us-on-GitHub": "Unisciti a noi su GitHub", "simplex-chat-for-the-terminal": "SimpleX Chat per il terminale", diff --git a/website/langs/ja.json b/website/langs/ja.json index aff6d62c1a..fcec6944e3 100644 --- a/website/langs/ja.json +++ b/website/langs/ja.json @@ -46,7 +46,7 @@ "simplex-explained-tab-3-text": "3. サーバーが認識するもの", "smp-protocol": "SMPプロトコル", "simplex-explained-tab-2-p-1": "接続ごとに 2 つの個別のメッセージング キューを使用して、異なるサーバー経由でメッセージを送受信します。", - "simplex-explained-tab-2-p-2": "サーバーは、ユーザーの会話や接続の全体像を把握することなく、メッセージを一方向に渡すだけです。", + "simplex-explained-tab-2-p-2": "サーバーは、ユーザーの会話や接続の全体を把握することなく、メッセージを一方向に送信するだけです。", "simplex-explained-tab-3-p-1": "サーバーはキューごとに個別の匿名認証情報を持っており、どのユーザーに属しているかはわかりません。", "simplex-explained-tab-3-p-2": "ユーザーは、Tor を使用してサーバーにアクセスし、IP アドレスによる相関を防ぐことで、メタデータのプライバシーをさらに向上させることができます。", "chat-protocol": "チャットプロトコル", @@ -63,7 +63,7 @@ "feature-7-title": "ポータブルな暗号化データベース — プロファイルを別のデバイスに移動する", "no-federated": "いいえ - 連合型", "simplex-unique-overlay-card-3-p-3": "電子メール、XMPP、Matrixなどの連携ネットワークサーバーとは異なり、SimpleXサーバーはユーザーアカウントを保存せず、メッセージの中継のみを行い、双方のプライバシーを保護します。", - "privacy-matters-overlay-card-3-p-2": "最も衝撃的な話の 1 つは、Mohamedou Ould Salahiの経験であり、彼の回顧録に記述され、『モーリタニア映画』で紹介されました。 彼は裁判も受けずにグアンタナモ収容所に入れられ、それまで10年間ドイツに住んでいたにも関わらず、9/11攻撃への関与の疑いでアフガニスタンの親戚に電話をかけた後、そこで15年間拷問を受けました。", + "privacy-matters-overlay-card-3-p-2": "最も衝撃的な話の 1 つは、Mohamedou Ould Salahiの経験であり、彼の回顧録に記述され、『モーリタニア映画』で紹介されています。彼はアフガニスタンの親戚に電話をかけた後、アメリカ同時多発テロへの関与の疑いで拘束されました。 彼は裁判も受けずにグアンタナモ収容所に入れられ、そこで15年間拷問を受けました。", "signing-key-fingerprint": "署名キーのフィンガープリント (SHA-256)", "simplex-network-2-desc": "SimpleX リレー サーバーは、ユーザー プロファイル、連絡先、配信されたメッセージを保存せず、相互に接続せず、サーバー ディレクトリもありません。", "docs-dropdown-5": "ホストXFTPサーバー", @@ -99,7 +99,7 @@ "privacy-matters-section-subheader": "メタデータのプライバシーを保護する — 話す相手 — 以下のことからあなたを守ります:", "if-you-already-installed": "すでにインストールしている場合", "join": "参加", - "privacy-matters-section-header": "プライバシーが重要である理由", + "privacy-matters-section-header": "なぜプライバシーが重要なのか", "on-this-page": "このページでは", "privacy-matters-overlay-card-1-p-2": "オンライン小売業者は、収入が低い人ほど急ぎの買い物をする可能性が高いことを知っているため、より高い価格を請求したり、割引を廃止したりすることがあります。", "simplex-unique-3-overlay-1-title": "データの所有権、管理、セキュリティ", @@ -180,7 +180,7 @@ "simplex-network-3-header": "SimpleX ネットワーク", "comparison-section-list-point-4": "オペレーターのサーバーが侵害された場合。 Signal およびその他の一部のアプリでセキュリティ コードを検証して緩和する", "simplex-private-card-2-point-1": "TLSが侵害された場合、受信したサーバー・トラフィックと送信したサーバー・トラフィックの相関を防ぐため、受信者に配信するサーバー暗号化レイヤーを追加します。", - "f-droid-page-simplex-chat-repo-section-text": "F-Droid クライアントに追加するには、QR コードをスキャンするか、次の URL を使用します:", + "f-droid-page-simplex-chat-repo-section-text": "F-Droid クライアントに追加するには、QR コードをスキャンするか、次の URL を使用してください:", "join-the-REDDIT-community": "REDDITコミュニティに参加する", "simplex-private-card-10-point-2": "ユーザー プロファイル識別子なしでメッセージを配信できるため、他の方法よりも優れたメタデータ プライバシーが提供されます。", "privacy-matters-2-title": "選挙操作", @@ -189,15 +189,15 @@ "feature-6-title": "E2E暗号化された
音声通話とビデオ通話", "simplex-network-overlay-card-1-li-2": "SimpleX 設計は、ほとんどの P2P ネットワークとは異なり、一時的であってもいかなる種類のグローバル ユーザー識別子も持たず、一時的なペアごとの識別子のみを使用するため、より優れた匿名性とメタデータ保護が提供されます。", "simplex-unique-4-title": "SimpleX ネットワークを所有", - "privacy-matters-overlay-card-3-p-3": "一般の人が、たとえ「匿名」アカウント経由であっても、オンラインで共有した内容で逮捕されます。たとえ民主主義国家であったとしても。", + "privacy-matters-overlay-card-3-p-3": "一般の人が、たとえ「匿名」アカウント経由であっても、オンラインで共有した内容で逮捕されます。それは、たとえ民主主義の国であったとしても同じです。", "simplex-unique-overlay-card-3-p-2": "エンドツーエンドで暗号化されたメッセージは、SimpleXのリレーサーバーで受信するまで一時的に保持され、その後永久に削除されます。", "simplex-private-card-7-point-1": "整合性を保証するために、メッセージには連続した番号が付けられ、前のメッセージのハッシュが含まれます。", "contact-hero-p-2": "SimpleX Chat をまだダウンロードしていませんか?", - "why-simplex-is-unique": "なぜSimpleXなのか唯一", + "why-simplex-is-unique": "なぜSimpleXが唯一無二なのか", "simplex-network-section-header": "SimpleX ネットワーク", "simplex-private-10-title": "一時的な匿名のペア識別子", "privacy-matters-1-overlay-1-linkText": "プライバシーの保護はコストを削減します", - "tap-the-connect-button-in-the-app": "アプリの 「接続」 ボタンをタップします", + "tap-the-connect-button-in-the-app": "アプリの 「接続」 ボタンをタップしてください", "comparison-section-list-point-4a": "SimpleX リレーは e2e 暗号化を侵害できません。 セキュリティ コードを検証して帯域外チャネルへの攻撃を軽減します", "simplex-network-1-overlay-linktext": "P2Pネットワークの問題点", "no-private": "いいえ - プライベート", @@ -208,7 +208,7 @@ "hero-overlay-2-title": "ユーザー ID がプライバシーに悪影響を与えるのはなぜですか?", "docs-dropdown-4": "ホストSMPサーバー", "feature-4-title": "E2E暗号化された音声メッセージ", - "privacy-matters-overlay-card-2-p-1": "つい最近まで、私たちは主要な選挙が 評判の高いコンサルティング会社によって操作されているのを観察しました。 ソーシャルグラフは私たちの現実世界の見方を歪め、私たちの投票を操作します。", + "privacy-matters-overlay-card-2-p-1": "つい最近まで、主要な選挙が 有名なコンサルティング会社によって操作されていました。 ソーシャルグラフは私たちの現実世界の見方を歪め、投票を操作しています。", "privacy-matters-overlay-card-2-p-3": "SimpleX は、設計上ユーザー識別子を持たない最初のネットワークであり、この方法で既知の代替手段よりも接続グラフを保護します。", "learn-more": "さらに詳しく", "simplex-private-8-title": "メッセージのミキシング
相関性を減らす", @@ -220,7 +220,7 @@ "protocol-1-text": "Signal、大きなプラットフォーム", "simplex-network-overlay-card-1-li-6": "P2P ネットワークは、DRDoS 攻撃に対して脆弱になる可能性があります。 クライアントがトラフィックを再ブロードキャストして増幅する可能性があり、その結果、ネットワーク全体のサービス拒否が発生する可能性があります。 SimpleX クライアントは既知の接続からのトラフィックのみを中継するため、攻撃者がネットワーク全体のトラフィックを増幅するために使用することはできません。", "if-you-already-installed-simplex-chat-for-the-terminal": "すでにターミナルに SimpleX Chat をインストールしている場合", - "docs-dropdown-8": "SimpleX ディレクトリ サービス", + "docs-dropdown-8": "SimpleX ディレクトリ", "simplex-private-card-1-point-1": "ダブルラチェットプロトコル —
完全な前方秘匿性と侵入回復機能を備えたOTRメッセージング。", "simplex-private-card-8-point-1": "SimpleX サーバーは、低遅延の混合ノードとして機能します — 受信メッセージと送信メッセージの順序が異なります。", "simplex-unique-overlay-card-2-p-1": "SimpleXネットワークには識別子がないため、ワンタイムまたは一時的なユーザー アドレスを QR コードまたはリンクとして共有しない限り、誰もあなたに連絡することはできません。", @@ -233,9 +233,9 @@ "simplex-private-7-title": "メッセージの整合性
検証", "privacy-matters-overlay-card-1-p-4": "SimpleXネットワークは、他のどのプラットフォームよりも接続のプライバシーを保護し、ソーシャル グラフが企業や組織に利用されることを完全に防ぎます。 SimpleX Chatアプリに予め設定されたサーバを利用している場合でも、サーバオペレータはユーザーの数や接続数を知ることはできません。", "hero-overlay-card-1-p-6": "詳細については、SimpleX ホワイトペーパーをご覧ください。", - "simplex-network-overlay-card-1-p-1": "P2P メッセージング プロトコルとアプリには、SimpleX よりも信頼性が低く、分析がより複雑になるさまざまな問題があり、 いくつかの種類の攻撃に対して脆弱です。", + "simplex-network-overlay-card-1-p-1": "P2P メッセージング プロトコルとアプリには、SimpleX よりも信頼性が低く、分析がより複雑になるさまざまな問題があり、また、いくつかの種類の攻撃に対して脆弱です。", "simplex-network-overlay-card-1-li-1": "P2P ネットワークは、メッセージをルーティングするために DHT の一部の変種に依存します。 DHT の設計では、配信保証と遅延のバランスを取る必要があります。 SimpleX は、受信者が選択したサーバーを使用して、メッセージを複数のサーバーを介して並行して冗長的に渡すことができるため、P2P よりも優れた配信保証と低い遅延の両方を備えています。 P2P ネットワークでは、メッセージはアルゴリズムによって選択されたノードを使用して、O(log N) 個のノードを順番に通過します。", - "privacy-matters-section-label": "メッセンジャーがあなたのデータにアクセスできないようにしてください!", + "privacy-matters-section-label": "メッセージアプリがあなたのデータにアクセスできないようにしてください!", "simplex-unique-overlay-card-3-p-1": "SimpleX Chat は、サポートされているデバイスにエクスポートして転送できるポータブル暗号化データベース形式を使用して、すべてのユーザー データをクライアント デバイスにのみ保存します。", "simplex-network-3-desc": "サーバーはユーザーを接続するための一方向キューを提供しますが、ネットワーク接続グラフは表示されません— ユーザーだけがそうします。", "simplex-private-card-3-point-1": "クライアント/サーバー接続には、強力なアルゴリズムを備えた TLS 1.2/1.3 のみが使用されます。", @@ -272,7 +272,7 @@ "index-messaging-cta": "SimpleXのメッセージ機能について詳しく知る", "index-nextweb-h2": "次のWebは
あなたのもの", "index-nextweb-p1": "SimpleXは、 アイデンティティ・連絡先・コミュニティはあなたのものであるべきだという考えに基づいています。", - "index-nextweb-p2": "オープンで分散型のネットワークで、自由で安全に人とつながり、アイデアを共有できます。", + "index-nextweb-p2": "分散型のネットワークで、自由で安全に人とつながり、アイデアを共有できます。", "index-token-h2": "続いていくコミュニティ", "index-token-p1": "コミュニティバウチャーを通じて、お気に入りのグループをサポートできます。", "index-token-p2": "バウチャーはサーバー費用に充てられ、コミュニティが自由で独立した状態を保ち続けられるようにします。", @@ -298,5 +298,9 @@ "index-publications-kuketz-title": "Mike Kuketzによるレビュー", "index-publications-optout-title": "OptOut ポッドキャストインタビュー", "send-file": "ファイルを送信", - "navbar-old-site": "旧サイト" + "navbar-old-site": "旧サイト", + "navbar-token": "トークン", + "docs-dropdown-15": "認証と再ビルド", + "index-f-droid-title": "F-Droid経由のSimpleXアプリ", + "how-secure-forward-secrecy": "前方秘匿性" } diff --git a/website/src/directory.html b/website/src/directory.html index 4ea42f0c3b..f6fc7991f0 100644 --- a/website/src/directory.html +++ b/website/src/directory.html @@ -20,14 +20,14 @@ active_directory: true word-break: break-word; } - #directory .entry a { + #directory .entry a.img-link { order: -1; object-fit: cover; margin-right: 16px; margin-bottom: 16px; } - #directory .entry a img { + #directory .entry a.img-link img { min-width: 104px; min-height: 104px; width: 104px; diff --git a/website/src/js/directory.js b/website/src/js/directory.js index d008370342..ca3ed796e6 100644 --- a/website/src/js/directory.js +++ b/website/src/js/directory.js @@ -165,7 +165,7 @@ function entrySortPriority(entry) { function entryMemberCount(entry) { return entry.entryType.type == 'group' - ? (entry.entryType.summary?.currentMembers ?? 0) + ? (entry.entryType.summary?.publicMemberCount ?? entry.entryType.summary?.currentMembers ?? 0) : 0 } @@ -263,6 +263,13 @@ function displayEntries(entries) { }, 0); } + if (entryType?.groupType) { + const noteElement = document.createElement('p'); + noteElement.innerHTML = 'You need SimpleX Chat app v6.5 to join.'; + noteElement.className = 'text-sm'; + textContainer.appendChild(noteElement); + } + const entryTimestamp = currentSortMode === 'new' && entry.createdAt ? showCreatedOn(entry.createdAt) : entry.activeAt @@ -278,7 +285,8 @@ function displayEntries(entries) { const memberCount = entryMemberCount(entry); if (typeof memberCount == 'number' && memberCount > 0) { const memberCountElement = document.createElement('p'); - memberCountElement.textContent = `${memberCount} members`; + const isChannel = entryType?.groupType === 'channel'; + memberCountElement.textContent = `${memberCount} ${isChannel ? 'subscribers' : 'members'}`; memberCountElement.className = 'text-sm'; textContainer.appendChild(memberCountElement); } @@ -291,6 +299,7 @@ function displayEntries(entries) { } const imgLinkElement = document.createElement('a'); + imgLinkElement.className = 'img-link'; const groupLinkUri = groupLink.connShortLink ?? groupLink.connFullLink try { imgLinkElement.href = platformSimplexUri(groupLinkUri);