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 29f5dd4e3..75f70f7ad 100644 --- a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff +++ b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff @@ -1196,6 +1196,7 @@ Connect automatically + Automatisch verbinden No comment provided by engineer. @@ -1914,6 +1915,7 @@ Das kann nicht rückgängig gemacht werden! Discover via local network + Lokales Netzwerk durchsuchen No comment provided by engineer. @@ -2558,6 +2560,7 @@ Das kann nicht rückgängig gemacht werden! Found desktop + Gefundener Desktop No comment provided by engineer. @@ -3527,6 +3530,7 @@ Das ist Ihr Link für die Gruppe %@! Not compatible! + Nicht kompatibel! No comment provided by engineer. @@ -5501,6 +5505,7 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s Waiting for desktop... + Es wird auf den Desktop gewartet... No comment provided by engineer. @@ -6050,6 +6055,7 @@ SimpleX-Server können Ihr Profil nicht einsehen. author + Autor member role 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 af54b7ceb..153d98be3 100644 --- a/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff +++ b/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff @@ -1196,6 +1196,7 @@ Connect automatically + Connexion automatique No comment provided by engineer. @@ -1914,6 +1915,7 @@ Cette opération ne peut être annulée ! Discover via local network + Rechercher sur le réseau No comment provided by engineer. @@ -2558,6 +2560,7 @@ Cette opération ne peut être annulée ! Found desktop + Bureau trouvé No comment provided by engineer. @@ -3527,6 +3530,7 @@ Voici votre lien pour le groupe %@ ! Not compatible! + Non compatible ! No comment provided by engineer. @@ -5501,6 +5505,7 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien Waiting for desktop... + En attente du bureau... No comment provided by engineer. @@ -6050,6 +6055,7 @@ Les serveurs SimpleX ne peuvent pas voir votre profil. author + auteur member role 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 d2be34ec6..094a30677 100644 --- a/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff +++ b/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff @@ -1196,6 +1196,7 @@ Connect automatically + Automatisch verbinden No comment provided by engineer. @@ -1914,6 +1915,7 @@ Dit kan niet ongedaan gemaakt worden! Discover via local network + Ontdek via het lokale netwerk No comment provided by engineer. @@ -2558,6 +2560,7 @@ Dit kan niet ongedaan gemaakt worden! Found desktop + Desktop gevonden No comment provided by engineer. @@ -3527,6 +3530,7 @@ Dit is jouw link voor groep %@! Not compatible! + Niet compatibel! No comment provided by engineer. @@ -5501,6 +5505,7 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak Waiting for desktop... + Wachten op desktop... No comment provided by engineer. @@ -6050,6 +6055,7 @@ SimpleX servers kunnen uw profiel niet zien. author + auteur member role 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 61147d7f9..ad1924f4c 100644 --- a/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff +++ b/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff @@ -299,10 +299,12 @@ (new) + (nowy) No comment provided by engineer. (this device v%@) + (to urządzenie v%@) No comment provided by engineer. @@ -397,6 +399,9 @@ - optionally notify deleted contacts. - profile names with spaces. - and more! + - opcjonalnie powiadamiaj usunięte kontakty. +- nazwy profili ze spacją. +- i wiele więcej! No comment provided by engineer. @@ -885,6 +890,7 @@ Bad desktop address + Zły adres komputera No comment provided by engineer. @@ -899,6 +905,7 @@ Better groups + Lepsze grupy No comment provided by engineer. @@ -913,6 +920,7 @@ Block group members + Blokuj członków grupy No comment provided by engineer. @@ -1188,6 +1196,7 @@ Connect automatically + Łącz automatycznie No comment provided by engineer. @@ -1197,6 +1206,7 @@ Connect to desktop + Połącz do komputera No comment provided by engineer. @@ -1245,10 +1255,12 @@ To jest twój jednorazowy link! Connected desktop + Połączony komputer No comment provided by engineer. Connected to desktop + Połączony do komputera No comment provided by engineer. @@ -1263,6 +1275,7 @@ To jest twój jednorazowy link! Connecting to desktop + Łączenie z komputerem No comment provided by engineer. @@ -1287,6 +1300,7 @@ To jest twój jednorazowy link! Connection terminated + Połączenie zakończone No comment provided by engineer. @@ -1371,6 +1385,7 @@ To jest twój jednorazowy link! Create a group using a random profile. + Utwórz grupę używając losowego profilu. No comment provided by engineer. @@ -1785,14 +1800,17 @@ To nie może być cofnięte! Desktop address + Adres komputera No comment provided by engineer. Desktop app version %@ is not compatible with this app. + Wersja aplikacji komputerowej %@ nie jest kompatybilna z tą aplikacją. No comment provided by engineer. Desktop devices + Urządzenia komputerowe No comment provided by engineer. @@ -1887,6 +1905,7 @@ To nie może być cofnięte! Disconnect desktop? + Rozłączyć komputer? No comment provided by engineer. @@ -1896,6 +1915,7 @@ To nie może być cofnięte! Discover via local network + Odkryj przez sieć lokalną No comment provided by engineer. @@ -2070,10 +2090,12 @@ To nie może być cofnięte! Encryption re-negotiation error + Błąd renegocjacji szyfrowania message decrypt error item Encryption re-negotiation failed. + Renegocjacja szyfrowania nie powiodła się. No comment provided by engineer. @@ -2108,6 +2130,7 @@ To nie może być cofnięte! Enter this device name… + Podaj nazwę urządzenia… No comment provided by engineer. @@ -2437,6 +2460,7 @@ To nie może być cofnięte! Faster joining and more reliable messages. + Szybsze dołączenie i bardziej niezawodne wiadomości. No comment provided by engineer. @@ -2536,6 +2560,7 @@ To nie może być cofnięte! Found desktop + Znaleziono komputer No comment provided by engineer. @@ -2865,6 +2890,7 @@ To nie może być cofnięte! Incognito groups + Grupy incognito No comment provided by engineer. @@ -2899,6 +2925,7 @@ To nie może być cofnięte! Incompatible version + Niekompatybilna wersja No comment provided by engineer. @@ -3073,6 +3100,7 @@ To jest twój link do grupy %@! Keep the app open to use it from desktop + Zostaw aplikację otwartą i używaj ją z komputera No comment provided by engineer. @@ -3137,14 +3165,17 @@ To jest twój link do grupy %@! Link mobile and desktop apps! 🔗 + Połącz mobile i komputerowe aplikacje! 🔗 No comment provided by engineer. Linked desktop options + Połączone opcje komputera No comment provided by engineer. Linked desktops + Połączone komputery No comment provided by engineer. @@ -3499,6 +3530,7 @@ To jest twój link do grupy %@! Not compatible! + Nie kompatybilny! No comment provided by engineer. @@ -3722,6 +3754,7 @@ To jest twój link do grupy %@! Paste desktop address + Wklej adres komputera No comment provided by engineer. @@ -4321,6 +4354,7 @@ To jest twój link do grupy %@! Scan QR code from desktop + Zeskanuj kod QR z komputera No comment provided by engineer. @@ -4545,6 +4579,7 @@ To jest twój link do grupy %@! Session code + Kod sesji No comment provided by engineer. @@ -5046,6 +5081,7 @@ Może się to zdarzyć z powodu jakiegoś błędu lub gdy połączenie jest skom This device name + Nazwa tego urządzenia No comment provided by engineer. @@ -5085,6 +5121,7 @@ Może się to zdarzyć z powodu jakiegoś błędu lub gdy połączenie jest skom To hide unwanted messages. + Aby ukryć niechciane wiadomości. No comment provided by engineer. @@ -5248,10 +5285,12 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc Unlink + Odłącz No comment provided by engineer. Unlink desktop? + Odłączyć komputer? No comment provided by engineer. @@ -5346,6 +5385,7 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc Use from desktop + Użyj z komputera No comment provided by engineer. @@ -5380,10 +5420,12 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc Verify code with desktop + Zweryfikuj kod z komputera No comment provided by engineer. Verify connection + Zweryfikuj połączenie No comment provided by engineer. @@ -5393,6 +5435,7 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc Verify connections + Zweryfikuj połączenia No comment provided by engineer. @@ -5407,6 +5450,7 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc Via secure quantum resistant protocol. + Dzięki bezpiecznemu protokołowi odpornego kwantowo. No comment provided by engineer. @@ -5461,6 +5505,7 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc Waiting for desktop... + Oczekiwanie na komputer... No comment provided by engineer. @@ -6010,6 +6055,7 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu. author + autor member role @@ -6596,6 +6642,7 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu. v%@ + v%@ No comment provided by engineer. @@ -6737,6 +6784,7 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu. SimpleX uses local network access to allow using user chat profile via desktop app on the same network. + SimpleX używa sieci lokalnej aby pozwolić na dostęp profilom czatu użytkownika przez aplikację komputerową na tej samej sieci. Privacy - Local Network Usage Description 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 abd3d01d8..f4970446a 100644 --- a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff +++ b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff @@ -1196,6 +1196,7 @@ Connect automatically + Соединяться автоматически No comment provided by engineer. @@ -1914,6 +1915,7 @@ This cannot be undone! Discover via local network + Обнаружение по локальной сети No comment provided by engineer. @@ -2558,6 +2560,7 @@ This cannot be undone! Found desktop + Компьютер найден No comment provided by engineer. @@ -3527,6 +3530,7 @@ This is your link for group %@! Not compatible! + Несовместимая версия! No comment provided by engineer. @@ -5501,6 +5505,7 @@ To connect, please ask your contact to create another connection link and check Waiting for desktop... + Ожидается подключение компьютера... No comment provided by engineer. @@ -6050,6 +6055,7 @@ SimpleX серверы не могут получить доступ к Ваше author + автор member role diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index 47769ac2d..2080b857a 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -120,6 +120,11 @@ 5CCD403727A5F9A200368C90 /* ScanToConnectView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CCD403627A5F9A200368C90 /* ScanToConnectView.swift */; }; 5CD67B8F2B0E858A00C510B1 /* hs_init.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CD67B8D2B0E858A00C510B1 /* hs_init.h */; settings = {ATTRIBUTES = (Public, ); }; }; 5CD67B902B0E858A00C510B1 /* hs_init.c in Sources */ = {isa = PBXBuildFile; fileRef = 5CD67B8E2B0E858A00C510B1 /* hs_init.c */; }; + 5CD67B962B11416700C510B1 /* libHSsimplex-chat-5.4.0.6-95eerlCBwIgI8jyla1GCr9.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CD67B912B11416600C510B1 /* libHSsimplex-chat-5.4.0.6-95eerlCBwIgI8jyla1GCr9.a */; }; + 5CD67B972B11416700C510B1 /* libHSsimplex-chat-5.4.0.6-95eerlCBwIgI8jyla1GCr9-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CD67B922B11416600C510B1 /* libHSsimplex-chat-5.4.0.6-95eerlCBwIgI8jyla1GCr9-ghc9.6.3.a */; }; + 5CD67B982B11416700C510B1 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CD67B932B11416600C510B1 /* libffi.a */; }; + 5CD67B992B11416700C510B1 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CD67B942B11416600C510B1 /* libgmp.a */; }; + 5CD67B9A2B11416700C510B1 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CD67B952B11416700C510B1 /* libgmpxx.a */; }; 5CDCAD482818589900503DA2 /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CDCAD472818589900503DA2 /* NotificationService.swift */; }; 5CE2BA702845308900EC33A6 /* SimpleXChat.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CE2BA682845308900EC33A6 /* SimpleXChat.framework */; }; 5CE2BA712845308900EC33A6 /* SimpleXChat.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 5CE2BA682845308900EC33A6 /* SimpleXChat.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; @@ -145,11 +150,6 @@ 5CEACCED27DEA495000BD591 /* MsgContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CEACCEC27DEA495000BD591 /* MsgContentView.swift */; }; 5CEBD7462A5C0A8F00665FE2 /* KeyboardPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CEBD7452A5C0A8F00665FE2 /* KeyboardPadding.swift */; }; 5CEBD7482A5F115D00665FE2 /* SetDeliveryReceiptsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CEBD7472A5F115D00665FE2 /* SetDeliveryReceiptsView.swift */; }; - 5CF077FB2B0D60C100105111 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CF077F62B0D60C000105111 /* libgmpxx.a */; }; - 5CF077FC2B0D60C100105111 /* libHSsimplex-chat-5.4.0.5-AEaxUB19STC3bOtqr9BLL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CF077F72B0D60C000105111 /* libHSsimplex-chat-5.4.0.5-AEaxUB19STC3bOtqr9BLL2.a */; }; - 5CF077FD2B0D60C100105111 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CF077F82B0D60C000105111 /* libgmp.a */; }; - 5CF077FE2B0D60C100105111 /* libHSsimplex-chat-5.4.0.5-AEaxUB19STC3bOtqr9BLL2-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CF077F92B0D60C100105111 /* libHSsimplex-chat-5.4.0.5-AEaxUB19STC3bOtqr9BLL2-ghc9.6.3.a */; }; - 5CF077FF2B0D60C100105111 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CF077FA2B0D60C100105111 /* libffi.a */; }; 5CFA59C42860BC6200863A68 /* MigrateToAppGroupView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CFA59C32860BC6200863A68 /* MigrateToAppGroupView.swift */; }; 5CFA59D12864782E00863A68 /* ChatArchiveView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CFA59CF286477B400863A68 /* ChatArchiveView.swift */; }; 5CFE0921282EEAF60002594B /* ZoomableScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CFE0920282EEAF60002594B /* ZoomableScrollView.swift */; }; @@ -408,6 +408,11 @@ 5CCD403627A5F9A200368C90 /* ScanToConnectView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScanToConnectView.swift; sourceTree = ""; }; 5CD67B8D2B0E858A00C510B1 /* hs_init.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hs_init.h; sourceTree = ""; }; 5CD67B8E2B0E858A00C510B1 /* hs_init.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = hs_init.c; sourceTree = ""; }; + 5CD67B912B11416600C510B1 /* libHSsimplex-chat-5.4.0.6-95eerlCBwIgI8jyla1GCr9.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.4.0.6-95eerlCBwIgI8jyla1GCr9.a"; sourceTree = ""; }; + 5CD67B922B11416600C510B1 /* libHSsimplex-chat-5.4.0.6-95eerlCBwIgI8jyla1GCr9-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.4.0.6-95eerlCBwIgI8jyla1GCr9-ghc9.6.3.a"; sourceTree = ""; }; + 5CD67B932B11416600C510B1 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; + 5CD67B942B11416600C510B1 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; + 5CD67B952B11416700C510B1 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; 5CDCAD452818589900503DA2 /* SimpleX NSE.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "SimpleX NSE.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; 5CDCAD472818589900503DA2 /* NotificationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationService.swift; sourceTree = ""; }; 5CDCAD492818589900503DA2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -434,11 +439,6 @@ 5CEACCEC27DEA495000BD591 /* MsgContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MsgContentView.swift; sourceTree = ""; }; 5CEBD7452A5C0A8F00665FE2 /* KeyboardPadding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyboardPadding.swift; sourceTree = ""; }; 5CEBD7472A5F115D00665FE2 /* SetDeliveryReceiptsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SetDeliveryReceiptsView.swift; sourceTree = ""; }; - 5CF077F62B0D60C000105111 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; - 5CF077F72B0D60C000105111 /* libHSsimplex-chat-5.4.0.5-AEaxUB19STC3bOtqr9BLL2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.4.0.5-AEaxUB19STC3bOtqr9BLL2.a"; sourceTree = ""; }; - 5CF077F82B0D60C000105111 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; - 5CF077F92B0D60C100105111 /* libHSsimplex-chat-5.4.0.5-AEaxUB19STC3bOtqr9BLL2-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.4.0.5-AEaxUB19STC3bOtqr9BLL2-ghc9.6.3.a"; sourceTree = ""; }; - 5CF077FA2B0D60C100105111 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; 5CFA59C32860BC6200863A68 /* MigrateToAppGroupView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MigrateToAppGroupView.swift; sourceTree = ""; }; 5CFA59CF286477B400863A68 /* ChatArchiveView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatArchiveView.swift; sourceTree = ""; }; 5CFE0920282EEAF60002594B /* ZoomableScrollView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ZoomableScrollView.swift; path = Shared/Views/ZoomableScrollView.swift; sourceTree = SOURCE_ROOT; }; @@ -521,13 +521,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5CF077FB2B0D60C100105111 /* libgmpxx.a in Frameworks */, - 5CF077FD2B0D60C100105111 /* libgmp.a in Frameworks */, - 5CF077FE2B0D60C100105111 /* libHSsimplex-chat-5.4.0.5-AEaxUB19STC3bOtqr9BLL2-ghc9.6.3.a in Frameworks */, + 5CD67B972B11416700C510B1 /* libHSsimplex-chat-5.4.0.6-95eerlCBwIgI8jyla1GCr9-ghc9.6.3.a in Frameworks */, 5CE2BA93284534B000EC33A6 /* libiconv.tbd in Frameworks */, - 5CF077FF2B0D60C100105111 /* libffi.a in Frameworks */, - 5CF077FC2B0D60C100105111 /* libHSsimplex-chat-5.4.0.5-AEaxUB19STC3bOtqr9BLL2.a in Frameworks */, 5CE2BA94284534BB00EC33A6 /* libz.tbd in Frameworks */, + 5CD67B982B11416700C510B1 /* libffi.a in Frameworks */, + 5CD67B992B11416700C510B1 /* libgmp.a in Frameworks */, + 5CD67B962B11416700C510B1 /* libHSsimplex-chat-5.4.0.6-95eerlCBwIgI8jyla1GCr9.a in Frameworks */, + 5CD67B9A2B11416700C510B1 /* libgmpxx.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -589,11 +589,11 @@ 5C764E5C279C70B7000C6508 /* Libraries */ = { isa = PBXGroup; children = ( - 5CF077FA2B0D60C100105111 /* libffi.a */, - 5CF077F82B0D60C000105111 /* libgmp.a */, - 5CF077F62B0D60C000105111 /* libgmpxx.a */, - 5CF077F92B0D60C100105111 /* libHSsimplex-chat-5.4.0.5-AEaxUB19STC3bOtqr9BLL2-ghc9.6.3.a */, - 5CF077F72B0D60C000105111 /* libHSsimplex-chat-5.4.0.5-AEaxUB19STC3bOtqr9BLL2.a */, + 5CD67B932B11416600C510B1 /* libffi.a */, + 5CD67B942B11416600C510B1 /* libgmp.a */, + 5CD67B952B11416700C510B1 /* libgmpxx.a */, + 5CD67B922B11416600C510B1 /* libHSsimplex-chat-5.4.0.6-95eerlCBwIgI8jyla1GCr9-ghc9.6.3.a */, + 5CD67B912B11416600C510B1 /* libHSsimplex-chat-5.4.0.6-95eerlCBwIgI8jyla1GCr9.a */, ); path = Libraries; sourceTree = ""; @@ -1512,7 +1512,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 182; + CURRENT_PROJECT_VERSION = 183; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; ENABLE_PREVIEWS = YES; @@ -1555,7 +1555,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 182; + CURRENT_PROJECT_VERSION = 183; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; ENABLE_PREVIEWS = YES; @@ -1636,7 +1636,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 182; + CURRENT_PROJECT_VERSION = 183; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; @@ -1668,7 +1668,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 182; + CURRENT_PROJECT_VERSION = 183; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; @@ -1700,7 +1700,7 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 182; + CURRENT_PROJECT_VERSION = 183; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; DYLIB_COMPATIBILITY_VERSION = 1; @@ -1746,7 +1746,7 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 182; + CURRENT_PROJECT_VERSION = 183; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; DYLIB_COMPATIBILITY_VERSION = 1; diff --git a/apps/ios/de.lproj/Localizable.strings b/apps/ios/de.lproj/Localizable.strings index c860a2499..febd4c06a 100644 --- a/apps/ios/de.lproj/Localizable.strings +++ b/apps/ios/de.lproj/Localizable.strings @@ -545,6 +545,9 @@ /* No comment provided by engineer. */ "Authentication unavailable" = "Authentifizierung nicht verfügbar"; +/* member role */ +"author" = "Autor"; + /* No comment provided by engineer. */ "Auto-accept" = "Automatisch akzeptieren"; @@ -786,6 +789,9 @@ /* server test step */ "Connect" = "Verbinden"; +/* No comment provided by engineer. */ +"Connect automatically" = "Automatisch verbinden"; + /* No comment provided by engineer. */ "Connect incognito" = "Inkognito verbinden"; @@ -1287,6 +1293,9 @@ /* No comment provided by engineer. */ "Discover and join groups" = "Gruppen entdecken und ihnen beitreten"; +/* No comment provided by engineer. */ +"Discover via local network" = "Lokales Netzwerk durchsuchen"; + /* No comment provided by engineer. */ "Do it later" = "Später wiederholen"; @@ -1722,6 +1731,9 @@ /* No comment provided by engineer. */ "For console" = "Für Konsole"; +/* No comment provided by engineer. */ +"Found desktop" = "Gefundener Desktop"; + /* No comment provided by engineer. */ "French interface" = "Französische Bedienoberfläche"; @@ -2397,6 +2409,9 @@ /* copied message info in history */ "no text" = "Kein Text"; +/* No comment provided by engineer. */ +"Not compatible!" = "Nicht kompatibel!"; + /* No comment provided by engineer. */ "Notifications" = "Benachrichtigungen"; @@ -3671,6 +3686,9 @@ /* No comment provided by engineer. */ "waiting for confirmation…" = "Warten auf Bestätigung…"; +/* No comment provided by engineer. */ +"Waiting for desktop..." = "Es wird auf den Desktop gewartet..."; + /* No comment provided by engineer. */ "Waiting for file" = "Warte auf Datei"; diff --git a/apps/ios/fr.lproj/Localizable.strings b/apps/ios/fr.lproj/Localizable.strings index b71d510e7..470e23b4f 100644 --- a/apps/ios/fr.lproj/Localizable.strings +++ b/apps/ios/fr.lproj/Localizable.strings @@ -545,6 +545,9 @@ /* No comment provided by engineer. */ "Authentication unavailable" = "Authentification indisponible"; +/* member role */ +"author" = "auteur"; + /* No comment provided by engineer. */ "Auto-accept" = "Auto-accepter"; @@ -786,6 +789,9 @@ /* server test step */ "Connect" = "Se connecter"; +/* No comment provided by engineer. */ +"Connect automatically" = "Connexion automatique"; + /* No comment provided by engineer. */ "Connect incognito" = "Se connecter incognito"; @@ -1287,6 +1293,9 @@ /* No comment provided by engineer. */ "Discover and join groups" = "Découvrir et rejoindre des groupes"; +/* No comment provided by engineer. */ +"Discover via local network" = "Rechercher sur le réseau"; + /* No comment provided by engineer. */ "Do it later" = "Faites-le plus tard"; @@ -1722,6 +1731,9 @@ /* No comment provided by engineer. */ "For console" = "Pour la console"; +/* No comment provided by engineer. */ +"Found desktop" = "Bureau trouvé"; + /* No comment provided by engineer. */ "French interface" = "Interface en français"; @@ -2397,6 +2409,9 @@ /* copied message info in history */ "no text" = "aucun texte"; +/* No comment provided by engineer. */ +"Not compatible!" = "Non compatible !"; + /* No comment provided by engineer. */ "Notifications" = "Notifications"; @@ -3671,6 +3686,9 @@ /* No comment provided by engineer. */ "waiting for confirmation…" = "en attente de confirmation…"; +/* No comment provided by engineer. */ +"Waiting for desktop..." = "En attente du bureau..."; + /* No comment provided by engineer. */ "Waiting for file" = "En attente du fichier"; diff --git a/apps/ios/nl.lproj/Localizable.strings b/apps/ios/nl.lproj/Localizable.strings index ac1f8b03d..784acf1a9 100644 --- a/apps/ios/nl.lproj/Localizable.strings +++ b/apps/ios/nl.lproj/Localizable.strings @@ -545,6 +545,9 @@ /* No comment provided by engineer. */ "Authentication unavailable" = "Verificatie niet beschikbaar"; +/* member role */ +"author" = "auteur"; + /* No comment provided by engineer. */ "Auto-accept" = "Automatisch accepteren"; @@ -786,6 +789,9 @@ /* server test step */ "Connect" = "Verbind"; +/* No comment provided by engineer. */ +"Connect automatically" = "Automatisch verbinden"; + /* No comment provided by engineer. */ "Connect incognito" = "Verbind incognito"; @@ -1287,6 +1293,9 @@ /* No comment provided by engineer. */ "Discover and join groups" = "Ontdek en sluit je aan bij groepen"; +/* No comment provided by engineer. */ +"Discover via local network" = "Ontdek via het lokale netwerk"; + /* No comment provided by engineer. */ "Do it later" = "Doe het later"; @@ -1722,6 +1731,9 @@ /* No comment provided by engineer. */ "For console" = "Voor console"; +/* No comment provided by engineer. */ +"Found desktop" = "Desktop gevonden"; + /* No comment provided by engineer. */ "French interface" = "Franse interface"; @@ -2397,6 +2409,9 @@ /* copied message info in history */ "no text" = "geen tekst"; +/* No comment provided by engineer. */ +"Not compatible!" = "Niet compatibel!"; + /* No comment provided by engineer. */ "Notifications" = "Meldingen"; @@ -3671,6 +3686,9 @@ /* No comment provided by engineer. */ "waiting for confirmation…" = "Wachten op bevestiging…"; +/* No comment provided by engineer. */ +"Waiting for desktop..." = "Wachten op desktop..."; + /* No comment provided by engineer. */ "Waiting for file" = "Wachten op bestand"; diff --git a/apps/ios/pl.lproj/Localizable.strings b/apps/ios/pl.lproj/Localizable.strings index 3eb86d2a1..e0f4c4dee 100644 --- a/apps/ios/pl.lproj/Localizable.strings +++ b/apps/ios/pl.lproj/Localizable.strings @@ -25,6 +25,9 @@ /* No comment provided by engineer. */ "- more stable message delivery.\n- a bit better groups.\n- and more!" = "- bardziej stabilne dostarczanie wiadomości.\n- nieco lepsze grupy.\n- i więcej!"; +/* No comment provided by engineer. */ +"- optionally notify deleted contacts.\n- profile names with spaces.\n- and more!" = "- opcjonalnie powiadamiaj usunięte kontakty.\n- nazwy profili ze spacją.\n- i wiele więcej!"; + /* No comment provided by engineer. */ "- voice messages up to 5 minutes.\n- custom time to disappear.\n- editing history." = "- wiadomości głosowe do 5 minut.\n- niestandardowy czas zniknięcia.\n- historia edycji."; @@ -43,6 +46,12 @@ /* No comment provided by engineer. */ "(" = "("; +/* No comment provided by engineer. */ +"(new)" = "(nowy)"; + +/* No comment provided by engineer. */ +"(this device v%@)" = "(to urządzenie v%@)"; + /* No comment provided by engineer. */ ")" = ")"; @@ -536,6 +545,9 @@ /* No comment provided by engineer. */ "Authentication unavailable" = "Uwierzytelnianie niedostępne"; +/* member role */ +"author" = "autor"; + /* No comment provided by engineer. */ "Auto-accept" = "Automatycznie akceptuj"; @@ -548,6 +560,9 @@ /* No comment provided by engineer. */ "Back" = "Wstecz"; +/* No comment provided by engineer. */ +"Bad desktop address" = "Zły adres komputera"; + /* integrity error chat item */ "bad message hash" = "zły hash wiadomości"; @@ -560,12 +575,18 @@ /* No comment provided by engineer. */ "Bad message ID" = "Zły identyfikator wiadomości"; +/* No comment provided by engineer. */ +"Better groups" = "Lepsze grupy"; + /* No comment provided by engineer. */ "Better messages" = "Lepsze wiadomości"; /* No comment provided by engineer. */ "Block" = "Zablokuj"; +/* No comment provided by engineer. */ +"Block group members" = "Blokuj członków grupy"; + /* No comment provided by engineer. */ "Block member" = "Zablokuj członka"; @@ -768,9 +789,15 @@ /* server test step */ "Connect" = "Połącz"; +/* No comment provided by engineer. */ +"Connect automatically" = "Łącz automatycznie"; + /* No comment provided by engineer. */ "Connect incognito" = "Połącz incognito"; +/* No comment provided by engineer. */ +"Connect to desktop" = "Połącz do komputera"; + /* No comment provided by engineer. */ "connect to SimpleX Chat developers." = "połącz się z deweloperami SimpleX Chat."; @@ -801,9 +828,15 @@ /* No comment provided by engineer. */ "connected" = "połączony"; +/* No comment provided by engineer. */ +"Connected desktop" = "Połączony komputer"; + /* rcv group event chat item */ "connected directly" = "połącz bezpośrednio"; +/* No comment provided by engineer. */ +"Connected to desktop" = "Połączony do komputera"; + /* No comment provided by engineer. */ "connecting" = "łączenie"; @@ -828,6 +861,9 @@ /* No comment provided by engineer. */ "Connecting server… (error: %@)" = "Łączenie z serwerem... (błąd: %@)"; +/* No comment provided by engineer. */ +"Connecting to desktop" = "Łączenie z komputerem"; + /* chat list item title */ "connecting…" = "łączenie…"; @@ -846,6 +882,9 @@ /* No comment provided by engineer. */ "Connection request sent!" = "Prośba o połączenie wysłana!"; +/* No comment provided by engineer. */ +"Connection terminated" = "Połączenie zakończone"; + /* No comment provided by engineer. */ "Connection timeout" = "Czas połączenia minął"; @@ -900,6 +939,9 @@ /* No comment provided by engineer. */ "Create" = "Utwórz"; +/* No comment provided by engineer. */ +"Create a group using a random profile." = "Utwórz grupę używając losowego profilu."; + /* No comment provided by engineer. */ "Create an address to let people connect with you." = "Utwórz adres, aby ludzie mogli się z Tobą połączyć."; @@ -1173,6 +1215,15 @@ /* No comment provided by engineer. */ "Description" = "Opis"; +/* No comment provided by engineer. */ +"Desktop address" = "Adres komputera"; + +/* No comment provided by engineer. */ +"Desktop app version %@ is not compatible with this app." = "Wersja aplikacji komputerowej %@ nie jest kompatybilna z tą aplikacją."; + +/* No comment provided by engineer. */ +"Desktop devices" = "Urządzenia komputerowe"; + /* No comment provided by engineer. */ "Develop" = "Deweloperskie"; @@ -1236,9 +1287,15 @@ /* server test step */ "Disconnect" = "Rozłącz"; +/* No comment provided by engineer. */ +"Disconnect desktop?" = "Rozłączyć komputer?"; + /* No comment provided by engineer. */ "Discover and join groups" = "Odkrywaj i dołączaj do grup"; +/* No comment provided by engineer. */ +"Discover via local network" = "Odkryj przez sieć lokalną"; + /* No comment provided by engineer. */ "Do it later" = "Zrób to później"; @@ -1374,6 +1431,12 @@ /* chat item text */ "encryption re-negotiation allowed for %@" = "renegocjacja szyfrowania dozwolona dla %@"; +/* message decrypt error item */ +"Encryption re-negotiation error" = "Błąd renegocjacji szyfrowania"; + +/* No comment provided by engineer. */ +"Encryption re-negotiation failed." = "Renegocjacja szyfrowania nie powiodła się."; + /* chat item text */ "encryption re-negotiation required" = "renegocjacja szyfrowania wymagana"; @@ -1404,6 +1467,9 @@ /* No comment provided by engineer. */ "Enter server manually" = "Wprowadź serwer ręcznie"; +/* No comment provided by engineer. */ +"Enter this device name…" = "Podaj nazwę urządzenia…"; + /* placeholder */ "Enter welcome message…" = "Wpisz wiadomość powitalną…"; @@ -1605,6 +1671,9 @@ /* No comment provided by engineer. */ "Fast and no wait until the sender is online!" = "Szybko i bez czekania aż nadawca będzie online!"; +/* No comment provided by engineer. */ +"Faster joining and more reliable messages." = "Szybsze dołączenie i bardziej niezawodne wiadomości."; + /* No comment provided by engineer. */ "Favorite" = "Ulubione"; @@ -1662,6 +1731,9 @@ /* No comment provided by engineer. */ "For console" = "Dla konsoli"; +/* No comment provided by engineer. */ +"Found desktop" = "Znaleziono komputer"; + /* No comment provided by engineer. */ "French interface" = "Francuski interfejs"; @@ -1866,6 +1938,9 @@ /* No comment provided by engineer. */ "Incognito" = "Incognito"; +/* No comment provided by engineer. */ +"Incognito groups" = "Grupy incognito"; + /* No comment provided by engineer. */ "Incognito mode" = "Tryb incognito"; @@ -1893,6 +1968,9 @@ /* No comment provided by engineer. */ "Incompatible database version" = "Niekompatybilna wersja bazy danych"; +/* No comment provided by engineer. */ +"Incompatible version" = "Niekompatybilna wersja"; + /* PIN entry */ "Incorrect passcode" = "Nieprawidłowy pin"; @@ -2028,6 +2106,9 @@ /* No comment provided by engineer. */ "Joining group" = "Dołączanie do grupy"; +/* No comment provided by engineer. */ +"Keep the app open to use it from desktop" = "Zostaw aplikację otwartą i używaj ją z komputera"; + /* No comment provided by engineer. */ "Keep your connections" = "Zachowaj swoje połączenia"; @@ -2064,6 +2145,15 @@ /* No comment provided by engineer. */ "Limitations" = "Ograniczenia"; +/* No comment provided by engineer. */ +"Link mobile and desktop apps! 🔗" = "Połącz mobile i komputerowe aplikacje! 🔗"; + +/* No comment provided by engineer. */ +"Linked desktop options" = "Połączone opcje komputera"; + +/* No comment provided by engineer. */ +"Linked desktops" = "Połączone komputery"; + /* No comment provided by engineer. */ "LIVE" = "NA ŻYWO"; @@ -2319,6 +2409,9 @@ /* copied message info in history */ "no text" = "brak tekstu"; +/* No comment provided by engineer. */ +"Not compatible!" = "Nie kompatybilny!"; + /* No comment provided by engineer. */ "Notifications" = "Powiadomienia"; @@ -2462,6 +2555,9 @@ /* No comment provided by engineer. */ "Paste" = "Wklej"; +/* No comment provided by engineer. */ +"Paste desktop address" = "Wklej adres komputera"; + /* No comment provided by engineer. */ "Paste image" = "Wklej obraz"; @@ -2846,6 +2942,9 @@ /* No comment provided by engineer. */ "Scan QR code" = "Zeskanuj kod QR"; +/* No comment provided by engineer. */ +"Scan QR code from desktop" = "Zeskanuj kod QR z komputera"; + /* No comment provided by engineer. */ "Scan security code from your contact's app." = "Zeskanuj kod bezpieczeństwa z aplikacji Twojego kontaktu."; @@ -2990,6 +3089,9 @@ /* No comment provided by engineer. */ "Servers" = "Serwery"; +/* No comment provided by engineer. */ +"Session code" = "Kod sesji"; + /* No comment provided by engineer. */ "Set 1 day" = "Ustaw 1 dzień"; @@ -3299,6 +3401,9 @@ /* notification title */ "this contact" = "ten kontakt"; +/* No comment provided by engineer. */ +"This device name" = "Nazwa tego urządzenia"; + /* No comment provided by engineer. */ "This group has over %lld members, delivery receipts are not sent." = "Ta grupa ma ponad %lld członków, potwierdzenia dostawy nie są wysyłane."; @@ -3320,6 +3425,9 @@ /* No comment provided by engineer. */ "To connect, your contact can scan QR code or use the link in the app." = "Aby się połączyć, Twój kontakt może zeskanować kod QR lub skorzystać z linku w aplikacji."; +/* No comment provided by engineer. */ +"To hide unwanted messages." = "Aby ukryć niechciane wiadomości."; + /* No comment provided by engineer. */ "To make a new connection" = "Aby nawiązać nowe połączenie"; @@ -3416,6 +3524,12 @@ /* No comment provided by engineer. */ "Unless your contact deleted the connection or this link was already used, it might be a bug - please report it.\nTo connect, please ask your contact to create another connection link and check that you have a stable network connection." = "O ile Twój kontakt nie usunął połączenia lub ten link był już użyty, może to być błąd - zgłoś go.\nAby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połączenia i sprawdź, czy masz stabilne połączenie z siecią."; +/* No comment provided by engineer. */ +"Unlink" = "Odłącz"; + +/* No comment provided by engineer. */ +"Unlink desktop?" = "Odłączyć komputer?"; + /* No comment provided by engineer. */ "Unlock" = "Odblokuj"; @@ -3470,6 +3584,9 @@ /* No comment provided by engineer. */ "Use for new connections" = "Użyj dla nowych połączeń"; +/* No comment provided by engineer. */ +"Use from desktop" = "Użyj z komputera"; + /* No comment provided by engineer. */ "Use iOS call interface" = "Użyj interfejsu połączeń iOS"; @@ -3491,12 +3608,24 @@ /* No comment provided by engineer. */ "Using SimpleX Chat servers." = "Używanie serwerów SimpleX Chat."; +/* No comment provided by engineer. */ +"v%@" = "v%@"; + /* No comment provided by engineer. */ "v%@ (%@)" = "v%@ (%@)"; +/* No comment provided by engineer. */ +"Verify code with desktop" = "Zweryfikuj kod z komputera"; + +/* No comment provided by engineer. */ +"Verify connection" = "Zweryfikuj połączenie"; + /* No comment provided by engineer. */ "Verify connection security" = "Weryfikuj bezpieczeństwo połączenia"; +/* No comment provided by engineer. */ +"Verify connections" = "Zweryfikuj połączenia"; + /* No comment provided by engineer. */ "Verify security code" = "Weryfikuj kod bezpieczeństwa"; @@ -3515,6 +3644,9 @@ /* No comment provided by engineer. */ "via relay" = "przez przekaźnik"; +/* No comment provided by engineer. */ +"Via secure quantum resistant protocol." = "Dzięki bezpiecznemu protokołowi odpornego kwantowo."; + /* No comment provided by engineer. */ "Video call" = "Połączenie wideo"; @@ -3554,6 +3686,9 @@ /* No comment provided by engineer. */ "waiting for confirmation…" = "oczekiwanie na potwierdzenie…"; +/* No comment provided by engineer. */ +"Waiting for desktop..." = "Oczekiwanie na komputer..."; + /* No comment provided by engineer. */ "Waiting for file" = "Oczekiwanie na plik"; diff --git a/apps/ios/pl.lproj/SimpleX--iOS--InfoPlist.strings b/apps/ios/pl.lproj/SimpleX--iOS--InfoPlist.strings index 92f6ba776..8c0f71f74 100644 --- a/apps/ios/pl.lproj/SimpleX--iOS--InfoPlist.strings +++ b/apps/ios/pl.lproj/SimpleX--iOS--InfoPlist.strings @@ -7,6 +7,9 @@ /* Privacy - Face ID Usage Description */ "NSFaceIDUsageDescription" = "SimpleX używa Face ID do lokalnego uwierzytelniania"; +/* Privacy - Local Network Usage Description */ +"NSLocalNetworkUsageDescription" = "SimpleX używa sieci lokalnej aby pozwolić na dostęp profilom czatu użytkownika przez aplikację komputerową na tej samej sieci."; + /* Privacy - Microphone Usage Description */ "NSMicrophoneUsageDescription" = "SimpleX potrzebuje dostępu do mikrofonu, w celu połączeń audio i wideo oraz nagrywania wiadomości głosowych."; diff --git a/apps/ios/ru.lproj/Localizable.strings b/apps/ios/ru.lproj/Localizable.strings index 7d094fcf2..03e4c4c50 100644 --- a/apps/ios/ru.lproj/Localizable.strings +++ b/apps/ios/ru.lproj/Localizable.strings @@ -545,6 +545,9 @@ /* No comment provided by engineer. */ "Authentication unavailable" = "Аутентификация недоступна"; +/* member role */ +"author" = "автор"; + /* No comment provided by engineer. */ "Auto-accept" = "Автоприем"; @@ -786,6 +789,9 @@ /* server test step */ "Connect" = "Соединиться"; +/* No comment provided by engineer. */ +"Connect automatically" = "Соединяться автоматически"; + /* No comment provided by engineer. */ "Connect incognito" = "Соединиться Инкогнито"; @@ -1287,6 +1293,9 @@ /* No comment provided by engineer. */ "Discover and join groups" = "Найдите и вступите в группы"; +/* No comment provided by engineer. */ +"Discover via local network" = "Обнаружение по локальной сети"; + /* No comment provided by engineer. */ "Do it later" = "Отложить"; @@ -1722,6 +1731,9 @@ /* No comment provided by engineer. */ "For console" = "Для консоли"; +/* No comment provided by engineer. */ +"Found desktop" = "Компьютер найден"; + /* No comment provided by engineer. */ "French interface" = "Французский интерфейс"; @@ -2397,6 +2409,9 @@ /* copied message info in history */ "no text" = "нет текста"; +/* No comment provided by engineer. */ +"Not compatible!" = "Несовместимая версия!"; + /* No comment provided by engineer. */ "Notifications" = "Уведомления"; @@ -3671,6 +3686,9 @@ /* No comment provided by engineer. */ "waiting for confirmation…" = "ожидается подтверждение…"; +/* No comment provided by engineer. */ +"Waiting for desktop..." = "Ожидается подключение компьютера..."; + /* No comment provided by engineer. */ "Waiting for file" = "Ожидается прием файла"; diff --git a/apps/multiplatform/common/src/commonMain/cpp/android/simplex-api.c b/apps/multiplatform/common/src/commonMain/cpp/android/simplex-api.c index 54478425f..4fd62524d 100644 --- a/apps/multiplatform/common/src/commonMain/cpp/android/simplex-api.c +++ b/apps/multiplatform/common/src/commonMain/cpp/android/simplex-api.c @@ -49,6 +49,13 @@ Java_chat_simplex_common_platform_CoreKt_initHS(__unused JNIEnv *env, __unused j // from simplex-chat typedef long* chat_ctrl; +/* + When you start using any new function from Haskell libraries, + you have to add the function name to the file libsimplex.dll.def in the root directory. + And do the same by adding it into flake.nix file in the root directory, + Otherwise, Windows and Android libraries cannot be built. +*/ + extern char *chat_migrate_init(const char *path, const char *key, const char *confirm, chat_ctrl *ctrl); extern char *chat_send_cmd(chat_ctrl ctrl, const char *cmd); extern char *chat_send_remote_cmd(chat_ctrl ctrl, const int rhId, const char *cmd); diff --git a/apps/multiplatform/common/src/commonMain/cpp/desktop/simplex-api.c b/apps/multiplatform/common/src/commonMain/cpp/desktop/simplex-api.c index e2cd7ed55..fb561dc38 100644 --- a/apps/multiplatform/common/src/commonMain/cpp/desktop/simplex-api.c +++ b/apps/multiplatform/common/src/commonMain/cpp/desktop/simplex-api.c @@ -8,8 +8,13 @@ void hs_init_with_rtsopts(int * argc, char **argv[]); JNIEXPORT void JNICALL Java_chat_simplex_common_platform_CoreKt_initHS(JNIEnv *env, jclass clazz) { +#ifdef _WIN32 + int argc = 4; + char *argv[] = {"simplex", "+RTS", "-A16m", "-H64m", NULL}; // non-moving GC is broken on windows with GHC 9.4-9.6.3 +#else int argc = 5; char *argv[] = {"simplex", "+RTS", "-A16m", "-H64m", "-xn", NULL}; // see android/simplex-api.c for details +#endif char **pargv = argv; hs_init_with_rtsopts(&argc, &pargv); } @@ -17,6 +22,13 @@ Java_chat_simplex_common_platform_CoreKt_initHS(JNIEnv *env, jclass clazz) { // from simplex-chat typedef long* chat_ctrl; +/* + When you start using any new function from Haskell libraries, + you have to add the function name to the file libsimplex.dll.def in the root directory. + And do the same by adding it into flake.nix file in the root directory, + Otherwise, Windows and Android libraries cannot be built. +*/ + extern char *chat_migrate_init(const char *path, const char *key, const char *confirm, chat_ctrl *ctrl); extern char *chat_send_cmd(chat_ctrl ctrl, const char *cmd); extern char *chat_send_remote_cmd(chat_ctrl ctrl, const int rhId, const char *cmd); diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/UserProfilesView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/UserProfilesView.kt index ec6d4e196..401c3afed 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/UserProfilesView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/UserProfilesView.kt @@ -21,14 +21,13 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import chat.simplex.common.model.* -import chat.simplex.common.platform.chatPasswordHash +import chat.simplex.common.platform.* import chat.simplex.common.ui.theme.* import chat.simplex.common.views.chat.item.ItemAction import chat.simplex.common.views.chatlist.UserProfilePickerItem import chat.simplex.common.views.chatlist.UserProfileRow import chat.simplex.common.views.database.PassphraseField import chat.simplex.common.views.helpers.* -import chat.simplex.common.platform.appPlatform import chat.simplex.common.views.CreateProfile import chat.simplex.res.MR import dev.icerock.moko.resources.StringResource @@ -138,6 +137,9 @@ fun UserProfilesView(m: ChatModel, search: MutableState, profileHidden: } } ) + KeyChangeEffect(remember { m.currentRemoteHost }.value) { + ModalManager.start.closeModal() + } } @Composable @@ -169,7 +171,7 @@ private fun UserProfilesLayout( } SectionSpacer() } - AppBarTitle(stringResource(MR.strings.your_chat_profiles)) + AppBarTitle(stringResource(MR.strings.your_chat_profiles), hostDevice(remember { chatModel.remoteHostId() })) SectionView { for (user in filteredUsers) { 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 82217745f..a9d315f68 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/fr/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/fr/strings.xml @@ -1519,4 +1519,9 @@ Veuillez patienter le temps que le fichier soit chargé depuis le mobile lié. La version de l\'application de bureau %s n\'est pas compatible avec cette application. Vérifier la connexion + Connexion automatique + En attente du bureau… + Bureau trouvé + Non compatible ! + Accessible via le réseau local \ No newline at end of file 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 eb28386e5..21a56d7e9 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/hu/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/hu/strings.xml @@ -356,4 +356,116 @@ Adatbázis downgrade? Chat kiürítése Adatbázis titkosítási jelmondat meg lesz változtatva. + Kapcsolódás automatikusan + Adatbázis hiba + Adatbázis titkosítási jelmondat frissül és eltárolásra kerül a beállításokban. + Adatbázis ID + Adatbázis ID: %d + Adatbázis azonosítók és \"Transport Isolation\" opciók. + Az adatbázis titkosítás jelmondata megváltoztatásra és elmentésre kerül a Keystore-ban. + Az adatbázis titkosításra kerül és a jelmondat eltárolásra a beállításokban. + Szerver törlése + Eszközhitelesítés kikapcsolva. SimpleX zár kikapcsolása. + Letiltás + Letiltás minden csoportnak + Engedélyezve minden csoportnak + engedélyezve az ismerősnek + Eltűnő üzenetek tiltottak ebben a csoportban. + Azonosító törlés + %d hét + PC címe + %ds + Kézbesítési izagolások! + Eszközhitelesítés nincs bekapcsolva. Bekapcsolhatod a SimpleX zárat a Beállításokon keresztük, miután bekapcsoltad az eszközhitelesítést. + Titkosítás visszafejtési hiba + Eltűnik ekkor: %s + szerkesztve + Törlés + %d óra + %d hónap + Azonosító törlése? + Igazolások letiltása? + Az adatbázis jelmondat eltérő a Keystore-ba elmentettől. + Közvetlen üzenetek + E-mail + Letiltás mindenkinek + Fejlesztői eszközök + Adatbázis jelmondat + %d napok + Szétkapcsolva + Az adatbázis egy véletlenszerű jelmondattal van titkosítva, lecserélheted. + %dó + %dhét + Felfedezés helyi hálózatomn keresztül + Helyi csoportok felfedezése és csatolakozás + %d üzenet moderálva %s által + Eltűnő üzenet + Ne hozz létre azonosítót + Ne mutasd ismét + SimpleX Zár kikapcsolása + e2e titkosított + ESZKÖZ + e2e titkosított videóhívás + közvetlen + PC + %d perc + %d ismerős(-ök) kiválasztva + Engedélyez + %dhónap + A közvetlen üzenetek tagok között titltottak ebben a csoportban. + %d perc + Az adatbázis egy véletlenszerű jelmondattal van titkosítva. Kérlek cseréld le exportálás előtt! + Igazolások letiltása csoportoknak? + nap + %d nap + Chat archív törlése? + Duplikálódott megjelenítési név! + Letiltás(felülírások megtartásával) + "Adatbázis upgrade" + %d üzenet blokkolva + Eltűnik ekkor + %d hét + engedélyezve számodra + Eltűnő üzenetek + Törlés + Törlés és ismerős értesítése + letiltva + %d másodperc + Minden fájl törlése + Az adatbázis titkosításra kerül. + Adatbázis jelmondat és exportálás + Az adatbázis titkosításra kerül és a jelmondat eltárolásra a Keystore-ban. + Automatikus üzenet törlés engedélyezve? + Törlés + az adatbázis verzió újabb, mint az app, de nincs lefelé migráció eddig: %s + Leírás + %d óra + %dp + Szétkapcsolás + Szerkesztés + Letiltás(csoport felülírások megtartásával) + %d csoportesemény + %d hónap + Csoport profil szerkesztése + e2e titkosított hanghívás + %d s + Decentralizált + Dekódolási hiba + Kép szerkesztése + Értesítéásek letiltása + Eszközök + Látható helyi hálózaton + Ne engedélyezd + Archívum törlése + Eltűnő üzenetek tiltottak ebben a chatben. + alap (%s) + duplikálódott üzenet + Számítógép leválasztása? + A számítógépes app verzió %s inem kompatibilis ezzel az appal. + Kézbesítés + %d fájl %s összméretben + Adatbázis jelmondat szükséges chat megnyitásához. + %dn + Engedélyeve mindenki számára + Kézbesítési izagolások kikapcsolva! \ No newline at end of file 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 e61f040a8..a9549080a 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/pl/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/pl/strings.xml @@ -1461,4 +1461,67 @@ Pokaż konsolę w nowym oknie Błąd renegocjacji szyfrowania Renegocjacja szyfrowania nie powiodła się. + Blokuj członków grupy + Utwórz grupę używając losowego profilu. + Połączony komputer + Łącz automatycznie + Adres komputera + Lepsze grupy + Komputer + Połączony do komputera + Łączenie z komputerem + Połączony telefon + Połączenie zakończone + Połącz do komputera + autor + Połączony do telefonu + Zły adres komputera + Aplikacja komputerowa %s nie jest kompatybilna z tą aplikacją. + Nowy urządzenie mobilne + Tylko jedno urządzenie może działać w tym samym czasie + Połącz mobile i komputerowe aplikacje! 🔗 + Dzięki bezpiecznemu protokołowi odpornego kwantowo. + Użyj z komputera w aplikacji mobilnej i zeskanuj kod QR.]]> + Aby ukryć niechciane wiadomości. + Niekompatybilna wersja + (nowy)]]> + Odłączyć komputer? + Połączone opcje komputera + Połączone komputery + Odkryj przez sieć lokalną + Grupy incognito + To urządzenie + %s został rozłączony]]> + Oczekiwanie na komputer… + Szybsze dołączenie i bardziej niezawodne wiadomości. + Połączone telefony + Nazwa tego urządzenia + %s]]> + Ładowanie pliku + Znaleziono komputer + Urządzenia komputerowe + Nie kompatybilny! + Połącz z telefonem + Użyj z komputera + Kod sesji + (to urządzenie v%s)]]> + Odłącz + Nazwa urządzenia zostanie udostępniona z połączonym klientem mobilnym. + Zweryfikuj kod na telefonie + Podaj nazwę urządzenia… + Błąd + Rozłącz + Wklej adres komputera + Zweryfikuj kod z komputera + Zeskanuj kod QR z komputera + Urządzenia + Odkrywane przez sieć lokalna + - opcjonalnie powiadamiaj usunięte kontakty. +\n- nazwy profili ze spacją. +\n- i wiele więcej! + Zeskanuj z telefonu + Zweryfikuj połączenia + Rozłączyć komputer? + Proszę poczekać na załadowanie pliku z połączonego telefonu + Zweryfikuj połączenie \ 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 6f13b3cf5..dc5771316 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml @@ -1507,7 +1507,7 @@ Свяжите мобильное и настольное приложения! 🔗 %d сообщений помечено удалёнными Группа уже существует! - Использовать с компьютера в мобильном приложении и сосканируйте QR код]]> + Использовать с компьютера в мобильном приложении и сосканируйте QR код.]]> Уже соединяется! Несовместимая версия (новое)]]> @@ -1520,7 +1520,7 @@ Инкогнито группы Вступление в группу уже начато! %d сообщений модерировано членом %s - %s]]> + %s был отключен]]> Быстрое вступление и надежная доставка сообщений. Соединиться с самим собой? Связанные мобильные @@ -1575,7 +1575,7 @@ Чтобы скрыть нежелательные сообщения. Забыть компьютер? Видео невозможно декодировать. Пожалуйста, попробуйте другое видео или свяжитесь с разработчиками. - %@ соединен(а) + %s соединен(а) %s, %s и %d членов группы Это устройство Разблокировать члена группы @@ -1599,4 +1599,11 @@ Показывать консоль в новом окне Проверять соединения Проверить соединение + Соединяться автоматически + Ожидается подключение… + %s]]> + Компьютер найден + Несовместимая версия! + автор + Найти через локальную сеть \ No newline at end of file diff --git a/apps/multiplatform/gradle.properties b/apps/multiplatform/gradle.properties index 9c817f08f..570e982e2 100644 --- a/apps/multiplatform/gradle.properties +++ b/apps/multiplatform/gradle.properties @@ -25,11 +25,11 @@ android.nonTransitiveRClass=true android.enableJetifier=true kotlin.mpp.androidSourceSetLayoutVersion=2 -android.version_name=5.4-beta.4 -android.version_code=161 +android.version_name=5.4 +android.version_code=162 -desktop.version_name=5.4-beta.4 -desktop.version_code=17 +desktop.version_name=5.4 +desktop.version_code=18 kotlin.version=1.8.20 gradle.plugin.version=7.4.2 diff --git a/apps/simplex-directory-service/src/Directory/Events.hs b/apps/simplex-directory-service/src/Directory/Events.hs index dab9ceb77..89231e4db 100644 --- a/apps/simplex-directory-service/src/Directory/Events.hs +++ b/apps/simplex-directory-service/src/Directory/Events.hs @@ -14,6 +14,7 @@ module Directory.Events DirectoryRole (..), SDirectoryRole (..), crDirectoryEvent, + viewName, ) where @@ -158,4 +159,13 @@ directoryCmdP = DCListLastGroups_ -> DCListLastGroups <$> (A.space *> A.decimal <|> pure 10) DCExecuteCommand_ -> DCExecuteCommand . T.unpack <$> (A.space *> A.takeText) where - gc f = f <$> (A.space *> A.decimal <* A.char ':') <*> A.takeTill (== ' ') + gc f = f <$> (A.space *> A.decimal <* A.char ':') <*> displayNameP + displayNameP = quoted '\'' <|> takeNameTill (== ' ') + takeNameTill p = + A.peekChar' >>= \c -> + if refChar c then A.takeTill p else fail "invalid first character in display name" + quoted c = A.char c *> takeNameTill (== c) <* A.char c + refChar c = c > ' ' && c /= '#' && c /= '@' + +viewName :: String -> String +viewName n = if ' ' `elem` n then "'" <> n <> "'" else n diff --git a/apps/simplex-directory-service/src/Directory/Service.hs b/apps/simplex-directory-service/src/Directory/Service.hs index 5a53e1a36..291457591 100644 --- a/apps/simplex-directory-service/src/Directory/Service.hs +++ b/apps/simplex-directory-service/src/Directory/Service.hs @@ -156,7 +156,7 @@ directoryService st DirectoryOpts {superUsers, serviceName, testing} user@User { askConfirmation = do ugrId <- addGroupReg st ct g GRSPendingConfirmation sendMessage cc ct $ T.unpack $ "The group " <> displayName <> " (" <> fullName <> ") is already submitted to the directory.\nTo confirm the registration, please send:" - sendMessage cc ct $ "/confirm " <> show ugrId <> ":" <> T.unpack displayName + sendMessage cc ct $ "/confirm " <> show ugrId <> ":" <> viewName (T.unpack displayName) badRolesMsg :: GroupRolesStatus -> Maybe String badRolesMsg = \case @@ -301,7 +301,7 @@ directoryService st DirectoryOpts {superUsers, serviceName, testing} user@User { msg = maybe (MCText text) (\image -> MCImage {text, image}) image' withSuperUsers $ \cId -> do sendComposedMessage' cc cId Nothing msg - sendMessage' cc cId $ "/approve " <> show dbGroupId <> ":" <> T.unpack displayName <> " " <> show gaId + sendMessage' cc cId $ "/approve " <> show dbGroupId <> ":" <> viewName (T.unpack displayName) <> " " <> show gaId deContactRoleChanged :: GroupInfo -> ContactId -> GroupMemberRole -> IO () deContactRoleChanged g@GroupInfo {membership = GroupMember {memberRole = serviceRole}} ctId contactRole = diff --git a/libsimplex.dll.def b/libsimplex.dll.def index 2d6e813d7..4255f4409 100644 --- a/libsimplex.dll.def +++ b/libsimplex.dll.def @@ -1,6 +1,7 @@ LIBRARY libsimplex EXPORTS hs_init + hs_init_with_rtsopts chat_migrate_init chat_send_cmd chat_send_remote_cmd diff --git a/tests/Bots/DirectoryTests.hs b/tests/Bots/DirectoryTests.hs index 730e516a1..3038f0849 100644 --- a/tests/Bots/DirectoryTests.hs +++ b/tests/Bots/DirectoryTests.hs @@ -10,6 +10,7 @@ import ChatTests.Utils import Control.Concurrent (forkIO, killThread, threadDelay) import Control.Exception (finally) import Control.Monad (forM_) +import Directory.Events (viewName) import Directory.Options import Directory.Service import Directory.Store @@ -27,6 +28,7 @@ directoryServiceTests = do it "should register group" testDirectoryService it "should suspend and resume group" testSuspendResume it "should join found group via link" testJoinGroup + it "should support group names with spaces" testGroupNameWithSpaces describe "de-listing the group" $ do it "should de-list if owner leaves the group" testDelistedOwnerLeaves it "should de-list if owner is removed from the group" testDelistedOwnerRemoved @@ -242,6 +244,24 @@ testJoinGroup tmp = cath <## "#privacy: new member dan is connected" ] +testGroupNameWithSpaces :: HasCallStack => FilePath -> IO () +testGroupNameWithSpaces tmp = + withDirectoryService tmp $ \superUser dsLink -> + withNewTestChat tmp "bob" bobProfile $ \bob -> do + bob `connectVia` dsLink + registerGroup superUser bob "Privacy & Security" "" + groupFound bob "Privacy & Security" + superUser #> "@SimpleX-Directory /suspend 1:'Privacy & Security'" + superUser <# "SimpleX-Directory> > /suspend 1:'Privacy & Security'" + superUser <## " Group suspended!" + bob <# "SimpleX-Directory> The group ID 1 (Privacy & Security) is suspended and hidden from directory. Please contact the administrators." + groupNotFound bob "privacy" + superUser #> "@SimpleX-Directory /resume 1:'Privacy & Security'" + superUser <# "SimpleX-Directory> > /resume 1:'Privacy & Security'" + superUser <## " Group listing resumed!" + bob <# "SimpleX-Directory> The group ID 1 (Privacy & Security) is listed in the directory again!" + groupFound bob "Privacy & Security" + testDelistedOwnerLeaves :: HasCallStack => FilePath -> IO () testDelistedOwnerLeaves tmp = withDirectoryServiceCfg tmp testCfgCreateGroupDirect $ \superUser dsLink -> @@ -839,16 +859,16 @@ registerGroupId su u n fn gId ugId = do submitGroup :: TestCC -> String -> String -> IO () submitGroup u n fn = do - u ##> ("/g " <> n <> " " <> fn) - u <## ("group #" <> n <> " (" <> fn <> ") is created") - u <## ("to add members use /a " <> n <> " or /create link #" <> n) - u ##> ("/a " <> n <> " SimpleX-Directory admin") - u <## ("invitation to join the group #" <> n <> " sent to SimpleX-Directory") + u ##> ("/g " <> viewName n <> if null fn then "" else " " <> fn) + u <## ("group #" <> viewName n <> (if null fn then "" else " (" <> fn <> ")") <> " is created") + u <## ("to add members use /a " <> viewName n <> " or /create link #" <> viewName n) + u ##> ("/a " <> viewName n <> " SimpleX-Directory admin") + u <## ("invitation to join the group #" <> viewName n <> " sent to SimpleX-Directory") groupAccepted :: TestCC -> String -> IO String groupAccepted u n = do u <# ("SimpleX-Directory> Joining the group " <> n <> "…") - u <## ("#" <> n <> ": SimpleX-Directory joined the group") + u <## ("#" <> viewName n <> ": SimpleX-Directory joined the group") u <# ("SimpleX-Directory> Joined the group " <> n <> ", creating the link…") u <# "SimpleX-Directory> Created the public link to join the group via this directory service that is always online." u <## "" @@ -868,7 +888,7 @@ completeRegistrationId su u n fn welcomeWithLink gId ugId = do updateProfileWithLink :: TestCC -> String -> String -> Int -> IO () updateProfileWithLink u n welcomeWithLink ugId = do - u ##> ("/set welcome " <> n <> " " <> welcomeWithLink) + u ##> ("/set welcome " <> viewName n <> " " <> welcomeWithLink) u <## "description changed to:" u <## welcomeWithLink u <# ("SimpleX-Directory> Thank you! The group link for ID " <> show ugId <> " (" <> n <> ") is added to the welcome message.") @@ -878,13 +898,13 @@ notifySuperUser :: TestCC -> TestCC -> String -> String -> String -> Int -> IO ( notifySuperUser su u n fn welcomeWithLink gId = do uName <- userName u su <# ("SimpleX-Directory> " <> uName <> " submitted the group ID " <> show gId <> ":") - su <## (n <> " (" <> fn <> ")") + su <## (n <> if null fn then "" else " (" <> fn <> ")") su <## "Welcome message:" su <## welcomeWithLink su .<## "members" su <## "" su <## "To approve send:" - let approve = "/approve " <> show gId <> ":" <> n <> " 1" + let approve = "/approve " <> show gId <> ":" <> viewName n <> " 1" su <# ("SimpleX-Directory> " <> approve) approveRegistration :: TestCC -> TestCC -> String -> Int -> IO () @@ -893,7 +913,7 @@ approveRegistration su u n gId = approveRegistrationId :: TestCC -> TestCC -> String -> Int -> Int -> IO () approveRegistrationId su u n gId ugId = do - let approve = "/approve " <> show gId <> ":" <> n <> " 1" + let approve = "/approve " <> show gId <> ":" <> viewName n <> " 1" su #> ("@SimpleX-Directory " <> approve) su <# ("SimpleX-Directory> > " <> approve) su <## " Group approved!" @@ -947,7 +967,7 @@ groupFoundN count u name = do u #> ("@SimpleX-Directory " <> name) u <# ("SimpleX-Directory> > " <> name) u <## " Found 1 group(s)" - u <#. ("SimpleX-Directory> " <> name <> " (") + u <#. ("SimpleX-Directory> " <> name) u <## "Welcome message:" u <##. "Link to join the group " u <## (show count <> " members")