Compare commits

..

253 Commits

Author SHA1 Message Date
Evgeny Poberezkin 09f916b5e4 Merge branch 'master' into master-android 2024-12-07 16:02:12 +00:00
Evgeny Poberezkin 554cfbfcc7 Merge branch 'master' into master-android 2024-12-07 14:40:58 +00:00
Evgeny Poberezkin eff4f2f603 Merge branch 'master' into master-android 2024-12-05 18:36:19 +00:00
Evgeny Poberezkin fb4f0503a1 Merge branch 'master' into master-android 2024-12-04 20:00:27 +00:00
Evgeny Poberezkin 61ab15bbb5 Merge branch 'master' into master-android 2024-12-03 18:52:41 +00:00
Evgeny Poberezkin c53d56ba00 Merge branch 'master' into master-android 2024-12-01 13:19:20 +00:00
Evgeny Poberezkin 4aaff20fd8 Merge branch 'master' into master-android 2024-11-30 20:55:17 +00:00
Evgeny Poberezkin b42cde2519 Merge branch 'master' into master-android 2024-11-23 12:32:45 +00:00
Evgeny Poberezkin 2b0c229dbb Merge branch 'master' into master-android 2024-11-17 11:09:53 +00:00
Evgeny Poberezkin 9e54ae7295 Merge branch 'master' into master-android 2024-11-13 21:58:14 +00:00
Evgeny Poberezkin ddd639a86c Merge branch 'master' into master-android 2024-11-02 18:00:48 +00:00
Evgeny Poberezkin ab5bd911c2 Merge commit '3c8c9d8b524482903a819861f032d896e43b8024' into master-android 2024-11-02 17:11:09 +00:00
Evgeny Poberezkin b75602f248 Merge branch 'master' into master-android 2024-11-02 09:02:54 +00:00
Evgeny Poberezkin 5d599a59b7 Merge branch 'master' into master-android 2024-10-18 18:38:02 +01:00
Evgeny Poberezkin af6b57e453 Merge branch 'master' into master-android 2024-10-18 14:21:30 +01:00
Evgeny Poberezkin 6bd2794548 Merge branch 'master' into master-android 2024-10-12 10:56:47 +01:00
Evgeny Poberezkin 59d86274cd Merge branch 'master' into master-android 2024-10-11 15:47:47 +01:00
Evgeny Poberezkin b6a9b25acd Merge branch 'master' into master-android 2024-10-08 14:08:16 +01:00
Evgeny Poberezkin 0e3b71866b Merge branch 'master' into master-android 2024-10-07 23:32:07 +01:00
Evgeny Poberezkin 3e9e7e29c0 Merge branch 'master' into master-android 2024-09-30 18:29:51 +01:00
Evgeny Poberezkin 531248f61a Merge branch 'master' into master-android 2024-09-26 13:45:40 +01:00
Evgeny Poberezkin 2defbdc361 Merge branch 'master' into master-android 2024-09-20 09:45:53 +01:00
Evgeny Poberezkin 8ce3d335b0 Merge branch 'master' into master-android 2024-09-18 09:20:04 +01:00
Evgeny Poberezkin 2295c2a85f Merge branch 'master' into master-android 2024-09-17 22:30:41 +01:00
Evgeny Poberezkin aa06b08e69 Merge branch 'master' into master-android 2024-09-16 13:17:54 +01:00
Evgeny Poberezkin 0b681d900b Merge branch 'master' into master-android 2024-09-12 22:20:35 +01:00
Evgeny Poberezkin a87153714f Merge branch 'master' into master-android 2024-09-12 15:22:58 +01:00
Evgeny Poberezkin a08200b3ab Merge branch 'master' into master-android 2024-09-05 12:07:51 +01:00
Evgeny Poberezkin 810f05d88f Merge branch 'master' into master-android 2024-08-31 12:06:19 +01:00
Evgeny Poberezkin 00aa615df7 Merge branch 'master' into master-android 2024-08-25 17:19:49 +01:00
Evgeny Poberezkin 6c3fd9b428 Merge branch 'master' into master-android 2024-08-22 12:24:03 +01:00
Evgeny Poberezkin c9f5066c60 Merge branch 'master' into master-android 2024-08-21 19:52:24 +01:00
Evgeny Poberezkin bc96e95849 Merge branch 'master' into master-android 2024-08-15 07:33:13 +01:00
Evgeny Poberezkin 8a301567e1 Merge branch 'master' into master-android 2024-08-14 20:30:44 +01:00
Evgeny Poberezkin afa6083cb3 Merge branch 'master' into master-android 2024-08-11 14:36:31 +01:00
Evgeny Poberezkin 160c253966 Merge branch 'master' into master-android 2024-08-10 21:53:33 +01:00
Evgeny Poberezkin 3d7434c52f Merge branch 'master' into master-android 2024-08-09 23:35:01 +01:00
Evgeny Poberezkin c78df15cd6 Merge branch 'master' into master-android 2024-08-08 13:19:17 +01:00
Evgeny Poberezkin 701bef2a50 Merge branch 'master' into master-android 2024-08-06 19:55:42 +01:00
Evgeny Poberezkin 560d9b1b03 Merge branch 'master' into master-android 2024-08-03 08:58:20 +01:00
Evgeny Poberezkin b82349164f Merge branch 'master' into master-android 2024-07-29 22:14:48 +01:00
Evgeny Poberezkin 30df42d20d Merge branch master into master-android 2024-07-28 22:08:05 +01:00
Evgeny Poberezkin 01345cd423 Merge branch 'master' into master-android 2024-07-15 23:06:44 +01:00
Evgeny Poberezkin 38a2f3b458 Merge branch 'master' into master-android 2024-07-09 19:42:02 +01:00
Evgeny Poberezkin f739c7f226 Merge branch 'master' into master-android 2024-07-09 19:08:24 +01:00
Evgeny Poberezkin 28fb67fe92 Merge branch 'master' into master-android 2024-07-03 09:08:20 +01:00
Evgeny Poberezkin d2b643de01 Merge branch 'master' into master-android 2024-07-02 15:08:07 +01:00
Evgeny Poberezkin bae9685950 Merge branch 'master' into master-android 2024-06-20 20:34:11 +01:00
Evgeny Poberezkin ccd34f5ab1 Merge branch 'master' into master-android 2024-06-18 23:40:07 +01:00
Evgeny Poberezkin dd8081a9d4 Merge branch 'master' into master-android 2024-06-03 14:06:41 +01:00
Evgeny Poberezkin d65909cb53 Merge branch 'master' into master-android 2024-06-01 00:23:02 +01:00
Evgeny Poberezkin e99b543c2f Merge branch 'master' into master-android 2024-05-29 08:34:51 +01:00
Evgeny Poberezkin 312d315d73 Merge branch 'master' into master-android 2024-05-24 21:34:06 +01:00
Evgeny Poberezkin cdf5520084 Merge branch 'master' into master-android 2024-05-20 19:04:29 +01:00
Evgeny Poberezkin 170e8ddeaf Merge branch 'master' into master-android 2024-05-17 15:41:24 +01:00
Evgeny Poberezkin 68f7956512 Merge branch 'master' into master-android 2024-05-13 21:13:29 +01:00
Evgeny Poberezkin e424b3eb66 Merge branch 'master' into master-android 2024-05-12 11:37:39 +01:00
Evgeny Poberezkin fb7a414e3c Merge branch 'master' into master-android 2024-05-11 23:56:47 +01:00
Evgeny Poberezkin 5966d6d648 Merge branch 'master' into master-android 2024-05-10 22:17:57 +01:00
Evgeny Poberezkin c6ebc9a4d9 Merge branch 'master' into master-android 2024-05-10 15:25:58 +01:00
Evgeny Poberezkin 05ec8b0676 Merge branch 'master' into master-android 2024-05-05 21:02:59 +01:00
Evgeny Poberezkin 6980f643ff Merge branch 'master' into master-android 2024-05-05 17:43:26 +01:00
Evgeny Poberezkin b60dd3e3e8 Merge branch 'master' into master-android 2024-05-02 16:48:46 +01:00
Evgeny Poberezkin 17a5770442 Merge branch 'master' into master-android 2024-04-27 09:24:01 +01:00
Evgeny Poberezkin 439bbc15a5 Merge branch 'master' into master-android 2024-04-26 15:42:30 +01:00
Evgeny Poberezkin 3688141972 Merge branch 'master' into master-android 2024-04-25 13:40:50 +01:00
Evgeny Poberezkin d79f8f8345 Merge branch 'master' into master-android 2024-04-25 11:15:41 +01:00
Evgeny Poberezkin 923ad7470c Merge branch 'master' into master-android 2024-04-22 22:24:30 +01:00
Evgeny Poberezkin 833abb252e Merge branch 'master' into master-android 2024-04-22 17:53:11 +01:00
Evgeny Poberezkin c60207f211 Merge branch 'master' into master-android 2024-04-22 08:08:03 +01:00
Evgeny Poberezkin d5665a421f Merge branch 'master' into master-android 2024-04-20 19:39:40 +01:00
Evgeny Poberezkin b2aa0ffc3c Merge branch 'master' into master-android 2024-04-19 21:18:33 +01:00
Evgeny Poberezkin e50a5cfaa1 Merge branch 'master' into master-android 2024-04-03 11:44:21 +01:00
Evgeny Poberezkin 73ec44a9be Merge branch 'master' into master-android 2024-04-01 14:37:08 +01:00
Evgeny Poberezkin 59fe6ab8ce Merge branch 'master' into master-android 2024-03-21 19:00:42 +00:00
Evgeny Poberezkin ec64be7c89 Merge branch 'master' into master-android 2024-03-19 16:08:24 +00:00
Evgeny Poberezkin 41984e56c0 Merge branch 'master' into master-android 2024-03-12 18:29:34 +00:00
Evgeny Poberezkin c435510b2e Merge branch 'master' into master-android 2024-03-12 15:21:02 +00:00
Evgeny Poberezkin de65d0e0a2 Merge branch 'master' into master-android 2024-03-11 09:27:17 +00:00
Evgeny Poberezkin 9cde37c6f5 Merge branch 'master' into master-android 2024-02-11 11:41:36 +00:00
Evgeny Poberezkin 9514acf6aa Merge branch 'master' into master-android 2024-02-03 18:39:08 +00:00
Evgeny Poberezkin 40d54f3f16 Merge branch 'master' into master-android 2024-02-02 08:32:46 +00:00
Evgeny Poberezkin 3249c5e463 Merge branch 'master' into master-android 2024-01-30 23:18:11 +00:00
Evgeny Poberezkin e440fba582 Merge branch 'master' into master-android 2024-01-27 20:06:31 +00:00
Evgeny Poberezkin 43cedbce26 Merge branch 'master' into master-android 2024-01-23 21:13:20 +00:00
spaced4ndy ebad009553 Merge branch 'master-ghc8107' into master-android 2024-01-22 18:44:55 +04:00
spaced4ndy 35cf113d98 Merge branch 'master' into master-ghc8107 2024-01-22 18:44:13 +04:00
Evgeny Poberezkin e82d2cbea2 Merge branch 'master-ghc8107' into master-android 2024-01-20 21:36:45 +00:00
Evgeny Poberezkin a0e056994e Merge branch 'master' into master-ghc8107 2024-01-20 21:36:23 +00:00
Evgeny Poberezkin e4d8ea17fc Merge branch 'master-ghc8107' into master-android 2024-01-20 15:07:37 +00:00
Evgeny Poberezkin e69db17804 Merge branch 'master' into master-ghc8107 2024-01-20 15:07:20 +00:00
Evgeny Poberezkin 9282cca396 Merge branch 'master-ghc8107' into master-android 2024-01-17 19:30:14 +00:00
Evgeny Poberezkin ad2eaeb004 Merge branch 'master' into master-ghc8107 2024-01-17 19:29:49 +00:00
Evgeny Poberezkin 3f44c9af24 Merge branch 'master-ghc8107' into master-android 2024-01-10 12:09:28 +00:00
Evgeny Poberezkin 4296515473 Merge branch 'master' into master-ghc8107 2024-01-10 12:06:48 +00:00
Evgeny Poberezkin 88830a2e09 Merge branch 'master-ghc8107' into master-android 2024-01-09 11:07:50 +00:00
Evgeny Poberezkin c8a269e391 Merge branch 'master' into master-ghc8107 2024-01-09 11:07:32 +00:00
Evgeny Poberezkin a45897007c Merge branch 'master-ghc8107' into master-android 2023-12-30 19:32:05 +00:00
Evgeny Poberezkin 42ea1df342 Merge branch 'master' into master-ghc8107 2023-12-30 19:19:39 +00:00
Evgeny Poberezkin 47214e33ea Merge branch 'master-ghc8107' into master-android 2023-12-27 21:02:49 +00:00
Evgeny Poberezkin ff239d81e5 Merge branch 'master' into master-ghc8107 2023-12-27 21:02:11 +00:00
Evgeny Poberezkin 0a6e47dd61 Merge branch 'master' into master-ghc8107 2023-12-27 20:57:25 +00:00
Evgeny Poberezkin ee75219ed3 core: 5.4.2.1 (simplexmq 5.5.0.2) 2023-12-27 20:57:05 +00:00
Evgeny Poberezkin 2e337a753f Merge branch 'master-ghc8107' into master-android 2023-12-27 14:09:42 +00:00
Evgeny Poberezkin 9918d91def Merge branch 'master' into master-ghc8107 2023-12-27 14:09:23 +00:00
Evgeny Poberezkin 82dd5751c1 Merge branch 'master-ghc8107' into master-android 2023-12-26 21:27:06 +00:00
Evgeny Poberezkin de637fab50 Merge branch 'master' into master-ghc8107 2023-12-26 21:12:36 +00:00
Evgeny Poberezkin cb49f6f01d Merge branch 'master-ghc8107' into master-android 2023-12-23 19:57:27 +00:00
Evgeny Poberezkin 6d0a83aa58 Merge branch 'master' into master-ghc8107 2023-12-23 19:57:08 +00:00
Evgeny Poberezkin 05f57e98ad Merge branch 'master-ghc8107' into master-android 2023-12-23 17:25:14 +00:00
Evgeny Poberezkin 6a66525927 Merge branch 'master' into master-ghc8107 2023-12-23 17:24:47 +00:00
Evgeny Poberezkin 9530a6055a Merge branch 'master-ghc8107' into master-android 2023-12-23 15:12:49 +00:00
Evgeny Poberezkin f5ed8debcc Merge branch 'master' into master-ghc8107 2023-12-23 15:11:38 +00:00
Evgeny Poberezkin 355d2449c5 fix for GHC 8.10.7 2023-12-23 15:05:36 +00:00
Evgeny Poberezkin f7382cdd6f Merge branch 'master' into master-ghc8107 2023-12-23 13:52:44 +00:00
Evgeny Poberezkin dc8d10d068 core: limit process package version to 1.6.17 2023-12-21 10:54:54 +00:00
Evgeny Poberezkin 951245d33f Merge branch 'master-ghc8107' into master-android 2023-12-21 10:00:28 +00:00
Evgeny Poberezkin 521b901cc9 Merge branch 'master' into master-ghc8107 (without changes for iPhone7) 2023-12-21 09:59:25 +00:00
Evgeny Poberezkin 6311ba451b Merge branch 'master-ghc8107' into master-android 2023-12-21 00:45:32 +00:00
Evgeny Poberezkin 754c76d6fd Merge branch 'master' into master-ghc8107 2023-12-21 00:45:10 +00:00
Evgeny Poberezkin aea7ff1c89 nix: fix script 2023-12-13 20:27:58 +00:00
Evgeny Poberezkin 77ac972e09 Merge branch 'master-ghc8107' into master-android 2023-12-13 12:36:06 +00:00
Evgeny Poberezkin 256f85024f Merge branch 'master' into master-ghc8107 2023-12-13 12:35:37 +00:00
Evgeny Poberezkin 870f9e42dd Merge branch 'master' into master-ghc8107 2023-12-12 20:09:39 +00:00
Evgeny Poberezkin 0a4a3a24e1 Merge branch 'master-ghc8107' into master-android 2023-12-11 17:36:51 +00:00
Evgeny Poberezkin 8a66390a78 fix for GHC 8.10.7 2023-12-11 16:14:56 +00:00
Evgeny Poberezkin 3d48eded3d Merge branch 'master-ghc8107' into master-android 2023-12-11 14:56:47 +00:00
Evgeny Poberezkin 6546426ec0 Merge branch 'master' into master-ghc8107 2023-12-11 14:56:25 +00:00
spaced4ndy 4a7ceb00fb Merge branch 'master-ghc8107' into master-android 2023-12-11 17:53:08 +04:00
spaced4ndy 53560378bb Merge branch 'master' into master-ghc8107 2023-12-11 17:52:48 +04:00
Evgeny Poberezkin cdb3b6aafd Merge branch 'master-ghc8107' into master-android 2023-12-07 15:12:49 +00:00
Evgeny Poberezkin 9f3d3e8ba4 Merge branch 'master' into master-ghc8107 2023-12-07 15:00:23 +00:00
Evgeny Poberezkin 047aad592e Merge branch 'master-ghc8107' into master-android 2023-12-04 12:32:05 +00:00
Evgeny Poberezkin 087acd9180 changes to support GHC 8.10.7 (#3512)
* Revert "raise lower bound on mtl to a real version (#3499)"

This reverts commit f94c0311c1.

* Revert "core: expand ranges to fit ghc 8.10 & 9.6 (#3496)"

This reverts commit 9a1c7f41f7.

* update simplexmq

* remove netword-transport fork

* compatibility with GHC 8.10.7

* simplexmq

* fix test

* simplexmq, deps

* update sqlcipher deps in sha256nix

* fix index-state in cabal.project

* index-state

* remove import

* add cabal.project.freeze

* simplexmq

* remove freeze

* simplexmq

* bytestring,simplexmq

* template-haskell, simplexmq

* simplexmq

* simplexmq

* simplexmq

* mtl

* simplexmq

* remove duplicate index-state
2023-12-04 12:29:49 +00:00
Evgeny Poberezkin 0b822e4a5c Merge branch 'master' into master-ghc8107 2023-12-04 10:07:16 +00:00
Evgeny Poberezkin f8a469488e Merge branch 'master' into master-ghc8107 2023-12-02 12:30:36 +00:00
Evgeny Poberezkin 3b5e806418 Merge branch 'master' into master-ghc8107 2023-12-01 17:46:12 +00:00
spaced4ndy 79e208193a Merge branch 'master-ghc8107' into master-android 2023-11-30 21:11:25 +04:00
spaced4ndy ef5c13b1c1 Merge branch 'master' into master-ghc8107 2023-11-30 21:10:51 +04:00
spaced4ndy 38533213d2 Merge branch 'master' into master-ghc8107 2023-11-30 20:56:51 +04:00
spaced4ndy 5f1aa6fa9d Merge branch 'master-ghc8107' into master-android 2023-11-27 19:18:22 +04:00
spaced4ndy b0002fe07d Merge branch 'master' into master-ghc8107 2023-11-27 19:17:39 +04:00
Evgeny Poberezkin ef21fd1d26 Merge branch 'master-ghc8107' into master-android 2023-11-26 19:59:46 +00:00
Evgeny Poberezkin 4a311b9578 fix for ghc 8.10.7 2023-11-26 19:34:39 +00:00
Evgeny Poberezkin b8da5e225b Merge branch 'master' into master-ghc8107 2023-11-26 18:53:40 +00:00
Evgeny Poberezkin f27de052cf Merge branch 'master' into master-android 2023-11-26 11:51:16 +00:00
Evgeny Poberezkin 5cc537f14c Merge branch 'master' into master-ghc8107 2023-11-26 11:50:50 +00:00
Evgeny Poberezkin dc8ca4cf89 Merge tag 'v5.4.0' into master-android 2023-11-25 11:23:23 +00:00
Evgeny Poberezkin b62dd801f1 Merge branch 'master-ghc8107' into master-android 2023-11-24 20:02:05 +00:00
Evgeny Poberezkin 0c096e2c89 Merge branch 'master' into master-ghc8107 2023-11-24 19:00:30 +00:00
Evgeny Poberezkin cc127e56fe Merge branch 'master' into master-android 2023-11-23 16:23:02 +00:00
Evgeny Poberezkin 1781495ee3 Merge branch 'master' into master-ghc8107 2023-11-23 16:22:46 +00:00
Evgeny Poberezkin 831231d8e6 Merge branch 'master-ghc8107' into master-android 2023-11-21 21:16:04 +00:00
Evgeny Poberezkin 45102442f4 Merge branch 'master' into master-ghc8107 2023-11-21 21:15:10 +00:00
spaced4ndy f323c8e112 Merge branch 'master-ghc8107' into master-android 2023-11-21 19:42:28 +04:00
spaced4ndy 3bdc6b5e28 Merge branch 'master' into master-ghc8107 2023-11-21 19:41:06 +04:00
Evgeny Poberezkin d8373262bc Merge branch 'master-ghc8107' into master-android 2023-11-21 00:01:20 +00:00
Evgeny Poberezkin 3597d34716 Merge branch 'master' into master-ghc8107 2023-11-21 00:00:59 +00:00
Evgeny Poberezkin bd4259e89e update hpack 2023-11-20 14:43:20 +00:00
Evgeny Poberezkin 55ead740cc update hpack 2023-11-20 14:43:05 +00:00
Evgeny Poberezkin 5ef0eda2d7 Merge branch 'master-ghc8107' into master-android 2023-11-20 14:30:27 +00:00
Evgeny Poberezkin 49a9b0e7d6 update hpack version 2023-11-20 14:30:10 +00:00
Evgeny Poberezkin 45ada450a2 Merge branch 'master-ghc8107' into master-android 2023-11-20 13:24:07 +00:00
Evgeny Poberezkin 307a1b3c5e fix for ghc 8.10.7 2023-11-20 13:23:45 +00:00
Evgeny Poberezkin ed6b3bbead Merge branch 'master' into master-ghc8107 2023-11-20 13:01:22 +00:00
spaced4ndy 901610eec5 Merge branch 'master-ghc8107' into master-android 2023-11-20 14:08:10 +04:00
spaced4ndy 7d4127c51d Merge branch 'master' into master-ghc8107 2023-11-20 14:07:08 +04:00
Evgeny Poberezkin 13215d91d7 Merge branch 'master-ghc8107' into master-android 2023-11-20 00:07:12 +00:00
Evgeny Poberezkin e1a8099474 fix for GHC 8.10.7 2023-11-20 00:06:45 +00:00
Evgeny Poberezkin daa8d9bb21 Merge branch 'master' into master-ghc8107 2023-11-19 23:42:13 +00:00
Evgeny Poberezkin 5fcbade1bc Merge branch 'master-ghc8107' into master-android 2023-11-17 11:49:35 +00:00
Evgeny Poberezkin 3937ffa9a6 Merge branch 'master' into master-ghc8107 2023-11-17 11:47:52 +00:00
Evgeny Poberezkin 80ddb50e1c Merge branch 'master-ghc8107' into master-android 2023-11-16 18:55:17 +00:00
Evgeny Poberezkin f6e66f1c53 Merge branch 'master' into master-ghc8107 2023-11-16 18:13:02 +00:00
Evgeny Poberezkin 0c23ff9ae3 Merge branch 'master-ghc8107' into master-android 2023-11-11 13:57:32 +00:00
Evgeny Poberezkin 1570bc2b99 Merge branch 'master' into master-ghc8107 2023-11-11 13:56:53 +00:00
Evgeny Poberezkin 1e2104cabf Merge branch 'master-ghc8107' into master-android 2023-11-11 09:52:07 +00:00
Evgeny Poberezkin f3014f258d Merge branch 'master' into master-ghc8107 2023-11-11 09:51:42 +00:00
Evgeny Poberezkin f0991cc0ba Merge branch 'master-ghc8107' into master-android 2023-11-10 21:22:19 +00:00
Evgeny Poberezkin 74b78a8d7b Merge branch 'master' into master-ghc8107 2023-11-10 21:11:08 +00:00
Evgeny Poberezkin 82cd70a75c Merge branch 'master-ghc8107' into master-android 2023-11-10 21:08:11 +00:00
Evgeny Poberezkin fe4eb7b5af Merge branch 'master' into master-ghc8107 without changes, to skip update for ghc 9.6.3 2023-11-10 21:04:20 +00:00
Evgeny Poberezkin c459e71d02 Merge branch 'master-ghc8107' into master-android 2023-11-06 11:26:40 +00:00
Evgeny Poberezkin 2516d5a393 Merge branch 'master' into master-ghc8107 2023-11-06 11:26:22 +00:00
spaced4ndy 477d98d75a Merge branch 'master-ghc8107' into master-android 2023-11-06 11:42:39 +04:00
spaced4ndy 4253cd7fb9 Merge branch 'master' into master-ghc8107 2023-11-06 11:41:55 +04:00
Evgeny Poberezkin ca78958667 Merge branch 'master-ghc8107' into master-android 2023-11-04 13:39:35 +00:00
Evgeny Poberezkin 1f5b80d560 fix for ghc8107 2023-11-04 13:37:25 +00:00
Evgeny Poberezkin 2de111e76c Merge branch 'master' into master-ghc8107 2023-11-04 13:02:08 +00:00
spaced4ndy 8343285d93 Merge branch 'master-ghc8107' into master-android 2023-10-30 21:01:16 +04:00
spaced4ndy 5dbe2b2745 Merge branch 'master' into master-ghc8107 2023-10-30 21:00:11 +04:00
Evgeny Poberezkin fb9485190d Merge branch 'master-ghc8107' into master-android 2023-10-29 18:27:00 +00:00
Evgeny Poberezkin 6881600e06 Merge branch 'master' into master-ghc8107 2023-10-29 18:24:13 +00:00
spaced4ndy 9ed723bafa Merge branch 'master-ghc8107' into master-android 2023-10-25 10:48:37 +04:00
spaced4ndy 9ded1c9821 Merge branch 'master' into master-ghc8107 2023-10-25 10:47:35 +04:00
spaced4ndy bb374c68b1 Merge branch 'master-ghc8107' into master-android 2023-10-24 18:14:22 +04:00
spaced4ndy c3e82a6a4e Merge branch 'master' into master-ghc8107 2023-10-24 18:13:56 +04:00
spaced4ndy 7c12e82042 Merge branch 'master-ghc8107' into master-android 2023-10-24 17:41:19 +04:00
spaced4ndy e7e66ff873 Merge branch 'master' into master-ghc8107 2023-10-24 17:40:55 +04:00
Evgeny Poberezkin c4d7e5307c Merge branch 'master-ghc8107' into master-android 2023-10-22 15:35:55 +01:00
Evgeny Poberezkin d6b9a45a39 Merge branch 'master' into master-ghc8107 2023-10-22 15:10:33 +01:00
Evgeny Poberezkin 7fd3b4d6ba Merge branch 'master-ghc8107' into master-android 2023-10-18 22:45:11 +01:00
Evgeny Poberezkin 4004aafbc5 Merge branch 'master' into master-ghc8107 2023-10-18 22:44:27 +01:00
spaced4ndy 95008eeeaf Merge branch 'master-ghc8107' into master-android 2023-10-16 20:05:49 +04:00
spaced4ndy c7a8992043 core: fix compilation for ghc 8.10.7 2023-10-16 20:05:13 +04:00
spaced4ndy ea2b5f2ccf Merge branch 'master-ghc8107' into master-android 2023-10-16 19:28:48 +04:00
spaced4ndy ed9f277421 Merge branch 'master' into master-ghc8107 2023-10-16 19:28:06 +04:00
Evgeny Poberezkin 5c14c3b349 Merge branch 'master-ghc8107' into master-android 2023-10-15 18:54:16 +01:00
Evgeny Poberezkin d8fb31f167 Merge branch 'master' into master-ghc8107 2023-10-15 18:53:23 +01:00
Evgeny Poberezkin 02db38ffd3 Merge branch 'master-ghc8107' into master-android 2023-10-11 21:58:16 +01:00
Evgeny Poberezkin 7692195bfa core: fix for ghc 8.10.7 2023-10-11 21:57:53 +01:00
Evgeny Poberezkin c435cbdc7b Merge branch 'master-ghc8107' into master-android 2023-10-11 21:28:43 +01:00
Evgeny Poberezkin effc281271 Merge branch 'master' into master-ghc8107 2023-10-11 21:27:21 +01:00
spaced4ndy 41eb2e5689 Merge branch 'master-ghc8107' into master-android 2023-10-11 13:22:30 +04:00
spaced4ndy 67d74a0a27 Merge branch 'master' into master-ghc8107 2023-10-11 13:21:46 +04:00
Evgeny Poberezkin f66405e79b Merge branch 'master-ghc8107' into master-android 2023-10-09 17:31:56 +01:00
Evgeny Poberezkin 74d186af16 Merge branch 'master' into master-ghc8107 2023-10-09 17:31:27 +01:00
Evgeny Poberezkin 187fef0c5a Merge branch 'master-ghc8107' into master-android 2023-10-09 14:05:21 +01:00
Evgeny Poberezkin 4782cab507 Merge branch 'master' into master-ghc8107 2023-10-09 14:05:04 +01:00
Evgeny Poberezkin bcbee67709 Merge branch 'master-ghc8107' into master-android 2023-10-08 08:38:40 +01:00
Evgeny Poberezkin 2501cbe55d Merge branch 'master' into master-ghc8107 2023-10-08 08:38:02 +01:00
Evgeny Poberezkin 2bd049db87 Merge branch 'master-ghc8107' into master-android 2023-10-07 21:10:22 +01:00
Evgeny Poberezkin 6b8b9ab4fd Merge branch 'master' into master-ghc8107 2023-10-07 19:06:38 +01:00
Evgeny Poberezkin 30db24265e Merge branch 'master-ghc8107' into master-android 2023-10-02 23:04:44 +01:00
Evgeny Poberezkin 316d605899 Merge branch 'master' into master-ghc8107 2023-10-02 23:04:13 +01:00
Evgeny Poberezkin b4257f7767 Merge branch 'master-ghc8107' into master-android 2023-10-01 13:21:50 +01:00
Evgeny Poberezkin a3f2d5c919 Merge branch 'master' into master-ghc8107 2023-10-01 13:20:06 +01:00
Evgeny Poberezkin cf46469cd5 Merge branch 'master-ghc8107' into master-android 2023-10-01 11:19:50 +01:00
Evgeny Poberezkin 0312fde818 Merge branch 'master' into master-ghc8107 2023-10-01 11:19:27 +01:00
Evgeny Poberezkin 9defa44f0c Merge branch 'master-ghc8107' into master-android 2023-09-29 13:15:23 +01:00
Evgeny Poberezkin 915b53054c Merge branch 'master' into master-ghc8107 2023-09-29 13:14:57 +01:00
Evgeny Poberezkin f81557b4fd Merge branch 'master-ghc8107' into master-android 2023-09-27 22:10:06 +01:00
Evgeny Poberezkin e273bd1239 Merge branch 'master' into master-ghc8107 2023-09-27 22:04:00 +01:00
spaced4ndy a63caf4640 Merge branch 'master-ghc8107' into master-android 2023-09-27 20:38:36 +04:00
spaced4ndy e7f0234134 Merge branch 'master' into master-ghc8107 2023-09-27 20:11:39 +04:00
Evgeny Poberezkin 340552321e Merge branch 'master-ghc8107' into master-android 2023-09-27 16:07:24 +01:00
Evgeny Poberezkin 98a3fc214d Merge branch 'master' into master-ghc8107 2023-09-27 16:04:25 +01:00
Evgeny Poberezkin 6a578cfe3c Merge branch 'master-ghc8107' into master-android 2023-09-25 16:53:04 +01:00
Evgeny Poberezkin dacc075fe8 Merge branch 'master' into master-ghc8107 2023-09-25 16:52:33 +01:00
spaced4ndy 55418e2bc0 Merge branch 'master-ghc8107' into master-android 2023-09-25 17:43:59 +04:00
spaced4ndy f2b5c0f3a8 Merge branch 'master' into master-ghc8107 2023-09-25 17:43:37 +04:00
spaced4ndy 5ebdf5dba9 Merge branch 'master-ghc8107' into master-android 2023-09-25 17:07:14 +04:00
spaced4ndy 8e045764df Merge branch 'master' into master-ghc8107 2023-09-25 16:40:08 +04:00
Evgeny Poberezkin 503d3d77e6 Merge branch 'master' into master-ghc8107 2023-09-23 08:47:28 +01:00
Evgeny Poberezkin 81bd7d97c5 Merge branch 'master' into master-ghc8107 2023-09-22 17:21:54 +01:00
Evgeny Poberezkin 8f57925067 compatibility with GHC 8.10.7 2023-09-22 14:01:25 +01:00
Evgeny Poberezkin 9bf99db82e Merge branch 'master' into master-ghc8107 2023-09-22 13:46:50 +01:00
Evgeny Poberezkin 5615cdbf1a Merge branch 'master' into master-android 2023-09-21 17:04:47 +01:00
Evgeny Poberezkin d802ae0058 Merge branch 'master' into master-android 2023-09-21 12:06:10 +01:00
Evgeny Poberezkin 8f2278198c Merge branch 'master' into master-android 2023-09-20 14:55:25 +01:00
spaced4ndy 10937a5a4e Merge branch 'master' into master-android 2023-09-20 17:36:53 +04:00
Evgeny Poberezkin 6aff6e9804 Merge branch 'master-ghc9' into master-ghc8107 2023-09-18 21:56:35 +01:00
Evgeny Poberezkin 95477cae7e core: use commit from simplexmq branch master-ghc8107 2023-09-18 21:45:50 +01:00
92 changed files with 1411 additions and 3283 deletions
+8 -4
View File
@@ -233,7 +233,7 @@ You can use SimpleX with your own servers and still communicate with people usin
Recent and important updates:
[Dec 10, 2024. SimpleX network: preset servers operated by Flux, business chats and more with v6.2 of the apps](./20241210-simplex-network-v6-2-servers-by-flux-business-chats.md)
[Nov 25, 2025. Servers operated by Flux - true privacy and decentralization for all users](./20241125-servers-operated-by-flux-true-privacy-and-decentralization-for-all-users.md)
[Oct 14, 2024. SimpleX network: security review of protocols design by Trail of Bits, v6.1 released with better calls and user experience.](./blog/20241014-simplex-network-v6-1-security-review-better-calls-user-experience.md)
@@ -243,14 +243,20 @@ Recent and important updates:
[Mar 14, 2024. SimpleX Chat v5.6 beta: adding quantum resistance to Signal double ratchet algorithm.](./blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.md)
[Jan 24, 2024. SimpleX Chat: free infrastructure from Linode, v5.5 released with private notes, group history and a simpler UX to connect.](./blog/20240124-simplex-chat-infrastructure-costs-v5-5-simplex-ux-private-notes-group-history.md)
[Nov 25, 2023. SimpleX Chat v5.4 released: link mobile and desktop apps via quantum resistant protocol, and much better groups](./blog/20231125-simplex-chat-v5-4-link-mobile-desktop-quantum-resistant-better-groups.md).
[Sep 25, 2023. SimpleX Chat v5.3 released: desktop app, local file encryption, improved groups and directory service](./blog/20230925-simplex-chat-v5-3-desktop-app-local-file-encryption-directory-service.md).
[Apr 22, 2023. SimpleX Chat: vision and funding, v5.0 released with videos and files up to 1gb](./blog/20230422-simplex-chat-vision-funding-v5-videos-files-passcode.md).
[Mar 1, 2023. SimpleX File Transfer Protocol send large files efficiently, privately and securely, soon to be integrated into SimpleX Chat apps.](./blog/20230301-simplex-file-transfer-protocol.md).
[Nov 8, 2022. Security audit by Trail of Bits, the new website and v4.2 released](./blog/20221108-simplex-chat-v4.2-security-audit-new-website.md).
[Sep 28, 2022. v4.0: encrypted local chat database and many other changes](./blog/20220928-simplex-chat-v4-encrypted-database.md).
[All updates](./blog)
## :zap: Quick installation of a terminal app
@@ -378,11 +384,9 @@ Please also join [#simplex-devs](https://simplex.chat/contact#/?v=1-2&smp=smp%3A
- ✅ Improve sending videos (including encryption of locally stored videos).
- ✅ Post-quantum resistant key exchange in double ratchet protocol.
- ✅ Message delivery relay for senders (to conceal IP address from the recipients' servers and to reduce the traffic).
- ✅ Support multiple network operators in the app.
- 🏗 Large groups, communities and public channels.
- 🏗 Short links to connect and join groups.
- 🏗 Improve stability and reduce battery usage.
- 🏗 Improve experience for the new users.
- 🏗 Large groups, communities and public channels.
- Privacy & security slider - a simple way to set all settings at once.
- SMP queue redundancy and rotation (manual is supported).
- Include optional message into connection request sent via contact address.
+29 -78
View File
@@ -156,8 +156,8 @@ struct ChatInfoView: View {
HStack(alignment: .center, spacing: 8) {
let buttonWidth = g.size.width / 4
searchButton(width: buttonWidth)
AudioCallButton(chat: chat, contact: contact, connectionStats: $connectionStats, width: buttonWidth) { alert = .someAlert(alert: $0) }
VideoButton(chat: chat, contact: contact, connectionStats: $connectionStats, width: buttonWidth) { alert = .someAlert(alert: $0) }
AudioCallButton(chat: chat, contact: contact, width: buttonWidth) { alert = .someAlert(alert: $0) }
VideoButton(chat: chat, contact: contact, width: buttonWidth) { alert = .someAlert(alert: $0) }
muteButton(width: buttonWidth)
}
}
@@ -314,15 +314,7 @@ struct ChatInfoView: View {
case .networkStatusAlert: return networkStatusAlert()
case .switchAddressAlert: return switchAddressAlert(switchContactAddress)
case .abortSwitchAddressAlert: return abortSwitchAddressAlert(abortSwitchContactAddress)
case .syncConnectionForceAlert:
return syncConnectionForceAlert({
Task {
if let stats = await syncContactConnection(contact, force: true, showAlert: { alert = .someAlert(alert: $0) }) {
connectionStats = stats
dismiss()
}
}
})
case .syncConnectionForceAlert: return syncConnectionForceAlert({ syncContactConnection(force: true) })
case let .queueInfo(info): return queueInfoAlert(info)
case let .someAlert(a): return a.alert
case let .error(title, error): return mkAlert(title: title, message: error)
@@ -501,12 +493,7 @@ struct ChatInfoView: View {
private func synchronizeConnectionButton() -> some View {
Button {
Task {
if let stats = await syncContactConnection(contact, force: false, showAlert: { alert = .someAlert(alert: $0) }) {
connectionStats = stats
dismiss()
}
}
syncContactConnection(force: false)
} label: {
Label("Fix connection", systemImage: "exclamationmark.arrow.triangle.2.circlepath")
.foregroundColor(.orange)
@@ -625,6 +612,25 @@ struct ChatInfoView: View {
}
}
private func syncContactConnection(force: Bool) {
Task {
do {
let stats = try apiSyncContactRatchet(contact.apiId, force)
connectionStats = stats
await MainActor.run {
chatModel.updateContactConnectionStats(contact, stats)
dismiss()
}
} catch let error {
logger.error("syncContactConnection apiSyncContactRatchet error: \(responseError(error))")
let a = getErrorAlert(error, "Error synchronizing connection")
await MainActor.run {
alert = .error(title: a.title, error: a.message)
}
}
}
}
private func savePreferences() {
Task {
do {
@@ -643,32 +649,9 @@ struct ChatInfoView: View {
}
}
func syncContactConnection(_ contact: Contact, force: Bool, showAlert: (SomeAlert) -> Void) async -> ConnectionStats? {
do {
let stats = try apiSyncContactRatchet(contact.apiId, force)
await MainActor.run {
ChatModel.shared.updateContactConnectionStats(contact, stats)
}
return stats
} catch let error {
logger.error("syncContactConnection apiSyncContactRatchet error: \(responseError(error))")
let a = getErrorAlert(error, "Error synchronizing connection")
await MainActor.run {
showAlert(
SomeAlert(
alert: mkAlert(title: a.title, message: a.message),
id: "syncContactConnection error"
)
)
}
return nil
}
}
struct AudioCallButton: View {
var chat: Chat
var contact: Contact
@Binding var connectionStats: ConnectionStats?
var width: CGFloat
var showAlert: (SomeAlert) -> Void
@@ -676,7 +659,6 @@ struct AudioCallButton: View {
CallButton(
chat: chat,
contact: contact,
connectionStats: $connectionStats,
image: "phone.fill",
title: "call",
mediaType: .audio,
@@ -689,7 +671,6 @@ struct AudioCallButton: View {
struct VideoButton: View {
var chat: Chat
var contact: Contact
@Binding var connectionStats: ConnectionStats?
var width: CGFloat
var showAlert: (SomeAlert) -> Void
@@ -697,7 +678,6 @@ struct VideoButton: View {
CallButton(
chat: chat,
contact: contact,
connectionStats: $connectionStats,
image: "video.fill",
title: "video",
mediaType: .video,
@@ -710,7 +690,6 @@ struct VideoButton: View {
private struct CallButton: View {
var chat: Chat
var contact: Contact
@Binding var connectionStats: ConnectionStats?
var image: String
var title: LocalizedStringKey
var mediaType: CallMediaType
@@ -722,40 +701,12 @@ private struct CallButton: View {
InfoViewButton(image: image, title: title, disabledLook: !canCall, width: width) {
if canCall {
if let connStats = connectionStats {
if connStats.ratchetSyncState == .ok {
if CallController.useCallKit() {
CallController.shared.startCall(contact, mediaType)
} else {
// When CallKit is not used, colorscheme will be changed and it will be visible if not hiding sheets first
dismissAllSheets(animated: true) {
CallController.shared.startCall(contact, mediaType)
}
}
} else if connStats.ratchetSyncAllowed {
showAlert(SomeAlert(
alert: Alert(
title: Text("Fix connection?"),
message: Text("Connection requires encryption renegotiation."),
primaryButton: .default(Text("Fix")) {
Task {
if let stats = await syncContactConnection(contact, force: false, showAlert: showAlert) {
connectionStats = stats
}
}
},
secondaryButton: .cancel()
),
id: "can't call contact, fix connection"
))
} else {
showAlert(SomeAlert(
alert: mkAlert(
title: "Can't call contact",
message: "Encryption renegotiation in progress."
),
id: "can't call contact, encryption renegotiation in progress"
))
if CallController.useCallKit() {
CallController.shared.startCall(contact, mediaType)
} else {
// When CallKit is not used, colorscheme will be changed and it will be visible if not hiding sheets first
dismissAllSheets(animated: true) {
CallController.shared.startCall(contact, mediaType)
}
}
} else if contact.nextSendGrpInv {
@@ -20,9 +20,6 @@ struct GroupMemberInfoView: View {
@State private var connectionStats: ConnectionStats? = nil
@State private var connectionCode: String? = nil
@State private var connectionLoaded: Bool = false
@State private var knownContactChat: Chat? = nil
@State private var knownContact: Contact? = nil
@State private var knownContactConnectionStats: ConnectionStats? = nil
@State private var newRole: GroupMemberRole = .member
@State private var alert: GroupMemberInfoViewAlert?
@State private var sheet: PlanAndConnectActionSheet?
@@ -122,8 +119,8 @@ struct GroupMemberInfoView: View {
} label: {
Label("Share address", systemImage: "square.and.arrow.up")
}
if member.memberContactId != nil {
if knownContactChat == nil && !groupInfo.fullGroupPreferences.directMessages.on(for: groupInfo.membership) {
if let contactId = member.memberContactId {
if knownDirectChat(contactId) == nil && !groupInfo.fullGroupPreferences.directMessages.on(for: groupInfo.membership) {
connectViaAddressButton(contactLink)
}
} else {
@@ -232,18 +229,6 @@ struct GroupMemberInfoView: View {
}
logger.error("apiGroupMemberInfo or apiGetGroupMemberCode error: \(responseError(error))")
}
if let contactId = member.memberContactId, let (contactChat, contact) = knownDirectChat(contactId) {
knownContactChat = contactChat
knownContact = contact
do {
let (stats, _) = try await apiContactInfo(contactChat.chatInfo.apiId)
await MainActor.run {
knownContactConnectionStats = stats
}
} catch let error {
logger.error("apiContactInfo error: \(responseError(error))")
}
}
}
.onChange(of: newRole) { newRole in
if newRole != member.memberRole {
@@ -289,10 +274,10 @@ struct GroupMemberInfoView: View {
GeometryReader { g in
let buttonWidth = g.size.width / 4
HStack(alignment: .center, spacing: 8) {
if let chat = knownContactChat, let contact = knownContact {
if let contactId = member.memberContactId, let (chat, contact) = knownDirectChat(contactId) {
knownDirectChatButton(chat, width: buttonWidth)
AudioCallButton(chat: chat, contact: contact, connectionStats: $knownContactConnectionStats, width: buttonWidth) { alert = .someAlert(alert: $0) }
VideoButton(chat: chat, contact: contact, connectionStats: $knownContactConnectionStats, width: buttonWidth) { alert = .someAlert(alert: $0) }
AudioCallButton(chat: chat, contact: contact, width: buttonWidth) { alert = .someAlert(alert: $0) }
VideoButton(chat: chat, contact: contact, width: buttonWidth) { alert = .someAlert(alert: $0) }
} else if groupInfo.fullGroupPreferences.directMessages.on(for: groupInfo.membership) {
if let contactId = member.memberContactId {
newDirectChatButton(contactId, width: buttonWidth)
@@ -381,49 +366,25 @@ struct GroupMemberInfoView: View {
func createMemberContactButton(width: CGFloat) -> some View {
InfoViewButton(image: "message.fill", title: "message", width: width) {
if let connStats = connectionStats {
if connStats.ratchetSyncState == .ok {
progressIndicator = true
Task {
do {
let memberContact = try await apiCreateMemberContact(groupInfo.apiId, groupMember.groupMemberId)
await MainActor.run {
progressIndicator = false
chatModel.addChat(Chat(chatInfo: .direct(contact: memberContact)))
ItemsModel.shared.loadOpenChat(memberContact.id) {
dismissAllSheets(animated: true)
}
NetworkModel.shared.setContactNetworkStatus(memberContact, .connected)
}
} catch let error {
logger.error("createMemberContactButton apiCreateMemberContact error: \(responseError(error))")
let a = getErrorAlert(error, "Error creating member contact")
await MainActor.run {
progressIndicator = false
alert = .error(title: a.title, error: a.message)
}
progressIndicator = true
Task {
do {
let memberContact = try await apiCreateMemberContact(groupInfo.apiId, groupMember.groupMemberId)
await MainActor.run {
progressIndicator = false
chatModel.addChat(Chat(chatInfo: .direct(contact: memberContact)))
ItemsModel.shared.loadOpenChat(memberContact.id) {
dismissAllSheets(animated: true)
}
NetworkModel.shared.setContactNetworkStatus(memberContact, .connected)
}
} catch let error {
logger.error("createMemberContactButton apiCreateMemberContact error: \(responseError(error))")
let a = getErrorAlert(error, "Error creating member contact")
await MainActor.run {
progressIndicator = false
alert = .error(title: a.title, error: a.message)
}
} else if connStats.ratchetSyncAllowed {
alert = .someAlert(alert: SomeAlert(
alert: Alert(
title: Text("Fix connection?"),
message: Text("Connection requires encryption renegotiation."),
primaryButton: .default(Text("Fix")) {
syncMemberConnection(force: false)
},
secondaryButton: .cancel()
),
id: "can't message member, fix connection"
))
} else {
alert = .someAlert(alert: SomeAlert(
alert: mkAlert(
title: "Can't message member",
message: "Encryption renegotiation in progress."
),
id: "can't message contact, encryption renegotiation in progress"
))
}
}
}
@@ -587,7 +587,7 @@ struct SMPStatsView: View {
} header: {
Text("Statistics")
} footer: {
Text("Starting from \(localTimestamp(statsStartedAt)).") + Text("\n") + Text("All data is kept private on your device.")
Text("Starting from \(localTimestamp(statsStartedAt)).") + Text("\n") + Text("All data is private to your device.")
}
}
}
@@ -703,7 +703,7 @@ struct XFTPStatsView: View {
} header: {
Text("Statistics")
} footer: {
Text("Starting from \(localTimestamp(statsStartedAt)).") + Text("\n") + Text("All data is kept private on your device.")
Text("Starting from \(localTimestamp(statsStartedAt)).") + Text("\n") + Text("All data is private to your device.")
}
}
}
@@ -731,8 +731,8 @@
<target>Всички данни се изтриват при въвеждане.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is kept private on your device." xml:space="preserve">
<source>All data is kept private on your device.</source>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All group members will remain connected." xml:space="preserve">
@@ -712,8 +712,8 @@
<target>Všechna data se při zadání vymažou.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is kept private on your device." xml:space="preserve">
<source>All data is kept private on your device.</source>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All group members will remain connected." xml:space="preserve">
@@ -579,7 +579,6 @@
</trans-unit>
<trans-unit id="About operators" xml:space="preserve">
<source>About operators</source>
<target>Über Betreiber</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Accent" xml:space="preserve">
@@ -642,7 +641,6 @@
</trans-unit>
<trans-unit id="Add friends" xml:space="preserve">
<source>Add friends</source>
<target>Freunde aufnehmen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add profile" xml:space="preserve">
@@ -662,7 +660,6 @@
</trans-unit>
<trans-unit id="Add team members" xml:space="preserve">
<source>Add team members</source>
<target>Team-Mitglieder aufnehmen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add to another device" xml:space="preserve">
@@ -677,7 +674,6 @@
</trans-unit>
<trans-unit id="Add your team members to the conversations." xml:space="preserve">
<source>Add your team members to the conversations.</source>
<target>Nehmen Sie Team-Mitglieder in Ihre Unterhaltungen auf.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Added media &amp; file servers" xml:space="preserve">
@@ -760,8 +756,8 @@
<target>Alle Daten werden gelöscht, sobald dieser eingegeben wird.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is kept private on your device." xml:space="preserve">
<source>All data is kept private on your device.</source>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<target>Alle Daten werden nur auf Ihrem Gerät gespeichert.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -1252,12 +1248,10 @@
</trans-unit>
<trans-unit id="Business address" xml:space="preserve">
<source>Business address</source>
<target>Geschäftliche Adresse</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Business chats" xml:space="preserve">
<source>Business chats</source>
<target>Geschäftliche Chats</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." xml:space="preserve">
@@ -1404,17 +1398,14 @@
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<target>Chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat already exists" xml:space="preserve">
<source>Chat already exists</source>
<target>Chat besteht bereits</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat already exists!" xml:space="preserve">
<source>Chat already exists!</source>
<target>Chat besteht bereits!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat colors" xml:space="preserve">
@@ -1494,12 +1485,10 @@
</trans-unit>
<trans-unit id="Chat will be deleted for all members - this cannot be undone!" xml:space="preserve">
<source>Chat will be deleted for all members - this cannot be undone!</source>
<target>Der Chat wird für alle Mitglieder gelöscht. Dies kann nicht rückgängig gemacht werden!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat will be deleted for you - this cannot be undone!" xml:space="preserve">
<source>Chat will be deleted for you - this cannot be undone!</source>
<target>Der Chat wird für Sie gelöscht. Dies kann nicht rückgängig gemacht werden!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chats" xml:space="preserve">
@@ -2258,7 +2247,6 @@ Das ist Ihr eigener Einmal-Link!</target>
</trans-unit>
<trans-unit id="Delete chat" xml:space="preserve">
<source>Delete chat</source>
<target>Chat löschen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete chat profile" xml:space="preserve">
@@ -2273,7 +2261,6 @@ Das ist Ihr eigener Einmal-Link!</target>
</trans-unit>
<trans-unit id="Delete chat?" xml:space="preserve">
<source>Delete chat?</source>
<target>Chat löschen?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete connection" xml:space="preserve">
@@ -2543,7 +2530,6 @@ Das ist Ihr eigener Einmal-Link!</target>
</trans-unit>
<trans-unit id="Direct messages between members are prohibited in this chat." xml:space="preserve">
<source>Direct messages between members are prohibited in this chat.</source>
<target>In diesem Chat sind Direktnachrichten zwischen Mitgliedern nicht erlaubt.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Direct messages between members are prohibited." xml:space="preserve">
@@ -4119,7 +4105,6 @@ Weitere Verbesserungen sind bald verfügbar!</target>
</trans-unit>
<trans-unit id="Invite to chat" xml:space="preserve">
<source>Invite to chat</source>
<target>Zum Chat einladen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invite to group" xml:space="preserve">
@@ -4282,12 +4267,10 @@ Das ist Ihr Link für die Gruppe %@!</target>
</trans-unit>
<trans-unit id="Leave chat" xml:space="preserve">
<source>Leave chat</source>
<target>Chat verlassen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Leave chat?" xml:space="preserve">
<source>Leave chat?</source>
<target>Chat verlassen?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
@@ -4422,7 +4405,6 @@ Das ist Ihr Link für die Gruppe %@!</target>
</trans-unit>
<trans-unit id="Member role will be changed to &quot;%@&quot;. All chat members will be notified." xml:space="preserve">
<source>Member role will be changed to "%@". All chat members will be notified.</source>
<target>Die Rolle des Mitglieds wird auf "%@" geändert. Alle Chat-Mitglieder werden darüber informiert.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Member role will be changed to &quot;%@&quot;. All group members will be notified." xml:space="preserve">
@@ -4437,7 +4419,6 @@ Das ist Ihr Link für die Gruppe %@!</target>
</trans-unit>
<trans-unit id="Member will be removed from chat - this cannot be undone!" xml:space="preserve">
<source>Member will be removed from chat - this cannot be undone!</source>
<target>Das Mitglied wird aus dem Chat entfernt. Dies kann nicht rückgängig gemacht werden!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Member will be removed from group - this cannot be undone!" xml:space="preserve">
@@ -5055,7 +5036,6 @@ Dies erfordert die Aktivierung eines VPNs.</target>
</trans-unit>
<trans-unit id="Only chat owners can change preferences." xml:space="preserve">
<source>Only chat owners can change preferences.</source>
<target>Nur Chat-Eigentümer können die Präferenzen ändern.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only client devices store user profiles, contacts, groups, and messages." xml:space="preserve">
@@ -5190,7 +5170,6 @@ Dies erfordert die Aktivierung eines VPNs.</target>
</trans-unit>
<trans-unit id="Or import archive file" xml:space="preserve">
<source>Or import archive file</source>
<target>Oder importieren Sie eine Archiv-Datei</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or paste archive link" xml:space="preserve">
@@ -5456,7 +5435,6 @@ Fehler: %@</target>
</trans-unit>
<trans-unit id="Privacy for your customers." xml:space="preserve">
<source>Privacy for your customers.</source>
<target>Schutz der Privatsphäre Ihrer Kunden.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Privacy redefined" xml:space="preserve">
@@ -7033,7 +7011,6 @@ Aktivieren Sie es in den *Netzwerk &amp; Server* Einstellungen.</target>
</trans-unit>
<trans-unit id="Tap Create SimpleX address in the menu to create it later." xml:space="preserve">
<source>Tap Create SimpleX address in the menu to create it later.</source>
<target>Tippen Sie im Menü auf SimpleX-Adresse erstellen, um sie später zu erstellen.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap button " xml:space="preserve">
@@ -7235,12 +7212,12 @@ Dies kann passieren, wenn es einen Fehler gegeben hat oder die Verbindung kompro
</trans-unit>
<trans-unit id="The servers for new connections of your current chat profile **%@**." xml:space="preserve">
<source>The servers for new connections of your current chat profile **%@**.</source>
<target>Nachrichten-Server für neue Verbindungen über Ihr aktuelles Chat-Profil **%@**.</target>
<target>Mögliche Server für neue Verbindungen von Ihrem aktuellen Chat-Profil **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The servers for new files of your current chat profile **%@**." xml:space="preserve">
<source>The servers for new files of your current chat profile **%@**.</source>
<target>Medien- und Datei-Server für neue Daten über Ihr aktuelles Chat-Profil **%@**.</target>
<target>Die Server Deines aktuellen Chat-Profils für neue Dateien **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The text you pasted is not a SimpleX link." xml:space="preserve">
@@ -8084,7 +8061,6 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s
</trans-unit>
<trans-unit id="You are already connected with %@." xml:space="preserve">
<source>You are already connected with %@.</source>
<target>Sie sind bereits mit %@ verbunden.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You are already connecting to %@." xml:space="preserve">
@@ -8363,7 +8339,6 @@ Verbindungsanfrage wiederholen?</target>
</trans-unit>
<trans-unit id="You will stop receiving messages from this chat. Chat history will be preserved." xml:space="preserve">
<source>You will stop receiving messages from this chat. Chat history will be preserved.</source>
<target>Sie werden von diesem Chat keine Nachrichten mehr erhalten. Der Nachrichtenverlauf wird beibehalten.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You will stop receiving messages from this group. Chat history will be preserved." xml:space="preserve">
@@ -8553,7 +8528,6 @@ Verbindungsanfrage wiederholen?</target>
</trans-unit>
<trans-unit id="accepted invitation" xml:space="preserve">
<source>accepted invitation</source>
<target>Einladung akzeptiert</target>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="admin" xml:space="preserve">
@@ -9240,7 +9214,6 @@ Verbindungsanfrage wiederholen?</target>
</trans-unit>
<trans-unit id="requested to connect" xml:space="preserve">
<source>requested to connect</source>
<target>Zur Verbindung aufgefordert</target>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="saved" xml:space="preserve">
@@ -760,9 +760,9 @@
<target>All data is erased when it is entered.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is kept private on your device." xml:space="preserve">
<source>All data is kept private on your device.</source>
<target>All data is kept private on your device.</target>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<target>All data is private to your device.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All group members will remain connected." xml:space="preserve">
@@ -550,11 +550,11 @@
<target>Se usará una conexión TCP independiente **por cada perfil que tengas en la aplicación**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="A separate TCP connection will be used **for each contact and group member**.&#10;**Please note**: if you have many connections, your battery and traffic consumption can be substantially higher and some connections may fail." xml:space="preserve" approved="no">
<trans-unit id="A separate TCP connection will be used **for each contact and group member**.&#10;**Please note**: if you have many connections, your battery and traffic consumption can be substantially higher and some connections may fail." xml:space="preserve">
<source>A separate TCP connection will be used **for each contact and group member**.
**Please note**: if you have many connections, your battery and traffic consumption can be substantially higher and some connections may fail.</source>
<target state="translated">Se usará una conexión TCP independiente **por cada contacto y miembro de grupo**.
**Atención**: si tienes muchas conexiones, tu consumo de batería y tráfico pueden aumentar bastante y algunas conexiones pueden fallar.</target>
<target>Se usará una conexión TCP independiente **por cada contacto y miembro de grupo**.
**Atención**: si tienes muchas conexiones, tu consumo de batería y tráfico pueden ser sustancialmente mayores y algunas conexiones pueden fallar.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Abort" xml:space="preserve">
@@ -579,7 +579,6 @@
</trans-unit>
<trans-unit id="About operators" xml:space="preserve">
<source>About operators</source>
<target>Acerca de los operadores</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Accent" xml:space="preserve">
@@ -642,7 +641,6 @@
</trans-unit>
<trans-unit id="Add friends" xml:space="preserve">
<source>Add friends</source>
<target>Añadir amigos</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add profile" xml:space="preserve">
@@ -662,7 +660,6 @@
</trans-unit>
<trans-unit id="Add team members" xml:space="preserve">
<source>Add team members</source>
<target>Añadir miembros del equipo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add to another device" xml:space="preserve">
@@ -677,7 +674,6 @@
</trans-unit>
<trans-unit id="Add your team members to the conversations." xml:space="preserve">
<source>Add your team members to the conversations.</source>
<target>Añade a los miembros de tu equipo a las conversaciones.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Added media &amp; file servers" xml:space="preserve">
@@ -760,8 +756,8 @@
<target>Al introducirlo todos los datos son eliminados.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is kept private on your device." xml:space="preserve">
<source>All data is kept private on your device.</source>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<target>Todos los datos son privados y están en tu dispositivo.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -990,9 +986,9 @@
<target>El código de acceso será reemplazado por código de autodestrucción.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App session" xml:space="preserve" approved="no">
<trans-unit id="App session" xml:space="preserve">
<source>App session</source>
<target state="translated">por sesión</target>
<target>Sesión de aplicación</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App version" xml:space="preserve">
@@ -1252,12 +1248,10 @@
</trans-unit>
<trans-unit id="Business address" xml:space="preserve">
<source>Business address</source>
<target>Dirección empresarial</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Business chats" xml:space="preserve">
<source>Business chats</source>
<target>Chats empresariales</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." xml:space="preserve">
@@ -1404,17 +1398,14 @@
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<target>Chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat already exists" xml:space="preserve">
<source>Chat already exists</source>
<target>El chat ya existe</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat already exists!" xml:space="preserve">
<source>Chat already exists!</source>
<target>¡El chat ya existe!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat colors" xml:space="preserve">
@@ -1494,12 +1485,10 @@
</trans-unit>
<trans-unit id="Chat will be deleted for all members - this cannot be undone!" xml:space="preserve">
<source>Chat will be deleted for all members - this cannot be undone!</source>
<target>El chat será eliminado para todos los miembros. ¡No podrá deshacerse!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat will be deleted for you - this cannot be undone!" xml:space="preserve">
<source>Chat will be deleted for you - this cannot be undone!</source>
<target>El chat será eliminado para tí. ¡No podrá deshacerse!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chats" xml:space="preserve">
@@ -2258,7 +2247,6 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Delete chat" xml:space="preserve">
<source>Delete chat</source>
<target>Eliminar chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete chat profile" xml:space="preserve">
@@ -2273,7 +2261,6 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Delete chat?" xml:space="preserve">
<source>Delete chat?</source>
<target>¿Eliminar chat?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete connection" xml:space="preserve">
@@ -2308,7 +2295,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Delete files and media?" xml:space="preserve">
<source>Delete files and media?</source>
<target>¿Eliminar archivos y multimedia?</target>
<target>Eliminar archivos y multimedia?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete files for all chat profiles" xml:space="preserve">
@@ -2543,7 +2530,6 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Direct messages between members are prohibited in this chat." xml:space="preserve">
<source>Direct messages between members are prohibited in this chat.</source>
<target>Mensajes directos no permitidos entre miembros de este chat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Direct messages between members are prohibited." xml:space="preserve">
@@ -2754,7 +2740,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Enable Flux" xml:space="preserve">
<source>Enable Flux</source>
<target>Habilita Flux</target>
<target>Habilitar Flux</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable SimpleX Lock" xml:space="preserve">
@@ -2837,9 +2823,9 @@ This is your own one-time link!</source>
<target>¿Cifrar base de datos?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Encrypt local files" xml:space="preserve" approved="no">
<trans-unit id="Encrypt local files" xml:space="preserve">
<source>Encrypt local files</source>
<target state="translated">Cifrar archivos locales</target>
<target>Cifra archivos locales</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Encrypt stored files &amp; media" xml:space="preserve">
@@ -3529,9 +3515,9 @@ This is your own one-time link!</source>
<target>Si por ejemplo tu contacto recibe los mensajes a través de un servidor de SimpleX Chat, tu aplicación los entregará a través de un servidor de Flux.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="For private routing" xml:space="preserve" approved="no">
<trans-unit id="For private routing" xml:space="preserve">
<source>For private routing</source>
<target state="translated">Para enrutamiento privado</target>
<target>Para el enrutamiento privado</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="For social media" xml:space="preserve">
@@ -4119,7 +4105,6 @@ More improvements are coming soon!</source>
</trans-unit>
<trans-unit id="Invite to chat" xml:space="preserve">
<source>Invite to chat</source>
<target>Invitar al chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invite to group" xml:space="preserve">
@@ -4282,12 +4267,10 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Leave chat" xml:space="preserve">
<source>Leave chat</source>
<target>Salir del chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Leave chat?" xml:space="preserve">
<source>Leave chat?</source>
<target>¿Salir del chat?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
@@ -4422,7 +4405,6 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Member role will be changed to &quot;%@&quot;. All chat members will be notified." xml:space="preserve">
<source>Member role will be changed to "%@". All chat members will be notified.</source>
<target>El rol del miembro cambiará a "%@" y todos serán notificados.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Member role will be changed to &quot;%@&quot;. All group members will be notified." xml:space="preserve">
@@ -4437,7 +4419,6 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Member will be removed from chat - this cannot be undone!" xml:space="preserve">
<source>Member will be removed from chat - this cannot be undone!</source>
<target>El miembro será eliminado del chat. ¡No podrá deshacerse!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Member will be removed from group - this cannot be undone!" xml:space="preserve">
@@ -4780,9 +4761,9 @@ This is your link for group %@!</source>
<target>Se usarán credenciales SOCKS nuevas cada vez que inicies la aplicación.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New SOCKS credentials will be used for each server." xml:space="preserve" approved="no">
<trans-unit id="New SOCKS credentials will be used for each server." xml:space="preserve">
<source>New SOCKS credentials will be used for each server.</source>
<target state="translated">Se usarán credenciales SOCKS nuevas para cada servidor.</target>
<target>Se usarán credenciales SOCKS nuevas por cada servidor.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New chat" xml:space="preserve">
@@ -4905,14 +4886,14 @@ This is your link for group %@!</source>
<target>No hay información, intenta recargar</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="No media &amp; file servers." xml:space="preserve" approved="no">
<trans-unit id="No media &amp; file servers." xml:space="preserve">
<source>No media &amp; file servers.</source>
<target state="translated">Sin servidores para archivos y multimedia.</target>
<target>Ningún servidor de archivos y multimedia.</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="No message servers." xml:space="preserve" approved="no">
<trans-unit id="No message servers." xml:space="preserve">
<source>No message servers.</source>
<target state="translated">Sin servidores para mensajes.</target>
<target>Ningún servidor de mensajes.</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="No network connection" xml:space="preserve">
@@ -4935,9 +4916,9 @@ This is your link for group %@!</source>
<target>Sin permiso para grabar mensajes de voz</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="No push server" xml:space="preserve" approved="no">
<trans-unit id="No push server" xml:space="preserve">
<source>No push server</source>
<target state="translated">Sin servidores push</target>
<target>Ningún servidor push</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="No received or sent files" xml:space="preserve">
@@ -4945,24 +4926,24 @@ This is your link for group %@!</source>
<target>Sin archivos recibidos o enviados</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="No servers for private message routing." xml:space="preserve" approved="no">
<trans-unit id="No servers for private message routing." xml:space="preserve">
<source>No servers for private message routing.</source>
<target state="translated">Sin servidores para enrutamiento privado.</target>
<target>Ningún servidor para enrutamiento privado.</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="No servers to receive files." xml:space="preserve" approved="no">
<trans-unit id="No servers to receive files." xml:space="preserve">
<source>No servers to receive files.</source>
<target state="translated">Sin servidores para recibir archivos.</target>
<target>Ningún servidor para recibir archivos.</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="No servers to receive messages." xml:space="preserve" approved="no">
<trans-unit id="No servers to receive messages." xml:space="preserve">
<source>No servers to receive messages.</source>
<target state="translated">Sin servidores para recibir mensajes.</target>
<target>Ningún servidor para recibir mensajes.</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="No servers to send files." xml:space="preserve" approved="no">
<trans-unit id="No servers to send files." xml:space="preserve">
<source>No servers to send files.</source>
<target state="translated">Sin servidores para enviar archivos.</target>
<target>Ningún servidor para enviar archivos.</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="No user identifiers." xml:space="preserve">
@@ -5055,7 +5036,6 @@ Requiere activación de la VPN.</target>
</trans-unit>
<trans-unit id="Only chat owners can change preferences." xml:space="preserve">
<source>Only chat owners can change preferences.</source>
<target>Sólo los propietarios del chat pueden cambiar las preferencias.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only client devices store user profiles, contacts, groups, and messages." xml:space="preserve">
@@ -5190,7 +5170,6 @@ Requiere activación de la VPN.</target>
</trans-unit>
<trans-unit id="Or import archive file" xml:space="preserve">
<source>Or import archive file</source>
<target>O importa desde un archivo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or paste archive link" xml:space="preserve">
@@ -5431,7 +5410,7 @@ Error: %@</target>
</trans-unit>
<trans-unit id="Preset server address" xml:space="preserve">
<source>Preset server address</source>
<target>Dirección predefinida del servidor</target>
<target>Dirección del servidor predefinida</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Preset servers" xml:space="preserve">
@@ -5456,7 +5435,6 @@ Error: %@</target>
</trans-unit>
<trans-unit id="Privacy for your customers." xml:space="preserve">
<source>Privacy for your customers.</source>
<target>Privacidad para tus clientes.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Privacy redefined" xml:space="preserve">
@@ -5653,7 +5631,7 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
</trans-unit>
<trans-unit id="Read more" xml:space="preserve">
<source>Read more</source>
<target>Saber más</target>
<target>Conoce más</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)." xml:space="preserve">
@@ -6611,7 +6589,7 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
</trans-unit>
<trans-unit id="Share SimpleX address on social media." xml:space="preserve">
<source>Share SimpleX address on social media.</source>
<target>Comparte tu dirección SimpleX en redes sociales.</target>
<target>Compartir dirección SimpleX en redes sociales.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share address" xml:space="preserve">
@@ -6751,12 +6729,12 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
</trans-unit>
<trans-unit id="SimpleX address and 1-time links are safe to share via any messenger." xml:space="preserve">
<source>SimpleX address and 1-time links are safe to share via any messenger.</source>
<target>Compartir los enlaces de un uso y las direcciones SimpleX es seguro a través de cualquier medio.</target>
<target>Compartir enlaces de un uso y direcciones SimpleX es seguro a través de cualquier medio.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SimpleX address or 1-time link?" xml:space="preserve">
<source>SimpleX address or 1-time link?</source>
<target>¿Dirección SimpleX o enlace de un uso?</target>
<target>Dirección SimpleX o enlace de un uso?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SimpleX contact address" xml:space="preserve">
@@ -7033,7 +7011,6 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
</trans-unit>
<trans-unit id="Tap Create SimpleX address in the menu to create it later." xml:space="preserve">
<source>Tap Create SimpleX address in the menu to create it later.</source>
<target>Pulsa Crear dirección SimpleX en el menú para crearla más tarde.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap button " xml:space="preserve">
@@ -7220,7 +7197,7 @@ Puede ocurrir por algún bug o cuando la conexión está comprometida.</target>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<target>¡Segundo operador predefinido!</target>
<target>El segundo operador predefinido!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second tick we missed! ✅" xml:space="preserve">
@@ -7233,14 +7210,14 @@ Puede ocurrir por algún bug o cuando la conexión está comprometida.</target>
<target>El remitente NO será notificado</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The servers for new connections of your current chat profile **%@**." xml:space="preserve" approved="no">
<trans-unit id="The servers for new connections of your current chat profile **%@**." xml:space="preserve">
<source>The servers for new connections of your current chat profile **%@**.</source>
<target state="translated">Servidores para conexiones nuevas en tu perfil **%@**.</target>
<target>Lista de servidores para las conexiones nuevas de tu perfil actual **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The servers for new files of your current chat profile **%@**." xml:space="preserve" approved="no">
<trans-unit id="The servers for new files of your current chat profile **%@**." xml:space="preserve">
<source>The servers for new files of your current chat profile **%@**.</source>
<target state="translated">Servidores para archivos nuevos en tu perfil **%@**.</target>
<target>Los servidores para archivos nuevos en tu perfil actual **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The text you pasted is not a SimpleX link." xml:space="preserve">
@@ -7425,9 +7402,9 @@ Se te pedirá que completes la autenticación antes de activar esta función.</t
<target>Para permitir las notificaciones automáticas instantáneas, la base de datos se debe migrar.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="To use the servers of **%@**, accept conditions of use." xml:space="preserve" approved="no">
<trans-unit id="To use the servers of **%@**, accept conditions of use." xml:space="preserve">
<source>To use the servers of **%@**, accept conditions of use.</source>
<target state="translated">Para usar los servidores de **%@**, debes aceptar las condiciones de uso.</target>
<target>Para usar los servidores de **%@**, acepta las condiciones de uso.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="To verify end-to-end encryption with your contact compare (or scan) the code on your devices." xml:space="preserve">
@@ -7722,9 +7699,9 @@ Para conectarte pide a tu contacto que cree otro enlace y comprueba la conexión
<target>Usar para mensajes</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use for new connections" xml:space="preserve" approved="no">
<trans-unit id="Use for new connections" xml:space="preserve">
<source>Use for new connections</source>
<target state="translated">Para conexiones nuevas</target>
<target>Usar para conexiones nuevas</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use from desktop" xml:space="preserve">
@@ -8079,12 +8056,11 @@ Para conectarte pide a tu contacto que cree otro enlace y comprueba la conexión
</trans-unit>
<trans-unit id="You are already connected to %@." xml:space="preserve">
<source>You are already connected to %@.</source>
<target>Ya estás conectado con %@.</target>
<target>Ya estás conectado a %@.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You are already connected with %@." xml:space="preserve">
<source>You are already connected with %@.</source>
<target>Ya estás conectado con %@.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You are already connecting to %@." xml:space="preserve">
@@ -8306,9 +8282,9 @@ Repeat connection request?</source>
<target>Debes usar la versión más reciente de tu base de datos ÚNICAMENTE en un dispositivo, de lo contrario podrías dejar de recibir mensajes de algunos contactos.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to call to be able to call them." xml:space="preserve" approved="no">
<trans-unit id="You need to allow your contact to call to be able to call them." xml:space="preserve">
<source>You need to allow your contact to call to be able to call them.</source>
<target state="translated">Debes permitir que tus contacto te llamen para poder llamarles.</target>
<target>Necesitas permitir que tus contacto llamen para poder llamarles.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to send voice messages to be able to send them." xml:space="preserve">
@@ -8363,7 +8339,6 @@ Repeat connection request?</source>
</trans-unit>
<trans-unit id="You will stop receiving messages from this chat. Chat history will be preserved." xml:space="preserve">
<source>You will stop receiving messages from this chat. Chat history will be preserved.</source>
<target>Dejarás de recibir mensajes de este chat. El historial del chat se conserva.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You will stop receiving messages from this group. Chat history will be preserved." xml:space="preserve">
@@ -8553,7 +8528,6 @@ Repeat connection request?</source>
</trans-unit>
<trans-unit id="accepted invitation" xml:space="preserve">
<source>accepted invitation</source>
<target>invitación aceptada</target>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="admin" xml:space="preserve">
@@ -8938,7 +8912,7 @@ Repeat connection request?</source>
</trans-unit>
<trans-unit id="for better metadata privacy." xml:space="preserve">
<source>for better metadata privacy.</source>
<target>para mejorar la privacidad de los metadatos.</target>
<target>para mayor privacidad de los metadatos.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="forwarded" xml:space="preserve">
@@ -9240,7 +9214,6 @@ Repeat connection request?</source>
</trans-unit>
<trans-unit id="requested to connect" xml:space="preserve">
<source>requested to connect</source>
<target>solicitado para conectar</target>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="saved" xml:space="preserve">
@@ -9519,9 +9492,9 @@ last received msg: %2$@</source>
<target>SimpleX</target>
<note>Bundle name</note>
</trans-unit>
<trans-unit id="NSCameraUsageDescription" xml:space="preserve" approved="no">
<trans-unit id="NSCameraUsageDescription" xml:space="preserve">
<source>SimpleX needs camera access to scan QR codes to connect to other users and for video calls.</source>
<target state="translated">SimpleX necesita acceso a la cámara para escanear códigos QR para conectarse con otros usuarios y para las videollamadas.</target>
<target>SimpleX necesita acceso a la cámara para escanear códigos QR para conectarse con otros usuarios y para las videollamadas.</target>
<note>Privacy - Camera Usage Description</note>
</trans-unit>
<trans-unit id="NSFaceIDUsageDescription" xml:space="preserve">
@@ -9534,9 +9507,9 @@ last received msg: %2$@</source>
<target>SimpleX utiliza el acceso a la red local para abrir el perfil de chat en la aplicación de ordenador en la misma red.</target>
<note>Privacy - Local Network Usage Description</note>
</trans-unit>
<trans-unit id="NSMicrophoneUsageDescription" xml:space="preserve" approved="no">
<trans-unit id="NSMicrophoneUsageDescription" xml:space="preserve">
<source>SimpleX needs microphone access for audio and video calls, and to record voice messages.</source>
<target state="translated">SimpleX necesita acceso al micrófono para las llamadas de audio, vídeo y para grabar mensajes de voz.</target>
<target>SimpleX necesita acceso al micrófono para las llamadas de audio, vídeo y para grabar mensajes de voz.</target>
<note>Privacy - Microphone Usage Description</note>
</trans-unit>
<trans-unit id="NSPhotoLibraryAddUsageDescription" xml:space="preserve">
@@ -707,8 +707,8 @@
<target>Kaikki tiedot poistetaan, kun se syötetään.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is kept private on your device." xml:space="preserve">
<source>All data is kept private on your device.</source>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All group members will remain connected." xml:space="preserve">
@@ -745,8 +745,8 @@
<target>Toutes les données sont effacées lorsqu'il est saisi.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is kept private on your device." xml:space="preserve">
<source>All data is kept private on your device.</source>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<target>Toutes les données restent confinées dans votre appareil.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -530,9 +530,9 @@
&lt;p&gt;&lt;a href="%@"&gt;Csatlakozzon hozzám a SimpleX Chaten keresztül&lt;/a&gt;&lt;/p&gt;</target>
<note>email text</note>
</trans-unit>
<trans-unit id="A few more things" xml:space="preserve" approved="no">
<trans-unit id="A few more things" xml:space="preserve">
<source>A few more things</source>
<target state="translated">Néhány további dolog</target>
<target>Még néhány dolog</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="A new contact" xml:space="preserve">
@@ -574,12 +574,11 @@
</trans-unit>
<trans-unit id="About SimpleX Chat" xml:space="preserve">
<source>About SimpleX Chat</source>
<target>SimpleX Chat névjegye</target>
<target>A SimpleX Chatről</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="About operators" xml:space="preserve">
<source>About operators</source>
<target>Az üzemeltetőkről</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Accent" xml:space="preserve">
@@ -660,9 +659,9 @@
<target>Kiszolgáló hozzáadása QR-kód beolvasásával.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add team members" xml:space="preserve" approved="no">
<trans-unit id="Add team members" xml:space="preserve">
<source>Add team members</source>
<target state="translated">Kollégák hozzáadása</target>
<target>Csapattagok hozzáadása</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add to another device" xml:space="preserve">
@@ -675,9 +674,9 @@
<target>Üdvözlőüzenet hozzáadása</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add your team members to the conversations." xml:space="preserve" approved="no">
<trans-unit id="Add your team members to the conversations." xml:space="preserve">
<source>Add your team members to the conversations.</source>
<target state="translated">Adja hozzá a kollégáit a beszélgetésekhez.</target>
<target>Adja hozzá csapattagjait a beszélgetésekhez.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Added media &amp; file servers" xml:space="preserve">
@@ -760,9 +759,9 @@
<target>A jelkód megadása után az összes adat törlésre kerül.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is kept private on your device." xml:space="preserve" approved="no">
<source>All data is kept private on your device.</source>
<target state="translated">Az összes adat privát módon van tárolva az Ön eszközén.</target>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<target>Az összes adat biztonságban van az eszközén.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All group members will remain connected." xml:space="preserve">
@@ -770,9 +769,9 @@
<target>Az összes csoporttag kapcsolatban marad.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All messages and files are sent **end-to-end encrypted**, with post-quantum security in direct messages." xml:space="preserve" approved="no">
<trans-unit id="All messages and files are sent **end-to-end encrypted**, with post-quantum security in direct messages." xml:space="preserve">
<source>All messages and files are sent **end-to-end encrypted**, with post-quantum security in direct messages.</source>
<target state="translated">Az összes üzenet és fájl **végpontok közötti titkosítással**, a közvetlen üzenetek továbbá kvantumálló titkosítással is rendelkeznek.</target>
<target>Az összes üzenetet és fájlt **végpontok közötti titkosítással** küldi, a közvetlen üzenetekben pedig kvantumrezisztens biztonsággal.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All messages will be deleted - this cannot be undone!" xml:space="preserve">
@@ -960,9 +959,9 @@
<target>Bárki üzemeltethet kiszolgálókat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App build: %@" xml:space="preserve" approved="no">
<trans-unit id="App build: %@" xml:space="preserve">
<source>App build: %@</source>
<target state="translated">Az alkalmazás összeállítási száma: %@</target>
<target>Az alkalmazás build száma: %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App data migration" xml:space="preserve">
@@ -1353,7 +1352,7 @@
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<target>Csevegési profilok megváltoztatása</target>
<target>Felhasználói profilok megváltoztatása</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
@@ -2887,9 +2886,9 @@ Ez az Ön egyszer használható meghívó-hivatkozása!</target>
<target>Titkosított üzenet: váratlan hiba</target>
<note>notification</note>
</trans-unit>
<trans-unit id="Encryption re-negotiation error" xml:space="preserve" approved="no">
<trans-unit id="Encryption re-negotiation error" xml:space="preserve">
<source>Encryption re-negotiation error</source>
<target state="translated">Titkosítás-újraegyeztetési hiba</target>
<target>Titkosítás újraegyeztetési hiba</target>
<note>message decrypt error item</note>
</trans-unit>
<trans-unit id="Encryption re-negotiation failed." xml:space="preserve">
@@ -3526,7 +3525,7 @@ Ez az Ön egyszer használható meghívó-hivatkozása!</target>
</trans-unit>
<trans-unit id="For example, if your contact receives messages via a SimpleX Chat server, your app will deliver them via a Flux server." xml:space="preserve">
<source>For example, if your contact receives messages via a SimpleX Chat server, your app will deliver them via a Flux server.</source>
<target>Például, ha az Ön ismerőse egy SimpleX Chat-kiszolgálón keresztül fogadja az üzeneteket, az Ön alkalmazása egy Flux-kiszolgálón keresztül fogja azokat kézbesíteni.</target>
<target>Ha például az ismerőse a SimpleX Chat kiszolgálón keresztül fogadja az üzeneteket, az Ön alkalmazása a Flux egyik kiszolgálóját használja a kézbesítéshez.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="For private routing" xml:space="preserve">
@@ -4610,9 +4609,9 @@ Ez az Ön hivatkozása a(z) %@ nevű csoporthoz!</target>
<target>Az üzeneteket, fájlokat és hívásokat **végpontok közötti titkosítással**, sérülés utáni titkosság-védelemmel és -helyreállítással, továbbá visszautasítással védi.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." xml:space="preserve" approved="no">
<trans-unit id="Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." xml:space="preserve">
<source>Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.</source>
<target state="translated">Az üzenetek, fájlok és hívások **végpontok közötti kvantumálló titkosítással** sérülés utáni titkosságvédelemmel, visszautasítással és feltörés utáni helyreállítással vannak védve.</target>
<target>Az üzeneteket, fájlokat és hívásokat **végpontok közötti kvantumrezisztens titkosítással**, sérülés utáni titkosság-védelemmel és -helyreállítással, továbbá visszautasítással védi.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate device" xml:space="preserve">
@@ -5571,7 +5570,7 @@ Hiba: %@</target>
</trans-unit>
<trans-unit id="Protect IP address" xml:space="preserve">
<source>Protect IP address</source>
<target>IP-cím védelme</target>
<target>IP-cím védelem</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Protect app screen" xml:space="preserve">
@@ -5626,9 +5625,9 @@ Engedélyezze a „Beállítások -&gt; Hálózat és kiszolgálók” menüben.
<target>Push-kiszolgáló</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Quantum resistant encryption" xml:space="preserve" approved="no">
<trans-unit id="Quantum resistant encryption" xml:space="preserve">
<source>Quantum resistant encryption</source>
<target state="translated">Kvantumálló titkosítás</target>
<target>Kvantumrezisztens titkosítás</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Rate the app" xml:space="preserve">
@@ -6716,7 +6715,6 @@ Engedélyezze a „Beállítások -&gt; Hálózat és kiszolgálók” menüben.
</trans-unit>
<trans-unit id="SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app." xml:space="preserve">
<source>SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app.</source>
<target>A SimpleX Chat és a Flux megállapodást kötött arról, hogy a Flux által üzemeltetett kiszolgálókat beépítik az alkalmazásba.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SimpleX Chat security was audited by Trail of Bits." xml:space="preserve">
@@ -7210,7 +7208,7 @@ Ez valamilyen hiba, vagy sérült kapcsolat esetén fordulhat elő.</target>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<target>Ugyanezek a feltételek lesznek elfogadva a következő üzemeltetőre is: **%@**.</target>
<target>Ugyanezek a feltételek vonatkoznak a következő üzemeltetőre is: **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
@@ -7233,14 +7231,14 @@ Ez valamilyen hiba, vagy sérült kapcsolat esetén fordulhat elő.</target>
<target>A feladó NEM fog értesítést kapni</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The servers for new connections of your current chat profile **%@**." xml:space="preserve" approved="no">
<trans-unit id="The servers for new connections of your current chat profile **%@**." xml:space="preserve">
<source>The servers for new connections of your current chat profile **%@**.</source>
<target state="translated">Az Ön jelenlegi **%@** nevű csevegő-profilhoz tartozó új kapcsolatok kiszolgálói.</target>
<target>A jelenlegi csevegési profilhoz tartozó új kapcsolatok kiszolgálói **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The servers for new files of your current chat profile **%@**." xml:space="preserve" approved="no">
<trans-unit id="The servers for new files of your current chat profile **%@**." xml:space="preserve">
<source>The servers for new files of your current chat profile **%@**.</source>
<target state="translated">Az Ön jelenlegi **%@** nevű csevegő-profiljához tartozó új fájlok kiszolgálói.</target>
<target>Az Ön jelenlegi **%@** nevű csevegőprofiljához tartozó új fájlok kiszolgálói.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The text you pasted is not a SimpleX link." xml:space="preserve">
@@ -7263,9 +7261,9 @@ Ez valamilyen hiba, vagy sérült kapcsolat esetén fordulhat elő.</target>
<target>Ezek a feltételek lesznek elfogadva a következő számára is: **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="These settings are for your current profile **%@**." xml:space="preserve" approved="no">
<trans-unit id="These settings are for your current profile **%@**." xml:space="preserve">
<source>These settings are for your current profile **%@**.</source>
<target state="translated">Ezek a beállítások csak az Ön jelenlegi **%@** nevű csevegő-profiljára vonatkoznak.</target>
<target>Ezek a beállítások csak a jelenlegi (**%@**) profiljára vonatkoznak.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="They can be overridden in contact and group settings." xml:space="preserve">
@@ -7293,9 +7291,9 @@ Ez valamilyen hiba, vagy sérült kapcsolat esetén fordulhat elő.</target>
<target>Ez a csevegés végpontok közötti titkosítással védett.</target>
<note>E2EE info chat item</note>
</trans-unit>
<trans-unit id="This chat is protected by quantum resistant end-to-end encryption." xml:space="preserve" approved="no">
<trans-unit id="This chat is protected by quantum resistant end-to-end encryption." xml:space="preserve">
<source>This chat is protected by quantum resistant end-to-end encryption.</source>
<target state="translated">Ez a csevegés végpontok közötti kvantumálló tikosítással védett.</target>
<target>Ez a csevegés végpontok közötti kvantumrezisztens tikosítással védett.</target>
<note>E2EE info chat item</note>
</trans-unit>
<trans-unit id="This device name" xml:space="preserve">
@@ -7333,9 +7331,9 @@ Ez valamilyen hiba, vagy sérült kapcsolat esetén fordulhat elő.</target>
<target>Ezt a hivatkozást egy másik hordozható eszközön már használták, hozzon létre egy új hivatkozást a számítógépén.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="This setting applies to messages in your current chat profile **%@**." xml:space="preserve" approved="no">
<trans-unit id="This setting applies to messages in your current chat profile **%@**." xml:space="preserve">
<source>This setting applies to messages in your current chat profile **%@**.</source>
<target state="translated">Ez a beállítás csak az Ön jelenlegi **%@** nevű csevegő-profiljában lévő üzenetekre vonatkozik.</target>
<target>Ez a beállítás csak a jelenlegi (**%@**) profiljában lévő üzenetekre vonatkozik.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Title" xml:space="preserve">
@@ -7832,9 +7830,9 @@ A kapcsolódáshoz kérje meg az ismerősét, hogy hozzon létre egy másik kapc
<target>Böngészőn keresztül</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Via secure quantum resistant protocol." xml:space="preserve" approved="no">
<trans-unit id="Via secure quantum resistant protocol." xml:space="preserve">
<source>Via secure quantum resistant protocol.</source>
<target state="translated">Biztonságos kvantumálló-protokollon keresztül.</target>
<target>Biztonságos kvantumrezisztens-protokollon keresztül.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Video call" xml:space="preserve">
@@ -7927,9 +7925,9 @@ A kapcsolódáshoz kérje meg az ismerősét, hogy hozzon létre egy másik kapc
<target>Várakozás a videóra</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wallpaper accent" xml:space="preserve" approved="no">
<trans-unit id="Wallpaper accent" xml:space="preserve">
<source>Wallpaper accent</source>
<target state="translated">Háttérkép kiemelőszíne</target>
<target>Háttérkép kiemelés</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wallpaper background" xml:space="preserve">
@@ -8077,9 +8075,9 @@ A kapcsolódáshoz kérje meg az ismerősét, hogy hozzon létre egy másik kapc
<target>Már van egy csevegési profil ugyanezzel a megjelenített névvel. Válasszon egy másik nevet.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You are already connected to %@." xml:space="preserve" approved="no">
<trans-unit id="You are already connected to %@." xml:space="preserve">
<source>You are already connected to %@.</source>
<target state="translated">Ön már kapcsolódva van a következőhöz: %@.</target>
<target>Ön már kapcsolódva van ehhez: %@.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You are already connected with %@." xml:space="preserve">
@@ -8087,9 +8085,9 @@ A kapcsolódáshoz kérje meg az ismerősét, hogy hozzon létre egy másik kapc
<target>Ön már kapcsolódva van vele: %@.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You are already connecting to %@." xml:space="preserve" approved="no">
<trans-unit id="You are already connecting to %@." xml:space="preserve">
<source>You are already connecting to %@.</source>
<target state="translated">Már folyamatban van a kapcsolódás a következőhöz: %@.</target>
<target>Már folyamatban van a kapcsolódás ehhez: %@.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You are already connecting via this one-time link!" xml:space="preserve">
@@ -8156,7 +8154,7 @@ Csatlakozáskérés megismétlése?</target>
</trans-unit>
<trans-unit id="You can configure servers via settings." xml:space="preserve">
<source>You can configure servers via settings.</source>
<target>A kiszolgálókat a „Hálózat és kiszolgálók” menüben konfigurálhatja.</target>
<target>A kiszolgálókat a beállításokon keresztül konfigurálhatja.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can create it later" xml:space="preserve">
@@ -8206,7 +8204,7 @@ Csatlakozáskérés megismétlése?</target>
</trans-unit>
<trans-unit id="You can set lock screen notification preview via settings." xml:space="preserve">
<source>You can set lock screen notification preview via settings.</source>
<target>A lezárási képernyő értesítési előnézetét az „Értesítések” menüben állíthatja be.</target>
<target>A beállításokon keresztül beállíthatja a lezárási képernyő értesítési előnézetét.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can share a link or a QR code - anybody will be able to join the group. You won't lose members of the group if you later delete it." xml:space="preserve">
@@ -8553,7 +8551,6 @@ Kapcsolatkérés megismétlése?</target>
</trans-unit>
<trans-unit id="accepted invitation" xml:space="preserve">
<source>accepted invitation</source>
<target>elfogadott meghívó</target>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="admin" xml:space="preserve">
@@ -8781,9 +8778,9 @@ Kapcsolatkérés megismétlése?</target>
<target>egyedi</target>
<note>dropdown time picker choice</note>
</trans-unit>
<trans-unit id="database version is newer than the app, but no down migration for: %@" xml:space="preserve" approved="no">
<trans-unit id="database version is newer than the app, but no down migration for: %@" xml:space="preserve">
<source>database version is newer than the app, but no down migration for: %@</source>
<target state="translated">az adatbázis verziója újabb, mint az alkalmazásé, de nincs visszafelé átköltöztetés a következőhöz: %@</target>
<target>az adatbázis verziója újabb, mint az alkalmazásé, de nincs visszafelé átköltöztetés ehhez: %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="days" xml:space="preserve">
@@ -8891,24 +8888,24 @@ Kapcsolatkérés megismétlése?</target>
<target>titkosítás rendben vele: %@</target>
<note>chat item text</note>
</trans-unit>
<trans-unit id="encryption re-negotiation allowed" xml:space="preserve" approved="no">
<trans-unit id="encryption re-negotiation allowed" xml:space="preserve">
<source>encryption re-negotiation allowed</source>
<target state="translated">titkosítás-újraegyeztetés engedélyezve</target>
<target>titkosítás újraegyeztetés engedélyezve</target>
<note>chat item text</note>
</trans-unit>
<trans-unit id="encryption re-negotiation allowed for %@" xml:space="preserve" approved="no">
<trans-unit id="encryption re-negotiation allowed for %@" xml:space="preserve">
<source>encryption re-negotiation allowed for %@</source>
<target state="translated">a titkosítás újraegyeztetése engedélyezve van a következőhöz: %@</target>
<target>titkosítás újraegyeztetés engedélyezve vele: %@</target>
<note>chat item text</note>
</trans-unit>
<trans-unit id="encryption re-negotiation required" xml:space="preserve" approved="no">
<trans-unit id="encryption re-negotiation required" xml:space="preserve">
<source>encryption re-negotiation required</source>
<target state="translated">titkosítás-újraegyeztetés szükséges</target>
<target>titkosítás újraegyeztetés szükséges</target>
<note>chat item text</note>
</trans-unit>
<trans-unit id="encryption re-negotiation required for %@" xml:space="preserve" approved="no">
<trans-unit id="encryption re-negotiation required for %@" xml:space="preserve">
<source>encryption re-negotiation required for %@</source>
<target state="translated">a titkosítás újraegyeztetése szükséges a következőhöz: %@</target>
<target>titkosítás újraegyeztetés szükséges %@ számára</target>
<note>chat item text</note>
</trans-unit>
<trans-unit id="ended" xml:space="preserve">
@@ -9193,9 +9190,9 @@ Kapcsolatkérés megismétlése?</target>
<target>ponttól-pontig</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="quantum resistant e2e encryption" xml:space="preserve" approved="no">
<trans-unit id="quantum resistant e2e encryption" xml:space="preserve">
<source>quantum resistant e2e encryption</source>
<target state="translated">végpontok közötti kvantumálló titkosítás</target>
<target>végpontok közötti kvantumrezisztens titkosítás</target>
<note>chat item text</note>
</trans-unit>
<trans-unit id="received answer…" xml:space="preserve">
@@ -9240,7 +9237,6 @@ Kapcsolatkérés megismétlése?</target>
</trans-unit>
<trans-unit id="requested to connect" xml:space="preserve">
<source>requested to connect</source>
<target>kérelmezve a kapcsolódáshoz</target>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="saved" xml:space="preserve">
@@ -577,9 +577,8 @@
<target>Riguardo SimpleX Chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="About operators" xml:space="preserve" approved="no">
<trans-unit id="About operators" xml:space="preserve">
<source>About operators</source>
<target state="translated">Info sugli operatori</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Accent" xml:space="preserve">
@@ -760,8 +759,8 @@
<target>Tutti i dati vengono cancellati quando inserito.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is kept private on your device." xml:space="preserve">
<source>All data is kept private on your device.</source>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<target>Tutti i dati sono privati, nel tuo dispositivo.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -1092,12 +1091,12 @@
</trans-unit>
<trans-unit id="Auto-accept contact requests" xml:space="preserve">
<source>Auto-accept contact requests</source>
<target>Auto-accetta le richieste di contatto</target>
<target>Auto-accetta richieste di contatto</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Auto-accept images" xml:space="preserve">
<source>Auto-accept images</source>
<target>Auto-accetta le immagini</target>
<target>Auto-accetta immagini</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Auto-accept settings" xml:space="preserve">
@@ -1217,7 +1216,7 @@
</trans-unit>
<trans-unit id="Blur media" xml:space="preserve">
<source>Blur media</source>
<target>Sfocatura dei file multimediali</target>
<target>Sfocatura file multimediali</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Both you and your contact can add message reactions." xml:space="preserve">
@@ -4502,7 +4501,7 @@ Questo è il tuo link per il gruppo %@!</target>
</trans-unit>
<trans-unit id="Message draft" xml:space="preserve">
<source>Message draft</source>
<target>Bozza del messaggio</target>
<target>Bozza dei messaggi</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message forwarded" xml:space="preserve">
@@ -5989,12 +5988,12 @@ Attivalo nelle impostazioni *Rete e server*.</target>
</trans-unit>
<trans-unit id="Review conditions" xml:space="preserve">
<source>Review conditions</source>
<target>Leggi le condizioni</target>
<target>Esamina le condizioni</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Review later" xml:space="preserve">
<source>Review later</source>
<target>Leggi più tardi</target>
<target>Esamina più tardi</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Revoke" xml:space="preserve">
@@ -6290,7 +6289,7 @@ Attivalo nelle impostazioni *Rete e server*.</target>
</trans-unit>
<trans-unit id="Send link previews" xml:space="preserve">
<source>Send link previews</source>
<target>Invia le anteprime dei link</target>
<target>Invia anteprime dei link</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send live message" xml:space="preserve">
@@ -6611,7 +6610,7 @@ Attivalo nelle impostazioni *Rete e server*.</target>
</trans-unit>
<trans-unit id="Share SimpleX address on social media." xml:space="preserve">
<source>Share SimpleX address on social media.</source>
<target>Condividi l'indirizzo SimpleX sui social media.</target>
<target>Condividi indirizzo SimpleX sui social media.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share address" xml:space="preserve">
@@ -6714,9 +6713,8 @@ Attivalo nelle impostazioni *Rete e server*.</target>
<target>Indirizzo SimpleX</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app." xml:space="preserve" approved="no">
<trans-unit id="SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app." xml:space="preserve">
<source>SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app.</source>
<target state="translated">SimpleX Chat e Flux hanno concluso un accordo per includere server gestiti da Flux nell'app.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SimpleX Chat security was audited by Trail of Bits." xml:space="preserve">
@@ -7033,7 +7031,7 @@ Attivalo nelle impostazioni *Rete e server*.</target>
</trans-unit>
<trans-unit id="Tap Create SimpleX address in the menu to create it later." xml:space="preserve">
<source>Tap Create SimpleX address in the menu to create it later.</source>
<target>Tocca Crea indirizzo SimpleX nel menu per crearlo più tardi.</target>
<target>Tocca "Crea indirizzo SimpleX" nel menu per crearlo più tardi.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap button " xml:space="preserve">
@@ -8551,9 +8549,8 @@ Ripetere la richiesta di connessione?</target>
<target>chiamata accettata</target>
<note>call status</note>
</trans-unit>
<trans-unit id="accepted invitation" xml:space="preserve" approved="no">
<trans-unit id="accepted invitation" xml:space="preserve">
<source>accepted invitation</source>
<target state="translated">invito accettato</target>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="admin" xml:space="preserve">
@@ -9238,9 +9235,8 @@ Ripetere la richiesta di connessione?</target>
<target>ti ha rimosso/a</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="requested to connect" xml:space="preserve" approved="no">
<trans-unit id="requested to connect" xml:space="preserve">
<source>requested to connect</source>
<target state="translated">richiesto di connettersi</target>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="saved" xml:space="preserve">
@@ -724,8 +724,8 @@
<target>入力するとすべてのデータが消去されます。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is kept private on your device." xml:space="preserve">
<source>All data is kept private on your device.</source>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All group members will remain connected." xml:space="preserve">
@@ -2478,9 +2478,9 @@ This is your own one-time link!</source>
<source>Do not use credentials with proxy.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Don't create address" xml:space="preserve" approved="no">
<trans-unit id="Don't create address" xml:space="preserve">
<source>Don't create address</source>
<target state="translated">アドレスを作成しない</target>
<target>アドレスを作成しないでください</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Don't enable" xml:space="preserve">
@@ -3760,9 +3760,9 @@ More improvements are coming soon!</source>
<target>インストール [ターミナル用SimpleX Chat](https://github.com/simplex-chat/simplex-chat)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Instant" xml:space="preserve" approved="no">
<trans-unit id="Instant" xml:space="preserve">
<source>Instant</source>
<target state="translated">即時</target>
<target>すぐに</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Instant push notifications will be hidden!&#10;" xml:space="preserve">
@@ -4298,9 +4298,8 @@ This is your link for group %@!</source>
<source>Migrate device</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate from another device" xml:space="preserve" approved="no">
<trans-unit id="Migrate from another device" xml:space="preserve">
<source>Migrate from another device</source>
<target state="translated">別の端末から移行</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate here" xml:space="preserve">
@@ -5084,9 +5083,8 @@ Error: %@</source>
<source>Private message routing 🚀</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Private notes" xml:space="preserve" approved="no">
<trans-unit id="Private notes" xml:space="preserve">
<source>Private notes</source>
<target state="translated">プライベートノート</target>
<note>name of notes to self</note>
</trans-unit>
<trans-unit id="Private routing" xml:space="preserve">
@@ -7539,9 +7537,8 @@ Repeat join request?</source>
<target>ユーザープロファイルを右にスワイプすると、非表示またはミュートにすることができます。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can make it visible to your SimpleX contacts via Settings." xml:space="preserve" approved="no">
<trans-unit id="You can make it visible to your SimpleX contacts via Settings." xml:space="preserve">
<source>You can make it visible to your SimpleX contacts via Settings.</source>
<target state="translated">設定でSimpleXの連絡先に表示させることができます。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can now chat with %@" xml:space="preserve">
@@ -579,7 +579,6 @@
</trans-unit>
<trans-unit id="About operators" xml:space="preserve">
<source>About operators</source>
<target>Over operatoren</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Accent" xml:space="preserve">
@@ -760,8 +759,8 @@
<target>Alle gegevens worden bij het invoeren gewist.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is kept private on your device." xml:space="preserve">
<source>All data is kept private on your device.</source>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<target>Alle gegevens zijn privé op uw apparaat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -8553,7 +8552,6 @@ Verbindingsverzoek herhalen?</target>
</trans-unit>
<trans-unit id="accepted invitation" xml:space="preserve">
<source>accepted invitation</source>
<target>geaccepteerde uitnodiging</target>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="admin" xml:space="preserve">
@@ -9240,7 +9238,6 @@ Verbindingsverzoek herhalen?</target>
</trans-unit>
<trans-unit id="requested to connect" xml:space="preserve">
<source>requested to connect</source>
<target>gevraagd om verbinding te maken</target>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="saved" xml:space="preserve">
@@ -745,8 +745,8 @@
<target>Wszystkie dane są usuwane po jego wprowadzeniu.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is kept private on your device." xml:space="preserve">
<source>All data is kept private on your device.</source>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<target>Wszystkie dane są prywatne na Twoim urządzeniu.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -5425,8 +5425,8 @@ Isso pode acontecer por causa de algum bug ou quando a conexão está comprometi
<source>Advanced settings</source>
<target state="translated">Configurações avançadas</target>
</trans-unit>
<trans-unit id="All data is kept private on your device." xml:space="preserve" approved="no">
<source>All data is kept private on your device.</source>
<trans-unit id="All data is private to your device." xml:space="preserve" approved="no">
<source>All data is private to your device.</source>
<target state="translated">Toda informação é privada em seu dispositivo.</target>
</trans-unit>
<trans-unit id="All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays." xml:space="preserve" approved="no">
@@ -384,7 +384,7 @@
</trans-unit>
<trans-unit id="**Scan / Paste link**: to connect via a link you received." xml:space="preserve">
<source>**Scan / Paste link**: to connect via a link you received.</source>
<target>**Сканировать / Вставить ссылку**: чтобы соединиться через полученную ссылку.</target>
<target>**Сканировать / Вставить ссылку**: чтобы соединится через полученную ссылку.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Warning**: Instant push notifications require passphrase saved in Keychain." xml:space="preserve">
@@ -760,8 +760,8 @@
<target>Все данные удаляются при его вводе.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is kept private on your device." xml:space="preserve">
<source>All data is kept private on your device.</source>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<target>Все данные хранятся только на вашем устройстве.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -5582,7 +5582,7 @@ Error: %@</source>
<source>Protect your IP address from the messaging relays chosen by your contacts.
Enable in *Network &amp; servers* settings.</source>
<target>Защитите ваш IP адрес от серверов сообщений, выбранных Вашими контактами.
Включите в настройках *Сети и серверов*.</target>
Включите в настройках *Сеть и серверы*.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Protect your chat profiles with a password!" xml:space="preserve">
@@ -8150,7 +8150,7 @@ Repeat join request?</source>
</trans-unit>
<trans-unit id="You can configure operators in Network &amp; servers settings." xml:space="preserve">
<source>You can configure operators in Network &amp; servers settings.</source>
<target>Вы можете настроить операторов в настройках Сети и серверов.</target>
<target>Вы можете настроить операторов в настройках Сеть и серверы.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can configure servers via settings." xml:space="preserve">
@@ -699,8 +699,8 @@
<target>ข้อมูลทั้งหมดจะถูกลบเมื่อถูกป้อน</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is kept private on your device." xml:space="preserve">
<source>All data is kept private on your device.</source>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All group members will remain connected." xml:space="preserve">
@@ -745,8 +745,8 @@
<target>Kullanıldığında bütün veriler silinir.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is kept private on your device." xml:space="preserve">
<source>All data is kept private on your device.</source>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<target>Tüm veriler cihazınıza özeldir.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -756,8 +756,8 @@
<target>Всі дані стираються при введенні.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is kept private on your device." xml:space="preserve">
<source>All data is kept private on your device.</source>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<target>Всі дані є приватними для вашого пристрою.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -739,8 +739,8 @@
<target>所有数据在输入后将被删除。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is kept private on your device." xml:space="preserve">
<source>All data is kept private on your device.</source>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<target>所有数据都是您设备的私有数据.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
+28 -18
View File
@@ -156,6 +156,11 @@
6442E0BE2880182D00CEC0F9 /* GroupChatInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6442E0BD2880182D00CEC0F9 /* GroupChatInfoView.swift */; };
64466DCC29FFE3E800E3D48D /* MailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64466DCB29FFE3E800E3D48D /* MailView.swift */; };
6448BBB628FA9D56000D2AB9 /* GroupLinkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6448BBB528FA9D56000D2AB9 /* GroupLinkView.swift */; };
6449333A2AF8E51000AC506E /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 644933352AF8E51000AC506E /* libgmpxx.a */; };
6449333B2AF8E51000AC506E /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 644933362AF8E51000AC506E /* libgmp.a */; };
6449333C2AF8E51000AC506E /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 644933372AF8E51000AC506E /* libffi.a */; };
6449333D2AF8E51000AC506E /* libHSsimplex-chat-5.4.0.3-EnhmkSQK6HvJ11g1uZERg8-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 644933382AF8E51000AC506E /* libHSsimplex-chat-5.4.0.3-EnhmkSQK6HvJ11g1uZERg8-ghc9.6.3.a */; };
6449333E2AF8E51000AC506E /* libHSsimplex-chat-5.4.0.3-EnhmkSQK6HvJ11g1uZERg8.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 644933392AF8E51000AC506E /* libHSsimplex-chat-5.4.0.3-EnhmkSQK6HvJ11g1uZERg8.a */; };
644EFFDE292BCD9D00525D5B /* ComposeVoiceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 644EFFDD292BCD9D00525D5B /* ComposeVoiceView.swift */; };
644EFFE0292CFD7F00525D5B /* CIVoiceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 644EFFDF292CFD7F00525D5B /* CIVoiceView.swift */; };
644EFFE2292D089800525D5B /* FramedCIVoiceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 644EFFE1292D089800525D5B /* FramedCIVoiceView.swift */; };
@@ -167,9 +172,9 @@
648010AB281ADD15009009B9 /* CIFileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 648010AA281ADD15009009B9 /* CIFileView.swift */; };
648679AB2BC96A74006456E7 /* ChatItemForwardingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 648679AA2BC96A74006456E7 /* ChatItemForwardingView.swift */; };
649B28DD2CFE07CF00536B68 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28D82CFE07CF00536B68 /* libffi.a */; };
649B28DE2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28D92CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E-ghc9.6.3.a */; };
649B28DE2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28D92CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo-ghc9.6.3.a */; };
649B28DF2CFE07CF00536B68 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28DA2CFE07CF00536B68 /* libgmpxx.a */; };
649B28E02CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28DB2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E.a */; };
649B28E02CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28DB2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo.a */; };
649B28E12CFE07CF00536B68 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28DC2CFE07CF00536B68 /* libgmp.a */; };
649BCDA0280460FD00C3A862 /* ComposeImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649BCD9F280460FD00C3A862 /* ComposeImageView.swift */; };
649BCDA22805D6EF00C3A862 /* CIImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649BCDA12805D6EF00C3A862 /* CIImageView.swift */; };
@@ -504,6 +509,11 @@
6442E0BD2880182D00CEC0F9 /* GroupChatInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupChatInfoView.swift; sourceTree = "<group>"; };
64466DCB29FFE3E800E3D48D /* MailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MailView.swift; sourceTree = "<group>"; };
6448BBB528FA9D56000D2AB9 /* GroupLinkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupLinkView.swift; sourceTree = "<group>"; };
644933352AF8E51000AC506E /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = "<group>"; };
644933362AF8E51000AC506E /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = "<group>"; };
644933372AF8E51000AC506E /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = "<group>"; };
644933382AF8E51000AC506E /* libHSsimplex-chat-5.4.0.3-EnhmkSQK6HvJ11g1uZERg8-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.4.0.3-EnhmkSQK6HvJ11g1uZERg8-ghc9.6.3.a"; sourceTree = "<group>"; };
644933392AF8E51000AC506E /* libHSsimplex-chat-5.4.0.3-EnhmkSQK6HvJ11g1uZERg8.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.4.0.3-EnhmkSQK6HvJ11g1uZERg8.a"; sourceTree = "<group>"; };
644EFFDD292BCD9D00525D5B /* ComposeVoiceView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeVoiceView.swift; sourceTree = "<group>"; };
644EFFDF292CFD7F00525D5B /* CIVoiceView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIVoiceView.swift; sourceTree = "<group>"; };
644EFFE1292D089800525D5B /* FramedCIVoiceView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FramedCIVoiceView.swift; sourceTree = "<group>"; };
@@ -516,9 +526,9 @@
648679AA2BC96A74006456E7 /* ChatItemForwardingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatItemForwardingView.swift; sourceTree = "<group>"; };
6493D667280ED77F007A76FB /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
649B28D82CFE07CF00536B68 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = "<group>"; };
649B28D92CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E-ghc9.6.3.a"; sourceTree = "<group>"; };
649B28D92CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo-ghc9.6.3.a"; sourceTree = "<group>"; };
649B28DA2CFE07CF00536B68 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = "<group>"; };
649B28DB2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E.a"; sourceTree = "<group>"; };
649B28DB2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo.a"; sourceTree = "<group>"; };
649B28DC2CFE07CF00536B68 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = "<group>"; };
649BCD9F280460FD00C3A862 /* ComposeImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeImageView.swift; sourceTree = "<group>"; };
649BCDA12805D6EF00C3A862 /* CIImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIImageView.swift; sourceTree = "<group>"; };
@@ -671,9 +681,9 @@
5CE2BA93284534B000EC33A6 /* libiconv.tbd in Frameworks */,
649B28E12CFE07CF00536B68 /* libgmp.a in Frameworks */,
5CE2BA94284534BB00EC33A6 /* libz.tbd in Frameworks */,
649B28E02CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E.a in Frameworks */,
649B28E02CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo.a in Frameworks */,
CE38A29C2C3FCD72005ED185 /* SwiftyGif in Frameworks */,
649B28DE2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E-ghc9.6.3.a in Frameworks */,
649B28DE2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo-ghc9.6.3.a in Frameworks */,
649B28DD2CFE07CF00536B68 /* libffi.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -754,8 +764,8 @@
649B28D82CFE07CF00536B68 /* libffi.a */,
649B28DC2CFE07CF00536B68 /* libgmp.a */,
649B28DA2CFE07CF00536B68 /* libgmpxx.a */,
649B28D92CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E-ghc9.6.3.a */,
649B28DB2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E.a */,
649B28D92CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo-ghc9.6.3.a */,
649B28DB2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.6-5lGV6gtq9gSDlEsE8DHXYo.a */,
);
path = Libraries;
sourceTree = "<group>";
@@ -1931,7 +1941,7 @@
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 254;
CURRENT_PROJECT_VERSION = 253;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
@@ -1980,7 +1990,7 @@
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 254;
CURRENT_PROJECT_VERSION = 253;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
@@ -2021,7 +2031,7 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 254;
CURRENT_PROJECT_VERSION = 253;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
@@ -2041,7 +2051,7 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 254;
CURRENT_PROJECT_VERSION = 253;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
@@ -2066,7 +2076,7 @@
CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 254;
CURRENT_PROJECT_VERSION = 253;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
GCC_OPTIMIZATION_LEVEL = s;
@@ -2103,7 +2113,7 @@
CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 254;
CURRENT_PROJECT_VERSION = 253;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
ENABLE_CODE_COVERAGE = NO;
@@ -2140,7 +2150,7 @@
CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES;
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 254;
CURRENT_PROJECT_VERSION = 253;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
DYLIB_COMPATIBILITY_VERSION = 1;
@@ -2191,7 +2201,7 @@
CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES;
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 254;
CURRENT_PROJECT_VERSION = 253;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
DYLIB_COMPATIBILITY_VERSION = 1;
@@ -2242,7 +2252,7 @@
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CODE_SIGN_ENTITLEMENTS = "SimpleX SE/SimpleX SE.entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 254;
CURRENT_PROJECT_VERSION = 253;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
@@ -2276,7 +2286,7 @@
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CODE_SIGN_ENTITLEMENTS = "SimpleX SE/SimpleX SE.entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 254;
CURRENT_PROJECT_VERSION = 253;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
+3 -84
View File
@@ -343,9 +343,6 @@
/* No comment provided by engineer. */
"Abort changing address?" = "Wechsel der Empfängeradresse beenden?";
/* No comment provided by engineer. */
"About operators" = "Über Betreiber";
/* No comment provided by engineer. */
"About SimpleX Chat" = "Über SimpleX Chat";
@@ -379,9 +376,6 @@
/* No comment provided by engineer. */
"Accepted conditions" = "Akzeptierte Nutzungsbedingungen";
/* chat list item title */
"accepted invitation" = "Einladung akzeptiert";
/* No comment provided by engineer. */
"Acknowledged" = "Bestätigt";
@@ -394,9 +388,6 @@
/* No comment provided by engineer. */
"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Fügen Sie die Adresse Ihrem Profil hinzu, damit Ihre Kontakte sie mit anderen Personen teilen können. Es wird eine Profilaktualisierung an Ihre Kontakte gesendet.";
/* No comment provided by engineer. */
"Add friends" = "Freunde aufnehmen";
/* No comment provided by engineer. */
"Add profile" = "Profil hinzufügen";
@@ -406,18 +397,12 @@
/* No comment provided by engineer. */
"Add servers by scanning QR codes." = "Fügen Sie Server durch Scannen der QR Codes hinzu.";
/* No comment provided by engineer. */
"Add team members" = "Team-Mitglieder aufnehmen";
/* No comment provided by engineer. */
"Add to another device" = "Einem anderen Gerät hinzufügen";
/* No comment provided by engineer. */
"Add welcome message" = "Begrüßungsmeldung hinzufügen";
/* No comment provided by engineer. */
"Add your team members to the conversations." = "Nehmen Sie Team-Mitglieder in Ihre Unterhaltungen auf.";
/* No comment provided by engineer. */
"Added media & file servers" = "Medien- und Dateiserver hinzugefügt";
@@ -479,7 +464,7 @@
"All data is erased when it is entered." = "Alle Daten werden gelöscht, sobald dieser eingegeben wird.";
/* No comment provided by engineer. */
"All data is kept private on your device." = "Alle Daten werden nur auf Ihrem Gerät gespeichert.";
"All data is private to your device." = "Alle Daten werden nur auf Ihrem Gerät gespeichert.";
/* No comment provided by engineer. */
"All group members will remain connected." = "Alle Gruppenmitglieder bleiben verbunden.";
@@ -808,12 +793,6 @@
/* No comment provided by engineer. */
"Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Bulgarisch, Finnisch, Thailändisch und Ukrainisch - Dank der Nutzer und [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!";
/* No comment provided by engineer. */
"Business address" = "Geschäftliche Adresse";
/* No comment provided by engineer. */
"Business chats" = "Geschäftliche Chats";
/* No comment provided by engineer. */
"By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." = "Per Chat-Profil (Voreinstellung) oder [per Verbindung](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).";
@@ -930,15 +909,6 @@
/* chat item text */
"changing address…" = "Wechsel der Empfängeradresse wurde gestartet…";
/* No comment provided by engineer. */
"Chat" = "Chat";
/* No comment provided by engineer. */
"Chat already exists" = "Chat besteht bereits";
/* No comment provided by engineer. */
"Chat already exists!" = "Chat besteht bereits!";
/* No comment provided by engineer. */
"Chat colors" = "Chat-Farben";
@@ -984,12 +954,6 @@
/* No comment provided by engineer. */
"Chat theme" = "Chat-Design";
/* No comment provided by engineer. */
"Chat will be deleted for all members - this cannot be undone!" = "Der Chat wird für alle Mitglieder gelöscht. Dies kann nicht rückgängig gemacht werden!";
/* No comment provided by engineer. */
"Chat will be deleted for you - this cannot be undone!" = "Der Chat wird für Sie gelöscht. Dies kann nicht rückgängig gemacht werden!";
/* No comment provided by engineer. */
"Chats" = "Chats";
@@ -1511,18 +1475,12 @@
/* No comment provided by engineer. */
"Delete and notify contact" = "Kontakt löschen und benachrichtigen";
/* No comment provided by engineer. */
"Delete chat" = "Chat löschen";
/* No comment provided by engineer. */
"Delete chat profile" = "Chat-Profil löschen";
/* No comment provided by engineer. */
"Delete chat profile?" = "Chat-Profil löschen?";
/* No comment provided by engineer. */
"Delete chat?" = "Chat löschen?";
/* No comment provided by engineer. */
"Delete connection" = "Verbindung löschen";
@@ -1697,9 +1655,6 @@
/* chat feature */
"Direct messages" = "Direkte Nachrichten";
/* No comment provided by engineer. */
"Direct messages between members are prohibited in this chat." = "In diesem Chat sind Direktnachrichten zwischen Mitgliedern nicht erlaubt.";
/* No comment provided by engineer. */
"Direct messages between members are prohibited." = "In dieser Gruppe sind Direktnachrichten zwischen Mitgliedern nicht erlaubt.";
@@ -2739,9 +2694,6 @@
/* No comment provided by engineer. */
"Invite members" = "Mitglieder einladen";
/* No comment provided by engineer. */
"Invite to chat" = "Zum Chat einladen";
/* No comment provided by engineer. */
"Invite to group" = "In Gruppe einladen";
@@ -2856,12 +2808,6 @@
/* swipe action */
"Leave" = "Verlassen";
/* No comment provided by engineer. */
"Leave chat" = "Chat verlassen";
/* No comment provided by engineer. */
"Leave chat?" = "Chat verlassen?";
/* No comment provided by engineer. */
"Leave group" = "Gruppe verlassen";
@@ -2958,18 +2904,12 @@
/* item status text */
"Member inactive" = "Mitglied inaktiv";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". All chat members will be notified." = "Die Rolle des Mitglieds wird auf \"%@\" geändert. Alle Chat-Mitglieder werden darüber informiert.";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". All group members will be notified." = "Die Mitgliederrolle wird auf \"%@\" geändert. Alle Mitglieder der Gruppe werden benachrichtigt.";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". The member will receive a new invitation." = "Die Mitgliederrolle wird auf \"%@\" geändert. Das Mitglied wird eine neue Einladung erhalten.";
/* No comment provided by engineer. */
"Member will be removed from chat - this cannot be undone!" = "Das Mitglied wird aus dem Chat entfernt. Dies kann nicht rückgängig gemacht werden!";
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "Das Mitglied wird aus der Gruppe entfernt. Dies kann nicht rückgängig gemacht werden!";
@@ -3389,9 +3329,6 @@
/* No comment provided by engineer. */
"Onion hosts will not be used." = "Onion-Hosts werden nicht verwendet.";
/* No comment provided by engineer. */
"Only chat owners can change preferences." = "Nur Chat-Eigentümer können die Präferenzen ändern.";
/* No comment provided by engineer. */
"Only client devices store user profiles, contacts, groups, and messages." = "Nur die Endgeräte speichern die Benutzerprofile, Kontakte, Gruppen und Nachrichten, welche über eine **2-Schichten Ende-zu-Ende-Verschlüsselung** gesendet werden.";
@@ -3470,9 +3407,6 @@
/* alert title */
"Operator server" = "Betreiber-Server";
/* No comment provided by engineer. */
"Or import archive file" = "Oder importieren Sie eine Archiv-Datei";
/* No comment provided by engineer. */
"Or paste archive link" = "Oder fügen Sie den Archiv-Link ein";
@@ -3641,9 +3575,6 @@
/* No comment provided by engineer. */
"Privacy & security" = "Datenschutz & Sicherheit";
/* No comment provided by engineer. */
"Privacy for your customers." = "Schutz der Privatsphäre Ihrer Kunden.";
/* No comment provided by engineer. */
"Privacy redefined" = "Datenschutz neu definiert";
@@ -3936,9 +3867,6 @@
/* chat item action */
"Reply" = "Antwort";
/* chat list item title */
"requested to connect" = "Zur Verbindung aufgefordert";
/* No comment provided by engineer. */
"Required" = "Erforderlich";
@@ -4646,9 +4574,6 @@
/* No comment provided by engineer. */
"Tap button " = "Schaltfläche antippen ";
/* No comment provided by engineer. */
"Tap Create SimpleX address in the menu to create it later." = "Tippen Sie im Menü auf SimpleX-Adresse erstellen, um sie später zu erstellen.";
/* No comment provided by engineer. */
"Tap to activate profile." = "Zum Aktivieren des Profils tippen.";
@@ -4779,10 +4704,10 @@
"The sender will NOT be notified" = "Der Absender wird NICHT benachrichtigt";
/* No comment provided by engineer. */
"The servers for new connections of your current chat profile **%@**." = "Nachrichten-Server für neue Verbindungen über Ihr aktuelles Chat-Profil **%@**.";
"The servers for new connections of your current chat profile **%@**." = "Mögliche Server für neue Verbindungen von Ihrem aktuellen Chat-Profil **%@**.";
/* No comment provided by engineer. */
"The servers for new files of your current chat profile **%@**." = "Medien- und Datei-Server für neue Daten über Ihr aktuelles Chat-Profil **%@**.";
"The servers for new files of your current chat profile **%@**." = "Die Server Deines aktuellen Chat-Profils für neue Dateien **%@**.";
/* No comment provided by engineer. */
"The text you pasted is not a SimpleX link." = "Der von Ihnen eingefügte Text ist kein SimpleX-Link.";
@@ -5357,9 +5282,6 @@
/* No comment provided by engineer. */
"You are already connected to %@." = "Sie sind bereits mit %@ verbunden.";
/* No comment provided by engineer. */
"You are already connected with %@." = "Sie sind bereits mit %@ verbunden.";
/* No comment provided by engineer. */
"You are already connecting to %@." = "Sie sind bereits mit %@ verbunden.";
@@ -5558,9 +5480,6 @@
/* No comment provided by engineer. */
"You will still receive calls and notifications from muted profiles when they are active." = "Sie können Anrufe und Benachrichtigungen auch von stummgeschalteten Profilen empfangen, solange diese aktiv sind.";
/* No comment provided by engineer. */
"You will stop receiving messages from this chat. Chat history will be preserved." = "Sie werden von diesem Chat keine Nachrichten mehr erhalten. Der Nachrichtenverlauf wird beibehalten.";
/* No comment provided by engineer. */
"You will stop receiving messages from this group. Chat history will be preserved." = "Sie werden von dieser Gruppe keine Nachrichten mehr erhalten. Der Nachrichtenverlauf wird beibehalten.";
+12 -93
View File
@@ -343,9 +343,6 @@
/* No comment provided by engineer. */
"Abort changing address?" = "¿Cancelar el cambio de servidor?";
/* No comment provided by engineer. */
"About operators" = "Acerca de los operadores";
/* No comment provided by engineer. */
"About SimpleX Chat" = "Sobre SimpleX Chat";
@@ -379,9 +376,6 @@
/* No comment provided by engineer. */
"Accepted conditions" = "Condiciones aceptadas";
/* chat list item title */
"accepted invitation" = "invitación aceptada";
/* No comment provided by engineer. */
"Acknowledged" = "Confirmaciones";
@@ -394,9 +388,6 @@
/* No comment provided by engineer. */
"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Añade la dirección a tu perfil para que tus contactos puedan compartirla con otros. La actualización del perfil se enviará a tus contactos.";
/* No comment provided by engineer. */
"Add friends" = "Añadir amigos";
/* No comment provided by engineer. */
"Add profile" = "Añadir perfil";
@@ -406,18 +397,12 @@
/* No comment provided by engineer. */
"Add servers by scanning QR codes." = "Añadir servidores mediante el escaneo de códigos QR.";
/* No comment provided by engineer. */
"Add team members" = "Añadir miembros del equipo";
/* No comment provided by engineer. */
"Add to another device" = "Añadir a otro dispositivo";
/* No comment provided by engineer. */
"Add welcome message" = "Añadir mensaje de bienvenida";
/* No comment provided by engineer. */
"Add your team members to the conversations." = "Añade a los miembros de tu equipo a las conversaciones.";
/* No comment provided by engineer. */
"Added media & file servers" = "Servidores de archivos y multimedia añadidos";
@@ -479,7 +464,7 @@
"All data is erased when it is entered." = "Al introducirlo todos los datos son eliminados.";
/* No comment provided by engineer. */
"All data is kept private on your device." = "Todos los datos son privados y están en tu dispositivo.";
"All data is private to your device." = "Todos los datos son privados y están en tu dispositivo.";
/* No comment provided by engineer. */
"All group members will remain connected." = "Todos los miembros del grupo permanecerán conectados.";
@@ -808,12 +793,6 @@
/* No comment provided by engineer. */
"Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Búlgaro, Finlandés, Tailandés y Ucraniano - gracias a los usuarios y [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!";
/* No comment provided by engineer. */
"Business address" = "Dirección empresarial";
/* No comment provided by engineer. */
"Business chats" = "Chats empresariales";
/* No comment provided by engineer. */
"By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." = "Mediante perfil (predeterminado) o [por conexión](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).";
@@ -930,15 +909,6 @@
/* chat item text */
"changing address…" = "cambiando de servidor…";
/* No comment provided by engineer. */
"Chat" = "Chat";
/* No comment provided by engineer. */
"Chat already exists" = "El chat ya existe";
/* No comment provided by engineer. */
"Chat already exists!" = "¡El chat ya existe!";
/* No comment provided by engineer. */
"Chat colors" = "Colores del chat";
@@ -984,12 +954,6 @@
/* No comment provided by engineer. */
"Chat theme" = "Tema de chat";
/* No comment provided by engineer. */
"Chat will be deleted for all members - this cannot be undone!" = "El chat será eliminado para todos los miembros. ¡No podrá deshacerse!";
/* No comment provided by engineer. */
"Chat will be deleted for you - this cannot be undone!" = "El chat será eliminado para tí. ¡No podrá deshacerse!";
/* No comment provided by engineer. */
"Chats" = "Chats";
@@ -1511,18 +1475,12 @@
/* No comment provided by engineer. */
"Delete and notify contact" = "Eliminar y notificar contacto";
/* No comment provided by engineer. */
"Delete chat" = "Eliminar chat";
/* No comment provided by engineer. */
"Delete chat profile" = "Eliminar perfil";
/* No comment provided by engineer. */
"Delete chat profile?" = "¿Eliminar perfil?";
/* No comment provided by engineer. */
"Delete chat?" = "¿Eliminar chat?";
/* No comment provided by engineer. */
"Delete connection" = "Eliminar conexión";
@@ -1542,7 +1500,7 @@
"Delete file" = "Eliminar archivo";
/* No comment provided by engineer. */
"Delete files and media?" = "¿Eliminar archivos y multimedia?";
"Delete files and media?" = "Eliminar archivos y multimedia?";
/* No comment provided by engineer. */
"Delete files for all chat profiles" = "Eliminar archivos de todos los perfiles";
@@ -1697,9 +1655,6 @@
/* chat feature */
"Direct messages" = "Mensajes directos";
/* No comment provided by engineer. */
"Direct messages between members are prohibited in this chat." = "Mensajes directos no permitidos entre miembros de este chat.";
/* No comment provided by engineer. */
"Direct messages between members are prohibited." = "Los mensajes directos entre miembros del grupo no están permitidos.";
@@ -1843,7 +1798,7 @@
"Enable camera access" = "Permitir acceso a la cámara";
/* No comment provided by engineer. */
"Enable Flux" = "Habilita Flux";
"Enable Flux" = "Habilitar Flux";
/* No comment provided by engineer. */
"Enable for all" = "Activar para todos";
@@ -2341,7 +2296,7 @@
"Fix not supported by group member" = "Corrección no compatible con miembro del grupo";
/* No comment provided by engineer. */
"for better metadata privacy." = "para mejorar la privacidad de los metadatos.";
"for better metadata privacy." = "para mayor privacidad de los metadatos.";
/* servers error */
"For chat profile %@:" = "Para el perfil de chat %@:";
@@ -2739,9 +2694,6 @@
/* No comment provided by engineer. */
"Invite members" = "Invitar miembros";
/* No comment provided by engineer. */
"Invite to chat" = "Invitar al chat";
/* No comment provided by engineer. */
"Invite to group" = "Invitar al grupo";
@@ -2856,12 +2808,6 @@
/* swipe action */
"Leave" = "Salir";
/* No comment provided by engineer. */
"Leave chat" = "Salir del chat";
/* No comment provided by engineer. */
"Leave chat?" = "¿Salir del chat?";
/* No comment provided by engineer. */
"Leave group" = "Salir del grupo";
@@ -2958,18 +2904,12 @@
/* item status text */
"Member inactive" = "Miembro inactivo";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". All chat members will be notified." = "El rol del miembro cambiará a \"%@\" y todos serán notificados.";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". All group members will be notified." = "El rol del miembro cambiará a \"%@\" y se notificará al grupo.";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". The member will receive a new invitation." = "El rol del miembro cambiará a \"%@\" y recibirá una invitación nueva.";
/* No comment provided by engineer. */
"Member will be removed from chat - this cannot be undone!" = "El miembro será eliminado del chat. ¡No podrá deshacerse!";
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "El miembro será expulsado del grupo. ¡No podrá deshacerse!";
@@ -3389,9 +3329,6 @@
/* No comment provided by engineer. */
"Onion hosts will not be used." = "No se usarán hosts .onion.";
/* No comment provided by engineer. */
"Only chat owners can change preferences." = "Sólo los propietarios del chat pueden cambiar las preferencias.";
/* No comment provided by engineer. */
"Only client devices store user profiles, contacts, groups, and messages." = "Sólo los dispositivos cliente almacenan perfiles de usuario, contactos, grupos y mensajes enviados con **cifrado de extremo a extremo de 2 capas**.";
@@ -3470,9 +3407,6 @@
/* alert title */
"Operator server" = "Servidor del operador";
/* No comment provided by engineer. */
"Or import archive file" = "O importa desde un archivo";
/* No comment provided by engineer. */
"Or paste archive link" = "O pegar enlace del archivo";
@@ -3627,7 +3561,7 @@
"Preserve the last message draft, with attachments." = "Conserva el último borrador del mensaje con los datos adjuntos.";
/* No comment provided by engineer. */
"Preset server address" = "Dirección predefinida del servidor";
"Preset server address" = "Dirección del servidor predefinida";
/* No comment provided by engineer. */
"Preset servers" = "Servidores predefinidos";
@@ -3641,9 +3575,6 @@
/* No comment provided by engineer. */
"Privacy & security" = "Seguridad y Privacidad";
/* No comment provided by engineer. */
"Privacy for your customers." = "Privacidad para tus clientes.";
/* No comment provided by engineer. */
"Privacy redefined" = "Privacidad redefinida";
@@ -3762,7 +3693,7 @@
"Read" = "Leer";
/* No comment provided by engineer. */
"Read more" = "Saber más";
"Read more" = "Conoce más";
/* No comment provided by engineer. */
"Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)." = "Conoce más en la [Guía del Usuario](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode).";
@@ -3936,9 +3867,6 @@
/* chat item action */
"Reply" = "Responder";
/* chat list item title */
"requested to connect" = "solicitado para conectar";
/* No comment provided by engineer. */
"Required" = "Obligatorio";
@@ -4410,7 +4338,7 @@
"Share profile" = "Comparte perfil";
/* No comment provided by engineer. */
"Share SimpleX address on social media." = "Comparte tu dirección SimpleX en redes sociales.";
"Share SimpleX address on social media." = "Compartir dirección SimpleX en redes sociales.";
/* No comment provided by engineer. */
"Share this 1-time invite link" = "Comparte este enlace de un solo uso";
@@ -4458,10 +4386,10 @@
"SimpleX Address" = "Dirección SimpleX";
/* No comment provided by engineer. */
"SimpleX address and 1-time links are safe to share via any messenger." = "Compartir los enlaces de un uso y las direcciones SimpleX es seguro a través de cualquier medio.";
"SimpleX address and 1-time links are safe to share via any messenger." = "Compartir enlaces de un uso y direcciones SimpleX es seguro a través de cualquier medio.";
/* No comment provided by engineer. */
"SimpleX address or 1-time link?" = "¿Dirección SimpleX o enlace de un uso?";
"SimpleX address or 1-time link?" = "Dirección SimpleX o enlace de un uso?";
/* No comment provided by engineer. */
"SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app." = "Simplex Chat y Flux han acordado incluir servidores operados por Flux en la aplicación";
@@ -4646,9 +4574,6 @@
/* No comment provided by engineer. */
"Tap button " = "Pulsa el botón ";
/* No comment provided by engineer. */
"Tap Create SimpleX address in the menu to create it later." = "Pulsa Crear dirección SimpleX en el menú para crearla más tarde.";
/* No comment provided by engineer. */
"Tap to activate profile." = "Pulsa sobre un perfil para activarlo.";
@@ -4770,7 +4695,7 @@
"The same conditions will apply to operator(s): **%@**." = "Las mismas condiciones se aplicarán a el/los operador(es) **%@**.";
/* No comment provided by engineer. */
"The second preset operator in the app!" = "¡Segundo operador predefinido!";
"The second preset operator in the app!" = "El segundo operador predefinido!";
/* No comment provided by engineer. */
"The second tick we missed! ✅" = "¡El doble check que nos faltaba! ✅";
@@ -4779,7 +4704,7 @@
"The sender will NOT be notified" = "El remitente NO será notificado";
/* No comment provided by engineer. */
"The servers for new connections of your current chat profile **%@**." = "Lista de servidores para las conexiones nuevas del perfil **%@**.";
"The servers for new connections of your current chat profile **%@**." = "Lista de servidores para las conexiones nuevas de tu perfil actual **%@**.";
/* No comment provided by engineer. */
"The servers for new files of your current chat profile **%@**." = "Los servidores para archivos nuevos en tu perfil actual **%@**.";
@@ -5355,10 +5280,7 @@
"You already have a chat profile with the same display name. Please choose another name." = "Ya tienes un perfil con este nombre mostrado. Por favor, elige otro nombre.";
/* No comment provided by engineer. */
"You are already connected to %@." = "Ya estás conectado con %@.";
/* No comment provided by engineer. */
"You are already connected with %@." = "Ya estás conectado con %@.";
"You are already connected to %@." = "Ya estás conectado a %@.";
/* No comment provided by engineer. */
"You are already connecting to %@." = "Ya estás conectando con %@.";
@@ -5558,9 +5480,6 @@
/* No comment provided by engineer. */
"You will still receive calls and notifications from muted profiles when they are active." = "Seguirás recibiendo llamadas y notificaciones de los perfiles silenciados cuando estén activos.";
/* No comment provided by engineer. */
"You will stop receiving messages from this chat. Chat history will be preserved." = "Dejarás de recibir mensajes de este chat. El historial del chat se conserva.";
/* No comment provided by engineer. */
"You will stop receiving messages from this group. Chat history will be preserved." = "Dejarás de recibir mensajes de este grupo. El historial del chat se conservará.";
+1 -1
View File
@@ -431,7 +431,7 @@
"All data is erased when it is entered." = "Toutes les données sont effacées lorsqu'il est saisi.";
/* No comment provided by engineer. */
"All data is kept private on your device." = "Toutes les données restent confinées dans votre appareil.";
"All data is private to your device." = "Toutes les données restent confinées dans votre appareil.";
/* No comment provided by engineer. */
"All group members will remain connected." = "Tous les membres du groupe resteront connectés.";
+8 -20
View File
@@ -344,10 +344,7 @@
"Abort changing address?" = "Címváltoztatás megszakítása??";
/* No comment provided by engineer. */
"About operators" = "Az üzemeltetőkről";
/* No comment provided by engineer. */
"About SimpleX Chat" = "SimpleX Chat névjegye";
"About SimpleX Chat" = "A SimpleX Chatről";
/* No comment provided by engineer. */
"above, then choose:" = "gombra fent, majd válassza ki:";
@@ -379,9 +376,6 @@
/* No comment provided by engineer. */
"Accepted conditions" = "Elfogadott feltételek";
/* chat list item title */
"accepted invitation" = "elfogadott meghívó";
/* No comment provided by engineer. */
"Acknowledged" = "Nyugtázva";
@@ -479,7 +473,7 @@
"All data is erased when it is entered." = "A jelkód megadása után az összes adat törlésre kerül.";
/* No comment provided by engineer. */
"All data is kept private on your device." = "Az összes adat biztonságban van az eszközén.";
"All data is private to your device." = "Az összes adat biztonságban van az eszközén.";
/* No comment provided by engineer. */
"All group members will remain connected." = "Az összes csoporttag kapcsolatban marad.";
@@ -885,7 +879,7 @@
"Change" = "Változtatás";
/* authentication reason */
"Change chat profiles" = "Csevegési profilok megváltoztatása";
"Change chat profiles" = "Felhasználói profilok megváltoztatása";
/* No comment provided by engineer. */
"Change database passphrase?" = "Adatbázis-jelmondat megváltoztatása?";
@@ -2350,7 +2344,7 @@
"For console" = "Konzolhoz";
/* No comment provided by engineer. */
"For example, if your contact receives messages via a SimpleX Chat server, your app will deliver them via a Flux server." = "Például, ha az Ön ismerőse egy SimpleX Chat-kiszolgálón keresztül fogadja az üzeneteket, az Ön alkalmazása egy Flux-kiszolgálón keresztül fogja azokat kézbesíteni.";
"For example, if your contact receives messages via a SimpleX Chat server, your app will deliver them via a Flux server." = "Ha például az ismerőse a SimpleX Chat kiszolgálón keresztül fogadja az üzeneteket, az Ön alkalmazása a Flux egyik kiszolgálóját használja a kézbesítéshez.";
/* No comment provided by engineer. */
"For private routing" = "A privát útválasztáshoz";
@@ -3714,7 +3708,7 @@
"Protect app screen" = "Alkalmazás képernyőjének védelme";
/* No comment provided by engineer. */
"Protect IP address" = "IP-cím védelme";
"Protect IP address" = "IP-cím védelem";
/* No comment provided by engineer. */
"Protect your chat profiles with a password!" = "Védje meg a csevegési profiljait egy jelszóval!";
@@ -3936,9 +3930,6 @@
/* chat item action */
"Reply" = "Válasz";
/* chat list item title */
"requested to connect" = "kérelmezve a kapcsolódáshoz";
/* No comment provided by engineer. */
"Required" = "Szükséges";
@@ -4463,9 +4454,6 @@
/* No comment provided by engineer. */
"SimpleX address or 1-time link?" = "SimpleX-cím vagy egyszer használható meghívó-hivatkozás?";
/* No comment provided by engineer. */
"SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app." = "A SimpleX Chat és a Flux megállapodást kötött arról, hogy a Flux által üzemeltetett kiszolgálókat beépítik az alkalmazásba.";
/* No comment provided by engineer. */
"SimpleX Chat security was audited by Trail of Bits." = "A SimpleX Chat biztonsága a Trail of Bits által lett auditálva.";
@@ -4764,7 +4752,7 @@
"The profile is only shared with your contacts." = "A profilja csak az ismerőseivel kerül megosztásra.";
/* No comment provided by engineer. */
"The same conditions will apply to operator **%@**." = "Ugyanezek a feltételek lesznek elfogadva a következő üzemeltetőre is: **%@**.";
"The same conditions will apply to operator **%@**." = "Ugyanezek a feltételek vonatkoznak a következő üzemeltetőre is: **%@**.";
/* No comment provided by engineer. */
"The same conditions will apply to operator(s): **%@**." = "Ugyanezek a feltételek lesznek elfogadva a következő üzemeltető(k)re is: **%@**.";
@@ -5409,7 +5397,7 @@
"You can configure operators in Network & servers settings." = "Az üzemeltetőket a „Hálózat és kiszolgálók” beállításaban konfigurálhatja.";
/* No comment provided by engineer. */
"You can configure servers via settings." = "A kiszolgálókat a „Hálózat és kiszolgálók” menüben konfigurálhatja.";
"You can configure servers via settings." = "A kiszolgálókat a beállításokon keresztül konfigurálhatja.";
/* No comment provided by engineer. */
"You can create it later" = "Létrehozás később";
@@ -5439,7 +5427,7 @@
"You can set connection name, to remember who the link was shared with." = "Beállíthatja az ismerős nevét, hogy emlékezzen arra, hogy kivel osztotta meg a hivatkozást.";
/* No comment provided by engineer. */
"You can set lock screen notification preview via settings." = "A lezárási képernyő értesítési előnézetét az „Értesítések” menüben állíthatja be.";
"You can set lock screen notification preview via settings." = "A beállításokon keresztül beállíthatja a lezárási képernyő értesítési előnézetét.";
/* No comment provided by engineer. */
"You can share a link or a QR code - anybody will be able to join the group. You won't lose members of the group if you later delete it." = "Megoszthat egy hivatkozást vagy QR-kódot - így bárki csatlakozhat a csoporthoz. Ha a csoport később törlésre kerül, akkor nem fogja elveszíteni annak tagjait.";
+10 -13
View File
@@ -473,7 +473,7 @@
"All data is erased when it is entered." = "Tutti i dati vengono cancellati quando inserito.";
/* No comment provided by engineer. */
"All data is kept private on your device." = "Tutti i dati sono privati, nel tuo dispositivo.";
"All data is private to your device." = "Tutti i dati sono privati, nel tuo dispositivo.";
/* No comment provided by engineer. */
"All group members will remain connected." = "Tutti i membri del gruppo resteranno connessi.";
@@ -689,10 +689,10 @@
"Auto-accept" = "Accetta automaticamente";
/* No comment provided by engineer. */
"Auto-accept contact requests" = "Auto-accetta le richieste di contatto";
"Auto-accept contact requests" = "Auto-accetta richieste di contatto";
/* No comment provided by engineer. */
"Auto-accept images" = "Auto-accetta le immagini";
"Auto-accept images" = "Auto-accetta immagini";
/* alert title */
"Auto-accept settings" = "Accetta automaticamente le impostazioni";
@@ -779,7 +779,7 @@
"Blur for better privacy." = "Sfoca per una privacy maggiore.";
/* No comment provided by engineer. */
"Blur media" = "Sfocatura dei file multimediali";
"Blur media" = "Sfocatura file multimediali";
/* No comment provided by engineer. */
"bold" = "grassetto";
@@ -3004,7 +3004,7 @@
"Message delivery warning" = "Avviso di consegna del messaggio";
/* No comment provided by engineer. */
"Message draft" = "Bozza del messaggio";
"Message draft" = "Bozza dei messaggi";
/* item status text */
"Message forwarded" = "Messaggio inoltrato";
@@ -3982,10 +3982,10 @@
"Reveal" = "Rivela";
/* No comment provided by engineer. */
"Review conditions" = "Leggi le condizioni";
"Review conditions" = "Esamina le condizioni";
/* No comment provided by engineer. */
"Review later" = "Leggi più tardi";
"Review later" = "Esamina più tardi";
/* No comment provided by engineer. */
"Revoke" = "Revoca";
@@ -4181,7 +4181,7 @@
"Send errors" = "Errori di invio";
/* No comment provided by engineer. */
"Send link previews" = "Invia le anteprime dei link";
"Send link previews" = "Invia anteprime dei link";
/* No comment provided by engineer. */
"Send live message" = "Invia messaggio in diretta";
@@ -4401,7 +4401,7 @@
"Share profile" = "Condividi il profilo";
/* No comment provided by engineer. */
"Share SimpleX address on social media." = "Condividi l'indirizzo SimpleX sui social media.";
"Share SimpleX address on social media." = "Condividi indirizzo SimpleX sui social media.";
/* No comment provided by engineer. */
"Share this 1-time invite link" = "Condividi questo link di invito una tantum";
@@ -4454,9 +4454,6 @@
/* No comment provided by engineer. */
"SimpleX address or 1-time link?" = "Indirizzo SimpleX o link una tantum?";
/* No comment provided by engineer. */
"SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app." = "SimpleX Chat e Flux hanno concluso un accordo per includere server gestiti da Flux nell'app";
/* No comment provided by engineer. */
"SimpleX Chat security was audited by Trail of Bits." = "La sicurezza di SimpleX Chat è stata verificata da Trail of Bits.";
@@ -4638,7 +4635,7 @@
"Tap button " = "Tocca il pulsante ";
/* No comment provided by engineer. */
"Tap Create SimpleX address in the menu to create it later." = "Tocca Crea indirizzo SimpleX nel menu per crearlo più tardi.";
"Tap Create SimpleX address in the menu to create it later." = "Tocca \"Crea indirizzo SimpleX\" nel menu per crearlo più tardi.";
/* No comment provided by engineer. */
"Tap to activate profile." = "Tocca per attivare il profilo.";
+1 -10
View File
@@ -343,9 +343,6 @@
/* No comment provided by engineer. */
"Abort changing address?" = "Adres wijziging afbreken?";
/* No comment provided by engineer. */
"About operators" = "Over operatoren";
/* No comment provided by engineer. */
"About SimpleX Chat" = "Over SimpleX Chat";
@@ -379,9 +376,6 @@
/* No comment provided by engineer. */
"Accepted conditions" = "Geaccepteerde voorwaarden";
/* chat list item title */
"accepted invitation" = "geaccepteerde uitnodiging";
/* No comment provided by engineer. */
"Acknowledged" = "Erkend";
@@ -479,7 +473,7 @@
"All data is erased when it is entered." = "Alle gegevens worden bij het invoeren gewist.";
/* No comment provided by engineer. */
"All data is kept private on your device." = "Alle gegevens zijn privé op uw apparaat.";
"All data is private to your device." = "Alle gegevens zijn privé op uw apparaat.";
/* No comment provided by engineer. */
"All group members will remain connected." = "Alle groepsleden blijven verbonden.";
@@ -3936,9 +3930,6 @@
/* chat item action */
"Reply" = "Antwoord";
/* chat list item title */
"requested to connect" = "gevraagd om verbinding te maken";
/* No comment provided by engineer. */
"Required" = "Vereist";
+1 -1
View File
@@ -431,7 +431,7 @@
"All data is erased when it is entered." = "Wszystkie dane są usuwane po jego wprowadzeniu.";
/* No comment provided by engineer. */
"All data is kept private on your device." = "Wszystkie dane są prywatne na Twoim urządzeniu.";
"All data is private to your device." = "Wszystkie dane są prywatne na Twoim urządzeniu.";
/* No comment provided by engineer. */
"All group members will remain connected." = "Wszyscy członkowie grupy pozostaną połączeni.";
+4 -4
View File
@@ -83,7 +83,7 @@
"**Recommended**: device token and end-to-end encrypted notifications are sent to SimpleX Chat push server, but it does not see the message content, size or who it is from." = "**Рекомендовано**: токен устройства и уведомления отправляются на сервер SimpleX Chat, но сервер не получает сами сообщения, их размер или от кого они.";
/* No comment provided by engineer. */
"**Scan / Paste link**: to connect via a link you received." = "**Сканировать / Вставить ссылку**: чтобы соединиться через полученную ссылку.";
"**Scan / Paste link**: to connect via a link you received." = "**Сканировать / Вставить ссылку**: чтобы соединится через полученную ссылку.";
/* No comment provided by engineer. */
"**Warning**: Instant push notifications require passphrase saved in Keychain." = "**Внимание**: для работы мгновенных уведомлений пароль должен быть сохранен в Keychain.";
@@ -479,7 +479,7 @@
"All data is erased when it is entered." = "Все данные удаляются при его вводе.";
/* No comment provided by engineer. */
"All data is kept private on your device." = "Все данные хранятся только на вашем устройстве.";
"All data is private to your device." = "Все данные хранятся только на вашем устройстве.";
/* No comment provided by engineer. */
"All group members will remain connected." = "Все члены группы, которые соединились через эту ссылку, останутся в группе.";
@@ -3720,7 +3720,7 @@
"Protect your chat profiles with a password!" = "Защитите Ваши профили чата паролем!";
/* No comment provided by engineer. */
"Protect your IP address from the messaging relays chosen by your contacts.\nEnable in *Network & servers* settings." = "Защитите ваш IP адрес от серверов сообщений, выбранных Вашими контактами.\nВключите в настройках *Сети и серверов*.";
"Protect your IP address from the messaging relays chosen by your contacts.\nEnable in *Network & servers* settings." = "Защитите ваш IP адрес от серверов сообщений, выбранных Вашими контактами.\nВключите в настройках *Сеть и серверы*.";
/* No comment provided by engineer. */
"Protocol timeout" = "Таймаут протокола";
@@ -5406,7 +5406,7 @@
"You can change it in Appearance settings." = "Вы можете изменить это в настройках Интерфейса.";
/* No comment provided by engineer. */
"You can configure operators in Network & servers settings." = "Вы можете настроить операторов в настройках Сети и серверов.";
"You can configure operators in Network & servers settings." = "Вы можете настроить операторов в настройках Сеть и серверы.";
/* No comment provided by engineer. */
"You can configure servers via settings." = "Вы можете настроить серверы позже.";
+1 -1
View File
@@ -431,7 +431,7 @@
"All data is erased when it is entered." = "Kullanıldığında bütün veriler silinir.";
/* No comment provided by engineer. */
"All data is kept private on your device." = "Tüm veriler cihazınıza özeldir.";
"All data is private to your device." = "Tüm veriler cihazınıza özeldir.";
/* No comment provided by engineer. */
"All group members will remain connected." = "Tüm grup üyeleri bağlı kalacaktır.";
+1 -1
View File
@@ -464,7 +464,7 @@
"All data is erased when it is entered." = "Всі дані стираються при введенні.";
/* No comment provided by engineer. */
"All data is kept private on your device." = "Всі дані є приватними для вашого пристрою.";
"All data is private to your device." = "Всі дані є приватними для вашого пристрою.";
/* No comment provided by engineer. */
"All group members will remain connected." = "Всі учасники групи залишаться на зв'язку.";
+1 -1
View File
@@ -413,7 +413,7 @@
"All data is erased when it is entered." = "所有数据在输入后将被删除。";
/* No comment provided by engineer. */
"All data is kept private on your device." = "所有数据都是您设备的私有数据.";
"All data is private to your device." = "所有数据都是您设备的私有数据.";
/* No comment provided by engineer. */
"All group members will remain connected." = "所有群组成员将保持连接。";
@@ -115,6 +115,7 @@
android:launchMode="singleInstance"
android:supportsPictureInPicture="true"
android:autoRemoveFromRecents="true"
android:screenOrientation="portrait"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"/>
<provider
@@ -360,8 +360,6 @@ class SimplexApp: Application(), LifecycleEventObserver {
return true
}
override fun androidCreateActiveCallState(): Closeable = ActiveCallState()
override val androidApiLevel: Int get() = Build.VERSION.SDK_INT
}
}
@@ -71,12 +71,8 @@ class PostSCallAudioDeviceManager: CallAudioDeviceManagerInterface {
}
override fun stop() {
try {
am.unregisterAudioDeviceCallback(audioCallback)
am.removeOnCommunicationDeviceChangedListener(listener)
} catch (e: Exception) {
Log.e(TAG, e.stackTraceToString())
}
am.unregisterAudioDeviceCallback(audioCallback)
am.removeOnCommunicationDeviceChangedListener(listener)
}
override fun selectLastExternalDeviceOrDefault(speaker: Boolean, keepAnyExternal: Boolean) {
@@ -6,12 +6,12 @@ import android.Manifest
import android.annotation.SuppressLint
import android.app.Activity
import android.content.*
import android.content.pm.ActivityInfo
import android.content.pm.PackageManager
import android.media.*
import android.os.Build
import android.os.PowerManager
import android.os.PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK
import android.os.PowerManager.WakeLock
import android.view.View
import android.view.ViewGroup
import android.webkit.*
@@ -23,6 +23,7 @@ import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.*
import androidx.compose.runtime.*
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.snapshots.SnapshotStateList
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@@ -46,6 +47,7 @@ import chat.simplex.common.model.ChatController.appPrefs
import chat.simplex.common.platform.*
import chat.simplex.common.ui.theme.*
import chat.simplex.common.views.helpers.*
import chat.simplex.common.views.onboarding.OnboardingStage
import chat.simplex.res.MR
import com.google.accompanist.permissions.*
import dev.icerock.moko.resources.StringResource
@@ -56,7 +58,6 @@ import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.datetime.Clock
import kotlinx.serialization.encodeToString
import java.io.Closeable
// Should be destroy()'ed and set as null when call is ended. Otherwise, it will be a leak
@SuppressLint("StaticFieldLeak")
@@ -71,62 +72,49 @@ fun activeCallDestroyWebView() = withApi {
Log.d(TAG, "CallView: webview was destroyed")
}
class ActiveCallState: Closeable {
val proximityLock: WakeLock? = screenOffWakeLock()
var wasConnected = false
val callAudioDeviceManager = CallAudioDeviceManagerInterface.new()
private var closed = false
init {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
callAudioDeviceManager.start()
}
}
override fun close() {
if (closed) return
closed = true
CallSoundsPlayer.stop()
if (wasConnected) {
CallSoundsPlayer.vibrate()
}
callAudioDeviceManager.stop()
dropAudioManagerOverrides()
if (proximityLock?.isHeld == true) {
proximityLock.release()
}
}
private fun screenOffWakeLock(): WakeLock? {
@SuppressLint("SourceLockedOrientationActivity")
@Composable
actual fun ActiveCallView() {
val call = remember { chatModel.activeCall }.value
val scope = rememberCoroutineScope()
val proximityLock = remember {
val pm = (androidAppContext.getSystemService(Context.POWER_SERVICE) as PowerManager)
return if (pm.isWakeLockLevelSupported(PROXIMITY_SCREEN_OFF_WAKE_LOCK)) {
if (pm.isWakeLockLevelSupported(PROXIMITY_SCREEN_OFF_WAKE_LOCK)) {
pm.newWakeLock(PROXIMITY_SCREEN_OFF_WAKE_LOCK, androidAppContext.packageName + ":proximityLock")
} else {
null
}
}
}
@SuppressLint("SourceLockedOrientationActivity")
@Composable
actual fun ActiveCallView() {
val call = remember { chatModel.activeCall }.value
val callState = call?.androidCallState as ActiveCallState?
val scope = rememberCoroutineScope()
val wasConnected = rememberSaveable { mutableStateOf(false) }
LaunchedEffect(call) {
if (call?.callState == CallState.Connected && callState != null && !callState.wasConnected) {
if (call?.callState == CallState.Connected && !wasConnected.value) {
CallSoundsPlayer.vibrate(2)
callState.wasConnected = true
wasConnected.value = true
}
}
LaunchedEffect(callState, chatModel.activeCallViewIsCollapsed.value) {
callState ?: return@LaunchedEffect
val callAudioDeviceManager = remember { CallAudioDeviceManagerInterface.new() }
DisposableEffect(Unit) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
callAudioDeviceManager.start()
}
onDispose {
CallSoundsPlayer.stop()
if (wasConnected.value) {
CallSoundsPlayer.vibrate()
}
callAudioDeviceManager.stop()
dropAudioManagerOverrides()
if (proximityLock?.isHeld == true) {
proximityLock.release()
}
}
}
LaunchedEffect(chatModel.activeCallViewIsCollapsed.value) {
if (chatModel.activeCallViewIsCollapsed.value) {
if (callState.proximityLock?.isHeld == true) callState.proximityLock.release()
if (proximityLock?.isHeld == true) proximityLock.release()
} else {
delay(1000)
if (callState.proximityLock?.isHeld == false) callState.proximityLock.acquire()
if (proximityLock?.isHeld == false) proximityLock.acquire()
}
}
Box(Modifier.fillMaxSize()) {
@@ -134,7 +122,6 @@ actual fun ActiveCallView() {
Log.d(TAG, "received from WebRTCView: $apiMsg")
val call = chatModel.activeCall.value
if (call != null) {
val callState = call.androidCallState as ActiveCallState
Log.d(TAG, "has active call $call")
val callRh = call.remoteHostId
when (val r = apiMsg.resp) {
@@ -144,9 +131,9 @@ actual fun ActiveCallView() {
updateActiveCall(call) { it.copy(callState = CallState.InvitationSent, localCapabilities = r.capabilities) }
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) {
// Starting is delayed to make Android <= 11 working good with Bluetooth
callState.callAudioDeviceManager.start()
callAudioDeviceManager.start()
} else {
callState.callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.hasVideo, true)
callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.hasVideo, true)
}
CallSoundsPlayer.startConnectingCallSound(scope)
activeCallWaitDeliveryReceipt(scope)
@@ -156,9 +143,9 @@ actual fun ActiveCallView() {
updateActiveCall(call) { it.copy(callState = CallState.OfferSent, localCapabilities = r.capabilities) }
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) {
// Starting is delayed to make Android <= 11 working good with Bluetooth
callState.callAudioDeviceManager.start()
callAudioDeviceManager.start()
} else {
callState.callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.hasVideo, true)
callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.hasVideo, true)
}
}
is WCallResponse.Answer -> withBGApi {
@@ -241,14 +228,14 @@ actual fun ActiveCallView() {
!chatModel.activeCallViewIsCollapsed.value -> true
else -> false
}
if (call != null && showOverlay && callState != null) {
ActiveCallOverlay(call, chatModel, callState.callAudioDeviceManager)
if (call != null && showOverlay) {
ActiveCallOverlay(call, chatModel, callAudioDeviceManager)
}
}
KeyChangeEffect(callState, call?.localMediaSources?.hasVideo) {
if (call != null && call.hasVideo && callState != null && callState.callAudioDeviceManager.currentDevice.value?.type == AudioDeviceInfo.TYPE_BUILTIN_EARPIECE) {
KeyChangeEffect(call?.localMediaSources?.hasVideo) {
if (call != null && call.hasVideo && callAudioDeviceManager.currentDevice.value?.type == AudioDeviceInfo.TYPE_BUILTIN_EARPIECE) {
// enabling speaker on user action (peer action ignored) and not disabling it again
callState.callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.hasVideo, true)
callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.hasVideo, true)
}
}
val context = LocalContext.current
@@ -256,12 +243,16 @@ actual fun ActiveCallView() {
val activity = context as? Activity ?: return@DisposableEffect onDispose {}
val prevVolumeControlStream = activity.volumeControlStream
activity.volumeControlStream = AudioManager.STREAM_VOICE_CALL
// Lock orientation to portrait in order to have good experience with calls
activity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
chatModel.activeCallViewIsVisible.value = true
// After the first call, End command gets added to the list which prevents making another calls
chatModel.callCommand.removeAll { it is WCallCommand.End }
keepScreenOn(true)
onDispose {
activity.volumeControlStream = prevVolumeControlStream
// Unlock orientation
activity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
chatModel.activeCallViewIsVisible.value = false
chatModel.callCommand.clear()
keepScreenOn(false)
@@ -273,8 +264,8 @@ actual fun ActiveCallView() {
private fun ActiveCallOverlay(call: Call, chatModel: ChatModel, callAudioDeviceManager: CallAudioDeviceManagerInterface) {
ActiveCallOverlayLayout(
call = call,
devices = remember(callAudioDeviceManager) { callAudioDeviceManager.devices }.value,
currentDevice = remember(callAudioDeviceManager) { callAudioDeviceManager.currentDevice },
devices = remember { callAudioDeviceManager.devices }.value,
currentDevice = remember { callAudioDeviceManager.currentDevice },
dismiss = { withBGApi { chatModel.callManager.endCall(call) } },
toggleAudio = { chatModel.callCommand.add(WCallCommand.Media(CallMediaSource.Mic, enable = !call.localMediaSources.mic)) },
selectDevice = { callAudioDeviceManager.selectDevice(it.id) },
@@ -841,8 +832,7 @@ fun PreviewActiveCallOverlayVideo() {
connectionInfo = ConnectionInfo(
RTCIceCandidate(RTCIceCandidateType.Host, "tcp"),
RTCIceCandidate(RTCIceCandidateType.Host, "tcp")
),
androidCallState = {}
)
),
devices = emptyList(),
currentDevice = remember { mutableStateOf(null) },
@@ -851,7 +841,7 @@ fun PreviewActiveCallOverlayVideo() {
selectDevice = {},
toggleVideo = {},
toggleSound = {},
flipCamera = {},
flipCamera = {}
)
}
}
@@ -872,8 +862,7 @@ fun PreviewActiveCallOverlayAudio() {
connectionInfo = ConnectionInfo(
RTCIceCandidate(RTCIceCandidateType.Host, "udp"),
RTCIceCandidate(RTCIceCandidateType.Host, "udp")
),
androidCallState = {}
)
),
devices = emptyList(),
currentDevice = remember { mutableStateOf(null) },
@@ -71,7 +71,7 @@ if(NOT APPLE)
else()
# Without direct linking it can't find hs_init in linking step
add_library( rts SHARED IMPORTED )
FILE(GLOB RTSLIB ${CMAKE_SOURCE_DIR}/libs/${OS_LIB_PATH}-${OS_LIB_ARCH}/libHSrts*_thr-*.${OS_LIB_EXT})
FILE(GLOB RTSLIB ${CMAKE_SOURCE_DIR}/libs/${OS_LIB_PATH}-${OS_LIB_ARCH}/deps/libHSrts*_thr-*.${OS_LIB_EXT})
set_target_properties( rts PROPERTIES IMPORTED_LOCATION ${RTSLIB})
target_link_libraries(app-lib rts simplex)
@@ -10,7 +10,6 @@ import chat.simplex.common.model.ChatId
import chat.simplex.common.model.NotificationsMode
import chat.simplex.common.ui.theme.CurrentColors
import kotlinx.coroutines.Job
import java.io.Closeable
interface PlatformInterface {
suspend fun androidServiceStart() {}
@@ -27,7 +26,6 @@ interface PlatformInterface {
fun androidPictureInPictureAllowed(): Boolean = true
fun androidCallEnded() {}
fun androidRestartNetworkObserver() {}
fun androidCreateActiveCallState(): Closeable = Closeable { }
fun androidIsXiaomiDevice(): Boolean = false
val androidApiLevel: Int? get() = null
@Composable fun androidLockPortraitOrientation() {}
@@ -43,7 +43,6 @@ class CallManager(val chatModel: ChatModel) {
private fun justAcceptIncomingCall(invitation: RcvCallInvitation, userProfile: Profile) {
with (chatModel) {
activeCall.value?.androidCallState?.close()
activeCall.value = Call(
remoteHostId = invitation.remoteHostId,
userProfile = userProfile,
@@ -52,7 +51,6 @@ class CallManager(val chatModel: ChatModel) {
callState = CallState.InvitationAccepted,
initialCallType = invitation.callType.media,
sharedKey = invitation.sharedKey,
androidCallState = platform.androidCreateActiveCallState()
)
showCallView.value = true
val useRelay = controller.appPrefs.webrtcPolicyRelay.get()
@@ -80,7 +78,6 @@ class CallManager(val chatModel: ChatModel) {
// Don't destroy WebView if you plan to accept next call right after this one
if (!switchingCall.value) {
showCallView.value = false
activeCall.value?.androidCallState?.close()
activeCall.value = null
activeCallViewIsCollapsed.value = false
platform.androidCallEnded()
@@ -7,7 +7,6 @@ import chat.simplex.res.MR
import kotlinx.datetime.Instant
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import java.io.Closeable
import java.net.URI
import kotlin.collections.ArrayList
@@ -28,9 +27,7 @@ data class Call(
// When a user has audio call, and then he wants to enable camera but didn't grant permissions for using camera yet,
// we show permissions view without enabling camera before permissions are granted. After they are granted, enabling camera
val wantsToEnableCamera: Boolean = false,
val androidCallState: Closeable
val wantsToEnableCamera: Boolean = false
) {
val encrypted: Boolean get() = localEncrypted && sharedKey != null
private val localEncrypted: Boolean get() = localCapabilities?.encryption ?: false
@@ -131,14 +131,26 @@ fun ChatInfoView(
},
syncContactConnection = {
withBGApi {
syncContactConnection(chatRh, contact, connStats, force = false)
val cStats = chatModel.controller.apiSyncContactRatchet(chatRh, contact.contactId, force = false)
connStats.value = cStats
if (cStats != null) {
withChats {
updateContactConnectionStats(chatRh, contact, cStats)
}
}
close.invoke()
}
},
syncContactConnectionForce = {
showSyncConnectionForceAlert(syncConnectionForce = {
withBGApi {
syncContactConnection(chatRh, contact, connStats, force = true)
val cStats = chatModel.controller.apiSyncContactRatchet(chatRh, contact.contactId, force = true)
connStats.value = cStats
if (cStats != null) {
withChats {
updateContactConnectionStats(chatRh, contact, cStats)
}
}
close.invoke()
}
})
@@ -177,16 +189,6 @@ fun ChatInfoView(
}
}
suspend fun syncContactConnection(rhId: Long?, contact: Contact, connectionStats: MutableState<ConnectionStats?>, force: Boolean) {
val cStats = chatModel.controller.apiSyncContactRatchet(rhId, contact.contactId, force = force)
connectionStats.value = cStats
if (cStats != null) {
withChats {
updateContactConnectionStats(rhId, contact, cStats)
}
}
}
sealed class SendReceipts {
object Yes: SendReceipts()
object No: SendReceipts()
@@ -503,7 +505,7 @@ fun ChatInfoLayout(
currentUser: User,
sendReceipts: State<SendReceipts>,
setSendReceipts: (SendReceipts) -> Unit,
connStats: MutableState<ConnectionStats?>,
connStats: State<ConnectionStats?>,
contactNetworkStatus: NetworkStatus,
customUserProfile: Profile?,
localAlias: String,
@@ -551,8 +553,8 @@ fun ChatInfoLayout(
verticalAlignment = Alignment.CenterVertically
) {
SearchButton(modifier = Modifier.fillMaxWidth(0.25f), chat, contact, close, onSearchClicked)
AudioCallButton(modifier = Modifier.fillMaxWidth(0.33f), chat, contact, connStats)
VideoButton(modifier = Modifier.fillMaxWidth(0.5f), chat, contact, connStats)
AudioCallButton(modifier = Modifier.fillMaxWidth(0.33f), chat, contact)
VideoButton(modifier = Modifier.fillMaxWidth(0.5f), chat, contact)
MuteButton(modifier = Modifier.fillMaxWidth(1f), chat, contact)
}
}
@@ -823,14 +825,12 @@ fun MuteButton(
fun AudioCallButton(
modifier: Modifier,
chat: Chat,
contact: Contact,
connectionStats: MutableState<ConnectionStats?>
contact: Contact
) {
CallButton(
modifier = modifier,
chat,
contact,
connectionStats,
icon = painterResource(MR.images.ic_call),
title = generalGetString(MR.strings.info_view_call_button),
mediaType = CallMediaType.Audio
@@ -841,14 +841,12 @@ fun AudioCallButton(
fun VideoButton(
modifier: Modifier,
chat: Chat,
contact: Contact,
connectionStats: MutableState<ConnectionStats?>
contact: Contact
) {
CallButton(
modifier = modifier,
chat,
contact,
connectionStats,
icon = painterResource(MR.images.ic_videocam),
title = generalGetString(MR.strings.info_view_video_button),
mediaType = CallMediaType.Video
@@ -860,7 +858,6 @@ fun CallButton(
modifier: Modifier,
chat: Chat,
contact: Contact,
connectionStats: MutableState<ConnectionStats?>,
icon: Painter,
title: String,
mediaType: CallMediaType
@@ -882,23 +879,7 @@ fun CallButton(
disabledLook = !canCall,
onClick =
when {
canCall -> { {
val connStats = connectionStats.value
if (connStats != null) {
if (connStats.ratchetSyncState == RatchetSyncState.Ok) {
startChatCall(chat.remoteHostId, chat.chatInfo, mediaType)
} else if (connStats.ratchetSyncAllowed) {
showFixConnectionAlert(syncConnection = {
withBGApi { syncContactConnection(chat.remoteHostId, contact, connectionStats, force = false) }
})
} else {
AlertManager.shared.showAlertMsg(
generalGetString(MR.strings.cant_call_contact_alert_title),
generalGetString(MR.strings.encryption_renegotiation_in_progress)
)
}
}
} }
canCall -> { { startChatCall(chat.remoteHostId, chat.chatInfo, mediaType) } }
contact.nextSendGrpInv -> { { showCantCallContactSendMessageAlert() } }
!contact.active -> { { showCantCallContactDeletedAlert() } }
!contact.ready -> { { showCantCallContactConnectingAlert() } }
@@ -1284,15 +1265,6 @@ fun showSyncConnectionForceAlert(syncConnectionForce: () -> Unit) {
)
}
fun showFixConnectionAlert(syncConnection: () -> Unit) {
AlertManager.shared.showAlertDialog(
title = generalGetString(MR.strings.sync_connection_question),
text = generalGetString(MR.strings.sync_connection_desc),
confirmText = generalGetString(MR.strings.sync_connection_confirm),
onConfirm = syncConnection,
)
}
fun queueInfoText(info: Pair<RcvMsgInfo?, ServerQueueInfo>): String {
val (rcvMsgInfo, qInfo) = info
val msgInfo: String = if (rcvMsgInfo != null) json.encodeToString(rcvMsgInfo) else generalGetString(MR.strings.message_queue_info_none)
@@ -29,7 +29,6 @@ import androidx.compose.ui.unit.*
import chat.simplex.common.model.*
import chat.simplex.common.model.CIDirection.GroupRcv
import chat.simplex.common.model.ChatController.appPrefs
import chat.simplex.common.model.ChatModel.activeCall
import chat.simplex.common.model.ChatModel.controller
import chat.simplex.common.model.ChatModel.withChats
import chat.simplex.common.ui.theme.*
@@ -574,8 +573,7 @@ fun startChatCall(remoteHostId: Long?, chatInfo: ChatInfo, media: CallMediaType)
if (chatInfo is ChatInfo.Direct) {
val contactInfo = chatModel.controller.apiContactInfo(remoteHostId, chatInfo.contact.contactId)
val profile = contactInfo?.second ?: chatModel.currentUser.value?.profile?.toProfile() ?: return@withBGApi
activeCall.value?.androidCallState?.close()
chatModel.activeCall.value = Call(remoteHostId = remoteHostId, contact = chatInfo.contact, callUUID = null, callState = CallState.WaitCapabilities, initialCallType = media, userProfile = profile, androidCallState = platform.androidCreateActiveCallState())
chatModel.activeCall.value = Call(remoteHostId = remoteHostId, contact = chatInfo.contact, callUUID = null, callState = CallState.WaitCapabilities, initialCallType = media, userProfile = profile)
chatModel.showCallView.value = true
chatModel.callCommand.add(WCallCommand.Capabilities(media))
}
@@ -984,7 +982,6 @@ fun BoxScope.ChatItemsList(
})
val maxHeight = remember { derivedStateOf { listState.value.layoutInfo.viewportEndOffset - topPaddingToContentPx.value } }
val loadingMoreItems = remember { mutableStateOf(false) }
val animatedScrollingInProgress = remember { mutableStateOf(false) }
val ignoreLoadingRequests = remember(remoteHostId) { mutableSetOf<Long>() }
if (!loadingMoreItems.value) {
PreloadItems(chatInfo.id, if (searchValueIsEmpty.value) ignoreLoadingRequests else mutableSetOf(), mergedItems, listState, ChatPagination.UNTIL_PRELOAD_COUNT) { chatId, pagination ->
@@ -1005,7 +1002,7 @@ fun BoxScope.ChatItemsList(
val chatInfoUpdated = rememberUpdatedState(chatInfo)
val highlightedItems = remember { mutableStateOf(setOf<Long>()) }
val scope = rememberCoroutineScope()
val scrollToItem: (Long) -> Unit = remember { scrollToItem(searchValue, loadingMoreItems, animatedScrollingInProgress, highlightedItems, chatInfoUpdated, maxHeight, scope, reversedChatItems, mergedItems, listState, loadMessages) }
val scrollToItem: (Long) -> Unit = remember { scrollToItem(searchValue, loadingMoreItems, highlightedItems, chatInfoUpdated, maxHeight, scope, reversedChatItems, mergedItems, listState, loadMessages) }
val scrollToQuotedItemFromItem: (Long) -> Unit = remember { findQuotedItemFromItem(remoteHostIdUpdated, chatInfoUpdated, scope, scrollToItem) }
LoadLastItems(loadingMoreItems, remoteHostId, chatInfo)
@@ -1315,7 +1312,7 @@ fun BoxScope.ChatItemsList(
}
}
}
FloatingButtons(loadingMoreItems, animatedScrollingInProgress, mergedItems, unreadCount, maxHeight, composeViewHeight, searchValue, markChatRead, listState)
FloatingButtons(loadingMoreItems, mergedItems, unreadCount, maxHeight, composeViewHeight, searchValue, markChatRead, listState)
FloatingDate(Modifier.padding(top = 10.dp + topPaddingToContent(true)).align(Alignment.TopCenter), mergedItems, listState)
LaunchedEffect(Unit) {
@@ -1324,15 +1321,6 @@ fun BoxScope.ChatItemsList(
chatViewScrollState.value = it
}
}
LaunchedEffect(Unit) {
snapshotFlow { listState.value.isScrollInProgress }
.filter { !it }
.collect {
if (animatedScrollingInProgress.value) {
animatedScrollingInProgress.value = false
}
}
}
}
@Composable
@@ -1410,7 +1398,6 @@ private fun NotifyChatListOnFinishingComposition(
@Composable
fun BoxScope.FloatingButtons(
loadingMoreItems: MutableState<Boolean>,
animatedScrollingInProgress: MutableState<Boolean>,
mergedItems: State<MergedItems>,
unreadCount: State<Int>,
maxHeight: State<Int>,
@@ -1450,14 +1437,8 @@ fun BoxScope.FloatingButtons(
bottomUnreadCount,
showBottomButtonWithCounter,
showBottomButtonWithArrow,
animatedScrollingInProgress,
composeViewHeight,
onClick = {
scope.launch {
animatedScrollingInProgress.value = true
tryBlockAndSetLoadingMore(loadingMoreItems) { listState.value.animateScrollToItem(0) }
}
}
onClick = { scope.launch { tryBlockAndSetLoadingMore(loadingMoreItems) { listState.value.animateScrollToItem(0) } } }
)
// Don't show top FAB if is in search
if (searchValue.value.isNotEmpty()) return
@@ -1468,15 +1449,11 @@ fun BoxScope.FloatingButtons(
TopEndFloatingButton(
Modifier.padding(end = DEFAULT_PADDING, top = 24.dp + topPaddingToContent(true)).align(Alignment.TopEnd),
topUnreadCount,
animatedScrollingInProgress,
onClick = {
val index = mergedItems.value.items.indexOfLast { it.hasUnread() }
if (index != -1) {
// scroll to the top unread item
scope.launch {
animatedScrollingInProgress.value = true
tryBlockAndSetLoadingMore(loadingMoreItems) { listState.value.animateScrollToItem(index + 1, -maxHeight.value) }
}
scope.launch { tryBlockAndSetLoadingMore(loadingMoreItems) { listState.value.animateScrollToItem(index + 1, -maxHeight.value) } }
}
},
onLongClick = { showDropDown.value = true }
@@ -1616,11 +1593,10 @@ fun MemberImage(member: GroupMember) {
private fun TopEndFloatingButton(
modifier: Modifier = Modifier,
unreadCount: State<Int>,
animatedScrollingInProgress: State<Boolean>,
onClick: () -> Unit,
onLongClick: () -> Unit
) {
if (remember { derivedStateOf { unreadCount.value > 0 && !animatedScrollingInProgress.value } }.value) {
if (unreadCount.value > 0) {
val interactionSource = interactionSourceWithDetection(onClick, onLongClick)
FloatingActionButton(
{}, // no action here
@@ -1861,7 +1837,6 @@ private fun lastFullyVisibleIemInListState(topPaddingToContentPx: State<Int>, de
private fun scrollToItem(
searchValue: State<String>,
loadingMoreItems: MutableState<Boolean>,
animatedScrollingInProgress: MutableState<Boolean>,
highlightedItems: MutableState<Set<Long>>,
chatInfo: State<ChatInfo>,
maxHeight: State<Int>,
@@ -1899,7 +1874,6 @@ private fun scrollToItem(
highlightedItems.value = setOf(itemId)
} else {
withContext(scope.coroutineContext) {
animatedScrollingInProgress.value = true
listState.value.animateScrollToItem(min(reversedChatItems.value.lastIndex, index + 1), -maxHeight.value)
highlightedItems.value = setOf(itemId)
}
@@ -1961,11 +1935,10 @@ private fun BoxScope.BottomEndFloatingButton(
unreadCount: State<Int>,
showButtonWithCounter: State<Boolean>,
showButtonWithArrow: State<Boolean>,
animatedScrollingInProgress: State<Boolean>,
composeViewHeight: State<Dp>,
onClick: () -> Unit
) = when {
showButtonWithCounter.value && !animatedScrollingInProgress.value -> {
showButtonWithCounter.value -> {
FloatingActionButton(
onClick = onClick,
elevation = FloatingActionButtonDefaults.elevation(0.dp, 0.dp, 0.dp, 0.dp),
@@ -1979,7 +1952,7 @@ private fun BoxScope.BottomEndFloatingButton(
)
}
}
showButtonWithArrow.value && !animatedScrollingInProgress.value -> {
showButtonWithArrow.value -> {
FloatingActionButton(
onClick = onClick,
elevation = FloatingActionButtonDefaults.elevation(0.dp, 0.dp, 0.dp, 0.dp),
@@ -8,6 +8,8 @@ import SectionSpacer
import SectionTextFooter
import SectionView
import androidx.compose.desktop.ui.tooling.preview.Preview
import java.net.URI
import androidx.compose.foundation.*
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.text.InlineTextContent
import androidx.compose.foundation.text.appendInlineContent
@@ -56,19 +58,6 @@ fun GroupMemberInfoView(
val developerTools = chatModel.controller.appPrefs.developerTools.get()
var progressIndicator by remember { mutableStateOf(false) }
fun syncMemberConnection() {
withBGApi {
val r = chatModel.controller.apiSyncGroupMemberRatchet(rhId, groupInfo.apiId, member.groupMemberId, force = false)
if (r != null) {
connStats.value = r.second
withChats {
updateGroupMemberConnectionStats(rhId, groupInfo, r.first, r.second)
}
close.invoke()
}
}
}
if (chat != null) {
val newRole = remember { mutableStateOf(member.memberRole) }
GroupMemberInfoLayout(
@@ -89,30 +78,19 @@ fun GroupMemberInfoView(
}
},
createMemberContact = {
if (connectionStats != null) {
if (connectionStats.ratchetSyncState == RatchetSyncState.Ok) {
withBGApi {
progressIndicator = true
val memberContact = chatModel.controller.apiCreateMemberContact(rhId, groupInfo.apiId, member.groupMemberId)
if (memberContact != null) {
val memberChat = Chat(remoteHostId = rhId, ChatInfo.Direct(memberContact), chatItems = arrayListOf())
withChats {
addChat(memberChat)
openLoadedChat(memberChat)
}
closeAll()
chatModel.setContactNetworkStatus(memberContact, NetworkStatus.Connected())
}
progressIndicator = false
withBGApi {
progressIndicator = true
val memberContact = chatModel.controller.apiCreateMemberContact(rhId, groupInfo.apiId, member.groupMemberId)
if (memberContact != null) {
val memberChat = Chat(remoteHostId = rhId, ChatInfo.Direct(memberContact), chatItems = arrayListOf())
withChats {
addChat(memberChat)
openLoadedChat(memberChat)
}
} else if (connectionStats.ratchetSyncAllowed) {
showFixConnectionAlert(syncConnection = { syncMemberConnection() })
} else {
AlertManager.shared.showAlertMsg(
generalGetString(MR.strings.cant_send_message_to_member_alert_title),
generalGetString(MR.strings.encryption_renegotiation_in_progress)
)
closeAll()
chatModel.setContactNetworkStatus(memberContact, NetworkStatus.Connected())
}
progressIndicator = false
}
},
connectViaAddress = { connReqUri ->
@@ -171,7 +149,16 @@ fun GroupMemberInfoView(
})
},
syncMemberConnection = {
syncMemberConnection()
withBGApi {
val r = chatModel.controller.apiSyncGroupMemberRatchet(rhId, groupInfo.apiId, member.groupMemberId, force = false)
if (r != null) {
connStats.value = r.second
withChats {
updateGroupMemberConnectionStats(rhId, groupInfo, r.first, r.second)
}
close.invoke()
}
}
},
syncMemberConnectionForce = {
showSyncConnectionForceAlert(syncConnectionForce = {
@@ -348,20 +335,9 @@ fun GroupMemberInfoLayout(
val knownChat = if (contactId != null) knownDirectChat(contactId) else null
if (knownChat != null) {
val (chat, contact) = knownChat
val knownContactConnectionStats: MutableState<ConnectionStats?> = remember { mutableStateOf(null) }
LaunchedEffect(contact.contactId) {
withBGApi {
val contactInfo = chatModel.controller.apiContactInfo(chat.remoteHostId, chat.chatInfo.apiId)
if (contactInfo != null) {
knownContactConnectionStats.value = contactInfo.first
}
}
}
OpenChatButton(modifier = Modifier.fillMaxWidth(0.33f), onClick = { openDirectChat(contact.contactId) })
AudioCallButton(modifier = Modifier.fillMaxWidth(0.5f), chat, contact, knownContactConnectionStats)
VideoButton(modifier = Modifier.fillMaxWidth(1f), chat, contact, knownContactConnectionStats)
AudioCallButton(modifier = Modifier.fillMaxWidth(0.5f), chat, contact)
VideoButton(modifier = Modifier.fillMaxWidth(1f), chat, contact)
} else if (groupInfo.fullGroupPreferences.directMessages.on(groupInfo.membership)) {
if (contactId != null) {
OpenChatButton(modifier = Modifier.fillMaxWidth(0.33f), onClick = { openDirectChat(contactId) }) // legacy - only relevant for direct contacts created when joining group
@@ -14,8 +14,10 @@ import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import chat.simplex.common.model.*
import chat.simplex.common.model.ChatController.appPrefs
import chat.simplex.common.platform.*
@@ -53,7 +55,7 @@ fun ModalData.ChooseServerOperators(
Column(Modifier.fillMaxWidth().padding(horizontal = DEFAULT_PADDING), horizontalAlignment = Alignment.CenterHorizontally) {
OnboardingInformationButton(
stringResource(MR.strings.how_it_helps_privacy),
onClick = { modalManager.showModal { ChooseServerOperatorsInfoView(modalManager) } }
onClick = { modalManager.showModal { ChooseServerOperatorsInfoView() } }
)
}
@@ -344,9 +346,7 @@ private fun enabledOperators(operators: List<ServerOperator>, selectedOperatorId
}
@Composable
private fun ChooseServerOperatorsInfoView(
modalManager: ModalManager
) {
private fun ChooseServerOperatorsInfoView() {
ColumnWithScrollBar {
AppBarTitle(stringResource(MR.strings.onboarding_network_operators))
@@ -362,7 +362,7 @@ private fun ChooseServerOperatorsInfoView(
SectionView(title = stringResource(MR.strings.onboarding_network_about_operators).uppercase()) {
chatModel.conditions.value.serverOperators.forEach { op ->
ServerOperatorRow(op, modalManager)
ServerOperatorRow(op)
}
}
SectionBottomSpacer()
@@ -371,12 +371,11 @@ private fun ChooseServerOperatorsInfoView(
@Composable()
private fun ServerOperatorRow(
operator: ServerOperator,
modalManager: ModalManager
operator: ServerOperator
) {
SectionItemView(
{
modalManager.showModalCloseable { close ->
ModalManager.start.showModalCloseable { close ->
OperatorInfoView(operator)
}
}
File diff suppressed because it is too large Load Diff
@@ -524,10 +524,6 @@
<string name="sync_connection_force_question">Renegotiate encryption?</string>
<string name="sync_connection_force_desc">The encryption is working and the new encryption agreement is not required. It may result in connection errors!</string>
<string name="sync_connection_force_confirm">Renegotiate</string>
<string name="sync_connection_question">Fix connection?</string>
<string name="sync_connection_desc">Connection requires encryption renegotiation.</string>
<string name="sync_connection_confirm">Fix</string>
<string name="encryption_renegotiation_in_progress">Encryption renegotiation in progress.</string>
<string name="view_security_code">View security code</string>
<string name="verify_security_code">Verify security code</string>
@@ -1756,6 +1752,7 @@
<string name="operator_same_conditions_will_be_applied"><![CDATA[The same conditions will apply to operator <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[The same conditions will apply to operator(s): <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_applied"><![CDATA[These conditions will also apply for: <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[The same conditions will apply to operator: <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[Conditions will be accepted for operator(s): <b>%s</b>.]]></string>
<string name="operators_conditions_will_also_apply"><![CDATA[These conditions will also apply for: <b>%s</b>.]]></string>
<string name="view_conditions">View conditions</string>
@@ -2406,7 +2403,7 @@
<string name="servers_info_messages_sent">Messages sent</string>
<string name="servers_info_messages_received">Messages received</string>
<string name="servers_info_details">Details</string>
<string name="servers_info_private_data_disclaimer">Starting from %s.\nAll data is kept private on your device..</string>
<string name="servers_info_private_data_disclaimer">Starting from %s.\nAll data is private to your device.</string>
<string name="servers_info_subscriptions_section_header">Message reception</string>
<string name="servers_info_subscriptions_connections_subscribed">Active connections</string>
<string name="servers_info_subscriptions_connections_pending">Pending</string>
@@ -1860,7 +1860,7 @@
<string name="smp_servers_configured">Nastavené SMP servery</string>
<string name="servers_info_subscriptions_connections_pending">Probíhá</string>
<string name="chunks_uploaded">Části nahrány</string>
<string name="n_file_errors">%1$d chyba souboru(ů):\n%2$s</string>
<string name="n_file_errors">%1$d chuba souboru(ů):\n%2$s</string>
<string name="n_other_file_errors">%1$d jiná chyba souboru(ů).</string>
<string name="error_forwarding_messages">Chyba přeposílaní zpráv</string>
<string name="srv_error_host">Adresa serveru není kompatibilní s nastavením sítě.</string>
@@ -62,7 +62,7 @@
<string name="sender_cancelled_file_transfer">Der Absender hat die Dateiübertragung abgebrochen.</string>
<string name="error_receiving_file">Fehler beim Empfangen der Datei</string>
<string name="error_creating_address">Fehler beim Erstellen der Adresse</string>
<string name="contact_already_exists">Kontakt besteht bereits</string>
<string name="contact_already_exists">Kontakt ist bereits vorhanden</string>
<string name="you_are_already_connected_to_vName_via_this_link">Sie sind bereits mit %1$s verbunden.</string>
<string name="invalid_connection_link">Ungültiger Verbindungslink</string>
<string name="please_check_correct_link_and_maybe_ask_for_a_new_one">Überprüfen Sie bitte, ob Sie den richtigen Link genutzt haben, oder bitten Sie Ihren Kontakt darum, Ihnen nochmal einen Link zuzusenden.</string>
@@ -88,9 +88,9 @@
<string name="icon_descr_instant_notifications">Sofortige Benachrichtigungen</string>
<string name="service_notifications">Sofortige Benachrichtigungen!</string>
<string name="service_notifications_disabled">Sofortige Benachrichtigungen sind deaktiviert!</string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Um Ihre Privatsphäre zu schützen, <b>läuft SimpleX im Hintergrund ab</b>, anstatt Push-Benachrichtigungen zu nutzen.]]></string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Um Ihre Privatsphäre zu schützen, kann statt der Push-Benachrichtigung der <b>SimpleX-Hintergrunddienst genutzt werden</b> dieser benötigt ein paar Prozent Akkuleistung am Tag.]]></string>
<string name="it_can_disabled_via_settings_notifications_still_shown"><![CDATA[<b>Diese können über die Einstellungen deaktiviert werden</b> solange die App läuft, werden Benachrichtigungen weiterhin angezeigt.]]></string>
<string name="turn_off_battery_optimization"><![CDATA[Um Benachrichtigungen sofort zu erhalten, <b>Erlauben Sie es</b> im nächsten Dialog.]]></string>
<string name="turn_off_battery_optimization"><![CDATA[Um diese Funktion zu nutzen, wählen Sie im nächsten Dialog bitte die Einstellung <b>Erlauben Sie SimpleX im Hintergrund abzulaufen</b>. Ansonsten werden die Benachrichtigungen deaktiviert.]]></string>
<string name="turning_off_service_and_periodic">Die Akkuoptimierung ist aktiv, der Hintergrunddienst und die periodische Nachfrage nach neuen Nachrichten ist abgeschaltet. Sie können diese Funktion in den Einstellungen wieder aktivieren.</string>
<string name="periodic_notifications">Periodische Benachrichtigungen</string>
<string name="periodic_notifications_disabled">Periodische Benachrichtigungen sind deaktiviert!</string>
@@ -462,7 +462,7 @@
<string name="callstate_connected">Verbunden</string>
<string name="callstate_ended">Beendet</string>
<!-- SimpleXInfo -->
<string name="next_generation_of_private_messaging">Die Zukunft des Messagings</string>
<string name="next_generation_of_private_messaging">Die nächste Generation \ndes privaten Messagings</string>
<string name="privacy_redefined">Datenschutz neu definiert</string>
<string name="first_platform_without_user_ids">Keine Benutzerkennungen.</string>
<string name="immune_to_spam_and_abuse">Immun gegen Spam</string>
@@ -474,8 +474,8 @@
<string name="how_it_works">Wie es funktioniert</string>
<!-- How SimpleX Works -->
<string name="how_simplex_works">Wie SimpleX funktioniert</string>
<string name="to_protect_privacy_simplex_has_ids_for_queues">SimpleX nutzt individuelle Kennungen für jeden Ihrer Kontakte, um Ihre Privatsphäre zu schützen.</string>
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages">Nur die Endgeräte speichern Benutzerprofile, Kontakte, Gruppen und Nachrichten.</string>
<string name="to_protect_privacy_simplex_has_ids_for_queues">Zum Schutz Ihrer Privatsphäre verwendet SimpleX anstelle von Benutzerkennungen, die von allen anderen Plattformen verwendet werden, Kennungen für Nachrichtenwarteschlangen, die für jeden Ihrer Kontakte individuell sind.</string>
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages"><![CDATA[Nur die Endgeräte speichern die Benutzerprofile, Kontakte, Gruppen und Nachrichten, welche über eine <b>zweischichtige Ende-zu-Ende-Verschlüsselung</b> gesendet werden.]]></string>
<string name="read_more_in_github_with_link"><![CDATA[Erfahren Sie in unserem <font color="#0088ff">GitHub-Repository</font> mehr dazu.]]></string>
<!-- MakeConnection -->
<string name="paste_the_link_you_received">Fügen Sie den erhaltenen Link ein</string>
@@ -683,7 +683,7 @@
<string name="alert_title_group_invitation_expired">Die Einladung ist abgelaufen!</string>
<string name="alert_message_group_invitation_expired">Die Gruppeneinladung ist nicht mehr gültig, da sie vom Absender entfernt wurde.</string>
<string name="alert_title_no_group">Die Gruppe wurde nicht gefunden!</string>
<string name="alert_message_no_group">Diese Gruppe ist nicht mehr vorhanden.</string>
<string name="alert_message_no_group">Diese Gruppe existiert nicht mehr.</string>
<string name="alert_title_cant_invite_contacts">Kontakte können nicht eingeladen werden!</string>
<string name="alert_title_cant_invite_contacts_descr">Sie verwenden ein Inkognito-Profil für diese Gruppe. Um zu verhindern, dass Sie Ihr Hauptprofil teilen, ist in diesem Fall das Einladen von Kontakten nicht erlaubt.</string>
<!-- CIGroupInvitationView.kt -->
@@ -781,8 +781,8 @@
<string name="change_verb">Ändern</string>
<string name="switch_verb">Wechseln</string>
<string name="change_member_role_question">Die Mitgliederrolle ändern?</string>
<string name="member_role_will_be_changed_with_notification">Die Rolle wird auf %s geändert. Alle Mitglieder der Gruppe werden benachrichtigt.</string>
<string name="member_role_will_be_changed_with_invitation">Die Rolle wird auf %s geändert. Das Mitglied wird eine neue Einladung erhalten.</string>
<string name="member_role_will_be_changed_with_notification">Die Mitgliederrolle wird auf "%s" geändert. Alle Mitglieder der Gruppe werden benachrichtigt.</string>
<string name="member_role_will_be_changed_with_invitation">Die Mitgliederrolle wird auf "%s" geändert. Das Mitglied wird eine neue Einladung erhalten.</string>
<string name="error_removing_member">Fehler beim Entfernen des Mitglieds</string>
<string name="error_changing_role">Fehler beim Ändern der Rolle</string>
<string name="info_row_group">Gruppe</string>
@@ -872,12 +872,12 @@
<string name="prohibit_message_deletion">Unwiederbringliches Löschen von Nachrichten nicht erlauben.</string>
<string name="allow_to_send_voice">Das Senden von Sprachnachrichten erlauben.</string>
<string name="prohibit_sending_voice">Das Senden von Sprachnachrichten nicht erlauben.</string>
<string name="group_members_can_send_dms">Mitglieder können Direktnachrichten versenden.</string>
<string name="group_members_can_send_dms">Gruppenmitglieder können Direktnachrichten versenden.</string>
<string name="direct_messages_are_prohibited_in_group">In dieser Gruppe sind Direktnachrichten zwischen Mitgliedern nicht erlaubt.</string>
<string name="group_members_can_delete">Mitglieder können gesendete Nachrichten unwiederbringlich löschen (bis zu 24 Stunden).</string>
<string name="message_deletion_prohibited_in_chat">Das unwiederbringliche Löschen von Nachrichten ist nicht erlaubt.</string>
<string name="group_members_can_send_voice">Mitglieder können Sprachnachrichten versenden.</string>
<string name="voice_messages_are_prohibited">Sprachnachrichten sind nicht erlaubt.</string>
<string name="group_members_can_delete">Gruppenmitglieder können gesendete Nachrichten unwiederbringlich löschen (bis zu 24 Stunden).</string>
<string name="message_deletion_prohibited_in_chat">In dieser Gruppe ist das unwiederbringliche Löschen von Nachrichten nicht erlaubt.</string>
<string name="group_members_can_send_voice">Gruppenmitglieder können Sprachnachrichten versenden.</string>
<string name="voice_messages_are_prohibited">In dieser Gruppe sind Sprachnachrichten nicht erlaubt.</string>
<string name="live">LIVE</string>
<string name="view_security_code">Schauen Sie sich den Sicherheitscode an</string>
<string name="onboarding_notifications_mode_service">Sofort</string>
@@ -887,7 +887,7 @@
<string name="is_verified">%s wurde erfolgreich überprüft</string>
<string name="clear_verification">Verifikation zurücknehmen</string>
<string name="onboarding_notifications_mode_off">Solange die App abläuft</string>
<string name="onboarding_notifications_mode_subtitle">Auswirkung auf den Akku</string>
<string name="onboarding_notifications_mode_subtitle">Kann später über die Einstellungen geändert werden.</string>
<string name="delete_after">Löschen nach</string>
<string name="ttl_hour">%d Stunde</string>
<string name="ttl_hours">%d Stunden</string>
@@ -922,8 +922,8 @@
<string name="create_group_link">Gruppenlink erstellen</string>
<string name="allow_your_contacts_to_send_disappearing_messages">Erlauben Sie Ihren Kontakten das Senden von verschwindenden Nachrichten.</string>
<string name="prohibit_sending_disappearing_messages">Das Senden von verschwindenden Nachrichten nicht erlauben.</string>
<string name="disappearing_messages_are_prohibited">Verschwindende Nachrichten sind nicht erlaubt.</string>
<string name="group_members_can_send_disappearing">Mitglieder können verschwindende Nachrichten senden.</string>
<string name="disappearing_messages_are_prohibited">In dieser Gruppe sind verschwindende Nachrichten nicht erlaubt.</string>
<string name="group_members_can_send_disappearing">Gruppenmitglieder können verschwindende Nachrichten senden.</string>
<string name="v4_3_improved_server_configuration_desc">Fügen Sie Server durch Scannen der QR-Codes hinzu.</string>
<string name="v4_4_disappearing_messages">Verschwindende Nachrichten</string>
<string name="accept_feature">Übernehmen</string>
@@ -978,7 +978,7 @@
<string name="users_delete_profile_for">Chat-Profil löschen für</string>
<string name="network_option_ping_count">PING-Zähler</string>
<string name="update_network_session_mode_question">Transport-Isolations-Modus aktualisieren\?</string>
<string name="smp_servers_per_user">Nachrichten-Server für neue Verbindungen über Ihr aktuelles Chat-Profil</string>
<string name="smp_servers_per_user">Mögliche Server für neue Verbindungen über Ihr aktuelles Chat-Profil</string>
<string name="files_and_media_section">Dateien &amp; Medien</string>
<string name="network_session_mode_transport_isolation">Transport-Isolation</string>
<string name="users_delete_question">Chat-Profil löschen\?</string>
@@ -1248,7 +1248,7 @@
<string name="if_you_enter_passcode_data_removed">Wenn Sie diesen Zugangscode während des Öffnens der App eingeben, werden alle App-Daten unwiederbringlich gelöscht!</string>
<string name="self_destruct_passcode">Selbstzerstörungs-Zugangscode</string>
<string name="set_passcode">Zugangscode einstellen</string>
<string name="message_reactions_are_prohibited">Reaktionen auf Nachrichten sind nicht erlaubt.</string>
<string name="message_reactions_are_prohibited">In dieser Gruppe sind Reaktionen auf Nachrichten nicht erlaubt.</string>
<string name="error_loading_details">Fehler beim Laden von Details</string>
<string name="received_message">Empfangene Nachricht</string>
<string name="info_menu">Information</string>
@@ -1279,7 +1279,7 @@
<string name="only_your_contact_can_add_message_reactions">Nur Ihr Kontakt kann Reaktionen auf Nachrichten geben.</string>
<string name="allow_message_reactions">Reaktionen auf Nachrichten erlauben.</string>
<string name="prohibit_message_reactions_group">Reaktionen auf Nachrichten nicht erlauben.</string>
<string name="group_members_can_add_message_reactions">Mitglieder können eine Reaktion auf Nachrichten geben.</string>
<string name="group_members_can_add_message_reactions">Gruppenmitglieder können eine Reaktion auf Nachrichten geben.</string>
<string name="whats_new_read_more">Mehr erfahren</string>
<string name="v5_1_message_reactions_descr">Endlich haben wir sie! 🚀</string>
<string name="v5_1_message_reactions">Reaktionen auf Nachrichten</string>
@@ -1294,7 +1294,9 @@
<string name="v5_1_custom_themes_descr">Farbdesigns anpassen und weitergeben.</string>
<string name="custom_time_unit_days">Tage</string>
<string name="custom_time_unit_hours">Stunden</string>
<string name="v5_1_better_messages_descr">- Bis zu 5 Minuten lange Sprachnachrichten\n- Zeitdauer für verschwindende Nachrichten anpassen\n- Nachrichtenverlauf bearbeiten</string>
<string name="v5_1_better_messages_descr">- Bis zu 5 Minuten lange Sprachnachrichten
\n- Zeitdauer für verschwindende Nachrichten anpassen
\n- Nachrichtenverlauf bearbeiten</string>
<string name="custom_time_picker_custom">benutzerdefiniert</string>
<string name="custom_time_unit_months">Monate</string>
<string name="custom_time_picker_select">Auswählen</string>
@@ -1323,9 +1325,9 @@
<string name="abort_switch_receiving_address_question">Wechsel der Empfängeradresse beenden?</string>
<string name="files_and_media_prohibited">Dateien und Medien sind nicht erlaubt!</string>
<string name="only_owners_can_enable_files_and_media">Nur Gruppenbesitzer können Dateien und Medien aktivieren.</string>
<string name="group_members_can_send_files">Mitglieder können Dateien und Medien senden.</string>
<string name="group_members_can_send_files">Gruppenmitglieder können Dateien und Medien senden.</string>
<string name="abort_switch_receiving_address_desc">Der Wechsel der Empfängeradresse wird beendet. Die bisherige Adresse wird weiter verwendet.</string>
<string name="files_are_prohibited_in_group">Dateien und Medien sind nicht erlaubt.</string>
<string name="files_are_prohibited_in_group">In dieser Gruppe sind Dateien und Medien nicht erlaubt.</string>
<string name="unfavorite_chat">Favorit entfernen</string>
<string name="favorite_chat">Favorit</string>
<string name="no_filtered_chats">Keine gefilterten Chats</string>
@@ -1383,7 +1385,9 @@
<string name="v5_2_fix_encryption_descr">Reparatur der Verschlüsselung nach Wiedereinspielen von Backups.</string>
<string name="v5_2_more_things">Ein paar weitere Dinge</string>
<string name="v5_2_disappear_one_message_descr">Auch wenn sie in den Unterhaltungen deaktiviert sind.</string>
<string name="v5_2_more_things_descr">- Stabilere Zustellung von Nachrichten.\n- Ein bisschen verbesserte Gruppen.\n- Und mehr!</string>
<string name="v5_2_more_things_descr">- stabilere Zustellung von Nachrichten.
\n- ein bisschen verbesserte Gruppen.
\n- und mehr!</string>
<string name="dont_enable_receipts">Nicht aktivieren</string>
<string name="sending_delivery_receipts_will_be_enabled">Das Senden von Empfangsbestätigungen an alle Kontakte wird aktiviert.</string>
<string name="you_can_enable_delivery_receipts_later_alert">Sie können diese später in den Datenschutz- und Sicherheits-Einstellungen der App aktivieren.</string>
@@ -1453,7 +1457,9 @@
<string name="v5_3_new_interface_languages_descr">Arabisch, Bulgarisch, Finnisch, Hebräisch, Thailändisch und Ukrainisch - Dank der Nutzer und Weblate.</string>
<string name="v5_3_new_desktop_app_descr">Erstellen eines neuen Profils in der Desktop-App. 💻</string>
<string name="v5_3_simpler_incognito_mode_descr">Inkognito beim Verbinden einschalten.</string>
<string name="v5_3_discover_join_groups_descr">- Verbindung mit dem Directory-Service (BETA)!\n- Empfangsbestätigungen (für bis zu 20 Mitglieder).\n- Schneller und stabiler.</string>
<string name="v5_3_discover_join_groups_descr">- Verbindung mit dem Directory-Service (BETA)!
\n- Empfangsbestätigungen (für bis zu 20 Mitglieder).
\n- Schneller und stabiler.</string>
<string name="member_contact_send_direct_message">Direktnachricht senden</string>
<string name="rcv_group_event_member_created_contact">Direkt miteinander verbunden</string>
<string name="expand_verb">Erweitern</string>
@@ -1562,7 +1568,9 @@
<string name="paste_desktop_address">Desktop-Adresse einfügen</string>
<string name="verify_code_with_desktop">Code mit dem Desktop überprüfen</string>
<string name="scan_qr_code_from_desktop">Den QR-Code vom Desktop scannen</string>
<string name="v5_4_more_things_descr">- Optionale Benachrichtigung von gelöschten Kontakten.\n- Profilnamen mit Leerzeichen.\n- Und mehr!</string>
<string name="v5_4_more_things_descr">- Optionale Benachrichtigung von gelöschten Kontakten.
\n- Profilnamen mit Leerzeichen.
\n- Und mehr!</string>
<string name="scan_from_mobile">Vom Mobiltelefon scannen</string>
<string name="verify_connections">Verbindungen überprüfen</string>
<string name="loading_remote_file_desc">Bitte warten Sie, solange die Datei von dem verknüpften Mobiltelefon geladen wird</string>
@@ -1791,12 +1799,12 @@
<string name="simplex_links_not_allowed">SimpleX-Links sind nicht erlaubt</string>
<string name="voice_messages_not_allowed">Sprachnachrichten sind nicht erlaubt</string>
<string name="simplex_links">SimpleX-Links</string>
<string name="group_members_can_send_simplex_links">Mitglieder können SimpleX-Links senden.</string>
<string name="group_members_can_send_simplex_links">Gruppenmitglieder können SimpleX-Links senden.</string>
<string name="feature_roles_admins">Administratoren</string>
<string name="feature_roles_all_members">Alle Mitglieder</string>
<string name="feature_enabled_for">Aktiviert für</string>
<string name="feature_roles_owners">Eigentümer</string>
<string name="simplex_links_are_prohibited_in_group">SimpleX-Links sind nicht erlaubt.</string>
<string name="simplex_links_are_prohibited_in_group">In dieser Gruppe sind SimpleX-Links nicht erlaubt.</string>
<string name="prohibit_sending_simplex_links">Das Senden von SimpleX-Links nicht erlauben.</string>
<string name="allow_to_send_simplex_links">Das Senden von SimpleX-Links erlauben.</string>
<string name="audio_device_speaker">Lautsprecher</string>
@@ -2025,7 +2033,8 @@
<string name="appearance_zoom">Zoom</string>
<string name="smp_server">SMP-Server</string>
<string name="servers_info_target">Informationen zeigen für</string>
<string name="servers_info_private_data_disclaimer">Beginnend mit %s.\nAlle Daten werden nur auf Ihrem Gerät gespeichert.</string>
<string name="servers_info_private_data_disclaimer">Beginnend mit %s.
\nAlle Daten werden nur auf Ihrem Gerät gespeichert.</string>
<string name="servers_info_statistics_section_header">Statistiken</string>
<string name="servers_info_transport_sessions_section_header">Transport-Sitzungen</string>
<string name="servers_info_uploaded">Hochgeladen</string>
@@ -2068,7 +2077,7 @@
<string name="deleted_chats">Archivierte Kontakte</string>
<string name="no_filtered_contacts">Keine gefilterten Kontakte</string>
<string name="contact_list_header_title">Ihre Kontakte</string>
<string name="one_hand_ui">App-Symbolleiste unten</string>
<string name="one_hand_ui">Chat-Symbolleiste unten</string>
<string name="calls_prohibited_ask_to_enable_calls_alert_text">Bitten Sie Ihren Kontakt darum, Anrufe zu aktivieren.</string>
<string name="you_need_to_allow_calls">Sie müssen Ihrem Kontakt Anrufe zu Ihnen erlauben, bevor Sie ihn selbst anrufen können.</string>
<string name="allow_calls_question">Anrufe erlauben?</string>
@@ -2148,7 +2157,8 @@
<string name="network_proxy_auth_mode_isolate_by_auth_user">Verwenden Sie für jedes Profil unterschiedliche Proxy-Anmeldeinformationen.</string>
<string name="network_proxy_random_credentials">Verwenden Sie zufällige Anmeldeinformationen</string>
<string name="network_proxy_username">Benutzername</string>
<string name="n_file_errors">%1$d Datei-Fehler:\n%2$s</string>
<string name="n_file_errors">%1$d Datei-Fehler:
\n%2$s</string>
<string name="forward_files_in_progress_desc">%1$d Datei(en) wird/werden immer noch heruntergeladen.</string>
<string name="forward_files_failed_to_receive_desc">Bei %1$d Datei(en) ist das Herunterladen fehlgeschlagen.</string>
<string name="error_forwarding_messages">Fehler beim Weiterleiten der Nachrichten</string>
@@ -2205,11 +2215,11 @@
<string name="for_social_media">Für soziale Medien</string>
<string name="or_to_share_privately">Oder zum privaten Teilen</string>
<string name="simplex_address_or_1_time_link">SimpleX-Adresse oder Einmal-Link?</string>
<string name="onboarding_choose_server_operators">Server-Betreiber</string>
<string name="onboarding_choose_server_operators">Betreiber auswählen</string>
<string name="onboarding_network_operators">Netzwerk-Betreiber</string>
<string name="onboarding_network_operators_app_will_use_different_operators">Die App verwendet für jede Unterhaltung Server von unterschiedlichen Betreibern, um Ihre Privatsphäre zu schützen.</string>
<string name="onboarding_network_operators_app_will_use_different_operators">Wenn mehr als ein Netzwerk-Betreiber aktiviert ist, verwendet die App für jede Unterhaltung Server der verschiedenen Betreiber.</string>
<string name="onboarding_network_operators_conditions_will_be_accepted">Die Nutzungsbedingungen der aktivierten Betreiber werden nach 30 Tagen akzeptiert.</string>
<string name="onboarding_network_operators_app_will_use_for_routing">Wenn Ihr Kontakt beispielsweise Nachrichten über einen SimpleX-Chat-Server empfängt, wird Ihre App diese über einen Flux-Server versenden.</string>
<string name="onboarding_network_operators_app_will_use_for_routing">Wenn Sie beispielsweise Nachrichten über einen SimpleX-Chatserver empfangen, verwendet die App einen der Server von Flux für die private Weiterleitung.</string>
<string name="onboarding_network_operators_review_later">Später einsehen</string>
<string name="onboarding_select_network_operators_to_use">Wählen sie die zu nutzenden Netzwerk-Betreiber aus.</string>
<string name="onboarding_network_operators_conditions_you_can_configure">Sie können die Betreiber in den Netzwerk- und Servereinstellungen konfigurieren.</string>
@@ -2236,7 +2246,7 @@
<string name="operator_use_for_messages">Für Nachrichten verwenden</string>
<string name="operator_added_message_servers">Nachrichtenserver hinzugefügt</string>
<string name="operator_use_for_messages_private_routing">Für privates Routing</string>
<string name="xftp_servers_per_user">Medien- und Datei-Server für neue Daten über Ihr aktuelles Chat-Profil</string>
<string name="xftp_servers_per_user">Die Server Deines aktuellen Chat-Profils für neue Dateien</string>
<string name="operator_use_for_sending">Für das Senden</string>
<string name="operator_use_for_files">Für Dateien verwenden</string>
<string name="error_adding_server">Fehler beim Hinzufügen des Servers</string>
@@ -2261,7 +2271,7 @@
<string name="one_time_link_can_be_used_with_one_contact_only"><![CDATA[Ein Einmal-Link kann <i>nur mit einem Kontakt</i> genutzt werden - teilen Sie in nur persönlich oder über einen beliebigen Messenger.]]></string>
<string name="operator_conditions_accepted_for_some"><![CDATA[Die Nutzungsbedingungen der/des folgenden Betreiber(s) wurden schon akzeptiert: <b>%s</b>.]]></string>
<string name="operators_conditions_will_be_accepted_for"><![CDATA[Die Nutzungsbedingungen der/des Betreiber(s) werden akzeptiert: <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_accepted_on">Die Nutzungsbedingungen wurden akzeptiert am: %s</string>
<string name="operator_conditions_will_be_accepted_on">Die Nutzungsbedingungen werden akzeptiert am: %s.</string>
<string name="operator_conditions_will_be_applied"><![CDATA[Diese Nutzungsbedingungen gelten auch für: <b>%s</b>.]]></string>
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[Um die Server von <b>%s</b> zu nutzen, müssen Sie dessen Nutzungsbedingungen akzeptieren.]]></string>
<string name="error_accepting_operator_conditions">Fehler beim Akzeptieren der Nutzungsbedingungen</string>
@@ -2275,50 +2285,10 @@
<string name="connection_error_quota_desc">Diese Verbindung hat das Limit der nicht ausgelieferten Nachrichten erreicht. Ihr Kontakt ist möglicherweise offline.</string>
<string name="message_deleted_or_not_received_error_desc">Diese Nachricht wurde gelöscht oder bisher noch nicht empfangen.</string>
<string name="to_protect_against_your_link_replaced_compare_codes">Zum Schutz vor dem Austausch Ihres Links können Sie die Sicherheitscodes Ihrer Kontakte vergleichen.</string>
<string name="operators_conditions_accepted_for"><![CDATA[Die Nutzungsbedingungen der/des Betreiber(s) wurden akzeptiert: <b>%s</b>.]]></string>
<string name="operators_conditions_accepted_for"><![CDATA[Die Nutzungsbedingungen der/des Betreiber(s) werden akzeptiert: <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[Die Nutzungsbedingungen der/des Betreiber(s) werden akzeptiert: <b>%s</b>.]]></string>
<string name="operator_conditions_accepted_on">Die Nutzungsbedingungen wurden akzeptiert am: %s.</string>
<string name="operator_conditions_failed_to_load">Der Text der aktuellen Nutzungsbedingungen konnte nicht geladen werden. Sie können die Nutzungsbedingungen unter diesem Link einsehen:</string>
<string name="remote_hosts_section">Ferngesteuerte Mobiltelefone</string>
<string name="chat_archive">Oder importieren Sie eine Archiv-Datei</string>
<string name="xiaomi_ignore_battery_optimization"><![CDATA[<b>Hinweis für Geräte von Xiaomi</b>: Bitte aktivieren Sie in den System-Einstellungen die Option "Autostart", damit Benachrichtigungen funktionieren.]]></string>
<string name="all_message_and_files_e2e_encrypted"><![CDATA[Alle Nachrichten und Dateien werden <b>Ende-zu-Ende-verschlüsselt</b> versendet. In Direktnachrichten sogar mit Post-Quantum-Security.]]></string>
<string name="button_add_team_members">Team-Mitglieder aufnehmen</string>
<string name="button_add_friends">Freunde aufnehmen</string>
<string name="display_name_accepted_invitation">Einladung akzeptiert</string>
<string name="business_address">Geschäftliche Adresse</string>
<string name="v6_2_business_chats">Geschäftliche Chats</string>
<string name="add_your_team_members_to_conversations">Nehmen Sie Team-Mitglieder in Ihre Unterhaltungen auf.</string>
<string name="onboarding_notifications_mode_service_desc_short">Die App läuft immer im Hintergrund ab</string>
<string name="direct_messages_are_prohibited_in_chat">In diesem Chat sind Direktnachrichten zwischen Mitgliedern nicht erlaubt.</string>
<string name="onboarding_notifications_mode_off_desc_short">Kein Hintergrund-Service</string>
<string name="onboarding_notifications_mode_periodic_desc_short">Nachrichten alle 10 Minuten überprüfen</string>
<string name="onboarding_notifications_mode_battery">Benachrichtigungen und Akku</string>
<string name="invite_to_chat_button">Zum Chat einladen</string>
<string name="connect_plan_chat_already_exists">Chat besteht bereits!</string>
<string name="chat_bottom_bar">Chat-Symbolleiste unten</string>
<string name="button_leave_chat">Chat verlassen</string>
<string name="member_will_be_removed_from_chat_cannot_be_undone">Das Mitglied wird aus dem Chat entfernt. Dies kann nicht rückgängig gemacht werden!</string>
<string name="chat_main_profile_sent">Ihr Chat-Profil wird an die Chat-Mitglieder gesendet.</string>
<string name="direct_messages_are_prohibited">Direktnachrichten zwischen Mitgliedern sind nicht erlaubt.</string>
<string name="how_it_helps_privacy">Wie die Privatsphäre geschützt wird</string>
<string name="leave_chat_question">Chat verlassen?</string>
<string name="delete_chat_question">Chat löschen?</string>
<string name="delete_chat_for_all_members_cannot_undo_warning">Der Chat wird für alle Mitglieder gelöscht. Dies kann nicht rückgängig gemacht werden!</string>
<string name="v6_2_business_chats_descr">Schutz der Privatsphäre Ihrer Kunden.</string>
<string name="display_name_requested_to_connect">Zur Verbindung aufgefordert</string>
<string name="maximum_message_size_reached_non_text">Bitte verkleinern Sie die Nachrichten-Größe oder entfernen Sie Medien und versenden Sie diese erneut.</string>
<string name="only_chat_owners_can_change_prefs">Nur Chat-Eigentümer können die Präferenzen ändern.</string>
<string name="maximum_message_size_reached_text">Bitte verkleinern Sie die Nachrichten-Größe und versenden Sie diese erneut.</string>
<string name="member_role_will_be_changed_with_notification_chat">Die Rolle wird auf %s geändert. Im Chat wird Jeder darüber informiert.</string>
<string name="you_will_stop_receiving_messages_from_this_chat_chat_history_will_be_preserved">Sie werden von diesem Chat keine Nachrichten mehr erhalten. Der Nachrichtenverlauf wird beibehalten.</string>
<string name="maximum_message_size_reached_forwarding">Sie können die Nachricht kopieren und verkleinern, um sie zu versenden.</string>
<string name="button_delete_chat">Chat löschen</string>
<string name="delete_chat_for_self_cannot_undo_warning">Der Chat wird für Sie gelöscht. Dies kann nicht rückgängig gemacht werden!</string>
<string name="maximum_message_size_title">Die Nachricht ist zu umfangreich!</string>
<string name="onboarding_network_operators_cant_see_who_talks_to_whom">Wenn mehr als ein Betreiber aktiviert ist, hat keiner von ihnen Metadaten, um zu erfahren, wer mit wem kommuniziert.</string>
<string name="info_row_chat">Chat</string>
<string name="connect_plan_you_are_already_connected_with_vName"><![CDATA[Sie sind bereits mit <b>%1$s</b> verbunden.]]></string>
<string name="onboarding_network_about_operators">Über Betreiber</string>
<string name="onboarding_network_operators_simplex_flux_agreement">SimpleX-Chat und Flux haben vereinbart, die von Flux betriebenen Server in die App aufzunehmen.</string>
</resources>
@@ -36,7 +36,8 @@
<string name="appearance_settings">Apariencia</string>
<string name="app_version_title">Versión</string>
<string name="network_session_mode_user_description"><![CDATA[Se usará una conexión TCP (y credenciales SOCKS) independiente <b>por cada perfil que tengas en la aplicación</b>.]]></string>
<string name="network_session_mode_entity_description">Se usará una conexión TCP (y credenciales SOCKS) independiente <b>por cada contacto y miembro del grupo</b>. \n<b>Recuerda</b>: si tienes muchas conexiones, el consumo de batería y tráfico pueden aumentar bastante y algunas conexiones pueden fallar.</string>
<string name="network_session_mode_entity_description">Se usará una conexión TCP (y credenciales SOCKS) independiente <b>por cada contacto y miembro del grupo</b>.
\n<b>Recuerda</b>: si tienes muchas conexiones, el consumo de batería y tráfico pueden ser sustancialmente mayores y algunas conexiones pueden fallar.</string>
<string name="a_plus_b">a + b</string>
<string name="about_simplex">Acerca de SimpleX</string>
<string name="bold_text">negrita</string>
@@ -93,7 +94,7 @@
<string name="auth_device_authentication_is_not_enabled_you_can_turn_on_in_settings_once_enabled">Autenticación de dispositivo desactivada. Puedes habilitar Bloqueo SimpleX en Configuración, después de activar la autenticación de dispositivo.</string>
<string name="no_call_on_lock_screen">Desactivar</string>
<string name="disappearing_prohibited_in_this_chat">Los mensajes temporales no están permitidos en este chat.</string>
<string name="disappearing_messages_are_prohibited">Mensajes temporales no permitidos.</string>
<string name="disappearing_messages_are_prohibited">Los mensajes temporales no están permitidos en este grupo.</string>
<string name="display_name_cannot_contain_whitespace">El nombre mostrado no puede contener espacios en blanco.</string>
<string name="encrypted_video_call">Videollamada con cifrado de extremo a extremo</string>
<string name="display_name_connection_established">conexión establecida</string>
@@ -336,7 +337,7 @@
<string name="enter_passphrase">Introduce la contraseña…</string>
<string name="icon_descr_group_inactive">Grupo inactivo</string>
<string name="group_member_status_group_deleted">grupo eliminado</string>
<string name="group_members_can_send_disappearing">Los miembros pueden enviar mensajes temporales.</string>
<string name="group_members_can_send_disappearing">Los miembros del grupo pueden enviar mensajes temporales.</string>
<string name="v4_2_group_links">Enlaces de grupo</string>
<string name="invalid_connection_link">Enlace de conexión no válido</string>
<string name="error_accepting_contact_request">Error al aceptar solicitud del contacto</string>
@@ -356,7 +357,7 @@
<string name="error_deleting_database">Error al eliminar base de datos</string>
<string name="encrypted_database">Base de datos cifrada</string>
<string name="error_removing_member">Error al eliminar miembro</string>
<string name="group_members_can_send_voice">Los miembros pueden enviar mensajes de voz.</string>
<string name="group_members_can_send_voice">Los miembros del grupo pueden enviar mensajes de voz.</string>
<string name="description_via_contact_address_link_incognito">en modo incógnito mediante enlace de dirección del contacto</string>
<string name="failed_to_create_user_title">¡Error al crear perfil!</string>
<string name="failed_to_parse_chat_title">No se pudo cargar el chat</string>
@@ -406,8 +407,8 @@
<string name="conn_stats_section_title_servers">SERVIDORES</string>
<string name="group_display_name_field">Nombre del grupo:</string>
<string name="group_preferences">Preferencias del grupo</string>
<string name="group_members_can_send_dms">Los miembros pueden enviar mensajes directos.</string>
<string name="group_members_can_delete">Los miembros pueden eliminar mensajes enviados de forma irreversible. (24 horas)</string>
<string name="group_members_can_send_dms">Los miembros del grupo pueden enviar mensajes directos.</string>
<string name="group_members_can_delete">Los miembros del grupo pueden eliminar mensajes de forma irreversible. (24 horas)</string>
<string name="v4_3_improved_privacy_and_security_desc">Ocultar pantalla de aplicaciones en aplicaciones recientes.</string>
<string name="encrypt_database">Cifrar</string>
<string name="icon_descr_expand_role">Ampliar la selección de roles</string>
@@ -430,7 +431,7 @@
<string name="how_it_works">Cómo funciona</string>
<string name="delete_message_cannot_be_undone_warning">El mensaje será eliminado. ¡No podrá deshacerse!</string>
<string name="incognito_info_protects">El modo incógnito protege tu privacidad creando un perfil aleatorio por cada contacto.</string>
<string name="turn_off_battery_optimization"><![CDATA[<b>Da permiso</b> en el siguiente diálogo para recibir notificaciones instantáneas.]]></string>
<string name="turn_off_battery_optimization"><![CDATA[Para usar SimpleX, por favor <b>permite que SimpleX se ejecute en segundo plano</b> en el siguiente cuadro de diálogo. De lo contrario las notificaciones se desactivarán.]]></string>
<string name="install_simplex_chat_for_terminal">Instalar terminal de SimpleX Chat</string>
<string name="group_invitation_item_description">invitación al grupo %1$s</string>
<string name="rcv_group_event_member_added">ha invitado a %1$s</string>
@@ -442,7 +443,7 @@
<string name="icon_descr_instant_notifications">Notificación instantánea</string>
<string name="network_settings_title">Configuración avanzada</string>
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages">Sólo los dispositivos cliente almacenan perfiles de usuario, contactos, grupos y mensajes.</string>
<string name="onboarding_notifications_mode_subtitle">Cómo afecta a la batería</string>
<string name="onboarding_notifications_mode_subtitle">Puedes cambiar estos ajustes más tarde en Configuración.</string>
<string name="onboarding_notifications_mode_service">Instantánea</string>
<string name="join_group_button">Unirte</string>
<string name="join_group_incognito_button">Unirte en modo incógnito</string>
@@ -450,7 +451,7 @@
<string name="theme_light">Claro</string>
<string name="chat_preferences_on">Activado</string>
<string name="message_deletion_prohibited">La eliminación irreversible de mensajes no está permitida en este chat.</string>
<string name="message_deletion_prohibited_in_chat">Eliminación irreversible no permitida.</string>
<string name="message_deletion_prohibited_in_chat">La eliminación irreversible de mensajes no está permitida en este grupo.</string>
<string name="v4_3_improved_server_configuration">Configuración del servidor mejorada</string>
<string name="alert_text_skipped_messages_it_can_happen_when">Esto puede ocurrir cuando:
\n1. Los mensajes hayan caducado en el cliente saliente tras 2 días o en el servidor tras 30 días.
@@ -554,7 +555,7 @@
<string name="snd_conn_event_switch_queue_phase_completed_for_member">has cambiado el servidor para %s</string>
<string name="rcv_group_event_member_left">ha salido</string>
<string name="button_leave_group">Salir del grupo</string>
<string name="only_group_owners_can_change_prefs">Sólo los propietarios del grupo pueden cambiar las preferencias.</string>
<string name="only_group_owners_can_change_prefs">Sólo los propietarios pueden modificar las preferencias del grupo.</string>
<string name="users_delete_data_only">Eliminar sólo el perfil</string>
<string name="chat_preferences_no">no</string>
<string name="thousand_abbreviation">k</string>
@@ -641,7 +642,7 @@
<string name="icon_descr_profile_image_placeholder">Espacio reservado para la imagen del perfil</string>
<string name="image_descr_qr_code">Código QR</string>
<string name="chat_with_the_founder">Consultas y sugerencias</string>
<string name="smp_servers_preset_address">Dirección predefinida del servidor</string>
<string name="smp_servers_preset_address">Dirección del servidor predefinida</string>
<string name="send_us_an_email">Contacta vía email</string>
<string name="rate_the_app">Valora la aplicación</string>
<string name="save_servers_button">Guardar</string>
@@ -717,7 +718,7 @@
<string name="icon_descr_sent_msg_status_unauthorized_send">envío no autorizado</string>
<string name="set_contact_name">Escribe un nombre para el contacto</string>
<string name="unknown_error">Error desconocido</string>
<string name="member_role_will_be_changed_with_notification">El rol cambiará a %s. Todos serán notificados.</string>
<string name="member_role_will_be_changed_with_notification">El rol del miembro cambiará a "%s" y se notificará al grupo.</string>
<string name="v4_2_security_assessment_desc">La seguridad de SimpleX Chat ha sido auditada por Trail of Bits.</string>
<string name="v4_4_disappearing_messages_desc">Los mensajes enviados se eliminarán una vez transcurrido el tiempo establecido.</string>
<string name="ntf_channel_messages">Mensajes de chat SimpleX</string>
@@ -735,12 +736,12 @@
<string name="connection_you_accepted_will_be_cancelled">¡La conexión que has aceptado se cancelará!</string>
<string name="database_initialization_error_desc">La base de datos no funciona correctamente. Pulsa para conocer más</string>
<string name="moderate_message_will_be_marked_warning">El mensaje será marcado como moderado para todos los miembros.</string>
<string name="next_generation_of_private_messaging">El futuro de la mensajería</string>
<string name="next_generation_of_private_messaging">La nueva generación \nde mensajería privada</string>
<string name="delete_files_and_media_desc">Esta acción es irreversible. Se eliminarán todos los archivos y multimedia recibidos y enviados. Las imágenes de baja resolución permanecerán.</string>
<string name="enable_automatic_deletion_message">Esta acción es irreversible. Los mensajes enviados y recibidos anteriores a la selección serán eliminados. Podría tardar varios minutos.</string>
<string name="messages_section_description">Esta configuración se aplica a los mensajes del perfil actual</string>
<string name="this_string_is_not_a_connection_link">¡Esta cadena no es un enlace de conexión!</string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Para mejorar la privacidad <b>SimpleX se ejecuta en segundo plano</b> en lugar de usar notificaciones push.]]></string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Para preservar tu privacidad, en lugar de notificaciones automáticas la aplicación cuenta con un <b>servicio en segundo planoSimpleX</b>, usa un pequeño porcentaje de la batería al día.]]></string>
<string name="icon_descr_settings">Configuración</string>
<string name="icon_descr_speaker_off">Altavoz desactivado</string>
<string name="add_contact_or_create_group">Inciar chat nuevo</string>
@@ -784,7 +785,7 @@
<string name="smp_servers_test_server">Probar servidor</string>
<string name="smp_servers_test_servers">Probar servidores</string>
<string name="star_on_github">Estrella en GitHub</string>
<string name="smp_servers_per_user">Servidores para conexiones nuevas en tu perfil</string>
<string name="smp_servers_per_user">Lista de servidores para las conexiones nuevas de tu perfil actual</string>
<string name="network_disable_socks">¿Usar conexión directa a Internet\?</string>
<string name="profile_is_only_shared_with_your_contacts">El perfil sólo se comparte con tus contactos.</string>
<string name="callstate_starting">inicializando…</string>
@@ -803,7 +804,7 @@
<string name="update_database_passphrase">Actualizar contraseña base de datos</string>
<string name="group_invitation_tap_to_join_incognito">Pulsa para unirte en modo incógnito</string>
<string name="switch_verb">Cambiar</string>
<string name="member_role_will_be_changed_with_invitation">El rol cambiará a %s y el miembro recibirá una invitación nueva.</string>
<string name="member_role_will_be_changed_with_invitation">El rol del miembro cambiará a "%s" y recibirá una invitación nueva.</string>
<string name="update_network_settings_confirmation">Actualizar</string>
<string name="update_network_settings_question">¿Actualizar la configuración de red\?</string>
<string name="trying_to_connect_to_server_to_receive_messages">Intentando conectar con el servidor para recibir mensajes de este contacto.</string>
@@ -824,7 +825,7 @@
<string name="smp_servers_test_failed">¡Prueba no superada!</string>
<string name="smp_servers_test_some_failed">Algunos servidores no han superado la prueba:</string>
<string name="smp_servers_use_server">Usar servidor</string>
<string name="smp_servers_use_server_for_new_conn">Para conexiones nuevas</string>
<string name="smp_servers_use_server_for_new_conn">Usar para conexiones nuevas</string>
<string name="theme_system">Sistema</string>
<string name="description_via_one_time_link">mediante enlace de un solo uso</string>
<string name="your_chats">Chats</string>
@@ -839,9 +840,9 @@
<string name="v4_3_voice_messages">Mensajes de voz</string>
<string name="v4_3_irreversible_message_deletion_desc">Tus contactos pueden permitir la eliminación completa de mensajes.</string>
<string name="voice_messages">Mensajes de voz</string>
<string name="voice_messages_are_prohibited">Mensajes de voz no permitidos.</string>
<string name="voice_messages_are_prohibited">Los mensajes de voz no están permitidos en este grupo.</string>
<string name="v4_4_verify_connection_security">Comprobar la seguridad de la conexión</string>
<string name="you_are_already_connected_to_vName_via_this_link">¡Ya estás conectado con %1$s.</string>
<string name="you_are_already_connected_to_vName_via_this_link">¡Ya estás conectado a %1$s.</string>
<string name="welcome">¡Bienvenido!</string>
<string name="your_chat_profile_will_be_sent_to_your_contact">Tu perfil será enviado
\na tu contacto</string>
@@ -1027,7 +1028,7 @@
<string name="your_XFTP_servers">Servidores XFTP</string>
<string name="port_verb">Puerto</string>
<string name="network_proxy_port">puerto %d</string>
<string name="disable_onion_hosts_when_not_supported"><![CDATA[<i>Usar hosts .onion</i> debe estar a <i>No</i> si el proxy SOCKS no los admite.]]></string>
<string name="disable_onion_hosts_when_not_supported"><![CDATA[Configura <i>Usar hosts .onion</i> como <i>No</i> si el proxy SOCKS no los admite.]]></string>
<string name="smp_server_test_download_file">Descargar archivo</string>
<string name="network_socks_toggle_use_socks_proxy">Usar proxy SOCKS</string>
<string name="host_verb">Host</string>
@@ -1207,7 +1208,7 @@
<string name="custom_time_unit_weeks">semanas</string>
<string name="error_loading_details">Error al cargar detalles</string>
<string name="group_members_can_add_message_reactions">Los miembros pueden añadir reacciones a los mensajes.</string>
<string name="message_reactions_are_prohibited">Reacciones a los mensajes no permitidas.</string>
<string name="message_reactions_are_prohibited">Las reacciones a los mensajes no están permitidas en este grupo.</string>
<string name="only_your_contact_can_add_message_reactions">Sólo tu contacto puede añadir reacciones a los mensajes.</string>
<string name="send_disappearing_message_1_minute">1 minuto</string>
<string name="info_row_updated_at">Registro actualiz</string>
@@ -1227,12 +1228,12 @@
<string name="v5_1_custom_themes_descr">Personalizar y compartir temas de color.</string>
<string name="v5_1_message_reactions_descr">¡Por fin los tenemos! 🚀</string>
<string name="v5_1_message_reactions">Reacciones a los mensajes</string>
<string name="whats_new_read_more">Saber más</string>
<string name="whats_new_read_more">Conoce más</string>
<string name="v5_1_japanese_portuguese_interface">Interfaz en japonés y portugués</string>
<string name="item_info_no_text">sin texto</string>
<string name="non_fatal_errors_occured_during_import">Han ocurrido algunos errores no críticos durante la importación:</string>
<string name="shutdown_alert_question">¿Cerrar\?</string>
<string name="settings_section_title_app">APLICACIÓN</string>
<string name="settings_section_title_app">Aplicación</string>
<string name="settings_restart_app">Reiniciar</string>
<string name="settings_shutdown">Cerrar</string>
<string name="shutdown_alert_desc">Las notificaciones dejarán de funcionar hasta que reinicies la aplicación</string>
@@ -1247,8 +1248,8 @@
<string name="abort_switch_receiving_address">Cancelar cambio de dirección</string>
<string name="files_and_media">Archivos y multimedia</string>
<string name="prohibit_sending_files">No se permite el envío de archivos y multimedia.</string>
<string name="files_are_prohibited_in_group">Archivos y multimedia no permitidos.</string>
<string name="group_members_can_send_files">Los miembros pueden enviar archivos y multimedia.</string>
<string name="files_are_prohibited_in_group">Los archivos y multimedia no están permitidos en este grupo.</string>
<string name="group_members_can_send_files">Los miembros del grupo pueden enviar archivos y multimedia.</string>
<string name="allow_to_send_files">Se permite enviar archivos y multimedia</string>
<string name="favorite_chat">Favorito</string>
<string name="only_owners_can_enable_files_and_media">Sólo los propietarios del grupo pueden activar los archivos y multimedia.</string>
@@ -1355,7 +1356,7 @@
<string name="you_can_change_it_later">La contraseña aleatoria se almacenará en Configuración como texto plano.
\nPuedes cambiarlo más tarde.</string>
<string name="database_encryption_will_be_updated_in_settings">La contraseña para el cifrado de la base de datos se actualizará y almacenará en Configuración</string>
<string name="remove_passphrase_from_settings">¿Eliminar contraseña de configuración?</string>
<string name="remove_passphrase_from_settings">Eliminar contraseña de configuración\?</string>
<string name="use_random_passphrase">Usar contraseña aleatoria</string>
<string name="save_passphrase_in_settings">Guardar contraseña en configuración</string>
<string name="setup_database_passphrase">Configuración contraseña base de datos</string>
@@ -1367,7 +1368,7 @@
<string name="v5_3_encrypt_local_files">Cifra archivos almacenados y multimedia</string>
<string name="error_creating_member_contact">Error al establecer contacto con el miembro</string>
<string name="socks_proxy_setting_limitations"><![CDATA[<b>Recuerda</b>: los servidores están conectados mediante proxy SOCKS, pero las llamadas y las previsualizaciones de enlaces usan conexión directa.]]></string>
<string name="encrypt_local_files">Cifrar archivos locales</string>
<string name="encrypt_local_files">Cifra archivos locales</string>
<string name="v5_3_new_desktop_app">Nueva aplicación para ordenador!</string>
<string name="v5_3_new_interface_languages">6 idiomas nuevos para el interfaz</string>
<string name="v5_3_encrypt_local_files_descr">Cifrado de los nuevos archivos locales (excepto vídeos).</string>
@@ -1714,8 +1715,8 @@
<string name="simplex_links_not_allowed">Enlaces SimpleX no permitidos</string>
<string name="voice_messages_not_allowed">Mensajes de voz no permitidos</string>
<string name="simplex_links">Enlaces SimpleX</string>
<string name="group_members_can_send_simplex_links">Los miembros pueden enviar enlaces SimpleX.</string>
<string name="simplex_links_are_prohibited_in_group">Enlaces SimpleX no permitidos.</string>
<string name="group_members_can_send_simplex_links">Los miembros del grupo pueden enviar enlaces SimpleX.</string>
<string name="simplex_links_are_prohibited_in_group">Los enlaces SimpleX no se permiten en este grupo.</string>
<string name="feature_roles_owners">propietarios</string>
<string name="network_type_cellular">Móvil</string>
<string name="network_type_no_network_connection">Sin conexión de red</string>
@@ -1896,7 +1897,7 @@
<string name="decryption_errors">errores de descifrado</string>
<string name="deleted">Eliminadas</string>
<string name="deletion_errors">Errores de eliminación</string>
<string name="member_info_member_disabled">inactivo</string>
<string name="member_info_member_disabled">desactivado</string>
<string name="message_forwarded_title">Mensaje reenviado</string>
<string name="member_inactive_desc">El mensaje puede ser entregado más tarde si el miembro vuelve a estar activo.</string>
<string name="member_inactive_title">Miembro inactivo</string>
@@ -1967,7 +1968,8 @@
<string name="size">Tamaño</string>
<string name="servers_info_subscriptions_connections_subscribed">Conexiones activas</string>
<string name="servers_info_starting_from">Iniciado el %s.</string>
<string name="servers_info_private_data_disclaimer">Iniciado el %s \nLa información es privada en tu dispositivo.</string>
<string name="servers_info_private_data_disclaimer">Iniciado el %s
\nTodos los datos son privados a tu dispositivo</string>
<string name="chunks_deleted">Bloques eliminados</string>
<string name="chunks_downloaded">Bloques descargados</string>
<string name="chunks_uploaded">Bloques subidos</string>
@@ -1988,7 +1990,7 @@
<string name="privacy_media_blur_radius_medium">Medio</string>
<string name="privacy_media_blur_radius_soft">Suave</string>
<string name="one_hand_ui">Barra de herramientas accesible</string>
<string name="info_view_call_button">llamar</string>
<string name="info_view_call_button">llamada</string>
<string name="info_view_connect_button">conectar</string>
<string name="delete_members_messages__question">¿Eliminar %d mensajes de miembros?</string>
<string name="info_view_message_button">mensaje</string>
@@ -2037,7 +2039,7 @@
<string name="proxy_destination_error_broker_host">La dirección del servidor de destino de %1$s es incompatible con la configuración del servidor de reenvío %2$s.</string>
<string name="proxy_destination_error_broker_version">La versión del servidor de destino de %1$s es incompatible con el servidor de reenvío %2$s.</string>
<string name="contact_list_header_title">Tus contactos</string>
<string name="you_need_to_allow_calls">Debes permitir que tus contacto te llamen para poder llamarles.</string>
<string name="you_need_to_allow_calls">Necesitas permitir que tus contacto llamen para poder llamarles.</string>
<string name="smp_proxy_error_connecting">Error al conectar con el servidor de reenvío %1$s. Por favor, inténtalo más tarde.</string>
<string name="smp_proxy_error_broker_host">La dirección del servidor de reenvío es incompatible con la configuración de red: %1$s.</string>
<string name="proxy_destination_error_failed_to_connect">El servidor de reenvío %1$s no ha podido conectarse al servidor de destino %2$s. Por favor, intentalo más tarde.</string>
@@ -2081,8 +2083,8 @@
<string name="network_proxy_incorrect_config_title">Error guardando proxy</string>
<string name="network_proxy_password">Contraseña</string>
<string name="network_proxy_auth">Autenticación proxy</string>
<string name="network_proxy_auth_mode_isolate_by_auth_entity">Se usan credenciales proxy diferentes para cada conexión.</string>
<string name="network_proxy_auth_mode_isolate_by_auth_user">Se usan credenciales proxy diferentes para cada perfil.</string>
<string name="network_proxy_auth_mode_isolate_by_auth_entity">Credenciales proxy diferentes para cada conexión.</string>
<string name="network_proxy_auth_mode_isolate_by_auth_user">Credenciales proxy diferentes para cada perfil.</string>
<string name="network_proxy_random_credentials">Credenciales aleatorias</string>
<string name="network_proxy_username">Nombre de usuario</string>
<string name="network_proxy_auth_mode_username_password">Tus credenciales podrían ser enviadas sin cifrar.</string>
@@ -2099,12 +2101,12 @@
<string name="settings_message_shape_corner">Esquinas</string>
<string name="settings_message_shape_tail">Cola</string>
<string name="network_session_mode_session_description">Se usarán credenciales SOCKS nuevas cada vez que inicies la aplicación.</string>
<string name="network_session_mode_session">por sesión</string>
<string name="network_session_mode_session">Sesión de aplicación</string>
<string name="call_desktop_permission_denied_safari">Abre la configuración de Safari / Sitios Web / Micrófono y a continuación selecciona Permitir para localhost.</string>
<string name="call_desktop_permission_denied_chrome">Pulsa el botón info del campo dirección para permitir el uso del micrófono.</string>
<string name="call_desktop_permission_denied_title">Para hacer llamadas, permite el uso del micrófono. Cuelga e intenta llamar de nuevo.</string>
<string name="network_session_mode_server_description">Se usarán credenciales SOCKS nuevas para cada servidor.</string>
<string name="network_session_mode_server">por servidor</string>
<string name="network_session_mode_server_description">Se usarán credenciales SOCKS nuevas por cada servidor.</string>
<string name="network_session_mode_server">Servidor</string>
<string name="v6_1_better_calls">Llamadas mejoradas</string>
<string name="v6_1_message_dates_descr">Sistema de fechas mejorado.</string>
<string name="v6_1_better_user_experience">Experiencia de usuario mejorada</string>
@@ -2118,17 +2120,17 @@
<string name="failed_to_save_servers">Error al guardar servidores</string>
<string name="errors_in_servers_configuration">Error en la configuración del servidor.</string>
<string name="for_chat_profile">Para el perfil de chat %s:</string>
<string name="no_message_servers_configured">Sin servidores para mensajes.</string>
<string name="no_media_servers_configured_for_private_routing">Sin servidores para recibir archivos.</string>
<string name="no_media_servers_configured_for_sending">Sin servidores para enviar archivos.</string>
<string name="no_message_servers_configured">Ningún servidor de mensajes.</string>
<string name="no_media_servers_configured_for_private_routing">Ningún servidor para recibir archivos.</string>
<string name="no_media_servers_configured_for_sending">Ningún servidor para enviar archivos.</string>
<string name="connection_security">Seguridad de conexión</string>
<string name="share_1_time_link_with_a_friend">Compartir enlace de un uso con un amigo</string>
<string name="share_simplex_address_on_social_media">Comparte tu dirección SimpleX en redes sociales.</string>
<string name="share_simplex_address_on_social_media">Compartir dirección SimpleX en redes sociales.</string>
<string name="address_settings">Configuración de dirección</string>
<string name="create_1_time_link">Crear enlace de un uso</string>
<string name="for_social_media">Para redes sociales</string>
<string name="simplex_address_or_1_time_link">¿Dirección SimpleX o enlace de un uso?</string>
<string name="onboarding_choose_server_operators">Operadores de servidores</string>
<string name="simplex_address_or_1_time_link">Dirección SimpleX o enlace de un uso?</string>
<string name="onboarding_choose_server_operators">Selecciona operadores</string>
<string name="onboarding_network_operators">Operadores de red</string>
<string name="onboarding_network_operators_conditions_will_be_accepted">Las condiciones de los operadores habilitados serán aceptadas después de 30 días.</string>
<string name="onboarding_network_operators_review_later">Revisar más tarde</string>
@@ -2140,7 +2142,7 @@
<string name="operator_servers_title">%s servidores</string>
<string name="operator_conditions_will_be_accepted_on">Las condiciones serán aceptadas el: %s.</string>
<string name="operator_conditions_of_use">Condiciones de uso</string>
<string name="operator_use_for_messages_private_routing">Para enrutamiento privado</string>
<string name="operator_use_for_messages_private_routing">Para el enrutamiento privado</string>
<string name="error_adding_server">Error al añadir servidor</string>
<string name="operator_open_changes">Abrir cambios</string>
<string name="operator_open_conditions">Abrir condiciones</string>
@@ -2160,20 +2162,20 @@
<string name="operator_conditions_accepted_for_enabled_operators_on">Las condiciones serán aceptadas automáticamente para los operadores habilitados el: %s.</string>
<string name="onboarding_network_operators_continue">Continuar</string>
<string name="operator_conditions_failed_to_load">El texto con las condiciones actuales no se ha podido cargar, puedes revisar las condiciones en el siguiente enlace:</string>
<string name="v6_2_network_decentralization_enable_flux">Habilita Flux</string>
<string name="v6_2_network_decentralization_enable_flux">Habilitar Flux</string>
<string name="error_accepting_operator_conditions">Error al aceptar las condiciones</string>
<string name="error_updating_server_title">Error al actualizar el servidor</string>
<string name="v6_2_network_decentralization_enable_flux_reason">para mejorar la privacidad de los metadatos.</string>
<string name="v6_2_network_decentralization_enable_flux_reason">para mayor privacidad de los metadatos.</string>
<string name="message_deleted_or_not_received_error_title">Ningún mensaje</string>
<string name="smp_servers_new_server">Servidor nuevo</string>
<string name="no_media_servers_configured">Sin servidores para archivos y multimedia.</string>
<string name="no_message_servers_configured_for_private_routing">Sin servidores para enrutamiento privado.</string>
<string name="no_message_servers_configured_for_receiving">Sin servidores para recibir mensajes.</string>
<string name="no_media_servers_configured">Ningún servidor de archivos y multimedia.</string>
<string name="no_message_servers_configured_for_private_routing">Ningún servidor para enrutamiento privado.</string>
<string name="no_message_servers_configured_for_receiving">Ningún servidor para recibir mensajes.</string>
<string name="operator_server_alert_title">Servidor del operador</string>
<string name="or_to_share_privately">O para compartir en privado</string>
<string name="onboarding_select_network_operators_to_use">Selecciona los operadores de red a utilizar</string>
<string name="share_address_publicly">Campartir dirección públicamente</string>
<string name="simplex_address_and_1_time_links_are_safe_to_share">Compartir los enlaces de un uso y las direcciones SimpleX es seguro a través de cualquier medio.</string>
<string name="simplex_address_and_1_time_links_are_safe_to_share">Compartir enlaces de un uso y direcciones SimpleX es seguro a través de cualquier medio.</string>
<string name="onboarding_network_operators_update">Actualizar</string>
<string name="operator_website">Sitio web</string>
<string name="your_servers">Tus servidores</string>
@@ -2189,65 +2191,25 @@
<string name="connection_error_quota">Mensajes no entregados</string>
<string name="one_time_link_can_be_used_with_one_contact_only"><![CDATA[Los enlaces de un uso pueden ser usados <i>solamente con un contacto</i> - comparte en persona o mediante cualquier aplicación de mensajería.]]></string>
<string name="you_can_set_connection_name_to_remember">Puedes añadir un nombre a la conexión para recordar a quién corresponde.</string>
<string name="onboarding_network_operators_app_will_use_different_operators">La aplicación protege tu privacidad mediante el uso de diferentes operadores en cada conversación.</string>
<string name="onboarding_network_operators_app_will_use_different_operators">Cuando está habilitado más de un operador de red, la aplicación usa servidores de diferentes operadores para cada conversación.</string>
<string name="onboarding_network_operators_conditions_you_can_configure">Puedes configurar los operadores desde Servidores y Redes.</string>
<string name="operators_conditions_accepted_for"><![CDATA[Las condiciones se han aceptado para el(los) operador(s): <b>%s</b>.]]></string>
<string name="operators_conditions_will_be_accepted_for"><![CDATA[Las condiciones serán aceptadas para el/los operador(es): <b>%s</b>.]]></string>
<string name="operator_conditions_accepted_for_some"><![CDATA[Las condiciones ya se han aceptado para el/los siguiente(s) operador(s): <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[Las mismas condiciones se aplican al operador <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[Las mismas condiciones se aplican al operador <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[Las condiciones serán aceptadas para el/los operador(es): <b>%s</b>.]]></string>
<string name="operators_conditions_will_also_apply"><![CDATA[Estas condiciones también se aplican para: <b>%s</b>.]]></string>
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[Para usar los servidores de <b>%s</b>, debes aceptar las condiciones de uso.]]></string>
<string name="xftp_servers_per_user">Servidores para archivos nuevos en tu perfil</string>
<string name="v6_2_network_decentralization_descr">¡Segundo operador predefinido!</string>
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[Para usar los servidores de <b>%s</b>, acepta las condiciones de uso.]]></string>
<string name="xftp_servers_per_user">Los servidores para archivos nuevos en tu perfil actual</string>
<string name="v6_2_network_decentralization_descr">El segundo operador predefinido!</string>
<string name="onboarding_network_operators_configure_via_settings">Puedes configurar los servidores a través de su configuración.</string>
<string name="to_protect_against_your_link_replaced_compare_codes">Para protegerte contra una sustitución del enlace, puedes comparar los códigos de seguridad con tu contacto.</string>
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[Las mismas condiciones se aplican a el/los operador(es) <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[Las mismas condiciones se aplican a el/los operador(es) <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_applied"><![CDATA[Estas condiciones también se aplican para: <b>%s</b>.]]></string>
<string name="onboarding_network_operators_app_will_use_for_routing">Por ejemplo, si tu contacto recibe a través de un servidor de SimpleX Chat, tu aplicación enviará a través de un servidor de Flux.</string>
<string name="onboarding_network_operators_app_will_use_for_routing">Si por ejemplo recibes los mensajes a través de un servidor de SimpleX Chat, la aplicación usará uno de Flux para el enrutamiento privado.</string>
<string name="address_creation_instruction">Pulsa Crear dirección SimpleX en el menú para crearla más tarde.</string>
<string name="connection_error_quota_desc">La conexión ha alcanzado el límite de mensajes no entregados. es posible que tu contacto esté desconectado.</string>
<string name="message_deleted_or_not_received_error_desc">El mensaje ha sido borrado o aún no se ha recibido.</string>
<string name="remote_hosts_section">Móvil remoto</string>
<string name="chat_archive">O importa desde un archivo</string>
<string name="direct_messages_are_prohibited_in_chat">Mensajes directos entre miembros de este chat no permitidos.</string>
<string name="xiaomi_ignore_battery_optimization"><![CDATA[<b>En dispositivos Xiaomi:</b> por favor, habilita el Autoinicio en los ajustes del sistema para que las notificaciones funcionen.]]></string>
<string name="maximum_message_size_reached_text">Por favor, reduce el tamaño del mensaje y envíalo de nuevo.</string>
<string name="maximum_message_size_reached_non_text">Por favor, reduce el tamaño del mensaje o elimina los archivos y envíalo de nuevo.</string>
<string name="maximum_message_size_reached_forwarding">Puedes copiar y reducir el tamaño del mensaje para enviarlo.</string>
<string name="add_your_team_members_to_conversations">Añade a los miembros de tu equipo a las conversaciones.</string>
<string name="onboarding_notifications_mode_battery">Notificaciones y batería</string>
<string name="invite_to_chat_button">Invitar al chat</string>
<string name="button_add_friends">Añadir amigos</string>
<string name="button_add_team_members">Añadir miembros del equipo</string>
<string name="delete_chat_for_all_members_cannot_undo_warning">El chat será eliminado para todos los miembros. ¡No podrá deshacerse!</string>
<string name="button_delete_chat">Eliminar chat</string>
<string name="delete_chat_question">¿Eliminar chat?</string>
<string name="button_leave_chat">Salir del chat</string>
<string name="delete_chat_for_self_cannot_undo_warning">El chat será eliminado para tí. ¡No podrá deshacerse!</string>
<string name="only_chat_owners_can_change_prefs">Sólo los propietarios del chat pueden cambiar las preferencias.</string>
<string name="member_will_be_removed_from_chat_cannot_be_undone">El miembro será eliminado del chat. ¡No podrá deshacerse!</string>
<string name="member_role_will_be_changed_with_notification_chat">El rol cambiará a %s. Todos serán notificados.</string>
<string name="you_will_stop_receiving_messages_from_this_chat_chat_history_will_be_preserved">Dejarás de recibir mensajes de este chat. El historial del chat se conserva.</string>
<string name="how_it_helps_privacy">Cómo ayuda a la privacidad</string>
<string name="onboarding_network_operators_cant_see_who_talks_to_whom">Cuando está habilitado más de un operador, ninguno dispone de los metadatos para conocer quién se comunica con quién.</string>
<string name="chat_main_profile_sent">Tu perfil de chat será enviado a los miembros de chat</string>
<string name="v6_2_business_chats">Chats empresariales</string>
<string name="leave_chat_question">¿Salir del chat?</string>
<string name="v6_2_business_chats_descr">Privacidad para tus clientes.</string>
<string name="display_name_accepted_invitation">invitación aceptada</string>
<string name="display_name_requested_to_connect">solicitado para conectar</string>
<string name="business_address">Dirección empresarial</string>
<string name="onboarding_notifications_mode_periodic_desc_short">Comprobar mensajes cada 10 min.</string>
<string name="onboarding_notifications_mode_off_desc_short">Sin servicio en segundo plano</string>
<string name="info_row_chat">Chat</string>
<string name="chat_bottom_bar">Barra de herramientas accesible</string>
<string name="direct_messages_are_prohibited">Mensajes directos entre miembros no permitidos.</string>
<string name="connect_plan_you_are_already_connected_with_vName"><![CDATA[Ya estás conectado con <b>%1$s</b>.]]></string>
<string name="connect_plan_chat_already_exists">¡El chat ya existe!</string>
<string name="onboarding_network_about_operators">Acerca de los operadores</string>
<string name="onboarding_notifications_mode_service_desc_short">La aplicación siempre funciona en segundo plano</string>
<string name="all_message_and_files_e2e_encrypted"><![CDATA[Todos los mensajes y archivos son enviados <b>cifrados de extremo a extremo</b> y con seguridad postcuántica en mensajes directos.]]></string>
<string name="maximum_message_size_title">¡Mensaje demasiado largo!</string>
<string name="onboarding_network_operators_simplex_flux_agreement">Simplex Chat y Flux han acordado incluir servidores operados por Flux en la aplicación.</string>
</resources>
@@ -1951,7 +1951,8 @@
<string name="servers_info">Infos serveurs</string>
<string name="servers_info_target">Afficher les informations pour</string>
<string name="servers_info_starting_from">À partir de %s.</string>
<string name="servers_info_private_data_disclaimer">À partir de %s. \nToutes les données restent confinées dans votre appareil.</string>
<string name="servers_info_private_data_disclaimer">À partir de %s.
\nToutes les données restent confinées dans votre appareil.</string>
<string name="servers_info_statistics_section_header">Statistiques</string>
<string name="servers_info_subscriptions_total">Total</string>
<string name="xftp_server">Serveur XFTP</string>
@@ -15,7 +15,7 @@
<string name="send_disappearing_message_30_seconds">30 másodperc</string>
<string name="one_time_link_short">Egyszer használható meghívó-hivatkozás</string>
<string name="contact_wants_to_connect_via_call">%1$s szeretne kapcsolatba lépni Önnel ezen keresztül:</string>
<string name="about_simplex_chat">SimpleX Chat névjegye</string>
<string name="about_simplex_chat">A SimpleX Chatről</string>
<string name="chat_item_ttl_day">1 nap</string>
<string name="abort_switch_receiving_address">Címváltoztatás megszakítása</string>
<string name="about_simplex">A SimpleXről</string>
@@ -52,7 +52,7 @@
<string name="v4_5_transport_isolation_descr">A csevegési profillal (alapértelmezett), vagy a kapcsolattal (BÉTA).</string>
<string name="connect__a_new_random_profile_will_be_shared">Egy új véletlenszerű profil lesz megosztva.</string>
<string name="allow_voice_messages_only_if">A hangüzenetek küldése csak abban az esetben van engedélyezve, ha az ismerőse is engedélyezi.</string>
<string name="app_version_code">Az alkalmazás összeállítási száma: %s</string>
<string name="app_version_code">Az alkalmazás build száma: %s</string>
<string name="audio_video_calls">Hang- és videóhívások</string>
<string name="network_settings">Speciális hálózati beállítások</string>
<string name="allow_your_contacts_to_send_voice_messages">A hangüzenetek küldése engedélyezve van az ismerősei számára.</string>
@@ -106,7 +106,7 @@
<string name="v5_1_self_destruct_passcode_descr">A jelkód megadása után az összes adat törlésre kerül.</string>
<string name="icon_descr_video_asked_to_receive">Felkérték a videó fogadására</string>
<string name="block_member_button">Letiltás</string>
<string name="v5_2_more_things">Néhány további dolog</string>
<string name="v5_2_more_things">Még néhány dolog</string>
<string name="authentication_cancelled">Hitelesítés visszavonva</string>
<string name="allow_to_send_files">A fájlok- és a médiatartalmak küldése engedélyezve van.</string>
<string name="users_delete_all_chats_deleted">Az összes csevegés és üzenet törlésre kerül - ez a művelet nem vonható vissza!</string>
@@ -460,7 +460,7 @@
<string name="error_sending_message">Hiba az üzenet küldésekor</string>
<string name="la_enter_app_passcode">Jelkód megadása</string>
<string name="for_everybody">Mindenkinél</string>
<string name="encryption_renegotiation_error">Titkosítás-újraegyeztetési hiba</string>
<string name="encryption_renegotiation_error">Titkosítás újraegyeztetési hiba</string>
<string name="error_encrypting_database">Hiba az adatbázis titkosításakor</string>
<string name="error_deleting_group">Hiba a csoport törlésekor</string>
<string name="exit_without_saving">Kilépés mentés nélkül</string>
@@ -507,7 +507,7 @@
<string name="v4_6_group_moderation">Csoport moderáció</string>
<string name="choose_file">Fájl</string>
<string name="group_link">Csoporthivatkozás</string>
<string name="snd_conn_event_ratchet_sync_required">a titkosítás újraegyeztetése szükséges a következőhöz: %s</string>
<string name="snd_conn_event_ratchet_sync_required">titkosítás-újraegyeztetés szükséges ehhez: %s</string>
<string name="failed_to_active_user_title">Hiba a profilváltáskor!</string>
<string name="settings_experimental_features">Kísérleti funkciók</string>
<string name="receipts_contacts_enable_keep_overrides">Engedélyezés (felülírások megtartásával)</string>
@@ -532,7 +532,7 @@
<string name="fix_connection_question">Kapcsolat javítása?</string>
<string name="files_and_media">Fájlok és médiatartalmak</string>
<string name="section_title_for_console">KONZOLHOZ</string>
<string name="alert_text_encryption_renegotiation_failed">Nem sikerült a titkosítást újraegyeztetni.</string>
<string name="alert_text_encryption_renegotiation_failed">Sikertelen titkosítás-újraegyeztetés.</string>
<string name="error_deleting_user">Hiba a felhasználó-profil törlésekor</string>
<string name="fix_connection_not_supported_by_group_member">Csoporttag általi javítás nem támogatott</string>
<string name="enter_welcome_message">Üdvözlőüzenet megadása…</string>
@@ -610,7 +610,7 @@
<string name="feature_enabled">engedélyezve</string>
<string name="error_loading_details">Hiba a részletek betöltésekor</string>
<string name="error_accepting_contact_request">Hiba történt a kapcsolatkérés elfogadásakor</string>
<string name="snd_conn_event_ratchet_sync_allowed">a titkosítás újraegyeztetése engedélyezve van a következőhöz: %s</string>
<string name="snd_conn_event_ratchet_sync_allowed">titkosítás újraegyeztetése engedélyezett %s számára</string>
<string name="conn_event_ratchet_sync_required">titkosítás-újraegyeztetés szükséges</string>
<string name="v4_6_hidden_chat_profiles">Rejtett csevegési profilok</string>
<string name="files_and_media_section">Fájlok és médiatartalmak</string>
@@ -1332,7 +1332,7 @@
<string name="this_link_is_not_a_valid_connection_link">Ez nem egy érvényes kapcsolattartási hivatkozás!</string>
<string name="to_verify_compare">A végpontok közötti titkosítás hitelesítéséhez hasonlítsa össze (vagy olvassa be a QR-kódot) az ismerőse eszközén lévő kóddal.</string>
<string name="you_must_use_the_most_recent_version_of_database">A csevegési adatbázis legfrissebb verzióját CSAK egy eszközön kell használnia, ellenkező esetben előfordulhat, hogy az üzeneteket nem fogja megkapni valamennyi ismerősétől.</string>
<string name="messages_section_description">Ez a beállítás csak az Ön jelenlegi csevegő-profiljában lévő üzenetekre vonatkozik</string>
<string name="messages_section_description">Ez a beállítás csak a jelenlegi csevegési profiljában lévő üzenetekre vonatkozik</string>
<string name="you_are_invited_to_group_join_to_connect_with_group_members">Meghívást kapott a csoportba. Csatlakozzon, hogy kapcsolatba léphessen a csoport tagjaival.</string>
<string name="alert_message_no_group">Ez a csoport már nem létezik.</string>
<string name="connect_plan_you_are_already_joining_the_group_via_this_link">A csatlakozás már folyamatban van a csoporthoz ezen a hivatkozáson keresztül.</string>
@@ -1350,7 +1350,7 @@
<string name="you_will_be_connected_when_your_connection_request_is_accepted">Akkor lesz kapcsolódva, ha a kapcsolatkérése elfogadásra kerül, várjon, vagy ellenőrizze később!</string>
<string name="voice_messages_are_prohibited">A hangüzenetek küldése le van tiltva.</string>
<string name="system_restricted_background_in_call_warn"><![CDATA[A háttérben való hívásokhoz válassza ki az <b>Alkalmazás akkumulátor-használata</b> / <b>Korlátlan</b> módot az alkalmazás beállításaiban.]]></string>
<string name="v5_4_link_mobile_desktop_descr">Biztonságos kvantumálló-protokollon keresztül.</string>
<string name="v5_4_link_mobile_desktop_descr">Biztonságos kvantumrezisztens-protokollon keresztül.</string>
<string name="v5_1_better_messages_descr">- 5 perc hosszúságú hangüzenetek.\n- egyéni üzenet-eltűnési időkorlát.\n- előzmények szerkesztése.</string>
<string name="open_on_mobile_and_scan_qr_code"><![CDATA[Válassza a <i>Társítás számítógéppel</i> menüt a hordozható eszköz alkalmazásban és olvassa be a QR-kódot.]]></string>
<string name="sender_at_ts">%s ekkor: %s</string>
@@ -1465,7 +1465,7 @@
<string name="v4_4_live_messages_desc">A címzettek a beírás közben látják a szövegváltozásokat.</string>
<string name="store_passphrase_securely">Tárolja el biztonságosan jelmondatát, mert ha elveszíti azt, NEM tudja megváltoztatni.</string>
<string name="passphrase_will_be_saved_in_settings">A jelmondat a beállításokban egyszerű szövegként kerül tárolásra, miután megváltoztatta vagy újraindította az alkalmazást.</string>
<string name="smp_servers_per_user">Az Ön jelenlegi csevegőprofilhoz tartozó új kapcsolatok kiszolgálói</string>
<string name="smp_servers_per_user">A jelenlegi csevegési profilhoz tartozó új kapcsolatok kiszolgálói</string>
<string name="receiving_via">Fogadás ezen keresztül:</string>
<string name="store_passphrase_securely_without_recover">Tárolja el biztonságosan jelmondát, mert ha elveszti azt, akkor NEM férhet hozzá a csevegéshez.</string>
<string name="member_role_will_be_changed_with_invitation">A szerepkör meg fog változni erre: %s. A tag új meghívót fog kapni.</string>
@@ -1477,7 +1477,7 @@
<string name="settings_is_storing_in_clear_text">A jelmondat a beállításokban egyszerű szövegként van tárolva.</string>
<string name="terminal_always_visible">Konzol megjelenítése új ablakban</string>
<string name="alert_text_msg_bad_hash">Az előző üzenet hasító értéke különbözik.</string>
<string name="receipts_section_description">Ezek a beállítások csak az Ön jelenlegi csevegő-profiljára vonatkoznak</string>
<string name="receipts_section_description">Ezek a beállítások csak a jelenlegi profiljára vonatkoznak</string>
<string name="loading_remote_file_desc">Várjon, amíg a fájl betöltődik a társított hordozható eszközről</string>
<string name="read_more_in_github_with_link"><![CDATA[További információ a <font color="#0088ff">GitHub tárolónkban</font>.]]></string>
<string name="error_showing_content">hiba a tartalom megjelenítésekor</string>
@@ -1653,7 +1653,7 @@
<string name="migrate_from_device_to_another_device">Átköltöztetés egy másik eszközre</string>
<string name="migrate_from_device_archive_will_be_deleted"><![CDATA[<b>Figyelmeztetés:</b> az archívum törlésre kerül.]]></string>
<string name="migrate_from_another_device">Átköltöztetés egy másik eszközről</string>
<string name="v5_6_quantum_resistant_encryption">Kvantumálló titkosítás</string>
<string name="v5_6_quantum_resistant_encryption">Kvantumrezisztens titkosítás</string>
<string name="migrate_from_device_try_again">Megpróbálhatja még egyszer.</string>
<string name="migrate_from_device_migration_complete">Átköltöztetés befejezve</string>
<string name="v5_6_app_data_migration_descr">Átköltöztetés egy másik eszközre QR-kód használatával.</string>
@@ -1661,12 +1661,12 @@
<string name="migrate_from_device_using_on_two_device_breaks_encryption"><![CDATA[<b>Megjegyzés:</b> ha két eszközön is ugyanazt az adatbázist használja, akkor biztonsági védelemként megszakítja az ismerőseitől érkező üzenetek visszafejtését.]]></string>
<string name="migrate_to_device_try_again">Megpróbálhatja még egyszer.</string>
<string name="invalid_file_link">Érvénytelen hivatkozás</string>
<string name="conn_event_enabled_pq">végpontok közötti kvantumálló titkosítás</string>
<string name="conn_event_enabled_pq">végpontok közötti kvantumrezisztens titkosítás</string>
<string name="e2ee_info_no_pq_short">Ez a csevegés végpontok közötti titkosítással védett.</string>
<string name="auth_open_migration_to_another_device">Átköltöztetési párbeszédablak megnyitása</string>
<string name="e2ee_info_pq_short">Ez a csevegés végpontok közötti kvantumálló tikosítással védett.</string>
<string name="e2ee_info_pq_short">Ez a csevegés végpontok közötti kvantumrezisztens tikosítással védett.</string>
<string name="e2ee_info_no_pq"><![CDATA[Az üzeneteket, fájlokat és hívásokat <b>végpontok közötti titkosítással</b>, sérülés utáni titkosság-védelemmel és -helyreállítással, továbbá visszautasítással védi.]]></string>
<string name="e2ee_info_pq"><![CDATA[Az üzenetek, fájlok és hívások <b>végpontok közötti kvantumálló titkosítással</b> sérülés utáni titkosságvédelemmel, visszautasítással és feltörés utáni helyreállítással vannak védve.]]></string>
<string name="e2ee_info_pq"><![CDATA[Az üzeneteket, fájlokat és hívásokat <b>végpontok közötti kvantumrezisztens titkosítással</b>, sérülés utáni titkosság-védelemmel és -helyreállítással, továbbá visszautasítással védi.]]></string>
<string name="error_showing_desktop_notification">Hiba az értesítés megjelenítésekor, lépjen kapcsolatba a fejlesztőkkel.</string>
<string name="permissions_find_in_settings_and_grant">Keresse meg ezt az engedélyt az Android beállításaiban, és adja meg kézzel.</string>
<string name="permissions_grant_in_settings">Engedélyezés a beállításokban</string>
@@ -1754,7 +1754,7 @@
<string name="network_smp_proxy_fallback_prohibit_description">Ne küldjön üzeneteket közvetlenül, még akkor sem, ha az Ön kiszolgálója vagy a célkiszolgáló nem támogatja a privát útválasztást.</string>
<string name="without_tor_or_vpn_ip_address_will_be_visible_to_file_servers">Tor vagy VPN nélkül az IP-címe látható lesz a fájlkiszolgálók számára.</string>
<string name="settings_section_title_files">FÁJLOK</string>
<string name="protect_ip_address">IP-cím védelme</string>
<string name="protect_ip_address">IP-cím védelem</string>
<string name="app_will_ask_to_confirm_unknown_file_servers">Az alkalmazás kérni fogja az ismeretlen fájlkiszolgálókról történő letöltések megerősítését (kivéve, ha az .onion vagy a SOCKS proxy engedélyezve van).</string>
<string name="file_not_approved_title">Ismeretlen kiszolgálók!</string>
<string name="file_not_approved_descr">Tor vagy VPN nélkül az IP-címe látható lesz az XFTP-közvetítő-kiszolgálók számára:\n%1$s.</string>
@@ -1784,7 +1784,7 @@
<string name="color_sent_quote">Válaszüzenet-buborék színe</string>
<string name="chat_theme_set_default_theme">Alapértelmezett téma beállítása</string>
<string name="color_mode_system">Rendszer</string>
<string name="color_wallpaper_tint">Háttérkép kiemelőszíne</string>
<string name="color_wallpaper_tint">Háttérkép kiemelés</string>
<string name="color_wallpaper_background">Háttérkép háttérszíne</string>
<string name="color_primary_variant2">További kiemelés 2</string>
<string name="theme_destination_app_theme">Alkalmazás téma</string>
@@ -1835,7 +1835,7 @@
<string name="servers_info_sessions_connecting">Kapcsolódás</string>
<string name="servers_info_sessions_errors">Hibák</string>
<string name="servers_info_subscriptions_connections_pending">Függőben</string>
<string name="servers_info_private_data_disclaimer">Statisztikagyűjtés kezdete: %s.\nAz összes adat privát módon van tárolva az Ön eszközén.</string>
<string name="servers_info_private_data_disclaimer">Statisztikagyűjtés kezdete: %s.\nAz összes adat biztonságban van az eszközén.</string>
<string name="servers_info_messages_sent">Elküldött üzenetek</string>
<string name="servers_info_proxied_servers_section_header">Proxyzott kiszolgálók</string>
<string name="servers_info_reconnect_servers_title">Újrakapcsolódás a kiszolgálókhoz?</string>
@@ -1906,7 +1906,7 @@
<string name="servers_info_transport_sessions_section_header">Munkamenetek átvitele</string>
<string name="servers_info_subscriptions_total">Összes kapcsolat</string>
<string name="servers_info_statistics_section_header">Statisztikák</string>
<string name="servers_info_target">Információk megjelenítése a következőhöz:</string>
<string name="servers_info_target">Információk megjelenítése ehhez:</string>
<string name="network_error_broker_version_desc">A kiszolgáló verziója nem kompatibilis az alkalmazással: %1$s.</string>
<string name="servers_info_proxied_servers_section_footer">Ön nem kapcsolódik ezekhez a kiszolgálókhoz. A privát útválasztás az üzenetek kézbesítésére szolgál.</string>
<string name="servers_info_subscriptions_connections_subscribed">Aktív kapcsolatok száma</string>
@@ -2109,13 +2109,13 @@
<string name="create_1_time_link">Egyszer használható meghívó-hivatkozás létrehozása</string>
<string name="onboarding_choose_server_operators">Kiszolgáló-üzemeltetők</string>
<string name="onboarding_network_operators">Hálózati üzemeltetők</string>
<string name="onboarding_network_operators_app_will_use_different_operators">Az alkalmazás úgy védi az adatait, hogy minden egyes beszélgetésben más-más üzemeltetőt használ.</string>
<string name="onboarding_network_operators_app_will_use_for_routing">Például, ha az Ön ismerőse egy SimpleX Chat-kiszolgálón keresztül fogadja az üzeneteket, az Ön alkalmazása egy Flux-kiszolgálón keresztül fogja azokat kézbesíteni.</string>
<string name="onboarding_network_operators_app_will_use_different_operators">Amikor egynél több hálózati üzemeltető van engedélyezve, akkor az alkalmazás minden egyes beszélgetéshez a különböző üzemeltetők kiszolgálóit használja.</string>
<string name="onboarding_network_operators_app_will_use_for_routing">Ha például a SimpleX Chat kiszolgálón keresztül fogadja az üzeneteket, az alkalmazás a Flux egyik kiszolgálóját használja a privát útválasztáshoz.</string>
<string name="onboarding_select_network_operators_to_use">Válassza ki a használni kívánt hálózati üzemeltetőket.</string>
<string name="onboarding_network_operators_review_later">Felülvizsgálat később</string>
<string name="onboarding_network_operators_configure_via_settings">A kiszolgálókat a „Hálózat és kiszolgálók” menüben konfigurálhatja.</string>
<string name="onboarding_network_operators_configure_via_settings">A kiszolgálókat a beállításokon keresztül konfigurálhatja.</string>
<string name="onboarding_network_operators_conditions_will_be_accepted">A feltételek 30 nap elteltével lesznek elfogadva az engedélyezett üzemeltetők számára.</string>
<string name="onboarding_network_operators_conditions_you_can_configure">Az üzemeltetőket a „Hálózat és kiszolgálók” menüben konfigurálhatja.</string>
<string name="onboarding_network_operators_conditions_you_can_configure">Az üzemeltetőket a „Hálózat és kiszolgálók” beállításaban konfigurálhatja.</string>
<string name="onboarding_network_operators_update">Frissítés</string>
<string name="onboarding_network_operators_continue">Folytatás</string>
<string name="operator_review_conditions">Feltételek felülvizsgálata</string>
@@ -2133,14 +2133,14 @@
<string name="use_servers_of_operator_x">%s használata</string>
<string name="operator_conditions_failed_to_load">A jelenlegi feltételek szövegét nem lehetett betölteni, a feltételeket ezen a hivatkozáson keresztül vizsgálhatja felül:</string>
<string name="operator_conditions_accepted_for_some"><![CDATA[A feltételek már el lettek fogadva a következő üzemeltető(k) számára: <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[Ugyanezek a feltételek lesznek elfogadva a következő üzemeltető számára: <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[Ugyanezek a feltételek lesznek elfogadva a következő üzemeltető(k) számára: <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[Ugyanezek a feltételek vonatkoznak a következő üzemeltetőre is: <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[Ugyanezek a feltételek lesznek elfogadva a következő üzemeltető(k)re is: <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_applied"><![CDATA[Ezek a feltételek lesznek elfogadva a következő számára is: <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[A feltételek el lesznek fogadva a következő üzemeltető(k) számára: <b>%s</b>.]]></string>
<string name="operators_conditions_will_also_apply"><![CDATA[Ezek a feltételek lesznek elfogadva a következő számára is: <b>%s</b>.]]></string>
<string name="accept_conditions">Feltételek elfogadása</string>
<string name="operator_conditions_of_use">Használati feltételek</string>
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[A(z) <b>%s</b> kiszolgálók használatához fogadja el a használati feltételeket.]]></string>
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[A(z) <b>%s</b> kiszolgálóinak használatához fogadja el a használati feltételeket.]]></string>
<string name="operator_use_for_messages">Használat az üzenetekhez</string>
<string name="operator_use_for_messages_receiving">A fogadáshoz</string>
<string name="operator_use_for_messages_private_routing">A privát útválasztáshoz</string>
@@ -2171,9 +2171,9 @@
<string name="remote_hosts_section">Távoli hordozható eszközök</string>
<string name="xiaomi_ignore_battery_optimization"><![CDATA[<b>Xiaomi eszközök</b>: engedélyezze az automatikus indítást a rendszerbeállításokban, hogy az értesítések működjenek.]]></string>
<string name="maximum_message_size_reached_forwarding">A küldéshez másolhatja és csökkentheti az üzenet méretét.</string>
<string name="add_your_team_members_to_conversations">Adja hozzá a kollégáit a beszélgetésekhez.</string>
<string name="add_your_team_members_to_conversations">Adja hozzá csapattagjait a beszélgetésekhez.</string>
<string name="business_address">Üzleti cím</string>
<string name="all_message_and_files_e2e_encrypted"><![CDATA[Az összes üzenet és fájl <b>végpontok közötti titkosítással</b>, a közvetlen üzenetek továbbá kvantumálló titkosítással is rendelkeznek.]]></string>
<string name="all_message_and_files_e2e_encrypted"><![CDATA[Az összes üzenet és fájl <b>végpontok közötti titkosítással</b>, a közvetlen üzenetek továbbá kvantumrezisztens titkosítással is rendelkeznek.]]></string>
<string name="how_it_helps_privacy">Hogyan segíti az adatvédelmet</string>
<string name="onboarding_notifications_mode_off_desc_short">Nincs háttérszolgáltatás</string>
<string name="onboarding_notifications_mode_battery">Értesítések és akkumulátor</string>
@@ -2183,7 +2183,7 @@
<string name="button_delete_chat">Csevegés törlése</string>
<string name="invite_to_chat_button">Meghívás a csevegésbe</string>
<string name="button_add_friends">Barátok hozzáadása</string>
<string name="button_add_team_members">Kollégák hozzáadása</string>
<string name="button_add_team_members">Csapattagok hozzáadása</string>
<string name="delete_chat_for_all_members_cannot_undo_warning">A csevegés minden tag számára törlésre kerül - ezt a műveletet nem lehet visszavonni!</string>
<string name="delete_chat_for_self_cannot_undo_warning">A csevegés törlésre kerül az Ön számára - ezt a műveletet nem lehet visszavonni!</string>
<string name="delete_chat_question">Csevegés törlése?</string>
@@ -2204,13 +2204,4 @@
<string name="maximum_message_size_title">Az üzenet túl nagy!</string>
<string name="maximum_message_size_reached_non_text">Csökkentse az üzenet méretét vagy távolítsa el a médiát, és küldje el újra.</string>
<string name="direct_messages_are_prohibited_in_chat">A tagok közötti közvetlen üzenetek le vannak tiltva ebben a csevegésben.</string>
<string name="onboarding_network_operators_cant_see_who_talks_to_whom">Amikor egynél több üzemeltető van engedélyezve, akkor egyik sem rendelkezik olyan metaadatokkal, amelyekből megtudható, hogy ki kivel kommunikál.</string>
<string name="display_name_accepted_invitation">elfogadott meghívó</string>
<string name="display_name_requested_to_connect">kérelmezve a kapcsolódáshoz</string>
<string name="onboarding_network_about_operators">Az üzemeltetőkről</string>
<string name="onboarding_network_operators_simplex_flux_agreement">A SimpleX Chat és a Flux megállapodást kötött arról, hogy a Flux által üzemeltetett kiszolgálókat beépítik az alkalmazásba.</string>
<string name="encryption_renegotiation_in_progress">A titkosítás újraegyeztetése folyamatban van.</string>
<string name="sync_connection_desc">A kapcsolat titkosítása újraegyeztetést igényel.</string>
<string name="sync_connection_confirm">Javítás</string>
<string name="sync_connection_question">Kapcsolat javítása?</string>
</resources>
@@ -1347,655 +1347,4 @@
<string name="conn_level_desc_direct">langsung</string>
<string name="sending_via">Kirim via</string>
<string name="receiving_via">Terima via</string>
<string name="icon_descr_contact_checked">Kontak diperiksa</string>
<string name="invite_prohibited">Tak dapat undang kontak!</string>
<string name="snd_conn_event_ratchet_sync_agreed">enkripsi disetujui untuk %s</string>
<string name="group_member_status_creator">pembuat</string>
<string name="group_member_status_connecting">menghubungkan</string>
<string name="delete_group_question">Hapus grup?</string>
<string name="delete_group_for_all_members_cannot_undo_warning">Grup akan dihapus untuk semua anggota - ini tidak dapat dibatalkan!</string>
<string name="create_group_link">Buat tautan grup</string>
<string name="group_member_status_introduced">menghubungkan (diperkenalkan)</string>
<string name="rcv_conn_event_verification_code_reset">kode keamanan berubah</string>
<string name="num_contacts_selected">%d kontak dipilih</string>
<string name="group_link">Tautan grup</string>
<string name="past_member_vName">Anggota lama %1$s</string>
<string name="conn_event_disabled_pq">enkripsi end-to-end standar</string>
<string name="conn_event_enabled_pq">enkripsi e2e quantum resistant</string>
<string name="group_member_status_intro_invitation">menghubungkan (undangan perkenalan)</string>
<string name="group_member_status_unknown_short">tidak dikenal</string>
<string name="button_delete_chat">Hapus obrolan</string>
<string name="button_add_friends">Tambah teman</string>
<string name="button_add_team_members">Tambah anggota tim</string>
<string name="button_leave_group">Keluar grup</string>
<string name="group_member_status_announced">menghubungkan (diumumkan)</string>
<string name="group_member_status_accepted">menghubungkan (diterima)</string>
<string name="button_delete_group">Hapus grup</string>
<string name="delete_group_for_self_cannot_undo_warning">Grup akan dihapus untuk Anda - ini tidak dapat dibatalkan!</string>
<string name="delete_chat_question">Hapus obrolan?</string>
<string name="delete_chat_for_all_members_cannot_undo_warning">Obrolan akan dihapus untuk semua anggota - ini tidak dapat dibatalkan!</string>
<string name="delete_chat_for_self_cannot_undo_warning">Obrolan akan dihapus untuk Anda - ini tidak dapat dibatalkan!</string>
<string name="button_leave_chat">Tinggalkan obrolan</string>
<string name="button_edit_group_profile">Edit profil grup</string>
<string name="button_welcome_message">Pesan sambutan</string>
<string name="button_add_members">Undang anggota</string>
<string name="group_info_member_you">anda: %1$s</string>
<string name="invite_prohibited_description">Anda mencoba mengundang kontak yang telah Anda bagikan profil samaran ke grup tempat Anda menggunakan profil utama</string>
<string name="invite_to_group_button">Undang ke grup</string>
<string name="invite_to_chat_button">Undang ke obrolan</string>
<string name="select_contacts">Pilih kontak</string>
<string name="skip_inviting_button">Lewati undang anggota</string>
<string name="address_or_1_time_link">Alamat atau tautan 1-kali?</string>
<string name="developer_options_section">Opsi pengembang</string>
<string name="onboarding_choose_server_operators">Operator server</string>
<string name="onboarding_network_operators">Operator jaringan</string>
<string name="onboarding_network_operators_app_will_use_different_operators">Aplikasi ini melindungi privasi Anda dengan gunakan operator yang berbeda setiap percakapan.</string>
<string name="onboarding_network_operators_conditions_will_be_accepted">Ketentuan akan diterima untuk operator yang diaktifkan setelah 30 hari.</string>
<string name="settings_developer_tools">Alat pengembang</string>
<string name="settings_section_title_chat_colors">Warna obrolan</string>
<string name="rcv_group_event_member_created_contact">terhubung langsung</string>
<string name="remote_ctrl_error_bad_state">Koneksi ke desktop dalam kondisi buruk</string>
<string name="confirm_delete_contact_question">Konfirmasi hapus kontak?</string>
<string name="send_disappearing_message_custom_time">Waktu kustom</string>
<string name="choose_file_title">Pilih berkas</string>
<string name="you_can_connect_to_simplex_chat_founder"><![CDATA[Anda dapat <font color="#0088ff">terhubung ke pengembang SimpleX Chat untuk mengajukan pertanyaan dan menerima pembaruan</font>.]]></string>
<string name="clear_chat_question">Hapus obrolan?</string>
<string name="network_proxy_auth_mode_no_auth">Jangan gunakan kredensial dengan proxy.</string>
<string name="disable_onion_hosts_when_not_supported"><![CDATA[Atur <i>Gunakan host .onion</i> ke Tidak jika proxy SOCKS tidak mendukung.]]></string>
<string name="socks_proxy_setting_limitations"><![CDATA[<b>Harap diperhatikan</b>: relay pesan dan berkas terhubung melalui proxy SOCKS. Panggilan dan pengiriman pratinjau tautan menggunakan koneksi langsung.]]></string>
<string name="network_smp_proxy_fallback_prohibit_description">JANGAN mengirim pesan secara langsung, meskipun server Anda atau server tujuan tidak mendukung routing pribadi.</string>
<string name="display_name_cannot_contain_whitespace">Nama tampilan tidak boleh terdapat spasi.</string>
<string name="you_can_change_it_later">Frasa sandi acak disimpan dalam pengaturan sebagai teks biasa.\nAnda dapat mengubahnya nanti.</string>
<string name="setup_database_passphrase">Pasang frasa sandi basis data</string>
<string name="database_will_be_encrypted">Basis data akan dienkripsi.</string>
<string name="database_upgrade">Peningkatan basis data</string>
<string name="confirm_database_upgrades">Konfirmasi peningkatan basis data</string>
<string name="downgrade_and_open_chat">Turunkan dan buka obrolan</string>
<string name="rcv_group_event_changed_member_role">mengubah hak %s menjadi %s</string>
<string name="share_text_deleted_at">Dihapus pada: %s</string>
<string name="delete_profile">Hapus profil</string>
<string name="connect_plan_this_is_your_link_for_group_vName"><![CDATA[Ini adalah tautan untuk grup <b>%1$s</b>!]]></string>
<string name="migrate_from_device_cancel_migration">Batal pindah</string>
<string name="chunks_uploaded">Potongan diunggah</string>
<string name="info_view_connect_button">hubungkan</string>
<string name="conversation_deleted">Percakapan dihapus!</string>
<string name="disappearing_message">Pesan sementara</string>
<string name="clear_note_folder_question">Hapus catatan pribadi?</string>
<string name="chat_is_stopped">Obrolan dihentikan</string>
<string name="database_passphrase">Frasa sandi basis data</string>
<string name="confirm_new_passphrase">Konfirmasi frasa sandi baru…</string>
<string name="change_database_passphrase_question">Ubah frasa sandi basis data?</string>
<string name="cannot_access_keychain">Tidak dapat mengakses Keystore untuk menyimpan kata sandi basis data</string>
<string name="database_downgrade">Penurunan basis data</string>
<string name="chat_is_stopped_indication">Obrolan dihentikan</string>
<string name="button_create_group_link">Buat tautan</string>
<string name="info_row_deleted_at">Dihapus di</string>
<string name="direct_messages_are_prohibited_in_chat">Pesan pribadi antar anggota dilarang dalam obrolan ini.</string>
<string name="delivery_receipts_title">Tanda terima pengirim!</string>
<string name="this_device_version"><![CDATA[<i>(perangkat ini v%s)</i>]]></string>
<string name="devices">Perangkat</string>
<string name="remote_ctrl_was_disconnected_title">Koneksi terputus</string>
<string name="copy_error">Gagal salin</string>
<string name="discover_on_network">Temukan melalui jaringan lokal</string>
<string name="remote_ctrl_error_bad_invitation">Kode undangan desktop salah</string>
<string name="remote_ctrl_error_disconnected">Desktop terputus</string>
<string name="connect_plan_you_are_already_connecting_to_vName"><![CDATA[Anda sudah terhubung ke <b>%1$s</b>.]]></string>
<string name="migrate_to_device_confirm_network_settings">Konfirmasi pengaturan jaringan</string>
<string name="chunks_deleted">Potongan dihapus</string>
<string name="chunks_downloaded">Potongan diunduh</string>
<string name="downloaded_files">Berkas terunduh</string>
<string name="download_errors">Gagal unduh</string>
<string name="delete_files_and_media_all">Hapus semua berkas</string>
<string name="delete_files_and_media_question">Hapus berkas dan media?</string>
<string name="total_files_count_and_size">%d berkas dengan total ukuran %s</string>
<string name="chat_database_exported_continue">Lanjutkan</string>
<string name="rcv_direct_event_contact_deleted">kontak dihapus</string>
<string name="alert_title_cant_invite_contacts">Tak dapat undang kontak!</string>
<string name="info_row_disappears_at">Terhapus pada</string>
<string name="share_text_disappears_at">Terhapus pada: %s</string>
<string name="item_info_current">(saat ini)</string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[Ketentuan yang sama akan berlaku untuk operator <b>%s</b>.]]></string>
<string name="appearance_bars_blur_radius">Buram</string>
<string name="appearance_in_app_bars_alpha">Transparansi</string>
<string name="appearance_app_toolbars">Bilah alat aplikasi</string>
<string name="v6_0_connection_servers_status_descr">Status koneksi dan server.</string>
<string name="remote_ctrl_error_bad_version">Desktop memiliki versi tidak didukung. Pastikan Anda gunakan versi yang sama di kedua perangkat</string>
<string name="migrate_to_device_chat_migrated">Obrolan dipindahkan!</string>
<string name="migrate_from_device_delete_database_from_device">Hapus basis data dari perangkat ini</string>
<string name="delete_files_and_media_for_all_users">Hapus berkas untuk semua profil obrolan</string>
<string name="info_row_created_at">Dibuat di</string>
<string name="onboarding_notifications_mode_off_desc"><![CDATA[<b>Terbaik untuk baterai</b>. Anda akan menerima notifikasi saat aplikasi sedang berjalan (TANPA layanan latar belakang).]]></string>
<string name="onboarding_notifications_mode_periodic_desc"><![CDATA[<b>Baik untuk baterai</b>. Aplikasi memeriksa pesan setiap 10 menit. Anda mungkin melewatkan panggilan atau pesan penting.]]></string>
<string name="settings_section_title_chat_theme">Tema obrolan</string>
<string name="chat_database_section">BASIS DATA OBROLAN</string>
<string name="set_password_to_export_desc">Basis data dienkripsi menggunakan frasa sandi acak. Harap ubah frasa sandi sebelum mengekspor.</string>
<string name="chat_database_exported_title">Basis data obrolan diekspor</string>
<string name="current_passphrase">Frasa sandi saat ini…</string>
<string name="impossible_to_recover_passphrase"><![CDATA[<b>Harap diperhatikan</b>: Anda TIDAK akan dapat pulihkan atau ubah frasa sandi jika hilang.]]></string>
<string name="encrypted_with_random_passphrase">Basis data dienkripsi menggunakan frasa sandi acak, Anda dapat mengubahnya.</string>
<string name="database_will_be_encrypted_and_passphrase_stored_in_settings">Basis data akan dienkripsi dan frasa sandi disimpan dalam pengaturan.</string>
<string name="mtr_error_no_down_migration">versi database lebih baru daripada aplikasi, tetapi tidak ada penurunan migrasi untuk: %s</string>
<string name="rcv_group_events_count">%d acara grup</string>
<string name="rcv_conn_event_switch_queue_phase_completed">mengubah alamat untuk Anda</string>
<string name="info_row_database_id">ID basis data</string>
<string name="cant_call_contact_connecting_wait_alert_text">Menghubungkan ke kontak, harap tunggu atau periksa nanti!</string>
<string name="users_delete_question">Hapus profil obrolan?</string>
<string name="deletion_errors">Gagal hapus</string>
<string name="xiaomi_ignore_battery_optimization"><![CDATA[<b>Perangkat Xiaomi</b>: harap aktifkan Autostart di pengaturan sistem agar notifikasi berfungsi.]]></string>
<string name="clear_chat_button">Hapus obrolan</string>
<string name="connect_via_link_or_qr">Hubungkan via tautan / kode QR</string>
<string name="connect__a_new_random_profile_will_be_shared">Profil acak baru akan dibagikan.</string>
<string name="connection_request_sent">Permintaan koneksi terkirim!</string>
<string name="connection_security">Keamanan koneksi</string>
<string name="correct_name_to">Nama telah benar untuk %s?</string>
<string name="onboarding_network_operators_conditions_you_can_configure">Anda dapat konfigurasi operator di pengaturan Jaringan dan server.</string>
<string name="database_error">Kesalahan basis data</string>
<string name="passphrase_is_different">Frasa sandi basis data berbeda dengan yang disimpan di Keystore.</string>
<string name="change_member_role_question">Ubah hak grup?</string>
<string name="operators_conditions_will_also_apply"><![CDATA[Ketentuan ini juga berlaku untuk: <b>%s</b>.]]></string>
<string name="operator_conditions_of_use">Ketentuan Penggunaan</string>
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[Ketentuan akan diterima untuk operator: <b>%s</b>.]]></string>
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[Untuk gunakan server <b>%s</b>, terima ketentuan penggunaan.]]></string>
<string name="operator_added_message_servers">Menambahkan server pesan</string>
<string name="delete_chat_profile">Hapus profil obrolan</string>
<string name="v6_2_business_chats">Obrolan bisnis</string>
<string name="remote_ctrl_disconnected_with_reason">Terputus dikarenakan: %s</string>
<string name="remote_host_disconnected_from"><![CDATA[Terputus dari ponsel <b>%s</b> dengan alasan: %s]]></string>
<string name="remote_ctrl_error_busy">Desktop sedang sibuk</string>
<string name="rcv_group_event_group_deleted">grup dihapus</string>
<string name="profile_update_event_contact_name_changed">kontak %1$s diubah menjadi %2$s</string>
<string name="calls_prohibited_alert_title">Panggilan dilarang!</string>
<string name="operator_conditions_accepted_for_some"><![CDATA[Ketentuan sudah diterima untuk operator berikut: <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[Ketentuan yang sama akan berlaku untuk operator: <b>%s</b>.]]></string>
<string name="operator_conditions_failed_to_load">Teks ketentuan saat ini tidak dapat dimuat, Anda dapat meninjau ketentuan via tautan ini:</string>
<string name="direct_messages_are_prohibited">Pesan pribadi antar anggota dilarang.</string>
<string name="migrate_from_device_choose_migrate_from_another_device"><![CDATA[Pilih <i>Pindah dari perangkat lain</i> pada perangkat baru dan pindai kode QR.]]></string>
<string name="delete_contact_all_messages_deleted_cannot_undo_warning">Kontak dan semua pesan akan dihapus - ini tidak dapat dibatalkan!</string>
<string name="delete_contact_cannot_undo_warning">Kontak akan dihapus - ini tidak dapat dibatalkan!</string>
<string name="delete_contact_question">Hapus kontak?</string>
<string name="contact_deleted">Kontak dihapus!</string>
<string name="delete_without_notification">Hapus tanpa notifikasi</string>
<string name="switch_receiving_address_question">Ubah alamat penerima?</string>
<string name="icon_descr_server_status_disconnected">Terputus</string>
<string name="add_contact_button_to_create_link_or_connect_via_link"><![CDATA[<b>Tambahkan kontak</b>: untuk buat tautan undangan baru, atau terhubung via tautan yang Anda terima.]]></string>
<string name="delete_pending_connection__question">Hapus koneksi yang tertunda?</string>
<string name="alert_title_contact_connection_pending">Kontak belum terhubung!</string>
<string name="delete_address">Hapus alamat</string>
<string name="delete_database">Hapus basis data</string>
<string name="chat_database_deleted">Basis data obrolan dihapus</string>
<string name="chat_database_imported">Basis data obrolan diimpor</string>
<string name="send_receipts_disabled">Dimatikan</string>
<string name="v6_0_connection_servers_status">Kontrol jaringan Anda</string>
<string name="connecting_to_desktop">Menghubungkan ke desktop</string>
<string name="desktop_app_version_is_incompatible">Versi aplikasi desktop %s tidak kompatibel dengan aplikasi ini.</string>
<string name="remote_host_error_bad_state"><![CDATA[Koneksi ponsel <b>%s</b> dalam kondisi buruk]]></string>
<string name="auth_device_authentication_is_not_enabled_you_can_turn_on_in_settings_once_enabled">Autentikasi perangkat tidak diaktifkan. Anda dapat aktifkan SimpleX Lock via Pengaturan, setelah mengaktifkan autentikasi perangkat.</string>
<string name="auth_unavailable">Autentikasi tidak tersedia</string>
<string name="auth_confirm_credential">Konfirmasi kredensial Anda</string>
<string name="auth_device_authentication_is_disabled_turning_off">Autentikasi perangkat mati. Matikan SimpleX Lock.</string>
<string name="auth_disable_simplex_lock">Matikan Kunci SimpleX</string>
<string name="snd_error_relay">Kesalahan server tujuan: %1$s</string>
<string name="delete_and_notify_contact">Hapus dan beritahu kontak</string>
<string name="button_delete_contact">Hapus kontak</string>
<string name="icon_descr_cancel_live_message">Batal pesan langsung</string>
<string name="confirm_verb">Konfirmasi</string>
<string name="create_group">Buat grup rahasia</string>
<string name="camera_not_available">Kamera tidak tersedia</string>
<string name="desktop_scan_QR_code_from_app_via_scan_QR_code"><![CDATA[💻 desktop: pindai kode QR yang ditampilkan dari aplikasi, via <b>Pindai kode QR</b>.]]></string>
<string name="mobile_tap_open_in_mobile_app_then_tap_connect_in_app"><![CDATA[📱 ponsel: ketuk <b>Buka di aplikasi seluler</b>, lalu ketuk <b>Hubungkan</b> di aplikasi.]]></string>
<string name="delete_contact_menu_action">Hapus</string>
<string name="delete_group_menu_action">Hapus</string>
<string name="icon_descr_cancel_link_preview">batal pratinjau tautan</string>
<string name="icon_descr_close_button">Tombol tutup</string>
<string name="icon_descr_email">Email</string>
<string name="if_you_cannot_meet_in_person_scan_QR_in_video_call_or_ask_for_invitation_link"><![CDATA[Jika Anda tidak dapat bertemu langsung, Anda dapat <b>pindai kode QR dalam panggilan video</b>, atau kontak Anda dapat bagikan tautan undangan.]]></string>
<string name="read_more_in_user_guide_with_link"><![CDATA[Lebih lanjut di <font color="#0088ff">Panduan Pengguna</font>.]]></string>
<string name="enable_receipts_all">Aktifkan</string>
<string name="onboarding_network_operators_cant_see_who_talks_to_whom">Ketika lebih dari satu operator diaktifkan, tidak satupun dari mereka memiliki metadata untuk mengetahui siapa yang berkomunikasi.</string>
<string name="chat_is_running">Obrolan sedang berjalan</string>
<string name="database_will_be_encrypted_and_passphrase_stored">Basis data akan dienkripsi dan frasa sandi disimpan di Keystore.</string>
<string name="rcv_group_event_changed_your_role">mengubah hak Anda jadi %s</string>
<string name="snd_conn_event_switch_queue_phase_changing">mengubah alamat…</string>
<string name="snd_conn_event_switch_queue_phase_changing_for_member">mengubah alamat untuk %s…</string>
<string name="share_text_database_id">ID basis data: %d</string>
<string name="operator_added_xftp_servers">Menambahkan media dan berkas server</string>
<string name="connect_plan_chat_already_exists">Obrolan sudah ada!</string>
<string name="database_encrypted">Basis data dienkripsi!</string>
<string name="database_encryption_will_be_updated_in_settings">Frasa sandi enkripsi basis data akan diperbarui dan disimpan di pengaturan.</string>
<string name="database_encryption_will_be_updated">Frasa sandi enkripsi basis data akan diperbarui dan disimpan di Keystore.</string>
<string name="mtr_error_different">migrasi berbeda di aplikasi/basis data: %s / %s</string>
<string name="if_you_cannot_meet_in_person_show_QR_in_video_call_or_via_another_channel"><![CDATA[Jika Anda tidak dapat bertemu langsung, <b>tunjukkan kode QR dalam panggilan video</b>, atau bagikan tautan.]]></string>
<string name="dont_create_address">Jangan buat alamat</string>
<string name="servers_info_details">Rincian</string>
<string name="connections">Koneksi</string>
<string name="connected_to_mobile">Terhubung ke ponsel</string>
<string name="dont_enable_receipts">Jangan aktifkan</string>
<string name="open_on_mobile_and_scan_qr_code"><![CDATA[Buka <i>Gunakan dari desktop</i> di aplikasi seluler dan pindai kode QR.]]></string>
<string name="desktop_device">Desktop</string>
<string name="display_name_accepted_invitation">undangan diterima</string>
<string name="display_name_requested_to_connect">diminta untuk terhubung</string>
<string name="auth_open_chat_profiles">Ubah profil obrolan</string>
<string name="snd_error_quota">Kapasitas terlampaui - penerima tidak menerima pesan yang dikirim sebelumnya.</string>
<string name="one_time_link_can_be_used_with_one_contact_only"><![CDATA[tautan 1-kali dapat digunakan <i>hanya dengan satu kontak</i> - bagikan secara langsung atau melalui messenger apa pun.]]></string>
<string name="copied">Disalin ke papan klip</string>
<string name="share_one_time_link">Buat tautan undangan satu-kali</string>
<string name="maximum_supported_file_size">Saat ini maksimal ukuran berkas adalah %1$s.</string>
<string name="you_can_also_connect_by_clicking_the_link"><![CDATA[Anda juga dapat terhubung dengan ketuk tautan. Jika tautan terbuka di peramban, ketuk <b>Buka di ponsel</b>.]]></string>
<string name="address_settings">Pengaturan alamat</string>
<string name="add_your_team_members_to_conversations">Tambahkan anggota tim Anda ke percakapan.</string>
<string name="business_address">Alamat bisnis</string>
<string name="all_message_and_files_e2e_encrypted"><![CDATA[Semua pesan dan berkas dikirim <b>dengan enkripsi end-to-end</b>, dengan keamanan post-quantum dalam pesan pribadi.]]></string>
<string name="create_1_time_link">Buat tautan 1-kali</string>
<string name="onboarding_notifications_mode_battery">Notifikasi dan baterai</string>
<string name="onboarding_notifications_mode_off_desc_short">Tiada layanan latar belakang</string>
<string name="onboarding_notifications_mode_service_desc_short">Aplikasi selalu berjalan di latar belakang</string>
<string name="onboarding_notifications_mode_periodic_desc_short">Periksa pesan setiap 10 menit</string>
<string name="onboarding_select_network_operators_to_use">Pilih operator jaringan yang akan digunakan.</string>
<string name="onboarding_network_operators_app_will_use_for_routing">Misalnya, jika kontak Anda menerima pesan melalui server SimpleX Chat, aplikasi Anda akan mengirimkannya melalui server Flux.</string>
<string name="how_it_helps_privacy">Bagaimana ini membantu privasi</string>
<string name="onboarding_network_operators_continue">Lanjutkan</string>
<string name="onboarding_network_operators_configure_via_settings">Anda dapat konfigurasi server di pengaturan.</string>
<string name="read_more_in_github_with_link"><![CDATA[Lebih lengkap di <font color="#0088ff">repositori GitHub</font> kami.]]></string>
<string name="onboarding_network_operators_review_later">Nilai nanti</string>
<string name="onboarding_network_operators_update">Perbarui</string>
<string name="migrate_to_device_downloading_details">Rincian tautan unduhan</string>
<string name="network_session_mode_user_description"><![CDATA[Koneksi TCP terpisah (dan kredensial SOCKS) akan digunakan <b>untuk setiap profil obrolan yang Anda miliki di aplikasi</b>.]]></string>
<string name="network_session_mode_entity_description"><![CDATA[Koneksi TCP terpisah (dan kredensial SOCKS) akan digunakan <b>untuk setiap kontak dan anggota grup</b>.\n<b>Harap diperhatikan</b>: jika Anda memiliki banyak koneksi, konsumsi baterai dan lalu lintas dapat jauh lebih tinggi dan beberapa koneksi mungkin gagal.]]></string>
<string name="app_check_for_updates_download_started">Mengunduh pembaruan aplikasi, jangan tutup aplikasi</string>
<string name="app_check_for_updates_notice_disable">Mati</string>
<string name="create_simplex_address">Buat alamat SimpleX</string>
<string name="create_address_and_let_people_connect">Buat alamat agar orang dapat terhubung dengan Anda.</string>
<string name="continue_to_next_step">Lanjutkan</string>
<string name="delete_image">Hapus gambar</string>
<string name="edit_image">Edit gambar</string>
<string name="onboarding_notifications_mode_service_desc"><![CDATA[<b>Mengonsumsi banyak baterai</b>! Aplikasi selalu berjalan di latar belakang notifikasi ditampilkan secara instan.]]></string>
<string name="settings_message_shape_corner">Sudut</string>
<string name="dont_show_again">Jangan tampilkan lagi</string>
<string name="migrate_from_device_confirm_upload">Konfirmasi unggahan</string>
<string name="migrate_from_device_archive_and_upload">Arsip dan unggah</string>
<string name="deleted">Dihapus</string>
<string name="desktop_connection_terminated">Koneksi dihentikan</string>
<string name="desktop_address">Alamat desktop</string>
<string name="desktop_devices">Perangkat desktop</string>
<string name="onboarding_network_about_operators">Tentang operator</string>
<string name="onboarding_network_operators_simplex_flux_agreement">SimpleX Chat dan Flux membuat kesepakatan untuk sertakan server yang dioperasikan Flux ke aplikasi.</string>
<string name="delete_chat_profile_question">Hapus profil obrolan?</string>
<string name="chat_is_stopped_you_should_transfer_database">Obrolan dihentikan. Jika Anda sudah gunakan basis data ini di perangkat lain, Anda harus transfer kembali sebelum memulai obrolan.</string>
<string name="database_passphrase_will_be_updated">Frasa sandi enkripsi basis data akan diperbarui.</string>
<string name="database_passphrase_is_required">Frasa sandi basis data diperlukan untuk membuka obrolan.</string>
<string name="operator_conditions_will_be_applied"><![CDATA[Ketentuan ini juga berlaku untuk: <b>%s</b>.]]></string>
<string name="migrate_from_device_you_must_not_start_database_on_two_device"><![CDATA[Anda <b>tidak</b> boleh menggunakan basis data yang sama pada dua perangkat.]]></string>
<string name="connected_to_desktop">Terhubung ke desktop</string>
<string name="connect_to_desktop">Hubungkan ke desktop</string>
<string name="custom_time_unit_days">hari</string>
<string name="decryption_errors">kesalahan dekripsi</string>
<string name="disconnect_remote_hosts">Putuskan ponsel</string>
<string name="multicast_discoverable_via_local_network">Dapat ditemukan melalui jaringan lokal</string>
<string name="duplicates_label">duplikat</string>
<string name="v6_1_better_security">Keamanan yang lebih baik ✅</string>
<string name="v6_1_customizable_message_descr">Bentuk pesan yang dapat disesuaikan.</string>
<string name="migrate_from_device_using_on_two_device_breaks_encryption"><![CDATA[<b>Harap diperhatikan</b>: menggunakan database yang sama pada dua perangkat akan merusak dekripsi pesan dari koneksi Anda, sebagai perlindungan keamanan.]]></string>
<string name="connect_plan_you_are_already_joining_the_group_vName"><![CDATA[Anda sudah bergabung dengan grup <b>%1$s</b>.]]></string>
<string name="rcv_conn_event_switch_queue_phase_changing">mengubah alamat…</string>
<string name="delete_link_question">Hapus tautan?</string>
<string name="delete_link">Hapus tautan</string>
<string name="disconnect_remote_host">Putuskan</string>
<string name="servers_info_connected_servers_section_header">Server terhubung</string>
<string name="delete_member_message__question">Hapus pesan anggota?</string>
<string name="v6_1_message_dates_descr">Tanggal pesan lebih baik.</string>
<string name="new_desktop"><![CDATA[<i>(baru)</i>]]></string>
<string name="connect_plan_you_are_already_connected_with_vName"><![CDATA[Anda sudah terhubung dengan <b>%1$s</b>.]]></string>
<string name="created">Dibuat</string>
<string name="delete_members_messages__question">Hapus %d pesan anggota?</string>
<string name="failed_to_save_servers">Gagal simpan server</string>
<string name="ci_status_other_error">Galat: %1$s</string>
<string name="image_will_be_received_when_contact_completes_uploading">Gambar akan diterima setelah kontak Anda selesai mengunggah.</string>
<string name="error_saving_file">Gagal simpan berkas</string>
<string name="invalid_contact_link">Tautan tidak valid!</string>
<string name="app_check_for_updates_button_install">Instal pembaruan</string>
<string name="hide_dev_options">Sembunyikan:</string>
<string name="for_social_media">Untuk media sosial</string>
<string name="settings_experimental_features">Fitur eksperimental</string>
<string name="auth_enable_simplex_lock">Aktifkan Kunci SimpleX</string>
<string name="file_error_no_file">Berkas tidak ditemukan - kemungkinan besar telah dihapus atau dibatalkan.</string>
<string name="file_error_relay">Kesalahan berkas server: %1$s</string>
<string name="in_reply_to">Balasan untuk</string>
<string name="choose_file">Berkas</string>
<string name="gallery_image_button">gambar</string>
<string name="favorite_chat">Favorit</string>
<string name="exit_without_saving">Keluar tanpa menyimpan</string>
<string name="file_with_path">Berkas: %s</string>
<string name="group_invitation_item_description">undangan ke grup %1$s</string>
<string name="alert_title_no_group">Grup tidak ditemukan!</string>
<string name="error_sending_message_contact_invitation">Gagal kirim undangan</string>
<string name="action_button_add_members">Undang</string>
<string name="info_row_file_status">Status berkas</string>
<string name="error_changing_role">Gagal ganti hak</string>
<string name="error_removing_member">Gagal hapus anggota</string>
<string name="incognito">Samaran</string>
<string name="incognito_info_protects">Mode samaran melindungi privasi Anda dengan menggunakan profil acak baru untuk setiap kontak.</string>
<string name="error_enabling_delivery_receipts">Gagal aktifkan tanda terima pengirim!</string>
<string name="enter_this_device_name">Masukkan nama perangkat ini…</string>
<string name="migrate_to_device_import_failed">Impor gagal</string>
<string name="migrate_to_device_error_downloading_archive">Gagal unduh arsipan</string>
<string name="migrate_from_device_exported_file_doesnt_exist">Berkas yang diekspor tidak ada</string>
<string name="migrate_from_device_finalize_migration">Selesaikan migrasi</string>
<string name="servers_info_reset_stats_alert_error_title">Gagal atur ulang statistik</string>
<string name="error_importing_database">Gagal impor basis data obrolan</string>
<string name="error_deleting_database">Gagal hapus basis data obrolan</string>
<string name="files_and_media_section">Berkas dan media</string>
<string name="encrypt_database_question">Enkripsi basis data?</string>
<string name="incompatible_database_version">Versi basis data tidak kompatibel</string>
<string name="section_title_for_console">UNTUK KONSOL</string>
<string name="connect_plan_group_already_exists">Grup sudah ada!</string>
<string name="migrate_to_device_enter_passphrase">Masukkan frasa sandi</string>
<string name="enable_automatic_deletion_question">Aktifkan hapus pesan otomatis?</string>
<string name="encrypted_database">Basis data terenkripsi</string>
<string name="invalid_migration_confirmation">Konfirmasi migrasi tidak valid</string>
<string name="group_invitation_expired">Undangan grup kedaluwarsa</string>
<string name="conn_event_ratchet_sync_allowed">negosiasi ulang enkripsi diperbolehkan</string>
<string name="conn_event_ratchet_sync_required">negosiasi ulang enkripsi diperlukan</string>
<string name="snd_conn_event_ratchet_sync_allowed">negosiasi ulang enkripsi diizinkan untuk %s</string>
<string name="v6_2_network_decentralization_enable_flux">Aktifkan flux</string>
<string name="v6_2_network_decentralization_enable_flux_reason">untuk privasi metadata lebih baik.</string>
<string name="v6_2_improved_chat_navigation">Navigasi obrolan ditingkatkan</string>
<string name="error">Galat</string>
<string name="migrate_to_device_finalize_migration">Selesaikan migrasi pada perangkat lain.</string>
<string name="migrate_from_device_error_verifying_passphrase">Gagal verifikasi frasa sandi:</string>
<string name="servers_info_reconnect_server_error">Gagal hubungkan ulang server</string>
<string name="servers_info_reconnect_servers_error">Gagal hubungkan ulang server</string>
<string name="settings_section_title_experimenta">EKSPERIMENTAL</string>
<string name="export_database">Ekspor basis data</string>
<string name="import_database">Impor basis data</string>
<string name="error_stopping_chat">Gagal hentikan obrolan</string>
<string name="error_changing_message_deletion">Gagal ganti pengaturan</string>
<string name="error_with_info">Galat: %s</string>
<string name="icon_descr_group_inactive">Grup tidak aktif</string>
<string name="alert_title_group_invitation_expired">Undangan kedaluwarsa!</string>
<string name="snd_group_event_group_profile_updated">profil grup diperbarui</string>
<string name="initial_member_role">Hak awal</string>
<string name="error_creating_link_for_group">Gagal membuat tautan grup</string>
<string name="error_deleting_link_for_group">Gagal hapus tautan grup</string>
<string name="error_updating_link_for_group">Gagal perbarui tautan grup</string>
<string name="error_creating_member_contact">Gagal membuat kontak anggota</string>
<string name="user_hide">Sembunyikan</string>
<string name="image_will_be_received_when_contact_is_online">Gambar akan diterima saat kontak Anda online, harap tunggu atau periksa nanti!</string>
<string name="file_error">Kesalahan berkas</string>
<string name="from_gallery_button">Dari Galeri</string>
<string name="how_to_use_markdown">Cara menggunakan markdown</string>
<string name="alert_message_group_invitation_expired">Undangan grup tidak lagi berlaku, telah dihapus oleh pengirim.</string>
<string name="operator_use_for_messages_private_routing">Untuk routing pribadi</string>
<string name="error_updating_server_title">Gagal perbarui server</string>
<string name="enter_password_to_show">Masukkan kata sandi dalam pencarian</string>
<string name="enter_correct_passphrase">Masukkan frasa sandi yang benar.</string>
<string name="custom_time_unit_hours">jam</string>
<string name="desktop_incompatible_version">Versi tidak kompatibel</string>
<string name="servers_info_sessions_errors">Galat</string>
<string name="snd_error_proxy">Server penerusan: %1$s\nKesalahan: %2$s</string>
<string name="snd_error_proxy_relay">Server penerusan: %1$s\nKesalahan server tujuan: %2$s</string>
<string name="files_and_media_prohibited">Berkas dan media dilarang!</string>
<string name="file_will_be_received_when_contact_completes_uploading">Berkas akan diterima setelah kontak Anda selesai mengunggah.</string>
<string name="file_will_be_received_when_contact_is_online">Berkas akan diterima saat kontak Anda online, harap tunggu atau periksa nanti!</string>
<string name="enable_camera_access">Aktifkan akses kamera</string>
<string name="if_you_received_simplex_invitation_link_you_can_open_in_browser">Jika Anda menerima tautan undangan SimpleX Chat, Anda dapat buka di peramban Anda:</string>
<string name="icon_descr_help">bantuan</string>
<string name="if_you_cant_meet_in_person">Jika Anda tidak dapat bertemu langsung, tunjukkan kode QR dalam panggilan video, atau bagikan tautan.</string>
<string name="network_option_enable_tcp_keep_alive">Aktifkan TCP keep-alive</string>
<string name="error_starting_chat">Gagal memulai obrolan</string>
<string name="settings_section_title_incognito">Mode samaran</string>
<string name="migrate_from_device_error_deleting_database">Gagal hapus basis data</string>
<string name="invalid_QR_code">Kode QR tidak valid</string>
<string name="error_encrypting_database">Gagal enkripsi basis data</string>
<string name="icon_descr_server_status_error">Galat</string>
<string name="import_database_confirmation">Impor</string>
<string name="expired_label">kedaluwarsa</string>
<string name="if_you_choose_to_reject_the_sender_will_not_be_notified">Jika Anda memilih menolak, pengirim TIDAK akan diberitahu.</string>
<string name="errors_in_servers_configuration">Kesalahan dalam konfigurasi server.</string>
<string name="for_chat_profile">Untuk profil obrolan %s:</string>
<string name="error_accepting_operator_conditions">Gagal menerima ketentuan</string>
<string name="app_check_for_updates_installed_successfully_title">Berhasil diinstal</string>
<string name="hide_profile">Sembunyikan profil</string>
<string name="enter_passphrase">Masukkan frasa sandi…</string>
<string name="migrate_to_device_file_delete_or_link_invalid">Berkas telah dihapus atau tautan tidak valid</string>
<string name="enter_welcome_message_optional">Masukkan pesan sambutan… (opsional)</string>
<string name="full_name__field">Nama lengkap:</string>
<string name="migrate_from_device_chat_should_be_stopped">Untuk melanjutkan, obrolan harus dihentikan.</string>
<string name="snd_conn_event_ratchet_sync_required">negosiasi ulang enkripsi diperlukan untuk %s</string>
<string name="icon_descr_expand_role">Perluas pemilihan hak</string>
<string name="found_desktop">Ditemukan desktop</string>
<string name="migrate_from_device_error_saving_settings">Gagal simpan pengaturan</string>
<string name="snd_conn_event_ratchet_sync_ok">enkripsi ok untuk %s</string>
<string name="error_exporting_chat_database">Gagal ekspor basis data obrolan</string>
<string name="import_database_question">Impor basis data obrolan?</string>
<string name="conn_level_desc_indirect">tidak langsung (%1$s)</string>
<string name="error_adding_server">Gagal menambah server</string>
<string name="migrate_from_device_error_uploading_archive">Gagal perbarui arsipan</string>
<string name="error_blocking_member_for_all">Gagal blokir anggota untuk semua</string>
<string name="error_saving_user_password">Gagal simpan kata sandi pengguna</string>
<string name="invalid_file_link">Tautan tidak valid</string>
<string name="no_message_servers_configured">Tiada server pesan.</string>
<string name="no_message_servers_configured_for_private_routing">Tiada server untuk routing pesan pribadi.</string>
<string name="no_media_servers_configured">Tiada server media dan berkas.</string>
<string name="no_message_servers_configured_for_receiving">Tiada server untuk menerima pesan.</string>
<string name="or_to_share_privately">Atau bagikan secara pribadi</string>
<string name="save_and_notify_group_members">Simpan dan beritahu anggota grup</string>
<string name="current_version_timestamp">%s (saat ini)</string>
<string name="unblock_member_desc">Pesan dari %s akan ditampilkan!</string>
<string name="auth_log_in_using_credential">Masuk dengan kredensial Anda</string>
<string name="send_disappearing_message_send">Kirim</string>
<string name="save_and_notify_contacts">Simpan dan beritahu kontak</string>
<string name="alert_title_msg_bad_id">ID pesan salah</string>
<string name="keychain_error">Kesalahan Keychain</string>
<string name="save_passphrase_and_open_chat">Simpan frasa sandi dan buka obrolan</string>
<string name="open_chat">Buka obrolan</string>
<string name="restore_passphrase_not_found_desc">Frasa sandi tidak ditemukan di Keystore, silakan masukkan secara manual. Hal ini mungkin terjadi jika Anda pulihkan data aplikasi menggunakan alat cadangan. Jika tidak, silakan hubungi pengembang.</string>
<string name="one_hand_ui">Toolbar aplikasi yang dijangkau</string>
<string name="member_will_be_removed_from_group_cannot_be_undone">Anggota akan dihapus dari grup - ini tidak dapat dibatalkan!</string>
<string name="network_option_protocol_timeout_per_kb">Batas waktu protokol per KB</string>
<string name="network_option_rcv_concurrency">Menerima konkurensi</string>
<string name="profile_password">Kata sandi profil</string>
<string name="v4_5_italian_interface">Antarmuka Italia</string>
<string name="link_a_mobile">Hubungkan ponsel</string>
<string name="you_can_enable_delivery_receipts_later_alert">Anda dapat aktifkan nanti di pengaturan Privasi dan Keamanan aplikasi.</string>
<string name="linked_desktop_options">Opsi desktop tertaut</string>
<string name="migrate_from_device_try_again">Anda dapat mencoba lagi.</string>
<string name="servers_info_reset_stats_alert_confirm">Reset</string>
<string name="settings_restart_app">Mulai ulang</string>
<string name="restart_the_app_to_use_imported_chat_database">Mulai ulang aplikasi untuk gunakan basis data obrolan yang diimpor.</string>
<string name="restore_database">Pulihkan cadangan basis data</string>
<string name="database_restore_error">Gagal pulihkan basis data</string>
<string name="you_can_share_group_link_anybody_will_be_able_to_connect">Anda dapat bagikan tautan atau kode QR - siapa pun dapat bergabung ke grup. Anda tidak akan kehilangan anggota grup jika nanti Anda hapus.</string>
<string name="send_receipts_disabled_alert_title">Tanda terima dimatikan</string>
<string name="you_can_share_this_address_with_your_contacts">Anda dapat bagikan alamat ini dengan kontak agar dapat terhubung dengan %s.</string>
<string name="you_can_enable_delivery_receipts_later">Anda dapat aktifkan nanti di Pengaturan</string>
<string name="sending_delivery_receipts_will_be_enabled_all_profiles">Kirim tanda terima pengirim akan diaktifkan untuk semua kontak di semua profil obrolan yang terlihat.</string>
<string name="or_paste_archive_link">Atau tempel tautan arsip</string>
<string name="migrate_to_device_database_init">Mempersiapkan unduhan</string>
<string name="migrate_to_device_title">Pindah ke sini</string>
<string name="migrate_to_device_repeat_import">Impor ulang</string>
<string name="migrate_to_device_confirm_network_settings_footer">Harap konfirmasi bahwa pengaturan jaringan sudah benar untuk perangkat ini.</string>
<string name="migrate_from_device_database_init">Mempersiapkan unggahan</string>
<string name="servers_info_reconnect_servers_message">Hubungkan ulang semua server yang terhubung untuk paksa kirim pesan. Ini menggunakan lalu lintas tambahan.</string>
<string name="servers_info_reconnect_server_title">Hubungkan ulang server?</string>
<string name="servers_info_reset_stats">Reset semua statistik</string>
<string name="servers_info_reset_stats_alert_title">Reset seluruh statistik?</string>
<string name="servers_info_reconnect_all_servers_button">Hubungkan ulang semua server</string>
<string name="save_passphrase_in_keychain">Simpan frasa sandi di Keystore</string>
<string name="info_row_local_name">Nama lokal</string>
<string name="info_row_sent_at">Dikirim pada</string>
<string name="info_row_received_at">Diterima pada</string>
<string name="network_options_reset_to_defaults">Reset ke bawaan</string>
<string name="v6_2_network_decentralization">Jaringan desentralisasi</string>
<string name="sending_delivery_receipts_will_be_enabled">Kirim tanda terima pengirim akan diaktifkan untuk semua kontak.</string>
<string name="linked_desktops">Desktop terhubung</string>
<string name="migrate_to_device_bytes_downloaded">%s diunduh</string>
<string name="servers_info_messages_received">Pesan diterima</string>
<string name="info_row_updated_at">Catatan diperbarui pada</string>
<string name="settings_section_title_messages">PESAN DAN BERKAS</string>
<string name="settings_section_title_user_theme">Tema profil</string>
<string name="settings_section_title_profile_images">Gambar profil</string>
<string name="enter_correct_current_passphrase">Harap masukkan frasa sandi saat ini yang benar.</string>
<string name="database_migrations">Migrasi: %s</string>
<string name="rcv_group_event_1_member_connected">%s terhubung</string>
<string name="profile_update_event_member_name_changed">anggota %1$s berubah menjadi %2$s</string>
<string name="info_row_message_status">Status pesan</string>
<string name="info_row_moderated_at">Dimoderasi pada</string>
<string name="button_send_direct_message">Kirim pesan pribadi</string>
<string name="network_option_protocol_timeout">Batas waktu protokol</string>
<string name="network_options_save_and_reconnect">Simpan dan hubungkan ulang</string>
<string name="incognito_info_allows">Memungkinkan adanya banyak koneksi anonim tanpa ada data bersama di antara mereka dalam satu profil obrolan.</string>
<string name="servers_info_reconnect_servers_title">Hubungkan ulang server?</string>
<string name="maximum_message_size_title">Pesan terlalu besar!</string>
<string name="maximum_message_size_reached_non_text">Mohon kurangi ukuran pesan atau hapus media dan kirim lagi.</string>
<string name="maximum_message_size_reached_text">Mohon kurangi ukuran pesan dan kirim lagi.</string>
<string name="maximum_message_size_reached_forwarding">Anda dapat salin dan kurangi ukuran pesan untuk kirim.</string>
<string name="reset_verb">Reset</string>
<string name="send_live_message_desc">Kirim pesan langsung - pesan akan diperbarui pada penerima saat Anda mengetik</string>
<string name="icon_descr_send_message">Kirim Pesan</string>
<string name="mark_unread">Tandai belum dibaca</string>
<string name="you_can_set_connection_name_to_remember">Anda dapat setel nama koneksi, untuk mengingat dengan siapa tautan dibagikan.</string>
<string name="app_check_for_updates_button_open">Buka lokasi berkas</string>
<string name="app_check_for_updates_installed_successfully_desc">Silakan mulai ulang aplikasi.</string>
<string name="join_group_incognito_button">Gabung ke samaran</string>
<string name="sender_at_ts">%s pada %s</string>
<string name="member_will_be_removed_from_chat_cannot_be_undone">Anggota akan dihapus dari obrolan - ini tidak dapat dibatalkan!</string>
<string name="operator_server_alert_title">Server operator</string>
<string name="server_added_to_operator__name">Server ditambah ke operator %s.</string>
<string name="error_server_operator_changed">Operator server berubah.</string>
<string name="error_server_protocol_changed">Protokol server berubah.</string>
<string name="network_option_ping_count">Jumlah PING</string>
<string name="network_option_ping_interval">Interval PING</string>
<string name="v6_2_improved_chat_navigation_descr">- Buka obrolan pada pesan belum dibaca pertama.\n- Lompat ke pesan yang dikutip.</string>
<string name="custom_time_picker_select">Pilih</string>
<string name="servers_info_reconnect_server_message">Hubungkan ulang server untuk paksa kirim pesan. Ini menggunakan lalu lintas tambahan.</string>
<string name="chat_bottom_bar">Bilah alat obrolan yang dijangkau</string>
<string name="profile_update_event_removed_picture">foto profil dihapus</string>
<string name="rcv_group_event_2_members_connected">%s dan %s terhubung</string>
<string name="v6_2_business_chats_descr">Privasi untuk pelanggan Anda.</string>
<string name="migrate_to_device_repeat_download">Unduh ulang</string>
<string name="migrate_to_device_try_again">Anda dapat mencoba lagi.</string>
<string name="migrate_from_device_remove_archive_question">Hapus arsip?</string>
<string name="migrate_from_device_repeat_upload">Unggah ulang</string>
<string name="keep_conversation">Simpan percakapan</string>
<string name="you_can_still_send_messages_to_contact">Anda dapat kirim pesan ke %1$s dari kontak yang diarsip.</string>
<string name="switch_receiving_address_desc">Alamat penerima akan diubah ke server lain. Perubahan alamat akan selesai setelah pengirim online.</string>
<string name="ask_your_contact_to_enable_voice">Minta kontak Anda untuk aktifkan kirim pesan suara.</string>
<string name="image_descr_profile_image">gambar profil</string>
<string name="save_auto_accept_settings">Simpan pengaturan terima otomatis</string>
<string name="share_text_updated_at">Catatan diperbarui pada: %s</string>
<string name="network_option_seconds_label">dtk</string>
<string name="bad_desktop_address">Alamat desktop salah</string>
<string name="scan_qr_code_from_desktop">Pindai kode QR dari desktop</string>
<string name="servers_info_messages_sent">Pesan terkirim</string>
<string name="moderated_item_description">dimoderasi oleh %s</string>
<string name="auth_open_chat_console">Buka konsol obrolan</string>
<string name="message_delivery_warning_title">Peringatan kirim pesan</string>
<string name="message_delivery_error_title">Kesalahan kirim pesan</string>
<string name="recipients_can_not_see_who_message_from">Penerima tidak dapat melihat siapa pengirim pesan ini.</string>
<string name="observer_cant_send_message_desc">Silakan hubungi admin grup.</string>
<string name="loading_remote_file_title">Memuat berkas</string>
<string name="loading_remote_file_desc">Harap tunggu sementara berkas sedang dimuat dari ponsel yang terhubung</string>
<string name="icon_descr_server_status_pending">Tertunda</string>
<string name="sync_connection_force_question">Negosiasi ulang enkripsi?</string>
<string name="sync_connection_force_confirm">Negosiasi ulang</string>
<string name="send_disappearing_message">Kirim pesan sementara</string>
<string name="send_verb">Kirim</string>
<string name="scan_QR_code">Pindai kode QR</string>
<string name="connect_via_link_or_qr_from_clipboard_or_in_person">(pindai atau tempel dari papan klip)</string>
<string name="toast_permission_denied">Izin Ditolak!</string>
<string name="mark_read">Tandai dibaca</string>
<string name="image_descr_link_preview">tautan pratinjau gambar</string>
<string name="you_can_share_your_address">Anda dapat bagikan alamat sebagai tautan atau kode QR - siapa pun dapat terhubung dengan Anda.</string>
<string name="network_options_save">Simpan</string>
<string name="make_profile_private">Jadikan profil pribadi!</string>
<string name="remote_hosts_section">Ponsel jarak jauh</string>
<string name="run_chat_section">JALANKAN OBROLAN</string>
<string name="store_passphrase_securely_without_recover">Harap simpan frasa sandi dengan aman, Anda TIDAK akan dapat mengakses obrolan jika hilang.</string>
<string name="rcv_group_event_member_deleted">dihapus %1$s</string>
<string name="share_text_sent_at">Dikirim pada: %s</string>
<string name="integrity_msg_bad_id">ID pesan salah</string>
<string name="remove_passphrase_from_keychain">Hapus frasa sandi dari Keystore?</string>
<string name="remove_passphrase_from_settings">Hapus frasa sandi dari pengaturan?</string>
<string name="save_passphrase_in_settings">Simpan frasa sandi di pengaturan</string>
<string name="proxied">Diproxy</string>
<string name="paste_the_link_you_received_to_connect_with_your_contact">Tempel tautan yang Anda terima untuk terhubung dengan kontak…</string>
<string name="other_label">lainnya</string>
<string name="send_live_message">Kirim pesan langsung</string>
<string name="live_message">Pesan langsung!</string>
<string name="image_descr_qr_code">Kode QR</string>
<string name="migrate_to_device_migrating">Memindah</string>
<string name="server_address">Alamat server</string>
<string name="open_server_settings_button">Buka pengaturan server</string>
<string name="profile_update_event_removed_address">alamat kontak dihapus</string>
<string name="v6_0_chat_list_media">Putar dari daftar obrolan.</string>
<string name="linked_mobiles">Ponsel terhubung</string>
<string name="scan_from_mobile">Pindai dari ponsel</string>
<string name="network_type_other">Lainnya</string>
<string name="no_media_servers_configured_for_private_routing">Tiada server untuk menerima berkas.</string>
<string name="no_media_servers_configured_for_sending">Tiada server untuk kirim berkas.</string>
<string name="message_deleted_or_not_received_error_title">Tiada pesan</string>
<string name="auth_open_migration_to_another_device">Buka layar migrasi</string>
<string name="delete_messages_cannot_be_undone_warning">Pesan akan dihapus - ini tidak dapat dibatalkan!</string>
<string name="icon_descr_profile_image_placeholder">tempat penampung gambar profil</string>
<string name="srv_error_host">Alamat server tidak kompatibel dengan pengaturan jaringan.</string>
<string name="password_to_show">Kata sandi ditampilkan</string>
<string name="app_check_for_updates_button_remind_later">Ingatkan nanti</string>
<string name="restore_database_alert_desc">Harap masukkan kata sandi sebelumnya setelah memulihkan cadangan basis data. Tindakan ini tidak dapat dibatalkan.</string>
<string name="restore_database_alert_confirm">Pulihkan</string>
<string name="you_can_start_chat_via_setting_or_by_restarting_the_app">Anda dapat mulai obrolan via Pengaturan aplikasi / Basis Data atau dengan mulai ulang aplikasi.</string>
<string name="only_chat_owners_can_change_prefs">Hanya pemilik obrolan yang dapat ubah preferensi.</string>
<string name="send_receipts">Kirim tanda terima</string>
<string name="custom_time_unit_seconds">detik</string>
<string name="agent_critical_error_desc">Harap laporkan ke pengembang:\n%s\n\nDisarankan untuk memulai ulang aplikasi.</string>
<string name="custom_time_unit_minutes">menit</string>
<string name="network_session_mode_session_description">Kredensial SOCKS baru akan digunakan setiap kali Anda memulai aplikasi.</string>
<string name="email_invite_subject">Mari bicara di SimpleX Chat</string>
<string name="save_and_notify_contact">Simpan dan beritahu kontak</string>
<string name="save_preferences_question">Simpan preferensi?</string>
<string name="you_can_create_it_later">Anda dapat buat nanti</string>
<string name="join_group_question">Gabung ke grup?</string>
<string name="joining_group">Bergabung dengan grup</string>
<string name="calls_prohibited_ask_to_enable_calls_alert_text">Minta kontak Anda untuk aktifkan panggilan.</string>
<string name="you_can_hide_or_mute_user_profile">Anda dapat sembunyikan atau matikan profil pengguna - tekan tahan untuk buka menu.</string>
<string name="v4_5_reduced_battery_usage">Penggunaan baterai sedikit</string>
<string name="migrate_from_device_migration_complete">Berhasil dipindah</string>
<string name="icon_descr_record_voice_message">Rekam pesan suara</string>
<string name="servers_info_subscriptions_section_header">Penerima pesan</string>
<string name="alert_title_msg_bad_hash">Hash pesan salah</string>
<string name="leave_chat_question">Keluar dari obrolan?</string>
<string name="store_passphrase_securely">Harap simpan frasa sandi dengan aman, Anda TIDAK akan dapat mengubahnya jika hilang.</string>
<string name="restore_database_alert_title">Pulihkan cadangan basis data?</string>
<string name="share_text_moderated_at">Dimoderasi pada: %s</string>
<string name="share_text_received_at">Diterima pada: %s</string>
<string name="chat_archive">Atau impor berkas arsip</string>
<string name="agent_internal_error_desc">Harap laporkan ke pengembang:\n%S</string>
<string name="display_name__field">Nama profil:</string>
<string name="servers_info_subscriptions_connections_pending">Tertunda</string>
<string name="servers_info_previously_connected_servers_section_header">Server yang terhubung sebelumnya</string>
<string name="servers_info_proxied_servers_section_header">Server proxy</string>
<string name="delete_messages_mark_deleted_warning">Pesan akan ditandai sebagai dihapus. Penerima tetap dapat melihat pesan tersebut.</string>
<string name="delete_message_mark_deleted_warning">Pesan akan ditandai sebagai dihapus. Penerima tetap dapat melihat pesan ini.</string>
<string name="sync_connection_confirm">Perbaiki</string>
<string name="sync_connection_question">Perbaiki koneksi?</string>
<string name="smp_servers_new_server">Server baru</string>
<string name="message_queue_info">Info antrian pesan</string>
<string name="settings_section_title_message_shape">Bentuk pesan</string>
<string name="settings_section_title_private_message_routing">ROUTING PESAN PRIBADI</string>
<string name="message_queue_info_server_info">info antrean server: %1$s\n\npesan terakhir diterima: %2$s</string>
<string name="users_delete_data_only">Hanya data profil lokal</string>
<string name="operator_open_changes">Buka perubahan</string>
<string name="operator_open_conditions">Ketentuan terbuka</string>
<string name="migrate_from_device_or_share_this_file_link">Atau bagikan tautan berkas dengan aman</string>
<string name="paste_desktop_address">Tempel alamat desktop</string>
<string name="users_delete_with_connections">Profil dan koneksi server</string>
<string name="other_errors">Kesalahan lainnya</string>
<string name="secured">Aman</string>
<string name="send_errors">Kesalahan kirim</string>
<string name="sent_directly">Dikirim langsung</string>
<string name="sent_via_proxy">Dikirim via proxy</string>
<string name="profile_update_will_be_sent_to_contacts">Pembaruan profil akan dikirim ke kontak Anda.</string>
<string name="paste_archive_link">Tempel tautan arsip</string>
<string name="remote_ctrl_connection_stopped_desc">Harap periksa apakah perangkat seluler dan desktop terhubung ke jaringan lokal yang sama, dan firewall desktop mengizinkan koneksi.\nHarap sampaikan masalah lain kepada pengembang.</string>
<string name="sync_connection_desc">Koneksi memerlukan negosiasi ulang enkripsi.</string>
<string name="encryption_renegotiation_in_progress">Negosiasi ulang enkripsi sedang berlangsung.</string>
</resources>
@@ -363,7 +363,7 @@
<string name="icon_descr_audio_off">Audio spento</string>
<string name="icon_descr_audio_on">Audio acceso</string>
<string name="settings_audio_video_calls">Chiamate audio e video</string>
<string name="auto_accept_images">Auto-accetta le immagini</string>
<string name="auto_accept_images">Auto-accetta immagini</string>
<string name="integrity_msg_bad_hash">hash del messaggio errato</string>
<string name="integrity_msg_bad_id">ID messaggio errato</string>
<string name="icon_descr_call_ended">Chiamata terminata</string>
@@ -470,7 +470,7 @@
<string name="feature_enabled_for_contact">attivato per il contatto</string>
<string name="feature_enabled_for_you">attivato per te</string>
<string name="group_preferences">Preferenze del gruppo</string>
<string name="v4_2_auto_accept_contact_requests">Auto-accetta le richieste di contatto</string>
<string name="v4_2_auto_accept_contact_requests">Auto-accetta richieste di contatto</string>
<string name="ttl_d">%dg</string>
<string name="ttl_day">%d giorno</string>
<string name="ttl_days">%d giorni</string>
@@ -538,7 +538,7 @@
<string name="invalid_QR_code">Codice QR non valido</string>
<string name="image_descr_link_preview">immagine di anteprima link</string>
<string name="mark_read">Segna come già letto</string>
<string name="mark_unread">Segna come non letta</string>
<string name="mark_unread">Segna come non letto</string>
<string name="icon_descr_more_button">Altro</string>
<string name="mute_chat">Silenzia</string>
<string name="image_descr_profile_image">immagine del profilo</string>
@@ -704,7 +704,7 @@
<string name="restart_the_app_to_create_a_new_chat_profile">Riavvia l\'app per creare un profilo di chat nuovo.</string>
<string name="restart_the_app_to_use_imported_chat_database">Riavvia l\'app per usare il database della chat importato.</string>
<string name="run_chat_section">AVVIA CHAT</string>
<string name="send_link_previews">Invia le anteprime dei link</string>
<string name="send_link_previews">Invia anteprime dei link</string>
<string name="set_password_to_export">Imposta la password per esportare</string>
<string name="settings_section_title_settings">IMPOSTAZIONI</string>
<string name="settings_section_title_socks">PROXY SOCKS</string>
@@ -918,7 +918,7 @@
<string name="v4_5_italian_interface_descr">Grazie agli utenti contribuite via Weblate!</string>
<string name="v4_4_french_interface">Interfaccia francese</string>
<string name="v4_5_italian_interface">Interfaccia italiana</string>
<string name="v4_5_message_draft">Bozza del messaggio</string>
<string name="v4_5_message_draft">Bozza dei messaggi</string>
<string name="v4_5_message_draft_descr">Conserva la bozza dell\'ultimo messaggio, con gli allegati.</string>
<string name="v4_5_private_filenames">Nomi di file privati</string>
<string name="v4_5_transport_isolation_descr">Per profilo di chat (predefinito) o per connessione (BETA).</string>
@@ -1348,7 +1348,7 @@
<string name="rcv_group_event_2_members_connected">%s e %s si sono connessi/e</string>
<string name="rcv_group_event_n_members_connected">%s, %s e altri %d membri si sono connessi</string>
<string name="rcv_group_event_3_members_connected">%s, %s e %s si sono connessi/e</string>
<string name="privacy_message_draft">Bozza del messaggio</string>
<string name="privacy_message_draft">Bozza</string>
<string name="privacy_show_last_messages">Mostra gli ultimi messaggi</string>
<string name="database_will_be_encrypted_and_passphrase_stored_in_settings">Il database verrà crittografato e la password conservata nelle impostazioni.</string>
<string name="you_can_change_it_later">La password casuale viene conservata nelle impostazioni come testo normale.
@@ -1615,7 +1615,8 @@
<string name="snd_group_event_member_blocked">hai bloccato %s</string>
<string name="welcome_message_is_too_long">Il messaggio di benvenuto è troppo lungo</string>
<string name="message_too_large">Messaggio troppo grande</string>
<string name="database_migration_in_progress">Migrazione del database in corso.\nPuò richiedere qualche minuto.</string>
<string name="database_migration_in_progress">Migrazione database in corso.
\nPuò richiedere qualche minuto.</string>
<string name="call_service_notification_audio_call">Chiamata audio</string>
<string name="call_service_notification_end_call">Termina chiamata</string>
<string name="call_service_notification_video_call">Videochiamata</string>
@@ -1947,7 +1948,8 @@
<string name="appearance_font_size">Dimensione carattere</string>
<string name="servers_info_detailed_statistics_sent_messages_total">Totale inviato</string>
<string name="message_forwarded_title">Messaggio inoltrato</string>
<string name="servers_info_private_data_disclaimer">Partendo da %s. \nTutti i dati sono privati, nel tuo dispositivo.</string>
<string name="servers_info_private_data_disclaimer">Inizio da %s.
\nTutti i dati sono privati, nel tuo dispositivo.</string>
<string name="message_forwarded_desc">Ancora nessuna connessione diretta, il messaggio viene inoltrato dall\'amministratore.</string>
<string name="servers_info_proxied_servers_section_footer">Non sei connesso/a a questi server. L\'instradamento privato è usato per consegnare loro i messaggi.</string>
<string name="xftp_servers_other">Altri server XFTP</string>
@@ -1978,7 +1980,7 @@
<string name="smp_proxy_error_connecting">Errore di connessione al server di inoltro %1$s. Riprova più tardi.</string>
<string name="smp_proxy_error_broker_version">La versione server di inoltro è incompatibile con le impostazioni di rete: %1$s.</string>
<string name="privacy_media_blur_radius_off">Off</string>
<string name="privacy_media_blur_radius">Sfocatura dei file multimediali</string>
<string name="privacy_media_blur_radius">Sfocatura file multimediali</string>
<string name="privacy_media_blur_radius_soft">Leggera</string>
<string name="privacy_media_blur_radius_medium">Media</string>
<string name="privacy_media_blur_radius_strong">Forte</string>
@@ -2129,18 +2131,18 @@
<string name="for_social_media">Per i social media</string>
<string name="or_to_share_privately">O per condividere in modo privato</string>
<string name="onboarding_network_operators">Operatori di rete</string>
<string name="onboarding_network_operators_app_will_use_different_operators">L\'app protegge la tua privacy usando diversi operatori per ogni conversazione.</string>
<string name="onboarding_network_operators_app_will_use_different_operators">Quando più di un operatore di rete è attivato, l\'app userà i server di diversi operatori per ogni conversazione.</string>
<string name="onboarding_network_operators_conditions_you_can_configure">Puoi configurare gli operatori nelle impostazioni di rete e server.</string>
<string name="onboarding_choose_server_operators">Operatori del server</string>
<string name="onboarding_select_network_operators_to_use">Seleziona gli operatori di rete da usare.</string>
<string name="onboarding_network_operators_continue">Continua</string>
<string name="onboarding_network_operators_update">Aggiorna</string>
<string name="onboarding_network_operators_review_later">Leggi più tardi</string>
<string name="onboarding_network_operators_review_later">Esamina più tardi</string>
<string name="network_preset_servers_title">Server preimpostati</string>
<string name="operator_conditions_accepted">Condizioni accettate</string>
<string name="operator_conditions_accepted_for_enabled_operators_on">Le condizioni verranno accettate automaticamente per gli operatori attivati il: %s.</string>
<string name="your_servers">I tuoi server</string>
<string name="operator_review_conditions">Leggi le condizioni</string>
<string name="operator_review_conditions">Esamina le condizioni</string>
<string name="operators_conditions_accepted_for"><![CDATA[Condizioni accettate per gli operatori: <b>%s</b>.]]></string>
<string name="operator_conditions_accepted_for_some"><![CDATA[Condizioni già accettate per i seguenti operatori: <b>%s</b>.]]></string>
<string name="operator_conditions_failed_to_load">Il testo delle condizioni attuali testo non è stato caricato, puoi consultare le condizioni tramite questo link:</string>
@@ -2190,13 +2192,13 @@
<string name="error_accepting_operator_conditions">Errore di accettazione delle condizioni</string>
<string name="failed_to_save_servers">Errore di salvataggio dei server</string>
<string name="v6_2_network_decentralization_enable_flux_reason">per una migliore privacy dei metadati.</string>
<string name="onboarding_network_operators_app_will_use_for_routing">Ad esempio, se il tuo contatto riceve i messaggi tramite un server di SimpleX Chat, la tua app li consegnerà tramite un server di Flux.</string>
<string name="onboarding_network_operators_app_will_use_for_routing">Ad esempio, se ricevi messaggi tramite il server di SimpleX Chat, l\'app userà uno dei server Flux per l\'instradamento privato.</string>
<string name="v6_2_improved_chat_navigation">Navigazione della chat migliorata</string>
<string name="smp_servers_new_server">Nuovo server</string>
<string name="operator_use_for_files">Usa per i file</string>
<string name="simplex_address_or_1_time_link">Indirizzo SimpleX o link una tantum?</string>
<string name="message_deleted_or_not_received_error_desc">Questo messaggio è stato eliminato o non ancora ricevuto.</string>
<string name="address_creation_instruction">Tocca Crea indirizzo SimpleX nel menu per crearlo più tardi.</string>
<string name="address_creation_instruction">Tocca \"Crea indirizzo SimpleX\" nel menu per crearlo più tardi.</string>
<string name="connection_error_quota_desc">La connessione ha raggiunto il limite di messaggi non consegnati, il contatto potrebbe essere offline.</string>
<string name="operator_use_operator_toggle_description">Usa i server</string>
<string name="onboarding_network_operators_configure_via_settings">Puoi configurare i server nelle impostazioni.</string>
@@ -2206,7 +2208,7 @@
<string name="no_media_servers_configured_for_sending">Nessun server per inviare file.</string>
<string name="v6_2_improved_chat_navigation_descr">- Apri la chat sul primo messaggio non letto.\n- Salta ai messaggi citati.</string>
<string name="share_address_publicly">Condividi indirizzo pubblicamente</string>
<string name="share_simplex_address_on_social_media">Condividi l\'indirizzo SimpleX sui social media.</string>
<string name="share_simplex_address_on_social_media">Condividi indirizzo SimpleX sui social media.</string>
<string name="chat_archive">O importa file archivio</string>
<string name="remote_hosts_section">Telefoni remoti</string>
<string name="direct_messages_are_prohibited_in_chat">I messaggi diretti tra i membri sono vietati in questa chat.</string>
@@ -2244,13 +2246,4 @@
<string name="member_role_will_be_changed_with_notification_chat">Il ruolo verrà cambiato in %s. Verrà notificato a tutti nella chat.</string>
<string name="chat_main_profile_sent">Il tuo profilo di chat verrà inviato ai membri della chat</string>
<string name="you_will_stop_receiving_messages_from_this_chat_chat_history_will_be_preserved">Non riceverai più messaggi da questa chat. La cronologia della chat verrà conservata.</string>
<string name="onboarding_network_operators_cant_see_who_talks_to_whom">Quando più di un operatore è attivato, nessuno di essi ha metadati per capire chi comunica con chi.</string>
<string name="display_name_accepted_invitation">invito accettato</string>
<string name="display_name_requested_to_connect">richiesto di connettersi</string>
<string name="onboarding_network_operators_simplex_flux_agreement">SimpleX Chat e Flux hanno concluso un accordo per includere server gestiti da Flux nell\'app.</string>
<string name="onboarding_network_about_operators">Info sugli operatori</string>
<string name="sync_connection_desc">La connessione richiede la rinegoziazione della crittografia.</string>
<string name="sync_connection_confirm">Correggi</string>
<string name="sync_connection_question">Correggere la connessione?</string>
<string name="encryption_renegotiation_in_progress">Rinegoziazione della crittografia in corso.</string>
</resources>
@@ -1872,7 +1872,8 @@
<string name="servers_info_details">Details</string>
<string name="servers_info_messages_received">Berichten ontvangen</string>
<string name="servers_info_subscriptions_section_header">Bericht ontvangst</string>
<string name="servers_info_private_data_disclaimer">Beginnend vanaf %s. \nAlle gegevens zijn privé op uw apparaat.</string>
<string name="servers_info_private_data_disclaimer">Beginnend vanaf %s.
\nAlle gegevens zijn privé op uw apparaat.</string>
<string name="servers_info_connected_servers_section_header">Verbonden servers</string>
<string name="servers_info_subscriptions_connections_pending">In behandeling</string>
<string name="servers_info_previously_connected_servers_section_header">Eerder verbonden servers</string>
@@ -2146,7 +2147,7 @@
<string name="onboarding_network_operators_review_later">Later beoordelen</string>
<string name="onboarding_select_network_operators_to_use">Selecteer welke netwerkoperators u wilt gebruiken.</string>
<string name="onboarding_network_operators_update">Update</string>
<string name="onboarding_network_operators_app_will_use_different_operators">De app beschermt uw privacy door in elk gesprek verschillende operators te gebruiken.</string>
<string name="onboarding_network_operators_app_will_use_different_operators">Wanneer er meer dan één netwerkoperator is ingeschakeld, gebruikt de app voor elk gesprek de servers van verschillende operators.</string>
<string name="onboarding_network_operators_conditions_you_can_configure">U kunt operators configureren in Netwerk- en serverinstellingen.</string>
<string name="onboarding_network_operators_continue">Doorgaan</string>
<string name="operator_review_conditions">Voorwaarden bekijken</string>
@@ -2182,7 +2183,7 @@
<string name="v6_2_improved_chat_navigation">Verbeterde chatnavigatie</string>
<string name="v6_2_network_decentralization">Netwerk decentralisatie</string>
<string name="v6_2_network_decentralization_descr">De tweede vooraf ingestelde operator in de app!</string>
<string name="onboarding_network_operators_app_will_use_for_routing">Als uw contactpersoon bijvoorbeeld berichten ontvangt via een SimpleX Chat-server, worden deze door uw app via een Flux-server verzonden.</string>
<string name="onboarding_network_operators_app_will_use_for_routing">Als u bijvoorbeeld berichten ontvangt via de SimpleX Chat-server, gebruikt de app een van de Flux-servers voor privéroutering.</string>
<string name="v6_2_network_decentralization_enable_flux">Flux inschakelen</string>
<string name="message_deleted_or_not_received_error_title">Geen bericht</string>
<string name="appearance_app_toolbars">App-werkbalken</string>
@@ -2241,9 +2242,4 @@
<string name="onboarding_notifications_mode_off_desc_short">Geen achtergrondservice</string>
<string name="only_chat_owners_can_change_prefs">Alleen chateigenaren kunnen voorkeuren wijzigen.</string>
<string name="maximum_message_size_reached_non_text">Verklein de berichtgrootte of verwijder de media en verzend het bericht opnieuw.</string>
<string name="display_name_accepted_invitation">geaccepteerde uitnodiging</string>
<string name="onboarding_network_operators_cant_see_who_talks_to_whom">Wanneer er meer dan één operator is ingeschakeld, beschikt geen enkele operator over metagegevens om te achterhalen wie met wie communiceert.</string>
<string name="display_name_requested_to_connect">gevraagd om verbinding te maken</string>
<string name="onboarding_network_about_operators">Over operatoren</string>
<string name="onboarding_network_operators_simplex_flux_agreement">Simplex-chat en flux hebben een overeenkomst gemaakt om door flux geëxploiteerde servers in de app op te nemen.</string>
</resources>
@@ -1932,7 +1932,8 @@
<string name="servers_info_target">Wyświetlanie informacji dla</string>
<string name="servers_info_statistics_section_header">Statystyki</string>
<string name="servers_info_transport_sessions_section_header">Sesje transportowe</string>
<string name="servers_info_private_data_disclaimer">Zaczynanie od %s. \nWszystkie dane są prywatne na Twoim urządzeniu.</string>
<string name="servers_info_private_data_disclaimer">Zaczynanie od %s.
\nWszystkie dane są prywatne na Twoim urządzeniu.</string>
<string name="servers_info_reconnect_all_servers_button">Połącz ponownie wszystkie serwery</string>
<string name="servers_info_reconnect_server_title">Połączyć ponownie serwer?</string>
<string name="servers_info_proxied_servers_section_footer">Nie jesteś połączony z tymi serwerami. Prywatne trasowanie jest używane do dostarczania do nich wiadomości.</string>
@@ -1982,7 +1982,8 @@
<string name="servers_info_transport_sessions_section_header">Sessões de transporte</string>
<string name="servers_info_subscriptions_section_header">Recepção de mensagem</string>
<string name="servers_info_subscriptions_connections_pending">Pendente</string>
<string name="servers_info_private_data_disclaimer">Começando de %s. \nTodos os dados são privados do seu dispositivo.</string>
<string name="servers_info_private_data_disclaimer">Começando de %s.
\nTodos os dados são privados do seu dispositivo.</string>
<string name="servers_info_subscriptions_total">Total</string>
<string name="servers_info_proxied_servers_section_header">Servidores proxiados</string>
<string name="servers_info_previously_connected_servers_section_header">Servidores conectados anteriormente</string>
@@ -1882,7 +1882,8 @@
<string name="message_queue_info">Информация об очереди сообщений</string>
<string name="v5_8_persian_ui">Персидский интерфейс</string>
<string name="protect_ip_address">Защитить IP адрес</string>
<string name="v5_8_private_routing_descr">Защитите ваш IP адрес от серверов сообщений, выбранных Вашими контактами. \nВключите в настройках Сети и серверов.</string>
<string name="v5_8_private_routing_descr">Защитите ваш IP адрес от серверов сообщений, выбранных Вашими контактами.
\nВключите в настройках Сеть и серверы.</string>
<string name="network_smp_proxy_fallback_allow_description">Отправьте сообщения напрямую, когда Ваш сервер или сервер получателя не поддерживает конфиденциальную доставку.</string>
<string name="network_smp_proxy_mode_private_routing">Конфиденциальная доставка</string>
<string name="network_smp_proxy_mode_unknown_description">Использовать конфиденциальную доставку с неизвестными серверами.</string>
@@ -2027,7 +2028,8 @@
<string name="servers_info_connected_servers_section_header">Подключенные серверы</string>
<string name="servers_info_previously_connected_servers_section_header">Ранее подключенные серверы</string>
<string name="servers_info_proxied_servers_section_header">Проксированные серверы</string>
<string name="servers_info_private_data_disclaimer">Начиная с %s. \nВсе данные хранятся только на вашем устройстве.</string>
<string name="servers_info_private_data_disclaimer">Начиная с %s.
\nВсе данные хранятся только на вашем устройстве.</string>
<string name="servers_info_reconnect_server_message">Переподключить сервер для устранения неполадок доставки сообщений. Это использует дополнительный трафик.</string>
<string name="servers_info_modal_error_title">Ошибка</string>
<string name="servers_info_reconnect_server_error">Ошибка переподключения к серверу</string>
@@ -2263,7 +2265,7 @@
<string name="how_it_helps_privacy">Как это улучшает конфиденциальность</string>
<string name="onboarding_network_operators">Операторы серверов</string>
<string name="onboarding_select_network_operators_to_use">Выберите операторов сети.</string>
<string name="onboarding_network_operators_conditions_you_can_configure">Вы можете настроить операторов в настройках Сети и серверов.</string>
<string name="onboarding_network_operators_conditions_you_can_configure">Вы можете настроить операторов в настройках Сеть и серверы.</string>
<string name="onboarding_network_operators_continue">Продолжить</string>
<string name="onboarding_network_operators_review_later">Посмотреть позже</string>
<string name="onboarding_network_operators_update">Обновить</string>
@@ -2303,7 +2305,7 @@
<string name="error_updating_server_title">Ошибка сохранения сервера</string>
<string name="operator_use_for_messages_private_routing">Для доставки сообщений</string>
<string name="operator_open_changes">Открыть изменения</string>
<string name="error_server_operator_changed">Оператор сервера изменен.</string>
<string name="error_server_operator_changed">Оператор серверов изменен.</string>
<string name="error_server_protocol_changed">Протокол сервера изменен.</string>
<string name="xftp_servers_per_user">Серверы для новых файлов Вашего текущего профиля</string>
<string name="operator_use_for_messages_receiving">Для получения</string>
@@ -219,7 +219,7 @@
<string name="ok">OK</string>
<string name="copied">Скопійовано в буфер обміну</string>
<string name="to_connect_via_link_title">Для підключення через посилання</string>
<string name="mobile_tap_open_in_mobile_app_then_tap_connect_in_app"><![CDATA[📱 мобільний: натисніть <b>Відкрити у мобільному додатку</b>, а потім торкніться <b>Підключити</b> в додатку.]]></string>
<string name="mobile_tap_open_in_mobile_app_then_tap_connect_in_app"><![CDATA[📱 мобільний телефон: натисніть <b>Відкрити у мобільному додатку</b>, а потім торкніться <b>Підключити</b> в додатку.]]></string>
<string name="mute_chat">Приглушити</string>
<string name="unmute_chat">Скасувати приглушення</string>
<string name="you_invited_a_contact">Ви запросили контакт</string>
@@ -233,7 +233,7 @@
<string name="one_time_link">Одноразове запрошення</string>
<string name="incorrect_code">Невірний код безпеки!</string>
<string name="to_verify_compare">Для перевірки end-to-end шифрування порівняйте (або скануйте) код на своїх пристроях.</string>
<string name="your_settings">Налаштування</string>
<string name="your_settings">Ваші налаштування</string>
<string name="your_simplex_contact_address">Ваша SimpleX-адреса</string>
<string name="markdown_help">Допомога з Markdown</string>
<string name="chat_lock">Блокування SimpleX</string>
@@ -268,7 +268,7 @@
<string name="first_platform_without_user_ids">Ніяких ідентифікаторів користувачів.</string>
<string name="decentralized">Децентралізована</string>
<string name="use_chat">Використовувати чат</string>
<string name="onboarding_notifications_mode_subtitle">Як це впливає на батарею</string>
<string name="onboarding_notifications_mode_subtitle">Це можна змінити пізніше в налаштуваннях.</string>
<string name="onboarding_notifications_mode_service">Миттєво</string>
<string name="call_already_ended">Виклик вже завершено!</string>
<string name="your_calls">Ваші виклики</string>
@@ -496,7 +496,7 @@
<string name="only_your_contact_can_send_voice">Тільки ваш контакт може надсилати голосові повідомлення.</string>
<string name="prohibit_sending_disappearing">Забороняйте надсилання повідомлень, які зникають.</string>
<string name="prohibit_message_deletion">Забороняйте невідворотне видалення повідомлень.</string>
<string name="group_members_can_send_voice">Учасники можуть надсилати голосові повідомлення.</string>
<string name="group_members_can_send_voice">Учасники групи можуть надсилати голосові повідомлення.</string>
<string name="ttl_m">%dm</string>
<string name="new_in_version">Нове в %s</string>
<string name="v5_1_self_destruct_passcode">Самознищуючий пароль</string>
@@ -544,7 +544,7 @@
<string name="smp_server_test_create_file">Створити файл</string>
<string name="error_deleting_user">Помилка видалення користувача</string>
<string name="error_updating_user_privacy">Помилка оновлення конфіденційності користувача</string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Для покращення конфіденційності, <b>SimpleX працює у фоновому режимі</b> замість використання пуш-повідомлень.]]></string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Для збереження вашої конфіденційності, замість торкання сповіщень, програма використовує <b>фоновий сервіс SimpleX</b> – він використовує кілька відсотків батареї щодня.]]></string>
<string name="periodic_notifications">Періодичні сповіщення</string>
<string name="simplex_service_notification_title">Служба чату SimpleX</string>
<string name="notifications_mode_periodic_desc">Перевіряє нові повідомлення кожні 10 хвилин протягом 1 хвилини</string>
@@ -649,7 +649,7 @@
<string name="you_can_use_markdown_to_format_messages__prompt">Ви можете використовувати markdown для форматування повідомлень:</string>
<string name="create_your_profile">Створіть свій профіль</string>
<string name="make_private_connection">Створіть приватне підключення</string>
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages">Тільки клієнтські пристрої зберігають профілі, контакти, групи та повідомлення.</string>
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages"><![CDATA[Тільки пристрої клієнта зберігають профілі користувачів, контакти, групи та повідомлення, відправлені за допомогою <b>шифрування на двох рівнях</b>.]]></string>
<string name="onboarding_notifications_mode_title">Приватні сповіщення</string>
<string name="onboarding_notifications_mode_service_desc"><![CDATA[<b>Споживає більше акумулятора</b>! Додаток завжди працює у фоновому режимі – сповіщення відображаються миттєво.]]></string>
<string name="paste_the_link_you_received">Вставте отримане посилання</string>
@@ -746,14 +746,14 @@
<string name="only_you_can_send_voice">Тільки ви можете надсилати голосові повідомлення.</string>
<string name="only_you_can_add_message_reactions">Тільки ви можете додавати реакції на повідомлення.</string>
<string name="prohibit_message_reactions_group">Заборонити реакції на повідомлення.</string>
<string name="disappearing_messages_are_prohibited">Повідомлення, що зникають, заборонені.</string>
<string name="group_members_can_send_dms">Учасники можуть надсилати прямі повідомлення.</string>
<string name="disappearing_messages_are_prohibited">Самознищувальні повідомлення заборонені в цій групі.</string>
<string name="group_members_can_send_dms">Учасники групи можуть надсилати приватні повідомлення.</string>
<string name="direct_messages_are_prohibited_in_group">Приватні повідомлення між учасниками заборонені в цій групі.</string>
<string name="group_members_can_delete">Учасники можуть необоротно видаляти надіслані повідомлення (протягом 24 годин).</string>
<string name="message_deletion_prohibited_in_chat">Заборонено необоротне видалення повідомлень.</string>
<string name="voice_messages_are_prohibited">Голосові повідомлення заборонені</string>
<string name="group_members_can_add_message_reactions">Учасники можуть додавати реакції на повідомлення.</string>
<string name="message_reactions_are_prohibited">Реакції на повідомлення заборонені.</string>
<string name="group_members_can_delete">Учасники групи можуть назавжди видаляти відправлені повідомлення. (24 години)</string>
<string name="message_deletion_prohibited_in_chat">Назавжди видалення повідомлень заборонене в цій групі.</string>
<string name="voice_messages_are_prohibited">Голосові повідомлення заборонені в цій групі.</string>
<string name="group_members_can_add_message_reactions">Учасники групи можуть додавати реакції на повідомлення.</string>
<string name="message_reactions_are_prohibited">Реакції на повідомлення заборонені в цій групі.</string>
<string name="ttl_hour">%d година</string>
<string name="ttl_week">%d тиждень</string>
<string name="ttl_weeks">%d тижні</string>
@@ -805,7 +805,7 @@
<string name="smp_server_test_secure_queue">Безпечна черга</string>
<string name="smp_server_test_delete_queue">Видалити чергу</string>
<string name="please_check_correct_link_and_maybe_ask_for_a_new_one">Будь ласка, перевірте, що ви використали правильне посилання або попросіть вашого контакту вислати інше.</string>
<string name="turn_off_battery_optimization"><![CDATA[<b>Дозвольте це</b> в наступному діалозі, щоб отримувати сповіщення миттєво.]]></string>
<string name="turn_off_battery_optimization"><![CDATA[Щоб його використовувати, будь ласка, <b>дозвольте SimpleX працювати в фоновому режимі</b> в наступному діалозі. В іншому випадку сповіщення будуть вимкнені.]]></string>
<string name="icon_descr_instant_notifications">Миттєві сповіщення</string>
<string name="notification_preview_somebody">Контакт прихований:</string>
<string name="notification_preview_new_message">нове повідомлення</string>
@@ -892,7 +892,7 @@
<string name="v4_6_chinese_spanish_interface_descr">Дякуємо користувачам – приєднуйтеся через Weblate!</string>
<string name="la_lock_mode">Режим блокування SimpleX</string>
<string name="la_lock_mode_system">Системна аутентифікація</string>
<string name="to_protect_privacy_simplex_has_ids_for_queues">Для захисту вашої конфіденційності SimpleX використовує окремі ID для кожного вашого контакту.</string>
<string name="to_protect_privacy_simplex_has_ids_for_queues">Для захисту приватності, замість ідентифікаторів користувачів, які використовуються всіма іншими платформами, у SimpleX є ідентифікатори черг повідомлень, окремі для кожного з ваших контактів.</string>
<string name="onboarding_notifications_mode_off">Коли додаток запущено</string>
<string name="onboarding_notifications_mode_periodic">Періодично</string>
<string name="status_contact_has_no_e2e_encryption">контакт не має зашифрування e2e</string>
@@ -919,7 +919,7 @@
<string name="snd_group_event_member_deleted">ви видалили %1$s</string>
<string name="tap_to_activate_profile">Торкніться для активації профілю.</string>
<string name="prohibit_sending_voice">Забороняйте надсилання голосових повідомлень.</string>
<string name="group_members_can_send_disappearing">Учасники можуть надсилати повідомлення, що зникають.</string>
<string name="group_members_can_send_disappearing">Учасники групи можуть надсилати самознищувальні повідомлення.</string>
<string name="ttl_min">%d хв</string>
<string name="v4_5_reduced_battery_usage">Зменшене споживання енергії батареї</string>
<string name="edit_image">Редагувати зображення</string>
@@ -1012,7 +1012,7 @@
<string name="clear_verification">Очистити перевірку</string>
<string name="is_verified">%s перевірено</string>
<string name="is_not_verified">%s не перевірено</string>
<string name="send_us_an_email">Написати нам ел. листа</string>
<string name="send_us_an_email">Надішліть нам електронного листа</string>
<string name="smp_servers_test_server">Тестовий сервер</string>
<string name="smp_save_servers_question">Зберегти сервери\?</string>
<string name="your_ICE_servers">Ваші сервери ICE</string>
@@ -1089,7 +1089,7 @@
<string name="chat_preferences_no">ні</string>
<string name="chat_preferences_off">вимк</string>
<string name="set_group_preferences">Встановити налаштування групи</string>
<string name="your_preferences">Налаштування</string>
<string name="your_preferences">Ваші налаштування</string>
<string name="direct_messages">Прямі повідомлення</string>
<string name="icon_descr_server_status_error">Помилка</string>
<string name="add_contact">Одноразове запрошення</string>
@@ -1161,7 +1161,7 @@
<string name="colored_text">кольоровий</string>
<string name="callstatus_ended">дзвінок завершено %1$s</string>
<string name="callstatus_error">помилка дзвінка</string>
<string name="next_generation_of_private_messaging">Майбутнє обміну повідомленнями</string>
<string name="next_generation_of_private_messaging">Наступне покоління \nприватних повідомлень</string>
<string name="opensource_protocol_and_code_anybody_can_run_servers">Кожен може хостити сервери.</string>
<string name="settings_developer_tools">Інструменти розробника</string>
<string name="settings_experimental_features">Експериментальні функції</string>
@@ -1178,7 +1178,7 @@
<string name="to_share_with_your_contact">(щоб поділитися з вашим контактом)</string>
<string name="connect_via_link_or_qr_from_clipboard_or_in_person">(сканувати або вставити з буферу обміну)</string>
<string name="you_can_connect_to_simplex_chat_founder"><![CDATA[Ви можете <font color="#0088ff">підключитися до розробників SimpleX Chat, щоб задати будь-які питання і отримувати оновлення</font>.]]></string>
<string name="desktop_scan_QR_code_from_app_via_scan_QR_code"><![CDATA[💻 на комп\'ютері: скануйте відображений QR-код з додатка за допомогою <b>Сканувати QR-код</b>.]]></string>
<string name="desktop_scan_QR_code_from_app_via_scan_QR_code"><![CDATA[💻 настільний комп\'ютер: скануйте відображений QR-код з додатка за допомогою <b>Сканувати QR-код</b>.]]></string>
<string name="icon_descr_address">Адреса SimpleX</string>
<string name="show_QR_code">Показати QR-код</string>
<string name="joining_group">Приєднання до групи</string>
@@ -1249,7 +1249,7 @@
<string name="error_aborting_address_change">Помилка відміни зміни адреси</string>
<string name="abort_switch_receiving_address">Перервати зміну адреси</string>
<string name="allow_to_send_files">Дозволити надсилання файлів та медіафайлів.</string>
<string name="files_are_prohibited_in_group">Файли та медіа заборонені.</string>
<string name="files_are_prohibited_in_group">Файли та медіафайли заборонені в цій групі.</string>
<string name="connect_via_link_incognito">Підключити інкогніто</string>
<string name="connect_use_current_profile">Використовувати поточний профіль</string>
<string name="turn_off_battery_optimization_button">Дозволити</string>
@@ -1347,7 +1347,7 @@
<string name="abort_switch_receiving_address_desc">Зміна адреси буде скасована. Буде використовуватися стара адреса для отримання.</string>
<string name="sync_connection_force_question">Повторно узгодити шифрування?</string>
<string name="sync_connection_force_desc">Шифрування працює і нова угода про шифрування не потрібна. Це може призвести до помилок підключення!</string>
<string name="group_members_can_send_files">Учасники можуть надсилати файли та медіа.</string>
<string name="group_members_can_send_files">Учасники групи можуть надсилати файли та медіафайли.</string>
<string name="database_will_be_encrypted_and_passphrase_stored_in_settings">База даних буде зашифрована, і ключова фраза буде збережена в налаштуваннях.</string>
<string name="expand_verb">Розгорнути</string>
<string name="connect_plan_repeat_connection_request">Повторити запит на підключення?</string>
@@ -1441,7 +1441,7 @@
<string name="multicast_connect_automatically">Підключати автоматично</string>
<string name="desktop_address">Адреса робочого столу</string>
<string name="only_one_device_can_work_at_the_same_time">Одночасно може працювати лише один пристрій</string>
<string name="v5_4_link_mobile_desktop">Підключіть мобільний і десктопний додатки! 🔗</string>
<string name="v5_4_link_mobile_desktop">Посилання на мобільний та комп\'ютерний додатки! 🔗</string>
<string name="v5_4_link_mobile_desktop_descr">Через безпечний квантовостійкий протокол.</string>
<string name="open_on_mobile_and_scan_qr_code"><![CDATA[Відкрийте <i>Використовувати з робочого столу</i> у мобільному додатку і скануйте QR-код.]]></string>
<string name="v5_4_block_group_members_descr">Щоб приховати небажані повідомлення.</string>
@@ -1734,7 +1734,7 @@
<string name="forward_chat_item">Переслати</string>
<string name="forwarded_chat_item_info_tab">Переслано</string>
<string name="forwarded_from_chat_item_info_title">Переслано з</string>
<string name="group_members_can_send_simplex_links">Учасники можуть надсилати посилання SimpleX.</string>
<string name="group_members_can_send_simplex_links">Учасники групи можуть надсилати посилання SimpleX.</string>
<string name="v5_7_call_sounds">Звуки вхідного дзвінка</string>
<string name="chat_theme_apply_to_light_mode">Світлий режим</string>
<string name="update_network_smp_proxy_fallback_question">Запасний варіант маршрутизації повідомлень</string>
@@ -1828,7 +1828,7 @@
<string name="network_smp_proxy_fallback_allow_protected">Коли IP приховано</string>
<string name="network_smp_proxy_fallback_allow">Так</string>
<string name="network_option_rcv_concurrency">Отримання паралелізму</string>
<string name="simplex_links_are_prohibited_in_group">Посилання SimpleX заборонені.</string>
<string name="simplex_links_are_prohibited_in_group">У цій групі заборонені посилання на SimpleX.</string>
<string name="v5_7_shape_profile_images">Сформуйте зображення профілю</string>
<string name="v5_7_call_sounds_descr">При підключенні аудіо та відеодзвінків.</string>
<string name="reset_single_color">Скинути колір</string>
@@ -1953,7 +1953,8 @@
<string name="servers_info_subscriptions_connections_pending">В очікуванні</string>
<string name="servers_info_proxied_servers_section_header">Проксіровані сервери</string>
<string name="servers_info_target">Показувати інформацію для</string>
<string name="servers_info_private_data_disclaimer">Починаючи з %s.\nУсі дані зберігаються приватно на вашому пристрої.</string>
<string name="servers_info_private_data_disclaimer">Починаючи з %s.
\nВсі дані зберігаються лише на вашому пристрою.</string>
<string name="servers_info_reconnect_server_message">Перепідключити сервер для примусової доставки повідомлень. Це використовує додатковий трафік.</string>
<string name="servers_info_reset_stats">Скинути всю статистику</string>
<string name="servers_info_reset_stats_alert_title">Скинути всю статистику?</string>
@@ -2010,7 +2011,7 @@
<string name="app_check_for_updates_button_download">Завантажити %s (%s)</string>
<string name="app_check_for_updates_button_open">Відкрити розташування файлу</string>
<string name="app_check_for_updates_button_skip">Пропустити цю версію</string>
<string name="one_hand_ui">Доступні панелі додатка</string>
<string name="one_hand_ui">Доступна панель чату</string>
<string name="cant_call_contact_alert_title">Не можна зателефонувати контакту</string>
<string name="cant_call_contact_connecting_wait_alert_text">Підключення до контакту, будь ласка, зачекайте або перевірте пізніше!</string>
<string name="calls_prohibited_alert_title">Дзвінки заборонені!</string>
@@ -2128,10 +2129,10 @@
<string name="to_protect_against_your_link_replaced_compare_codes">Щоб захиститися від заміни вашого посилання, ви можете порівняти коди безпеки контактів.</string>
<string name="for_social_media">Для соціальних мереж</string>
<string name="or_to_share_privately">Або поділитися приватно</string>
<string name="onboarding_choose_server_operators">Оператори серверів</string>
<string name="onboarding_choose_server_operators">Обирайте операторів</string>
<string name="onboarding_network_operators">Мережеві оператори</string>
<string name="onboarding_network_operators_conditions_will_be_accepted">Умови будуть прийняті для ввімкнених операторів через 30 днів.</string>
<string name="onboarding_network_operators_app_will_use_for_routing">Наприклад, якщо ваш контакт отримує повідомлення через сервер SimpleX Chat, ваш додаток доставлятиме їх через сервер Flux.</string>
<string name="onboarding_network_operators_app_will_use_for_routing">Наприклад, якщо ви отримуєте повідомлення через сервер SimpleX Chat, програма використовуватиме один із серверів Flux для приватної маршрутизації.</string>
<string name="onboarding_select_network_operators_to_use">Виберіть мережевих операторів для використання.</string>
<string name="onboarding_network_operators_configure_via_settings">Ви можете налаштувати сервери за допомогою налаштувань.</string>
<string name="onboarding_network_operators_review_later">Перегляньте пізніше</string>
@@ -2144,16 +2145,16 @@
<string name="your_servers">Ваші сервери</string>
<string name="use_servers_of_operator_x">Використовуйте %s</string>
<string name="operator_use_operator_toggle_description">Використовуйте сервери</string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[Ті ж умови будуть застосовуватись до оператора <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[Ті самі умови стосуватимуться оператора <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_applied"><![CDATA[Ці умови також застосовуватимуться для: <b>%s</b>.]]></string>
<string name="accept_conditions">Прийняти умови</string>
<string name="view_conditions">Переглянути умови</string>
<string name="view_conditions">Умови перегляду</string>
<string name="operator_added_message_servers">Додано сервери повідомлень</string>
<string name="operator_use_for_messages_private_routing">Для приватної маршрутизації</string>
<string name="operator_use_for_messages_receiving">Щоб отримати</string>
<string name="operator_use_for_files">Використовуйте для файлів</string>
<string name="operator_added_xftp_servers">Додано медіа та файлові сервери</string>
<string name="operator_open_changes">Відкрити зміни</string>
<string name="operator_open_changes">Відкриті зміни</string>
<string name="operator_open_conditions">Відкриті умови</string>
<string name="xftp_servers_per_user">Сервери для нових файлів вашого поточного профілю чату</string>
<string name="operator_use_for_sending">Щоб відправити</string>
@@ -2176,7 +2177,7 @@
<string name="operator_conditions_accepted_for_some"><![CDATA[Умови вже прийняті для наступних операторів: <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[Умови будуть прийняті для оператора(ів): <b>%s</b>.]]></string>
<string name="operators_conditions_will_be_accepted_for"><![CDATA[Умови будуть прийняті для оператора(ів): <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[Ті ж умови будуть застосовуватись до оператора(ів): <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[Ті самі умови застосовуватимуться до оператора(ів): <b>%s</b>.]]></string>
<string name="operators_conditions_will_also_apply"><![CDATA[Ці умови також застосовуватимуться для: <b>%s</b>.]]></string>
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[Щоб використовувати сервери <b>%s</b>, прийміть умови використання.]]></string>
<string name="operator_conditions_failed_to_load">Текст поточних умов не вдалося завантажити, ви можете переглянути умови за цим посиланням:</string>
@@ -2194,7 +2195,7 @@
<string name="simplex_address_or_1_time_link">SimpleX адреса або одноразове посилання?</string>
<string name="smp_servers_new_server">Новий сервер</string>
<string name="no_media_servers_configured_for_private_routing">Немає серверів для отримання файлів.</string>
<string name="operator_review_conditions">Переглянути умови</string>
<string name="operator_review_conditions">Умови перегляду</string>
<string name="no_media_servers_configured_for_sending">Немає серверів для надсилання файлів.</string>
<string name="network_preset_servers_title">Попередньо встановлені сервери</string>
<string name="error_server_protocol_changed">Протокол сервера змінено.</string>
@@ -2202,53 +2203,9 @@
<string name="simplex_address_and_1_time_links_are_safe_to_share">SimpleX-адреси та одноразові посилання можна безпечно ділитися через будь-який месенджер.</string>
<string name="connection_error_quota_desc">З\'єднання досягло ліміту недоставлених повідомлень, ваш контакт може бути офлайн.</string>
<string name="address_creation_instruction">Натисніть Створити адресу SimpleX у меню, щоб створити її пізніше.</string>
<string name="onboarding_network_operators_app_will_use_different_operators">Додаток захищає вашу конфіденційність, використовуючи різних операторів у кожній розмові.</string>
<string name="onboarding_network_operators_app_will_use_different_operators">Якщо увімкнено більше одного оператора, програма використовуватиме сервери різних операторів для кожної розмови.</string>
<string name="operator_use_for_messages">Використовуйте для повідомлень</string>
<string name="onboarding_network_operators_conditions_you_can_configure">Ви можете налаштувати операторів у налаштуваннях Мережі та серверів.</string>
<string name="chat_archive">Або імпортуйте архівний файл</string>
<string name="remote_hosts_section">Віддалені мобільні</string>
<string name="xiaomi_ignore_battery_optimization"><![CDATA[<b>Пристрої Xiaomi</b>: будь ласка, увімкніть Автозапуск у налаштуваннях системи, щоб сповіщення працювали.]]></string>
<string name="maximum_message_size_title">Повідомлення занадто велике!</string>
<string name="maximum_message_size_reached_non_text">Будь ласка, зменшіть розмір повідомлення або видаліть медіа та надішліть знову.</string>
<string name="add_your_team_members_to_conversations">Додайте учасників команди до розмов.</string>
<string name="business_address">Бізнес адреса</string>
<string name="onboarding_notifications_mode_periodic_desc_short">Перевіряти повідомлення кожні 10 хвилин.</string>
<string name="onboarding_notifications_mode_off_desc_short">Без фонової служби</string>
<string name="onboarding_notifications_mode_battery">Сповіщення та батарея</string>
<string name="onboarding_notifications_mode_service_desc_short">Додаток завжди працює у фоні.</string>
<string name="all_message_and_files_e2e_encrypted"><![CDATA[Усі повідомлення та файли надсилаються <b>зашифрованими end-to-end</b>, з пост-квантовою безпекою в особистих повідомленнях.]]></string>
<string name="leave_chat_question">Покинути чат?</string>
<string name="member_will_be_removed_from_chat_cannot_be_undone">Учасник буде видалений з чату — це неможливо скасувати!</string>
<string name="v6_2_business_chats">Бізнес чати</string>
<string name="v6_2_business_chats_descr">Конфіденційність для ваших клієнтів.</string>
<string name="chat_bottom_bar">Доступна панель чату</string>
<string name="button_add_friends">Додати друзів</string>
<string name="button_add_team_members">Додати учасників команди</string>
<string name="invite_to_chat_button">Запросити до чату</string>
<string name="delete_chat_for_all_members_cannot_undo_warning">Чат буде видалений для всіх учасників — це неможливо скасувати!</string>
<string name="button_delete_chat">Видалити чат</string>
<string name="delete_chat_question">Видалити чат?</string>
<string name="only_chat_owners_can_change_prefs">Тільки власники чату можуть змінювати налаштування.</string>
<string name="member_role_will_be_changed_with_notification_chat">Роль буде змінена на %s. Усі учасники чату отримають повідомлення.</string>
<string name="direct_messages_are_prohibited">Прямі повідомлення між учасниками заборонені.</string>
<string name="connect_plan_you_are_already_connected_with_vName"><![CDATA[Ви вже підключені до <b>%1$s</b>.]]></string>
<string name="connect_plan_chat_already_exists">Чат вже існує!</string>
<string name="how_it_helps_privacy">Як це допомагає зберігати конфіденційність</string>
<string name="direct_messages_are_prohibited_in_chat">Прямі повідомлення між учасниками заборонені в цьому чаті.</string>
<string name="button_leave_chat">Покинути чат</string>
<string name="info_row_chat">Чат</string>
<string name="delete_chat_for_self_cannot_undo_warning">Чат буде видалений для вас — це неможливо скасувати!</string>
<string name="maximum_message_size_reached_text">Будь ласка, зменшіть розмір повідомлення та надішліть знову.</string>
<string name="maximum_message_size_reached_forwarding">Скопіюйте та зменшіть розмір повідомлення для відправки.</string>
<string name="you_will_stop_receiving_messages_from_this_chat_chat_history_will_be_preserved">Ви припините отримувати повідомлення з цього чату. Історія чату буде збережена.</string>
<string name="chat_main_profile_sent">Ваш профіль чату буде надіслано учасникам чату.</string>
<string name="onboarding_network_operators_cant_see_who_talks_to_whom">Коли увімкнено більше ніж одного оператора, жоден з них не має метаданих, щоб дізнатися, хто спілкується з ким.</string>
<string name="display_name_accepted_invitation">прийнято запрошення</string>
<string name="display_name_requested_to_connect">запит на підключення</string>
<string name="onboarding_network_about_operators">Про операторів</string>
<string name="onboarding_network_operators_simplex_flux_agreement">SimpleX Chat та Flux уклали угоду про включення серверів, що працюють на Flux, до додатку.</string>
<string name="sync_connection_desc">Підключення вимагає повторного узгодження шифрування.</string>
<string name="encryption_renegotiation_in_progress">Виконується повторне узгодження шифрування.</string>
<string name="sync_connection_confirm">Виправити</string>
<string name="sync_connection_question">Виправити підключення?</string>
</resources>
@@ -1217,7 +1217,7 @@
<string name="selected_chat_items_nothing_selected">Không có gì được chọn</string>
<string name="open_verb">Mở</string>
<string name="auth_open_chat_console">Mở bảng điều khiển trò chuyện</string>
<string name="auth_open_chat_profiles">Thay đổi hồ sơ trò chuyện</string>
<string name="auth_open_chat_profiles">Mở hồ sơ trò chuyện</string>
<string name="network_use_onion_hosts_required_desc">Dịch vụ onion sẽ được yêu cầu để kết nối.\nXin lưu ý: bạn sẽ không thể kết nối tới các máy chủ mà không có địa chỉ .onion.</string>
<string name="rcv_group_event_open_chat">Mở</string>
<string name="open_database_folder">Mở thư mục cơ sở dữ liệu</string>
@@ -1373,9 +1373,9 @@
<string name="connect_plan_you_are_already_connecting_to_vName"><![CDATA[Bạn đã kết nối tới <b>%1$s</b> rồi.]]></string>
<string name="system_restricted_background_in_call_warn"><![CDATA[Để thực hiện cuộc gọi trong nền, vui lòng chọn <b>Mức sử dụng pin ứng dụng</b> / <b>Không hạn chế</b> trong phần cài đặt ứng dụng.]]></string>
<string name="remote_host_error_timeout"><![CDATA[Đã hết thời gian chờ khi kết nối tới thiết bị di động <b>%s</b>]]></string>
<string name="turn_off_battery_optimization"><![CDATA[<b>Chọn cho phép</b> trong hộp thoại tiếp theo để nhận thông báo ngay lập tức.]]></string>
<string name="turn_off_battery_optimization"><![CDATA[Để sử dụng, xin vui lòng <b>cho phép SimpleX chạy trong nền</b> trong hộp thoại tiếp theo. Nếu không, thông báo sẽ bị vô hiệu hóa.]]></string>
<string name="operator_in_order_to_use_accept_conditions"><![CDATA[Để sử dụng các máy chủ của <b>%s</b>, vui lòng chấp nhận điều kiện sử dụng.]]></string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Để tăng cường sự riêng tư, <b>SimpleX chạy trong nền</b> thay vì dùng thông báo đẩy.]]></string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[Để bảo vệ sự riêng tư của bạn, thay vì sử dụng thông báo đẩy thì ứng dụng dùng <b>Dịch vụ nền SimpleX</b> nó tiêu tốn một vài phần trăm pin mỗi ngày.]]></string>
<string name="system_restricted_background_warn"><![CDATA[Để bật thông báo, vui lòng chọn <b>Mức sử dụng pin ứng dụng</b> / <b>Không hạn chế</b> trong phần cài đặt ứng dụng.]]></string>
<string name="connect_plan_you_are_already_in_group_vName"><![CDATA[Bạn đã ở trong nhóm <b>%1$s</b> rồi.]]></string>
<string name="connect_plan_this_is_your_link_for_group_vName"><![CDATA[Đây là đường dẫn của bạn cho nhóm <b>%1$s</b>!]]></string>
@@ -1399,19 +1399,4 @@
<string name="error_updating_server_title">Lỗi cập nhật máy chủ</string>
<string name="operator_conditions_accepted_on">Các điều kiện đã được chấp nhận vào: %s.</string>
<string name="operator_conditions_accepted_for_enabled_operators_on">Các điều kiện sẽ được tự động chấp nhận với các nhà cung cấp được cho phép vào: %s.</string>
<string name="xiaomi_ignore_battery_optimization"><![CDATA[<b>Thiết bị Xiaomi</b>: vui lòng bật Tự động khởi động trong phần cài đặt hệ thống để thông báo có thể hoạt động bình thường.]]></string>
<string name="onboarding_notifications_mode_service_desc_short">Ứng dụng luôn chạy dưới nền</string>
<string name="delete_chat_for_all_members_cannot_undo_warning">Cuộc trò chuyện sẽ bị xóa cho tất cả các thành viên - việc này không thể được hoàn tác!</string>
<string name="delete_chat_for_self_cannot_undo_warning">Cuộc trò chuyện sẽ bị xóa cho bạn - việc này không thể được hoàn tác!</string>
<string name="v6_2_business_chats">Các cuộc trò chuyện công việc</string>
<string name="button_add_team_members">Thêm các thành viên nhóm</string>
<string name="info_row_chat">Cuộc trò chuyện</string>
<string name="connect_plan_you_are_already_connected_with_vName"><![CDATA[Bạn đã kết nối với <b>%1$s</b> rồi.]]></string>
<string name="connect_plan_chat_already_exists">Cuộc trò chuyện đã tồn tại!</string>
<string name="button_add_friends">Thêm bạn bè</string>
<string name="display_name_accepted_invitation">đã chấp nhận lời mời</string>
<string name="all_message_and_files_e2e_encrypted"><![CDATA[Tất cả các tin nhắn và tệp gửi đi đều được <b>mã hóa đầu cuối</b>, với bảo mật sau ượng tử trong các tin nhắn trực tiếp.]]></string>
<string name="onboarding_network_about_operators">Giới thiệu về các nhà cung cấp</string>
<string name="add_your_team_members_to_conversations">Thêm các thành viên nhóm của bạn vào các cuộc trò chuyện.</string>
<string name="business_address">Địa chỉ doanh nghiệp</string>
</resources>
@@ -1917,7 +1917,8 @@
<string name="servers_info_reset_stats_alert_confirm">重置</string>
<string name="network_error_broker_host_desc">服务器地址不兼容网络设置:%1$s。</string>
<string name="servers_info_starting_from">起始自 %s。</string>
<string name="servers_info_private_data_disclaimer">自 %s 起 \n所有数据均私密地保存在你的设备上..</string>
<string name="servers_info_private_data_disclaimer">起始自 %s.
\n所有数据都是设备的私有数据。</string>
<string name="subscribed">已订阅</string>
<string name="acknowledged">已认可</string>
<string name="network_error_broker_version_desc">服务器版本不兼容你的应用:%1$s.</string>
@@ -2156,8 +2157,8 @@
<string name="v6_2_network_decentralization_descr">应用中的第二个预设运营者!</string>
<string name="v6_2_improved_chat_navigation">改进了聊天导航</string>
<string name="view_updated_conditions">查看更新后的条款</string>
<string name="onboarding_network_operators_app_will_use_for_routing">比如,如果你通过 SimpleX 服务器收到消息,应用会通过 Flux 服务器传送它们</string>
<string name="onboarding_network_operators_app_will_use_different_operators">应用通过在每个对话使用不同运营者保护你的隐私</string>
<string name="onboarding_network_operators_app_will_use_for_routing">比如,如果你通过 SimpleX 服务器收到消息,应用会使用 Flux 服务器中的一台进行私密路由</string>
<string name="onboarding_network_operators_app_will_use_different_operators">启用了多于一个网络运营者时,应用会为每个对话使用不同运营者的服务器</string>
<string name="accept_conditions">接受条款</string>
<string name="appearance_bars_blur_radius">模糊</string>
<string name="address_or_1_time_link">地址或一次性链接?</string>
@@ -2228,13 +2229,4 @@
<string name="info_row_chat">聊天</string>
<string name="member_will_be_removed_from_chat_cannot_be_undone">将从聊天中删除成员 - 此操作无法撤销!</string>
<string name="maximum_message_size_reached_text">请减小消息尺寸并再次发送。</string>
<string name="onboarding_network_operators_cant_see_who_talks_to_whom">当启用了超过一个运营者时,没有一个运营者拥有了解谁和谁联络的元数据。</string>
<string name="display_name_accepted_invitation">已接受邀请</string>
<string name="display_name_requested_to_connect">被请求连接</string>
<string name="onboarding_network_about_operators">关于运营者</string>
<string name="onboarding_network_operators_simplex_flux_agreement">SimpleX Chat 和 Flux 达成协议将 Flux 运营的服务器包括在应用中。</string>
<string name="sync_connection_confirm">修复</string>
<string name="sync_connection_question">修复连接?</string>
<string name="encryption_renegotiation_in_progress">正进行加密重协商。</string>
<string name="sync_connection_desc">连接需要加密重协商。</string>
</resources>
@@ -12,60 +12,26 @@ body {
object-fit: cover;
}
@media (orientation: portrait) {
#remote-video-stream.collapsed {
position: absolute;
width: 30%;
max-width: 30%;
height: 39.9vw;
object-fit: cover;
margin: 16px;
border-radius: 16px;
bottom: 80px;
right: 0;
}
#remote-video-stream.collapsed {
position: absolute;
max-width: 30%;
max-height: 30%;
object-fit: cover;
margin: 16px;
border-radius: 16px;
bottom: 80px;
right: 0;
}
@media (orientation: landscape) {
#remote-video-stream.collapsed {
position: absolute;
width: 20%;
max-width: 20%;
height: 15.03vw;
object-fit: cover;
margin: 16px;
border-radius: 16px;
bottom: 80px;
right: 0;
}
}
@media (orientation: portrait) {
#remote-video-stream.collapsed-pip {
position: absolute;
width: 50%;
max-width: 50%;
height: 66.5vw;
object-fit: cover;
margin: 8px;
border-radius: 8px;
bottom: 0;
right: 0;
}
}
@media (orientation: landscape) {
#remote-video-stream.collapsed-pip {
position: absolute;
width: 50%;
max-width: 50%;
height: 37.59vw;
object-fit: cover;
margin: 8px;
border-radius: 8px;
bottom: 0;
right: 0;
}
#remote-video-stream.collapsed-pip {
position: absolute;
max-width: 50%;
max-height: 50%;
object-fit: cover;
margin: 8px;
border-radius: 8px;
bottom: 0;
right: 0;
}
#remote-screen-video-stream.inline {
@@ -75,32 +41,15 @@ body {
object-fit: cover;
}
@media (orientation: portrait) {
#local-video-stream.inline {
position: absolute;
width: 30%;
max-width: 30%;
height: 39.9vw;
object-fit: cover;
margin: 16px;
border-radius: 16px;
top: 0;
right: 0;
}
}
@media (orientation: landscape) {
#local-video-stream.inline {
position: absolute;
width: 20%;
max-width: 20%;
height: 15.03vw;
object-fit: cover;
margin: 16px;
border-radius: 16px;
top: 0;
right: 0;
}
#local-video-stream.inline {
position: absolute;
width: 30%;
max-width: 30%;
object-fit: cover;
margin: 16px;
border-radius: 16px;
top: 0;
right: 0;
}
#local-screen-video-stream.inline {
@@ -301,7 +301,6 @@ const processCommand = (function () {
localStream = await getLocalMediaStream(true, command.media == CallMediaType.Video && (await browserHasCamera()), VideoCamera.User);
const videos = getVideoElements();
if (videos) {
setupLocalVideoRatio(videos.local);
videos.local.srcObject = localStream;
videos.local.play().catch((e) => console.log(e));
}
@@ -331,12 +330,9 @@ const processCommand = (function () {
console.log("starting incoming call - create webrtc session");
if (activeCall)
endCall();
// It can be already defined on Android when switching calls (if the previous call was outgoing)
notConnectedCall = undefined;
inactiveCallMediaSources.mic = true;
inactiveCallMediaSources.camera = command.media == CallMediaType.Video;
inactiveCallMediaSourcesChanged(inactiveCallMediaSources);
setupLocalVideoRatio(getVideoElements().local);
const { media, iceServers, relay } = command;
const encryption = supportsInsertableStreams(useWorker);
const aesKey = encryption ? command.aesKey : undefined;
@@ -551,13 +547,13 @@ const processCommand = (function () {
}
function endCall() {
var _a;
shutdownCameraAndMic();
try {
(_a = activeCall === null || activeCall === void 0 ? void 0 : activeCall.connection) === null || _a === void 0 ? void 0 : _a.close();
}
catch (e) {
console.log(e);
}
shutdownCameraAndMic();
activeCall = undefined;
resetVideoElements();
}
@@ -646,21 +642,27 @@ const processCommand = (function () {
}
// Without doing it manually Firefox shows black screen but video can be played in Picture-in-Picture
videos.local.play().catch((e) => console.log(e));
setupLocalVideoRatio(videos.local);
}
function setupLocalVideoRatio(local) {
const ratio = isDesktop ? 1.33 : 1 / 1.33;
const currentRect = local.getBoundingClientRect();
// better to get percents from here than to hardcode values from styles (the styles can be changed)
const screenWidth = currentRect.left + currentRect.width;
const percents = currentRect.width / screenWidth;
local.style.width = `${percents * 100}%`;
local.style.height = `${(percents / ratio) * 100}vw`;
local.addEventListener("loadedmetadata", function () {
console.log("Local video videoWidth: " + local.videoWidth + "px, videoHeight: " + local.videoHeight + "px");
if (local.videoWidth == 0 || local.videoHeight == 0)
return;
const ratio = local.videoWidth > local.videoHeight ? 0.2 : 0.3;
local.style.height = `${(ratio / (local.videoWidth / local.videoHeight)) * 100}vw`;
local.style.height = `${(percents / (local.videoWidth / local.videoHeight)) * 100}vw`;
});
local.onresize = function () {
console.log("Local video size changed to " + local.videoWidth + "x" + local.videoHeight);
if (local.videoWidth == 0 || local.videoHeight == 0)
return;
const ratio = local.videoWidth > local.videoHeight ? 0.2 : 0.3;
local.style.height = `${(ratio / (local.videoWidth / local.videoHeight)) * 100}vw`;
local.style.height = `${(percents / (local.videoWidth / local.videoHeight)) * 100}vw`;
};
}
function setupEncryptionForLocalStream(call) {
@@ -1126,9 +1128,8 @@ const processCommand = (function () {
(!!useWorker && "RTCRtpScriptTransform" in window));
}
function shutdownCameraAndMic() {
if (activeCall) {
if (activeCall === null || activeCall === void 0 ? void 0 : activeCall.localStream) {
activeCall.localStream.getTracks().forEach((track) => track.stop());
activeCall.localScreenStream.getTracks().forEach((track) => track.stop());
}
}
function resetVideoElements() {
@@ -1294,9 +1295,6 @@ function changeLayout(layout) {
break;
}
videos.localScreen.style.visibility = localSources.screenVideo ? "visible" : "hidden";
if (!isDesktop && !localSources.camera) {
resetLocalVideoElementHeight(videos.local);
}
}
function getVideoElements() {
const local = document.getElementById("local-video-stream");
@@ -1314,11 +1312,6 @@ function getVideoElements() {
return;
return { local, localScreen, remote, remoteScreen };
}
// Allow CSS to figure out the size of view by itself on Android because rotating to different orientation
// without dropping override will cause the view to have not normal proportion while no video is present
function resetLocalVideoElementHeight(local) {
local.style.height = "";
}
function desktopShowPermissionsAlert(mediaType) {
if (!isDesktop)
return;
@@ -15,9 +15,8 @@ body {
#remote-video-stream.collapsed {
position: absolute;
width: 20%;
max-width: 20%;
height: 15.03vw;
max-height: 20%;
object-fit: cover;
margin: 16px;
border-radius: 16px;
@@ -48,7 +47,6 @@ body {
position: absolute;
width: 20%;
max-width: 20%;
height: 15.03vw;
object-fit: cover;
margin: 16px;
border-radius: 16px;
+4 -4
View File
@@ -24,11 +24,11 @@ android.nonTransitiveRClass=true
kotlin.mpp.androidSourceSetLayoutVersion=2
kotlin.jvm.target=11
android.version_name=6.2
android.version_code=259
android.version_name=6.2-beta.6
android.version_code=258
desktop.version_name=6.2
desktop.version_code=82
desktop.version_name=6.2-beta.6
desktop.version_code=81
kotlin.version=1.9.23
gradle.plugin.version=8.2.0
@@ -68,7 +68,7 @@ So, for Android we can now deliver instant message notifications without comprom
Please let us know what needs to be improved - it's only the first version of instant notifications for Android!
## iOS notifications require a server
## Our iOS approach has one trade-off
iOS is much more protective of what apps are allowed to run on the devices, and the solution that worked on Android is not viable on iOS.
@@ -1,88 +1,23 @@
---
layout: layouts/article.html
title: "SimpleX network: preset servers operated by Flux, business chats and more with v6.2 of the apps"
title: "Servers operated by Flux - true privacy and decentralization for all users"
date: 2024-12-10
previewBody: blog_previews/20241210.html
image: images/20241210-operators-1.png
# previewBody: blog_previews/20241210.html
# image: images/simplexonflux.png
# imageWide: true
draft: true
permalink: "/blog/20241210-simplex-network-v6-2-servers-by-flux-business-chats.html"
---
# SimpleX network: preset servers operated by Flux, business chats and more with v6.2 of the apps
**Published:** Dec 10, 2024
**Will be published:** Dec 10, 2024
What's new in v6.2:
This is a placeholder page for the upcoming v6.2 release announcement!
- [SimpleX Chat and Flux](#simplex-chat-and-flux-improve-metadata-privacy-in-simplex-network) improve metadata privacy in SimpleX network.
- [Business chats](#business-chats) to provide support from your business to users of SimpleX network.
- [Better user experience](#better-user-experience): open on the first unread, jump to quoted messages, see who reacted.
- [Improving notifications in iOS app](#improving-notifications-in-ios-app).
## What's new in v6.2
### SimpleX Chat and Flux improve metadata privacy in SimpleX network
<img src="./images/20241210-operators-1.png" width=288 class="float-to-right"> <img src="./images/20241210-operators-2.png" width=288 class="float-to-right">
SimpleX Chat and [Flux](https://runonflux.com) (Influx Technology Limited) made an agreement to include messaging and file servers operated by Flux into the app.
SimpleX network is decentralized by design, but in the users of the previous app versions had to find other servers online or host servers themselves to use any other servers than operated by us.
Now all users can choose between servers of two companies, use both of them, and continue using any other servers they host or available online.
To use Flux servers enable them when the app offers it, or at any point later via Network & servers settings in the app.
When both SimpleX Chat and Flux servers are enabled, the app will use servers of both operators in each connection to receive messages and for [private message routing](./20240604-simplex-chat-v5.8-private-message-routing-chat-themes.md), increasing metadata privacy for all users.
Read more about why SimpleX network benefits from multiple operators in [our previous post](./20241125-servers-operated-by-flux-true-privacy-and-decentralization-for-all-users.md).
You can also read about our plan [how network operators will make money](https://github.com/simplex-chat/simplex-chat/blob/stable/docs/rfcs/2024-04-26-commercial-model.md), while continuing to protect users privacy, based on network design rather than on trust to operators, and without any cryptocurrency emission.
### Business chats
<img src="./images/20241210-business.png" width=288 class="float-to-right">
We use SimpleX Chat to provide support to SimpleX Chat users, and we also see some other companies offering SimpleX Chat as a support channel.
One of the problem of providing support via general purpose messengers is that the customers don't see who they talk to, as they can in all dedicated support systems.
It is not possible in most messengers, including SimpleX Chat prior to v6.2 - every new customer joins a one-to-one conversation, where the customers see that they talk to a company, not knowing who they talk to, and if it's a bot or a human.
The new business chats in SimpleX Chat solve this problem: to use them enable the toggle under the contact address in your chat profile. It is safe to do, and you can always toggle it off, if needed - the address itself does not change.
Once you do it, the app will be creating a new business chat with each connecting customer where multiple people can participate. Business chat is a hybrid of one-to-one and group conversation. In the list of chats you will see customer names and avatars, and the customer will see your business name and avatar, like with one-to-one conversations. But inside it works as a group, allowing customer to see who sent the message, and allowing you to add other participants from the business side, for delegation and escalation of customer questions.
This can be done manually, or you can automate these conversations using bots that can answer some customer questions and then add a human to the conversation when appropriate or requested by the customer. We will be offering more bot-related features to the app and a simpler way to program bots very soon - watch our announcements.
### Better user experience
<img src="./images/20241210-reactions.png" width=288 class="float-to-right">
**Chat navigation**
This has been a long-standing complaint from the users: *why does the app opens conversations on the last message, and not on the first unread message*?
Android and desktop apps now open the chat on the first unread message. It will soon be done in the iOS app too.
Also, the app can scroll to the replied message anywhere in the conversation (when you tap it), even if it was sent a very long time ago.
**See who reacted!**
This is a small but important change - you can now see who reacted to your messages!
### Improving notifications in iOS app
iOS notifications in a decentralized network is a complex problems. We [support iOS notifications](./20220404-simplex-chat-instant-notifications.md#ios-notifications-require-a-server) from early versions of the app, focussing on preserving privacy as much as possible. But the reliability of notifications was not good enough.
We solved several problems of notification delivery in this release:
- messaging servers no longer lose notifications while notification servers are restarted.
- Apple can drop notifications while your device is offline - about 15-20% of notifications are dropped because of it. The servers and the new version of the app work around this problem by delivering several last notifications, to show notifications correctly even when Apple drops them.
With these changes the iOS notifications remained as private and secure as before. The notifications only contain metadata, without the actual messages, and even the metadata is end-to-end encrypted between SimpleX notification servers and the client device, inaccessible to Apple push notification servers.
There are two remaining problems we will solve soon:
- iOS only allows to use 25mb of device memory when processing notifications in the background. This limit didn't change for many years, and it is challenging for decentralized design. If the app uses more memory, iOS kills it and the notification is not shown approximately 10% of notifications can be lost because of that.
- for notifications to work, the app communicates with the notification server. If the user puts the app in background too quickly, the app may fail to enable notification for the new contacts. We plan to change clients and servers to delegate this task to messaging servers, to remove the need for this additional communication entirely, without any impact on privacy and security. This will happen early next year.
- Preset servers are now operated by two companies - SimpleX Chat and Flux. Read [this post](./20241125-servers-operated-by-flux-true-privacy-and-decentralization-for-all-users.md).
- Business chats to provide support from your business to users of SimpleX network. Read [this page](../docs/BUSINESS.md).
- and more!
## SimpleX network
+1 -10
View File
@@ -1,15 +1,6 @@
# Blog
Dec 10, 2024 [SimpleX network: preset servers operated by Flux, business chats and more with v6.2 of the apps](./20241210-simplex-network-v6-2-servers-by-flux-business-chats.md)
- SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app to improve metadata privacy in SimpleX network.
- Business chats for better privacy and support of your customers.
- Better user experience: open on the first unread, jump to quoted messages, see who reacted.
- Improving notifications in iOS app.
--
Nov 25, 2024 [Servers operated by Flux - true privacy and decentralization for all users](./20241125-servers-operated-by-flux-true-privacy-and-decentralization-for-all-users.md)
Nov 25, 2025 [Servers operated by Flux - true privacy and decentralization for all users](./20241125-servers-operated-by-flux-true-privacy-and-decentralization-for-all-users.md)
- Welcome, Flux - the new servers in v6.2-beta.1!
- What's the problem?
Binary file not shown.

Before

Width:  |  Height:  |  Size: 364 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 224 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 257 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 471 KiB

Generated
+470 -282
View File
@@ -16,6 +16,21 @@
"type": "github"
}
},
"blank": {
"locked": {
"lastModified": 1625557891,
"narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=",
"owner": "divnix",
"repo": "blank",
"rev": "5a5d2684073d9f563072ed07c871d577a6c614a8",
"type": "github"
},
"original": {
"owner": "divnix",
"repo": "blank",
"type": "github"
}
},
"cabal-32": {
"flake": false,
"locked": {
@@ -83,6 +98,64 @@
"type": "github"
}
},
"devshell": {
"inputs": {
"flake-utils": [
"haskellNix",
"tullia",
"std",
"flake-utils"
],
"nixpkgs": [
"haskellNix",
"tullia",
"std",
"nixpkgs"
]
},
"locked": {
"lastModified": 1663445644,
"narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=",
"owner": "numtide",
"repo": "devshell",
"rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "devshell",
"type": "github"
}
},
"dmerge": {
"inputs": {
"nixlib": [
"haskellNix",
"tullia",
"std",
"nixpkgs"
],
"yants": [
"haskellNix",
"tullia",
"std",
"yants"
]
},
"locked": {
"lastModified": 1659548052,
"narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=",
"owner": "divnix",
"repo": "data-merge",
"rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497",
"type": "github"
},
"original": {
"owner": "divnix",
"repo": "data-merge",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
@@ -100,34 +173,74 @@
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1698579227,
"narHash": "sha256-KVWjFZky+gRuWennKsbo6cWyo7c/z/VgCte5pR9pEKg=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "f76e870d64779109e41370848074ac4eaa1606ec",
"lastModified": 1650374568,
"narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "b4a34015c698c7793d592d66adbab377907a2be8",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"lastModified": 1676283394,
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"locked": {
"lastModified": 1667395993,
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_3": {
"locked": {
"lastModified": 1653893745,
"narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_4": {
"locked": {
"lastModified": 1659877975,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"type": "github"
},
"original": {
@@ -153,51 +266,33 @@
"type": "github"
}
},
"ghc98X": {
"flake": false,
"gomod2nix": {
"inputs": {
"nixpkgs": "nixpkgs_2",
"utils": "utils"
},
"locked": {
"lastModified": 1715066704,
"narHash": "sha256-F0EVR8x/fcpj1st+hz96Wdsz5uwVIOziGKAwRxLOYJw=",
"ref": "ghc-9.8",
"rev": "78a253543d466ac511a1664a3e6aff032ca684d5",
"revCount": 61757,
"submodules": true,
"type": "git",
"url": "https://gitlab.haskell.org/ghc/ghc"
"lastModified": 1655245309,
"narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=",
"owner": "tweag",
"repo": "gomod2nix",
"rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58",
"type": "github"
},
"original": {
"ref": "ghc-9.8",
"submodules": true,
"type": "git",
"url": "https://gitlab.haskell.org/ghc/ghc"
}
},
"ghc99": {
"flake": false,
"locked": {
"lastModified": 1726585445,
"narHash": "sha256-IdwQBex4boY6s0Plj5+ixf36rfYSUyMdTWrztKvZH30=",
"ref": "refs/heads/master",
"rev": "7fd9e5e29ab54eb406880077463e8552e2ddd39a",
"revCount": 67238,
"submodules": true,
"type": "git",
"url": "https://gitlab.haskell.org/ghc/ghc"
},
"original": {
"submodules": true,
"type": "git",
"url": "https://gitlab.haskell.org/ghc/ghc"
"owner": "tweag",
"repo": "gomod2nix",
"type": "github"
}
},
"hackage": {
"flake": false,
"locked": {
"lastModified": 1702513363,
"narHash": "sha256-kloro9uEe8aYhPMoMjVNq2rfrXNgMOZhOPwVH5DH2K0=",
"lastModified": 1702340598,
"narHash": "sha256-CC0HI+6iKPtH+8r/ZfcpW5v/OYvL7zMwpr0xfkXV1zU=",
"owner": "input-output-hk",
"repo": "hackage.nix",
"rev": "a9d931d0398da67846fa257922a924829233cb91",
"rev": "24617c569995e38bf3b83b48eec6628a50fdb4fb",
"type": "github"
},
"original": {
@@ -214,43 +309,33 @@
"cabal-36": "cabal-36",
"cardano-shell": "cardano-shell",
"flake-compat": "flake-compat",
"flake-utils": "flake-utils_2",
"ghc-8.6.5-iohk": "ghc-8.6.5-iohk",
"ghc98X": "ghc98X",
"ghc99": "ghc99",
"hackage": [
"hackage"
],
"hls-1.10": "hls-1.10",
"hls-2.0": "hls-2.0",
"hls-2.2": "hls-2.2",
"hls-2.3": "hls-2.3",
"hls-2.4": "hls-2.4",
"hls-2.5": "hls-2.5",
"hls-2.6": "hls-2.6",
"hpc-coveralls": "hpc-coveralls",
"hydra": "hydra",
"iserv-proxy": "iserv-proxy",
"nixpkgs": [
"haskellNix",
"nixpkgs-unstable"
"nixpkgs"
],
"nixpkgs-2003": "nixpkgs-2003",
"nixpkgs-2105": "nixpkgs-2105",
"nixpkgs-2111": "nixpkgs-2111",
"nixpkgs-2205": "nixpkgs-2205",
"nixpkgs-2211": "nixpkgs-2211",
"nixpkgs-2305": "nixpkgs-2305",
"nixpkgs-2311": "nixpkgs-2311",
"nixpkgs-unstable": "nixpkgs-unstable",
"old-ghc-nix": "old-ghc-nix",
"stackage": "stackage"
"stackage": "stackage",
"tullia": "tullia"
},
"locked": {
"lastModified": 1705833500,
"narHash": "sha256-rUIr6JNbCedt1g4gVYVvE9t0oFU6FUspCA0DS5cA8Bg=",
"lastModified": 1677975916,
"narHash": "sha256-dbe8lEEPyfzjdRwpePClv7J9p9lQg7BwbBqAMCw4RLw=",
"owner": "input-output-hk",
"repo": "haskell.nix",
"rev": "d0c35e75cbbc6858770af42ac32b0b85495fbd71",
"rev": "ab5efd87ce3fd8ade38a01d97693d29a4f1ae7e4",
"type": "github"
},
"original": {
@@ -260,125 +345,6 @@
"type": "github"
}
},
"hls-1.10": {
"flake": false,
"locked": {
"lastModified": 1680000865,
"narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=",
"owner": "haskell",
"repo": "haskell-language-server",
"rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9",
"type": "github"
},
"original": {
"owner": "haskell",
"ref": "1.10.0.0",
"repo": "haskell-language-server",
"type": "github"
}
},
"hls-2.0": {
"flake": false,
"locked": {
"lastModified": 1687698105,
"narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=",
"owner": "haskell",
"repo": "haskell-language-server",
"rev": "783905f211ac63edf982dd1889c671653327e441",
"type": "github"
},
"original": {
"owner": "haskell",
"ref": "2.0.0.1",
"repo": "haskell-language-server",
"type": "github"
}
},
"hls-2.2": {
"flake": false,
"locked": {
"lastModified": 1693064058,
"narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=",
"owner": "haskell",
"repo": "haskell-language-server",
"rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85",
"type": "github"
},
"original": {
"owner": "haskell",
"ref": "2.2.0.0",
"repo": "haskell-language-server",
"type": "github"
}
},
"hls-2.3": {
"flake": false,
"locked": {
"lastModified": 1695910642,
"narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=",
"owner": "haskell",
"repo": "haskell-language-server",
"rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be",
"type": "github"
},
"original": {
"owner": "haskell",
"ref": "2.3.0.0",
"repo": "haskell-language-server",
"type": "github"
}
},
"hls-2.4": {
"flake": false,
"locked": {
"lastModified": 1699862708,
"narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=",
"owner": "haskell",
"repo": "haskell-language-server",
"rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57",
"type": "github"
},
"original": {
"owner": "haskell",
"ref": "2.4.0.1",
"repo": "haskell-language-server",
"type": "github"
}
},
"hls-2.5": {
"flake": false,
"locked": {
"lastModified": 1701080174,
"narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=",
"owner": "haskell",
"repo": "haskell-language-server",
"rev": "27f8c3d3892e38edaef5bea3870161815c4d014c",
"type": "github"
},
"original": {
"owner": "haskell",
"ref": "2.5.0.0",
"repo": "haskell-language-server",
"type": "github"
}
},
"hls-2.6": {
"flake": false,
"locked": {
"lastModified": 1705325287,
"narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=",
"owner": "haskell",
"repo": "haskell-language-server",
"rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e",
"type": "github"
},
"original": {
"owner": "haskell",
"ref": "2.6.0.0",
"repo": "haskell-language-server",
"type": "github"
}
},
"hpc-coveralls": {
"flake": false,
"locked": {
@@ -418,14 +384,37 @@
"type": "indirect"
}
},
"incl": {
"inputs": {
"nixlib": [
"haskellNix",
"tullia",
"std",
"nixpkgs"
]
},
"locked": {
"lastModified": 1669263024,
"narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=",
"owner": "divnix",
"repo": "incl",
"rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca",
"type": "github"
},
"original": {
"owner": "divnix",
"repo": "incl",
"type": "github"
}
},
"iserv-proxy": {
"flake": false,
"locked": {
"lastModified": 1707968597,
"narHash": "sha256-C53NqToxl+n9s1pQ0iLtiH6P5vX3rM+NW/mFt4Ykpsk=",
"lastModified": 1670983692,
"narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=",
"ref": "hkm/remote-iserv",
"rev": "1b7f8aeb37bbc7c00f04e44d9379aa15a4409e8b",
"revCount": 18,
"rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300",
"revCount": 10,
"type": "git",
"url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git"
},
@@ -451,22 +440,32 @@
"type": "github"
}
},
"mac2ios": {
"n2c": {
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": "nixpkgs_2"
"flake-utils": [
"haskellNix",
"tullia",
"std",
"flake-utils"
],
"nixpkgs": [
"haskellNix",
"tullia",
"std",
"nixpkgs"
]
},
"locked": {
"lastModified": 1699767871,
"narHash": "sha256-kxeCUfwC/Vgh2FvVMlBUq0eVx1JvfHyN+5MPKUik9mE=",
"owner": "zw3rk",
"repo": "mobile-core-tools",
"rev": "4dcb77d5ea896d749381806dfab5358851b08951",
"lastModified": 1665039323,
"narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=",
"owner": "nlewo",
"repo": "nix2container",
"rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a",
"type": "github"
},
"original": {
"owner": "zw3rk",
"repo": "mobile-core-tools",
"owner": "nlewo",
"repo": "nix2container",
"type": "github"
}
},
@@ -491,6 +490,95 @@
"type": "github"
}
},
"nix-nomad": {
"inputs": {
"flake-compat": "flake-compat_2",
"flake-utils": [
"haskellNix",
"tullia",
"nix2container",
"flake-utils"
],
"gomod2nix": "gomod2nix",
"nixpkgs": [
"haskellNix",
"tullia",
"nixpkgs"
],
"nixpkgs-lib": [
"haskellNix",
"tullia",
"nixpkgs"
]
},
"locked": {
"lastModified": 1658277770,
"narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=",
"owner": "tristanpemble",
"repo": "nix-nomad",
"rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70",
"type": "github"
},
"original": {
"owner": "tristanpemble",
"repo": "nix-nomad",
"type": "github"
}
},
"nix2container": {
"inputs": {
"flake-utils": "flake-utils_3",
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1658567952,
"narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=",
"owner": "nlewo",
"repo": "nix2container",
"rev": "60bb43d405991c1378baf15a40b5811a53e32ffa",
"type": "github"
},
"original": {
"owner": "nlewo",
"repo": "nix2container",
"type": "github"
}
},
"nixago": {
"inputs": {
"flake-utils": [
"haskellNix",
"tullia",
"std",
"flake-utils"
],
"nixago-exts": [
"haskellNix",
"tullia",
"std",
"blank"
],
"nixpkgs": [
"haskellNix",
"tullia",
"std",
"nixpkgs"
]
},
"locked": {
"lastModified": 1661824785,
"narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=",
"owner": "nix-community",
"repo": "nixago",
"rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixago",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1657693803,
@@ -557,11 +645,11 @@
},
"nixpkgs-2205": {
"locked": {
"lastModified": 1685573264,
"narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=",
"lastModified": 1672580127,
"narHash": "sha256-3lW3xZslREhJogoOkjeZtlBtvFMyxHku7I/9IVehhT8=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "380be19fbd2d9079f677978361792cb25e8a3635",
"rev": "0874168639713f547c05947c76124f78441ea46c",
"type": "github"
},
"original": {
@@ -573,11 +661,11 @@
},
"nixpkgs-2211": {
"locked": {
"lastModified": 1688392541,
"narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=",
"lastModified": 1675730325,
"narHash": "sha256-uNvD7fzO5hNlltNQUAFBPlcEjNG5Gkbhl/ROiX+GZU4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b",
"rev": "b7ce17b1ebf600a72178f6302c77b6382d09323f",
"type": "github"
},
"original": {
@@ -587,56 +675,6 @@
"type": "github"
}
},
"nixpkgs-2305": {
"locked": {
"lastModified": 1705033721,
"narHash": "sha256-K5eJHmL1/kev6WuqyqqbS1cdNnSidIZ3jeqJ7GbrYnQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a1982c92d8980a0114372973cbdfe0a307f1bdea",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-23.05-darwin",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-2311": {
"locked": {
"lastModified": 1719957072,
"narHash": "sha256-gvFhEf5nszouwLAkT9nWsDzocUTqLWHuL++dvNjMp9I=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "7144d6241f02d171d25fba3edeaf15e0f2592105",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-23.11-darwin",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"dir": "lib",
"lastModified": 1696019113,
"narHash": "sha256-X3+DKYWJm93DRSdC5M6K5hLqzSya9BjibtBsuARoPco=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "f5892ddac112a1e9b3612c39af1b72987ee5783a",
"type": "github"
},
"original": {
"dir": "lib",
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-regression": {
"locked": {
"lastModified": 1643052045,
@@ -655,36 +693,98 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1694822471,
"narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=",
"lastModified": 1675758091,
"narHash": "sha256-7gFSQbSVAFUHtGCNHPF7mPc5CcqDk9M2+inlVPZSneg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "47585496bcb13fb72e4a90daeea2f434e2501998",
"rev": "747927516efcb5e31ba03b7ff32f61f6d47e7d87",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"rev": "47585496bcb13fb72e4a90daeea2f434e2501998",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1698434055,
"narHash": "sha256-Phxi5mUKSoL7A0IYUiYtkI9e8NcGaaV5PJEaJApU1Ko=",
"lastModified": 1653581809,
"narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "1a3c95e3b23b3cdb26750621c08cc2f1560cb883",
"rev": "83658b28fe638a170a19b8933aa008b30640fbd1",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-23.05",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1654807842,
"narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "fc909087cc3386955f21b4665731dbdaceefb1d8",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1665087388,
"narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1676726892,
"narHash": "sha256-M7OYVR6dKmzmlebIjybFf3l18S2uur8lMyWWnHQooLY=",
"owner": "angerman",
"repo": "nixpkgs",
"rev": "729469087592bdea58b360de59dadf6d58714c42",
"type": "github"
},
"original": {
"owner": "angerman",
"ref": "release-22.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nosys": {
"locked": {
"lastModified": 1667881534,
"narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=",
"owner": "divnix",
"repo": "nosys",
"rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f",
"type": "github"
},
"original": {
"owner": "divnix",
"repo": "nosys",
"type": "github"
}
},
"old-ghc-nix": {
"flake": false,
"locked": {
@@ -707,21 +807,17 @@
"flake-utils": "flake-utils",
"hackage": "hackage",
"haskellNix": "haskellNix",
"mac2ios": "mac2ios",
"nixpkgs": [
"haskellNix",
"nixpkgs-2305"
]
"nixpkgs": "nixpkgs_5"
}
},
"stackage": {
"flake": false,
"locked": {
"lastModified": 1726532152,
"narHash": "sha256-LRXbVY3M2S8uQWdwd2zZrsnVPEvt2GxaHGoy8EFFdJA=",
"lastModified": 1677888571,
"narHash": "sha256-YkhRNOaN6QVagZo1cfykYV8KqkI8/q6r2F5+jypOma4=",
"owner": "input-output-hk",
"repo": "stackage.nix",
"rev": "c77b3530cebad603812cb111c6f64968c2d2337d",
"rev": "cb50e6fabdfb2d7e655059039012ad0623f06a27",
"type": "github"
},
"original": {
@@ -730,18 +826,110 @@
"type": "github"
}
},
"systems": {
"std": {
"inputs": {
"arion": [
"haskellNix",
"tullia",
"std",
"blank"
],
"blank": "blank",
"devshell": "devshell",
"dmerge": "dmerge",
"flake-utils": "flake-utils_4",
"incl": "incl",
"makes": [
"haskellNix",
"tullia",
"std",
"blank"
],
"microvm": [
"haskellNix",
"tullia",
"std",
"blank"
],
"n2c": "n2c",
"nixago": "nixago",
"nixpkgs": "nixpkgs_4",
"nosys": "nosys",
"yants": "yants"
},
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"lastModified": 1674526466,
"narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=",
"owner": "divnix",
"repo": "std",
"rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"owner": "divnix",
"repo": "std",
"type": "github"
}
},
"tullia": {
"inputs": {
"nix-nomad": "nix-nomad",
"nix2container": "nix2container",
"nixpkgs": [
"haskellNix",
"nixpkgs"
],
"std": "std"
},
"locked": {
"lastModified": 1675695930,
"narHash": "sha256-B7rEZ/DBUMlK1AcJ9ajnAPPxqXY6zW2SBX+51bZV0Ac=",
"owner": "input-output-hk",
"repo": "tullia",
"rev": "621365f2c725608f381b3ad5b57afef389fd4c31",
"type": "github"
},
"original": {
"owner": "input-output-hk",
"repo": "tullia",
"type": "github"
}
},
"utils": {
"locked": {
"lastModified": 1653893745,
"narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"yants": {
"inputs": {
"nixpkgs": [
"haskellNix",
"tullia",
"std",
"nixpkgs"
]
},
"locked": {
"lastModified": 1667096281,
"narHash": "sha256-wRRec6ze0gJHmGn6m57/zhz/Kdvp9HS4Nl5fkQ+uIuA=",
"owner": "divnix",
"repo": "yants",
"rev": "d18f356ec25cb94dc9c275870c3a7927a10f8c3c",
"type": "github"
},
"original": {
"owner": "divnix",
"repo": "yants",
"type": "github"
}
}
+24 -278
View File
@@ -1,15 +1,15 @@
{
description = "nix flake for simplex-chat";
inputs.nixpkgs.url = "github:angerman/nixpkgs/release-22.11";
inputs.haskellNix.url = "github:input-output-hk/haskell.nix/armv7a";
inputs.nixpkgs.follows = "haskellNix/nixpkgs-2305";
inputs.mac2ios.url = "github:zw3rk/mobile-core-tools";
inputs.haskellNix.inputs.nixpkgs.follows = "nixpkgs";
inputs.hackage = {
url = "github:input-output-hk/hackage.nix";
flake = false;
};
inputs.haskellNix.inputs.hackage.follows = "hackage";
inputs.flake-utils.url = "github:numtide/flake-utils";
outputs = { self, haskellNix, nixpkgs, flake-utils, mac2ios, ... }:
outputs = { self, haskellNix, nixpkgs, flake-utils, ... }:
let systems = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ]; in
flake-utils.lib.eachSystem systems (system:
# this android26 overlay makes the pkgsCross.{aarch64-android,armv7a-android-prebuilt} to set stdVer to 26 (Android 8).
@@ -30,7 +30,7 @@
# `appendOverlays` with a singleton is identical to `extend`.
let pkgs = haskellNix.legacyPackages.${system}.appendOverlays [android26]; in
let drv' = { extra-modules, pkgs', ... }: pkgs'.haskell-nix.project {
compiler-nix-name = "ghc963";
compiler-nix-name = "ghc8107";
index-state = "2023-12-12T00:00:00Z";
# We need this, to specify we want the cabal project.
# If the stack.yaml was dropped, this would not be necessary.
@@ -40,12 +40,9 @@
src = ./.;
};
sha256map = import ./scripts/nix/sha256map.nix;
modules = [
({ pkgs, lib, ...}: lib.mkIf (!pkgs.stdenv.hostPlatform.isWindows) {
# This patch adds `dl` as an extra-library to direct-sqlciper, which is needed
# on pretty much all unix platforms, but then blows up on windows m(
modules = [{
packages.direct-sqlcipher.patches = [ ./scripts/nix/direct-sqlcipher-2.3.27.patch ];
})
}
({ pkgs,lib, ... }: lib.mkIf (pkgs.stdenv.hostPlatform.isAndroid) {
packages.simplex-chat.components.library.ghcOptions = [ "-pie" ];
})] ++ extra-modules;
@@ -67,9 +64,6 @@
}); in
let iosPostInstall = bundleName: ''
${pkgs.tree}/bin/tree $out
mkdir tmp
find ./dist -name "libHS*-ghc*.a" -exec cp {} tmp \;
(cd tmp; ${pkgs.tree}/bin/tree .; ar x libHS*.a; for o in *.o; do if /usr/bin/otool -xv $o|grep ldadd ; then echo $o; fi; done; cd ..; rm -fR tmp)
mkdir -p $out/_pkg
# copy over includes, we might want those, but maybe not.
# cp -r $out/lib/*/*/include $out/_pkg/
@@ -80,18 +74,6 @@
find ${pkgs.gmp6.override { withStatic = true; }}/lib -name "*.a" -exec cp {} $out/_pkg \;
# There is no static libc
${pkgs.tree}/bin/tree $out/_pkg
for pkg in $out/_pkg/*.a; do
chmod +w $pkg
${mac2ios.packages.${system}.mac2ios}/bin/mac2ios $pkg
chmod -w $pkg
done
mkdir tmp
find $out/_pkg -name "libHS*-ghc*.a" -exec cp {} tmp \;
(cd tmp; ${pkgs.tree}/bin/tree .; ar x libHS*.a; for o in *.o; do if /usr/bin/otool -xv $o|grep ldadd ; then echo $o; fi; done; cd ..; rm -fR tmp)
sha256sum $out/_pkg/*.a
(cd $out/_pkg; ${pkgs.zip}/bin/zip -r -9 $out/${bundleName}.zip *)
rm -fR $out/_pkg
mkdir -p $out/nix-support
@@ -137,150 +119,13 @@
hardeningDisable = [ "fortify" ];
}
);in {
# STATIC x86_64-linux
"${pkgs.pkgsCross.musl64.hostPlatform.system}-static:exe:simplex-chat" = (drv pkgs.pkgsCross.musl64).simplex-chat.components.exes.simplex-chat;
# STATIC i686-linux
"${pkgs.pkgsCross.musl32.hostPlatform.system}-static:exe:simplex-chat" = (drv' {
pkgs' = pkgs.pkgsCross.musl32;
extra-modules = [{
# 32 bit patches
packages.basement.patches = [
./scripts/nix/basement-pr-573.patch
];
packages.memory.patches = [
./scripts/nix/memory-pr-99.patch
];
}];
}).simplex-chat.components.exes.simplex-chat;
# WINDOWS x86_64-mingwW64
"${pkgs.pkgsCross.mingwW64.hostPlatform.system}:exe:simplex-chat" = (drv' {
pkgs' = pkgs.pkgsCross.mingwW64;
extra-modules = [{
packages.direct-sqlcipher.flags.openssl = true;
packages.bitvec.flags.simd = false;
packages.direct-sqlcipher.patches = [
./scripts/nix/direct-sqlcipher-2.3.27-win.patch
];
packages.direct-sqlcipher.components.library.libs = pkgs.lib.mkForce [
(pkgs.pkgsCross.mingwW64.openssl) #.override) # { static = true; enableKTLS = false; })
];
packages.simplexmq.components.library.libs = pkgs.lib.mkForce [
(pkgs.pkgsCross.mingwW64.openssl) #.override) # { static = true; enableKTLS = false; })
];
packages.unix-time.postPatch = ''
sed -i 's/mingwex//g' unix-time.cabal
'';
}];
}).simplex-chat.components.exes.simplex-chat.override {
postInstall = ''
set -x
${pkgs.tree}/bin/tree $out
mkdir -p $out/_pkg
cp $out/bin/* $out/_pkg
${pkgs.tree}/bin/tree $out/_pkg
(cd $out/_pkg; ${pkgs.zip}/bin/zip -r -9 $out/${pkgs.pkgsCross.mingwW64.hostPlatform.system}-simplex-chat.zip *)
rm -fR $out/_pkg
mkdir -p $out/nix-support
echo "file binary-dist \"$(echo $out/*.zip)\"" \
> $out/nix-support/hydra-build-products
'';
};
"${pkgs.pkgsCross.mingwW64.hostPlatform.system}:lib:simplex-chat" = (drv' rec {
pkgs' = pkgs.pkgsCross.mingwW64;
extra-modules = [{
packages.direct-sqlcipher.flags.openssl = true;
# simd will try to read __cpu_model, which we don't expose
# from the rts (yet!).
packages.bitvec.flags.simd = false;
packages.direct-sqlcipher.patches = [
./scripts/nix/direct-sqlcipher-2.3.27-win.patch
];
packages.direct-sqlcipher.components.library.libs = pkgs.lib.mkForce [
pkgs.pkgsCross.mingwW64.openssl
];
packages.simplexmq.flags.client_library = true;
packages.simplexmq.components.library.libs = pkgs.lib.mkForce [
pkgs.pkgsCross.mingwW64.openssl
];
packages.unix-time.postPatch = ''
sed -i 's/mingwex//g' unix-time.cabal
'';
}];
}).simplex-chat.components.library
.override (p: {
# enableShared = false;
setupBuildFlags = p.component.setupBuildFlags ++ map (x: "--ghc-option=${x}") [
"-shared"
"-threaded"
"-o" "libsimplex.dll"
# "-optl-lHSrts_thr"
"-optl-lffi"
# "-optl-static-libgcc"
# We can't do -optl-static-libstdc++ with gcc. g++ might
# but then we are chaning the compiler altogether.
"${./libsimplex.dll.def}"
];
postInstall = ''
set -x
function deps() {
${pkgs.binutils}/bin/strings "$1" | grep '.\.dll'|grep -v -E 'Winsock|ADVAPI32|dbghelp|KERNEL32|msvcrt|ntdll|ole32|RPCRT4|SHELL32|USER32|WINMM|WS2_32|kernel32|GDI32'|grep -v "$1"
}
${pkgs.tree}/bin/tree $out
mkdir -p $out/_pkg
cp libsimplex.dll $out/_pkg
cp libsimplex.dll.a $out/_pkg
mkdir $out/libs
find ${pkgs.lib.getBin pkgs.pkgsCross.mingwW64.openssl} -name "*.dll" -exec cp {} $out/libs \;
find ${pkgs.lib.getBin pkgs.pkgsCross.mingwW64.libffi} -name "*.dll" -exec cp {} $out/libs \;
find ${pkgs.lib.getBin pkgs.pkgsCross.mingwW64.gmp} -name "*.dll" -exec cp {} $out/libs \;
find ${pkgs.lib.getBin pkgs.pkgsCross.mingwW64.stdenv.cc.cc} -name "*.dll" -exec cp {} $out/libs \;
find ${pkgs.lib.getBin pkgs.pkgsCross.mingwW64.windows.mcfgthreads} -name "*.dll" -exec cp {} $out/libs \;
pushd $out/_pkg
function copyDeps() {
for dep in $(deps "$1"); do
if [ ! -f "$dep" ]; then
if [ ! -f ../libs/"$dep" ]; then
echo "WARN: $1 -> $dep not found!"
else
cp ../libs/"$dep" .
copyDeps "$dep"
fi
fi
done
}
copyDeps libsimplex.dll
popd
${pkgs.tree}/bin/tree $out/_pkg
(cd $out/_pkg; ${pkgs.zip}/bin/zip -r -9 $out/pkg-${pkgs.pkgsCross.mingwW64.hostPlatform.system}-libsimplex.zip *)
rm -fR $out/_pkg
mkdir -p $out/nix-support
echo "file binary-dist \"$(echo $out/*.zip)\"" \
> $out/nix-support/hydra-build-products
'';
});
"${pkgs.pkgsCross.musl32.hostPlatform.system}-static:exe:simplex-chat" = (drv pkgs.pkgsCross.musl32).simplex-chat.components.exes.simplex-chat;
# "${pkgs.pkgsCross.muslpi.hostPlatform.system}-static:exe:simplex-chat" = (drv pkgs.pkgsCross.muslpi).simplex-chat.components.exes.simplex-chat;
# STATIC aarch64-linux
"${pkgs.pkgsCross.aarch64-multiplatform-musl.hostPlatform.system}-static:exe:simplex-chat" = (drv pkgs.pkgsCross.aarch64-multiplatform-musl).simplex-chat.components.exes.simplex-chat;
"armv7a-android:lib:support" = (drv android32Pkgs).android-support.components.library.override (p: {
smallAddressSpace = true;
# we won't want -dyamic (see aarch64-android:lib:simplex-chat)
enableShared = false;
# we also do not want to have any dependencies listed (especially no rts!)
enableStatic = false;
# This used to work with 8.10.7...
# setupBuildFlags = p.component.setupBuildFlags ++ map (x: "--ghc-option=${x}") [ "-shared" "-o" "libsupport.so" ];
# ... but now with 9.6+
# we have to do the -shared thing by hand.
postBuild = ''
armv7a-unknown-linux-androideabi-ghc -shared -o libsupport.so \
-optl-Wl,-u,setLineBuffering \
-optl-Wl,-u,pipe_std_to_socket \
dist/build/*.a
'';
"armv7a-android:lib:support" = (drv android32Pkgs).android-support.components.library.override {
smallAddressSpace = true; enableShared = false;
setupBuildFlags = map (x: "--ghc-option=${x}") [ "-shared" "-o" "libsupport.so" ];
postInstall = ''
mkdir -p $out/_pkg
@@ -293,29 +138,14 @@
echo "file binary-dist \"$(echo $out/*.zip)\"" \
> $out/nix-support/hydra-build-products
'';
});
# The android-support package is at
# https://github.com/simplex-chat/android-support
"aarch64-android:lib:support" = (drv androidPkgs).android-support.components.library.override (p: {
smallAddressSpace = true;
# no -dynamic
enableShared = false;
# but also no -staticlib
enableStatic = false;
# we have to do the -shared thing by hand.
postBuild = ''
aarch64-unknown-linux-android-ghc -shared -o libsupport.so \
-optl-Wl,-u,setLineBuffering \
-optl-Wl,-u,pipe_std_to_socket \
dist/build/*.a
'';
};
"aarch64-android:lib:support" = (drv androidPkgs).android-support.components.library.override {
smallAddressSpace = true; enableShared = false;
setupBuildFlags = map (x: "--ghc-option=${x}") [ "-shared" "-o" "libsupport.so" ];
postInstall = ''
mkdir -p $out/_pkg
cp libsupport.so $out/_pkg
ls -lah $out/_pkg/*
${pkgs.patchelf}/bin/patchelf --remove-needed libunwind.so.1 $out/_pkg/libsupport.so
(cd $out/_pkg; ${pkgs.zip}/bin/zip -r -9 $out/pkg-aarch64-android-libsupport.zip *)
rm -fR $out/_pkg
@@ -324,11 +154,10 @@
echo "file binary-dist \"$(echo $out/*.zip)\"" \
> $out/nix-support/hydra-build-products
'';
});
};
"armv7a-android:lib:simplex-chat" = (drv' {
pkgs' = android32Pkgs;
extra-modules = [{
packages.text.flags.simdutf = false;
packages.direct-sqlcipher.flags.openssl = true;
packages.direct-sqlcipher.components.library.libs = pkgs.lib.mkForce [
(android32Pkgs.openssl.override { static = true; enableKTLS = false; })
@@ -340,56 +169,13 @@
packages.simplexmq.components.library.libs = pkgs.lib.mkForce [
(android32Pkgs.openssl.override { static = true; enableKTLS = false; })
];
# 32 bit patches
packages.basement.patches = [
./scripts/nix/basement-pr-573.patch
];
packages.memory.patches = [
./scripts/nix/memory-pr-99.patch
];
}];
}).simplex-chat.components.library.override (p: {
smallAddressSpace = true;
# we want -shared, but not -dyanmic, hence `enableShared = false`.
enableShared = false;
# we _do_ want rts, and other libs. Hence `enableStatic = true`.
enableStatic = true;
}).simplex-chat.components.library.override {
smallAddressSpace = true; enableShared = false;
# for android we build a shared library, passing these arguments is a bit tricky, as
# we want only the threaded rts (HSrts_thr) and ffi to be linked, but not fed into iserv for
# template haskell cross compilation. Thus we just pass them as linker options (-optl).
setupBuildFlags = p.component.setupBuildFlags
# flags to tell GHC we want to produce a -shared object, and we want to also link
# - the ffi library (ffi)
++ map (x: "--ghc-option=${x}") [
"-shared" "-o" "libsimplex.so"
"-threaded"
# "-debug"
"-optl-lffi"
]
# This is fairly idiotic. LLD will strip out foreign exported
# symbols (a GHC bug? Codegen bug?). So we need to pass `-u <sym>`
# to ensure they stay in the produced library. Having them
# _undefined_ and _lazy_ (lld will tell with -y <sym> that the
# symbol is lazy), makes them _defined_. m(
++ map (sym: "--ghc-option=-optl-Wl,-u,${sym}") [
"chat_close_store"
"chat_decrypt_file"
"chat_decrypt_media"
"chat_encrypt_file"
"chat_encrypt_media"
"chat_migrate_init"
"chat_parse_markdown"
"chat_parse_server"
"chat_password_hash"
"chat_read_file"
"chat_recv_msg"
"chat_recv_msg_wait"
"chat_send_cmd"
"chat_send_remote_cmd"
"chat_valid_name"
"chat_json_length"
"chat_write_file"
];
setupBuildFlags = map (x: "--ghc-option=${x}") [ "-shared" "-o" "libsimplex.so" "-optl-lHSrts_thr" "-optl-lffi"];
postInstall = ''
set -x
${pkgs.tree}/bin/tree $out
@@ -433,11 +219,10 @@
echo "file binary-dist \"$(echo $out/*.zip)\"" \
> $out/nix-support/hydra-build-products
'';
});
};
"aarch64-android:lib:simplex-chat" = (drv' {
pkgs' = androidPkgs;
extra-modules = [{
packages.text.flags.simdutf = false;
packages.direct-sqlcipher.flags.openssl = true;
packages.direct-sqlcipher.components.library.libs = pkgs.lib.mkForce [
(androidPkgs.openssl.override { static = true; })
@@ -450,50 +235,12 @@
(androidPkgs.openssl.override { static = true; })
];
}];
}).simplex-chat.components.library.override (p: {
smallAddressSpace = true;
# we do not want a dynamically linked object, even though we _do_
# want to produce a _shared_ object. But `shared` implied -dyanmic
# with cabal, so we disable and pass `-shared` explicitly.
enableShared = false;
# we do want static (e.g. pass all dependencies in, so we get -staticlib)
enableStatic = true;
}).simplex-chat.components.library.override {
smallAddressSpace = true; enableShared = false;
# for android we build a shared library, passing these arguments is a bit tricky, as
# we want only the threaded rts (HSrts_thr) and ffi to be linked, but not fed into iserv for
# template haskell cross compilation. Thus we just pass them as linker options (-optl).
setupBuildFlags = p.component.setupBuildFlags
# flags to tell GHC we want to produce a -shared object, and we want to also link
# - the ffi library (ffi)
++ map (x: "--ghc-option=${x}") [
"-shared" "-o" "libsimplex.so"
"-threaded"
# "-debug"
"-optl-lffi"
]
# This is fairly idiotic. LLD will strip out foreign exported
# symbols (a GHC bug? Codegen bug?). So we need to pass `-u <sym>`
# to ensure they stay in the produced library. Having them
# _undefined_ and _lazy_ (lld will tell with -y <sym> that the
# symbol is lazy), makes them _defined_. m(
++ map (sym: "--ghc-option=-optl-Wl,-u,${sym}") [
"chat_close_store"
"chat_decrypt_file"
"chat_decrypt_media"
"chat_encrypt_file"
"chat_encrypt_media"
"chat_migrate_init"
"chat_parse_markdown"
"chat_parse_server"
"chat_password_hash"
"chat_read_file"
"chat_recv_msg"
"chat_recv_msg_wait"
"chat_send_cmd"
"chat_send_remote_cmd"
"chat_valid_name"
"chat_json_length"
"chat_write_file"
];
setupBuildFlags = map (x: "--ghc-option=${x}") [ "-shared" "-o" "libsimplex.so" "-optl-lHSrts_thr" "-optl-lffi"];
postInstall = ''
set -x
${pkgs.tree}/bin/tree $out
@@ -537,7 +284,7 @@
echo "file binary-dist \"$(echo $out/*.zip)\"" \
> $out/nix-support/hydra-build-products
'';
});
};
};
# builds for iOS and iOS simulator
@@ -552,8 +299,7 @@
packages.entropy.flags.DoNotGetEntropy = true;
packages.simplexmq.flags.client_library = true;
packages.simplexmq.components.library.libs = pkgs.lib.mkForce [
# TODO: have a cross override for iOS, that sets this.
((pkgs.openssl.override { static = true; }).overrideDerivation (old: { CFLAGS = "-mcpu=apple-a7 -march=armv8-a+norcpc" ;}))
(pkgs.openssl.override { static = true; })
];
}];
}).simplex-chat.components.library.override (
@@ -12,60 +12,26 @@ body {
object-fit: cover;
}
@media (orientation: portrait) {
#remote-video-stream.collapsed {
position: absolute;
width: 30%;
max-width: 30%;
height: 39.9vw;
object-fit: cover;
margin: 16px;
border-radius: 16px;
bottom: 80px;
right: 0;
}
#remote-video-stream.collapsed {
position: absolute;
max-width: 30%;
max-height: 30%;
object-fit: cover;
margin: 16px;
border-radius: 16px;
bottom: 80px;
right: 0;
}
@media (orientation: landscape) {
#remote-video-stream.collapsed {
position: absolute;
width: 20%;
max-width: 20%;
height: 15.03vw;
object-fit: cover;
margin: 16px;
border-radius: 16px;
bottom: 80px;
right: 0;
}
}
@media (orientation: portrait) {
#remote-video-stream.collapsed-pip {
position: absolute;
width: 50%;
max-width: 50%;
height: 66.5vw;
object-fit: cover;
margin: 8px;
border-radius: 8px;
bottom: 0;
right: 0;
}
}
@media (orientation: landscape) {
#remote-video-stream.collapsed-pip {
position: absolute;
width: 50%;
max-width: 50%;
height: 37.59vw;
object-fit: cover;
margin: 8px;
border-radius: 8px;
bottom: 0;
right: 0;
}
#remote-video-stream.collapsed-pip {
position: absolute;
max-width: 50%;
max-height: 50%;
object-fit: cover;
margin: 8px;
border-radius: 8px;
bottom: 0;
right: 0;
}
#remote-screen-video-stream.inline {
@@ -75,32 +41,15 @@ body {
object-fit: cover;
}
@media (orientation: portrait) {
#local-video-stream.inline {
position: absolute;
width: 30%;
max-width: 30%;
height: 39.9vw;
object-fit: cover;
margin: 16px;
border-radius: 16px;
top: 0;
right: 0;
}
}
@media (orientation: landscape) {
#local-video-stream.inline {
position: absolute;
width: 20%;
max-width: 20%;
height: 15.03vw;
object-fit: cover;
margin: 16px;
border-radius: 16px;
top: 0;
right: 0;
}
#local-video-stream.inline {
position: absolute;
width: 30%;
max-width: 30%;
object-fit: cover;
margin: 16px;
border-radius: 16px;
top: 0;
right: 0;
}
#local-screen-video-stream.inline {
+13 -20
View File
@@ -593,7 +593,6 @@ const processCommand = (function () {
)
const videos = getVideoElements()
if (videos) {
setupLocalVideoRatio(videos.local)
videos.local.srcObject = localStream
videos.local.play().catch((e) => console.log(e))
}
@@ -622,12 +621,9 @@ const processCommand = (function () {
console.log("starting incoming call - create webrtc session")
if (activeCall) endCall()
// It can be already defined on Android when switching calls (if the previous call was outgoing)
notConnectedCall = undefined
inactiveCallMediaSources.mic = true
inactiveCallMediaSources.camera = command.media == CallMediaType.Video
inactiveCallMediaSourcesChanged(inactiveCallMediaSources)
setupLocalVideoRatio(getVideoElements()!.local)
const {media, iceServers, relay} = command
const encryption = supportsInsertableStreams(useWorker)
@@ -831,12 +827,12 @@ const processCommand = (function () {
}
function endCall() {
shutdownCameraAndMic()
try {
activeCall?.connection?.close()
} catch (e) {
console.log(e)
}
shutdownCameraAndMic()
activeCall = undefined
resetVideoElements()
}
@@ -929,21 +925,28 @@ const processCommand = (function () {
}
// Without doing it manually Firefox shows black screen but video can be played in Picture-in-Picture
videos.local.play().catch((e) => console.log(e))
setupLocalVideoRatio(videos.local)
}
function setupLocalVideoRatio(local: HTMLVideoElement) {
const ratio = isDesktop ? 1.33 : 1 / 1.33
const currentRect = local.getBoundingClientRect()
// better to get percents from here than to hardcode values from styles (the styles can be changed)
const screenWidth = currentRect.left + currentRect.width
const percents = currentRect.width / screenWidth
local.style.width = `${percents * 100}%`
local.style.height = `${(percents / ratio) * 100}vw`
local.addEventListener("loadedmetadata", function () {
console.log("Local video videoWidth: " + local.videoWidth + "px, videoHeight: " + local.videoHeight + "px")
if (local.videoWidth == 0 || local.videoHeight == 0) return
const ratio = local.videoWidth > local.videoHeight ? 0.2 : 0.3
local.style.height = `${(ratio / (local.videoWidth / local.videoHeight)) * 100}vw`
local.style.height = `${(percents / (local.videoWidth / local.videoHeight)) * 100}vw`
})
local.onresize = function () {
console.log("Local video size changed to " + local.videoWidth + "x" + local.videoHeight)
if (local.videoWidth == 0 || local.videoHeight == 0) return
const ratio = local.videoWidth > local.videoHeight ? 0.2 : 0.3
local.style.height = `${(ratio / (local.videoWidth / local.videoHeight)) * 100}vw`
local.style.height = `${(percents / (local.videoWidth / local.videoHeight)) * 100}vw`
}
}
@@ -1438,9 +1441,8 @@ const processCommand = (function () {
}
function shutdownCameraAndMic() {
if (activeCall) {
if (activeCall?.localStream) {
activeCall.localStream.getTracks().forEach((track) => track.stop())
activeCall.localScreenStream.getTracks().forEach((track) => track.stop())
}
}
@@ -1612,9 +1614,6 @@ function changeLayout(layout: LayoutType) {
break
}
videos.localScreen.style.visibility = localSources.screenVideo ? "visible" : "hidden"
if (!isDesktop && !localSources.camera) {
resetLocalVideoElementHeight(videos.local)
}
}
function getVideoElements(): VideoElements | undefined {
@@ -1638,12 +1637,6 @@ function getVideoElements(): VideoElements | undefined {
return {local, localScreen, remote, remoteScreen}
}
// Allow CSS to figure out the size of view by itself on Android because rotating to different orientation
// without dropping override will cause the view to have not normal proportion while no video is present
function resetLocalVideoElementHeight(local: HTMLVideoElement) {
local.style.height = ""
}
function desktopShowPermissionsAlert(mediaType: CallMediaType) {
if (!isDesktop) return
@@ -15,9 +15,8 @@ body {
#remote-video-stream.collapsed {
position: absolute;
width: 20%;
max-width: 20%;
height: 15.03vw;
max-height: 20%;
object-fit: cover;
margin: 16px;
border-radius: 16px;
@@ -48,7 +47,6 @@ body {
position: absolute;
width: 20%;
max-width: 20%;
height: 15.03vw;
object-fit: cover;
margin: 16px;
border-radius: 16px;
-10
View File
@@ -1,10 +0,0 @@
#!/bin/bash
security create-keychain -p "" simplex.keychain
security set-keychain-settings -u simplex.keychain
security add-certificates -k simplex.keychain "Developer ID Application: SimpleX Chat Ltd (5NN7GUYB6T).cer"
security add-certificates -k simplex.keychain "Developer ID Certification Authority.cer"
# Private key with access from any app
security import "SimpleX Chat.p12" -P "" -k simplex.keychain -A
# Public key
security import "SimpleX Chat.pem" -k simplex.keychain
@@ -2,7 +2,7 @@
set -e
trap "rm apps/multiplatform/local.properties 2> /dev/null || true; rm local.properties 2> /dev/null || true; rm /tmp/simplex.keychain" EXIT
trap "rm apps/multiplatform/local.properties || true; rm local.properties || true; rm /tmp/simplex.keychain || true" EXIT
echo "desktop.mac.signing.identity=Developer ID Application: SimpleX Chat Ltd (5NN7GUYB6T)" >> apps/multiplatform/local.properties
echo "desktop.mac.signing.keychain=/tmp/simplex.keychain" >> apps/multiplatform/local.properties
echo "desktop.mac.notarization.apple_id=$APPLE_SIMPLEX_NOTARIZATION_APPLE_ID" >> apps/multiplatform/local.properties
@@ -10,10 +10,6 @@ echo "desktop.mac.notarization.password=$APPLE_SIMPLEX_NOTARIZATION_PASSWORD" >>
echo "desktop.mac.notarization.team_id=5NN7GUYB6T" >> apps/multiplatform/local.properties
echo "$APPLE_SIMPLEX_SIGNING_KEYCHAIN" | base64 --decode -o /tmp/simplex.keychain
security unlock-keychain -p "" /tmp/simplex.keychain
# Adding keychain to the list of keychains.
# Otherwise, it can find cert but exits while signing with "error: The specified item could not be found in the keychain."
security list-keychains -s `security list-keychains | xargs` /tmp/simplex.keychain
scripts/desktop/build-lib-mac.sh
cd apps/multiplatform
./gradlew packageDmg
+2 -2
View File
@@ -8,7 +8,7 @@ function readlink() {
OS=linux
ARCH=${1:-`uname -a | rev | cut -d' ' -f2 | rev`}
GHC_VERSION=9.6.3
GHC_VERSION=8.10.7
if [ "$ARCH" == "aarch64" ]; then
COMPOSE_ARCH=arm64
@@ -25,7 +25,7 @@ for elem in "${exports[@]}"; do count=$(grep -R "$elem$" libsimplex.dll.def | wc
for elem in "${exports[@]}"; do count=$(grep -R "\"$elem\"" flake.nix | wc -l); if [ $count -ne 2 ]; then echo Wrong exports in flake.nix. Add \"$elem\" in two places of the file; exit 1; fi ; done
rm -rf $BUILD_DIR
cabal build lib:simplex-chat --ghc-options='-optl-Wl,-rpath,$ORIGIN -flink-rts -threaded' --constraint 'simplexmq +client_library'
cabal build lib:simplex-chat --ghc-options='-optl-Wl,-rpath,$ORIGIN' --ghc-options="-optl-L$(ghc --print-libdir)/rts -optl-Wl,--as-needed,-lHSrts_thr-ghc$GHC_VERSION" --constraint 'simplexmq +client_library'
cd $BUILD_DIR/build
#patchelf --add-needed libHSrts_thr-ghc${GHC_VERSION}.so libHSsimplex-chat-*-inplace-ghc${GHC_VERSION}.so
#patchelf --add-rpath '$ORIGIN' libHSsimplex-chat-*-inplace-ghc${GHC_VERSION}.so
+3 -19
View File
@@ -5,14 +5,13 @@ set -e
OS=mac
ARCH="${1:-`uname -a | rev | cut -d' ' -f1 | rev`}"
COMPOSE_ARCH=$ARCH
GHC_VERSION=9.6.3
GHC_VERSION=8.10.7
if [ "$ARCH" == "arm64" ]; then
ARCH=aarch64
else
COMPOSE_ARCH=x64
fi
LIB_EXT=dylib
LIB=libHSsimplex-chat-*-inplace-ghc*.$LIB_EXT
GHC_LIBS_DIR=$(ghc --print-libdir)
@@ -24,26 +23,13 @@ for elem in "${exports[@]}"; do count=$(grep -R "$elem$" libsimplex.dll.def | wc
for elem in "${exports[@]}"; do count=$(grep -R "\"$elem\"" flake.nix | wc -l); if [ $count -ne 2 ]; then echo Wrong exports in flake.nix. Add \"$elem\" in two places of the file; exit 1; fi ; done
rm -rf $BUILD_DIR
cabal build lib:simplex-chat lib:simplex-chat --ghc-options="-optl-Wl,-rpath,@loader_path -optl-Wl,-L$GHC_LIBS_DIR/$ARCH-osx-ghc-$GHC_VERSION -optl-lHSrts_thr-ghc$GHC_VERSION -optl-lffi" --constraint 'simplexmq +client_library'
cabal build lib:simplex-chat lib:simplex-chat --ghc-options="-optl-Wl,-rpath,@loader_path -optl-Wl,-L$GHC_LIBS_DIR/rts -optl-lHSrts_thr-ghc8.10.7 -optl-lffi" --constraint 'simplexmq +client_library'
cd $BUILD_DIR/build
mkdir deps 2> /dev/null || true
# It's not included by default for some reason. Compiled lib tries to find system one but it's not always available
#cp $GHC_LIBS_DIR/libffi.dylib ./deps
(
BUILD=$PWD
cp /tmp/libffi-3.4.4/*-apple-darwin*/.libs/libffi.dylib $BUILD/deps || \
( \
cd /tmp && \
curl --tlsv1.2 "https://gitlab.haskell.org/ghc/libffi-tarballs/-/raw/libffi-3.4.4/libffi-3.4.4.tar.gz?inline=false" -o libffi.tar.gz && \
tar -xzvf libffi.tar.gz && \
cd "libffi-3.4.4" && \
./configure && \
make && \
cp *-apple-darwin*/.libs/libffi.dylib $BUILD/deps \
)
)
cp $GHC_LIBS_DIR/rts/libffi.dylib ./deps
DYLIBS=`otool -L $LIB | grep @rpath | tail -n +2 | cut -d' ' -f 1 | cut -d'/' -f2`
RPATHS=`otool -l $LIB | grep "path "| cut -d' ' -f11`
@@ -84,8 +70,6 @@ function copy_deps() {
}
copy_deps $LIB
# Special case
cp $(ghc --print-libdir)/$ARCH-osx-ghc-$GHC_VERSION/libHSghc-boot-th-$GHC_VERSION-ghc$GHC_VERSION.dylib deps
rm deps/`basename $LIB`
cd -
+4 -4
View File
@@ -40,10 +40,10 @@ if [ ! -f ../appimagetool-x86_64.AppImage ]; then
wget --secure-protocol=TLSv1_3 https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage -O ../appimagetool-x86_64.AppImage
chmod +x ../appimagetool-x86_64.AppImage
fi
if [ ! -f ../runtime-x86_64 ]; then
wget --secure-protocol=TLSv1_3 https://github.com/AppImage/type2-runtime/releases/download/continuous/runtime-x86_64 -O ../runtime-x86_64
chmod +x ../runtime-x86_64
if [ ! -f ../runtime-fuse3-x86_64 ]; then
wget --secure-protocol=TLSv1_3 https://github.com/AppImage/type2-runtime/releases/download/old/runtime-fuse3-x86_64 -O ../runtime-fuse3-x86_64
chmod +x ../runtime-fuse3-x86_64
fi
../appimagetool-x86_64.AppImage --runtime-file ../runtime-x86_64 .
../appimagetool-x86_64.AppImage --runtime-file ../runtime-fuse3-x86_64 .
mv *imple*.AppImage ../../
@@ -38,17 +38,6 @@
</description>
<releases>
<release version="6.2.0" date="2024-12-08">
<url type="details">https://simplex.chat/blog/20241210-simplex-network-v6-2-servers-by-flux-business-chats.html</url>
<description>
<p>New in v6.2:</p>
<ul>
<li>SimpleX Chat and Flux made an agreement to include servers operated by Flux into the app to improve metadata privacy.</li>
<li>Business chats your customers privacy.</li>
<li>Improved user experience in chats: open on the first unread, jump to quoted messages, see who reacted.</li>
</ul>
</description>
</release>
<release version="6.1.1" date="2024-10-18">
<url type="details">https://simplex.chat/blog/20241014-simplex-network-v6-1-security-review-better-calls-user-experience.html</url>
<description>
-242
View File
@@ -1,242 +0,0 @@
From 38be2c93acb6f459d24ed6c626981c35ccf44095 Mon Sep 17 00:00:00 2001
From: Sylvain Henry <sylvain@haskus.fr>
Date: Thu, 16 Feb 2023 15:40:45 +0100
Subject: [PATCH] Fix build on 32-bit architectures
---
Basement/Bits.hs | 4 ++++
Basement/From.hs | 24 -----------------------
Basement/Numerical/Additive.hs | 4 ++++
Basement/Numerical/Conversion.hs | 20 +++++++++++++++++++
Basement/PrimType.hs | 6 +++++-
Basement/Types/OffsetSize.hs | 22 +++++++++++++++++++--
6 files changed, 53 insertions(+), 27 deletions(-)
diff --git a/Basement/Bits.hs b/Basement/Bits.hs
index 7eeea0f5..24520ed7 100644
--- a/Basement/Bits.hs
+++ b/Basement/Bits.hs
@@ -54,8 +54,12 @@ import GHC.Int
import Basement.Compat.Primitive
#if WORD_SIZE_IN_BITS < 64
+#if __GLASGOW_HASKELL__ >= 904
+import GHC.Exts
+#else
import GHC.IntWord64
#endif
+#endif
-- | operation over finite bits
class FiniteBitsOps bits where
diff --git a/Basement/From.hs b/Basement/From.hs
index 7bbe141c..80014b3e 100644
--- a/Basement/From.hs
+++ b/Basement/From.hs
@@ -272,23 +272,11 @@ instance (NatWithinBound (CountOf ty) n, KnownNat n, PrimType ty)
tryFrom = BlockN.toBlockN . UArray.toBlock . BoxArray.mapToUnboxed id
instance (KnownNat n, NatWithinBound Word8 n) => From (Zn64 n) Word8 where
-#if __GLASGOW_HASKELL__ >= 904
- from = narrow . unZn64 where narrow (W64# w) = W8# (wordToWord8# (word64ToWord# (GHC.Prim.word64ToWord# w)))
-#else
from = narrow . unZn64 where narrow (W64# w) = W8# (wordToWord8# (word64ToWord# w))
-#endif
instance (KnownNat n, NatWithinBound Word16 n) => From (Zn64 n) Word16 where
-#if __GLASGOW_HASKELL__ >= 904
- from = narrow . unZn64 where narrow (W64# w) = W16# (wordToWord16# (word64ToWord# (GHC.Prim.word64ToWord# w)))
-#else
from = narrow . unZn64 where narrow (W64# w) = W16# (wordToWord16# (word64ToWord# w))
-#endif
instance (KnownNat n, NatWithinBound Word32 n) => From (Zn64 n) Word32 where
-#if __GLASGOW_HASKELL__ >= 904
- from = narrow . unZn64 where narrow (W64# w) = W32# (wordToWord32# (word64ToWord# (GHC.Prim.word64ToWord# w)))
-#else
from = narrow . unZn64 where narrow (W64# w) = W32# (wordToWord32# (word64ToWord# w))
-#endif
instance From (Zn64 n) Word64 where
from = unZn64
instance From (Zn64 n) Word128 where
@@ -297,23 +285,11 @@ instance From (Zn64 n) Word256 where
from = from . unZn64
instance (KnownNat n, NatWithinBound Word8 n) => From (Zn n) Word8 where
-#if __GLASGOW_HASKELL__ >= 904
- from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W8# (wordToWord8# (word64ToWord# (GHC.Prim.word64ToWord# w)))
-#else
from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W8# (wordToWord8# (word64ToWord# w))
-#endif
instance (KnownNat n, NatWithinBound Word16 n) => From (Zn n) Word16 where
-#if __GLASGOW_HASKELL__ >= 904
- from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W16# (wordToWord16# (word64ToWord# (GHC.Prim.word64ToWord# w)))
-#else
from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W16# (wordToWord16# (word64ToWord# w))
-#endif
instance (KnownNat n, NatWithinBound Word32 n) => From (Zn n) Word32 where
-#if __GLASGOW_HASKELL__ >= 904
- from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W32# (wordToWord32# (word64ToWord# (GHC.Prim.word64ToWord# w)))
-#else
from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W32# (wordToWord32# (word64ToWord# w))
-#endif
instance (KnownNat n, NatWithinBound Word64 n) => From (Zn n) Word64 where
from = naturalToWord64 . unZn
instance (KnownNat n, NatWithinBound Word128 n) => From (Zn n) Word128 where
diff --git a/Basement/Numerical/Additive.hs b/Basement/Numerical/Additive.hs
index d0dfb973..8ab65aa0 100644
--- a/Basement/Numerical/Additive.hs
+++ b/Basement/Numerical/Additive.hs
@@ -30,8 +30,12 @@ import qualified Basement.Types.Word128 as Word128
import qualified Basement.Types.Word256 as Word256
#if WORD_SIZE_IN_BITS < 64
+#if __GLASGOW_HASKELL__ >= 904
+import GHC.Exts
+#else
import GHC.IntWord64
#endif
+#endif
-- | Represent class of things that can be added together,
-- contains a neutral element and is commutative.
diff --git a/Basement/Numerical/Conversion.hs b/Basement/Numerical/Conversion.hs
index db502c07..fddc8232 100644
--- a/Basement/Numerical/Conversion.hs
+++ b/Basement/Numerical/Conversion.hs
@@ -26,8 +26,12 @@ import GHC.Word
import Basement.Compat.Primitive
#if WORD_SIZE_IN_BITS < 64
+#if __GLASGOW_HASKELL__ >= 904
+import GHC.Exts
+#else
import GHC.IntWord64
#endif
+#endif
intToInt64 :: Int -> Int64
#if WORD_SIZE_IN_BITS == 64
@@ -96,11 +100,22 @@ int64ToWord64 (I64# i) = W64# (int64ToWord64# i)
#endif
#if WORD_SIZE_IN_BITS == 64
+#if __GLASGOW_HASKELL__ >= 904
+word64ToWord# :: Word64# -> Word#
+word64ToWord# i = word64ToWord# i
+#else
word64ToWord# :: Word# -> Word#
word64ToWord# i = i
+#endif
{-# INLINE word64ToWord# #-}
#endif
+#if WORD_SIZE_IN_BITS < 64
+word64ToWord32# :: Word64# -> Word32#
+word64ToWord32# i = wordToWord32# (word64ToWord# i)
+{-# INLINE word64ToWord32# #-}
+#endif
+
-- | 2 Word32s
data Word32x2 = Word32x2 {-# UNPACK #-} !Word32
{-# UNPACK #-} !Word32
@@ -113,9 +128,14 @@ word64ToWord32s (W64# w64) = Word32x2 (W32# (wordToWord32# (uncheckedShiftRL# (G
word64ToWord32s (W64# w64) = Word32x2 (W32# (wordToWord32# (uncheckedShiftRL# w64 32#))) (W32# (wordToWord32# w64))
#endif
#else
+#if __GLASGOW_HASKELL__ >= 904
+word64ToWord32s :: Word64 -> Word32x2
+word64ToWord32s (W64# w64) = Word32x2 (W32# (word64ToWord32# (uncheckedShiftRL64# w64 32#))) (W32# (word64ToWord32# w64))
+#else
word64ToWord32s :: Word64 -> Word32x2
word64ToWord32s (W64# w64) = Word32x2 (W32# (word64ToWord# (uncheckedShiftRL64# w64 32#))) (W32# (word64ToWord# w64))
#endif
+#endif
wordToChar :: Word -> Char
wordToChar (W# word) = C# (chr# (word2Int# word))
diff --git a/Basement/PrimType.hs b/Basement/PrimType.hs
index f8ca2926..a888ec91 100644
--- a/Basement/PrimType.hs
+++ b/Basement/PrimType.hs
@@ -54,7 +54,11 @@ import Basement.Nat
import qualified Prelude (quot)
#if WORD_SIZE_IN_BITS < 64
-import GHC.IntWord64
+#if __GLASGOW_HASKELL__ >= 904
+import GHC.Exts
+#else
+import GHC.IntWord64
+#endif
#endif
#ifdef FOUNDATION_BOUNDS_CHECK
diff --git a/Basement/Types/OffsetSize.hs b/Basement/Types/OffsetSize.hs
index cd944927..1ea80dad 100644
--- a/Basement/Types/OffsetSize.hs
+++ b/Basement/Types/OffsetSize.hs
@@ -70,8 +70,12 @@ import Data.List (foldl')
import qualified Prelude
#if WORD_SIZE_IN_BITS < 64
+#if __GLASGOW_HASKELL__ >= 904
+import GHC.Exts
+#else
import GHC.IntWord64
#endif
+#endif
-- | File size in bytes
newtype FileSize = FileSize Word64
@@ -225,20 +229,26 @@ countOfRoundUp alignment (CountOf n) = CountOf ((n + (alignment-1)) .&. compleme
csizeOfSize :: CountOf Word8 -> CSize
#if WORD_SIZE_IN_BITS < 64
+#if __GLASGOW_HASKELL__ >= 904
+csizeOfSize (CountOf (I# sz)) = CSize (W32# (wordToWord32# (int2Word# sz)))
+#else
csizeOfSize (CountOf (I# sz)) = CSize (W32# (int2Word# sz))
+#endif
#else
#if __GLASGOW_HASKELL__ >= 904
csizeOfSize (CountOf (I# sz)) = CSize (W64# (wordToWord64# (int2Word# sz)))
-
#else
csizeOfSize (CountOf (I# sz)) = CSize (W64# (int2Word# sz))
-
#endif
#endif
csizeOfOffset :: Offset8 -> CSize
#if WORD_SIZE_IN_BITS < 64
+#if __GLASGOW_HASKELL__ >= 904
+csizeOfOffset (Offset (I# sz)) = CSize (W32# (wordToWord32# (int2Word# sz)))
+#else
csizeOfOffset (Offset (I# sz)) = CSize (W32# (int2Word# sz))
+#endif
#else
#if __GLASGOW_HASKELL__ >= 904
csizeOfOffset (Offset (I# sz)) = CSize (W64# (wordToWord64# (int2Word# sz)))
@@ -250,7 +260,11 @@ csizeOfOffset (Offset (I# sz)) = CSize (W64# (int2Word# sz))
sizeOfCSSize :: CSsize -> CountOf Word8
sizeOfCSSize (CSsize (-1)) = error "invalid size: CSSize is -1"
#if WORD_SIZE_IN_BITS < 64
+#if __GLASGOW_HASKELL__ >= 904
+sizeOfCSSize (CSsize (I32# sz)) = CountOf (I# (int32ToInt# sz))
+#else
sizeOfCSSize (CSsize (I32# sz)) = CountOf (I# sz)
+#endif
#else
#if __GLASGOW_HASKELL__ >= 904
sizeOfCSSize (CSsize (I64# sz)) = CountOf (I# (int64ToInt# sz))
@@ -261,7 +275,11 @@ sizeOfCSSize (CSsize (I64# sz)) = CountOf (I# sz)
sizeOfCSize :: CSize -> CountOf Word8
#if WORD_SIZE_IN_BITS < 64
+#if __GLASGOW_HASKELL__ >= 904
+sizeOfCSize (CSize (W32# sz)) = CountOf (I# (word2Int# (word32ToWord# sz)))
+#else
sizeOfCSize (CSize (W32# sz)) = CountOf (I# (word2Int# sz))
+#endif
#else
#if __GLASGOW_HASKELL__ >= 904
sizeOfCSize (CSize (W64# sz)) = CountOf (I# (word2Int# (word64ToWord# sz)))
@@ -1,12 +0,0 @@
diff --git a/direct-sqlcipher.cabal b/direct-sqlcipher.cabal
index 728ba3e..c63745e 100644
--- a/direct-sqlcipher.cabal
+++ b/direct-sqlcipher.cabal
@@ -84,6 +84,8 @@ library
cc-options: -DSQLITE_TEMP_STORE=2
-DSQLITE_HAS_CODEC
+ extra-libraries: ws2_32
+
if !os(windows) && !os(android)
extra-libraries: pthread
-36
View File
@@ -1,36 +0,0 @@
From 2738929ce15b4c8704bbbac24a08539b5d4bf30e Mon Sep 17 00:00:00 2001
From: sternenseemann <sternenseemann@systemli.org>
Date: Mon, 14 Aug 2023 10:51:30 +0200
Subject: [PATCH] Data.Memory.Internal.CompatPrim64: fix 32 bit with GHC >= 9.4
Since 9.4, GHC.Prim exports Word64# operations like timesWord64# even on
i686 whereas GHC.IntWord64 no longer exists. Therefore, we can just use
the ready made solution.
Closes #98, as it should be the better solution.
---
Data/Memory/Internal/CompatPrim64.hs | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/Data/Memory/Internal/CompatPrim64.hs b/Data/Memory/Internal/CompatPrim64.hs
index b9eef8a..a134c88 100644
--- a/Data/Memory/Internal/CompatPrim64.hs
+++ b/Data/Memory/Internal/CompatPrim64.hs
@@ -150,6 +150,7 @@ w64# :: Word# -> Word# -> Word# -> Word64#
w64# w _ _ = w
#elif WORD_SIZE_IN_BITS == 32
+#if __GLASGOW_HASKELL__ < 904
import GHC.IntWord64
import GHC.Prim (Word#)
@@ -158,6 +159,9 @@ timesWord64# a b =
let !ai = word64ToInt64# a
!bi = word64ToInt64# b
in int64ToWord64# (timesInt64# ai bi)
+#else
+import GHC.Prim
+#endif
w64# :: Word# -> Word# -> Word# -> Word64#
w64# _ hw lw =
+1 -2
View File
@@ -255,6 +255,5 @@
"docs-dropdown-10": "الشفافية",
"docs-dropdown-11": "الأسئلة الأكثر شيوعًا",
"docs-dropdown-12": "الأمان",
"hero-overlay-card-3-p-3": "قامت Trail of Bits بمراجعة التصميم التعموي لبروتوكولات شبكة SimpleX في يوليو 2024. <a href=\"/blog/20241014-simplex-network-v6-1-security-review-better-calls-user-experience.html\">اقرأ المزيد</a>.",
"docs-dropdown-14": "SimpleX للأعمال التجارية"
"hero-overlay-card-3-p-3": "قامت Trail of Bits بمراجعة التصميم التعموي لبروتوكولات شبكة SimpleX في يوليو 2024. <a href=\"/blog/20241014-simplex-network-v6-1-security-review-better-calls-user-experience.html\">اقرأ المزيد</a>."
}
+1 -2
View File
@@ -255,6 +255,5 @@
"docs-dropdown-10": "Transparent",
"docs-dropdown-11": "FAQ",
"docs-dropdown-12": "Sicherheit",
"hero-overlay-card-3-p-3": "Trail of Bits hat das kryptografische Design des Netzwerk-Protokolls von SimpleX im Juli 2024 überprüft. <a href=\"/blog/20241014-simplex-network-v6-1-security-review-better-calls-user-experience.html\">Hier finden Sie weitere Informationen dazu</a>.",
"docs-dropdown-14": "SimpleX für geschäftliche Anwendungen"
"hero-overlay-card-3-p-3": "Trail of Bits hat das kryptografische Design des Netzwerk-Protokolls von SimpleX im Juli 2024 überprüft. <a href=\"/blog/20241014-simplex-network-v6-1-security-review-better-calls-user-experience.html\">Hier finden Sie weitere Informationen dazu</a>."
}
+1 -2
View File
@@ -255,6 +255,5 @@
"docs-dropdown-11": "ПОШИРЕНІ ЗАПИТАННЯ",
"docs-dropdown-10": "Прозорість",
"docs-dropdown-12": "Безпека",
"hero-overlay-card-3-p-3": "Trail of Bits переглянув криптографічний дизайн мережевих протоколів SimpleX в липні 2024 року. <a href=\"/blog/20241014-simplex-network-v6-1-security-review-better-calls-user-experience.html\">Детальніше</a>.",
"docs-dropdown-14": "SimpleX для бізнесу"
"hero-overlay-card-3-p-3": "Trail of Bits переглянув криптографічний дизайн мережевих протоколів SimpleX в липні 2024 року. <a href=\"/blog/20241014-simplex-network-v6-1-security-review-better-calls-user-experience.html\">Детальніше</a>."
}
@@ -1,3 +1,5 @@
<p></p>
<ul>
<li><strong>Welcome, Flux</strong> &mdash; the new servers in <strong>v6.2-beta.1!</strong></li>
<li>What's the problem?</li>
@@ -1,8 +0,0 @@
<p><strong>v6.2 is released:</strong></p>
<ul>
<li>SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app to improve metadata privacy in SimpleX network.</li>
<li>Business chats for better privacy and support of your customers.</li>
<li>Better user experience: open on the first unread, jump to quoted messages, see who reacted.</li>
<li>Improving notifications in iOS app.</li>
</ul>