Compare commits

..

205 Commits

Author SHA1 Message Date
Evgeny Poberezkin f3e5ec8030 Merge branch 'stable' into stable-android 2024-12-13 09:37:44 +00:00
Evgeny Poberezkin 4d82afe602 6.2.1: ios 255, android 261, desktop 83 2024-12-12 21:00:16 +00:00
Diogo 591f74a8e3 android, desktop: show contact reactions (#5376)
* android, desktop: show contact reactions

* refactor

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-12-12 20:33:50 +00:00
Evgeny aede65db14 ios: show who reacted for contacts (#5375) 2024-12-12 18:57:40 +00:00
Stanislav Dmitrenko 0bf82c08a1 android, desktop: fix importing the same database after exporting it (#5372)
* android, desktop: fix importing the same database after exporting it

* delete archive after export or cancel

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-12-12 17:07:08 +00:00
Stanislav Dmitrenko ddef5a122c android, desktop: disable scroll to top of the message when chat bubble was clicked (#5365) 2024-12-12 16:25:51 +00:00
Stanislav Dmitrenko 0fdd2e04cc android, desktop: hide debug logs by default (#5362)
* android, desktop: hide debug logs by default

* string

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-12-12 16:14:55 +00:00
Stanislav Dmitrenko d1e66386f5 android: fix bottom bar positon in chat item info page (#5373)
* android: fix bottom bar positon in chat item info page

* change
2024-12-12 15:56:59 +00:00
spaced4ndy 708368c9c5 android, desktop: fix operators text (#5371) 2024-12-12 07:26:17 +00:00
Evgeny Poberezkin df21d11d33 Merge branch 'stable' into stable-android 2024-12-08 09:30:39 +00:00
Evgeny Poberezkin 1730c5136f Merge branch 'stable' into stable-android 2024-10-18 19:20:22 +01:00
Evgeny Poberezkin 06bb29e87d Merge branch 'stable' into stable-android 2024-10-12 12:33:16 +01:00
Evgeny Poberezkin 05cc300231 Merge tag 'v6.0.5' into stable-android 2024-10-09 08:28:29 +01:00
Evgeny Poberezkin cd65e4dbb9 Merge branch 'stable' into stable-android 2024-09-24 12:42:55 +01:00
Evgeny Poberezkin f5d5bd62ed Merge branch 'stable' into stable-android 2024-08-30 20:00:44 +01:00
Evgeny Poberezkin d2f9888195 Merge branch 'stable' into stable-android 2024-08-30 13:40:03 +01:00
Evgeny Poberezkin 5ec5826642 Merge branch 'stable' into stable-android 2024-08-24 16:49:03 +01:00
Evgeny Poberezkin 29155ab73a Merge branch 'stable' into stable-android 2024-08-24 15:10:05 +01:00
Evgeny Poberezkin 31782600cb Merge branch 'stable' into stable-android 2024-06-01 09:28:13 +01:00
Evgeny Poberezkin db392037ea Merge branch 'stable' into stable-android 2024-05-31 23:35:46 +01:00
Evgeny Poberezkin 6ad7189c53 Merge branch 'stable' into stable-android 2024-05-25 17:17:18 +01:00
Evgeny Poberezkin 15d8444c74 Merge branch 'stable' into stable-android 2024-05-25 11:19:14 +01:00
Evgeny Poberezkin 2d31b853ac Merge branch 'stable' into stable-android 2024-05-22 20:30:46 +01:00
Evgeny Poberezkin 3af0108b0d Merge branch 'stable' into stable-android 2024-04-13 11:59:14 +01:00
Evgeny Poberezkin 746dd33728 Merge branch 'stable' into stable-android 2024-03-22 21:21:10 +00:00
Evgeny Poberezkin 2fceecab37 Merge branch 'stable' into stable-android 2024-03-04 21:38:09 +00:00
Evgeny Poberezkin e094ec5cf5 Merge branch 'stable' into stable-android 2024-02-27 07:19:21 +00:00
Evgeny Poberezkin fbd6012611 Merge branch 'stable' into stable-android 2024-02-21 19:06:13 +00:00
Evgeny Poberezkin 913ce4ebfd Merge branch 'stable' into stable-android 2024-02-21 14:30:35 +00:00
Evgeny Poberezkin 1e01a961fe Merge branch 'stable' into stable-android 2024-02-21 08:43:40 +00:00
Evgeny Poberezkin 27f4a71146 Merge branch 'stable' into stable-android 2024-02-10 23:35:40 +00:00
Evgeny Poberezkin 282bca4d81 Merge branch 'stable' into stable-android 2024-02-03 18:45:28 +00:00
Evgeny Poberezkin e5011ad150 Merge branch 'stable' into stable-android 2024-01-31 09:47:35 +00:00
Evgeny Poberezkin 0d4d08e52b core: unify dependencies for GHC 8.10.7 and 9.6.3 (#3774) 2024-01-30 23:18:37 +00:00
Evgeny Poberezkin 7f8c7b2d99 fix merge 2024-01-24 22:46:56 +00:00
Evgeny Poberezkin f5b666ae6d Merge branch 'stable' into stable-android 2024-01-24 22:42:04 +00:00
Evgeny Poberezkin 1cfe51af45 Merge branch 'stable' into stable-android 2024-01-18 20:58:52 +00:00
Evgeny Poberezkin 68af58bda1 Merge branch 'stable' into stable-android 2024-01-10 12:17:06 +00:00
Evgeny Poberezkin f51796b81c Merge branch 'stable' into stable-android 2024-01-09 20:20:37 +00:00
Evgeny Poberezkin 995618cf1c Merge branch 'stable' into stable-android 2024-01-09 10:40:34 +00:00
Evgeny Poberezkin 68baa18af8 Merge branch 'stable' into stable-android 2024-01-06 11:48:49 +00:00
Evgeny Poberezkin a4f1c9c915 Merge branch 'stable' into stable-android 2023-12-30 10:21:07 +00:00
Evgeny Poberezkin b8141c3555 Merge branch 'master-android' into stable-android 2023-12-28 09:18:12 +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 545f110fb8 nix: fix direct-sqlcipher content hash 2023-12-13 20:29:36 +00:00
Evgeny Poberezkin 4c6387c854 nix: fix script 2023-12-13 20:28:32 +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 b3544cfbc3 Merge branch 'stable' into stable-android 2023-12-12 10:12:42 +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 bfa8717ed4 Merge branch 'master-android' into stable-android 2023-12-09 20:43:21 +00: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 8b3300e197 Merge branch 'master-android' into stable-android 2023-11-26 13:14:27 +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 c60af078d7 Merge branch 'stable' into stable-android 2023-10-09 19:55:51 +01: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 e4fbe66d95 Merge branch 'stable' into stable-android 2023-10-09 14:36:03 +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 cb52d75ff0 Merge branch 'stable' into stable-android 2023-10-08 17:31:23 +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
46 changed files with 935 additions and 1914 deletions
+5 -3
View File
@@ -102,7 +102,7 @@ jobs:
uses: actions/checkout@v3
- name: Setup Haskell
uses: haskell-actions/setup@v2
uses: haskell/actions/setup@v2
with:
ghc-version: ${{ matrix.ghc }}
cabal-version: "3.10.1.0"
@@ -230,7 +230,7 @@ jobs:
APPLE_SIMPLEX_NOTARIZATION_APPLE_ID: ${{ secrets.APPLE_SIMPLEX_NOTARIZATION_APPLE_ID }}
APPLE_SIMPLEX_NOTARIZATION_PASSWORD: ${{ secrets.APPLE_SIMPLEX_NOTARIZATION_PASSWORD }}
run: |
scripts/ci/build-desktop-mac.sh
scripts/build-desktop-mac.sh
path=$(echo $PWD/apps/multiplatform/release/main/dmg/SimpleX-*.dmg)
echo "package_path=$path" >> $GITHUB_OUTPUT
echo "package_hash=$(echo SHA2-512\(${{ matrix.desktop_asset_name }}\)= $(openssl sha512 $path | cut -d' ' -f 2))" >> $GITHUB_OUTPUT
@@ -310,7 +310,9 @@ jobs:
# Unix /
# / Windows
# rm -rf dist-newstyle/src/direct-sq* is here because of the bug in cabal's dependency which prevents second build from finishing
# * In powershell multiline commands do not fail if individual commands fail - https://github.community/t/multiline-commands-on-windows-do-not-fail-if-individual-commands-fail/16753
# * And GitHub Actions does not support parameterizing shell in a matrix job - https://github.community/t/using-matrix-to-specify-shell-is-it-possible/17065
- name: 'Setup MSYS2'
if: matrix.os == 'windows-latest'
+39 -21
View File
@@ -440,6 +440,7 @@ struct ChatView: View {
maxWidth: maxWidth,
composeState: $composeState,
selectedMember: $selectedMember,
showChatInfoSheet: $showChatInfoSheet,
revealedChatItem: $revealedChatItem,
selectedChatItems: $selectedChatItems,
forwardedChatItems: $forwardedChatItems
@@ -893,12 +894,14 @@ struct ChatView: View {
private struct ChatItemWithMenu: View {
@EnvironmentObject var m: ChatModel
@EnvironmentObject var theme: AppTheme
@AppStorage(DEFAULT_PROFILE_IMAGE_CORNER_RADIUS) private var profileRadius = defaultProfileImageCorner
@Binding @ObservedObject var chat: Chat
@ObservedObject var dummyModel: ChatItemDummyModel = .shared
let chatItem: ChatItem
let maxWidth: CGFloat
@Binding var composeState: ComposeState
@Binding var selectedMember: GMember?
@Binding var showChatInfoSheet: Bool
@Binding var revealedChatItem: ChatItem?
@State private var deletingItem: ChatItem? = nil
@@ -1255,16 +1258,22 @@ struct ChatView: View {
setReaction(ci, add: !r.userReacted, reaction: r.reaction)
}
}
if case let .group(groupInfo) = chat.chatInfo {
switch chat.chatInfo {
case let .group(groupInfo):
v.contextMenu {
ReactionContextMenu(
groupInfo: groupInfo,
itemId: ci.id,
reactionCount: r,
selectedMember: $selectedMember
selectedMember: $selectedMember,
profileRadius: profileRadius
)
}
} else {
case let .direct(contact):
v.contextMenu {
contactReactionMenu(contact, r)
}
default:
v
}
}
@@ -1767,6 +1776,20 @@ struct ChatView: View {
}
}
}
@ViewBuilder private func contactReactionMenu(_ contact: Contact, _ r: CIReactionCount) -> some View {
if !r.userReacted || r.totalReacted > 1 {
Button { showChatInfoSheet = true } label: {
profileMenuItem(Text(contact.displayName), contact.image, radius: profileRadius)
}
}
if r.userReacted {
Button {} label: {
profileMenuItem(Text("you"), m.currentUser?.profile.image, radius: profileRadius)
}
.disabled(true)
}
}
private struct SelectedChatItem: View {
@EnvironmentObject var theme: AppTheme
@@ -1859,13 +1882,12 @@ struct ReactionContextMenu: View {
var itemId: Int64
var reactionCount: CIReactionCount
@Binding var selectedMember: GMember?
var profileRadius: CGFloat
@State private var memberReactions: [MemberReaction] = []
@AppStorage(DEFAULT_PROFILE_IMAGE_CORNER_RADIUS) private var radius = defaultProfileImageCorner
var body: some View {
groupMemberReactionList()
.task {
logger.debug("ReactionContextMenu task \(radius)")
await loadChatItemReaction()
}
}
@@ -1889,27 +1911,12 @@ struct ReactionContextMenu: View {
selectedMember = member
}
} label: {
HStack {
Text(mem.displayName)
if let img = cropImage(mem.image) {
Image(uiImage: img)
} else {
Image(systemName: "person.crop.circle")
}
}
profileMenuItem(Text(mem.displayName), mem.image, radius: profileRadius)
}
.disabled(userMember)
}
}
}
private func cropImage(_ img: String?) -> UIImage? {
return if let originalImage = imageFromBase64(img) {
maskToCustomShape(originalImage, size: 30, radius: radius)
} else {
nil
}
}
private func loadChatItemReaction() async {
do {
@@ -1927,6 +1934,17 @@ struct ReactionContextMenu: View {
}
}
func profileMenuItem(_ nameText: Text, _ image: String?, radius: CGFloat) -> some View {
HStack {
nameText
if let image, let img = imageFromBase64(image) {
Image(uiImage: maskToCustomShape(img, size: 30, radius: radius))
} else {
Image(systemName: "person.crop.circle")
}
}
}
func maskToCustomShape(_ image: UIImage, size: CGFloat, radius: CGFloat) -> UIImage {
let path = Path { path in
if radius >= 50 {
@@ -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">
@@ -990,9 +990,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">
@@ -2837,9 +2837,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 +3529,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">
@@ -4780,9 +4780,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 +4905,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 +4935,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 +4945,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">
@@ -7233,14 +7233,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 del perfil **%@**.</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 +7425,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 +7722,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">
@@ -8306,9 +8306,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">
@@ -9519,9 +9519,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 +9534,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">
@@ -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">
@@ -660,9 +660,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 +675,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 +760,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">
<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 state="translated">Az összes adat privát módon van tárolva az Ön eszközén.</target>
<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 +770,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 +960,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">
@@ -2887,9 +2887,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">
@@ -4610,9 +4610,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">
@@ -5626,9 +5626,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">
@@ -7233,14 +7233,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 +7263,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 +7293,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 +7333,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 +7832,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 +7927,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 +8077,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 +8087,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">
@@ -8781,9 +8781,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 +8891,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 +9193,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">
@@ -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">
@@ -6714,9 +6713,9 @@ 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>
<target>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">
@@ -8551,9 +8550,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 +9236,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">
@@ -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">
+20 -20
View File
@@ -1931,7 +1931,7 @@
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 254;
CURRENT_PROJECT_VERSION = 255;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
@@ -1956,7 +1956,7 @@
"@executable_path/Frameworks",
);
LLVM_LTO = YES_THIN;
MARKETING_VERSION = 6.2;
MARKETING_VERSION = 6.2.1;
PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.app;
PRODUCT_NAME = SimpleX;
SDKROOT = iphoneos;
@@ -1980,7 +1980,7 @@
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 254;
CURRENT_PROJECT_VERSION = 255;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
@@ -2005,7 +2005,7 @@
"@executable_path/Frameworks",
);
LLVM_LTO = YES;
MARKETING_VERSION = 6.2;
MARKETING_VERSION = 6.2.1;
PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.app;
PRODUCT_NAME = SimpleX;
SDKROOT = iphoneos;
@@ -2021,11 +2021,11 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 254;
CURRENT_PROJECT_VERSION = 255;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MARKETING_VERSION = 6.2;
MARKETING_VERSION = 6.2.1;
PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.Tests-iOS";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
@@ -2041,11 +2041,11 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 254;
CURRENT_PROJECT_VERSION = 255;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MARKETING_VERSION = 6.2;
MARKETING_VERSION = 6.2.1;
PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.Tests-iOS";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
@@ -2066,7 +2066,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 = 255;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
GCC_OPTIMIZATION_LEVEL = s;
@@ -2081,7 +2081,7 @@
"@executable_path/../../Frameworks",
);
LLVM_LTO = YES;
MARKETING_VERSION = 6.2;
MARKETING_VERSION = 6.2.1;
PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.app.SimpleX-NSE";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -2103,7 +2103,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 = 255;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
ENABLE_CODE_COVERAGE = NO;
@@ -2118,7 +2118,7 @@
"@executable_path/../../Frameworks",
);
LLVM_LTO = YES;
MARKETING_VERSION = 6.2;
MARKETING_VERSION = 6.2.1;
PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.app.SimpleX-NSE";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -2140,7 +2140,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 = 255;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
DYLIB_COMPATIBILITY_VERSION = 1;
@@ -2166,7 +2166,7 @@
"$(PROJECT_DIR)/Libraries/sim",
);
LLVM_LTO = YES;
MARKETING_VERSION = 6.2;
MARKETING_VERSION = 6.2.1;
PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.SimpleXChat;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SDKROOT = iphoneos;
@@ -2191,7 +2191,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 = 255;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
DYLIB_COMPATIBILITY_VERSION = 1;
@@ -2217,7 +2217,7 @@
"$(PROJECT_DIR)/Libraries/sim",
);
LLVM_LTO = YES;
MARKETING_VERSION = 6.2;
MARKETING_VERSION = 6.2.1;
PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.SimpleXChat;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SDKROOT = iphoneos;
@@ -2242,7 +2242,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 = 255;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
@@ -2257,7 +2257,7 @@
"@executable_path/../../Frameworks",
);
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MARKETING_VERSION = 6.2;
MARKETING_VERSION = 6.2.1;
PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.app.SimpleX-SE";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
@@ -2276,7 +2276,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 = 255;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
@@ -2291,7 +2291,7 @@
"@executable_path/../../Frameworks",
);
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MARKETING_VERSION = 6.2;
MARKETING_VERSION = 6.2.1;
PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.app.SimpleX-SE";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
@@ -1,10 +1,11 @@
package chat.simplex.common.platform
import android.util.Log
import chat.simplex.common.model.ChatController.appPrefs
actual object Log {
actual fun d(tag: String, text: String) = Log.d(tag, text).run{}
actual fun e(tag: String, text: String) = Log.e(tag, text).run{}
actual fun i(tag: String, text: String) = Log.i(tag, text).run{}
actual fun w(tag: String, text: String) = Log.w(tag, text).run{}
actual fun d(tag: String, text: String) { if (appPrefs.logLevel.get() <= LogLevel.DEBUG && appPrefs.developerTools.get()) Log.d(tag, text) }
actual fun e(tag: String, text: String) { if (appPrefs.logLevel.get() <= LogLevel.ERROR || !appPrefs.developerTools.get()) Log.e(tag, text) }
actual fun i(tag: String, text: String) { if (appPrefs.logLevel.get() <= LogLevel.INFO && appPrefs.developerTools.get()) Log.i(tag, text) }
actual fun w(tag: String, text: String) { if (appPrefs.logLevel.get() <= LogLevel.WARNING || !appPrefs.developerTools.get()) Log.w(tag, text) }
}
@@ -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)
@@ -132,6 +132,7 @@ class AppPreferences {
val chatLastStart = mkDatePreference(SHARED_PREFS_CHAT_LAST_START, null)
val chatStopped = mkBoolPreference(SHARED_PREFS_CHAT_STOPPED, false)
val developerTools = mkBoolPreference(SHARED_PREFS_DEVELOPER_TOOLS, false)
val logLevel = mkEnumPreference(SHARED_PREFS_LOG_LEVEL, LogLevel.WARNING) { LogLevel.entries.firstOrNull { it.name == this } }
val showInternalErrors = mkBoolPreference(SHARED_PREFS_SHOW_INTERNAL_ERRORS, false)
val showSlowApiCalls = mkBoolPreference(SHARED_PREFS_SHOW_SLOW_API_CALLS, false)
val terminalAlwaysVisible = mkBoolPreference(SHARED_PREFS_TERMINAL_ALWAYS_VISIBLE, false)
@@ -393,6 +394,7 @@ class AppPreferences {
private const val SHARED_PREFS_CHAT_LAST_START = "ChatLastStart"
private const val SHARED_PREFS_CHAT_STOPPED = "ChatStopped"
private const val SHARED_PREFS_DEVELOPER_TOOLS = "DeveloperTools"
private const val SHARED_PREFS_LOG_LEVEL = "LogLevel"
private const val SHARED_PREFS_SHOW_INTERNAL_ERRORS = "ShowInternalErrors"
private const val SHARED_PREFS_SHOW_SLOW_API_CALLS = "ShowSlowApiCalls"
private const val SHARED_PREFS_TERMINAL_ALWAYS_VISIBLE = "TerminalAlwaysVisible"
@@ -2,6 +2,10 @@ package chat.simplex.common.platform
const val TAG = "SIMPLEX"
enum class LogLevel {
DEBUG, INFO, WARNING, ERROR
}
expect object Log {
fun d(tag: String, text: String)
fun e(tag: String, text: String)
@@ -296,6 +296,7 @@ fun ChatItemInfoView(chatRh: Long?, ci: ChatItem, ciInfo: ChatItemInfo, devTools
}
}
SectionBottomSpacer()
SectionBottomSpacer()
}
}
@@ -309,6 +310,7 @@ fun ChatItemInfoView(chatRh: Long?, ci: ChatItem, ciInfo: ChatItemInfo, devTools
QuotedMsgView(qi)
}
SectionBottomSpacer()
SectionBottomSpacer()
}
}
@@ -324,6 +326,7 @@ fun ChatItemInfoView(chatRh: Long?, ci: ChatItem, ciInfo: ChatItemInfo, devTools
ForwardedFromView(forwardedFromItem)
}
SectionBottomSpacer()
SectionBottomSpacer()
}
}
@@ -395,6 +398,7 @@ fun ChatItemInfoView(chatRh: Long?, ci: ChatItem, ciInfo: ChatItemInfo, devTools
}
}
SectionBottomSpacer()
SectionBottomSpacer()
}
}
@@ -433,12 +437,11 @@ fun ChatItemInfoView(chatRh: Long?, ci: ChatItem, ciInfo: ChatItemInfo, devTools
Column {
if (numTabs() > 1) {
Column(
Box(
Modifier
.fillMaxHeight(),
verticalArrangement = Arrangement.SpaceBetween
.fillMaxHeight()
) {
Column(Modifier.weight(1f)) {
Column {
when (val sel = selection.value) {
is CIInfoTab.Delivery -> {
DeliveryTab(sel.memberDeliveryStatuses)
@@ -479,7 +482,7 @@ fun ChatItemInfoView(chatRh: Long?, ci: ChatItem, ciInfo: ChatItemInfo, devTools
}
}
val oneHandUI = remember { appPrefs.oneHandUI.state }
Box(Modifier.offset(x = 0.dp, y = if (oneHandUI.value) -AppBarHeight * fontSizeSqrtMultiplier else 0.dp)) {
Box(Modifier.align(Alignment.BottomCenter).navigationBarsPadding().offset(x = 0.dp, y = if (oneHandUI.value) -AppBarHeight * fontSizeSqrtMultiplier else 0.dp)) {
TabRow(
selectedTabIndex = availableTabs.indexOfFirst { it::class == selection.value::class },
Modifier.height(AppBarHeight * fontSizeSqrtMultiplier),
@@ -665,13 +665,18 @@ fun ChatLayout(
AdaptingBottomPaddingLayout(Modifier, CHAT_COMPOSE_LAYOUT_ID, composeViewHeight) {
if (chatInfo != null) {
Box(Modifier.fillMaxSize()) {
ChatItemsList(
remoteHostId, chatInfo, unreadCount, composeState, composeViewHeight, searchValue,
useLinkPreviews, linkMode, selectedChatItems, showMemberInfo, loadMessages, deleteMessage, deleteMessages,
receiveFile, cancelFile, joinGroup, acceptCall, acceptFeature, openDirectChat, forwardItem,
updateContactStats, updateMemberStats, syncContactConnection, syncMemberConnection, findModelChat, findModelMember,
setReaction, showItemDetails, markItemsRead, markChatRead, remember { { onComposed(it) } }, developerTools, showViaProxy,
)
// disables scrolling to top of chat item on click inside the bubble
CompositionLocalProvider(LocalBringIntoViewSpec provides object : BringIntoViewSpec {
override fun calculateScrollDistance(offset: Float, size: Float, containerSize: Float): Float = 0f
}) {
ChatItemsList(
remoteHostId, chatInfo, unreadCount, composeState, composeViewHeight, searchValue,
useLinkPreviews, linkMode, selectedChatItems, showMemberInfo, showChatInfo = info, loadMessages, deleteMessage, deleteMessages,
receiveFile, cancelFile, joinGroup, acceptCall, acceptFeature, openDirectChat, forwardItem,
updateContactStats, updateMemberStats, syncContactConnection, syncMemberConnection, findModelChat, findModelMember,
setReaction, showItemDetails, markItemsRead, markChatRead, remember { { onComposed(it) } }, developerTools, showViaProxy,
)
}
}
}
Box(
@@ -939,6 +944,7 @@ fun BoxScope.ChatItemsList(
linkMode: SimplexLinkMode,
selectedChatItems: MutableState<Set<Long>?>,
showMemberInfo: (GroupInfo, GroupMember) -> Unit,
showChatInfo: () -> Unit,
loadMessages: suspend (ChatId, ChatPagination, ActiveChatState, visibleItemIndexesNonReversed: () -> IntRange) -> Unit,
deleteMessage: (Long, CIDeleteMode) -> Unit,
deleteMessages: (List<Long>) -> Unit,
@@ -1066,7 +1072,7 @@ fun BoxScope.ChatItemsList(
highlightedItems.value = setOf()
}
}
ChatItemView(remoteHostId, chatInfo, cItem, composeState, provider, useLinkPreviews = useLinkPreviews, linkMode = linkMode, revealed = revealed, highlighted = highlighted, range = range, fillMaxWidth = fillMaxWidth, selectedChatItems = selectedChatItems, selectChatItem = { selectUnselectChatItem(true, cItem, revealed, selectedChatItems) }, deleteMessage = deleteMessage, deleteMessages = deleteMessages, receiveFile = receiveFile, cancelFile = cancelFile, joinGroup = joinGroup, acceptCall = acceptCall, acceptFeature = acceptFeature, openDirectChat = openDirectChat, forwardItem = forwardItem, updateContactStats = updateContactStats, updateMemberStats = updateMemberStats, syncContactConnection = syncContactConnection, syncMemberConnection = syncMemberConnection, findModelChat = findModelChat, findModelMember = findModelMember, scrollToItem = scrollToItem, scrollToQuotedItemFromItem = scrollToQuotedItemFromItem, setReaction = setReaction, showItemDetails = showItemDetails, reveal = reveal, showMemberInfo = showMemberInfo, developerTools = developerTools, showViaProxy = showViaProxy, itemSeparation = itemSeparation, showTimestamp = itemSeparation.timestamp)
ChatItemView(remoteHostId, chatInfo, cItem, composeState, provider, useLinkPreviews = useLinkPreviews, linkMode = linkMode, revealed = revealed, highlighted = highlighted, range = range, fillMaxWidth = fillMaxWidth, selectedChatItems = selectedChatItems, selectChatItem = { selectUnselectChatItem(true, cItem, revealed, selectedChatItems) }, deleteMessage = deleteMessage, deleteMessages = deleteMessages, receiveFile = receiveFile, cancelFile = cancelFile, joinGroup = joinGroup, acceptCall = acceptCall, acceptFeature = acceptFeature, openDirectChat = openDirectChat, forwardItem = forwardItem, updateContactStats = updateContactStats, updateMemberStats = updateMemberStats, syncContactConnection = syncContactConnection, syncMemberConnection = syncMemberConnection, findModelChat = findModelChat, findModelMember = findModelMember, scrollToItem = scrollToItem, scrollToQuotedItemFromItem = scrollToQuotedItemFromItem, setReaction = setReaction, showItemDetails = showItemDetails, reveal = reveal, showMemberInfo = showMemberInfo, showChatInfo = showChatInfo, developerTools = developerTools, showViaProxy = showViaProxy, itemSeparation = itemSeparation, showTimestamp = itemSeparation.timestamp)
}
}
@@ -24,12 +24,12 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.*
import chat.simplex.common.model.*
import chat.simplex.common.model.ChatModel.controller
import chat.simplex.common.model.ChatModel.currentUser
import chat.simplex.common.platform.*
import chat.simplex.common.ui.theme.*
import chat.simplex.common.views.chat.*
import chat.simplex.common.views.helpers.*
import chat.simplex.res.MR
import kotlinx.coroutines.launch
import kotlinx.datetime.Clock
import kotlin.math.*
@@ -51,6 +51,12 @@ fun chatEventText(eventText: String, ts: String): AnnotatedString =
withStyle(chatEventStyle) { append("$eventText $ts") }
}
data class ChatItemReactionMenuItem (
val name: String,
val image: String?,
val onClick: (() -> Unit)?
)
@Composable
fun ChatItemView(
rhId: Long?,
@@ -87,6 +93,7 @@ fun ChatItemView(
showItemDetails: (ChatInfo, ChatItem) -> Unit,
reveal: (Boolean) -> Unit,
showMemberInfo: (GroupInfo, GroupMember) -> Unit,
showChatInfo: () -> Unit,
developerTools: Boolean,
showViaProxy: Boolean,
showTimestamp: Boolean,
@@ -120,7 +127,7 @@ fun ChatItemView(
Row(verticalAlignment = Alignment.CenterVertically, modifier = Modifier.chatItemOffset(cItem, itemSeparation.largeGap, inverted = true, revealed = true)) {
cItem.reactions.forEach { r ->
val showReactionMenu = remember { mutableStateOf(false) }
val reactionMembers = remember { mutableStateOf(emptyList<MemberReaction>()) }
val reactionMenuItems = remember { mutableStateOf(emptyList<ChatItemReactionMenuItem>()) }
val interactionSource = remember { MutableInteractionSource() }
val enterInteraction = remember { HoverInteraction.Enter() }
KeyChangeEffect(highlighted.value) {
@@ -134,18 +141,39 @@ fun ChatItemView(
var modifier = Modifier.padding(horizontal = 5.dp, vertical = 2.dp).clip(RoundedCornerShape(8.dp))
if (cInfo.featureEnabled(ChatFeature.Reactions)) {
fun showReactionsMenu() {
if (cInfo is ChatInfo.Group) {
withBGApi {
try {
val members = controller.apiGetReactionMembers(rhId, cInfo.groupInfo.groupId, cItem.id, r.reaction)
if (members != null) {
showReactionMenu.value = true
reactionMembers.value = members
when (cInfo) {
is ChatInfo.Group -> {
withBGApi {
try {
val members = controller.apiGetReactionMembers(rhId, cInfo.groupInfo.groupId, cItem.id, r.reaction)
if (members != null) {
showReactionMenu.value = true
reactionMenuItems.value = members.map {
val enabled = cInfo.groupInfo.membership.groupMemberId != it.groupMember.groupMemberId
val click = if (enabled) ({ showMemberInfo(cInfo.groupInfo, it.groupMember) }) else null
ChatItemReactionMenuItem(it.groupMember.displayName, it.groupMember.image, click)
}
}
} catch (e: Exception) {
Log.d(TAG, "chatItemView ChatItemReactions onLongClick: unexpected exception: ${e.stackTraceToString()}")
}
} catch (e: Exception) {
Log.d(TAG, "hatItemView ChatItemReactions onLongClick: unexpected exception: ${e.stackTraceToString()}")
}
}
is ChatInfo.Direct -> {
showReactionMenu.value = true
val reactions = mutableListOf<ChatItemReactionMenuItem>()
if (!r.userReacted || r.totalReacted > 1) {
val contact = cInfo.contact
reactions.add(ChatItemReactionMenuItem(contact.displayName, contact.image, showChatInfo))
}
if (r.userReacted) {
reactions.add(ChatItemReactionMenuItem(generalGetString(MR.strings.sender_you_pronoun), currentUser.value?.image, null))
}
reactionMenuItems.value = reactions
}
else -> {}
}
}
modifier = modifier
@@ -166,19 +194,19 @@ fun ChatItemView(
Row(modifier.padding(2.dp), verticalAlignment = Alignment.CenterVertically) {
ReactionIcon(r.reaction.text, fontSize = 12.sp)
DefaultDropdownMenu(showMenu = showReactionMenu) {
reactionMembers.value.forEach { m ->
reactionMenuItems.value.forEach { m ->
ItemAction(
text = m.groupMember.displayName,
composable = { ProfileImage(44.dp, m.groupMember.image) },
text = m.name,
composable = { ProfileImage(44.dp, m.image) },
onClick = {
if (cInfo is ChatInfo.Group && cInfo.groupInfo.membership.groupMemberId != m.groupMember.groupMemberId) {
showMemberInfo(cInfo.groupInfo, m.groupMember)
showReactionMenu.value = false
} else {
val click = m.onClick
if (click != null) {
click()
showReactionMenu.value = false
}
},
lineLimit = 1
lineLimit = 1,
color = if (m.onClick == null) MaterialTheme.colors.secondary else MenuTextColor
)
}
}
@@ -1188,6 +1216,7 @@ fun PreviewChatItemView(
showItemDetails = { _, _ -> },
reveal = {},
showMemberInfo = { _, _ ->},
showChatInfo = {},
developerTools = false,
showViaProxy = false,
showTimestamp = true,
@@ -1233,6 +1262,7 @@ fun PreviewChatItemViewDeletedContent() {
showItemDetails = { _, _ -> },
reveal = {},
showMemberInfo = { _, _ ->},
showChatInfo = {},
developerTools = false,
showViaProxy = false,
preview = true,
@@ -30,6 +30,7 @@ import kotlinx.datetime.*
import java.io.*
import java.net.URI
import java.nio.file.Files
import java.nio.file.StandardCopyOption
import java.text.SimpleDateFormat
import java.util.*
import kotlin.collections.ArrayList
@@ -44,11 +45,14 @@ fun DatabaseView() {
val chatArchiveFile = remember { mutableStateOf<String?>(null) }
val stopped = remember { m.chatRunning }.value == false
val saveArchiveLauncher = rememberFileChooserLauncher(false) { to: URI? ->
val file = chatArchiveFile.value
if (file != null && to != null) {
copyFileToFile(File(file), to) {
chatArchiveFile.value = null
}
val archive = chatArchiveFile.value
if (archive != null && to != null) {
copyFileToFile(File(archive), to) {}
}
// delete no matter the database was exported or canceled the export process
if (archive != null) {
File(archive).delete()
chatArchiveFile.value = null
}
}
val appFilesCountAndSize = remember { mutableStateOf(directoryFileCountAndSize(appFilesDir.absolutePath)) }
@@ -680,6 +684,8 @@ suspend fun importArchive(
} finally {
File(archivePath).delete()
}
} else {
progressIndicator.value = false
}
return false
}
@@ -691,14 +697,15 @@ private fun saveArchiveFromURI(importedArchiveURI: URI): String? {
if (inputStream != null && archiveName != null) {
val archivePath = "$databaseExportDir${File.separator}$archiveName"
val destFile = File(archivePath)
Files.copy(inputStream, destFile.toPath())
Files.copy(inputStream, destFile.toPath(), StandardCopyOption.REPLACE_EXISTING)
archivePath
} else {
Log.e(TAG, "saveArchiveFromURI null inputStream")
null
}
} catch (e: Exception) {
Log.e(TAG, "saveArchiveFromURI error: ${e.message}")
AlertManager.shared.showAlertMsg(generalGetString(MR.strings.error_saving_database), e.stackTraceToString())
Log.e(TAG, "saveArchiveFromURI error: ${e.stackTraceToString()}")
null
}
}
@@ -14,6 +14,7 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalUriHandler
import chat.simplex.common.model.*
import chat.simplex.common.model.ChatController.appPrefs
import chat.simplex.common.platform.*
import dev.icerock.moko.resources.compose.painterResource
import dev.icerock.moko.resources.compose.stringResource
@@ -44,6 +45,12 @@ fun DeveloperView(withAuth: (title: String, desc: String, block: () -> Unit) ->
if (devTools.value) {
SectionDividerSpaced(maxTopPadding = true)
SectionView(stringResource(MR.strings.developer_options_section).uppercase()) {
SettingsActionItemWithContent(painterResource(MR.images.ic_breaking_news), stringResource(MR.strings.debug_logs)) {
DefaultSwitch(
checked = remember { appPrefs.logLevel.state }.value <= LogLevel.DEBUG,
onCheckedChange = { appPrefs.logLevel.set(if (it) LogLevel.DEBUG else LogLevel.WARNING) }
)
}
SettingsPreferenceItem(painterResource(MR.images.ic_drive_folder_upload), stringResource(MR.strings.confirm_database_upgrades), m.controller.appPrefs.confirmDBUpgrades)
if (appPlatform.isDesktop) {
TerminalAlwaysVisibleItem(m.controller.appPrefs.terminalAlwaysVisible) { checked ->
@@ -735,7 +735,10 @@ private fun ConditionsAppliedToOtherOperatorsText(userServers: List<UserOperator
}
if (otherOperatorsToApply.value.isNotEmpty()) {
ReadableText(MR.strings.operator_conditions_will_be_applied)
ReadableText(
MR.strings.operator_conditions_will_be_applied,
args = otherOperatorsToApply.value.joinToString(", ") { it.legalName_ }
)
}
}
@@ -36,13 +36,13 @@
<string name="all_group_members_will_remain_connected">سيبقى جميع أعضاء المجموعة على اتصال.</string>
<string name="allow_disappearing_messages_only_if">السماح باختفاء الرسائل فقط إذا سمحت جهة اتصالك بذلك.</string>
<string name="allow_irreversible_message_deletion_only_if">السماح بحذف الرسائل بشكل لا رجوع فيه فقط إذا سمحت لك جهة الاتصال بذلك. (24 ساعة)</string>
<string name="group_member_role_admin">المُدير</string>
<string name="group_member_role_admin">المشرف</string>
<string name="users_add">أضِف ملف التعريف</string>
<string name="allow_direct_messages">السماح بإرسال رسائل مباشرة إلى الأعضاء.</string>
<string name="accept_contact_incognito_button">قبول التخفي</string>
<string name="button_add_welcome_message">أضِف رسالة ترحيب</string>
<string name="v4_3_improved_server_configuration_desc">أضف الخوادم عن طريق مسح رموز QR.</string>
<string name="v4_2_group_links_desc">يمكن للمُدراء إنشاء روابط للانضمام إلى المجموعات.</string>
<string name="v4_2_group_links_desc">يمكن للمشرفين إنشاء روابط للانضمام إلى المجموعات.</string>
<string name="accept_connection_request__question">قبول طلب الاتصال؟</string>
<string name="clear_chat_warning">سيتم حذف جميع الرسائل - لا يمكن التراجع عن هذا! سيتم حذف الرسائل فقط من أجلك.</string>
<string name="callstatus_accepted">مكالمة مقبولة</string>
@@ -51,7 +51,7 @@
<string name="keychain_is_storing_securely">يتم استخدام Android Keystore لتخزين عبارة المرور بشكل آمن - فهو يسمح لخدمة الإشعارات بالعمل.</string>
<string name="empty_chat_profile_is_created">يتم إنشاء ملف تعريف دردشة فارغ بالاسم المقدم، ويفتح التطبيق كالمعتاد.</string>
<string name="answer_call">أجب الاتصال</string>
<string name="chat_preferences_always">دائمًا</string>
<string name="chat_preferences_always">دائِماً</string>
<string name="allow_to_send_disappearing">السماح بإرسال رسائل تختفي.</string>
<string name="allow_to_send_voice">السماح بإرسال رسائل صوتية.</string>
<string name="settings_section_title_app">تطبيق</string>
@@ -64,7 +64,7 @@
<string name="allow_your_contacts_to_send_disappearing_messages">السماح لجهات اتصالك بإرسال رسائل تختفي.</string>
<string name="allow_voice_messages_only_if">اسمح بالرسائل الصوتية فقط إذا سمحت جهة اتصالك بذلك.</string>
<string name="v5_0_app_passcode">رمز مرور التطبيق</string>
<string name="notifications_mode_service">يعمل دائمًا</string>
<string name="notifications_mode_service">دائِماً مُتاح</string>
<string name="notifications_mode_off_desc">يمكن للتطبيق استلام الإشعارات فقط عند تشغيله، ولن يتم بدء تشغيل أي خدمة في الخلفية</string>
<string name="allow_voice_messages_question">السماح بالرسائل الصوتية؟</string>
<string name="all_your_contacts_will_remain_connected">ستبقى جميع جهات اتصالك متصلة.</string>
@@ -121,7 +121,7 @@
<string name="la_authenticate">مصادقة</string>
<string name="send_disappearing_message_1_minute">1 دقيقة</string>
<string name="send_disappearing_message_30_seconds">30 ثانية</string>
<string name="icon_descr_cancel_live_message">ألغِ الرسالة الحيّة</string>
<string name="icon_descr_cancel_live_message">إلغاء الرسالة المباشرة</string>
<string name="cancel_verb">إلغاء</string>
<string name="network_session_mode_entity_description"><![CDATA[سيتم استخدام اتصال TCP منفصل (وبيانات اعتماد SOCKS) <b> لكل جهة اتصال وعضو في المجموعة</b>\n.<b> الرجاء ملاحظة</b>: إذا كان لديك العديد من الاتصالات، فقد يكون استهلاك البطارية وحركة المرور أعلى بكثير وقد تفشل بعض الاتصالات.]]></string>
<string name="callstatus_calling">جارٍ الاتصال…</string>
@@ -464,8 +464,8 @@
<string name="file_will_be_received_when_contact_completes_uploading">سيتم استلام الملف عندما يكتمل جهة اتصالك من رفعِها.</string>
<string name="icon_descr_help">المساعدة</string>
<string name="file_with_path">الملف: %s</string>
<string name="fix_connection_confirm">أصلح</string>
<string name="fix_connection">أصلح الاتصال</string>
<string name="fix_connection_confirm">إصلاح</string>
<string name="fix_connection">إصلاح الاتصال</string>
<string name="fix_connection_question">إصلاح الاتصال؟</string>
<string name="fix_connection_not_supported_by_group_member">الإصلاح غير مدعوم من قبل أعضاء المجموعة</string>
<string name="group_members_can_send_files">يمكن للأعضاء إرسال الملفات والوسائط.</string>
@@ -567,7 +567,7 @@
<string name="rcv_group_event_member_added">مدعو %1$s</string>
<string name="rcv_group_event_invited_via_your_group_link">مدعو عبر رابط المجموعة</string>
<string name="invalid_chat">الدردشة غير صالحة</string>
<string name="live">حيّ</string>
<string name="live">حي</string>
<string name="invalid_connection_link">رابط اتصال غير صالح</string>
<string name="large_file">الملف كبير!</string>
<string name="learn_more">معرفة المزيد</string>
@@ -577,7 +577,7 @@
<string name="invalid_migration_confirmation">تأكيد الترحيل غير صالح</string>
<string name="group_member_status_invited">مدعو</string>
<string name="image_descr_link_preview">رابط معاينة الصورة</string>
<string name="live_message">رسالة حيّة!</string>
<string name="live_message">رسالة مباشرة!</string>
<string name="italic_text">مائل</string>
<string name="email_invite_subject">لنتحدث في SimpleX Chat</string>
<string name="lock_after">قفل بعد</string>
@@ -589,10 +589,10 @@
<string name="leave_group_button">غادِر</string>
<string name="leave_group_question">مغادرة المجموعة؟</string>
<string name="group_member_status_left">غادر</string>
<string name="delivery_receipts_are_disabled">إيصالات التسليم مُعطَّلة!</string>
<string name="delivery_receipts_are_disabled">إيصالات التسليم معطلة!</string>
<string name="no_call_on_lock_screen">تعطيل</string>
<string name="timed_messages">رسائل تختفي</string>
<string name="auth_device_authentication_is_disabled_turning_off">استيثاق الجهاز مُعطَّل. جارِ إيقاف تشغيل قفل SimpleX.</string>
<string name="auth_device_authentication_is_disabled_turning_off">عٌطل مصادقة الجهاز. جاري إيقاف تشغيل قفل SimpleX.</string>
<string name="ttl_m">%d شهر</string>
<string name="ttl_weeks">%d أسابيع</string>
<string name="ttl_w">%d أسبوع</string>
@@ -704,7 +704,7 @@
<string name="error_saving_group_profile">خطأ في حفظ ملف تعريف المجموعة</string>
<string name="notification_preview_mode_message">رسالة نصية</string>
<string name="message_reactions">ردود فعل الرسائل</string>
<string name="delete_message_mark_deleted_warning">سيتم وضع علامة على الرسالة للحذف. سيتمكن المُستلم/ون من الكشف عن هذه الرسالة.</string>
<string name="delete_message_mark_deleted_warning">سيتم وضع علامة على الرسالة للحذف. سيتمكن المستلم/مون من الكشف عن هذه الرسالة.</string>
<string name="delete_message_cannot_be_undone_warning">سيتم حذف الرسالة - لا يمكن التراجع عن هذا!</string>
<string name="message_delivery_error_title">خطأ في تسليم الرسالة</string>
<string name="network_and_servers">الشبكة والخوادم</string>
@@ -757,7 +757,7 @@
<string name="network_use_onion_hosts_prefer_desc">سيتم استخدام مضيفات البصل عند توفرها.</string>
<string name="network_use_onion_hosts_no_desc">لن يتم استخدام مضيفات البصل.</string>
<string name="no_contacts_selected">لم تٌحدد جهات اتصال</string>
<string name="v4_6_group_moderation_descr">يمكن للمُدراء الآن:\n- حذف رسائل الأعضاء.\n- تعطيل الأعضاء (دور المراقب)</string>
<string name="v4_6_group_moderation_descr">يمكن للمشرف الآن:\n- حذف رسائل الأعضاء.\n- تعطيل الأعضاء (دور المراقب)</string>
<string name="settings_notifications_mode_title">خدمة الإشعار</string>
<string name="chat_preferences_off">غير مفعّل</string>`
<string name="chat_preferences_on">مفعل</string>
@@ -782,13 +782,13 @@
<string name="self_destruct_new_display_name">اسم عرض جديد:</string>
<string name="new_passphrase">عبارة مرور جديدة…</string>
<string name="icon_descr_server_status_pending">قيد الانتظار</string>
<string name="enter_passphrase_notification_title">عبارة المرور مطلوبة</string>
<string name="enter_passphrase_notification_title">كلمة المرور مطلوبة</string>
<string name="paste_the_link_you_received">ألصِق الرابط الذي استلمته</string>
<string name="only_owners_can_enable_files_and_media">فقط مالكي المجموعة يمكنهم تفعيل الملفات والوسائط.</string>
<string name="only_group_owners_can_enable_voice">فقط مالكي المجموعة يمكنهم تفعيل الرسائل الصوتية.</string>
<string name="only_stored_on_members_devices">(يخزن فقط بواسطة أعضاء المجموعة)</string>
<string name="la_mode_passcode">رمز المرور</string>
<string name="passcode_set">عيّنت رمز المرور!</string>
<string name="la_mode_passcode">كلمة المرور</string>
<string name="passcode_set">تم تعيين كلمة المرور!</string>
<string name="group_member_role_owner">المالك</string>
<string name="only_your_contact_can_send_disappearing">فقط جهة اتصالك يمكنها إرسال رسائل تختفي.</string>
<string name="only_your_contact_can_add_message_reactions">جهة اتصالك فقط يمكنها إضافة ردود الفعل على الرسالة</string>
@@ -796,26 +796,26 @@
<string name="only_your_contact_can_delete">جهة اتصالك فقط يمكنها حذف الرسائل بشكل لا رجعة فيه (يمكنك تعليم الرسالة للحذف). (24 ساعة)</string>
<string name="only_you_can_send_voice">أنت فقط يمكنك إرسال رسائل صوتية.</string>
<string name="open_verb">افتح</string>
<string name="passcode_not_changed">لم يتم تغيير رمز المرور!</string>
<string name="passcode_changed">تم تغيير رمز المرور</string>
<string name="passcode_not_changed">لم يتم تغيير كلمة المرور!</string>
<string name="passcode_changed">تم تغيير كلمة المرور</string>
<string name="opening_database">جارِ فتح قاعدة البيانات…</string>
<string name="only_your_contact_can_send_voice">جهة اتصالك فقط يمكنها إرسال رسائل صوتية.</string>
<string name="paste_button">ألصق</string>
<string name="restore_passphrase_not_found_desc">لم يتم العثور على عبارة المرور في Keystore، يُرجى إدخالها يدويًا. ربما حدث هذا إذا استعدت بيانات التطبيق باستخدام أداة النسخ الاحتياطي. إذا لم يكن الأمر كذلك، يُرجى التواصل مع المطورين.</string>
<string name="restore_passphrase_not_found_desc">كلمة المرور غير موجودة في مخزن المفاتيح، يرجى إدخالها يدوياً. قد يحدث هذا إذا قمت باستعادة ملفات التطبيق باستخدام أداة استرجاع بيانات. إذا لم يكن الأمر كذلك، تواصل مع المبرمجين رجاء</string>
<string name="open_chat">افتح الدردشة</string>
<string name="simplex_link_mode_browser_warning">قد يؤدي فتح الرابط في المتصفح إلى تقليل خصوصية الاتصال وأمانه. ستظهر روابط SimpleX غير الموثوقة باللون الأحمر.</string>
<string name="simplex_link_mode_browser_warning">فتح الرابط في المتصفح قد يقلل خصوصية وحماية اتصالك. الروابط غير الموثوقة من SimpleX ستكون باللون الأحمر</string>
<string name="only_you_can_add_message_reactions">أنت فقط يمكنك إضافة ردود الفعل على الرسالة.</string>
<string name="only_you_can_delete_messages">أنت فقط يمكنك حذف الرسائل بشكل لا رجعة فيه (يمكن للمستلم تعليمها للحذف). (24 ساعة)</string>
<string name="only_you_can_send_disappearing">أنت فقط يمكنك إرسال رسائل تختفي</string>
<string name="only_you_can_make_calls">أنت فقط يمكنك إجراء المكالمات.</string>
<string name="only_your_contact_can_make_calls">فقط جهة اتصالك يمكنها إجراء المكالمات.</string>
<string name="auth_open_chat_console">افتح وحدة تحكم الدردشة</string>
<string name="la_lock_mode_passcode">إدخال رمز المرور</string>
<string name="open_simplex_chat_to_accept_call">افتح SimpleX Chat لقبول المكالمة</string>
<string name="la_lock_mode_passcode">إدخال كلمة المرور</string>
<string name="open_simplex_chat_to_accept_call">افتح SimpleX Chat للرد على المكالمة</string>
<string name="opensource_protocol_and_code_anybody_can_run_servers">يمكن لأي شخص استضافة الخوادم.</string>
<string name="password_to_show">كلمة المرور للإظهار</string>
<string name="call_connection_peer_to_peer">ندّ لِندّ</string>
<string name="people_can_connect_only_via_links_you_share">أنت تقرر مَن يمكنه الاتصال.</string>
<string name="people_can_connect_only_via_links_you_share">أنت تقرر من يمكنه الاتصال.</string>
<string name="icon_descr_call_pending_sent">مكالمة قيد الانتظار</string>
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages">تقوم أجهزة العميل فقط بتخزين ملفات تعريف المستخدمين وجهات الاتصال والمجموعات والرسائل.</string>
<string name="reset_color">صفّر الألوان</string>
@@ -879,7 +879,7 @@
<string name="info_row_updated_at">حٌديثت السجل في</string>
<string name="share_text_updated_at">حٌديثت السجل في: %s</string>
<string name="restore_database_alert_confirm">استعادة</string>
<string name="v4_4_live_messages_desc">يرى المُستلمون التحديثات أثناء كتابتها.</string>
<string name="v4_4_live_messages_desc">يرى المستلمون التحديثات أثناء كتابتها.</string>
<string name="feature_received_prohibited">استلمت، ممنوع</string>
<string name="save_servers_button">حفظ</string>
<string name="profile_update_will_be_sent_to_contacts">سيتم إرسال تحديث ملف التعريف إلى جهات اتصالك.</string>
@@ -915,7 +915,7 @@
<string name="group_welcome_preview">معاينة</string>
<string name="error_smp_test_certificate">من المحتمل أن الملف المرجعي للشهادة في عنوان الخادم غير صحيح</string>
<string name="simplex_service_notification_text">يتم استلام الرسائل…</string>
<string name="observer_cant_send_message_desc">يُرجى الاتصال بمُدير المجموعة.</string>
<string name="observer_cant_send_message_desc">يُرجى الاتصال بمشرف المجموعة.</string>
<string name="sync_connection_force_confirm">أعد التفاوض</string>
<string name="sync_connection_force_question">إعادة تفاوض التعمية</string>
<string name="revoke_file__action">سحب وصول الملف</string>
@@ -935,12 +935,12 @@
<string name="sender_at_ts">%s في %s</string>
<string name="save_group_profile">حفظ ملف المجموعة</string>
<string name="color_secondary">ثانوي</string>
<string name="v5_1_self_destruct_passcode">رمز المرور للتدمير الذاتي</string>
<string name="v5_1_self_destruct_passcode">كلمة مرور التدمير الذاتي</string>
<string name="sending_files_not_yet_supported">إرسال الملفات غير مدعوم بعد</string>
<string name="sender_cancelled_file_transfer">أُلغيَ المرسل نقل الملف.</string>
<string name="sender_cancelled_file_transfer">قام المرسل بإلغاء إرسال الملف</string>
<string name="connect_via_link_or_qr_from_clipboard_or_in_person">(امسح أو ألصق من الحافظة)</string>
<string name="network_option_seconds_label">ثانية</string>
<string name="sender_may_have_deleted_the_connection_request">ربما حذف المرسل طلب الاتصال.</string>
<string name="sender_may_have_deleted_the_connection_request">قد يكون المرسل قد ألغى طلب الاتصال</string>
<string name="scan_QR_code">مسح رمز QR</string>
<string name="send_us_an_email">أرسل لنا بريداً</string>
<string name="scan_code_from_contacts_app">مسح رمز الأمان من تطبيق جهة الاتصال</string>
@@ -948,63 +948,63 @@
<string name="stop_snd_file__message">سيتم إيقاف إرسال الملف.</string>
<string name="icon_descr_send_message">إرسال رسالة</string>
<string name="send_disappearing_message_send">إرسال</string>
<string name="send_live_message">أرسل رسالة حيّة</string>
<string name="send_live_message">إرسال رسالة حية</string>
<string name="smp_servers_test_failed">فشلت تجربة الخادم!</string>
<string name="save_passphrase_in_keychain">احفظ عبارة المرور في Keystore</string>
<string name="save_passphrase_in_keychain">حفظ كلمة المرور في مخزن المفاتيح</string>
<string name="button_send_direct_message">أرسل رسالة مباشرة</string>
<string name="sending_via">إرسال عبر</string>
<string name="conn_stats_section_title_servers">الخوادم</string>
<string name="v4_2_security_assessment">تقييم الأمان</string>
<string name="v4_4_disappearing_messages_desc">الرسائل المرسلة سيتم حذفها بعد المدة المحدّدة.</string>
<string name="v4_6_group_welcome_message_descr">تعيين رسالة تظهر للأعضاء الجدد!</string>
<string name="set_passcode">عيّن رمز المرور</string>
<string name="set_passcode">تعيين كلمة المرور</string>
<string name="share_text_sent_at">تم إرساله في: %s</string>
<string name="current_version_timestamp">%s (الحالي)</string>
<string name="color_sent_message">رسالة مرسلة</string>
<string name="set_group_preferences">عيّن تفضيلات المجموعة</string>
<string name="v5_0_app_passcode_descr">عيّنها بدلاً من استيثاق النظام.</string>
<string name="v5_0_app_passcode_descr">عيينها بدلا من توثيق النظام</string>
<string name="share_verb">مشاركة</string>
<string name="send_verb">إرسال</string>
<string name="save_passphrase_and_open_chat">احفظ عبارة المرور وافتح الدردشة</string>
<string name="select_contacts">حدد جهات الاتصال</string>
<string name="save_passphrase_and_open_chat">حفظ كلمة المرور وفتح الدردشة</string>
<string name="select_contacts">حدد جهات اتصال</string>
<string name="accept_feature_set_1_day">تعيين يوم واحد</string>
<string name="custom_time_unit_seconds">ثواني</string>
<string name="sent_message">رسالة مرسلة</string>
<string name="send_disappearing_message">أرسل رسالة تختفي</string>
<string name="save_profile_password">حفظ كلمة مرور ملف التعريف</string>
<string name="save_profile_password">حفظ كلمة مرور الحساب</string>
<string name="self_destruct">تدمير ذاتي</string>
<string name="scan_code">مسح الرمز</string>
<string name="chat_with_the_founder">أرسل أسئلة وأفكار</string>
<string name="scan_code">مسح الكود</string>
<string name="chat_with_the_founder">إرسال أسئلة وأفكار</string>
<string name="share_address_with_contacts_question">مشاركة العنوان مع جهات الاتصال؟</string>
<string name="share_address">مشاركة العنوان</string>
<string name="save_welcome_message_question">حفظ رسالة الترحيب؟</string>
<string name="smp_servers_save">احفظ الخوادم</string>
<string name="settings_section_title_delivery_receipts">أرسل إيصالات التسليم إلى</string>
<string name="receipts_contacts_override_disabled">إرسال الإيصالات مُعطَّل لـ %d جهة اتصال.</string>
<string name="receipts_contacts_override_enabled">إرسال الإيصالات مفعّل لـ %d جهة اتصال</string>
<string name="set_password_to_export">عيّن عبارة المرور للتصدير</string>
<string name="smp_servers_save">حفظ السيرفرات</string>
<string name="settings_section_title_delivery_receipts">أرسل تقارير الاستلام إلى</string>
<string name="receipts_contacts_override_disabled">إرسال تقارير الاستلام معطل لـ %d جهة اتصال.</string>
<string name="receipts_contacts_override_enabled">إرسال تقارير الاستلام مفعل لـ %d جهة اتصال</string>
<string name="set_password_to_export">تعيين كلمة المرور للتصدير</string>
<string name="rcv_conn_event_verification_code_reset">تم تغيير رمز الأمان</string>
<string name="send_receipts">إيصالات الإرسال</string>
<string name="send_receipts">تقارير الارسال</string>
<string name="info_row_sent_at">تم إرساله في</string>
<string name="custom_time_picker_select">حدد</string>
<string name="sending_delivery_receipts_will_be_enabled">سيتم تفعيل إرسال إيصالات التسليم لجميع جهات الاتصال.</string>
<string name="sending_delivery_receipts_will_be_enabled_all_profiles">سيتم تفعيل إرسال إيصالات التسليم لجميع جهات الاتصال في جميع ملفات تعريف الدردشة المرئية.</string>
<string name="sending_delivery_receipts_will_be_enabled">إرسال تقارير الاستلام سيتم تفعيله لجميع جهات الاتصال.</string>
<string name="sending_delivery_receipts_will_be_enabled_all_profiles">سيتم تفعيل إرسال تقارير الاستلام لجميع جهات الاتصال ذات حسابات دردشة ظاهرة</string>
<string name="smp_server_test_secure_queue">قائمة انتظار آمنة</string>
<string name="icon_descr_sent_msg_status_send_failed">فشل الإرسال</string>
<string name="icon_descr_sent_msg_status_sent">أُرسلت</string>
<string name="icon_descr_sent_msg_status_sent">تم الإرسال</string>
<string name="text_field_set_contact_placeholder">تعيين اسم جهة الاتصال…</string>
<string name="send_live_message_desc">أرسل رسالة حيّة - سيتم تحديثها للمُستلم مع كتابتك لها</string>
<string name="send_live_message_desc">إرسال رسالة حية - سيتم تحديثها للمستلم مع كتابتك لها</string>
<string name="set_contact_name">تعيين اسم جهة الاتصال</string>
<string name="icon_descr_settings">الإعدادات</string>
<string name="smp_save_servers_question">حفظ الخوادم؟</string>
<string name="smp_servers_scan_qr">مسح رمز QR الخادم</string>
<string name="security_code">رمز الأمان</string>
<string name="save_preferences_question">حفظ التفضيلات؟</string>
<string name="save_preferences_question">حفظ الإعدادات؟</string>
<string name="save_settings_question">حفظ الإعدادات؟</string>
<string name="secret_text">سري</string>
<string name="self_destruct_passcode">رمز المرور للتدمير الذاتي</string>
<string name="self_destruct_passcode_changed">تغيّرت رمز المرور للتدمير الذاتي!</string>
<string name="self_destruct_passcode_enabled">فعّلت رمز المرور للتدمير الذاتي!</string>
<string name="self_destruct_passcode">كلمة مرور التدمير الذاتي</string>
<string name="self_destruct_passcode_changed">تم تغيير كلمة مرور التدمير الذاتي!</string>
<string name="self_destruct_passcode_enabled">تم تفعيل كلمة مرور التدمير الذاتي</string>
<string name="settings_section_title_settings">الإعدادات</string>
<string name="simplex_link_invitation">دعوة لمرة واحدة SimpleX</string>
<string name="notification_preview_mode_message_desc">عرض جهة الاتصال والرسالة</string>
@@ -1069,7 +1069,7 @@
<string name="network_socks_proxy_settings">إعدادات وكيل SOCKS</string>
<string name="settings_shutdown">إيقاف التشغيل</string>
<string name="icon_descr_speaker_on">السماعة قيد التشغيل</string>
<string name="submit_passcode">أرسل</string>
<string name="submit_passcode">إرسال</string>
<string name="language_system">النظام</string>
<string name="theme">السمة</string>
<string name="to_start_a_new_chat_help_header">لبدء محادثة جديدة</string>
@@ -1077,7 +1077,7 @@
<string name="group_is_decentralized">لامركزية بالكامل – مرئية للأعضاء فقط.</string>
<string name="theme_system">النظام</string>
<string name="error_smp_test_failed_at_step">فشل الاختبار في الخطوة %s.</string>
<string name="v4_5_italian_interface_descr">بفضل المستخدمين - ساهِم عبر Weblate!</string>
<string name="v4_5_italian_interface_descr">بفضل المستخدمين - المساهمة عبر Weblate!</string>
<string name="periodic_notifications_desc">يجلب التطبيق الرسائل الجديدة بشكل دوري - يستخدم نسبة قليلة من البطارية يوميًا. لا يستخدم التطبيق إشعارات الدفع - لا يتم إرسال البيانات من جهازك إلى الخوادم.</string>
<string name="connection_you_accepted_will_be_cancelled">سيتم إلغاء الاتصال الذي قبلته!</string>
<string name="contact_you_shared_link_with_wont_be_able_to_connect">لن تتمكن جهة الاتصال التي شاركت هذا الرابط معها من الاتصال!</string>
@@ -1085,15 +1085,15 @@
<string name="to_protect_privacy_simplex_has_ids_for_queues">لحماية خصوصيتك، يستخدم SimpleX معرّفات منفصلة لكل جهة اتصال لديك.</string>
<string name="la_notice_to_protect_your_information_turn_on_simplex_lock_you_will_be_prompted_to_complete_authentication_before_this_feature_is_enabled">لحماية معلوماتك، فعّل قفل SimpleX \nسيُطلب منك إكمال المصادقة قبل تفعيل هذه الميزة.</string>
<string name="network_session_mode_transport_isolation">عزل النقل</string>
<string name="v4_4_french_interface_descr">بفضل المستخدمين - ساهِم عبر Weblate!</string>
<string name="v4_4_french_interface_descr">بفضل المستخدمين - المساهمة عبر Weblate!</string>
<string name="v4_6_audio_video_calls_descr">دعم البلوتوث وتحسينات أخرى.</string>
<string name="v5_0_polish_interface_descr">بفضل المستخدمين - ساهِم عبر Weblate!</string>
<string name="v5_0_polish_interface_descr">بفضل المستخدمين - المساهمة عبر Weblate!</string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery"><![CDATA[لتحسين الخصوصية، <b>يتم تشغيل SimpleX في الخلفية</b> بدلاً من استخدام إشعارات push.]]></string>
<string name="tap_to_start_new_chat">انقر لبدء محادثة جديدة</string>
<string name="to_share_with_your_contact">(للمشاركة مع جهة اتصالك)</string>
<string name="to_connect_via_link_title">للتواصل عبر الرابط</string>
<string name="scan_qr_to_connect_to_contact">للاتصال، يمكن لجهة الاتصال مسح رمز QR أو استخدام الرابط في التطبيق.</string>
<string name="smp_servers_test_servers">اختبر الخوادم</string>
<string name="smp_servers_test_servers">خوادم الاختبار</string>
<string name="first_platform_without_user_ids">لا معرّفات مُستخدم</string>
<string name="settings_section_title_support">دعم SIMPLEX CHAT</string>
<string name="switch_verb">تبديل</string>
@@ -1104,7 +1104,7 @@
<string name="group_invitation_tap_to_join_incognito">انقر للانضمام إلى وضع التخفي</string>
<string name="la_mode_system">النظام</string>
<string name="settings_section_title_themes">السمات</string>
<string name="v4_6_chinese_spanish_interface_descr">بفضل المستخدمين - ساهِم عبر Weblate!</string>
<string name="v4_6_chinese_spanish_interface_descr">بفضل المستخدمين - المساهمة عبر Weblate!</string>
<string name="database_initialization_error_desc">قاعدة البيانات لا تعمل بشكل صحيح. انقر لمعرفة المزيد</string>
<string name="theme_colors_section_title">ألوان الواجهة</string>
<string name="tap_to_activate_profile">انقر لتنشيط ملف التعريف.</string>
@@ -1115,7 +1115,7 @@
<string name="network_option_tcp_connection_timeout">انتهت مهلة اتصال TCP</string>
<string name="v4_5_private_filenames_descr">لحماية المنطقة الزمنية، تستخدم ملفات الصور / الصوت التوقيت العالمي المنسق (UTC).</string>
<string name="v5_2_message_delivery_receipts_descr">فقدنا القراد الثاني! ✅</string>
<string name="whats_new_thanks_to_users_contribute_weblate">بفضل المستخدمين - ساهِم عبر Weblate!</string>
<string name="whats_new_thanks_to_users_contribute_weblate">بفضل المستخدمين - المساهمة عبر Weblate!</string>
<string name="database_backup_can_be_restored">لم تكتمل محاولة تغيير عبارة مرور قاعدة البيانات.</string>
<string name="enter_passphrase_notification_desc">لاستلام الإشعارات، يُرجى إدخال عبارة مرور قاعدة البيانات</string>
<string name="la_lock_mode_system">مصادقة النظام</string>
@@ -1126,7 +1126,7 @@
<string name="videos_limit_title">مقاطع الفيديو كثيرة!</string>
<string name="chat_help_tap_button">زر النقر</string>
<string name="thank_you_for_installing_simplex">شكرًا لك على تثبيت SimpleX Chat!</string>
<string name="smp_servers_test_server">اختبر الخادم</string>
<string name="smp_servers_test_server">خادم الاختبار</string>
<string name="alert_text_msg_bad_hash">تجزئة الرسالة السابقة مختلفة.</string>
<string name="alert_text_msg_bad_id">معرف الرسالة التالية غير صحيح (أقل أو يساوي السابق).
\nيمكن أن يحدث ذلك بسبب بعض العلل أو عندما يُخترق الاتصال.</string>
@@ -1350,9 +1350,9 @@
<string name="database_encryption_will_be_updated_in_settings">سيتم تحديث عبارة مرور تعمية قاعدة البيانات وتخزينها في الإعدادات.</string>
<string name="remove_passphrase_from_settings">هل تريد إزالة عبارة المرور من الإعدادات؟</string>
<string name="use_random_passphrase">استخدم عبارة مرور عشوائية</string>
<string name="save_passphrase_in_settings">احفظ عبارة المرور في الإعدادات</string>
<string name="setup_database_passphrase">إعداد عبارة المرور لقاعدة البيانات</string>
<string name="set_database_passphrase">عيّن عبارة مرور قاعدة البيانات</string>
<string name="save_passphrase_in_settings">حفظ عبارة المرور في الإعدادات</string>
<string name="setup_database_passphrase">إعداد كلمة المرور لقاعدة البيانات</string>
<string name="set_database_passphrase">تعيين عبارة مرور قاعدة البيانات</string>
<string name="open_database_folder">افتح مجلد قاعدة البيانات</string>
<string name="passphrase_will_be_saved_in_settings">سيتم تخزين عبارة المرور في الإعدادات كنص عادي بعد تغييرها أو إعادة تشغيل التطبيق.</string>
<string name="settings_is_storing_in_clear_text">يُخزين عبارة المرور في الإعدادات كنص عادي.</string>
@@ -1365,7 +1365,9 @@
<string name="v5_3_discover_join_groups">اكتشاف والانضمام إلى المجموعات</string>
<string name="v5_3_new_interface_languages_descr">العربية والبلغارية والفنلندية والعبرية والتايلاندية والأوكرانية - شكرًا للمستخدمين و Weblate.</string>
<string name="v5_3_new_desktop_app_descr">إنشاء ملف تعريف جديد في تطبيق سطح المكتب. 💻</string>
<string name="v5_3_discover_join_groups_descr">- الاتصال بخدمة الدليل (تجريبي)!\n- إيصالات التسليم (ما يصل إلى 20 عضوا).\n- أسرع وأكثر استقرارًا.</string>
<string name="v5_3_discover_join_groups_descr">- الاتصال بخدمة الدليل (تجريبي)!
\n- إيصالات التسليم (ما يصل إلى 20 عضوا).
\n- أسرع وأكثر استقرارًا.</string>
<string name="rcv_group_event_open_chat">افتح</string>
<string name="error_creating_member_contact">حدث خطأ أثناء إنشاء جهة اتصال للعضو</string>
<string name="compose_send_direct_message_to_connect">أرسل رسالة مباشرة للاتصال</string>
@@ -1594,7 +1596,7 @@
<string name="unblock_for_all_question">إلغاء حظر العضو للجميع؟</string>
<string name="unblock_for_all">إلغاء الحظر للجميع</string>
<string name="error_blocking_member_for_all">حدث خطأ أثناء حظر العضو للجميع</string>
<string name="blocked_by_admin_items_description">حُظرت %d رسالة من قبل المُدير</string>
<string name="blocked_by_admin_items_description">حُظر %d رسالة من قبل المشرف</string>
<string name="rcv_group_event_member_blocked">محظور %s</string>
<string name="rcv_group_event_member_unblocked">أُلغيت حظر %s</string>
<string name="snd_group_event_member_blocked">حظرت %s</string>
@@ -1602,8 +1604,8 @@
<string name="member_info_member_blocked">محظور</string>
<string name="block_for_all">حظر للجميع</string>
<string name="block_for_all_question">حظر العضو للجميع؟</string>
<string name="blocked_by_admin_item_description">محظور من قبل المُدير</string>
<string name="member_blocked_by_admin">محظور من قبل المُدير</string>
<string name="blocked_by_admin_item_description">محظور من قبل المشرف</string>
<string name="member_blocked_by_admin">محظور من قبل المشرف</string>
<string name="message_too_large">الرسالة كبيرة جدًا</string>
<string name="welcome_message_is_too_long">رسالة الترحيب طويلة جدًا</string>
<string name="database_migration_in_progress">ترحيل قاعدة البيانات قيد التقدم.
@@ -1614,7 +1616,7 @@
<string name="unable_to_open_browser_desc">متصفح الويب الافتراضي مطلوب للمكالمات. يُرجى تضبيط المتصفح الافتراضي في النظام، ومشاركة المزيد من المعلومات مع المطورين.</string>
<string name="unable_to_open_browser_title">حدث خطأ أثناء فتح المتصفح</string>
<string name="migrate_from_device_archive_and_upload">أرشفة و رفع</string>
<string name="v5_6_safer_groups_descr">يمكن للمُدراء حظر عضو للجميع.</string>
<string name="v5_6_safer_groups_descr">يمكن للمشرفين حظر عضو للجميع.</string>
<string name="v5_6_app_data_migration">ترحيل بيانات التطبيق</string>
<string name="migrate_from_device_archiving_database">جارِ أرشفة قاعدة البيانات</string>
<string name="migrate_from_device_all_data_will_be_uploaded">سيتم تعمية جميع جهات الاتصال والمحادثات والملفات الخاصة بك بشكل آمن ورفعها في أجزاء إلى مُرحلات XFTP التي ضُبطت.</string>
@@ -1713,7 +1715,7 @@
<string name="feature_roles_all_members">كل الأعضاء</string>
<string name="group_members_can_send_simplex_links">يمكن للأعضاء إرسال روابط SimpleX.</string>
<string name="simplex_links_are_prohibited_in_group">روابط SimpleX محظورة.</string>
<string name="feature_roles_admins">المُدراء</string>
<string name="feature_roles_admins">المشرفين</string>
<string name="feature_enabled_for">مفعّل لـ</string>
<string name="feature_roles_owners">المالكون</string>
<string name="files_and_media_not_allowed">الملفات والوسائط غير مسموح بها</string>
@@ -1848,7 +1850,8 @@
<string name="cannot_share_message_alert_title">لا يمكن إرسال الرسالة</string>
<string name="cannot_share_message_alert_text">تفضيلات الدردشة المحدّدة تحظر هذه الرسالة.</string>
<string name="servers_info_details">التفاصيل</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_detailed_statistics_sent_messages_total">أرسلت الإجمالي</string>
<string name="size">الحجم</string>
<string name="uploaded_files">الملفات المرفوعة</string>
@@ -1858,14 +1861,14 @@
<string name="network_error_broker_version_desc">إصدار الخادم غير متوافق مع تطبيقك: %1$s.</string>
<string name="member_inactive_title">العضو غير نشط</string>
<string name="message_forwarded_title">رسالة محوّلة</string>
<string name="message_forwarded_desc">لا يوجد اتصال مباشر حتى الآن، يتم تحويل من قِبل المُدير.</string>
<string name="message_forwarded_desc">لا يوجد اتصال مباشر حتى الآن، يتم تحويل من قِبل المشرف.</string>
<string name="scan_paste_link">امسح / ألصِق الرابط</string>
<string name="smp_servers_configured">خوادم SMP المهيأة</string>
<string name="smp_servers_other">خوادم SMP أخرى</string>
<string name="xftp_servers_configured">خوادم XFTP المهيأة</string>
<string name="xftp_servers_other">خوادم XFTP أخرى</string>
<string name="subscription_percentage">أظهِر النسبة المئوية</string>
<string name="app_check_for_updates_disabled">مُعطَّل</string>
<string name="app_check_for_updates_disabled">مُعطّل</string>
<string name="app_check_for_updates_stable">مستقرّ</string>
<string name="app_check_for_updates_update_available">يتوفر تحديث: %s</string>
<string name="app_check_for_updates_notice_title">التمس التحديثات</string>
@@ -1876,7 +1879,7 @@
<string name="app_check_for_updates_button_remind_later">تذكر لاحقا</string>
<string name="app_check_for_updates_button_skip">تخطي هذه النسخة</string>
<string name="app_check_for_updates_canceled">أُلغيت تنزيل التحديث</string>
<string name="member_info_member_disabled">مُعطَّل</string>
<string name="member_info_member_disabled">مُعطّل</string>
<string name="member_info_member_inactive">غير نشط</string>
<string name="servers_info">معلومات الخوادم</string>
<string name="servers_info_target">عرض المعلومات ل</string>
@@ -1913,7 +1916,7 @@
<string name="other_label">أخرى</string>
<string name="proxied">موّكل</string>
<string name="secured">مؤمن</string>
<string name="send_errors">أرسل الأخطاء</string>
<string name="send_errors">أرسِل الأخطاء</string>
<string name="sent_directly">أُرسلت مباشرةً</string>
<string name="sent_via_proxy">مُرسَل عبر الوكيل</string>
<string name="subscribed">مشترك</string>
@@ -1973,9 +1976,9 @@
<string name="privacy_media_blur_radius">تمويه الوسائط</string>
<string name="privacy_media_blur_radius_medium">متوسط</string>
<string name="privacy_media_blur_radius_soft">ناعم</string>
<string name="info_view_call_button">مكالمة</string>
<string name="info_view_call_button">المكالمة</string>
<string name="info_view_connect_button">اتصل</string>
<string name="info_view_message_button">مراسلة</string>
<string name="info_view_message_button">الرسالة</string>
<string name="info_view_open_button">افتح</string>
<string name="info_view_search_button">بحث</string>
<string name="toolbar_settings">الإعدادات</string>
@@ -2006,7 +2009,7 @@
<string name="you_need_to_allow_calls">يجب عليك السماح لجهات اتصالك بالاتصال حتى تتمكن من الاتصال بها.</string>
<string name="calls_prohibited_ask_to_enable_calls_alert_text">يُرجى الطلب من جهة اتصالك تفعيل المكالمات.</string>
<string name="delete_members_messages__question">حذف %d رسائل الأعضاء؟</string>
<string name="delete_messages_mark_deleted_warning">سيتم وضع علامة على الرسائل للحذف. سيتمكن المُستلم/(المُستلمون) من الكشف عن هذه الرسائل.</string>
<string name="delete_messages_mark_deleted_warning">سيتم وضع علامة على الرسائل للحذف. سيتمكن المستلم/(المستلمون) من الكشف عن هذه الرسائل.</string>
<string name="select_verb">حدد</string>
<string name="moderate_messages_will_be_deleted_warning">سيتم حذف الرسائل لجميع الأعضاء.</string>
<string name="moderate_messages_will_be_marked_warning">سيتم وضع علامة على الرسائل على أنها تحت الإشراف لجميع الأعضاء.</string>
@@ -2219,7 +2222,7 @@
<string name="chat_archive">أو استورد ملف الأرشيف</string>
<string name="onboarding_notifications_mode_off_desc_short">لا توجد خدمة خلفية</string>
<string name="onboarding_notifications_mode_battery">الإشعارات والبطارية</string>
<string name="only_chat_owners_can_change_prefs">فقط مالكي الدردشة يمكنهم تغيير التفضيلات.</string>
<string name="only_chat_owners_can_change_prefs">يمكن فقط لأصحاب الدردشة تغيير التفضيلات.</string>
<string name="v6_2_business_chats_descr">الخصوصية لعملائك.</string>
<string name="remote_hosts_section">الجوالات عن بُعد</string>
<string name="invite_to_chat_button">ادعُ للدردشة</string>
@@ -2233,14 +2236,9 @@
<string name="display_name_requested_to_connect">طلبت الاتصال</string>
<string name="maximum_message_size_reached_non_text">يُرجى تقليل حجم الرسالة أو إزالة الوسائط ثم إرسالها مرة أخرى.</string>
<string name="maximum_message_size_reached_forwarding">يمكنك نسخ الرسالة وتقليل حجمها لإرسالها.</string>
<string name="onboarding_network_operators_cant_see_who_talks_to_whom">عندما يتم تفعيل أكثر من مُشغل واحد، لن يكون لدى أي منهم بيانات تعريفية لمعرفة مَن يتواصل مع مَن.</string>
<string name="onboarding_network_operators_cant_see_who_talks_to_whom">عندما يتم تفعيل أكثر من مُشغل واحد، لن يكون لدى أي منهم بيانات تعريفية لمعرفة من يتواصل مع من.</string>
<string name="member_role_will_be_changed_with_notification_chat">سيتم تغيير الدور إلى %s. وسيتم إشعار الجميع في الدردشة.</string>
<string name="chat_main_profile_sent">سيتم إرسال ملف تعريفك للدردشة إلى أعضاء الدردشة</string>
<string name="you_will_stop_receiving_messages_from_this_chat_chat_history_will_be_preserved">سوف تتوقف عن تلقي الرسائل من هذه الدردشة. سيتم حفظ سجل الدردشة.</string>
<string name="onboarding_network_about_operators">عن المُشغلين</string>
<string name="onboarding_network_operators_simplex_flux_agreement">توصلت SimpleX Chat وFlux إلى اتفاق لتضمين الخوادم التي تديرها Flux في التطبيق.</string>
<string name="encryption_renegotiation_in_progress">جارِ إعادة التفاوض على التعمية.</string>
<string name="sync_connection_question">إصلاح الاتصال؟</string>
<string name="sync_connection_desc">يتطلب الاتصال إعادة التفاوض على التعمية.</string>
<string name="sync_connection_confirm">إصلاح</string>
</resources>
@@ -907,6 +907,7 @@
<string name="show_dev_options">Show:</string>
<string name="hide_dev_options">Hide:</string>
<string name="show_developer_options">Show developer options</string>
<string name="debug_logs">Enable logs</string>
<string name="developer_options">Database IDs and Transport isolation option.</string>
<string name="developer_options_section">Developer options</string>
<string name="show_internal_errors">Show internal errors</string>
@@ -1338,6 +1339,7 @@
<string name="chat_database_exported_migrate">You may migrate the exported database.</string>
<string name="chat_database_exported_not_all_files">Some file(s) were not exported</string>
<string name="chat_database_exported_continue">Continue</string>
<string name="error_saving_database">Error saving database</string>
<!-- DatabaseEncryptionView.kt -->
<string name="save_passphrase_in_keychain">Save passphrase in Keystore</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>
@@ -2025,7 +2025,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>
@@ -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>
@@ -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 del perfil</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>
@@ -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>
@@ -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>
@@ -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>
@@ -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>
@@ -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,9 +2120,9 @@
<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>
@@ -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>
@@ -2166,9 +2168,9 @@
<string name="v6_2_network_decentralization_enable_flux_reason">para mejorar la 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>
@@ -2197,8 +2199,8 @@
<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="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">¡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>
@@ -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>
@@ -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>
@@ -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>
@@ -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>
@@ -2209,8 +2209,4 @@
<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>
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="22px" viewBox="0 -960 960 960" width="22px" fill="#5f6368"><path d="M262.5-285q11.5 0 20.25-8.5t8.75-20q0-11.5-8.75-20.25t-20.25-8.75q-11.5 0-20 8.75T234-313.5q0 11.5 8.5 20t20 8.5Zm-29-168.5H291v-227h-57.5v227Zm217.5 174h275.5V-337H451v57.5Zm0-174h275.5V-511H451v57.5Zm0-169.5h275.5v-57.5H451v57.5ZM134.5-124.5q-22.97 0-40.23-17.27Q77-159.03 77-182v-596q0-22.97 17.27-40.23 17.26-17.27 40.23-17.27h691q22.97 0 40.23 17.27Q883-800.97 883-778v596q0 22.97-17.27 40.23-17.26 17.27-40.23 17.27h-691Zm0-57.5h691v-596h-691v596Zm0 0v-596 596Z"/></svg>

After

Width:  |  Height:  |  Size: 592 B

@@ -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>
@@ -1947,7 +1947,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>
@@ -2247,10 +2248,5 @@
<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>
<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>
</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>
@@ -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>
@@ -2027,7 +2027,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>
@@ -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>
@@ -2147,13 +2148,13 @@
<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>
@@ -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>
@@ -2246,9 +2247,4 @@
<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>
@@ -2232,9 +2233,4 @@
<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>
@@ -67,7 +67,7 @@ object NtfManager {
ntf.second.close()
} catch (e: Exception) {
// Can be java.lang.UnsupportedOperationException, for example. May do nothing
println("Failed to close notification: ${e.stackTraceToString()}")
Log.e(TAG, "Failed to close notification: ${e.stackTraceToString()}")
}*/
}
}
@@ -85,7 +85,8 @@ object NtfManager {
}
fun cancelAllNotifications() {
// prevNtfs.forEach { try { it.second.close() } catch (e: Exception) { println("Failed to close notification: ${e.stackTraceToString()}") } }
// prevNtfs.forEach { try { it.second.close() } catch (e: Exception) { Log.e(TAG, "Failed to close notification: ${e
// .stackTraceToString()}") } }
withBGApi {
prevNtfsMutex.withLock {
prevNtfs.clear()
@@ -153,7 +154,7 @@ object NtfManager {
ImageIO.write(icon.toAwtImage(), "PNG", newFile.outputStream())
newFile.absolutePath
} catch (e: Exception) {
println("Failed to write an icon to tmpDir: ${e.stackTraceToString()}")
Log.e(TAG, "Failed to write an icon to tmpDir: ${e.stackTraceToString()}")
null
}
} else null
@@ -1,8 +1,10 @@
package chat.simplex.common.platform
import chat.simplex.common.model.ChatController.appPrefs
actual object Log {
actual fun d(tag: String, text: String) = println("D: $text")
actual fun e(tag: String, text: String) = println("E: $text")
actual fun i(tag: String, text: String) = println("I: $text")
actual fun w(tag: String, text: String) = println("W: $text")
actual fun d(tag: String, text: String) { if (appPrefs.logLevel.get() <= LogLevel.DEBUG && appPrefs.developerTools.get()) println("D: $text") }
actual fun e(tag: String, text: String) { if (appPrefs.logLevel.get() <= LogLevel.ERROR || !appPrefs.developerTools.get()) println("E: $text") }
actual fun i(tag: String, text: String) { if (appPrefs.logLevel.get() <= LogLevel.INFO && appPrefs.developerTools.get()) println("I: $text") }
actual fun w(tag: String, text: String) { if (appPrefs.logLevel.get() <= LogLevel.WARNING || !appPrefs.developerTools.get()) println("W: $text") }
}
+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.1
android.version_code=261
desktop.version_name=6.2
desktop.version_code=82
desktop.version_name=6.2.1
desktop.version_code=83
kotlin.version=1.9.23
gradle.plugin.version=8.2.0
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 (
-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 -
-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 =